Ещё об одном российском мифе
Как бы пристально мы ни следили за статистикой, уровень краж оставался существенно ниже среднего по ИКЕА. Когда мы открыли еще магазины в России, мы уже могли с уверенностью заявить: в этой стране у нас крадут меньше, чем в других странах. Удивительно, почему среди русских так распространено мнение о том, что их собственный народ имеет
какую-то особую склонность к воровству?
Говорит Леннарт Дальген, первый генеральный директор российского подразделения компании ИКЕА.
«Нокия»: история провала
На «Хабре» опубликована фантастическая по детализации история падения фирмы «Нокия», очень длинная, но содержащая много интересных подробностей и уроков для бизнесменов. Ощущение, что написана инсайдером. Обязательная к прочтению статья, так мне кажется.
Тег шаблона (NOEMBED?)
Традиционно в HTML4 для этого используют тег SCRIPT у указанием
<script type="text/x-template" id="template-ok">
<div><div class="button">OK</div></div>
</script>Либо используют комментарии (у Сергея Чикуёнка был рассказ
Был раньше такой нестандартный тег COMMENT, но его сейчас никто не понимает, даже Эксплорер прекратил его поддержку, в данном случае он бы пригодился.
Мне вчера ночью подумалось, что можно использовать и более лаконичные теги — NOFRAMES или NOSCRIPT. Первый показывает своё содержимое, если браузер не поддерживает фреймы, второй, если выключены скрипты. Если выключенные скрипты ещё встречаются у сетевых параноиков, то браузера без поддержки фреймов сейчас и не встретишь, а если таковые и есть, то
Особенность же тегов в том, что они в нормальных условиях являются аналогом комментария, то есть не добавляют своё содержимое в DOM, поэтому они вполне пригоды на роль шаблонного тега.
<noframes id="template-ok">
<div><div class="button">OK</div></div>
</noframes>
<script>
alert(document.getElementById('template-ok').innerText); // содержимое шаблона
</script>Не сказать, что это
Когда я уже дописал эту заметку, мне пришла в голову мысль, что а) тег NOEMBED был бы, наверное, более семантичем, чем NOFRAMES, он имеет отношение к встраиванию контента, а я совсем про него забыл, б) тег EMBED был бы, наверное, ещё более семантичен, но, к сожалению, он слишком тяжёл для браузера, надо испытывать, но я предполагаю, что даже если контент явно незнакомый, браузер всё равно попытается угадать что это. Но надо провести испытания, конечно же.
Так что, я бы остановился бы на NOEMBED.
Дата-центры следует подогревать, а не охлаждать?
Парадоксальным образом там было установлено, что наименьшее количество отказов HDD наблюдалось при температурах в районе
40-45 градусов, а ее понижение количество отказов увеличивало (!).В случае DRAM кореляция между температурой (в наблюдавшемся диапазоне около 20 градусов между самой низкой и самой высокой) и отказами была крайне незначительной.
Из статьи про исследование Гугла, наблюдались тысячи машин, в течении 2,5 лет. Так получается,
Чай in-stick

Такой чай предложили мне в домодедовском аэропорту,
На упаковке есть название «
О стоимости доступа к объектам в PHP
Удивительное — рядом: недавно искали с нашими админами место в коде где больше всего тормозит вывод одной страницы одного из сайтов, сделанных в недрах нашей компании в незапамятные времена.
Код был довольно запутанный, попросили меня помочь. Место я вычислил. Если его закоментировать, страница начинала выдаваться не за десятки секунд, а за единицы.
Никогда такого не видел. Как вы думаете, что тормозило? Запросы к базе?
Вовсе нет.
После выборки из базы, данные выкладывались в массив сложных объектов, в данном месте это было массив из почти что 500 объектов, внутри объектов лежали другие объекты, а них — ещё. Заполнение этой структуры занимало немало времени, но тормозило другое — цикл перебора массива объектов с выводом свойств объектов третьей вложенности.
В цикле не было вызвано ни одной функции (кроме htmlspecialchars), а вывод всего этого хозяйства занимал порядка десятков секунд.
Превращение маковской флешки в полноценную
Как, наверное, многие знают, при покупке ноута «МакБук», в коробке лежит

