Типичный бумер!
Удивительно как мы заигрались в теорию поколений! Я честно думал, что это такая увлекательная игра, пока не понял, что
Даже люди, которые искренне смеются над гороскопами, с той же искренностью отстаивают деление на бумеров, зумеров и так далее. Если говоришь им, что их вера ни на чём не основана, они парируют это собственными опытом. В точности так же как те, кто верят в гороскопы. При этом оба способа деления — псевдонаучные гранфаллуны.
Странно, что никто ещё не начал публиковать поколенческие гороскопы. А раз так, я буду первым!
♌ Бумеры
На этой неделе вероятны события, требующие обращения к жизненному опыту и традиционным ценностям. Благоприятно уделить время семейным делам, восстановить контакты с родственниками, проявить заботу о близких. Финансовые решения рекомендуется принимать взвешенно, избегая излишнего риска. Возможны неожиданные новости, связанные со старыми знакомыми.
♍ Миллениалы
Неделя располагает ко внутренней работе и переосмыслению приоритетов. Хорошее время для профессионального роста, обучения и освоения новых навыков. Не стоит забывать о личных отношениях — внимательность к чувствам других людей принесёт гармонию. Финансовая сфера требует умеренности; избегайте импульсивных трат.
♒ Зумеры
Перед вами открываются новые возможности для самореализации. На первый план выйдет желание экспериментировать и искать нестандартные решения. Важно сохранять баланс между активностью и отдыхом. Неделя благоприятна для установления новых связей и работы в команде. Относитесь осознанно к информации, которую потребляете.
♉ Альфа
Наступает период, когда новые знания и навыки усваиваются особенно легко. Обращайте внимание на обучение, не бойтесь задавать вопросы и проявлять инициативу. В семейной сфере возможно усиление взаимопонимания. Важно соблюдать режим и не переутомляться — гармония будет залогом вашего успеха.
Немного о сложностях написания ассемблера на m4
Не думаю, что я много буду использовать язык m4 в будущем, если вообще буду, поэтому хотел дать себе и, возможно,
Для этого я
Ассемблер 8080А довольно простой. Будучи школьником, я его выучил по комментариям к кускам кода, которые печатались в журнале «Радио» — другой литературы в моём доступе не было. В нём всего несколько команд, большинство из них имеют один или два параметра.
Посмотрим, например, на команды ADD B и ADD C. Первая эквивалентна A += B на других языках, вторая — A += C. Буквами обозначаются регистры, для простоты можно считать их именованными переменными. Их мало, всего несколько штук и они имеют свои особенности. Например, в этих двух командах мы видим особенность регистра A — к нему можно прибавлять значения других регистров.
Команды ADD B и ADD C для исполнения компьютером переводятся в числа — в машинные коды. Обычно их записывают в шестандцатеричном виде, я тоже так буду делать. Данные команды сложения кодируются как числа 80 и 81 соответственно.
Теперь немного про m4. Я писал выше, что m4 — макропроцессор, если упрощать, язык макропроцессора позволяет указать как одни «слова» заменить на другие. «Слова» при этом должны начинаться с буквы или подчёркивания и содержать только буквы, цифры или знак подчёркивания. Это ограничение очень важное. Не будь его, я бы задал по одному правилу на каждую команду:
К сожалению, так это не работает.
В руководствах по m4 указывается, что этот макропроцессор контекст учитывать не умеет. Так и есть, встроенных конструкций, предназначенных именно для этого нет, но можно выкрутиться менее специфичными. Дело в том, что m4 может проверять как выглядят его текущие правила замен одного слова на другое.
Поэтому мы можем завести специальное правило, куда будем записывать какая команда нам встретилась, а позже, встретив имя регистра, будет проверять чему равно наше специальное правило и производить замену, основываясь на этом.
При этом m4 не делает различий между, так сказать, текстом программы и обрабатываемым текстом, для него это одно и то же. То есть макропроцессор делает возможным метапрограммирование — позволяет менять программе свой собственный текст.
Вот как это выглядит в коде:
dnl заменяем строку ADD на определение макроса, сама строка ADD при этом пропадёт
define(`ADD', `define(`__cmd', `__s_ADD')')dnl
dnl когда встречаем B, смотрим чему равно определение макроса __cmd
define(`B', `
ifelse(
defn(`__cmd'), `__s_ADC', 88,
defn(`__cmd'), `__s_ADD', 80,
…тут остальные команды…
`')
')dnl
dnl когда встречаем C, смотрим чему равно определение макроса __cmd
define(`C', `
ifelse(
defn(`__cmd'), `__s_ADC', 89,
defn(`__cmd'), `__s_ADD', 81,
…тут остальные команды…
`')
')dnlЧтобы дойти до этого трюка, пришлось поломать голову, но тем интереснее. Возможно он
Аллергия на пчёл
Эх, похоже у меня
Снял место укуса тепловизором в смартфоне на память.
Интересно, кстати, сравнить свои детские ощущения от укуса со взрослыми. До этого меня кусал только шмель в детском саду, ощущения были очень сильными и длились долго, как и последствия — палец в месте укуса опух и не сгибался несколько дней. Сейчас же было ощущение ожога на несколько секунд и только. Правда я не знаю насколько корректно сравнивать укус пчелы и шмеля, может быть яд у них разный по силе.
Открыли сезон с другом
С прошлой осени никуда не выезжал, тем более с металлоискателем. Растерял всю форму, да ещё и в последние месяцы ленился и не занимался спортом. Сегодня с другом съездили в сторону Болгара — навестили его отца и помахали металлоискателем над грядками его друзей и знакомых.
Надо сказать, открытие сезона далось с трудом — уехали утром, а вернулись под ночь, теперь у меня отваливается рука. Металлоискатель с непривычки кажется пудовым, плюс в место, куда приходится его ремень, меня укусила пчела.
Как раз в тот момент, когда мы подъезжали, папа друга, он разводит пчёл, разозлил один из ульев. А я, на беду, выйдя из машины, начал мазался мазью, чтобы не обгореть.
Пчеле и так настроение испортили с самого утра, да ещё я тут стою, невкусно воняю мазью от солнца. Тут у кого угодно нервы сдадут.
Положительный момент тоже есть — аллергии на пчёл у меня, по всей видимости, нет (увы, есть). Правда, это не факт, — я быстро, только почувствовав укол, на полном автомате вырвал жало из места укуса — читал
Погода была шикарная, отлично провели время, есть интересные находки и новые знакомства. В качестве одного из пунктов развлекательной программы обошли школу, где
Ассемблер процессора i8080A на m4
Сегодня опять сычевал почти до полуночи — вечером попался кусок кода на m4 и я, пробормотав вечное
Чтобы разбираться было веселее, придумал себе задачу — написать на m4 ассемблер, желательно не очень сложный, чтобы занятие на вечерок не разрослось потом до недельного проекта. Взял инструкции интеловского процессора 8080A — это был мой первый ассемблер. Советской аналог процессора стоял на компьютере
Несколько слов о том что такое m4.
Это довольно простой макропроцессор, умеющий заменять одни указанные строки на другие. Описание что на что заменить делается параметрическими макросами. В языке есть собственные макросы, но можно определить и пользовательские. Поддерживаются так же условия и математика. В продвинутых версиях m4 есть даже циклы, но их в любой версии можно эмулировать рекурсией.
Парочка примеров того как выглядит его синтаксис:
dnl Макрос, заменяющий одну строку на другую
define(`WORLD', `KAZAN')dnl
dnl Макрос, оставляющий первый свой параметр как есть, а
dnl второй складывающий со значением другого макроса,
dnl если второй параметр не указан, его значение — единица
define(`__pr', `define(`__ip', eval(__ip + ifelse($2, `', 1, $2)))$1')dnlЧтобы реализовать задуманное, я взял список команд процессора с кодами — их там чуть меньше 250, если брать варианты с разными регистрами, и написал на Пайтоне два генератора.
Два, потому что мне нужно было
Сначала у меня всё было сделано в одном файле, но я быстро выяснил, что макросы распространяются сверху вниз, то есть определённые ниже макросы не влияют на текст выше. Если ссылка, для которой я подсчитал адрес, находится ниже точки вызова, я этот вызов уже не могу заменить.
Вот программа на этом ассемблере, в действии её можно посмотреть на скриншоте:
ORG(h1100)
LXI H, ADDR(TEXT)
CALL hF818
JMP hF86C
LABEL(TEXT)
BYTE(h48, h45, h4C, h4C, h4F, h20, h57, h4F, h52, h4C, h44, hD, hA, h0)Не слишком отличается от привычного вида, но отличия
Результат можно увидеть у меня в репозитории.
ДНК-портрет китайца
Пять лет назад я мечтал о том, что
Утверждается, что теперь у нас есть ответ. Эксперименты идут давно, но недавно результат улучшили ещё на 12% и достигли совершенно былинных результатов.
Китайцы представили модель, которая умеет генерировать трёхмерное изображение лица по ДНК с погрешностью в 3,5 миллиметра. Причём она умеет генерировать лицо в любом возрасте, что ещё более полезно. Лица, конечно, китайские, но вряд ли сложно перенести тот же опыт на другие типажи.
Платная нейросеть ChatGPT
Решил попробовал оплатить ЧатГПТ на месяц (стоит 20 долларов). Интересно было какие плюсы это даёт. «На берегу», до решения, казалось, что это эксперимент на раз — попробую для успокоения любопытства и забуду. Но я ошибался. Самой убойной фишкой оказалось «глубокое исследование» — нейросеть за десятки минут гуглит информацию, относящуюся к запросу, а в конце составляет отчёт.
Я для теста задал найти мне информацию о «штурвале Бауэра», через полчаса у меня был отчёт, занявший несколько экранов. Я бы взял из него лишь малую часть, но удобно, что такое можно
Сам я
Да и с более прозаичными вещами эта фишка справляется отлично — например, я заказал ей найти мне переключатель дешевле 15 тысяч, чтобы подключать два разных компьютера к одной клавиатуре и мыши и двум мониторам. Он нашёл мне две модели, одна из них продаётся на «Озоне». То, что нужно!
В общем, чувствую, это будет лучшее моё вложение двадцати долларов за последнее время!
«Тайна Карпатского замка», 1981
У меня время от времени бывают навязчивые идеи.
Таких идей у меня — целый список, самых разнообразных. Сложнее всего с идеями разыскать
Например, два месяца назад они помогли мне разыскать фильм «Охота на роботов» 1984 года по тем деталям, которые я вспомнил. Я подумал, что разыщу и всё остальное, но потом дело встало. Как я ни пытался, искусственный интеллект ничем мне помочь не смог.
На днях я купил платный доступ к ЧатуГПТ, а сегодня подумал — не поможет ли мне доступ к новейшим моделям разыскать ещё
На этот раз сработало! Модель ChatGPT o3 нашла фильм по описанию — им оказалась «Тайна Карпатского замка» 1981 года, причём я наврал в деталях — мне казалось, что это
Одна из сцен, которая мне запомнилась, видна на скриншоте — девушка, которую искал главный герой, оказалась механической куклой. Ну, это я так помнил эту сцену. В реальности девушка была забальзамирована после смерти, а в этой сцене её мумия разрушилась от контакта с воздухом.
Портреты предков
Я тут необычный эксперимент проделал — загрузил фотографии жены и дочки в «ЧатГПТ» и написал такой промпт:
Я тебе загрузил фотографии мамы и дочки. Сделай тщательно описание их портретов, как это делают в полиции. Вычти черты лица мамы из черт лица дочки и нарисуй портрет вероятного отца девочки в возрасте 47 лет.
Намеренно не стал дописывать, что я на самом деле давно облысел и что на лице у меня усы и эспаньолка. Тем не менее, получилось очень похоже на меня и даже на моего папу. Можно определённо утверждать, что это
Окрылённый успехом, я сделал то, ради чего, собственно, и затеял этот эксперимент — взял фотографии бабушки со стороны мамы и её сестёр, фотографию их мамы и похожим промптом попробовал нарисовать портрет моего прадеда с их стороны.
Он жил в небольшой деревне Старое Исаково и пропал на войне. Ни одной его фотографии нет — вероятно в те годы фотоаппараты не были распространены.
Не знаю уж насколько похоже вышло, сравнить не с чем, но определённо
Попробовал то же самое со стороны папы — нарисовать Феодора Николаевича Старостина. Одно время я надеялся разыскать его могилу. Он так же пропал на войне и его военные бумаги хранились в том же сгоревшем военкомате и ни одной фотографии тоже нет — в Старой Письмянке, где он жил, видимо, тоже негде было сфотографироваться.
Тут к фотографиям я добавил несколько словесных деталей: что вероятный цвет глаз — карий, что он работал агротехником в колхозе, что надо добавить небольшую седину и что он, вероятнее всего, был скорее поджарым, чем страдал от излишнего веса.
«Курсор»
Чтобы отойти от разочарования, решил
Попросил три понятных изменения сделать, любой дурак справится:
- a@b заменить на вызов функции floor(a, b), которую я написал;
- a$ заменить на вызов floor(a, 0);
- там, где оператор else перенесен на другую строку от конструкции if, надо либо заэкранировать перенос через обратный слеш, либо вернуть else на одну строку с if.
Задача простая, но даже тут «Курсор» накосячил, не справившись с подсчётом скобок. В итоге, тщательно проверял все замены и считал скобки я сам. К чёрту такую автоматизацию, по сумме, я бы сам быстрее сделал.
Раньше я бы к этому спокойно отнёсся, но в последнее время раздражительность повысилась — мёрзну и всё время на грани простуды. Отопление давно отключили, а на улице резко похолодало — снег уже несколько раз шёл. Но, видимо, недостаточно холодно, чтобы включать отопление обратно.
Вокруг очень многие болеют пневмонией, это ещё что такое, откуда? Я уверен, что слово «пневмония» я слышал за прошедшие два года больше, чем за всю прошлую жизнь. Сам я всё время кашляю, хотя не чувствуется, что болею, временами только
Эрудиция, ум, предприимчивость
Вряд ли стоит говорить о том, как ценен для человека ум. В конце концов, именно ум дистанцирует нас от других животных. Но ум очень сложно померить. Как быстро понять, что
Это потому, что люди от необходимости придумали несколько признаков, чтобы быстро определить — умный человек или нет, все они грешат неточностями, но других у нас нет. Например, мы признаём умными тех, кто хорош в науках — например, математике или физике. При этом они могут казаться откровенно тупыми в других областях. Эрудированный человек тоже кажется умным, мы привыкли к тому, что умные люди эрудированны, а исключения редки. Нам кажутся умными грамотные люди — как правило грамотность приходит с упорной работой над собой, а она развивает интеллект.
Я не буду пытаться дать определение уму или интеллекту, я хочу поговорить о другом. Мы столкнулись с новым объектом, который кажется умным, но умным не является — речь, конечно, о больших языковых моделях.
Человек оказался не готов к тому, что чат из машины хранит в своих формулах столько знаний, вычисляет некие связи между ними, так хорошо пишет тексты, что они кажутся рассуждениями, но при этом не является умным.
Некоторые мои знакомые, всерьёз обманувшись этим, навсегда (по их словам) разочаровались в больших языковых моделях, когда столкнулись с «галлюционациями» — это когда языковая модель в процессе генерации текста в некоторых местах далеко отходит от реальности, просто потому что работает так, что её задача — сгенерировать правдоподобный текст, а не рассуждать, придерживаясь фактов. Вероятности выпадения следующего слова настроены в ней так, чтобы как можно ближе быть к реальным знаниям, но и только.
Но хуже всего, что другие мои знакомые вдруг уверовали в мудрость языковых моделей и просят у них точного рецепта как поправить дела в ситуациях, которые определяют их жизнь. Я к ним не лезу, у меня нет синдрома мессии, да кажется, что они так глубоко верят, что мои слова для них куда менее весомы, чем их заблуждения. Это похоже на психотерапию, но разница огромна — психотерапевт никогда не будет делать выбор за вас, языковые модели же подобной этикой не связаны, в них нет такого понятия.
В этой связи я даже
Природа и дети
Присматривал вчера за дочкой, которая играла на речке — строила мостик от одного островка к другому из прутиков и камней. Пока я смотрел на то как она, оступаясь, перебиралась по веткам, подумал, что не знаю как относиться к нейропсихологам, которые занимаются детьми.
Сейчас считается, что средний современный ребёнок хуже владеет своим телом, хуже его чувствует, хуже оценивает риски, чем дети моего, например, поколения, потому что ему негде вот так полазить, рискуя упасть в холодную воду, ободраться и наставить себе синяков.
Я не исследовал тему глубоко, но знаю, что проблема обсуждается, а специалисты существуют, мы и сами водили дочку к одной из них.
С одной стороны — получение опыта на природе кажется
Один парень там сломал ногу, другой пропоролся о торчащую, как оказалось, в месте приземления арматуру, а мне упал на голову кирпич, правда это была другая стройка… Не лучше ли контролируемая среда под присмотром взрослого?
Ответа у меня нет, наверное, потому что и вопрос меня не настолько интересует. Мы дочке разрешаем взаимодействовать со средой столько, сколько она хочет, вопрос только времени и доступности среды. Это не значит, что я стану кричать на стройке «молодец, дочка, заберись повыше», но и у неё желания лезть на стройку не возникает.
Таблица умножения
Еве в школе задали выучить таблицу умножения. Пытались учить по столбикам — умножение сначала на одно число, потом на следующее и так далее.
Против такого я знаю только один способ — геймификацию. Задумался что за игру можно было бы сделать,
Сделали программу, где ёжик задаёт вопросы, на неправильные ответы недовольно верещит, а на правильные — ест банан. Недавно ходили с дочкой кормить и гладить живых ёжиков, бананы они уминают за милую душу.
За правильный ответ начисляется одно очко, на неправильный — вычитается. На сто очков сделали танец ёжика под музыку.
Программировал, в основном, я, для дочки пока такое сложно — взаимодействие двух спрайтов через сообщения у неё пока в голове не укладывается, но когда она загоралась
Оно того стоило — дочка вчера на интересе дошла до танца, хотя уже очень устала от прошлых повторений таблицы и от программирования.
Дочкин конный спорт
Из всего многообразия того, чем занималась или занимается сейчас дочка, конный спорт стоит немного особняком — несмотря на то, что тренировки проходят относительно редко — всего раз в неделю, это, тем не менее, занятие которым она увлечена уже несколько лет с перерывами только на болезнь, отпуска и каникулы вне дома.
Дочка без ума от лошадей и всегда рада занятиям конным спортом — это у неё от её мамы. Думаю, она совсем бы была не против ходить туда чаще, если бы мы нашли для этого время. У неё сейчас прекрасный возраст — есть желание и энергия пробовать себя во всём подряд. Мы это только поддерживаем, но надо оставлять и время на отдых.
Тем не менее, хотя и редкие, но регулярные занятия столько лет подряд, дают результаты. Дочка часто выступает на соревнованиях, а в прошлое воскресенье выступила в новом качестве — впервые была одна на маршруте, но заняла второе место. До этого, если не считать парного выступления с мамой, её лошадь под уздцы всегда водил тренер, дочкина же задача была в том, чтобы принимать правильную посадку.
Перед выступлением волновалась, но выступила, как по мне, шикарно. Сделала две ошибки — вместо остановки перевела лошадь на шаг и была помарка после вольта (круга) — надо было вывести лошадь позже, чтобы чётче попасть между балок препятствия.
Что происходит, когда main — переменная
Хочу провести работу над ошибками.
Вчера я писал о сбойной программе на Си с самым коротким текстом и, как оказалось, неправильно описал почему, собственно, она вызывает сбой.
Напомню, речь идёт о программе, которая состоит из одного слова — main; или int main;, если забыть о стандарте Си89. Я думал дело в том, что попытка запустить программу приходит к чтению переменной и передаче управления на адрес ноль, но один читателей попенял, что в оригинальной статье указана другая причина.
Я решил глянуть получившийся ассемблер, чтобы разобраться где же правда. Для этого удобно использовать утилиту objdump:
objdump -D -d -M intel ./smallОказалось, что я был неправ.
Чтобы это увидеть, надо посмотреть в ассемблерном листинге код, который вызывает функцию __libc_start_main() — она передаёт управление функции main(), указатель на которую указывается в регистре rdi. Как мы видим, адрес, записываемый в этот регистр указывает на секцию .data, код в которой запрещён к запуску, именно поэтому программа и падает.
Почему именно туда? Там хранятся все переменные, в том числе переменная main, то есть используется не адрес, записанный в этой переменной, как я думал раньше, а выполнение передаётся прямо на адрес, где хранится сама переменная.
Кстати, это означает, что на оборудовании, где защиты памяти нет или при запуске в реальном режиме (например,
Маленькая сбойная программа на Си
Попалась мне тут статья про задачку, которую автору задали в университете — написать самую маленькую (по объёму текста) программу на Си, которая компилируется, но выполняется с ошибкой. Прежде чем читать, я попробовал написать такую самостоятельно.
Сначала я подумал о рекурсии:
main(){main();}Для экономии байт можно использовать стандарт Си89, где всё, у чего нет при определении задания типа, имеет тип int — это позволяет убрать тип функции main.
Программа компилируется, но, как и задумывалось, падает с ошибкой:
bolk@note ~$ gcc-14 -std=c89 small.c && ./a.out
Segmentation fault: 11Дальше я подумал, что вряд ли в статье используется такой очевидный способ и, перебрав в уме несколько вариантов, решил сосредоточится на делении на ноль. Лучший вариант, который мне пришёл в голову, вот такой, он на один байт меньше:
main(a){a/=0;}Очевидная идея — поделить число на ноль и никуда не присваивать, работать не будет, компилятор просто выкинет константное выражение. Поэтому его надо или присвоить переменной или вернуть. return занимает больше присваивания, но куда бы мы могли присвоить? Нужна же переменная.
Переменную можно взять из аргументов функции main, в первый её аргумент записывается число параметров при вызове. Если ноль поделить на ноль, это ошибки не вызовет, но там всегда не ноль, потому что нулевой параметр всегда существует и содержит имя программы.
Поэтому мы можем поделить его на ноль и программа упадёт при вызове:
bolk@note ~$ gcc-14 -std=c89 -Wno-div-by-zero small.c && ./a.out
Floating point exception: 8Но самая короткая сбойная программа оказалась почти втрое меньше. Выглядит она так:
main;Она компилируется, хоть и с замечанием, и падает, как и требуется по условию:
bolk@note ~$ gcc-14 -std=c89 small.c && ./a.out
small.c:1:1: warning: data definition has no type or storage class
1 | main;
| ^~~~
Bus error: 10Тут определяется статическая переменная main с неявным заданием типа int, которая, как все такие переменные, инициализируется нулём. Поскольку компоновщик видит имена, но ничего не знает о типах, он связывает адрес переменной с адресом точки входа в программу. Когда программа запускается, управление передаётся по адресу ноль, что вызывает ошибку.
Ошибка вызывается, кстати, потому что адрес ноль является зарезервированным значением в Си. Ноль обозначает, что указатель пустой (имеет значение NULL), поэтому при обращении к нему срабатывает специальная ловушка, вызывающая ошибку. Правда это возможно только на платформах с защитой памяти.
Добавлено: Оказалось, что я неправильно разобрался в происходящем.
Бинтуронги и лемуры
Большую часть своей жизни я прожил кошатником, но несколько лет во время очередного самокопания, внезапно понял, что теперь я собачник. Не знаю как так случилось, но на улице я скорее поглажу
Но есть в моём сердце место и для других животных, с которыми мне было очень интересно пообщаться.
В Таиланде мне очень понравились бинтуронги. Для нас это экзотика — больше ни в одном зоопарке мира они мне не попадались. Животные очень милые и общительные, жаль только, что ночные — днём они
По характеру любопытные, но очень тактичные. Не помню чем мы их там кормили, но ни разу не было такого, чтобы они сами выхватили у нас еду, как это делают обезьяны, например. Ещё у них очень сильный хвост — они даже могут на нём висеть, пока держишь их на руках, они всё время очень трогательно им за вас цепляются.
В Китае довелось потрогать лемуров. Они более бесцеремонные, но при этом всё равно очень милые. Куда более своенравные и независимые — не могу себе представить, чтобы их можно было подержать на руках, как кошку или погладить полной ладонью. Бинтуронги на такое соглашались с полной готовностью.
Интересно, что лемуры очень неохотно подходят, если стоишь к ним лицом, может быть это для них признак агрессии, как для макак, когда им смотришь в глаза. Вот если подставить спину — почти сразу прыгают и потом с удовольствием сидят на плече, выбирая что именно ты им там даёшь в качестве корма.
Есть животное, с которым я бы очень хотел пообщаться, но вряд ли доведётся — это красная панда. Впервые близко я её увидел в зоопарке Барселоны в 2014 году. Позже мы ещё специально дважды летали в Москву, чтобы показать её дочке, которой она тоже очень нравится. Дважды, потому что в первый раз панда так и не вышла из домика в вольере.
Принтер, MacOS и IPv6 часть вторая
К сожалению, ни отключение IPv6, ни фиксирование адреса IPv4 (ещё одна мера, которую я попробовал) не излечили полностью проблемы с принтером. Но в процессе копания в настройках, я обратил внимание, что у него очень старая прошивка — 2012 года. Подумал, может обновление решит проблему?
На сайте последняя прошивка датируется началом
Вообще это очень странно — выпускать для принтера каждой линейки свою программу для обновления прошивки, да ещё и для каждой операционной системы отдельно. Загадка для меня, почему нельзя писать более универсально — программу, которая обнаруживает подключенную модель принтера, проверяет устарела ли прошивка, качает её (или указывает где её взять), после чего обновляет.
В общем, поскольку под «МакОС» программа не работает, пришлось обновлять прошивку через «Виндоуз», благо у меня уже развёрнута виртуалка с Windows XP, которую я использую, чтобы переписывать фотографии, сделанные винтажными часами «Касио».
Поставил туда драйвер от принтера и программу для обновления прошивки.
Теперь остаётся наблюдать — решилась ли проблема.
Принтер, MacOS и IPv6
Я выключил IPv6 на принтере, но позже оказалось, что полностью проблема не решилась
Я вообще привык, что в МакОСи постоянно
Вчера решил зайти в его
Похоже в ней и было дело. После этого, как я выключил этот протокол, принтер стал работать без нареканий.
Cначала запустил из командной строки сканирование сети:
$ dns-sd -B _printer._tcp
Browsing for _printer._tcp
DATE: ---Mon 28 Apr 2025---
21:09:21.373 ...STARTING...
Timestamp A/R Flags if Domain Service Type Instance Name
21:09:21.374 Add 2 14 local. _printer._tcp. HP LaserJet Professional P1102wПотом запросил информацию о найденном принтере:
$ dns-sd -L "HP LaserJet Professional P1102w" _printer._tcp local.
Lookup HP LaserJet Professional P1102w._printer._tcp.local.
DATE: ---Mon 28 Apr 2025---
21:09:59.306 ...STARTING...
21:09:59.306 HP\032LaserJet\032Professional\032P1102w._printer._tcp.local. can be reached at NPI78BD4A.local.:515 (interface 14)
txtvers=1 qtotal=1 rp=auto pdl=application/vnd.zeno-zjs,application/vnd.cups-raster ty=HP\ LaserJet\ Professional\ P1102w product=\(Hewlett-Packard\ HP\ LaserJet\ Professional\ P1102w\) priority=50 adminurl=http://192.168.0.127 usb_MFG=Hewlett-Packard usb_MDL=HP\ LaserJet\ Professional\ P1102w Transparent=T Binary=TАдрес, на который надо зайти браузером, находится после подстроки adminurl=.
Митап по PHP
Признаюсь, я
Если судить по отзывам, событие чрезвычайно всем понравилось. Многие сказали, что давно не участвовали
Не знал, что организация подобный событий отнимает столько сил. Несмотря на список, который мы начали вести с самого начала, то одно, то другое постоянно выпадало из зоны внимания, настолько много всего пришлось учесть.
Мы начали примерно за два месяца, тем не менее,
Я очень переживал за эти вещи, потому что
Большое спасибо докладчиками — Александру Макарову, Максиму Пестову и Станиславу Кошевому за то, что вызвались поучаствовать и интересные доклады.
Видео я показать не могу, верьте на слово, — мы его принципиально не записывали. Если мы сделаем наши митапы регулярными, не будем записывать и впредь — наша идея в том, чтобы люди больше общались, хотя бы вынуждено, приходя вот на такие события.