Search
Write a publication
Pull to refresh
3
0
Дмитрий Куликов @DmitryKulikov

User

Send message

Легко настраиваемый python daemon

Reading time2 min
Views60K
В какой-то момент мне потребовалось демонизировать некоторое действие на python. В сети валялась куча примеров подобной деятельности разной степени собранности. Так как в дальнейшем предполагалось использовать код демонизации в дальнейшей деятельности я решил разнести на разные части настройки и собственно демона.
В итоге файлов получилось три:
  • Родительские классы — с небольшим изменением классы взятые из интернет статей
  • Классы настройки — реакция на сигналы, реакция на команды и набор статических настроек для запуска
  • Скрипт запуска — собирает первые два в собственно демона


Дальше я попробую описать логику работы всех трех.
Читать дальше →

Открытые репозитории кода по открытым данным и открытому государству

Reading time3 min
Views10K
Для всех кто работает с открытыми данными, делает свои проекты для себя, людей, для участия в конкурсах всегда бывает бывает полезен исходный код примеров того как данные собирались и что с ними делалось.

Я предлагаю составить список открытых репозиториев кода нацеленного именно на решение задач по работе с открытыми данными и примеры проектов которые на них основаны.

Вот список репозиториев зарубежных инициатив которые мне известны:
огромное количество проектов Open Knowledge Foundation — CKAN, расширения к нему, утилиты по преобразованию данных
репозитории исходного кода Sunlight Labs — очень много примеров того как распарсены многие американские сайты и базы данных, а также библиотеки по работе с данными разного вида
репозитории OpenGovernment.org — много примеров проектов на Ruby
репозитории департамента ИТ Оксфорда — их проекты по открытым данным такие как DataVerse;
открытый код Белого Дома (США) — проекты по петициям, стандартам API и всяким штукам для Drupal
репозиторий AlphaGov (UK) — материалы проекта www.gov.uk много кода самого проекта и подпроектов

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

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

Асинхронные API и объект Deferred в деталях

Reading time11 min
Views22K
Большинство современных языков программирования позволяют использовать асинхронно выполняемые блоки кода. Вместе с гибкостью, получаемой при использовании асинхронного подхода, рискнувший его применить также получает более сложный для понимания и поддержки код. Однако, любое усложнение, с которым сталкиваются программисты, как правило, находит практическое решение в виде нового подхода или повышения уровня абстракции. В случае асинхронного программирования таким средством служит объект типа отложенный результат или deferred (англ. deferred — отложенный, отсроченный).

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

Pthread_cond_timedwait: проблема, решение, дискуссия

Reading time4 min
Views16K
Здравствуйте, уважаемые Хабраюзеры!

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

Рассмотрим простой пример использования сигнальной переменной:

struct timeval now;
struct timespec timeout;
gettimeofday(&now, 0);
timeout.tv_sec = now.tv_sec + 2;      // 2 sec
timeout.tv_nsec = now.tv_usec * 1000; // nsec

retval=0;
pthread_mutex_lock(&mutex);
while(!somethingHappens() && retval==0)
{
    retval=pthread_cond_timedwait(&condition, &mutex, &timeout);
}
pthread_mutex_unlock(&mutex);


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

Ресурсы, о которых должен знать каждый Android-разработчик

Reading time6 min
Views189K
Сегодня я хочу поделиться с вами моим вольным переводом статьи, написанной Сергеем Повзнером (Sergey Povzner). Сергей ведёт блог bongizmo.com и занимается разработкой туристических гидов под общим названием Citybot.

В то время как Android продолжает свой невероятный рост, всё больше и больше программистов начинают разрабатывать приложения на этой платформе. Если ты начинаешь свой путь сегодня, то ты определенно — счастливчик. За последние годы Android значительно повзрослел и избавился от множества детских болезней. Информации по платформе более чем достаточно. Я же расскажу о самых важных ресурсах.

Статья будет полезна как новичкам, так и опытным разработчикам. Это гид по миру Android-разработки.
Читать дальше →

Коаны Гита

Reading time3 min
Views38K
По мотивам «Коанов Вима».

Тишина
Что-то одно, но хорошо
Только богам
Хобгоблин
Длинное и короткое

Тишина


Python-программистка передала свой файл ~/.gitconfig мастеру Гиту. Среди строчек кода было следующее:

[alias]
; Явное лучше подразумеваемового. Если мы хотим выполнить слияние,
; нам следует сделать это самим.
pull = pull --ff-only

Мастер Гит кивнул. «git pull origin master», — сказала программистка.
Читать дальше →

Архитектура высоконагруженной системы Диадок

Reading time3 min
Views22K
Те, кто интересуется highload-системами, читали про архитектуры Twitter, Facebook и прочие другие. Но никогда еще не было публикаций о системах такого класса, как Диадок. В отличие от Twitter, эта система не является бесплатной и доступной всем и содержит довольно большой слой бизнес-логики, предназначенной для решения задач из конкретной предметной области.

Пару слов вкратце о системе: для чего она предназначена. Чтобы было сразу понятно, что это такое, представьте web-интерфейс для почты, но это не совсем почта, точнее, совсем не почта. Данная система предназначена для обмена документами. Основные документы – это счета-фактуры и накладные. При этом электронные документы являются юридически значимыми, имеют такую же силу, как и бумажные документы с печатями и подписями.

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

SCRUM board + Квадрант Эйзенхауэра для управления продуктом

Reading time2 min
Views49K
Думаю, что большинство тех, кто внедрял у себя в командах тот или иной инструмент (особенно, если он родом из страны с другой ментальностью) согласиться, что внедрение не всегда проходит гладко. Однажды один академик мне сказал: «Ну а как ты хотел? Внедрение — это по определению вторжение чужеродного объекта в тело. Должно быть оСВОЕние. Делание своим!». С тех пор, для меня осознание того, что инструмент работает не совсем так, как задумывалось — является лучшим признаком освоения. Команда или сотрудник модернизировали по своему и начали использовать. И еще лучше, когда команда берет два разных инструмента и сама комбинирует их. Так произошло и в этот раз.

Из названия топика и картинки суть идеи будет сразу понятной. Ну а за подробностями, и связью с управлением продуктом, прошу под кат…


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

Конкурс приложений на открытых данных полиции

Reading time1 min
Views8.2K
Друзья!

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

Однако, кроме нашего большого проекта конкурса, мы занимаемся и другими интересными и большими проектами одним из которых является проект «Открытая Полиция» (http://www.openpolice.ru)

И, в рамках этого проекта, мы проводим еще один конкурс — тем кому не терпится сразу идите по ссылке — www.openpolice.ru/contest . Небольшой по времени — всего 2 месяца, отличный по содержанию — у нас очень много открытых данных собрано тут — data.openpolice.ru и доступно через API — api.openpolice.ru

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

Основы безопасности операционной системы Android. Уровень ядра

Reading time6 min
Views101K

Вступление


Самой распространенной операционной системой для смартфонов на сегодняшний день является Android. Но не только этот факт подогревает интерес к ней. Открытость, возможность что-то настроить, подкрутить, и, естественно, сломать тоже в немалой степени способствуют увеличению популярности этой платформы. Я попробую поделиться опытом, как устроена эта операционная система, а так же рассмотреть систему безопасности. Всем, кому интересно, добро пожаловать! В этой статье я рассмотрю безопасность на уровне ядра.
Читать дальше →

Видеозаписи докладов с WebCamp 2012 и анонс WebCamp 2013

Reading time3 min
Views5K
Дорогие хабрачитатели, я хочу представить вам видеозаписи всех докладов с 3-й профессиональной конференции веб-разработчиков WebCamp 2012, которая проходила в прошлом году в Одессе, а также пригласить вас на 4-ю конференцию WebCamp 2013, которая состоится с 12 по 13 июня.

В прошлом году мы расширили конференцию до 4 секций: веб-технологии и управление проектами; юзабилити и дизайн; интернет-маркетинг; стартапы. Провели несколько мастер-классов, Startup Crash Test и организовали аллею стартапов.

В этом году мы планируем пойти ещё дальше. Мы переместили конференцию на более тёплое время и увеличить время её проведения до 2-х дней. Первый день – доклады в потоках, второй день – мастер-классы. 4 основные секции мы расширим специализированными подсекциями, которые смогут подготовить и провести различные коммьюнити. Для того, чтобы подсекция была добавлена в программу, она должна иметь минимум 5 докладов. Наша команда побывала на киевском Startup Weekend и мы решили «привезти» его в Одессу. Поэтому приглашаем всех желающих после разогрева на WebCamp закрепить полученные знания путём создания собственного стартапа за 54 часа на Odessa Startup Weekend, который пройдет с 14 по 16 июня.

Регистрация на конференцию уже открыта. Стоимость участия в конференции составляет: при отплате до 1 мая – 400 грн (~50$); до 11 июня – 500 грн(~63$); в день конференции – 600 грн(~75$). Студентам при предъявлении студенческого билета предоставляется скидка 50%. Для читателей Хабры мы даем 10% скидку, для её получения при регистрации необходимо указать промо-код Habrahabr. Информация о том, как можно выиграть бесплатный билет здесь.

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

Информацию о том, как проекту принять участие в аллее стартапов или в Startup Crash Test, можно найти здесь. Участие для стартапов бесплатное.

Под катом можно ознакомиться с видеозаписями докладов конференции WebCamp 2012.
Читать дальше →

Создаем свой RSS канал с помощью Google Apps Script

Reading time4 min
Views13K
Есть такой замечательный wiki ресурс по языку Tcl/Tk как wiki.tcl.tk. Есть у этого ресурса RSS лента последних изменений. Но вот беда — лента изменений самая минимальная. Там указано только кем, когда и какая страница редактировалась. Нет полных изменений и нет GUID у элементов ленты, поэтому некоторые RSS клиенты (например, Google Reader) не показывают большую часть новостей, считая их одинаковыми.
Как сделать свою RSS ленту

Geeknote — консольный клиент для Evernote

Reading time4 min
Views7.1K
Приветствую, коллеги!

Хочу рассказать вам о нашем проекте — Geeknote. Это консольный клиент для Evernote. Проект Open Source и исходные коды доступны на Github. Geeknote позволяет работать с Evernote из командной строки. Реализованы все основные функции Evernote — создание/удаление заметок, создание блокнотов и тегов, поиск, а так же редактирование через обычный текстовый редактор заметок в формате markdown. То есть можно использовать Evernote в bash скриптах, cron, любых приложениях, где нельзя использовать Evernote SDK. Расскажу подробнее про проект.
Читать дальше →

GPS Updater — ускоряем скорость фикса GPS под Android без мобильного Интернета

Reading time2 min
Views21K
Как известно, «голый» GPS во время холодного старта без внешней помощи получает координаты за 3-12 минут. Так получается из-за того, что набор данных с координатами спутников передается каждым спутником 12.5 минут. Принимая одновременно данные с нескольких спутников это время можно уменьшить, но оно все равно достаточно большое.

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

Обычно проблемы со скоростью захвата GPS координат пытаются решать редактированием файла gps.conf (что требует рутованого телефона) — там например могут быть указаны нерабочие NTP сервера. Но что если мобильного интернета нет вообще?
Решение есть!

API для Российской общественной инициативы. Шаг 2.2: опыт США в работе с данными электронных петиций — API Белого Дома

Reading time4 min
Views4.3K
Ранее я писал в паре постов о том как устроена открытость электронных петиций в разных странах, какие данные есть в России и как можно сделать APO для небезызвестной Российской общественной инициативы — www.roi.ru.

Прочитать всё это можно здесь:


В этот раз мы рассмотрим то как устроены электронные петиции Белого Дома, в первую очередь, с точки зрения их открытости и пригодности к данных для использования.



Справка


Особенности петиций в США

  1. Относятся именно к президенту и ответы дает его администрация.
  2. Не требуют ничего кроме email'а для подписи — дополнительная авторизация ненужна.
  3. Петиции должны пройти 2 порога — 150 подписей за 30 дней чтобы их можно было найти (по прямой ссылке они доступны) и 100 000 подписей за 30 дней чтобы получить официальный ответ — petitions.whitehouse.gov/how-why/terms-participation

В цифрах

  • всего 2246 петиций
  • даны ответы на 208 петиций
  • в ожидании ответа 26 петиций
  • закрыто 1972 петиций
  • открыто для голосования 40 петиций

Цифры учитывают только те петиции что прошли 1-й порог в 150 подписей за 30 дней.

WhiteHouse.gov/developers



Одно из важных отличий сайта Белого Дома США от сайтов всех лидеров в мире — это ориентированность на разработчиков. На сайте даже есть специальный раздел /Developers где размещены данные, раскрыт исходный код проектов и описаны API многих из инициатив если не всех вообще.

Открытый код


Поскольку нас интересуют в первую очередь петиции, то рассмотрим их подробнее.

Во первых исходный код петиций полностью опубликован на Github — https://github.com/WhiteHouse/petitions

У репозитория больше 15 контрибьюторов, несколько десятков багов и вопросов и мы можем говорить о том что разработка проекта идет открытым образом.

Открытое API

Другая сторона происходящего в том для разработчиков доступен не только исходный код, но и API и данные накопленные на сервисе.
Все API по петициям доступны по ссылке — https://petitions.whitehouse.gov/developers

API доступа к данным состоит из 3-х эндпоинтов:
Читать дальше →

Понимаем декораторы в Python'e, шаг за шагом. Шаг 2

Reading time12 min
Views236K

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


Итак, в первой части данной статьи мы совершили базовое знакомство с декораторами, принципами их работы и даже написали свой вручную.
Однако, все декораторы, которые мы до этого рассматривали не имели одного очень важного функционала — передачи аргументов декорируемой функции.
Что ж, исправим это недоразумение!
Читать дальше →

Попытка сделать дайджест новостей из мира Python

Reading time3 min
Views18K
Постоянно читаю на хабре Дайджест новостей о php и ловлю себя на мысли, что очень бы хотел читать что-то похожее о python на постоянной основе. Понятное дело, что в одиночку это дело неподъемное, но хочу попытаться — а может читатели и пожелают помочь. Для удобного создания дайджестов я написал небольшое приложение на Dajngo и выложил его код на github — есть он и в web, но за ссылкой лучше в личку стукнуться. Там есть еще два прошлых выпуска и лента по мере добавления новостей, ну и права дам на админку, если нужно.

Новости в основном с PythonWeekly и на английском так как активность рускоязычного сообщества примерно с 2011 года по субъективным ощущениям небольшая. Хотя, вполне возможно я просто плохо ищу источники и вы подкажете мне где можно находить хорошие материалы о python на русском. Также для подбора материалов я использую информацию о трендах github, pypi и pep8.ru — отличный но почему-то приостановивший свое развитие ресурс.

Под катом собственно дайджест. Очень жду комментариев о том как улучшить оформление, состав, тематику, группировку новостей. Даешь python в массы.
Читать дальше →

Как Яндекс использует лингвистику в поиске

Reading time1 min
Views18K
Яндексу ежедневно приходится отвечать на десятки миллионов запросов. Поисковая система должна уметь быстро и точно их обрабатывать. Без применения лингвистики поисковая система сможет найти только точные совпадения в проиндексированных документах. Чтобы найти релевантные документы, системе необходимо правильно определить язык запроса, исправить опечатки, произвести морфологический разбор каждого слова, расширить запрос синонимами или вообще его переформулировать. В этой лекции Алексей Зобнин постарался дать студентам Малого ШАДа ответы на следующие вопросы:

  • Зачем нужно учитывать морфологию?
  • Как и зачем мы определяем язык запроса и документа?
  • Что такое корпус языка?
  • Что такое языковые модели, и как они применяются в поиске?
  • Как производится морфологический анализ несловарных слов?
  • Как определить правильное значение и морфологическую парадигму омонимов?
  • Какие бывают опечатки, и как мы их исправляем?
  • Что такое расширения запроса и чем они могут быть полезны?



Страница лекции

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

Боевой сервер для Django-приложения: Ubuntu Server 10.04 LTS + django 1.4 + nginx + gunicorn

Reading time11 min
Views122K
Многие учебные пособия по разработке на Django раскрывают как быстро получить работающий отладочный сервер (python manage.py runserver), а вопрос развертывания в боевом режиме часто остается нераскрытым или освещаются далеко не самые простые и эффективные методы.
Ниже я расскажу о об одном из способов развернуть сайт на Django в боевом режиме, начиная от выбора хостинга, заканчивая развертыванием веб-сервера. Таким образом статья может быть полезна тем, кто освоил разработку на базе Django, но не имеет опыта развертывания серверов. Мой способ один из многих, но он достаточно прост, эффективен в работе и легок в поддержке. Используем VPS-хостинг, Ubuntu 10.04, nginx, gunicorn.

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

Две задачки для собеседования разработчиков

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

Information

Rating
Does not participate
Location
Саров (Нижегородская обл.), Нижегородская обл., Россия
Date of birth
Registered
Activity