Архив

Архив автора

О Задачах

Есть два простых правила, которые помогают мне поддерживать хорошие отношения с заказчиком, обеспечивают четкое соблюдение сроков и высокое качество работы

Задачи должны быть четкими и однозначными

В задаче должны быть четко определены критерии ее выполнения. Именно по этим критериям определяется файт завершения работ и производится оплата. Если этих условий нет или вместо этих условиях указаны абстрактные цели вроде – «все работает нормально», работа может никогда не закончится.

Никакого креатива

Я считаю себя вполне креативным человеком и всегда стремлюсь красиво решить задачу заказчика. Однако я не умею продавать свою креативность, и я не могу гарантировать, что мои представления о красоте совпадают с вашими. Если обязательным условием для решения вашей задачи является ее красота, удобство, креативность автора, то я ничем не могу вам помочь.

admin Без рубрики

Обо мне

Когда рассказываешь о себе, всегда думаешь с чего бы начать? Поэтому я начну с 19 июля 1982 года, когда я появился на свет. Признаться, я плохо помню то время, да и в детстве моем нет ничего интересного для потенциального работодателя вплоть до 1990 года, когда в возрасте 8 лет в мои руки попала электронная игрушка «Ну погоди!». Это был переломный момент – с тех пор я и стал фанатом электроники. А дальше все было очень быстро. Сначала ZX-Spectrum (Импульс), на котором я от скуки писал на бейсике, когда у меня закончились игрушки.

Потом был PC/AT 386 с тактовой частотой целых 40 МГц и оперативной памятью 2 мб. Когда у меня дома оказалось это чудо техники я в первый же день сломал его,случайно удалив системный файлик msdos.sys. На помощь пришла мамина подруга, программист, установившая на компьютер с дискетки стареньку версию msdos 3.3. Других у нее не было.

Вскоре на смену 386 компьютеру пришел Pentium 133 и наступило следующее ключевое событие в моей жизни – Hayes модем. Не беда что он работал на скорости всего 1200 бод и принципиально не поддерживал аппаратной коррекции ошибок и компрессии данных. Зато это был МОДЕМ. Сейчас я даже не могу вспомнить кто надоумил меня его купить, то ли голливудские фильмы, то ли шестое чувство. Но когда этот модем появился, я понял что не знаю ни одного телефона, с которым модно соединяться. И я начал искать. Для начала я позвонил на парочку случайных номеров. На другом конце трубки сонный голос сказал «Алло?», а модем радостно зашипел в ответ и даже написал «CONNECT 300″. Мне до сих пор стыдно за эти назойливые звонки :)

Однако я очень быстро понял, что методом случайного набора каши не сваришь и я взял в руки газету. Я обзванивал все телефоны в объявлениях, которые как мне казалось могли быть связаны с компьютерами и задавал вопросы типа «А у вас есть сеть?» (про интернет тогда еще вообще не говорили)

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

Вскоре родители купили мне новый модем, 14400 USR Sportster, скорость которого по сравнению с моим первым модемом была просто фантастическая, и который поддерживал модные протоколы V42/LAPM и другие прелести жизни.

Вскоре я стал поинтом Fidonet (2:5063/33.10), предварительно посеяв ужас и панику среди фидошников города. Но это уже другая история :)

А дальше была собственная BBS, Windows, Visual Basic, Turbo Pascal и Delphi и поиски интернета…

admin Обо мне ,

Принудительный сброс кеши у пользователя

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

Решение оказалось очень простым, всего лишь надо в HTML странице подгружать статику – CSS, JS в следующем виде: /css/style.css?version=4
Код версии  передается переменной в шаблонизатор, и когда скрипты или стили меняются, всего лишь увеличиваем версию! Реализацию можно посмотреть сами знаете где :)

admin Без рубрики

Портфолио

22 Февраль 2009

Думаю надо потихоньку заполнять портфолио, буду выкладывать по одной интересной работе примерно раз в неделю

admin Без рубрики

Автооответчик фрилансера

18 Февраль 2009

