Турник

Я тут последний месяц сильно занят проектом на работе, он занимает всё моё время — выходные, вечера, каждую свободную минуту. Очень много проблем, требуются сверхусилия, чтобы его завершить.
Тут не до личных проектов и, в частности, не до спортзала. Я уже давненько сделал паузу в занятиях спортом и она грозила стать перманентной. Решил
«Поддержал российского производителя», купил турник местного производства, кстати, если вы из Казани и у вас те же проблемы, что и у меня, рекомендую — смело заказывайте. Качество отличное, всё в наличии, за 500 рублей они вам его ещё и установят.
Турник вешается в двух положениях — посмотрите крючки на фото, в таком положении на нём подтягиваются, а если повесить так, чтобы нижние ручки смотрели вперёд — то отжимаются, как на брусьях, либо качают пресс. Я пока, в основном, только отжимаюсь, зато по многу подходов за день.
Сначала всё было очень плачевно — я
Списки репрессированных
Есть такой хороший сайт — «Жертвы политического террора в СССР». Если я слышу рассказы родственников о репрессиях (да, у меня большинство предков — крестьяне, но часто они были зажиточными), я иду на этот сайт и пытаюсь найти
Сегодня решил этот процесс чуточку автоматизировать — поискал Гуглом два села из которых у меня много родственников — Старая и Новая Письмянки, потом скачал простым скриптом полученные страницы. Кстати, «wget» срабатывает только при условии наличия двух определённых параметров,
wget -U "Firefox/3.0.15" -e robots=off ваш-урлСкачал те урлы, на которые указал Гугл:
grep -hoE 'lists.memo.ru/d[^.]+\.htm' * | sort -u | xargs -n1 wgetи выделил из них все фамилии, рядом с которыми встречалось слово «Письмянка»:
iconv -f cp1251 -t utf8 * | grep -B3 'Письмянка' | sed -nE '/"n[0-9]+"/ {s/<[^>]+>//g;p;}' | sort -uПолучилось 282 строки, потом простым грепом выделил фамилии родственников, проживавших в этой местности: Земсковы, Ануфриевы (у меня есть Онуфриевы), Макридины (так же попался один Микридин — очевидная опечатка) и Евдокимовы.
После чего сел выяснять нет ли у меня в дереве
Больше всего пострадали Макридины, правда не прямые мои родственники, а боковая ветвь, приговорили целую семью — родителей и сына, теперь стала известна часть их судьбы. Например, Макридин Николай Митрофанович отправился
Из прямых родственников нет никого, но дополнительная информация никогда не помешает — иногда части дерева строятся на гипотезах, каждая новая информация их подтвержает. Вообще, чем дальше в архив, тем больше сомнений, ведь точных сведений нет, всё держится на подборе дат, имён и отчеств, особенно в моём случае — у крестьян с фамилиями туго.
Сейчас дерево, на мой взгляд, выстроено на твёрдых фактах, но кто знает — не всплывёт ли
Синтетические ёлочные игрушки
Сегодня таксист выдал абсолют веры во всё натуральное.
С утра у нас дождь и, как всегда при такой погоде, затруднено движение, куча ДТП. Для меня это удивительно, не понимаю почему лёгкий дождик так влияет на дорожную обстановку, своим удивлением не преминул поделиться с таксистом.
Узнал много нового. Оказывается во время Универсиады положили
Поддельные ёлочные игрушки. Выглядят как настоящие, но не радуют.
ПХП → Пайтон
Боже мой, сейчас написали ребята из «Яндекса». Там состоялось эпохальное событие — несколько часов назад последним коммитом из кода внутренней вики «Яндекса» удалён последний код на ПХП. Внутренняя вики «Яндекса» была основана на движке «ВаккоВики» и была полностью написана на ПХП.

Несколько лет назад мы с Сашей Покатиловым начали процесс постепенного переписывания её на Пайтон, причём прямо на живой системе — части на Пайтоне и ПХП общались друг с другом по обычному протоколу HTTP, очень хитрая получалась штука. Я помню как мы неделю провели в Симферополе — ребята из тамошнего офиса «Яндекса» писали спецификацию на синтаксис
И вот этот титанический труд закончен. Ребята, поздравляю, это круто!
В Казани разбился самолёт
Тут у меня много читателей, которые знают, что я часто летаю по маршруту Казань—Москва. Думаю, надо сообшить, что на сегодняшнем рейсе авиакомпании «Татарстан»
Есть версия ошибки экипажа, самолёт разбился на третьей попытке посадки (ударился носом о землю), примерно в 19:35, на борту было 50 человек — 44 пассажира и 6 человек экипажа, все погибли. Известен бортовой номер —

