Pull to refresh
100
0
Лёва Матюшкин @LeoMat

ученый, программист, иллюстратор, редактор

Send message

Практическое использование термистора с Arduino

Reading time2 min
Views100K
image

Здравствуй, Хабрасообщество. После прочтения нескольких статей на хабе Arduino я загорелся заполучить эту игрушку. И вот недавно получил посылку с платой. Затем побаловался со светодиодами и захотел чего-нибудь посерьёзнее. Решил сделать простейший термометр, используя всего термистор, резистор на 10 кОм и LCD дисплей. Кому интересно что получилось — прошу под кат.
Читать дальше →

Пишем драйвер для самодельного USB устройства

Reading time13 min
Views177K
Целью этой статьи является пошаговая демонстрация процесса разработки всего набора программного обеспечения необходимого для организации связи самодельного устройства с компьютером посредством USB.

На данный момент, большинство радиолюбителей реализуют такой тип подключения используя чипы переходники USB в RS232 таким образом организуя связь со своим устройством посредством драйвера виртуального COM порта поставляемого с чипом переходником. Минусы такого подхода думаю понятны. Это как минимум лишний чип на плате и ограничения накладываемые этим чипом и его драйвером.
Мне же хочется осветить весь процесс организации такого взаимодействия так как оно и должно быть сделано, и как делается во всех серьезных устройствах.
В конце концов, сейчас 21-й век, модуль USB есть почти во всех микроконтроллерах. Именно о том, как наиболее быстро воспользоваться этим модулем и будет эта статья.
Читать дальше →

Знакомство с Arduino

Reading time4 min
Views80K

Введение


Торжественно открываю новый блог на Хабре, посвящённый Arduino! Блог об универсальном opensource-микроконтроллере Arduino, который будет интересен всем любителям микроэлектроники, самодельных гаджетов и всем, кто не боится взять в руки паяльник.

Внешний вид платы Arduino Diecimila Arduino представляет собой линейку электронных блоков-плат, которые можно подключать к компьютеру по USB, а в качестве периферии — любые устройства от светодиодов до механизмов радиуоправляемых моделей и роботов. Программы для него пишутся на простом и интуитивно понятном си-подобном языке Wiring (c возможностью подключения сторонних библиотек на C/C++, например, для управления LCD-дисплеями или двигателями), компилируются и загружаются в устройство одной кнопкой, после чего вы тут же получаете работающий автономный гаджет. Никакого ассемблера, никаких лишних проводов и дорогущих деталей и программаторов — чистое творчество, включай и работай!
Читать дальше →

Распознаём изображение с токена при помощи камеры

Reading time3 min
Views34K
В организации, где я тружусь в свободное от отдыха время, очень высокие требования к безопасности. Везде, где только можно, для аутентификации пользователей используются токены. Мне выдали вот такую вот штуку:

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

Юникод для чайников

Reading time8 min
Views328K
logo
Сам я не очень люблю заголовки вроде «Покемоны в собственном соку для чайников\кастрюль\сковородок», но это кажется именно тот случай — говорить будем о базовых вещах, работа с которыми довольно часто приводить к купе набитых шишек и уйме потерянного времени вокруг вопроса — «Почему же оно не работает?». Если вы до сих пор боитесь и\или не понимаете Юникода — прошу под кат.

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

Уроки Python от компании Google

Reading time1 min
Views120K
Отличный способ освоить Python — учебный класс Python в Google Code University. Уроки для этого класса написал Ник Парланте из Стэнфорда, и прошедшие курс люди отмечают не просто высокое, а фантастически высокое качество уроков.

Курс включает в себя шесть видеолекций на Youtube, где Ник проводит обучение новичков-гуглеров и подробно рассказывает о разных хитростях и фичах Python. Некоторые видеолекции длиной до 50 минут.

Есть ещё скачиваемые задачки. Они довольно простые и созданы специально для начинающих. Курс идеально подходит для изучения Python программистами, имеющими опыт работы с другими языками программирования.

Детектирование округлостей на изображении (на примере микрофотографий)

Reading time3 min
Views18K
Всем привет! По своей профессии (строго говоря- будущей профессии) я вообще-то химик. Относительно недавно появилась интересная работа и объявилась необходимость много работать с цифровым микроскопом, делать большое количество фотографий и определённым образом их обрабатывать. А именно: находить линейные размеры частиц (чаще круглой формы и изначально- на глаз) и скрупулёзно заносить их в лабораторный журнал.
Неудивительно, что после первой же сотни изображений я крепко задумался о хоть какой-нибудь автоматизации этого процесса, но была одна загвоздка: я прекрасно знал, что «объектно-ориентированное программирование — это очень хорошо», но… Но я на тот момент владел только школьным TurboPascal, университетским VB и быдлокодингом на PHP в процедурном варианте. Потыкавшись по форумам, и учтя факт, что за день я успеваю поработать как минимум на двух ОС (Mac/Windows/Ubuntu существуют в эйфорическом симбиозе), я особо не задумывался и решил писать на Java.
Опуская подробности примерно недельной, в свободное от работы время, долбёжки своей головы об объектно-ориентированную парадигму программирования и бессонных ночей с мыслями наподобие «да как же, блин, это работает», я постараюсь максимально вкратце рассказать о том простом и быстром «алгоритме», который у меня родился. Стоит сразу сказать, что он годится только для достаточно четких изображений.
А вот, кстати, и типичный представитель (вернее, его примерно десятая часть), которого нужно обработать:


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

Grab — python библиотека для парсинга сайтов

Reading time13 min
Views150K
Лет пять-шесть назад, когда я ещё программировал преимущественно на PHP, я начал использовать библиотеку curl для парсинга сайтов. Мне нужен был инструмент, который позволял эмулировать сессию пользователя на сайте, отсылать заголовки обычного браузера, давать удобный способ отсылки POST-запросов. Сначала я пытался использовать напрямую curl-расширение, но его интерфейс оказался очень неудобным и я написал обёртку с более простым интерфейсом. Время шло, я пересел на python и столкнулся с таким же дубовым API curl-расширения. Пришлось переписать обёртку на python.
Читать дальше →

Ускорение кода на Python средствами самого языка

Reading time5 min
Views82K
Каким бы хорошим не был Python, есть у него проблема известная все разработчикам — скорость. На эту тему было написано множество статей, в том числе и на Хабре.

Что с этим можно сделать?

Python-неизвестный

Reading time4 min
Views27K
На Хабре уже есть несколько статей\переводов, в которых рассказывается о неизвестных фичах\тонкостях\возможностях Пайтона. Я буду пытаться не повторять их, а дополнять, но если уж так случилось, что вы это уже где-то видели — не огорчайтесь. Я уверен, что найдется что-то интересное и для вас.
Читать дальше →

Собрание материалов по лицензиям и авторскому праву GNU

Reading time2 min
Views1.4K
image

Что такое авторское лево
www.gnu.org/copyleft/copyleft.ru.html
www.gnu.org/copyleft/copyleft.html

Категории свободных и несвободных программ
www.gnu.org/philosophy/categories.ru.html
www.gnu.org/philosophy/categories.html

Проблема лицензии BSD
www.gnu.org/philosophy/bsd.ru.html
www.gnu.org/philosophy/bsd.html

Свободные программы надежнее
www.gnu.org/software/reliability.ru.html
www.gnu.org/software/reliability.html

Почему «открытый исходный код» не передает понятия свободное ПО
www.gnu.org/philosophy/open-source-misses-the-point.ru.html
www.gnu.org/philosophy/open-source-misses-the-point.html

Зачем авторское лево
www.gnu.org/philosophy/why-copyleft.ru.html
www.gnu.org/philosophy/why-copyleft.html

FAQ по лицензии GNU
www.gnu.org/licenses/gpl-faq.html
Читать дальше →

Библиотека для упрощения HTTP-запросов

Reading time1 min
Views150K
Requests — библиотека Python, которая элегантно и просто выполняет HTTP-запросы. Теперь не нужно осваивать urllib2 с излишне сложными программными интерфейсами.

Вот как выглядит HTTP-запрос с авторизацией с помощью requests:

>>> r = requests.get('https://api.github.com', auth=('user', 'pass'))
>>> r.status_code
200
>>> r.headers['content-type']
'application/json'
Читать дальше →

NetworkX для удобной работы с сетевыми структурами

Reading time5 min
Views100K

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

Определение части речи слов в русском тексте (POS-tagging) на Python 3

Reading time9 min
Views96K
Пусть, дано предложение “Съешьте еще этих мягких французских булок, да выпейте чаю.”, в котором нам нужно определить часть речи для каждого слова:

[('съешьте', 'глаг.'), ('еще', 'нареч.'), ('этих', 'местоим. прил.'), ('мягких', 'прил.'), ('французских', 'прил.'), ('булок', 'сущ.'), ('да', 'союз'), ('выпейте', 'глаг.'), ('чаю', 'сущ.')]

Зачем это нужно? Например, для автоматического определения тегов для блог-поста (для отбора существительных). Морфологическая разметка является одним из первых этапов компьютерного анализа текста.
Узнать, как это реализовать на Python 3

10 способов улучшить свои навыки программирования

Reading time4 min
Views88K

1. Выучить новый язык программирования


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

Среди языков программирования отличный познавательный эффект и наверстывание опыта дают: Lisp (или Scheme), Форт, PostScript или Factor (стековые языки программирования), Haskell (строго типизированный, чистый функциональный язык) либо OCaml (объектно-ориентированный язык функционального программирования), Пролог (логическое программирование), Erlang (отличные паралельные вычисления).

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

Руководство к дескрипторам

Reading time10 min
Views171K

Краткий обзор


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

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

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

Про вред молчания

Reading time3 min
Views20K
Товарищи, хочу поднять тему, которая уже очень долгое время меня волнует. Может быть, кому-то она покажется слишком резкой, а кому-то слишком нескромной, но тем не менее.

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

Люди сидят, молчат и, молча, обижаются. А потом, когда предел ожидания достигнут, они вместо того, чтобы придти ко мне и рассказать о проблеме, также молча идут в соседнюю фирму на собеседование.

Дальше текст немного в «чёрном» стиле Славы Панкратов (case), но это нынче модно. Я надеюсь, вас не смутит обращение на «ты», поскольку оно лучше передаёт эмоциональную составляющую и смысл статьи.
Читать дальше →

Пайпы, the pythonic way

Reading time3 min
Views18K
Одни питонисты любят код читаемый, другие предпочитают лаконичный. К сожалению, баланс между первым и вторым — решения по-настоящему изящные — редко случается встретить на практике. Чаще стречаются строки вроде
my_function(sum(filter(lambda x: x % 3 == 1, [x for x in range(100)])))
Или четверостишья а ля
xs = [x for x in range(100)]
xs_filtered = filter(lambda x: x % 3 == 1, xs)
xs_sum = sum(xs_filtered)
result = my_function(xs_sum)
Идеалистам же хотелось бы писать как-то так
result = [x for x in range(100)] \
    | where(lambda x: x % 3 == 1)) \
    | sum \
    | my_function

Не в Питоне?
Зря так думаете...

IPython advanced usage

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

Terminal 2014 python 2014 125ճ0image

Статья построенна на выдержках из обширной, понятной и красивой документации ipython.github.com/ipython-doc/dev/interactive/index.html
Пропустим такие явные вещи, как автодополнение и история команд, сохраняемая мыжду вызовами.
Читать дальше →

Каким образом вы узнали то, что вы знаете?

Reading time5 min
Views2.5K
Я получил это электронное письмо сегодня от Марка…

Привет Джо,
Во-первых я хотел бы поблагодарить вас за всю информацию, которую вы опубликовали на asp.net. Я почерпнул оттуда очень многое. Так же я слежу за вашими твиттами и меня заинтересовало, с чего вы начинали, как накапливали опыт для того, что бы стать Senior Program Manager в Microsoft. Если у вас будет возможность ответьте мне, я бы был очень благодарен.
Заранее спасибо,
Марк


Я получаю сообщения, подобные этому, один раз в несколько недель и вот наконец-то, я решил ответить всем, кому это интересно.

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

Information

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