• Как мы перешли с 30 серверов на 2: Go
    +27
    We decided to rewrite the API. This was an easy decision

    Мы решили переписать API. Это было непростое решение

  • Гигабитный Wi-Fi (802.11ac) готов к массовому рынку
    0
    Было бы здорово увидеть результаты тестов, на каком количестве одновременных соединений была получена эта скорость, как сравнивали, как тестировали в конце концов.
  • Почему Pinball убрали из Windows Vista
    +5
    К сожалению русский перевод утаил от нас самое интересное — в комментариях — отвечает оригинальный разработчик игры:

    Ah, the quantum tunneling pinball!
    We ran into this while writing the original code at Cinematronics in 1994. Since the ball motion, physics, and coordinates were all in floating point, and the ball is constantly being pushed «down» the sloped table by the gravity vector in every frame, we found that floating point error would gradually accumulate until the ball's position was suddenly on the other side of the barrier!
    (To simplify collision detection, the ball was reduced to a single point/vector and all barriers were inflated by the ball radius. So, if the mathematical point got too «close» to the mathematical line barrier, a tiny amount of floating point rounding or truncation error could push the point to the other side of the line)
    To mitigate that, we added a tiny amount of extra bounce to push the ball away from the barrier when it was nearly at rest, to keep the floating point error accumulation at bay. This became known as the Brownian Motion solution.
    Since much of the original code was written in x86 asm to hand tailor Pentium U/V pipelines and interleave FPU instructions, but wiki says Microsoft ported the code to C for non-Intel platforms, I'm sure the code had passed through many hands by the time it got to you. The Brownian Motion solution may have been refactored into oblivion.
  • Отзыв на книгу «Код Дурова» Н. Кононова
    +4
    Дуров скопировал социальную сеть…
  • SublimeHaskell
    +3
    Судя по скриншотам, Вы все еще не знаете, что сайдбар можно сделать темным. Тогда мы идем к вам gist.github.com/1857652.git.
  • БезАгентов.com — Возможно ли сдать/снять квартиру без посредников?
    0
    Ок. Мне как потенциальному потребителю Вышей услуги совершенно всеравно кто именно первый раз квартиру покажет — агент или собственник, для меня важна комиссия, а точнее ее отсутствие! Вот и весь фильтр.
  • БезАгентов.com — Возможно ли сдать/снять квартиру без посредников?
    0
    Все гораздо проще — зайдите на циан и Вы сразу поймете кто агент, а кто собственник без всяких там фильтров и выписок.
  • Технологии репутации для борьбы с ростом количества угроз
    0
    но фактически они всегда остаются позади угрозы, ведь сигнатурный метод по своей сути реактивный

    По сути ваш метод ничем не отличается, все тоже самое — база обновляется по факту, и то, если злобный адрес засветился. А если нет? А если вашу базу скомпрометируют?

    А презенташка ничего так — график устрашает.
  • Какую команду вы выполняете первым делом при подключении к удаленной машине по ssh?
    0
    ps aux -H
  • Разбор опций командной строки в UNIX-подобных системах
    +4
    Да, без примера как-то не очень
    #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>
    #include <getopt.h>

    void usage(char *name)
    {
     printf("usage: %s\n \
         \t-h this message\n \
         \t-c [config file]\n \
         \t--help this message\n \
         \t--config=config_file\n"
    , name);
     return;
    }

    int main (int argc, char *argv[])
    {
     int c;
     
     while (1){
      static struct option long_opt[] = {
                        {"help",  0, 0, 'h'},
                        {"config", 1, 0, 'c'},
                        {0,0,0,0}
                       };
      int optIdx;

      if((c = getopt_long(argc, argv, "c:h", long_opt, &optIdx)) == -1)
       break;
     
      switch( c ){
         case 'h':
              usage(argv[0]);
              return(-1);
         
         case 'c':
              printf("option 'c' selected, filename: %s\n", optarg);
              return(1);
              
         default:
              usage(argv[0]);
              return(-1);
       }
     }

     return(0);
    }

    * This source code was highlighted with Source Code Highlighter.
  • Как безопасно доставить SIGINT в главный поток?
    0
    Из поста трудно понять в чем и где у Вас затруднение. Прочитайте для начало вот эту статью
    Приведеный Выми пример вообще ниочем.
  • Английский алфавит по-русски
    0
    Это прекрасно, но сработает только в масштабе страны.
  • Калибровка монитора. Нужен совет профессионалов
    +1
    Вот тут можно за 250 рублей в сутки взять напрокат калибратор и поиграться.
  • Пишем расширения для PHP на C (Си)
    0
    Отлично работает,
    если бы там были какие-то проблемы, я бы про это написал.
  • И я про Яндекс
    +1
    Все и везде? Да большинству пользователей по барабану, обычные пользователи идут на яндекс за информацией, но не за логотипом, и попросту не заметили изменений. Вы придаете этому слишком большое значение.
  • Подсчет количества найденных записей в PostgreSQL
    0
    лучше делать не count(*), а count(case when text like '%adf%' then 1 end) - попробуйте, скорее всего будет быстрее.
  • Компания Microsoft запатентовала интерфейс iPhone
    +8
    а помните?

    "Гейтс: Мы с партнёрами столько работали над ACPI, а линукс палец о палец не ударил, но у них всё великолепно работает. Надо принять меры. Например, что-нибудь запатентовать"

    оригинал:
    http://iowa.gotthefacts.org/011607/3000/PX03020.pdf
  • PHP: array_search — быстрый поиск по массиву
    +5
    Вы не поверите, но там while!

    [...]
    while (zend_hash_get_current_data_ex(target_hash, (void **)&entry, &pos) == SUCCESS) {
    is_equal_func(&res, *value, *entry TSRMLS_CC);
    [...]

    а вообще это можно посмотреть в исходники php ext/standart/array.c
  • Написание модулей для PHP (помогите)
    0
    С Visual Studio дело не имел, но думаю, что тебе стоит почитать о том, как собирается PHP под виндой из исходников, тогда станет ясно как и чем компилить модули.
  • Написание модулей для PHP (помогите)
    0
    я извеняюсь, но что-то парсер не захотел вставлять html-теги, и пробелы все поел... - получилось не очень читабельно.
  • Написание модулей для PHP (помогите)
    0
    Сам модуль

    #include "php.h"

    ZEND_FUNCTION(mega_modz);

    zend_function_entry megamodz_functions[] =
    {
    ZEND_FE(mega_modz, NULL)
    {NULL, NULL, NULL}
    };

    zend_module_entry megamodz_module_entry =
    {
    STANDARD_MODULE_HEADER,
    "Super Puper Module v1.0",
    megamodz_functions,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NO_VERSION_YET,
    STANDARD_MODULE_PROPERTIES
    };

    ZEND_GET_MODULE(megamodz)

    ZEND_FUNCTION(mega_modz)
    {
    zval *inargs;
    // передаем сюда агрумент из вызова функции
    // из php кода эта функция будет вызываться вот так mega_modz($inargs);
    // где $inargs = array(1,2,3);
    // если мы получаем из php массив, то наша переменная тут, объявляется как zval
    zval **tmp;
    HashTable *target;
    HashPosition pos;
    int i=0, len=0;

    // парсим входящие данные: "a" - для массива, "l" для long
    // более подробно смотри в документации, если параметров несколько,
    // то zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "allall", &inargs,
    // &v1, &v2, &v3 и.т.д.)

    if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a", &inargs) == FAILURE) {
    RETURN_FALSE;
    }

    // далее, обрабатываем массив, который мы сюда получили.

    target = HASH_OF(inargs);
    if(!target){
    php_error_docref(NULL TSRMLS_CC, E_WARNING, "The argument 'inargs' should be an array");
    RETURN_FALSE;
    }

    zend_hash_internal_pointer_reset_ex(target, &pos);
    i = 0;
    zend_hash_get_current_data_ex(target, (void **) &tmp, &pos);
    convert_to_long(*tmp);
    if(Z_LVAL_PP(tmp) != -1){
    len = 1;
    cnt = zend_hash_num_elements(Z_ARRVAL_P(inargs));

    while (zend_hash_get_current_data_ex(target, (void **) &tmp, &pos) == SUCCESS) {
    // тут мы перебираем полученный массив
    //и что-то с ним делаем вот таким образом, если у нас там циферки
    convert_to_long(*tmp);
    Z_LVAL_PP(tmp);

    // или вот таким, если там буковки
    convert_to_string(*tmp);
    Z_STRVAL_PP(tmp)

    //двигаемся на следующее значение
    zend_hash_move_forward_ex(target, &pos);
    }
    }

    // тут мы можем просто печатать результат прям в браузер
    // или можем что-нибудь вернуть в php, например массив ))

    array_init(return_value);
    add_index_stringl(return_value, 0, "123");
    add_index_stringl(return_value, 1, "555");
    // или вот так
    MAKE_STD_ZVAL(row);
    array_init(row);
    add_index_stringl(row, 0, "123");
    add_index_stringl(row, 1, "555");
    add_index_zval(return_value, 0, row);

    return;

    }


    Компилируется это вот так

    cc -fpic -DCOMPILE_DL=1 -I../include/ -I../include/TSRM -I../include/Zend -I../include/main -I../include/regex -c -o mod_test.o mod_test.c
    cc -shared -L/usr/local/lib -rdynamic -o mod_test.so mod_test.o // тут можно подключать ынешние библиотеки, например -lpq -lmysqlclient

    и на выходе получаем mod_test.so
  • Я профессионал — что это?
    0
    Профессионал - это тот, кто может решить поставленную задачу имеющимися(предоставленными) средствами.