Прогулка по Москве
Feb. 23rd, 2026 07:39 pmПрогулялся сегодня от бывшего трансагенства на Ленинском проспекте до метро Третьяковская через Нескучный сад, Парк Горького и Музейон. В Парке Горького все перегорожено и перекопано, на берегу Обводного канала все перегорожено и перекопано, в метро Третьяковская потолок над платформной ободран до тюбингов.
В следующий раз пойду на ВДНХ, там вроде уже реконструкция закончилась.
Брал с собой ледоступы. Но толку от них было чуть, Большая часть пути либо расчищена до асфальта, либо представляет собой нормальный утопнатный снег. По асфальту в ледоступах неудобно. А если после километра асфальта попадается 20 метров льда, не будешь же ради этих двадцати метров останавливаться, одевать ледоступы, а потом их снимать. Впрочем не настолько тот лед скольский, чтобы на нём падать.
Про оффлайн-навигацию
Feb. 23rd, 2026 06:08 pmЗадумался над тем, что к OsmAnd надо бы прикрутить режим навигации без использования GPS. Пусть грубый, с ошибками, но работающий в условиях отсутсвия сигнала от спутников и прочих внешних источников геолокации. Для пешеходных маршрутов расстояния можно мерить в шагах. Акселерометр телефона вполне себе позволяет считать шаги, и приложений-шагомеров полный плеймаркет. На автомобиле можно добраться до показаний одометра через блютусный донгл на диагностическом разъеме. Тоже железяка вполне стандартная. Естественно погрешность будет гигантская. Поэтому необходимо иметь удобный жест для указания своего реального места на карте. Благо на суше достаточно легко привязаться к какому-нибудь перекрестку или, тем более, бензоколонке, на которой остановился.
Основная беда в том. что для того, чтобы правильно вести счисление, нужно не только лаг, но и компас. Магнитные компасные датчики, которые есть в телефоне, даже в пешем маршруте показывают погоду на Марсе. Погрешность у них составляет в лучшем случае десятки градусов. А для более-менее приличного счисления нужно не более градуса. То есть в железной машине придется магнитному компасу девиацию уничтожать. Хотя основная проблема в том, что этот датчик хоть как-то работает только если телефон расположен горизонтально, экраном вверх. А что в пешем маршруте, что при закреплении на торпеде автомобиля, он будет расположен скорее вертикально. Похоже, нужен внешний компасный датчик с bluetooth интерфейсом. Интересно, кстати, есть ли где-нибудь доступная для скачивания карта магнитного склонения? А то без карты склонения по магнитному компасу особо не поориентируешься. Так что лучше внешний датчик делать на базе гирокомпаса. Правда, тут вылезает проблема в том, что на MEMS-гироскопах гирокомпас не сделаешь. Он основан на явлении прецессии, возникающей у гироскопа на вращающейся Земле. Поэтому через некоторое время после включения сам входит в меридиан.
День тисяча чотириста шістдесят перший
Feb. 23rd, 2026 07:15 amВідлига. Ну, це березень, приморозки ще будуть, але ми пережили й цю зиму, як би там росіяни не намагались нас убити. Переживемо й падіння Росії.
Чекаю на перемогу.
О кнопочных телефонах
Feb. 22nd, 2026 08:38 pmКупил тут телефон, который по набору функциональности близок к идеальному.
- Крупные заметные кнопки.
- Никаких устанавливаемых приложений, даже J2ME.
- Умеет раздавть интернет по wi-fi
- Умеет работать сетях 4G (в смысле через VoLTE, а не только как модем).
- Имеет опцию импорта контактов
- Умеет записывать разговоры. В отличие от смартфонов, где это делать пользователю не положнено.
- Разъемы закрываются воднепроницаемой резиновой крышечкой. Хотя конечно далеко не IP68.
- Слоты для симок подписаны хорошо заметными цифрами 1 и 2.
Совсем идеальным он бы был, если бы умел синхронизировать контакты по CardDAV. Еще он имеет разъем USB Type A, через который от его большого аккумулятора можно заряжать другие гаджеты. И даже будильник почти вменяемый. Правда есть опция "повторять этот звонок по будням" и нет комплиментарной "повторять только по выходным".
Пока, правда, не разобрался как туда файлы копировать. Принимать по bluetooth мегабайтную записную книжку он у меня отказался (впрочем может быть для этого ему sd-карту вставить надо. У дешевых кнопочников такое бывает).
Называется INOI 340 PowerHub 4G.
Теперь вот думаю, а какое бы устройство мне заменило все остальные функции стмартфона, которыми я пользуюсь. По хоршему счету, подошла бы книгочиталка на цветном E-Ink c андроидом и GPS, без слота под сим-карту. Чтобы было удобно карты при ярком солнечном свете смотреть. Книжки читать на ней явно можно, музыку слушать - тоже. С хранением базы паролей тоже должна справиться.
А телефону надо подобрать чехол и носить его на поясе вместо смартфона. И всем кто будет предлагать мне посткуить какое-нибудь приложение, его показывать и говорать "Куда я тут его поставлю?".
Процесс покупки, правда, получился несколько матерный. Сначала заказал я его в ближайший к дому DNS. Обещали привезти через два дня. Потом написали "никак не успевем, переносим срок доставки еще на два дня (на сегодня)". Сегодня пришла SMS что срок доставки переносится и вообще непонятно куда.
Плюнул я на этот заказ, посмотрел где ближайший магазин DNS, где телефон в наличии. Оказалось - в 500 м от метро Алтуфьево. Заказал там, и сегодн, возвращаяссь из центра сел не на рыжую ветку, а на серую. Приехал, выкупил его, сел на автобус и поехал домой. По времени, что характерно по сравнению с поездкой до Медведково и пешком оттуда потерял минут пятнадцать от силы. По деньгам - стоимость пересадки с метро на автобус.
В общем в DNS-е можно резервировать товар, который есть в магазине. А если его там нет, то ждать что привезут - не стоит. Не дождешься.
Воткнул туда пока симку из бужаниновского роутера. Что удивительно, никаких ограничений на мобильный интернет при включении не обнаружилось. Правда обнаружлось что и на бужаниновском, и на площанском роутерах тариф подорожал на 200 рублей.
Upd Разобрался с тем как подключить телефон как USB-диск. Для этого его надо подключать к компьютеру в выключенном состоянии. Тогда монтируется и внутренняя память, и SD-карта. После чего в директорию vCards просто копируются файлы vcf из хранилища, поддерживаемого vdirsyncer и импортируются. А вот с экспортом контактов записанных в телефон с его клавиатуры - фигня. Они импортируются в формате vcard2.0 с явным указанием чарсета и quoted-printable. И это в 2026 году!
День тисяча чотириста шістдесятий
Feb. 22nd, 2026 07:43 amЧекаю на перемогу.
Императрица Кэт - прогресс
Feb. 20th, 2026 01:32 pmПрошёл месяца с того момента, как я несколько опрометчиво решил что "Императрица Кэт" закончена. С тех пор текст вырос в объеме примерно на треть, и на днях Ирина согласилась с тем, что первая часть, до момента появления людораков, закончена и взялась за переработку второй.
Во второй части есть парочка эпизодов, которые ещё надо написать, и по крайней мере один - в третьей.
Еще появилось некоторое количество иллюстраций. Большую часть которых я, по мере их создания. публиковал либо в DW, либо в ВК, но не все.
Не знаю сколько времени у нас займет доработка второй и третьей части, но редактор нам всё равно понадобится. А может и корректор. Корректуру "Детей пространства" делала в своё время Ирина, поскольку её вклад как соавтора в текст был задолго до начала редактуры и глаз не замылен. А тут она как раз активно работает с текстом в самой финальной фазе.
а остальные офицеры открывают для себя красные фонари
Feb. 19th, 2026 10:06 pmи вот офицер открывает для себя оптику
Feb. 19th, 2026 10:01 pm"Прекрасные его разные микроскопы, о которых я до того времени и понятия не имел, приводили меня в восхищение. Я не мог устать целый час смотреть в них на все маленькие показываемые им мне вещицы, а особливо на чрезвычайно малых животных, которых я видел тут в одной капельке воды, бегающих и ворочающихся тут в бесчисленном множестве и гоняющихся друг за другом. А не успел я сими насытить свое любопытное зрение, как хрустальные призмы и другие оптические инструменты и делаемые ими эксперименты приводили меня в новые восторги и в удивление; но восхищение, в какое приведен я был его камерою-обскурою, Оптический прибор для получения изображения предметов на плоскости. Известен еще арабским ученым конца первого тысячелетия нашей эры. не в состоянии я уж никак описать. Я истинно вне себя был от радости и удовольствия, когда увидел, как хорошо и каким неподражаемым искусством умеет сама натура рисовать на бумаге наипрекраснейшие картины, и, что всего удивительнее для меня было, наиживейшими красками."
"Однако, сколь я ни беден был тогда деньгами, не мог расстаться с одним маленьким ящичком, составляющим камеру-обскуру, посредством которого можно было с великою удобностью срисовывать все натуральные виды домов, улиц, местоположений и всяких других предметов. Я купил его у сего человека, но за употребленные за то два червонца с лихвою заплачен был неописанным и многим удовольствием, какое в состоянии был производить мне сей ящик. Я всегда не мог довольно налюбоваться тем, как хорошо на шероховатом стекле изображались и рисовались сами собою все предметы, на которые наведешь выдвижною трубкою сего ящика, и не преминул тотчас, пользуясь сим инструментом, срисовать вид той улицы, которая видна была у меня из окон. Сия прошпективическая картина цела у меня еще и поныне, и я храню ее, как некакой памятник тогдашнего времени. Впрочем, ящичек сей произвел мне не одно сие удовольствие, но еще и другое, а именно: он подал мне повод к новой выдумке, а именно, чтоб заставить и самый мой прошпективический ящик отправлять в случае пожелания должность камеры-обскуры; ибо как скоро я узнал, от чего и каким образом камера-обскура устроена и как все ее действия происходят, то нетрудно мне было добраться и до того, как производить самое то ж мог бы и самый мой ящик, с учинением только некоторой с ним перемены."
продолжение про прошпективический ящик
Feb. 19th, 2026 06:11 pm"а как и сооружение и самого ящика не выходило у меня из ума, то принялся я за делание оного. Обстоятельство, что большой и такого сорта ящик, какой видел я в Торуне, неудобен был для возки его с собою в походах, поелику он один в состоянии был занимать очень много места в кибитке, было причиною тому, что я принужден был сделаться в первый раз отроду и поневоле инвестором[Французское — выдумщик, изобретатель.] и выдумывать особливый род устроения сего ящика, а именно, чтоб расположить и сделать его так, чтоб он мог совсем разбираться и складываться и, будучи разобран, мог занимать в сундуке очень малое место. Признаюсь, что как я никогда еще в выдумках сего рода не упражнялся, то сначала дело сие меня очень озабочивало; но чего не может преодолеть нетерпеливое желание и любопытство? Через немногие дни удалось мне выдумать и смастерить такой, что и поныне еще дивлюсь, как я мог тогда такой сделать, ибо мне на сей раз принуждено было быть и столяром, и шлесарем, Слесарем.] и клеильщиком, и лакировальщиком, потому что все бока и стенки оного сделал я из толстой политурной бумаги. А дабы они не могли коробиться, а притом складывались, то края все укрепил тоненькими деревянными брусочками; для соединения же всех боков наделано было множество крючков, петелек и пробойчиков. Наконец всю наружность оного раскрасил я разными красками, и улепив по оным маленькими, вырезанными из картинок купидончиками, птичками и цветками, и наконец покрыл лаком. Словом, я сделал ящичек не только самый походный и уютный, но и не постыдный для показания всякому. Все офицеры не могли надивиться моей выдумке и искусству и схаживались ко мне толпами смотреть картинки и любоваться ими. А как и сии не только были сами по себе довольно изрядные и изображали виды всех лучших мест и улиц в городе Венеции и многих других знатнейших европейских городов, но и были разрисованы мною под натуру, — то не могли они довольно их насмотреться, а мне довольно приписать похвал за мою выдумку и искусство."
I recommend this
Feb. 19th, 2026 09:23 amhttps://andrewducker.dreamwidth.org/4666173.html
Especially #3 and #5. #5 basically leaves nothing from the popular theory of an "average human". Which are extremely rare occasions, due to the multidimensionality.
As to #3, that was just wow. Chandrasekhar (pronounced as "Chandrashaker") limit, I had to go to Wikipedia, read about it, get educated (and had to edit a couple of wiki articles... as usual).
Now imagine, a young Tamil guy, after graduating a university in India, on the boat on his way to Britain, makes a discovery (Chandrasekhar limit), and then manages to convince the physicists. Those were also the days when Hilbert's dream of "everything in math being calculable" was just crushed by Gödel's first theorem (and Gödel was more or less of the same age as Chandrashekhar.)
Двадцять років босоніж
Feb. 19th, 2026 02:49 pmЗа ці двадцять років я взувався тільки в виняткових ситуаціях і в надмірні морози, як то оці січневі. Надихнув кількох людей на таке саме босоноге життя. Створив з друзями групу і водив людей на босі прогулянки Києвом. Продовжую. Шкодую лише про те, що не розпочав раніше :)
Як то кажуть, питайте. Про життя босоніж я знаю приблизно все.
Підбірка всілякої інформації про босоніжність, яку я зібрав за двадцять років: Життя босоніж
І група босих прогулянок, якій потрібні нові завзяті учасники: Київ та Україна босоніж

