Обновить

DIY

Сначала показывать
Порог рейтинга

Показываем в скринкасте, как развернуть Minecraft-сервер на бесплатной виртуалке ⛏️👾

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

>>> Смотреть на YouTube

>>> Смотреть в VK Видео

С ресурсами Evolution free tier можно бесплатно создать ВМ, хранить файлы и запускать контейнеры. Сделайте своего телеграм-бота, храните в облаке фото, видео и документы или создайте сервер в Minecraft по нашей инструкции 😉

Теги:
Всего голосов 1: ↑1 и ↓0+2
Комментарии0

Проверил, откуда руки растут.

Как человек уже >года потихоньку ищущий работу, заметил, что мое резюме на hh тем больше набирает показов (попадает в поисковую выдачу), чем чаще оно обновляется (очевидно, кэп).

Поднимать можно руками раз в 4 часа или платить hh за pro-подписку. Второе не то, чтобы дорого, но это не путь самурая. А за длительное время руками поднимать его надоело. В принципе, сервисы для подъема есть, не знаю сколько, но знаю как минимум два, скорее их десятки.

В общем, запилил себе помощника.

Базово Python и Django я понимаю; что есть такое API тоже понимаю. Углы, конечно, срезал - вся документация по API hh после первичного личного ознакомления разом улетела в Gemini 2.5 Pro, как бабулины пирожки на противне в духовку. На выходе - диковатый код, с которого еще немного срезал лишнего. Локально все заработало: tg-бот в качестве интерфейса + бэк, гоняющий запросы-ответы. Дальше облако, домен, код в контейнер, еще немного настроек и вуаля - помощник трудится 24/7. Пока, правда, неотесанный, но работает. Еще немного допилить, и будет user-friendly. А там гляди и в пет-проект превратится)

В общем, всем, кому пет-проекты на Python/Django нужны, рекомендую эту идею запилить. Просто, быстро, полезно.

P.S. Автор как бы не программист, но чуток кодить умеет.

Теги:
Всего голосов 1: ↑1 и ↓0+3
Комментарии0

Хочу поделиться маленьким хинтом с теми айтишниками, которые делают своими руками не только компьютерные приспособы, но и банальный ремонт, в частности канализацию. Долго думал, постить или нет, поскольку хинт из разряда «шуруп молотком не забиваем», но увидев, как плюсуют ругательные отзывы на трубы в онлайновых магазинах («Я такой труба шатал — уплотнители текут!»), решил, что кто-то, возможно, и не знает. Я сам пришёл к этому путём экспериментов, и жаль, что мне никто не рассказал.

Итак, речь идёт о семействе типовых полипропиленовых канализационных труб (в нашей рознице они диаметром 50мм). В семейство входят как сами трубы, так и всяческое углы, отводы, тройники и прочее добро, из которого прикольно делать беговую трассу для развлечения хомяка. Люди же, которые используют трубы по более скучному назначению (отводить воды), вскоре выясняют, что…

При усаживание труб друг в друга, деформируется резинка (без того стоЯщая волной) и пропадает герметичность стыка. Хотя использую при монтаже Сантехническую смазку, усаживаем прокручивая, а не вдавливаем. В общем сами трубы хороши, плотные, пластик достаточно толстый, но вот эти прокладки... Уплотнители текут!!!111 [куча лайков]

Решение просто, как и всё гениальное:

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

  2. Вставляем «папу» в «маму».

  3. На «маму» (с самого края) надеваем червячный хомут. Затягиваем его простой отвёрткой даже в самых труднодоступных местах, типа угла за унитазом.

Вот он, хранитель трубных соединений.
Вот он, хранитель трубных соединений.

У стандартной пятидесятимиллиметровой трубы наружный диаметр у края составляет ~55мм. Это значит, что хомут нужен с диапазоном 40-60мм. Его цена составляет примерно 40% от цены метровой трубы. Это очень немного за радость собрать герметичное соединение, которое даже не надо проверять, подкладывая газетку и зорко высматривая на ней капли. Собрал и забыл.

Дополнительный плюс — соединение получится жёстким, так что если конструировать сложную гидротехническую систему с кучей тентаклей, она будет оставаться монолитной при отсоединении (например, для профилактической прочистки).

Теги:
Всего голосов 4: ↑2 и ↓20
Комментарии40

Linux Mint 22 - KiCad-5 с GUI и графическим ускорением на карте AMD в Docker-контейтере.

