Pull to refresh
39
0

User

Send message

Электрический бес и углекислый газ

Reading time5 min
Views125K
На днях из Америки приехало два любопытных устройства: микрокомпьютер electric imp и оптический датчик уровня углекислого газа в воздухе K30. Каждый из них любопытен по-своему, расскажу немного о каждом из них и о их соединении.



Electric imp



Импы — это вид бесенят в немецком фольклоре. А также сокращение от Interface Message Processor, одного из проектов-предшественников Интернета. Создатели системы признают обоих предшественников. В жизни эта штука оказалась довольно покладистой, хорошо документированной платформой для разработки embedded приложений.

Статью-обзор интернет анонсов можно почитать в статье на хабре, я постараюсь рассказать о конкретике и тонкостях, которые выяснились в процессе работы.
Как всё устроено

Electric Imp — Делаем WiFi термометр

Reading time5 min
Views72K
Многие из вас знакомы с анонсом Electric Imp, который не так давно был на хабре, кроме того уже начинают появляться первые впечатления от его использования. Поскольку это устройство мне показалось перспективным и довольно интересным, я при первом появлении в продаже версии developer edition заказал себе чтобы немного поиграться и оценить возможности.
Читать дальше →

Частотный анализатор английских слов, написаный на python 3, умеющий нормализовывать слова с помощью WordNet и переводить с помощью StarDict

Reading time21 min
Views34K
Привет всем!
Я учу английский и всячески упрощаю этот процесс. Как-то мне потребовалось получить список слов вместе с переводом и транскрипцией для определенного текста. Задача не была сложной, и я принялась за дело. Чуть позднее был написан скрипт на python, все это умеющий, и даже умеющий чуть больше, поскольку мне захотелось получить еще и частотный словарь из всех файлов с английским текстом внутри. Так вышел маленький набор скриптов, о котором я и хотела бы рассказать.
Работа скрипта заключается в распарсивании файлов, выделении английских слов, нормализации их, подсчете и выдачи первыx countWord слов из всего получившегося списка английских слов.
В итоговом файле слово записывается в виде:
[число повторений] [само слово] [перевод слова]

О чем будет дальше:
  1. Мы начнем с получения списка английских слов из файла (используя регулярные выражения);
  2. Дальше начнем нормализовывать слова, то есть приводить их с естественной формы в тот вид, в котором они хранятся в словарях (тут мы немного изучим формат WordNet);
  3. Затем мы подсчитаем количество вхождений у всех нормализованных слов (это быстро и просто);
  4. Дальше мы углубимся в формат StarDict, потому что именно с помощью него получим переводы и транскрипцию.
  5. Ну и в самом конце мы куда-нибудь запишем результат (я выбрала файл формата Excel).

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

Параллельное программирование с помощью вычислительного графа

Reading time10 min
Views29K
Есть приложения, которые хорошо реализуются как системы передачи сообщений. Сообщениями в широком смысле может быть что угодно – блоки данных, управляющие «сигналы» и т.д. Логика же состоит из узлов, обрабатывающих сообщения, и связей между ними. Такая структура естественно представляется графом, по рёбрам которого «текут» сообщения, обрабатываемые в узлах. Наиболее устоявшееся название такой модели – вычислительный граф.

С помощью вычислительного графа можно установить зависимости между задачами и в какой-то мере программно реализовать «dataflow архитектуру».

В этом посте я опишу, как реализовать такую модель на С++, используя библиотеку Intel Threading Building Blocks (Intel TBB), а именно класс tbb::flow::graph.


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

Удобный отладчик для Python/Django проектов

Reading time2 min
Views20K

Pudb — полноэкранный консольный дебагер с графическим интерфейсом. Большим плюсом является то, что в нем есть подсветка синтаксиса, дополнительные панели вывода информации, горячии клавиши и интерграция с IPython.

pdb, в сравнении с Pubd, показался жутно не удобным и ограниченым. Поиск ошибок стал занимать на много меньше времени и приносить больше удовольствия. При первом взгляде на него вспоминался Assembler и Turbo Pascal в студенческие годы в техникуме.

Если кто заинтересовался примеры установки и использования под катом.
Читать дальше →

Lo-Dash

Reading time2 min
Views33K
Прим. переводчика: underscore.js — одна из самых известных и любимых javascript-библиотек. Но мало кто знает, что есть её более удачный клон. В одном из своих проектов мы без каких-либо проблем перешли на него и теперь решили познакомить с ним других читателей Хабрахабра.

Lo-Dash — это полноценная замена* для Underscore.js. Lo-dash имеет более высокую производительность, избавлен от некоторых багов underscore и даёт некоторые новые возможности.


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

Inline редактирование в Django

Reading time4 min
Views18K
Недавно встала задача дать пользователям удобный инструмент редактирования данных. Хотелось, чтобы пользователи сразу видели результат и не прыгали между несколькими страницами для редактирования и просмотра. Немного погуглив, нашли отличное приложение django-inplaceedit, которое позволяет реализовать наглядное редактирование данных.
Читать дальше →

Так как же удалить миллионы файлов из одной папки?

Reading time5 min
Views150K

Феерическая расстановка точек над i в вопросе удаления файлов из переполненной директории.

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

Для тех, кто не в курсе проблемы, краткое описание: если вы случайно создали в одной директории огромное количество файлов без иерархии — т.е. от 5 млн файлов, лежащих в одной единственной плоской директории, то быстро удалить их не получится. Кроме того, не все утилиты в linux могут это сделать в принципе — либо будут сильно нагружать процессор/HDD, либо займут очень много памяти.

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

Модульный подход к разработке web-приложений с использованием JavaScript: AMD и RequireJS

Reading time3 min
Views161K
RequireJSПри разработке приложений с модульной структурой на JavaScript возникает две проблемы:
  • описание и удовлетворение зависимостей различных частей приложения, необходимость организации подключения зависимостей на серверной стороне;
  • экспорт переменных в глобальную область видимости и их коллизия.

Обе эти задачи решаются при использовании подхода Asynchronous Module Definition. Он сводится к описанию модулей функцией define и подключению их с помощью require. На данный момент есть несколько инструментов, реализующих AMD. Я начал своё знакомство с ними с RequireJS и был удивлён, насколько удобно и просто можно описывать зависимости модулей. Расскажу, как это работает, на простом примере.
Читать дальше →

Восстановление расфокусированных и смазанных изображений. Повышаем качество

Reading time5 min
Views211K
Представляю вашему вниманию заключительную статью из трилогии «Восстановление расфокусированных и смазанных изображений». Первые две вызвали заметный интерес — область, действительно, интересная. В этой части я рассмотрю семейство методов, которые дают лучшее качество, по сравнении со стандартным Винеровским фильтром — это методы, основанные на Total Variaton prior.
Также по традиции я выложил новую версию SmartDeblur (вместе с исходниками в open-source) в которой реализовал этот метод. Итоговое качество получилось на уровне коммерческих аналогов типа Topaz InFocus. Вот пример обработки реального изображения с очень большим размытием:


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

Raspberry Pi + Motorola LapDock + Hacks

Reading time2 min
Views75K

Доброе время суток, уважаемые хабра-жители!
Недавно, я подымал вопрос о смысле обзора связки Motoroa Atrix 4G + LapDock (потому я извиняюсь перед теми кто не дождался обзора, и готов ответить на вопросы), но увы не дописал так как пришла моя Raspberry и докстанция пошла в расход. В данной статье я расскажу как превратить нашу Raspberry в полноценный ноутбук с минимальными затратами, а также пару замечаний и хаков с платой.
Внимание! Трафик!
Читать дальше →

Какая команда в консоли отнимает у вас больше всего времени?

Reading time4 min
Views24K
У меня — 'cd'.

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

Но должны же быть решения!



В моей любимой оболочке zsh есть такая возможность — «разворачивание» путей по нажатию : например, "/u/in/sy" -> "/usr/include/sys/"

В остальных оболочках можно приноровиться и использовать $CDPATH или pushd/popd, но лично мне это до сих пор кажется неудобным.

А еще есть пара утилиток для ускоренной навигации. Самая известная из них, пожалуй, autojump. Она следит в каких папках пользователь проводит больше всего времени и позволяет указывать только фрагмент пути к папке. Например "incl" приведет вас в "/usr/include", если вы там часто бываете.

Autojump вдохновила другого разработчика на создание утилиты "z". "Z" использует в качестве критерия для перехода т.н. "frecency" - комбинацию частоты посещений папки (frequency) и времени последнего перехода туда (recency).

Обе утилиты хороши по-своему, и я так бы и пользовался autojump или z, однако что-то мне не давало покоя. А недавно я услышал одну фразу:

If the product is used as a tool, its interface should be as unintelligent as
possible. Stupid is predictable; predictable is learnable; learnable is usable.


И тут я понял что самое время придумать свой велосипед. Не-intelligent. Тупой и удобный.
Читать дальше →

Коллаборативная фильтрация

Reading time6 min
Views73K
В современном мире часто приходится сталкиваться с проблемой рекомендации товаров или услуг пользователям какой-либо информационной системы. В старые времена для формирования рекомендаций обходились сводкой наиболее популярных продуктов: это можно наблюдать и сейчас, открыв тот же Google Play. Но со временем такие рекомендации стали вытесняться таргетированными (целевыми) предложениями: пользователям рекомендуются не просто популярные продукты, а те продукты, которые наверняка понравятся именно им. Не так давно компания Netflix проводила конкурс с призовым фондом в 1 миллион долларов, задачей которого стояло улучшение алгоритма рекомендации фильмов (подробнее). Как же работают подобные алгоритмы?

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


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

Рекомендательные системы: теорема Байеса и наивный байесовский классификатор

Reading time4 min
Views62K
В этой части мы не будем говорить о рекомендательных системах как таковых. Вместо этого мы отдельно сконцентрируемся на главном инструменте машинного обучения — теореме Байеса — и рассмотрим один простой пример её применения — наивный байесовский классификатор. Disclaimer: знакомому с предметом читателю я вряд ли тут сообщу что-то новое, поговорим в основном о базовой философии машинного обучения.

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

Обучаем компьютер чувствам (sentiment analysis по-русски)

Reading time12 min
Views85K


Sentiment analysis (по-русски, анализ тональности) — это область компьютерной лингвистики, которая занимается изучением мнений и эмоций в текстовых документах. Недавно на хабре появилась статья про использование машинного обучения для анализа тональности, однако, она была настолько плохо составлена, что я решил написать свою версию. Итак, в этой статье я постараюсь доступно объяснить, что такое анализ тональности, и как реализовать подобную систему для русского языка.
Читать дальше →

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

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

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

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

Маленькие секреты больших графов

Reading time2 min
Views9.2K

Если вам интересно, какие знания можно извлечь из большого массива данных, насколько большими бывают графы и какие задачи по анализу социальных графов предлагают Facebook, Twitter и др., то эта статья именно для вас.
Читать дальше →

Восстановление расфокусированных и смазанных изображений. Практика

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

В дополнение к этому я написал демонстрационную программу, в которой реализованы основные алгоритмы по устранению расфокусировки и смаза. Программа выложена на GitHub вместе с исходниками и дистрибутивами.

Ниже показан результат обработки реального размытого изображения (не с синтетическим размытием). Исходное изображение было получено камерой Canon 500D с объективом EF 85mm/1.8. Фокусировка была выставлена вручную, чтобы получить размытие. Как видно, текст совершенно не читается, лишь угадывается диалоговое окно Windows 7.



И вот результат обработки:



Практически весь текст читается достаточно хорошо, хотя и появились некоторые характерные искажения.

Под катом подробное описание проблем деконволюции, способов их решения, а также множество примеров и сравнений. Осторожно, много картинок!
Читать дальше →

Прогнозирование событий и Data Mining — вперед в будущее

Reading time3 min
Views24K


В Сети появился интересный сервис мониторинга информации по открытым источникам — Recorded Future.

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

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

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

Наиболее интересные кейсы, демонстрирующие возможности системы, отражены на следующих прикладных примерах:

отслеживание возникающих киберугроз и действий хакеров в мире
анализ содержимого писем из круга приближенных Усамы Бин-Ладена
анализ протестной активности
анализ выборов в Греции и Египте
Читать дальше →

OpenROV — подводный робот (open source)

Reading time1 min
Views17K
Всего один день понадобился разработчикам подводного робота OpenROV, чтобы собрать через Kickstarter необходимые им $20 тыс. для начала производства конструктора.



В этом нет ничего удивительного: проект действительно уникальный. Только представьте: любой желающий может купить набор комплектующих и собрать собственную подводную лодку. Как вариант, детали можно выточить самому, схема сборки и чертежи опубликованы в свободном доступе: детали, софт на github.
Читать дальше →

Information

Rating
Does not participate
Location
London, England - London, Великобритания
Date of birth
Registered
Activity