Аткінсонія

Jun. 12th, 2025 04:15 pm
henry_flower: A melancholy wolf (Default)
[personal profile] henry_flower

"Компактні" Мокінтоши перестали мати чорно-білі екрани лише 1993 року, що є вкрай смішно, тому що їх лінійка "професійних" Мокінтошів ІІ отримала кольори ув 1987. NeXT ув 1988 вийшов з 2-бітним монітором (ч/б + 2 варіянти сірого), про що ув одному зі старих інтерв'ю Джобса останній розповідав як газети тоді писали що він таємно ненавидить кольори і, коли має для того владу, робить лише монохромні комп'ютери.

(До речі, оригінальний посібник по Мокінтошу ІІ виглядав гарною coffee table книжкою (конь цепта маловідомий у Центрально-Східній Європі), випадкове досягнення яке Епл спромоглася повторити ніколи, навіть після повернення Джобса.)

Мокінтош ув 1984 комплектувавсь безоплатним MacPaint'ом, який трохи пізніше Майкрософта злизала собі для віндюка. Для 1-бітних екранів симулювати відтінки сірого ув MacPaint'і можна було тільки за допомогою дізерінґу. Найвідоміший алгоритм--Floyd-Steinberg (FS)--був винайдений ув 1974, але Аткінсон, якого автор книжки Revolution in the valley називає єдиним дорослим ув команді Мокінтошу, вважав FS малоконтрастним.

Коли стало відомо що Аткінсон помер, на HN з'явився лінка на бовзерний емулятора його алгоритму від якогось угорця, який ховається від Орбана ув Ландані.

Якість мене вразила:

orig dither

Напевно це можна робити ув лайнаксі з командного рядка? На жаль, ні. Опція -⁠dither ув ImageMagick про Аткінсона не знає (слушайтє пєсню Валєнкі). pamditherbw (з netpbm) знає, але результат засмучує:

pamditherbw

Угорська демо працює так:

  1. створюється Canvas з розміром зображення оригінального кольорового;
  2. зображення копіюється на Canvas;
  3. з Canvas'у читаються пікселі ув форматі ImageData;
  4. ImageData модифікується;
  5. Результат знову копіюється на Canvas;
  6. з Canvas'у експортується нове чб-зображення ув форматі png.

Всі пункти, окрім 4, підтримуються власно бовзером та вимагають жодних зусиль.

Хоча угорська демо написана ув темні часи кофіскрипта, траспайлер останнього друкує читабельного джаваскрипта. Скомбінувавши зміст до 1ї хфункції

export default function(imagedata) {
  let threshold = i => (i <= 128) ? 0 : 255

  let luminance = function(imagedata) {
    var i, j, pixels, ref;
    pixels = imagedata.data;
    for (i = j = 0, ref = pixels.length; j <= ref; i = j += 4) {
      // luminance: red x 0.3 + green x 0.59 + blue x 0.11
      pixels[i] = pixels[i + 1] = pixels[i + 2] = parseInt(pixels[i] * 0.3 + pixels[i + 1] * 0.59 + pixels[i + 2] * 0.11, 10);
    }
    return imagedata;
  }

  let dither = function(imagedata) {
    var err, i, j, mono, neighbours, one, pixels, ref, w;
    pixels = imagedata.data;
    w = imagedata.width;
    for (i = j = 0, ref = pixels.length; j <= ref; i = j += 4) {
      neighbours = [i + 4, i + 8, i + (4 * w) - 4, i + (4 * w), i + (4 * w) + 4, i + (8 * w)];
      mono = threshold(pixels[i]);
      err = parseInt((pixels[i] - mono) / 8, 10);
      pixels[i] = mono;
      for (one in neighbours) {
        pixels[neighbours[one]] += err;
      }
      pixels[i + 1] = pixels[i + 2] = pixels[i];
    }
    return imagedata;
  }

  return dither(luminance(imagedata))
}

залишається лише прикрутити її до Canvas. (Уважний читач помітить зайві змінні ув циклах, courtesy of транспайлера.)

Спочатку я чомусь вирішив що то є робота для Puppeteer. Це була велика помилка. Кожного разу коли я намагаюся притулити його до чогось, закінчується це невгамовним бажанням міцно потримати авторів Puppeteer ойпіай за горло. Кривий скрипта врешті запрацював, але користуватися їм я не раджу.

Потім я згадав про шматки DOM, які нарід багато років (марно) намагаються портувати до ноуда. Певно, Canvas має бути там давно? Виявляється, так, контора яка пише Вордпреса, роздає свою реалізацію всім охочим. (Її дуже складно знайти--1й хіт на npmjs.com на кейворда "кенвес".)

З вордпресівською бібліотекою, безглуздий мотлох Puppeteer зменшується до

