Лечить vs. предупреждать
Некоторые граждане неверно употребляют поговорку «лучше предупредить болезнь, чем её лечить». Им кажется, что это некое противопоставление. Вроде как рекомендуется сконцентрироваться на предупреждении болезни и вообще забыть про лечение. Вроде как в таких условиях
На самом деле, это просто несбыточная мечта, идеал, вроде безбедной старости. Жизнь куда богаче, конечно, есть масса случаев, когда тебе приходится лечить то, что запустил
«Не самый здоровый режим, но здоровье не моя юрисдикция, как меня уберечь, пусть парятся: минздрав,
Так что противопоставление «лечить versus предупреждать» звучит примерно как «лучше выспаться, чем поесть». Болеешь — лечись, не болеешь — предупреждайся.
Дверь в небо

Снято в Москве, недалеко от улицы Льва Толстого, точнее не помню.
Комьют — время для чтения
Илья переживает за «комьют» (commute).
«Комьют», согласно словарю, это время на езду из пригорода на работу в город.
Всего на дорогу трачу меньше двух часов. В лучшем случае, в одну сторону, от двери до двери дорога занимает 40 минут.
Илья сокрушается, что время это тратится бесполезно. Правильно сокрушается,
Сегодня, например, я с утра эксперементировал с SSE (Server Side Events), чтобы решить, пригодны ли они в одном внутреннем проекта «Яндекса», где критична быстрая реакция сервиса или нет.
А сейчас я собираюсь на работу.
Кстати, для меня «комьют» бесполезной тратой времени не является. У Илья есть новая машина, а у меня есть старое метро. Метро — единственное место, где я читаю книги. Редко бывает, что я читаю книгу ещё и дома. Бо́льшую часть того, что я прочитал, я прочитал в общественном транспорте. Если вдруг законы физики изменятся и заработает
Мне всё время работать дома просто не нравится, мне проще, когда я вижу человека «в объёме». Илья знает как я неохотно пользовался скайпом раньше и как охотно встречаюсь вживую, если есть возможность.
При этом необходимости постоянно торчать в офисе у меня нет. Возможно, я вообще не приходил бы в офис, если бы вместо одной из стен комнаты у меня был бы большой видеоэкран. Я бы поставил к нему стол, на стол ноутбук. Когда мне нужно было бы «выйти в офис», я бы одевался, садился за стол, открывал ноутбук, а большой экран отображал бы виртуальный офис с объёмом (в 3D), где за своими столами, не выходя из дома, сидели мои коллеги.
Можно даже «сесть поближе», достаточно изменить виртуальную планировку, так, что человек окажется, вроде как, в расстоянии вытянутой руки. Мечты, да.
А пока поеду я в офис, выберу какую из трёх книг я
Рабочая задача: карта + объекты
Ничего экстраординарного, просто задача по работе попалась.
Дана карта местности (картинка), на неё нанесено большое количество объектов, несколько тысяч. В каждый объект можно тыцнуть мышкой, карта большая, её надо позволять «таскать» мышкой.
Текущее решение тормозит, а надо сделать так, чтобы не тормозило.
У меня была гипотеза, что если нарисовать всё это дело на большущем CANVAS, выходящем за пределы экрана и позволить его таскать мышкой, то тормозит не будет.

При клике происходит поиск объекта по списку (безо всякой оптимизации пока), если объект найден, то выводит информацию по цвету, если зажать кнопку мыши, срабатывает флаг «пользователь желает тащить», если пошевелить в этот момент мышью, координаты CANVAS будут меняться вслед за мышью.
Вроде не тормозит, хороший способ делать карты. Делюсь, вдруг пригодится кому.
Re: Господи, неужели это произошло с моим мальчиком?
Помните статью «Господи, неужели это произошло с моим мальчиком?» в которой одна жижистка обвиняет сотрудников и медицинскую службу «Шереметьева» в бездействии, когда руку её ребёнка сломала дверь лифта?
История, конечно ужасная, но не всё так просто. В «Шереметьеве» начали расследование этого случая и уже есть результаты, есть видеозапись с камеры наблюдения и полная хронология событий. Почитайте, посмотрите видео.
Часы без JavaScript: фильм о фильме
Как уже догадались все, кому это было хоть каплю интересно, часы без JavaScript сделаны анимированным GIF. Сделал я всё очень просто: скачал найденный

Оказалось, что проще всего сгенерировать картинки при помощи Go. В Пайтоне на «Маке» у меня нет PIL и я его плохо знаю, во встроенном PHP нет поддержки TTF, так что Go:
package main
import "gd"
import "os"
import "fmt"
func main() {
im := gd.CreateTrueColor(21, 21)
white := im.ColorAllocate(255, 255, 255)
black := im.ColorAllocate(0, 0, 0)
// стрелки: 64 → 123 (m) и 192 → 251 (h)
defer im.Destroy()
for i := 0; i < 720; i++ {
im.FilledRectangle(0, 0, 20, 20, white)
min := i % 60
hour := (i / 60) * 5 + min / 12
im.StringFT(black, "./clock.ttf", 10, 0, 0, 16, "1")
im.StringFT(black, "./clock.ttf", 10, 0, 0, 16, string(hour + 192))
im.StringFT(black, "./clock.ttf", 10, 0, 0, 16, string(min + 64))
name := fmt.Sprintf("gifs/%02d%02d.gif", i/60, i%60)
im.Gif(name)
}
}После запуска получилось 720 картинок с ноль часов ноль минут до 11:59 (я не зря выбрал часы со стрелками, это позволило сократить размер анимированных часов вдвое).
Когда на сервер приходит запрос, я проверяю сколько сейчас времени и, если файл с часами для текущей минуты уже существует, то делаю редирект на существующую картинку. Если нет, то генерирую из 720 картинок новый «мультик», кладу его на диск и делаю редирект на него (остальные картинки удаляю):
<?
include "clock.inc.php";
list($h, $m) = explode(':', date('H:i'));
if ($h > 12) $h -= 12;
$name = sprintf("%02d%02d.gif", $h, $m);
if (!file_exists($name)) {
@array_map('unlink', glob('*.gif'));
$frames_tail = $frames = $framed = array();
$frames_name = 'frames_tail';
for ($H = 0; $H<12; $H++) {
for ($M = 0; $M<60; $M++) {
if ($h == $H && $m == $M) {
$frames_name = 'frames';
}
${$frames_name}[] = sprintf("gifs/%02d%02d.gif", $H, $M);
$framed[] = 100;
}
}
$frames = array_merge($frames, $frames_tail);
$gif = new GIFAnimator($frames, $framed, 0, 2, -1, -1, -1, 'url');
fwrite(fopen($name, 'wb'), $gif->GetAnimation());
}
header("Location: $name");Для генерации анимированных GIF применяется
Часы без JavaScript
Сделал крошечные аналоговые часы, которые работают без JavaScript. Кто первый догадается как они работают, тот молодец.
Правда я их ускорил в 60 раз (а то очень уж скучно смотреть), поэтому это скорее секундомер, но стартуют они с текущего времени.
ГОСТ 11261-75
Внезапно узнал, что существует «ГОСТ
Подготовлен к уверждению Всесоюзным
Шкурки меховой домашней кошки характеризуются густым волосяным покровом с частой упругой блестящей остью и густым пухом…
Площадь шкурки определяют умножением результатов измерений её длины от середины междуглазья до корня хвоста на ширину посередине шкурки…
Шкурки поставляют партиями. Партией считают количество шкурок, сдаваемых одновременно и оформленных одним документом о приёмке.
Кажется, я нашёл дипломную работу Капитана Очевидность. И ещё, у него нет сердца!
«Самая первая помощь: 10 опасных заблуждений»
Наткнулся на очень полезную статью «Самая первая помощь: 10 опасных заблуждений» на «МедПортале». Про то нужно ли разжимать зубы эпилептику в припадке, надо ли стучать по спине, если человек подавился, нужно ли пить раствор марганцовки для очистки желудка, нужно ли растирать уши на морозе и многое другое.
Текстовые ссылки в графике

Читая последнюю, на настоящий момент, статью в Ководстве Лебедева «Правила оформления ссылок» обратил внимание, что Студия в этом месте, вроде как, не всегда следует своим же советам.
В правом верхнем углу располагается логотип Студии, являющийся ссылкой, где текстом написано «Студия Артемия Лебедева». Я понимаю, что это картинка, но простой пользователь этого не поймёт, да и какая разница — текст есть текст, прорендерен ли он заранее в графике или это сделала операционная система позже.
Написал письмо Артемию, посмотрим что ответит.
Технических трудностей, между тем, в подчёркивании таких ссылок никаких — прочертил линию в графике и всё, ссылка подчёркнута. Другое дело в подствечивании при наведении, кажется что это невозможно. Но это только на первый взгляд. Я уже демонстировал (неоднократно), что это делается очень просто.
Такие опыты я производил четыре года назад, так даже постоянные читатели вряд ли помнят. В GIF или PNG под ссылкой «прорезается» (прочерчивается прозрачным) полоска, которая будет имитировать наше подчёркивание. Картинке в CSS ставится фон ссылки (например, синий), при наведении фон меняется, схематически:
img {
background: blue;
}
img:hover, img:visited {
background: red;
}Torschlusspanik
«Лента.ру» пишет:
Новая редакция документа, подготовленная после вмешательства президента, позволяет госкомпаниям не сообщать о тендерах менее чем на 500 тысяч рублей, а также имеющих отношение не только к государственной, но и к коммерческой тайне.
При этом компании смогут сами решать, что такое коммерческая тайна. Долгосрочных планов закупок публиковать не надо — только однолетние.
Кроме того, из документа исчез пункт о праве правительства обязать госкомпании проводить аукционы, а обжаловать результаты торгов госкомпаний можно будет только в суде.
Это
«Почему папа даёт 700 рублей в день»

