RSS-канал «Евгений Степанищев»
Доступ к архиву новостей RSS-канала возможен только после подписки.
Как подписчик, вы получите в своё распоряжение бесплатный веб-агрегатор новостей доступный с любого компьютера в котором сможете просматривать и группировать каналы на свой вкус. А, так же, указывать какие из каналов вы захотите читать на вебе, а какие получать по электронной почте.
Подписаться на другой RSS-канал, зная только его адрес или адрес сайта.
Код формы подписки на этот канал для вашего сайта:
Последние новости
Управление «Алисой»
2024-03-21 21:19
Хочу попробовать решить одну прикладную задачу, пока не буду описывать какую. Для этого надо научиться управлять яндексовской «Алисой» из локальной сети. В идеале — проговаривать произвольную фразу. Почитал интернет, посмотрел как это делается.
Официальный документации нет, но хорошие люди провели обратную разработку и задача выглядит как будто бы не очень сложно. Получаем токен, в сети через mDNS по имени _yandexio._tcp.local. ищем нужную колонку, находим, команды отдаём по протоколу WebSocket.
Так как я сейчас стараюсь больше времени проводить за книгой, чем за компьютером, всё, что успел — освоить модуль zeroconf для Гоу, чтобы по имени колонки получать её айпи-адрес и порт.
Получившийся код выглядит так:
import "github.com/grandcat/zeroconf"
// …тут остальные импорты…
const Service = "_yandexio._tcp"
const Domain = "local."
func getAlisaAddr(instance string) (*zeroconf.ServiceEntry, error) {
resolver, err := zeroconf.NewResolver(nil)
if err != nil {
log.Fatalln("Failed to initialize resolver:", err)
}
entries := make(chan *zeroconf.ServiceEntry)
ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
err = resolver.Lookup(ctx, instance, Service, Domain, entries)
if err != nil {
return nil, err
}
entry := <-entries
cancel()
<-ctx.Done()
if entry == nil {
return nil, fmt.Errorf(
"Failed to lookup for service instance '%s'",
instance
)
}
return entry, nil
}
Теперь надо разобраться где взять токен и как выглядят команды.
Канал Марка Робера
2024-03-19 08:50
Марк Робер — американский видео-блогер, инженер, изобретатель и популяризатор инженерного дела, настоящий феномен. Я его давний фанат, всегда с удовольствием смотрю всё, что он снимает.
Дочка, однажды посмотрев у меня через плечо один из роликов, попросила показать ей все остальные и теперь всё новенькое мы смотрим вместе.
У Марка есть лаборатория «Кранч Лабс», — это такой инженерный детский лагерь на стероидах. Лаборатория выпускает детские инженерные наборы для самостоятельной сборки. Их реклама звучит в каждом ролике Марка.
В один момент реклама подействовала, и дочка начала просить купить один из наборов. Я не стал сопротивляться — самому интересно как выглядят наборы вживую и насколько их будет интересно собирать. Выбрали на «Ебее» подешевле — из подержанного. Я решил новый не брать, вдруг собирать их не понравится.
Взяли «Охоту на уток». Двадцать дней ожидания и вчера, наконец, получили. Думаю в выходные попробуем собрать.
Книга против компьютера
2024-03-18 08:53
У меня ноутбук и я частенько дрейфую по дому с ним — либо работаю, либо развлекаюсь. Так просто одно от другого не отличить. Для моих близких это создаёт проблему — совершенно непонятно можно меня отвлечь или нет. Из-за этого, насколько я заметил, жена и дочка стараются меня не трогать, если я с ноутбуком. В итоге, им не хватает меня, а мне — их.
В эти выходные попробовал что-нибудь с этим сделать. Можно было бы переместить всю работу в кабинет, но там мне нравится сидеть только когда мне нужна максимальная концентрация, в остальное время мне там слишком одиноко.
В итоге, я думаю, что в эти выходные мне удалось нащупать рецепт. Моя онлайновая активность слишком разнообразная, поэтому это не методика, а только направление в котором надо двигаться.
Во-первых, «что бы такое посмотреть» я частично заменил на «что бы такое почитать». Причём в бумажном виде, чтобы электронные устройства не вызывали иллюзию, что я работаю. Благо, у меня есть целая гора когда-то купленных бумажных книг на любой вкус. Кажется рефлекса «его нельзя отвлекать, он за книгой» у моих близких нет, а чтобы глубоко не уходить в книгу, я решил, что буду читать что-нибудь научно-популярное.
Во-вторых, «чем бы заняться в онлайне» я частично заменил на «чем бы заняться в офлайне». Лучше всего в этом пункте сработали настолки. Когда-то они мне до смерти надоели, но к настоящему моменту мне уже не надо себя пересиливать, чтобы в них играть. Сыграли несколько партий в «Коварного лиса». Я получил удовольствие, надо бы купить что-нибудь ещё.
В-третьих, очень много времени в эти выходные провёл в комнате дочки. Она у нас творческий человек, поэтому обычно что-то тихо мастерит в куче своих проектов, которыми завалена вся комната. Но она не раз сама говорила, что ей в этом нужна компания. При этом ей, как и мне, достаточно, чтобы рядом просто кто-то был, активного участия не требуется.
В-четвёртых, подобрал несколько каналов на «Ютубе», которые интересно было бы смотреть всем. За выходные, когда меня тянуло обратно онлайн, мы совокупно несколько часов провели на всяким условно-познавательным контентом, типа адвоката Егорова или Фроста.
Кстати, спасибо Фросту, в голове начал созревать план развлекательного похода выходного дня — опробовать всякой походной дичи, купленной на Алиэкспрессе. К лету можно было бы осуществить.
Спойлеры по длине
2024-03-16 10:04
Как правило, я спокойно отношусь к спойлерам. Не раз были случаи, когда случайно при мне раскрывали твист сериала или фильма, которые я смотрел или только собирался смотреть. Меня это особо не трогало и ничего не меняло в ощущении от просмотра.
Но я знаю людей, которые очень чувствительны к любого вида спойлерам, некоторые — вплоть до эмоционального срыва. Люди, подсевшие на эмоции от сюжетных поворотов. Пишу это безо всякого осуждения, кстати.
Интересно как на них влияет самый главный спойлер — длина произведения. Надо будет спросить.
Я прямо сейчас отложил чтение книги «Идеальный хищник» супругов Стефани Стратди и Тома Паттерсона, чтобы написать этот текст. Это документальная книга о том как жена боролось за своего мужа, подхватившего во время путешествия по Египту супербактерию, устойчивую ко всем известным антибиотикам.
В начале книги мы читаем завязку, потом происходит кризис и вот, казалось бы, больной идёт к выздоровлению, видимо скоро финал. Но я только на середине книги, поэтому понимаю, что, судя по количеству оставшихся страниц, финалом и не пахнет.
В этой книге есть ещё и ненавистная многими любителями твистов «сценарная броня» — главный герой книги гарантированно не умрёт, иначе как бы он смог поучаствовать в написании книги.
Кстати, «сценарную броню» обожает моя дочка — если она начинает сопереживать кому-то на экране, всегда спрашивает у меня главный это герой или нет. В её мире главные герои не умирают. Ох, милая…
«Телефон»
2024-03-14 08:59
Я мало пользуюсь приложением «Телефон». Звоню только своим родителям и нескольким друзьям. В основном предпочитаю общаться через мессенджеры — из-за разницы в часовых поясах или распорядке дня. Поэтому «Телефон» у меня не слева внизу, куда его по-умолчанию помещает каждый производитель смарфонов, а просто на первом экране.
Туда же вынесены и СМС — за месяцы я иногда не пишу ни одной, правда частенько их получаю от разных сервисов, но в этом случае я их читаю из уведомлений, поэтому само приложение запускаю нечасто.
По моим наблюдениям, у большинства людей, с которыми я общаюсь ситуация та же — звонят они очень мало, но почему-то никто не переносит приложение «Телефон» из его левого нижнего угла. Я специально примерно месяц внимательно смотрел на экраны других людей.
Если вы тоже редко звоните, оно там лишнее. Поместите туда что-нибудь такое, чем вы пользуетесь чаще.
Обновление прошивки автомобиля
2024-03-12 08:49
Казалось бы, пора привыкнуть — у меня дома даже выключатели имеют прошивку, на которую иногда прилетают обновления через интернет. Но почему-то меня каждый раз изумляет, что автомобиль у нас теперь тоже обновляется. С момента покупки применилось уже три обновления.
При этом ещё больше изумляет, что в машине появляются новые возможности, которых раньше не было. Хотя мне, как будто бы, по роду занятий положено воспринимать это вполне обыденно.
Опасаюсь, что подсяду на эти положительные эмоции, и без них, когда обновления кончатся, будет чего-то не хватать. У меня так со смартфонами — пока обновляются, меня всё радует, как только перестают, есть период, когда мне хочется, чтобы уже что-нибудь поменялось. Потом привыкаю, конечно.
Конец ускоренной strlen на «Флиппере»
2024-03-11 09:00
В итоге, эпопея с ускорением функции замера длины строки в кодировке UTF-8 на «Флиппере Зеро» подошла к концу — коммит не взяли.
У меня с самого начала этой затеи были сомнения. Я понимал, что для того, чтобы решить чью-то проблему, надо сначала доказать, что она существует, чему я должного внимания не уделил. Кроме того, сейчас в мире программирования очень важно решить проблему понятным образом, а векторное ускорение мало кому знакомо.
Тем не менее, я с удовольствием повозился инструкциями SIMD. До этого мини-проекта у меня было теоретическое понимание о том, что это за функции, но на практике я их не использовал.
Моя функция, кстати, претерпела некоторые изменения:
size_t furi_string_utf8_length(FuriString* str) {
size_t len = string_size(str->string);
const char * cstr = string_get_cstr(str->string);
const char* end = cstr + len;
if(len >= sizeof(uint8x4_t)) {
const char* vend = end - sizeof(uint8x4_t);
int8x4_t zero = 0x00000000;
int8x4_t one = 0x01010101;
int8x4_t threshold = -1077952577; // -65, -65, -65, -65
do {
int8x4_t vec = *(int8x4_t*)cstr;
__ssub8(threshold, vec);
uint8x4_t result = __sel(one, zero);
len -= __usada8(result, zero, 0);
cstr += sizeof(uint8x4_t);
} while(cstr <= vend);
}
while(cstr < end) {
signed char c = *cstr++;
len -= c < -64;
}
return len;
}
Оказалось, что тип FuriString хранит в себе бинарную длину строки, поэтому я переделал код, чтобы он не пытался читать чужую память. В векторизованой части это было вероятно, но своих рассуждений и дискуссии по коммиту я сделал вывод, что в случае «Флиппера» это не имеет какого-либо значения.
Тем не менее, если использовать бинарную длину, код получается более аккуратным и немного упрощается, так что грех не воспользоваться. Интересно бы, кстати, измерить наивный алгоритм без векторной части, но с использованием бинарной длины, наверное займусь этим в ближайшее время.
В итоге, решая эту, возможно несуществующую, проблему, я опробовал на практике векторные инструкции расширений NEON и DSP SIMD, научился делать два параллельных запроса на вливание в «Гитхабе» и ещё раз вспомнил как компилировать и заливать свою прошивку во «Флиппер Зеро».
Опять голова болит
2024-03-09 18:19
Блин, какой день уже болит голова, лишая сил. Внутри всё рвётся от миллиона дел, которые хочется сделать, но сил никаких нет. Не то, чтобы я лежу пластом, рутину вполне удаётся делать, что-то привычное делаю почти без труда, но вот более интеллектуальные занятия уже не даются.
Головная боль вообще мой бич — иногда голова так болит, что не сплю несколько дней. Такое было несколько раз в жизни. К счастью не в этот раз.
К сожалению, врачи не нашли у меня ничего им понятного, такого что можно было бы исправить и эти боли прекратились бы. Она так меня достаёт, что одна из первых заметок на этом сайте была о головной боли.
Как же я устал.
«Жгонский язык» А. В. Громова
2024-02-24 10:09
Один из друзей поделился проектом по некоторым узким разделам истории Казани, который он делает потихоньку в свободное время. В рамках этого проекта он разыскивает целую гору различной редкой литературы, которой не то что онлайн, даже в твёрдом виде сложно отыскать.
Я ему попытался помочь и в некоторых позициях даже преуспел. Особенно хочу выделить книжку Александра Вячеславовича Громова «Жгонский язык», которую каким-то чудом удалось отыскать в одном из антикварных онлайн-магазинов и купить за 700 рублей.
Книжка редкая — выпущено было всего 500 экземпляров, но интересна, конечно, только очень узким специалистам.
Жгонский язык — тайный язык ремесленников, изготавливавших валенки. Как следует из слова «тайный», нужен был, чтобы оберегать профессиональные секреты от посторонних.
Был очень распространён в деревнях и сёлах около Костромы, но к настоящему моменту почти вымер. На Ютубе можно найти отдельных людей, которые ещё его используют, но и они не вечные.
Книжка пришла, и у меня дилемма. С одной стороны, я очень трепетно отношусь к авторским правам — следую принципам добросовестного цитирования, всегда смотрю лицензию используемых изображений и так далее. С другой стороны книга «Жгонский язык» как будто бы совсем не коммерческий проект, но автор умер и из каких соображений он её издавал точно сказать нельзя.
В общем, мне хочется её отсканировать и выложить в открытый доступ, чтобы люди могли воспользоваться уникальным справочником, если он им нужен для исследований. С другой стороны — авторские права и всё такое. Попробую почитать на тему того не оставил ли Громов какого-то завещания на этот счёт, но надежды на это мало.
Если нет, подарю книжку своему другу, уберу соблазн с глаз долой.
Надо бы добавить мой strlen во «Флиппер»
2024-02-22 08:47
Можно подумать, что я забросил возню с «Флиппером», так как какое-то время писал об этом часто, а сейчас поутих. На самом деле я всё жду, когда разработчики прошивки вмержат мой коммит для поддержки Юникода, плюс потихоньку вожусь со своей векторной реализацией функции для определения длины строки в кодировке UTF-8.
До недавнего времени я её надеялся ускорить, поэтому пытался вносить какие-то мелкие улучшения, но все они никакого эффекта не дали. Зато при аккуратном тестировании нашёл ошибку, — неправильно задал граничное условие в векторизованном куске. Хорошо, что проверил. В блоге у меня уже исправленная версия.
Будем считать, что с этим вопросом я закончил, хочу теперь попробовать добавить этот код в прошивку «Флиппера». Остались сделать два шага.
На замерах моя реализация обогнала встроенную на порядок — восемь секунд против 55 на двух миллионах итераций по небольшой строке. Но теперь надо воткнуть её в прошивку, чтобы учесть влияние реализации строкового типа FuriString, в котором будет использоваться эта функция и провести новые замеры. Надеюсь сделать это в ближайшие выходные.
Второй шаг для меня сложнее. У меня уже есть выписанная прошивка «Флиппера», в которой торчит непринятый коммит. Я никогда раньше не создавал на «Гитхабе» два разных запроса в рамках одного чужого проекта, не знаю как это делается. Если кто-то умеет, расскажите в комментариях.
Шутка, которая не работает
2024-02-21 07:16
Тут в чате бывших коллег, где мы постим мемы, пробежала картинка, которая больше повеселила меня не смыслом, который в неё вкладывал автор, а тем, что на системе, под которую написан код на ней (Виндоуз, очевидно), она не выполнится.
Проблема тут в том, что вызов os.remove умеет удалять только файл, тогда как System32 — папка, знакомая многим пользователям Виндоуз. Я не уверен точно, но думаю, что при её удалении система будет сопротивляться. Она, вроде, как-то защищена от такого.
Возможно, кстати, код и не предполагалось делать рабочим, а шутка немного тоньше — ведь вызов os.remove можно прочитать как «удалить операционную систему», не знаю, я в любом случае хотел рассказать не об этом.
Дело в том, что шутка написана под ОС, под которой она работать не будет, но смешно то, что под ОС, на которую она рассчитана не была, она вполне может заработать.
В Линуксе или МакОСи надо в любом месте, где будет запускаться эта программа, создать папку C:, в ней — папку Windows, а в ней — файл System32, который и удалится, если выпадет искомое число на рандомайзере.
Киргизский самовар
2024-02-20 08:49
Почти три года назад я летал на международный форум в Киргизию и до сих пор иногда вспоминаю ту поездку. Принимали нас по высшему разряду, большое спасибо киргизской стороне, тут выше всяческих похвал.
Но чаще всего я вспоминаю совершенно неожиданное — самостройное место для отдыха по пути на Иссык-Куль, где нас поили чаем из самоваров и немного покормили.
Выглядит оно довольно простенько, но меня сильно зацепил там один нюанс. Дело в том, что на первой линии там стоят огромные дровяные самовары, которые я рассматривал бы, наверное, часами, дай мне волю.
Все самовары, которые мне удалось рассмотреть (а времени было не так уж много), — дореволюционные, очень красивые, с клеймами производителей и медалями за победу во всевозможных выставках.
Каждому более ста лет, где их взяли — ума не приложу. По всей видимости, специально никто именно дореволюционные не подбирал, думаю соображения сугубо практические — с электричеством на этом островке плохо, а дровяные самовары именно тогда делали очень качественные, да ещё огромных объёмов.