Pull to refresh
4
0
Send message

Анонимная сеть в 100 строк кода на Go

Level of difficultyEasy
Reading time7 min
Views29K

Прошло уже более года с тех пор как я написал статью - Анонимная сеть в 200 строк кода на Go. Пересмотрев её однажды осенним вечером я понял насколько всё в ней было ужасно - начиная с самого поведения логики кода и заканчивая его избыточностью. Сев за ноутбук и потратив от силы 20 минут у меня получилось написать сеть всего в 100 строк кода, используя лишь и только стандартную библиотеку языка.

Читать далее

Что и зачем почитать DevSecOps-у: личный опыт

Level of difficultyEasy
Reading time12 min
Views9.9K
Знания — сила! А актуальные и понятно преподнесенные знания — и вовсе на вес золота! Я решил рассказать про книги, которые показались мне, как руководителю отдела поддержки инфраструктуры сервисов (Head of Security Services Infrastructure) в «Лаборатории Касперского», полезными. Перед вами — «опорная» литература DevSecOps. Я разберу основные темы, связанные с работой девопсов и девсекопсов – и пройдусь по релевантным изданиям для этих специалистов. Расскажу, как конкретно эта литература повлияла на мою карьеру, а значит — может повлиять и на вашу :)



Дисклеймер: Если вас, как специалистов, сформировали какие-то другие книги по той же тематике — обязательно пишите в комментариях!
Читать дальше →

systemD с 0 до 1: библия сисадмина

Level of difficultyMedium
Reading time27 min
Views35K


Что бы кто не говорил, systemD становится стандартом систем инициализацией в линуксе. И с 80% вероятностью все сервера будут с systemD. Не факт, конечно, есть и личные сервера, на которых может стоять хоть Gentoo, хоть Devuan, хоть NixOS.

Некоторые дистрибутивы хотят даже перейти с загрузчика Grub на systemd-boot! Потому знать, как работать с данной системой инициализации, должен каждый сисадмин и просто программист, ибо сейчас он практически везде.

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

А также напишем небольшой скрипт на Python для автомизации некоторых задач. Приятного чтения, господа линуксоиды и просто пользователи!
Читать дальше →

Редактор кода Helix — лучше чем NeoVim?

Level of difficultyEasy
Reading time8 min
Views16K

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

Читать далее

Скотч, кабель, Интернет: умный съемный дом

Level of difficultyEasy
Reading time9 min
Views19K

Я люблю автоматизацию, гаджеты и IoT

Поэтому, места где я живу, рано или поздно становятся автоматизированными и обвешанными интернетом вещей

Да чего там, у меня даже бойлер по расписанию работает!

Под катом, я хочу рассказать, что я для этого делаю и как устроена моя домашняя инфраструктура, которая превращает уютную бетонную коробку в ее автоматизированную версию

Автоматизируй это

Разрабатываем Nix в России

Reading time4 min
Views2.7K

Спринт — особый формат мероприятий, который разработчики Nix и NixOS придумали, чтобы собираться вместе и вместе работать на проектами.

Что-то вроде хакатона, но без элемента соревновательности. Следующий спринт, если всё получится, пройдёт в Казани в августе. Здесь начало истории...

Читать далее

Ваш телефон – секретное оружие: Как превратить его в веб-камеру и оживить ваши онлайн-встречи! (Если у вас Linux)

Level of difficultyEasy
Reading time3 min
Views14K

Что объединяет удаленного сотрудника, на долю которого выпало много видеозвонков, зарождающуюся звезду YouTube и начинающего стримера? Все они, рано или поздно, осознают неотъемлемую важность повышения качества изображения, которое предоставляется их зрителям. А еще у них наверняка есть какой-нибудь Xiaomi Nano Porridge 10 Pro с довольно неплохой матрицей. И я не исключение, бросив вызов этой проблеме по-программистски и постаравшись обойтись без больших финансовых затрат, решением которой и хочу поделиться с вами. Добро пожаловать под кат!

Читать далее

Призыв писать компактное ПО, версия 2024 года (с примером кода)

