Pull to refresh
9
0
Анатолий Петров @FisHlaBsoMAN

Пользователь

Send message

Виртуальная клавиатура на Python+OpenCV

Level of difficultyMedium
Reading time5 min
Views7.1K

В данной статье разберемся, как написать виртуальную клавиатуру, используя Python+Opencv.

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

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

Почему linux должен быть единственной системой в образовательном процессе

Level of difficultyEasy
Reading time8 min
Views30K

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

Читать далее
Total votes 118: ↑61 and ↓57+4
Comments1135

Пишущая машинка из телетайпа и Arduino

Reading time4 min
Views7.6K

Consul 254 похож на принтер, но это не принтер. Ещё у него есть клавиатура, но при этом печатающая часть никак не связана со вводом, поэтому так просто получить что-то на бумаге не выйдет. Эту проблему мы и будем сегодня решать с помощью Ардуино и цветных проводочков. Конечно всё уже украдено до нас, и такую вещь уже описывали в журнале Моделист-Конструктор в 1989 году. Правда при этом использовался компьютер "Специалист", а не Ардуино.

Читать далее
Total votes 57: ↑56 and ↓1+55
Comments14

Заряжаем ноутбук Dell XPS от любого адаптера питания

Reading time8 min
Views118K
image

Не так давно я решил произвести обновление своего ноутбука и приобрёл на Ebay Dell XPS 13 9350. Цена вышла очень приятная (в 2 раза дешевле, чем в отечественных магазинах, отлично проходило в лимит 1000 евро, при этом комплектация максимальная, а состояние «New»). Ноутбук мне очень понравился (стоит ли говорить — туда отлично встал Linux без каких-либо танцев с бубном кроме перевода SSD из режима RAID в режим AHCI одной галкой в UEFI). И я даже отлично попользовался им 2 недели, а потом… а потом блок питания ноутбука перестал работать.

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

Однако всё было не так просто…
Читать дальше →
Total votes 101: ↑101 and ↓0+101
Comments205

Работа с таймером в Sailfish OS на долгих интервалах времени

Reading time5 min
Views2.1K

Введение


Довольно часто, при реализации какой-либо логики в приложении, возникает потребность в срабатывании некоторой функции через определённый промежуток времени. Наиболее очевидным примером такой потребности является приложение таймера. Например, cooktimer или Saildoro.

Как было сказано в одной из предыдущих статей, для добавления таймера в приложение на Sailfish OS можно использовать стандартный элемент Timer или его C++ аналог — QTimer. Однако, по умолчанию, работа этих таймеров приостанавливается на долгих промежутках времени из-за того, что устройство может уйти в «сон». Как раз с этой проблемой и столкнулись разработчики двух приложений, упомянутых выше.

В данной статье представлен стандартный для системы, но к сожалению недокументированный способ обработки такого поведения Sailfish OS.
Читать дальше →
Total votes 6: ↑6 and ↓0+6
Comments2

Парсеры, обработка текста. Просто о сложном. CFG, BNF, LL(k), LR(k), PEG и другие страшные слова

Reading time19 min
Views45K
Наверное, каждому программисту приходилось сталкиваться с задачами вида «прочитать что-то в формате А и произвести с ним некие манипуляции». Будь то json, логи nginx, cfg, sql, yaml, csv или что-то еще. Хорошо, когда можно воспользоваться библиотекой, однако, по разным причинам, это удается не всегда. Тогда и встает вопрос создания собственного парсера для заданного формата. И это, как говорят англичане, часто оказывается PITA (болью в ...). В этой статье я постараюсь облегчить эту боль. Кому интересно, добро пожаловать.
Читать дальше →
Total votes 43: ↑42 and ↓1+41
Comments24

Разоблачение алгоритмов растеризации шрифтов (2/2)

Reading time14 min
Views10K
(вторая часть перевода статьи Разоблачение алгоритмов растеризации шрифтов)

Linux


Наследуя худшее


Windows растеризует шрифты плохо, Linux ещё хуже. Во всех Linux-системах, которые я видел, используется FreeType [10] Дэвида Тёрнера, Роберта Вильгельма и Вернера Лемберга. Это отличная библиотека, но способ её использования, к сожалению, нельзя назвать удачным. Типичный скриншот Linux выглядит так:



Вот полный скриншот:
ссылка

Сразу заметна проблема — чёрные пятна в скругленных углах, образовавшиеся в результате сглаживания. Вцелом, можно сказать, что косые штрихи выглядят тяжелее чем вертикальные, что в регультате производит впечатление «грязи». Вы можете возразить, что FreeType и Linux могли бы использовать схожую с ClearType субпиксельную растеризацию, но по мне это не даёт заметных преимуществ.
Читать дальше →
Total votes 124: ↑121 and ↓3+118
Comments49

Тащим музыку из ВК без публичного music API

Reading time6 min
Views90K

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


Дело было вечером, делать было нечего… Точнее, я просто хотел загрузить аудиокнигу перед парами и тут меня ждал сюрприз. Кэш в кейт мобайле отключили. Как так? Что делать? Конечно же писать свое приложение с кэшем и аудиозаписями. Но для начала нужно понять, как вк превращает ссылки вида audio%user_id%_%track_id% в прямые ссылки на mp3. Что из этого вышло приложения я не написал и как скачать определенный плейлист можно прочитать под катом.
Читать дальше →
Total votes 35: ↑34 and ↓1+33
Comments46

Доработка домофона протоколом MQTT для управления с телефона (версия 2.0)

Reading time4 min
Views76K
Совсем недавно я уже писал про доработку домофона протоколом MQTT.

В комментариях Владимир instalator написал:
Схема явно не продумана. Нет необходимости вообще вмешиваться в схему трубки, достаточно подключить устройство в разрыв линии и эмулировать трубку подбросом нужных сопротивлений.
Я почему-то упустил из виду возможность имитации трубки домофона, ведь такой подход действительно не потребует вмешиваться в схему самой трубки, можно будет перехватывать управление на подходе к ней. Более того, такой подход, при необходимости, позволяет вообще не использовать домофонную трубку. Повесили устройство и открываем дверь с телефона. При желании можно и вовсе развить идею до батарейного питания.
Читать дальше →
Total votes 39: ↑39 and ↓0+39
Comments37

Руководство по материалам электротехники для всех. Часть 10

Reading time4 min
Views23K
Продолжение руководства по материалам электротехники. В этой части заканчиваем с диэлектриками: полиимидами, полиамидами, полиметилметакрилатом, поликарбонатом. Еще в этой части картинка на которую я убил кучу времени.
image

Добро пожаловать под кат (ТРАФИК)
узнать о материалах
Total votes 50: ↑49 and ↓1+48
Comments21

Настраиваем интернет шлюз с прозрачным обходом блокировок (а рекламу таки будем блокировать)

Reading time9 min
Views103K


У вас есть старенький (или не очень) компьютер с двумя сетевыми картами? Вам надоела реклама и лишние телодвижения для обхода блокировок? Вы не хотите с этим мириться? Тогда добро пожаловать под кат.
Читать дальше →
Total votes 71: ↑68 and ↓3+65
Comments97

Кражи на сетях

Reading time4 min
Views46K
image

Недавно с одним из моих знакомых приключилась не слишком приятная история. Однажды утром, когда он собирал дочь в детский сад к нему в гости наведались следователи. Целью их визита было расследование кражи оборудования у одного из екатеринбургских провайдеров.
Читать дальше →
Total votes 41: ↑40 and ↓1+39
Comments89

Третий сервис лишний: Telegram и сам дружит с телефонией

Reading time1 min
Views21K


Я всегда восхищался силой коллективного разума. И укреплению моей убежденности в ней послужила недавняя история: я рассказал, как можно интегрировать телефонию с Telegram с помощью сервиса IFTTT, на что коллеги из Voximplant ответили, как это можно сделать проще, а потом господин recompileme в своем комментарии обратил внимание на то, что удобный API телеграма решает задачу без участия каких-либо третьих сервисов.




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


Читать дальше →
Total votes 25: ↑18 and ↓7+11
Comments17

Терминальная графика

Reading time8 min
Views53K
Когда printf — мало, а ncurses — много


Когда данных становится слишком много, бывает не хватает стандартного вывода printf в консольной программе. Особенно если различных событий много и различные данные превращаются в безумный листинг. Эти данные могут поступать от контроллера через UART, и тут нечего и думать о какой-то gui-программе. Может так же быть и обычный bash-скрипт, к которому хочется прикрутить какой-никакой псевдографический интерфейс.
Читать дальше →
Total votes 61: ↑54 and ↓7+47
Comments69

Повышаем производительность кода: сначала думаем о данных

Reading time20 min
Views62K


Занимаясь программированием рендеринга графики, мы живём в мире, в котором обязательны низкоуровневые оптимизации, чтобы добиться GPU-фреймов длиной 30 мс. Для этого мы используем различные методики и разработанные с нуля новые проходы рендеринга с повышенной производительностью (атрибуты геометрии, текстурный кеш, экспорт и так далее), GPR-сжатие, скрывание задержки (latency hiding), ROP…

В сфере повышения производительности CPU в своё время применялись разные трюки, и примечательно то, что сегодня они используются для современных видеокарт ради ускорения вычислений ALU (Низкоуровневая оптимизация для AMD GCN, Быстрый обратный квадратный корень в Quake).


Быстрый обратный квадратный корень в Quake

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

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

В статье мы рассмотрим кеширование, векторное программирование, чтение и понимание ассемблерного кода, а также написание кода, удобного для компилятора.
Читать дальше →
Total votes 141: ↑133 and ↓8+125
Comments103

Проектирование импульсного источника питания с активным ККМ. Эпизод I

Reading time28 min
Views184K

Предисловие


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

Еще одной причиной отсутствия статей была моя работа в одной «современной успешной IT-hardware-компании», сейчас наконец-то я ее покинул и окончательно пересел на фриланс, так что время для статьи появилось))

Недавно ко мне обратился мой старый наставник и просто очень хороший человек. Естественно я не мог отказать в помощи, а оказалось все достаточно просто — меня попросили сделать блок питания для КВ трансивера FT-450, который будет более стабильный в работе, особенно при пониженном входном напряжении, чем уже имеющийся Mean Well. Прошу заметить, я не говорю о том, что Mean Well плохая фирма, просто в данном случае нагрузка достаточно специфическая, а так продукция у них вполне себе хорошая.

Диагноз примерно такой:


— Заявлен выходной ток в 40А, на деле при потреблением в 30-35А (на передаче) блок уходит в защиту;
— Наблюдается сильный нагрев при длительной нагрузке;
— Совсем становится плохо, когда использует его на даче, где напряжение в сети 160-180В;
— Напряжение максимальное 13,2-13,4В, а хотелось бы 13,8-14В с возможностью подкрутить +-20%.

Особенностью данной статьи будет то, что проект продвигается вместе с ней. Я за него только засел и поэтому смогу рассказать обо всех этапах разработки: от ТЗ до готового прототипа. В таком формате статей с наскоку на гике я не нашел, обычно люди пишут уже проделав всю работу и забыв половину мелочей, которые часто несут в себе главный интерес. Так же эту статью я хочу написать доступным для новичков языком, поэтому местным гуру стоит чуточку проще относиться к «неакадемичности» моего слога.
Читать дальше →
Total votes 52: ↑52 and ↓0+52
Comments289

Головоломки TCP

Reading time15 min
Views50K

Говорят, что нельзя полностью понять систему, пока не поймёшь её сбои. Ещё будучи студентом я ради забавы написал реализацию TCP, а потом несколько лет проработал в IT, но до сих пор продолжаю глубже и глубже изучать работу TCP — и его ошибки. Самое удивительное, что некоторые из этих ошибок проявляются в базовых вещах. И они неочевидны. В этой статье я преподнесу их как головоломки, в стиле Car Talk или старых головоломок Java. Как и любые другие хорошие головоломки, их очень просто воспроизвести, но решения обычно удивляют. И вместо того, чтобы фокусировать наше внимание на загадочных подробностях, эти головоломки помогают изучить некоторые глубинные принципы работы TCP.
Читать дальше →
Total votes 83: ↑78 and ↓5+73
Comments14

Парсинг JSON — это минное поле

Reading time25 min
Views155K
image

JSON — это стандарт де-факто, когда заходит речь о (де)сериализации, обмене данными в сети и мобильной разработке. Но насколько хорошо вы знакомы с JSON? Все мы читаем спецификации и пишем тесты, испытываем популярные JSON-библиотеки для своих нужд. Я покажу вам, что JSON — это идеализированный формат, а не идеальный, каким его многие считают. Я не нашёл и двух библиотек, ведущих себя одинаково. Более того, я обнаружил, что крайние случаи и зловредная полезная нагрузка могут привести к багам, падениями и DoS, в основном потому, что JSON-библиотеки основаны на спецификациях, которые со временем развиваются, что оставляет многие вещи плохо или вообще не задокументированными.

Читать дальше →
Total votes 170: ↑164 and ↓6+158
Comments60

Малоизвестные Git-команды

Reading time4 min
Views73K


У Git есть строгие обязательства по обратной совместимости: многие продвинутые возможности скрыты за разнообразными опциями, а не применяются как поведение по умолчанию. К счастью, Git также поддерживает и алиасы, так что вы можете создавать свои собственные команды, которые делают всю характерную для Git магию. Под катом — подборка полезных (или как минимум забавных) алиасов, определённых в моём .gitconfig.
Читать дальше →
Total votes 188: ↑162 and ↓26+136
Comments43

Парадокс Rimworld: захватывающая сюжетом «песочница»

Reading time9 min
Views61K

Чью сказку вы хотите послушать?

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

Ключевая фишка игрового процесса — AI-рассказчик подбирает наиболее интересное «случайное» событие, которое прямо здесь и сейчас окажет наиболее драматический эффект. Хороший или плохой – но эмоционально-сильный.

Но про то, как это работает, чуть позже. Сразу главное – влюбиться в эту игру можно за потрясающий сюжет. Который «размазан» по миру. Сюжет, которого, в принципе, нет.

Итак, начало первой игры: ваш корабль взрывается. Вы едва успеваете добежать до капсул и приземляетесь на поверхности. 30 аварийных рационов питания, стальные обломки, оружие. Рядом – руины каких-то древних зданий.
Читать дальше →
Total votes 73: ↑69 and ↓4+65
Comments73
1
23 ...

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity