TGViewer
Channel Public Channel
Sleepless tech | Евгений J

Sleepless tech | Евгений J

@five_a_m

DIY, web, coffee
Автоматизирую все и вся, ремонтирую что сломалось, трачу время на just-for-fun проекты. Пишу про хардвар и софтвар и не только.

http://jem-space.ru

Связь со мной: @jem_jem
Донаты на припой и хостинги: https://bit.ly/2MKcRoJ
Subscribers
761
Photos
511
Videos
88
Links
223

Showing posts older than #632 · Back to latest

Older Posts 19 shown
Post #631 887
Привет!

Давно слышал, что на айфонах с 13 версии появился лидар, с помощью которого можно сканить 3D объекты. Находил инфу, что точность у него 0.3 мм, так что многообещающе. Все хотел попробовать.

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

Снимал на scaniverse.

Кстати, если у кого нормально получалось, расскажите че как)
  • 🦄 4
Post #630 866
Autodesk Fusion 360 for personal use

Сохраню ссылку на бесплатную версию Fusion 360 для личного использования. При поиске на сайте эту версию что-то особо не предлагают, а из гугла - доступна по первой ссылке. Работает, правда, только при регистрации через vpn.

https://www.autodesk.com/products/fusion-360/personal
Autodesk Compare Autodesk Fusion vs Autodesk Fusion for Personal Use | Autodesk Compare features and functionality between Autodesk Fusion for personal use and Autodesk Fusion, formerly known as Fusion 360, and learn which CAD, CAM, CAE and PCB software is the right solution for you.
  • ❤‍🔥 5
Post #629 1.01K
Привет!

Вчера был мой последний рабочий день в компании 😢
В Артезио проработал почти 7 лет, а на проекте Партнёрского кабинета почти 6. Есть повод немного порефлексировать (интересно, скорее всего, не будет, но зафиксировать нужно).

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

В Артезио я попал на проект Партнёрского кабинета Альфа-Банка, который нужно было писать с нуля. Для меня это был интересный опыт, т к никогда еще я не был на начальных этапах проектов. Прикольно ощущать, что клиенты начинают пользоваться абсолютно новым продуктом, и ты приложил руку к тому, с чем они взаимодействуют. За время проекта у нас были ежегодные аттестации и сборы фидбека, на которых мне прилетали нормальные оценки (что сначала было странно для меня). Так я почувствовал немного больше уверенности в себе.

Здесь, конечно, скрывалась одна из проблем - я начал клепать код без критического взгляда на него. Не то чтобы я не думал над оптимизацией функций, но вот гибкости и чистоты не хватало. Был некий флоу по разработке фич в основе которого была react-redux архитектура. Есть компоненты, они вызывают экшены, в которых выполняются запросы к мидлу, результат кладется в стор и все работает. Бизнес логика размазана по всему приложению…

Вопросы архитектуры меня волновали и тогда, но ответов на них особо не находил (про выделение бизнес логики, clean и feature-sliced я узнал года 3-4 назад). Да и думать честно говоря было некогда - нужно было быстро наращивать функционал приложения. Работали мы без особого планирования и спринтов, просто брали приоритетные задачи в разработку и старались сделать быстро. Но, замечу, без овертаймов!

Здесь крылась вторая проблема - нет времени на тесты. При оценке задач я всегда ориентировался только на этап разработки (+ багфикс) и забывал про тесты. Точнее я все думал, что надо когда нибудь попросить времени на них, но времени не было. Только потом я понял/узнал что продать бизнесу тесты невозможно. Их нужно изначально закладывать в оценку.

Третья проблема близка ко второй - отсутствие документации. По тестам можно понять как должен работать тот или иной процесс. Но можно вести документацию в той же конфлюенс. Мы этого не делали. На тот момент, как и что должно работать знал наш ПО + тестировщик, ну и разрабы, которые имплементили фичи. В какой то момент ПО ушел и частенько у нас начали сыпаться вопросы "А это всегда так работало или это баг?", ответить на которые мы могли только покопавшись в коде.

