Посты с тэгом web


Python Meetup 25.09.2015: мониторинг производительности и использование BDD


Всем привет!
С небольшой задержкой публикуем видео с сентябрьского Python Meetup.
В этот раз, в рамках докладов мы обсудили:
  • Мониторинг производительности веб-приложения на Python с использованием pinba + graphite + tessera
  • ​Использование BDD в разработке на Python

Также участники сообщества обсудили несколько актуальных Python'овских тем в рамках Lightning Talk.
Записи всех выступлений вы найдете под катом.


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


Перенаправление данных из COM-порта в web. Доработка


Недавно я опубликовал статью «Перенаправление данных из COM-порта в web», в которой описал прототип системы, транслирующей строки из последовательного порта компьютера в веб-браузер. В той статье я указал направления, в которых надо доработать прототип, чтобы приблизить его к продакшен-стадии:
— никакой дизайн веб-страницы
— в каждый момент времени данные получит только один веб-клиент
— очень ограниченный набор браузеров, с помощью которых можно получить доступ. Например, не работает ни в Internet Explorer 8, ни в браузере из Android 2.3.5
— требуется установка python

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

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


[recovery mode] Мысли о развёртывании веб-приложений на тестовом сервере


Предисловие


Нижеследующий текст − результат практического опыта и самообразовательных порывов человека, не имеющего систематического образования ни в одной из областей, о которых он (то есть я) берётся рассуждать. Поэтому заумные рассуждения здесь будут перемежаться банальностями. Бейте меня за первые и игнорируйте вторые. Для кого-то и они могут стать откровением.

Я постараюсь описать идеальные варианты настройки тестового веб-севера, хотя понимаю, какой бардак на них обычно творится. Буду ориентироваться на ситуацию, когда деплоить приходится часто, то есть на сервере живёт проект в стадии активной разработки либо несколько проектов на разных стадиях. Проектами занимаются разные разработчики или команды, поэтому проекты нужно изолировать друг от друга. Но сервер внутренний, поэтому такая степень изоляции и автоматизации процессов администрирования, как на серверах под сдачу в аренду, не нужна.

Основной упор я буду делать на применение разных верс


Почему я не люблю конфигурацию в django-style

Введение

Сегодня работал над добавлением в aiohttp.webсвойства scheme для request object.

Идея простая: отвечать что request.scheme "http" для HTTP запросов, иначе "https".

У меня есть правило: перед началом погляди как другие уже справились с этой задачей.

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

Так вышло что сегодня я смотрел код Django.

И было в том коде примерно такое:

@property
def scheme(self):
if settings.SECURE_PROXY_SSL_HEADER:
try:
header, value = settings.SECURE_PROXY_SSL_HEADER
except ValueError:
raise ImproperlyConfigured(
'The SECURE_PROXY_SSL_HEADER setting must be a tuple containing two values.'
)
if self


Advanced Message Queuing Protocol

Вот мы уже умеем писать клиент-серверные приложения. А что если огромный сервис размазан на несколько серверов? Нужно сделать так, чтобы они могли обмениваться информацией между собой не смотря на большие расстояния. А что если одна часть сервиса, который отвечает за обработку большого количества данных написана на Go, другая на Python, а третья и вовсе на Haskell

"AMQP (Advanced Message Queuing Protocol) — открытый протокол для передачи сообщений между компонентами системы. Основная идея состоит в том, что отдельные подсистемы (или независимые приложения) могут обмениваться произвольным образом сообщениями через AMQP-брокер, который осуществляет 



Serialization of objects in Python

Представим на минутку, что в нашей программе скопилось большое количество пухлых массивов и других объектов, над которыми производятся вычисления. Но ведь все они хранятся в памяти во время выполнения программы! Если бы у нас только бы был способ сохранить объекты на диск, а при необходимости быстро достать И он у нас есть!

Для этого нам понадобится стандартный модуль pickle. Создаем словарь, запаковываем его в бинарный файл, сохраняем его на диск, а потом извлекаем. 

Тут следовало бы прояснить конструкцию with и зачем она нужна. По сути, это очень удобный способ обработки исключений - все что находится в теле этого оператора, будет завершенно. А теперь мы попробуем открыть файл и прочитать наш словарик с описанием этого поста.



Build static site with Jekyll

Я же говорил, что рано или поздно освою Jekyll - теперь пришло время писать. Хоть он и использует Ruby, я выбрал его только потому что он самый распространенный (больше туториалов, больше тем, больше плагинов). Да и к тому же ничего лучше на Python я не нашел.

Первым делом правим главный конфигурационный файл:

Наша страница будет состоят из кусочков, которые могут повторяться, поэтому мы опишем их и при надобности будем включать в страничку. Это папка _includes, в которой будут лежать три файла, отвечающие за заголовок, подножие и навигацию:

В подножие оставим нашу кнопочку фолловинга в Twitter.

А теперь соеденим все вместе в шаблоне странички:

А теперь самая главная страничка сайта:

Так как шаблоны мы уже все написали, больше нам не нужно возиться с HTML. Теперь пришла очередь



Static site generator Jekyll

Для всех ли веб-сервисов нужны базы данных? А что если мне нужно просто создать одностраничный сайт? Предположим, нам нужно создать красивый сайт визитку. Я видел ребят, которые для этого пользовали Wordpress. :D

И вот мне на радость совсем недавно я узнал огенераторах статических сайтов. Очень хотелось попробовать, как это работает. Но самый крутой и популярный из них - это Jekyll, написанный на Ruby. Честно говоря, совершенно не знаю Ruby, но аналоги на Python меня совсем не обрадовали.

Суть всех статических генераторов сайтов в том, чтобы брать разметку из любого распространенного формата (в данном случае это Markdown) и генерировать уже HTML.

Для начала поставим все необходимые пакеты, благо на Mac OS Ruby уже предустановлен:

Кстати, в сети есть куча самописных тем, например, здесь. По



Кэширование фронтэнда: Flask, Nginx+Memcached+SSI

Достаточно давно мне на глаза попались следующие статьи по этой тематике:


С PHP я дружу, поэтому попробовал примеры и убедился, что это работает. Но всё это имело «фатальные недостатки» :) — PHP, а я фанат Python и по работе занимаюсь в основном бэкен


Backbone.js для разработки веб-приложений, Speakers’ Corner в Одессе c Артемом Тритьяком

Для тех айтишников, кто на этой неделе решил насладиться морем и солнцем Одессы, отличная новость: вечер пятницы можно будет провести с пользой! В Одесском офисе Сиклум пройдет очередное мероприятие из серии Speakers’ Corner, в этот раз посвященное разработке веб-приложений с использованием Backbone.js от Артема Тритьяка.

В программе доклада обсуждение AMD, Backbone.js, архитектуры RESTful, работа с шаблонами. Вместе со слушателями поработаем с моделью.destroy() model а также рассмотрим необходимость использования Backbone.js {silent: true}. Специально для этого мероприятия Артем подготовил приложение на Backbone.js, чтобы продемонстрировать на реальных примерах его работу. Исходный код будет выложен в Github и доступен всем желающим.

О докладчике:
Артем Тритьяк является представителем connex.io, уже более 6 лет работает с JavaScript, Pyth