Одеть и надеть

Цитата из книги «Справочное мѣсто русскаго слова. Четыреста пятьдесятъ поправокъ, съ руководствомъ къ употреблению буквы Ѣ»:

ОДѢТЬ, НАДѢТЬ. Часто не обращаютъ вниманія на различіе между этими словами. Одѣть говорится о предметахъ одушевлённыхъ ; напр. : одѣть человѣка. Надѣть можно сказать только о неодушевлённомъ предметѣ; напр.: надѣть шапку, надѣть сапоги. Поэтому не должно говорть, наприм. : одѣл шубу ; правильно: надѣл шубу.

1843 года издания книга. 170 лет прошло, никак не научимся правильно говорить!

Там кстати, массу любопытного можно почерпнуть. Язык за 170 сильно изменил свою норму. Навскидку: правильно было «отверзтие», «официяльная», неграмотно было сказать «эта музыка мне так нравится», к слову «так» обязательно было дописать как: «эта музыка мне так нравится, что я невольно напеваю». И так далее.

Автор, кстати, неправ про «надеть», червяка на крючок всё-таки надевают. Но может в 1843 году и одевали.

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

Цифирь

Цифирь (кириллическая система счисления) — система счисления, принятая в Древней Руси и использовавшаяся в России до начала 18 века. В качестве цифр используются буквы кириллицы или глаголицы со специальными значками. Единицы записываются буквами от «а» до «ѳ», десятки — «і» до «ч» (в числовом значении над «і» точка не ставится), сотни — от «р» до «ц».

Надо учесть, что алфавит, использовавшийся для этого был длинее, там были буквы, которых в современном варианте нет, например, 60 это «ѯ», а 800 — «ѿ», да и значения букв со временем менялись, например, когда-то значение 400 выражала буква «(ѵ)» (ижица), позже её заменила буква «у».

Чтобы отличать слова от чисел, использовался знак «титло», ставившийся над предпоследней или единственной буквой числа: «сл҃д» — число 234, для обозначения тысяч применялся специальный знак «҂», например, «҂асл҃д» — 1234. Таким образом можно было записывать не только тысячи, но и десятки и сотни тысяч. «҂ѱ҂а» — это 701 тысяча.

С более крупными числами была небольшая путаница. Их названиями были «тьма», «легион» или «неведий», «леодр», «вран» и «колода». Тут различали «малый счёт» и «большой счёт» — способ записи одними и теми же значками разных порядков чисел. Например, «легион» в малом счёте обозначал сотни тысяч, в большом — триллионы.

«Тьма» обозначала либо десятки тысяч, либо тысячи тысяч (миллионы) и обозначалась буквой, взятой в кружок, «титло» в этом случае не ставилось. Дальше шёл «невидий» или «легион», в малом счёте сотни тысяч, в большом — триллионы и обозначался как буква, взятая в кружок из точек: «҈а». Ещё крупнее был «леодр», в малом счёте — миллионы, в большом — септиллионы (10²⁴), буква в этом значении обводилась кругом чёрточек. Далее шёл «вран» («ворон»), обозначаемый как буква, окружённая запятыми: «҉а», в зависимости от счёта обозначал десятки миллионов или квиндециллион (10⁴⁸).

А самым большим числом была «колода», буква заключалась в квадратные скобки сверху и снизу, справа и слева ставились два ромбика. Обозначало в малом счёте сто миллионов, в большом — десятки квиндециллионов (10⁴⁹).

Таким образом, если бы у нас в 18 веке Сашка Брин Михайлов сын делал национальную поисковую систему, то она, возможно, называлась бы «калода».

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

Фотографии Левицкого

Жил в позапрошлом веке фотограф Сергей Львович Левицкий, в 1839 году приобрёл он дагеротипный аппарат и начал заниматься фотографией. А написал я про него, потому что он сделал фотографии некоторых интересных людей своего времени, которые почитаемы и по сей день.

Русские писатели (124.88КиБ)

Фотография 1865 года, групповой портрет русских писателей круга журнала «Современник»: Гончаров, Тургенев, Толстой, Григорович, Дружинин, Островский. Ну-ка, кто найдёт на портрете Льва Николаевича? Где этот бородатый дед, что смотрел на нас с портрета? Первый слева в верхнем ряду!

Гоголь и римские художники (77.51КиБ)

А это 1845 год, Гоголь в группе римских художников. Узнаёте? Вон он в центре, с тростью! Гоголь с фрагмента этой фотографии смотрел на нас в школе со стен класса литературы. Единственное фото с ним, судя по всему.

Менделеев (91.15КиБ)

А это 1861, Менделеев. Химию любил, обожал, боготворил, но как Менделеев выглядел не помню. Высокий лоб, пышные волосы, хитрый прищур, слишком большой, не по размеру пиджак. Дмитрию Ивановичу тут должно быть 27 лет.

