Некоторое время назад, в силу определенных причин, мне пришла в голову мысль о том, чтобы начать изучать какой-нибудь новый язык программирования. В качестве альтернатив для этого начинания я определил два языка: Java и Python. После продолжительного метания между ними и сопутствующих нытья и долбежки головой о стену (у меня с новыми языками всегда так — сомнения, раздумья, проблема выбора и т.д.), я все-таки остановился на Python. Окей, выбор сделан. Что дальше? А дальше я стал искать материал для изучения…
Mikhail Kulincev @kulinich
Пользователь
Вы еще не программируете микроконтроллеры? Тогда мы идем к вам!
9 min
387K
В этой статье я хочу рассказать о том, как однажды решил начать программировать микроконтроллеры, что для этого понадобилось и что в итоге получилось.
Тема микроконтроллеров меня заинтересовала очень давно, году этак в 2001. Но тогда достать программатор по месту жительства оказалось проблематично, а о покупке через Интернет и речи не было. Пришлось отложить это дело до лучших времен. И вот, в один прекрасный день я обнаружил, что
+76
Еще одна история про домашний сервер, или операция «silence»
14 min
53KДобрый день, хабраюзеры!
Наверняка каждый разработчик, рано или поздно, сталкивается с проблемой тестового окружения. Не очень удобно держать ПК включенным 24х7, да еще и заваливать его софтом для экспериментов под завязку. С другой стороны найти хостинг по собственному вкусу, да еще и не дорогой — тоже задача не из легких. Что же делать? Выход есть — развернуть песочницу дома. Как я убедился, об этом детальнее ниже, это не дорого, это удобно и очень увлекательно.

+22
Nginx + uWSGI + virtualenv + Django на Debian Squeeze
4 min
33KНекоторое время назад озадачился поиском способа развертывания проектов Django, к которому предъявлялись два требования:
По второму пункту мой выбор склонился в пользу Nginx + uWSGI. По первому же, из рассмотренных мною вариантов больше всего понравились обвязки для uWSGI в Debian.
- Удобное управление запуском/остановкой/перезапуском нескольких проектов на одном хосте
- Поддержка разных виртуальных сред для разных проектов
По второму пункту мой выбор склонился в пользу Nginx + uWSGI. По первому же, из рассмотренных мною вариантов больше всего понравились обвязки для uWSGI в Debian.
+22
Nginx + uWSGI + Django, один из вариантов запуска
4 min
34KСтатья описывает один из способов развертывания Django-проектов, в связке Nginx + uWSGI на Unix-подобных операционных системах. Тестирование, а так же дальнейшая рабочая эксплуатация производилась на FreeBSD, однако на Linux процесс будет схож, за исключением некоторых незначительных моментов.
+44
Web API с помощью Django REST framework
4 min
158KВеб-cервис (англ. web service) — идентифицируемая веб-адресом программная система со стандартизированными интерфейсами. Веб-службы могут взаимодействовать друг с другом и со сторонними приложениями посредством сообщений, основанных на определённых протоколах (XML, JSON и т. д.). Веб-служба является единицей модульности при использовании сервис-ориентированной архитектуры приложения.
Одним из подходов создания веб сервиса является rest.
Rest (сокр. англ. Representational State Transfer, «передача состояния представления») — стиль построения архитектуры распределенного приложения. Данные в REST должны передаваться в виде небольшого количества стандартных форматов (например HTML, XML, JSON). Сетевой протокол (как и HTTP) должен поддерживать кэширование, не должен зависеть от сетевого слоя, не должен сохранять информацию о состоянии между парами «запрос-ответ». Утверждается, что такой подход обеспечивает масштабируемость системы и позволяет ей эволюционировать с новыми требованиями.
Одним из подходов создания веб сервиса является rest.
Rest (сокр. англ. Representational State Transfer, «передача состояния представления») — стиль построения архитектуры распределенного приложения. Данные в REST должны передаваться в виде небольшого количества стандартных форматов (например HTML, XML, JSON). Сетевой протокол (как и HTTP) должен поддерживать кэширование, не должен зависеть от сетевого слоя, не должен сохранять информацию о состоянии между парами «запрос-ответ». Утверждается, что такой подход обеспечивает масштабируемость системы и позволяет ей эволюционировать с новыми требованиями.
+18
Django Admin Bootstrap Theme
2 min
26KБуду краток:

Подробности, что еще не работает, и как это установить — под катом.

Подробности, что еще не работает, и как это установить — под катом.
+41
Рейтинг постов хаба
35 min
55K
Привет, Хабр!
В связи с тем, что данная возможность появилась, а топик сносить в черновики не хочется — ниже рейтинг самых комментируемых и добавляемых в избранное статей самых популярных хабов. Кроме того пару слов о реализации скрипта.
+129
Эстафета из 50-ти квайнов
2 min
106K
Квайн — компьютерная программа, которая выдаёт на выходе точную копию своего исходного текста. Японский рубист Юсукэ Эндо (Yusuke Endoh) создал нечто невероятное. Quine Relay — программа на Ruby, которая генерирует код программы на Scala, которая генерирует код программы на Scheme, которая генерирует… и так далее на 50-ти языках программирования, пока программа на REXX снова не генерирует изначальный код на Ruby.
+229
Cобираем звуковую станцию на базе Linux и MPD
11 min
87K
В основе референсного аудиопроигрывателя Bryston BDP–2 стоимостью, на минуточку, 156 тысяч рублей лежит стандартная материнка с процессором Intel Atom и звуковой картой ESI Juli@ PCI. В качестве ОС для этого плеера разработчики выбрали Debian Linux. При наличии времени и желания можно собрать аналогичный цифровой источник из имеющегося железа, а с установкой нужного ПО и тонкой настройкой параметров системы тебе поможет эта статья.
+44
Управляем светодиодной лентой при помощи Raspberry Pi и Android
8 min
66KЗдравствуй, завсегдатай и гость Хабра.
Давно читаю Хабр, но всё никак не было поводов написать статью, покаменя не накрыло мне очередной раз не напомнили о существовании Raspberry Pi и о такой вещи как WS2801 LED Strip. Тут уже однажды писали о подобной, но для связи с Ардуиной, чтобы получить Эмбилайт, поэтому я решил рискнуть и написать свою статью, с Лего и Котиками.

В статье будет мало картинок, несколько видео, много текста, включая лирические отступления не по сабжу и совсем мало кода, но в самом конце будут ссылки на проект на Гитхабе. А теперь обо всём по-порядку:
Давно читаю Хабр, но всё никак не было поводов написать статью, пока

В статье будет мало картинок, несколько видео, много текста, включая лирические отступления не по сабжу и совсем мало кода, но в самом конце будут ссылки на проект на Гитхабе. А теперь обо всём по-порядку:
+51
Домашний сервер «всё-в-одном» — success story
9 min
139KTutorial
Recovery Mode
Жил да был у меня роутер одной хорошей фирмы на букву «Dead». Ну, это с ним, собственно, и случилось.
Посмотрел я на цены новых, на кучу компьютерного хлама в углу, на список подключений на домашнем компе… И понял, что не нужен мне роутер. Соберу свой, с нормальной маршрутизацией, DNS, WINS, i2p,блекджеком и так далее.
Посмотрел я на цены новых, на кучу компьютерного хлама в углу, на список подключений на домашнем компе… И понял, что не нужен мне роутер. Соберу свой, с нормальной маршрутизацией, DNS, WINS, i2p,
+86
Система наблюдения в автомобиле за ним же на Raspberry Pi. Часть 2
2 min
31KВ прошлой статье я описал:
В этот раз настроим и подключим GPS-приёмник и WEB-камеру через USB-хаб.
- создание на одном Raspberry Pi домашнего VPN-сервера;
- установку и настройку на втором Raspberry Pi OpenVPN-клиента, Node.JS и 3G-модема.
В этот раз настроим и подключим GPS-приёмник и WEB-камеру через USB-хаб.
+26
Очередной mp3-box из mpd и raspberry
5 min
37KЗахотелось мне собрать сетевой аудиоплеер. Не «медиа», а исключительно под музыку. Раньше этим занимался домашний сервер (foobar2000 + всякие удаленные управления для него), но наконец-то созрел вынести его поближе к точке входа сетевых проводов в квартиру, потому возникла вакансия. А десктоп или ноут для этого использовать накладно в плане потребления ресурсов. Я не требователен, музыка у меня играет просто для создания приятного фона, а не для эстетического наслаждения, потому каких-то высоких требований к аудиотракту у меня не было, лишь бы не шипел сильно.

ТЗ изначально выглядело так:
1) ethernet, в крайнем случае — wifi
2) поддержка самбы и всяких интернет-радио
3) поддержка любых форматов (минимально — mp3 и flac, можно ape)
4) аудио-разъем 3,5мм
5) удаленное управление с компьютера (составление плейлистов и т.п.), плюс желателен ПДУ (вполне хватит управления громкостью и переключения треков), вместо ПДУ устроит клиент для андроида
6) готовое устройство, а не конструктор

