Безо
С употреблением «без» там где нужно «безо» то же — сейчас слышу и вижу везде и очень страдаю.
Тридцать пятый выезд за монетами (открытие сезона)
Первый выезд «в поля» в этом году.
¹⁄₄ копейки 1909 года, серебряные 15 копеек 1923, 2 копейки 1929, 3 копейки 1968, 3 копейки 1980, пуговица «Копейкинъ, 1 сортъ, Peterburg», две «конины» плюс обломок, медаль «За доблестный труд в Великой Отечественной Войне 1941—1945 гг.» (поздний вариант медали), пуговица с рисунком, который уже не разобрать, обломок бляшки ремня,
Ой, Дуся, ой, Маруся
На днях смотрел новый клип группы «Отава Ё» на песню «Ой, Дуся, ой, Маруся», один кадр вызвал ощущение сильнейшего дежавю. Почти мгновенно понял почему.
16 лет назад я
Архив самоценен, но примечательно ещё и то, что Сергей Михайлович использовал хитрое устойство, представляющее из себя, по сути, три фотокамеры, снимающие через разные светофильтры — красный, зелёный и синий. Демонстрировали получившееся через специальный проектор — свет проходил через все три изображения, окрашивался и совмещался на одном экране, получалось цветное изображение.
Сейчас таких ухищрений, естетственно, не требуется.
Фотографии уже много лет делают сенсацию у свежеподключившихся, а 16 лет назад это было свежо настолько, настолько запало в память, что я не раздумывая понял что вижу в кадре — имитацию фотографии «Крестьянские девушки» 1909 года.
Арифмометр «Golden Gem»
Потихоньку двигаюсь к цели — хоть
Большинство экземпляров у нас родом из позднего СССР, это время моего детства. Подозреваю, что на шкале времени студентов, для которых и работает музей, Советский Союз и динозавры сосуществуют
А уж гаджеты того времени — просто два в одном. Мой интерес к истории очевиден, а кроме этого я ещё и гаджетоман, хотя старательно из себя это вытравливаю.
На этот раз у меня в руках новый экземпляр для музея — арифмометр «Голден Гем», произведённый
Эта машинка довольно увесистая — 450 грамм, внутри стальная рама с семью металлическими цепочками, с помощью которых и производятся вычисления. Цепь протягивается до нужного значения в верхнем окошке при помощи стила, ставляемого в звено. Поворотая ручка справа внизу служит для сброса разрядов.
Существуют несколько модификаций этого арифмометра — машинка была довольно популярной и выпускалась до первой половины
На самом устройстве времени выпуска нет (разве что
Про две тыловые камеры в смартфоне
Выбирал сегодня, пока ехал в такси, подвижный фон в смартфоне и заметил, что у него есть перспектива — фон рисованный и разные планы рисунка при наклоне двигаются с разными скоростями.
Подумал, что странно, что никто не сделал (или уже сделали?) такое же с фотографией — ставишь на фон и в зависимости от глубины части фотографии смещаются. Я видел софт, который такое умеет по стереопаре.
Мысль пошла ещё дальше — уже достаточно много смартфонов с двумя тыловыми камерами, межцентровое расстояние там небольшое, что ограничивает глубину, но его можно разнести сильнее, вплоть до двух камер на разных концах смартфона.
Получится отличная мулька — делаешь снимок двумя камерами сразу, он сохраняется в специальном формате и в просмотре при наклоне получается эффект объёма
Сумматор Вебба
На днях в фонде музея появился экспонат, которому без малого 150 лет — это сумматор Чарльза Вебба. Выпущен он между 1868 и 1889 годами, первая дата — год получения патента на это устройство, вторая — дата выпуска более изящной второй версии устройства, без деревянного основания.
Американский поэт, автор, журналист и изобретатель Чарльз Генри Уэбб родился 24 января 1834 года
Свою карьеру журналиста Вебб начинал в газете
Как изобретатель он имел несколько патентов, несколько из них — на вычислительные машины, в том числе и на упомянутый сумматор, который назывался просто «The Adder».
Устройство не впечатлит сегодняшних детишек вычислительной мощностью — в довольно массивном корпусе красного дерева скрывается несложный механизм, закрытый двумя поворотными колёсами из бронзы. На правом — сто значений, тут набираются цифры для сложения, на левом, которое поворачивается на одно деление при переполнении правого — лишь 50. Так образом можно складывать числа суммой до пяти тысяч.
В комплекте было стило, но оно, к сожалению, не сохранилось, как и прочие элементы комплектации.
Порядок использования устройства следующий: в начале работы на сумматоре вручную выставляется ноль на обоих дисках, после чего стило вставляется в отверстие напротив суммируемого числа и диск проворачивается до отметки «ноль». Так числа и складываются — повороты дисков накапливают значение, в окошечке виден текущий результат.
Счастливые билеты
Мы тут недавно с одним товарищем разговорились про точное количество «счастливых» билетов. В ответ я вспомнил, что
На что товарищ прислал мне ссылку на выписку из статьей о счастливых билетах журнала «Квант». Там, помимо перебора, предлагается несколько методов вычисления, в частности есть даже интеграл:
Вообще статьи интересные, умели же раньше писать! Кстати, стало интересно насколько сейчас плох
Вариант на 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))Выполняется вместе с запуском интерпретатора за треть секунды, если
Присваивания в 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Вообще, конечно, не всё так страшно — можно это всё либо понять (что почти никто не делает), либо запомнить несколько нехитрых правил (прочитав пару хороших книг по языку), либо набить шишки на практике (что чаще всего и происходит).
Опера Бриттена
Последняя страничка, которую я прочёл этим браузером содержала новость о переходе на чужой движок. Это воспринималось как предательство, я закрыл браузер и деинсталлировал его, едва дочитав статью.
Дальше в качестве основного браузера я использовал «Сафари» — «Хром» мне казался слишком пресным, «Файэрфокс» — слишком приторным, «Вивальди» —
Никогда не подумал бы, что вернусь на «Оперу». Однако ж вышел новый релиз, который меня убедили поставить коллеги — и работаю вторую неделю, уютно. Всё на своих местах, есть встроенные «Телеграм» и «Вотсапп», основные мои пейджеры — это очень удобно, есть блокировщик рекламы, ВПН и куча мелочей, облегчающих жизнь. Если вы ещё не видели этот браузер, рекомендую хотя бы попробовать, имеет смысл.