Командиром был Рустам Салихов, летчик, совсем недавно введенный в командиры воздушного судна.
На сайте авиакомпании уже опубликован предварительный список зарегистрировавшихся на рейс.
Фотография Дмитрия Баландина.
Ограда от зайцев

Вчера был на станции метро Царицыно в Москве, посмотрите как работники метрополитена решают проблему «зайцев», прыгающих через турникеты. Я так же вчера был ещё на нескольких станциях (Комсомольская, Новые Черёмушки, Парк Культуры), более такой модификации турникета нигде не видел.
Проблема в стемере для PHP
В модуле stem для ПХП обнаружилась неожиданная проблема. Этот модуль — стеммер, позволяющий обрезать окончания слов для того, чтобы искать потом по тексту без учёта падежей и склонений.
Для русского языка в нём целых две функции — для кодировки
Я обратил внимание, что из командной строки код с этим модулем работает нормально, а в рабочем проекте кодировка портится — как будто стеммер
У меня возникла мысль, что дело в выставляемой локали, мы провели эксперимент — так и есть, дело в этом. Такой код работать правильно не будет:
setlocale(LC_TIME, 'ru_RU.cp1251');
echo stem_russian_unicode(iconv('windows-1251', 'utf-8', 'Приветы'));Кодировка получится битой. Перед вызовом функций стеммера нужно переставлять кодировку (setlocale)
// файл stem.c
php_strtolower(z->p, arglen); // ← вот искомый вызов
stem(z);
z->p[z->l]= '\0';
// … ищем эту функцию в исходниках PHP…
// string.c из PHP
PHPAPI char* php_strtolower(char * s, size_t len) {
unsigned char *c, *e;
c = (unsigned char *)s;
e = c+len;
while (c < e) {
*c = tolower(*c); // ← а это проблемное место
c++;
}
return s;
}Согласно манам, функция tolower ориентируется в своей работе на локаль, в этом и проблема.
Небритябрь

Про Небритябрь я узнал из видеоблога Стаса Давыдова («This is ХОРОШО»). Смысл простой — на весь ноябрь нужно прекратить бриться.
У Небритября есть
Сплошные неудобства, сейчас я не бреюсь уже из принципа, раз ввязался, но, кажется, начал привыкать. Чего доброго, когда всё закончится оставлю всё как есть, только щёки побрею.
Казань ✈ Москва ✈ Шри-Ланка ✈ Москва ✈ Казань

Тридцатого декабря полетим праздновать Новый год
Если вы были
Кстати, удобнее всего рейсы из Казани и в Казань у «Татарстана», мы их брать, естетственно, не стали. В одну сторону полетели «Аэрофлотом», в другую — «Трансаэро».
Локальные переменные
В прошлом я несколько лет программировал на Перле, очень любил этот язык и неплохо знал, до сих пор могу без особых проблем читать программы на нём. Прошло немало лет, наиболее часто я теперь использую ПХП и Джаваскрипт, на Перле не пишу вовсе (хотя в «Яндексе» был краткий эпизод — написал небольшой пример для документации
Вообще я сейчас считаю, что будущее скорее за языками с лаконичным синтаксисом (Пайтон), чем за тем, у кого он сверхнасыщен (Перл, Руби).
Тем не менее, некоторых вещей из Перла мне до сих пор нехвает в других языках. Я научился без этого обходиться, но много лет меня не отпускает чувство, что у меня
Например, локальные переменные. В ПХП часто приходится смотреть (особенно, если достаётся
В Перле такой проблемы нет — там локальную переменную можно создать почти в любом месте, произвольном месте кода, просто поставив фигурные скобки — так создаётся новый лексический блок, у которого могут быть свои локальные переменные:
my @a = (1, 2, 3);
my @b = ('a', 'b', 'c');
for my $i (@a) { # первая переменная $i
for my $i (@b) { # вторая переменная $i, перекроет первую только внутри цикла
print $i . "\n";
}
{
my $i = 'end'; # третья переменная $i, перекроет первую только в этом блоке
print $i . "\n";
}
print $i . "\n"; # выводится первая переменная $i
}Конечно, я не призываю именно так писать код — во вложенных циклах с одной и той же переменной легко запутаться, просто иллюстрирую принцип.
В Джаваскрипте ситуация меняется, появилась конструкция «let» (впрочем, раньше её можно было эмулировать), а ПХП ничего похожего так и нет. Я переписывался с разработчиками много лет назад на эту тему, но воз и ныне там.
Сейчас есть возможность опубликовать предложение, описав его в виде RFC — эта новая процедура появилась недавно, если предложение понравится, то синтаксис имеет все шансы попасть в язык. Надо будет