juan_gandhi: (Default)
Juan-Carlos Gandhi ([personal profile] juan_gandhi) wrote2026-02-16 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")
mikerrr: (Default)
mikerrr ([personal profile] mikerrr) wrote2026-02-16 11:32 am

Кафе «Одного блюда» против усталости от выбора

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

Идея вызвала бурную реакцию. Поклонники концепции утверждают, что это единственный способ по-настоящему расслабиться в мире, где нас заставляют принимать тысячи решений в день. Критики же в ярости: они видят в этом ограничение свободы и диктатуру. Вопрос в том, является ли возможность выбирать из сотни позиций истинным благом или это просто лишний шум, мешающий нам наслаждаться самой едой.

Web Analytics
vak: (Знайка)
Serge Vakulenko ([personal profile] vak) wrote2026-02-15 11:40 pm

PC-DOS на tiltti

Постепенно допиливаю симулятор i86. Вот уже PC-DOS 6.3 стартует. Но не желает устанавливаться, поскольку жёсткий диск отсутствует.
juan_gandhi: (Default)
Juan-Carlos Gandhi ([personal profile] juan_gandhi) wrote2026-02-15 05:40 pm
Entry tags:

1757 год, западные диковинки

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

src
mikerrr: (Default)
mikerrr ([personal profile] mikerrr) wrote2026-02-15 02:37 pm
Entry tags:
jaerraeth ([personal profile] jaerraeth) wrote2026-02-15 01:39 am

My Lady of the Greensleeves

Иногда, как я уже говорил, меня прет. По классическим мотивам.
Только вот содержание не то что совсем неклассическое, а примерно наоборот: это то, о чем на самом деле вся ихняя классика. Изначально. До того как.


Прекраснее тысяч пленительных дам,
Весеннему ветру поет трава.
Лицом припадал я к изящным рукам
В зеленых ее рукавах.
Read more... )
mikerrr: (Default)
mikerrr ([personal profile] mikerrr) wrote2026-02-14 05:46 pm
Entry tags:

Притча о термостате Милтона Фридмана

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

Экономисты установили термометры и счетчики, и в течение долгого времени измеряли ТС, температуру снаружи, ТВ, температуру внутри, и Р, расход топлива. Собрав много данных, они начали спорить о том, что они значат.

Первый экономист сказал: "Мы ясно видим, что внутренняя температура ТВ практически не меняется со временем, и не зависит ни от ТС, ни от Р. А вот между ТС и Р есть очевидная отрицательная корреляция. По-видимому, увеличение расхода топлива Р приводит к уменьшению температуры воздуха снаружи ТС".

Второй экономист возразил: "Коллега, не могу не согласиться с вами насчет корреляций, но мне кажется, что причинно-следственную связь вы определили в неверном направлении. Это изменение ТС приводит к изменению Р, а не наоборот".

Они бы еще долго спорили на эту тему, но, к счастью, третий экономист был опытнее обоих вместе взятых. "Дорогие коллеги! Не так важно, Р приводит к изменению ТС, или наоборот. Обратите внимание, что есть что-то, с чем мы все согласны: полное отсутствие корреляции между ТВ и Р, а также между ТВ и ТС. А ведь ТВ и есть то, что интересует нашего заказчика".

Все трое экономистов согласились с тем, что ни Р, ни ТС не влияют на ТВ, и следовательно, печь можно демонтировать, а топливо перестать закупать. Именно это они и порекомендовали владельцу.

http://avva.dreamwidth.org/3447879.html

Web Analytics
vak: (Знайка)
Serge Vakulenko ([personal profile] vak) wrote2026-02-14 02:34 am

VGA через SDL2

