Четвер, 8 липня 2010 р.

Gzip

Для того, чтобы включить gzip компрессию в php надо в начале скрипта написать следующую строку

ob_start("ob_gzhandler");

Проверить зипована страница или нет можно вот здесь:

http://www.whatsmyip.org/http_compression/

Субота, 12 червня 2010 р.

Сколько стоит сделать сайт?

Очень часто люди спрашивают, и ищут в интернет - сколько стоит сделать сайт? Однозначных цен и единого прайс-листа нигде нет, где-то предлагают очень дёшево, а где-то можно заказать за дорого. Ни для кого не секрет, что индийские программисты работают за $5 в час, а американские - за $30. И есть ещё много-много факторов которые влияют на цены.

Базовая логика

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

Обработка ошибок

Обычно люди забывают об этом. Корректная обработка ошибок - признак качественной работы, и признак того, что ваш сайт тестировали. Это - дополнительное время, и соответственно деньги.

Приведу пример на пальцах. Вам нужна программа, которая считает сумму двух введённых чисел. Если вы спросите студента, то он скажет вам что сделает эту программу за Х денег, а специалист скажет, что сделает за Х*5 например. Почему дороже?

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

read A;
read B;
result = A + B;
print result;

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

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

А когда всё-таки стоит переплатить? Если ваш сайт (программа) позиционирует себя как серьёзный продукт, то стоит переплатить специалисту. Обработка ошибочных ситуаций значит, что:

- посетитель сайта, нечаянно введя букву вместо цифры в номере телефона, не получит пустой экран в браузере - сайт обязательно выдаст соответствующее сообщение посетителю, и он сможет ввести данные корректно

- если у вас на сайте делаются онлайн-платежи, то в случае неудачного платежа, посетитель получит содержательное сообщение о причине ошибки, а не просто сообщение "Failed!". Содержательное сообщение нужно для того, чтобы: пользователь мог предпринять какие-то действия (ввести правильный номер кредитки) или мог скопировать сообщение и обратиться в поддержку либо свой банк.

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

Обработка нестандартных ситуаций

Почти то же, что и обработка ошибок, но хотелось вынести это отдельно, т.к. об этом часто забывают. Что случится, если на сайт придёт 1000 пользователей одновременно? Что случится, если откажет сервер баз данных? Что случится, когда на сервере на жёстом диске не останется места? Если это вам нужно, и если это критично, обговорите с программистом - предусмотрена ли обработка этих ситуаций? И это .. ещё одна разница между тем, что сделано за дёшево, и тем, что сделано за дорого.

Фрилансер или студия?

Почему заказать работу у программиста-одиночки (фрилансера) обычно стоит дешевле, чем у какой-нибудь студии или software-фирмы?

Потому что работа программиста-одиночки выглядит как:
- написал
- протестировал и убедился, что это работает
- протестировал с нестандартными данными, убедился что выдаются сообщения об ошибках, и сайт/программа аварийно не завершаются

Что творится в серьёзных конторах:
- во-первых, там обычно есть стандарты, относящиеся к коду
- программист написал
- другой программист за ним проверил код
- отдел тестирования полностью протестировал
- ещё какой-нибудь отдел качества проверяет продукт перед выпуском

Преимущества серьёзной конторы:

- качественно написанный код, разумно организованная структура кода, соблюдение стандартов и двойная проверка кода удешевляют последующую поддержку и расширение.
Это важно. Потому что, если вам что-то и кое-как написали за Х денег, а через год ваш бизнес вырос, и вы хотите добавить функционал - окажется что проще переписать всё заново (если было сделано кое-как). Заново - это значит ещё Х, а чаще 2Х денег.
- отдел тестирования несомненно лучше протестирует вашу программу/сайт, чем это может сделать один человек, чаще всего не имеющий специальных знаний в тестировании, ибо он изначально программист, а не тестировщик
- отдел качества - это ваша гарантия, что всё будет качественно

Складывается ощущение, что серьёзные конторы - наше всё.

Но нет. Если вам нужен сайт-визитка. Если вам нужен сайт салона красоты. Если вы потом особо не планируете расширять ваш сайт (до интернет-магазина, социальной сети, портала например) - то зачем вам эти контроли качества, стандарты кодирования (хотя хорошо бы!), и отдел тестирования из 20-ти человек?? Просто хочется? Окей, но за это - вы переплачиваете (20 человек в отделе тестирования - это вам не шутки! им всем, как минимум, зарплату платят).

Дизайн

Хороший дизайн стоит дорого.
Можно найти бесплатные шаблоны дизайна/макеты в интернет.
Но если вы хотите уникальный дизайн - это дорого.
Итого, если вы решаете что вам это нужно - вы платите больше.
А если нет, - не стоит.
Я знаю несколько очень посещаемых и популярных сайтов с совершенно незамысловатым или вообще отсутствующим дизайном. Lib.ru например. Или bash.org.ru.

