Безо

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

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

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

Тридцать пятый выезд за монетами (открытие сезона)

Результат выезда (62.70КиБ)
Результат выезда и первое серебро в этом году — советские 15 копеек 1923

Первый выезд «в поля» в этом году.

¹⁄₄ копейки 1909 года, серебряные 15 копеек 1923, 2 копейки 1929, 3 копейки 1968, 3 копейки 1980, пуговица «Копейкинъ, 1 сортъ, Peterburg», две «конины» плюс обломок, медаль «За доблестный труд в Великой Отечественной Войне 1941—1945 гг.» (поздний вариант медали), пуговица с рисунком, который уже не разобрать, обломок бляшки ремня, крест-лепесток, медное кольцо, пуля, три гильзы «Remington» 1917 года, гильза «Кайнокъ» (английский производитель) того же года, тульская гильза того же года и три гильзы без маркировки.

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

Ой, Дуся, ой, Маруся

Сравнение фотографий (225.49КиБ)
Фотография Прокудина-Горского (вверху) и кадр из клипа группы «Отава Ё» (внизу)

На днях смотрел новый клип группы «Отава Ё» на песню «Ой, Дуся, ой, Маруся», один кадр вызвал ощущение сильнейшего дежавю. Почти мгновенно понял почему.

16 лет назад я как-то писал о Сергее Михайловиче Прокудине-Горском — российском фотографе, архив которого (1800 пластин) за 1907—1915 год был оцифрован библиотекой Конгресса.

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

Сейчас таких ухищрений, естетственно, не требуется.

Фотографии уже много лет делают сенсацию у свежеподключившихся, а 16 лет назад это было свежо настолько, настолько запало в память, что я не раздумывая понял что вижу в кадре — имитацию фотографии «Крестьянские девушки» 1909 года.

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

Арифмометр «Golden Gem»

Golden Gem (133.65КиБ)
Арифмометр «Голден Гем» с гарантийным талоном до 30 августа 1913 года

Потихоньку двигаюсь к цели — хоть как-то представить в Музее вычислительной техники дореволюционный период, хочется прочувствовать историю.

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

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

На этот раз у меня в руках новый экземпляр для музея — арифмометр «Голден Гем», произведённый нью-йорской компанией «Automatic Adding Machine Co.». С его помощью можно производить четыре обычные арифметические действия, принцип совпадает с арифмометром «Грей Арифмометр Компани» 1940-х годов, который я купил в прошлом году.

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

Существуют несколько модификаций этого арифмометра — машинка была довольно популярной и выпускалась до первой половины 20-го века, реклама 1917 года утверждает, что было продано сто тысяч устройств по $10 каждое. У меня одна из первых моделей — более поздние раскрашены чуть иначе.

На самом устройстве времени выпуска нет (разве что какое-то представление даёт надпись, что ожидаются патенты 1904, 1906 и 1907 годов), но мне повезло — попался экземпляр с гарантийным талоном до 30 августа 1913 года.

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

Про две тыловые камеры в смартфоне

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

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

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

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

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

Сумматор Вебба

Складыватель Вебба (70.97КиБ)
Ранняя модель сумматора Чарльза Генри Вебба, выпущенная между 1868 и 1889 годами

На днях в фонде музея появился экспонат, которому без малого 150 лет — это сумматор Чарльза Вебба. Выпущен он между 1868 и 1889 годами, первая дата — год получения патента на это устройство, вторая — дата выпуска более изящной второй версии устройства, без деревянного основания.

Американский поэт, автор, журналист и изобретатель Чарльз Генри Уэбб родился 24 января 1834 года в Нью-Йорке. Получив начальное образование, в ранней юности убежал в море. По возвращении отправился в штат Иллинойс, куда переехали к тому времени его родители. Затем, с 1856 по 1860 год он занялся бизнесом на берегах реки Миссисипи, позже выращивал пшеницу в Чикаго, участвовал в Гражданской войне в США, а позднее стал банкиром и брокером на Уолл-стрит в Нью-Йорке.

