Pull to refresh
438
0
Dmitry @Ocelot

Инженер-схемотехник

Send message

Зачёркивание и подчёркивание символьными средствами ( ̶т̶а̶к̶ ̶, т̱а̱к̱ или т̲а̲к̲)

Reading time4 min
Views125K

I. В чём проблема



Если социальная сеть, платформа для блогов или форум предоставляют возможность размечать текст при помощи HTML или BBCode, перечёркивать или подчёркивать текст не составляет труда: можно пользоваться тегами s и u обеих разметок или назначать стили в HTML. Но что делать, если у нас есть только голый текст? Или, например, нам нужно зачеркнуть/подчеркнуть слово в заголовке страницы, отображаемом в заголовке вкладки или всего браузера, или оформить слово в заголовке форумного поста — короче говоря, всюду, где не работает разметка?

Можно рискнуть и воспользоваться средствами Юникода.

Читать дальше →
Total votes 54: ↑42 and ↓12+30
Comments58

AES-128. Детали и реализация на python

Reading time12 min
Views74K
Идея написать для себя что-то шифрующее родилась довольно тривиально — пришлось завести еще одну дебетовую карту и, следовательно, хранить в голове еще один пин-код. Хранить такую информацию в открытом виде паранойя не позволяет, использовать сторонние сервисы тоже, поэтому после некоторых поисков остановился на стандарте AES. Сразу захотелось разобраться и реализовать алгоритм самому, не прибегая к дополнительным модулям.

В статье я расскажу подробно о составляющих алгоритма, немного окунемся в мат часть и приведу пример реализации на python. В разработке я ограничивался только тем, что входит в состав стандартной библиотеки.
Читать дальше →
Total votes 37: ↑34 and ↓3+31
Comments23

Пару слов о распознавании образов

Reading time13 min
Views311K
Давно хотел написать общую статью, содержащую в себе самые основы Image Recognition, некий гайд по базовым методам, рассказывающий, когда их применять, какие задачи они решают, что возможно сделать вечером на коленке, а о чём лучше и не думать, не имея команды человек в 20.
image

Какие-то статьи по Optical Recognition я пишу давненько, так что пару раз в месяц мне пишут различные люди с вопросами по этой тематике. Иногда создаётся ощущение, что живёшь с ними в разных мирах. С одной стороны понимаешь, что человек скорее всего профессионал в смежной теме, но в методах оптического распознавания знает очень мало. И самое обидное, что он пытается применить метод из близрасположенной области знаний, который логичен, но в Image Recognition полностью не работает, но не понимает этого и сильно обижается, если ему начать рассказывать что-нибудь с самых основ. А учитывая, что рассказывать с основ — много времени, которого часто нет, становится всё ещё печальнее.
Распознать
Total votes 130: ↑129 and ↓1+128
Comments52

IT-книги по свободной цене

Reading time4 min
Views77K
Неожиданно обнаружил, что интернет-магазин books.ru в преддверии Нового Года снова запустил акцию по продаже электронных книг по свободной цене. Акция продлится до 2 января. За списком интересных по моему мнению предложений прошу пожаловать под хабракат.
Читать дальше →
Total votes 74: ↑70 and ↓4+66
Comments98

I2P-прокси на хостинге

Reading time5 min
Views33K
Сейчас потихоньку начинается переползание некоторых ресурсов в i2p, потому возник вопрос об удобном доступе в эту сеть.
Можно поставить i2p-роутер на своём компьютере. Кому хочется всю домашнюю сеть обеспечить доступом, поднимают прокси на домашнем же роутере.
Но у меня вопрос стоял по другому. Хотелось иметь возможность получать доступ к i2p с любого компьютера без установки дополнительного ПО, пусть ценой безопасности — ибо мне не скрываться нужно, а просто что-то посмотреть. Если есть возможность запустить удаленный рабочий стол, то я со всяких интернет-кафе и из гостей предпочитаю подключаться к домашнему серверу, а там уже моё настроенное окружение. В случае же медленного подключения или закрытых портов пользоваться RDP становится затруднительно. Потому самый простой и нетребовательный вариант — поднять i2p-роутер на хостинге и настроить http-прокси.
image
Читать дальше →
Total votes 32: ↑31 and ↓1+30
Comments49

Python на Хабре

