• Литература среднего уровня сложности?

    andreysmind
    @andreysmind
    Пару недель назад тут же на Хабре habrahabr.ru/qa/24106/
    Почитал, думаю, как раз подойдёт.
    Ответ написан
    Комментировать
  • А можно ли использовать язык BrainFuck на ЕГЭ?

    @stg34
    Вспоминается анекдот.
    Два солдата, один — другому:
    — Давай над прапорщиом подшутим?
    — Хватит, над деканом уже пошутили…
    Ответ написан
    Комментировать
  • PHP-FPM на рабочем сервере под Debian 6?

    rakot
    @rakot
    Может, это не ваш случай, но после 700 конкурентных запросов, у меня на сервере тоже происходил затык.
    Дело было в в создании файлов сессий на диск, после переноса сессий в редис от этого избавился.
    Ответ написан
    3 комментария
  • PHP-FPM на рабочем сервере под Debian 6?

    alekciy
    @alekciy
    Вёбных дел мастер
    >Но когда появился большой трафик (примерно 2-3 000 одновременных соединений),
    >появилась проблема ошибки 502

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

    Увеличте backlog бэкэнда, запросы которые он не сможет принять буду ставиться в очередь. Но увлекаться этим не стоит, пользователь не будет у вас ждать, пока его запрос из backlog будет бэкэндом взят и обработан. Значит смотрите в сторону ускорения приложения. Сколько времени генериться страница? Если ли страницы которые одинаковы для всех? Выносите их в memcached и забирайте самим nginx-ом, не дергайте лишних раз бэкэнд. Включены ли акселераторы в духе XCache? Все ли скрипты при этом в кэше? Как обстоят дела с соединения к базе, сколько по времени они занимаются? Используется ли кэширование на этом уровне? К примеру, у меня в случае забора ответа от СУБД страница в среднем на одном проекте генерится ~15-20 мс, если данные забираются из кэша в роли которого работает Redis, то величина падает до ~2-10 мс, т.е. до 10 раз. И бэкэнд готов обрабатывать следующий запрос.

    В общем обращаю внимание, что установка php-fpm чудесным образом ситуацию может не изменить, хотя возможно сгладит её.
    Ответ написан
  • PHP-FPM на рабочем сервере под Debian 6?

    ajaxtelamonid
    @ajaxtelamonid
    Laravel
    Правильно делаете, что не доверяете dotdeb.org. Я лично ничего больше от них ставить не буду, был негативный опыт, причем два раза.

    Поставить php-fpm можно вот таким способом: www.zagirov.name/debian-testing-install-php5-fpm
    Т.е. по сути этот пакет одинаков для любого php 5.3. Достаточно просто убить внутри пакета зависимость от версии и можно ставить. Я это проделал у себя, все работает.
    Ответ написан
    2 комментария
  • PHP-FPM на рабочем сервере под Debian 6?

    @NiGHt_LEshiY
    Если вы контроллируете обстановку, можно собрать и поставить php-fpm самому. Желательно адекватным способом, а не make install. (то есть собрать deb-пакет и дать менеджеру пакетов самому поставить его)
    Ответ написан
    1 комментарий
  • Как обеспечить доступ к Git на сервере, без веб-интерфейса?

    slavaz
    @slavaz
    > Это не важно, можно и ssh. Главное, чтобы работало ) Git настроить гораздо сложнее, чем SVN.
    В случае ssh настроить проще, чем SVN.

    git clone ssh://user@host.name/path/to/git/source

    и всё. Можно дальше поиграться с ssh-keygen, чтобы ходить по определённому паролю (а то и вообще без пароля). Можно усиливать безопасность. выделив отдельного пользователя (git например) и дав ему шелл /usr/bin/git-shell, и потом через ssh-ключи давать доступ к репозиторию разным личностям.
    Ответ написан
    Комментировать
  • Обработка ошибок при асинхронном выполнении в JavaScript?

    Mithgol
    @Mithgol
    Асинхронная функция потому и асинхронная, что возврат из неё (return) происходит существенно быстрее, нежели заканчивает выполняться исходный код запущенных изнутри неё операций и callbacks.

    Следовательно, обёртывать такую функцию в конструкцию try-catch бесполезно (когда возврат из функции случился, тогда никакие ошибки ещё не могли произойти — а значит, ловить ещё нечего), и для обработки ошибок поневоле приходится применять передачу их callback-функциями, а не бросание оператором throw.

    Для такой передачи, как правило, применяется первый же параметр callback-функции, то есть вызов её имеет вид «callback(err, data)», где error ошибка или null, а data данные, передаваемые при отсутствии ошибки. (Параметров с данными может быть несколько.)

    Смысл такого порядка, при котором параметр ошибки идёт первым по счёту, заключается в том, что вместо «throw new Error()» используется простой вызов callback-функции с единственным параметром: «callback(new Error()); return;» — в общем-то, это не слишком-то сложнее, чем throw.

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

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

    Да это и не только моё мнение: мне доводилось ужé подмечать в январе нынешнего (2012) года, что пакет async вошёл в десятку наиболее используемых модулей для движка Node по свéдениям сайта «The Node Toolbox», основывающимся на статистике пакетного менеджера npm.
    Ответ написан
    1 комментарий
  • Запрос для выборки комментариев

    @egorinsk
    Не слушайте этих болтунов. Для комментариев идеальный вариант — Materialized Path (уважаемые коллеги, кто предлагает Nested Sets, вы пробовали прикинуть, сколько обновлений придется сделать при вставке комментария перед 100 существующими? а перед 200?). Проблема дорогой вставки частично обходится переходом на дробные left и right key, но это сложно.

    Недостатки Materialized Path: ораниченная глубина комментариев (но можно поставить например 16 или 32 — это почти всегда хватит), ограничение на число дочерних комментариев (опять же, ставим цифру типа 65536 и не паримся — вряд ли на вашем сайте будет столько ответов).

    Смена родителя комментария — дорогая и сложная операция, но я не знаю, где это требуется.

    Плюсы: дешевая вставка (1 обычный INSERT), дешевая выборка (1 SELECT с индексом).

    Вывод: слушайте лучше мои умные советы а не этих болтунов.
    Ответ написан
    3 комментария
  • Каталог .idea в JetBrains PhpStorm 4?

    @quantum
    Есть способ вручную сделать это:

    '''WORKAROUND''' Actually you can do it for a long time — but only manually. Just create a new project anywhere where you want to store your project data, then go to Settings|Directories and detach its dir and attach your project root folder.
    Just remember to open this folder instead of actual one next time.

    Текст из тикета по добавлению этой возможности youtrack.jetbrains.com/issue/WI-343
    Ответ написан
    2 комментария
  • Обмен данными между клиентом на ActionScript3 и сервером на PHP

    miraage
    @miraage
    Старый прогер
    Учавствовал в разработке таких игры. Использовали amfphp. Была какая-то простенькая библиотека, но видать писали ее сами разработчики, на нашел похожей.

    этих двух представлять не надо:
    AMFPHP
    Zend AMF

    а на этих можно и посмотреть:
    SabreAMF
    PHP AMF3 extension (это исходники)
    Ответ написан
    4 комментария
  • Вопрос по индексам MySQL?

    @zuborg
    Тут сложно сказать однозначно, есть разные взаимокомпенсирующие эффекты.
    С одной стороны, можно избавиться от ненужного больше поля с флагом — это плюс, с другой — придется добавить индекс по полю с таймстампом, которое занимает уже не один байт, как предыдущее — это минус (индекс будет большое занимать памяти). Сами индексы будут работать одинаково эффективно для указаной выборки.

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

    Также нетривиален вопрос выбора движка хранения, у innodb будет очень заметным оверхед по месту для хидеров строк, если структура таблицы очень простая и размер строки небольшой.

    Надо тестить, в общем…
    Ответ написан
    Комментировать
  • Вопрос по индексам MySQL?

    Тут есть мнения с которыми я не совсем согласен. Давайте, разберем что такое индекс в упрощенной форме.

    Если индекс на поле не установлен, то он проходит по всем записям и сравнивает, если флаг = 1, то выбрать запись. При миллионе записей будет миллион таких сравнений.

    Если вы поставите индекс, то он сократит список до уникальных значений и он будет следующего вида:
    0 — строки, где запись равна 0
    1 — строки, где запись равна 1

    То есть, сравнений будет всего 2.

    Если вы объедините поля, то в индексе получится 999 900 уникальных временных значений и одно — 0, соответствующие 100 записям то есть будет 999 901 сравнение.

    (если поле вообще уникальное, то выигрыш в том, что он остановит поиск после первого найденного элемента)

    (это далеко не все, в чем заключается работа индексов, к тому же есть разные типы, нюансы)

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

    Другая ситуация с NULL. IS NULL — всегда будет работать без сравнения вообще. Тут я бы так и сделал.
    Ответ написан
    2 комментария
  • Вертикальное меню CSS

    @seneast
    Python-dev
    А что мешает самому сделать большое поле? jsfiddle.net/alexseroshtan/b5LVP/
    Ответ написан
    4 комментария
  • Вопрос по индексам MySQL?

    Наверное в случае такого количества данных я бы сделал отдельную таблицу (архив) куда бросал все обработанные записи, если они никогда не станут 0, смысл на них тратить время. И не нужны никакие индексы вообще.
    Ответ написан
    2 комментария
  • Какие IT-ресурсы Вы посещаете?

    programmersforum.ru
    programmersclub.ru
    dtf.ru
    lurkmore.ru (IT-тематики)

    А также множество специализированных ресурсов без развитых сообществ и справочники.
    Ответ написан
    3 комментария