Обожаю старые фото!

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

451 градус по Фаренгейту

451! (60.37КиБ)

Вот я его и увидел в действии. Код HTTP №451, предложенный Тимом Бреем (сотрудником Гугла, автором спецификации XML).

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

Код 451 отсылка к роману Рея Бредбери «451 градус по Фаренгейту», описывающему тоталитарное общество, литература там находится под запретом и пожарные сжигают обнаруженные книги вместе с жилищем, где их обнаружили, а бывших владельцев отправляют в сумасшедший дом.

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

Запомните и цитируйте: «человечество само в себе силу найдёт… даже и не веря в бессмертие души»

Цитата из «Комсомольской Правды».

А самая цитируемая фраза Достоевского: «Если Бога нет, все дозволено». И сегодня хочется повторить: если Бога нет, если нет высших ценностей, то и человека не будет.

Не говорил такого Достоевский. В «Братьях Карамазовых» он писал:

А  слышал давеча его глупую теорию: «нет бессмертия души, так нет и  добродетели, значит, все позволено». (А братец-то Митенька кстати помнишь, как крикнул: «Запомню!»).

Соблазнительная теория подлецам… Я ругаюсь, это глупо… не подлецам, а  школьным фанфаронам с  «неразрешимою глубиной мыслей».

Хвастунишка, а суть-то вся: «С одной стороны нельзя не  признаться, а  с другой — нельзя не сознаться!» Вся его теория — подлость! Человечество само в себе силу найдет, чтобы жить для добродетели, даже и не веря в  бессмертие души! В любви к свободе, к равенству, братству найдет…

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

JS-string decode by Bash

Столкнулся я тут с необходимостью раскодировать строку в том формате, который используется в JSON, т. е. когда символы, кроме латиницы и ещё некоторых знаков кодируются как \uXXXX.

Можно было, конечно, вызвать какой-нибудь нормальный интерпретатор, благо на «Маке» их хватает («из коробки» есть ПХП, Перл, Пайтон, Руби, ещё что-то там), но неспортивно как-то.

Сделал на «Баше» и утилитах командной строки (кстати, легко переделать, при желании, и на «sh»):

:|sed -E '' 2>&- && SED='sed -E' || SED='sed -r'

uNNNNhelper() {
    printf $(echo -n "$@") | iconv -f utf-16be
}

uNNNN() {
    eval $(
        echo -n "$@" |
        $SED '
            s/([^[:alnum:]])/\\\1/g
            s/^/echo /
            s/((\\\\[Uu]....)+)/$(uNNNNhelper \1)/g
            s/\\\\[Uu](..)(..)/\\\\x\1\\\\x\2/g
        '
    )
}

uNNNN 'Hello, \U043C\U0438\U0440!' # выведет «Hello, мир!»

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

Непонятный баг с AJAX в IE8

В процессе переезда одного из наших проектов на новый сервер, Интернет Эксплорер восьмой версии стал выдавать какие-то невнятные ошибки при использования AJAX. К решению проблемы подключили меня, так как сообщение об ошибке совершенно не давало ключа к её исправлению:

Ошибка в IE (3.55КиБ)

В этом месте в коде не было ничего криминального, создание объекта для «аякса», асинхронная посылка запроса и проверка свойств того что пришло. Методом проб и ошибок удалось выяснить, что ошибка возникает при попытке обращения к свойствам «status» и «responseText» (а так же «responseXML», в коде он не использовался, но я просто попробовал).

Промучавшись с полчаса, я догадался переключить IE на работу с объектом ActiveX Microsoft.XMLHTTP, вместо XMLHttpRequest, у первого диагностика получше — ему всё-таки много лет, а XMLHttpRequest в восьмой версии браузера тогда ещё не обкатался.

На этот раз я получил нумерную ошибку (скриншота не сохранилось), по номеру которой я нашёл сообщение на сайте Микрософт, что ошибка связана с неверной кодировкой, пришедшей со стороны сервера. В «Хроме» посмотрел кодировку — оказалось, что кодировка с сервера приходит как «cp1251»:

Кодировка cp1251 (1.55КиБ)

Интернет Эксплорер такую кодировку не понял, один из админов вписал её руками, поскольку при смене версии ПХП заменили сервер FastCGI на php-fpm, стоило сменить эту кодировку на «windows-1251» как всё заработало.

Видимо, встретив странную кодировку, IE не смог понять как ему читать то, что пришло, он вообще не заполнил некоторые свойства, а объект, попытавшись получить к ним доступ, не понимал в чём дело и выдавал пустую ошибку, которая и символизировала это «я не понял что произошло».

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

Будущее наступило!

Прошивка для электронных сигарет (79.83КиБ)

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

Но новая прошивка для электронных сигарет? Что-то новенькое совсем. Уже три версии там вышло. Видимо, скоро авторучки начнут качать прошивки или пуговицы, к примеру.

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

