#ItSecurity
Ты — продукт. Но можешь им не быть.
В современном мире каждый лайк, номер телефона и email это потенциальное оружие против тебя.
Нет, это не паранойя. Это — киберреальность.
Хочешь остаться вне поля зрения и не попасть в базу данных рекламщиков, госслужб и "экспертов по безопасности" ЗАО "Бещёки"? Вот базовые принципы:
1. Никогда не указывай реальные данные если в этом нет юридической необходимости.
Форма регистрации? Вводи левые ФИО и дату рождения.
Сайт просит номер телефона? Используй временные или VoIP-сервисы.
Email? Burner-почта (proton.me, tuta.io, temp-mail); В редких случаях gmail.
2. Используй разные почты и логины для различных сервисов.
Сделай несколько уровней:
3. Не веди чувствительные разговоры в популярных мессенджерах.
Telegram? Да, если с proxy, без номера, через бота.
Но для действительно приватной переписки — SimpleX, Session, Molly, Threema.
4. Никогда не храни пароли в браузере.
Используй менеджер паролей: Bitwarden, KeePassXC, 1Password
И никаких одинаковых паролей, мать его.
5. Используй 3 буквы для просмотра YouTube (загран паспорт) + DNS HTTPS + браузер с защитой от трекеров:
Firefox, Waterfox, Tor — лучшие друзья.
Настрой uBlock Origin, Privacy Badger, CanvasBlocker.
Запрети WebRTC, third-party cookies.
6. Фото, метаданные, EXIF — чисти.
Каждое фото с телефона может содержать GPS, модель устройства и даже серийник.
Перед публикацией стирай метаданные.
7. И главное — не рассказывай слишком много.
Сколько тебе лет, где ты живёшь, где работаешь, кого ебёшь — это всё будет использовано против тебя, если попадёт не в те руки.
Информация — валюта. Чем меньше ты её раздаёшь, тем меньше ты уязвим.
Паранойя? Нет. Гигиена. Цифровая.
(1/2)
Ты — продукт. Но можешь им не быть.
В современном мире каждый лайк, номер телефона и email это потенциальное оружие против тебя.
Нет, это не паранойя. Это — киберреальность.
Хочешь остаться вне поля зрения и не попасть в базу данных рекламщиков, госслужб и "экспертов по безопасности" ЗАО "Бещёки"? Вот базовые принципы:
1. Никогда не указывай реальные данные если в этом нет юридической необходимости.
Форма регистрации? Вводи левые ФИО и дату рождения.
Сайт просит номер телефона? Используй временные или VoIP-сервисы.
Email? Burner-почта (proton.me, tuta.io, temp-mail); В редких случаях gmail.
2. Используй разные почты и логины для различных сервисов.
Сделай несколько уровней:
"публичный" — соцсети, ничего личного.
"полуприватный" — магазины, подписки.
"секретный" — банк, документы, финансы.
3. Не веди чувствительные разговоры в популярных мессенджерах.
Telegram? Да, если с proxy, без номера, через бота.
Но для действительно приватной переписки — SimpleX, Session, Molly, Threema.
4. Никогда не храни пароли в браузере.
Используй менеджер паролей: Bitwarden, KeePassXC, 1Password
И никаких одинаковых паролей, мать его.
5. Используй 3 буквы для просмотра YouTube (загран паспорт) + DNS HTTPS + браузер с защитой от трекеров:
Firefox, Waterfox, Tor — лучшие друзья.
Настрой uBlock Origin, Privacy Badger, CanvasBlocker.
Запрети WebRTC, third-party cookies.
6. Фото, метаданные, EXIF — чисти.
Каждое фото с телефона может содержать GPS, модель устройства и даже серийник.
Перед публикацией стирай метаданные.
7. И главное — не рассказывай слишком много.
Сколько тебе лет, где ты живёшь, где работаешь, кого ебёшь — это всё будет использовано против тебя, если попадёт не в те руки.
Информация — валюта. Чем меньше ты её раздаёшь, тем меньше ты уязвим.
Паранойя? Нет. Гигиена. Цифровая.
(1/2)
❤3🔥1
Niwe Code
#ItSecurity Ты — продукт. Но можешь им не быть. В современном мире каждый лайк, номер телефона и email это потенциальное оружие против тебя. Нет, это не паранойя. Это — киберреальность. Хочешь остаться вне поля зрения и не попасть в базу данных рекламщиков…
#ItSecurity
Ты — цель. Сделай так, чтобы тебя было трудно поймать.
Цифровая гигиена это только половина. Хочешь настоящей защиты — надо смотреть как ты ведёшь себя в реальной жизни и в соцсетях. Потому что как бы ты ни шифровался, если ты слил себя сам то никто тебе уже не поможет.
1. Никаких геотегов и "я в кафе №123 с друзьями"
Каждый раз когда ты постишь фото с геолокацией — ты оставляешь след. А если ты это делаешь регулярно то становишься предсказуемым.
2. Никогда не указывай домашний адрес ни в одной анкете, кроме гос. структур
И даже там если есть возможность, используй адрес регистрации, а не проживания.
Ты удивишься сколько людей указывают настоящие адреса при заказе футболки с надписью "ЗА ПУТИНА".
Хочешь, чтобы однажды к тебе пришли? Окей, продолжай.
3. Блокируй людей которым не доверяешь.
Даже если это "знакомый друга, у нас общие темы".
Многие утечки начинаются с банального — кто-то просто не туда скинул скрин.
Учи друзей как не палить тебя. Или сам становись единственным админом своего инфополя.
4. Фишинг не про "дураков", а про усталость и автоматизм.
Просто не делай этого. Никогда.
5. Убери настоящие ФИО и телефоны из открытых профилей.
Сделай себе публичный альтер-эго, если надо.
Фриланс? Напиши "Вова П."
Телега? Без привязки к номеру, юзернейм и аватарка — хоть картинка кота с бензопилой.
6. Храни зашифрованные бэкапы
Не в облаке, а локально и под паролем. И пароль в голове, не на стикере.
7. Камера и микрофон — закрывай.
Webcam cover — стоит копейки, спасает нервов на миллионы.
За тобой никто не следит, пока ты никому не нужен.
А потом уже поздно.
Так что: анонимность это не "не быть видимым". Это быть незаметным.
Будь серым кардиналом своего инфополя.
(2/2)
Ты — цель. Сделай так, чтобы тебя было трудно поймать.
Цифровая гигиена это только половина. Хочешь настоящей защиты — надо смотреть как ты ведёшь себя в реальной жизни и в соцсетях. Потому что как бы ты ни шифровался, если ты слил себя сам то никто тебе уже не поможет.
1. Никаких геотегов и "я в кафе №123 с друзьями"
Каждый раз когда ты постишь фото с геолокацией — ты оставляешь след. А если ты это делаешь регулярно то становишься предсказуемым.
2. Никогда не указывай домашний адрес ни в одной анкете, кроме гос. структур
И даже там если есть возможность, используй адрес регистрации, а не проживания.
Ты удивишься сколько людей указывают настоящие адреса при заказе футболки с надписью "ЗА ПУТИНА".
Хочешь, чтобы однажды к тебе пришли? Окей, продолжай.
3. Блокируй людей которым не доверяешь.
Даже если это "знакомый друга, у нас общие темы".
Многие утечки начинаются с банального — кто-то просто не туда скинул скрин.
Учи друзей как не палить тебя. Или сам становись единственным админом своего инфополя.
4. Фишинг не про "дураков", а про усталость и автоматизм.
Не кликай по письмам "ваша почта была взломана, нажмите для восстановления".
Не верь звонкам "из банка", даже если они знают твоё имя и другую информацию.
Не пиши паспортные данные никому, ни при каких условиях.
Просто не делай этого. Никогда.
5. Убери настоящие ФИО и телефоны из открытых профилей.
Сделай себе публичный альтер-эго, если надо.
Фриланс? Напиши "Вова П."
Телега? Без привязки к номеру, юзернейм и аватарка — хоть картинка кота с бензопилой.
6. Храни зашифрованные бэкапы
Не в облаке, а локально и под паролем. И пароль в голове, не на стикере.
7. Камера и микрофон — закрывай.
Webcam cover — стоит копейки, спасает нервов на миллионы.
За тобой никто не следит, пока ты никому не нужен.
А потом уже поздно.
Так что: анонимность это не "не быть видимым". Это быть незаметным.
Будь серым кардиналом своего инфополя.
(2/2)
❤4
#Programming
Задача: уроните компилятор любого языка, используя только один символ из таблицы ASCII, но можно вставлять его бесконечное (неограниченное) количество раз.
Правильный ответ скину позже👍
Задача: уроните компилятор любого языка, используя только один символ из таблицы ASCII, но можно вставлять его бесконечное (неограниченное) количество раз.
Правильный ответ скину позже
Please open Telegram to view this post
VIEW IN TELEGRAM
Догадайтесь, кто потратил 2 дня на создание Flutter приложения, которое не может заработать из-за кривых библиотек? Придётся владельцам iPhone страдать. Извините
🔥3
#Education #Programming
Почему ты не вырос как разработчик?
Смотри, я сам через это прошёл. И мне до сих пор иногда стыдно вспоминать, как я «развивался» первые полтора года. Статьи читал, видосики смотрел, «учил» новые фреймворки. А по факту — топтался на месте.
Вот что реально тормозит, если по-честному:
1. Ты не делаешь по-настоящему сложные вещи
Ты не лезешь туда, где больно. Не копаешь баги в проде, не разбираешь чужие старые проекты, не решаешь реальные проблемы бизнеса. Потому что страшно и не хочется облажаться.
Но именно там, где тебе страшно — начинается рост.
2. Ты слишком много «учишь» и слишком мало практикуешь
Все мы любим читать про новые технологии, но знание ≠ опыт.
Один вечер, проведённый с дебагом проблемы которую ты не понимаешь — даёт больше, чем неделя «курсов».
3. Ты боишься ошибаться публично
Не выкладываешь проекты, не пишешь посты, не ходишь на собесы.
Потому что думаешь: «а вдруг я покажусь тупым?»
Ну, покажешься. И чё? Пару раз обосрался, но зато потом стал умнее.
4. Ты ждёшь момента когда будешь “готов”
А он не наступит. Никто из нас не чувствует себя готовым. Ни джуны, ни мидлы, ни тем более сеньоры.
Весь рост происходит через боль, фейлы и неудобство. Только так.
Хочешь двигаться вперёд — начни делать, а не думать. Не готов? Отлично, именно тогда и надо пробовать.
И да, если кажется что все вокруг умнее, то поздравляю, это значит что ты в правильном окружении.
Почему ты не вырос как разработчик?
Смотри, я сам через это прошёл. И мне до сих пор иногда стыдно вспоминать, как я «развивался» первые полтора года. Статьи читал, видосики смотрел, «учил» новые фреймворки. А по факту — топтался на месте.
Вот что реально тормозит, если по-честному:
1. Ты не делаешь по-настоящему сложные вещи
Ты не лезешь туда, где больно. Не копаешь баги в проде, не разбираешь чужие старые проекты, не решаешь реальные проблемы бизнеса. Потому что страшно и не хочется облажаться.
Но именно там, где тебе страшно — начинается рост.
2. Ты слишком много «учишь» и слишком мало практикуешь
Все мы любим читать про новые технологии, но знание ≠ опыт.
Один вечер, проведённый с дебагом проблемы которую ты не понимаешь — даёт больше, чем неделя «курсов».
3. Ты боишься ошибаться публично
Не выкладываешь проекты, не пишешь посты, не ходишь на собесы.
Потому что думаешь: «а вдруг я покажусь тупым?»
Ну, покажешься. И чё? Пару раз обосрался, но зато потом стал умнее.
4. Ты ждёшь момента когда будешь “готов”
А он не наступит. Никто из нас не чувствует себя готовым. Ни джуны, ни мидлы, ни тем более сеньоры.
Весь рост происходит через боль, фейлы и неудобство. Только так.
Хочешь двигаться вперёд — начни делать, а не думать. Не готов? Отлично, именно тогда и надо пробовать.
И да, если кажется что все вокруг умнее, то поздравляю, это значит что ты в правильном окружении.
#Programming
Гид по выбору СУБД для разработчика
Выбор базы данных — это как выбор автомобиля: можно взять практичную Toyot'у, а кому-то и старый Жигуль сойдёт.
1. Oracle Database: корпоративный монстр
🔹 Сильные стороны:
- Обрабатывает экстремальные нагрузки (банки, госструктуры)
- PL/SQL — продвинутый язык для сложной бизнес-логики
- Кластеризация (RAC), партиционирование, материализованные представления
🔹 Слабые стороны:
- Дорогие лицензии (бесплатная XE версия ограничена)
- Сложный в администрировании
- Медленно внедряет modern-фичи
💡 Кому подойдёт:
Корпорации, где критичны надёжность и поддержка.
2. MySQL: народный выбор
🔹 Сильные стороны:
- Лёгкий в настройке, идеален для read-heavy нагрузок
- Широкая поддержка (хостинги, WordPress, PHP)
- Бесплатная Community Edition
🔹 Слабые стороны:
- До версии 8.0 не хватало оконных функций и CTE
- Слабый оптимизатор запросов vs PostgreSQL
- Под контролем Oracle (риски для open-source)
💡 Кому подойдёт:
Веб-разработчики и стартапы с простыми проектами.
3. Microsoft SQL Server: король Windows-стека
🔹 Сильные стороны:
- Глубокая интеграция с .NET, Azure и Power BI
- T-SQL с удобными расширениями
- Встроенные BI-инструменты (SSIS, SSAS)
🔹 Слабые стороны:
- Дорогое лицензирование
- Не популярен вне экосистемы Microsoft
- Linux-версия сыровата
💡 Кому подойдёт:
Команды, работающие с Windows/.NET и аналитикой.
4. PostgreSQL: open-source Tesla *(бонус для ценителей)*
🔹 Сильные стороны:
- Самый богатый SQL (CTE, JSONB, оконные функции)
- Расширяемость: свои типы данных, функции на Python/JS
- Активное сообщество и быстрая реализация новых фич
🔹 Слабые стороны:
- Требует больше ресурсов, чем MySQL
- Нет встроенной кластеризации уровня Oracle RAC
💡 Кому подойдёт:
Разработчики, ценящие баланс возможностей и свободы.
Что выбрать?
- Корпоративный проект с гарантиями? → Oracle
- Веб-приложение или стартап? → MySQL
- Работаешь с .NET/Azure? → SQL Server
- Хочешь open-source с максимумом возможностей? → PostgreSQL
Личное мнение: PostgreSQL — лучший баланс для большинства задач. Но если нужны специфичные фичи (например, Oracle RAC), то выбор очевиден.
Гид по выбору СУБД для разработчика
Выбор базы данных — это как выбор автомобиля: можно взять практичную Toyot'у, а кому-то и старый Жигуль сойдёт.
1. Oracle Database: корпоративный монстр
🔹 Сильные стороны:
- Обрабатывает экстремальные нагрузки (банки, госструктуры)
- PL/SQL — продвинутый язык для сложной бизнес-логики
- Кластеризация (RAC), партиционирование, материализованные представления
🔹 Слабые стороны:
- Дорогие лицензии (бесплатная XE версия ограничена)
- Сложный в администрировании
- Медленно внедряет modern-фичи
Корпорации, где критичны надёжность и поддержка.
2. MySQL: народный выбор
🔹 Сильные стороны:
- Лёгкий в настройке, идеален для read-heavy нагрузок
- Широкая поддержка (хостинги, WordPress, PHP)
- Бесплатная Community Edition
🔹 Слабые стороны:
- До версии 8.0 не хватало оконных функций и CTE
- Слабый оптимизатор запросов vs PostgreSQL
- Под контролем Oracle (риски для open-source)
Веб-разработчики и стартапы с простыми проектами.
3. Microsoft SQL Server: король Windows-стека
🔹 Сильные стороны:
- Глубокая интеграция с .NET, Azure и Power BI
- T-SQL с удобными расширениями
- Встроенные BI-инструменты (SSIS, SSAS)
🔹 Слабые стороны:
- Дорогое лицензирование
- Не популярен вне экосистемы Microsoft
- Linux-версия сыровата
Команды, работающие с Windows/.NET и аналитикой.
4. PostgreSQL: open-source Tesla *(бонус для ценителей)*
🔹 Сильные стороны:
- Самый богатый SQL (CTE, JSONB, оконные функции)
- Расширяемость: свои типы данных, функции на Python/JS
- Активное сообщество и быстрая реализация новых фич
🔹 Слабые стороны:
- Требует больше ресурсов, чем MySQL
- Нет встроенной кластеризации уровня Oracle RAC
Разработчики, ценящие баланс возможностей и свободы.
Что выбрать?
- Корпоративный проект с гарантиями? → Oracle
- Веб-приложение или стартап? → MySQL
- Работаешь с .NET/Azure? → SQL Server
- Хочешь open-source с максимумом возможностей? → PostgreSQL
Личное мнение: PostgreSQL — лучший баланс для большинства задач. Но если нужны специфичные фичи (например, Oracle RAC), то выбор очевиден.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
#Backend #Frontend
Как я решил поработать фронтендером и потерял веру в жизнь
Я — backend'ер, ну тот самый который нахуй никому не нужен. Я знаю базы, очереди, авторизации, микросервисы, блядь почти всё.
Я запускаю проекты которые делают деньги. Я не боюсь 5xx ошибок. Я даже почти умею дебажить в проде не трогая пользователей.
Но однажды я подумал:
«Хм. А сделаю-ка я сам себе фронт. Что там сложного? Кнопки да формы»
Я чуть не умер.
Первое — CSS.
КАК ЭТО РАБОТАЕТ, СУКА?
– «margin: 0 auto» — ничего не по центру.
– «flex» — всё куда-то уехало.
– «grid» — вообще магия из “Гарри Поттера”.
– 10 минут ковырял кнопку, а оказалось, что на ней стоял position: absolute; top: -9999px.
Второе — шрифты, отступы, цвета.
– Я выбрал зелёный. Мне сказали: «фу, кислотно».
– Поставил серый. Ответ: «глаз режет».
– В итоге я просто открыл Tailwind и ткал как бабка в темноте.
Третье — React.
– Написал компонент. Забыл key. Всё ломается.
– Сделал форму. State не обновляется.
– Добавил useEffect — начались бесконечные рендеры.
– И ещё 300 ошибок в консоли из которых половина от ESLint, вторая от меня, а третья просто потому что мне не повезло.
И после этого мне сказали: «а ты сделай адаптив.....»
Я чуть инфаркт не схватил и хотелось человека засунуть в коллайдер. Вкратце это когда твой верстальный кошмар растягивается ещё и на мобилку.
В итоге у меня на телефоне всё было вверх ногами, а кнопка «Оформить заказ» поменяла цвет и сдвинулась по косинусу на 97889°
Frontend — это не просто "перетаскивание кнопок". Это отдельная ветка боли.
Но знаете что? Я вернулся в бэк.
Обнял свой Docker, Java, базы и консоль. Заплакал. И пообещал себе: никогда больше не писать CSS.
Как я решил поработать фронтендером и потерял веру в жизнь
Я — backend'ер, ну тот самый который нахуй никому не нужен. Я знаю базы, очереди, авторизации, микросервисы, блядь почти всё.
Я запускаю проекты которые делают деньги. Я не боюсь 5xx ошибок. Я даже почти умею дебажить в проде не трогая пользователей.
Но однажды я подумал:
«Хм. А сделаю-ка я сам себе фронт. Что там сложного? Кнопки да формы»
Первое — CSS.
КАК ЭТО РАБОТАЕТ, СУКА?
– «margin: 0 auto» — ничего не по центру.
– «flex» — всё куда-то уехало.
– «grid» — вообще магия из “Гарри Поттера”.
– 10 минут ковырял кнопку, а оказалось, что на ней стоял position: absolute; top: -9999px.
Второе — шрифты, отступы, цвета.
– Я выбрал зелёный. Мне сказали: «фу, кислотно».
– Поставил серый. Ответ: «глаз режет».
– В итоге я просто открыл Tailwind и ткал как бабка в темноте.
Третье — React.
– Написал компонент. Забыл key. Всё ломается.
– Сделал форму. State не обновляется.
– Добавил useEffect — начались бесконечные рендеры.
– И ещё 300 ошибок в консоли из которых половина от ESLint, вторая от меня, а третья просто потому что мне не повезло.
И после этого мне сказали: «а ты сделай адаптив.....»
Я чуть инфаркт не схватил и хотелось человека засунуть в коллайдер. Вкратце это когда твой верстальный кошмар растягивается ещё и на мобилку.
В итоге у меня на телефоне всё было вверх ногами, а кнопка «Оформить заказ» поменяла цвет и сдвинулась по косинусу на 97889°
Frontend — это не просто "перетаскивание кнопок". Это отдельная ветка боли.
Но знаете что? Я вернулся в бэк.
Обнял свой Docker, Java, базы и консоль. Заплакал. И пообещал себе: никогда больше не писать CSS.
🔥4
#Education
Общая теория программирования
Забудь языки, фреймворки. Забудь даже, что ты пишешь код.
Программирование — это способ взаимодействия с реальностью через абстракцию и контроль. Это не про Python или React, а про способность создавать модели мира которые можно автоматизировать.
Что такое программа?
Программа — это структурированная последовательность решений, оформленные в правилах, которые понятны данной машине (ЭВМ).
Программирование — это формализация мышления, которую можно воспроизвести. Т.е. ты не просто говоришь компьютеру, что делать, а переводишь человеческие желания в логику и структуру, отбрасывая весь остальной хаос.
И чем точнее ты умеешь это делать, тем круче ты как разработчик.
Программа == Модель поведения системы.
И каждый блок — это не просто строка кода, это решение принятое тобой на основе текущего знания о мире.
Почему это важно?
Потому что программист — это не "тот, кто кодит".
Это тот кто понимает: как работает реальность и как её можно симулировать.
Ты создаёшь логические модели поведения систем. И если ошибся — рушится всё.
Общая теория программирования — это путь от хаоса к системному мышлению.
Когда ты не просто пишешь код, а создаёшь модель в которой код просто инструмент.
И это, по сути, та же теория управления только на языке команд.
Если мир — это система, то программисты — это архитекторы реальности.
Мы не пишем "приложения". Мы переписываем правила того, как взаимодействуют сущности.
От запросов к API — до твоего мышления.
И да, чем выше твой уровень — тем меньше ты "кодишь" и тем больше ты конструируешь мысль, которую потом выражают другие.
Общая теория программирования
Забудь языки, фреймворки. Забудь даже, что ты пишешь код.
Программирование — это способ взаимодействия с реальностью через абстракцию и контроль. Это не про Python или React, а про способность создавать модели мира которые можно автоматизировать.
Что такое программа?
Программа — это структурированная последовательность решений, оформленные в правилах, которые понятны данной машине (ЭВМ).
Программирование — это формализация мышления, которую можно воспроизвести. Т.е. ты не просто говоришь компьютеру, что делать, а переводишь человеческие желания в логику и структуру, отбрасывая весь остальной хаос.
И чем точнее ты умеешь это делать, тем круче ты как разработчик.
Программа == Модель поведения системы.
И каждый блок — это не просто строка кода, это решение принятое тобой на основе текущего знания о мире.
Функция — это договор: "если ты дашь мне A, я верну B".
Массив — это компромисс между скоростью и структурой.
Архитектура — это социальная инженерия внутри машины.
Почему это важно?
Потому что программист — это не "тот, кто кодит".
Это тот кто понимает: как работает реальность и как её можно симулировать.
Ты создаёшь логические модели поведения систем. И если ошибся — рушится всё.
Общая теория программирования — это путь от хаоса к системному мышлению.
Когда ты не просто пишешь код, а создаёшь модель в которой код просто инструмент.
И это, по сути, та же теория управления только на языке команд.
Если мир — это система, то программисты — это архитекторы реальности.
Мы не пишем "приложения". Мы переписываем правила того, как взаимодействуют сущности.
От запросов к API — до твоего мышления.
И да, чем выше твой уровень — тем меньше ты "кодишь" и тем больше ты конструируешь мысль, которую потом выражают другие.
❤3
#Programming
Как IT плавит тебе мозг
Знаешь, в начале всё кажется простым: сидишь, учишь Python, запускаешь какой-то hello world, мечтаешь о зарплате в российских долларах и ноутбуке с наклейками яблока и всех технологий.
А потом реальность прилетает в ебло с ноги.
1. Ты вечно забитый инфой.
В голове одновременно крутится:
🔥 где на проде у нас баг,
🔥 какой сервис отвалился,
🔥 как починить чью-то убитую архитектуру,
🔥 и как не забыть завтра сделать ревью на ревью ревью.
И мозг в какой-то момент начинает сам выключаться. Просто в никуда.
2. Нет понятия "понял и успокоился".
Сегодня ты выучил новую библиотеку.
Завтра выходит новая версия и ты опять тупишь как в первый раз.
Прошёл курс? Забудь. Он уже устарел, пока ты дополз до финального проекта.
3. Никаких планов. Никогда.
Ты можешь запланировать рабочий день, но реальность всегда с тобой поспорит:
🤩 баги,
🤩 падения продов,
🤩 задачи, которые резко "надо к утру".
И весь твой красивый план идёт в жопу быстрее, чем npm тянет зависимости.
4. Все хотят чтобы ты был магом.
"Почему не работает?"
"Когда будет готово?"
"Можно за два дня вместо месяца?"
А ты сидишь и понимаешь, что программирование — это не кодить.
Это бесконечно чинить чужие мечты о халявной автоматизации.
5. Сам себя сжираешь.
Потому что хочешь сделать лучше.
Потому что бесит, когда криво.
Потому что даже ночью в голове проигрывается тот ебучий if-else, который ты не добил в коде.
IT — это не про код.
IT — это про жизнь на разогретых оборотах, где любой косяк — твоя личная битва.
И если ты ещё не сгорел — либо ты новичок, либо ты уже бездушная машина на пиве и панике.
Как IT плавит тебе мозг
Знаешь, в начале всё кажется простым: сидишь, учишь Python, запускаешь какой-то hello world, мечтаешь о зарплате в российских долларах и ноутбуке с наклейками яблока и всех технологий.
А потом реальность прилетает в ебло с ноги.
1. Ты вечно забитый инфой.
В голове одновременно крутится:
И мозг в какой-то момент начинает сам выключаться. Просто в никуда.
2. Нет понятия "понял и успокоился".
Сегодня ты выучил новую библиотеку.
Завтра выходит новая версия и ты опять тупишь как в первый раз.
Прошёл курс? Забудь. Он уже устарел, пока ты дополз до финального проекта.
3. Никаких планов. Никогда.
Ты можешь запланировать рабочий день, но реальность всегда с тобой поспорит:
И весь твой красивый план идёт в жопу быстрее, чем npm тянет зависимости.
4. Все хотят чтобы ты был магом.
"Почему не работает?"
"Когда будет готово?"
"Можно за два дня вместо месяца?"
А ты сидишь и понимаешь, что программирование — это не кодить.
Это бесконечно чинить чужие мечты о халявной автоматизации.
5. Сам себя сжираешь.
Потому что хочешь сделать лучше.
Потому что бесит, когда криво.
Потому что даже ночью в голове проигрывается тот ебучий if-else, который ты не добил в коде.
IT — это не про код.
IT — это про жизнь на разогретых оборотах, где любой косяк — твоя личная битва.
И если ты ещё не сгорел — либо ты новичок, либо ты уже бездушная машина на пиве и панике.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2
Niwe Code
#Programming Задача: уроните компилятор любого языка, используя только один символ из таблицы ASCII, но можно вставлять его бесконечное (неограниченное) количество раз. Правильный ответ скину позже 👍
Ответ: символ '('. Да, именно скобочка ломает компилятор любого ЯП, так как защита от леворекурсивного парсера зачастую работает как инкапсуляция в Python, то ошибка имеет место быть.
class Squire() {
static int squire(int num) {
((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
return num * num;
}
}#Education
Сборщик мусора: невидимый герой твоего кода
Когда ты запускаешь свой код — особенно на Java, Python, C# или Go, то ты возможно не знаешь, но внутри уже кто-то убирается за тобой.
Этот кто-то — сборщик мусора (Garbage Collector, GC). Он спасает тебя от утечек памяти и крашей пока ты живёшь в иллюзии, что память управляется сама собой.
Что он делает?
Он следит за тем какие объекты в оперативной памяти больше не используются и автоматически их удаляет чтобы освободить место.
Ты создал переменную
Но если потом нигде больше
GC говорит: «ну всё, можно выносить».
Как он определяет, что объект "мёртв"?
Через анализ достижимости:
У каждого объекта есть ссылки. Если на объект никто больше не ссылается, он считается ненужным.
Сборщик обходит дерево ссылок от "корня" (например, глобальных переменных и стека), и помечает всё, что доступно.
Остальные — мусор.
Типы сборщиков мусора
1.
2.
3.
4.
5.
GC ≠ волшебная палочка
Ты всё равно можешь накосячить:
1. Утечка через замыкания и слушатели событий
2. Глобальные переменные, которые “держат” мусор
3. Ошибки в логике, где живой объект “висит” зря
GC не решает всё. Он автоматизирует, но не прощает тупость.
Что, если GC нет?
В C, C++ — ты сам следишь за памятью:
И если забыл очистить — утечка.
Очистил дважды — segfault.
Ошибся с адресом — undefined behavior и адский дебаг.
Освобождай ресурсы (файлы, сокеты, соединения) вручную, даже если GC всё "должен сам".😊
Сборщик мусора: невидимый герой твоего кода
Когда ты запускаешь свой код — особенно на Java, Python, C# или Go, то ты возможно не знаешь, но внутри уже кто-то убирается за тобой.
Этот кто-то — сборщик мусора (Garbage Collector, GC). Он спасает тебя от утечек памяти и крашей пока ты живёшь в иллюзии, что память управляется сама собой.
Что он делает?
Он следит за тем какие объекты в оперативной памяти больше не используются и автоматически их удаляет чтобы освободить место.
Ты создал переменную
tempUser = User("name") — отлично.Но если потом нигде больше
tempUser не используется и на неё не ссылаются — объект становится "мусором".GC говорит: «ну всё, можно выносить».
Как он определяет, что объект "мёртв"?
Через анализ достижимости:
У каждого объекта есть ссылки. Если на объект никто больше не ссылается, он считается ненужным.
Сборщик обходит дерево ссылок от "корня" (например, глобальных переменных и стека), и помечает всё, что доступно.
Остальные — мусор.
Типы сборщиков мусора
1.
Mark and Sweep (отметь и убери)1. Обходит все доступные объекты и помечает их.
2. Очищает всё, что не помечено.
2.
Stop-the-WorldОстанавливает всю программу чтобы провести уборку.
Эффективно, но больно: лаги, просадки, зависания.
3.
Copying GC (переносной)Делит память на две части. Всё живое переносит во вторую, остальное удаляет.
Быстрее, но жрёт больше памяти.
4.
Generational GC (поколения)Делит память на «молодые» (часто умирают) и «старые» (живут дольше).
Молодых чистит чаще. Очень эффективно. Например, в JVM.
5.
Concurrent GC (фоновая чистка)Не стопает программу, чистит фоном.
Используется в Go, новых версиях Java. Баланс между скоростью и плавностью.
GC ≠ волшебная палочка
Ты всё равно можешь накосячить:
1. Утечка через замыкания и слушатели событий
2. Глобальные переменные, которые “держат” мусор
3. Ошибки в логике, где живой объект “висит” зря
GC не решает всё. Он автоматизирует, но не прощает тупость.
Что, если GC нет?
В C, C++ — ты сам следишь за памятью:
malloc/freenew/deleteИ если забыл очистить — утечка.
Очистил дважды — segfault.
Ошибся с адресом — undefined behavior и адский дебаг.
Освобождай ресурсы (файлы, сокеты, соединения) вручную, даже если GC всё "должен сам".
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
#Programming #DevOPS
CI/CD — твой личный автомойщик, только для кода
Хватит быть ручным программистом, который сам запускает тесты, сам заливает билд и сам потом плачет в подушку, когда прод лёг.
Пришло время стать тем, кто поставил автоматизацию и ушёл пить кофе.
Что такое CI/CD?
👍 CI (Continuous Integration) — каждый коммит, каждый пуш, каждый PR — сразу прогоняется через тесты, линтеры и всё остальное. Проверка на вшивость ещё до слияния.
👍 CD (Continuous Delivery / Deployment) — код, прошедший все круги ада, автоматически катится на сервер/сайт/облако. И всё — без твоих дрожащих ручек.
Представь, что ты больше никогда не зальёшь баг в прод вручную. Красота? Красота.
А где это живёт?
На GitHub Actions.
GitHub даёт тебе маленькую виртуалку в облаке, которая делает то что ты скажешь.
Простой CI на Python:
Каждый пуш → тесты в облаке. Если сломалось — GitHub тебе даст по еблу.
А как деплоить?
Просто. Например, деплой на сервер по SSH:
😊 А зачем мне это?
Тебя всё ещё нет на CI/CD?
Поздравляю. Ты в зоне риска. Один кривой коммит — и ты на проде в 3 часа ночи, с кофейной трясучкой и кучей багов.
Настрой себе CI/CD. Один .yml файл, и ты уже наполовину DevOps.
CI/CD — твой личный автомойщик, только для кода
Хватит быть ручным программистом, который сам запускает тесты, сам заливает билд и сам потом плачет в подушку, когда прод лёг.
Пришло время стать тем, кто поставил автоматизацию и ушёл пить кофе.
Что такое CI/CD?
Представь, что ты больше никогда не зальёшь баг в прод вручную. Красота? Красота.
А где это живёт?
На GitHub Actions.
GitHub даёт тебе маленькую виртуалку в облаке, которая делает то что ты скажешь.
Хочешь билдить? Будет билдить.
Хочешь деплоить? Будет деплоить.
Хочешь, чтобы она гоняла тесты по ночам? Она это будет делать, а ты спи спокойно.
Простой CI на Python:
name: Test and Build
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: 3.11
- name: Install deps
run: pip install -r requirements.txt
- name: Run tests
run: pytest
Каждый пуш → тесты в облаке. Если сломалось — GitHub тебе даст по еблу.
А как деплоить?
Просто. Например, деплой на сервер по SSH:
- name: Deploy to server
run: |
scp -r ./build user@yourserver:/var/www/project
ssh user@yourserver "systemctl restart your-service"
И всё. Код на сервере, сервис рестартнулся, ты красавчик.
Потому что тестить на проде — это преступление.
Потому что у всех бывает: забыл протестить, слил говно, уволили.
Потому что GitHub Actions бесплатен на старте. Бесплатно = святое.
Потому что автоматизация — это кайф. Ты сидишь, а за тебя всё делают. Почти как рабство, только наоборот.
Тебя всё ещё нет на CI/CD?
Поздравляю. Ты в зоне риска. Один кривой коммит — и ты на проде в 3 часа ночи, с кофейной трясучкой и кучей багов.
Настрой себе CI/CD. Один .yml файл, и ты уже наполовину DevOps.
Please open Telegram to view this post
VIEW IN TELEGRAM
#Education
ORM — это магия
Когда ты только начинаешь писать бекенд, ты думаешь: «Да я ща SQL бахну, нормас будет». А потом тебе кидают в лицо ORM и ты такой: что за проклятый интерфейс между мной и базой?!
Что такое ORM вообще?
ORM (Object-Relational Mapping) — это способ взаимодействия с базой данных через объектно-ориентированный код. Не надо больше писать кучу SQL-запросов — ORM сам сгенерит всё что нужно. Ты работаешь с сущностями как с объектами, а не как с табличками.
Пример для тех, кто только встал после ночного фикса прода:
Красиво? Да. Опасно? Ещё как.
Плюсы:
Минусы:
Для сложных запросов всё равно нужен SQL, или ты устроишь себе локальный ад из
Программисты, которые пишут на чистом SQL, смотрят на ORM как на демоническое вмешательство в святые JOIN'ы.
А бекендеры с опытом 2+ лет просто: «ORM — как бывшая: удобно, пока не начались странности».
ORM — это магия
Когда ты только начинаешь писать бекенд, ты думаешь: «Да я ща SQL бахну, нормас будет». А потом тебе кидают в лицо ORM и ты такой: что за проклятый интерфейс между мной и базой?!
Что такое ORM вообще?
ORM (Object-Relational Mapping) — это способ взаимодействия с базой данных через объектно-ориентированный код. Не надо больше писать кучу SQL-запросов — ORM сам сгенерит всё что нужно. Ты работаешь с сущностями как с объектами, а не как с табличками.
Пример для тех, кто только встал после ночного фикса прода:
# SQL way
SELECT * FROM users WHERE name = 'Иван';
# ORM way (Django, например)
User.objects.filter(name='Иван')
Красиво? Да. Опасно? Ещё как.
Плюсы:
Быстро и удобно — меньше кода, меньше боли.
Единый подход: не надо писать SQL, всё делается на языке приложения.
Автоматические миграции и управление схемой базы.
Минусы:
Производительность может страдать — ты не всегда понимаешь, что под капотом.
Иногда ORM — это «Overkill Relational Monster»: слишком громоздко.
Для сложных запросов всё равно нужен SQL, или ты устроишь себе локальный ад из
.select_related() и .prefetch_related().Программисты, которые пишут на чистом SQL, смотрят на ORM как на демоническое вмешательство в святые JOIN'ы.
А бекендеры с опытом 2+ лет просто: «ORM — как бывшая: удобно, пока не начались странности».
❤2
RISC и CISC: два кита процессоров
В мире процессоров существует два принципиально разных подхода к архитектуре команд: RISC (Reduced Instruction Set Computing) и CISC (Complex Instruction Set Computing).
Основная идея
RISC — архитектура с умеренным и простым набором команд. Каждая команда выполняет простое действие и обычно укладывается в один такт процессора.
CISC — архитектура с расширенным набором команд, включающим сложные операции, способные выполнять несколько действий за одну инструкцию.
Предположим, нам нужно сложить два числа из памяти и сохранить результат обратно:
CISC (например под x86 архитектуру):
RISC (например под ARM архитектуру):
Заметно, что в RISC каждое действие вынесено в отдельную инструкцию.
Что используется сейчас?
Большинство современных архитектур — гибриды. Например:
x86-64 (Intel/AMD) — формально CISC, но внутри выполняется микро-декодинг в RISC-подобные микрокоманды.
ARM (включая Apple Silicon) — классический RISC с мощной оптимизацией.
Выбор между RISC и CISC — это компромисс между простотой, мощностью и совместимостью. RISC часто проще и эффективнее в мобильных и встраиваемых системах. CISC даёт гибкость и обратную совместимость на десктопах и серверах.
В мире процессоров существует два принципиально разных подхода к архитектуре команд: RISC (Reduced Instruction Set Computing) и CISC (Complex Instruction Set Computing).
Основная идея
RISC — архитектура с умеренным и простым набором команд. Каждая команда выполняет простое действие и обычно укладывается в один такт процессора.
CISC — архитектура с расширенным набором команд, включающим сложные операции, способные выполнять несколько действий за одну инструкцию.
Предположим, нам нужно сложить два числа из памяти и сохранить результат обратно:
CISC (например под x86 архитектуру):
ADD [RAX], RBX ; сразу добавляет значение из RBX к тому, что лежит по адресу RAX
RISC (например под ARM архитектуру):
LDR R1, [R0] ; загружаем значение из памяти в R1
ADD R1, R1, R2 ; складываем значения в регистрах
STR R1, [R0] ; сохраняем обратно в память
Заметно, что в RISC каждое действие вынесено в отдельную инструкцию.
Что используется сейчас?
Большинство современных архитектур — гибриды. Например:
x86-64 (Intel/AMD) — формально CISC, но внутри выполняется микро-декодинг в RISC-подобные микрокоманды.
ARM (включая Apple Silicon) — классический RISC с мощной оптимизацией.
Выбор между RISC и CISC — это компромисс между простотой, мощностью и совместимостью. RISC часто проще и эффективнее в мобильных и встраиваемых системах. CISC даёт гибкость и обратную совместимость на десктопах и серверах.
❤2
#Programming #ITLife #Other
Что в сумке у программиста?
Ты программист? Значит твоя сумка это не просто мешок с железом, а храм мобильной девопс-мощи. Что там должно лежать чтобы быть готовым ко всему: от внезапного митинга в кофейне до спасения сервера на краю гибели?
1. Ноутбук (или боевой ультрабук/MacBook) Рабочая лошадка, твоя консольная катана. Без него ты просто человек с хорошей осанкой. Желательно на Linux или dual-boot с Windows и FreeBSD, чтобы можно было не только кодить, но и чинить прод в 4 часа ночи.
2. Power Bank (и желательно два). В мире где розетки редкий артефакт, power bank — это артефакт уровня S++ класса. Один на телефон, другой на ноут, потому что зум коллы не ждут.
3. USB-hub. Твой порт в мир legacy-оборудования. Особенно если у тебя модный макбук с двумя Type-C. Сплиттер, кард-ридер, адаптер — пусть будет всё.
4. Переходники всех видов
6. Внешний SSD с ISO образами, утилитами, бэкапами, фотками кота и Minecraft-сервером. Бывает момент, когда именно он спасает день.
7. Умная отвёртка/мультитул. Разобрать ноутбук, закрутить стойку в серверной или просто открыть бутылку пива после релиза.
8. Зарядки и кабели. Как минимум по два каждого типа: Type-C, microUSB, Lightning — и кабель для зарядки ноутбука, конечно. Никаких "а можно у тебя провод взять?".
9. Wi-Fi адаптер. Потому чтовстроенный в Linux сломался. Опять. А заказчик уже на зуме.
10. Блокнот и ручка. Иногда написать от руки — это тоже dev-магия. Особенно, если внезапно планируешь архитектуру микросервисов на салфетке в баре.
11. Антистресс-игрушка. Релиз выкатился с багами, клиент хочет за два часа то, что делается две недели, а интернет упал. Сжав игрушку, ты не сожмешь чью-то глотку.
12. Удлинитель и тройник. Программист без розетки — как код без комментов: вроде работает, но страшно.
Уважающий себя программист — это не просто чувак с ноутбуком. Это настоящий выездной DevOps-юнит с баг-фиксом в одной руке и ISO-шниками в другой. Твоя сумка — твой арсенал. И если ты к этому готов, то никакой прод тебя не испугает.
Что в сумке у программиста?
Ты программист? Значит твоя сумка это не просто мешок с железом, а храм мобильной девопс-мощи. Что там должно лежать чтобы быть готовым ко всему: от внезапного митинга в кофейне до спасения сервера на краю гибели?
1. Ноутбук (или боевой ультрабук/MacBook) Рабочая лошадка, твоя консольная катана. Без него ты просто человек с хорошей осанкой. Желательно на Linux или dual-boot с Windows и FreeBSD, чтобы можно было не только кодить, но и чинить прод в 4 часа ночи.
2. Power Bank (и желательно два). В мире где розетки редкий артефакт, power bank — это артефакт уровня S++ класса. Один на телефон, другой на ноут, потому что зум коллы не ждут.
3. USB-hub. Твой порт в мир legacy-оборудования. Особенно если у тебя модный макбук с двумя Type-C. Сплиттер, кард-ридер, адаптер — пусть будет всё.
4. Переходники всех видов
USB-C ➖ USB-A5. Несколько флешек. Минимум две: одна для файлов, проектов и прочего говна, другая — для переноски "вот этих трёх скриптов, только никому не показывай". Лучше, если они зашифрованы и подписаны твоим GPG-ключом.
HDMI ➖ VGA (да-да, в некоторых местах проекторы остались из эпохи динозавров)
Ethernet ➖ USB
DisplayPort ➖ HDMI
6. Внешний SSD с ISO образами, утилитами, бэкапами, фотками кота и Minecraft-сервером. Бывает момент, когда именно он спасает день.
7. Умная отвёртка/мультитул. Разобрать ноутбук, закрутить стойку в серверной или просто открыть бутылку пива после релиза.
8. Зарядки и кабели. Как минимум по два каждого типа: Type-C, microUSB, Lightning — и кабель для зарядки ноутбука, конечно. Никаких "а можно у тебя провод взять?".
9. Wi-Fi адаптер. Потому что
10. Блокнот и ручка. Иногда написать от руки — это тоже dev-магия. Особенно, если внезапно планируешь архитектуру микросервисов на салфетке в баре.
11. Антистресс-игрушка. Релиз выкатился с багами, клиент хочет за два часа то, что делается две недели, а интернет упал. Сжав игрушку, ты не сожмешь чью-то глотку.
12. Удлинитель и тройник. Программист без розетки — как код без комментов: вроде работает, но страшно.
Уважающий себя программист — это не просто чувак с ноутбуком. Это настоящий выездной DevOps-юнит с баг-фиксом в одной руке и ISO-шниками в другой. Твоя сумка — твой арсенал. И если ты к этому готов, то никакой прод тебя не испугает.
❤3
#Education #DevOPS
RESTful API: что это за тварь и зачем она нужна?
Ты пишешь бэк и хочешь чтобы с ним удобно общалисьвротендеры фронты, мобилки, и даже чайник с Wi-Fi? Привет, RESTful API.
Что такое REST? Representational State Transfer — архитектурный стиль взаимодействия между клиентом и сервером через протокол HTTP. Никакой магии — только принципы.
Ключевые моменты REST:
1. Клиент-серверная архитектура. Клиент не знает как устроен сервер. И слава двачу.
2. Отсутствие состояния (stateless). Каждый запрос сам по себе, никакой сессии. Если хочешь сессии — держи JWT-токены.
3. Унифицированный интерфейс. Одни и те же методы для всех ресурсов:
4. Кеширование. Ответы можно кешировать. Серверу меньше работы — тебе больше счастья.
5. Слои. Можно ставить прокси, кеши и другие радости между клиентом и сервером.
Примерчик: Допустим, у нас есть ресурс —
Фишки REST:
1. Работает на обычном HTTP — тебе не нужен специальный протокол.
2. Легко тестировать: Postman, curl, даже браузер в помощь.
3. Масштабируется и понятен новичкам.
Минусы:
1. Иногда REST'а слишком много. Когда API становится как Netflix — 200 endpoints и 300 параметров фильтрации — пора подумать о GraphQL.
2. Не для real-time задач. Для этого есть WebSocket.
RESTful API — это как хорошая отвертка: универсально, удобно, понятно. Если ты делаешь сервис и хочешь чтобы другие легко с ним работали — REST тебе в помощь.
Только пожалуйста, делайте архитекту нормально, а не так чтобы всё хранилось в одном JSON'е, иначе другие разработчики будут желать вашим близким здоровья и счастья😊
RESTful API: что это за тварь и зачем она нужна?
Ты пишешь бэк и хочешь чтобы с ним удобно общались
Что такое REST? Representational State Transfer — архитектурный стиль взаимодействия между клиентом и сервером через протокол HTTP. Никакой магии — только принципы.
Ключевые моменты REST:
1. Клиент-серверная архитектура. Клиент не знает как устроен сервер. И слава двачу.
2. Отсутствие состояния (stateless). Каждый запрос сам по себе, никакой сессии. Если хочешь сессии — держи JWT-токены.
3. Унифицированный интерфейс. Одни и те же методы для всех ресурсов:
GET, POST, PUT, DELETE.4. Кеширование. Ответы можно кешировать. Серверу меньше работы — тебе больше счастья.
5. Слои. Можно ставить прокси, кеши и другие радости между клиентом и сервером.
Примерчик: Допустим, у нас есть ресурс —
users.GET /users — получить список юзеров.
POST /users — создать нового юзера.
GET /users/123 — получить инфу по юзеру с id 123.
PUT /users/123 — обновить данные юзера.
DELETE /users/123 — удалить юзера.
Фишки REST:
1. Работает на обычном HTTP — тебе не нужен специальный протокол.
2. Легко тестировать: Postman, curl, даже браузер в помощь.
3. Масштабируется и понятен новичкам.
Минусы:
1. Иногда REST'а слишком много. Когда API становится как Netflix — 200 endpoints и 300 параметров фильтрации — пора подумать о GraphQL.
2. Не для real-time задач. Для этого есть WebSocket.
RESTful API — это как хорошая отвертка: универсально, удобно, понятно. Если ты делаешь сервис и хочешь чтобы другие легко с ним работали — REST тебе в помощь.
Только пожалуйста, делайте архитекту нормально, а не так чтобы всё хранилось в одном JSON'е, иначе другие разработчики будут желать вашим близким здоровья и счастья
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
#DevOPS #Education
Docker изнутри: как запускается магия контейнеров
Ты пишешь
1. Контейнер — это не виртуалка.
Никаких виртуальных машин, BIOS и танцев с ISO-шаманом. Контейнер — просто изолированный процесс. Ядро общее, но ты в своей песочнице. Типа общага с личной комнатой, но общей кухней.
2. Docker Engine: тройка в упряжке.
Написал
3. Изоляция через namespaces.
Docker делает вид что каждый контейнер — отдельный мир:
даже свой hostname, например,
Выглядит как отдельная ОС. А по факту? Просто изолированный шальной процесс.
4. Cgroups — следим, чтоб не обожрался.
Ты программист, ты знаешь как легко аппка может жрать 20 ГБ RAM ради вывода
5. Union FS — многослойная кулинария.
Представь бургер: снизу булка (Ubuntu), сверху сыр (nginx), а потом твоя кастомная начинка. Docker собирает образы слоями. Всё, что не меняется — read-only, всё что ты ломаешь — в верхнем write-слое.
6. Запускаем через runc.
Когда пора стартовать,
7. Docker Images.
Образ = набор слоёв, каждый из которых — изменение. Установил
Образы можно хранить у себя или пушить на Docker Hub, типа Telegram, но только для системных админов.
8. Docker-сети.
Контейнеры не просто сидят, они умеют болтать: через
Нужно подключить Nginx к backend'у? Создай сеть.
Хочешь поиграть в sysadmin-ад? Настрой
9. Безопасность: потому что ты не root
Docker прикручивает:
10. Что делает
1. CLI: «Запускаем nginx!»
2. Демон: «Ща поищу образ...»
3. Создаётся слой для записи
4. Изоляция через namespaces
5. Cgroups — не обжирайся!
6. runc: "Ща всё сделаю"
7. Подключение к сети
8. Старт процесса
Контейнер живёт, пока жив запущенный процесс. Умер процесс? RIP контейнер.
11. Это не магия. Это Linux.
Всё работает на:
Docker просто удобно это оборачивает.
Ты не волшебник — ты просто пользуйся Docker. Но если хочешь чтобы контейнеры не ссали в твой прод, понимай как они работают.
Docker изнутри: как запускается магия контейнеров
Ты пишешь
docker run nginx и всё как бы работает. Но за этой командой скрыт целый механический оркестр из системных вызовов, демонов и Linux-чародейства. Погнали разбирать по полочкам.1. Контейнер — это не виртуалка.
Никаких виртуальных машин, BIOS и танцев с ISO-шаманом. Контейнер — просто изолированный процесс. Ядро общее, но ты в своей песочнице. Типа общага с личной комнатой, но общей кухней.
2. Docker Engine: тройка в упряжке.
dockerd — демон(Daemon), главный шеф всех контейнеровCLI (docker) — тыкаешь командыREST API — всё общение между нимиНаписал
docker run nginx → твой терминал шлёт демону запрос → демон орёт: "Тащите образ!" → запускается контейнер → появляется nginx → магия.3. Изоляция через namespaces.
Docker делает вид что каждый контейнер — отдельный мир:
свои процессы
своя сеть
своя файловая система
даже свой hostname, например,
i-am-root-but-only-here.localВыглядит как отдельная ОС. А по факту? Просто изолированный шальной процесс.
4. Cgroups — следим, чтоб не обожрался.
Ты программист, ты знаешь как легко аппка может жрать 20 ГБ RAM ради вывода
“Hello world”. Cgroups не даст: хочешь 512 МБ — сиди на диете. CPU? Только половинку. Хочешь больше — иди в прод.5. Union FS — многослойная кулинария.
Представь бургер: снизу булка (Ubuntu), сверху сыр (nginx), а потом твоя кастомная начинка. Docker собирает образы слоями. Всё, что не меняется — read-only, всё что ты ломаешь — в верхнем write-слое.
6. Запускаем через runc.
Когда пора стартовать,
dockerd вызывает runc, который делает clone(), chroot() и другие тёмные ритуалы. А процесс уже не видит остальных — он в изоляции. Одинокий, но свободный.7. Docker Images.
Образ = набор слоёв, каждый из которых — изменение. Установил
apt update? Новый слой. Добавил .env? Ещё слой.Образы можно хранить у себя или пушить на Docker Hub, типа Telegram, но только для системных админов.
8. Docker-сети.
Контейнеры не просто сидят, они умеют болтать: через
bridge, host, overlay.Нужно подключить Nginx к backend'у? Создай сеть.
Хочешь поиграть в sysadmin-ад? Настрой
overlay и Swarm.9. Безопасность: потому что ты не root
Docker прикручивает:
seccomp — список “не трогай это”
AppArmor/SELinux — чтобы контейнеры не начали читать твои секретные PDF
user namespaces — контейнер думает, что он root, но на деле — мелкий пользователь без прав
10. Что делает
docker run nginx?1. CLI: «Запускаем nginx!»
2. Демон: «Ща поищу образ...»
3. Создаётся слой для записи
4. Изоляция через namespaces
5. Cgroups — не обжирайся!
6. runc: "Ща всё сделаю"
7. Подключение к сети
8. Старт процесса
Контейнер живёт, пока жив запущенный процесс. Умер процесс? RIP контейнер.
11. Это не магия. Это Linux.
Всё работает на:
namespaces
cgroups
overlayfs
chroot, clone, seccomp,Docker просто удобно это оборачивает.
Ты не волшебник — ты просто пользуйся Docker. Но если хочешь чтобы контейнеры не ссали в твой прод, понимай как они работают.
#Education #OS
Если ты думал, что процессор это просто камень под кулером то перестань так делать. Под этой крышкой прячется архитектура — не как у зданий, а как у цифровых богов. Разбираемся, кто и как рулит вычислениями.
1. x86 / x86-64 (aka архитектура которой пора на пенсию, но она держится)
Появилась в 1978 году с Intel 8086. С тех пор прошла через DOS, Windows 95, Crysis и дожила до ChatGPT.
Кто рулит: Intel и AMD
Где используется: ПК, ноуты, сервера, пекарни на Unreal Engine
Архитектура настолько древняя, что в ней до сих пор живёт режим совместимости с 16-битным кодом.
2. ARM (или как твой телефон выживает без зарядки хотя бы до обеда)
Родилась в 1983 году в Великобритании (Acorn Computers). Тогда думали — просто дешёвый процессор для школьных ПК. А теперь она везде.
Где используется: смартфоны, планшеты, Raspberry Pi, Apple M-серии
Кто рулит: ARM Holdings лицензирует, а Apple, Qualcomm, и другие внедряют
3. RISC-V (когда хочется всё и бесплатно)
Появилась в 2010-х в Университете Калифорнии в Беркли. Задумана как полностью открытая RISC-архитектура.
Где используется: исследовательские проекты, Китай, стартапы, IoT
4. MIPS (был легендой, теперь спит в шкафу истории)
С 1981 года один из пионеров RISC. Использовался в PlayStation, роутерах, принтерах и холодильниках.
Где используется: встраиваемые системы, маршрутизаторы, китайские дешёвые ноуты
5. Power/PowerPC (когда IBM ещё что-то значила в железе)
Совместная разработка IBM, Apple и Motorola в 1990-х. Была основой первых Mac и Xbox 360.
Где используется: Суперкомпьютеры, серверы
6. SPARC (забудь, если не работаешь в Oracle или NASA)
Разработана Sun Microsystems в 1987. Была крута в серверах и научных вычислениях.
Где используется: Государственные суперкомпьютеры, серверы Oracle
Что общего между ними?
По итогу:
Хочешь удобства и мощи — x86/x64;
Хочешь энергоэффективности и мобильности — ARM;
Хочешь свободы и DIY — RISC-V;
Хочешь заниматься некромантией — PowerPC или SPARC;
Архитектура — это не просто выбор, это мировоззрение.
Если ты думал, что процессор это просто камень под кулером то перестань так делать. Под этой крышкой прячется архитектура — не как у зданий, а как у цифровых богов. Разбираемся, кто и как рулит вычислениями.
1. x86 / x86-64 (aka архитектура которой пора на пенсию, но она держится)
Появилась в 1978 году с Intel 8086. С тех пор прошла через DOS, Windows 95, Crysis и дожила до ChatGPT.
Кто рулит: Intel и AMD
Где используется: ПК, ноуты, сервера, пекарни на Unreal Engine
Плюсы: Мощная, универсальная, поддерживает тонны legacy-программ
Минусы: Большая, жрущая и дико сложная — как бабушкин шкаф
Архитектура настолько древняя, что в ней до сих пор живёт режим совместимости с 16-битным кодом.
2. ARM (или как твой телефон выживает без зарядки хотя бы до обеда)
Родилась в 1983 году в Великобритании (Acorn Computers). Тогда думали — просто дешёвый процессор для школьных ПК. А теперь она везде.
Где используется: смартфоны, планшеты, Raspberry Pi, Apple M-серии
Кто рулит: ARM Holdings лицензирует, а Apple, Qualcomm, и другие внедряют
Плюсы: Энергоэффективна, дешёвая, масштабируемаяВ ARM нет инструкции "делить", потому что "а зачем". Потом правда, добавили.
Минусы: Требует портирования ПО, ограничена в high-end серверных задачах (пока)
3. RISC-V (когда хочется всё и бесплатно)
Появилась в 2010-х в Университете Калифорнии в Беркли. Задумана как полностью открытая RISC-архитектура.
Где используется: исследовательские проекты, Китай, стартапы, IoT
Плюсы: Бесплатная, модульная, кастомная под что угодноУже есть микроконтроллеры, полностью сделанные на RISC-V и открытых инструментах. Stallman одобряет.
Минусы: Сырая экосистема, нехватка поддержки
4. MIPS (был легендой, теперь спит в шкафу истории)
С 1981 года один из пионеров RISC. Использовался в PlayStation, роутерах, принтерах и холодильниках.
Где используется: встраиваемые системы, маршрутизаторы, китайские дешёвые ноуты
Плюсы: Простота, стабильностьЕго пытались реанимировать как open source, но никто не пришёл на похороны.
Минусы: Умер. Почти.
5. Power/PowerPC (когда IBM ещё что-то значила в железе)
Совместная разработка IBM, Apple и Motorola в 1990-х. Была основой первых Mac и Xbox 360.
Где используется: Суперкомпьютеры, серверы
Плюсы: Мощная, стабильная, масштабируемаяНекоторые современные процессоры для спутников всё ещё используют PowerPC, потому что "работает и хрен с ним".
Минусы: Сложность, ограниченная поддержка
6. SPARC (забудь, если не работаешь в Oracle или NASA)
Разработана Sun Microsystems в 1987. Была крута в серверах и научных вычислениях.
Где используется: Государственные суперкомпьютеры, серверы Oracle
Плюсы: Надёжная, масштабируемаяSPARC до сих пор работает в некоторых ядерных центрах. Там просто не рискуют менять что-либо вообще.
Минусы: Практически мертва, Oracle всё закопало
Что общего между ними?
Все исполняют машинный код
Все оперируют с регистрами, памятью, ALU и прочей схемотехникой
Все создают проблемы разработчикам под разные платформы
По итогу:
Хочешь удобства и мощи — x86/x64;
Хочешь энергоэффективности и мобильности — ARM;
Хочешь свободы и DIY — RISC-V;
Хочешь заниматься некромантией — PowerPC или SPARC;
Архитектура — это не просто выбор, это мировоззрение.
#OS #Linux
Unix-подобные системы: легенды, которые живы
Ты открываешь терминал, пишешь
Что вообще значит "Unix-подобная"?
Это не "почти Unix", это "почти святая троица":
Главные ветки Unix-еволюции:
1. GNU/Linux — буйный сын, который ушёл в рейв
Ядро — Linux, оболочка — GNU
Массово на серверах, в роутерах, у анонимусов и задротов
"Linux — это не Unix", говорили бородатые деды, но мир решил иначе
Дистрибутивов столько, что если пересчитать — можно вызвать дьявола
2. BSD-семейка — элита в очках
FreeBSD, OpenBSD, NetBSD, DragonFlyBSD
Академичные, стабильные и скучные — как профессор, который ещё и код ревьюит
Используются в Netflix, Juniper, даже в PlayStation 4
FreeBSD — стабильность, OpenBSD — безопасность, NetBSD — "запустится даже на кофемашине"
MacOS частично построена на FreeBSD. Так что каждый раз, когда ты тыкаешь по Finder — где-то в душе рыдает бородатый Unix-дед.
3. MacOs — гламурный фрейм Unix-моды
Под капотом ядро XNU + Darwin + POSIX-совместимость
Выглядит как Instagram*, ведёт себя как FreeBSD
Разработчики на Mac работают в терминале, чтобы казаться серьёзнее так как не знают, что у них Unix. Но у них
4. Solaris/illumos — древняя религия
От Sun Microsystems, ныне Oracle
ZFS, DTrace, контейнеры до Docker'а — всё это появилось здесь
Сейчас в полураспаде, но в академии до сих пор на алтарях
ZFS настолько крут, что его боятся даже другие файловые системы.
5. AIX, HP-UX, SCO — системные динозавры
Живут в дата-центрах, которые никому нельзя показывать
Их админы старше всех твоих IDE вместе взятых
С ними всё как в старой притче: "работает — не трогай"
SCO когда-то судился с IBM за Linux. Проиграл. Ушёл в небытие.
Фишки всех Unix-подобных:
Файлы конфигураций могут быть 500 строк и все важные
Ничего не спрашивают — просто делают. Или умирают с Segfault.
А что ещё?
Терминал — царь. Всё остальное — его вассалы.
Кто не читал "The Art of Unix Programming" — тот не шарит
Unix — это не просто ОС, это способ жить:
пиши сам, читай
*Instagram запрещен на территории РФ.
Unix-подобные системы: легенды, которые живы
Ты открываешь терминал, пишешь
ls и магия работает. А ведь под этой командой целая философия, которая зародилась в те времена, когда Билл Гейтс ещё штанишки застёгивал. Unix — дед, которого не смогли похоронить. Даже наоборот, из него выросла куча здоровых, дерзких и иногда токсичных детей.Что вообще значит "Unix-подобная"?
Это не "почти Unix", это "почти святая троица":
всё — файл
всё, что можно, делаем через терминал
ничего лишнего, пиши свои костыли сам
Главные ветки Unix-еволюции:
1. GNU/Linux — буйный сын, который ушёл в рейв
Ядро — Linux, оболочка — GNU
Массово на серверах, в роутерах, у анонимусов и задротов
"Linux — это не Unix", говорили бородатые деды, но мир решил иначе
Дистрибутивов столько, что если пересчитать — можно вызвать дьявола
2. BSD-семейка — элита в очках
FreeBSD, OpenBSD, NetBSD, DragonFlyBSD
Академичные, стабильные и скучные — как профессор, который ещё и код ревьюит
Используются в Netflix, Juniper, даже в PlayStation 4
FreeBSD — стабильность, OpenBSD — безопасность, NetBSD — "запустится даже на кофемашине"
MacOS частично построена на FreeBSD. Так что каждый раз, когда ты тыкаешь по Finder — где-то в душе рыдает бородатый Unix-дед.
3. MacOs — гламурный фрейм Unix-моды
Под капотом ядро XNU + Darwin + POSIX-совместимость
Выглядит как Instagram*, ведёт себя как FreeBSD
Разработчики на Mac работают в терминале, чтобы казаться серьёзнее так как не знают, что у них Unix. Но у них
brew работает и хер с ними.4. Solaris/illumos — древняя религия
От Sun Microsystems, ныне Oracle
ZFS, DTrace, контейнеры до Docker'а — всё это появилось здесь
Сейчас в полураспаде, но в академии до сих пор на алтарях
ZFS настолько крут, что его боятся даже другие файловые системы.
5. AIX, HP-UX, SCO — системные динозавры
Живут в дата-центрах, которые никому нельзя показывать
Их админы старше всех твоих IDE вместе взятых
С ними всё как в старой притче: "работает — не трогай"
SCO когда-то судился с IBM за Linux. Проиграл. Ушёл в небытие.
Фишки всех Unix-подобных:
man(мануал) — твой лучший друг, если ты не гуглишь/etc/shadow — даже звучит как магияФайлы конфигураций могут быть 500 строк и все важные
Ничего не спрашивают — просто делают. Или умирают с Segfault.
А что ещё?
Терминал — царь. Всё остальное — его вассалы.
Pipes (|) — склеивают мир, как суперклей для текстовых потоковgrep + awk + sed — секретные заклинания UNIX-магаКто не читал "The Art of Unix Programming" — тот не шарит
Unix — это не просто ОС, это способ жить:
пиши сам, читай
man, не доверяй GUI и никогда, слышишь, никогда не редактируй /etc/fstab в пьяном виде.*Instagram запрещен на территории РФ.
#Programming #Backend
Веб-серверы
Ты заходишь на сайт и видишь котиков. А кто тебе этих котиков подаёт? Правильно — веб-сервер. Без него твой браузер просто смотрит в пустоту, как студент на экзамене без шпоры.
Очень нужная духота:
Сегодня — всё крутится на Nginx, Apache, LiteSpeed, Caddy и даже Node.js, если тывfrontend-инженер с амбициями.
Главные игроки:
1. Apache
– дед,
– умеет всё:
– но жрёт память как браузер с 30 вкладками и 3 YouTube
2. Nginx
– лёгкий, быстрый как курьер на самокате
– не жрёт ресурсы даже когда к тебе ломится 100к пользователей
– идеален как реверс-прокси, балансировщик, статика-фетчер и девопс-друг
3. Caddy
– встроенный HTTPS по умолчанию (даже если ты не просил)
– конфиг простой, как инструкция к дошираку
– но кастомизация — боль
4. LiteSpeed
– платный, но эффективный
– любят хостинг-провайдеры за производительность
– идеален для Wordpress и других клонов php-адской хуйни
5. Node.js + Express
– не веб-сервер в чистом виде, но часто используется как таковой
– любим JS-девами: «Зачем использовать проверенные решения, если можно написать свой велосипед на
Как это работает:
Если упрощённо: веб-сервер это официант, который несёт блюдо с кухни (бэкенда) к клиенту (браузеру). Чем лучше официант — тем быстрее еда и меньше жалоб в гугл-картах.
Зачем знать про веб-серверы?
Потому что если ты не понимаешь что именно делает
Веб-сервер — это основа любого сайта. Apache, Nginx и их братья не просто софт, а солдаты невидимого фронта, которые каждый день делают возможным наш клик по "открыть кота в новой вкладке".
Веб-серверы
Ты заходишь на сайт и видишь котиков. А кто тебе этих котиков подаёт? Правильно — веб-сервер. Без него твой браузер просто смотрит в пустоту, как студент на экзамене без шпоры.
Очень нужная духота:
1989 — Тим Бернерс-Ли в CERN придумывает WWW и первый веб-сервер CERN httpd. Работал только на NeXT и с HTML 1.0. Представь: никакого CSS, ни JS, просто текст. Красота!
1995 — появляется Apache. Почему такое название? Потому что это был «a patchy server» — сервак на костылях и патчах.
2000-е — Nginx от Игоря Сысоева становится спасением от перегрева серверов на больших нагрузках.
Сегодня — всё крутится на Nginx, Apache, LiteSpeed, Caddy и даже Node.js, если ты
Главные игроки:
1. Apache
– дед,
– умеет всё:
CGI, .htaccess, виртуальные хосты, логирование на уровне NASA– но жрёт память как браузер с 30 вкладками и 3 YouTube
2. Nginx
– лёгкий, быстрый как курьер на самокате
– не жрёт ресурсы даже когда к тебе ломится 100к пользователей
– идеален как реверс-прокси, балансировщик, статика-фетчер и девопс-друг
3. Caddy
– встроенный HTTPS по умолчанию (даже если ты не просил)
– конфиг простой, как инструкция к дошираку
– но кастомизация — боль
4. LiteSpeed
– платный, но эффективный
– любят хостинг-провайдеры за производительность
– идеален для Wordpress и других клонов php-адской хуйни
5. Node.js + Express
– не веб-сервер в чистом виде, но часто используется как таковой
– любим JS-девами: «Зачем использовать проверенные решения, если можно написать свой велосипед на
async/await»Как это работает:
• Браузер отправляет HTTP-запрос
• Веб-сервер его принимает
• И либо отдаёт статику (HTML, CSS, JS), либо прокидывает дальше в backend (PHP, Python, C#)
• Ответ обратно летит в браузер
Если упрощённо: веб-сервер это официант, который несёт блюдо с кухни (бэкенда) к клиенту (браузеру). Чем лучше официант — тем быстрее еда и меньше жалоб в гугл-картах.
Зачем знать про веб-серверы?
Потому что если ты не понимаешь что именно делает
proxy_pass, RewriteRule или Listen 443 ssl, то ты будешь чинить сайт так же, как бабушка чинит телевизор — крестясь и брызгая святой водой.Веб-сервер — это основа любого сайта. Apache, Nginx и их братья не просто софт, а солдаты невидимого фронта, которые каждый день делают возможным наш клик по "открыть кота в новой вкладке".