Я переделал видеоадаптер на SDL2, и вот результат. Бейсик подаёт признаки жизни. Это я запустил "tiltti -", то есть без загрузочного флопа. При этом стартует Бейсик из ROM. Ввёл "print 23+45". В целом оно ещё глючит изрядно: пришлось нажать несколько раз Enter, чтобы увидеть весь вывод. Однако это уже дело техники, повычистить.
mikerrr: (Default)
mikerrr ([personal profile] mikerrr) wrote2026-02-14 11:41 am

Иск против родителей за «рождение без спроса»

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

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

Web Analytics
vak: (Default)
Serge Vakulenko ([personal profile] vak) wrote2026-02-13 05:22 pm

IBM Basic 1.10

Подумалось: а ведь на симуляторе PC i86 можно запустить тот самый легендарный IBM Basic, с которого началась фирма Microsoft. Бинарник версии 1.10 лежит здесь. Он кладётся в память процессора по адресу D6000 и вызывается. Использует только стандартные вызовы биоса, кроме работы с аудиомагнитофоном. Он умеет читать и писать аудиокассету командами CLOAD и CSAVE. Это тоже можно как-то эмулировать.

Документация: BASIC_1.1_May82.pdf

Так выглядит IBM Basic на симуляторе PCem.
vak: (Знайка)
Serge Vakulenko ([personal profile] vak) wrote2026-02-13 11:40 am

Миниатюрный компьютер GMKtec

Для экспериментов с разными линуксами решил я обзавестись отдельным маленьким компьютером. То, что нынче называется NUC или mini PC. Люблю всё маленькое и элегантное. Китайцы нынче клепают массу разных mini PC, но мне ж надо, чтобы без проблем с драйверами. И ещё тут AMD Ryzen 5, а не какой-нибудь скучный Интел. Памяти 16 гиг на всякий случай, а то проблемы с нею нынче.



Снизу через прорези видно, что внутри вентилятор чуть ли не на весь корпус.



Биос известной конторы American Megatrends. Они были в 80-х в числе первых, кто сваял собственный биос, совместимый с IBM.



Поставил я для пробы Lubuntu и SUSE. Все периферия отлично работает, включая Wi-Fi и Bluetooth.

Померял скорость процессора: 93000 дуремарков. Это 63% от Intel i9 на моём iMac. Потребление в спокойном состоянии 5 ватт, в нагруженном - 17 ватт.
mikerrr: (Default)
mikerrr ([personal profile] mikerrr) wrote2026-02-13 06:57 pm
Entry tags:
mikerrr: (Default)
mikerrr ([personal profile] mikerrr) wrote2026-02-13 10:31 am

(no subject)

Исследователи обнаружили, что нецензурная лексика работает как сверхэффективный компрессор текста. Обучив модели Qwen и Llama заменять длинные конструкции на короткие матерные аналоги, они добились значительной экономии вычислительных ресурсов.

Как это работает на примере:
➡️ Оригинал: «Эта ситуация вызывает крайнее раздражение и недовольство»
➡️ Сжатая версия: «[матерное выражение]»

https://t.me/c/3193555963/684

Web Analytics
vak: (Аристипп)
Serge Vakulenko ([personal profile] vak) wrote2026-02-12 02:56 pm

История MS-DOS и PC DOS, краткий конспект

Я собрал коллекцию образов загрузочных флопиков с разными версиями DOS: здесь. Надеюсь постепенно оживить все версии на симуляторе. Подумал, а пусть ИИ поведает нам их историю. Здесь краткий конспект на русском, выжимка из Evolution_of_DOS.md.

Ранние годы (1981–1983): строим фундамент

PC DOS 1.10 (май 1982)

Это обновление первой версии для IBM PC. Добавили поддержку двусторонних дискет — с 160 КБ до 320 КБ.

Сейчас звучит смешно. Тогда это было почти удвоение Вселенной.

Исправили ошибки, улучшили работу с файлами, сделали систему стабильнее.

Но:
  • никаких жёстких дисков,
  • никаких каталогов — все файлы в одном списке,
  • команды вроде FORMAT пугали новичков.
