Информация
- В рейтинге
- Не участвует
- Откуда
- Москва, Москва и Московская обл., Россия
- Зарегистрирован
- Активность
Специализация
Backend Developer, Software Architect
Lead
От 10 000 $
PostgreSQL
Linux
Docker
Redis
Kubernetes
CI/CD
Golang
RabbitMQ
High-loaded systems
Designing application architecture
»). Тема изъезженная.
1) добавить go.mod
2) добавить абстракцию для обработки запросов http (может я хочу работать с fasthttp)
3) добавить абстракцию для обработки sql (может я не хочу pq, а хочу тот же sqlite3, mysql, оракл (ну вдруг я извращенец)).
4) реализация кэша очень замудренная, советую посмотреть готовые in-app пакеты, коих на гитхабе несколько популярных для go. Текущий кэш крайне опасен для памяти.
5) опять же абстракцию и для кэша не мешало бы, у вас там мелькает редис, но есть и другие, а логика плюс минус та же.
6) код явно не проверялся на race, а их там будет. Используется много мапов, но только в кэше есть mutex (код кэша явно откуда то взят, либо гайды либо либы другие).
7) GetAPIResult — там есть рефлект, довольно тяжелая вещь, если она вызывается на каждый запрос — то зря. Нагрузку данная реализация не выдержит.
8) логирование — жутко страшное (я про реализацию), плюс еще и в файлы… никакой настройки снаружи…
это то, что просится прям сразу сходу при первом взгляде. Особо не смотрел, возможно там еще есть где кривости.
Зачем делать так:
Когда можно сделать:
Где params какая-то публичная структура из пакета mggo.
Как задумка — интересная, но реализация — жуть… все прибито гвоздями, и хттп хендлеры, и sql (pg), и кэш безразмерный с очень специфической реализацией…
И выдержка из решения суда:
Значит все таки суд задавал вопросы, и вы не смогли пояснить и ответить на вопросы суда, иначе бы этой формулировки в результирующей части не было бы.
И боюсь спросить, в каком месте вы защищаете своих клиентов? В данном деле вы защищаете свою прибыль и не более того. Ну и ваша карма на хабре плюс оценка вашего комментария — хороший тому показатель, как компания себя ведет и как люди на это реагируют.
Я уже молчу про ценовую политику компании на домены, когда не знаешь заранее сколько будет стоить продление, а знаешь только цену покупки, и чтобы узнать цену продления перед покупкой нужно еще извратиться.
В общем пора сваливать от вас. Хотя уже давно бы свалил, но держит только один домен, который зарегистрирован на человека с которым не общаюсь уже лет 8 и не могу с ним связаться.
Кстати никто не знает как такой домен перевести на себя без изначального человека?
Кстати тоже отличный вариант :) Но в нашем случае приложение полностью на c++ без JS, архитектура viper, используется довольно много c++ библиотек (в том числе openssl), и отказались от qt quick. Тем не менее приложение работает очень шустро и выглядит вполне прилично, с анимашками и прочими финтифлюшками :) но согласен полностью, что можно пойти более простым путем и не усложнять себе жизнь, если того не требуют обстоятельства.
На счёт сложности — а в чем сложность? Как по мне скакание вокруг сырости и багов гораздо сложнее, чем у более менее стабильного решения. Сложность в языке, то что там c++? Да, во флаттере есть готовые визуальные составляющие, которые смотрятся симпатично, но если нужно делать под конкретный дизайн, то там тоже начинается веселье. И как писал выше — использование любой сторонней библиотеки это боль и страдания. И не сказал бы, что это прям совсем другая ниша, скорее QT умеет в разы больше, но никто не заставляет всем этим пользоваться, можно пользоваться только теми инструментами которые нужны, а потом мучительно не переписывать на другой язык если проект вырастает. Да и комьюнити у кьюта огромно, есть форумы где можно найти и баги, и воркэраунды для их обхода, да и обновления выходят довольно часто. :)
Чувствую заминусуют меня за этот коммент но… Вы пробовали использовать QT? Если да, то чем для вас он хуже флаттера? Мы, например, в команде попробовали флаттер и поняли, что на данном этапе это слишком сыро. Производительность заметно хуже, чем на QT, хотя и там и там отрисовка на том же вулкане. Плюс QT охватывает гораздо больше платформ, плюс это всё-таки C++, и с точки зрения оптимизации там все гораздо лучше и нет лишних виртуальных машин и тд. Да и библиотек под плюсы просто не пересчитать. При наличии хорошего дизайнера вполне можно получить красивое приложение и на кьюте. Ну и заодно я бы посмотрел, как вы будете подключать какую-нибудь библиотеку написанную на сях или плюсах к проекту на флаттере (например тот же linphone). В будущем может из флаттера и выйдет что-то интересное, но в данный момент для коммерческой разработки это слишком сыро и просто опасно использовать, особенно когда на кону серьезные деньги. имхо.
П.С. жду флаттер на базе го :) вот это было бы интересно :)
Я сам не пользовался, просто в обзорах на такие коврики были жалобы на ютубе :) А магниты там такие же как в календариках всяких (судя по виду) и они тоже не любят температуру :)
БФ-2 — one love :)
По поводу клея — я использую вариант БФ-2 разбавленный спиртом, таким составом пользуется один из ютуберов, у него и подсмотрел этот вариант. Работает просто отлично, но конечно на стол в таком случае лучше класть тонкое стекло, чтобы сам стол не убить.
Имея принтер от TEVO (tarantula) я просто у них же заказал наклейки на стол. Не дорого и идут в размер стола (для большого стола тоже есть, у меня как раз такой).
Публичный Gist на гитхабе: https://gist.github.com/ergoz/e7837a54956116167db93b016dbd51a9
Если у кого-то есть ещё подходящие интересные радиостанции — пишите в комменты к гисту, буду благодарен и добавлю.
Немного обмозговав прошлой ночью, понял что этот контейнер не самый удобный вариант, если нужно запускать несколько «волн», плюс довольно объемный.
В итоге было сделано следующее:
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 не проверял! Но по идее должно работать.
П.П.С. Если контейнеры окажутся полезны — буду благодарен за звездочки на докер-хабе :)
П.П.П.С. Ещё раз большое спасибо автору данного топика. Второй день слушаю джаз в офигенном звучании )
Кому нужен готовый контейнер — hub.docker.com/r/riftbit/fallout-radio
Пользуйтесь на здоровье! По умолчанию настройки уже подобраны для лампового звучания (на мой вкус) и указаны основной стрим и бэкграунд (джаз, ибо он идеально подходит для такого звучания, имхо)