Pull to refresh
0
0
ERge @erge

User

Send message

Кузявые ли бутявки, т.е. пишем морфологический анализатор на Python

Reading time8 min
Views54K
Морфологический анализатор для русского языка — это что-то заумное? Программа, которая приводит слово к начальной форме, определяет падеж, находит словоформы — непонятно, как и подступиться? А на самом деле все не так и сложно. В статье — как я писал аналог mystem, lemmatizer и phpmorphy на Python, и что из этого получилось.
Читать дальше →
Total votes 115: ↑109 and ↓6+103
Comments44

Как я создал SaaS-сервис, который приносит мне 1000 долларов в месяц

Reading time6 min
Views63K
Примечание: здесь рассказано о создании с нуля небольшого, прибыльного SaaS-сервиса и о доведении его до состояния, когда он стал приносить 1 000 долларов в месяц. Это не имеет никакого отношения к многомиллиардным стартапам единорогов; я просто описываю мой опыт такой работы. Речь идёт о простом, надёжном и прибыльном инструменте, который может сделать для себя любой человек. И последнее — этот веб-сервис был сделан для внутреннего рынка России, поэтому я перевёл всё на английский и в доллары для удобства. Но, с другой стороны, этот опыт является довольно универсальным и может быть применён везде (ссылка на сервис).

Всё началось с моего другого SaaS-сервиса с названием Postio, который я сделал, чтобы облегчить людям поиск и публикацию контента на их страницах и в их группах в социальных сетях. В рамках своей маркетинговой стратегии я приобрёл и опубликовал на своём блоге десяток статей по различным темам, ориентированных на аудиторию веб-сервиса, чтобы получить дополнительный трафик с поисковых систем.

Потом вдруг Postio начал получать относительно большой трафик от Google и Яндекс (русская поисковая система) с ключевыми словами, которые не имели ничего общего с самим Postio.

image

Аналитическая статистика Гугл по суточному трафику

Здесь-то и начинается фактическая история.
Читать дальше →
Total votes 83: ↑73 and ↓10+63
Comments37

Управление компьютером с помощью SMS сообщений

Reading time3 min
Views10K
Хочу предложить вашему вниманию программу, которую я написал ради эксперимента. Программа представляет из себя системную службу, которая работает с GSM модемом, умеет принимать и отправлять SMS сообщения. В зависимости от текста пришедшего сообщения вызывает указанные скрипты и отправляет ответ.
Может пригодится, например, для управления сервером, доступ к которому ограничен (находится во внутренней сети компании). Не судите строго, т.к. это скорее прототип, первая версия.

Читать дальше →
Total votes 43: ↑42 and ↓1+41
Comments41

Яндекс.Карты, 2ГИС или всё же Google Maps?

Reading time11 min
Views160K
#ifndef MY_HABRA_ENTRY
#define MY_HABRA_ENTRY

Мир тебе, дорогой хабраюзер!

Минутка откровений. Не кривя душой, открою завесу тайны, что я протёр своё кожаное кресло, ёрзая на нём, и думая, а стоит ли вообще писать это всё. Сомнения одолевали меня до последнего, но кто-то сидящий на правом плече всё же победил кого-то на левом. И вуаля, много букв перед вами. Сразу хочу признаться ещё кое в чём: главная цель написания данной статьи — в первую очередь удовлетворение своих личностных потребностей, амбиций, а, может, и пункта самореализации, которого до сих пор не хватало для завершения процесса достижения вершины эволюционной лестницы…

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

Минутка лирики2 предыстории. Ничего не предвещало беды. Я, ковыряясь в носу одной рукой, и, юзая колёсико мышкой другой, неожиданно для себя и всего мироздания вдруг натыкаюсь на невероятно сладенькую вакансию Product Manager. Вытерев слюни (той рукой, что ковырялся) и трезво оценив, что мы созданы друг для друга, я естественно щёлк-щёлк посылаю на неё осмысленный отклик. Получил тестовое задание, выполнил, отправил. На этом история заканчивается.

В общем, если коротко, статья про сравнение геоинфосервисов, лидеров российского рынка.



Далее...
Total votes 43: ↑29 and ↓14+15
Comments55

