О важности комментирования кода говорилось уже много раз. Потому о том, что комментарии помогают и очень нужны программисту мы в тысячный раз говорить не будем. Лучше поговорим о правильном и красивом использовании возможностей phpDoc в замечательной IDE - Eclipse.
Если вы хотите что б каждый класс написанный вами был понятен вам и вашим коллегам - можете использовать довольно простой стандарт записи комментариев, который будет обработан Eclipse и выведен при работе с этим классом или методом:

/**
* Short description - used in indexlists
*
* Multiple line detailed description.
* The handling of line breaks and HTML is up to the renderer.
* Order: short description - detailed description - doc tags.
*
* @param string Target directory for the generated HTML Files
*/

Если перед обьявлением класса или метода написать такой комментарий - IDE обработает его и выведет вам подсказку при дальнейшем их использовании. Это очень удобно при коллективной разработке и больших обьемах кода. Назначение методов становится понятнее, передаваемые параметры выводятся, возвращаемые значения указываются.
Следует отметить что Eclipse автоматически генерирует заготовку под такой стиль комментария после введения /** и нажатия Enter перед обьявлением метода/класса. А получить подсказку можно по нажатию Ctrl+Space после ввода $myClassName->.

Вот так. 2.0 применимо теперь не только для нашумевгео Web 2.0, но и для новой поисковой системы Яндекса - Магадан. В официальном блоге Яндекса появилась небольшая, но очень важная новость:

С сегодняшнего дня на www.yandex.ru работает поисковая программа “Магадан 2.0″. В ней сделано много улучшений в алгоритме ранжирования, например, добавлены новые факторы, учитывающие уникальность контента, классификатор порнографии, геоклассификатор запроса, классификатор коммерциализированности, и многие другие. Следующая остановка — “Находка”.

Очень заинтересовали классификаторы. Что нужно понимать под фразой “классификатор коммерциализированности” (привет Sape) . Результаты еще тяжело оценить, т.к. систему только запустили. Еще интереснее становится “Находка”. Полк оптимизаторов очень удивился такому скорому запуску версии 2.0 поискового механизма.

Обьясняется все это очень просто. Яндекс готовится выйти на IPO, потому старается. Подключает новые сервисы, открывает офис в Америке. Что ж, посмотрим что с этого получится.

Расскажу решение проблемы, которая возникла после установки Eclipse в Ubuntu.
Начну с того - что Eclipse очень удобная IDE и разработчику просто необходима для быстрой и качественной работы.
В Ubuntu 7.10 установить Eclipse можно двумя путями:
Читать полностью »

Незаменимые вещи для каждого программиста - CheatSheets. В них всегда можно заглянуть и подсмотреть вещи, которые в голове постоянно хранить совершенно необязательно. Некоторые их распечатывают и ложат на рабочий стол. Я предпочитаю просто иногда подсматривать. Думаю это будет полезно не только мне. Я собрал набор из таких шпаргалок:

  • Characters Cheatsheet (Шпаргалка по спец.символам)
  • CSS Cheatsheet
  • HTML Cheatsheet
  • JavaScript Cheatsheet
  • mod_rewrite Cheatsheet
  • MySQL Cheatsheet
  • PHP Cheatsheet
  • Regular Expressions Cheatsheet
  • SQL Server Cheatsheet

Каждая шпаргалка содержит описания функций, типов для разных языков. В некоторых есть примеры кода. Вобщем качаем и сохраняем. Cheatsheets - вещи из разряда “Must have”.
Читать полностью »

Привет. Вот всегда была интересна мне тема создания ICQ-ботов на PHP, и сегодня решил рассмотреть ее подробнее и поделиться с вами найденной информацией. Итак, задача: написать ICQ-бот на PHP. Что б реализовать запланированное, нам не нужно изучать протокол ICQ, а достаточно просто воспользоваться готовым РНР-классом для работы с протоколом аськи. Когда класс WebIcqLite.class.php скачан, можно приступать к первым попыткам его использовать.
Вот что дают разработчики в качестве примера использования класса:
Читать полностью »

Недавно, друг подсказал мне неплохое решение для работы с массивами в PHP. Это класс, который работает на подобии LINQ в C#3.0 и позволяет делать выборки из массивов с помощью конструкций, которые напоминают SQL. Вот небольшой пример, выборка слов, длина которых меньше 5 символов:

// Create data source
$names = array("John", "Peter", "Joe", "Patrick", "Donald", "Eric");

$result = from('$name')->in($names)
->where('$name => strlen($name) < 5')
->select(’$name’);

Следует отметить, что данное решение работает только с версией PHP 5.2 или выше.
Более подробная информацией по PHPLinq размещена на этом сайте.

Ко мне часто обращаются с различными вопросами. Вопросы касаются как статей размещенных на сайте, так и других, более отвлеченных тем. Так вот недавно проскочил один вопрос, который хочу раскрыть подробнее.
Итак, вопрос: Как отправить форму по нажатию на картинке?
Решение есть довольно простое и стандартное. Вот пример формы с одним текстовым полем, которая отправляет свое содержимое при нажатии на картинку:
Читать полностью »

В предыдущем примере я предложил быстрое решение проблемы, при которой функции strtolower и strtoupper перестают работать с русским текстом. Это решало проблему, согласен, но настоящий программист должен уметь ПРАВИЛЬНО решать задачи. Для правильного решения задачи работы со строками в PHP, будем предварительно использовать функцию setlocale:

string setlocale ( mixed $category , string $locale [, string $… ] )

Вот как она выглядит в общем виде. setlocale явно указывает локаль, с которой будут работать функции. Параметр $category какраз и определяет, на какие функции будет распространяться установка локали, $category может быть:

  • LC_ALL - модифицировать все установки
  • LC_COLLATE - только сравнения строк, см. strcoll()
  • LC_CTYPE - классификация строк, например strtoupper()
  • LC_MONETARY - денежные значения
  • LC_NUMERIC - числовые значения
  • LC_TIME - значения даты/времени

Тоесть мы просто перед вызовами функций для работы со строками/датами/временем/денежными форматами и т.д. должны указать локаль, и дальше функции будут знать с каким текстом они работают:

setlocale(LC_ALL, ‘rus’);

Думаю такое решение задачи является более правильным и корректным.

Иногда случается так, что из-за проблем с локалями в PHP функции strtolower и strtoupper перестают работать с русским текстом. Если нет времени разбираться, а нужно быстро получить результат, можно воспользоваться таким кодом:

function toupper($content)
{
$content = strtr($content, “абвгдеёжзийклмнорпстуфхцчшщъьыэюя”,
“АБВГДЕЁЖЗИЙКЛМНОРПСТУФХЦЧШЩЪЬЫЭЮЯ”);
return strtoupper($content);
}

function tolower($content)
{
$content = strtr($content, “АБВГДЕЁЖЗИЙКЛМНОРПСТУФХЦЧШЩЪЬЫЭЮЯ”,
“абвгдеёжзийклмнорпстуфхцчшщъьыэюя”);
return strtolower($content);
}

Более подробную информацию всегда можно найти на сайте php.net. В поиске по функциям strtolower и strtoupper.

Хочу сегодня поговрить об очень перспективном направлении в программировании - кодогенерации.
Эти мысли пришли ко мне в голову после того, как я начал пректировать новую версию движка для сайта devoid.com.ua.
Для реализации выбрал популярный сейчас паттерн Model-View-Controller.
Используя такой подход, программисту необходимо реализовать “Model” - модель представления данных. Для этого чень полезной является реализация класса-оболочки для работы с Базой Данных, которая предоставляет механизмы извлечения данных, добавления, удаления и редактирования записей.
Если посмотреть немного дальше и представить что при каждом новом проекте нужно будет писать новый класс-оболочку для Баз Данных, который будет выполнять практически стандартные функции - становится как-то грустно, ведь всегда интереснее решать разнообразные задачи, а не писать по сути одинаковые классы, которые будут получать информацию с БД, добавлять, удалять и редактировать записи.
Именно здесь нам на помощь приходит кодогенерация, которая для реализации слоя доступа к данным (Data Access Layer) генерирует на основе описания таблиц БД класс, который содержит в себе необходимые функции для реализации Model из паттерна MVC.
Уже сейчас существует ряд готовых решений, которые предлагают вам создавать классы для работы с данными на основе описания структуры БД. Если вы хотите избавиться от рутинной работы создания классов для работы с БД - можете написать свой генератор или использовать уже имеющиеся (это могут быть и консольные решения, и Win-приложения и те же PHP-скрипты, кому как удобнее).
Все что необходимо генератору кода - это описание базы данных, выполненное в удобном формате (как вариант XML). В описании нужно указывать имена столбцов, тип данных, которые они содержат. Если вы сами пишете генератор, то позаботьтесь о том, что б он был безопасный к различным типам данных и имел достаточную функциональность.
Любому программисту будет удобнее выполнить простой код:

$user->create(”UserName”,”Mail”… остальные поля);

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

$user->remove(’user_id’);

а все, остальное за вас сделает сгенерированный класс.
Здесь даже не столь важным является язык реализации, или конкретная База Данных. Основной изюминкой является реализация данного процесса, и избавление программиста от рутины. Один раз ГРАМОТНО написав генератор, вы получаете готовую модель работы с данными для каждого проекта, а сэкономленное время с удовольствием можно потратить на разработку новых интересных решений и сосредоточиться на реализации представления данных пользователю.
Надеюсь кое-как смог выразить свои мысли по этому поводу в данной заметке, и натолкнул вас на что-то новое и интересное в безграничном мире программирования :)

Да, и не забудьте поздравить женщин с их праздником сегодня…
Всех женщин поздравляю с праздником и желаю внимания, любви и удачи!