Pull to refresh
13
0.1
Дмитрий Земсков @SADKO

Overqualified

Send message

Ричард Хэмминг: Глава 14. Цифровые фильтры — 1

Reading time16 min
Views14K
«Цель этого курса — подготовить вас к вашему техническому будущему.»


imageПривет, Хабр. Помните офигенную статью «Вы и ваша работа» (+219, 2372 в закладки, 375k прочтений)?

Так вот у Хэмминга (да, да, самоконтролирующиеся и самокорректирующиеся коды Хэмминга) есть целая книга, написанная по мотивам его лекций. Мы ее переводи, ведь мужик дело говорит.

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

Мы уже перевели 16 (из 30) глав.

Глава 14. Цифровые фильтры — 1


(За перевод спасибо Максиму Лавриненко и Пахомову Андрею, которые откликнулись на мой призыв в «предыдущей главе».) Кто хочет помочь с переводом — пишите в личку или на почту magisterludi2016@yandex.ru

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

Большая часть того, что компьютеры обрабатывают, — это сигналы из разных источников, и мы уже обсуждали, почему они часто бывают в виде потока чисел, полученного из системы дискретизации. Линейная обработка, единственная, на которую у меня хватает времени в рамках этой книги, подразумевает наличие цифровых фильтров. Чтобы продемонстрировать, как всё происходит в реальной жизни, сначала я расскажу вам о том, как я стал работать с ними, и далее о том, чем я занимался.
Читать дальше →
Total votes 22: ↑22 and ↓0+22
Comments5

Однопиксельную камеру с активной подсветкой ускорили в 50 раз

Reading time4 min
Views24K

Образцы фотоснимков, сделанных новой однопиксельной камерой с подсветкой всего по 50 шаблонам из случайного распределения Бернулли (M=50)

В традиционной цифровой фотосъёмке принято использовать объектив, который формирует световой поток и направляет его на матрицу светочувствительных элементов — ПЗС или КМОП сенсор цифровой камеры. Считается, что чем больше элементов в матрице, тем лучше фотография: 20 миллионов элементов лучше, чем 13 миллионов. Это один из основных показателей качества фотографии, вместе со светосилой объектива и плотностью самих элементов (чем меньше плотность, тем больше физический размер матрицы, тем меньше искажений и наводок дают элементы).

Но что если у фотоаппарата вообще нет объектива, а светочувствительная матрица состоит из 1 (одного) пикселя? Современные цифровые технологии обработки сигналов действительно позволяют очень быстро собрать и обработать световой поток одним-единственным светочувствительным элементом. В этом случае фотоаппарату не нужны не объектив, ни большая матрица. То есть фотоаппаратура заменяется на компьютерные вычисления.
Читать дальше →
Total votes 27: ↑20 and ↓7+13
Comments52

Оценить PPFD при освещении растения белыми светодиодами просто: 1000 лк = 15 мкмоль/с/м2

Reading time9 min
Views62K
Статья «Освещение растений белыми светодиодами» вызывала живое обсуждение практических задач, и стало ясно — методы нужно упрощать.



Как элементарно пересчитать освещенность в единицы фотосинтетической активной радиации: PPFD, YPFD и радиометрическую плотность мощности? И что из этого действительно нужно?
Давайте разберемся...
Total votes 25: ↑23 and ↓2+21
Comments47

Контроллер для Лего

Reading time3 min
Views28K
Чуть меньше полугода назад сделал сыну на день рождения подарок — конструктор Xiaomi MITU. Неожиданно для меня ребенок на неделю завис в этом конструкторе. Когда были испробованы первые модели и их управление с планшета, возник закономерный вопрос — «А как для него писать программы?»

image
Читать дальше →
Total votes 60: ↑59 and ↓1+58
Comments32

Hessian-Free оптимизация с помощью TensorFlow