ROT13 и ROT47 в Bash

Неожиданно сообразил, что функции ROT13 и ROT47 очень просто делаются в командной строке:

# Это ROT13, «крыша» превращается в «отливы»:
$ echo roof | tr n-za-mN-ZA-M a-zA-Z
ebbs

# А это ROT47, «привет» превращается в чёрт знает что:
$ echo Hello | tr '!-~' 'P-~!-O'
w6==@

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

Всякая мелочь одним постом-11

В связи с недавней войной «Литреса» с приложениями для чтения электронных книг, высказался Леонид Каганов. Леонид предлагает новую, для меня, точку зрения на ссылки:

Сетевая общественность встала горой на защиту (…) и кричит, что за ссылку нельзя никого наказывать, потому что это всего лишь ссылка. А ссылка — это самое святое, самое безобидное и самое невинное, что только может быть. (…)

При этом особенно смешно, что в этой истории никто и не стал бороться с «нарушителем» — у китайского разработчика по-прежнему есть сайт, где приложение по-прежнему можно скачать, а Гугль просто убрал ссылку в базе приложений своего магазина. Ту самую ссылку, которая «ничего не значит», «ни на что не влияет», и вообще «пустяк» — как нас только что уверяли те же самые люди. (…)

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

В ЖЖ статья «Опять двойка» рассказывает об ошибках, которые допустила Студия Лебедева, оформляя косметическую марку «Воши-воши». Собственно, из 17 товаров, 12 с ошибками:

Kiba — Солнце На самом деле это, в зависимости от иероглифов, «склад пиломатериалов», «верховая езда» или «клык».

Seykazu — Ощущение жизни Нет такого слова. Возможно, имелось в виду «seikatsu» (生活 сэйкацу), но это не «ощущение жизни», а «быт» — почувствуйте разницу.

Xateu — Волна Чёрт знает что такое, телепатия в этом месте сломалась. В японском не то что слов — слогов таких нет, а «волна» будет «nami» (波 нами).

На сайте БиБиСи-ньюз статья «Archive body starts debate on smiling for photographs» (на английском языке) об улыбках на фотографиях. Оказывается улыбки на совсем старых фото — неимоверная редкость. Нужно было застывать в одной позе довольно долго и непринуждённо улыбаться всё это время — занятие не из простых. Так же в статье рассматривается вопрос когда же люди начали улыбаться на фотографиях, в какое примерно время это прозошло и когда это стало автоматической реакцией со стороны фотографируемых.

Чудеснейшая статья «Движение против ГМО: взгляды, заблуждения» о том как надо отвечать на вопросы людей, которые почему-то боятся ГМО:

«ГМО по определению не могут быть безопасны потому, что любое вмешательство приводит к появлению организмов с неизвестными свойствами»

В каждом виде живых существ из поколения в поколения происходят новые мутации. Например, у человека происходит около 50 новых точечных мутаций за поколение. Кроме новых мутаций, при половом размножении происходит рекомбинация (обмен участками ДНК на гомологичных хромосомах), а также образуются новые комбинации существующих аллелей генов за счет того, что потомок наследует половину диплоидного набора хромосом от отца и половину от матери. В этом смысле любой акт полового размножения приводит к «появлению организмов с неизвестными свойствами» и те опасения, которые Ермакова предъявляет в адрес ГМО можно с тем же успехом предъявить практически к любому организму.

И напоследок статья Стелазина «Цирк дрессированных демонов имени Корбиниана Бродмана — Ксенофобия»:

Отчего это мы такие злобненькие? Упомянутый Gat отвечает на это в том духе, — «отчего кот яйца лижет? — оттого, что может». В дикой природе взрослое животное не может нанести серьезного вреда другому животному даже при желании. Голыми руками вы вряд ли способны убить человека, во всяком случае сильно умаетесь, это невозможно проделывать регулярно и помногу. Поэтому межгрупповые конфликты людей ничем принципиально не отличается от межгрупповых конфликтов шимпанзе, просто у человека появились новые возможности.

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

A new hop

У Дмитрия Радищева (DiBR) в ЖЖ увидел. Попробуйте набрать в консоли

traceroute -m 100 216.81.59.173

Подождите, пока сигнал выйдет за пределы вашей сети и наслаждайтесь! Для Виндоуз команда будет выглядеть так: «tracert -h 100 216.81.59.173».

Если хочется прочитать без лишнего мусора, то я вот такой вариант сделал (это под Виндоуз уже работать не будет):

traceroute -m100 -q1 216.81.59.173 2>&- | awk '/pisode/{_=1}{if(_)print$2}' | tr . ' '

Пам-пам-пам, пам-папам, пам-папам!

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

/dev/random

В комментариях мне вопрос задали — откуда в компьютере взяться случайным числам. Казалось бы — там же всё детерминированно. С одной стороны — да, с другой стороны…

