Pull to refresh
76
-0.8
Михаил Емельянов @sepulkary

Бэкенд программист

Send message

Your own Duolingo without overengineering

Reading time14 min
Views1.3K

Hi, my name is Mikhail Emelyanov, I’m a Python programmer and I would like to show you my pet project — Flywheel, a micro-platform for learning foreign languages, a mixture of Duolingo and Anki, an application that can teach you to properly write in Spanish (or any other language you’re studying). Flywheel’s source code is available on GitHub.


Flywheel


As you may know, generalized knowledge of a foreign language can be broken down into four relatively independent components: reading, writing, listening, and speaking. Unfortunately, training one of these abilities has no direct effect on the other components, so, for example, by developing our reading skills, the effect on our writing skills is quite indirect. Flywheel is a ‘sharpener’ specifically for written Spanish.


If you’ve ever used Duolingo, you should have some idea of the format in which you’ll be studying. The formula is simple: here’s a phrase, translate it into the other language; the app will remember the last time you translated a phrase and how successful you were at it; and depending on the accuracy of your answer, it will determine when you should do the same phrase again. In my opinion, Duolingo and its approach are brilliant. However… There are certain aspects that somewhat spoil the learning experience, and Flywheel was specifically designed to address them.

Read more →
Rating0
Comments1

Ядро планеты Python. Интерактивный учебник

Reading time67 min
Views31K

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


Оригинал учебника лежит на GitHub, вы вольны сколько угодно дополнять и переделывать его. Самое главное — учебник написан на Jupiter Notebook, а это значит, что вы можете интерактивно редактировать код, мгновенно добавляя новые сущности или проясняя непонятные моменты.


Core of the planet Python

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

Пишем свой личный Duolingo на минималках

Reading time15 min
Views8.5K

Привет, меня зовут Емельянов Михаил, я Python-программист и я хотел бы показать вам свой небольшой «проект выходного дня» — Flywheel, микро-платформу для изучения иностранных языков — смесь Duolingo и Anki, программу, которая может помочь вам правильно писать на английском. Flywheel доступен в исходниках, лежит на GitHub.



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


Если вы когда-нибудь пользовались Duolingo, то имеете представление о формате, в котором будет идти обучение. Последовательность проста: вот тебе фраза, переведи её на другой язык; программа запомнит, когда ты в последний раз переводил ту или иную фразу и насколько успешно у тебя это получилось; в зависимости от правильности ответа будет определено время, когда тебе нужно задать эту же фразу еще раз. В целом, на мой взгляд, как сам Duolingo, так и используемый им подход — просто гениальны. Но… Есть нюансы, которые несколько портят впечатления от процесса учёбы, и именно для их устранения я и задумал Flywheel.

Читать дальше →
Total votes 23: ↑23 and ↓0+23
Comments5

Python Junior Plus, or the beginner's Roadmap to becoming a Python programmer

Reading time8 min
Views6.9K

image


Hello! My name is Mikhail Emelyanov, I am embedded software engineer, and I was inspired to write this little roadmap on the capabilities of Python language by a certain commonality among the existing Python tutorials found on the web.


The usual suggestions to study, say, “Algorithms and Data Structures” or “Databases” are especially jarring. You can spend years studying these topics, and even after decades you'd still be able to find something you didn't know yet even without ever venturing outside the scope of Algorithms!


Using video game analogies, we can say that novice programmers often stand on the shore of the lake of boiling lava with an island with the ever-coveted jobs in the center, while the islands in between, which you have to jump on, gradually increasing your skills in successive mini-quests, are either missing, or arranged haphazardly, or their fairly smooth sequence breaks off, never having managed to get you any farther from the shore. Let's try to build a path of hint islands, a number of which, although not without effort, will finally allow us to reach our goal.

Read more →
Rating0
Comments3

Пайтон Джуньор Плюс, или путеводитель начинающего Python-программиста

Reading time8 min
Views25K

image


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


Особенно выбивают из равновесия советы изучить, скажем, «Алгоритмы и структуры данных» или «SQL». Да зубы можно сточить, изучая эти темы, и даже будучи седовласым старцем, постоянно открывать для себя что-то новое, не выходя за рамки тематики «Алгоритмов»!


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

Читать дальше →
Total votes 22: ↑22 and ↓0+22
Comments9

WebFPGA — разработка на Verilog в браузере

Reading time7 min
Views5.5K
Думаю, многие программисты, начиная от питонистов-датасайентистов и заканчивая суровыми разработчиками драйверов, временами возводят очи горе и мечтательно вздыхают: «Эх, пoжёcтчe бы чего, похардкорнее...». Мы, конечно, говорим про Verilog, язык описания и моделирования электронных систем. Verilog всегда стоял особняком среди языков программирования; позволяя решать задачи, которые не осилить никаким иным образом, он, однако, требует наличия специфической аппаратной платформы, ПЛИС — программируемой логической интегральной схемы. Порог входа в разработку на Verilog относительно высок, но, возможно, скоро он станет чуть ниже, потому что прямо сейчас идёт

Краудфандинговый проект: WebFPGA.
Суть проекта: Отладочная плата для ПЛИС iCE40UP5k. Всё программное обеспечение для разработки и отладки размещено в облаке, взаимодействие с платой происходит в браузере при помощи API WebUSB.
Платформа: Kickstarter.
Автор: Райан Якобс (программист), Мик Якобс (инженер-электронщик).
Локация: Лос-Анджелес, Калифорния, США.


Читать дальше →
Total votes 15: ↑13 and ↓2+11
Comments13

Альтернативы Raspberry Pi

Reading time11 min
Views130K
29 февраля 2012 наш мир немного изменился к лучшему. Raspberry Pi Foundation анонсировал начало продаж маленьких одноплатных компьютеров под маркой Raspberry Pi. В начале продаж купить устройство было непросто, но понемногу рынок насытился и с июля 2012 вы наконец могли просто пойти в магазин и купить или заказать через интернет первую «Малинку», Raspberry Pi Model B — одноплатный Linux-компьютер с 700 МГц процессором, 0.5 Гбайт ОЗУ, USB, Ethernet и 26 выводами GPIO, позволяющими подключать внешние платы, устройства ввода-вывода и исполнительные устройства. Устройство, построенное на базе относительно недорогой четырехслойной платы, с низкой себестоимостью, с ценой для конечного потребителя $35, сделанное настолько хорошо, что альфа-версия Raspberry Pi Model B стала победителем номинации «Hardware Design» на ARM TechCon 2011.


Читать дальше →
Total votes 59: ↑53 and ↓6+47
Comments158

Ezblock Pi — программирование без программирования, в этот раз для фанатов Raspberry Pi

Reading time5 min
Views8K
Идея писать код, не пиша код (да-да, пиша — деепричастие настоящего времени от глагола писать, живите теперь с этим) не раз приходила в голову и умным людям, и просто лентяям. Мечта о графическом интерфейсе, в рамках которого можно кидать одни кубики на другие, рисовать взаимные связи и выбирать свойства объектов из милых выпадающих списочков, а потом по нажатию волшебной кнопки «Compile» получить рабочий код, эквивалентный коду другого (не такого смышленого, конечно) программиста, пользующегося устаревшим способом ручной печати, всегда тлела в головах как корпоративных боссов, мечтающих приобщить к программированию каждого вчерашнего студента, интеллект которого позволял ему не промахиваться мимо унитаза, так и стартаперов, желающих за адекватную цену осчастливить весь мир. Сегодня вашему вниманию предлагается:

Краудфандинговый проект: Ezblock Pi.
Суть проекта: среда графического программирования для Raspberry Pi в тандеме с платой расширения.
Платформа: Kickstarter.
Адрес проекта: kickstarter.com/ezblock.
Авторы: Джорджанн Чанг, Рэгги Лау.
Локация: США, штат Делавэр, Уилмингтон.

Читать дальше →
Total votes 22: ↑22 and ↓0+22
Comments1

Сумасшедшая DIY игрушка: самодельный сотовый телефон со встроенным дозиметром. Часть 1

Reading time7 min
Views135K
Привет, Хабр.

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

Чесал я тут на днях репу, на предмет чего бы сделать полезного в хозяйстве. После поиска интересных идей в интернете вообще и на Хабре в частности, оказалось, что народу интересны самодельные сотовые телефоны — комплектующие для подобных самоделок (GSM-модемы, ВЧ-разъемы, антенны, SIM-холдеры) становятся все доступнее, а тема действительно интересная. Например, на Хабре были опубликованы статьи «Мобильный телефон своими руками» (часть 1, часть 2) и «Конструктор для сборки сотового телефона».

К сожалению, свой самодельный сотовый я уже собирал. Конечно, сейчас подобную конструкцию стоило бы сделать в несколько другом формате — микроконтроллер AVR заменить на ARM, добавить графический дисплей, вместо антенны, нарисованной на плате, использовать стандартную внешнюю антенну… Но такой эволюционный путь развития несколько скучноват и вряд ли идея модернизировать что-то, что уже давно сделано и даже работает, победит вечернюю лень и прокрастинацию. Было бы гораздо веселее, если бы проектируемая хреновина никем никогда не делалась, а еще лучше, если бы были определенные сомнения: «А заработает ли?».

Закругляясь, скажу лишь, что в результате поиска новых идей я решил сделать самодельный сотовый телефон со встроенным дозиметром — вещь, достаточно сумасшедшую, чтобы с ее разработкой было интересно возиться и достаточно практичную, чтобы она могла пригодиться в хозяйстве.
Читать дальше →
Total votes 101: ↑96 and ↓5+91
Comments62

Съемка Time Lapse видео под Android

Reading time27 min
Views33K
imageДавайте напишем программу для создания своих собственных фильмов в технике Time Lapse. Завораживающее видео, снятое в этой технике с борта МКС, можно посмотреть здесь, более доступный вариант, который можно повторить с помощью описываемой программы — здесь.

Программа имеет простой интерфейс и несложный принцип работы:
• пользователь задает периодичность снимков встроенной камерой (например, 10 с) и желаемую частоту кадров генерируемого видео (например, 25 кадров в секунду);
• после нажатия кнопки «Старт»  программа каждые 10 секунд делает фотографию и записывает jpg-файл на SD-карту;
• процедура повторяется до нажатия кнопки «Стоп» и «Создать видео», после чего последовательность фотографий превращается в видео файл формата Motion JPEG, который показывает отснятый материал в 250 раз (25 * 10) быстрее реальной скорости происходивших событий.

В программе два основных класса — MainActivity, занимающийся взаимодействием с пользователем и накоплением снимков и MJPEGGenerator, ответственный за превращение последовательности изображений в видео файл.

Класс MJPEGGenerator, взятый с code.google.com, был слегка переделан в связи с тем, что в Android Java отсутствует пакет java.awt.

Процедуры работы с камерой были преимущественно взяты из материала Работа с камерой в Android, где есть хорошее описание примененных решений, проблема «залипаний» камеры после лока/анлока Android-устройства была устранена благодаря stackoverflow.

Программа была отлажена на планшете Prestigio MultiPad 7.0 Prime под Android 4.0.

Читать дальше →
Total votes 26: ↑23 and ↓3+20
Comments15

Information

Rating
Does not participate
Location
Уфа, Башкортостан(Башкирия), Россия
Date of birth
Registered
Activity

Specialization

Backend Developer, Embedded Software Engineer
Lead
From 240,000 ₽
Python
C
C#
PostgreSQL
Linux
Fastapi
SQLalchemy