Pull to refresh
414
185.2
Дмитрий Брайт @Bright_Translate

Переводчик

Send message

Как я выиграл $2 750 с помощью JavaScript, ИИ и банки WD-40

Reading time21 min
Views8K

За последние десять лет я выиграл во многих маркетинговых видео-конкурсах, используя проверенные техники. Но конкретно этот случай стал первым, в котором значительную роль сыграло программирование и инструменты ИИ.

В этой статье я опишу, как с помощью ChatGPT и JavaScript выяснил, что реально могу победить в конкурсе, и как в итоге пришёл к победе.
Читать дальше →
Total votes 35: ↑31 and ↓4+42
Comments10

Кастомизация окна прогресса в оболочке Windows

Level of difficultyMedium
Reading time9 min
Views3.6K

Для запуска Dolus на вашей системе мы используем кастомный загрузчик. Этот скромный исполняемый файл скачивает последнюю версию программы и сразу всё настраивает. Процесс происходит быстро и легко, плюс вы всегда оказываетесь при последней версии.

Но есть здесь и нюанс: загрузчик — это первое, что встречают пользователи, поэтому ему нужен GUI. А поскольку написан он на C# и с целью сохранения лёгкости компилируется перед исполнением (AOT, ahead-of-time), традиционные решения исключаются. Соблазнительным вариантом выглядит Avalonia, но в этом случае сам установщик станет больше той программы, которую он должен устанавливать.

Итак, что у нас остаётся? Можно углубиться в Windows API и создать собственное «окно», но это кроличья нора, сулящая кошмары при обслуживании. К счастью, в Windows есть диалоговое окно прогресса.
Читать дальше →
Total votes 27: ↑26 and ↓1+38
Comments10

Эй, компьютер, создай-ка мне шрифт

Level of difficultyMedium
Reading time6 min
Views6.6K

Это история о том, как я с нуля осваивал создание генеративных моделей МО, попутно обучая компьютер создавать шрифты. Да, настоящие типографские шрифты, состоящие из набора заглавных глифов. Созданная мной модель получает на входе описание шрифта и создаёт на выходе файл с их готовым набором. Назвал я свой проект FontoGen.

Выше вы видите несколько примеров шрифтов, сгенерированных моделью FontoGen.

Ну а дальше я подробно опишу всю историю.
Читать дальше →
Total votes 40: ↑40 and ↓0+65
Comments10

А птицы-то не настоящие! Инструкция по созданию собственного «пернатого»

Level of difficultyMedium
Reading time5 min
Views6.7K
Птица для слежки

А вы догадывались, что птицы не настоящие? В действительности это мобильные устройства, оснащённые камерами и микрофонами для ведения правительственной слежки. Вы можете задаться вопросом, почему бы властям просто не использовать сотовые телефоны, которые носит с собой каждый. Даже не знаю. Не я создаю правила.

Теперь, когда я окончательно разрушил свою репутацию на LinkedIn, пора написать реальную статью.
Читать дальше →
Total votes 36: ↑34 and ↓2+52
Comments3

Интригующее расследование QUEENCREEK

Level of difficultyMedium
Reading time4 min
Views4.3K

На ваших машинах — будь то домашних ПК или корпоративных серверах — установлено много программного обеспечения, которое разработано с учётом автоматического запуска без участия пользователя.

Вот хорошие примеры:

  • Жизненно важные системные и пользовательские службы, такие как подключение к сети или синхронизация времени, которые запускаются при старте системы.
  • Антивирус или другие решения для обеспечения безопасности, запускающиеся сразу после загрузки ОС.
  • Проверка обновлений критического ПО, выполняющаяся каждые несколько часов.

К сожалению, программное обеспечение, которое запускается автоматически, является очень заманчивым для вредоносного ПО. Такое ПО зачастую устанавливает автоматизированные исполняемые файлы, которые могут периодически активировать свой вредоносный код с целью сохранить присутствие в системе. В связи с этим важно обеспечить, чтобы в системе не было никаких подозрительных автоматизированных скриптов, которые могут оказаться вредоносными (или просто нежелательными).
Читать дальше →
Total votes 32: ↑30 and ↓2+51
Comments16

