• Странная логика Python?

    middle
    @middle
    Если вывод происходит в консоль, то Python использует построчную буферизацию, то есть буфер сбрасывается либо при переполнение, либо при получении символа перевода строки, и ещё в при закрытии файла при завершении программы.

    Если заменить end на '\n', то числа появляются сразу. Иначе надо использовать flush.

    Смысл буферизации в том, что системные вызовы - вещь накладная, и программа с буферизацией работает быстрее (хороший пример - всяческие фильтры, которые читают со stdin, обрабатывают и пишут в stdout).
    Ответ написан
    Комментировать
  • Как локализовать ошибку в LR-парсере?

    middle
    @middle
    LR-парсер состоит из стека и конечного автомата. В конечном автомате дуги помечены двумя типами меток: SHIFT либо REDUCE <правило>. В приведённом вами примере при первом '+' будет произведён SHIFT (с переходом в соответствующее состояние), при последующем "b" будет произведён REDUCE по приведённому вами правилу с переходом в какое-то состояние.

    Если же после первого '+' придёт второй '+', то это будет ошибкой, т.к. для текущего состояния не будет исходящей дуги для второго '+', ни SHIFT, ни REDUCE (дуга будет только для IDENTIFIER, если других правил нет).
    Ответ написан
    5 комментариев
  • Как наложить GPS трек на изображение карты?

    middle
    @middle
    Возможно, можно будет что-то смонстрячить с помощью mapserver или другого аналогичного софта для веб-картографии.

    Но вообще нужно перевести координаты трека (а там, скорее всего, географические координаты в WGS84) в систему координат изображения (зависит от того, в какой проекции выполнена эта карта).

    Затем координаты элементарными линейными преобразованиями переводятся в пикселы на карте, и поверх изображения рисуется трек. Можно сначала обрезать, а потом нарисовать (сдвинуть трек к координатам нового изображения не забудьте).
    Ответ написан
  • Отправка почты с VPS?

    middle
    @middle
    /etc/hosts не влияет на название хоста. В Debian на это влияет /etc/hostname (при запуске /etc/init.d/hostname.sh).

    sendmail я вам не рекомендую вообще, а рекомендую postfix, где в конфиге можно указать

    myhostname = mysite.ru
    

    и пусть хостер делает, что хочет.
    Ответ написан
    Комментировать
  • FreeBSD: перенаправление всего трафика с 80 на 8080 порт

    middle
    @middle
    Обычно сервера делают bind на 80-й порт, а потом сбрасывают привелегии и работают от обычного пользователя. Apache и nginx работают именно так…
    Ответ написан
    3 комментария
  • Как поднять полноценный git сервер?

    middle
    @middle
    Чтобы «на своём поднимать» — можно или просто работать по ssh, либо использовать gitolite, где аутентификация происходит по ssh-ключам.
    Ответ написан
    Комментировать
  • Можно ли получить номер определенной строки при сортировке в MySQL

    middle
    @middle
    --- карма пользователя n.
    SET @user_exp = (SELECT exp FROM users where id = {n});
    
    SELECT count(*) FROM users
        WHERE exp > @user_exp OR (exp = @user_exp AND user.id < {n});
    


    Второе условие в OR нужно на тот случай, если у двух пользователей окажется одинаковая карма (сортировать тогда нужно и по exp, и по id, чтобы пользователи с одинаковой кармой не прыгали с места на место даже без изменения кармы). Если этим можно пренебречь, то и условием можно пренебречь.

    Но лучше правда обновлять специальное поле каждые 5 минут скриптом.
    Ответ написан
  • Как перестать читать Хабр?

    middle
    @middle
    Читайте об этом в нашей следующей книге «Как перестать читать Хабр и начать жить» :)
    Ответ написан
    Комментировать