Шигирский идол

Читал статью про этимологию слова «поганый» (когда-то это значило «языческий») и вышел по ссылкам на статью о Шигирском идоле — самой древней в мире деревянной скульптуре. Скульптура вырезана из цельной лиственницы в эпоху мезолита — восемь тысяч лет до нашей эры.

То есть она древнее египетских пирамид. А хранится это чудо в Екатеринбурге, в Свердловском краеведческом музее. Шигирский идол (154.44КБ) Когда мы с женой были в Екатеринбурге четыре года назад (прекрасный город, кстати), как раз видели её в этом самом музее (фото выше — оттуда).

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

До наших дней скульптура дотянула только благодаря торфяннику, в котором и была найдена, но всё равно отдельными частями. Причём почти два метра пятиметровой скульптуры были утрачены в годы Великой Отечественной Войны, интересно куда они делись? Может гниют в чьей-то частной коллекции.

Вся скульптура покрыта орнаментом, на широких плоскостях вырезано семь антропоморфных изображений, часть из них — в «скелетном» виде. Кто именно там изображен, естественно, уже достоверно не выяснить, но версии, в основном, вертятся вокруг одного и того же — духи, боги и тому подобное.
3 комментария
14 декабря 2014 21:27

Новый способ воровства PIN-кодов карты


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

Защита от такого сканирования есть — положите ненадолго ладонь на клавиатуру перед уходом (или поставьте пальцы двух рук на все кнопки), тогда различить что именно вы нажимали будет невозможно.
6 комментариев
14 декабря 2014 17:27

Рацпредложение

Разбирал тут старое барахло, раскладывал что выкинуть, что продать, что подарить. Нашёл старые сетевые карты, ещё для коаксиальных сетей. Карты называются «ICL EtherTeam 16i и лежат у меня аж 13 лет. Подарю их музей техники ИТИСа — это казанская высшая школа при Университете, где я немного преподавал. ICL EtherTeam 16i (75.67КБ) Карты той же модели когда-то кучей лежали рядом со мной на подоконнике комнаты в «Иркеннефти», где я тогда работал. Далёкий 1997 год, «Иркеннефть», как и многие огранизации тогда, полностью ушла с ДОСа на «Виндоуз 95», а оборудование, драйверов к которому не было, лежало кучей на складах и подоконниках отдела АСУ.

Для этих карт драйверов под «Виндоуз» тогда не было. И в один из дней, когда у меня было немного свободного времени, изучая как устроены другие драйвера, я обнаружил, что для некоторых сетевых карт используется драйвер ДОС, но со специальным файлом описания, который указывает как работать с ресурсами (портами ввода-вывода, прерываниями и окном памяти).

Несколько дней в паузах между заданиями, я пытался написать такой файл для ICL EtherTeam 16i. После десятков экспериментов и сотни перезагрузок, у меня получилось и я показал подключенную к сети машину, где стояла эта карта и 95-я «Винда» своему начальнику. Рацпредложение (142.14КБ) Так я получил первую и последнюю в своей жизни выплату за рацпредложение. На снимке выше — оформленная стопка бумаг: описание, обоснование, экономическая выгода, свидетельство. Насколько я помню, деньги были невеликие, но как любые деньги, получить их было приятно.
Комментировать
14 декабря 2014 16:19

Казань 1936 год

Казань, Булак, 1936 год (225.35КБ) Казань седьмого мая 1936 года, канал Булак (соединяет в Казани озеро Нижний Кабан и реку Казанку).

Скан Галины Белогорской с оригинального фото. Протока и улица есть до сих пор, правда сейчас улицы название улицы сменилось и она разделилась на две — Лево-Булачную и Право-Булачную, у каждой дома стоят только по одну сторону.
Комментировать
11 декабря 2014 11:43

Село Солдатское

Орловский архив прислал скан книги «Историческое описание церквей, приходов и монастырей Орловской Епархии» (1905 года) со страницами (№№ 287—288) о селе Солдатском, где жили мои предки Широбоковы в начале 19-го века. Солдатское (351.70КБ) Написано следующее:
Село Солдатское.

