Search
Write a publication
Pull to refresh
-12
0

Системный инженер

Send message

Прагматичный набор модификаций для Windows 10 на старом железе

Reading time7 min
Views50K

В статьях про раздувание софта часто упоминают лаги Windows 10/11. Главная причина — ожирение кода в новых версиях. Для работы ОС с каждым годом требуется всё больше ресурсов. После засорения системы приходится ждать 10–20 секунд, пока отрисуются пункты контекстного меню по правой кнопке…

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

Но что делать, если приходится поневоле сидеть под Win10/11? Тогда остаётся одно — бороться с ожирением софта хирургическим путём. А именно, отключить ненужные модули и компоненты, развестистый GUI, анимацию и спецэффекты, удалить лишний софт, почистить реестр. Другими словами, спустить жирок из системы. После мануальных процедур винда начинает шевелиться значительно бодрее.
Читать дальше →

Быть или не быть ACL в администрировании Linux

Reading time5 min
Views29K

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

Эта статья поможет определиться действительно ли проекту требуется гибкость на уровне пакета ACL и какие проблемы могут возникнуть при его использовании. 

Итак, знакомьтесь ближе с теоретической и практической составляющими утилиты.  

Читать далее

Так все же, насколько быстры каналы в Linux?

Reading time26 min
Views23K

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

Читать далее

Некомпетентные компетенции

Reading time44 min
Views60K

Поводом для написания этой статьи послужил случай, когда сотрудники нашего HR-отдела предложили мне взять в нашу проектную группу Департамента разработки программного обеспечения ЛАНИТ на производственную практику выпускника одного из московских техникумов.  Кандидат обучался четвертый год по специальности «Прикладная информатика» и, судя по резюме, претендовал на должность «стажера-разработчика SQL, С#, HTML, CSS». Он уже прошел предварительные собеседования и, по словам наших кадровиков, показал себя наиболее адекватным из 15 других претендентов. Поскольку у меня это был не первый случай руководства практикой у студентов и предыдущие прецеденты имели положительный результат, я согласился.

Читать далее

WebAssembly объединит их всех

Reading time10 min
Views7K

Задумался о том что бы прикрутить к своему пет проекту систему плагинов на WebAssembly. Это потенциально позволит переиспользовать существующий код на Go, C++, Rust, если конечно же он есть. А так же избавится от so/dll, что удобно при распространении плагинов, когда проект представляет собой десктопное приложение и собирается под Windows, OSX, GNU/Linux. Поэтому пошел смотреть как это сделано в Envoy.

Читать далее

Как работает неточное сравнение строк

Reading time7 min
Views30K

https://fakt309.github.io/thisisthewall/

В языках программирования строки сравниваются очень просто, если строка отличается хотя бы на один символ, то возвращает false.

Но вот что если мы хотим не просто получать дискретное значение (true / false), а дифференцированное, например в процентах. Ведь согласитесь строки test и testing гораздо ближе к друг другу, чем test и abcd. Для данной проблемы существует множество решений, мы поговорим о самый популярных алгоритмах (также об их модификациях):

Расстояние Хэмминга

Расстояние Левенштейна

Сходство Джаро — Винклера

Коэффициент Сёренсена

Читать далее

Почему разработчик должен владеть продуктом и как это сделает его счастливым

Reading time7 min
Views7.2K

Привет!

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

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

Читать далее

Кто круче rsync? Интересные алгоритмы для синхронизации данных

Reading time7 min
Views25K

Тридж, автор rsync

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

Если без шуток, то все знают rsync — инструмент для быстрой синхронизации файлов и каталогов с минимальным трафиком, который пришёл на замену rcp и scp. В нём используется алгоритм со скользящим хешем, разработанный австралийским учёным, программистом и хакером Эндрю Триджеллом по кличке Тридж (на фото).

Алгоритм эффективный, но не оптимальный.
Читать дальше →

Пишем свой Credential Provider на C# для авторизации в Windows

Reading time9 min
Views14K

Credential Provider, используется для передачи пользовательских учетных данных в стек безопасности Windows. По умолчанию в системе присутствуют поставщики для входа через пароль, PIN-код, смарт-карту и Windows Hello. Однако что делать если они нам не подходят?

Пишем свой Credential Provider

Как я разогнал fail2ban* в тысячу раз с помощью SIMD

Reading time15 min
Views21K

Fail2ban — утилита чрезвычайно полезная во многих случаях. Думаю, многие используют её для того, чтобы в автоматическом режиме блокировать особенно назойливых «посетителей». К сожалению, если входящий поток становится слишком большим, fail2ban теряет все свои полезные свойства, потому что разбор лога безнадёжно отстаёт от реальности.

Лог nginx из 100 тысяч строчек fail2ban при самых простых настройках разбирает порядка 45 секунд. Нехитрыми манипуляциями его можно ускорить раз в 6, но этого оказалось недостаточно. Наивная реализация на аналогичного фильтра на Rust уже обеспечила требуемую производительность, но если уж взялся за оптимизацию, то остановиться трудно.

* только необходимую часть функционала

Читать далее

Не все герои носят плащи. Программист-энтузиаст построил кластер Nvidia GeForce 1080 Ti для лечения рака

Reading time8 min
Views21K


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

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

Ниже история программиста, который решил в свободное от работы время сделать полезное для этого мира — спасти жизни людей. Может, его пример кого-то вдохновит.
Читать дальше →