Оказывается, есть способ превратить её в полноценную, перезаписываемую флешку! Для этого, правда, понадобится компьютер с Виндой или хотя бы виртуальная машина. В моём случае это был старенький ноут с нужной операционкой. Винда вам нужна, чтобы запустить утилиту sm32Xtest, которая и вразумит ваш «сидиром».
После запуска, если утилита не нашла вставленную флешку, нужно нажать «F5», в этом случае, произойдёт скан всех

Если эта операция выполнилась успешно, надо нажать клавишу пробела и дождаться выполнения всех оставшихся операций. Если всё прошло хорошо, в строке статус сменится на «Pass», а справа появится большая надпись «OK»:

После этого можно флешку извлекать (не забудьте извлечь её безопасно). У меня получилась флешка в 8ГБ:

Смирнов вернулся в Новосибирск
Дима Смирнов (помните ещё такого?) переехал обратно из Москвы в Новосибирск. И написал небольшую и разумную заметку о своём переезде:
Я ехал не в Москву, а в Яндекс. При этом люди годами не могли понять, почему я такой талантливый и хороший до сих пор не ринулся покорять Москву.
Я и не ринулся, потому что прекрасно осознавал, что Москва мне не нравится. Но если Яндекс — лучшая айти компания в России, а я такой талантливый и хороший — то мне там место, а Москву можно потерпеть. Оказалось, нет.
Привет из прошлого, Ассемблер Z80
Читая один из постов Аввы, наткнулся на ассемблерные алгоритмы быстрой очистки экрана, вспомнил, что мне тоже
penguinny: Опыт работы в ассемблере даёт это знание самым непосредственным образом. Кстати, тесно связанный трюк в ассемблере Z80 служил как один из самых быстрых (и точно самый компактный) способ очистки экрана:
ld hl,screen_addr ld de,screen_addr+1 ld bc,6143 ld (hl),0 ldir
Команда ldir копирует bc байт информации, начинающейся с адреса hl, в блок памяти, начинающийся с адреса de. С учётом выбранных адресов, 0 вручную пишется в первый байт, а затем копируется из первого во второй, из второго в третий, и т. д. Экран очищается по индукции.
kray_zemli: говорят,
как-то через стек можно ещё было. вы его имели в виду?penguinny: Да, именно так. Регистр стека устанавливался в конце экрана, один
из 16-битных регистров очищался и затем в частично развёрнутом цикле многократно сохранялся в стек.16-битные операциина 8-битном процессоре! Шок.
Где откроются двери в метро

В московском метро (пока не на всех станциях) сделали специальную разметку, чтобы люди понимали где именно откроются двери в электричку. До появления этой разметки я пользовался простым приёмом, который мне
Нужно всего лишь присмотреться
Казань ✈ Москва ✈ Тбилиси → Сингаги → Мцхета → Кутаиси → Батуми ✈ Москва ✈ Казань
В первые майские праздники едем в Грузию, давно хотел посетить эту замечательную страну. Побываем в пяти городах: Тбилиси, Сингаги, Мцхета, Кутаиси, Батуми, увидим Метехский Храм, крепость Нарикала, Майдан, серные бани, гору Мтацминда, монастыри Бодбе и Джвари, Алазанскую Долину, Кавказский Хребет, Цинандали, соборы Светицховели и Баграта, Гелатскую Академию и наверное
Спасибо казанской фирме «Корсо», которая второй раз подряд отправляет нас на отдых и второй раз подряд делает
Самое короткое письмо Льва Толстого
Господа, это прекрасно! На «Лепрозории» всплыло (а на «Ленте.ру» было переопубликовано) самое короткое письмо Льва Толстого в те времена ученику третьего класса, прадеду товарища одного из пользователей «Лепрозория», Сергѣю Владимировичу Ѳедорову.
История целиком:
У меня есть товарищ, прадед которого, учась в третьем классе, читал «Войну и мир» и задался вопросом: «Как же правильно ставить ударение в фамилии Ростовы?». И он, недолго думая, написал телеграмму Льву Толстому. Писатель ответил ему. Вот карточка с его ответом. Позже семья моего товарища обнаружила биографию Льва Толстого, где упомянут этот случай.