ТЗ изначально выглядело так:
1) ethernet, в крайнем случае — wifi
2) поддержка самбы и всяких интернет-радио
3) поддержка любых форматов (минимально — mp3 и flac, можно ape)
4) аудио-разъем 3,5мм
5) удаленное управление с компьютера (составление плейлистов и т.п.), плюс желателен ПДУ (вполне хватит управления громкостью и переключения треков), вместо ПДУ устроит клиент для андроида
6) готовое устройство, а не конструктор
+14
Замена Dropbox на BitTorrent Sync + Raspberry Pi
2 min
65K
Для Raspberry Pi нашли ещё одно полезное применение. Мини-компьютер отлично справляется с бэкапом и синхронизацией файлов между различными устройствами. К нему можно подключить внешний диск или большую флэшку, и RPi готов работать круглосуточно, синхронизируя файлы с компьютеров, ноутбуков и Android-устройств (скоро выйдет и клиент для iOS). Незачем платить за облачный сервис, если можно сделать такое же удобное «облако» у себя дома, и бесплатно.
Американский программист Джек Минарди опубликовал пошаговую инструкцию, как запустить BitTorrent Sync на Raspberry Pi.
+69
Изучаем netfilter: пишем свой match-модуль на базе xt_string для поиска нескольких шаблонов
11 min
9.9KTutorial
Введение
Недавно заметил, что на хабре мало информации по разработке модулей ядра. Всё что я нашёл:
- Учимся писать модуль ядра (Netfilter) или Прозрачный прокси для HTTPS
- «Linux Kernel Hacking — это просто!» или «Где найти документацию?»
- Ещё 2-3 статьи
Всегда удивляло то, что люди, более-менее знающие C, боятся и избегают даже читать ядерный код, как будто он на 60% состоит из ассемблера (который на самом деле тоже не такой уж сложный). Собственно я планирую написать серию статей, посвящённую разработке или доработке существующих модулей netfilter и iptables.
Интересными они, надеюсь, окажутся для начинающих разработчиков ядра, драйверописателей или просто людей, которые хотят попробовать себя в новой области разработки.
Что будем делать
Как сказано в названии статьи — мы напишем простой модуль iptables на базе xt_string. Xt_string — это модуль netfilter, умеет искать последовательность байт в пакете. Однако ему, на мой взгляд, не хватает способности осуществлять поиск нескольких последовательностей байт в заданном порядке. Ну, а так как лицензия GPL, то что мешает ему эту возможность придать?
+11
Избранное: ссылки по IT безопасности
3 min
110K
Давно хотел написать этот пост с подборкой полезных ссылок, так как очень часто спрашивают подобное (думаю, у многих, кто в этой (да и в других) сфере). Ссылки разбиты на категории.
+80
Практика IPv6 — домашняя сеть
17 min
275KTutorial
Abstract: Рассказ про некоторые возможности IPv6 на примере конфигурации сложной домашней IPv6-сети. Включает в себя описания мультикаста, подробности настройки и отладки router advertisement, stateless DHCP и т.д. Описано для linux-системы. Помимо самой конфигурации мы внимательно обсудим некоторые понятия IPv6 в теоретическом плане, а так же некоторые приёмы при работе с IPv6.
Вполне понятный вопрос: почему я ношусь с IPv6 сейчас, когда от него сейчас нет практически никакой пользы?
Сейчас с IPv6 можно возиться совершенно безопасно, без каких-либо негативных последствий. Можно мирно разбираться в граблях и особенностях, иметь его неработающим месяцами и nobody cares. Я не планирую в свои старшие годы становиться зашоренным коболистом-консерватором, который всю жизнь писал кобол и больше ничего, и все новинки для него «чушь и ерунда». А вот мой досточтимый воображаемый конкурент, когда IPv6 станет продакт-реальностью, будет либо мне не конкурентом, либо мучительно и в состоянии дистресса разбираться с DAD, RA, temporary dynamic addresses и прочими странными вещами, которым посвящено 30+ RFC. А что IPv6 станет основным протоколом ещё при моей жизни — это очевидно, так как альтернатив нет (даже если бы они были, их внедрение — это количество усилий бОльшее, чем завершение внедрения IPv6, то есть любая альтернатива всегда будет отставать). И что адреса таки заканчиваются видно, по тому, как процесс управления ими перешёл во вторую стадию — стадию вторичного рынка. Когда свободные резервы спекуляций и хомячаяния адресов закончится, начнётся этап суровой консолидации — то есть выкидывание всего неважного с адресов, перенос всех «на один адрес» и т.д. Примерно в это время IPv6 начнёт использоваться для реальной работы.
Впрочем, рассказ не про будущее IPv6, а про практику работы с ним. В Санкт-Петербурге есть такой провайдер — Tierа. И я их домашний пользователь. Это один из немногих провайдеров, или, может быть, единственный в городе, кто предоставляет IPv6 домашним пользователям. Пользователю выделяется один IPv6 адрес (для маршрутизатора или компьютера), плюс /64 сетка для всего остального (то есть в четыре миллиарда раз больше адресов, чем всего IPv4 адресов быть может — и всё это в одни руки). Я попробую не просто описать «как настроить IPv6», но разобрать базовые понятия протокола на практических примерах с теоретическими вставками.
Структура сети:

