
(Popular Science, март 1952)

(Popular Science, март 1952)
Поэтому я написал Cathodique, простой YouTube-плеер для Мака.

Он играет видео через встроенный Quick Time, поэтому жрет меньше CPU, чем Flash:

(Это примерные графики для MacBook. MacBook Air я даже не мерил, потому что он может взорваться от просмотра 1080p).
Ну и, конечно, просто удобно искать по YouTube. А самая главная фича — отсутствие комментов!
(Чтоб вы не испугались: штука платная, пока стоит $14. Пробная версия работает 30 дней.)
Сегодня выпустили новый продукт для Windows.
Примерно так выглядит:

Please fuck these dickheads

Thanks,
D.
Акт первый
Kevin Lynch, CTO Adobe, постит комментарий, в котором утверждает, что во Flash нет известных багов, приводящих к аварийному завершению плагина/браузера (“Regarding crashing, I can tell you that we don’t ship Flash with any known crash bugs”).
Matthew Dempsky делает страницу, которая демонстрирует аварийное завершение Flash и говорит, что он сообщил Adobe об этом баге еще в сентябре 2008. (ссылка — осторожно, браузер или Flash могут упасть).
Adobe приносят извинения и говорят, что нечаянно пометили этот баг для исправления в следующей версии, вместо той, которую собирались выпускать.
Акт второй
Работник Adobe пишет о том, почему они не откроют исходники Flash. Причина: во Flash есть код, которым Adobe не владеет (например, декодер H.264).
Мне кажется, американским властям нужно срочно проверить, не нарушает ли Adobe законы по использованию детского труда. Я не верю, что взрослый человек мог представить общественности такой аргумент.
Вышла новая бета-версия BlogJet 2.5 с “живой” проверкой орфографии:

Подробности и ссылка на программу — в блоге Coding Robots.
В США и Великобритании люди, совершившие сексуальные преступления (секс-оффендеры), обязаны регистрироваться в специальном реестре (после того как отсидят положенный срок). В Штатах информация о зарегистрированных секс-преступниках доступна общественности, в том числе через сайты.
Вот, например, карта зарегистрированных секс-оффендеров в районе Пасадены:

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

а также, что он сделал. Например, этот дядька развратил 14 или 15-летнего ребенка.
При походе в парк или устройстве в школу (выделены белыми квадратиками на карте), американец-параноик заходит на сайт и смотрит, сколько рядом секс-оффендеров в округе:
Grace Christian Academy
-----------------------
address: 73 N. Hill Av
Pasadena, Ca 91106
closest offender 0.27 miles
offenders within 1000 ft 0
offenders within 1/2 mile 3
Ближайший к этой школе секс-оффендер находится в 0.27 милях, а в радиусе полмили их целых три.
Некоторые секс-оффендеры, если так решит суд, обязаны иметь таблички на домах и машинах, типа “Тут живет насильник” или “В этой машине едет плохой дядя”:
Предыдущая заметка была на самом деле работающей программой на языке Lua (“луна”) с бриджем в Objective-C под названием “Луноход”, который я недавно написал-недописал. На скринкасте я показываю, как это работает (включите звук!):
По-моему, я потерял интерес* к этому проекту (а может и нет, посмотрим), поэтому если кто-то хочет продолжить — велкам в репозиторий.
* Обновление: точнее сказать, я мечусь между двумя похожими проектами — на Lua и Scheme, и пока не могу выбрать какой развивать.
-- Это наша программа.
app = Application()
-- А это кнопка.
firstButton = Button:new{
-- У нее есть название,
title = "Сказать привет",
-- размеры,
width = 160,
height = 40,
-- положение
x = 10,
y = 10,
-- и действие.
action = function ()
print "Привет, мир!"
end
-- Вот.
}
-- Это вторая кнопка, которая делает то же самое,
secondButton = firstButton:new{
-- только называется по-другому
title = "Опять сказать",
-- и находится правее.
x = 170
-- Вот.
}
-- Это окошко, у которого есть название, положение и размеры.
window = Window:new{
title = "Программа для передачи приветов миру",
x = 0,
y = 0,
width = 360,
height = 60,
-- А еще в этом окошке есть наши кнопки!
subviews = { firstButton, secondButton }
-- Вот.
}
-- Теперь мы скажем окошку показаться,
window:show()
-- а программе — запуститься.
app:run()
--[[

Это космические технологии. Но не rocket science. Жаль, что на Земле так не пишут.
--]]
Пару дней назад сделал текстовый архив блога с прикольными названиями файлов. Мне лень было разбираться с форматом SQLite-базы Movable Type (кроме того, заметки я писал в HTML, Textile и Markdown в разные времена), поэтому я просто сделал
wget -m http://sellme.ru
и получил копию блога у себя на диске. Потом написал скриптик, который проходился по всем страничкам и выдергивал содержание заметок и комментариев. На выходе получался кусок HTML, который я пропускал через html2text.py и получал красивый простой текст с Markdown-разметкой (пример).
Но этого мне показалось мало: что за названия файлов такие
reshil-uznat--russkie-slova.txt? Поэтому из каждой заметки я выдернул
заголовок, пропустил его через Google Translate, убрал лишние пробелы, заменив
остальные на “-“, и получил красивые имена файлов типа
i-decided-to-learn-russian-words.txt (а иногда и смешные:
davydov-quot-modern-teaching-omarketinge-is-poluideologie.txt).
Скачать архив sellme-2010-01-09.zip (1.9 МБ)
Это только текст, картинки не включены. Распакованный архив весит 4.5 мегабайт;
wc выдает, что я написал 380079 слов. Это уже почти три тома универсальной
единицы словоизмерения:
$ wc -w war_and_peace*.txt
139059 war_and_peace_vol_1.txt
127219 war_and_peace_vol_2.txt
134185 war_and_peace_vol_3.txt
112377 war_and_peace_vol_4.txt
512840 total