Тем не менее система грузилась за секунды на 4,77 МГц. И это было впечатляюще.

MS-DOS 1.25 (август 1982)

Вот тут начинается магия рынка.

Microsoft поняла: если дать DOS не только IBM, но и другим производителям, появится рынок «совместимых ПК».

Так и произошло.

Технически версия почти та же, что PC DOS 1.1. Но стратегически — это шаг, который создал экосистему клонов.

Проблема? Разное «железо». Приходилось настраивать систему под каждого производителя.

Но рынок рос.

PC DOS 2.10 (1983)

Появились жёсткие диски в IBM PC XT. И DOS пришлось взрослеть.

Добавили:
  • иерархические каталоги,
  • поддержку HDD до 10 МБ,
  • AUTOEXEC.BAT (автоматизация!).
Это был переход от «игрушки с дискетами» к настоящему рабочему инструменту.

MS-DOS 2.12

Редкая OEM-версия, адаптированная под специфическое оборудование (Texas Instruments, Compaq).

Это был период фрагментации. Каждый хотел своё. Система начинала разветвляться.

Средний период (1984–1991): рост и усложнение

PC DOS 3.30 (1987)

Теперь поддержка:
  • дискет 1,44 МБ,
  • разделов до 32 МБ,
  • международных кодировок.
Мир становился больше — DOS расширялась.

Но многозадачности всё ещё нет. Управление памятью — довольно примитивное.

PC DOS 4.01 (1988)

Предыдущая версия 4.0 была нестабильной. Добавили DOSSHELL — графическую оболочку. Но система падала.

Версия 4.01 исправила ошибки.

Интересный момент: DOS пыталась стать более «дружелюбной». Но архитектура у неё была не для GUI.

Это как прикрутить руль от автомобиля к велосипеду.

PC DOS 5.02 (1993)

Добавили:
  • полноэкранный редактор EDIT,
  • EMM386 для работы с расширенной памятью.
Вот тут начинается борьба с барьером 640 КБ. Инженерные трюки, верхняя память, EMS, XMS — целый цирк с адресными пространствами.

Но работало!

Расхождение путей (1993–1995)

В 90-е Microsoft переключается на Windows. DOS остаётся как фундамент.

IBM продолжает развивать PC DOS.

MS-DOS 6.22 (1994)

Последняя самостоятельная версия.

Добавили:
  • DriveSpace (сжатие диска),
  • SCANDISK,
  • DEFRAG.
Сжатие диска — это инженерная поэзия: вы делаете вид, что у вас в два раза больше места, хотя физически его не стало больше.

Но были патентные войны со Stac Electronics. Юридические битвы тоже часть эволюции технологий.

PC DOS 6.30

IBM ответила своей версией:
  • SuperStor (сжатие),
  • RAMBoost,
  • резервное копирование.
IBM делала ставку на надёжность.

PC DOS 7.0 (1995)

Добавили:
  • язык сценариев REXX,
  • Stacker,
  • поддержку XDF-дискет.
Это уже система для корпоративных задач.

Но мир уходил в Windows.

Поздний этап (1995–2003): жизнь внутри Windows

MS-DOS 7.1 (1998)

Она шла вместе с Windows 98.

Добавили:
  • FAT32,
  • поддержку больших дисков,
  • длинные имена файлов.
Но это уже не самостоятельная система. Это фундамент под Windows.

PC DOS 7.00 Release 1 (1998)

Исправления для Y2K. Добавили символ евро.

Это не революция — это аккуратная уборка перед новым тысячелетием.

PC DOS 7.1 (2003)

Добавили:
  • FAT32,
  • LBA,
  • поддержку больших дисков.
Использовалась в служебных и встроенных решениях IBM.

Это уже эпилог истории.
mikerrr: (Default)
mikerrr ([personal profile] mikerrr) wrote2026-02-12 04:42 pm

Резюме провалов