Вы хотите предложить мне работу, заказать сайт или провести собеседование? Воспользуйтесь моим автоответчиком :) Читать далее…

admin Обо мне

Антипаттерн Почтальон

16 Декабрь 2008

Некоторые молодые разработчики, делая первые шаги в познании клиент-серверной архитектуры приложений используют достаточно забавный метод для передачи данных между PHP скриптами. Допустим пользователь выполняет scriptA.php и ему надо обратиться к функции в файле scriptB.php. Будем ли мы использовать функцию include, или require? Разумеется нет, ведь у нас есть замечательный анти-паттерн «Почтальон»! Передадим данные с помощью самого пользователя, сделав редирект на второй скрипт и передав данные в GET запросе.

К слову сказать мне встречалось уже немало разновидностей почтальонов, которые используют различные механизмы передачи между серверными скриптами через клиентов. Например почтальоны, работающие через кукисы и сессии.

admin быдлокодинг

О Качестве

9 Декабрь 2008

Все что ориентированно на массового потребителя никогда не бывает качественным. Примерами массового продукта являются несомненно:

  • Общественный транспорт
  • Коммунальные службы
  • Государственное телевидение
  • Государственная Дума
  • Работа на окладе

admin Без рубрики

Ломка

7 Декабрь 2008

Борюсь с навязчивым желанием что-нибудь запрограммировать.

admin Без рубрики

Бибилиотека автоматической синхронизации PHP кода и MySQL

30 Ноябрь 2008

Дамы и господа, предлагаю вашему вниманию свою новейшую разработку, одобренную британскими учеными! Встречайте  maper!

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

Допустим вы пишете движок ассоциальной  сети для психопатов. Несомненно будучи серьезным разработчиком для проекта такого уровня вы предусмотрели огромное количество объектов, с огромным количеством полей и массой не поддающихся документированию связей. Разумеется для проекта такого масштаба нужно четкое и грамотное техническое задание и разумеется этого технического задания у нас нет. Что же делать?

Правильно, мы подключаем maper, настраиваем правила трансляции своих объектов в понятный библиотеке вид, и нам больше не нужно думать о MySQL базе, maper все сделает за вас – создаст нужные таблицы, и модифицирует существующие.

Скачать библиотеку maper

admin Без рубрики , , ,

Это прелесть

29 Ноябрь 2008

Эту прелесть я вчера увидел в коде одного из программистов отдела. Нет это правда гениально.

$letter = $_REQUEST["letter"];
switch ($letter)
{
case 'А': $tmp = 'А'; break;
case 'Б': $tmp = 'Б'; break;
case 'В': $tmp = 'В'; break;
case 'Г': $tmp = 'Г'; break;
case 'Д': $tmp = 'Д'; break;
case 'Е': $tmp = 'Е'; break;
case 'Ж': $tmp = 'Ж'; break;
case 'З': $tmp = 'З'; break;
case 'И': $tmp = 'И'; break;
case 'Й': $tmp = 'Й'; break;
case 'К': $tmp = 'К'; break;
case 'Л': $tmp = 'Л'; break;
case 'М': $tmp = 'М'; break;
case 'Н': $tmp = 'Н'; break;
case 'О': $tmp = 'О'; break;
case 'П': $tmp = 'П'; break;
case 'Р': $tmp = 'Р'; break;
case 'С': $tmp = 'С'; break;
case 'Т': $tmp = 'Т'; break;
case 'У': $tmp = 'У'; break;
case 'Ф': $tmp = 'Ф'; break;
case 'Х': $tmp = 'Х'; break;
case 'Ц': $tmp = 'Ц'; break;
case 'Ч': $tmp = 'Ч'; break;
case 'Ш': $tmp = 'Ш'; break;
case 'Щ': $tmp = 'Щ'; break;
case 'Э': $tmp = 'Э'; break;
case 'Ю': $tmp = 'Ю'; break;
case 'Я': $tmp = 'Я'; break;
default : $tmp = 'А';
}

admin быдлокодинг ,