TypicalFolder // kadev OA
14 subscribers
122 photos
5 videos
3 files
65 links
Download Telegram
Forwarded from TypicalFolder // kadev CA (alexsandr kaurcev)
TypicalFolder // kadev CA
разворачиваем базовую конфигурацию докера
кстати, обратите внимание на то что стоит в портах.

а именно:
ports:
- "127.0.0.1:3000:3000"


127.0.0.1:3000 обозначает тот что порт будет слушаться на localhost.

так как в дальнейшем на хосте будет nginx (в котором будет у нас указание доменных имен и SSL сертификаты), он будет проксировать куда надо.

то есть, сам домен в DNS указывает на хост, а на хосте его встречает балансировщик и будет указывать внутри какой порт дать на прослушивание.

там же будет базовые настройки по ограничению запросов (запросов в секунду) и ограничения по GeoIP для обеспечения штатной безопасности.

небольшие намеки на best practice для разворачивания веб-приложений
Forwarded from TypicalFolder // kadev CA (alexsandr kaurcev)
TypicalFolder // kadev CA
кстати, обратите внимание на то что стоит в портах. а именно: ports: - "127.0.0.1:3000:3000" 127.0.0.1:3000 обозначает тот что порт будет слушаться на localhost. так как в дальнейшем на хосте будет nginx (в котором будет у нас указание доменных…
пишем тут ради просветления, так что упомяну что не стоит забывать в переменных окружения устанавливать такие значения:
NODE_ENV=production
GENERATE_SOURCEMAP=false

так как у меня всё строится на экосистеме node (ибо пакетный менеджер npm оч богат), эти переменные критично важны.
указывая NODE_ENV=production вы даете библиотекам понять то что код будет запускаться не у разработчика в режиме разработки, а уже для пользователей. Лишние проверки и подробные сведения об ошибках будут отключены и веб-приложение в таком случае становится легче и быстрее

а вот GENERATE_SOURCEMAP=false — очень важная штука. с виду, React билдит бандл (тот самый файлик из мешанины JavaScript кода), который так просто не разберешь. но и тут вот подводный камень для незнающего — React билдит карту исходного кода. оно, в общем, позволяет восстановить исходный код, который можно будет просмотреть в браузере. указывая false вы отключаете генерацию исходного кода и любопытные глазки не увидят вашу красоту по ту сторону =)
и, само собой, понимаете что если не надо генерировать карту исходного кода — значит не надо тратить время. ну в общем, примерно в 2 раза быстрее сбилдите web app и он будет меньше весить.

вот такие базовые первые шаги для обеспечения оптимизации и защиты кода от копирования ☕️
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from TypicalFolder // kadev CA (alexsandr kaurcev)
TypicalFolder // kadev CA
пишем тут ради просветления, так что упомяну что не стоит забывать в переменных окружения устанавливать такие значения: NODE_ENV=production GENERATE_SOURCEMAP=false так как у меня всё строится на экосистеме node (ибо пакетный менеджер npm оч богат), эти переменные…
так бы по хорошему развернуть GitHub Actions для того чтобы сразу из системы контроля версий подтягивать изменения, тестировать на месте и выливать в под (цикл CI\CD), но пока мне не до этого, так как до настройки такого мне нужно выстроить сами контейнеры и настроить сам сервер

предстоящие выходные будут насыщенные по постам, так что ожидайте
(да-да, нам ещё до конца доводить 3NF форму в той СУБД с IP адресами, так как энтузиастов помочь мне не нашлось)
Forwarded from TypicalFolder // kadev CA (alexsandr kaurcev)
1️⃣2️⃣ещё интересный факт

кто работает с react, вам на заметку.
вы же помните что ваш исходный код проекта по окончанию билдится в один бандл?

так вот, теперь представьте что вы сделали мощное продуктивное веб-приложение, сопоставимое с какой-нибудь CRM системой корпоративного масштаба..

у вас там очень много функционала, страниц, вам не стало лень и вы ещё наделали интерактива на всё что можно, вплоть что сделали к системе обширный wiki-склад..