Как видите, читать надо «Росто́вы», это подтверждает сам Лев Николаевич. На обратной стороне почтовой карточки написано: «Его Высокоблагородiю Сергѣю Владимировичу Ѳедорову» с указанием адреса.

Мы с Бирманом на «Баше»

Юникодные часы
В Юникоде есть несколько символов часов (не знаю, отобразятся ли они у вас, вот они): «🕐🕜🕑🕝🕒🕞🕓🕟🕔🕠🕕🕡🕖🕢🕗🕣🕘🕤🕙🕥🕚🕦🕛🕧.»
Тут, как видите, шаг полчаса. Я вчера за завтраком сделал Юникодные часы, которые «ходят» поворотом символа (через

Рассказать я хотел не об этом. Я и раньше встречался с тем, что часть Юникода не воспринимается многими программами нормально, особенно что касается раздела «Эмодзи, например „Яндекс.Фотки“ не так давно порадовали меня следующим (стоило переименовать картинку, всё стало в порядке):

Редактор „Сублиме Текст 2“ часто падает, если в тексте программы встречаются эти символы, а вот „Сафари“ удивил больше всех. Он их, вроде бы, понимает,
"🕐".length; // 2
'🕐'[0]; // строка со «сломанным» символом
escape('🕐'); // "%uD83D%uDD50"То есть, он считает символы Эмодзи не одним символом, а двумя. Такой вот баг. Мне пришлось в коде на ДжаваСкрипте это учитывать.
Дополнение: в комментариях подсказывают, что вроде так и задумано. Так как этим символы представлены четырьмя байтами (суррогатной парой), ДжаваСкрипт, который не умеет работать с такой парой как с одним символом, разделяет его на два.
Юникод в помощь!
Меня в твиттере раздражает, что при использовании русских

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

Моя «Нокия» порадовала с утра апдейтом. Я ещё для себя не решил что это — текст песни с припевом или, может, мой смартфон знает, что я утром плохо соображаю и мне всё надо повторять по пять раз.
Bluetooth в Mac OS из Python
Я тут учусь работать с Блютузом из Пайтона на «Маке», пока сделал сканирование всех видимых в эфире устройств:
import objc
import time
from Foundation import NSDate, NSDefaultRunLoopMode
from AppKit import NSApplication, NSAnyEventMask
objc.loadBundle('IOBluetooth', globals(), bundle_path=u'/System/Library/Frameworks/IOBluetooth.framework')
class DeviceInquiry(NSObject):
def init(self):
self = super(DeviceInquiry, self).init()
self._inquiry = IOBluetoothDeviceInquiry.inquiryWithDelegate_(self)
self._stop = False
return self
def getfounddevices(self):
self._inquiry.start()
app = NSApplication.sharedApplication()
app.setActivationPolicy_(2)
while not self._stop:
time.sleep(.01)
app.nextEventMatchingMask_untilDate_inMode_dequeue_(NSAnyEventMask,\
NSDate.dateWithTimeIntervalSinceNow_(1), NSDefaultRunLoopMode, True)
return tuple((dev.getName(), dev.getAddressString()) for dev in self._inquiry.foundDevices())
@objc.typedSelector("v@:@@")
def deviceInquiryDeviceFound_device_(self, inquiry, device):
self._stop = True
@objc.typedSelector("v@:@iB")
def deviceInquiryComplete_error_aborted_(self, inquiry, err, aborted):
self._stop = True
print DeviceInquiry.new().getfounddevices()Модуль pyobjc (в маковском Пайтоне он уже есть) — это мост между Пайтоном
Последняя строчка — пример использования, выдаётся список списков, состоящих из двух элементов — имени устройства и его «адреса» (это шесть шестнадцатеричных чисел, разделённые минусом).
Bluetooth в Mac OS из Python: комментарии к коду
Пока не забыл, что происходит в коде к предыдущей заметке, опишу для себя.
Первая строка после импортов — загрузка, собственно, самого АПИ, загружается разделяемая библиотека, находящаяся по указанному пути. Далее определяется
В этой связи, объекту приходится ставить специальные подпорки — посмотрите на последнюю строку, там вызывается метод new
В методе getfounddevices я вызываю метод, запускающий сканирование, и дожидаюсь, когда один из методов (deviceInquiryDeviceFound_device_, вызывающийся на успешном скане или deviceInquiryComplete_error_aborted_, который вызывается, если произошла ошибка или ничего не найдено) установит флаг, что сканирование завершено.
Цикл ожидания (единственный while в коде) для меня опять же является магией, я лишь могу предположить, что он позволяет обрабатывать поступающие события, простой цикл со sleep не даёт никакого эффекта. Потом я возвращаю имена и адреса найденных устройств.
Декораторы objc.typedSelector указывают сигнатуру вызываемого объекта и позволяют указать как именно будут переданы параметры. До конца эта магия мне пока непонятна.
Например, «v@:@iB» расшифровывается как «void», «объект», «селектор метода», «объект», «int», «булевое». Т. е. метод ничего не возвращает, потом идут параметры: никаких идей что такое
Всё что перечисленно через подчёркивание — это имена сообщений, в терминах
Уходим с телефоном, «МакБук» выключается
Причина, по которой я засел за Пайтон и стал изучать как из него работать с Bluetooth в том, что мне очень хотелось сделать следующую вещь: как только я покидаю рабочее место, мой ноутбук блокируется.
Идея выглядела просто: надо посмотреть присутствует ли в эфире мой смартфон, если нету, значит я
В общем, всё получилось у меня. Если хотите, чтобы у вас работало так же, то двигайтесь по шагам.
Шаг №1.
Нужно узнать так называемый «адрес» вашего устройства и привязать его к компьютеру. Тут ничего сложного нет, заходим в настройки «Блютуз» на «Маке» (они находятся в «Системных настройках»), привязываем его как обычно и переписываем себе 12 букв, разделённых минусами, это и есть адрес:

Шаг №2.
С этого шага потребуется уметь пользоваться терминалом. Создаём запускаемый файл
#!/usr/bin/python
import objc
import sys
from subprocess import call
objc.loadBundle('IOBluetooth', globals(), bundle_path=u'/System/Library/Frameworks/IOBluetooth.framework')
def CheckDevice(address):
dev = IOBluetoothDevice.withAddressString_(address)
if dev.isConnected():
return True
conn = dev.openConnection()
if conn == -536870185: # Bluetooth is off
return True
if conn == 0:
dev.closeConnection()
return True
return False
cmdtorun=(r'/System/Library/CoreServices/Menu Extras/User.menu/Contents/Resources/CGSession', r'-suspend')
try:
if not CheckDevice(sys.argv[1]):
call(cmdtorun)
except IndexError:
print("Usage: bt-lock <device address>")В скобках замечу, чтобы сделать файл запускаемым нужно в терминале выполнить следующую команду: chmod a+x
Шаг 3.
Создаём файл ~/Library/LaunchAgents/ru.bolknote.Bluetooth-lock.crontab.plist с таким вот содержимым:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>ru.bolknote.Bluetooth-lock.crontab</string>
<key>Program</key>
<string>/usr/local/bin/bt-lock</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/bt-lock</string>
<string>а̲д̲р̲е̲с̲ ̲в̲а̲ш̲е̲г̲о̲ ̲у̲с̲т̲р̲о̲й̲с̲т̲в̲а̲</string>
</array>
<key>Nice</key>
<integer>20</integer>
<key>StartInterval</key>
<integer>30</integer>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>И выполняем в терминале команду «launchctl load ru.bolknote.Bluetooth-lock.crontab.plist». Это всё.
Чтобы отключить всю эту марахайку, достаточно выполнить в терминале команду «launchctl unload ru.bolknote.Bluetooth-lock.crontab.plist» или выключить Bluetooth на ноуте.
Решение только для «Мака», как работать из Пайтона с Блютузом под другие операционные системы, я не знаю.
Русская народная медицина
Я тут любопытную вещь за собой заметил. На фоне общей истерии ко всему «натуральному» и народной медицине, сегодня, принимая с утра ванну, понял, что
Поймал себя на этом, когда понял, что с большим недоверием разглядываю маску для волос с названием типа «Секреты бабушки Агафьи»
Когда это у меня случился такой скачок в сознании, я не заметил, раньше, кажется, мне народная медицина нравилась, а тут прямо полярность сменилась. Наверное,
Анализируя своё восприятие, я понимаю, что в народную медицину не верю. В самом деле, это больше похоже на миф, чем на знание. Никто никогда не скажет в каком отрезке истории существовала эта медицина, каково соотношение ею выхожденных к умершим, кого из исторических личностей вылечила, в общем, ничего конкретного.
Воспоминания об этом похоже на воспоминания о любимой детской игрушке — неопределённые и приятные, до тех пор пока эту игрушку не встречаешь в ящике со старыми вещами. И понимаешь, что всё это, конечно, мило, но современные игрушки дадут этой фору.
На фоне громадной детской смертности (что подтверждено исторически), когда умирали от болезней, от которых сейчас не умирают (от аппендицита, например, да и вообще от чего угодно, что требует инвазивного вмешательства), о каких чудесах медицины любых лет можно говорить? Я, вот, изучением своих предков занимаюсь, три поколения назад отматываешь и всё, мрут, как мухи.
Что могла знать неграмотная бабка из забытой богом деревни, откуда эти знания у неё могли появится? От предков? А у предков откуда? Я так представляю, знания добывались на месте, «не умер
С этой точки зрения
Второй вопрос — куда эти знания делись.
Тысячу лет, по секрету, перед смертью бабушка шептала своей подросшей внучке «тайные знания»? И та всё это запоминала в этот же момент? Ведь, если вообразить, что была некая сила, которая запрещала это практиковать (церковь?), то возможности спокойно передать знания через каждодневную практику не было. Если запретительной силы не было, то где знания?
Можно, конечно, попытаться на большевиков всё свалить, но что тогда делать с огромной смертностью до революции?
В общем, это мой сознательный анализ. А бессознательный выбор таков: из двух тюбиков я выберу тот, который к народной медицине отношения не имеет.
PCRE и UTF-16
Прочитал в документации по библиотеке PCRE, что с версии 8.30 она поддерживает кодировку
Написал два примера на Си: один для
# это я на своём «Маке» скомпилировал
~$ gcc-4.7 -I/usr/local/Cellar/pcre/8.32/include/ -L/usr/local/Cellar/pcre/8.32/lib/ -lpcre -std=c99 -o utf8 utf8.c
~$ gcc-4.7 -I/usr/local/Cellar/pcre/8.32/include/ -L/usr/local/Cellar/pcre/8.32/lib/ -lpcre16 -std=c99 -o utf16 utf16.c
# два файла в разных кодировках, почти 1,5 млн. строк, правда используется далеко не это количество
~$ wc -l utf8.txt
1424462 utf8.txt
~$ wc -l utf16.txt
1424462 utf16.txt
~$ time ./utf8
PCRE version: 8.32 2012-11-30
Yes!
…
Yes!
real 0m1.372s
user 0m1.286s
sys 0m0.039s
~$ time ./utf16
PCRE version: 8.32 2012-11-30
Yes!
…
Yes!
real 0m0.048s
user 0m0.004s
sys 0m0.035sЛибо я
Лично мне кажется, что API толком не работает и ошибка в том, что в pcre16_compile не указывается длина шаблона.
Королевич Вахрамей
Наткнулся сегодня, наполняя своё родовое дерево, на очередное редкое имя — Вахраме́й. Это мой прапрапрадед со стороны мамы (примерно
Долго не мог распознать что написано, попросил историка, с которым я работаю, расшифровать. Написано, кстати, с ошибкой — Вохрамей.
Вахрамей — простонородный вариант имени Варфоломей (переводится как «сын Толмая» с арамейского).
Возможно, кстати, прапрапрадеда звали Вахра́м, такой вариант имени тоже существует, а само имя мне стало известно из сокращения отчества моей прапрабабушки, которая записана в похозяйственной книге №1 одной из письмянских артелей за 1937 год:

Кто сильнее — кит, слон или «Фауст» Гёте?
Кстати, в прошлом году я прочитал «Фауса» Гёте. Просто для того, чтобы иметь право говорить «эта штука посильнее „Фауста“ Гёте».
Earworm
У меня сейчас в голове противный мотивчик крутится, никак избавиться не могу. Слова
Да какое это слово? Английский делает то, что русский уже давно боится — берёт два слова («ear» и «worm») и соединяет. А у нас с изобретения «самобранок», «самокатов», «самолётов», «вертолётов» появился только «пенопласт». Носители стали бояться изобретать новые слова, проще заимствовать из языка, где это не боятся делать.
Ломоносов придумал слово «градусник», Карамзин — «катастрофа», Достоевский — «стушеваться», Хлебников — «лётчик», Иван Панаев — «хлыщ»,
Я, кстати, свой вклад сделал почти 10 лет назад — придумал слово «латрас», распространения оно не получило, правда. Ещё тешу себя мыслью, что подсадил всех вокруг на слово «оке» (вместо «окей»), теперь оно ко мне возвращается, впрочем у этого слова могло быть несколько эпицентров зарождения.
Кесарю — кесарево сечение
Всегда думал, что кесарево сечение называет так, потому что через него родился Цезарь.
А вот нет. Оказывается, кесарево делали в Древнем Риме, только если женщина при родах умирала (делать кесарева так, чтобы мать выжила стали только в 19 веке), а мать Цезаря прожила ещё долгие годы после его рождения.
Доподлинно же, почему оно называется «кесаревым» неизвестно, есть несколько версий:
- Вышеупомянутая версия про Цезаря 2. По одному из императорских законов (Lex Caesarea), ребёнка умирающей матери полагалось спасти кесаревым сечением 3. От латинского «caedere» — резать
Imagine Cup 2013 в Казани

Сегодня сидел в жюри конкурса «Имажин Кап» в Казани (снимок с сайта
Больше всего впечатлил тринадцатилетний мальчишка (на фото он второй справа), участвующий в разработке игры «Fitness4You», которая должна помочь людям в занятиях спортом. Пусть он кое в чём заблуждается, пусть некоторые вопросы он изучил недостаточно глубоко, но в тринадцать лет он самостоятельно изучил рынок, аналоги, подсчитал бюджет, нанял программиста и провёл отличную презентацию!
Первое место заняли ребята из Волгограда, который придумали, реализовали и уже внедрили (!) за рубежом (!!) систему, которая по прогнозу погоды регулирует отопление здания, так как здание обладает инерцией, регулировать отопление надо заранее. На объекте, где было произведено внедрение, экономия составила 20% в год или 44% за холодное время года.

Второе место — ребята из Sly Lamb, из Нижнего Новгорода (если не ошибаюсь), выпустившие очень симпатичную логическую игру, я их не фотографировал, но игра качественная, с неплохой графикой и собственным звуковым оформлением.
На третьем месте парень из КФУ (это универсистет Казани), разрабатывающий программу

Спасибо «Микрософту» за этот ежегодный конкурс, это очень нужно дело, тем более в России, где качество образования постоянно падает, а люди охотнее идут в криминал, чем в науку и информационные технологии.
Паук под наркотиками

Фотография выше — часть очень известного эксперимента учёных НАСА. Они давали паукам разные наркотики и смотрели какую паутину они сплетут. Под этим наркотиком паутина получилась самой неправильной и бесполезной (она как раз на фото).
Сможете угадать что за наркотик?
♭♯♪♫♪♬♩
Удивительно (потому что меня это самого удивляет), но в последнее время я не слушаю музыку. Это
Нет, бывает я нахожу
У меня даже есть шутка, над которой я иногда хихикаю у себя в голове, что у нас с Бирманом уговор — он не читает художественные книги, а я не слушаю музыку. Мне это смешно, потому что Илья любит слушать музыку, но не любит читать художественную литературу, а я ровно наоборот.
Когда я работал в «Яндексе», с моим одним другом мы часто разговаривали о роли ностальгии в восприятии музыки. Смысл в том, что музыка из детства, какая бы плохая она не была, всё равно человеку нравится, потому что возвращает его в детство, туда, куда многие стремятся. Я уже тогда понял, что начисто лишён этой ностальгии и песни той поры мне в голову не приходит слушать. Я иногда их пою, но то исполнение кажется мне пресным или примитивным.
Я подумал, может это и есть разгадка — я не сохраняю воспоминания, связанные с музыкой и слушаю песню, пока она мне не надоест, а потом выкидываю её навсегда? Ведь причин её слушать больше нет. Ну у меня есть свои любимчики, но часто я их слушать не могу, и их недостаточно, чтобы заполнить музыкой хотя бы
Отчаянные четырнадцатые

Из всех моделей машин, которые приезжают ко мне, когда я вызывают такси, мне более всего нравятся четырнадцатые. Обычно, когда я вызываю такси, я опаздываю, а владельцы четырнадцатых достаточно отчаянные, чтобы объезжать пробки по дворам и таким дорогам, куда нормальная машина даже не поедет. Вот сегодня, мы объехали пробку, срезав через
Конечно, это отечественный автопром, комфорта на порядки меньше, чем на «Лексусе» (однажды, в такси «Везёт» ко мне на обычный вызов прислали «Лексус»), но свои плюсы, видите, есть. С другой стороны, четырнадцатые, обычно, не такие разбитые внутри и замотанные изолентой, как
Чудны́ дела твои, PHP!
Может быть
Я делал это функцией copy, первом аргументом передавал УРЛ, вторым — путь на файловой системе. В логах, после изменения конфигурации, ПХП ругался, что «http:» — это неправильное начало для разрешённого пути. Удивительно, но стоило заменить copy// на её, фактически, эквивалент, как всё заработало:
if ($fin = fopen($url, 'rb') and $fout = fopen($file, 'wb')) {
stream_copy_to_stream($fin, $fout);
fclose($fout);
fclose($fin);
return true;
} else {
return false;
}Такое поведение больше похоже на баг, ПХП у меня не последний (5.3.21 сейчас), может поправили уже.
Александра Никаноровна Стрелкова

Тут случилось небольшое чудо.
Сначала предыстория. В 1999 году у меня умерла прабабушка, Евдокия Никаноровна Стрелкова, несколько месяцев до 97 лет не дожила. В детстве мне одномоментно стало интересно поисследовать своё дерево и я расспросил всех бабушек и её в том числе, о тех предках, кого они помнили. А когда два года назад я заинтересовался деревом более серьёзно, то перенёс это всё в электронный вид. Некоторое время назад я показывал это дерево своей двоюродной бабушке, её дочери и маме, которая приходится ей внучкой и оказалось, что прабабушка мне назвала не маму, а мачеху. Как звали маму она то ли не помнила, то ли не посчитала нужным сказать. Т. е. как звали мою родную прапрабабушку с этой стороны я не знал.
Я заказал повторные свидетельства о смерти прабабушки и её папы и выяснил, что родились они в деревне Мирная Дубовка (ныне — Дубовка Бугульминского района), я
Поскольку Мирная Дубовка — деревня, церкви в ней не было, значит рождения регистрировались
А сегодня работники Национального Архива Республики Татарстан нашли запись о рождении прабабушки в архивах села Рыково, оно же Рычково (на картах зелёная стрелка), сейчас носит название Ключёвка. В записи о рождении записана её мама — Александра Никоноровна. Чудо в том, что работники Архива вообще посмотрели в бумаги по этому селу, вот что значит люди хорошо делают свою работу! Что приятно, по этому селу есть масса записей, мой сканер их нашёл. Почему прапрадед повёз дочку крестить не в ближайшее село непонятно, но пара версий у меня есть.
Первая, самая вероятная — в этом селе жили
Вторая версия — Евдокия Никаноровна крестилась 15 марта (по новому стилю), сегодня 27 марта, а за окном снег и слякоть. Может быть в Потапову Тумбалу просто было не проехать, а в Рыково дорога была
Крестили, наверное, в храме Петра и Павла (вероятный год постройки — 1809), который сейчас в полуразрушенном состоянии. Само село Рыково основано купцом Рыковом в 1808 году, который переехал в те места из Вятки, в селе было около трёхсот дворов, занимались там выделкой овчин, земледелием, разведением скота, леплей горшков, красили, сапожничали. До 1860 года жители относились к категории удельных крестьян. После революции село было переименовано в Пушкино, но название не прижилось: к Пушкину оно отношения не имело,
Я специально нашёл в социальных сетях уроженку этого села, чтобы проверить как оно в реальности называется — Ключёвка или Клю́чевка. Оказалось с буквой «ё». Почему её не пишут на карте с настоящим названием— загадка.
И небольшая историческая справка по Дубовке, родине моей прабабушки. Деревня основана в первой половине
Какие графические форматы поддерживает ваш браузер?
Я тут скрипт накидал, который проверяет какие графические форматы поддерживает ваш браузер. Проверяется JPEG, GIF, PNG, XMB, WebP, BMP, SVG, JPEG XR, TIFF, PDF, EMF, WMF, WBMP (Wireless BMP),
Тестируется поддержка в теге IMG.
Любопытно, что «Сафари» до сих пор поддерживает
Дополнение: оказывается, SVG в моем тесте был не до конца верный (я его просто сконвертировал из гифа 1×1
Октябрьский октябрь
У Лебедева в «Идиотеке» сегодня ижевский дорожный указатель «Октябрьский октябрь». Сама ситуация мне напоминает ставшей уже расхожей шутку «у программиста — отлаживать, у лингвиста — откладывать, причём программист понимает, в чём здесь шутка, а лингвист — нет».
Я был в Ижевске и хорошо помню, что Ижевск — столица Удмуртии. А это значит, что у них на территории распространён не только русский, но и удмуртский язык. Вряд ли ошибусь, если предположу, что там два государственных языка — русский и удмуртский (как у нас в Татарстане русский и татарский), следовательное многое дублируется на двух языках.
Когда я посмотрел на этот указатель, я сразу понял в чём дело, только подумал, что в подписи Татарстан будет указан. Это обычная ситуация с дорожными указателями в республиках, где больше одного государственного языка. На указателях пишут два названия —
Так что мне тоже смешно от такого совпадения, но я знаю в чём шутка, а большинство думает, что это
Число π в Библии
Оказывается, в Библии есть упоминание числа Пи. Не напрямую, конечно, но вычислить его можно. В третьей книге Царств, 7:23 написано:
И сотвори море лiяно десять лакотъ от края до края его, кругло окрестъ его: пять лакотъ высота его, и объятiе его тридесять лактей окружаше е окрестъ.
Я специально привёл церковнославянский перевод, потому что синодальный для меня менее понятный.
Давайте вспомним что такое число Пи. В этом нам поможет замечательная картинка из «Википедии»:

Если взять окружность диаметром в единицу, то длина этой окружности и будет числом Пи. Соответственно, если взять окружность диаметром в десять локтей, то длина окружности должна быть 10×π.
Таким образом, чтобы найти библейское число Пи надо поделить длину окружности (тридцать локтей) на диаметр (десять локтей).
Отсюда πбиблеское = 3.
Погрешность довольно существенная, надо сказать. Пи ≈ 3,1415926535897932384626433832795…, получается, что в длине окружности «море лiяно» потеряло почти полтора локтя, то есть примерно 70 сантиметров.
Лошадиная сила
Расчёты Уатта относились к мощности лошади, усреднённой за большое время. Кратковременно лошадь может развивать мощность около 1000 кгс·м/с, что соответствует 9,8 кВт или 33 475 BTU/ч (котловая лошадиная сила). По другим данным — до 15 л. с. в пике.
Я, конечно, понимал, что «лошадиная сила» — это
«Аймобилко» не уверено сколько у меня денег на счету