При перезде с Минт-20 на Минт-22 мне захотелось сохранить возможность полноценной работы с проектами выполнеными в KiCad-5, без конвертации их в формат KiCad-9 на который я плавно мигрирую при перезде на Минт-22. Специфика в том, что KiCad-5, в том числе в виде AppImage на Минт-22 запускаться категорически не хочет.

Из возможных вариантов выбрал для себя запуск KiCad-5 в Docker-контейтере, с пробросом графики через X11. За основу взял эту реализацию. Добавил к ней проброс графического ускорения(без него GUI будет подтормаживать) своей карты AMD, русификацию, и Firefox, для плагина InteractiveHtmlBom. В итоге получился вот такой dockerfile:

FROM linuxmintd/mint20-amd64

ENV LANG=ru_RU.UTF-8

RUN apt-get update && \
    apt-get upgrade -y && \
    apt-get install -y nano sudo keyboard-configuration software-properties-common x11-apps xdg-utils \
    locales language-pack-ru-base language-pack-ru xed xed-dbg firefox firefox-locale-ru && \
    update-locale LANG=ru_RU.UTF-8

RUN add-apt-repository --yes ppa:kicad/kicad-5.1-releases && \
    apt-get update && \
    apt-get install --no-install-recommends -y kicad kicad-locale-ru kicad-doc-ru

# Укажите здесь используемые на вашем хост-компьютере
# имя пользователя, идентификатор пользователя и идентификатор группы.
ENV USER_NAME=vasily
ENV UID=1000
ENV GID=1000

ENV HOME=/home/${USER_NAME}
ENV XDG_RUNTIME_DIR=/tmp/runtime-${UID}


RUN mkdir -p ${HOME} && \
    echo "${USER_NAME}:x:${UID}:${GID}:USER_NAME,,,:${HOME}:/bin/bash" >> /etc/passwd && \
    echo "${USER_NAME}:x:${UID}:" >> /etc/group && \
    echo "${USER_NAME} ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/${USER_NAME} && \
    chmod 0440 /etc/sudoers.d/${USER_NAME} && \
    chown ${UID}:${GID} -R ${HOME}

USER ${USER_NAME}

# Раскомментируйте программу, которую вы хотите запустить в контейнере.
#ENTRYPOINT ["eeschema"]
ENTRYPOINT ["kicad"]

Обратите внимание, что значения USER_NAME, UID, GID, в строках 17, 18, 19 в dockerfile берутся из вашего аккаунта на хост-машине.

Образ создается как обычно выполненой в открытом в одной директории с dockerfile терминале командой(не забываем пробел и точку в конце команды):

docker build -t kicad5 .

Размер образа получаеться около 800 Мбайт.

Скрипт для старта контейнера на машине с графической картой AMD:

#! /usr/bin/env bash

docker run --rm -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix -v /usr/share/kicad5:/usr/share/kicad -v $HOME:$HOME --device=/dev/dri:/dev/dri kicad5

До первого запуска контейнера:

1). Создаете в Минт-22 директорию /usr/share/kicad5 и копируете туда содержимое /usr/share/kicad из Минт-20 с установленным kicad5

2). Копируете содержимое $HOME/.kicad_plugins из Минт-20 с установленным kicad5 в $HOME/.kicad_plugins в Минт-22

3). Копируете содержимое $HOME/.config/kicad/ из Минт-20 с установленным kicad5 в $HOME/.config/kicad в Минт-22

Теперь можете запускать KiCad-5 с GUI и графическим ускорением на карте AMD в Минт-22 и паралельно установить в Минт-22 KiCad-9.

Чтобы заархивировать созданный образ выполняем в терминале:

docker save -o ./my_bac_kicad5_image.tar kicad5

Чтобы развернуть заархивированый образ на другом машине выполняем в терминале, открытом в одной директории с файлом my_bac_kicad5_image.tar, на нее скопированном:

docker load -i ./my_bac_kicad5_image.tar
Теги:
Рейтинг0
Комментарии0

Аркадный ЗОЖ. 3 напитка для завершения рабочего дня

Привет, Хабр! Пятница — идеальное время для небольшого эксперимента. Недавно наткнулся на свой же старый пост про светящиеся напитки из TRON, и это навело на мысль: а что если совместить ностальгию по ретро-играм с реальной пользой для айтишника?

Мы часто залипаем в экран, забывая про реальность. Приглашаю вместе со мной пофантазировать на тему айтишных напитков по мотивам ретро-игр.

Супергрибной эликсир от Mario. Классика аркадного ЗОЖ

