Pull to refresh
32
0.7
Александр @NAI

Инженер

Send message

Кластеризация в ML: от теоретических основ популярных алгоритмов к их реализации с нуля на Python

Level of difficulty Hard
Reading time 34 min
Views 9.3K

Кластеризация — это набор методов без учителя для группировки данных по определённым критериям в так называемые кластеры, что позволяет выявлять сходства и различия между объектами, а также упрощать их анализ и визуализацию. Из-за частичного сходства в постановке задач с классификацией кластеризацию ещё называют unsupervised classification.

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

Читать далее
Total votes 36: ↑36 and ↓0 +36
Comments 2

Простой саботаж в мире ПО

Reading time 6 min
Views 32K

В кульминационный момент Второй мировой войны ЦРУ выпустило потрясающую книгу Simple Sabotage. В ней изложены различные способы, которыми диверсанты могут снижать продуктивность компании. Некоторые из этих советов не стареют, например, раздел «Общие помехи организациям и производству»:

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

2. Делайте «доклады». Говорите как можно чаще и пространнее. Иллюстрируйте свои «идеи» долгими историями из жизни и ссылайтесь на личный опыт. С готовностью делайте «патриотические» комментарии.

3. По возможности отправляйте все вопросы в комитеты для «более глубокого изучения и рассмотрения». Стремитесь делать комитеты как можно больше, не менее чем из пяти членов.

4. Как можно чаще поднимайте вопросы о несущественных проблемах.

5. Спорьте о чётких формулировках в общении, протоколах, резолюциях.

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

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

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

Меня всегда поражало, насколько хорошо эти советы прошли проверку временем.

Читать далее
Total votes 90: ↑88 and ↓2 +86
Comments 35

PHPUnit: Mock объекты

Reading time 7 min
Views 91K
Довольно часто при написании модульных тестов нам приходится сталкиваться с тем, что тестируемый класс зависит от данных из внешних источников, состояние которых мы не можем контролировать. К таким источникам можно отнести далеко расположенную общедоступную базу данных или службу, датчик какого-нибудь физического процесса и пр. Либо нам необходимо убедиться, что некие действия выполняются в строго определенном порядке. В этих случаях к нам на помощь приходят Mock объекты (mock в переводе с английского — пародия), позволяя тестировать классы в изоляции от внешних зависимостей. Использованию Mock объектов в PHPUnit посвящается эта статья.
Читать дальше →
Total votes 14: ↑11 and ↓3 +8
Comments 7

Что для вас Linux? Или как устроен запуск процессов

Level of difficulty Medium
Reading time 15 min
Views 37K

Как бы вы ответили на вопрос, что такое операционная система?

Скорее всего, вы легко сможете ответить на этот вопрос человеку далекому от IT, но подобный вопрос вам может задать, например, HR - в попытке переманить вас в какой-нибудь Facebook или Google. С одной стороны, ответить на этот вопрос очень легко и в интернете можно найти много определений, но относится ли, например, конфигурация DNS и файл /etc/resolv.conf к ОС ? Или в какой области памяти работает ОС - в памяти с безграничными возможностями для кода, называемой kernel space, или все же в лимитированной user space?

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

Читать далее
Total votes 79: ↑79 and ↓0 +79
Comments 20

Алгоритмы балансировки нагрузок

Level of difficulty Medium
Reading time 8 min
Views 30K

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

В этом посте мы рассмотрим способы, которыми один балансировщик нагрузок может распределять HTTP-запросы на множество серверов. Мы начнём снизу и проделаем весь путь вверх до современных алгоритмов балансировки нагрузок.
Читать дальше →
Total votes 107: ↑106 and ↓1 +105
Comments 16

CADBase – бесплатная платформа теперь на русском

Level of difficulty Easy
Reading time 4 min
Views 4.5K

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

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

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

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

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

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

Читать далее
Total votes 14: ↑14 and ↓0 +14
Comments 18

Создаем свой загрузочный диск Linux

Reading time 13 min
Views 35K

В статье описывается способ, как создать собственный загрузочный диск Linux (оптический диск или флешку), добавить в него только нужные программы и убрать все лишнее. Полученный образ в экспериментах занял менее 25 Мб. Он позволяет быстро загружаться, работать в текстовом режиме, создавать, редактировать, удалять файлы на разных файловых системах, имеет поддержку русского языка. За основу взят Debian.

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

Модификация прошивки роутера D-Link

Reading time 17 min
Views 16K

