Pull to refresh
0
@smuravread⁠-⁠only

User

Send message

Поговорим об оптимизирующих компиляторах. Сказ восьмой: размотка циклов

Level of difficultyMedium
Reading time12 min
Views8.7K

Есть оптимизации, польза от которых очевидна всегда или почти всегда. Например, не делать лишнюю проверку лучше, чем делать. Не считать два раза одно и то же обычно лучше, чем считать (если только мы не упёрлись в нехватку регистров или имеем другие подобные проблемы на нижнем уровне). Вычислять выражения вне цикла выгоднее, чем в цикле. И так далее.

Но есть оптимизации, применение которых имеет как плюсы, так и минусы. Выиграв в одном месте, мы можем получить отрицательные эффекты в другом. Например, сэкономив на количестве проверок, мы можем раздуть общий объём кода и поломать микрооптимизации. Каноничным примером такой оптимизации, решение вопроса об использовании которой больше похоже на искусство, чем на науку, является размотка циклов (Loop Unrolling), о которой мы сегодня поговорим. В статье я попробую осветить как можно больше (хотя, наверное, и не все) соображения о том, почему эту оптимизацию может быть нужно или не нужно применять.

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

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

Основы Kubernetes

Reading time13 min
Views835K
В этой публикации я хотел рассказать об интересной, но незаслуженно мало описанной на Хабре, системе управления контейнерами Kubernetes.

image

Что такое Kubernetes?


Kubernetes является проектом с открытым исходным кодом, предназначенным для управления кластером контейнеров Linux как единой системой. Kubernetes управляет и запускает контейнеры Docker на большом количестве хостов, а так же обеспечивает совместное размещение и репликацию большого количества контейнеров. Проект был начат Google и теперь поддерживается многими компаниями, среди которых Microsoft, RedHat, IBM и Docker.
Читать дальше →
Total votes 25: ↑24 and ↓1+23
Comments86

Знакомимся с архитектурой Apache Kafka

Level of difficultyEasy
Reading time6 min
Views16K

- Вы работали с Кафкой?
- Нет, только читали.

За несколько десятилетий развития ИТ систем разработчики накопили огромный опыт хранения и обработки данных. Различные СУБД позволяют с помощью запросов извлекать нужные данные за определенный период и обрабатывать их так как необходимо. Однако, со временем увеличились вычислительные мощности серверов, пропускная способность каналов связи, и соответственно, возникла необходимость обрабатывать бОльшие объемы данных за единицу времени. И тут выяснилось, что при всем многообразии различных решений для хранения данных, отсутствуют решения для обработки непрерывных потоков больших объемов данных. Для решения этой проблемы стали появляться различные системы, такие как системы обмена сообщениями и агрегирования журналов. Но они не могли в полной мере обеспечить нужную производительность на больших, непрерывных потоках данных.

Для решения этой проблемы в LinkedIn решили создать нужное решение что называется с нуля. Разработчики решили отказаться от хранения больших объемов данных, как в реляционных базах данных, хранилищ пар «ключ/значение», поисковых индексов или кэшей, а рассматривать данные как непрерывно развивающийся и постоянно растущий поток и проектировать информационные системы и архитектуру данных — на этой основе. Так появилось решение Apache Kafka, которое изначально использовалось для обеспечения функционирования работающих в реальном масштабе времени приложений и потоков данных социальной сети. Но сейчас это решение используется во многих крупных компаниях. Посмотрим подробнее как оно устроено.

Читать далее
Total votes 15: ↑14 and ↓1+13
Comments11

Российский Kubernetes, какой он? Знакомимся с платформой Deckhouse

Reading time3 min
Views5.4K

Исследование Statista в России показывает, что около 60% компаний применяют технологию оркестрации контейнеров в рамках своей инфраструктуры. При этом самостоятельная разработка на Open Source для решения этой задачи значительно повышает требования к скиллам команды и характеризуется высокой стоимостью. Другой вариант — облачные PaaS-сервисы, но они зачастую имеют ограниченный набор инструментов, а зарубежные платформы ушли с российского рынка.


Есть ли сегодня в России аналоги западным платформам контейнеризации? Мы решили изучить этот вопрос и пригласили директора по развитию Deckhouse компании «Флант» Артёма Кожокина, чтобы подробно расспросить про их платформу оркестрации контейнеров.


Ниже — ключевые тезисы нашей встречи, а полную расшифровку митапа можно почитать здесь.


Читать дальше →
Total votes 15: ↑14 and ↓1+13
Comments11

Запускаем свой нейросетевой детектор на Raspberry Pi с помощью Neural Compute Stick и OpenVINO

Reading time15 min
Views25K
С распространением и развитием нейронный сетей все чаще возникает потребность их использования на встроенных и маломощных устройствах, роботах и дронах. Устройство Neural Compute Stick в связке с фреймворком OpenVINO от компании Intel позволяет решить эту задачу, беря тяжелые вычисления нейросетей на себя. Благодаря этому можно без особых усилий запустить нейросетевой классификатор или детектор на маломощном устройстве вроде Raspberry Pi практически в реальном времени, при этом не сильно повышая энергопотребление. В данной публикации я расскажу, как использовать фреймворк OpenVINO (на C++) и Neural Compute Stick, чтобы запустить простую систему обнаружения лиц на Raspberry Pi.

Как обычно, весь код доступен на GitHub.


Читать дальше →
Total votes 29: ↑29 and ↓0+29
Comments12

Лучшие практики CI/CD с Kubernetes и GitLab (обзор и видео доклада)

Reading time5 min
Views45K


7 ноября на конференции HighLoad++ 2017, в секции «DevOps и эксплуатация» прозвучал доклад «Лучшие практики CI/CD с Kubernetes и GitLab». В нём мы делимся практическим опытом решения проблем, возникающих при построении эффективного процесса CI/CD на базе указанных Open Source-решений.

По традиции рады представить видео с докладом (около часа, гораздо информативнее статьи) и основную выжимку в текстовом виде.
Total votes 21: ↑21 and ↓0+21
Comments8

Руководство по аутсорсингу разметки данных для машинного обучения

Reading time15 min
Views2K

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

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

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

Любой проект компьютерного зрения начинается с разметки и аннотирования сырых данных командами аннотаторов; это огромные объёмы изображений и видео. Успешные результаты аннотирования гарантируют, что модель сможет «учиться» на этих данных обучения, решая задачи, поставленные перед ней организацией.

После формулирования задачи и целей проекта у организаций возникает непростой выбор перед этапом аннотирования: нужно ли отдавать эту работу на аутсорс, или выполнять аннотирование массивов данных изображений и видео собственными силами?
Читать дальше →
Total votes 2: ↑1 and ↓10
Comments0

Делай нейминг как сеньор

Reading time13 min
Views115K

Это объект Pizza, там хранится инфа о латте, а заказали его в Restaurant или в Pizzeria? Неудобно? Максимально. Мы читаем код существенно больше, чем пишем. И хочется сразу понимать, что происходит, не играя в квесты «что имел в виду автор», «да как это работает» и «я снова ничего не понял». Без навыка давать хороший нейминг невозможно писать качественный и поддерживаемый код. Про нейминг говорят заодно, в рамках архитектуры и общих инженерных практик. В статье поговорим про него отдельно.

Как получается, что код становится мало понятным даже для его авторов? Почему нейминг так важен? Как придумывать названия, не применяя целые теории нейминга? Как лёгким процессом организовать работу с неймингом в команде? На все эти вопросы мы ответим в статье.

Читать далее
Total votes 186: ↑184 and ↓2+182
Comments221

Фильтрация по списку НКЦКИ в pfSense

Reading time3 min
Views11K

