Вред различных наркотиков

Вред различных наркотиков (8.21КиБ)

В авторитетном медицинском журнале The Lancet появилась статья «Drug harms in the UK: a multicriteria decision analysis» (подробности лучше посмотреть на сайте DocMe, там бесплатно).

Для тех, кто не понимает английский, цветом синего оттенка выделен вред для окружающих, бежевым — для употребляющего.

Из графика следует, что алкоголь вреднее для потребляющего, чем кокаин, табак, амфетамин, конопля, кетамин, метадон, бутират, ЛСД, экстази, наркотические грибы и ещё бог знает что, я даже в фильмах такие названия не слышал.

Кстати, в России курит 40% населения страны, это первое место среди всех стран, которые считаются основными потребителями табака. Я даже не думал, что всё настолько плохо. Заметьте, где на графике табак, он чуть менее вреден, чем «кокс»!

85 комментариев

День рождения сайта

Сегодня, кстати, моему сайту исполняется 10 лет. Я планировал к этому сроку выложить старые материалы, сменить дизайн, но ничего не успел, задача перевода Вики на UTF-8 съела всё моё время, я даже дома размышлял над этой задачей и делал разнообразные тесты.

Буду делать потихоньку.

10 комментариев

Что за проект я перевожу на UTF: FAQ

Wiki на UTF-8 (55.74КиБ)

Из комментариев на одном из сайтов Димы видно, что люди делают какие-то совершенно дикие выводы относительно моей эпической борьбы с UTF-8 в PHP. Кстати, она окончена, остались мелочи, доделки и доводки. На скриншоте — уже бета.

Так что небольшое FAQ.

В: Долго ещё до конца сериала? О: Следующая часть будет последней.

B: Что за проект переводится на UTF-8? О: Это внутренняя Вики, основанная на ВаккоВики, дописанная за годы использования и интегрированная с остальными внутренними сервисами. Её нередко можно встретить на слайдах презентаций «Яндекса».

B: Зачем переводится? О: Все остальные внутренние сервисы «Яндекса» на UTF-8, что делает задачу интеграции Вики иногда чрезвычайно сложной, кроме того, есть большая потребность научить нашу Вики работать не только с русскими и английским, но и с другими языками.

B: Нельзя ли переписать это всё на другой язык, где нет проблем с UTF-8? О: Можно, но это человеко-годы, я справился намного быстрее.

В: Зачем нужно было всё автоматизировать? О: Во-первых, автоматизированно было далеко не всё, некоторые места я искал в автоматическом режиме, а изменения приходилось вносить руками, во-вторых, всего было сделано несколько тысяч замен, можно ли такое количество заменить вручную, да ещё и не ошибиться?

В: Почему бы нанять сотню студентов, за копейки, чтобы они сделали замены руками? О: За этими студентами нужно проверять работу, кто это будет делать? Я за собой вычитывал исходники, распечатывал листы diff’ов, уходил куда-нибудь в переговорку и работал с бумажками — выделял карандашом проблемные места, потом новая итерация. Со скриптом проще — в одинаковых ситуациях он споткнётся одинаково, сотня студентов споткнётся сотней разных способов.

21 комментарий

Как там штанга?

Что-то у меня давно постов про спорт не было.

После последнего серьёзного отравления резко ухудшилось здоровье, я потерял в весе около 5 кг, ухудшилась выносливость. В последнее время на спортивном поприще я был занят только тем, что выравнивал результат на состояние до отравления.

Сейчас уже более-менее похоже на то, что было. Сегодня попробовал поднять 98 кг, поднял два раза, уже неплохо. Буду улучшать.

Оставить комментарий

PHP, UTF-8: седьмой этап, давайте что-нибудь сделаем с регулярными выражениями

В прошлый раз я рассматривал, по сути, самый сложный этап — замену всех вхождений $var[$index] и им подобных на вызов моей функции. В процессе замены я несколько раз корректировал заметку и доводил некоторые вещи руками.

Что же дальше?
Осталось совсем немного, но я столкнулся с неприятной проблемой.

В самой первой части я рассказывал о том как можно решить проблему с UTF-8 в регулярных выражениях — нужно поставить «глагол» (в терминах PCRE) UCP и добавить модификатор «u». Тогда в PCRE начинают адекватно, по отношению к UTF-8, работать «\w», «\W», «\s», «\S» и т. п.

К сожалению, этот «глагол» появился только в PCRE 8.10, а в самом последнем PHP, на сегодняшний момент, содержится 8.02. Как я говорил ранее, новый PCRE можно вкомпилить в PHP при помощи специального ключа.

Внутренние сервисы, где я работаю, используют Debian-системы и Debian-пакеты, все наши проекты выкладываются через эти пакеты. Чтобы поставить нестандартный PHP+PCRE, нужно собрать три пакета (php-cgi, php-cli и модуль к Apache).

Поскольку мы сейчас переходим постепенно на новую версию Ubuntu (с Hardy Heron на Lucid Lynx), то часть машин у нас пока на Цапле, а часть — уже на Рыси. Это значит, что пакетов нужно будет собрать шесть.

