Pull to refresh
3
0.1
Сергей @Semy

User

Send message

Systemd: полное руководство для админов + примеры

Level of difficultyEasy
Reading time16 min
Views28K

Привет, Хабр! Systemd — скелет современного Linux. Он управляет не только службами, но и таймерами, монтированием, логированием... Понимать его = значительно повысить эффективность администрирования системы.

Данное руководство — исключительно технические аспекты: архитектура, юниты, cgroups, работа с журналами. Только команды и конфиги.

Читать далее

Golang: context изнутри

Level of difficultyMedium
Reading time14 min
Views8.8K

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

Читать далее

Криптография для чайников: давайте определимся с терминами

Level of difficultyEasy
Reading time15 min
Views5.1K

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

Кому это может быть интересно? Например:

·         менеджерам и аналитикам, которым не важны технические детали, но важно понимать, о чем говорят их коллеги разработчики

·         новичкам, которым предстоит погрузиться в мир криптографии

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

Читать далее

Cryptohack. Решение CTRIME

Level of difficultyEasy
Reading time7 min
Views883

Приветствую, Хабр! Я продолжаю освещать режимы шифрования блочных шифров и сегодня расскажу про режим CTR (Counter), а также разберу решение задачи CTRIME, в которой этот режим используется. При этом в задаче напрямую не используется уязвимость самого режима шифрования, решение будет построено на основе уязвимости CRIME. Впрочем, про уязвимость в CTR я тоже расскажу.

Читать далее

XRAYUI для ASUS: от интерфейса к экосистеме

Level of difficultyMedium
Reading time3 min
Views7.3K

Эта статья - вторая по счету на тему open source модуля для роутеров ASUS на базе прошивки MerlinWRT. Предыдущая версия была написана почти год назад, и с того времени произошло множество изменений в модуле. Я хочу несколько осветить их в новой статье, поскольку модуль обзавелся множеством фич и полезных функций. Для базового понимания, все же стоит ознакомиться с изначальной статьей.

Читать далее

Реализация Graceful Shutdown в Go

Reading time17 min
Views37K

Изящное завершение работы (Graceful Shutdown) важно для любого длительного процесса, особенно для того, который обрабатывает состояние. Например, что если вы хотите завершить работу базы данных, поддерживающей ваше приложение, а процесс db не сбрасывает текущее состояние на диск, или что если вы хотите завершить работу веб-сервера с тысячами соединений, но не дожидаетесь окончания запросов. Изящное завершение работы не только положительно сказывается на пользовательском опыте, но и облегчает внутренние операции, что приводит к более счастливым инженерам и менее напряженным SRE.

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

Читать далее

Go: жарим общие данные. Атомно, быстро и без мьютексов

Level of difficultyMedium
Reading time8 min
Views13K


Как правило, в Go для безопасного доступа к общим данным используются мьютексы. Да, каналы тоже можно приспособить для изменения общих данных, так как они потокобезопасны, но это усложняет и замедляет логику.

Но в этой статье мы поговорим о другом. Современные процессоры имеют поддержку атомарных операций, что позволяет на основе них организовывать работу с общими данными до нескольких раз быстрее, чем с помощью общепринятых вариантов. Так как мьютексы реализованы на основе ОС, каналы сделаны на основе внутреннего кода Go с использованием тех же мьютексов из ОС под капотом, а атомарные операции делает сам процессор аппаратно за существенно меньшее количество тактов.
Пожарим омлет по атомному?

Code Anywhere по-настоящему

Level of difficultyMedium
Reading time7 min
Views8K

Настоящий комбайн для разработки:

доступ с любого устройства через браузер или SSH;

работа в контейнере исключает влияние на хостовую ОС;

лёгкость развёртывания на любом сервере с Docker;

поддержка отладки, терминала и Docker‑CLI внутри среды;

HTTPS‑шифрование и контролируемый доступ.

Это интересно

«Коллегз, ду ю хир ми», или Как не надо созваниваться на английском

Level of difficultyEasy
Reading time9 min
Views12K

Представьте: вы матерый созвонщик. У вас по три созвона на каждый день недели, и все на русском. Вы знаете все фразы наизусть: «Коллеги, меня слышно?», «Давайте я расшарю экран», «Кто еще не подключился?». Эти формулировки срабатывают на автопилоте, вы даже не задумываетесь.

А теперь по стечению обстоятельств вы оказываетесь в англоязычном коллективе. Те же самые созвоны, та же повестка, но теперь все на английском. И вот тут начинается самое интересное. Мозг следует привычным скриптам и начинает переводить фразы дословно: “Colleagues, do you hear me?”, “Let me share my screen to you”, “Who else didn't connect?”.

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

Читать далее

6 Docker-фич для продвинутого использования

Level of difficultyEasy
Reading time10 min
Views28K

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

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

Погрузиться

Кен Томпсон о взломе замков и рождении Unix

Level of difficultyEasy
Reading time6 min
Views6.4K

У 82-летнего Кена Томпсона сохранились потрясающие воспоминания о первых днях операционной системы Unix и о буйной команде её разработчиков-гиков.

В этом месяце Музей компьютерной истории Кремниевой долины в партнёрстве с Ассоциацией вычислительной техники выпустил специальный выпуск на четыре с половиной часа, записанный полтора года назад историком технологий Дэвидом Броком. В этом выпуске Томпсон подробно перечислил многие из важных моментов своей карьеры — от работы над языком программирования C и Unix до операционной системы «Plan 9 from Bell Labs» и языка программирования Go.

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

Также по ходу дела Томпсон рассказывает историю о маленьком аллигаторе, которого друг отправил ему в офис в Bell Labs. («Его просто принесли, как почту… Не самый лучший из питомцев»).

Читать далее

Как работает Docker под капотом

Reading time7 min
Views18K

Всем привет, меня зовут Дмитрий Желудков, я архитектор по эксплуатации в одной корпорации, а ещё один из авторов курса учебного центра Слёрм «Docker для админов и разработчиков». Сегодня мы заглянем под капот и разберёмся, на каких китах держится вся эта магия.

Читать далее

Три способа оптимизировать работу с памятью на Go с помощью memory pools

Reading time10 min
Views11K

Привет, Хабр! Меня зовут Александр Иванов, я разрабатываю средства управления сетевыми элементами сотовой связи и пишу на языке Go в YADRO. Однажды я работал над приложением, которое испытывало пиковые нагрузки каждые 10 минут, но выполнить обработку памяти быстро мешал Garbage Collector. Чтобы решить эту проблему, я изучил несколько способов реализации memory pool и провел испытания скорости работы. 

В этой статье расскажу, как уменьшить влияние GC на выполнение программы и покажу бенчмарки для разных memory pools. Объясню, какая из реализаций подойдет вашему проекту, а когда лучше не использовать memory pools и полагаться на встроенные механизмы рантайм-окружения Go.

Читать далее

Правда, что в английском 16 времён?

Level of difficultyEasy
Reading time4 min
Views28K

Почему кто-то говорит, что их всего 3, кто-то, что их 12, а ещё кто-то, что их 16 или вообще больше?

Так сколько же их на самом деле?

А главное, сколько из них тебе нужно знать?

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

Тянуть бедного кота за хвост не буду, а сразу перейду к делу. Начну вот с чего:

Что же такое время?

В английском, как и в любом другом нормальном языке, всего 3 времени: прошедшее, настоящее и будущее. А то, что мы привыкли называть «временами» на самом деле являются (сейчас будет красивый термин) «временными формами глагола».

По сути, это как в русском. Мы все говорим, что в русском языке всего три времени. Но форм глаголов больше:

1) Я делаю;

2) Я делал;

3) Я сделал;

4) Я буду делать;

5) Я сделаю.

В русском языке минимум 5 временных форм глагола, а в английском их 16 (или больше, об этом напишу ниже). Но и в том, и в том всего 3 времени.

Просто в бытовом общении мы все называем эти формы «временами», хотя имеем в виду немного другое. И я тоже называю их временами, ведь так проще мне объяснять и тебе понимать.

Поэтому и здесь я продолжу все эти формы называть временами.

Так сколько же этих времён?

Зависит от того, какую классификацию мы рассматриваем.

Классификация № 1 – Стандартные 12 времён.

Как мы уже поняли, всего у нас три главных времени: прошедшее, настоящее и будущее. Но также существуют так называемые группы времён (считай, как в русском есть совершенный и несовершенный вид глагола): Simple, Continuous, Perfect и Perfect Continuous.

Читать далее

Golang: когда make, когда new

Level of difficultyEasy
Reading time8 min
Views11K

Привет, Хабр!

В этой статье разберёмся, зачем в Go существуют два способа создавать значения — make и new, чем они отличаются, как они работают и когда выбирать каждый из них.

Читать далее

Паттерны ООП, так не издевались даже… Структурные шаблоны с примерами на Java

Level of difficultyMedium
Reading time15 min
Views16K

Привет! Меня зовут Бромбин Андрей. В этой статье разберём структурные паттерны ООП. Используя примеры на Java и простые метафоры, поймём природу шаблонов: как они работают, зачем нужны и чего требуют от нас взамен. Почему дизайн называют удачным при использовании паттернов по назначению, и почему так бывает не всегда.

Книг и статей о шаблонах проектирования, как песен о любви, потому что в разработке эта тема волнует каждого начинающего и не очень специалиста. Помните, как пели Чиж и Ко: «а не спеть ли мне песню о любви?» — давайте и я попробую.

Шаблонизироваться

Изучаем Python: модуль json для начинающих с домашним заданием

Level of difficultyMedium
Reading time14 min
Views13K

Если вам когда-либо приходилось передавать структурированные данные между двумя разными системами, вы наверняка сталкивались с JSON. Сегодня JSON (JavaScript Object Notation) — это общепринятый стандарт для обмена данными в интернете. Он стал настолько популярным благодаря своей простоте и эффективности.

Читать далее

Разбираемся с новым sync.Map в Go 1.9

Reading time7 min
Views95K

Одним из нововведений в Go 1.9 было добавление в стандартную библиотеку нового типа sync.Map, и если вы ещё не разобрались что это и для чего он нужен, то эта статья для вас.


Для тех, кому интересен только вывод, TL;DR:


если у вас высоконагруженная (и 100нс решают) система с большим количеством ядер процессора (32+), вы можете захотеть использовать sync.Map вместо стандартного map+sync.RWMutex. В остальных случаях, sync.Map особо не нужен.


Если же интересны подробности, то давайте начнем с основ.

Читать дальше →

Советы Golang: почему указатели на срезы полезны и как их игнорирование может привести к хитрым ошибкам

Reading time4 min
Views16K

Сегодня, пока я работал, возник хороший вопрос:

Почему во многих встроенных функциях и библиотеках я часто вижу в качестве аргументов указатели на срезы, ведь срезы всегда передаются по ссылке, не так ли?

Читать далее
1
23 ...

Information

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