ARM-ы для самых маленьких

Reading time8 min
Views205K


Пару дней назад я опубликовал и потом внезапно убрал в черновики статью о плане написать про создание своей ОС для архитектуры ARM. Я сделал это, потому что получил много интересных отзывов как на Хабре, так и в G+.

Сегодня я попробую подойти к вопросу с другой стороны, я буду рассказывать о том, как программировать микроконтроллеры ARM на нарастающих по сложности примерах, пока мы не напишем свою ОС или пока мне не надоест. А может, мы перепрыгнем на ковыряние в Contiki, TinyOS, ChibiOS или FreeRTOS, кто знает, их там столько много разных и интересных (а у TinyOS еще и свой язык программирования!).

Итак, почему ARM? Возиться с 8-битными микроконтроллерами хотя и интересно, но скоро надоедает. Кроме того, средства разработки под ARM обкатаны долгим опытом и намного приятнее в работе. При этом, начать мигать светодиодами на каком-то «evaluation board» так же просто, как и на Arduino.

Читать дальше →
Total votes 129: ↑124 and ↓5+119
Comments66

Начинаем изучать Cortex-M на примере STM32

Reading time15 min
Views371K
Данная статья является первой в планируемом цикле статей по изучению программирования микроконтроллеров. Изучая различные материалы я отметил, что практически все они начинаются с того, что новичку предлагается скачать (или использовать идущую со средой разработки) библиотеку для работы с периферийными устройствами и использовать ее для написания своей первой программы (обычно мигание светодиодом).

Меня это сильно удивило. Если верить данным статьям, для программирования не обязательно даже читать документацию к программируемому контроллеру. Меня же учили премудростям «железного программирования» совершенно иначе.

В этой статье, путь от фразы «Да, я хочу попробовать!» до радостного подмигивания светодиода, будет значительно длиннее чем у других авторов. Я постараюсь раскрыть аспекты программирования микроконтроллеров, которые прячутся за использованием библиотечных функций и готовых примеров.
Если вы намерены серьезно изучать программирование микроконтроллеров данная статья для вас. Возможно, она может заинтересовать и тех, кто вдоволь наигрался с Arduino и хочет получить в свои руки все аппаратные возможности железа.
Если вас не пугает написанное выше - прошу под кат
Total votes 38: ↑31 and ↓7+24
Comments39

Краткий обзор MQ (Messages queue) для применения в проектах на РНР. Часть 1

Reading time4 min
Views93K
Параллельно к основной работе, я в «фоне» обдумываю и прикидываю реализации архитектуры для игровых проектов (напомню, что основная область моих интересов и работ — создание онлайновых браузерных игр). Последнее время я все чаще и чаще возвращаюсь к мысли, что интересно было бы реализовать основной игровой сервер на основе очередей сообщений (MQ или Messages queue). То есть, движок такой игры будет представлять собой набор компонентов, которые будут общаться между собой посредством асинхронных сообщений, а каждый компонент может быть как генератором сообщений, так и подписчиком, то есть исполнять другие сообщения.

Такой подход, насколько я понимаю, широко применяется в мире Java, там для этого есть стандарт Java Message Service (JMS) и применяются брокеры сообщений и на этом базируется архитектура Enterprise service bus (ESB), например, Apache ServiceMix. Но для нас это пока высокая сфера крупных проектов, а в специфике веба и веб-ориентированных приложений я бы хотел рассмотреть, можно ли что-то сделать подобное, но с меньшими затратами и обеспечить приложению отказоустойчивость, распределение нагрузки и асинхронную обработку. И конечно, очень желательно, чтобы это было реализовано на РНР как основном языке реализации всех компонентов сервера.
Читать дальше →
Total votes 49: ↑45 and ↓4+41
Comments32

Очередь сообщений (Message Queue)

Reading time4 min
Views133K

Очередь сообщений (Message Queue)



Этот пост рассказывает об очередях сообщений — почему вы должны знать о них, думать при планировании архитектуры и использовать их в вашем приложении.
Читать дальше →
Total votes 26: ↑18 and ↓8+10
Comments17

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

Reading time9 min
Views39K
Привет, Geektimes!

Многочисленные публикации на тему свежего воздуха и важности данной опции в наших жилищах побудили и мою скромную персону описать свой опыт оборудования квартиры системой приточной вентиляцией, кондиционированием и размышления над системой увлажнения воздуха.
Кому интересно, милости прошу
Total votes 30: ↑29 and ↓1+28
Comments72

Особенности файловых систем, с которыми мы столкнулись при разработке механизма синхронизации Облака Mail.Ru

Reading time8 min
Views21K


Одна из основных функций десктопного клиента Облака Mail.Ru — синхронизация данных. Ее целью является приведение папки на ПК и ее представления в Облаке к одинаковому состоянию. При разработке этого механизма мы встретились с некоторыми, с первого взгляда, достаточно очевидными особенностями различных файловых и операционных систем. Однако если о них не знать, можно столкнуться с довольно неприятными последствиями (не получится загрузить или удалить файл). В этой статье мы собрали особенности, знание которых позволит вам правильно работать с данными на дисках и, возможно, убережет от необходимости срочного хотфикса.
Читать дальше →
Total votes 74: ↑73 and ↓1+72
Comments78

Телепатия на стероидах в js/node.js

Reading time6 min
Views13K
imageЭтап поддержки продуктов отнимает много сил и нервов. Путь от «я нажимаю а оно не работает» до решения проблемы, даже у первоклассного телепата, может занимать много времени. Времени, в течение которого клиент/начальник будет зол и недоволен.

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

О своём решении я и расскажу под катом.
Читать дальше →
Total votes 24: ↑23 and ↓1+22
Comments27

Знакомство с Oracle Siebel CRM

Reading time4 min
Views133K
Эта статья пишется для того, чтобы дать представление о довольно специфическом программном комплексе, который используется во многих крупных предприятиях по всему миру, но при этом остается малоизвестным широкому кругу IT-специалистов, даже в сравнении с подобными ему продуктами, как, например, SAP.
Доступной литературы по ней довольно немного, или она настолька туманна и запутанна, что человеку «с улицы» может быть нелегко понять, что это вообще такое. Здесь мы попробуем прояснить этот вопрос.

Читать дальше →
Total votes 7: ↑2 and ↓5-3
Comments14

ПЛИС — мои первые шаги

Reading time11 min
Views152K
Недавно я все-таки сделал свой первый шаг к ПЛИС и призвал вас за собой. Мое фанатическое увлечение ПЛИС и идея о том, что ПЛИС является лучшей платформой для создания любых устройств приобрела религиозный характер. Моя секта ПЛИСоводов проповедует полный отказ от микроконтроллеров, а особо экстремистская ветвь проповедует отказ не только от софт процессоров, но и вообще от последовательных вычислений!

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

Эта статья для новичков. В ней я опишу типичные проблемы, вопросы, заблуждения, ошибки, которые могут появиться в самом начале обучения (потому что они появились у меня). Однако, контекст статьи ограничен тем, что разработка ведется на ПЛИС от Altera в среде Quartus на языке Verilog.

Подробности
Total votes 37: ↑36 and ↓1+35
Comments41

Сделай шаг к ПЛИС

Reading time7 min
Views263K


Ты ждал знак? Вот он!

Много лет я не решался начать программировать ПЛИС, потому что это сложно, дорого и больно (как мне казалось). Но хорошо, когда есть друзья, которые помогают сделать первый шаг. И теперь я не понимаю одного — ПОЧЕМУ Я ЖДАЛ ТАК ДОЛГО?

Сейчас я помогу сделать первый шаг и тебе!

Я готов!
Total votes 69: ↑60 and ↓9+51
Comments90

Firefox 48: многопроцессность (и как её включить)

Reading time4 min
Views110K
Несколько часов назад вышла 48-я версия браузера Mozilla Firefox. Относительно предыдущей, 47-й версии в ней есть не только то, что можно описать как «мелкие изменения, которые кроются под капотом». Впервые официально в релизной версии Firefox начинает появляться многопроцессность, которая у части пользователей включена по умолчанию.

Electrolysis


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

И снова – NooLite + FLProg

Reading time7 min
Views9.2K

Добрый день. Я — разработчик программы FLProg, и сегодня я хочу продолжить тему связки оборудования компании “Ноотехника” и программы FLProg.

Ранее (раз, два) я уже писал о появлении в программе поддержки передатчика MT1132 и силовых блоков под его управлением. Теперь с выходом версии 1.15 появилась поддержка модуля приёмника MR1132 и трех беспроводных датчиков – PT111, PT112 и PM111.

image image

Читать дальше →
Total votes 20: ↑18 and ↓2+16
Comments3

Делать ли мобильную версию? 5 распространенных проблем, которые решает адаптивная верстка. Опыт Яндекса

Reading time9 min
Views112K

C 2007 года очень быстро растёт количество используемых в мире смартфонов. В числе прочих причин резкого скачка популярности несколько лет назад покупателей привлекла способность этих устройств отображать сайты так, как они выглядели на экранах компьютеров. Но, купив смартфон и начав им пользоваться, люди отмечали, что для чтения отдельных блоков текста на относительно небольшом экране приходилось постоянно масштабировать страницу. Плюс к тому, многие элементы управления сайтов оказалось неудобно использовать. Это происходило потому, что страницы не были рассчитаны на управление с помощью прикосновений к экрану и зачастую требовали компьютерную мышь или другой манипулятор. Для решения этих проблем начали появляться отдельные версии сайтов, предназначенные исключительно для устройств с маленьким экраном. При этом пользователям оказалось не нужно знать адреса мобильных сайтов. Вместо этого сервер считывает информацию об устройстве из обращённого к нему запроса и определяет, какую версию предпочтительнее отдать посетителю.


Сайт smashingmagazine.com на различных размерах экранов


Вскоре многим стало понятно, что разработка отдельной мобильной версии — это долго и дорого в поддержке. Кроме того, это противоречит идеологии веба, который подразумевает, что размеченный документ универсален и может быть прочитан практически на любом устройстве вывода. Для решения возникшего противоречия в CSS был добавлен стандарт Media Queries. Появились новые возможности по определению особенностей устройства, в частности появилась возможность применять различное оформление страницы для произвольных размеров окна.

Читать дальше →
Total votes 103: ↑99 and ↓4+95
Comments102

Sprute.js. Ещё один изоморфный JavaScript фреймворк

Reading time3 min
Views14K
image
Картинка для привлечения внимания

Sprute.js — новый изоморфный JS фреймворк. При его проектировании и реализации упор делался в первую очередь на удобство разработки и сохранение самого фреймворка максимально простым и компактным. В первую очередь это касается изоморфности.

Зачем еще один фреймворк?


В существующих фреймворках меня не устраивает подход к реализации изоморфности — моей целью было реализовать изоморфность таким образом, чтобы это не определяло архитектуру и не приходилось строить архитектуру вокруг изоморфности, а сделать её максимально прозрачной — чтобы я мог писать серверный код так, как я это привык, и он так же работал на клиенте. Мой подход можно назвать server side first.

Прошу сильно не пинать за скудность текста — развернутое изложение своих мыслей всегда было моим слабым местом.
Читать дальше →
Total votes 36: ↑29 and ↓7+22
Comments49

От регистрации до витрины: как выложить мобильное приложение в App Store и Google Play (часть 2)

Reading time9 min
Views71K


В первой части нашего туториала мы зарегистрировались в обоих магазинах — App Store и Google Play. Но чтобы ваше приложение стало доступным для скачивания, необходимо совершить ещё немало действий. Давайте их рассмотрим.
Читать дальше →
Total votes 28: ↑23 and ↓5+18
Comments0

Опасный target="_blank"

Reading time2 min
Views200K
Большинство создают внешние ссылки через target="_blank" и не знают одного интересного нюанса — страница, на которую мы попадем таким образом, получит частичный контроль над ссылающейся на нее страницей через js свойство window.opener.

Через window.opener.location мы сможем сделать редирект на, к примеру, фишинговую страницу. Это своего рода tabnabbing, только более продвинутый. Так как жертва меньше всего ожидает подмены страницы, в открытой ранее, доверенной вкладке браузера.
Читать дальше →
Total votes 132: ↑126 and ↓6+120
Comments136
1
23 ...

Information

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