Приходъ села Солдатскаго расположенъ въ живописной лѣсной и плодородной мѣстности, по высокимъ берегамъ рѣчекъ — Олымчика и его притока — Рогожки. Мѣстность эта лежитъ отъ г. Орла на юго-востокѣ въ 190 верстахъ, оъ уѣзднаго г. Ельца въ 65 верст. и отъ желѣзнодорожной станціи — Тербуны въ 3 верстахъ. Село Солдатскогое получило свое названіе отъ основателя здѣсь деревни съ этимъ именемъ, какого-то солдата, перваго поселенца въ этой мѣстности.

Самое раннее, сохранившееся документально, упоминаніе о селѣ Солдатскомъ относится къ 1777 году. Въ надписи на общемъ земельномъ планѣ государственных крестьянъ села Солдатскаго, помѣченномъ этимъ годомъ, значится и земля „на довольствіе священнослужителей сего села при церкви Димитрія Мироточца.

Къ приходу, кромѣ села, принадлежатъ теперь еще шесть деревень, въ нихъ 648 жилыхъ дворовъ. 2151 душа муж. п. и 2153 жен. п. Существующій нынѣ каменный храмъ построенъ на мѣсто стараго, деревяннаго, который какъ говорятъ, былъ проданъ въ сосѣднее бѣдное село Рогачикъ, Ливенскаго уѣзда. Храмъ трепрестольный, построенъ какъ значится въ клировыхъ вѣдомостяхъ, въ 1815 г. усердіемъ исключительно государственныхъ крестьянъ с. Солдатскаго.

Главный престолъ, въ честь Преполовенія Св. Пятидесятницы, освященъ въ 1819 году; въ томъ же году освященъ и придѣльный престолъ, съ сѣверной стороны во имя св. Димитрія Солунскаго. Придѣльный же престолъ съ южной стороны, въ честь Успенія Божіей Матери, освященъ около 1835 года. Первоначальный видъ настоящего каменнаго храма имѣлъ форму креста.

Въ 1895 году стараніем священниковъ, церковнаго старосты и прихожанъ храмъ былъ расширенъ и получилъ видъ корабля. Иконостасы въ немъ всѣ три новые. Главный обновленъ въ 1891 г., а придѣльные въ 1902 г. Особеннымъ почитаніемъ прихожанъ пользуется икона Скорбящей Божіей Матери, выписанная съ Аѳона въ 1895 году. Притчъ 2-штатный.
2 комментария
11 декабря 2014 11:17

Эбола

От широко разрекламированного вируса Эболы в мире умерло 6000 человек. За 38 лет — открыт он был в 1976 году. Это я просуммировал данные из «Википедии».

По данным ВОЗ за 2012 год в мире умерло:

7,4 млн. — от ишемической болезни сердца
6,7 млн. — от инсульта
3,1 млн. — от хроническая обструктивной болезни лёгких
3,1 млн. — от респираторных заболеваний
1,6 млн. — от рака лёгких, трахеи и бронх
1,5 млн. — от диабета
1,5 млн. — от диареи
1,5 млн. — от СПИДа и ВИЧ
1,3 млн. — в ДТП
1,1 млн. — от гипертонической болезни сердца

Почти 30 миллионов в год против шести тысяч за 38 лет. И никто не паникует.
15 комментариев
10 декабря 2014 19:46

Как работает Bashfuck

Думаю, по горячим следам надо описать как работают мои Bashfuck и Bashfuck-2. Пока ещё сам детально помню.

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