Яндексу подчас задают очень странные вопросы.
Joby Gorillapod SLR-ZOOM

У меня же список желаний есть, там всё непрактичное,
Спасибо!
Теперь ситуаций «ну не могу я снять, тут нужна выдержка полминуты, а я не робот держать столько фотоаппарат ровно» будет меньше. Самое крутое, что есть в этом штативе, что он не просто даёт поставить фотоаппарат
Лада на улицах Владивостока
Арсентьич

Хорошим ты был мужиком, Арсентьич, да вот, затянуло в мясорубку.
Google Go vs. Си
Ребята на работе
Я подключился и написал пример на Google Go:
package main
import "fmt"
func main() {
x := []int{2}
for i := 3; i < 200000; i += 2 {
simple := true
for _, j := range x {
if i % j == 0 {
simple = false
break
}
}
if simple {
x = append(x, i)
}
}
fmt.Println(x)
}Запускалось всё
Python — 25,95 секунды Perl — 22,96 секунды PHP — 21 секунда Objective C — 9,40 секунды JavaScript (V8) — 4,73 секунды Java — 1,94 секунды Си — 0.95 секунды Google Go — 0,71 секунды.
Особенно меня поразили «Гоу» и JavaScript.
Работа — резиновый шарик
Представьте себе, что жизнь — это игра, построенная на жонглировании пятью шариками.
Эти шарики — работа, семья, здоровье, друзья и душа, и вам необходимо, чтобы все они постоянно находились в воздухе.
Вскоре вы поймёте, что шарик работы сделан из резины — если вы его невзначай уроните, он подпрыгнет и вернётся обратно.
Но остальные четыре шарика, семья, здоровье, друзья и душа — стеклянные. И если вы уроните один из них, он будет непоправимо испорчен, надколот, поцарапан, серьёзно поврежден или даже полностью разбит. Он никогда не будет таким, как раньше. Вы должны осознавать это и стараться, чтобы этого не случилось.
Работайте максимально эффективно в рабочее время и уходите домой вовремя. Посвящайте необходимое время своей семье, друзьям и полноценному отдыху.
Ценность ценна только если её ЦЕНЯТ.
Брайан Дайсон
Walking frog fish
Мне этот ролик напоминает
JS CSS в одном файле у меня на сайте
Я
Особых трудностей не встретил, только убрал все комментарии из файлов с JavaScript руками и добавил удаление BOM из файлов, браузеры
Схема,
Вот ещё тонкость, обязательно нужно добавить новый
AddType */* .cssjsОказалось, что последний «Хром» ни в какую не хочет рендерить CSS с таким типом, пришлось заменить на «text/css,*/*» на «text/css», предыдущий вариант не работал в IE9.
Надо посмотреть как отнесётся к этому второй FF, а пока, если у вас «Хром» или IE9 и показывает неправильно, обновите, пожалуйста, страницу, чтобы она не из кеша взялась, всё должно нормально отрендериться.
Посмотрим «в поле» насколько это стабильно работает.
почемужеонинеговорятпорусски
RFC 3492 «Punycode: A Bootstring encoding of Unicode for Internationalized Domain Names in Applications (IDNA)» описывает punycode, это такой способ кодирования национальных доменов, вроде «президент.рф» или «
Так вот, в этом RFC есть примеры кодирования фраз на разных языках в punycode, есть и русский:
(I) Russian (Cyrillic):
U+043F u+043E u+0447 u+0435 u+043C u+0443 u+0436 u+0435 u+043E
u+043D u+0438 u+043D u+0435 u+0433 u+043E u+0432 u+043E u+0440
u+044F u+0442 u+043F u+043E u+0440 u+0443 u+0441 u+0441 u+043A
u+0438
Punycode: b1abfaaepdrnnbgefbaDotcwatmq2g4lА вот что там написано:
bolk-osx:~ bolk$ python -c 'print "xn--b1abfaaepdrnnbgefbaDotcwatmq2g4l".decode("idna")'
почемужеонинеговорятпорусски