Всех с наступившим Рождеством! В этой заметке я расскажу о том как я модифицировал прошивку роутера D-Link DWR-M921, вдруг кому эта информация пригодится.

Читать далее
Total votes 84: ↑84 and ↓0 +84
Comments 31

.Net Microservices The Hardcore Way: туториал от инженеров Microsoft, получаем PROD опыт

Reading time 4 min
Views 11K

Для тех кто хочет погрузиться в проектирование .Net микросервисов, Kubernetes, Azure и Azure DevOps процессы. 

Читать далее
Total votes 18: ↑16 and ↓2 +14
Comments 7

Как отлаживать bash-script-ы по шагам или, возможно, самая короткая статья о программировании/отладке на Хабре

Reading time 1 min
Views 41K

Мне всегда хотелось иметь возможность отлаживать bash-scripts так же, как и любой другой код, т.е. по шагам, и bash такую возможность предусмотрел, но о ней не все знают. Несмотря на довольно большой опыт использования Linux, я дошёл до неё только недавно.

Читать далее
Total votes 190: ↑189 and ↓1 +188
Comments 37

Как заставить Ansible работать быстрее – 8 советов по плейбукам

Reading time 6 min
Views 15K

Ansible – это мощный и простой инструмент автоматизации с открытым кодом. Он помогает оптимизировать множество задач по эксплуатации ИТ-инфраструктуры, от самых простых, наподобие установки программных пакетов, до весьма сложных, вроде развертывания кластера с несколькими узлами или многоэтапного обновления операционной системы. Сегодня мы расскажем, как оптимизировать плейбуки и модули Ansible, чтобы создаваемые вами автоматизации работали быстрее.

Читать дальше: Как заставить Ansible...
Total votes 15: ↑14 and ↓1 +13
Comments 16

И снова барахолка в Испании: камеры, ноутбуки, самолет и… скрипка

Reading time 3 min
Views 11K

Привет, Хабр! В прошлую субботу на барахолку я попасть не смог, но зато получилось сейчас. На удивление, погода была снова хорошей, хотя в это время года она начинает портиться — очень сильно холодает и начинаются дожди. Не такой сезон дождей, как в Юго-Восточной Азии, конечно, но все равно приятного мало. Ну а если погода хорошая — то этим нужно пользоваться, тем более, что в последующие пару недель барахолок не будет. Сначала католическое Рождество, потом — международный Новый Год.

На этот раз мне встретилось много всего интересного. Среди множества вещей, которые привлекали внимание, особенно выделились модель довольно большого радиоуправляемого самолета и скрипка, причем весьма интересная. Что же, обо всем этом — под катом.
Читать дальше →
Total votes 52: ↑47 and ↓5 +42
Comments 10

Реверс-инжиниринг протоколов управления конвектором

Reading time 13 min
Views 9.6K

История берет свое начало в мае, когда в один из непогожих питерских дней, местная котельная решила отключить отопление. За окном было +10, влажность зашкаливала, ветер дул, а тепленькое солнышко не светило в окна от слова совсем (чертова северная сторона). В квартире стало ощутимо холодно. Кот слезал с теплых колен только для  опустошения миски. Мы же кутались в флиски и пледы. Через два дня такой жизни стало понятно - к черту все, нужен обогреватель! Требования были довольно просты - цена, определенная мощность, возможность эту самую мощность регулировать и какой-либо интерфейс (wi-fi\BT\ZigBee\485). Последнее хотелось больше для баловства и неведомого "а вдруг потребуется!". Оставлю за рамками статьи муки выбора, количество обогревателей на полках магазинов в конце весны и прочие приколы наших доставщиков.

Cобрано, запущено, кот согрет, самое время посмотреть, что там с интерфейсом. Приложение для мобилки подключилось к конвектору, залило настройки wi-fi сети и радостно предложило управлять обогревателем через интернет. И в принципе на этом можно было бы закончить, но в процессе эксплуатации появилось желание - время от времени использовать конвектор для просушки одного из помещений. Датчик влажности есть, к Home Assistant подключен, дело за малым, завести туда же конвектор. Тут меня ждало полнейшее разочарование - никакого API, никаких интеграций, вообще ни_че_го. Лан, инженером же работаю, не в первой городить программно-аппаратные решения.

Читать далее
Total votes 25: ↑25 and ↓0 +25
Comments 45

Lingtrain Aligner. Написал приложение для создания параллельных книг, которое вас удивит

Reading time 6 min
Views 22K

title


Здравствуй, читатель. Хотелось бы ненадолго отвлечь твое внимание от новостей и историй данной технической статьей. Поэтому пусть такой "кликбейтный" затравочный заголовок не вводит тебя в заблуждение.


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


Установка


Приложение я оформил в виде docker контейнера, поэтому запустить его у себя на машине не должно составить труда. Также можно запустить приложение из исходников, инструкция есть в репозитории.


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


docker pull lingtrain/aligner:v4
docker run -v C:\app\data:/app/data -v C:\app\img:/app/static/img -p 80:80 lingtrain/aligner:v4

C:\app\data и C:\app\img — это папки на вашем компьютере.


Контейнер скачается с репозитория Docker Hub и запустится на 80-м порту. Откроем приложение в вашем любимом браузере по адресу localhost.


Lingtrain app 1


Сделаем три шага: загрузка, выравнивание, генерация.

Смотреть демо
Total votes 76: ↑75 and ↓1 +74
Comments 45

Автоматическая генерация технической документации

Reading time 12 min
Views 13K

dmgtlqavf9vvl30g8hbtnyirxjo


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


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

Читать дальше →
Total votes 8: ↑7 and ↓1 +6
Comments 6

Сам себе Гутенберг. Делаем параллельные книги

Reading time 12 min
Views 22K

Lingtrain parallel books


Upd. 04.12.2021 — Наш телеграм канал


Если вам нравится изучать языки (или вы их преподаете), то вы наверняка сталкивались с таким способом освоения языка как параллельное чтение. Он помогает погрузиться в контекст, увеличивает лексикон и позволяет получить удовольствие от обучения. Читать тексты в оригинале параллельно с русскоязычными, на мой взгляд, стоит, когда уже освоены азы грамматики и фонетики, так что учебники и преподавателей никто не отменял. Но когда дело все же доходит до чтения, то хочется подобрать что-то по своему вкусу, либо что-то уже знакомое или любимое, а это часто невозможно, потому что такого варианта параллельной книги никто не выпускал. А если вы учите не английский язык, а условный японский или венгерский, то трудно найти вообще хоть какой-то интересный материал с параллельным переводом.


Сегодня мы сделаем решительный шаг в сторону исправления этой ситуации.


Из чего делаем


На входе у нас будут два текстовых файла с оригинальным текстом и его переводом. Для примера возьмем книгу "Убить пересмешника" Харпер Ли на русском и английском языках.


Начало документов выглядит так (отрывки приведены в таком виде, в котором они были найдены в сети):

Выровнять пересмешника
Total votes 106: ↑106 and ↓0 +106
Comments 67

Обновили White Paper «О защите персональных данных»

Reading time 2 min
Views 2.2K

С мая 2021 года Cloud4Y предлагает обновлённый White Paper «О защите персональных данных» — документ, содержащий информацию обо всех аспекта работы с персональными данными, включая законодательную базу, принцип построений системы защиты ПДн, и пр. В документе учтены изменения, принятые в 2021 году, что позволяет использовать его как руководство для организации систем защиты ПДн.

Читать далее
Total votes 16: ↑13 and ↓3 +10
Comments 2

Управляем конвектором и термостатом Electrolux из Home Assistant. Часть 1

Reading time 3 min
Views 8.5K

Около 2-х лет я являюсь пользователем Home Assistant и постепенно обживаюсь устройствами, которые хочется туда интегрировать. Одним из таких устройств стало мое относительно недавнее приобретение: конвектор от Electrolux.

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

Читать далее
Total votes 10: ↑10 and ↓0 +10
Comments 6

Продолжение. Частые ошибки в настройках Nginx, из-за которых веб-сервер становится уязвимым

Reading time 8 min
Views 17K

Ранее Cloud4Y рассказал про уязвимости веб-серверов Nginx, балансировщиков нагрузки и прокси-серверов. Что-то из этого вы могли знать, а что-то, надеемся, стало полезной информацией.

Но история не закончилась. Многочисленные программы bug bounties позволяют проводить широкомасштабные исследования, благодаря которым удаётся найти реально действующие уязвимости. Проект Gixy помог найти множество неправильных конфигураций промежуточного ПО, но далеко не все. Что ещё удалось обнаружить:

Читать далее
Total votes 17: ↑15 and ↓2 +13
Comments 1
1

Information

Rating
1,458-th
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Registered
Activity