All streams
Search
Write a publication
Pull to refresh
4
0.1
Павел @pvzh

Разработчик веб-приложений

Send message

LUKS + Линукс точно так же прекрасно решает проблему. При этом Линукс не обязательно устанавливать, можно загрузиться с почти-любого лайв-USB на любом пылесосе, пакет cryptsetup обычно в наличии. Бесплатно, легально и без вендор-локов.

Чем мне особенно нравится Sphinx – документацию легко можно скопировать для просмотра оффлайн. Например, с помощью HTTrack. Сейчас это актуально со всеми этими шатдаунами и блокировками. При этом даже поиск работать будет! Хотя иногда приходится чуть править HTML, делать адрес страницы поиска относительным.

Есть прекрасный фильм «Степени десяти» о масштабах макро и микро миров. Снимает все печали. Отдельная жизнь – просто песчинка в бескрайней пустыне. После – не может быть ничего особенного. Просто нет в этом смысла. Это как отключение сервера, на котором крутилась нейросеть. Никто же не тоскует по уникальному внутреннему состоянию Докер-контейнера после его удаления. Спешите творить добро!

Вот такой уровень подачи материала нужен на уроках биологии в школе 21-го века.

Ну есть же жава, есть раст, есть .нет,

JRE не встроена в ОС (Win/Linux), надо или ставить отдельно в систему или класть рядом с приложением. Раст не так уж давно раскрутился, к тому же может не быть нужной библиотеки. ДотНет под Винду норм, а под Линукс всё же инородное явление. Питон же напротив, в Линуксе «из коробки», библиотеки в изобилии.

Про муху цеце наслышан, но не пересекался. А вот восстанавливать бережно хранимый приятелями на подобных красивых USB-коробочках архив семейных фото приходилось не раз. Раньше там внутри ставили обычный ноутбучный PATA/SATA диск. Вытащил, подключил напрямую и вперёд. А сейчас облом, USB прямо с платы идёт. Так что для себя я беру внутренний SATA-диск. Подкинуть его парой проводов к любому компу не проблема. Есть и переходник USB/SATA. Ну и про LUKS не забываем. Выходит дешевле и намного надёжнее.

Если у вас остались вопросы

Не вопросы, а нестыковки. Их так много, что разбор потянет на целую статью.

Автоформатирование кода. Компилятор сам расставляет отступы с помощью gofmt. Но важно использовать табуляцию.

Автоформатирование есть для любого уважающего себя языка. Просто в Go оно «в комплекте». Компилятор не расставляет отступы. Табуляция будет независимо от вашей воли.

Если вы не хотите заморачиваться над созданием документации — можно использовать godoc.

Не, тут другой посыл - механизм документации уже «в комплекте», заморачиваться и не придётся.

Низкоуровневое программирование — да-да, Go все таки может работать непосредственно с памятью, и существует пакет unsafe .

Пакет существует, но это не повод его сразу применять. Его использование снижает безопасность, надёжность, переносимость и поддерживаемость программ.

Корутины, горутины, сопрограммы — все это синонимы ветвей в Go. Так что не путайтесь, если я буду их использовать.

Реально запутался;) Зачем по-разному называть, если уже есть один устоявшийся термин?

В каждом дистрибутиве линукса есть огромное количество библиотек для Go.

Но зачем? О чём вообще речь? Зачем брать библиотеки из дистрибутива, если в Go свой прекрасный менеджер пакетов? И чаще всего Go-код компилируется в самодостаточный бинарь. Даже сам Go легко ставится и обновляется путём распаковки архива. Не в каждом дистрибутиве запакечен свежий Go.

Кроссплатформеность — поддержка Go осуществляется для Linux, Windows, MacOS и даже Free и Open BSD систем

Вот тут обидно, не докрутили. Самое то главное - кросс-компиляция, когда на одной системе можно собирать под много разных других платформ.

Язык специально сделан так, чтобы сфокусировать внимание разработчика на архитектуре приложений,

Точно в яблочко! Но это плохо согласуется с приёмами из статьи, вся эта возня с Cgo и ассемблерными вставками. К примеру, работать с SQLite можно и через либу с C-биндингами и через нативный драйвер. Так вот, я предпочту драйвер без Cgo, потому что мне важна кросс-компиляция и не хочется зависеть от C-компилятора и его тулчейна. Всё же Go это больше про прикладное программирование.

Автор немножко лукавит. Можно посмотреть его сайт/гитхаб и узреть там массу высококлассных проектов. Плюс куча статей и книг. Плюс блог и дискорд на английском, при условии что это не родной язык. Гибкость мышления у автора гораздо выше среднего.

Не очень понятен сценарий использования инженером ТП. Возможно, проще было бы оформить в виде мастера, когда все варианты и подстановки делаются уже после запуска, внутри баш-скрипта, а не на его входе, в оболочке. Типа того, как работают git init или npm init.

Все эти дневники очень больная тема. Мало того что в каждом регионе своя разработка, так ещё и каждый год новая. В этом году у нас прикрутили авторизацию через ГосУслуги – месяц родители стонали, то не коннектится, то учётка ребёнка не так привязана, то пятое, то десятое. Если даже и зашёл родитель, то в любой день может разлогинить «из-за подозрительной активности». В итоге, я так и не смог подключиться, из-за ошибки в ФИО ребёнка на стороне школы, хожу через учётку ребёнка. Школа ничем помочь не может, техподдержка пеняет на школу. Самая печаль - это уродский дизайн самой простой страницы с домашкой на день. Экран 24 дюйма, а не помещается всё на одном скрине, куча бестолковых пустых полей сжирает место. Умение сверстать табличку и убрать всё лишнее, уместив в один экран без скроллов это что-то недостижимое. Ну и отношение всех этих ЦОКО к открытости данных показательно, «ешьте что дают и не умничайте». Так и живём. А автору большая уважуха и плюс в карму! Друг, ты просто молодчина!

сохраняйте также и текстовый ключ инициализации

А где сохранять то? В менеджере паролей? Если применять опенсорсные KeePassXC и KeePassDX то он (секрет) и так там хранится, применяется для генерации кода и его можно всегда посмотреть.

Этот Q4OS на systemd, а надо что-то попроще. Как вариант, Alpine Linux плюс лёгкий стол типа JWM плюс Firefox и лёгкий софт типа sakura, mc, FeatherPad.

На редкость грамотный и доходчивый материал, спасибо! Чистый бриллиант на фоне потока наскоро слепленных постов. Хочется всё бросить и иди к вам работать;) А по теме добавить нечего, всё верно сказано. К сожалению, часто куча комментариев и несправедливое внимание достаётся пустопорожним статьям. Успехов вам и всего наилучшего!

Моей целью было протестировать производительность и поведение сервера в обыденных для веб приложения условиях.

Вопрос поднят правильный. Но вот выбор задач для сравнения спорный:

вычисление ряда Фибоначчи, что, по моему мнению, не раскрывает всей сути сравнения

Но ведь выдача копеечных константных джсонов тоже не раскрывает. И отдача статики - не типичная задача для подопытных.

Чем хорош Fastify так это валидацией входящих джсонов по схемам (JSON Schema), благодаря либе ajv. Схемы создаются один раз при старте, и потом в каждом запросе просто и быстро применяются. Вот добавить бы в тест такое.

Второе, что не учтено - обработка ошибок. Ошибки же надо обрабатывать, выводить понятное сообщение, с указанием чего в запросе не хватает. Часто в бенчмарках тестируют только заведомо успешные запросы, что далеко от жизни.

Третье - логирование. Ведь одно дело логировать как-попало, например, через синхронный console.log. Совсем другое - логировать структурно и в отдельном потоке, как это делается в Fastify через либу pino.

Поддерживаю! А для логов/отчётов уже придуман JSONL (JSON Lines).

в жизни оно в 9 случаях из 10 будет деплоиться в виде контейнера (под управлением оркестратора)

Статья то не об этом. Выше публикатор отметил, что эта демонстрация является фундаментом... Вы предлагаете MVP из двух ручек без мониторинга и авторизации сразу на кластер деплоить? Бухгалтерия одобряет ;)

в убунту тоже можно поставить софт через make && make install && make clean - но "не давать новичкам ложное впечатление, что без пакетного менеджера приложение не развернуть" как-то даже и странно :).

Господи боже мой, вы о чём? В Убунте Питон вроде бы искаропки уже есть. А если нет - make install не обязателен, потому как там ровно такой же apt-get install как и внутри python:3.11-slim из статьи.

Доскер в наше время не "средство изоляции", а platform-independant средство доставки.

Т.е. доставка в этой статье вас не смущает? Билд прямо на проде и руками, жирный образ без мультистейджа, запуск под рутом;)

Насчет изоляции еще - приложений может быть далеко не одно на одном сервере. Зачем разворачивать целую виртмашину с операционкой ради одного приложения, которому нужна максимум сотня метров оперативы. Ну и плюс еще docker swarm, k8s и вот это вот все.

Давайте не уходить от темы статьи и читать внимательно условия задачи. Ещё раз - автор статьи сам выбрал виртуальный сервер, полгига рамы. Под одно это единственное приложение. Один сервер, других нет в плане. Ни слова не сказал про утилизацию ресурсов, запустил в 1 поток. Всё. Вы зачем-то нафантазировали другие приложения и кубернетисы.

Я не про оверхед, а про то что ресурс уже ограничен на нижнем уровне и выделен целиком под приложение. Зачем изолироваться от «хоста» который в данном случае уже виртуалка? Не тащить Пайтон на уровень Убунты, но затащить его же уровнем выше внутри Дебиан-контейнера? Я не против Докера, сам применяю и знаю устройство. Вопрос/просьба в другом - может не надо пожалуйста новичкам давать ложное убеждение, будто без Докера приложение не развернуть.

Проблема в том, что Докер это инструмент для решения определённых задач. Хорошо бы уточнить, какую именно проблему он решает здесь. Я не вижу ни одной причины его затаскивать. Виртуальный сервер, всего лишь полгига памяти, одно приложение, один процесс, привязки к версии Пайтона нету. Надо загрузить больше ядер - естественно будет добавить gunicorn. Мне неприятно, когда гвозди микроскопом забивают ;)

Древние китайские историки рассказывают, что Цинь Шихуан приказал сжечь старинные книги, а несколько сот ученых — почитателей учения Конфуция — закопать живьем в землю. Он велел уничтожить всех, кто думал, что прежде жилось лучше, чем при нем.

История древнего мира. Учебник для 5 класса
17-е изд. Просвещение, 2010
ISBN 978-5-09-023702-4

Information

Rating
3,294-th
Location
Москва и Московская обл., Россия
Registered
Activity

Specialization

Backend Developer, Fullstack Developer
Middle
From 150,000 ₽
Python
RESTful API
Docker
Linux
Golang
PostgreSQL
JavaScript
Web development
Fastapi
Asynchronous programming