Архив

Публикации с меткой ‘Программирование’

Начал использовать Zend Framework. Доволен.

8 Октябрь 2008

На работе проект разрабатываем с использованием Zend Framework. До этого с фреймворком не работал, но довольно быстро изучил основы и начал активно его использовать. Для изучения хватило понимания ООП, знаний РНР и работы с БД. Сегодня хочу немного поговорить о своих ощущениях и соображениях, которые возникли за последнее время.

Первое что следует отметить - Zend Framework накладывает серьезные правила на структуру каталогов. Это хорошо, т.к. четкая структура проекта дает понять сразу, где у тебя Контроллеры, Модели и файлы шаблонов которые отвечают за вид.

Zend Framework основан на Model-View-Controller, так что о логике разделения думаю говорить не стоит. Кроме того в Zend Framework каждый контроллер должен соответствовать правилам именования. Это относится и к файлам и именам методов классов. Такой подход считаю правильным, т.к. и коллективная разработка и логика от этого только выигрывает.

Читать далее…

admin PHP , , , ,

C# - запуск только одной копии программы

10 Август 2008

Недавно пришлось решить вопрос запуска только одной копии программы на C#. Вопрос решил успешно, используя Mutex. Собственно велосипед изобретать не стал и воспользовался готовым кодом, который нашел здесь. Сначала создаем класс (который я успешно использовал уже в нескольких проектах):
Читать далее…

admin C# (Csharp) , ,

Багрепорт. Ловим ошибки.

Багрепорт (bug report) - отчет об ошибке, является очень мощным инструментом по устранению ошибок в работе скриптов и программ. При коллективной разработке правильная работа над ошибками является залогом их полного устранения. Правильно составленный багрепорт должен дать полную информацию разработчику об ошибке.
Очень широко применяется такой вид оформления багрепорта:

Что сделал?
Что получил?
Что ожидал получить?

Ответив на эти три вопроса - человек формирует полный багрепорт, прочитав который программист поймет как ему устранить ошибку.
Отвечая на вопрос “Что сделал?” нужно описать пошаговые действия, которые приводят к ошибке в работе программного обеспечения.
“Что получил?” - должен рассказать о самой ошибке, которая возникает.
Ответ “Что ожидал получить?” дает описание того, что пользователь ожидал увидеть - проведя вышесказанные действия.
Помимо этих обязательных пунктов - не лишним будет указать подробную характеристику системы, в которой возникает ошибка (для веб-приложений ОС/Браузер например).

admin Программирование ,

ICQ бот на PHP? Легко!

13 Апрель 2008

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

admin PHP , , ,

Делаем Submit красивее или “Как отправить форму…”

30 Март 2008

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

admin PHP , ,

Кодогенерация, как вариант избавления от рутинной работы

8 Март 2008

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

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

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

$user->remove(’user_id’);

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

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

admin PHP, Программирование , , , , ,

Контролируйте код, господа! :)

6 Февраль 2008

На одном из блогов нашел ссылку на некую программу, которая помогает следить за кодом, и его изменениями при разработке крупных проектов. SourceMonitor - на первый взгляд довольно невзрачная программа, которая на удивление предоставляет достаточно много информации о исходном коде. Начну с того что анализировать она может:

  • С++
  • C#
  • Java
  • VB.NET
  • Delphi
  • C
  • HTML
  • Visual Basic

Далее, я создаю новый проект, куда загружаю один из своих проектов на C#. Далее создается Checkpoint - точка, которая позволит запомнить и сохранить текущее состояние исходного кода проекта. Как только мы создали Checkpoint в SourceMonitor мы уже можем знать сколько файлов содержит проект, сколько в нем строк кода, классов, какой процент кода составляют комментарии, сколько вызовов методов в нашем коде. Вобщем очень много полезной информации, которая может быть представлена даже в графическом варианте. Статистику можно смотреть как для всего проекта, так и для каждого файла отдельно. Думаю программа будет полезной тем, у кого крупные проекты и требуется контроль версий кода. Также неплохо оценивать код до и после оптимизации (исследуя количество переменных и вызовов методов и др. показатели). Удачного контроля кода ;)

admin Программирование , , , , , , , ,

Создание превьюшек в PHP

5 Февраль 2008

Сегодня почему-то захотелось показать простую, но тем не менее очень полезную функцию для создания превьюшек больших изображений. Часто бывает так, что имея большое изображение, нам нужно вывести маленькую его копию для предпросмотра или галереи. Вот тут нам и пригодится PHP и функция resize, которую мы сейчас напишем. В файле, где нужно вставить маленький рисунок пишем:
<img ALT="preview" SRC="resize.php?url=image.jpg" />
Тоесть просто ссылка на файл PHP, которому в качестве параметра “url” передаем имя файла, размеры которого нужно изменить.
Далее рассмотрим скрипт resize.php, который должен возвращать изображение с маленькими размерами:
Читать далее…

admin PHP ,

Что лучше, опыт или талант?

27 Январь 2008

computer-user.jpg

Вот довелось недавно прочитать очень интересный текст о роли таланта и опыта при найме на работу. Nick Halstead напрямую сталкивается с этим вопросом и вот что он пишет:

В последнее время я много думал о разнице между талантом и опытом. Отчасти это вызвано тем, что я набираю сотрудников на работу, и мне часто приходится делать выбор между талантливым человеком и опытным программистом.

Конечно, есть очень талантливые люди, себя я считаю человеком, у которого пересекаются эти два качества. Потому что со временем я начинаю понимать - опыт неоценим, он позволяет избавиться от огромного количества ошибок. Плюс ко всему я могу проектировать сложные системы, уделяя большее значение планированию и меньше времени тратить на исправление ошибок.
Читать далее…

admin Программирование ,

Правильное мышление, как путь к самоерализации программиста

9 Октябрь 2007

Очень большую роль в самореализации программиста играет его образ мылшения и отношение к возникающим задчам. Каждый программист решает задачи различными способами, но существуют общие алгоритмы, которые позволяют делать это эффективнее.
Для этого я приведу выписки из книги “Совершенный код” - С.Макконнелла (очень советую почитать).
Он выделяет такие этапы разработки ПО:

  • определение проблемы
  • выработка требований
  • создание плана конструирования
  • разработка архитектуры ПО
  • кодирование и отладка
  • интеграция
  • тестирование
  • сопровождение

Каждый из этих этапов очень важен и без него будет очень тяжело сделать какой-то более-менее стоящий программный продукт.

admin Программирование