40

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

Кстати, меня не устраивает количество книг, которые я читаю. В рамках решения этой проблемы подарил себе на день рождения «Покетбук 641 Аква-2», тем более был промокод на скидку 10%. Помимо этого, запретил себе читать меньше ста страниц в день. Посмотрим, смогу ли продержаться.
17 комментариев
13 сентября 2017 21:59

Подарок от «Яндекс.Диска»

32 гигабайта (48.86КиБ)
32 гигабайта — подарок преподавателям и студентам на первое сентября

Если вы преподаватель или студент, не забудьте получить от «Яндекс.Диска» 32 гигабайта в подарок. Всё что нужно сделать — сфотографировать подтверждающий документ (я сфотографировал пропуск), положить его в облако, ссылку прислать по почте на ящик акции, на странице акции есть все подробности.

Место получил за один день, заявку можно подать до первого декабря. Кстати, акция покрывает учебные учреждения большинства стран бывшего СССР.
7 комментариев
5 сентября 2017 22:27

И ещё находки на газонах

С газонов (104.26КиБ)
Самое интересное — неметаллическое, такое металлоискателем не разыщешь

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

Вверху два «фунфырика» — на том, что слева на дне цифра «3», у правого — 10 (с подчёркнутым ноликом), чуть ниже дощечка от ящика с гильзами под папиросы, надпись на дощечке неполная, читается только «…АНИЧЕСКІЯ ГИЛЬЗЫ ФАБР…» и «42», ещё ниже ручка медного половника с покрытием из жёлтого металла, надпись «GALW.» («GALWANIZACJA») выдаёт польское происхождение, ещё хорошо читается «3р», возможно это стоимость.

Ну и монеты — 3 копейки ранних «советов», зажёваны настолько, что год не разобрать, 5 копеек 1984 и ельцинские 50 рублей.
Комментировать
3 сентября 2017 17:12

Клеймо «НК»

Клеймо «НК» (213.09КиБ)
Тычковое клеймо «НК» в изобилии встречается на здании «Апанаевского подворья»

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

Не пишу я о нём по одной простой причине — новые виды клейм перестали попадаться. Сегодня повезло — на здании «Апанаевского подворья» увидел новое — «НК», причём встречается довольно часто. По соседству с ним — уже известные мне «АС», «ЕК», «ПП».

Официальная датировка (на здании висит табличка) расплывчата — 19 век, могу предположить, что весь комплекс зданий строился постепенно, потому конкретной даты нет. Упомянутые клейма нашлись не на основном здании по ул. Московской, 60, а на том, что стоит сразу за ним справа.

Если идти от хорошо известных «АС» (завод Смирновой Александры Павловны, основанный в 1895, упоминается до 1914 года включительно), «ПП» (купец Панкратьев Пётр Васильевич, завод основан в 1863, упоминается до 1895 включительно), то годом постройки должны быть 1890-е годы.

Клеймо «ЕК», к сожалению, столь однозначно не трактуется, но в противоречие не вступает, на это время основной претендент — Ковалева Екатерина Андреевна (завод упоминается с 1893 по 1916 гг.).

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

Купчиха Копылова Наталья Андреевна упоминается владелицей завода лишь в 1879 году, других упоминаний у меня пока нет; Калугин Николай Иванович (в некоторых источниках отчество обозначено литерой «В») — в 1906—07 гг.; крестьянин Ковалев Николай Андреевич в 1895 году упоминается, но только в той связи, что его завод уничтожен в 1894, а сам он задолжал казне налогов за два года. Ещё раз он упомянут уже в 1900 году как владелец небольшого (на девять рабочих) заводика.
Комментировать
2 сентября 2017 22:40

С ребёнком на Кипр

Детские плавательные трусики (63.97КиБ)
Детские трусики для плаванья

Через три с половиной недели нам лететь на Крит, а я всё никак не опишу опыт путешествия с десятимесячным ребёнком на Кипр. Собственно, десять месяцев вовсе не экстремальный возраст — люди летают и с детьми помладше, но честно сказать, это мало нас успокаивало.

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

Так как даты своего отпуска я не знал до последнего, выбор пал на Кипр — разрешение на въезд туда получается через интернет, визу ставят на границе.

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

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

По городу на близкие дистанции возили в коляске-трости (Бебизен Йо-йо), закрывая её тентом от солнца. Эту же коляску (из-за малого веса и компактности) разрешили взять в самолёт, это удобно — по прилёте можно сразу ребёнка в неё посадить.

На огранизованные экскурсии мы не ездили, с таким маленьким ребёнком это проблематично. Арендовали багги и автомобиль с детским креслом. На первом катались по городу, на втором — между городами. Съездили в два города (Ларнаку и Никосию), при возвращении из второго дочка что-то раскапризничалась, так что в третий, самый дальний (Пафос) мы не поехали.