Дело это непростое. Я решил попробовать «выдрать» из внутренностей PHP модуль PCRE, переименовать его функции и константы и поставить его как простой подключаемый модуль.

Мне удалось сделать, модуль «свежего PCRE» (можно скачать в разделе «Храню»). Модуль называется ygx, все функции начинаются с префикса «ygx_», константы — с «YGX_».

Что это за сокращение, не спрашивайте, когда я начинал работать, я это знал, а сейчас забыл.

Сложнее всего было корректно переименовать только те функции, типы, константы и так далее, которые видно в PHP, не задев всё то, что импортируется из внешней библиотеки PCRE.

Ставится модуль примерно следующим образом:

mkdir /tmp/pcre
cd !:1
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.10.tar.bz2
tar xvfj pcre-8.10.tar.bz2
cd pcre-8.10
./configure --prefix=/usr/local/pcre-8.10 --enable-utf8 --enable-unicode-properties --disable-static
make && make install
cd -

wget /files/php_fresh_pcre.zip
unzip php_fresh_pcre.zip
phpize
./configure --with-ygx-regex=/usr/local/pcre-8.10
make && sudo make install
phpize --clean
cd ; rm -rf /tmp/pcre

потом нужно прописать в php.ini строку «extension=ygx.so», перезапустить на FastCGI-сервер или веб-сервер с модулем PHP (смотря чем вы пользуетесь) и, вуаля, у вас есть новые функции — ygx_relace, ygx_match и т. д.

Поскольку к этому моменту все вызовы функций PCRE у меня заменены на вызовы одноимённых методов статического класса UTF, то мне нужно поменять «preg_» на «ygx_» только в одном месте — внутри методов этого класса.

3 комментария

Наконец-то купил билеты в «Аэрофлоте»

Офис аэрофлота (32.43КиБ)

Надеюсь, эпопея с самолётами завершилась. Сегодня сходит в офис «Аэрофлота» и купил билет. Вообще-то я два дня назад уже покупал билет на их сайте, но у них там произошёл какой-то сбой и мне пришлось идти в офис.

«Аэфрофлот» — чёртов совок, четыре перерыва в день, конская очередина, работают два окна из восьми и, думаете, они извинились за то, что сняли деньги с карточки и не смогли мне отдать билет? Как бы не так!

Они продали мне билет заново, содрав ещё 700 рублей «за обслуживаение», то есть за то, чтобы денежку у меня принял не бездушный робот, а испуганная кассирша, печатающая двумя пальцами.

15 комментариев

Тест на внимательность

Стащу у Экслера ссылку — тест на внимательность.

Задание 1: найдите букву «C» среди «О»

OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO OOOOOOOOOOOOOOOOOOOCOOOOOOOOOOO OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO

Задание 2: теперь найдите цифру 6

99999999999999999999999999999999999999999999999 99999999999999999999999999999999999999999999999 99999999999999999999999999999999999999999999999 69999999999999999999999999999999999999999999999 99999999999999999999999999999999999999999999999 99999999999999999999999999999999999999999999999

Задание 3: теперь найдите букву «N»

MMMMMMMMMMMMMMMMMMMMMMMMMMMMNMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM

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

19 комментариев

Canon EOS 550D

Canon EOS 550D (50.17КиБ)

Мы с женой всё-таки выбрали фотоаппарат, взяли Canon EOS 550D. Решили, что это будет подарок на день рождения нам обоим.

Раз уж родители и братишка тоже вложились в покупку, последовали многочисленным советам фотографов — взяли сразу и объектив Tamron Canon SP AF 28-75mm F/2.8 XR Di LD Aspherical (IF) Macro.

Карточку взяли на 4ГБ, мне кажется, нам пока хватит. 2ГБ на мыльнице нам хватало.

22 комментария

Как работают дисконты

Скидки в «Спортмастере» (23.18КиБ)

По ценнику очень хорошо видно частую практику дисконтных магазинов — товар впервые «вышел на арену» по цене 2990 рублей, в Самаре, оттуда переехал в Москву, где цена повысилась до 3890, оттуда попал в Казань, где ему сделали скидку до 2334.

По последнему налепленному ценнику скидка 40%, от самарской цены — около 20%. Какая цена была до того как товар попал в дисконт, не знаю, может ещё ниже.

7 комментариев

Эпидемия самолётов?

У нас что, самолёты мрут, как мухи? Эпидемия?

Позвонили из авиакомпании «Татарстан». Пару месяцев назад мы покупали билеты, чтобы слетать на Новый год в Казань, туда купили у «Авиановы», обратно было выгодно «Аэрофлотом». Обе компании отменили те свои рейсы. Мы купили новые билеты, в Казань купили у «Трансаэро», обратно — у «Татарстана».

Теперь «Татарстан» тоже отменяет рейс. Страннее всего то, что рейс не «чиповый», по вполне нормальной цене.

Мы попросили возврат денег, купили обратный у «Аэрофлота», на другой день.

Добавлено позднее: звонили из «Аэрофлота», завтра надо в офис компании, из-за сбоя нам удалось получить электронный билет на этот рейс, на самом деле, на него почему-то электронный билет купить нельзя.