Level of difficultyEasy
Reading time11 min
Views35K

Этот пост посвящён памяти Никлауса Вирта, первопроходца в сфере вычислительных наук, ушедшего от нас 1 января этого года. В 1995 году он написал важную статью A Plea for Lean Software, и в своём посте я постараюсь воспроизвести её почти тридцать лет спустя, с учётом современных кошмаров разработки ПО.

Очень короткая версия поста: современные способы разработки/сборки ПО смехотворны, они приводят к созданию пакетов на 350 МБ для рисования графиков, а простые продукты импортируют 1600 зависимостей неизвестного происхождения. Уровень безопасности ПО ужасен, ведь он зависит и от качества кода, и от его объёма. Многие из нас понимают, что ситуация нерациональна. К сожалению, многие программисты (и их руководство) никогда не работали как-то иначе. А остальным редко выделяют время, чтобы выполнять работу качественно.

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

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

Читать далее

Как сделать кастомную раскладку клавиатуры в Linux

Level of difficultyEasy
Reading time4 min
Views3.9K

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

При этом с сербской кириллической раскладкой проблем не было, т.к. есть русская раскладка, у которой через правый Alt включаются дополнительные сербские буквы.

В какой-то момент я подумал, что можно сделать свою раскладку, взяв за основу английскую и добавив сербские символы через правый Alt. Например, RightAlt + s = š, RightAlt + d = đ и т.д.

Я ожидал что есть какой-то GUI в котором можно потыкать кнопки и получить нужную раскладку. Но такого я не нашел. Все делается через редактирование файлов. Плюс я не нашел понятного туториала. Что-то конечно я смог найти, но в некоторых местах приходилось догадываться и действовать методом тыка.

Читать далее

Четыре года с умным домом: личный опыт и интересные сценарии

Reading time22 min
Views67K

Меня зовут Виктор, я backend-разработчик в финансовом маркетплейсе Банки.ру.

Последние годы я интересуюсь темой умного дома. Хочу поделиться тем, с чего я начинал и к чему пришел. Эта статья будет полезна тем, кто: хочет понять как устроен self-hosted умный дом; хочет перенять опыт и избежать чужих ошибок; уже имеет умный дом и интересуется прикладными сценариями.

Читать далее

Организуем окружение Rust и сборку Docker с применением Nix Flakes

Level of difficultyHard
Reading time8 min
Views6.8K
image

Чем интересен Nix


В Rust новое окружение для разработки обычно настраивается без труда – просто воспользуйтесь rustup и в добрый путь. Но при использовании такого сборочного инструмента как язык Nix, вы можете приобрести гораздо больше, лишь немного потрудившись. Ведь Nix позволяет:

  • Указывать в коде зависимости от проектов, не написанных на rust;
  • Автоматически добавлять в путь все инструменты/зависимости ваших проектов при помощи direnv;
  • С лёгкостью собирать тонкие контейнеры Docker.

Стоит начать применять Nix при работе в репозитории – и «как раньше» уже не захочется. Никаких больше README со списком команд Homebrew, apt, pacman и др., которые было бы необходимо выполнять. Сборка тонких контейнеров Docker делается в два счёта, без необходимости вручную вручную обрабатывать множество слоёв, из которых требуется копировать сборочные артефакты.
Читать дальше →

Стохастический язык программирования на основе алгоритмов Маркова

Reading time13 min
Views27K

MarkovJunior — это вероятностный язык программирования, в котором программы являются сочетаниями правил перезаписи, а инференс выполняется при помощи распространения ограничений. MarkovJunior назван в честь математика Андрея Андреевича Маркова, придумавшего и исследовавшего то, что сейчас называется алгоритмами Маркова.
Читать дальше →

Kubernetes the hard way

Reading time36 min
Views30K

Всем привет. Меня зовут Добрый Кот Telegram.

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

Вошли и вышли, приключение на 20 минут)

От коллектива FR-Solutions и при поддержке @irbgeo Telegram : Продолжаем серию статей о K8S.

Начать приключение

Простое понимание замыканий в Rust