Рецепт:

  • 200-250 мл холодной комбучи (имбирь/ягоды, без сахара — смотрим состав!);

  • Горсть замороженных ягод (малина, вишня, черника);

  • Ломтик лимона или лайма.

Что это даёт и почему это не просто лимонад

Комбуча — это не просто «кислая бурда из детства». Это симбиотическая культура бактерий и дрожжей. Главная её ценность для айтишника — пробиотики и жирные кислоты (уксусная, глюкуроновая).

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

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

Ягоды — источник антиоксидантов и витамина С, которые повышают активность мозга и улучшают память и внимание.

Что в итоге

Лёгкий, тонизирующий напиток без резкого скачка глюкозы и последующего «отката», как от кофе с печенькой. Реально полезный аналог сладкой газировки. Идеален для легкого перекуса или послеобеденного «перезапуска».

Respawn Sprite (Doom). Восстанавливаемся после DeathMatch

Рецепт:

  • 500 мл воды;

  • Шипучая таблетка электролитов (калий, магний, натрий, без сахара);

  • Порция EAA/BCAA (5-10 г, с цитрусовым вкусом);

  • Коэнзим Q10 (50-100 мг).

Разбираем состав «аптечки»

Электролиты восстанавливают водо-солевой баланс и снимают усталость;

Аминокислоты BCAA/EAA (5-10 г). Быстро усваиваются, снижают умственную усталость, поддерживают мышцы при долгом сидении. Предпочтительнее незаменимые аминокислоты  EAA;

Коэнзим Q10 (50-100 мг) для выработки энергии в митохондриях, чтобы улучшить обмен веществ и уменьшить стресс, снять усталость.

Что итоге

Средство от «выжатости», головной боли и для восстановления нервной системы. Пить после часовых митингов с командой.

Обязательно читайте инструкцию и противопоказания к препаратам!

Nuka-Cola (Fallout). Антирадиационный тоник для хакатонов

Рецепт:

  • Сок 1/2 лимона/лайма;

  • Немного оставшейся цедры;

  • 1 чайная ложка меда;

  • 300 мл ледяной содовой/газированной воды;

  • 1 капсула витамина С или порошок (аскорбат натрия).

Секретные ингридиенты

«Радиация» в данном случае – окислительный стресс от долгого сидения за монитором, плохого сна и вредной еды.

Лимон/лайм. Содержат витамин С и вещества, которые поддерживают работу печени — нашего главного детокс-центра.

Витамин С. Мощный антиоксидант, который позволяет быстро восстановиться при стрессе. Аскорбат натрия менее кислая форма, которая не раздражает ЖКТ.

Охлажденная газированная вода. Дает мгновенное ощущение бодрости за счёт воздействия на вкусовые рецепторы.

Что в итоге

Освежающий, лёгкий напиток. Не содержит кофеина, поэтому его можно пить во второй половине дня. Отличный друг на долгих марафонах! Только не увлекайтесь слишком холодными  газированными напитками.

Важно

это все это всего лишь элемент стратегии «аркадного ЗОЖ». Основу всё равно составляют сон, нормальное питание и движение. Но такие тоники здорово помогают поддерживать организм в условиях бесконечного бега.

Делитесь своими идеями пятничных напитков в комментариях.

Теги:
Всего голосов 5: ↑5 и ↓0+10
Комментарии2

Прошиваем CH32V003 с помощью платы Arduino

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

Оказывается можно и способов не один, но я расскажу обо одном. Другие пока еще не пробовал. Решил написать эту заметку, т.к. в рунете ничего не нашел, пусть будет.

В проекте ch32fun есть программа minichlink, так вот она умеет прошивать WCH микроконтроллеры с помощью разных программаторов, например, b003boot, ardulink, esp32s2chfun. Нас интересует программатор ardulink.

Код программатора Ardulink можно взять из arduino-ch32v003-swio. На гитхабе есть обертка его для PlatformIO, кому как удобнее. Он написан под atmega328p, поэтому спокойно запускается на Arduino Nano. Подсоединяем провод от D8 (PB0) ножки Ардуино к SWIO (например, восьмая ножка у CH32V003J4M6), питание к питанию, земля к земле. Всего 3 провода. (Ножку D9 (PB1) так и не понял к чему подключать, но про нее есть в Readme.)

Дальше выполняем команды:

minichlink.exe -c COM3 -i этой командой можно проверить определяется ли микроконтроллер, где COM3 номер порта платы Ардуино, которую используем как программатор.

minichlink.exe -c COM3 -w .\firmware.bin flash -b а этой командой можно залить файл прошивки, где firmware.bin сам файл.

Пока у меня не получилось подключить такой программатор напрямую к PlatformIO, только получилось работать из командой строки, но при желании это сделать можно.

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

ТестНаСпид.РФ — и нет, мы не про болезни

С чего все началось?

Недавняя блокировка Speedtest.net в России застала многих любителей помериться скоростями врасплох и заставила искать альтернативы, которые могут помочь им утвердиться.

Not anymore, ladies and gentlemen — представляем вашему вниманию инновационный отечественный сайт для замера скорости интернета — ТестНаСпид.РФ

Преимущества:

Данное решение является полностью отечественным и не имеет аналогов на рынке. Замер скорости можно осуществить к любому серверу из сотен различных стран на выбор пользователю.

UI поражает своим новшеством в мире дизайна сайтов. Начиная с мелочей и до overall experience все сделано для максимального удобства пользователя.

Адаптивный Web-UI
Адаптивный Web-UI

AD-Free — мы ценим и уважаем наших пользователей, которые в столь тяжёлые времена остались без своих любимых замеров. Именно поэтому мы не добавляем никакой монетизации сервиса в виде навязчивой рекламы.

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

На данный момент сервис находится в открытом Beta-тестировании и в планах реализовать ещё много дополнительного функционала по нашему (закрытому) Roadmap-у.

Теги:
Всего голосов 10: ↑6 и ↓4+3
Комментарии5

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

Теги:
Всего голосов 3: ↑3 и ↓0+4
Комментарии2

DIY-плата AD/DA для DSP-задач на ARM+FPGA: зачем я её собрал

В мире встроенных систем и цифровой обработки сигналов (DSP) ключ к быстрому прототипированию и надёжной отладке лежит через собственный инструмент — аппаратную платформу, точно отвечающую вашим задачам. Моя цель — отработать цепочку «аналог ↔ цифра ↔ FPGA ↔ ARM» в реальном времени, без лишних звеньев и оговорок. Именно поэтому я спроектировал собственную отладочную DIY-плату AD/DA с программируемым генератором тактовой частоты.

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

Плата выполнена в формате "Arduino" (?) и служит модулем для быстрой интеграции в платформы ARM+FPGA (Zynq-7000 или аналогичные) через стандартный 40-контактный разъём KLS.

Плата AD/DA
Плата AD/DA

В основу конструкции легла классическая SDR-структура: трансформаторы, АЦП, программируемый тактовый генератор, буфер тактового сигнала, ЦАП и интерфейсные сигналы на разъём KLS.

1. Аналого-цифровой преобразователь: AD9283

  • 8-битный одноканальный АЦП с параллельным CMOS-интерфейсом.

  • Частота преобразования до 100 MSPS.

  • Сигнал PWRDWN и шина данных подаются с разъёма KLS.

  • Вход с внешнего SMA через трансформатор дает дифференциальный сигнал для высокого SNR.

2. Тактовый генератор и буфер: Si514 & Si53306

  • Программируемый кварцевый генератор Si514 формирует опорную частоту.

  • Тактовый буфер Si53306 распределяет сигнал на АЦП, ЦАП и FPGA.

3. Цифро-аналоговый преобразователь: AD9744

  • 14-битный одноканальный ЦАП с параллельным CMOS-интерфейсом.

  • Частота преобразования до 210 MSPS.

  • Сигнал SLEEP и шина данных подаются с разъёма KLS.

  • Выход через трансформатор возвращает аналоговый сигнал на внешний SMA-коннектор.

Зачем и для чего: практические сценарии использования этой отладочной платы

  1. Формирование и анализ сигналов

  • Создания многокомпонентных тестовых сигналов (модуляции AM/FM, chirp-сигналов) для оценки пропускной способности и реактивности FPGA-ядра.

  • Тестирования и калибровки входных трактов при различных уровнях амплитуды и частоты.

  • Генерации шумовых или псевдослучайных сигналов для проверки устойчивости DSP-алгоритмов.

2. Отладка алгоритмов цифровой обработки в реальном времени

  • Нужно прототипировать алгоритмы цифровой обработки данных непосредственно на связке ARM+FPGA и видеть результат «на лету».

  • Использование платы в образовательных целях: для обучения студентов или коллег практикам embedded-разработки и современной цифровой обработки сигналов.

  • Реализация и проверка в HDL алгоритмов, например, вейвлет-преобразования для анализа сигнала и выделения его локальных особенностей.