Водные процедуры дочке понравились, но море быстро надоело, бассейн понравился больше, ещё больше — трава, деревья, цветы, солнышко и, отдельной строкой, поездка на электросамокате — в Айя-Напе, где мы были, вдоль всего побережья идёт велодорожка и развита аренда электросамокатов, на которых по ней можно ехать не один час только в одну сторону.
5 комментариев
1 сентября 2017 23:16

Сёстры Зайцевы и микрофон

Сёстры Зайцевы (32.40КиБ)
Одна из вокалисток российского женского вокального дуэта «Сёстры Зайцевы»

В 90-е в России выступал дуэт сестёр Зайцевых, ничем не примечательный — несмотря на то, что их постоянно тогда крутили по телику, я не могу вспомнить ни одной песни. Запомнились они мне вовсе не вокалом или глубокими текстами, а какой-то нелепой манерой держать микрофон на ладошке.

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

Не понимаю что мешает перевернуть его, взять в кулак и говорить, как в обычный большой микрофон?
7 комментариев
31 августа 2017 00:17

Крещение дочки

Крещение дочки (220.68КиБ)
Групповая фотография с крещения дочки, в центре — виновница торжества

Неделю назад крестили дочку. Друзья и знакомые, когда об этом узнают, недоумевают — знают, что я атеист. Я атеист, да, правда, но это не значит, что я должен относиться к религии как ко злу.

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

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

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

Поэтому, совершенно не усматривая ничего плохого в религии, дочку я крестил даже где-то с радостью — неважно какую дорогу она выберет, атеистическую или дорогу веры, на каждой из них будет кто-то, кто поможет ей эту дорогу осилить.
47 комментариев
19 августа 2017 22:05

Интеллектуальные машины Семёна Корсакова

Перфокарта Корсакова (118.25КиБ)
Перфокарта для интеллектуальных машин Семёна Николаевича Корсакова

Читая анонс книги об изобретениях в Российской Империи, наткнулся на новое для себя имя.

На рисунке вверху — перфокарта Корсакова, который является пионером отечественной кибернетики. Для 1832 года его идеи были настолько передовыми, что комиссия Императорской Академии наук в Санкт-Петербурге не смогла понять их значения, несмотря на то, что председательствовал сам Михаил Васильевич Остроградский — выдающийся российский механик и математик.

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

Суть была подробно описана в его книге «Начертание нового способа исследования при помощи машин, сравнивающих идеи», которую перевели с французского (языка дворянства того времени) и переиздали в 2009-м году, присовокупив биографию Семёна Николаевича.

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

Более сложная система могла так же учитывать значимость критерия — используя цвет или диаметр шляпки штырька.

Современники идею не оценили и о Семёне Николаевиче забыли на долгие годы, а жаль, возможно его работа могла бы намного ускорить появление кибернетики.
3 комментария
19 августа 2017 19:46

Кружка душой из СССР

Новая кружка (78.00КиБ)
Похожие кружки лежали дном вверх в каждой деревне СССР на крышке ведра с ключевой водой

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

Кружка тёплая, лаповая, вызывающая улыбку. От той, что родом из СССР, отличает металл — что-то лёгкое, кажется алюминий, поэтому нагревается моментально, есть такой недостаток, а ещё наверное и мнётся отлично, так что в поход я бы её брать не стал, но главное она у меня не разобьётся.
5 комментариев
15 августа 2017 10:57

Что-то не вижу — быть или не быть?

Программа, выводящая монолог Гамлета (19.86КиБ)
Так выглядит программа, выводящая монолог Гамлета

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

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

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

С тех пор эти инструменты застыли примерно в том же состоянии, но теперь, мне кажется, в этом деле наметился прорыв.

Некто ФейкЮникод, разместил скрытое послание внутри суррогатных пар Юникода. Я когда-то делал что-то похожее на пробелах нулевой длины, но моим способом сильно не разбежишься — алфавит маленький.

Что такое суррогатные пары расписывать не буду, статей на эту тему предостаточно, главное, что их не видно и они могу быть частью (кроме первого символа) любого идентификатора ДжаваСкрипта.

Я попробовал использовать способ с суррогатными парами, чтобы скрыть монолог Гамлета внутри программы на ДжеЭсФаке (способ написания программ на ДжаваСкрипте, когда не используются алфавитно-цифровые знаки), плюс этими же парами закодировал имена переменных.

Получилась адская обфускация, глядя на которую и не заподозришь, что она после запуска выведет в консоль полтора килобайта английского текста.
16 комментариев
13 августа 2017 22:48

F★ckJS на поло

Поло со значками (110.09КиБ)
Поло с программой на ДжаваСкрипте, написанной четыре года назад

Очень в тему к предыдущему посту на работе нашёлся мешок с поло размера XXL (из-за размера и сохранился, остальные разобрали).

