Как стать автором
Обновить
33
0.5
Александр @NAI

Инженер

Отправить сообщение

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

Уровень сложностиСложный
Время на прочтение34 мин
Количество просмотров12K

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

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

Читать далее
Всего голосов 36: ↑36 и ↓0+36
Комментарии3

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

Время на прочтение6 мин
Количество просмотров32K

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

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

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

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

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

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

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

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

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

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

Читать далее
Всего голосов 90: ↑88 и ↓2+86
Комментарии35

PHPUnit: Mock объекты

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

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

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров37K

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

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

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

Читать далее
Всего голосов 79: ↑79 и ↓0+79
Комментарии20

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

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров31K

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

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

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

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров4.6K

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

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

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

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

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

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

Читать далее
Всего голосов 14: ↑14 и ↓0+14
Комментарии18

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

Время на прочтение13 мин
Количество просмотров36K

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

Читать далее
Всего голосов 55: ↑55 и ↓0+55
Комментарии9

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

Время на прочтение17 мин
Количество просмотров16K

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

Читать далее
Всего голосов 84: ↑84 и ↓0+84
Комментарии31

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

Время на прочтение4 мин
Количество просмотров12K

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

Читать далее
Всего голосов 18: ↑16 и ↓2+14
Комментарии7

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

Время на прочтение1 мин
Количество просмотров41K

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

Читать далее
Всего голосов 190: ↑189 и ↓1+188
Комментарии37

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

Время на прочтение6 мин
Количество просмотров15K

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

Читать дальше: Как заставить Ansible...
Всего голосов 15: ↑14 и ↓1+13
Комментарии16

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

Время на прочтение3 мин
Количество просмотров11K

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

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

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

Время на прочтение13 мин
Количество просмотров9.6K

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

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

Читать далее
Всего голосов 25: ↑25 и ↓0+25
Комментарии45

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

Время на прочтение6 мин
Количество просмотров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


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

Смотреть демо
Всего голосов 76: ↑75 и ↓1+74
Комментарии45

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

Время на прочтение12 мин
Количество просмотров13K

dmgtlqavf9vvl30g8hbtnyirxjo


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


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

Читать дальше →
Всего голосов 8: ↑7 и ↓1+6
Комментарии6

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

Время на прочтение12 мин
Количество просмотров22K

Lingtrain parallel books


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


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


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


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


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


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

Выровнять пересмешника
Всего голосов 106: ↑106 и ↓0+106
Комментарии67

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

Время на прочтение2 мин
Количество просмотров2.2K

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

Читать далее
Всего голосов 16: ↑13 и ↓3+10
Комментарии2

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

Время на прочтение3 мин
Количество просмотров8.6K

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

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

Читать далее
Всего голосов 10: ↑10 и ↓0+10
Комментарии6

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

Время на прочтение3 мин
Количество просмотров5.1K

Пришло время применить полученный опыт на Python и интегрировать его в Home Assistant.

Читать далее
Всего голосов 5: ↑5 и ↓0+5
Комментарии5

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

Время на прочтение8 мин
Количество просмотров17K

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

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

Читать далее
Всего голосов 17: ↑15 и ↓2+13
Комментарии1
1

Информация

В рейтинге
1 561-й
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Зарегистрирован
Активность