2 марта 2022 года Национальный координационный центр по компьютерным инцидентам (НКЦКИ) выпустил бюллетень со списком рекомендаций для противодействия угрозам безопасности информации. В дополнение к бюллетеню опубликованы списки IP адресов и DNS имён для блокировки. В данной статье будет описано как добавить данные списки в pfSense и настроить фильтрацию. Несмотря на то, что прошло достаточно времени с момента публикации списков, они ещё не потеряли своей актуальности, да и при выходе новых эта статья так же будет полезна. В статье не обсуждаются вопросы импортозамещения pfSense и схожие темы. Описано как настроить тем у кого всё работает, и кто не собирается прямо сейчас менять pfSense на другой файрвол. Подразумевается, что читатели обладают достаточным навыком работы с pfSense.

Читать далее
Total votes 14: ↑4 and ↓10-6
Comments16

Простое шифрование БД SQlite

Reading time4 min
Views17K

Так получилось, что я очень люблю использовать SQLite СУБД.


Программируя на ассемблере, я иногда нуждаюсь в полноценной СУБД. Мои программы редко превышают в размере несколько сотен килобайт. Понятно, что использовать с ним СУБД в несколько сотен мегабайт по меньшей мере просто смешно, а в конце концов, очень неудобно – сразу возрастают требования к оборудованию и сложности установки и настройки, а в итоге уменьшается надежность всей системы.


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


К примеру, я использовал SQLite в моем движке форума AsmBB о котором уже писал на Хабре. (Кстати, после этого он так и не упал).


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


И вот однажды я задумался как повысить и так неплохую безопасность проекта. И сразу подумал, что неплохо было бы сделать шифрование БД форума. Ведь если даже база и утечёт, то доступ к личным данным пользователей никто не получит.


Быстрый поиск по Интернету показал, что есть несколько расширений SQLite для шифрования БД. К сожалению, официальное расширение SEE несвободно и вообще продается за деньги.


Но, конечно, свято место пусто не бывает и я сразу наткнулся на расширение SQLeet. И в нем мне понравилось буквально все.

Читать дальше →
Total votes 24: ↑23 and ↓1+22
Comments5

Zettelkasten: как один немецкий учёный стал невероятно продуктивным

Reading time18 min
Views368K
Изображение предоставлено автором. Основано на фотографии Патрика Томаса с Ансплэша

Это перевод статьи Дэвида Клира о методе ведения заметок Zettelkasten, благодаря которому немецкий социолог Никлас Луман написал более 70 книг и 400 научных статей. Стоит читать, если вы хотите создать собственную базу знаний, систематизировать идеи и перестать забывать важные мысли.

Статья бережно перенесена из блога бегущего редактора. Кстати, следить за анонсами новых статей можно в моём телеграм-канале. Подписывайтесь, чтобы ничего не пропустить!
Читать дальше →
Total votes 52: ↑48 and ↓4+44
Comments82

Digital art и искусственный интеллект — симбиоз цифр и искусства

Reading time5 min
Views3.4K

В качестве предисловия оговорюсь, что на Хабре я впервые, решил представить свою дебют на этой платформе, так сказать. Речь здесь не пойдёт о рисовании картин с использованием AI и графических паттернов. Скорее наоборот, превращение классического изобразительного исксства в многочисленную последовательность нейронных сетей в итоговым кодом в заключительном виде. Расскажу предысторию. В начале этого года, случайным образом, попало в моё поле зрения одно заманчивое словосочетание - digital art. И так как я в теме crypto уже давненько, я не смел не поинтересоваться, каким образом искусство (будь то живопись или музыка) коррелирует с криптой, и как это происходит (и для чего))) на просторах блокчейна. В итоге ознакомления с этой идеей, и не только идеей, но и инфраструктурой NFT (Non-Fungible-Token, невзаимозаменяемый цифровой актив), я с радостью обнаружил что уже хочу создать что-то подобное, но в своём, авторском исполнении. Парой слов опишу, что зверёк по имени НФТ это хэшированное изображение в любом формате,  записанное в сети блокчейн в формате, являющегося аналогом ERC-721 в сети Ethereum (для тех кто ещё не в курсе темы). Задуманному быть конечно, но сказать легко, а вот сделать - труднее. Особенно, когда делаешь что-то впервые. Начал я с изучения подобных платформ на просторах всемирной паутины, начиная с крупнейших маркетплейсов opensea.io, makersplace.com,  и не очень крупных, pixeos.art, ghostmarket.io и много много других.