Помню, в «Спектруме» (это компьютер, на котором я работал больше всего в детстве), в Бейсике, был оператор RANDOMIZE — инициализация генератора случайных чисел. Если вызвать его с каким-то фиксированным параметром, то генератор (его значения выдавала функция RND) возвращал всегда одну и ту же цепочку чисел. Так у многих языков устроено:

bolk@Bolk /$ php -r 'mt_srand(1); echo mt_rand();'
1244335972
bolk@Bolk /$ php -r 'mt_srand(1); echo mt_rand();'
1244335972

Если же вызывать RANDOMIZE без параметров, то его значение инициализируется текущим временем. Это уже лучше, потому что в данном случае элемент случайности вносит сам пользователь — как просчитать когда он запустит программу? Какое будет время на часах? На «Спектруме» отследить запуск программы не получится, а без этого нельзя ответить на вопрос какое значение выдаст генератор случайных чисел.

Но на компьютерах посложнее, например, на том, с которого вы сейчас это читаете, отследить запуск проще простого, посмотреть в этот момент на часы — ещё проще. Что делать? Значит надо собирать больше «шумов» окружающего мира.

Какие «шумы» может собирать компьютер вокруг себя?

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

Что делать, когда пользователь пошёл налить себе кофе? Вполне можно использовать шумы внешнего мира. Шумы в прямом смысле, с микрофона послушать что там снаружи происходит — окружающие звуки или просто шумы аудиотракта в отсутствие микрофона. Можно глянуть, что там бегает по сети — широковещательную активность других пользователей. Что ещё? Мало ли у компьютера датчиков? Например, можно смотреть что у нас там на с температурой на процессоре, которая зависит и от температуры в комнате, и от собственных шумов схемотехники датчиков.

Вот как выглядят показания температурных датчиков на моём ноуте, снимаемые каждую секунду:

Температурные датчики на «Маке» (12.60КиБ)

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

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

В юникс-подобных системах есть специальный файл, лежащий в каталоге «/dev» — «random», обращение к нему как раз возвращает данные из этого буфера. А что будет, если данные в буфере кончаются? Посмотреть мне сейчас негде, я в машине, в пробке это всё пишу, а мобильный интернет какой-то медленный сегодня, но насколько я помню, процесс, читающий из «/dev/random» будет просто ждать появления данных. На случай, если вам ждать не хочется, есть другое устройство — «/dev/urandom», которое будет отдавать менее случайные числа, если кончились случайные, такой вот недостаток.

Под занавес, наверное нужно прояснить — для чего нужны такие «суперслучайные» числа. Ну, казалось бы, инициализируем временем и все дела, для чего использовать какие-то датчики, устраивать весь этот джаз? Нужно это всё для криптографии. Если случайные числа на вашем компьютере можно будет предугадывать, то можно будет просматривать и вносить изменения в зашифрованное соединение с сайтом вашего банка, вашей почты и так далее. Потеряют надёжность сгенерированные вами сертификаты и тому подобное.

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

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

Интернетизация Татарстана

Слушаю прямой эфир c Коллегии Мининформсвязи РТ по итогам 2012г. и задачам на 2013г. Интересную цифру услышал: 2,6 миллиона человек в нашей республике имеют доступ к интернету. При этом население у нас 3,8 миллиона. Это неплохой показатель, мне кажется.

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

Антипаттерн: useless cat

Есть такой антипаттерн программирования в командной строке как useless cat. Переводится не «бесполезная кошка» (хотя для смеха можно переводить и так), а как «бесполезная [команда] cat».

Несмотря на то, что многие команды — awk, sed, cut и прочие умеют самостоятельно читать из файла, программисты почему-то стараются передать им данные через пайп, используя cat. Это загромождает код и неэффективно, ведь cat это не просто команда, это программа, которая располагается на диске в директории /bin, её шеллу ещё запустить надо.

# неправильно:
cat /etc/passwd | cut -d: -f1

# правильно:
cut -d: -f1 /etc/passwd

Если команда не умеет принимать имя файла в качестве параметра, то и в этом случае cat не нужен, достаточно воспользоваться перенаправлением. Тут могут быть детали, так как синтаксис перенаправления гораздо богаче, чем используемое в 90% случаев простое перенаправление из файла и в файл и размер этого богатства разный в разных шеллах, я приведу пример для bash:

# плохо (пример для bash):
cat /etc/passwd | read firstline && echo $firstline

# можно так (такой синтаксис bash поддерживает не в полном объёме):
</etc/passwd read firstline && echo $firstline
# лучше так:
read firstline </etc/passwd  && echo $firstline

Вообще, стоит изучить внимательно синтаксис перенаправлений, потому что он позволяет делать такие вот вещи без лишних команд (опять bash):

# читаем файл /etc/passwd в массив, разделители элементов в файле — двоеточие
IFS=: passwd=($(</etc/passwd))

# читаем первые десять байт из последних десяти строк файла /etc/passwd
dd bs=1 count=10 if=<(tail -10 /etc/passwd) 2>&-

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

Полезная «кошка»

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

Я приведу те, которые одинаковы у меня в «Маке» и на Линуксе, в моём смартбуке:

# вывести и пронумеровать все непустые строки
cat -b /etc/passwd

# вывести, включая непечатаемые символы (в нотации «^» и «М-»), в конце строки вывести «$»
# (зачем нужен в конце доллар я не знаю, видимо какой-то очень специальный случай)
cat -e /etc/passwd

# вывести, нумеруя все строки
cat -n /etc/passwd

# вывести, заменяя идущие подряд пустые строки на одну
cat -s /etc/passwd

# вывести с непечатаемыми символами, преобразуя табуляцию в «<i>^I</i>»
cat -t /etc/passwd

# вывести, включая непечатаемые символы (в нотации «^» и «М-»)
cat -v /etc/passwd

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

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

Две Wi-Fi-карты

У вас не было такого, вы сидите в аэропорту, ещё три часа до вылета, делать нечего, доступно несколько открытый сетей вайфай, а скорость на той, к которой вы подключены всё время скачет? Приходится время от времени проверять как дела у «соседей», не лучше ли скорость на них?

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

Наверное был бы интересен и другой сценарий. Например, доступно две вайфай-сети. В одной высокая скорость, но работает только веб, во второй скорость так себе, зато открыты все протоколы. Я бы хотел подцепиться к обеим, чтобы через первую бродить по сайтам, а через вторую подключить джаббер или войти куда-то через SSH.

Жаль, что производители ноутов до этого не додумались. Чипы-то копейки стоят.

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

О̷п̷е̷р̷а̷

«Опера» устала бороться, похоже:

Все наши новые продукты будут использовать движок WebKit для рендеринга и V8 для обработки JavaScript. Они будут основаны на опенсорсном браузере Chromium и его компонентах. Конечно же, браузер — это гораздо больше, чем просто движок, поэтому все эти перемены для обычных пользователей произойдут где-то далеко под капотом. Такие пользователи заметят только улучшившуюся совместимость с сайтами, особенно мобильными, большинство из которых были как следует протестированы только в браузерах на WebKit.

Я бывший фанат «Оперы», собственно, я испытал к этому продукту всю гамму чувств: от ненависти до фанатизма. И хотя сейчас я придерживаюсь очень спокойного к нему отношения, мне всегда нравилась эта норвежская компания, которая несмотря на трудности, всё-таки пыталась завоевать своё место под солнцем. Это требовало от компании очень неординарных решений, от спорных (вроде клиента «аськи» в браузере), до гениальных находок (например, speed dial стал, фактически, стандартом).

Но бо́льшую часть времени я был яростным фанатом их браузера и сохранил к нему доброе отношение. Очень жаль, что «Опера» покидает нас как самостоятельный браузер, но, надеюсь, что с использованием чужого движка, она не растеряет свою энергию и креативность.

В новости есть упоминание, что «Опера» будет теперь участвовать в разработке движка «Вебкит», хочу пожелать им удачи!

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

Протокол «jar» в FireFox

К сожалению, не удаётся сейчас найти эту статью, но я где-то читал около года назад про чьё-то предложение добавить в браузеры поддержку многофайловых архивов, даже какой-то черновик стандарта будто бы был. Хорошая ведь мысль — поместить несколько ресурсов (картинок, например), в архив и загрузить в браузер одним файлом. Например, можно было бы это использовать вместо ЦССных спрайтов.

Я тогда ещё подумал, что ведь уже есть один браузер, который уже это умеет — это «Файерфокс». У него есть протокол «jar», который ровно это и делает: позволяет адресоваться внутрь зип-архивов. Вообще, JAR расшифровывается как Java ARchive и предназначен для распространения программ и компонентов, написанных на языке Джава, но обычный зип-архив с файлами внутри.

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

Итак, адрес с протоколом jar выглядит следующим образом:

jar:/files/jartest.jar!/foto.jpg

Первая часть урла представляет любой адрес, по которому можно скачать архив (тут могут быть использованы протоколы http, https, file, ftp, но почему-то не data), вторая часть — путь до файла внутри архива, можете посмотреть у меня в разделе «Храню» пример как это всё работает, открывать, естественно, нужно в «Файрфоксе».

Код работы с jar (33.53КиБ)

Как видите, я поместил внутрь архива часть ЦСС и две картинки, одну из которых поставил задним фоном. Причём, как и в случае обычного урла, протокол по которому загружается ресурс можно опустить (часть «http», в данном случае), будет использован текущий протокол.