К счастью, переменная с именем, состоящим из одного подчёркивания содержит полный путь к интерпретатору, которым был запущен наш скрипт. Поскольку путь может отличаться, а название интерпретатора — нет, путь надо удалить, оставив только слово «bash». Это делается в обоих случая в первой строке:
# Удаляем из переменной $_ всё до последнего слеша
__=${_##*/}
Теперь у нас есть четыре буквы «b», «a», «s» и «h». Из имеющегося надо как-то получить недостающее. Тут нам помогает следующий факт: можно запускать что угодно, по имени, которое содержится в переменной.

Далее оба скрипта пытаются составить в одной из переменных команду «base64», чтобы передав ей на вход строку, получить недостающие буквы. В самом деле, передавая на вход разные строки и пропуская их по нескольку раз через «base64» команду, можно получить весь английский алфавит:
# bash тут — строка, которую мы уже получили
$ base64<<<bash
YmFzaAo=
$ base64<<<bash | base64
WW1GemFBbz0K
Например, в полученных строках некоторые буквы нам вполне интересны: «Hello world». Но как получить слово base64? С цифрами проще: имея строки разной длины и арифметические операции можно получить нужное:
# Переменная __ содержит слово bash
__=bash
# Очень просто получить цифру четыре: надо измерить длину строки:
$ echo ${#__}
4
# Любым похожим путём получаем двойку, прибавляем к четвёртке и у нас есть 6
$ echo $((${#__} + 2))
6
Поскольку типы переменных «Баш» не особо-то различает, склеить всё остальное труда не представляет. Но нужно ещё откуда-то получить букву «e». Тут дорожки этих двух скриптов расходятся. Первый работает так: составляя из имеющихся букв команду «hash», запускает её и получает следующую строку:
$ hash
hash: hash table empty
Второй действует интереснее. Есть такой синтаксис для команд, которые на вход принимают только файл: можно передать вывод другой команды особым образом и интерпретатор подставит в параметр специальное имя псевдофайла из которого можно прочитать упомянутый вывод.

Если использовать такой синтаксис с любой командой, которая принимает не файл, а строку, то строку и получим (цифры будут меняться от запуска к запуску, остальная строка останется неизменной):
# пробуем вывести на печать
$ echo <(:)
/dev/fd/63
Нам это значение нужно в переменной и с присвоением этот трюк тоже сработет.

В том и другом скрипте нужную букву мы получили и можем собрать нужное имя без проблем. Для этого воспользуемся следующей конструкцией, которая позволяет выбирать подстроки из переменных:
# переменная теперь содержит что-то вроде /dev/fd/xx
___=<(:)
# выбираем третий символ (отсчёт с нуля):
echo ${___:2:1}
Вместо двойки и единицы можно подставить переменные, которые эти числа содержат, либо вычислить их по ходу дела. Во втором примере применяется ещё и другая техника — поскольку некоторые числа из подручных переменных вычислять сложно, я срезаю некоторое количество букв слева и справа, чтобы добраться до нужной буквы:
# переменная, где нужная мне буква в середине слова
v=sed
# так можно средать последнюю букву
echo ${v%?}
# а так —  первую
echo ${v#?}
По большому счёту, это всё. Используется ещё несколько приёмов, но для понимания происходящего осталось пояснить только ещё одну вещь. В четвёртом «Баше», который требуется для работы обоих скриптов, есть ещё такой специальный синтаксис, который позволяет менять регистр букв. Это позвояет не заморачиваться с тем, в каком регистре получаются отдельные буквы и првести всё к нужному ближе к концу:
v='heLLo WORld'
# всё к нижнему (будет hello world)
echo ${v,,}
# только первую —  к верхнему (будет HeLLo WORld)
echo ${v^}
Собранную строку осталось вывести на экран. Для этого в том же коде я попутно собираю из получающихся букв ещё и строку «cat» (что на одну букву меньше «echo», кода получается меньше) и с помощью этой команды получаю нужный результат:
c=cat
v='Hello world'
# Выведет Hello world
$c<<<$v
Можно, кстати, попробовать ещё задействовать функции, благо их объявление алфавитных символов не требует, а их имена могут подержать не только подчёркивания (но и, например, «собаку», что даёт бо́льшую свободу), но третий вариант я уже делать не буду, надоело.
2 комментария
10 декабря 2014 19:44

Bashfuck-2

Попробовал несколько иной способ сбора строки «Hello world» в Bashfuck. Получилось, работает. В предыдущей версии один из читателей жаловался, что у него не запустилось, я тут подумал, что возможно версия «Баша» не та — требуется четвёртая, разумеется.

Вот другой вариант сбора строки:
__=${_##*/} ___=${#__} ______=${__::$(($___-${#___}))} ____=$((${#___}+${#___}))
_____=<(:) ___=$______${_____:$____:${#___}}$(($___+$____))$___
__=${__:(-${#____})}${_____:$____:${#____}} ____=`$___<<<$___|$___`
__=$__${____:$((${#______}+${#__})):$((${#______}^${#__}))} __=$__${__#??}
_______=${____:(-${#__})}
______=`$___<<<$__` __=$__${______#??????} __="${__%?} ${____::$((${#______}/${#__}))}"${__#????}
______=${#___} ____=`$___<<<$____|$___` __=${__%?}${____:$((${#___}+${#___})):$______}
__=${__%????}${_____:${#______}:${#______}} __=${__,,}
_______=${_______::${#______}}${___:${#______}:${#______}}$($___<<<$______|$___)
_______=${_______::$((${#____}/${#__}))};${_______,,}<<<${__^}
Надо будет выбрать время, написать как оно работает.
Комментировать
10 декабря 2014 17:53

FTDNA и Promethease

В начале года я заказывал тест ДНК в компании «Family Tree DNA», в интерпретации результатов компанией, к слову сказать, была ошибка, я ещё напишу об этом, когда история закончится.

Мне ещё тогда в комментариях подсказали сервис «Promethease», который за пять долларов может проанализировать полученные данные и что-то сказать вам по ним о вашем здоровье. К сожалению, ни тогда, ни сегодня заставить работать Promethease с полученными от FTDNA данными не получилось — сервис упорно писал и пишет, что формат ему не знаком.

Пришлось разбираться в чём же дело. В итоге проблему я победил, рецептом делюсь. Во-первых, вам потребуется файл с данными анализа вашей ДНК, я скачал его из раздела FamilyFinder, на скриншоте подчёркнутая красным ссылка внизу: FamilyFinder (22.66КБ) Этот раздел находится на первой странице в том случае, если вы заказывали одноимённый тест.

В этом разделе у меня пять ссылок, я скачал файл по ссылке «Build 36 Autosomal Raw Data» и совершенно без понятия чем файлы по ссылкам различаются и подойдут ли оставшиеся, с этим я ещё не разбирался.

Далее файл надо распаковать, если ваш браузер ещё этого не сделал. Для этого под «Маком» и «Линуксом» можно воспользоваться утилитой командной строки gzip, а под Виндоузом его распаковывать умеет «WinRAR».

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

Как запускать её под Виндоуз я не решусь рассказывать, как-то можно, но я на память не опишу этот процесс, больше пяти лет под этой ОС не работал, на «Маке» и «Линуксе» это делается из командной строки. Полностью процесс выглядит вот так:
# распаковываем архив
gunzip ftdna.csv.gz
# скачиваем утилиту
curl -O https://raw.githubusercontent.com/bolknote/shellgames/master/ftdnato23andme.sed
# делаем файл запускаемым
chmod a+x ftdnato23andme.sed
# конвертируем
./ftdnato23andme.sed < ftdna.csv > 23andme.txt
Получившийся файл 23andme.txt надо залить на Promethease, заплатить пять долларов и минут через двадцать (запросы на обработку данных ставятся в очередь) получите результат. У меня из целая куча «плохих новостей» (так и написано): повышенный риск облысения, 77% вероятности непереносимости лактозы, в три раза выше риск дегенерации мышц с возрастом и ещё ворох подобных «прелестей», «хороших новостей» тоже немало, но там чаще всего «вероятность получения рака простаты не выше нормы» и тому подобное, какие-то поддельные хорошие новости — не радуют.
23 комментария
9 декабря 2014 20:49

Bashfuck

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

JSFuck у меня в блоге был, PHPFuck — тоже, был даже совмещённый в одной программе JSFuck и Brainfuck, почему бы не попробовать сделать то же на «Баше»?
__=${_##*/} ___=${#__}
__=($__ $(${__:$(($___-${#___}))}${__:${#___}:$___}) $__)
____=${__::$((${#__}-${#___}))}${__[$___]::${#___}}${#__[@]}${#__}
_____=$($____<<<${__[@]}) ______=${_____:${#__[${#__}]}:${#___}}
______=${______,}${__[${#_}]:${#___}:${#___}}${__[$(($___-${#___}))]:${#_}:${#___}}
_______=$($____<<<$_____)
____=${__[${#______}]:${#______}:${#___}} ____=$____$____
__=${__[${#_}]:${#______}}${__[$___]:${#_}:${#___}}$____${_____:$((${#__[@]}+${#__[$___]})):${#___}}
__=$__' '${_______::${#___}}${__:$___}${_____:$((${#_____}>>${#___})):${#___}}
__=$__${____:${#___}}${_______:$(($___+${#______})):${#___}} __=${__,,}
$______<<<${__^}
Сказано — сделано, собственно. Программа на «Баше», что выше, выводит фразу «Hello world», её исходники можно свободно скачать с «ГитХаба».
9 комментариев
9 декабря 2014 07:26

Зелёные лёгкие планеты

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

Если коротко, то зелень средней полосы потребляет за свой жизненный цикл кислорода больше, чем производит, потому как огромное количество кислорода требуется для разложения умерших растений. Зелень тропиков едва-едва выходит «на ноль», то есть не привносит никакого кислорода в атмосферу в конечном итоге. Кислород массово выделяется только водорослями, как было на заре жизни.
Из комментария к обсуждению фильма «Интерстеллар» в одном из ЖЖ. Я и раньше, читал, что «зелёные лёгкие планеты» это скорее болота, моря и океаны, чем леса. Кажется, в «Диалогах» Гордона эта тема хорошо раскрывалась, надо будет полистать (у меня четыре книги по этой передаче есть).
10 комментариев
7 декабря 2014 12:56

Каменная баба

Каменная баба (57.19КБ) Просматривая насквозь Бугульминский уезд в книге «Списокъ населенныхъ мѣстъ Самарской губерніи по свѣденіям 1889 года» наткнулся на любопытное описание:
На крестьян. поляхъ есть каменная баба, 1¹⁄₂ арш. вышины; голова представляется повязанною по татарски, черты лица человечѣскія
Любопытно, сохранилась ли эта «каменная баба» до наших времён, может валяется где-то забытая в кустах, ждёт своих исследователей. Полтора аршина — это чуть выше метра. Немаленькая, должно быть, каменюга.
6 комментариев
6 декабря 2014 22:30

Я такой же в бутерброде с икрой хочу!

«Эпл» собирается встроить в «Айфон» «кошачью» логику — при падении смартфон будет стараться приземлиться так, чтобы минимизировать повреждения:
Суть нововведения проста. Эпл хочет внедрить в Айфон систему, которая изменит угол наклона смартфона после падения таким образом, чтобы аппарату был нанесен наименьший ущерб. Для этого используется стандартный вибромоторчик.

Кроме него, в этой умной системе используется ряд датчиков — ГПС, гироскоп и ультразвуковой излучатель, которого в текущих аппаратах Эпл еще нет. С их помощью система определяет траекторию и угол падения смартфона и передает данные на вибромотор, чтобы тот в свою очередь сместил центр тяжести.
пишет «МакРадар». Интересное решение, надеюсь это будет работать. Почему-то у большинства моих знакомых больше всего от падений страдают именно «Айфоны».
13 комментариев
3 декабря 2014 11:43

Язык программирования Scratch

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

Я, для интереса, написал на «Скретче» свои «99 бутылок». Программа на скриншоте. В среде редактирования мы управляем лисёнком и всё программирование крутится вокруг него, куча блоков позволяют что-то с ним делать — двигать, вращать, заставляют его что-то говорить и так далее. «Думать» выводит свой аргумент в «облачке» его мыслей. Скретч (84.30КБ) Программа строится из цветных блоков, цвета кодируют тип блока — «движение», «внешность», «звук», «данные», «управление», «операторы» и так далее. Основные конструкции обычных языков в наличии. Процедур, как таковых, нет, но можно отсылать события другим ээ… подпрограммам и через глобальные переменные получать результат. Есть даже что-то похожее на потоки — передавая события, можно запускать подпрограммы асинхронно.

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

Есть ещё какие-то «Другие блоки», но с ними я не разбирался. Кажется, через них можно как-то расширять язык.
15 комментариев
2 декабря 2014 21:56