Reading time16 min
Views12K
Добрый день! Я хочу рассказать про метод оптимизации известный под названием Hessian-Free или Truncated Newton (Усеченный Метод Ньютона) и про его реализацию с помощью библиотеки глубокого обучения — TensorFlow. Он использует преимущества методов оптимизации второго порядка и при этом нет необходимости считать матрицу вторых производных. В данной статье описан сам алгоритм HF, а так же представлена его работа для обучения сети прямого распространения на MNIST и XOR датасетах.

Читать дальше →
Total votes 31: ↑30 and ↓1+29
Comments8

Как я blakecoin майнер делал

Reading time11 min
Views28K


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

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



Я тоже стал изучать, что же такое эти самые биткоины. Когда-то я даже начал свое собственное иследование алгоритма SHA256 и написал статью здесь на хабре "Можно ли вычислять биткоины быстрее, проще или легче?". Мои исследования алгоритмов хеширования до сих пор продолжаются и еще и близко не завершены… Может быть когда нибудь напишу про это отдельную статью. А сейчас пока вот это…
Читать дальше →
Total votes 30: ↑25 and ↓5+20
Comments35

Как собрать GSM телефон на базе SDR

Reading time13 min
Views38K


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

В отличие от проприетарного программного обеспечения проекты с открытым исходным кодом всегда получают больше внимания со стороны исследователей безопасности. Возможность заглянуть «под капот» и узнать, как работает тот или иной компонент программы, позволяет не только находить и исправлять всевозможные ошибки, но и убедиться в отсутствии так называемых «закладок» в коде. Кроме того, открытый исходный код позволяет начинающим разработчикам учиться на примере более опытных, используя результаты их работы в качестве опоры.
Total votes 37: ↑37 and ↓0+37
Comments7

Постигаем Си глубже, используя ассемблер. Часть 2 (условия)

Reading time8 min
Views18K
Вот и вторая часть часть цикла. В ней мы будем разбирать условия. В этот раз попробуем другие уровни оптимизации, и посмотрим, как это может повлиять на код.
Читать дальше →
Total votes 24: ↑21 and ↓3+18
Comments18

Генетический алгоритм построения алгоритмов

Reading time11 min
Views31K
Паркер: А чем Вы занимаетесь в выходные?

В типичной реализации генетический алгоритм оперирует параметрами какой-то сложной функции (диофантовые уравнения в статье "Генетический алгоритм. Просто о сложном" mrk-andreev) или алгоритма ("Эволюция гоночных автомобилей на JavaScript" ilya42). Количество параметров неизменно, операции над ними тоже изменить невозможно, как генетика не старается, потому что они заданы нами.

Хьюстон, у нас проблема


Сложилась странная ситуация — прежде чем применять генетические алгоритмы (ГА) к реальной задаче, мы сначала должны найти алгоритм, которым эта задача в принципе решается, и только потом его попытаться оптимизировать с помощью генетического алгоритма. Если мы ошиблись с выбором «основного» алгоритма, то генетика не найдет оптимум и не скажет, в чем ошибка.

Часто, а в последнее время и модно, вместо детерминированного алгоритма использовать нейронную сеть. Тут у нас тоже открывается широчайший выбор (FNN, CNN, RNN, LTSM, ...), но проблема остается той же — выбрать нужно правильно. Согласно Википедии "Выбирать тип сети следует, исходя из постановки задачи и имеющихся данных для обучения".

А что, если...? Если заставить ГА не оптимизировать параметры, а создавать другой алгоритм, наиболее подходящий для данной задачи. Вот этим я и занимался ради интереса.
Читать дальше →
Total votes 32: ↑30 and ↓2+28
Comments34

Наглядное объяснение чисел с плавающей запятой

Reading time4 min
Views214K
image

В начале 90-х создание трёхмерного игрового движка означало, что вы заставите машину выполнять почти не свойственные ей задачи. Персональные компьютеры того времени предназначались для запуска текстовых процессоров и электронных таблиц, а не для 3D-вычислений с частотой 70 кадров в секунду. Серьёзным препятствием стало то, что, несмотря на свою мощь, ЦП не имел аппаратного устройства для вычислений с плавающей запятой. У программистов было только АЛУ, перемалывающее целые числа.

При написании книги Game Engine Black Book: Wolfenstein 3D я хотел наглядно показать, насколько велики были проблемы при работе без плавающей запятой. Мои попытки разобраться в числах с плавающей запятой при помощи каноничных статей мозг воспринимал в штыки. Я начал искать другой способ. Что-нибудь, далёкое от $(-1)^S * 1.M * 2^{(E-127)}$ и их загадочных экспонент с мантиссами. Может быть, в виде рисунка, потому что их мой мозг воспринимает проще.

В результате я написал эту статью и решил добавить её в книгу. Не буду утверждать, что это моё изобретение, но пока мне не приходилось видеть такого объяснения чисел с плавающей запятой. Надеюсь, статья поможет тем, у кого, как и у меня, аллергия на математические обозначения.
Читать дальше →
Total votes 76: ↑73 and ↓3+70
Comments46

BBC Micro:bit — детский обучающий микрокомпьютер, первое знакомство

Reading time5 min
Views31K
Привет geektimes. О компьютерах BBC Micro я впервые прочитал здесь же, на geektimes. Еще в 80х британская компания BBC запустила обучающий проект, целью которого было повышение уровня компьютерной грамотности. Подробнее можно прочитать в статье компании Plarium "BBC Micro — компьютер, который обыграл ZX Spectrum", но мы вернемся к делам сегодняшним. Долго ли, коротко ли, BBC решила повторить проект уже на современной элементной базе, и выпустила микрокомпьютер BBC Micro:bit.



Как можно видеть, современная модель чуть поменьше своего предшественника.

Про Micro:bit уже писали на geektimes, как про то что плату уже можно купить, так и про то, что британским школьникам ее даже раздают бесплатно. Однако здесь на сайте похоже мало кто на ней программировал, пора восполнить этот пробел.

Как это работает, подробности под катом.
Читать дальше →
Total votes 23: ↑22 and ↓1+21
Comments90

Орнитоптер. Ответы на вопросы

Reading time6 min
Views22K
Первые две статьи вызвали большое количество вопросов и скептических замечаний на которые я отвечу в этой. Все данные используемые в данной статье являются итогом анализа испытаний и выкладками общей теории полета махолета.
Total votes 61: ↑59 and ↓2+57
Comments58

В Сбербанк онлайн уязвимостей нет

Reading time2 min
Views26K
Позавчера на GeekTimes вышла статья, в которой на видео демонстрируется якобы существующая уязвимость веб-версии Сбербанк Онлайн. Мы расскажем, почему ваши данные находятся в безопасности и что на самом деле показано на этом видео.

Уверены, что читателям GeekTimes не нужно рассказывать, что счётчики посещений Яндекс.Метрики и Google Analytics используются в России и во всем мире — в том числе и крупнейшими финансовыми организациями. Мы используем их в Сбербанк Онлайн для сбора статистики о переходах клиентов между страницами, чтобы оптимизировать и повысить качество наших онлайн-сервисов. Анонимность собираемой информации гарантируется политиками безопасности и конфиденциальности компаний Яндекс и Google. Подробнее о них: пользовательское соглашение Яндекс.Метрики, пользовательское соглашение Google Analytics. Мы не только полагаемся на репутацию наших партнеров, но и проверяем состав передаваемой информации.
Читать дальше →
Total votes 100: ↑32 and ↓68-36
Comments136

Как Сбербанк Онлайн сливает данные пользователей

Reading time2 min
Views159K
В связи с тем, что мне не удалось связаться со Сбербанком, точнее — с кем-то вменяемым с той стороны, хочу поделиться, чтобы если не исправить утечку данных, то хотя бы предупредить о ней.

image

Совсем недавно случайно обнаружил, что Сбербанк Онлайн густо утыкан счетчиками. Это Google, Doubleclick, Rutarget, ЯМетрика. Еще раз подчеркну, в личном кабинете, где люди переводят деньги, вводят очень персональную информацию и т.п., в этом личном кабинете натыканы скрипты, которые Сбербанку совсем не принадлежат, а принадлежат совсем не нашим компаниям, например. Давайте посмотрим, что из этого выходит (слайды и видео ниже).
Total votes 195: ↑181 and ↓14+167
Comments736

Карикатурный взгляд на работу в IT

Reading time4 min
Views45K
Люди из других сфер деятельности склонны думать, что карьера в IT связана с высокими зарплатами, премиями за подписание контрактов, гибкими графиками и современными офисами, в которых есть столы для пинг-понга, кофейные аппараты и нелимитированная еда для сотрудников.

Но трудолюбивые IT-специалисты знакомы и с обратной стороной медали. Изменения в IT-индустрии происходят «как в скороварке», зарплаты и возможности трудоустройства изменяются по прихоти рыночных циклов. Умения, востребованные сегодня, уже завтра становятся тяжким бременем, а угроза аутсорсинга предстает перед каждым, казалось бы, защищенным сотрудником.

Взлеты и падения на рынке труда в IT за первые 50 лет его существования предоставили карикатуристу Джону Клосснеру множество идей. Давайте взглянем в прошлое и посмотрим, что изменилось (и не изменилось) за эти годы.

Февраль 2013: Управление ожиданиями



Читать дальше →
Total votes 66: ↑59 and ↓7+52
Comments25

О возникновении спиралей в циклическом клеточном автомате

Reading time6 min
Views8.3K
О циклических клеточных автоматах было написано в этой статье. Целью данной статьи является рассмотрение условий возникновения спиралей, также известных как демоны. Средством достижения цели является изменение начальных условий и слежение за развитием клеточного автомата. В результате будут сделаны обобщающие выводы об условиях образования спиралей.

Кратко опишем циклический клеточной автомат.
Решетка представляет собой замкнутую двумерную ортогональную сетку квадратных клеток, каждая из которых находится в одном из 15 возможных состояний, в пределах от 0 до 14.


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


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



Как видно из рисунка выше, клеточный автомат проходит три этапа:

1. Случайное поле.
2. Цветные области.
3. Спирали, также известные как демоны.

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


Выберем несколько (например 12) случайных ячеек и рассмотрим изменение их состояний во времени.
Читать дальше →
Total votes 34: ↑32 and ↓2+30
Comments6

UAC Bypass или история о трех эскалациях

Reading time14 min
Views34K
На работе я исследую безопасность ОС или программ. Ниже я расскажу об одном из таких исследований, результатом которого стал полнофункциональный эксплоит типа UAC bypass (да-да, с source-code и гифками).


Ах, да, в Майкрософт сообщили, они сделали вид, что им не интересно.
Алярм! Под катом около 4 мегабайт трафика – картинок и гифок.
Поднять права
Total votes 60: ↑58 and ↓2+56
Comments15

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

Reading time14 min
Views16K
Мы очень часто используем понятие сложности, мы с ней боремся, и в то же самое время, мы создаем все более упорядоченные структуры, мы уменьшаем энтропию и утверждаем себя этим. В то же время, мы должны быть готовы к изменениям, мы должны быть адаптивными. Где точка равновесия? Что стоит за всеми этими понятиями и концептами. Может есть нечто, что объединяет это все, скрываясь от наших глаз, и в то же время находясь постоянно у нас на виду?

Читать дальше →
Total votes 31: ↑24 and ↓7+17
Comments9

Похоже, я не предприниматель

Reading time7 min
Views47K
Для того, чтобы это понять, мне потребовалось четыре миллиона рублей (половина из которых — мои) и четыре года.

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

В этой статье я хотел бы

— поделиться сделанными выводами
— порекомендовать проект, если вы хотите присоединиться к нему в качестве разработчика/инвестора
— выложить техническую документацию, если вы захотите сделать форк

image
Total votes 167: ↑164 and ↓3+161
Comments168

Information

Rating
2,478-th
Location
Москва и Московская обл., Россия
Date of birth
Registered
Activity