пятница, 2 июля 2010 г.

PayPal

Совет начинающим программистам - пока у вас есть некоторое свободное время, разберитесь и изучите API PayPal. Напишите полностью работающий скрипт оплаты, сделайте красивую и функциональную форму оплаты с валидацией данных и выводом сообщений пользователю. Продумайте всю функциональность до мелочей. Это будет солидным примером вашей работы при устройстве на работу. Навык работы с внешним API очень ценен. А в данной задаче вы сможете проявить себя с разных сторон. Плюс опыт работы с PayPal всегда пригодится.

среда, 2 июня 2010 г.

Text-overflow

Статья  сильно пригодилась для реализации кросс-браузерного решения для ограничения длины и обрезки строки.  Браузеры, оказывается, умеют вставлять троеточие в случае, если строка не помещается в отведенное ей место. Наибольшие сложности возникиют, кстати в FireFox. Для него приходится использовать XML биндинги. IE поддерживает эту возможность достаточно давно.

пятница, 14 мая 2010 г.

Совет

Перед началом работы над старым проектом, который достался вам после других программистов, обязательно уточните у заказчика, не нужно ли провести рефакторинг. Может быть заказчик хочет получить на выходе "совершенный" код.

суббота, 24 апреля 2010 г.

Матрица компетентности программиста

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

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

В общем, те, кто еще этого не читал - обязательно прочитайте и всегда стремитесь к совершенству.

пятница, 16 апреля 2010 г.

Профессионализм программиста

Давайте подумаем, что подразумевает под собой профессионализм программиста? Предлагаю мои мысли на эту тему, буду рад вашим дополнениям.

1. Профессионал должен уметь работать со старыми проектами. Не часто нам достаются проекты, которые мы делаем с самого начала. Чаще в руки программиста попадают старые, недоделанные кем-то проекты. Зачастую совмещающие различные подходы к разработке, запутанные и неправильно спроектированные. Конечно, каждый программист захочет переписать все заново. Но не всегда это возможно. Профессионал должен уметь сделать из любого проекта качественный продукт.

2. Профессионализм должен проявляться в умении точно оценить временные затраты на разработку и в умении не превысить их.

3. Опытный программист должен увидеть в новом требовании к проекту все потенциальные сложности, о которых заказчик может и не подозревать. И конечно предупредить его об этом. С опытом приходит умение видеть проблемы там,  где их никто не ожидает. И соответственно умение их быстро решать.

4. Для профессионала не бывает скучных и неинтересных проектов. В каждом проекте можно найти для себя что-то новое, чему-то научиться и т. д.

5. Опытный программист должен быть нацелен прежде всего на результат. А также получать удовольствие от процесса. Очень важное умение - довести дело до конца и выдать результат.

6. С опытом и профессионализмом приходит ценнейший навык решать сложными проблемы простыми методами. Правило KISS было, есть и будет важным постулатом в разработке.

7. Как следствие нацеленности на результат профессионал пересилит в себе желание написать свой велосипед при наличие хорошо работающего существующего. Свой велосипед должен быть написан дома и может быть выложен на суд общественности. В нем можно опробовать свои идеи, и если из него получается хороший продукт, то применить на работе.

 8. Профессионал должен уметь управлять своим временем - распределять его так, чтобы принести как можно больше пользы. Здесь все индивидуально.

9. Спорный момент, но все же. Есть такие неприятные задачи, которые любят откладывать на самый последний момент, когда дальше без нее никак, хотя очевидно, что она должна быть решена как можно раньше. Здесь нужно уметь отбросить свои эмоции и выполнить именно то, что нужно.

Вообще, судя по этим пунктом можно подумать, что профессиональный программист - робот, выполняющий задачи. Без чувств, эмоций, настроений, предпочтений и т. д. Дело в том, что нужно вырабатывать в себе качества, необходимые для той деятельности, которой ты занимаешься. Есть множество профессий, меняющих людей. И программизм - одна из таких. Хочешь добиться успеха - будь профессионалом. Иначе никак.

суббота, 3 апреля 2010 г.

TODO: работа с формами.

При разработке web-приложений с формами нужно научить форму заполняться автоматически тестовыми данными. Это сэкономит кучу времени при отладке. Может быть плагин какой-нибудь придумать для jQuery? Поискал в интернете - нет такого. Может кто знает готовое решение?

вторник, 30 марта 2010 г.

Django. Разработка веб-приложений на Python

Читаю сейчас эту книжку. Написано все просто и понятно. Читается на одном дыхании. Поразительно, но нет ни капли воды (вообще это характерно большинство книг от oreilly).  Возникает ощущение, что после прочтения книги можно свободно писать на django сайты.

Вообще сама платформа поразила меня своей простотой, самодостаточностью и логичностью. Все понятно, почему сделано так, а не иначе, все находится там, где и ожидаешь это найти, и т.д. И становится немного грустно, потому что такого нет на PHP. Ни один фреймворк на PHP не оказался хотя бы близко похожим по сочетании мощности и простоты на Django и Rails (ROR я усиленно изучал еще год назад).

