Обновить
18
Mihalych.PRO@ErgoZru

IT-энтузиаст

9
Подписчики
Отправить сообщение
что-то с переводом автор опоздал на 1.5 года… переводов этой статьи уже куча, в том числе даже у меня в блоге уже как со 2-ого марта 2018 года (в гугле ищется по запросу «Создаём самый маленький и безопасный Docker контейнер для Golang на базе Scratch
»). Тема изъезженная.
туда же:
1) добавить go.mod
2) добавить абстракцию для обработки запросов http (может я хочу работать с fasthttp)
3) добавить абстракцию для обработки sql (может я не хочу pq, а хочу тот же sqlite3, mysql, оракл (ну вдруг я извращенец)).
4) реализация кэша очень замудренная, советую посмотреть готовые in-app пакеты, коих на гитхабе несколько популярных для go. Текущий кэш крайне опасен для памяти.
5) опять же абстракцию и для кэша не мешало бы, у вас там мелькает редис, но есть и другие, а логика плюс минус та же.
6) код явно не проверялся на race, а их там будет. Используется много мапов, но только в кэше есть mutex (код кэша явно откуда то взят, либо гайды либо либы другие).
7) GetAPIResult — там есть рефлект, довольно тяжелая вещь, если она вызывается на каждый запрос — то зря. Нагрузку данная реализация не выдержит.
8) логирование — жутко страшное (я про реализацию), плюс еще и в файлы… никакой настройки снаружи…

это то, что просится прям сразу сходу при первом взгляде. Особо не смотрел, возможно там еще есть где кривости.
Архитектура ну совсем так себе. Вы своим пакетом заставляете людей использовать ini файлы для конфигурации… один вопрос — зачем??? (хотел написать иначе, но не хочу показаться грубым)
Зачем делать так:

mggo.Run(rout, "./config.ini")


Когда можно сделать:

mggo.Run(rout, params)


Где params какая-то публичная структура из пакета mggo.

Как задумка — интересная, но реализация — жуть… все прибито гвоздями, и хттп хендлеры, и sql (pg), и кэш безразмерный с очень специфической реализацией…
в телевизорах LG вроде как раз WebOS используется (по крайней мере как я понял про свой «смарт»-телек)
Будем ждать поста :)
Alessandra что-то у вас не сходится… Цитирую вас:
2.… Нарушений со стороны REG.RU обнаружено не было. Нарушения Бегет, послужившие основанием для расторжения договора, предметом спора по делу не являлись и судом не оценивались.

И выдержка из решения суда:
При этом на судебном заседании апелляционного суда исполнитель (ООО «Регистратор доменных имен РЕГ.РУ») не смог пояснить, в чем именно состоят нарушения договора со стороны заказчика (ООО «Бегет»), и привести каких-либо доказательств, свидетельствующих о таких нарушениях.

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

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

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

В общем пора сваливать от вас. Хотя уже давно бы свалил, но держит только один домен, который зарегистрирован на человека с которым не общаюсь уже лет 8 и не могу с ним связаться.

Кстати никто не знает как такой домен перевести на себя без изначального человека?
игра отличная, автору спасибо и уважение. Тем более что она создана одним человеком… вызывает восхищение. Сам в игру не играл, смотрел стримы по ней, и даже не догадывался, что она сделана одним человеком! Круто! Успехов автору!

Кстати тоже отличный вариант :) Но в нашем случае приложение полностью на c++ без JS, архитектура viper, используется довольно много c++ библиотек (в том числе openssl), и отказались от qt quick. Тем не менее приложение работает очень шустро и выглядит вполне прилично, с анимашками и прочими финтифлюшками :) но согласен полностью, что можно пойти более простым путем и не усложнять себе жизнь, если того не требуют обстоятельства.

На счёт сложности — а в чем сложность? Как по мне скакание вокруг сырости и багов гораздо сложнее, чем у более менее стабильного решения. Сложность в языке, то что там c++? Да, во флаттере есть готовые визуальные составляющие, которые смотрятся симпатично, но если нужно делать под конкретный дизайн, то там тоже начинается веселье. И как писал выше — использование любой сторонней библиотеки это боль и страдания. И не сказал бы, что это прям совсем другая ниша, скорее QT умеет в разы больше, но никто не заставляет всем этим пользоваться, можно пользоваться только теми инструментами которые нужны, а потом мучительно не переписывать на другой язык если проект вырастает. Да и комьюнити у кьюта огромно, есть форумы где можно найти и баги, и воркэраунды для их обхода, да и обновления выходят довольно часто. :)

Чувствую заминусуют меня за этот коммент но… Вы пробовали использовать QT? Если да, то чем для вас он хуже флаттера? Мы, например, в команде попробовали флаттер и поняли, что на данном этапе это слишком сыро. Производительность заметно хуже, чем на QT, хотя и там и там отрисовка на том же вулкане. Плюс QT охватывает гораздо больше платформ, плюс это всё-таки C++, и с точки зрения оптимизации там все гораздо лучше и нет лишних виртуальных машин и тд. Да и библиотек под плюсы просто не пересчитать. При наличии хорошего дизайнера вполне можно получить красивое приложение и на кьюте. Ну и заодно я бы посмотрел, как вы будете подключать какую-нибудь библиотеку написанную на сях или плюсах к проекту на флаттере (например тот же linphone). В будущем может из флаттера и выйдет что-то интересное, но в данный момент для коммерческой разработки это слишком сыро и просто опасно использовать, особенно когда на кону серьезные деньги. имхо.


П.С. жду флаттер на базе го :) вот это было бы интересно :)

в общем ожидаем гайды, тулзы и пр. Может получится собрать под себя контейнеры под минималку :)
в идеале бы не тулзу а гайд, ибо у меня все поднято на докер контейнерах и чтобы была возможность самому загнать систему в контейнер, или иметь официальный. Ну или docker-compose файлик с минимальной инструкцией и настройками через переменные среды. В домашних условиях (назовем для личного некоммерческого использования) поднимать связку с кубером и 6 нодами смысла нет :)
на сайте свифти не нашел информации о ценниках, ни ссылок на скачивание дистрибутива, только отправка имейла непонятно для чего. Информации минимум. Соответственно вопрос — какой ценник на эту систему (если например я хочу ее развернуть у себя на домашнем сервере), какие ограничения и тд.
Да вроде должны держать до 100-120 градусов, там же не редкоземельные магниты, боящиеся такой температуры.

Я сам не пользовался, просто в обзорах на такие коврики были жалобы на ютубе :) А магниты там такие же как в календариках всяких (судя по виду) и они тоже не любят температуру :)

БФ-2 — one love :)
по поводу магнитных ковриков — подходит только для печати на холодном столе или температуре до 50-60 градусов, иначе магнит перестает работать. Хотя идея хорошая, но к сожалению это только для печати ПЛА пластиком.

По поводу клея — я использую вариант БФ-2 разбавленный спиртом, таким составом пользуется один из ютуберов, у него и подсмотрел этот вариант. Работает просто отлично, но конечно на стол в таком случае лучше класть тонкое стекло, чтобы сам стол не убить.

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

Публичный Gist на гитхабе: https://gist.github.com/ergoz/e7837a54956116167db93b016dbd51a9

Если у кого-то есть ещё подходящие интересные радиостанции — пишите в комменты к гисту, буду благодарен и добавлю.
обновил контейнеры, добавил мониторинг процессов ffmpeg, немного оптимизировал начинку, убрал использование pv (в оригинале использовалось). Ну и так по мелочи. Добавил настройку для включения аксесс логов, выбор уровня логирование.
Для тех кто использовал мой первый контейнер из этого комментария — контейнер переделан. Теперь он на базе моего другого контейнера с Icecast2 на базе Alpine Linux, что сильно повлияло на размер образов (в лучшую сторону) и снизило немного потребление ресурсов.

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

В итоге было сделано следующее:
1) Создан чистый контейнер на базе ОС Alpine Linux с установленным Icecast2 с преднастройками для легкого старта — riftbit/icecast
2) Старый контейнер riftbit/fallout-radio — пересобран на базе контейнера из п.1
3) Сделал контейнер-стриммер (без установленного icecast) чисто для создания потока (с установленным ffmpeg+ezstream) — riftbit/icecast-retro-streamer.
4) У всех контейнеров более менее расписал документацию, имеющуюся обновил.

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

П.С. работу контейнера из п.2 проверил только что — всё ок, работает, играет. Работу связки контейнеров из п.1+п.3 не проверял! Но по идее должно работать.

П.П.С. Если контейнеры окажутся полезны — буду благодарен за звездочки на докер-хабе :)

П.П.П.С. Ещё раз большое спасибо автору данного топика. Второй день слушаю джаз в офигенном звучании )
ООО!!! Это огонь!!! Спасибо за поток! Звучит просто шикарнейше!

Контейнеры изменились! ВАЖНО!
кстати обновил контейнеры. Чуть позже дополню комментарий с указанием изменений. А они глобальные получились)))
Не удержался, сделал себе docker контейнер с немного измененным исходником (вынес 4 параметра в входные переменные — уровень шума, эхо, интерференс и уровень бэкграунд сигнала). В итоге получилось очень удобно))) Автору огромное спасибо! Уже договорился с товарищем, который отдаст радиолу под проект))) если будет интересно — сделаю пост, как реализую)))

Кому нужен готовый контейнер — hub.docker.com/r/riftbit/fallout-radio

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

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Зарегистрирован
Активность

Специализация

Backend Developer, Software Architect
Lead
От 10 000 $
PostgreSQL
Linux
Docker
Redis
Kubernetes
CI/CD
Golang
RabbitMQ
High-loaded systems
Designing application architecture