Посты с тэгом блог


Web–управляемый интернет радиоприемник от Umputun

Umputun в посте «Радио на RPi» дал ссылки на бэкэнд и UI для управления через web приемником онлайн-радиостанций. Приемник — сервер MPD. Сервер для отдачи UI написан на Python. Все ссылки в посте. Я запустил всё это под Windows, ниже особенности с которыми столкнулся.

Для MPD нужно создать конфигурационный файл и передать его параметром командной строки:

C:mpdmpd.exe mpd.conf

Самый простой файл конфигурации получился такой:

db_file «database»
log_file «log»
port «6600»
input {
plugin «curl»
}
audio_output {
type «winmm»
name «Speakers»
device «Speakers (Realtek High Definition Audio)»
mixer_type «software»
}

Полный лог запуска MPD под Windows:



Автодополнение в интерпретаторе python в Windows

Заметил, что в ubuntu «из коробки» работает автодополнение в интерпретаторе python при нажатии tab. Удобная фича, которую можно настроить и в windows.

Устанавливаем необходимый пакет pyreadline:

pip install pyreadline

Создаем конфигурационный файл. Я назвал его pythonrc и положил в C:Python27
Содержание файла:

import rlcompleter, readline
readline.parse_and_bind(‘tab: complete’)

Создаем переменную окружения PYTHONSTARTUP со значением C:Python27pythonrc

При запуске интерпретатора проверяется PYTHONSTARTUP и выполняется файл указанный в этой переменной окружения.

В итоге автодополнение работает. К сожалению, не совсем так же как в ubuntu. Там по нажатию tab еще выводит и все варианты, если их несколько. Но, думаю, это особенности реализации pyreadline под разные платформы.

P.S. Еще один путь существенно расшир



Ошибка httplib.BadStatusLine при отправке файлов через Dropbox Python SDK

Разбирался с API Dropbox для Python и застрял на такой ошибке при загрузке файлов:
Traceback (most recent call last):
 
File "testDRBX.py", line 30, in
    response
= client.put_file('magnum-opus.txt', f)
 
File "C:UsershicomAppDataRoamingPythonPython27site-packagesdropboxcli
ent.py"
, line 149, in put_file
   
return RESTClient.PUT(url, file_ob


Передача файлов с kindle по wi-fi

Самый простой способ обмениваться файлами с kindle по wi-fi — запустить на kindle web-сервер с корнем в папке [/mnt/us/]documents. Готовое решение уже существует, это web-сервер bozohttpd. Но мне и он не понадобился, т.к. установлен python.
Алгоритм прост:
Открывает нужный порт в настройках firewall kindle (я использую tcp-порт 8000):
iptables -A INPUT -p tcp -m tcp -s 0/0 —dport 8000 -j ACCEPT
Переходим в documents:
cd /mnt/us/documents
Запускаем встроенный в python http-сервер:
/mnt/us/python/usr/bin/python -m SimpleHTTPServer &
По умолчанию используется порт 8000, можно изменить это значение указав нужный порт в конце команды. Завершить работу сервера можно командой pkill:
pkill -f python
Окончательное решение выглядит как ini-файл для launchpad


Kindle как второй монитор к компьютеру

Забавную идею использования kindle как дополнительного монитора, реализованную в виде python-скрипта, нашел на форуме mobileread.com. Не требуется ничего кроме установленных Python и wxPython.Суть проста: скрипт работает как http-сервер, периодически отдавая скриншоты экрана. На kindle достаточно включить wi-fi и набрать url сервера.


Python на Kindle Keyboard

Научился запускать python-скрипты на kindle. Сразу скажу, привычной консоли Python нет и операции ввода/вывода я научился делать пока только через файловую систему.

Немного важной информации:

  • Прежде всего понадобится установленный Launchpad.
  • Файловая система, видимая при подключении устройства к компьютеру, в самом устройстве монтируется в точку /mnt/us.

Подключаем kindle к компьютеру и создаем каталог customupdates, куда кладем zip-архив с python-2.7.2. Или просто распаковываем архив с python в корень каталога, открывающегося при подключении по usb.

В каталоге launchpad создаем файл python.ini следующего содержания:

[Actions]
;; run Python
P Y = !source /mnt/us/python/pythonenv; /mnt/us/python/usr/bin/python /mnt/us/test/test.py


Советы, хаки и патчи для Kindle Keyboard

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

Пользуюсь:

  • JailBreak — жизненно необходим. Без него не будут работать патчи и большинство сторонних программ. Последняя версия 0.9.N. Поддерживает все версии прошивок. Для прошивок версии 3.2.1 и 3.3 в архиве отдельный инсталлятор (к названию файла добавлено «3.2.1»).
  • Русификация интерфейса Kindle 3 + Русская виртуальная клавиатура — клавиатура вызывается сочетаний клавиш Alt + Sym. Последняя версия 0.16, совместима со всеми версиями прошивок, включая 3.3.
  • KindleNote — записная книжка для kindle с поддержкой русского языка. Ввод русских букв выполняется через физическую клавиатуру. С установленным патчем русской


Собираю статистику пропадания коннекта

На работе стал часто отваливаться инет. Чтобы выяснить, в какое время пропадает коннект написал небольшой скрипт. Сильно не мудрил: в течении заданного интервала времени, с определенным периодом проверяемся результат пинга. Работает всюду, где есть команда ping и интерпретатор python.

Опции командной строки: продолжительность работы программы, период опроса и адрес пинга. По умолчанию эти значения выставлены в 36000, 15 и 192.168.1.1 В linux удобно запустить скрипт в фоне (добавить &), и конечно результат работы можно выводить не на экран, а перенаправлять в файл.

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys, os
import time
import datetime

def main(*args):
try:
argc = len(args)
if argc == 4:
duration, timeout, dest = int(args[1]), int(args[2]), args[3]
elif argc ==1:
duration, timeout, dest = 36000, 15, '192.168.1.1'
else:
raise


Новости блога


Последнее время, как Вы наверное уже заметили, я снова серьезно взялся за Insight IT. Помимо более-менее регулярных постов многое поменялось и в самом блоге.

Основная цель этого поста — рассказать что нового и получить отклик от аудитории, так как это очень важно для выбора вектора дальнейшего развития.

Социальность

К интеграции с социальными сетям я шел медленно и постепенно: сначала были социальные закладки, потом «поделиться с друзьями в Вконтакте/Facebook/Twitter» в конце поста.

Позавчера же я реализовал еще пять улучшений в этом направлении:

  • Сам


Анализ посещаемых ресурсов с ulog

Правила iptables:

-A OUTPUT -m owner --uid-owner 500 -j ULOG --ulog-prefix "Alex logs: "
-A OUTPUT -m owner --uid-owner 501 -j ULOG --ulog-prefix "Test logs: "

В итоге записи «Alex logs: » и «Test logs: » попадут в базу mysql. Как настроить базу данных рассказал в посте «Учет трафика с ulog«.

mysql> SELECT oob_prefix FROM ulogd;

Обработчик логов на python:

#!/usr/bin/python
# -*- coding: utf-8 -*-
import socket
import MySQLdb
import time
import datetime

def get_DNSname(ip, data):
"""Функция get_DNSname(ip) определяет имени хоста по ip адресу.
Для оптимизации определенный имена хостов заносятся в словарь
в текстовом файле log-ов и сначала поиск проводится в нем."""
dns = {}
bad_ip = {}

today = datetime.date.today()

# откры