Кроме маркетплейсов, я обнаружил чисто minting-платформы, как правило тематические, т.е. они занимаются только созданием NFT карточек и как-правило одного направления. Криптокотики всякие (с них всё и началось!), Криптопанки и прочая фауна. Нашлось кроме всего пару аутсайдеров, которые вовсе создавали неформатные NFT, с прицелом на автоматическое масштабирование за счёт пользователей, к примеру на одной из платформ за NFT контент принимаются уникальные ссылки в интернете, на другой - регистрируются домены, а заодно и снимок с NFT. Не буду сильно углубляться в обозревание ежедневно растущего формата цифровых активов NFT, а лучше наконец-то перейду к своей задумке.

Читать далее: критерии распознавания арта
Total votes 8: ↑6 and ↓2+4
Comments0

Intel ME. Как избежать восстания машин?

Reading time6 min
Views165K


В прошлый раз мы рассказали об Intel Management Engine (ME) — подсистеме, которая встроена во все современные компьютерные платформы (десктопы, лэптопы, серверы, планшеты) с чипсетами компании Intel. Эта технология многими воспринимается как аппаратная «закладка», и на то есть причины. Достаточно сказать, что Intel ME является единственной средой исполнения, которая:
  • работает даже тогда, когда компьютер выключен (но электропитание подаётся);
  • имеет доступ ко всему содержимому оперативной памяти компьютера;
  • имеет внеполосный доступ к сетевому интерфейсу.


Ошарашенный присутствием такого компонента в компьютере, пользователь (получается, что именно «пользователь», а не «владелец») наверняка задавался вопросом: можно ли выключить Intel ME?

Эта статья целиком посвящена этому вопросу.

Читать дальше →
Total votes 49: ↑48 and ↓1+47
Comments56

Есть ли жизнь без Nvidia? Запускаем TensorFlow на Radeon RX 580

Reading time4 min
Views44K

На новом рабочем месте меня посадили за ПК, оборудованный процессором Ryzen 2600 и видеокартой Radeon RX 580. Попробовав обучать нейронные сети на процессоре, я понял, что это не дело: уж слишком медленным был процесс. После недолгих поисков я узнал, что существует как минимум 2 способа запуска современных библиотек машинного обучения на видеокартах Radeon: PlaidML и ROCm. Я попробовал оба и хочу поделиться результатами.

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

YOLOv4 – самая точная real-time нейронная сеть на датасете Microsoft COCO

Reading time9 min
Views77K
Darknet YOLOv4 быстрее и точнее, чем real-time нейронные сети Google TensorFlow EfficientDet и FaceBook Pytorch/Detectron RetinaNet/MaskRCNN.

Эта же статья на medium: medium
Код: github.com/AlexeyAB/darknet
Статья: arxiv.org/abs/2004.10934
Обсуждение YOLOv4-tiny 1770 FPS: www.reddit.com/r/MachineLearning/comments/hu7lyt/p_yolov4tiny_speed_1770_fps_tensorrtbatch4
Обсуждение: www.reddit.com/r/MachineLearning/comments/gydxzd/p_yolov4_the_most_accurate_realtime_neural


Мы покажем некоторые нюансы сравнения и использования нейронных сетей для обнаружения объектов.

Нашей целью было разработать алгоритм обнаружения объектов для использования в реальных продуктах, а не только двигать науку вперед. Точность нейросети YOLOv4 (608x608) – 43.5% AP / 65.7% AP50 Microsoft-COCO-testdev.

62 FPS – YOLOv4 (608x608 batch=1) on Tesla V100 – by using Darknet-framework
400 FPS – YOLOv4 (320x320 batch=4) on RTX 2080 Ti – by using TensorRT+tkDNN
32 FPS – YOLOv4 (416x416 batch=1) on Jetson AGX Xavier – by using TensorRT+tkDNN


Читать дальше →
Total votes 29: ↑28 and ↓1+27
Comments37

Фриланс-разработка электроники. Что, Как и Зачем?

Reading time7 min
Views32K

▍Как все начиналось


Начну немного издалека, чтобы было понятно с чего все изначально началось.

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

После окончания ВУЗа, работаю по сей день ведущим инженером на одной из атомных станций. Работа веселая и ответственная, но дома надо чем-то занять вечера, не пиво же пить и лежать у телевизора. Для поддержания на должном уровне своей квалификации освоил Ардуино, Attiny, STM, ESP32. Вспомнил давно забытую Java и C++. Освоил заново Easyeda, Altium, Eagle. Свободно работаю во многих программах CAD моделирования. Теоретически я подготовлен хорошо, но нужна была практика в электронике и желательно по очень высоким стандартам.
Читать дальше →
Total votes 99: ↑92 and ↓7+85
Comments122

Гексагональные тайловые миры

Level of difficultyHard
Reading time32 min
Views33K

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

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

Читать далее
Total votes 80: ↑80 and ↓0+80
Comments12

Практическое руководство по анонимности в онлайне

Reading time9 min
Views181K

Направленная антенна для удалённого доступа к публичному Wi-Fi

Обеспечить собственную безопасность (анонимность) в онлайне — тяжкий труд, требующий массивного объёма знаний. Даже лучшие профессионалы не всегда справляются.

Но это возможно.

Предупреждение. Для усвоения информации в полном объёме требуется несколько недель.
Читать дальше →
Total votes 115: ↑106 and ↓9+97
Comments125

6 хитростей Python, о которых никто не рассказывает новичкам

Reading time5 min
Views42K
В наши дни Python — это самый популярный в мире язык программирования. Одна из причин этого кроется в том, что разработчики с удовольствием пишут на Python. Это выгодно отличает Python от других языков.

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



Автор статьи, перевод которой мы сегодня публикуем, хочет рассказать о 6 хитростях Python, о которых обычно никто ничего не рассказывает.

Код примеров можно найти в GitHub-репозитории, ссылку на который автор статьи выдаёт тем, кто подписался на рассылку проекта worldindev.ck.page.
Читать дальше →
Total votes 69: ↑46 and ↓23+23
Comments27

Знакомьтесь, pass

Reading time7 min
Views30K


Я много лет искал подходящую мне хранилку паролей и недавно наткнулся на Pass на HackerNews. Идея хранить пароли в git-репозитории может выглядеть странно, но в целом это неплохая идея, потому что:

  • Я держу гит-репозиторий локально у себя на компе
  • Все пароли защищены GPG шифрованием, поэтому даже при получении SSH-доступа к моему компьютеру утечка не повлияет на безопасность

Я использую -c чтобы копировать/вставлять пароли. Есть расширение для браузера, но копипейст лично мне удобнее. Проблемы синхронизации с телефоном и всеми linux-дейвайсами тоже не стоит (потому что это всего лишь git).

Делюсь с вами переводом приветственной странички Pass.



Управление паролями должно быть простым и следовать философии Unix. Используя pass, каждый Ваш пароль находится внутри зашифрованного файла gpg, имя которого совпадает с именем ресурса или веб сайта к которому данный пароль привязан. Эти зашифрованные файлы могут быть организованы в удобные иерархии папок, скопированы с носителя на носитель и, в общем, обработаны с помощью любых утилит управления файлами командной строки.

С pass управлять отдельными файлами паролей становится крайне просто. Все пароли хранятся в ~ / .password-store, а pass предоставляет несколько удобных команд для добавления, редактирования, генерации и получения паролей. Это очень короткий и простой Shell скрипт. Он способен временно помещать пароли в буфер обмена и отслеживать изменения паролей с помощью git.
Читать дальше →
Total votes 42: ↑41 and ↓1+40
Comments54
1
23 ...

Information

Rating
Does not participate
Registered
Activity