Но есть и бочка дёгтя. С пустым кешем или после обновления страницы архив грузится один раз, но если сделать полную перезагрузку страницы (⇧+⌘+R или шифт+контрол+R в Виндоуз), то загружается он столько раз, сколько раз ресурсов грузится на странице. Видимо, какой-то баг.

Ресурсы грузятся заново (10.46КиБ)

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

Эффект Даннинга-Крюгера

Цитата из «Википедии»:

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

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

Результаты экспериментов, подтвердивших выдвинутую гипотезу, были опубликованы в англ. Journal of Personality and Social Psychology в декабре 1999 года

Это многое объясняет.

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

Современный BIOS

EFI BIOS (98.48КиБ)

Давненько я БИОСов не видел. Вот как, оказывается, они сейчас могут выглядеть. Без мыши там по меньшей мере неудобно, насколько я понял.

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

Церковь «Гамма-Сервиса» в Волгограде

Зимний городской пейзаж: многоэтажные здания с магазинами, церковь с золотым куполом, припаркованные машины и снежная дорога на переднем плане.
Домовая церковь ЗАО «Гамма-Сервис» во имя иконы Божьей Матери «Призри на смирение»

Я тут на выходных в Волгограде был по делам, а пока ехал на вокзал, проехал мимо нескольких интересных мест города. Конечно, Родина-мать в Волгограде (бывший Сталинград) впечатляет, но её только ленивый не сфотографировал.

Случайно проезжая мимо на такси, сфотографировал домовую церковь ЗАО «Гамма-Сервис» во имя иконы Божией Матери «Призри на смирение», построенную в 1996 (1998?) году. Очень уж необычная, обратил внимание, успел опустить стекло и щёлкнуть смартфоном.

Находится на улице 7-й Гвардейской Дивизии, дом 4а, еле-еле нашёл на карте по названию «Гамма-Сервис» на переднем плане.

Церковь действительно построена между домами, как пристрой к зданию, которое справа.

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

Сленг маздай

Удивительно, программист — очень молодая профессия, а уже есть сленг, который «вышел из моды». Никто уже не говорит «хомяк», «сакс» (вариант: «суксь»), «маздай» и «рулез» почти не слышно. Меня, кстати, эти слова сейчас заставляют морщиться, как будто я слышу что-то анахроническое. Подозреваю, что есть целый пласт сленга, который умер с выходом на пенсию первых поколений программистов, тех, для кого перфоленты и перфокарты были не забавным артефактом из прошлого, а рутиной.

Из совсем незнакомых новым поколениям слов, я помню: «приайсованный» (сжатый архиватором ICE), «аржёванный» (сжатый архиватором ARJ), «дисплюй» (дисплей), «карга» (монитор CGA), «яга» (монитор EGA), «ХаТэ» (IBM PC XT), «долбило» (программа-dialer), «теклада» (клавиатура), «коксовать» (прокладывать коаксиальный кабель, на нём строились сети до витой пары).

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

Тёплое с мягким

Часто сталкиваюсь с тем, что Марка Цукерберга (Закерберга) называют гениальным программистом, а Анатолия Вассермана — умным человеком. Кто-нибудь может мне сказать где Марк проявил себя как гениальный программист, а Анатолий Александрович показал свой ум?

Я бы скорее назвал Марка предприимчивым, а Вассермана — эрудированным. Может я просто каких-то фактов не знаю?

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

Пацакку

Скриншот страницы с описанием вируса Virus.DOS.Pacaku.1120: время обнаружения и обновления — 28 апр 2000, другие названия от Лаборатории Касперского, ClamAV, Panda, DrWeb.
Пацак.Ку

Далёкие дни, Университет, вирус «Пацакку». С большим трудом припоминаю, что это был простой, написанный на Ассемблере вирус для ДОСа, который в день моего рождения выдвигал шторку сидирома (если он есть) и печатал на принтере (кажется; или в корень клал файл, или то и другое, не помню) фразу «в обществе где нет цветовой дифференциации штанов, нет и цели», цитату из любимого моего фильма «Кин-дза-дза!». Судя по названию, данному в Лаборатории Касперского, там где-то были фразы «пацак» и «ку», но я помню это как-то туманно.

Кстати, в Университетe самодельных вирусов хватало. Особенно мне запомнился вирус «TV» (был так назван моим тогдашним другом А.Г. из-за того, что проверял своё содержимое в памяти по этим двум байтам, записанным по определённому адресу), который доводил студентов до истерик — он менял местами действие клавиш «Esc» и «Enter». Когда программа спрашивала «Сохранить?» на выходе, студент жал «энтер», на самом деле нажимался «эскейп» и вся работа за день терялась.

Тогда же я придумал свой первый антивирус, который назвал просто «Вакцина» (файл запуска — «vac.com» или «vac.exe», не помню точно размер), «вакциной» он назывался вполне заслуженно, так как именно вакцинировал компьютеры. Это была одна из двух утилит, которые сильно упрощали мою тогда лаборантскую жизнь. Принцип действия был следующий.

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