17 комментариев

Привет из прошлого

Привет из прошлого (80.81КиБ)

Сфотографировано в помещении бывшего печатного цеха в Екатеринбурге. Вообще-то там проходила выставка современного исскуства, но мне было интереснее пофотографировать то, что осталось на стенах ещё с советских времён.

Как мы видим, цех просуществовал, как минимум до 1999-го (по плакатам «Сбежавшей невесты» и «Сил природы»), самый старый плакат, из тех, что мне удалось рассмотреть — 1983-й год, «Himmatwala».

Доделаю новый дизайн сайта, надо будет выложить.

5 комментариев

Хорошо бы, чтобы состояние Caps Lock привязывалось к текущему приложению

В Windows очень разумно сделано переключение раскладки — переключается не сразу во всей системе, а в текущем приложении, в отличие от Mac OS (кажется, там это недавно поправили). В самом деле, я могу писать письмо по-английски, болтать в джаббере по-русски, переключаясь в окно IDE, где я пишу на Python (тоже по-английски).

В родимом Татарстане у человека легко может стоять до пяти раскладок (русская, английская, татарская в двух ипостясях, арабская и турецкая, скажем).

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

К сожалению, разработчики не пошли чуть дальше и не выдрали к чертям кнопку Caps Lock не наделили той же функцией, ведь если я пишу в каком-то окне большими буквами, это совершенно не значит, что в соседнем я так же буду писать большими.

33 комментария

Прощай, iPhone!

Жена в восторге от Galaxy S. А клавиатура Swype привела в восторг меня (в Galaxy S она встроена)! Хочу себе такую же на Nexus One. В жизни она куда удобнее, чем в роликах.

Прощай, iTunes, прощай, jailbreak, прощай, iPhone!

22 комментария

Телефон для пожилых

На «Хабре» появилась обзорная статья «Сравнительный обзор телефонов с большими кнопками», это телефоны для наших дедушек и бабушек.

Мы бабушке жены подарили на прошлый день рождения телефон Just5 CP9, я пытался научиться им пользоваться и научить бабушку (77 лет). Нашим мамам и папам такие не нужны, у нас у всех родителей нормальные современные модели.

Основной вывод по телефону — внутренний интерфейс сложен даже для меня, последовательные операции нелогичны и в них несколько лишних шагов. Кроме того, не нужны SMS — в таком возрасте и в таком состоянии здоровья, читать и набирать их почти невозможно, радио тоже можно удалить, по крайней мере, пока его настройка и пользование им не упростится в интерфейсе на порядки. В дизайне корпуса важно только одно — чтобы удобно было держать и всё было под рукой.

Идеальный интерфейс для такой возрастной категории, в моём представлении, это аккуратный ухватистый «кирпич», без экрана, с вертикальным рядом крупных кнопок, с обычными подписями абонентов сделанными ручкой на сменной бумаге. Для исходящего звонка надо нажать на кнопку, при входящем кнопка подсвечивается.

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

При разрядке (когда осталась пара дней) — мигающая лампочка в недрах гнезда зарядки. Было бы круто сделать снизу кучу разъёмов зарядок, под все эти бесчисленные «самсунги», «нокии» и так далее, чтобы зарядка подошла любая. Чтобы любая зарядка, подаренная внуком, от старой модели телефона подошла и было чем зарядить в гостях.

Это всё. Телефон всё равно будут настраивать родственники, число важных абонентов ограничено, по остальным номерам (в коммунальные службы, например), бабушка всё равно будет звонить со стационарного (дешевле) или пойдёт ногами.

Телефон в таком виде вполне под силами изготовить и нашей промышленности. Правда я не продумал как программировать номера, но какую-то же инженерную задачу надо оставить для самостоятельного решения. Сделать можно как угодно неудобно, внуки разберутся.

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

17 комментариев

Латинский шрифт цифр

Латинский шрифт (2.52КиБ)

Сайт «Трансаэро» просит ввести цифры телефона «латинским шрифтом».

Сегодня ходил в «Аэрофлот», оформлял возврат денег за отменённый новогодний рейс в Казань, в итоге, вылетаем утром 31-го рейсом «Трансаэро».

14 комментариев

ICQ опять пытается стряхнуть альтернативные клиенты

На данный момент не подключаются QIP, Jimm и Miranda (возможно ещё какие-то клиенты), выдаётся сообщение «The server did not accept this client version». R&Q и Infium работают.

Добавлено позднее: удалось соединиться через Миранду 0.9.9b1, выключив «Secure connection (SSL)».

23 комментария

Flashblock в «Опере»

Оказывается, в «Опере» 10.50 и выше есть встроенный аналог плагина «Flashblock» для Firefox — опция «opera:config#UserPrefs|EnableOnDemandPlugin» (вставьте в адресную строку и нажмите Enter, увидите соответствующую настройку).

Опция включает функционал, который мне хотелось включить по-умолчанию с тех пор как я увидел Opera Turbo — в этом режиме Flash не загружается до тех пор, пока на него не кликнешь.

15 комментариев