(Оригиналы картинок: github.com/amarao/dia_schemes)
Зачем IPv6?
Вполне понятный вопрос: почему я ношусь с IPv6 сейчас, когда от него сейчас нет практически никакой пользы?
Сейчас с IPv6 можно возиться совершенно безопасно, без каких-либо негативных последствий. Можно мирно разбираться в граблях и особенностях, иметь его неработающим месяцами и nobody cares. Я не планирую в свои старшие годы становиться зашоренным коболистом-консерватором, который всю жизнь писал кобол и больше ничего, и все новинки для него «чушь и ерунда». А вот мой досточтимый воображаемый конкурент, когда IPv6 станет продакт-реальностью, будет либо мне не конкурентом, либо мучительно и в состоянии дистресса разбираться с DAD, RA, temporary dynamic addresses и прочими странными вещами, которым посвящено 30+ RFC. А что IPv6 станет основным протоколом ещё при моей жизни — это очевидно, так как альтернатив нет (даже если бы они были, их внедрение — это количество усилий бОльшее, чем завершение внедрения IPv6, то есть любая альтернатива всегда будет отставать). И что адреса таки заканчиваются видно, по тому, как процесс управления ими перешёл во вторую стадию — стадию вторичного рынка. Когда свободные резервы спекуляций и хомячаяния адресов закончится, начнётся этап суровой консолидации — то есть выкидывание всего неважного с адресов, перенос всех «на один адрес» и т.д. Примерно в это время IPv6 начнёт использоваться для реальной работы.
Впрочем, рассказ не про будущее IPv6, а про практику работы с ним. В Санкт-Петербурге есть такой провайдер — Tierа. И я их домашний пользователь. Это один из немногих провайдеров, или, может быть, единственный в городе, кто предоставляет IPv6 домашним пользователям. Пользователю выделяется один IPv6 адрес (для маршрутизатора или компьютера), плюс /64 сетка для всего остального (то есть в четыре миллиарда раз больше адресов, чем всего IPv4 адресов быть может — и всё это в одни руки). Я попробую не просто описать «как настроить IPv6», но разобрать базовые понятия протокола на практических примерах с теоретическими вставками.
Структура сети:

(Оригиналы картинок: github.com/amarao/dia_schemes)
- 1, 2, 3 — устройства в локальной сети, работают по WiFi
- 4 — WiFi-роутер, принужденный к работе в роле access point (bridge), то есть коммутатора между WiFi и LAN
- 5 — eth3 сетевой интерфейс, который раздаёт интернет в локальной сети
- 6 — мой домашний компьютер (основной) — desunote.ru, который раздачей интернета и занимается, то есть работает маршрутизатором
- 7 — eth2, интерфейс подключения к сети Tiera
+120
PulseAudio, часть 1: управление из командной строки
11 min
158K
Одним из новшеств Ubuntu 10.10 стал переход с «голой» ALSA на PulseAudio. Ранее постилось много советов прибить и удалить его для решения проблем, однако теперь PulseAudio стабилен, с ним не шипят колонки ;), и он способен на такое, что не снилось Alsa :)
В статье я с самого начала расскажу что это такое и как оно работает, а так же:
- Как переключить весь звук на USB-колонку на закрывая приложений (usb hotplug);
- Как выбрать порт звуковой карты для вывода звука (колонки ноутбука/наушника, LineOut/Наушники);
- Как выбрать профайл звуковой карты (маппинг физических портов: 5.1 или стерео+lineIn?);
- Как управлять громкостью и усиливать тихий сигнал (!);
- Как сделать Skype громче музыки?
И представлю своё решение, призванное упростить управление PulseAudio ;)
+100
Архитектура приложений — горячие точки
9 min
26KTranslation
Как часть нашего проекта, мы свели вместе информацию об общих подходах к разработке архитектуры приложений.
+85
Information
- Rating
- Does not participate
- Location
- Санкт-Петербург, Санкт-Петербург и область, Россия
- Date of birth
- Registered
- Activity