Reading time5 min
Views11K

У вас бывало такое, что вы никак не можете скомпилировать код с замыканиями в Rust? Уже и все варианты Fn-трейтов перебрали, и move написали везде, где можно, а borrow checker все равно не унимается? И тут оказывается, что просто нужно внутри замыкания клонировать переданную переменную окружения! Сложно и непонятно. Дурацкий привереда Rust.


На самом деле довольно просто понять, почему так происходит и на что влияет move, а на что — клонирование. Но отсутствие подобного понимания я наблюдаю не только у начинающих программистов, но и у вполне зрелых. Хуже того, есть статьи, в которых это объясняется неправильно.

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

systemd: как писать юниты с элегантной перезагрузкой

Reading time20 min
Views27K

Разработка системы с элегантным завершением работы может оказаться той ещё пляской с бубном. В идеальном мире каждый сервис управлялся бы юнитом systemd. ExecStart запускала бы процесс, обрабатывающий SIGTERM, а ExecStop оповещало бы процесс и осуществляло блокировку, которая бы корректно завершала процесс и его ресурсы.


Однако многие программы завершаются некорректно, а то и вовсе сбивают все настройки при закрытии. В этой статье мы рассмотрим поведение systemd при завершении работы и методы написания юнитов systemd для выборочной очистки (custom cleanup) перед закрытием. Подробности — к старту нашего курса по DevOps.

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

Заблуждения программистов о почтовых адресах

Reading time15 min
Views48K
У всех легковых автомобилей четыре колеса. Исключение из этого правила — Reliant Robin.

Если у автомобиля больше четырёх колёс, то это грузовик, автобус или вообще автопоезд. Исключение найдётся и здесь: Mercedes-AMG G 63 6x6.

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

Заблуждение 0. Для доставки нужны адрес и имя


В мае 2016 года издание Skessuhorn рассказало трогательную историю: семья фермеров в Хоуларе на северо-западе Исландии получила письмо, на котором не были указаны ни имена получателей, ни адрес, по которому его нужно было доставить. Письмо отправил зарубежный турист, который гостил в посёлке Хоулар и точного адреса не знал. Вместо этого на конверте было изображено местоположение получателя с кратким описанием места, вместо имени — «датчанка, которая работает в супермаркете в Будардалюре».

Адрес называл точно только страну (Исландия) и посёлок (Будардалюр). Дальше шло текстовое описание: лошадиная ферма, где живёт исландская/датская семья с тремя детьми и большим количеством овец. Письмо турист отправил из столицы Исландии, Рейкьявика.


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

Основное про API-шлюз в Kubernetes

Reading time6 min
Views12K

Существует множество альтернатив для доступа к модулю извне кластера. Шлюз API - это определенно новинка этой области, и потому выбран темой этой статьи.

Ранее мы описывали несколько способов доступа к модулям Kubernetes. Так, например, доступ к модулю pods можно получить через его IP-адрес, но важно учитывать, что поды по своей сути являются временными. Штатный способ - настроить Service: в этом случае IP-адрес стабилен, а задача Kubernetes - обеспечивать мапироание между Service и соответствующими ей подами. В настоящий момент доступны различные виды сервисов: только внутренние, NodePort, позволяющий открыть доступа извне кластера, и LoadBalancer, который полагается на сторонний компонент - обычно это на облачный провайдер. Не будем забывать и об Ingress, обеспечивающем маршрутизацию.

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

Читать далее

Создаем личное файловое облако легко и просто (и дешево)

Reading time13 min
Views154K

А сегодня мы с вами быстро и решительно легко и просто поднимем свое личное файловое облако типа Google Drive или Яндекс.Диск, а если повезет, то еще и очень дешево.

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

Я специально будут рассказывать все максимально подробно и пошагово, чтобы даже люди без большого опыта системного администрирования смогли все повторить. В наше время, благодаря развитому инструментарию, такому как docker и snap, установить и настроить все что нужно можно очень быстро всего лишь несколькими командами.

Читать далее

Information

Rating
Does not participate
Location
Россия
Registered
Activity