3. Сравнительное исследование реальной производительности ARM и FPGA-ядер

  • FPGA-ядро: пропускная способность HDL-модулей FIR/IIR, вейвлет-анализ, дизайн HLS-функций.

  • Сбор и визуализация метрик (latency, throughput, resource utilization) через ARM-API и JTAG-интерфейс FPGA.

  • ARM-ядро: замеры FFT-блока, фильтров в Linux-окружении.

Заключение

Эта AD/DA-плата для ARM+FPGA обеспечивает точность, скорость и гибкость, необходимые как для исследований DSP-алгоритмов, так и для промышленных встраиваемых и исследовательских проектов.

Присоединяйтесь к https://t.me/dsp_labs — там выходят реальные бенчмарки, исходники и советы по оптимизации DSP-алгоритмов на ARM/FPGA платформах!

Теги:
Всего голосов 11: ↑10 и ↓1+11
Комментарии11

Разбираюсь с бюджетными преобразователями USB CAN. В качестве параметра для классификации удобно использовать тип применяемого протокола, по которому данные передаются на ПК.

slcan - текстовый протокол который применяется еще и с интерфейсом RS2232, с оборудованием фирм LAWICEL и VScom, переросшим в связку USB-UART-CAN, с виртуальным последовательным портом, а затем - в USB CAN на единственном микроконтроллере, а затем и вообще TCP. C которым можно работать из обычной терминальной программы, без особого софта.
Существует множество реализаций и расширений этого протокола, на разных микроконтроллерах, в том числе STM32, включая поддержку CAN-FD (на STM32G431, STM32G01) в основном в виде проектов на GitHub.
Проект canable (VID:PID AD50:60C4 либо 0x0403:0x6015) (и еще ранний вариант под названием cantact), прошивается в доступные платки на базе контроллеров STM32F042 и STM32F072 (на Ali похоже уже только на F072 продают). Получил развитие в виде canable v2 (STM32G431, 0x16D0:0x117E).
Вариация USB2CANFDV1 от WeAct studio (STM32G01, 0x0483:0x5740) - зашифрованная прошивка без исходников.
Помимо этого: stm32-slcan (STM32L433, 0x0483:0x5740, протокол урезан), UCCBEmbedded (STM32F042, 0x0483:0x5740), CFDC_embedded-slcan (STM32G431, 0x0483:0x5741), CAN2USB (STM32F105, 0x0483:0x5740), CANsniffer (STM32F042, 0x0483:0x5740).
Проект USBtin (PIC18, 0x04D8:0x000A) представляет собой скорее исторический интерес, в его состав входят макросы для поддержки протокола slcan в легендарной HyperTerminal. Не менее историческая разработка - у Michael Wolf, которая как то связана с программой CanHacker.
Проект ESP32RET использует текстовый протокол LAWICEL в качестве подмножества команд для двоичного протокола GVRET как через USB так и WiFi (TCP). Проект WiCAN реализует поддержку протокола slcan через USB, WiFi, BLE, а так же протокола для программы RealDash. Так же эти прошивки знают известный протокол ELM327 для автодиагностики, это тестовый протокол со множеством реализаций, однако при его помощи "сырой" CAN захватить либо трудно либо нельзя.

gs_usb более известный как candleLight (0x1D50:0x606F) по названию платы (разработка Linux Automation GmbH, так же фигурирует наименование USB2CAN by Geschwister Schneider Technologie-, Entwicklungs- und Vertriebs UG). Это уже двоичный протокол. Который рассчитан в первую очередь на контроллеры STM32F042/STM32F072, поддержка контроллера STM32G01 и CAN-FD на текущий момент только создается.
Однако есть проект bugetcan - прошивка для "most STM32 devices", есть готовые пресеты для STM32F042, STM32G01, STM32G431, STM32G473, STM32H743, STM32H745 и тоже работает с этим протоколом

uCAN_FD - упомянутый ранее CFDC_embedded (uCAN CanFD USB Converter(CFUC)) также предлагают свой собственный протокол, но он, похоже, работает только в софте из этого проекта.

pcan и kvaser по названию соответствующих фирм. Реализованы не только для фирменного оборудования, но и для тех же дешевых платок canable/cantact на STM32F042 (0x0bfd:0x0120 и 0x0483:0x000C), что дает возможность использовать софт рассчитанные именно на эти платы.

usb_8dev для 8 devices USB2CAN, реализован в открытом проекте CANalyze (STM32F042, 0x0483:0x1234), который, похоже, больше не развивается

Разные программы для мониторинга CAN обращаются с протоколами по разному. Например мощная программа BUSMASTER умеет работать с оборудованием VScom (в том числе и через TCP) и PEAK, а значит можно попробовать использовать ее с дешевыми платами перепрошитыми на поддержку такого протокола. SavvyCAN и CANgaroo умеют работать с LAWICEL/slcan, протокол candleLight - через драйвер для Windows. RealDash умеет работать с огромным числом протоколов. Ну а в linux (с относительно свежим ядром) некоторые перечисленные протоколы уже встроены в виде драйверов сетевых (устройств) SocketCAN, что тоже поддержано большим количеством софта.

Теги:
Всего голосов 7: ↑7 и ↓0+9
Комментарии8

Американский метеоролог Рид Тиммер показал один из спецавтомобилей Dominator, на котором он преследует торнадо.

В основу транспортного средства в виде «передвижного бункера» взят Ford F‑350. Фары и стёкла машины надёжно прикрыты толстым слоем прозрачного поликарбоната. Также там установлены двойные окна, чтобы защититься от летящих на огромной скорости обломков, когда команда приближается к самому центру торнадо.

Чтобы не дать шторму перевернуть машину, корпус Dominator может опускаться и плотно прижиматься к земле — это делает авто устойчивее и не даёт ему качаться из стороны в сторону. Двери Dominator не распахиваются вбок, а поднимаются вверх. Управляет ими система рычагов и клапанов, установленная на крыше.

Экипаж Dominator также может запускать специальные ракеты с датчиками — они собирают информацию о торнадо прямо изнутри. Эти ракеты крепятся на крыше, а запускаются с панели внутри салона.

Теги:
Всего голосов 2: ↑2 и ↓0+3
Комментарии4

В языке C (и C++ тоже) существуют три различных типа: char, unsigned char и signed char.

При этом типы unsigned char и signed char предназначены для хранения чисел. "Предназначены" стоит воспринимать как "рекомендуется использовать для этих целей", фактически, программист волен в этих типах хранить и, выражаясь терминами языка Си, символы.

Когда выбрать unsigned char, а когда signed char? Нужно подумать сколько значений может принимать ваша переменная. Например, если вы храните результат ввода с клавиатуры и у вас вообще не стоит проверка на длину введенного числа, то ... То ваша программа порочна. Следует ограничивать предельную размерность всех данных. Итак, если у вас пользователь вводит
число из диапазона [0..255], тогда используйте unsigned char. Если у вас переменная может быть в диапазоне [-128..127] то используйте signed char. И так далее. Если у вас числа уже не помещаются даже в uint64_t, гуглите Длинная арифметика.

Тип char предназначен для хранения только символов. В зависимости от настроек компилятора char при компиляции транслируется или в signed char или в unsigned char. Хранение чисел в char возможно, но является признаком быдлокода.

char a = 'a'; //верно
char b = 200; //задумайтесь, может тип указать как uint8_t ?

Отдельно хочу отметить, что в 1999 году уже до всех дошло, что каждый раз писать ансигнед чар долго, очень долго. Были введены синонимы (typedef) в файле stdint.h

typedef unsigned char uint8_t;
typedef signed char int8_t;

Я рекомендую вам использовать эти синонимы вместо длинных названий сигнед чар и ансигнед чар.

К слову. Крайние значения для каждого типа хранятся в limits.h. Я напоминаю, что использование магических чисел - плохая практика. Поэтому обратите внимание на возможность написания UCHAR_MAX вместо 255 и так далее см. вики

Для тех, кто пишет код под 8-bit архитектуры (привет, atmega) но планирует в дальнейшем переход на другие платформы, обратите внимание на такие типы, как uint_least8_t...

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

Небольшой апдейт по устройству ClockworkPi PicoCalc. Умельцы раскопали RockChip SDK и собрали на основе платы разработки LuckFox Lyra B минимальный рабочий образ Ubuntu 22.04 со всеми драйверами для компонентов устройства. Плата электрически совместима с платой Raspberry Pi Pico. Превращение из кибердеки на Basic в кибердеку на Linux происходит за пару минут.

А внутри Linux уже доступны и Basic и Python и другой софт. У платы всего два недостатка: малый объём памяти и отсутствие Wi-Fi (что решается подключением USB-донглов к внутреннему разъёму USB на плате).

И это реально работает. Покопаться пришлось разве что с процедурой прошивки. Особенность чипа LuckFox Lyra B в наличии встроенной SPI-флешки со стандартной прошивкой, которую нужно стереть для того, чтобы загрузка с MicroSD-карты заработала.

За подробностями отправляю на форум разработчика. Там энтузиасты решают проблемы с RTC-часами, Wi-Fi-адаптерами и прочим.

Теги:
Всего голосов 5: ↑5 и ↓0+5
Комментарии0

Ближайшие события

Японский энтузиаст собрал детскую версию легендарной Toyota AE86 — даже при своей маленькости она резво раздаёт угла. Размеры малютки как у офисного стола (2400×1000×800 мм), вес 110 кг, но выдерживает пилота до 300 кг. Внутри электромотор на 2500 Вт, который обеспечит весьма реальный дрифт при максималке в 70 км/ч. По сути, шустрая игрушка с характером старшего брата из культового аниме про дрифт — Initial D.

Теги:
Всего голосов 2: ↑2 и ↓0+2
Комментарии0

Когда мы собирали в гараже электрокартинги, нужно было обеспечить хорошее освещение. Поставил 6 люминисцентных светильников по 2 лампы 120 см: три на стенах и два на потолке.

Но со временем это решение стало доставлять много проблем. Долгие пуски в морозы. При отсутствии запасных ламп невозможно было определить почему перестал работать светильник: из-за вышедшей из строя ЭПРА, или из-за сгоревших ламп.

В итоге недавно заменил все светильники на светодиодные и счастлив.

Полностью светодиодное освещение (простите за хлам)
Полностью светодиодное освещение (простите за хлам)

Алгоритм замены простой:
1. Покупаете светодиодные лампы, цоколь G13. Цена 1 шт. от 160 до 250 руб. в зависимости от мощности. Я брал на 30 Вт., 4000K.
2. На светильнике снимаете лампы, полностью отключаете ЭПРА, он нам больше не понадобится.
3. Переподключаете схему светильника (как на рисунке): с одной стороны на все 4 клеммы (под две лампы) подводите фазу, с другой стороны - ноль.
4. Устанавливаете новые светодиодные лампы.

Забываете обо всех проблемах с пуском. Если выходит из строя одна лампа (хотя, у меня еще это не случилось), просто меняете её, не нужно выяснять в лампе ли дело, или в ПРА.

Теги:
Всего голосов 2: ↑2 и ↓0+2
Комментарии3

Заметки с ИИ-котом v. 1.0, для Windows

⁠⁠Скачать. (ссылка обновлена) Бесплатно, и установка не требуется.

Разрабатываю по фану — потому что мне самому не хватало чего-то простого, лёгкого и по делу.

Это приложение для личных заметок не претендует на звание "универсальной системы управления знаниями", не строит из себя ракетный двигатель и СОВСЕМ не пытается быть новым Обсидианом. Это просто удобное место, куда можно быстро спрятать мысль, идею или список покупок.

Что умеет:

  • Работает только с текстом: .txt, .md, .markdown, .mdown

  • Создаёт новые заметки в формате Markdown (но без наворотов — как в старые добрые)

  • Не держит тебя в облаке, не шифрует данные в своём формате — всё лежит на диске, как тебе привычно

  • Левое окно показывает структуру папок — полупрозрачные папки = пустые (нет файлов или подпапок)

  • Двойной клик по папке — запоминается как начальная при следующем запуске

  • Одинарный клик — раскрывает содержимое

  • Если в буфере есть текст — он автоматически попадёт в новую заметку. Буфер очищается.

  • Поиск: по тексту, по названиям файлов, по содержимому. С историей. А еще есть Избранное.

  • Настройки? Пока только для нейросетевых функций и ответов ИИ-кота (его можно позвать, кликнув по коробке), который может что-то подсказать или прокомментировать с долей сарказма.

Про искусственный интеллект:

  • Поддерживает OpenRouter — регистрируешься, получаешь 50 бесплатных запросов в день

  • Хватает за глаза для личных заметок, резюме текстов, генерации идей или перевода мыслей во что-то собранное

  • ИИ-кот ведёт себя не особо прилично.

В чем отличие от Обсидиана:

Обсидиан — это космический шаттл для заметок. А мы тут катаемся на велосипеде — быстро, удобно и без инструкции.

Просто. Не нужно ничего устанавливать — скачал, запустил, пишешь.

Лёгкий. Всё приложение весит 17 Мб.