function dither(img, algo) {
  let cnvas = canvas.createCanvas(img.width, img.height)
  let ctx = cnvas.getContext('2d')
  ctx.drawImage(img, 0, 0)
  let imagedata = ctx.getImageData(0, 0, img.width, img.height)
  ctx.putImageData(algo(imagedata), 0, 0)
  return cnvas.createPNGStream()
}

IRL, щоб показувати прогреса ув %, там є трохи більше рядків, але мінімалізм мене тішить. Щоб подивитися на життя ув 1984, для ноуда 22:

$ npm -g i atkinson
$ atkinson file.jpg > 1.png
andrzejn: (Default)
[personal profile] andrzejn
На Осокорках тихо, у мене все гаразд.

До дна росії маємо перший мільйон вбитих та скалічених рашистських окупантів. Добре.

Чекаю на перемогу.
juan_gandhi: (Default)
[personal profile] juan_gandhi
Назвали сейчас израильтян "белыми колонизаторами". 
andrzejn: (Default)
[personal profile] andrzejn
На Осокорках тихо, у мене все гаразд.

Чекаю на перемогу.
juan_gandhi: (Default)
[personal profile] juan_gandhi

Иногда, слушая Наки, удивляюсь иным фразам.

"В военную прокуратуру поступает много жалоб на расстрелы"

"Жители деревни в Курской области отказываются эвакуироваться, пока им не выплатят пособие; им положено же" 

malyj_gorgan: (Default)
[personal profile] malyj_gorgan
Друзі, прохання просте, але швидке. Мені тут протягом пари днів треба вибрати, яку книжку подарує моєму малому його бабуся. Дано: десятилітній хлопчик, який (ну, так вийшло) не любить читати художні книжки, але з цікавістю читає книжки нехудожні, особливо про зброю-війну-всякетакеінше.
Я бачу онлайн пару книжок, але не можу оцінити, чи вони підходять за рівнем дитині десятилітнього віку, чи написані нормальною, достатньо цікавою мовою. Може, ви можете якось прокоментувати оці книжки:
(a) О. Гуржій і О. Реєнт "Славетна Україна. Битви та повстання від княжої до імперської доби"
(b) П. Кралюк "Виникнення козацтва"
(c) "Дивовижні історії про звичайні речі. Історія винаходів"

Ну або щось таке подібне. Мені серед доступних книжок для дітей катастрофічно не вистачає того, що колись називалося науково-популярною (де "науковість" могла бути про природничі науки, географію, історію, мову, що завгодно) для дітей і підлітків. Якось купа фікшна, то фентезі, то сучасного "продітейвшколі", а от написаної легкою мовою книжки -- нема. Всякі "Правда яка нагадує казку" Паоли Утевської, чи "Гомін-гомін по діброві" про історію козацтва, чи купа інших. В радянські часи такого в магазинах, вистачало, але, на жаль, тих книжок не використаєш, бо воно все заражене комунізмом і партійністю. Нам то було пофіг, порівняно з потоком комунізму і партійності з медіа, школи і життя взагалі, ми того навіть не помічали, але теперішнім дітям воно важкенько....
andrzejn: (Default)
[personal profile] andrzejn
Вночі був черговий наліт. Пишуть, що знову масштабний, але цього разу майже все вдалині від мого будинку, спати не заважало.

На Осокорках знов тихо, у мене все гаразд. Повітря повне диму.

Чекаю на перемогу.

роботы помогают

Jun. 9th, 2025 05:36 pm
juan_gandhi: (Default)
[personal profile] juan_gandhi
 Дедушка Василий Константинович и бабушка Анастасия Маркеловна (через https://kontext-chat.replicate.dev/ ) - спасибо [personal profile] vak 



Кстати, оторваться не могу от этой фотки. Так реалистично. (Ну и комплиментарно, конечно - но меня устраивает.)

Дедушке здесь 80 лет.

andrzejn: (Default)
[personal profile] andrzejn
На Осокорках тихо, у мене все гаразд. Вночі, кажуть, був наліт, якого з вечора всі боялись, але я все проспав.

Чекаю на перемогу.

Продавец иллюзий

Jun. 8th, 2025 06:09 pm
ofeliyadd: (Default)
[personal profile] ofeliyadd

События летят в таком диком темпе, что я уже не успеваю соединять точки. Наша операция "Паутина" продержалась наверху в рейтинге пять дней, потом скандал Трампа с Маском затмил всё. В своем последнем посте на той неделе я вставила видео с сенатором Рэндом Полом: «Кто-то должен встать и закричать: «Король-то голый». Он был первым, кто обрушился на Трампа из-за его "большого красивого законопроекта". Меня удивило, что именно Рэнд Пол стал первым, кто встал против Трампа, но теперь я понимаю игру. Дальше события развивались стремительно-бурно. Сначала Маск с синяком появился на пресс-конференции в Белом доме, где они с Трампом поблагодарили друг друга за сотрудничество, Маск сказал, что его 130 дней, которые он по закону имел право работать в правительстве, закончились, и он пришел попрощаться. Трамп расхваливал Маска, назвав его «величайшим лидером бизнеса и новатором», который работал не покладая рук. Маск соврал о синяке у него под глазом, сказал, что это он играл с сыном и тот его ударил. Никто в это не поверил. Но все закончилось довольно мирно, хотя Маск выглядел жалко. И ничто не предвещало дальнейшей сварки.

Read more... )
andrzejn: (Default)
[personal profile] andrzejn
На Осокорках тихо, у мене все гаразд.