Свою карьеру журналиста Вебб начинал в газете «Нью-Йорк Таймс» в начале 1860-х годов, позже перешел в «Вестник Сан-Франциско», затем редактировал «Калифорнийский» еженедельник и так далее. Он был другом Марка Твена и был известен своей юмористической социальной критикой, опубликовал несколько бурлесков и пьес. Чарльз Уэбб умер в Нью-Йорке 24 мая 1905 года.

Заметка о сумматоре (136.35КиБ)
Мировая пресса регулярно писала об удивительных изобретениях Вебба; статья 1869 года

Как изобретатель он имел несколько патентов, несколько из них — на вычислительные машины, в том числе и на упомянутый сумматор, который назывался просто «The Adder».

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

В комплекте было стило, но оно, к сожалению, не сохранилось, как и прочие элементы комплектации.

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

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

Счастливые билеты

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

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

Результат вычисления в R: (1/pi) * integrate((sin(10*x)/sin(x))^6, 0, pi) = 55252
Вычисление количества шестизначных счастливых билетов через интеграл

Вообще статьи интересные, умели же раньше писать! Кстати, стало интересно насколько сейчас плох старый-добрый перебор на современных мощностях и интерпретаторах. Взял код из своей заметки в блоге, на пятом Перле и ПХП7 — 0,9 и 0,5 секунды соответственно, вместе с запуском интерпретатора.

Вариант на R, который я наскорую написал по мотивам второй статьи из подборки выглядит вот так:

N <- function (n, k) {
    if (n == 1)
        ifelse(k >= 0 & k <= 9, 1, 0)
    else
        sum(sapply(0:9, function (l) N(n-1, k-l)))
}

lucky <- function (n) {
    0 -> s
    for (k in 0:999) {
        N(3, k) -> v

        if (v == 0) {
            break
        }

        s + v * v -> s
    }

    s
}

print (lucky(3))

Выполняется вместе с запуском интерпретатора за треть секунды, если кому-то интересно, чуть медленнее интеграла. Можно было бы переписать его аккуратнее — накапливать значение N, а не вычислять заново каждый раз.

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

Присваивания в R

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

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

Сначала небольшой исторический очерк.

В далёком 1964 году на свет появился язык программирования APL — функциональный язык программирования, предтеча разных там «Матлабов» и иже с ними. Язык вводил для своих нужд целую кучу специальных значков в качестве операторов, так что программисты даже использовали специальные накладки на клавиатуры, либо рисовали спецсимволы фломастерами.

Вот так, например, выглядит на «АПЛе» гиковская игра «Жизнь»:

life←{↑1 ⍵∨.∧3 4=+/,¯1 0 1∘.⊖¯1 0 1∘.⌽⊂⍵}

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

op <- function (..., func) print(get(func)(...))
op(1, 2, 3, 4, 5, func = "sum") # =15
op(4, 2, func = "/") # =2

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

Как видите, символ деления вполне подходит в качестве имени функции, но об этом как-нибудь в другой раз.

Присваивание стрелкой и наличие в языке «равно», которым нельзя присваивать значения переменным, приводило новичков в замешательство, так что под влиянием более современных языков («Си», «Джавы» и так далее) случилось непоправимое — «равно» стало использоваться и для присваивания тоже, что только усугубило путаницу:

# Присваивание переменной «x» значения «1»
x = 1
f <- function(x) print(x)
# Вызов функции «f» со значением «5» аргумента «x»
f(x = 5)
# Вызов функции «f» с присваиванием переменной «x» значения «5»
# и передачей этого же значения в качестве первого аргумента
f((x = 5))

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

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

x = 1
f <- function(x) TRUE
f((x = 5))
print(x) # выведется единица

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

Есть и ещё проблемы. Операции «стрелка» и «равно» имеют разный приоритет и их лучше не использовать в цепочках присваиваний вместе:

# работает, вычисляется справа налево, трактуется как a = (b = 5)
a = b = 5
# работает, вычисляется справа налево, трактуется как a <- (b <- 5)
a <- b <- 5
# выдаст ошибку, так как «стрелка» имеет приоритет выше: (a <- b) = 5
a <- b = 5
# работает, так как «стрелка» имеет приоритет выше: a = (b <- 5)
a = b <- 5

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

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

Опера Бриттена

Новая «Опера» (69.31КиБ)
Скриншот браузера «Опера» — уютно, как дома

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

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

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

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

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

← сюда туда →