Итого:

- определитесь с логикой работы вашего сайта
- решите, нужен ли вам уникальный дизайн
- решите, насколько серьёзным будет ваш продукт и планируете ли вы его развивать в что-то большее - по итогу выберите между студией и заказом у фрилансера
- обговорите заранее с фрилансером, какие нестандартные ситуации должны быть обработаны (особо критичные - укажите). Простенькие, конечно, он и сам обработает (невведённые данные например), а вот те, что посложнее и нестандартные - укажите и обговорите.

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

Понеділок, 19 квітня 2010 р.

CodeCamp 2010, Киев

Посетили CodeCamp 2010 в Киеве.

Впечатления:

1. Не совсем понятно на какую аудиторию ориентировались организаторы. На студентов или на специалистов с опытом? Если на специалистов с опытом - по каким технологиям, потому что разброс большой, от С# до Flex и HTML+CSS? А вообще, судя по всему, 80% посетивших были студентами.

2. По нашей специализации, разработке сайтов, мы не узнали чего-то нового. Но послушать было интересно. Самыми интересными докладчиками были, по моему мнению, ребята из Яндекс. Хороший доклад по клиентской оптимизации сайта, но это уже всё известно )) тем у кого стоит Firebug

3. "Высокие нагрузки и как мы с ними боремся" - Яндекс - про нагрузки рассказали, а вот секреты борьбы с ними никто не раскрыл. Показали графики нагрузки Яндекса в течение дня, рассказали про сервера, и всё вам )

4. Дискуссия - что лучше, Flex или HTML5, вообще удивила. Как можно сравнивать язык программирования и язык разметки??

Итого, конференция ничего, но хочется чего-то более узкоспециализированного, чтобы было чётко сориентировано на специалистов с определённым опытом работы, в определённой технологии.

security checklist

Checklist по безопасности сайта, будет дополняться:

1. Directories like http://mysite.com/images/, http://mysite.com/temp/, http://mysite.com/lib/ should not be accessible for browsing

2. Check that both www.mysite.com and mysite.com work. It’s important because cookies can not work, and if member logged in to mysite.com, but www.mysite.com will not find member’s cookies and will think that member is not logged in.

3. Try to insert “sdfsd#/’” text into html fields (SQL injections).

4. Try to insert “” into html fields (JavaScript injections)

Links:

Top 10 website security myths
Top 10 website security issues

Книги которые должен прочесть каждый программист

Рейтинг 1:

1) Томас Пратт, “Языки программирования”, любое здание. Книга очень хорошая, особьенно новое издание, но и старое тоже ничего.
2) “Семантика языков программирования” В. Вольфенгаген, с инициалами может путаюсь. Книга немного изменяет процессы в мозгу.
3) Ахо, Хопкрофт, Ульман, “Алгоритмы и структуры данных”. Очень хорошая книга и доступная для понимания.
4) С. Липман, Ж. Лажойе “С++. Вводный курс”. Достаточно фундаментальная и полезная книга по С++.
5) По Java – К. Хорстманн, Г.Корнелл, 2 – х томник о программировании на Java.
6) С. Макконелл, “Совершенный код”
7) Э. Хант, Д. Томас, “Программист – прагматик”.
8) “Структура и интерпретация компьютерных программ” – очень хорошая книга по функциональному программированию.
9) “Дискретная математика” Белоусов, Ткачёв.
10) “Системное программное обеспечение” издательство Питер, авторов не помню, хорошая книга, описываются потоки, сети Петри и т.д.

Рейтинг 2:

- “Code Complete”. Steve McConnell.
- “The Mythical Man-Month”. Fred Brooks.
- “Peopleware”. Tom DeMarco, …
- “The Pragratic Programmer”. Andrew Hunt, …
- “Professional Software development”. Steve McConnell.
- “Facts and Fallacies of Software Engineering”. Robert L. Glass.

Отзывы:

1. книга “Программист-прагматик” очень сильна, к ней надо периодически возвращаться
2. Knuth D. “Art of Computer Programming”
3. Говорят, SICP просто потрясающая книга, которую стоит читать разработчику с любым опытом работы на любой платформе. Говорят, НАСТОЯЩАЯ КНИГА

Quality checklist

Checklist по качеству сайта, будет дополняться:

1. Alt and Title should be present for images

2. Every page should have its header. I.e. “Contact Us” page should state “Contact Us” in its header.

Скорость mysql - ссылки

Top10SQLPerformanceTips
32 Tips To Speed Up Your MySQL Queries