На поло программа на ДжаваСкрипте, которую я писал к какому-то событию, должно быть готовились к какой-то конфереции — если её запустить в консоли браузера, появляется надпись «prihodite rabotat 88002005221». У меня в «исходящих» сохранилось письмо от 11 марта 2013 года, где я высылаю оригинал этой программы нашему дизайнеру, четыре года уже прошло, надо же.
2 комментария
8 августа 2017 10:11

Bashfuck-3

Hello world (69.01КиБ)
Очередной «Хеллоу ворлд» на «башфаке» — способе программирования на «баше» без алфавитно-цифровых символов

Вчера весь день болела голова и я, чтобы хоть как-то отвлечься, написал, на ночь глядя, ещё один «Хеллоу ворлд» на «баше» в стиле «Башфак» — три года назад эти увлёкся, тогда остались кое-какие нереализованные идеи.

Цель, напомню, написать программу, которая делает что-то разумное, не используя буквы и цифры.

В свежем варианте самое главное новшевство — использование функций.

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

А вот с функциями веселее, я использовал в именах точки и тире, и закодировал при помощи азбуки Морзе результат работы каждой функции. Например функция, которая генерирует букву «w» называется «.__» (то есть «точка»-«тире»-«тире»).

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

Имя этой команды легко получается из конструкции перенаправления ввода-вывода в специальный файла вида /dev/fd/XX. Получаем имя этого файла, берём буквы «f», «d» и запускаем полученную команду.

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

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

Из всего вышеописанного получились все буквы, кроме «r» и «w». Первую я получил, запустив на выполнение ls /bin/?m — по маске гарантированно находится файл команды удаления /bin/rm, её имя содержит искомую букву.

Для получения второй воспользовался командой «tr» и идеей, похожей на реализацию ROT13 на «баше» — подобрал диапазоны из имеющихся в моём распоряжении букв так, чтобы одна подходящая буква сдвинулась нужным мне образом — стала буквой «w».
1 комментарий
5 августа 2017 23:18

Небольшие новости по всяким программистким мелочам

Принятый коммит (71.85КиБ)
Коммит, принятый в репозиторий модуля для работы с сервером очередей из ПХП

В прошлом месяце я писал о неочевидных проблемах строгой типизации в ПХП, суть в том, что при её включении немного неудобно поменялась проверка типов входных параметров у внешнего модуля для работы с «Гиэрменом» (Gearman) — сервером очередей. Я сделал крошечный патч, который это исправляет, сегодня ночью его приняли.

Кроме того, мой погодный плагин для «Саблайма» приняли в официальный репозиторий, теперь его можно поставить одной командой.
2 комментария
5 августа 2017 11:35

«Жизнь» Конвея на «R»

«Жизнь» (18.72КиБ)
Одно поколение в игре «Жизнь», запущенной в терминале

Игра «Жизнь» знакома, наверное, каждому программисту. Интересна она тем, что этот незатейливый алгоритм оказал существенное влияние на целый ряд научных дисциплин.

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

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

Это можно увидеть почти сразу, в строке, где создаётся матрица случайных значений:
life <<- matrix(as.integer(runif(rows * cols) < ratio), rows, cols)
Сравнение с переменной ratio и вызов as.integer тут применяется к каждому значению из множества, генерируемого функцией runif (Random Uniform Distribution, генерирует случайные значения с нормальным распределением). Так матрица игры заполняется случайными нулями и единицами.

Ниже по коду довольно много манипуляций с этой матрицей и выполнение правил алгоритма за счёт конструкций языка занимает всего несколько строк.

Суть такова: матрица двигается во все восемь направлений (с шагом 45°), все получившиеся матрицы складываются, это позволяет оценить количество соседей любой клетки в каждом из направлений. Далее в две строки выполняются основные условия:
# Any dead cell with exactly three live neighbours becomes a live cell
life.new[life == 0 & life.neighbors == 3] <- 1
# Any live cell with fewer than two or more than three live neighbours dies
life.new[life == 1 & (life.neighbors < 2 | life.neighbors > 3)] <- 0
Тут участвуют три матрицы: life — поле игры на предыдущем шаге, life.new — поле игры на текущем шаге и life.neighbors — матрица соседей (точка в «Эре» не имеет специального значения). Как видите матрица сравнивается с числом, как будто она скаляр, результат этой операции тоже матрица, но из булевых значений, в каждой клетке — результат операции. Такую матрицу можно использовать как индекс, в результате чего вернутся только те ячейки, по адресам которых в булевой матрице было TRUE.

Дальше просто, поскольку ячейки возвращаются по ссылке, им скопом присваивается требуемое значение.
2 комментария
2 августа 2017 11:00

SELECT [DEFER] * FROM…

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

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

Со стороны СУБД было бы интереснее такое увидеть.
9 комментариев
1 августа 2017 18:18