Чекаю на перемогу.
juan_gandhi: (Default)
[personal profile] juan_gandhi


Ничего себе; так на него и продолжают охотиться.
andrzejn: (Default)
[personal profile] andrzejn
На Осокорках тихо, у мене все гаразд. Гарячу воду повернули за графіком.

Думаю про іронію. Кличко три роки зупиняв наземні ділянки метро під час тривог, вичікуючи на приліт, а ділянку врешті пошкодили вночі, коли метро й так не працює.

Чекаю на перемогу.

fucking claude.ai

Jun. 6th, 2025 06:16 pm
juan_gandhi: (Default)
[personal profile] juan_gandhi

So, I was trying to play with claude-code. It was supposed to be using my claude.ai account. I went there, chose "pro", which will be able to access my github. Ok, and I paid for one month. Opened claude-code again, and it needs a different kind of account in claude... or in anthropic... So I asked claude, how can I connect to my installation of claude-code. It does not know. It says "ask claude-code". Multiple personalities, I guess. Or a large company (same thing). Now I'm trying to cancel my subscription. But they are all just bots there.

So I had to call my bank, to dispute the charge.

Do I like it? First of all, I really don't trust these bots (yet).

What do you think?

Про що вийшла пісня?

Jun. 6th, 2025 01:23 pm
malyj_gorgan: (Default)
[personal profile] malyj_gorgan
В співавторстві з Пані Стосею переклав пісню з "Голодних Ігор". Оригінал слів і перша версія перекладу, без моїх дивних ідей -- ось тут, але ви поки що, прошу, не дивіться, а дочитайте до кінця. Про саму пісню я нічого не знав, "Голодні ігри" читав давно і неправда, по діагоналі, все забув. Я просто послухав виконання і побачив картинку, яка вилилася в переклад, де від першого підходу пані Стосі залишилася лише половина, як не менше. Словом, любі читачі, у мене до вас таке прохання:
0. Якщо ви не знаєте теми "Голодних Ігор", то не знайте далі, а якщо знаєте -- на якийсь час забудьте. Уявіть, що ви про це ні сном ні духом, просто, з нуля, послухали ось таку пісню (ще раз посилання)
1. Послухавши, подумайте, про що, на вашу думку, це пісня?
2. Подивіться переклад (нижче, під катом) і скажіть, про що, на вашу думку, переклад?

Якщо вам не шкода, напишіть, будь-ласка, відповіді на питання 1 і 2, і чи є щось спільне між двома інтерпретаціями. (І лише потім, якщо хочете, читайте текст оригіналу.) Дякую!

Власне, переклад )
andrzejn: (Default)
[personal profile] andrzejn
Вночі був обстріл на чотири години, шахєдами і ракетами. Цього разу у нас було гучно і інтенсивно, хоча я з моїх вікон так само нічого не бачив, крім відблисків. Хіба щось впало на територію закинутого будівництва і там догоріло.

На Осокорках вже знов тихо, у мене все гаразд.

Чекаю на перемогу.
[personal profile] kostyad
сейчас в СПБ со мной говорят только продавцы и кассиры в шести магазинах-фармацевты и провизоры в четырех аптеках и библиотекари и библиографы в РНБ -и люди вечером в парке ЛТА -половина думают что я -ученый биолог -с иностранцами говорю на англ яз -хотя -половину забыл -и- мне -легче говорить -на итальянском яз -причина -простая -говорю -что хочу- здесь и в жж и в контакте -при этом -меня не арестовали и даже не штрафуют -во первых- мое здоровье -по закону- меня нельзя -помещать в тюрьму -если- никого -не убил -и -не изнасиловал школьницу -что -во вторых -не хочу говорить для всех ...
andrzejn: (Default)
[personal profile] andrzejn
На Осокорках тихо, у мене все гаразд.

Чекаю на перемогу.

Profile

click0: (Default)
click0

January 2017

S M T W T F S
123 4567
891011121314
15161718192021
22232425262728
293031    

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 12th, 2025 06:35 pm
Powered by Dreamwidth Studios