накарябал на питоне
Feb. 16th, 2026 02:28 pm
import os, time
from pathlib import Path
DIR="cache"
CACHEPATH = Path(DIR)
TTL=12*3600 # 12 hours
if not os.path.exists(DIR):
os.mkdir(DIR)
def path(key: str) -> Path:
return CACHEPATH / key.replace("/", "∕").replace(".", "。")
def clear(key: str):
p = path(key)
if p.exists():
p.unlink()
def clearAll():
for p in list(CACHEPATH.iterdir()): p.unlink()
def isFresh(key: str) -> bool:
p = path(key)
if p.exists():
return time.time() < p.stat().st_mtime + TTL
else:
return False
def get(key: str) -> str:
if isFresh(key): return path(key).read_text(encoding='utf-8')
def put(key: str, value: str):
path(key).write_text(value)
def getOrCall(key: str, fun):
value = get(key)
if value == None:
value = fun(key)
put(key, value)
return value
if __name__ == "__main__":
# test the cache
TTL = 1
print("TESTING cache.py")
clearAll()
clear("non existent file")
testvalue = "--test contents\nof file 'test1'--"
put("test1", testvalue)
fromfile = get("test1")
assert fromfile == testvalue, f"Oops, bad input: {fromfile}"
clear("test1")
assert not os.path.exists("test1"), "the file 'test' had to be deleted"
put("test2", "this file gets expired soon")
fromfile2a = get("test2")
assert fromfile2a == "this file gets expired soon", "Oops, bad file test2"
time.sleep(2)
fromfile2b = get("test2")
assert fromfile2b == None, "Oops, test2 still available?!"
value1 = getOrCall("test3", lambda key: f"[[{key}-1]]")
assert value1 == "[[test3-1]]", "first call of test3, got {value1}"
value2 = getOrCall("test3", lambda key: f"[[{key}-88]]")
assert value2 == "[[test3-1]]", f"second call of test3, got {value2}"
time.sleep(2)
value3 = getOrCall("test3", lambda key: f"[[{key}-3]]")
assert value3 == "[[test3-3]]", "third call of test3, got {value3}"
put("url/", "somedata")
fromfile4 = get("url/")
assert fromfile4 == "somedata", "problem with url/"
url=".http://dreamwidth.org/juan-gandhi/something"
put(url, "slashes in key")
fromUrl = get(url)
assert fromUrl == "slashes in key", f"failed reading from {url}"
print("DONE TESTING cache.py")