Профессор Принстонского университета Йоханнес Хаусхофер опубликовал в открытом доступе свое «Резюме провалов» вместо списка достижений. В нем он подробно перечислил все гранты, которые не получил, академические программы, в которые его не приняли, и статьи, которые были отвергнуты научными журналами. Его идея заключалась в том, что успехи обычно видны всем, а огромная «гора неудач», стоящая за ними, остается скрытой, что заставляет других людей чувствовать себя менее способными.

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

Web Analytics
mikerrr: (Default)
mikerrr ([personal profile] mikerrr) wrote2026-02-12 11:38 am
Entry tags:
vak: (Аристипп)
Serge Vakulenko ([personal profile] vak) wrote2026-02-11 11:43 pm

Первые успехи

Доделал я в симуляторе i86 некоторое количество биосных вызовов, и вот результат. PC-DOS загружается с образа флопика.
$ tiltti pcdos330.img 
Current date is Wed 2-11-2026
Enter new date (mm-dd-yy):
Current time is 7:44:18.32
Enter new time:


The IBM Personal Computer DOS
Version 3.30 (C)Copyright International Business Machines Corp 1981, 1987
(C)Copyright Microsoft Corp 1981, 1986

A>dir/w

Volume in drive A has no label
Directory of A:\

COMMAND COM ANSI SYS APPEND EXE ASSIGN COM ATTRIB EXE
BACKUP COM BASIC COM BASICA COM CHKDSK COM COMP COM
COUNTRY SYS DEBUG COM DISKCOMP COM DISKCOPY COM DISPLAY SYS
DRIVER SYS EDLIN COM FASTOPEN EXE FDISK COM FIND EXE
FORMAT COM GRAFTABL COM GRAPHICS COM JOIN EXE KEYB COM
KEYBOARD SYS LABEL COM MODE COM MORE COM NLSFUNC EXE
PRINT COM PRINTER SYS RECOVER COM REPLACE EXE RESTORE COM
SELECT COM SHARE EXE SORT EXE SUBST EXE SYS COM
TREE COM VDISK SYS XCOPY EXE EGA CPI LCD CPI
4201 CPI 5202 CPI BASIC PIF BASICA PIF MORTGAGE BAS
50 File(s) 128512 bytes free

A>chkdsk

724480 bytes total disk space
52736 bytes in 3 hidden files
543232 bytes in 50 user files
128512 bytes available on disk

655360 bytes total memory
600896 bytes free

A>_
Отсюда понятно, что идея перехватывать INT вызовы имеет право на жизнь. Нет необходимости выполнять бинарник биоса из ROM.
juan_gandhi: (Default)
Juan-Carlos Gandhi ([personal profile] juan_gandhi) wrote2026-02-11 03:45 pm
Entry tags:
vak: (Знайка)
Serge Vakulenko ([personal profile] vak) wrote2026-02-11 12:04 pm

Как грузится MS-DOS

Симулятор PC i86 делает первые робкие попытки загрузиться с флопика, и чтобы легче разбираться, я набросал страничку с подсказками:

MS-DOS 3.30 Boot Sequence
mikerrr: (Default)
mikerrr ([personal profile] mikerrr) wrote2026-02-11 04:24 pm
Entry tags:

Юмор

— Саша, накажешь меня сегодня ночью? 
— Спи Таня, ты ни в чем не виновата.


«Мужик жалуется Богу на жизнь:
— И то — не то, и другое — не то, и на работе проблемы, с женой беда, и долги, и здоровье…
Господь слушает-слушает, потом говорит: это всё понятно, но ты мне вот что скажи — жизнь продлевать будем?»


У меня когда-нибудь тоже будут серьёзные отношения. Они будут настолько серьёзные, что у нас с ней будут не ссоры, а совещания.


– Ты неправильно живёшь.
– Как можно жить неправильно???


Как объяснить контекстной рекламе, что я это уже купил?

Web Analytics