Лидер php-фреймворков Zend вот уже несколько лет упорно сопротивляется моим попыткам покорить его. После выполнения Get Started впадаешь в ступор -  а что, если я хочу сделать так, а не иначе? И начинаются поиски по форумам, по документации. В конце находится статья Matthew Weier O'Phinney, в которой он говорит, что да, есть такая проблема и в версии 2 мы сделаем все иначе (я говорю про модульность приложений на Zend). Будем ждать вторую версию, значит. Не говорю уже про Symfony и другой андеграунд.

Единственное, что мне нравится из php-фреймворков это Yii. Однако в нем все равно нет той простоты и легкости, которая характерна для Django.

Zen Coding

Шпаргалка по Zen Coding http://www.aether.ru/blog/2010/03/26/zencoding-sheatsheet
Вообще Zen Coding очень помогает набирать HTML и CSS. Очень порадовало, что это расширение поддерживается в Notepad++ в достаточно полном виде. В NetBeans поддерживаются только набор префиксных сокращений. Вся мощь однако скрыта в преобразовании CSS3 в полноценный кусок кода на HTML. В общем пробуем и наслаждаемся.

среда, 24 марта 2010 г.

jQuery Cycle Plugin

А этот плагин для слайдшоу картинок много раз мною использовался и оставил самые лучшие впечатления. Хорошо настраивается и многое умеет делать сам.

http://malsup.com/jquery/cycle/

jQuery quickSearch

Интересный плагин для фильтрации данных в таблицах и списках

http://lomalogue.com/jquery/quicksearch/

вторник, 23 марта 2010 г.

понедельник, 22 марта 2010 г.

Очевидные замечания при разработке приложений с БД

    При разработке сайта стоит использовать инструментарий, который позволить приводить базу данных в исходное состояние - создавать определенный набор сущностей в таблицах. Это позволит упростить процесс тестирования и способствует более точному воспроизведению рабочих ситуаций.
    Иногда у базы может быть несколько различных состояний (отсутствие сущностей, заполненная база, наличие связей, отсутствие и т.д). В этом случае следует реализовать инструмент простого переключения из одного состояния в другое, чтобы программист мог с легкостью проверить работу приложения на различных наборах данных.
    И напоследок. Когда разрабатывается приложение с ограничением доступа (требуется ввод пароля), то нужно иметь как можно более легкий способ ввести данные пользователя(ей), чтобы не тратить на это время каждый раз. Например использовать специальную ссылку для обхода авторизации.

суббота, 20 марта 2010 г.

Сравнительный анализ JS фреймворков от IBM

Подробное сравнение JS фреймворков от IBM Статьи от IBM всегда отличаются качеством материала и некоторым оттенком корпоративности. Конечно многие интересные библиотеки остались незатронутыми, но посмотреть есть на что.

четверг, 18 марта 2010 г.

C#

На Интуите можно изучить C#. Искал учебник по этому языку и не нашел подходящий. А очевидное место, где можно посмотреть, забыл.

среда, 17 марта 2010 г.

Менеджер проектов

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

Меня вполне устраивал XMind до тех пор, пока задач было не очень много - он банально начал подтормаживать. Кроме того он не заточен конкретно под управление проектами. Задачи, например, после закрытия не исчезают, приходится руками сортировать. Нет дашборда для задач, и т.д.

Обычно в таких случаях  хочется написать свой велосипед :-)

Работа с формами в PHP

<?php

/*
При работое с формами удобно применять объектно-ориентированный подход.
То есть вы представляете форму как объект

*/

$loginForm = new LoginForm();

//заполняем форму из запроса
//если в запросе были переданы данные формы,
//то объект заполняется данными

if($loginForm->extractFromRequest($_POST) === true)
{
//данные из формы были переданы, можно обрабатывать

//валидация данных
//форма накапливает сообщения об ошибках валидации
//своих полей, чтобы потом вывести их пользователю

if($loginForm->validate())
{
//извлечение провалидированных данных из формы
$loginForm->getName();
$loginForm->getPassword();

//редирект на страницу, куда должен
//попасть пользователь после обработки формы

}
}

//вывод html формы
echo $loginForm->render();


понедельник, 15 марта 2010 г.

CSS Overlay

Оказывается этого достаточно, чтобы сделать overlay на странице. И никакого onresize!
  1. .overLayer
  2. {
  3.     background:black;
  4.     display:block;
  5.     left:0;
  6.     opacity:0.65;
  7.     filter: alpha(opacity = 65);
  8.     position:fixed;
  9.     top:0;
  10.     width: 100%;
  11.     height: 100%;
  12.     z-index: 1000;
  13. }

Пример


Новый сезон

Новая жизнь старого блога. Попытаюсь теперь писать более часто и на более интересные темы. Пользуясь твиттером, понял, что его 140 символов иногда не хватает. Совсем чуть чуть. Вот сюда и буду писать, что недосказано в Twitter