Pull to refresh
122
-1
Alexander @loginsin

User

Send message

Асинхронность в программировании

Reading time26 min
Views91K

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


В основе материала — расшифровка доклада Ивана Пузыревского, преподавателя школы анализа данных Яндекса.


Читать дальше →
Total votes 71: ↑67 and ↓4+63
Comments70

Коллапс волновой функции: алгоритм, вдохновлённый квантовой механикой

Reading time11 min
Views31K
image

Алгоритм Wave Function Collapse генерирует битовые изображения, локально подобные входному битовому изображению.

Локальное подобие означает, что

  • (C1) Каждый паттерн NxN пикселей в выходных данных должен хотя бы раз встречаться во входных данных.
  • (Слабое условие C2) Распределение паттернов NxN во входных данных должно быть подобным распределению паттернов NxN в значительно большом количестве наборов выходных данных. Другими словами, вероятность встречи определённого паттерна в выходных данных должна быть близка к плотности таких паттернов во входных данных.
Читать дальше →
Total votes 91: ↑89 and ↓2+87
Comments7

Беспроводной машрутизатор своими руками

Reading time13 min
Views54K

  1. Выбор комплектующих
  2. Запуск сетевых интерфейсов
  3. Установка точки доступа 802.11ac (5 ГГц)
  4. Настройка виртуального SSID с помощью hostapd

Последние десять лет я покупал дешёвое сетевое оборудование и ставил на него DD-WRT, чтобы вернуть «функции» ценой более $500, удалённые из ядра Linux, на котором основаны стоковые прошивки.

Несмотря на нестабильные сборки, неисправленные ошибки и споры, DD-WRT всё равно предпочтительнее стоковых прошивок. Но сейчас достойные комплектующие дешевле, чем когда-либо, а DIY-сообщество поголовно перешло на Linux (я смотрю на вас, м-р Raspberry), так почему бы не собрать собственный беспроводной маршрутизатор раз и навсегда?
Читать дальше →
Total votes 58: ↑54 and ↓4+50
Comments114

Доступно о криптографии на эллиптических кривых

Reading time37 min
Views243K
image


Тем, кто знаком с криптографией с открытым ключом, наверно известны аббревиатуры ECC, ECDH и ECDSA. Первая — это сокращение от Elliptic Curve Cryptography (криптография на эллиптических кривых), остальные — это названия основанных на ней алгоритмов.

Сегодня криптосистемы на эллиптических кривых используются в TLS, PGP и SSH, важнейших технологиях, на которых базируются современный веб и мир ИТ. Я уже не говорю о Bitcoin и других криптовалютах.

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

В этой серии статей я познакомлю вас с основами мира криптографии на эллиптических кривых. Моя цель — не создание полного и подробного руководства по ECC (в Интернете полно информации по этой теме), а простой обзор ECC и объяснение того, почему её считают безопасной. Я не буду тратить время на долгие математические доказательства или скучные подробности реализации. Также я представлю полезные примеры с визуальными интерактивными инструментами и скриптами.
Читать дальше →
Total votes 127: ↑125 and ↓2+123
Comments72

Проверили с помощью PVS-Studio исходные коды Android, или никто не идеален

Reading time46 min
Views33K

Android и Единорог PVS-Studio

Разработка больших сложных проектов невозможна без использования методологий программирования и инструментальных средств, помогающих контролировать качество кода. В первую очередь, это грамотный стандарт кодирования, обзоры кода, юнит-тесты, статические и динамические анализаторы кода. Всё это помогает выявлять дефекты в коде на самых ранних этапах разработки. В этой статье демонстрируются возможности статического анализатора PVS-Studio по выявлению ошибок и потенциальных уязвимостей в коде операционной системы Android. Надеемся, что статья привлечёт внимание читателей к методологии статического анализа кода и они захотят внедрить её в процесс разработки собственных проектов.
Читать дальше →
Total votes 92: ↑87 and ↓5+82
Comments88

RabbitMQ tutorial 2 — Очередь задач

Reading time7 min
Views220K


В продолжение первого урока по изучению азов RabbitMQ публикую перевод второго урока с официального сайта. Все примеры, как и ранее, на python, но по-прежнему их можно реализовать на большинстве популярных ЯП.
Читать дальше →
Total votes 31: ↑26 and ↓5+21
Comments16

RabbitMQ tutorial 1 — Hello World

Reading time6 min
Views539K


RabbitMQ позволяет взаимодействовать различным программам при помощи протокола AMQP. RabbitMQ является отличным решением для построения SOA (сервис-ориентированной архитектуры) и распределением отложенных ресурсоемких задач.

Под катом перевод первого из шести уроков официального сайта. Примеры на python, но его знание вовсе не обязательно. Аналогичные примеру программы можно воспроизвести практически на любом популярном ЯП. [так выглядят комментарии переводчика, т.е. меня]
Читать дальше →
Total votes 57: ↑51 and ↓6+45
Comments58

RabbitMQ tutorial 3 — Публикация/Подписка

Reading time5 min
Views113K
Хочу продолжить серию перевода уроков с официального сайта. Примеры будут на php, но их можно реализовать на большинстве популярных ЯП.

Публикация/Подписка


В предыдущей статье было рассмотрено создание рабочей очереди сообщений. Было сделано допущение, что каждое сообщение будет направлено одному обработчику(worker). В этой статье усложним задачу – отправим сообщение нескольким подписчикам. Этот паттерн известен как "publish/subscribe" (публикация/подписка).
Чтобы понять этот шаблон, создадим простую систему логирования. Она будет состоять из двух программ – первая будет создавать логи, вторая считывать и печатать их.

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

По существу, каждое сообщение будет транслироваться каждому подписчику.
Читать дальше →
Total votes 29: ↑27 and ↓2+25
Comments6

RabbitMQ tutorial 4 — Роутинг

Reading time4 min
Views75K
Продолжаю серию перевода уроков с официального сайта. Примеры будут на php, но их можно реализовать на большинстве популярных ЯП.
В предыдущей статье мы разработали систему логирования. Нам удалось отправлять сообщения нескольким получателям. В этой статье модернизируем нашу программу — будем отправлять получателю только часть сообщений. Например, мы сможем сохранять на диске только сообщения с критическими ошибками (экономия места на диске), а в консоли будем отображать все сообщения.
Читать дальше →
Total votes 12: ↑12 and ↓0+12
Comments14

RabbitMQ tutorial 5 — Тематики

Reading time4 min
Views43K
Продолжаю серию перевода уроков с официального сайта. Примеры будут на php, но их можно реализовать на большинстве популярных ЯП.

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

Хоть direct и усовершенствовал нашу систему, он всё-таки имеет недостаток — он не может составить маршрут(routing) по нескольким критериям.

Например, нам понадобилось разделять логи не только по его типу важности, но и по источнику лога. Вы наверное встречали такую концепцию в unix инструменте syslog, которые различает логи по его типу важности(info/warn/crit...) и по его объекту (auth/cron/kern...).

Мы получаем гибкость в запросе. Например, мы может получить все логи с типом error, пришедшие из 'cron'-а, и все логи пришедшие с 'kern'. Для того, чтобы реализовать это в нашей системе логирования, изучим точку доступа — topic.
Читать дальше →
Total votes 1: ↑1 and ↓0+1
Comments4

Электроника как искусство: электрический ток

Reading time9 min
Views76K
Не влезай. Убьет! (с)

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

Электрический ток


Пути электрического тока неисповедимы. (с) мысли из интернета

На самом деле, нет. Все так или иначе можно описать с помощью математической модели, моделирования, да даже прикинув по-быстренькому на бумажке, а некоторые уникумы делают это в голове. Кому как удобнее. На самом деле, эпиграф этой главы родился от незнания, что же такое электрический ток.
Читать дальше →
Total votes 44: ↑34 and ↓10+24
Comments133

Диод. Светодиод. Стабилитрон

Reading time13 min
Views147K
Не влезай. Убьет! (с)

Постараюсь объяснить работу с диодами, светодиодами, а также стабилитронами на пальцах. Опытные электронщики могут пропустить статью, поскольку ничего нового для себя не обнаружат. Не буду вдаваться в теорию электронно-дырочной проводимости pn-перехода. Я считаю, что такой подход обучения только запутает начинающих. Это голая теория, почти не имеющая отношения к практике. Впрочем, интересующимся теорией предлагаю эту статью. Всем желающим добро пожаловать под кат.
Читать дальше →
Total votes 55: ↑53 and ↓2+51
Comments104

Доклады с Минской С++ конференции CoreHard Spring 2018

Reading time4 min
Views6.8K

7 — 8 апреля сообщество CoreHard провело в Минске восьмую международную конференцию CoreHard Spring 2018, посвященную языку С++ и сопутствующим «хардкорным» технологиям. В конференции участвовали спикеры из ведущих IT-компаний Беларуси, России, Украины, Германии и Голландии. Они рассказали о своем опыте в разработке и тестировании.

Теперь доклады с конференции размещены в свободном доступе на YouTube и все желающие могут познакомиться с ними. Благодарим организаторов конференции.
Читать дальше →
Total votes 36: ↑36 and ↓0+36
Comments2

EDC-устройство для сисадмина: Linux в кармане

Reading time15 min
Views26K
У каждого админа, пожалуй, был случай, когда что-то внезапно ломается, а ты где-нибудь в дороге: едешь на машине, садишься на поезд или, банально, сидишь где-то на скамейке в парке и срываться и куда-то нестись желания нет ни малейшего. А чинить надо. Или, как минимум, оценить масштабы пришедшего белого пушного зверька.

Понятно, что можно обойтись смартфоном или планшетом, особенно если нужно только зайти по ssh. Но пользоваться в таких случаях тачскрином, как по мне, — это боль и страдания.



Можно приобрести внешнюю клавиатуру, держатель или подставку для планшета, но я считаю, что проще уж тогда носить с собой полноценный ноутбук. Места займет примерно столько же.
Читать дальше →
Total votes 44: ↑43 and ↓1+42
Comments78

Альманах пакетных менеджеров Linux

Reading time4 min
Views50K

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


Управление пакетами

Далее следует джентльменский набор необходимых для повседневной рутины команд основных Linux дистрибутивов: установить, обновить и удалить пакет, накатить обновления, проверить зависимости, установить принадлежность файла пакету и пр.

Читать дальше →
Total votes 24: ↑18 and ↓6+12
Comments44

Балансировка нагрузки с LVS

Reading time6 min
Views98K
Итак, у вас есть нагруженный сервер и вам вдруг захотелось его разгрузить. Вы поставили и залили такой же (такие же), но пользователи упорно ходят на первый. В этом случае конечно же нужно задуматься о балансировке нагрузки.

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

Написание приложений, основаных на Qt, на языке Python

Reading time5 min
Views120K
Доброе время суток.
Недавно решил изучить ещё один язык программирования. Выбор пал на python. Написал несколько маленьких скриптов. Но прежде всего я хотел писать приложения с графическим интерфейсом. В интернете наткнулся на этот небольшой туториал, прочтение которого вылилось в предлагаемый Вашему вниманию перевод. Надеюсь, что кому-нибудь он будет полезен.


Это руководство нацелено на получение представления о том как писать маленькие приложения на python, использующие библотеку Qt.

Читать дальше →
Total votes 54: ↑53 and ↓1+52
Comments34

Основы репликации в MySQL

Reading time10 min
Views328K
С репликацией серверов MySQL я познакомился относительно недавно, и по мере проведения разных опытов с настройкой, записывал, что у меня получалось. Когда материала набралось достаточно много, появилась идея написать эту статью. Я постарался собрать советы и решения по некоторым самым основным вопросам, с которыми я столкнулся. По ходу дела я буду давать ссылки на документацию и другие источники. Не могу претендовать на полноту описания, но надеюсь, что статья будет полезной.
Читать дальше →
Total votes 72: ↑70 and ↓2+68
Comments44

Настройка Nginx с Let's Encrypt на CentOS 7

Reading time6 min
Views82K
Наверно, многие уже в курсе, что компания Let's Encrypt раздает бесплатные SSL-сертификаты на https://letsencrypt.org. Как же его получить и настроить на своем сервере под управлением CentOS 7 и Nginx?

image
Читать дальше →
Total votes 15: ↑11 and ↓4+7
Comments23

Обзор СКУД с бесплатным программным обеспечением

Reading time7 min
Views83K
Одна из интересных тенденций на российском рынке СКУД это появление компаний производителей, представляющих свое полнофункциональное программное обеспечение абсолютно бесплатно.

Волшебная притягательность слова «бесплатно» как магнитом притягивает новых клиентов, но у бесплатного всегда есть и обратная сторона, всмотримся в эту «темную» сторону.

Мы расчистим ее от маркетинговых наслоений, и расскажем как не попасть на крючок маркетологов.

Читать дальше →
Total votes 14: ↑10 and ↓4+6
Comments34

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity