• Почему Nginx мешает Socket.io?

    alexclear
    @alexclear
    A cat
    nginx обращается к бэкенду по HTTP 1.0, что несовместимо с WebSockets.
    Последние версии nginx уже умеют работать с бэкендом по HTTP 1.1, попробуйте взять более новую версию nginx и включить для бэкенда директиву proxy_http_version 1.1;
    Ответ написан
    1 комментарий
  • Возможно ли объявлять функции взависимости от условия?

    alexclear
    @alexclear
    A cat
    Функция объявлена будет, но она не будет известна за пределами блока if { }. Но можно сделать несколько иначе:

    $needfunction = false;
    $function = null;
    if ($needfunction) {
        $function = function () {
            echo "Hello world!";
        };
    }
    
    if($function) {
        $function();
    }
    Ответ написан
  • Как быстро записываются данные?

    alexclear
    @alexclear
    A cat
    Прежде всего, это зависит от скорости дисковой подсистемы сервера и от количества индексов в таблице и количества данных, которые в ней уже находятся. А также от того, как именно осуществляется запись - является ли движок хранения транзакционным или нет (и такие встречаются), как часто происходит fsync (и происходит ли вообще), из скольких мест одновременно в одну таблицу ведется запись. Если пишете в один поток подряд в одну таблицу, то я бы ожидал сотен операций вставки в секунду. Что-то между 100 и 500-700 (если записи небольшие, индексов мало и данных в таблице тоже мало, база данных настроена не дергать fsync на каждый конец транзакции и т.п.). Это если у вас один SATA винчестер или же зеркало из двух SATA винчестеров.
    Ответ написан
    Комментировать
  • Как построить приватную банерную сеть?

    alexclear
    @alexclear
    A cat
    Попробуйте OpenX
    Ответ написан
    Комментировать
  • Чем заменить заменить case?

    alexclear
    @alexclear
    A cat
    Можно написать расширение для PHP на C, которое будет экспортировать функцию, которая на вход будет принимать входные значения, а на выходе давать все то же самое, что давал бы PHP-шный switch. Кода получится не так много, работать будет существенно быстрее.
    Ответ написан
    5 комментариев
  • Как сделать переадресацию IP в Debian?

    alexclear
    @alexclear
    A cat
    Обычно для решения таких задач я использую nginx, чего и всем остальным советую.
    Выглядит это как-то так:

    server {
            listen       80;
            server_name  test.ru www.test.ru;
    
            location  / {
               rewrite ^ http://www.example.com$uri;
            }
    }
    Ответ написан
  • Как организовать пользовательский скриптинг в python-приложении?

    alexclear
    @alexclear
    A cat
    Исходя из требования невозможности блокировки стейт-машины Tornado следует вывод о необходимости создания пула обработчиков пользовательских скриптов (на чем бы они ни были) и управления этим пулом. Планировщик может работать простейшим образом - при старте создается N воркеров, далее, при назначении задания на воркер, он помечается как занятый. Когда пользовательский скрипт отработал, воркер освобождается. Если все воркеры заняты, пользовательские задачи стоят в очереди,

    кстати, если с самого начала взять систему, имплементирующую очереди - RabbitMQ, например, то все становится еще лучше - вместо пула обработчиков в приложении создается пул консьюмеров соотв. очереди в RabbitMQ, причем, консьюмеров можно добавлять динамически, не релоадя никакие конфиги торнадо-сервера.
    А вот на чем будут написаны сами пользовательские скрипты - это вообще неважно, хоть на VB.
    Ответ написан
  • Что не так с программкой?

    alexclear
    @alexclear
    A cat
    Здесь много что не так, во-первых,

    for(int c = 0; i<c; c++)
    		while(c\4 & c%100 || c\400)
            cout<<c


    & - это битовое AND, что этот оператор делает в логическом выражении?
    Во-вторых, оператора \ в C++ нет.
    В-третьих, в таком форматировании кода вообще неясно, что хотел сказать автор, всегда, по возможности, используйте операторные скобки { и }, не заставляйте людей гадать.
    Ответ написан
    Комментировать
  • Hadoop MapReduce, tutorial, философия hadoop: Стоит после каждого "wordcount"а перезапускать все демоны?

    alexclear
    @alexclear
    A cat
    Нет, добавить слейв можно без перезапуска всех демонов - это штатная операция.
    Перезапуск ни к чему не приводит, кроме потери времени.
    Ответ написан
    Комментировать
  • Скрытие или смена Message-Id?

    alexclear
    @alexclear
    A cat
    Вот здесь приведен пример фильтра для exim, который заменяет Message-ID. Сам я, правда, не пробовал.
    Ответ написан
    Комментировать
  • Как в PHP запись цикла for() в массив и вывод его переменную?

    alexclear
    @alexclear
    A cat
    Должно быть как-то так:

    $rows=array();
    $result=mysql_query("SELECT id,address,phone,delivery_id FROM s_orders WHERE status = '0' AND paid = '1' AND delivery_id != '5' ORDER BY phone");
    for($i=0;$i<$n;$i++) { 
       $row=array("id" => mysql_result($result,$i,"id"),
              "address" => mysql_result($result,$i,"address"),
              "phone" => mysql_result($result,$i,"phone")
            );
       array_push($rows, $row);
    }
    mysql_close($db);


    В $rows будет массив ассоциативных массивов результатов
    $rows[0] - первый результат, $rows[0]["id"] - id первого результата

    Новый вариант:

    $addrs=array();
    $result=mysql_query("SELECT id,address,phone,delivery_id FROM s_orders WHERE status = '0' AND paid = '1' AND delivery_id != '5' ORDER BY phone");
    for($i=0;$i<$n;$i++) { 
       array_push($addrs, mysql_result($result,$i,"address"));
    }
    mysql_close($db);


    Вот теперь можно сделать:

    $Stat->createCampaign("testName",
    "Адреса заказов: $addrs",
    $addrbook_id, "", 0, 0, 0, "");


    Если там функция ожидала массив адресов, то вот он ей, массив адресов.

    Еще дополнение:

    $Stat->createCampaign("testName",
    "Адреса заказов: " . implode(',', $addrs),
    $addrbook_id, "", 0, 0, 0, "");


    Теперь эта функция, которая ожидала строку, получит строку, а не массив
    Ответ написан
  • Как правильно настроить stash?

    alexclear
    @alexclear
    A cat
    Сильно сомневаюсь, что дело в статике, точнее, не сомневаюсь, что дело не в ней.
    Получите триальную лицензию на YourKit и попробуйте запустить stash под YourKit - скорее всего, его код обфусцирован, но посмотреть расклад по наиболее долгим функциям не помешает. Можно сделать еще проще - раз в секунду снимать thread dump'ы через jstack и смотреть, что за функции там на топе.
    Кстати, о топе - а что и каким образом занимает процессор во время тормозов? Упираетесь во ввод/вывод, или именно в CPU? Возможно, уперлись в garbage collecting - тогда еще дебаг GC хорошо бы включить и посмотреть, как часто и насколько эффективно идут minor и major collections.
    И, да, tomcat'у с native libs не нужен nginx - он NIO умеет делать.
    Ответ написан
    Комментировать
  • Как создать trunk port с помощью бриджей и бондинга?

    alexclear
    @alexclear
    A cat
    Бриджи на интерфейсы с виланом - да, работать будут, я у себя так делаю.

    root@hypervisor02 ~ brctl show br0
    bridge name	bridge id		STP enabled	interfaces
    br0		0080.bc5ff44560f9	no		p17p1.4
    							vnet0
    							vnet1
    root@hypervisor02 ~


    Насчет бондинга интерфейсов с виланом сказать не могу, не пробовал.
    Ответ написан
    Комментировать
  • Какой процессор выбрать?

    alexclear
    @alexclear
    A cat
    Если решаемые задачи не CPU-bound, а таких в наше время становится все меньше, то лучше потратить эти деньги (разницу между i5 и i7) на построение более сбалансированной системы. Мне лично всегда не хватает RAM, поэтому я ставлю ее много. Кому-то не хватает хорошей видеокарты. Кому-то не хватает хорошей дисковой подсистемы.
    Ответ написан
    Комментировать
  • Как настройить собственный PhpMyAdmin на shared хостинге?

    alexclear
    @alexclear
    A cat
    Ошибка 2002 означает Can't connect to local MySQL server through socket path, и имеется в виду именно unix socket, а не TCP socket. Проверьте еще раз конфиги - PMA пытается соединиться с локальным сервером.
    Ответ написан
    2 комментария