и теперь задумайтесь, каков объём этого бандла? каждая страница, каждый компонент, да каждое событие что вы вешали на форму\кнопку\поле ввода — всё там, анимации, графики — всё как мы любим в хороших энтерпрайз системах..

и заметили, что сжатый вариант выходит за порог 4-5мб..
с виду видите что вроде 4мб, но увы — это та байда что даст вам жару..

начну с простого: 1мб сжатого JS != 1мб какой-то картинки. не забывайте что он сжат и то что браузеру перед тем как запустить всё это нужно загрузить и распарсить это.

отсюда и пошли первые приколы с утечкой памяти (как я люблю тыкать hh.ru за их react реализацию с необоснованным потреблением памяти).

далее образуется задержка TBT (тотал блокинг тайм) — основной поток процессора будет блокироваться и интерфейс будет тупить.

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

на такой случай в react есть lazy — ленивая загрузка. оно позволит вам обернуть те или иные компоненты и при билде они будут чанковаться.

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

вот такие дела, отмечу что это базовые механизмы которые стоит знать..

и вот, у меня же на практике вышла смешная ситуация, когда на одной странице был компонент кнопки (там я с помощью атрибутов передавал наименование иконки и текста чтобы не нарушать DRY) в котором были и стили, и все что надо.. и была страница в разработке, где была простая кнопка в стиле <button>
и вот, забавно было то что если я посещал страницы где использовался компонент кнопки, то при переходе на dev страницу где была простая <button> кнопка, то на ней были стили из компонента (я в общем их задавал сразу на button), но стоило мне перезагрузить страницу (или перейти на patch dev страницы), то стили не применялись =)
так что при работе с такими инструментами ещё и учитывайте то что может происходить такое и умейте делать правильно импорты чтобы не ловить подобных багов =D
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from TypicalFolder // kadev CA (alexsandr kaurcev)
Роберт С. (Роб) Пайк (англ. Robert C. (Rob) Pike, род. 1956) — разработчик операционных систем и языков программирования, работавший c 1980 года в Bell Labs, где в соавторстве с другим программистом написал графический терминал Blit для Unix, и также позднее участвовал в создании операционных систем Plan 9 и Inferno. Один из создателей кодировки UTF-8. Автор текстовых редакторов Sam и Acme.

Ссылка на вики
Forwarded from TypicalFolder // kadev CA (alexsandr kaurcev)
Напоминаю о том что существует открытый порт закрытого Telegtam канала.

Там только вырезки касательно IT:
https://t.me/typicalfolder
Forwarded from TypicalFolder // kadev // Архив ITCODE (alexsandr kaurcev)
PostgreSQL17.pdf
11.4 MB
Forwarded from TypicalFolder // kadev CA (alexsandr kaurcev)
TypicalFolder // kadev // Архив ITCODE
PostgreSQL17.pdf
В книге рассматривается внутреннее устройство СУБД Post-
greSQL: детали реализации многоверсионности и изоляции на
основе снимков данных, включая процедуру очистки неактуаль-
ных версий строк; буферный кеш и журнал предзаписи; исполь-
зование блокировок различных уровней; планирование и выпол-
нение SQL-запросов; принципы расширяемости и особенности
имеющихся индексных методов доступа. Большое внимание уде-
ляется возможностям, предоставляемым для самостоятельного
изучения механизмов функционирования PostgreSQL.
В настоящем издании учтены замечания читателей и исправлены
опечатки, а также отражены изменения, произошедшие в версии
PostgreSQL 17.
Сайт книги: https://postgrespro.ru/education/books/internals.
Для администраторов и программистов.
Forwarded from TypicalFolder // kadev CA (alexsandr kaurcev)
Вот так выглядит то что ничего из себя не представляет, побрякушки.

Немного затаскались ☕️
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from TypicalFolder // kadev CA (alexsandr kaurcev)
TypicalFolder // kadev CA
Вот так выглядит то что ничего из себя не представляет, побрякушки. Немного затаскались ☕️
Вообще, хотел в хакатонах участвовать, но увы - не застал то время, да и локация где я обучался не дала такой возможности.


Вот так бы что-то инновационное и потом уже да. Но увы
Forwarded from TypicalFolder // kadev CA (alexsandr kaurcev)
Шпаргалка по Linux