Как стать автором
Поиск
Написать публикацию
Обновить
383.85

Python *

Высокоуровневый язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

Руководство: Pyramid для Людей — оглавление

Время на прочтение4 мин
Количество просмотров19K
Данный перевод, по-традиции, имеет вольное содержание. Ненужные, по мнению автора, части убраны, другие дополнены. Огромная просьба тем, кто заметил сильные искажения в тексте, которые меняют смысл повествования — писать в личку, поправлю. UPD: перевод начат давно, но сейчас фокус деятельности смещен в другую область — возможно кому-то и эта переведенная, небольшая часть, послужит хорошим стартом в изучении новой для себя технологии.

Pyramid появился как быстрый, современный, web-фреймворк, для Pylons и Zope сообществ. Когда вам нужно только веб-приложение, а не полноценная CMS, Pyramid дает вам возможность сохранить большинство похожих на Plone технологий, или собрать проект на скорую руку.

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

На подходе к основной части


Методичка собрана, по основным разделам. Начинается с создания UI\UX(прим.перевод.UI — англ. user interface; UX — User eXperience) для чайников. Каждая основная область состоит из последовательности шагов, в которых есть очень небольшое количество определений. Рабочий код понемногу накапливается.

Как описано в сценарии, простое приложение это система управления проектом, для большого количества компаний, которые ведут множество проектов. Мы выбрали traversal и ZODB как начальную архитектуру, для этого пособия.
Читать дальше →

Определение доминирующих цветов: Python и метод k-средних

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

Assorium

На Хабре публиковалось несколько статей с алгоритмами и скриптами для выбора доминирующих цветов на изображении: 1, 2, 3. В комментариях к тем статьям можно найти ссылки ещё на десяток подобных программ и сервисов. Но нет предела совершенству — и почему бы не рассмотреть способ, который кажется самым оптимальным? Речь идёт об использовании кластеризации методом k-средних (k-means).
Читать дальше →

Python: надежная защита от потери запятой в вертикальном списке строк

Время на прочтение3 мин
Количество просмотров29K
Списки строк в программах встречаются часто. Для удобства чтения их не менее часто форматируют вертикально, по одной строке. И есть в такой конструкции уязвимость — если при изменении списка потерять запятую между элементами, то многие языки просто склеют строки слева и справа от пропущенной запятой — в результате получится валидный с точки зрения языка список, в котором на один элемент меньше чем ожидается и один элемент имеет некорректное значение. Есть много способов профилактики этой проблемы, но недавно на stackoverflow мне показали настолько простой и надежный способ, что я просто не могу им не поделиться.

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

Решение проблемы оперативного ресайза изображений

Время на прочтение5 мин
Количество просмотров18K
Бывают случаи, когда нужно на сайте вывести уменьшенную копию изображения. Возможные решения:

1. В теге изображения указываем другие размеры:
<img src='/path/to/image.jpg' width: 100px height:150px>
Очевидно, что в этом случае грузится слишком много не нужного трафика. Не у всех же скоростной интернет, да и глупо это как-то.
Читать дальше →

Самая короткая запись асинхронных вызовов в tornado v2, или патчим AST

Время на прочтение9 мин
Количество просмотров4.5K
Меня очень заинтересовала статья Самая короткая запись асинхронных вызовов в tornado или патчим байткод в декораторе, не столько с практической точки зрения, сколько с точки зрения реализации.
Всё-таки модификация байткода в рантайме это слишком опасная и ненадежная операция. И уж наверняка не поддерживаемая альтернативными интерпретаторами Python.

Попробуем исправить этот недостаток способом, который для этого предназначен куда больше и который применяется для схожих целей во многих других языках (я точно встречал в Lisp или Erlang). Этот способ — модификация Абстрактного синтаксического дерева (AST) программы.
Читать дальше →

Смс оповещение для студентов со странички вконтакте

Время на прочтение7 мин
Количество просмотров34K
Здравствуйте уважаемые хабровчане!
Хотелось бы рассказать от том как я делал смс оповещение для своего факультета.
Я учусь на первом курсе ФСПО ИТМО. У нас на факультете есть так называемая диспетчерская служба которая занимается оповещением студентов об изменении в расписании, в интернете это осуществляется через страничку в контакте и твиттер.
Однажды произошёл небольшой скандал по поводу того что пол-группы не явилось на занятия из-за того, что не успели отследить изменение в расписании. В тот день у меня появилась идея создать смс оповещение с той самой Vk странички.
Да, я знаю, что для это есть специализированные сервисы, но это слишком просто…

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

Как GPS трекер стал логером или простой и дешевый способ организовать мониторинг физических параметров удаленных объектов

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

Задача


Как часто бывает задачи не вписываются в стандартные возможности доступных инструментов. Так случилось и в этот раз. Далее обрисую задачу.

Имеется несколько удаленных объектов на просторах страны (Украина) электрифицированных, но не имеющих простых технических возможностей для подключения интернета. Объекты, как правило, расположены так что про 3G или WiMax заикаться не приходится. Доступен только GPRS. Нужно иметь возможность мониторить температуру в нескольких помещениях этих объектов. Причем желательно если не в реальном времени то с минимальной задержкой. Усложняется все еще тем что объекты хоть и недвижимость, но возможны ситуации что будет переезд. Поэтому капитальные методы установки оборудования отпадают.

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


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

«А пошло оно всё!» или снова о Coursera и ему подобных

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

Привет хабровчанам!


image
Во-первых, спасибо вам, хабровчане! Именно от вас я узнал о таком замечательном проекте, как Coursera.
Как-то классе в 10 я решил, что хочу поступить в один из технических ВУЗов Вены — в этом городе я живу уже достаточно продолжительное время. У меня было какое-то очень общее понимание того, что такое php, mySQL, краем уха слышал о существовании RoR, и мне казалось, что веб-программирование — это крайне круто и что это то, чем мне бы подошло заниматься.

Впоследствии, наслушавшись о своей неорганизованности, сумбурности мышления и рассеянности выбор был сделан в пользу Логистики и Транспортного управления, откуда я в итоге ушёл с оставшимся чувством отвращения к бухгалтерии и праву.

И вот я узнаю о Coursera, заглядываю туда и вижу такую халяву. Откинув старые убеждения о своей непригодности и воскликнув: «А пошло оно всё!» — записался на курс «Learn to Program: The Fundamentals», который начался на прошлой неделе. А вскоре и на несколько других курсов, + «Introduction to Computer Science I» на edX
В своём первом топике хочу написать свои впечатления от первых двух недель курса, и если кому интересно —
милости просим.

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

Время на прочтение3 мин
Количество просмотров6.2K
Сложный асинхронный обработчик в tornado иногда расползается на десятки callback функций, из-за чего становится трудно воспринимать и модифицировать код. Поэтому существует модуль tornado.gen, позволяющий писать обработчик как генератор. Но много yield gen.Task(...) тоже выглядит не очень. Поэтому в порыве бреда я написал упрощающий запись декоратор:
До После
@asynchronous
@gen.engine
def get(self):
    result, status = yield gen.Task(
        db.users.find_one, {
            '_id': ObjectId(user_id),
        },
    )
@asynchronous
@gen.engine
@shortgen
def get(self):
    result, status << db.users.find_one_e({
        '_id': ObjectId(user_id),
        },
    )

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

Делаем учебник или документацию за час на Сфинксе

Время на прочтение4 мин
Количество просмотров57K
Я веду курс веб-программирования. Когда учишь людей, поговорка «сапожник без сапог» к тебе относиться не должна: ты должен делать всё без видимых усилий и быстро. Учебник должен делаться легко и просто, и выглядеть хорошо.

В общем, если вам нужно сделать документацию, учебник или просто набор текстов с иллюстрациями, то вам нужен Python Sphinx, и здесь я расскажу, как быстро его настроить и использовать.

Пустая страница новой документации
Хочу себе такую же!

Django: запуск при помощи xinetd

Время на прочтение2 мин
Количество просмотров5.5K
Итак, еще один способ запуска Django. Но зачем? Ведь уже каких только способов запуска нет. Казалось бы на любой вкус. Обоснование и описание — под катом.

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

Приводим русские тексты на Mac OS X в одну кодировку Python-скриптом

Время на прочтение6 мин
Количество просмотров43K
Случилось мне иметь ноут на OS X, комп на Linux и одного из друзей с Windows. И вот через dropbox обмениваются все эти три компа документами разными. В том числе и текстовыми, в которых хранятся разные заметки, задачи и т.п. И вот незадача: тексты написанные на MacOSx плохо читаются в блокноте Винды, а виндовые в textedit на MacOSx.

И вся причина в том, что на винде блокнот использует кодировку Windows 1251, а на OS X используется по умолчанию MACCYRILLIC. Причем обе программы без проблем работают с UTF-8 кодировкой.
Вот только конвертировать из одной кодировки в другую как-то неудобно, лишнее время тратить на открытие терминала и набор заветных команд iconv…

Пораздумав, написал небольшой скрипт, который сам определяет используемую кодировку и конвертирует в UTF-8 все txt-файлы.
Читать дальше →

edX/MITx: Введение в информатику и программирование

Время на прочтение1 мин
Количество просмотров15K
Курс начинается 1 октября 2012 года и продлится до 14 января 2013 года. Как и во многих курсах от edX приблизительная нагрузка составляет 12 часов в неделю.

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

Требования для понимания курса: Алгебра средней школы и способности к математике.
При обучении будет использоваться язык Python версии 2.7. Знание языка не требуется.
Читать дальше →

Ближайшие события

Kaylee: распределённые вычисления в браузере

Время на прочтение3 мин
Количество просмотров14K
В 1999 году проект SETI@home предложил пользователям предоставлять ресурсы своих персональных компьютеров для анализа радиосигналов из космоса в целях поиска внеземного разума. В рамках этого проекта в университете Berkley была разработана платформа BOINC (Berkeley Open Infrastructure for Network Computing), на основе которой впоследствии были запущены уже упомянутый SETI@home, ABC@home (доказательство abc-гипотезы), Climateprediction.net (улучшение климатических моделей), LHC@home (симуляция столкновений высокоэнергетических частиц) и другие.

И всё бы хорошо, но для работы BOINC требуется выполнение одного обязательного условия: пользователю требуется скачать, настроить и запустить клиентскую часть. Как же быть, если по каким-либо причинам это невозможно сделать? И как было бы здорово просто кликнуть по ссылке в браузере и вмиг превратить компьютер в звено большой вычислительной сети!

С этими мыслями я взялся за написание Kaylee.

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

Взаимодействие интерпретаторов Python-IronPython-Jython

Время на прочтение2 мин
Количество просмотров7K
Возникла необходимость в решении такой задачи: как обмениваться данными между разными интерпретаторами Python?! Отыскал несколько решений, но хочу рассказать об одном, на мой взгляд, самом удобном.
Читать дальше →

Программа-мечта начинающего питоновода

Время на прочтение7 мин
Количество просмотров140K
Практически любой начинающий программист на Python патологически старается написать свой чат. А если еще и с GUI, то эта прорамма является просто пределом мечтаний.
Читать дальше →

Gray Hat Python — DLL и Code Injection

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

Intro


Порой, когда вы реверсите или атакуете программу, полезно иметь возможность загрузить и выполнить свой код в контексте исследуемого процесса. Крадете ли вы хэши паролей или получаете доступ к удаленному рабочему столу целевой системы, методы внедрения кода и dll-библиотек предоставляют мощные возможности. Мы создадим несколько простых утилит на Питоне, которые позволят вам использовать оба метода. Эти методы должны входить в арсенал каждого разработчика программ, эксплойтов, шелл-кодов и пентестеров. Мы будем использовать внедрение DLL (DLL injection) для запуска всплывающего окна внутри другого процесса. Так же мы будем использовать внедрение кода (code injection), чтобы протестировать шелл-код, разработанный для уничтожения какого-либо процесса основываясь на его PID. Под конец главы мы создадим и скомпилируем Trojan’a (с функционалом backdoor’a) полностью написанного на Python. В большей степени он будет опираться на внедрении кода и использовании некоторых других скрытых тактик, которые должен использовать каждый хороший бэкдор. Давайте начнем с рассмотрения темы создания удаленных потоков, которые являются основой для обоих методов внедрения.
Читать дальше →

Ninja IDE – открытая среда разработки для Python

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

Оказывается, существует «ещё одна IDE» питоническая IDE: написана на Python (с использованием Qt) для Python, распространяемая по GPL. Удивительно, что не все разработчики знают о её существовании (и сам не знал), хотя проект активно зреет уже 2 года и сделано много интересного. Встречайте: Ninja IDE.
Читать дальше →

Emacs и Python (статья 2 из цикла)

Время на прочтение10 мин
Количество просмотров20K
По результатам исследованиям работы программистов около 20% времени тратиться на непосредственное написание кода и около 80% времени — на просмотр старого, его анализ. Исходя из данной предпосылки текстовый редактор в первую очередь должен предоставить удобные средства навигации по коду. Большая часть описанных фич как раз имеет дело с навигацией и анализом.

В данной статье я постараюсь продемонстрировать максимум удобных в ежедневном применении возможностей редактора Emacs для языка Python, и более конкретно для редактирования Django проектов.

Как говорится в пословице: «обещанного три года ждут». Хотя три года и не прошло, но уже изрядно много с моей предыдущей статьи «Emacs для начинающих: введение». Я не буду «растекаться мысью по древу» а постараюсь максимально кратко показать как работают различные фичи Emacs в применении к Python.

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

Неочевидная оптимизация по скорости при решении конкретной задачи на Python

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

Начнём


Имеется SQL база данных. Задача описывается тремя фразами:
  • выгрузка данных
  • валидация данных
  • генерация отчёта

Задача детальнее
Читать дальше →

Вклад авторов