В какой-то момент обороты по реализации фич поутихли и проблемы кодовой базы уже не списать на то, что тебя торопили. По мере возможности я старался привести очевидные WTF части к нормальному виду. Особенно после того, как подумал, что если буду уходить с проекта, передавать его в таком виде оч стыдно. Это прям стало реальным мотиватором к тому, чтобы писать лучше. Да и вообще пришло осознание (хотя и поздно), что если ты один фронт, то этот репозиторий чисто твой проект и ты за все в ответе. За то, что у проекта нет нормального Read.me, за то что там до сих пор 4 версия react-router, древний redux без хуков и 4 вебпак.

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

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

Короче, классный опыт. Что-то из него вынес. Посмотрим, что будет дальше 😅
  • ❤‍🔥 8
  • 👍 4
  • 🎉 1
Post #628 766

Forwarded from Даниэль Ленц - блог

Как побороть сдвиг сайта из-за появление скрола

Недавно увидел потрясающий CSS хак как компенсировать сдвиг сайта, когда у вас появляется скролл на странице. Вся верстка будто прыгает, появлется так называемый CLS – content layout shift. Нехорошо. Глаз раздражает и приводит к мискликам (смотри комментарии к посту).

А хак до жути простой:


padding-left: calc(100vw - 100%); // 15px


100vw – ширина всей страницы с учетом скролбара
100% – ширина страницы без учета скролбара

Вычитаем и получаем заветные 15px, когда скролл есть и 0px, когда его нет. А дальше добавляем куда вам нужно – будь это padding, margin, top, left или еще чего. Просто и гениально.

А пост пишу, потому что удалось сразу проверить в проде как оно работает. Весь дифф до и после компенсации видно на видео.

Не забывайте про мелочи (а тем более про CLS) и тогда сайтом будет действительно приятно пользоваться.

@dlents
  • 🔥 6
  • ⚡ 2
  • 👍 2
Post #627 793
Надеюсь, это именно та разметка, которую они хотели видеть в поисковике)
Там еще и месяц в формате МММ. Чисто для рептилоидов каких то)
  • 😁 8
  • 👀 1
Post #626 1.03K
Ладно, вот вам задачка.

Есть 2 стула пакета в node_modules, которые использую третий как зависимость. Но в зависимостях он разной версии.
Один пакет нормально резолвит его. Второй же пытается найти его в общих node_modules, вместо своих внутренних (хотя во внутренних он есть).

Какие есть варианты, чтобы донести до второго пакета, что нужно резолвить его из внутренних модулей?
Если поставить этот пакет в общие модули, сломаются импорты первого пакета 🤯

Пробовал resolutions в package.json - не помогло. Пока рабочее решения - поправить руками импорты и накатывать патч на postinstall через patch-package.

Надеюсь щас набегут боты в коменты и все мне расскажут)
Post #625 1.09K
Дарова!

Щас развоняюсь как дед.

Github ввел двухфакторную аутентификацию. И теперь как дед пытаюсь разобраться с какими то ссаными аутентификаторами. Либо ставь какую то херню на телефон или комп либо расширение для хрома. Отправить мне код на почту они блядь не могут, а смс естественно в Россию не доходят.

Ну это ладно, но то что он предлагают это мать его платные решения типа 1Password. Плати 2 доллара в месяц чтобы логиниться на сайт. Алооо, вы там ох*ели? Либо приложение от Копрософта с битой ссылкой на установку.

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

UPD: деду помогли - google authenticator норм тема, ставится как расширение, все бесплатно. Че бы его сразу было не предложить вместо 1Password и копрософт хз)
  • 🙈 4
  • 👏 1
  • 🤝 1
Post #624 1.09K

Forwarded from UX Live 🔥

Когда посмотрел уже все на порнхабе и придумал собственный жанр
  • 😁 6
  • ❤ 5
  • 🔥 2
  • ❤‍🔥 1
  • 🤡 1
Post #623 1.14K
Post #621 1.07K
Привет!

В общем, у меня теперь есть ПРОДУКТ! 🚀
Я, как человек, который очень чутко слышит запросы общества, постарался объединить 2 популярные вещи: эзотерику и котиков (популярных в 2010-х).

