The Art of Development. Channel
398 subscribers
133 photos
32 videos
1 file
167 links
YouTube канал с роликами по разработке: https://www.youtube.com/c/TheArtofDevelopment

Группа для общения: https://t.me/theartofdevel
Download Telegram
Новый сервис компиляции. Теперь он у меня свой. То есть я в своей инфраструктуре компилирую Go, Python и Java код, а не опираюсь на сторонний сервис (который дорогой зараза, за 10к компиляций просил $500).

В честь этого изменился лендинг: https://testhub.cloud - зайдите посмотрите.

И также я переверстал и локализовал вывод после компиляции приложения.
🔥8
Из статьи по языку Go, для тех, кто любит длинные технические статьи…

если что, она вот здесь скачивается
https://arxiv.org/abs/2208.06810
😁5👍1👏1
Пока WhatsApp не работал я сделяль обложку для канала.

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

Что скажете?

P.S. уже загрузился на канале.
🔥6
Открыл VSCode, написал 10 строк кода, решил сохранить в файл. Жму cmd+s, ввожу имя main.go получаю вот эту картину, а через 3 минуты вот это.

P.S. файл сохранился...
Открываю платформу TestHUB в Google Chrome, чтобы создать насоздавать задачек. Создаю задачу с кодом, компилирую - получаю ошибку. В консоли пусто. Вижу, что не коннектятся вебсокеты. Так… что-то сломалось…

Запускаю локально всю платформу, а это 7 докер контейнеров, 4 приложений на Go и 1 приложение использует ReactJS. Начинаю искать проблему, вебсокеты не коннектятся… Вот есть адрес ws://localhost:20004/ws/compiler/<id> и он не коннектится.

Все HTTP ручки работают, а вебсокеты нет. Залогировал все что только можно, проверил порты и хендлеры, проверил конфиг. Зарефакторил по пути пару мест и поправил логирование, почти понял почему не работает CallerReport в моем новом логере. Короче час прошел…

И тут закралась мысль в мою голову…

Открываю Safari и все работает!
Сейчас буду смотреть что там в хроме сломалось.
👍2
Новая, седьмая, часть создания production сервиса на Go.

Создаем продукты и просто решаю проблемки программной архитектуры по пути с кучей DTO на каждом слое.

https://youtu.be/InFf_n7VM1o
👍6
мечта…
Forwarded from Эксплойт
This media is not supported in your browser
VIEW IN TELEGRAM
Наконец-то можно комфортно работать лёжа — компания Altwork Station выпустила «кресло», позволяющее работать почти в любом положении.

Девайс имеет гибкую спинку, которую можно откидывать до состояния «лёжа», при этом монитор и остальные эллементы системы каждый раз будут автоматически подстраиваться под ваше положение. Стоимость стартует от 4950 долларов.

И всё-равно в конце дня будет болеть спина.

@exploitex
Я все еще ищу людей желающих помочь/подработать.

Что надо делать: придумывать задачи в тематике языка Go.

Задачи как по теории, так и практические. Темы разные.

Деньги: от 100 до 1000 рублей за задачу (зависит от сложности задачи).

Задачи для платформы https://testhub.cloud

Задачи могут быть следующие:
1. текстовые вопросы
2. вопросы с картинкой
3. компиляция простого кода (1 файл, без go.mod) с проверкой выходной строки

Писать в ЛС.
@dikkini
🔥5
Вот эта команда создаст текстовый файл размером в 1GB, а повторный запуск увеличит размер файла до 2GB ну и так далее..

gtr -dc "A-Za-z 0-9" < /dev/urandom | fold -w100|head -n 10000000 >> bigfile.txt

Работает под macOS.
Для линукса надо использовать обычный tr, но у кого линукс те и сами об этом знают :)
👍4
Так как я все еще ищу авторов для платформы https://testhub.cloud, запилил видео инструкцию как работать с платформой.

Рассказываю как и где создать список вопросов для подготовки к собеседованию. Платформа TestHUB
https://youtu.be/IqNeWxxkuJg
👍2
У нас слоеная архитектура приложения:
1. транспорт
2. бизнес логика (policy, usecase etc)
3. сервисы, которые управляют сущностью (CRUD)

При запросе конкретной сущности, например Note, нам нужно проверить, а имеет ли права пользователь с этой ролью, чтобы получить эту сущность.
Вопрос: на каком слое это надо делать?
Ответ: в бизнес логике

Вы можете сразу сказать: а почему не в сервисном слое? Он же оперирует сущностью (CRUD).

А вот вам реальный кейс.

Вы обновляете сущность, чтобы ее обновить, ее надо получить из БД и перед тем как получить, надо проверить можно ли пользователю с этой ролью получить эту сущность, допустим можно и дальше вы обновляете ее. Обновили и все хорошо. Но теперь вы запускаете фоновый процесс, который что-то считает, например цену или рейтинг. Что-то фоновое и не очень важное. И вот этот фоновый процесс пытается запросить сущность из БД и получаете ответ: низзя, у тебя нужной роли нет! Поэтому переносим проверки роли в БЛ (бизнес логику), а сервисный слой оставляем сервисным и универсальным. Потому что если эта проверка будет в сервисном вы без костылей не сможете заставить работать подобные фоновые процессы, у них же нет роли.
👍10🔥2
Время пол 3 утра, самое время подвести мозг спать.

Итоги 3 часов страданий:
1. Раскурил почему у меня не работал SetCaller в logrus в production сервисе.
2. Переехал с logrus на zap в 6 проектах
3. Написал обертку над zap с Sugar логгером и без.
4. Хвала zap.AddCallerSkip(1) но с оберткой все еще есть косяк, надо исправить
5. Я не нашел документацию на zap :DDDDDDD то что они называют документация, ну это, у меня у пет проектов лучше документация так-то...
6. Почему в zap нет Plain Text формата логов? Или я не нашел?

И чуть не забыл. В серьезных проектах делайте жесткую типизацию дополнительных полей логгера - эластик вам потом спасибо скажет.
Время 3:17 и самое время сделать чутка миграцию данных TestHUB. Короче сейчас у 1 пользователя может быть 1 роль. И мне супер лень внедрять привелегии для ролей и разруливать ими все. Поэтому я решил разруливать все ролями и сделать так чтобы у пользователя может быть больше 1 роли.

CREATE TABLE users_backup AS
SELECT * FROM public."user" u;


Вот так я забекапил юзеров и их роли, потому что из поля role_id я делаю массив role_ids :DDDDD и соотвественно теряю информацию о ролях, а чтобы не потерять ее, я делаю бекап.

Поехали!
Давайте поговорим про пет проекты.
Зачем они нужны и в целом про старт обучения.

А также, про онлайн курсы, менторство, опыт и насмотренность ситуаций.

https://youtu.be/T1isK-vPxtg
🔥10👍1
Уникальное, только для тех кто сидит в Телеграм группе. Как вы знаете, я собираюсь запустить авторские курсы с менторской поддержкой в чате и так далее.

Первый курс будет по языку Go и сейчас я хочу "обкатать" его, то есть провести лекции и получить полноценную обратную связь по всем аспектам, прежде чем выпускать "в свет" за деньги.

Тема курса: Начальная подGOтовка
О чем будет курс: Немного про потоки, процессы, ОС и прочее. Далее основы программирования и уже по языку Go.

Что мне нужно от вас:
- полноценный фидбек по всем аспектам курса голосом или текстом

Что получите вы:
- прослушаете курс для новичков за фидбек

Сайт тут: https://artofedu.org
Про курс тут: https://artofedu.org/courses/golang/nachalnaya-podgotovka.html

Если ты хочешь поучаствовать в обкатке и прослушать мой курс - велкам в ЛС.

Количество слотов: 10 человек
Минимальное количество человек, с которым стартуем: 5 человек

Каждая лекция начинается в 19:00, по разным дням.

Осталось 8 слотов.
А вы знали, что если обновлять страницу, то там могут быть разные списки.

https://testhub.cloud/try

Доступно даже не зарегистрированным пользователям.