Обновить
4
0.2

Пользователь

Отправить сообщение

Экспорт Избранного на Хабре в PDF. Версия 2.0

Время на прочтение3 мин
Количество просмотров29K
Доброго времени суток, хабражители!



Думаю, многих из вас когда-либо посещала мысль «вот бы сохранить статьи с Хабра». Такая же мысль посетила и меня чуть больше года назад.

Представляю вам новую версию программы закачки статей с Хабра, Гиктаймс и Мегамозг в формате PDF.

Новый проект называется HabraParse.

Проект состоит из библиотечки, которая парсит сайты, и скрипта, использующего лишь часть возможностей этой библиотеки. Скрипт написан на python3, для его работы потребуются модули docopt, requests и weasyprint (все их легко можно установить командой pip install name).

На текущий момент в скрипте имеются следующие возможности:
  • скачать статью по её ID;
  • скачать список URL избранного для заданного пользователя;
  • скачать статьи из избранного в папку в формате PDF или HTML (пока реализация HTML не на высоте, поэтому по умолчанию используется формат PDF, но он работает значительно дольше).


Использование опций --gt/--mm позволяет сохранять статьи с GeekTimes.ru и Megamozg.ru.

Краткое описание параметров скрипта
Usage:
  ./habraparse.py save_favs_list [--gt|--mm] <username> <out_file>
  ./habraparse.py save_favs [--gt|--mm] [-cn --save-html --limit=N] <username> <out_dir>
  ./habraparse.py save_post [--gt|--mm] [-c --save-html] <topic_id> <out_file>

По умолчанию все команды работают с проектом HabraHabr.ru.
При задании опций --gt/--mm скрипт будет работать с GeekTimes.ru/Megamozg.ru.

Команды:
  save_favs_list - сохранение в файл <out_file> списка URL избранного для пользователя <username>
  save_favs - сохранение в папку <out_dir> статей из избранного для пользователя <username>
  save_post - сохранение в файл <out_file> статьи с заданным ID



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

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

Бесплатный https сертификат + интеграция в Apache–TomCat

Время на прочтение3 мин
Количество просмотров18K
Доброго времени суток, дорогие друзья. У меня возникла необходимость настроить https на сервере, который используется в онлайн-игре. Для этого мне понадобится бесплатная регистрация на StartSSL и немного времени. Инструкции на самом сайте StartSSL довольно туманные. Эта публикация призвана пролить свет на детали.
Читать дальше →

Полноценное Python приложение на Android

Время на прочтение4 мин
Количество просмотров191K


В этой статье я хотел бы рассказать о том, как создать полноценное приложение на Python для Android. Нет, это не очередной мануал для создания скрипта для sl4a, это мануал по созданию полноценного приложения с UI, возможностью собрать apk и выложить на Android Market. Заодно я хотел бы похвалиться своим первым приложением на google.play, это не hello world, а полезное приложение для фотографов, хотя и узко специализированное.
Читать дальше →

Проектирование RESTful API с помощью Python и Flask

Время на прочтение15 мин
Количество просмотров297K
В последние годы REST (REpresentational State Transfer) стала стандартной архитектурой при дизайне веб-сервисов и веб-API.

В этой статье я покажу вам как просто создавать RESTful веб-сервисы используя Python и микрофреймворк Flask.

Что такое REST?


Характеристика системы REST определяется шестью правилами дизайна:

  • Клиент-Сервер: Должно быть разделение между сервером, который предлагает сервис и клиентом, который использует ее.
  • Stateless: Каждый запрос от клиента должен содержать всю информацию, необходимую серверу для выполнения запроса. Другими словами, сервер не обязан сохранять информацию о состоянии клиента.
  • Кэширование: В каждом запросе клиента должно явно содержаться указание о возможности кэширования ответа и получения ответа из существующего кэша.
  • Уровневая система: Клиент может взаимодействовать не напрямую с сервером, а с произвольным количеством промежуточных узлов. При этом клиент может не знать о существовании промежуточных узлов, за исключением случаев передачи конфиденциальной информации.
  • Унификация: Унифицированный программный интерфейс сервера.
  • Код по запросу: Сервера могут поставлять исполняемый код или скрипты для выполнения их на стороне клиентов.

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

Класс-клиент goo.gl и настройка API

Время на прочтение4 мин
Количество просмотров36K
UPD: репозиторий теперь на Гитхабе.

Здравствуйте, коллеги!

Помню, в свое время меня очень обрадовала новость, что у гугловской сокращалки урлов появились официальные API. В то время я как раз разрабатывал приложение, которому часто требовалось сокращать ссылки новостных лент. Я как раз прикручивал bit.ly, но испытал соблазн попробовать новый сервис от Гугла. Воспользовавшись документацией, я за несколько часов набросал базовый функционал и встроил скрипт в проект.

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

Основные возможности и особенности класса от конкурентов:
Читать дальше →

Эффективный Django. Часть 1

Время на прочтение14 мин
Количество просмотров305K

Представляю вам перевод статей о Django с сайта effectivedjango.com. Наткнулся я на этот сайт во время изучения данного фреймворка. Информация размещенная на этом ресурсе показалась мне полезной, но так как нигде не нашел перевода на русский, решил сделать сие доброе дело сам. Этот цикл статей, как мне думается, будет полезен веб-разработчикам, которые делают только первые шаги в изучении Django.
Приступить к чтению

Codeship.io: бесплатный CI сервер для приватного репозитория Github/Bitbucket

Время на прочтение3 мин
Количество просмотров28K

Сразу заинтригую: в результате мы получим связку бесплатного приватного git репозитория на Bitbucket и бесплатный* Continious Integration сервер (SAAS), который будет собирать проект и прогонять все тесты после каждого пуша.
* — бесплатная подписка дает возможность тестировать 5 приватных репозиториев и максимум 100 билдов в месяц.

Мне этого для личного проекта достаточно.

Приведу пример для PHP, проект на Symfony2, но данный сервис поддерживает ещё и Ruby, Node.js, Python.

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

Как в Яндексе используют PyTest и другие фреймворки для функционального тестирования

Время на прочтение19 мин
Количество просмотров129K
Всем привет! Меня зовут Сергей, и в Яндексе я работаю в команде автоматизации тестирования сервисов монетизации. Перед каждой командой, которая занимается задачами автоматизации тестирования, встает вопрос: «Какой [фреймворк|инструмент] выбрать для написания своих тестов?» В этом посте я хочу помочь вам на него ответить. Если быть конкретнее, речь пойдет об инструментах тестирования на языке Python, но многие из идей и выводов можно распространить на другие языки программирования, поскольку подходы часто не зависят от конкретной технологии.



В Python существует множество инструментов для написания тестов и выбор между ними неочевиден. Я опишу интересные варианты использования PyTest и расскажу о его [плюсах|минусах|неявных возможностях]. В статье вы найдёте развёрнутый пример использования Allure, который служит для создания простых и понятных отчётов автотестов. Также в примерах будет применяться фреймворк для написания матчеров — Hamcrest для Python. Надеюсь, что в итоге, те, кто сейчас в поиске инструментов для тестирования, смогут на основе изложенных примеров быстро внедрить функциональное тестирование в своем окружении. Те же, кто уже использует какой-то инструмент, смогут узнать новые подходы, варианты использования и концепции.
Читать дальше →

Анализатор исходных кодов RATS

Время на прочтение4 мин
Количество просмотров11K
Одним из методов поиска уязвимостей в программном обеспечении является использование анализаторов исходных текстов. В данной посте хочу рассказать об одном из них, а именно о RATS (Rough Auditing Tool for Security). Упоминания о RATS встречались не раз в уважаемых мной источниках, а именно тут, тут и еще здесь. Однако, реального примера использования нигде не было.
Читать дальше →

Вместе веселей: python + flask + google app engine

Время на прочтение6 мин
Количество просмотров29K
Предыстория: я, как и многие на Хабрахабре, чертовски люблю слушать музыку. Чаще всего делаю это в ВКонтакте. Иногда уже сфомированный плейлист надоедает — хочется чего-нибудь нового; но так, чтобы не сильно отличалось от того, что уже есть. Для этого на всех сервисах, предоставляющих возможность прослушивания музыки, существуют рекомендации. Признаюсь честно, рекомендации в ВКонтакте меня ужасают. Может кому-то нравится, но у меня тамошний подбор вызывает желание закрыть браузер (ИМХО, конечно). В общем, решил я эту ситуацию для себя исправить и реализовать свои собственные рекомендации с использованием API ВКонтакте и Last.fm. Так как я много слышал и читал про Google App Engine, но никогда его не использовал, решено было приобщиться к этой платформе.

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

Python на Хабре

Время на прочтение7 мин
Количество просмотров455K
Некоторое время назад, в силу определенных причин, мне пришла в голову мысль о том, чтобы начать изучать какой-нибудь новый язык программирования. В качестве альтернатив для этого начинания я определил два языка: Java и Python. После продолжительного метания между ними и сопутствующих нытья и долбежки головой о стену (у меня с новыми языками всегда так — сомнения, раздумья, проблема выбора и т.д.), я все-таки остановился на Python. Окей, выбор сделан. Что дальше? А дальше я стал искать материал для изучения…
Читать дальше →

Немного креатива — календарь с антипаттернами

Время на прочтение3 мин
Количество просмотров28K
Всем привет!

Пост повышенной несерьёзности, ибо пятница.
Хочу рассказать про антипаттерны, которые выкристаллизовались в нашей компании. Just For Fun.

Каждый раз, когда разработчики/монтажники/схемотехники применяли повторяющуюся отмазу, её фиксировали и заносили в список. Когда список вырос и в нём появилось почти 12 отмазок, нам пришла в голову идея сделать свой календарь с антипаттернами (поскольку отмазки иллюстрируют то, как не стоит думать и делать, приравниваем их к антипаттернам). Для этого нам предстояло осилить вёрстку календаря и к каждому анти-паттерну «родить» соответствующую картинку. Вёрстку делали в LaTex'е, а картинки — в inkscape, в svg-формате. В-общем, получилось вполне open-source'но. Но пост всё-таки больше не о технической реализации, а о самих анти-паттернах. Кому интересно, добро пожаловать.
Читать дальше →

Настройка Atom от GitHub для работы с PHP, Python и некоторыми другими языками программирования

Время на прочтение4 мин
Количество просмотров206K
Редактор Atom от GitHub после установки поддерживает подсветку синтаксиса для основных языков программирования. Однако для более полноценной работы — валидации кода, проверки синтаксиса, базовой отладки и снипетов, как и в большинстве редакторов кода, необходимо подключение дополнительных пакетов и ряд действий.
Под катом так же дополнительно расскажем:
  • про запуск скриптов
  • работу в терминале прямо из интерфейса Atom
  • и чуть-чуть про заявленную поддержку Swift от Apple

Внимание трафик — кликабельные картинки и анимированые gif. (~3МБ)

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

Перевод учебника по алгоритмам

Время на прочтение1 мин
Количество просмотров167K


Рад сообщить, что вышел перевод отличнейшего учебника Дасгупты, Пападимитриу, Вазирани «Алгоритмы», над которым я работал последние несколько лет. В книге многие алгоритмы объяснены гораздо короче и проще, чем в других учебниках: с одной стороны, без излишнего формализа, с другой — без потери математической строгости. Откройте книгу на каком-нибудь известном вам алгоритме и убедитесь в этом. =)

В общем, угощайтесь: печатный вариант перевода, электронный вариант перевода (PDF), печатный вариант оригинала, электронный вариант оригинала (PDF).
Читать дальше →

25+ видеоуроков по Android для начинающих

Время на прочтение2 мин
Количество просмотров415K

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

15 малоизвестных команд Linux

Время на прочтение3 мин
Количество просмотров319K
Каждому разработчику в определенной степени следует овладеть навыками работы в терминале. Физически находиться у компьютера не всегда возможно, поэтому приходится подключаться удаленно. И действительно, GUI-программы вполне могут с этим с правиться, но зачастую они работают медленнее, чем получение доступа через тот же терминал (в конце концов, это лишь обмен текстом).
Читать дальше →

Как смотреть фильмы в оригинале, если английский слабоват? Решение!

Время на прочтение5 мин
Количество просмотров55K


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

Как известно, чтобы изучать и не забывать язык, им надо пользоваться. И один из способов практиковать язык — это начать смотреть фильмы в оригинале.
Но как можно начать смотреть фильмы и получать при этом удовольствие, если в каждом диалоге актеров встречаются незнакомые слова?

В интернете полно методик, где советуют, например, смотреть по 3 раза или подготавливаться к просмотру, выписывая и заучивая заранее слова из субтитров. Да, возможно это эффективно, и кому-то подойдут такие способы, но это же так скучно… Я бы не смог смотреть 3 раза подряд один и тот же фильм. Хочется получать удовольствие от просмотра, смотреть сразу и без подготовки и все понимать.

Как же этого добиться?

Чек-лист по юзабилити интернет-магазинов

Время на прочтение7 мин
Количество просмотров92K
Апофеоз сотни холиваров и улучшения работы QA — чек-лист по юзабилити интернет-магазинов. В нем частично задействованы прошлые документы — чек-листы по формам и фильтрам. Пользуйтесь.


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

Заставим клавишу Switch Display на ноутбуке работать по-своему!

Время на прочтение3 мин
Количество просмотров11K
Вам нравится как работает gnome-display-properties (это тот, который «Система -> Параметры -> Мониторы») и клавиша переключения монитора на ноутбуке? Да? Тогда можете проходить мимо, топик не для вас :)

Самое большое неудобство этого аплета — невозможность вручную настроить порядок переключения режимов: current configuration -> mirror -> extended desktop -> laptop only -> external only -> и снова current configuration. Не слишком удобно, не правда ли?.. Вот эту задачу мы и будем решать.

Задача


— заставить клавишу Switch Display переключать всего два режима:
1) экран ноутбука включен, внешний монитор отключен
2) экран ноутбука отключен, внешний монитор включен
— сделать так, чтобы ноутбук не уходил в режим ожидания по захлопыванию крышки, если включен внешний экран
Читать дальше →

Мега-Учебник Flask, Часть 1: «Привет, Мир!»

Время на прочтение6 мин
Количество просмотров586K
Это первая статья в серии, где я буду документировать мой опыт написания веб-приложения на Python, используя микрофреймворк Flask.

Здесь список всех статей в серии:
Часть 1: Привет, Мир!
Часть 2: Шаблоны
Часть 3: Формы
Часть 4: База данных
Часть 5: Вход пользователей
Часть 6: Страница профиля и аватары
Часть 7: Unit-тестирование
Часть 8: Подписчики, контакты и друзья
Часть 9: Пагинация
Часть 10: Полнотекстовый поиск
Часть 11: Поддержка e-mail
Часть 12: Реконструкция
Часть 13: Дата и время
Часть 14: I18n and L10n
Часть 15: Ajax
Часть 16: Отладка, тестирование и профилирование
Часть 17: Развертывание на Linux (даже на Raspberry Pi!)
Часть 18: Развертывание на Heroku Cloud

Моя предыстория


Я разработчик ПО с двузначным числом лет опыта разработки комплексных приложений на нескольких языках. Впервые я познакомился с Python для создания привязок к C++ библиотеке на работе. Вдобавок к Python, я писал веб-приложения на PHP, Ruby, Smalltalk и, верите вы или нет, еще на С++. Из всего этого, я нахожу комбинацию Python/Flask самой гибкой.
Я хочу начать это долгое и удивительное путешествие

Информация

В рейтинге
2 916-й
Зарегистрирован
Активность