Pull to refresh
12
0.3
Максим @SabMakc

User

Send message

Как я пишу HTTP-сервисы спустя 13 лет работы с Go

Level of difficultyMedium
Reading time18 min
Views22K

Примерно шесть лет назад я написал пост о том, как пишу HTTP-сервисы на Go, и сегодня я снова хочу рассказать, как пишу HTTP-сервисы.

Тот пост оказался довольно популярным и вызвал обсуждения, повлиявшие на то, как я делаю это сегодня. И спустя годы ведения подкаста Go Time, обсуждения Go в X/Twitter и поддержки подобного кода я решил, что настало время обновить информацию.

(Если вы педант и скажете, что Go не совсем 13 лет, то я отвечу, что начал писать HTTP-сервисы на Go версии .r59.)

В этом посте рассматривается широкий спектр тем, связанных с созданием сервисов на Go

Читать далее
Total votes 38: ↑38 and ↓0+38
Comments20

Современные команды и фичи Git, которыми стоит пользоваться

Level of difficultyEasy
Reading time5 min
Views28K

Мы, разработчики ПО, пользуемся git каждый день, однако большинство из нас применяет только самые основные команды, например, addcommitpush и pull, как будто на дворе по-прежнему 2005 год.

С тех пор в Git появилось множество фич, пользование которыми может сильно упросить вашу жизнь. Так давайте исследуем некоторые из недавно добавленных современных команд git, о которых вам стоит знать.

Читать далее
Total votes 75: ↑73 and ↓2+71
Comments29

Вы за это заплатите! Цена Чистой Архитектуры. Часть 1

Level of difficultyMedium
Reading time11 min
Views23K

Всем привет, меня зовут Артемий, я работаю старшим Android-разработчиком в команде пользовательского профиля в RuStore. Мой опыт в индустрии уже 8 лет. За это время я успел поработать в разных проектах и компаниях. У меня был опыт работы в проекте, в котором было свыше 300 модулей и больше 60 Android-разработчиков. Такие условия заставляют задуматься о масштабируемости на принципиально ином уровне.

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

Читать далее
Total votes 64: ↑61 and ↓3+58
Comments65

Маркер всевластья, практика визуальных встреч

Level of difficultyEasy
Reading time6 min
Views3K

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

Рисунки много раз спасали меня в сложных переговорах и проектах. Сегодня я расскажу про визуальные встречи, и как их проводить.

Читать далее
Total votes 14: ↑13 and ↓1+12
Comments3

Потрошим golang: как устроена память

Reading time18 min
Views22K


Привет, меня зовут Стас Иванкевич, и я работаю в VK Cloud над разработкой облачных сервисов в команде Data Masters. Сервисы, запрошенные клиентами, так или иначе должны развернуться в том виде, в котором клиенты их запросили, в адекватные сроки и без ошибок. Существует множество механизмов, позволяющих этого достичь, и еще больше существует ошибок и проблем, которые мешают в достижении этих целей.

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

Единственным надежным решением таких проблем является глубокое погружение в теорию и исследования инструмента, которым решаются поставленные проблемы. В нашем случае таким инструментом является язык Go. И как же замечательно, что исследование его внутренностей — совсем легкое дело. В том числе когда дело касается использования памяти.
Читать дальше →
Total votes 59: ↑57 and ↓2+55
Comments17

Литье пластика в силиконовую форму. Первый опыт

Level of difficultyMedium
Reading time17 min
Views11K

Теперь можно взять весь этот бардак: застывшие остатки пластика, силиконовые формы, трубки и подложки, клей, спрей, старые газеты, наждачную бумагу… и выбросить в мусорку. На все было потрачено несколько выходных и около двух тысяч рублей в пересчете на истраченный объем. Получилась она застывшая воронка, деталь с пузырями, вздутая подложка и пара дефектных силиконовых форм. Из расходников можно вспомнить два кислых чупа-чупса под литники, которые оказались без жвачки. Да, теперь все стало понятно, можно искать исполнителя.

- Сможете изготовить такую деталь?
- Да, но скругления нужно заменить на фаски.

Далее много фотографий
Total votes 48: ↑48 and ↓0+48
Comments52

Изучаем WebRTC на практике: Лучшие инструменты и демо

Level of difficultyEasy
Reading time9 min
Views4.7K

В этой статье(или дайджесте) я поделюсь ключевыми инструментами, демонстрационными приложениями и открытыми проектами, незаменимыми для практического понимания WebRTC. Здесь не будет туториалов или подробных объяснений о той или иной части WebRTC, а скорее некий дайджест ресурсов, которые помогут лучше разобраться в теме. Если вы работаете с этой технологией уже какое-то время, вряд ли вы найдете что-то новое для себя.

Читать далее
Total votes 9: ↑9 and ↓0+9
Comments8

Неожиданные последствия запуска PostgreSQL в Docker: замедление запросов в 100 раз

Level of difficultyMedium
Reading time4 min
Views29K

У одного из клиентов нашей системы мониторинга PostgreSQL серверов возникла проблема сильного замедления запросов при запуске базы в Docker. В этой статье расскажем о возможных последствиях использования PostgreSQL в Docker с конфигурацией по умолчанию.

Читать далее
Total votes 76: ↑77 and ↓-1+78
Comments43

Истории о вреде локальной оптимизации

Level of difficultyEasy
Reading time10 min
Views8.9K

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

Занимаясь "улучшительством" отдельно взятых элементов, бизнес рискует выкинуть из стенных часов с кукушкой стрелки: с точки зрения механизма они делают бесполезную работу, создавая только избыточное давление. А потом уберут и кукушку, потому что она из-за изменения баланса начнёт петь невовремя. Оставшиеся элементы между собой будут весьма гармонично взаимодействовать, только для конечного пользователя от этого не будет никакой пользы.

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

Бороться с локальной оптимизацией
Total votes 63: ↑68 and ↓-5+73
Comments36

Смартфон для джаваскриптера-олдфага: стоит ли гику брать дешманские девайсы на KaiOS? Смотрим на Nobby 240 LTE

Level of difficultyMedium
Reading time11 min
Views7.5K
image

Друзья! Много ли платформ вы знаете, где для написания пользовательских приложений используется стек… веб-технологий, причём это единственный нативный способ писать программы? Услышав о HTML5 + CSS + JS, на ум приходит разве что webOS — которая используется в современных телевизорах от LG (а ранее использовалась ещё и в Palm Pre — уникальный смартфон, единственный в своём роде), а олды вспомнят ещё и про FireFox OS, в которой вся оболочка (включая многозадачность, шторку уведомлений и все приложения) также была реализована на JS. Но ни webOS, ни FFOS в своё время не суждено было стать массовыми ОС на смартфонах: сказывались аппаратные ограничения устройств, да и проблемы с портированием уже существующих приложений с других платформ (например, игр). Однако несколько лет назад, проект FireFox OS был форкнут и на свет появилась новая система, предназначенная для… умных кнопочных телефонов с LTE! И имя ей — KaiOS. Вероятно, многие мои читатели слышали о ней и о новых умных кнопочниках от Nokia. Но что из себя представляет система под капотом и чем она может быть интересна гику? Читайте в новом материале!
Читать дальше →
Total votes 58: ↑62.5 and ↓-4.5+67
Comments30

LLMOps: не разрешают использовать ChatGPT. Что можно сделать?

Level of difficultyEasy
Reading time3 min
Views8.6K

Бывают ситуации, когда жизненные обстоятельства не позволяют использовать ChatGPT и приходится разворачивать LLM локально. Там можно остаться и без AI, а этого мужики точно не поймут. Есть ли какие-то способы решения этой проблемы?

Если у вас такая ситуация – можете выдохнуть, решение есть.

Читать далее
Total votes 49: ↑44 and ↓5+39
Comments30

Радиоэфир без регистрации и СМС

Level of difficultyEasy
Reading time23 min
Views23K

Пост для тех, кто любит радиосвязь, но не радиолюбитель с позывным

Меня всегда привлекали рации. В детстве в девяностых покупка для меня была недоступной, а радиокружок, который я посещал, был совсем другого уровня. Мы паяли платы уровня мультивибратора, симулятора звука шарика от пинг-понга и канарейки. Поэтому единственной доступной нам удалённой связью во дворе была размотанная проволока из трансформатора со спичечными коробочками на концах в качестве микрофона и динамика (пластиковые стаканчики тогда ещё не получили распространение, были только гранёные). Работало метров на 30.

В старшем возрасте я понял, что могу позволить завалить себя радейками и время от времени покупал различные недорогие модели, которые выбирал лишь по цене и внешнему виду. Но на удивление связать серенькие радиостанции с фиолетовыми или чёрными не получалось, даже если выбрать один и тот же номер канала. Пришлось разбираться, и всё оказалось куда сложнее, чем просто выбрать переключателем номер канала и нажать кнопку PTT (Push-To-Talk). Ну и осложнилось всё задачей не получить по шапке за эфир на частотах, где не следует этого делать. Для прояснения ситуации для начинающих и создан этот пост.
Читать дальше →
Total votes 83: ↑94 and ↓-11+105
Comments93

Безопасность в Docker: от правильной настройки хоста до демона

Reading time12 min
Views12K

Привет, Хабр! Меня зовут Эллада, я специалист по информационной безопасности в Selectel. Помогаю клиентам обеспечивать защиту инфраструктуры и участвую в разработке новых решений компании в сфере ИБ. И сейчас я начала больше погружаться в тему разработки и изучать лучшие практики по обеспечению безопасности приложений.

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

Сегодня сложно представить современное приложение без технологий контейнеризации. Поэтому я решила подробно изучить вопросы безопасности в этом направлении и собрала рекомендации, как лучше подойти к работе с Docker-платформой. Подробности под катом!
Читать дальше →
Total votes 53: ↑57 and ↓-4+61
Comments2

Развертываем peer-to-peer чат с голосом, видео, шарингом экрана, файлов и паролем

Level of difficultyMedium
Reading time7 min
Views8.2K

Эта секция написана уже после статьи, чтобы читатель посмотрел, а надо ли ему что-то отсюда или нет, но это забавное приключение, как всегда.

Что будет ниже:

Поиск open source решения для общения голосом, шаринга экрана, включения видео и чатов в режиме peer-to-peer, без лишних бекендов
Запуск этого решения в открытую в github pages
Заворачивание этого решения на приватный сервер
Простенькое закрытие доступа туды через basic http auth
Заключение с описанием некоторых замечаний и потенцевальных возможностей

Читать далее
Total votes 29: ↑28 and ↓1+27
Comments13

Rust — это не «memory safe C»

Level of difficultyMedium
Reading time27 min
Views44K

TL;DR:
— в Rust намного больше достоинств, чем просто скорость и безопасность
— в Rust по умолчанию CDD (compiler-driven development, разработка через компилирование). Это как TDD, только CDD
— Rust — не сложный язык, особенно если не гнаться за максимальной производительностью

В этой статье я бы хотел рассказать:
— почему взгляд на Rust как на "memory safe C" очень сильно сужает область его возможного применения
— почему я смотрю на Rust как на очень удобный в разработке язык высокого уровня, которому просто случайно повезло оказаться невероятно быстрым
— почему разработка на Rust быстрее, чем многие думают
— почему Rust — это один из лучших языков общего назначения

Читать далее
Total votes 174: ↑169 and ↓5+164
Comments553

Почтовый сервер с нуля. Часть первая

Level of difficultyMedium
Reading time17 min
Views24K

Очень часто на этапе стажировки новых сотрудников мы в нашей компании сталкиваемся с типичными простыми ошибками, непониманием работы DNS и почты. При этом обучение новых сотрудников по этой теме — достаточно длительный и сложный процесс, так как сами вопросы требуют построения сложных логических цепочек в голове у начинающего инженера. В один момент мы составили свою вики и схемы для обучения и решили поделиться этим опытом на Хабре в виде серии статей, чтобы людям, которые решили связать свою жизнь с IT вообще и администрированием в частности, стало проще. Материалы этой серии предназначены для начинающих администраторов.

В этом материале будет представлена связка полноценного почтового сервера в виде Exim4+Dovecot+PostfixAdmin+RainLoop.

Читать далее
Total votes 20: ↑19 and ↓1+18
Comments26

Личное облако на Proxmox

Level of difficultyMedium
Reading time8 min
Views19K

В прошлой статье (https://habr.com/ru/articles/794508/) я писал как поставить Proxmox 8 на Orange Pi 5(b). Это даже получилось, но я уперся в то, что производитель железки не выпускает свежие ядра под нее. Для железки есть 5.10.160 и оно устарело для Proxmox 8. Виртуалки работают, но есть проблемы с фаерволом. Производитель обещает вот-вот выпустить новое, но ждать я не стал и решил сделать инфраструктуру по другому. О чем и напишу. Получается уже цикл статей. Эта будет описывать цель и первые шаги к ней.

Читать далее
Total votes 26: ↑23 and ↓3+20
Comments60

Офлайновый мир: обзор инструментов цифровых «выживальщиков» на 2022 год

Reading time7 min
Views12K

Многие из нас слышали о «выживальщиках». Так называют тех людей, кто заранее готовится к различным кризисным сценариям. Если привычная инфраструктура вдруг перестанет существовать, то у них есть «план Б». «Выживальщики» приобретают соответствующие навыки выживания в лесу, обзаводятся всем необходимым для автономного существования.

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

Читать далее
Total votes 40: ↑40 and ↓0+40
Comments14

10 самых распространенных проблем при линтинге Dockerfile'ов

Level of difficultyEasy
Reading time8 min
Views11K

Весной 2023 года разработчики Depot добавили в свой сервис возможность проверять Dockerfile'ы при каждой сборке.

В этой статье они делятся десятью наиболее распространенными проблемами при линтинге Dockerfile'ов, разбирают каждую проблему и объясняют, почему она возникает и как ее решить. Авторы отмечают, что со временем список может измениться, но даже в таком виде он станет хорошей отправной точкой для оптимизации Dockerfile'ов.

Читать далее
Total votes 36: ↑35 and ↓1+34
Comments4

OpenConnect: недетектируемый VPN, который вам понравится

Level of difficultyMedium
Reading time15 min
Views222K

Я уже написал здесь много статей на тему прокси-протоколов и прокси-клиентов, которые очень сложно детектировать и заблокировать, и которые используют пользователи в Китае, Иране, Ираке, Туркменистане, и теперь вот в России (мы здесь в отличной компании, правда?). Но довольно часто мне в комментариях писали, мол, это все отлично, но мне нужен именно VPN для целей именно VPN - доступа в частные локальные сети, либо для соединения клиентов между собой, и желательно так, чтобы его не заблокировали обезьяны с гранатой. Поэтому сегодня мы поговорим именно о VPN.

Классические OpenVPN, Wireguard и IPSec отметаем сразу - их уже давно умеют блокировать и блокировали не раз. Модифицированный Wireguard от проекта Amnezia под названием AmneziaWG — отличная задумка, но есть одно но...

Читать далее
Total votes 325: ↑324 and ↓1+323
Comments342
1
23 ...

Information

Rating
1,799-th
Location
Россия
Registered
Activity