Вирус, запущенный на таком компьютере, думал, что он тут уже есть и не заражал машину. Кроме того, моя вакцина предупреждала о попытке заражения вируса при вызове этих самых функций. У вакцины был ещё встроенный монитор перехвата вектора 13h, который использовали более серьёзные функции, принцип был подсказан тем же А.Г. — если обработчик 13h, при запуске моей программы, был не в БИОСе (а адреса его были известны), так же поднималась тревога.

Если честно, я смутно помню, что принцип был чуть хитрее, но в чём была тонкость, не помню. Если вспомню, расскажу.

Позднее я придумал и начал писать конфигуратор на Турбо Паскале, но так и не дописал, терпение кончилось на интерфейсе.

У моего антивируса было несколько достоинств: он ловил все тогдашние студенческие поделки, ходившие в нашем Университете, включая мои собственные, ну и просто популярные вирусы того времени, он был бесплатен и быстро обновлялся, был крошечным, не жрал ресурсы компьютера (что было особенно актуально в нашем компьютерном классе на IBM XT, там процессоры были 8086 и даже «Нортон» работал медленно) и предотвращал заражение, а не просто поднимал тревогу, когда вирус уже внедрился, т. е. лечить такой компьютер было не нужно, что было очень актуально в случае печально известного вируса «Чернобыль», эпидемию которого в своих классах я быстро пресёк на корню.

И раз уж у меня сегодня рубрика «воспоминания в утренней пробке», расскажу как лечили порчу вирусом «Чернобылем» БИОСа. Лечил всё тот же А.Г. Поражённый компьютер вскрывался, в него ставился такой же чип БИОСа с другого компьютера (напоминаю, дело в компьютерных классах было, когда я лаборантом работал в Университете, там было много однотипных машин), компьютер загружался, обычной программой для прошивки БИОСа с чипа списывалось его содержимое (или оно, как вариант, бралось из интернета), потом наживую чип доставался и вставлялся испорченный, после чего пациент перепрошивался правильной прошивкой.

Кстати, мне «повезло» учиться и лаборантить в классах где стоял весь зоопарк: 8086, 80286, 80386 и даже бездисковые станции, которые грузились по сети, настоящие (тормозные) тонкие клиенты с утилитами Новелла.

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

Вычисление без единой инструкции процессора

Это очень круто, цитирую почти полностью:

Авторы продемонстрировали, что механизм трансляции адресов на архитектуре x86 обладает полнотой Тьюринга, т. е. с его помощью можно реализовать любой алгоритм. С помощью хитрой настройки различных контрольных таблиц, которыми пользуется процессор, они вводят процессор в состояние, в котором он не может выполнить ни одной инструкции, т. к. непрерывно происходят исключения, но разные исключения в зависимости от приготовленных данных — и таким образом процессор вычисляет!

Известно, что одной инструкции условного перехода по вычитанию (вычисли a=a-b, и если это меньше или равно нуля, перейди в c) достаточно для Тьюринг-полноты. В этом хаке такая инструкция симулируется с помощью последовательности page faults (от невозможности загрузить данные), которая заканчивается double fault (когда указатель на стек уменьшается ниже нуля).

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

У всего этого даже есть практические применения, правда, в области, которая ничего хорошего и полезного миру не приносит — обнаружение того, что программа бежит под отладчиком или в виртуальной машине.

Таким образом вычисление происходит без единой инструкции процессора! Речь идёт о проекте trapcc, на Ютьюбе есть видео, где запущена известная игра «Жизнь», запрограммированная таким способом (код специально адаптирован под эмулятор Bochs).

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

Всякая мелочь одним постом-12

В ЖЖ появился перевод статьи автора ЭксКейСиДи «Что произошло бы с Землей, если бы в нее врезался алмазный метеорит 30-метрового диаметра, летящий со скоростью света?».

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

Алмазный метеорит и каскад частиц, созданный им при столкновении с корой распространятся по всему телу планеты. Сверхперегретая Земля будет светиться ярче чем Солнце.

Импульса бы хватило, чтобы столкнуть Землю с орбиты, но Земли больше нет. Выделившаяся энергия в десять тысяч раз больше гравитационной энергии связи, так что планета разлетится в виде облака плазмы, с особенно мощным потоком, исходящим из зоны, противоположной точке импакта.

Солнце пульсирует и вспыхивает, поглощая волны мусора. Поверхность Марса и Венеры выжжена потоками невероятно высокоэнергичной плазмы.

«Компьютеры в СССР» — фотографии советской вычислительной техники. Кое-что из представленного я ещё успел застать. Например, накопитель на магнитных дисках, размером с торт, я видел в Лениногорском вычислительном центре, когда мы там были там на экскурсии, центр был на грани закрытия, но всё ещё существовал.

