Написал небольшой мануал по настройке и масштабированию PostgreSQL. Сподвигло меня на это то, что материала по этой теме мало, он устарел или его просто нет.
Скачать можно здесь:
http://github.com/le0pard/postgresql_book/raw/master/postgresql.pdf
Исходники:
http://github.com/le0pard/postgresql_book/
Сайт книги:
http://postgresql.leopard.in.ua/
Tags: проектирование, разработка
Наверно многие PHP разработчики работали с таким акселератором, как eAccelerator. eAccelerator является PHP-акселератором, основное назначение которого состоит в кэшировании бинарного представления кода. Каждый раз при выполнении скрипта, PHP читает все подключаемые файлы и переводит их в бинарный код, при запросе скрипта операция повторяется. Задача eAccelerator состоит в сохранении бинарного кода для повторного использования, уменьшая время выполнения скрипта. Быстрый, простой, легкий в настройке. Что еще пожелать?
В новых версиях (а именно с 0.9.6 и 0.9.6.1) была найдена неприятная вещь. При компиляции по умолчанию, а именно через такой набор команд:
-
phpize
-
./configure
-
make
-
make install
начинаются проблемы с PHP, а именно:
-
PHP Warning: Unknown: open_basedir restriction in effect. File() is not within the allowed path(s): (<your_open_basedir_dirs>) in Unknown on line 0
Все оказывается просто. При использовании директивы PHP open_basedir для обеспечения безопасности, нужно собрать eAccelerator с опцией "--without-eaccelerator-use-inode". Данный механизм хранения кэша не совместим с open_basedir, поэтому open_basedir в сочетании с этой опцией приводит к фатальным ошибокам в скриптах.
Решение:
-
phpize
-
./configure --without-eaccelerator-use-inode
-
make
-
make install
Вот и все!
Tags: PHP, разработка
Очень долго я разрабатываю приложение для веба. Сначала я работал на DreamWeaver, но его функционал был ужасен да еще за него нужно было платить. Немного помытарился я перешол на Netbeans. Прекрасное IDE, но есть один недостаток – кушать такие IDE память и процессор любят (логично – больше плагинов – больше проблем). Потом я перешол на Aptana. Великолепное IDE. Писать про него можно много. Хоть он тоже любит память и процессор (Eclipse все-таки), но не такой прожорливый как Netbeans. Я работаю на этом IDE по сей день, но в один прекрасный момент мне достался ноутбук с 1.5 одно ядерным процессором и 1 Гб памяти. Работать то можно, но для Aptana такой процессор не сильно нравится – уж часто её приходится «уходить в себя» (зависать на неопределенный интервал времени). И хоть работать возможно, я решил поработать в Vim. Сам по себе vim «голый» очень скуд в функционале. И поскольку мы разрабатываем львиную долю проектов на Rails и Ruby, мне нужно было улучшить работу. И к моей радости довольно-таки быстро наткнулся на набор скриптов от бразильца Akita on Rails. Он, как я понял, собрал кучу полезных плагинов вместе и чуть-чуть дописал конфиг. Всё, о чём будет говориться ниже верно не только для Ruby, но и для других языков типа C, PHP и прочее, готовые наборы сниппетов (о них далее) в комплекте есть и для них.
Tags: Ruby, Ruby on Rails, vim
Введение
В этом топике я хочу представить вам, дорогие читатели, пересказ вебинара от человека, чьё имя не нуждается в представлении. Для того, чтобы изложить часовой вебинар в виде небольшого топика, мне пришлось значительно ужать комментарии автора, поэтому я сознательно не помечаю топик как «перевод». В этот раз Стив МакКоннелл решил поделиться с нами своим опытом в виде коротких тезисов, в которых он отражает самые страшные ошибки при оценке трудоёмкости разработки программного обеспечения. В 1998 году читатели журнала Software Development назвали Стива одним из самых влиятельных людей в индустрии разработки программного обеспечения на равне с Биллом Гейтсом и Линусом Торвальдсом. Стив — автор книги «Software Estimation. Demystifying The Black Art» — одной из самых популярных книг в области оценки трудоёмкости разработки ПО. Надо признаться, что вебинар был проведён относительно давно (июнь 2009 года), но информация, представленная там, совсем не устарела.
Tags: проектирование, разработка
Да-да-да! На столько непонятный заголовок. Все очень просто. Есть такой популярный PHP фреймворк – Symfony. Все в нем хорошо, вот только недавно обнаружилась одна плохая бага: при включенном кешировании (а именно использовании contextual параметра в кеше) на продакшене при попытке вызова 404 сайт просто вываливается с ошибкой, примерно с такой:
-
PHP Fatal error: Uncaught exception ‘sfException’ with message ‘A cache key must contain both a module and an action parameter’ in /var/www/clients/client2/web6/lib/vendor/symfony/lib/view/sfViewCacheManager.class.php:246#012Stack trace:#012#0 /var/www/clients/client2/web6/lib/vendor/symfony/lib/view/sfViewCacheManager.class.php(145): sfViewCacheManager->convertParametersToKey(Array)#012#1 /var/www/clients/client2/web6/lib/vendor/symfony/lib/view/sfViewCacheManager.class.php(478)
Проблема решается просто. При создании ключа для contextual кеша используется модель и экшен текущей страницы. А на при попытке вызова несуществующей страницы требуется указать, что модель и экшен брать для 404 страницы. А вот и сам фикс:
-
Index: lib/view/sfViewCacheManager.class.php
-
===================================================================
-
— lib/view/sfViewCacheManager.class.php (revision 28275)
-
@@ -142,6 +142,10 @@
-
if (!$contextualPrefix)
-
{
-
list($route_name, $params) = $this->controller->convertUrlStringToParameters($this->routing->getCurrentInternalUri());
-
+ $params[‘module’] = sfConfig::get(‘sf_error_404_module’);
-
+ $params[‘action’] = sfConfig::get(‘sf_error_404_action’);
-
+ }
-
$cacheKey = $this->convertParametersToKey($params);
-
}
-
else
-
Вот и все. Теперь 404 будет работать и на продакшене. Тикет на symfony trac.
Tags: PHP
Используйте bcrypt.
Используйте bcrypt. Используйте bcrypt. Используйте bcrypt. Используйте bcrypt. Используйте bcrypt. Используйте bcrypt.
Почему не {MD5, SHA1, SHA256, SHA512, SHA-3, другие}?
Все эти хэш-функции имеют общую цель – они предназначены для расчета предварительно огромных объемов данных в самые короткие сроки. Это означает, что они фантастически подходят для обеспечения целостности данных и полнейший шлак(мусор) для выполнения функции хранения паролей.
Современный сервер может вычислять MD5 хеш приблизительно размером 330 MB каждую секунду. Если у ваших пользователей пароли, которые в нижнем регистре, буквенно-циферные и до 6 символов, вы можете перебрать каждый пароль такого вида приблизительно за 40 секунд. И это без всякого напряга! Если вы готовы потратить около 2000 долларов и одну-две недели для сборки CUDA, вы можете собрать собственный маленький кластер, который позволит вам подбирать около 700000000 паролей в секунду. С таким показателем вы будете раскалывать пароли чуть больше, чем за одну секунду.
Tags: защита и безопасность информации, интересно, проектирование, разработка
По большей части эта статья — изложение сути статьи «Brewer’s CAP Theorem» Джулиана Брауна. В оригинале много полезных ссылок и интересных примеров, поэтому если позволяет время и знание языка, почитайте его. А здесь у меня просто самая суть, покороче и по-русски.
В 2000 году Эрик Брюер выдвинул гипотезу, касающуюся ключевых свойств распределённых систем, которую затем доказали в MIT, и с тех пор она называется теоремой Брюера или теоремой CAP (Consistency-Availability-Partition tolerance). Вольная формулировка:
В распределённой системе невозможно обеспечить одновременное выполнение всех трёх условий: корректности, доступности, устойчивости к сбоям узлов.
Что это за свойства?
Read the rest of this entry »
Tags: web, проектирование
При работе с проектом всегда хочется увидить его прогрес выполнения и также узнать время его выполнения (хотя бы приблизительно). Ken Schwaber рассказывал про burn-up and burn-down charts. Я был удивлен в простоте и информативности такого метода.
Burn-down charts
Через такой тип диаграмм можно увидеть какой обьем работы остается до конца проекта и успеете в сроки выполнения. На вертикальной оси откладывают не выполненную работу. На горизонтальной оси откладываем итерации проекта, помечаем какие итерации приближают нас к окончанию проекта. После выполнения каждой итерации её помечают на графике и таким образом отслеживают будет ли выполнен проект в срок.
По такому графику можно отслеживать все ли итерации выполняются за такое время, на которое они расчитаны, или же возможно сроки выполнения придется пересмотреть.
Tags: разработка
Начнем с простого. Что значат эти буквы в моем понимании?
Сеть доставки (и дистрибуции) контента (Content Delivery Network или Content Distribution Network, CDN) – географически распределенная сетевая инфраструктура, позволяющая оптимизировать доставку и дистрибуцию контента конечным пользователям в сети Интернет. Использование контент-провайдерами CDN способствует увеличению скорости загрузки интернет-пользователями аудио-, видео-, программного, игрового и других видов цифрового контента в точках присутствия сети CDN. Значит я могу увеличить скорость своего сайта и уменьшить нагрузку на сервер через это? Еще как…


