Показаны сообщения с ярлыком python. Показать все сообщения
Показаны сообщения с ярлыком python. Показать все сообщения

воскресенье, 28 июля 2013 г.

Mulilambda - Элемент функционального программирования в Python

В языке Python, иногда, явно выделяется стиль программирования из-за того, что нету множество вариаций реализации. Написал замудро. Python интерпретируемый язык с динамической типизацией. Какие ещё могут быть ограничения? Наверное это неудобство при переходе с различных технологий сравнимым Python. Немного напрягает отсутствие inline определения анонимных функций. Да lambda функция. Но во многих вариантах она неудобна. Вот ещё один вариант функционального программирования используя lambda где выполняется несколько команд. Буду благодарен, если кто опровергнет данный подход и укажет на более лучший подход функционального программирования в python.
lambda: (
  doFoo('abc'),
  doBar(123),
  doBaz()
)
Real example:

pushButtonShowDialog.clicked.connect(
  lambda: (
    field1.clear(),
    spinBox1.setValue(0),
    diag.show()
  )
)

пятница, 6 апреля 2012 г.

Поигрывания mp3, audio используя python( pygame )

Была необходимость поигрывать маленькие mp3 файлы, используя средства Python 2.7 под O.S. Ubuntu. Много перерыл материала.
Первый вариант, который заработал. Здесь использовали библиотеку pygame, которая есть в репозитории, как python-pygame. Смотрите. PyMedia у меня не получилось запустить, также на официальном сайте написанно, что работает с Python 2.3.

понедельник, 12 марта 2012 г.

Отличия и приимущества RequestContext от Context в Django

Лучше всего познается на практике. Создаю небольшой сайт используя Django. Получаю запрос, обрабатываю его, вывожу результаты используя шаблонизатор. Да хорошо, что можно всё отделить, но при большом количестве однотипных действий желаешь упрощения. Начал использовать render_to_response с библиотеки django.shortcuts. На первый взгляд я получил, что хотел. В данную функцию передаю шаблон и переменные,
получаю готовый ответ со всеми заголовками http протокола. Встал вопроса общих переменных для шаблонов. За формирование переменных шаблонов отвечает Context. Самое главное в Web приложениях(имеющие однопроходный алгоритм REST) - это запрос - request(запрос - получаем), response (ответ - отдаем). RequestContext - это контекст унаследованый от Context, работает с request(запросом), дополнительно переменные шаблонов формируются
приложениями указанными в переменной TEMPLATE_CONTEXT_PROCESSORS файла настроек. Для взаимодействия всего фреймворка необходимо использовать RequestContext. Создадим декоратор, почувствуем мощь python.

понедельник, 5 марта 2012 г.

Django Micro

На хабре наткнулся на статью - Django Micro для микро проектов. Преведенный код проекта оказался очень изящным, точнее не пугающий своими настройками. Для поднятия небольшого сайта - сайта визитки, или сетевого сервиса, то что надо. Но когда я взглянул в код, я ужаснулся, дополнительный модуль состоит из пару десятков строк. Всё так просто, в django есть всё, и он достаточно прост и не надо наводить ужас. В данном модуле оптимально(коротко) указаны настройки среды django, объявлен декоратор, который собирает путь-обьект для обработки. Эти мелочи показывают возможности django. В комментариях к статье очень много говорилось об Flask. И что в связке Flask+jinja2+Alchemy+wtforms нет равных. Я работал с подобной схемой Webapp2+jinja2+Google Storage+wtforms. Это всё разные технологии и всё надо дополнительно изучать. Особенно бывает досадно, когда одна из технологий выпадает, приходиться её заменять. Да ещё раз хочу выразить своё позитивное отношение Django Micro. У каждого есть своё мнение. Проект находиться здесь. Не бойтесь посмотрите во внутрь.

воскресенье, 4 марта 2012 г.

Microsoft Translator - сервис беcплатных переводов для разработчиков

Google - компания добра. Но доброго ничего не бывает. Теперь я понимаю суть понятия "однополюсность". Cуществовать мы можем только в равновесии. Должно быть нескосколько полюсов. Вот и компания Microsoft дала возможность использовать их сервис переводов бесплатно, в ограниченных объёмах. В то время, как Google прикрыла такую возможность. Пока они там борются за мономополию, нам падают хоть какие крошки. Спасибо. Документация по использованию сервиса вот.
Кратко расскажу, как пользоваться сервисом переводов от Microsoft, используя их API и Python.

воскресенье, 26 февраля 2012 г.

Отделённая реализация паттерна Singleton

Чем больше программируете, тем больше желаете, как можно меньше писать кода. Не всегда это правильное решение, но желание есть всегда. Также хотел отделить реализацию Singleton.  Пытался делать отдельным классом, который потом унаследовал. Да конечно результат можно было предсказать, но желание сделать быстро отключило разум. Да ещё раз на практике усвоил свойства статических методов(один и тот же экземпляр не в зависимости схемы унаследований). Случайно нашёл этот паттерн. Код написан на Python. Основная суть паттерна в том, что создаётся статический список Класса - экземпляра класса. На Python для обёртки класса использовали декоратор. Для других языков можно подобным способом реализовать базовый класс.

вторник, 24 января 2012 г.

Шаблон реализации события на Python

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

четверг, 15 декабря 2011 г.

Ремонт HTML кода

Задача: синхронизировать контент блога с сайтом, создать сплог.
Удалённо подключаюсь к серверу блога, получаю контент. Проблемы начались, когда я данный контент начал выводить. HTML код был битый. Нашёл два варианта решения используя библиотеки lxml, Beautiful Soup.

lxml
from lxml.html import fromstring, tostring
print tostring(fromstring(html))

BeautifulSoup
from modules.BeautifulSoup import BeautifulSoup
soup = BeautifulSoup(html)
print soup.prettify()
С первым вариантом у меня бли проблемы с кирилицей под Google App Engine, второй заработал.

четверг, 29 сентября 2011 г.

Google Docs API Python

Доброго дня. Собираюсь создать приложение на python, которое будет синхронизировать файлы с google docs. Первое что я нашёл это документацию по google docs api.

вторник, 24 мая 2011 г.

Jabber хулиганство на Python

Хорошо когда учеба это интересно. К данной статье выкладываю кусочек кода, как можно поиздеватся над сотруднивами в jabber(e), отослать ему 2000 сообщений, можете попробывать отослать книгу абзацами "Анна Каренина", заодно и усвоете как работать с библиотекой xmpp. Для того чтобы заработал этот код вам необходим python интерпритатор и библиотека xmpp, не путайте c pyxmpp. Jabber может работать с различными протокали, но для этого необходимо подключать дополнительные модули.
Устанавливаем библиотеку:

sudo aptitude install python-xmpp
Вот сам код:
# -*- coding: iso-8859-15 -*-
import sys,xmpp

FROM_ID = "hell@192.168.0.1"
PASS = "1wsx"
SERVER = "192.168.0.1"

#Определяем протокол работы.
jid=xmpp.protocol.JID(FROM_ID)
#Создаём клиентю
cl=xmpp.Client(jid.getDomain(),debug=[])
#Пытаемся подключиться.
if not cl.connect((SERVER, 5222)):
 raise IOError('Can not connect to server.')
#Пытаемся авторизоваться.
if not cl.auth(jid.getNode(), PASS):
 raise IOError('Can not auth with server.')
for x in range(2000):
 try:
  #Шлём ссобщение: кому - что.
  cl.send( xmpp.Message( "vanya@192.168.1.1" ,"Уже пишу отчёт номер  %s Hi!"%x ) )
 except:
  pass
#Закрываем соединение
cl.disconnect()


Шутка удалась.


воскресенье, 1 мая 2011 г.

OpenCV, захват WEB камеры используя Python под Ubuntu

Необходимо было выполнять фотоснимки фотоаппаратом автоматизировано.
Решено было делать используя Питон. Нашли модуль pycanon, но он оказался только под Windows. Пробывали утилиту gphoto2, которая должна управлять фотокамерами, ничего не получилось. Решили, что для наших нужд подойдёт качественная WEB камера. Находил, много решений снятия изображения с камеры, но наткнулся на OpenCV. Мне очень понравилось его исполнение, очень мощный, охватывает почти все аспекты обработки потокового видео, изображений. Вот пример, который заработал, от которого будем отталкиваться.

вторник, 12 апреля 2011 г.

Подсветка синтаксиса кода

Для подсветки синтаксиса в броузере необходимо проводить анализ кода, встроенных тэгов в браузере нет. Тэг "code" - не помогает. Я вижу два варианта решения. Первый - на сервере, второй - на клиенте с помощью JavaScript.

Ubuntu + Apache2 + WSGI (mod_wsgi) в системе LAMP - LAMPython

 Пришла необходимость, что бы некоторые скрипты работали на сервере
Apache. Задачу решал подобным образом

Предпологается, что уже установлены Apache2, PHP, Python, mySQL и phpmyadmin.

пятница, 4 марта 2011 г.

Доброго дня.
Наткнулся на очень интересный и нужный скрипт на питоне,
который:
-готовит заголовки;
-отсылает данные по HTTPS методом POST;
-получает ответ.