Статья «Личный опыт. Мой „Человек дождя“» — рассказ матери о сыне-аутисте, родившимся и выросшим в СССР.

А когда ему было года 4—4,5, выйдя со мной из трамвая, он вдруг произнес с пафосом: «Граждане! Контроль общественности — необходимое условие успешной эксплуатации вагона трамвая без кондуктора». Я так и обомлела: «Откуда ты это взял?» — «Прочел в трамвае на стенке». — «Так ты читать умеешь?!» — «Умею». А я помнила, с каким трудом учила читать своего старшего племянника, мальчика неглупого и, как потом выяснилось, талантливого. А этот?! Сам! Гений!

«История изобретений: Анестезия» о первой операции (в европейской цивилизации), проведённой с анестезией:

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

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

«Человек-ящерица» — статья моей знакомой, о редком заболевании, ихтиозе, с которым она живёт с самого рождения:

— А чего у тебя руки помятые? ——спрашивает меня 5-летняя дочка подруги, будучи у нас в гостях. Подруга давится чаем. Мы давно и крепко дружим, но мои необычные руки никогда не обсуждались. Ей, кажется, неловко за свою дочь, которая вопросом может меня ранить.

— А я их постирала, и погладить не успела. Зато сделала маникюр, смотри, какой красивый лак! Такого же цвета, как камушек в колечке, — я улыбаюсь ребёнку и смотрю на свои руки.

Да, выглядят они не очень. У меня — ихтиоз. Моя кожа сухая и тёмная, в трещинах. Похоже на змею, и на мятую ткань тоже, пожалуй.

И под занавес — прекрасные фотографии Чебаркульского метеорита, взорвавшего в небе над Челябинском.

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

Суровые русские

В связи с падением метеорита и новой волной шуток про суровый Челябинск, которые «ставят метеорит на девять утра, чтобы не проспать», я подумал, что «бренд» суровости неплохо бы распространить на всю Россию и «продать» на Запад.

Т. е. осозанно создавать о русских ощущение суровых людей, которым непочём морозы, метеориты и другие жуткие условия, в которых им приходится жить. Причём, не выживать, а жить, едва замечая эти суровые условия — в силу природной суровости. Причём именно природной, а не приобретённой распитием водки.

Пусть будет Россия — холодная, хмурая страна, где 11 месяцев в году лежит снег, а летом, в августе, он тает и у нас стоит жара, по русским меркам — +2 градуса. Только не нужно медведей, балалаек и сельских домиков, пусть это будет технически продвинутая суровая страна, с хорошей военной техникой, наукой и суровыми неулыбчивыми людьми, которым -20 — лёгкий морозец, а 20 километров пешком по этому морозу — небольшая прогулка.

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

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

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

Противный утёнок

Я знаю кое-что об Андерсене, он был странным паренем… И очевидно, что «Гадкий утёнок» — аллегория гея, он был геем. Никто не знает, что в оригинальной концовке утёнок уходит в музыкальный театр. Но это и так очевидная притча о гее.

Мира Сийал в передаче «КюАй» со Стивеном Фраем (третья серия первого сезона).

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

Дьяк и дьякон

Никогда не различал слова «дьяк» и «дьякон», думал, что оба имеют отношение к церкви. Оказалось, нет.

Дьяк — пришло из греческого («диаконос», διακονος — служитель), это секретарь приказа (органа госуправления в Москве), т. е. это чиновник.

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

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

Макулатура

Макулатура (89.18КиБ)

Очень хорошо помню как в школе мы собирали макулатуру, это обычно не только общественной нагрузкой, но и выгодным делом. Хорошо помню, что я сдал макулатуру и дотянул до подарков маме и папе, кажется это какие-то шампуни были, их в школе выдавали за какое-то количество килограмм. Макулатуру собирали по незнакомым людям, мы с моим одноклассником брали санки и просто ходили по дворам вокруг школы — звонили во все двери в подъездах и собирали бумажный мусор. Причём, многие жильцы собирали старые газеты в ожидание таких визитов, я помню эти подготовленные вязанки с газетами.

Отдельной строкой хочу сказать, что о маньяках или педофилах тогда страна и не слышала и что кто-то может похитить ребёнка — в голову не приходило. Во-первых, зачем человеку это непонятно, во-вторых, найдут же 100% и накажут так, что мало не покажется. Такое ощущение, по крайней мере было.

И вот мне очень нравится инициатива нашего ТСЖ собирать бумажный мусор — около главных ворот есть специальная клеть, куда можно кинуть коробку от бытовой техники, газету и прочее подобное. ТСЖ это всё сдаёт и выигрывает из этого какую-то копеечку. Очень хорошо, на свете стаёт меньше мусора и больше деревьев.

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

← сюда туда →