Reading time7 min
Views452K
Некоторое время назад, в силу определенных причин, мне пришла в голову мысль о том, чтобы начать изучать какой-нибудь новый язык программирования. В качестве альтернатив для этого начинания я определил два языка: Java и Python. После продолжительного метания между ними и сопутствующих нытья и долбежки головой о стену (у меня с новыми языками всегда так — сомнения, раздумья, проблема выбора и т.д.), я все-таки остановился на Python. Окей, выбор сделан. Что дальше? А дальше я стал искать материал для изучения…
Читать дальше →
Total votes 182: ↑162 and ↓20+142
Comments65

Детская Википедия. Нужна?

Reading time5 min
Views7.5K
«Почему небо голубое?»
  • Как объяснить это трехлетнему ребенку? Про спектр — еще непонятно. Самое простое объяснение, которое я нашла, подходит для младшего школьного возраста.
  • А если глобально: кто знает подходящую литературу или интернет-порталы? Ответы на детские почемучки о природе, но для 3-4-летних. Или я слишком много хочу?
  • Энциклопедий у нас много, хороших и разных. Но не всегда они помогают. Например, с тем же небом.
Ветка форума.

В детстве у меня была такая книга.

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

Но эта статья не о книжке. Стало интересно, существует ли в Интернете похожий сборник ответов для детей. Оказывается с этим все не очень здорово. Долгий поиск выявил всего 2 вроде бы подходящих сайта: potomy.ru и children.claw.ru. Посмотрим, что они представляют…
Читать дальше →
Total votes 86: ↑84 and ↓2+82
Comments134

Изобретаем JPEG

Reading time28 min
Views174K

Вы правильно поняли из названия, что это не совсем обычное описание алгоритма JPEG (формат файла я подробно описывал в статье «Декодирование JPEG для чайников»). В первую очередь, выбранный способ подачи материала предполагает, что мы ничего не знаем не только о JPEG, но и о преобразовании Фурье, и кодировании Хаффмана. И вообще, мало что помним из лекций. Просто взяли картинку и стали думать как же ее можно сжать. Поэтому я попытался доступно выразить только суть, но при которой у читателя будет выработано достаточно глубокое и, главное, интуитивное понимание алгоритма. Формулы и математические выкладки — по самому минимуму, только те, которые важны для понимания происходящего.

Знание алгоритма JPEG очень полезно не только для сжатия изображений. В нем используется теория из цифровой обработки сигналов, математического анализа, линейной алгебры, теории информации, в частности, преобразование Фурье, кодирование без потерь и др. Поэтому полученные знания могут пригодиться где угодно.

Если есть желание, то предлагаю пройти те же этапы самостоятельно параллельно со статьей. Проверить, насколько приведенные рассуждения подходят для разных изображений, попытаться внести свои модификации в алгоритм. Это очень интересно. В качестве инструмента могу порекомендовать замечательную связку Python + NumPy + Matplotlib + PIL(Pillow). Почти вся моя работа (в т. ч. графики и анимация), была произведена с помощью них.

Внимание, трафик! Много иллюстраций, графиков и анимаций (~ 10Мб). По иронии судьбы, в статье про JPEG всего 2 изображения с этим форматом из полусотни.
Читать дальше →
Total votes 356: ↑354 and ↓2+352
Comments70

Рейтинг постов хаба

Reading time35 min
Views55K

Привет, Хабр!

Решил посмотреть лучшие посты своего любимого хаба и с ужасом обнаружил, что такой фичи нет.

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

Читать дальше →
Total votes 132: ↑131 and ↓1+130
Comments35

Пишем красивый идиоматический Python

Reading time4 min
Views112K

Иногда сложно найти в Сети правильные, а главное актуальные «best practices» для языка. Документация, конечно же, содержит всю необходимую информацию, но отсеять нужную вещь в абзацах подробного (на то она и документация) описания довольно сложно. Но недавно мне улыбнулся поиск Google, и я наткнулся на очень полезные «паттерны» языка Python от одного из core разработчиков — Raymond Hettinger.

Примечание: Все рекомендации даны в нескольких вариантах: сначала идут самые «плохие» варианты, а дальше предлагается лучшая альтернатива. Актуально для версии языка 2.7, отличия для версии 3.3 читайте в примечаниях к конкретному «паттерну».
Читать дальше →
Total votes 125: ↑99 and ↓26+73
Comments71

События, которые повлияли на ваше развитие в детстве

Reading time3 min
Views142K


UPD: игра вышла.

Привет!

Тут такая история. Я заметил, что в какой-то момент стал отмечать для себя важные вещи для развития ребёнка. Например, у меня в детстве был сначала модульный конструктор с мотором, колёсами, батарейками и так далее, а потом – модульный же радиоконструктор. Эти два предмета очень сильно повлияли на то, чем я потом интересовался в будущем.

Ещё пример – в детстве надо обязательно сходить в политехнический и археологический музеи Москвы. Или, например, запомнились такие штуки: первая хорошая НФ, подаренная в 8 лет; дед, научивший меня чертёжному почерку за 15 минут; шахматы каждые выходные; огромная коробка Лего и так далее. И таких событий – тысячи.

У меня просьба. Давайте накидаем важные и интересные вещи, которые можно и нужно сделать с ребёнком до примерно 10 лет. Наверняка ведь у вас есть такие «чекпоинты», которые запомнились.
Читать дальше →
Total votes 160: ↑154 and ↓6+148
Comments552

Десятка лучших консольных команд

Reading time2 min
Views198K
imageВ данном посте я расскажу о наиболее интересных командах, которые могут быть очень полезны при работе в консоли. Однозначных критериев определения какая команда лучше другой — нет, каждый сам для своих условий выбирает лучшее. Я решил построить список команд на основе наиболее рейтинговых приемов работы с консолью от commandlinefu.com, кладовой консольных команд. Результат выполнения одной из таких команд под Linux приведен на картинке. Если заинтересовало, прошу под кат.
Узнать больше
Total votes 382: ↑346 and ↓36+310
Comments215

Простыми словами о преобразовании Фурье

Level of difficultyMedium
Reading time14 min
Views1.1M
Я полагаю что все в общих чертах знают о существовании такого замечательного математического инструмента как преобразование Фурье. Однако в ВУЗах его почему-то преподают настолько плохо, что понимают как это преобразование работает и как им правильно следует пользоваться сравнительно немного людей. Между тем математика данного преобразования на удивление красива, проста и изящна. Я предлагаю всем желающим узнать немного больше о преобразовании Фурье и близкой ему теме того как аналоговые сигналы удается эффективно превращать для вычислительной обработки в цифровые.

image (с) xkcd

Без использования сложных формул и матлаба я постараюсь ответить на следующие вопросы:
  • FT, DTF, DTFT — в чем отличия и как совершенно разные казалось бы формулы дают столь концептуально похожие результаты?
  • Как правильно интерпретировать результаты быстрого преобразования Фурье (FFT)
  • Что делать если дан сигнал из 179 сэмплов а БПФ требует на вход последовательность по длине равную степени двойки
  • Почему при попытке получить с помощью Фурье спектр синусоиды вместо ожидаемой одиночной “палки” на графике вылезает странная загогулина и что с этим можно сделать
  • Зачем перед АЦП и после ЦАП ставят аналоговые фильтры
  • Можно ли оцифровать АЦП сигнал с частотой выше половины частоты дискретизации (школьный ответ неверен, правильный ответ — можно)
  • Как по цифровой последовательности восстанавливают исходный сигнал


Я буду исходить из предположения что читатель понимает что такое интеграл, комплексное число (а так же его модуль и аргумент), свертка функций, плюс хотя бы “на пальцах” представляет себе что такое дельта-функция Дирака. Не знаете — не беда, прочитайте вышеприведенные ссылки. Под “произведением функций” в данном тексте я везде буду понимать “поточечное умножение”

Итак, приступим?
Total votes 203: ↑192 and ↓11+181
Comments190

Роботы, проекторы, обработка изображений: видео «Box»

Reading time1 min
Views14K


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

И да, по словам тех же авторов видео, все было снято «на едином дыхании», без дублей (само собой, репетиции были) и склеивания отдельных кадров. Думаю, на Хабре есть специалисты, которые смогут определить, так ли это.

Вот само видео (смотреть, конечно же, лучше всего на большом дисплее/телевизоре в максимальном качестве):



Читать дальше →
Total votes 48: ↑34 and ↓14+20
Comments11

Пишем платформер на Python, используя pygame

Reading time11 min
Views355K
image
Сразу оговорюсь, что здесь написано для самых маленькихначинающих.

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

Что такое платформер?


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

Одними из моих любимых игр данного жанра являются «Super Mario Brothers» и «Super Meat Boy». Давайте попробуем создать нечто среднее между ними.
Читать дальше →
Total votes 93: ↑89 and ↓4+85
Comments46

Hacker-friendly Software-defined radio

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

Взглянем на пару любопытных доступных инструментов для работы с радио.
Читать дальше →
Total votes 55: ↑53 and ↓2+51
Comments33

Повесть о настоящем Интернете

Reading time13 min
Views172K
Abstract: Рассказ про устройство Интернета, как «сети сетей» в виде текста для чтения, без двоичной системы счисления и нюансов BGP. Большая часть расказа будет не про процесс общения ноутбука с точкой доступа, а о том, что происходит после того, как данные пройдут «шлюз по умолчанию». Предупреждаю, букв много.

Вступление


Маленький провокативный вброс: ни один из читателей этой статьи к Интернету не подключен. Все подключены к сети своего провайдера, и не более. Подключение к Интернету дорогое, его сложно делать, вам потребуется очень крутое оборудование, несколько договоров с несколькими операторами связи и квалифицированные сотрудники. Простому домашнему пользователю это никак и никогда не светит. Не говоря уже о том, что в Интернете может быть не больше 4 миллиардов подключившихся (а до недавнего времени было даже «не более 65536») [1]. Даже если весь Интернет перейдёт на ipv6, это число не поменяется.

Вот число подключившихся к Интернету [2]:

По оси Y — число в штуках. Штуках, штуках. И вас в этом числе не посчитали.

Почему?

Дело в том, что Internet — это, если переводить буквально, «межсетье». Сеть Сетей. И участниками Интернета являются не пользователи (их компьютеры, планшеты, микроволновки с wifi и т.д.), а сети. Сети и только сети участвуют в работе Интернета. Интернет — это то, что связывает разные сети между друг другом.
Читать дальше →
Total votes 179: ↑173 and ↓6+167
Comments52

Ликбез по типизации в языках программирования

Reading time12 min
Views514K
image

Эта статья содержит необходимый минимум тех вещей, которые просто необходимо знать о типизации, чтобы не называть динамическую типизацию злом, Lisp — бестиповым языком, а C — языком со строгой типизацией.

В полной версии находится подробное описание всех видов типизации, приправленное примерами кода, ссылками на популярные языки программирования и показательными картинками.
Читать дальше →
Total votes 239: ↑232 and ↓7+225
Comments180

Физика радиационных эффектов, влияющих на электронику в космосе

Reading time14 min
Views289K
Технологический процесс с проектными нормами 32 нм.
Два ядра ARMv7 с тактовой частотой 1,3 ГГц
Оперативная память – 1 Гбайт.


Технологический процесс с проектными нормами 150 нм.
Одно ядро PowerPC с тактовой частотой 200 МГц.
Оперативная память – 256 Мбайт.


Сверху – параметры центрального процессора iPhone5, внизу – марсохода Curiosity. Бортовой компьютер марсохода стоит приблизительно в двести раз дороже нового айфона. Почему так? Центральный процессор космического аппарата должен быть устойчивым к воздействию радиации. На Хабре уже была хорошая обзорная статья о космической электронике, а я постараюсь подробнее рассказать о физических принципах и эффектах, стоящих за сбоями и отказами в космосе.
Читать дальше →
Total votes 199: ↑199 and ↓0+199
Comments36

Фонд свободного ПО начал сбор средств на Replicant

Reading time1 min
Views25K
Фонд свободного программного обеспечения (Free Software Foundation) объявил сбор пожертвований на операционную систему Replicant, которая является полностью свободным дистрибутивом Android. Это первая мобильная ОС, которая работает без единой строчки проприетарного кода.

Версия 4.0.0004 от 22 июля поддерживает 10 различных устройств, но если разработчикам удастся собрать деньги, они купят новые устройства, проверят и портируют систему на них. Поддержка каждого нового устройства обходится в 400-600 долларов только на покупку девайса. Также немного денег нужно на инфраструктуру и рекламу проекта.
Читать дальше →
Total votes 65: ↑54 and ↓11+43
Comments50

Information

Rating
Does not participate
Registered
Activity