Домашние шпионы: как поставщики WiFi-оборудования следят за вашей личной жизнью

Level of difficultyEasy
Reading time9 min
Views18K

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

Речь идёт о WiFi-узлах (WiFi-pods), производимых такими компаниями, как Plume Design Inc. Эта компания заняла значительную долю рынка WiFi-устройств, охватив своими продуктами с возможностью слежки более 60 миллионов домашних систем по всему миру.
Читать дальше →
Total votes 30: ↑28 and ↓2+40
Comments19

I в LLM означает Intelligence

Level of difficultyEasy
Reading time6 min
Views4.2K

Я уже давно ничего не писал об ИИ или о том, как мы (не) используем его для разработки в нашем проекте curl. Больше откладывать нельзя. Хочу продемонстрировать вам наиболее значительный эффект, который ИИ может оказать на curl сегодня, подкрепив его примерами.
Читать дальше →
Total votes 34: ↑29 and ↓5+39
Comments29

Насколько Linux подходит для дизайна UX — мой опыт за год работы

Level of difficultyEasy
Reading time7 min
Views12K

В июне 2023 года я начал работать фрилансером в сфере UX-дизайна. Для этого мне требовался компьютер. К сожалению, спустя 7 лет верной службы мой MacBook Pro отправился на покой. И не из-за того, что перестал работать, а потому, что в Apple прекратили поставлять для него обновления безопасности. Просто стало небезопасно выполнять на нём заказы.

Я рассматривал в качестве альтернативы Windows и обнаружил, что в этой ОС постоянно появлялась какая-то новая, отвлекающая реклама; она пропитывалась тёмными паттернами UX и постепенно делала непригодным для использования старое железо.

И я решил, что должен быть более удачный способ, нежели каждые 5 лет выбрасывать свой компьютер и покупать новый.

Хотелось работать за чем-то надёжным, имеющим минималистичный дизайн и созданным с упором на долговечность. Здравствуй, Linux.
Читать дальше →
Total votes 49: ↑41 and ↓8+52
Comments82

Почему порой так сложно вводить текст в терминал

Level of difficultyMedium
Reading time8 min
Views18K

Как-то раз я спросила у пользователей Mastodon, что их не устраивает в работе с терминалом, и одним из ярких замечаний оказалось «редактирование уже введённой команды».

Мне эта проблема тоже реально знакома. Несмотря на то, что ввод текста и его редактирование является «базовой» задачей, мне потребовалось около 15 лет каждодневной работы с терминалом, чтобы привыкнуть к использованию Ctrl+A для перехода к началу строки (или Ctrl+E для перехода в конец — я использовала вместо этого Home/End).

Так что сегодня речь пойдёт о том, что ввод текста порой вызывает сложности. Я также поделюсь с вами кое-какими советами, которые сама была бы рада услышать давно.
Читать дальше →
Total votes 54: ↑48 and ↓6+59
Comments33

Получение TOTP-токенов на умнейших из тупых часов

Level of difficultyMedium
Reading time5 min
Views15K

Недавно получил свой заказ с новой логической платой от Sensor Watch для вездесущих классических часов Casio F-91W. Модель F-91W не требует представления. Это наверняка самые популярные кварцевые часы в мире, которых в общей сложности было продано около 90 миллионов.

В купленной мной плате Sensor Watch оригинальный кварцевый механизм F-91W заменён новым мозгом на базе ARM Cortex M0+. В ней используются оригинальный ЖК-дисплей, толкатели для кнопок и пьезодинамик. Эта программируемая плата, и проект Sensor Watch также предоставляет простой в плане модификаций набор циферблатов и небольшие дополнительные приложения.

В устройстве нет Bluetooth, но комбинация легковесного, проверенного временем корпуса с долгоживущей батареей и функциональностью, которую без проблем можно воссоздать дома, на удивление великолепна. Где-то за час я смог: заменить плату, настроить двухфакторную аутентификацию (2FA) для своих аккаунтов Google и GitHub, чтобы получать наиболее часто используемые OTP-коды прямо на своё запястье, и написать циферблат-счётчик, который можно использовать для отсчёта шагов или взмахов при гребле на лодке.
Читать дальше →
Total votes 42: ↑41 and ↓1+58
Comments22

Как оптимизировать аккумуляторную батарею

Level of difficultyMedium
Reading time11 min
Views9.9K

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

Представьте, что работаете инженером в компании по производству электромобилей, и ваш начальник обращается к вам со следующими словами: «Джереми, у нас проблема! (и да, зовут вас Джереми). Всё эти чёртовы батареи! В машине их слишком много, и это выходит для нас очень накладно. Но при этом мы хотим, чтобы клиенты могли спокойно проехать 400 миль на одном заряде».

Что вы в этой ситуации сделаете? Как вы оптимизируете батареи? Это же чёрный магический ящик, не так ли? Не так. Используйте симуляцию.
Читать дальше →
Total votes 39: ↑37 and ↓2+56
Comments3

Процесс, который продолжал умирать

Level of difficultyMedium
Reading time6 min
Views6.8K

В этой статье я изложил суть своего выступления, которое состоялось в рамках проводимой нашей компанией образовательной программы «Lunch n' Learn».

Если вас просто интересует, как искать утечки памяти в Node, переходите сразу к Части 2 (но тогда вы упустите всю невероятную предысторию).

Это рассказ об умершем процессе и о наших злоключениях в попытке найти его убийцу с целью призвать негодяя к правосудию. Если говорить точнее, то этот процесс продолжал умирать циклически, но такая картина нарушает проводимую мной аналогию, поэтому попрошу вас не придавать этому большого значения. Наша история начинается с периодического возникновения ошибки 502 Bad Gateway — загадки, которую предстояло разрешить.
Читать дальше →
Total votes 41: ↑37 and ↓4+54
Comments4

Как программные ошибки приводят к катастрофическим последствиям

Level of difficultyMedium
Reading time8 min
Views14K

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

В этой статье речь пойдёт о нескольких ярких случаях, когда сбои ПО серьёзно отразились на подобных критических средах, в которых ошибки недопустимы.
Читать дальше →
Total votes 56: ↑48 and ↓8+59
Comments45

Реализация сапёра в 100 строках чистого Ruby

Level of difficultyMedium
Reading time7 min
Views5.8K

Ruby — весьма экспрессивный язык, в котором очень многое зачастую можно реализовать буквально в ста строках кода. Именно поэтому мне так нравится искать способ создать то же самое, но в более сжатом виде.1

Сразу внесу ясность: я не говорю о код-гольфинге, хотя это занятие тоже бывает интересным. Я имею в виду сокращение количества строк кода без потери его читаемости. По факту одним из самых приятных аспектов Ruby является то, что уменьшение количества строк кода зачастую может повысить его читаемость.

В нашем случае мы проделаем это на примере старого доброго «Сапёра». Помню, как играл в него на Windows XP ещё пацаном. Если и вы разделяете аналогичные воспоминания, то приветствую вас, мои друзья-миллениалы!
Читать дальше →
Total votes 33: ↑30 and ↓3+45
Comments5

Как уничтожить вашу ОС с помощью TAR

Level of difficultyMedium
Reading time12 min
Views21K

Это короткая история о том, насколько опасной может оказаться обычная распаковка tar, и что можно сделать для минимизации или избежания связанных с ней рисков.

▍ Ошибка


Недавно я экспериментировал с установкой Void Linux через chroot методом XBPS. Для подготовки базовой системы Void Linux на моём хосте с Fedora Linux требовался XBPS Package Manager. Одним из вариантов было скачать архив статически собранных инструментов из официального репозитория. Я выбрал https://repo-default.voidlinux.org/static/xbps-static-latest.x86_64-musl.tar.xz
Читать дальше →
Total votes 41: ↑33 and ↓8+43
Comments97

Насколько нам нужно визуальное программирование?

Level of difficultyMedium
Reading time10 min
Views21K

Большинство сред визуального программирования не находят достойного применения. Как вы думаете, почему? Они нацелены на замену синтаксиса кода и бизнес-логики, но разработчики никогда эти аспекты не визуализируют. Напротив, они визуализируют переходы состояний, схемы распределения памяти или сетевые запросы.

На мой взгляд, те, кто работает с визуальным программированием, гораздо больше преуспеют, если начнут с аспектов программного обеспечения, которые разработчики уже визуализируют.
Читать дальше →
Total votes 37: ↑34 and ↓3+47
Comments167

Как malloc сломала JPGLoader в Serenity, или Как выиграть в лотерее

Level of difficultyMedium
Reading time7 min
Views8.5K

Пару лет назад мне выпала возможность расследовать в SerenityOS интересный баг, связанный с декодированием изображений JPG, которые по какой-то причине при просмотре выглядели так, как вы видите выше.

Странно, не так ли? Похоже, будто просто перепутали RGB и BGR. При этом внесение в JPGLoader.cpp следующего изменения:

-   const Color color { (u8)block.y[pixel_index], (u8)block.cb[pixel_index], (u8)block.cr[pixel_index] };
+   const Color color { (u8)block.cr[pixel_index], (u8)block.cb[pixel_index], (u8)block.y[pixel_index] };
    context.bitmap->set_pixel(x, y, color);

приводит к корректному показу картинки. Вроде бы можно считать дело закрытым!

…Но нет. Возникает вопрос, почему вообще произошёл этот сбой?
Читать дальше →
Total votes 52: ↑51 and ↓1+74
Comments25

Реверс-инжиниринг умных часов

Level of difficultyMedium
Reading time6 min
Views12K

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

Начну я с рассмотрения их внешних особенностей и схемы, после чего подробно расскажу о том, как перепрограммировал эти часы, в том числе пропатчив их под иные задачи.
Читать дальше →
Total votes 52: ↑51 and ↓1+75
Comments27

Проблемная секунда

Level of difficultyMedium
Reading time8 min
Views26K

Сегодня каждый может легко проверить текущее время множеством способов. У нас есть смартфоны, часы, компьютеры, ТВ, холодильники и так далее. Все знают, какой на дворе год, и что он означает. Мы разбираемся во временны́х зонах и знаем, что такое всемирное координированное время (UTC). Всё кажется таким тривиальным. Однако с точки зрения IT-систем здесь существует множество сюрпризов, вынуждающих нас сталкиваться с проблемами, которые возникают очень редко.

В различных IT-системах можно встретить множество нюансов, касающихся времени. Чаще всего они связаны с точностью его измерения и синхронизации между машинами в распределённых системах. В этой же статье я разберу одну странную ситуацию, которая за всю историю случалась лишь несколько раз.
Читать дальше →
Total votes 63: ↑60 and ↓3+73
Comments63

Разбираем устройство радарного датчика движения стоимостью $1

Level of difficultyMedium
Reading time5 min
Views26K

Недавно я приобрёл дешёвые микроволновые датчики движения RCWL-0516, отчасти с целью понять, как китайцы умудрились собрать радар стоимостью меньше доллара.

Заставить работать такой оказалось несложно. Я просто подключил контакт VIN к 5 вольтам, GND к земле и добавил блокировочный конденсатор на контакт 3V3. Когда в радиусе 5 метров происходит какое-то движение, контакт OUT на 3 секунды поднимает уровень напряжения до 3 В.

В общем, девайс работает, но как?

Начал я с того, что нашёл спецификацию для большой микросхемы SOIC-16. Оказывается, BISS0001 — это инфракрасный датчик движения? Как же он устроен?
Читать дальше →
Total votes 65: ↑64 and ↓1+93
Comments25
1
23 ...

Information

Rating
14-th
Location
Россия
Works in
Date of birth
Registered
Activity