Как работает UI в Android. Не все так сложно

Reading time6 min
Views20K

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

Это статья должна дать хоть и не исчерпывающее представление о том как работает UI в Android, но простым языком объяснит основные концепции и на каких сущностях он построен.

Читать далее

Минимальные API в .NET 6

Reading time10 min
Views31K

Создание REST API является основной частью многих проектов разработки. Выбор для создания таких проектов широк, но если вы разработчик на C#, варианты будут весьма ограничены. API на основе контроллеров были наиболее распространенными в течение долгого времени, но .NET 6 меняет эту ситуацию, предлагая новую возможность. 

Читать далее

История очень терпеливого пациента, который чуть не умер прямо у нас в кабинете

Reading time7 min
Views72K
Что может случиться, если долго не ходить к стоматологу и терпеть зубную боль?

Понятно, что хорошего — ничего. Но хотелось бы конкретики.

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

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

Терапевт сделал снимок, не увидел на нём ничего предосудительного и провёл стандартное лечение: вскрыл причинный зуб, обработал канал и установил лекарство, чтобы купировать начавшееся воспаление. Словом, поначалу всё выглядело совершенно обычно. Но дальше началось самое интересное.


Снимок того пациента и причинный зуб
Читать дальше →

Как я открыл компанию по созданию детских наборов электроники – Часть 1

Level of difficultyEasy
Reading time11 min
Views32K


В 2020 году я открыл своё дело. После наёмной работы это было похоже на рай, но скоро стало очевидно, что более необдуманного решения я в жизни ещё не принимал. За два года хождения по граблям, поиска решений, борьбы с самодисциплиной и режимом дня, я собрал достаточно историй об ошибках и удачах, и теперь хочу поделиться этим опытом с вами.
Читать дальше →

Экспорт статей Хабра в html, markdown

Reading time2 min
Views13K

image


До меня было написано 4 статьи по экспорту статей с хабра в FB2 и pdf:



Я захотел получить исходники своих статей.

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

Экстремальная настройка производительности HTTP: 1,2M API RPS на инстансе EC2 с 4 виртуальными процессорами (vCPU)

Reading time54 min
Views19K

Прим. перев.: автор данного исследования — Marc Richards, Solutions Architect и DevOps-инженер — продемонстрировал потрясающую настойчивость и тщательность в тотальной оптимизации производительности веб-приложения. Получившийся материал — кладезь полезных знаний для расширения своего кругозора в области оптимизации, особенностей сетевого стека в Linux и не только, даже вне зависимости от практической заинтересованности в конечном результате автора. Приготовьтесь к по-настоящему длинному техническому путешествию с обилием терминологии, увлекательных графиков и полезных ссылок.

Читать далее

Миллион одновременных соединений

Reading time8 min
Views68K

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

Адрес TCP/IP поддерживает только 65000 подключений, поэтому придётся назначить этому серверу примерно 30000 IP-адресов.

Существует 65535 номеров TCP-портов, значит ли это, что к TCP-серверу может подключиться не более 65535 клиентов? Можно решить, что это накладывает строгое ограничение на количество клиентов, которые может поддерживать один компьютер/приложение.

Если есть ограничение на количество портов, которые может иметь одна машина, а сокет можно привязать только к неиспользуемому номеру порта, как с этим справляются серверы, имеющие чрезвычайно большое количество запросов (больше, чем максимальное количество портов)? Эта проблема решается распределением системы, то есть кучей серверов на множестве машин?

Поэтому я написал эту статью, чтобы развеять данный миф с трёх сторон:

  1. Мессенджер WhatsApp и веб-фреймворк Phoenix, построенный на основе Elixir, уже продемонстрировали миллионы подключений, прослушивающих один порт.
  2. Теоретические возможности на основе протокола TCP/IP.
  3. Простой эксперимент с Java, который может провести на своей машине любой, если его всё ещё не убедили мои слова.

Если вы не хотите изучать подробности, то перейдите в раздел «Итоги» в конце статьи.
Читать дальше →

Как мы ускорили выполнение запросов PostgreSQL в 100 раз

Reading time10 min
Views47K

Существует великое множество статей об оптимизации PostgreSQL — эта «кроличья нора» весьма глубока. Когда несколько лет назад я начал разрабатывать бэкэнд аналитического сервиса, у меня уже был опыт работы с другими СУБД, такими как MySQL и SQL Server. Тем не менее, раньше мне не приходилось так фокусироваться на производительности. В прошлых проектах, над которыми я работал, либо не было жестких требований к времени обработки (DS/ML), либо не требовалось обрабатывать много строк одновременно (обыкновенные веб-приложения). Однако в этот раз мои запросы:

состояли из 3-10 JOIN-ов по коррелирующим запросам;

уielded от 10 до 1,000,000 строк;

должны были выполняться в течение времени, определенного UX-ом;

не могли быть hinted — пока Cloud SQL, управляемый PostgreSQL в Google Cloud, не стал поддерживать pg_hint_plan в конце 2021 года;

запрещали прямой доступ к серверному процессу, чтобы, например, хакнуть некоторые perf — потому что PostgreSQL был managed.

Получение целого миллиона строк в одном API endpoint сигнализирует о проблеме в алгоритме или архитектуре. Конечно, все можно переписать и перепроектировать, но за это нужно платить.

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

Читать далее

Information

Rating
Does not participate
Location
Nordrhein-Westfalen, Германия
Registered
Activity