*голосом продажника*
Вы только посмотрите на этого бота Астро-Кота. Бот Астро-Кот присылает вам гороскоп (чаще с инфой, что ваш ждёт понос, финансовые неудачи, смерть, но вы теперь информированны, а значит готовы), раскладывает для вас Оракула, позволяет отправить запрос ко Вселенной (можно попросить перенести понос на завтра например, причем голосовухой!) и еще всякие мелочи!
Конечно, часть функционала доступна по подписке (мы же в светлом капиталистическом будущем живем), но она стоит меньше стакана лавандового рафа.

В общем, постарался запилить бота с удобным флоу по общению (не уверен что вышло), какой то адекватной архитектурой (не чистая, но трехслойная, она попроще), а так же реализовал процесс оплаты через ЮКассу (если б они еще TelegramBotAPI работали, было бы вообще норм).

Погрузился в Telegraf.js - штука мощная, предлагает подход конечных автоматов (как раз то, что нужно при общении бота с юзером). Плюс позволяет подключать разные middleware, в итоге можешь прокидывать телеграмовский аптейт по всяким слоям.
Еще попробовал Dokku для удобного деплоя. Как обычно, потратил пару вечеров, чтоб понять, что я делаю не так, но в итоге все работает.

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

Кароч залетайте, смотрите, потыкайте, попробуйте положить)

UPD: есть демо подписка на 7 дней!!!
Telegram АстроКот | Астролог с лапками Я - Кот Астролог 🐈‍⬛ Я расскажу вам о вашем прошлом, настоящем и будущем.
  • 🔥 18
  • 🥴 1
Post #620 1.64K
Привет!

Вчера, внезапно, мой облачный сервак забил память на 100%. Со мной такое уже не первый раз - раньше виновником был менеджер nodeJs процессов pm2, который написал логов на пару гигабайт. Но я его усмирил плагином pm2-logrotate. В этот раз виновником были обычные системные логи syslog, которые, вроде как, периодически архивируются (не шарю чесн говоря), но все равно хранятся на диске (в этот раз файлы занимали около 17 гигов).
Причем, удалять файл syslog.1, вроде как, не советуют, потому что есть вероятность что-то поломать в системе.

Поэтому копипастнул команду из интернета truncate -s 0 /var/log/syslog и все починилось.

Вообще, вот такой стек команд наковырял, который поможет быстро найти большие файлы и папки

df -h - посмотреть какие диски забиты
find / -size +300M -ls - покажет все файлы больше указанного значения (300 Мб)
du -ch --max-depth=4 /var/log покажет папки с их размером указанному пути
ls -lSh /var/log - список файлов с размером
  • 🔥 4
  • 👍 3
  • 😁 1
Post #619 916
Привет.

Пару дней потратил на то, чтобы настроить проксирование на openconnect сервер, чтобы он не занимал 443 порт.
Т. к. openconnect прикидывается обычным https сайтом, то слушает он соответственно 443 порт. А выделять целый vps под один openconnect жалко, хочется еще и хостить свои сайты 🤩

Казалось бы, просто заводишь nginx, который будет слушать 443 порт и проксировать запросы на openconnect и остальные твои сайты. Но нет.
Оказалось, важно иметь версию nginx с модулем ssl_preread (благо можно собрать в докере), настроить правильную работу с сертификатами и правильно проксировать данные, что в итоге оказалось невозможно при помощи одного лишь nginx 🤩
(думаю основная причина в необходимости proxy v2 для этого)

В итоге решилось все добавлением haproxy, который уже раскидывает запросы на openconnect и на nginx (этот уже сам разруливает дальше).
Инструкцию оставлю тут.

Было сложно. Особенно когда в сетях не особо шаришь. Кстати, пока копался узнал, что можно подцепиться из одного docker-compose файла к volume и network других контейнеров через параметр external:true - кайф.
GitHub nginx-ssl-preread/Dockerfile at master · mkoppanen/nginx-ssl-preread Nginx docker image with SSL preread module. Contribute to mkoppanen/nginx-ssl-preread development by creating an account on GitHub.
  • ❤ 4
  • 👏 4
Post #618 942
Привет.

Сегодня настраивал cross-origin запросы с одного приложения на другое. Настроил cors и csp параметры, но авторизационная кука никак не хотела устанавливаться в браузере.

Все потому что для axios нужно явно прописать, что cross-origin куки можно сетать.

axios.defaults.withCredentials = true;

Скелетор вернется позже с еще одним неприятным фактом)
  • 👍 7
  • 😁 2
  • 💯 1
Post #616 985
Привет.

Сижу на литкоде с задачей про слияние нескольких связных отсортированных списков и не могу вдуплить.

Если использовать pop() при получении элемента массива со списками, то перфоманс жёстко падает, в сравнении если использовать shift().

Хотя shift вроде как затратнее должен быть, так как весь массив двигается на место 1го элемента, в то время когда pop просто укорачивает длину на 1.

По идее не важно откуда ты будешь брать элемент из массива - с начала (shift) или с конца (pop), его все равно нужно будет мержить с другим и сравнивать каждый элемент связного списка.

Кароч, парадокс. Если кому интересно, можете поиграться https://leetcode.com/problems/merge-k-sorted-lists
  • 🤔 5
  • 👍 2
  • 🤯 2
Post #615 827
Sleepless tech | Евгений J Доброй ночи. В связи с тем, что приватный openvpn не работает уже и на домашнем интернете, нужно искать альтернативы. Наткнулся на статейку на хабре про Openconnect и доки на linuxbabe. Потратил вечер, настроил, работает 👍 Из требований - придется оформить…
Кстати нашёл интересную статейку о том, что всё тлен как вообще происходит детектирование способов обхода. Панацеи по факту нет ☺️
  • 👍 4
  • 🔥 1
  • 💩 1
  • 💯 1
Post #614 662
Привет!

Тыщу лет назад написал заметки, как я кастомизировал Fender Stratocaster, но чет так и не поделился.

Исправляюсь https://jem-space.ru/custom-fender/

Вообще, кайфую при работе с деревом. Если б еще не на коленке/балконе/общем гараже это делать, а в мастерской, ваще топ был бы.
  • ❤‍🔥 8
  • 👍 4
  • 🔥 1
  • 🕊 1
Post #613 844
Доброй ночи.

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

Наткнулся на статейку на хабре про Openconnect и доки на linuxbabe. Потратил вечер, настроил, работает 👍
Из требований - придется оформить домен (можно на том же webhost1) и сгенерить ssl сертификат, ну и тачку в облаке иметь (или дома изворачиваться с DDNS)
  • 👍 6
  • ❤ 1
Post #612 651
Привет. Недавно офигел от наглости webhost1.ru
Давай сам теперь звони нам.
На проводе небось девушка сидит, ты ей пароль свой говоришь, она там кому то перезванивает и тебя пускают в личный кабинет)
  • 😁 8
  • 👏 4
  • 🤯 1
  • 🤮 1
Post #611 876
Привет.

Решил тут восстановить сайт на вордпресе, но теперь запустить его на другом домене. Сайт в докере (MYSQL + Wordpress + Nginx). Косяк в том, что оказывается, url сайта прописывается в базе данных как настройка и просто поднять контейнеры и радоваться жизни не получится, нужно сперва залезть проапдейтить значения.
С докером знаком только в каких то базовых вещах и подключиться через консоль к бд в контейнере нахрапом не получилось. Но в итоге оказалось не так сложно (чатгпт помог).

Сначала узнаем ip контейнера с бд
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_id

Коннектимся c паролем
mysql -h 173.15.0.2 -P 3306 --protocol=tcp -u username -p

Переключаемся на нужную базу
USE mywordpress


Апдейтим
UPDATE wp_options SET option_value = replace(option_value, 'oldurl.com', 'newurl.com') WHERE option_name = 'home' OR option_name = 'siteurl';UPDATE wp_posts SET guid = replace(guid, 'oldurl.com','newurl.com');UPDATE wp_posts SET post_content = replace(post_content, 'oldurl.com', 'newurl.com'); UPDATE wp_postmeta SET meta_value = replace(meta_value,'oldurl.com','newurl.com');

С вами были 5 minutes craft, хорошего дня ☺️
  • 👍 8
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →