Search
Write a publication
Pull to refresh
4
0.1
Сергей @Semy

User

Send message

Интервью с Эбеном Аптоном, создателем Raspberry Pi

Reading time12 min
Views11K


Факты
  • Окончил Кембриджский университет, бакалавр физики и машиностроения, также обладает дипломом Кембриджа по вычислительной технике и имеет степень доктора наук.
  • Выступал одним из основателей игровой студии Ideaworks3D, а также работал в IBM.
  • Автор ряда статей и даже книг (к примеру, Oxford Rhyming Dictionary, написанный в соавторстве с отцом — Клайвом Аптоном).

Предназначение Raspberry Pi

Raspberry Pi совершенно не нужен школам, он нужен детям. В этом заключается вся идея: это личный компьютер для ребенка. Лично я программирую с десяти лет и делаю это уже двадцать пять лет. Господи, какой я старый! Я почти при смерти! Мне исполнилось тридцать пять, а я все еще программирую по четыре часа каждый вечер. И именно благодаря такому подходу я вообще умею программировать.
Читать дальше →

Пять способов улучшить Raspberry Pi

Reading time3 min
Views174K
Стремительно набирает популярность одноплатный компьютер Raspberri Pi. Стремясь сделать его как можно дешевле, разработчики выкинули все «лишнее» и максимально упростили конструкцию там, где это было возможно. С одной стороны, это вынуждает пользователя терпеть некоторые неудобства при работе с системой. Но с другой стороны, оставляет простор для творчества и усовершенствований.

Итак, вашему вниманию предлагается обзор пяти полезных модификаций для Raspberry Pi.
Читать дальше →

Коварный роутер или почему порты надо открывать

Reading time9 min
Views48K

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

Речь об «автоматической» пробросе порта, через технологию UPnP, без использования «стандартной» библиотеки NATUPnPLib.

О том, в силу чего был выбран такой непростой путь и почему он все-таки непростой — читайте ниже.
Подробности эксперимента

Слова-паразиты в английском языке

Reading time7 min
Views33K
Словами-паразитами в английском пользуются все. Ну или почти все — английская королева не в счет. Как только британцу или американцу задаешь вопрос, на который нужно подумать, сразу начинаются эти «emm...», «you know...», «like...».

В русском языке за слова-паразиты шпыняют — мол, некультурно и вообще. А в английском это вполне нормально. Даже называются они нейтрально — «fillers» или «заполнители», что вполне логично — они заполняют пустое пространство в предложении, если нужна лишняя секунда или чтобы глубже передать эмоции.

Иногда их называют «crutches» — «костыли», что тоже логично. В русском языке тоже иногда без костылей не обойдется.

C++20 и Modules, Networking, Coroutines, Ranges, Graphics. Итоги встречи в Сан-Диего

Reading time8 min
Views30K
До C++20 осталась пара лет, а значит, не за горами feature freeze. В скором времени международный комитет сосредоточится на причёсывании черновика C++20, а нововведения будут добавляться уже в C++23.

Ноябрьская встреча в Сан-Диего — предпоследняя перед feature freeze. Какие новинки появятся в C++20, что из крупных вещей приняли, а что отклонили — всё это ждёт вас под катом.


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

Асинхронный обмен данными с удалённым приложением через SSH

Reading time8 min
Views9.5K
Доброго времени суток, друзья и коллеги. Меня всё ещё зовут Дмитрий Смирнов, и я всё ещё, к моему вящему удовольствию, являюсь разработчиком ISPsystem. Некоторое время назад я начал работу над совершенно новым проектом, который меня очень вдохновил, поскольку новое — это в нашем случае отсутствие легаси кода и поддержки старых компиляторов. Здравствуй, Boost, C++17 и все прочие радости современной разработки.

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

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



Примечание: автор предполагает, что читатель знаком с основами асинхронной разработки и boost::asio.
Читать дальше →

Переезд в австрийский социализм

Reading time14 min
Views105K

На Хабре часто пишут про эмиграцию в разные страны, а про Австрию ещё не было. Пора восполнить пробел.



Хальштатт


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

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

Прерывания от внешних устройств в системе x86. Часть 1. Эволюция контроллеров прерываний

Reading time8 min
Views47K
В данной статье хотелось бы рассмотреть механизмы доставки прерываний от внешних устройств в системе x86 и попытаться ответить на вопросы:

  • что такое PIC и для чего он нужен?
  • что такое APIC и для чего он нужен? Для чего нужны LAPIC и I/O APIC?
  • в чём отличия APIC, xAPIC и x2APIC?
  • что такое MSI? В чём отличия MSI и MSI-X?
  • как с этим связаны таблицы $PIR, MPtable, ACPI?

Если на какой-то из этих вопросов вам интересно получить ответ или вы просто хотите ознакомиться с эволюцией контроллеров прерываний в системе x86, добро пожаловать под кат.
Читать дальше →

Переезд с Ubuntu на Windows 10, Hyper-V и избавление от железного маршрутизатора

Reading time5 min
Views58K
Купив новый ноутбук, я с сожалением заметил, что моя любимая Ubuntu больше не поддерживает работу сенсоров и вентиляторы постоянно жужжат, делая работу не комфортной. В тоже время, если загрузить предустановленную Windows 10 Pro с оригинального жесткого диска, то наступает приятная для уха тишина. Пока на улице (и дома) было прохладно, было терпимо. Но как наступила жара, терпению пришел конец. Было решено мигрировать на Windows.
Читать дальше →

SSLH: Прячем SSH/HTTPS/OpenVPN/Telegram за единым портом 443

Reading time3 min
Views126K
image

SSH/HTTPS/OpenVPN/Telegram и всё на одном порту?! Что?!
— Да!
  • Хотите скрыть наличее у вас некоторых сервисов?
  • В публичной wi-fi сети блокируется всё кроме 443 (https) порта?
  • Настроили Telegram Proxy/OpenVPN и не хотите его «светить» ?
  • SSH подключение к своему серверу из стран с цензурой?

На все эти вопросы ответ один — Мультиплексирование SSL/TLS соединений, или SSLH.

В посте мы рассмотрим как в 1 команду спрятать кучу сервисов за 1 портом.
Читать дальше →

Load Average в Linux: разгадка тайны

Reading time18 min
Views242K


Средние значения нагрузки (Load averages) — это критически важная для индустрии метрика. Многие компании тратят миллионы долларов, автоматически масштабируя облачные инстансы на основании этой и ряда других метрик. Но на Linux она окутана некой тайной. Отслеживание средней нагрузки на Linux — это задача, работающая в непрерываемом состоянии сна (uninterruptible sleep state). Почему? Я никогда не встречал объяснений. В этой статье я хочу разгадать эту тайну, и создать референс по средним значениям нагрузки для всех, кто пытается их интерпретировать.

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

Шпаргалка по HTTP-библиотекам для С++

Reading time12 min
Views113K
К сожалению, в стандартной библиотеке языка С++ нет никаких средств для работы с протоколом HTTP. Возможно, в будущем появятся, но на данный момент каждый раз при необходимости дёрнуть какой-нибудь REST-сервис, пропарсить веб-страничку, написать простенького бота или краулера приходится задаваться вопросами «А какую же библиотеку взять, так чтобы побыстрее и попроще?». Иногда проект уже использует какой-то фреймворк (а иногда даже несколько) и тогда приходится вспоминать «А как же сделать HTTP-запрос имеющимися средствами?». Чтобы не путаться я решил написать для себя шпаргалку с примерами HTTP-запросов на С++ с применением разных библиотек. А самое удобное место для хранения подобных шпаргалок — Хабр: и сам не потеряешь, и другим может пригодиться.

Будут рассмотрены:
  • WinInet
  • WinHttp
  • Casablanca
  • Qt
  • POCO
  • wxWidgets
  • Boost.Asio
  • libcurl
  • neon
  • .NET (С++/CLI)
  • IXMLHTTPRequest
  • HappyHttp
  • cpp-netlib


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

Python: метапрограммирование в продакшене. Часть вторая

Reading time7 min
Views13K

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



Теперь посмотрим как можно изменять вызовы методов. Больше о возможностях метапрограммирования вы сможете узнать на курсе Advanced Python.

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

DNSSec: Что такое и зачем

Reading time6 min
Views111K

Предисловие


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

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

Распознаем штрихкоды на изображениях с помощью Python и OpenCV

Reading time6 min
Views89K
От переводчика: мы в компании Энтерра очень любим алгоритмы компьютерного зрения. Работаем чаще всего с OpenCv. Время от времени нам пишут разные разработчики с вопросами: «А как лучше начать работать с OpenCv?» или «Какую интересную задачу можно просто решить с помощью OpenCv?» В связи с чем мы решили перевести очень хорошую статью, которая будет полезна всем, кто интересуется компьютерным зрением.



Черная Пятница близко.

Толпы злых покупателей. Рой одинаковых теток среднего возраста, готовых сожрать практически всё, что угодно, в ближайшем супермаркете — главное, что со скидкой 75%. Они выстроятся в очереди перед дверьми магазинов в полночь Дня благодарения. Они будут ломиться внутрь, стучать в запертые двери кулаками и головами, пока не сплющат друг друга и не разобьют руки в кровь, став похожими на зомби из «28 дней спустя». Но вместо человеческой плоти, они жаждут удовлетворить инстинкт покупателя. Их боевые кличи о скидках и распродажах достигают небес. А их громовая поступь способна привести к землетрясению на Великой Равнине.

Естественно, от СМИ помощи не жди — они будут смаковать каждую подробность. От обмороженных семейств, ночевавших в палатке на морозе, до старой леди, растоптанной охотниками за скидкой в момент, когда открылись двери. Что-то похожее случилось с галлимимусом в «Парке Юрского периода». А она просто хотела купить Halo для девятилетнего внука Тимми, чьи родители забыли это сделать в прошлом году. В Wal-Mart. Во время Черной Пятницы.

И я обязан спросить: весь этот хаос и бедлам стоят того?

Чёрт возьми, нет!

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

Просто представьте, как глупо вы будете выглядеть, стоя в очереди в ожидании свободной кассы – только для того, чтобы после сканирования штрихкода последнего сезона «Игры Престолов» выяснить, что в Target его можно купить на 5 долларов дешевле?

Собственно, далее я покажу, как можно обнаружить штрихкод на изображении, используя только Python и OpenCV.
Читать дальше →

Губозакаточная машинка для этикеток — разворачиваем цилиндрическое искажение программно

Reading time3 min
Views20K
В данной статье описывается шеститочечный метод разворачивания этикеток. Этот метод — обратная задача рендерингу, т.е. по ключевым точкам определяется геометрия бутылки, и высчитывает исходная плоскость изображения. Все манипуляции делаются при помощи библиотеки OpenCV. Добро пожаловать под кат!


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

Мониторинг сервисов с Prometheus

Reading time10 min
Views183K
Prometheus

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

Асинхронный Python: различные формы конкурентности

Reading time8 min
Views134K
С появлением Python 3 довольно много шума об “асинхронности” и “параллелизме”, можно полагать, что Python недавно представил эти возможности/концепции. Но это не так. Мы много раз использовали эти операции. Кроме того, новички могут подумать, что asyncio является единственным или лучшим способом воссоздать и использовать асинхронные/параллельные операции. В этой статье мы рассмотрим различные способы достижения параллелизма, их преимущества и недостатки.
Читать дальше →

Бинарные модули для Python

Reading time17 min
Views16K
Python — классный. Мы говорим «pip install» и скорее всего нужная библиотека поставится. Но иногда ответ будет: «compilation failed», потому что есть бинарные модули. Они практически у всех современных языков страдают какой-нибудь болью, потому что архитектур много, что-то нужно собирать под конкретную машину, что-то нужно линковать с другими библиотеками. В целом интересный, но малоизученные вопрос: а как же их делать и какие там проблемы? На этот вопрос постарался ответить Дмитрий Жильцов (zaabjuda) на MoscowPython Conf в прошлом году.


Под катом текстовая версия доклада Дмитрия. Ненадолго остановимся на том, когда бинарные модули нужны, а когда от них лучше отказаться. Обсудим правила, которые стоит соблюдать при их написании. Рассмотрим пять возможных вариантов реализации:

  • Native C/C++ Extension
  • SWIG
  • Cython
  • Ctypes
  • Rust

О спикере: Дмитрий Жильцов занимается разработкой больше 10 лет. Работает в компании ЦИАН системным архитектором, то есть несет ответственность за технические решения и контроль сроков. В своей жизни успел попробовать и ассемблер, Haskell, C, а последние 5 лет активно программирует на Python.

Заявка на фреймворк для мультиплатформенного бота

Reading time4 min
Views2.7K
image

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

А вопрос такой: что если я хочу для одного сервиса создать более чем одного бота? Например, я знаю, что ЦА сидит в Вконтакте и Телеграме, как мне с приложением минимальных усилий написать ботов, работающих с людьми и там, и там? Если вдруг я (например, как владелец интернет-магазина) захочу также с помощью ботов работать с аудиторией уже на Facebook, неужели действительно надо будет разрабатывать нового бота с нуля и переписывать всю логику под него или пытаться вникнуть в новое API или библиотеку. А ответ я постарался найти под катом, прошу к столу.
Читать дальше →

Information

Rating
6,043-rd
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity