Search
Write a publication
Pull to refresh
1
Alexander Stellove @AlLSTLread⁠-⁠only

Software Engineer

Send message

Алхимия. Привет из прошлого

Reading time1 min
Views3.8K

О чём речь ?


Alchemy — игра для DOS-а, цель которой создать новую цивилизацию.
Мир в котором всё можно построить из воды, земли, воздуха и огня.



Игра развивает память и тренирует мышление.
Она по своей сути гениальная, я подсел на неё очень крепко и уже второй вечер трачу на её прохождение :)
Скрины, хинты и ссылки внутри

Как мы изобретали оптический рефлектометр

Reading time9 min
Views21K


История про высокий порог входа, забеги по граблям и уверенность в завтрашем дне, а также про оптику, схемотехнику и немного про FPGA. На КДПВ — то, что получилось, работает и используется в production, а ниже — рассказ про процесс создания этого "чуда враждебной техники".


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

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

Кто звонил? Или обратный звонок с сотового на asterisk

Reading time6 min
Views26K

Часто попадали в ситуацию когда на мобильном обнаруживаешь пропущенный звонок с городского и при попытке перезвонить попадаешь на голосовое меню какой-нибудь фирмы и совершенно непонятно кто тебе звонил? Я часто, а также и клиенты нашей компании каждый день сталкиваются с этим… С этим решено было что-то делать. Все последующие действия актуальны для trixbox v2.8.0.4 (с некоторыми корректировками или, возможно, даже без них можно реализовать и на других системах)
Читать дальше →

Знакомство с простейшей нейронной сетью и ее пошаговая реализация

Reading time5 min
Views42K
Однажды я наткнулся на книгу под названием «Создай свою нейросеть», под авторством Тарика Рашида. В отличие от многих других книг по нейронным сетям, в этой все подавалось простым языком, c достаточным количеством примеров и советов

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

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

Нейронные сети предпочитают текстуры и как с этим бороться

Reading time7 min
Views32K


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


В первой статье Approximating CNNs with bag-of-local features models works surprisingly well on ImageNet авторы берут модель, похожую на bag-of-words, и в качестве "слов" используют фрагменты из изображения. Эти фрагменты могут быть вплоть до 9х9 пикселей. И при этом, на такой модели, где полностью отсутствует какая-либо информация о пространственном расположении этих фрагментов, авторы получают точность от 70 до 86% (для примера, точность обычной ResNet-50 составляет ~93%).


Во второй статье ImageNet-trained CNNs are biased towards texture авторы приходят к выводу, что виной всему сам набор данных ImageNet и то, как изображения воспринимают люди и нейронные сети, и предлагают использовать новый датасет – Stylized-ImageNet.


Более подробно о том, что на картинках видят люди, а что нейронные сети

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

Что читать о нейросетях

Reading time6 min
Views134K


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


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


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

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

Прямая передача данных между ПЛИС Virtex-7 по шине PCI Express

Reading time21 min
Views27K

Аннотация


В данной статье рассматривается передача данных по шине PCI Express с одновременным участием нескольких ПЛИС. В компьютерной системе, к PCI Express шине которой подключено несколько (в нашем случае 8) оконечных устройств (PCIe endpoints) ПЛИС запускается одновременно несколько транзакций передачи данных двух типов: А) DMA передача между ОЗУ и ПЛИС (чтение/запись) и Б) прямая передача данных между двумя ПЛИС (запись). Используя соединение PCI Express x4 Gen 2.0 при обращении в память была получена скорость записи 1451 МБ/с (90% от максимальной). Скорость записи данных между ПЛИС была равна 1603 МБ/с (99 % от максимальной) при длине пакетов 128 байт и 1740 МБ/с (99% от максимальной) при длине пакета 256 байт. Латентность передачи данных между ПЛИС зависит от количества промежуточных коммутаторов, и была равна 0,7 мкс для одного коммутатора и 1 мкс для трех. Также показано, что при одновременных передачах через общий канал скорость отдельных передач не уменьшается до тех пор, пока суммарная скорость передачи не превышает пропускную способность общего канала; затем канал используется на 100%, а его пропускная способность делится поровну между устройствами.
Читать дальше →

Особенности оконной фильтрации на ПЛИС

Reading time11 min
Views20K
Всем привет! В этой статье речь пойдет об одной важной части цифровой обработки сигналов — оконной фильтрации сигналов, в частности на ПЛИС. В статье будут показаны способы проектирования классических окон стандартной длины и «длинных» окон от 64K до 16M+ отсчетов. Основной язык разработки — VHDL, элементная база — современные кристаллы FPGA Xilinx последних семейств: это Ultrascale, Ultrascale+, 7-series. В статье будет показана реализация CORDIC — базового ядра для конфигурации оконных функций любой длительности, а также основных оконных функций. В статье рассмотрен метод проектирования с помощью языков высокого уровня С/C++ в Vivado HLS. Как обычно, в конце статьи вы найдете ссылку на исходные коды проекта.

КДПВ: типичная схема прохождения сигнала через узлы ЦОС для задач анализа спектра.


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

Разработка собственного ядра для встраивания в процессорную систему на базе ПЛИС

Reading time11 min
Views6.5K


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

Django 3.0 будет асинхронным

Reading time29 min
Views29K

Andrew Godwin опубликовал DEP 0009: Async-capable Django 9 мая, а 21 июля он был принят техническим советом Django, так что можно надеяться, что к выходу Django 3.0 успеют сделать что-нибудь интересное. Он уже упоминался где-то в комментариях Хабра, но я решил донести эту новость до более широкой аудитории путём его перевода — в первую очередь для тех, кто, как и я, не особо следит за новостями Django.



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


По мере развития экосистемы стало очевидно, что, хотя нет насущной необходимости расширять Django для поддержки отличных от HTTP протоколов, таких как вебсокеты, поддержка асинхронности даст много преимуществ для традиционной model-view-template структуры Django.


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

Первое, что нужно сделать, запуская проект на Django

Reading time4 min
Views33K
Приветствую сообщество, встала передо мной задача написать социальную сеть. А коль скоро язык программирования, которым я более-менее владею — это Python, я выбрал фреймворк Django для реализации проекта. Чтобы не тратить время на написание HTML шаблонов и CSS стилей, эти файлы я беру в интернете с пометкой Free. В основном это шаблоны от Colorlib.

Поехали.

Сразу оговорюсь, что использую PyCharm, поэтому могу не знать все команды из файла manage.py.
Читать дальше →

Тренировочный лагерь по схемотехнике для танков и закладкам в процессоры

Reading time5 min
Views7.9K
В апреле был роснановский семинар по современной схемотехнике для школьников олимпиадного типа. После него группа организаторов собралась в фойе и долго ломала голову, как сделать предмет более интересным и при этом полезным. Чтобы ввести Verilog и ПЛИС например в формат Олимпиад НТИ. Было решено отказаться от математически интересных, но несколько абстрактных для школьника задач типа протоколов когерентности кэшей в многопроцессорных системах. Также не вызвала особого энтузиазма идея автоматической теплицы с датчиками, так как ее сто раз реализовали на ардуино и STM32, и ПЛИС-ы не добавляют в теплицы ничего интересного.

И вдруг — Эврика! А если проводить соревнования по графическим играми, сделанных на чистой схемотехнике, без программирования, как делали игры типа Пин-Понг наши предки во времена Брежнева и Картера. И проводить не на древних микросхемах К561, а на современных Xilinx и Altera (то бишь Intel FPGA) и с использованием тех же технологий проектирования на уровне регистровых передач, которые используют проектировщики в Apple, Intel и SpaceX.

Короче, мы этим займемся в 8-26 июля на летней школе в Зеленограде. Часть школы, о плане которой пойдет речь в этом пост, посвящена основам цифровой схемотехники, первым шагам в архитектуру и микроархитектуру процессоров, а также (даже скорее в основном) аппаратной компьютерной графике.

Я попробую привезти в Зеленоград в качестве помощницы свою дочь-студентку Элизабет, если она вовремя получит паспорт и российскую визу. Элизабет, будучи русско-украинско-японкой, владеет только английским. Вот в Зеленограде и выучит основы русского. А заодно научит правильному английскому произношению инструкторов, которые готовы помочь на школе (необязательно из МИЭТ, можно из МФТИ, МГУ, МИФИ):


Отчет с завтрака с Чарльзом Уэзереллом, автором культовой книги «Этюды для программистов»

Reading time6 min
Views11K
Завтрак с Чарльзом Уэзереллом, автором культовой книги «Этюды для программистов», затянулся на четыре часа. В конце-концов официантка попросила нас из ресторана в Пало-Альто, сказав что в ресторан большая очередь, а мы тут с восьми утра заседаем. За это время мы обсудили массу интересных вещий: работу Чарльза в Ливерморской лаборатории и Оракле, объектно-ориентированное и функциональное программирование, компиляторы и языки описания аппаратуры, закладки в процессоры, неэффективность нейронных сетей и незаслуженно забытый Пролог, посещение Чарльзом России, обработку текста конечным автоматом в аппаратном сопроцессоре и создание школьниками видеоигр на ПЛИС.



Содержания четырех часов с Чарльзом Уэзереллом хватит для пятидесяти статей на Хабре, поэтому перечислю в основном темы, после чего приведу некоторые детали про три из них:
Читать дальше →

Разработка простейшей «прошивки» для ПЛИС, установленной в Redd. Часть 2. Программный код

Reading time7 min
Views6.6K
Итак, в прошлой статье мы разработали простейшую процессорную систему, с помощью которой планируем провести тест микросхемы ОЗУ, подключённой к ПЛИС комплекса Redd. Сегодня же мы сделаем для этой аппаратной среды программу на языке С++, а также разберёмся, как эту программу вливать, а главное — отлаживать.


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

Разработка программ для центрального процессора Redd на примере доступа к ПЛИС

Reading time14 min
Views3.6K
В прошлой статье я сказал, что нам пора переходить к потоковым протоколам. Но начав подготовку рассказа о них, я понял, что сам плаваю в одной очень важной теме. Как уже отмечалось, у меня с Линуксом достаточно своеобразные отношения. В общем, я понял, что сам не могу создать с нуля приложение на С++, которое удовлетворяло бы всем принципам программирования для Redd. Можно было бы попросить кого-то сделать это, а затем просто воспользоваться готовым шаблоном, но цикл статей призван научить всех вести разработку под Redd с нуля. Поэтому я попросил своего начальника (большого специалиста по Линуксу), и он разъяснил мне, что за чем нажимать. Затем я чуть переосмыслил его слова и теперь считаю нужным зафиксировать все знания письменно. Это избавит таких, как я, от мучительных раздумий: «Так… Что он сделал – понятно, но как мне это повторить?». В общем, кто работает под Линуксом, можете пробежать следующие два раздела по диагонали. Вряд ли вы найдёте там что-то новое (дальше – найдёте). А остальным я предлагаю на выбор две методики разработки, которые соответствуют декларируемым принципам работы под Redd: низкие трудозатраты на разработку и удалённая отладка.


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

Как я не готовился и провел роснановский семинар по ПЛИС-ам в Москве. Планы сделать то же в Лас-Вегасе и Зеленограде

Reading time15 min
Views7.3K
У вас бывает такой сон: вы оказываетесь на экзамене или выступаете перед некоторой аудиторией, и вдруг осознаете, что вы вообще не готовились и сейчас прийдется импровизировать. Именно в такой ситуации, но не во сне, а в реале, я оказался перед майскими праздниками в Москве, куда прилетел из Калифорнии, чтобы провести трехдневный семинар для тщательно отобранных школьников ведущих московских физматшкол. Под эгидой РОСНАНО, в гимназии РУТ (МИИТ) и в присутствии преподавателей из МИЭТ, МИРЭА, МИФИ, МЭИ и ВШЭ МИЭМ.

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

Поэтому я взял некий универсальный пример, который написал полтора года назад, сидя в самолете Алма-Ата — Астана, выкинул из примера все внутренности и начал со школьниками его наполнять, без жесткого плана чем. И как ни странно — это получилось. В процессе наполнения возникли поучительные моменты цифровой схемотехники и языка описания аппаратуры Verilog, которые при планировании бы не возникли.

4 июня я с коллегами по Wave Computing провожу похожий семинар в Лас-Вегасе, но только для взрослых, а 8-19 июля помогаю МИЭТ провести летнюю школу в Зеленограде. Планы этих мероприятий (не окончательные, а для обсуждения в группе преподавателей и инженеров, в том числе здесь, на Хабре) — в конце поста.


Видео-туториалы запуска вычислительных задач на Python, R, С++, Octave и Blender во FlyElephant

Reading time1 min
Views8.7K
Пару недель назад, наша команда выпустила свежий релиз FlyElephant — платформа для ученых, которая предоставляет готовую вычислительную инфраструктуру для проведения расчетов, помогает находить партнеров и совместно работать над проектами, а также управлять всеми данными из одного места.

В качестве вычислительного ресурса сейчас используется облако Azure, а пользователи могут запускать вычислительные задачи, написанные с помощью С++ (с поддержкой OpenMP), R, Python, Octave, Scilab, Java, Julia, OpenFOAM, GROMACS, Blender на серверах с количеством ядер от 1 до 32 и оперативной памятью до 448 ГБ.

Сегодня мы хотим поделиться видео-туториалсами запуска задач во FlyElephant. Под катом вы найдете видео, как запускать вычислительные задачи, написанные с помощью С++, R, Python, Octave и рендерить изображения с помощью Blender, а также промо-код для получения бесплатных дополнительных часов работы ваших задач.
Читать дальше →

Быть ментором

Reading time6 min
Views9.2K
Встречали ли вы людей, которые при первой же трудности не пытаются преодолеть ее самостоятельно, а бегут к более опытному товарищу за помощью? Старший коллега подсказывает решение, и вроде бы все довольны, но старший отвлекся, а младший не заработал собственный опыт.



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

Этих людей часто объединяет то, что в свое время им попался плохой учитель в школе или плохой ментор уже на карьерном пути.

Быть плохим ментором легко. Плохого ментора заметить бывает сложно, с виду он может казаться хорошим и не понимать, что он делает ошибки.
Читать дальше →

Самоконтроль времени на самообразование и время на чтение книг

Reading time4 min
Views14K
Работа программистом предполагает постоянное обязательное самообучение. Самообучение включает в себя, во-первых, углубление знаний в уже знакомых сферах, и, во-вторых, получение навыков в неизвестных и пропущенных областях. Это всё, конечно, красиво звучит на бумаге, но по факту мы ещё имеем приступы лени, застревания в стеке технологий и выгорание от рутины. Новые ощущения помогают в борьбе с тёмной стороной разработки. Вот только ощущения должны быть действительно новыми: разбираться в десятый раз с нюансами «новых» api от очередной социалки быстро становится завуалированной рутиной.


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

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

4 толковых канала на Youtube про технические собеседования

Reading time4 min
Views28K
Смотрю разные каналы ребят, которые проходят/проводят интервью в крупных компаниях и рассказывают про это. На русском прям что-то крутое не попадалось, но вот личный топ каналов на английском:


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

Information

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