Минимум функций. Не запутаешься. Никаких плагинов, графов, связей и внутренних ссылок.

Стиль свой. Не такой серьёзный, как Обсидиан.

Бесплатный ИИ здесь не только для управления, а еще для подколов и помощи.

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

Горячие клавиши:
Ctrl + N - создать заметку
Ctrl + P - создать папку
Ctrl + F - искать текст в открытом файле
Ctrl + S - сохранить файл
Ctrl + колёсико - изменение размера шрифта

Win + точка - вставка эмодзи

Теги:
Всего голосов 9: ↑9 и ↓0+9
Комментарии9
Как можно видеть, строки 5 и 6 используют вдобавок уменьшенный интервал.
Как можно видеть, строки 5 и 6 используют вдобавок уменьшенный интервал.

Была даже абсолютно безумная мысль замутить электронную книжку на таком вот сегментном принципе, но не знаю, что меня больше останавливает: глазоломность шрифта или перспектива паять около 10 000 светодиодов в размере 0402 (или хотя бы 0603).

ЗЫ: добавил «ненормальное программирование» просто потому, что оно напрашивается сначала в эмуляции погонять и оценить степень невыносимости такого шрифта.

Теги:
Всего голосов 10: ↑10 и ↓0+14
Комментарии3

Блогер собрал безумный симулятор для мотогонок. Установка повторяет каждое движение из игры: наклоны, подскоки и... даже падения. Если в игре вы потеряли контроль — в реальности тоже рискуете слететь с «мотоцикла». Реагирует всё: от угла поворота до столкновений. Авария в симуляторе — гарантированный удар в корпус. Виртуальная смерть теперь почти настоящая.

Теги:
Всего голосов 4: ↑4 и ↓0+5
Комментарии4

3д принтер у меня с ковида, octoprint на Raspberry 3 у него вырос практически сразу, и все это время дома был home assistant который сменил уже 3 поколенея Raspberry и сейчас живёт на 4. Так же принтер creality ender 5 pro почти сразу был подключен через розетку на zigbee. Много лет, Карл ! Но как сделать автоматическое выключение принтера после печати я додумался только вчера. В общем все очень просто, и, надеюсь, понятно, по скрину из автоматизации home assistant. Само собой нужна установленная и настроенная интеграция OctoPrint в HA. z_power_3d_printer это вот такая розетка.

Теги:
Всего голосов 1: ↑0 и ↓1-1
Комментарии2

Универсальная автоматизация для Home Assistant, которая закрывает все краны в комнате, где произошла утечка

alias: Сработал датчик протечки
description: Закрыть все стояки в комнате, где сработал любой из датчиков
triggers:
  - value_template: >
      {{ states.binary_sensor | selectattr('attributes.device_class', 'eq',
      'moisture')| selectattr('state', 'eq', 'on') | list | count > 0 }}
    trigger: template
    for:
      hours: 0
      minutes: 0
      seconds: 5
actions:
  - variables:
      data: |
        {% set leak_sensor = states.binary_sensor
          | selectattr('attributes.device_class', 'eq', 'moisture')
          | selectattr('state', 'eq', 'on')
          | first %}
        {% if leak_sensor %}
          {% set area = area_id(leak_sensor.entity_id) %}
          {{ {'leak_sensor': leak_sensor.entity_id, 'area': area, 'area_name': area_name(area)} }}
        {% else %}
          {{ {'leak_sensor': None, 'area': None, 'area_name': 'Unknown'} }}
        {% endif %}
  - parallel:
      - data:
          entity_id: >
            {{ expand(area_entities(data.area)) | selectattr('domain', 'eq',
            'valve') | map(attribute='entity_id') | list }}
        action: valve.close_valve
      - action: script.play_text
        data:
          message: Обнаружена протечка в {{ data.area_name  }}, закрыла стояки
      - action: notify.persistent_notification
        metadata: {}
        data:
          message: Протечка в {{ data.area_name  }}
      - action: input_text.set_value
        metadata: {}
        data:
          value: Обнаружена протечка в {{ data.area_name  }}
        target:
          entity_id: input_text.protechka

Алгоритм простой, в течении 5 секунд должны появится устройства с типом moisture со статусом ON, по нему вычисляется комната и название (для вывода на экран и озвучивание), потом в найденной комнате все краны закрываются, плюс проигрывается звук на колонках, плюс выводится сообщение. Главное условие - датчики протечки и краны должны иметь свойство комната.

Теги:
Всего голосов 2: ↑2 и ↓0+3
Комментарии0