Sleepless tech | Евгений J – Telegram
Sleepless tech | Евгений J
790 subscribers
483 photos
80 videos
1 file
213 links
DIY, web, coffee
Автоматизирую все и вся, ремонтирую что сломалось, трачу время на just-for-fun проекты. Пишу про хардвар и софтвар и не только.

http://jem-space.ru

Связь со мной: @jem_jem
Донаты на припой и хостинги: https://bit.ly/2MKcRoJ
Download Telegram
Привет!

Кто тут шарит в Redux Toolkit?

Сам пару-тройку лет пишу рабочий проект на React + Redux. Один из минусов Redux - в необходимости писать большие полотна reducer’ов и action creator’ов. Нужно что-то добавить - скролишь туда, сюда, бегаешь по файлам. Но вроде штука популярная и уже привык. Как альтернатива ему есть MobX (и не только), где можно писать все в одном месте и выходит гораздо проще (отличие, конечно, не только в этом).

Тут я в качестве расширения кругозора решил почитать про Redux Toolkit и оказалось, что прикольная библиотека, которая позволяет избежать этой проблемы Redux с простынями кода (+ еще попутно много всяких фич добавляет). Наткнулся на туториал для новичков и пошарил в канал по фронту.

Получил много реакций с 💩 и стало интересно, реально библиотека 💩или просто по старой памяти все хейтят Redux. Есть кто юзает Redux Toolkit и может рассказать про минусы, ну или просто поделиться мнением?
🔥1
UX Live 🔥
Video
Рубрика "Технологии предков"

Продолжая развлекаться с Flipper Zero, обнаружил, что у ключей типа iButton есть несколько форматов кодирования в зависимости от типа домофона. Самые популярные это Dallas, Metakom и Cyfral. И оказалось, что не все можно так просто скопировать. Считать и эмулировать - на раз-два, а вот записать, можно только Dallas.

Недавно соседу нужно было записать Metakom. И оказалось, что Metakom (4 байтный) можно записать на ключ Dallas (8 байтный), предварительно переформатировав код ключа.
Перелопатив интернет, нашел программу которая это делает.
👍5
Sleepless tech | Евгений J
Рубрика "Технологии предков" Продолжая развлекаться с Flipper Zero, обнаружил, что у ключей типа iButton есть несколько форматов кодирования в зависимости от типа домофона. Самые популярные это Dallas, Metakom и Cyfral. И оказалось, что не все можно так просто…
"Технологии предков" - ч.2

Прога под винду, а винда не всегда есть под рукой. Пришлось понять, как работает перекодировка.

По факту ничего сложного: все байты ключа переносятся в позицию с 2 по 5, а остальные заполняются нулями и единицами. Но прикол в том, что самый старший байт - это контрольная сумма 7 младших байт. Покопавшись еще, нашел что она считается по алгоритму CRC8-Maxim.

Запилил простенький консольный скрипт для перекодировки (его правда ток в консоли на сайте https://openapi.lddgo.net/ можно запустить, иначе по CrossOrigin падает fetch 😁)

Перед этим просил кстати ChatGPT помочь, чет не осилила)
🔥6
Заметки на полях. Про гравер

В очередной раз мне нужно было вырезать гравером фигуры. Самый просто способ выжечь контур из растрового изображения - закинуть в родной софт для EleksMaker - EleksCAM, которая может преобразовать картинку в контур. Но так как это неадекватная китайская по**ень, которая может выдавать неверные размеры или просто остановить гравер в любой момент со включенным лазером, то это теперь не мой путь)
🤔3
Sleepless tech | Евгений J
Заметки на полях. Про гравер В очередной раз мне нужно было вырезать гравером фигуры. Самый просто способ выжечь контур из растрового изображения - закинуть в родной софт для EleksMaker - EleksCAM, которая может преобразовать картинку в контур. Но так как…
Порядок теперь такой:
▫️Импортим растр в inkscape

▪️Контур - Векторизовать раст - Detection Mode: Автоматическая трассировка (пробовал казалось бы более подходящий режим определение краев, но там получается 2 контура - внешний и внутренний (видно на фотке))
▪️Удаляем растр
▪️Расширения - Инструменты GCode:
▪️Точки ориентации
▪️Бибилиотека инструментов - дефолтный инструмент
▪️Поправить значения feed, passing feed (в зависимости от материала резки - от 400 до 1200), gcode before path: M03 S1000 (включеаем лазер), gcode after path: M05 (выключаем)
▪️Щелкнуть на изображение - Контур в GCode

▫️Результрующий файл кидаем в Universal GCode Sender и в начале добавляем M05 чтобы точно выключить лазер перед началом.
А потом надеваем очки и нажимаем кнопку play )
👍2🤔1
Типичный рабочий день. Когда решил сделать задачку на 5 минут, но получил ошибку.

Не хватает только пункта Reinstall your OS
😁5😱1
Привет!

Несколько дней бился с поломанным SSR на проекте. Поломался из за react-textarea-autosize у которого в билде несколько скриптов, часть из которых для браузера, часть для сервера (где в коде есть проверка isBrowser перед обращением к document). Но webpack 3, который на проекте, не умеет выбирать нужный скрипт для билда.

Друг подкинул решение в виде patch-package. Делаешь изменение в нод модулях, делаешь патч с помощью этой утилиты, и на postinstall применяешь патч.
👍5
Привет.

Тут оказывается веб-версия audacity вышла. Одна из причин (на самом деле главная причина лень, но она может еще подразделяться) почему я никак не нарежу себе мелодию на звонок - это то, что нужно ставить приложение на телефон и искать mp3 в ужасной файловой системе андроида с миллионом папок Downloads/Media/Trash/Huesh/ либо ставить программу на десктоп.

А теперь кайф. Осталось победить лень скачивания мелодии)

https://wavacity.com/
9👍3
This media is not supported in your browser
VIEW IN TELEGRAM
Всех причастных с днем программиста 😉
5🦄1
В нашу редакцию пишут телезрители.

Ставь лайк если понял о чем речь)
👍10👌2🌚2
Forwarded from Doque Embedded
😁12🔥1🥰1
This media is not supported in your browser
VIEW IN TELEGRAM
Поехал в Европу кошмарить владельцев Тесла своим флиппером)
😁12👍3
Нашел классный сайт который объясняет консольные команды. Полезно, когда какой нить затык в линуксе и ты нагуглил че то и бездумно копипастнул.

https://explainshell.com/
👍213🔥1
Addy Osmani - Learning Javanoscript Design Patterns (2 ed)

Пока читаешь книгу урывками, к концу немного забываешь че было в начале. Поэтому чтоб не забыть, кратко опишу о чем.

Срез как современных подходов, так и практик прошлых лет, которые с успехом можно использовать на проектах. Сами паттерны, которые уже тысячу раз описаны везде занимают только 1 главу, и описаны применительно к JS (что конечно плюс) со своими достоинствами и недостатками.

А еще хорошо
▫️описаны какие возможности у современных нативных JS модулей,
▫️паттерны MV* (в которых ваще не особо разбирался до этого),
▫️подходы к работе с ансихронностью,
▫️история AMD и CommonJS (можно пролистать),
▫️паттерн Namespace (который я видел только в начале своего пути JS).

Отдельно по React из полезного: подходы к структурированию проекта, работа с хуками и ХОКами, виды рендеринга (их оказывается больше чем 3).

В общем, советую. https://www.oreilly.com/library/view/learning-javanoscript-design/9781098139865/
🔥6
Привет.

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

export function B() {}

export function A() {
.....
B()
}

Решил в тесте Jest на повесить spyOn на функцию B и обосрался не вышло. toHaveBeenCalled возвращает false. А не работает все потому что по факту экспортная module.B и вызываемая внутри функция B - как бы разные (вообще сложно понять, потому что функция должна передаваться по ссылке, но я принял на веру)

В интернете конечно предлагают разнести эти функции по разным модулям или костыли типа

function A (){
data.B()
}
function B (){}

export const data {
A,
B
}

Я там в контексте своего теста нашел воркераунд (не завязанный в итоге на spyOn внутреннего вызова), но немного огорчен 🧐 Как лох час потерял)
🤔2
Привет.

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

В любом случае прикольно придумали, первый раз с таким сталкиваюсь (пора бы уже пароль добавить). Платить я, пожалуй, не буду)

Погуглил кстати транзакции на этот кошель. 2.5к баксов чувак насобирал (не факт что именно таким путем, правда)
😱7🎉2🫡1