Archive for the ‘Работа’ Category

Интерфейс отображающий суть

Вторник, Июль 15th, 2008

Очень часто сталкивался с тем, что отмечая статью или что-либо еще тегами, не могу позволить себе указать вес каждого тега. То есть как бы получается что все теги абсолютно равнозначны, что не всегда является истиной.

И вот пришло время и я уделил некоторое время на создание более “правильного” интерфейса добавления тегов. Заранее учел два типа пользователей:
- те кто использует Firefox
- те у кого нет JavaScript’a

Базовый функционал очень прост: (more…)

дьявол в мелочах…

Вторник, Июль 15th, 2008

дьявол в мелочах… дьявол в мелочах… дьявол в мелочах… дьявол в мелочах… дьявол в мелочах… дьявол в мелочах… дьявол в мелочах… дьявол в мелочах… дьявол в мелочах… дьявол в мелочах… дьявол в мелочах… дьявол в мелочах… дьявол в мелочах… дьявол в мелочах… дьявол в мелочах… дьявол в мелочах… дьявол в мелочах… дьявол в мелочах… дьявол в мелочах… дьявол в мелочах… дьявол в мелочах… дьявол в мелочах… дьявол в мелочах… дьявол в мелочах… дьявол в мелочах… дьявол в мелочах… дьявол в мелочах… дьявол в мелочах… дьявол в мелочах… дьявол в мелочах… дьявол в мелочах… дьявол в мелочах… дьявол в мелочах… дьявол в мелочах… дьявол в мелочах…

Перечисления в PHP

Понедельник, Июль 7th, 2008

Часто ли вам приходилось сожалето о том, что в PHP нет перечислений как таковых?

Да, кто-то обходился конвенцией именования и получалось нечто вроде:

define( 'COLOR_RED', 'F00' );
define( 'COLOR_GREEN', '0F0' );
define( 'COLOR_BLUE', '00F' );

Или нечто вроде:

// данную переменную ЗАПРЕЩЕНО модифицировать
$colors = array(
    'red' => 'F00',
    'green' => '0F0',
    'blue' => '00F',
);

Но оба подхода имеют существенные недостатки:

  • В первом случае члены перечисления не образуют явной группировки
  • Во втором случае есть риск что переменная будет изменена
  • И в обоих этих случаях мы не можем делать проверку на тип переменной (type hinting)

Под катом предлагаю решение без вышеописанных недостатков…
(more…)

Google и Yahoo аутентификация

Пятница, Июнь 27th, 2008

Суммарно около четырех дней провозился с сабжем, дабы получать список контактов по gmail ящику с сервисов mirtesen.ru и flickr.com

С google не все стало ясно - просто переписал сегодня бОльшую часть прежнего кода. А вот с yahoo получилось забавно… Вся проблема оказалась в том, что я, когда составлял строку cookie для curl после “;” (точки с запятой) пробел не ставил, а по спецификации он видимо необходим… В итоге yahoo отправлял меня вместо страницы логина на свою главную страницу. И все из-за пробелов… В строке куков… Ндя…

Unix наше всё

Среда, Июнь 25th, 2008

Иногда так хочется посмотреть на продуктивность команды в проекте… А хорошей мерялкой для этого выступает кол-во строк написаного кода. Но когда кол-во файлов уже перевалило за несколько сотен, зниматься вручную уже лень. Да и глупо это.

Юникс в этот самый момент - самое оно:

$find . -type f -name "*.php" -exec wc -l '{}' \; \
> | grep -v \/library\/ \
> | grep -v \/Tests\/ \
> | grep -v \/tmp\/ \
> | grep -v .svn \
> | grep --only-matching -e '^[0-9]\{1,\}’ \
> | awk ‘{ print “a = a + ” $1 “; a” }’ \
> | bc -l \
> | tail -1

таким образом мы подсчитаем суммарное кол-во строк в файлах, которые не включены в директории library (посколько это не мы писали), Tests (тесты считать не интерессно), .svn (ну это нам точно ни к чему).

При этом мы обработаем только файлы с кодом бизнес-логики (*.php)

Итак. После двух месяцев работы над проектом мы имеем 13453 строки кода. Учитывая что это производительность 2.5 человек (0.5 из-за того что один из участников недавно пришел в команду), получается 2690 строк в месяц на каждого. Или 128 строк в день. Очень хорошие показатели как по мне :)

PHP Doctrine и большие проекты

Понедельник, Июнь 23rd, 2008

…и еще немного о работе :)

Опробовав Doctrine на двух довольно больших проектах (они еще не закончены слава богу), могу сделать следующие выводы (ИМО):

  • считать что этот ORM реализует бизнес-логику - глупо
  • автор Doctrine разрабатывал продукт под нужды небольших проектов и команд
  • описывать таблицы из кода - очень неудобно
  • …так же как и связи
  • поднять оценку до 3 из 5 для Doctrine можно было бы реализовав setter’ы и getter’ы защищенными
  • …и связи между таблицами тоже
  • LSB очень не хватает :(