Итак, сегодня мы соберём генератор миниатюрок на базе любимого народом веб-сервера — nginx-а. Что примечательно, сделаем мы это без единого гвоздя, т.е. без единой строчки кода, не считая конфигурации.
fim @fim
Пользователь
Введение в шаблонизатор Blitz
5 мин
10KПеревод
Из документации о Blitz: Чрезвычайно быстрый и мощный шаблонизатор для очень больших интернет-проектов.
Приведу несколько фактов:
Приведу несколько фактов:
- Это шаблонизатор используемый Хабром;
- Этот шаблонизатор используется на высоко-нагруженных проектах, он написан на C, подключается как расширение PHP;
- Его скорость сопоставима с самим php (бенчмарк под катом);
- Верстальщики будт счастливы, так как в шаблонах нет логики приложения, нет циклов, ветвлений и т.д.;
- Один из его авторов Алексей Рыбак fisher.
+31
Обеспечение качества программного продукта
4 мин
11KДисциплина «Метрология программного обеспечения» входит в учебный план подготовки дипломированных специалистов по направлению 654600 — «Информатика и вычислительная техника» по специальности 220400 — «Программное обеспечение вычислительной техники и автоматизированных систем». Дисциплина изучает проблемы оценки метрических характеристик качества ПО на этапах от разработки спецификаций до завершения отладки и тестирования программного продукта. В курсе рассматриваются критерии, характеристики и метрики качества ПО; особый упор делается на характеристики корректности, надежности и сложности программ. Изучаются формальные модели и методы оценки как статических, так и динамических характеристик качества ПО, позволяющие на различных стадиях разработки выявлять просчеты и дефекты программного изделия. Рассматриваются инструментальные средства поддержки и автоматизации измерения характеристик ПО.Далее по тексту будет находится краткий обзор инструментов с помощью которых можно анализировать различные характиристики в приложениях созданных на PHP. Данный материал появился на свет в результате некоторых экспериментов в области непрерывной интеграции, и должен был являться частью статьи про непрерывную интеграцию (спойлерить пока не буду, боюсь сглазить) все в том же РНР, но я решил все-таки выделить его в самостоятельный обзор, так как возможно, в последующих статьях я буду ссылаться на него, а так же надеюсь узнать об аналогичных инструментах еще не попавших мне на глаза. Некоторые инструменты уже были рассмотрены достаточно подробно, но тем не менее полного списка всех доступных еще не было.
+103
Генератор текста на основе триграмм (python)
10 мин
37KВ данной статье описывается как сгенерировать псевдотекст на основе триграммной модели. Полученный текст вряд ли возможно где-либо использовать, тем не менее это неплохая иллюстрация использования статистических методов обработки естественного языка. Пример работы генератора можно посмотреть здесь.
И так, наша задача сгенерировать текст. Это значит, нам нужно взять слова и выстроить их в определенном порядке. Как определить этот порядок? Мы можем пойти следующим образом: построить фразы, наиболее вероятные для русского языка. Но что значит вероятность фразы языка? С точки зрения здравого смысла это бред. Тем не менее, эту вероятность можно задать формально как вероятность возникновения последовательности слов в неком корпусе (наборе текстов).
Сухая теория
И так, наша задача сгенерировать текст. Это значит, нам нужно взять слова и выстроить их в определенном порядке. Как определить этот порядок? Мы можем пойти следующим образом: построить фразы, наиболее вероятные для русского языка. Но что значит вероятность фразы языка? С точки зрения здравого смысла это бред. Тем не менее, эту вероятность можно задать формально как вероятность возникновения последовательности слов в неком корпусе (наборе текстов).
+30
Три интересные задачи на знание SQL
4 мин
30KБуквально несколько часов назад, после внимательного изучения комментариев вот к этому топику я был несколько удивлен что многие не очень любят использовать условия HAVING и похоже другие возможности СУБД. Скажу прямо — мне очень понравилась обсуждение простейшего и не работающего запроса, в результате которого многие узнали для себя много нового и познавательного (это мое личное мнение). Поэтому я решил сделать вот что — вывести три моих самых любимых задачи по знанию SQL (MySQL) на суд общественности.
Данные задачи абсолютно реальные, и в отдаленном светлом прошлом действительно имели место, и были благополучно решены жертвой некоторого количества рабочего времени и нервных клеток. Я уверен на 100% что они актуальны и по сей день, и будут актуальны еще долго. Сложными их назвать нельзя, но и очень простыми тоже (в зависимости от уровня подготовки конечно).
+24
Сервер на стероидах: FreeBSD, nginx, MySQL, PostgreSQL, PHP и многое другое
16 мин
40KВведение
С момента написания мной предыдущей статьи по оптимизации этой связки прошло довольно много времени. Тот многострадальный Pentium 4 c 512Мб памяти, обслуживающий одновременно до тысячи человек на форуме и до 150,000 пиров на трекере уже давно покоится на какой-нить немецкой, свалке, а клуб сменил уже не один сервер. Всё сказанное в ней всё ещё остаётся актуальным, однако есть вещи которые стоит добавить.
Статья большая, так что будет поделена на логические блоки:
0. Зачем вообще что-то оптимизировать? 1. Оптимизация ОС (FreeBSD) 1.1 Переход на 7.х 1.2 Переход на 7.2 1.3 Переход на amd64 1.4 Разгрузка сетевой подсистемы 1.5 FreeBSD и большое кол-во файлов 1.6 Softupdates, gjournal и mount options 2. Оптимизация фронтенда (nginx) 2.1 Accept Filters 2.2 Кеширование 2.3 AIO 3. Оптимизация бэкенда 3.1 APC 3.1.1 APC locking 3.1.2 APC hints 3.1.3 APC fragmentation 3.2 PHP 5.3 4. Оптимизация базы данных 4.1 MySQL 4.1.1 Переход на 5.1 4.1.2 Переход на InnoDB 4.1.3 Встроеный кеш MySQL - Query Cache 4.1.4 Индексы 4.2 PostgreSQL 4.2.1 Индексы 4.2.2 pgBouncer и другие. 4.2.3 pgFouine 4.3 Разгрузка базы данных 4.3.1 SphinxQL 4.3.2 Не-RDBMS хранилище 4.4 Кодировки 4.5 Асинхронность Приложение. Мелочи. 1. SSHGuard или альтернатива. 2. xtrabackup 3. Перенос почты на другой хост 4. Интеграция со сторонним ПО 5. Мониторинг 6. Минусы оптимизации
+361
Tornado Web Server
1 мин
16KКоманда friendfeed.com, недавно присоединившаяся к Facebook, выложила в открытый доступ собственный неблокирующий веб-сервер на Python. Из-за своей неблокирующей природы (используется epoll) сервер легко выдерживает тысячи одновременных подключений. У Tornado есть все шансы стать лучшим выбором для реализации технологии Comet средствами языка Python.
Производительность впечатляет:
Документация (на англ.) — www.tornadoweb.org/documentation
+56
Tip по использованию Git под Windows
1 мин
13KПродолжая статьи о Git, распределенной системе контроля версий, с помощью которой ведется разработка таких проектов как Linux и Ruby on Rails, хотелось бы сказать и несколько слов о работе с ним под Windows.
Официального порта Git под Windows нет, есть mingw+msys порт по адресу code.google.com/p/msysgit/downloads/list
Как-то понадобилось написать проект на ruby под Windows — возникла проблема с виндовым переносом строки, который вставлялся во все файлы автоматически, вследствие чего проект не работал вообще. Оказалось, что для исправления нужно подправить gitconfig, в котором разработчики msysgit предусмотрительно вставили автопостановку CRLF.
Отключается она элементарной правкой gitconfig (можно найти в папке C:\Program Files\Git\etc), меняем содержимое секции core на следующее:
Надеюсь, совет окажется многим полезным :)
Официального порта Git под Windows нет, есть mingw+msys порт по адресу code.google.com/p/msysgit/downloads/list
Как-то понадобилось написать проект на ruby под Windows — возникла проблема с виндовым переносом строки, который вставлялся во все файлы автоматически, вследствие чего проект не работал вообще. Оказалось, что для исправления нужно подправить gitconfig, в котором разработчики msysgit предусмотрительно вставили автопостановку CRLF.
Отключается она элементарной правкой gitconfig (можно найти в папке C:\Program Files\Git\etc), меняем содержимое секции core на следующее:
[core]
autocrlf = false
symlinks = false
Надеюсь, совет окажется многим полезным :)
+18
Список полезных инструментов для php разработчика
10 мин
148KПеревод
PHP один из самых широко используемых языков для создания вебсайтов. PHP фреймворки, такие как Zend, CakePHP, CodeIgniter и т.д и open source классы и библиотеки упростили разработку.
Независимо от того, являетесь ли вы опытным разработчиком или новичком, инструменты, которые вы используете, имеют прямое влияние на вашу продуктивность. Здесь собран список действительно полезных утилит и расширений для PHP разработчиков, которые помогут ускорить разработку, и улучшит итоговое качество кода.
Независимо от того, являетесь ли вы опытным разработчиком или новичком, инструменты, которые вы используете, имеют прямое влияние на вашу продуктивность. Здесь собран список действительно полезных утилит и расширений для PHP разработчиков, которые помогут ускорить разработку, и улучшит итоговое качество кода.
+186
Учебник по языку программирования Python (хабраиндекс)
1 мин
313KСерия статей «Основы Python»
I, Начало
II, Строки
III, Списки, кортежи, файлы
IV, Генераторы списков
V, Определение функций, основы
VI, Расширенное определение функций
Об основах языка Python в сжатой форме
Продвинутый уровень
Сила и красота декораторов Короткий экскурс в метапрограммирование.
Итерируем все и вся Специфика циклов в Питоне.
Как я учился работать с XML
Консервация объектов в Python Использование модуля Pickle.
Memoization в Python Оптимизация работы программ.
Простейшее рисование с помощью PIL
Regexp и Python: извлечение токенов из текста
Как писать маленькие приложения на python с графическим интерфейсом (библиотека Qt).
http://netsago.org/ru/docs/1/12/
Одеваем скрипты Python с помощью EasyGui (добавляем простой диалоговый интерфейс)
http://djbook.ru/
Учебник по Django (Python-фреймворк для веб-приложений)
+158
про ПМов-альтруистов, сосиски и тот свет
3 мин
1.2KПМы-альтруисты, сосиски и тот свет.
если Вы хотите узнать, что связывает эти понятия, прошу:
если Вы хотите узнать, что связывает эти понятия, прошу:
+32
Советы по фиксациям в SVN
4 мин
3KПеревод
Предлагаю перевод хорошей статьи с советами по выполнению фиксаций в хранилище. Оригинал написан для проекта T2, но практически все советы универсальны и легко применимы для любого другого проекта. А самое главное — они действительно полезны.
Upd: В названии статьи хоть и фигурирует SVN, но советы, изложенные в ней, подходят ко всем известным мне системам кондроля версий. Стоит так же заметить, что советы направлены в основном на командную разработку.
Upd: В названии статьи хоть и фигурирует SVN, но советы, изложенные в ней, подходят ко всем известным мне системам кондроля версий. Стоит так же заметить, что советы направлены в основном на командную разработку.
+33
Последняя проверка перед запуском сайта
3 мин
4.1KПеревод
Запуск сайта ответственное мероприятие, надеюсь что этот список контрольных вопросов позволит ничего не упустить из виду.
+69
8 Характеристик удачного пользовательского интерфейса
5 мин
18KПеревод
Существует много информации о различных методах проектирования пользовательского интерфейса, которую вы можете использовать, создавая веб-сайт или интерфейс программы.
Я составил список из 8 характеристик, которые считаю залогом успешного пользовательского интерфейса.
Я составил список из 8 характеристик, которые считаю залогом успешного пользовательского интерфейса.
+53
Что такое анти-паттерны?
9 мин
144KАнти-паттерны — полная противоположность паттернам. Если паттерны проектирования —
это примеры практик хорошего программирования, то есть шаблоны решения определённых задач. То анти-паттерны — их полная противоположность, это — шаблоны ошибок, которые совершаются при решении различных задач. Частью практик хорошего программирования является именно избежание анти-паттернов. Не надо думать, что это такая непонятная теоретическая фигня — это конкретные проблемы, с которыми сталкивался практически каждый разработчик. Кто осведомлен, тот и вооружён! Рассмотрим же несколько расрпотранённых анти-паттернов в программировании.
это примеры практик хорошего программирования, то есть шаблоны решения определённых задач. То анти-паттерны — их полная противоположность, это — шаблоны ошибок, которые совершаются при решении различных задач. Частью практик хорошего программирования является именно избежание анти-паттернов. Не надо думать, что это такая непонятная теоретическая фигня — это конкретные проблемы, с которыми сталкивался практически каждый разработчик. Кто осведомлен, тот и вооружён! Рассмотрим же несколько расрпотранённых анти-паттернов в программировании.
+137
Как правильно использовать исключения
3 мин
15KЖаль, если ваше изучение концепции исключений закончится чтением соответствующего раздела официальной документации по вашему языку.
Изучив синтаксис конструкции try{...}catch(Exception $e){...}, узнав о возможности создавать собственные классы исключений, наследуя их от класса Exception и поверхностно осознав мощь оказавшегося в ваших руках механизма, дальше вы можете пойти по одному из двух путей:
Изучив синтаксис конструкции try{...}catch(Exception $e){...}, узнав о возможности создавать собственные классы исключений, наследуя их от класса Exception и поверхностно осознав мощь оказавшегося в ваших руках механизма, дальше вы можете пойти по одному из двух путей:
- Начать тут же использовать исключения. Скажем, прикручивать их к системе, в которой они никогда не использовались. Или приколачивать их к проекту, в котором ООП и не пахнет. Или, что самое ужасное, пытаться использовать их повсеместно, особенно там, где это не нужно.
- Попытаться понять, где их применять, как делать это правильно, и зачем они нужны.
+96
Идеальный шторм. Постмортем неанонсированного проекта.
8 мин
2.7KСегодня мы шли с Вовчегом, нашим гуру гейм-дизайнером, брать ему кредит на покупку квартиры и обсуждали наш текущий проект.
Сошлись на том, что удивительно, что нас до сих пор обоих не уволили. Мы умудрились допустить огромное количество очень существенных ошибок: я — по управлению, Вовчег — по дизайну. Проект еще не закончен, но уже можно сделать определенные выводы.
Проект длится 8-ой месяц, будет длиться со всеми многочисленными платформами еще 2-3 месяца. При этом мы сейчас четко видим, какие именно ошибки стоили компании 2-3 месяца разработки и десятки тысяч долларов (надеюсь, что счет на сотни тысяч не пойдет).
КОМАНДА
Главная ошибка в управлении моя — это ошибка выбора команды:
— Ставка на молодую команду, которая так и не смогла, по сути, «развернуться» на этом очень сложном во всех аспектах проекте.
— Связка молодой PM + опытный PMA, которая провалилась сразу. Мне показалось, что я смогу реализовать то, что, мне тогда казалось, работало в Нивале.
— Мы фатально ошиблись с оценкой сложности задачи по гейм-дизайну, что привело к тому, что связка дизайнер-программист оказалась удаленной, что почти катастрофа для проекта нашей сложности.
Мне потребовалось целых 2 месяца, чтобы осознать, насколько плоха ситуация, меня только совсем чуть-чуть оправдывает, что из этих 2 месяцев 2 недели я был в отпуске в тёплом месте. То, что я увидел после отпуска, было катастрофой. Я понял, _насколько_ категорически и масштабно я облажался. Кажется, еще никогда раньше я не ошибался ТАК круто.
Сошлись на том, что удивительно, что нас до сих пор обоих не уволили. Мы умудрились допустить огромное количество очень существенных ошибок: я — по управлению, Вовчег — по дизайну. Проект еще не закончен, но уже можно сделать определенные выводы.
Проект длится 8-ой месяц, будет длиться со всеми многочисленными платформами еще 2-3 месяца. При этом мы сейчас четко видим, какие именно ошибки стоили компании 2-3 месяца разработки и десятки тысяч долларов (надеюсь, что счет на сотни тысяч не пойдет).
КОМАНДА
Главная ошибка в управлении моя — это ошибка выбора команды:
— Ставка на молодую команду, которая так и не смогла, по сути, «развернуться» на этом очень сложном во всех аспектах проекте.
— Связка молодой PM + опытный PMA, которая провалилась сразу. Мне показалось, что я смогу реализовать то, что, мне тогда казалось, работало в Нивале.
— Мы фатально ошиблись с оценкой сложности задачи по гейм-дизайну, что привело к тому, что связка дизайнер-программист оказалась удаленной, что почти катастрофа для проекта нашей сложности.
Мне потребовалось целых 2 месяца, чтобы осознать, насколько плоха ситуация, меня только совсем чуть-чуть оправдывает, что из этих 2 месяцев 2 недели я был в отпуске в тёплом месте. То, что я увидел после отпуска, было катастрофой. Я понял, _насколько_ категорически и масштабно я облажался. Кажется, еще никогда раньше я не ошибался ТАК круто.
+125
Информация
- В рейтинге
- Не участвует
- Откуда
- Россия
- Дата рождения
- Зарегистрирован
- Активность