Как стать автором
Обновить
14
0.6
middle @middle

Пользователь

Отправить сообщение

Работа с Postgresql: настройка, масштабирование. Дополненное издание

Время на прочтение1 мин
Количество просмотров4K
image
Привет всему хабросообществу.

Время не стоит на месте. После публикации моего справочника по Postgresql очень многое успело поменяться, а точнее добавиться в эту отличную СУБД. После выхода PostgreSQL 9 версии я понял, что потребуется добавить информацию о нововведениях для этой версии. Тем более, что 9 версия знаменуется выходом репликации из коробки.
Читать дальше →
Всего голосов 88: ↑87 и ↓1+86
Комментарии26

Пишем свой драйвер под Linux

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

Хочу признаться сразу, что я вас отчасти обманул, ибо драйвер, если верить википедии это компьютерная программа, с помощью которой другая программа (обычно операционная система) получает доступ к аппаратному обеспечению некоторого устройства. А сегодня мы создадим некую заготовку для драйвера, т.к. на самом деле ни с каким железом мы работать не будем. Эту полезную функциональность вы сможете добавить сами, если пожелаете.

То, что мы сегодня создадим, корректнее будет назвать LKM (Linux Kernel Module или загрузочный модуль ядра). Стоит сказать, что драйвер – это одна из разновидностей LKM.

Писать модуль мы будем под ядра линейки 2.6. LKM для 2.6 отличается от 2.4. Я не буду останавливаться на различиях, ибо это не входит в рамки поста.

Мы создадим символьное устройство /dev/test, которое будет обрабатываться нашим модулем. Хочу сразу оговориться, что размещать символьное устройство не обязательно в каталоге /dev, просто это является частью «древнего магического ритуала».

Читать дальше →
Всего голосов 251: ↑240 и ↓11+229
Комментарии78

Python Tips, Tricks, and Hacks (часть 2)

Время на прочтение6 мин
Количество просмотров133K
Содержание

Списки. Свёртка списка (reduce). Прохождение по списку (range, xrange и enumerate). Проверка всех элементов списка на выполнение условия (all и any). Группировка элементов нескольких списков (zip). Еще несколько операторов для работы со списками. Продвинутые логические операции с типом set.
Словари. Создание словаря с помощью именованных аргументов. Преобразование словаря в список и обратно. «Dictionary Comprehensions».
Читать дальше →
Всего голосов 69: ↑66 и ↓3+63
Комментарии30

Django в неблокирующем стиле, или в погоне за Священным Граалем

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

Присказка


При чтении о Twisted, Tornado, Node.js, у многих python-программистов возникает вопрос — «а вот если взять, и переписать Django в неблокирующем стиле?». Обычный ответ на этот вопрос — нет, не дождетесь. И правда, чтобы переписать целый фреймворк в макаронно-колбечном стиле, надо очень много сил, и большой заряд энтузиазма. Писать с колбеками, очень сомнительное удовольствие.

Так бы и было, но как я писал в своей прошлой заметке, есть в python-мире greenlet-ы, которые легким движением руки помогают скрыть от программиста все эти асинхронные моменты, до определенной степени. В момент написания той заметки, к мысли заставить работать Django в неблокирующем режиме, я относился весьма скептически — ну в самом деле, кто за это возьмется?

Читать дальше →
Всего голосов 65: ↑56 и ↓9+47
Комментарии64

Настраиваем Vim под Python

Время на прочтение4 мин
Количество просмотров43K
Сегодня я хочу рассказать вам, как я настраивал любимый всеми редактор Vim (который в одном режиме пищит, а в другом — все портит) для написания кода на Python. Статья расчитана на начинающих виммеров.
У меня получилась такая картинка:

Настроить и свой!
Всего голосов 69: ↑65 и ↓4+61
Комментарии61

Распространение приложений на twisted

Время на прочтение5 мин
Количество просмотров6K
imageМоя работа — создание различных приложений на Twisted для работы с многочисленными веб-сервисами. В отличие от проектов на TurboGears, которые я распространяю как eggs с помощью easy_install (через setuptools) у меня не было удобного способа «выкатить» проекты на Twisted.

До этого момента.
Читать дальше →
Всего голосов 28: ↑23 и ↓5+18
Комментарии14

Rework по-русски — краткий обзор

Время на прочтение2 мин
Количество просмотров36K
Привет, хабрадрузья!
Как уже обсуждалось здесь, на русском языке вышла книга 37 signals «Rework».
Хотел бы поделиться с вами своим мнением относительно неё.
image
Эту книгу ждали многие. В их числе был и я. Rework произвел на меня впечатление еще в англоязычном варианте. Оставалось узнать, насколько он хорош в русскоязычном.
Читать дальше →
Всего голосов 114: ↑96 и ↓18+78
Комментарии86

Несколько слов об Ext.Direct

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

Вместо предисловия


Давно хотел опубликовать что-то полезное и вот, наконец, решил рассказать об Ext.Direct. Не видел ни одной более-менее обширной статьи на русском по данной теме, то ли это никому не нужно, то ли одно из двух, как бы то ни было начнем.

Что из себя представляет Ext.Direct?

Ext.Direct существует начиная с версии extjs 3.0. Это пакет который позволяет осуществить более тесное взаимодействие между сервером и клиентом. Вспоминая версию 2.0+ понимаю как же мне не хватало «директа».

Client Side


Возможности Ext.Direct реализованы в классах пакета Ext.data (DirectStore, DirectProxy), соответственно DirectStore в качестве ридера использует JsonReader. Так же существует пакет Ext.direct, в частности класс PollingProvider реализует переодический опрос сервера с заданным интервалом. Ну и Ext.Direct, о нем вскользь ниже и Ext.Direct.Transaction, вспомогательный класс, который напрямую не вызывается.
Читать дальше →
Всего голосов 31: ↑29 и ↓2+27
Комментарии41

Сумбурные заметки про python и django

Время на прочтение5 мин
Количество просмотров47K
Накопилось несколько маленьких заметок/советов про python и django, которые на отдельные топики не тянут, поэтому публикую все сразу.

Под катом:
  • как упростить код вьюх ровно в 2 раза
  • легкий способ рисования графиков
  • почему Ian Bicking воскликнул «Cool!»
  • приложения для ВКонтакте на django за 5 минут
  • хорош ли pymorphy?
  • пара фишек насчет выкладки пакетов на pypi
  • что общего между декораторами и with-контекст-менеджерами
  • принимаем оплату на django-сайтах
  • показываем Яндекс.Карту для заданного адреса

Читать дальше →
Всего голосов 159: ↑153 и ↓6+147
Комментарии37

JSNAV

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

Навигация по странице


Всё чаще и чаще в web появляются сайты, использующие навигацию, написанную на JavaScript. Типичный случай использования javascript для навигации: страница с меню и блоком контента, куда через AJAX подгружается содержимое:



Пользователь кликает по пункту, JavaScript грузит из сети содержимое, вставляет в блок контента, пользователь доволен: страница без перезагрузки показывает требуемое и траффика потребовалось меньше за счёт того, что не потребовалось грузить все эти HEAD, BODY, STYLE и прочие элементы.

Но вот проблема: URL страницы. Если на old scool сайтах на каждый пункт меню показывается новая HTML страница, и у пользователя есть вменяемый URI, который он может скопировать из адресной строки бразуера, послать другу или положить в закладки, то в случае AJAX интерфейсов в URI странице зачастую нет никаких ссылок на текущий контент документа.

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

Не с секрет, что для решения этой проблемы многие программисты кодируют ссылку на текущее просматриваемое содержимое в якорь (anchor) URI документа. К примеру, на сайте jqapi.com (скриншот которого приведён вначале топика) при выборе того или иного пункта меню якорь страницы меняется на #p={contentId}.
Читать дальше →
Всего голосов 72: ↑63 и ↓9+54
Комментарии97

Опубликован весь архив Computer Science клуб при ПОМИ РАН

Время на прочтение2 мин
Количество просмотров6.2K
Добрый день!

Как представитель проекта Лекториум рад сообщить — мы опубликовали весь архив Computer Science клуба.
Кроме того, почти год назад мы организовали запись всех лекций на хорошие камеры и микрофоны.
А в этом году планируем подключить вебинары.


Большинство лекций читается на русском языке. Все записи снабжены презентациями и описаниями.

UPD. Кратко. Старые лекции в плохом качестве, а новые с 2010 года с хорошим звуком и в 720p.
UPD 2 Расширили канал, видео грузится теперь без проблем.

Под катом перечень курсов и несколько вопросов касательно вебинаров.
Читать дальше →
Всего голосов 231: ↑227 и ↓4+223
Комментарии78

Сохраняем видео из Flash Player 10.2 или unlink нам не помеха

Время на прочтение5 мин
Количество просмотров39K
Я, как, вероятно, и многие другие пользователи Linux, привык сохранять видео с сайтов вроде YouTube, копируя временные файлы, создаваемые Adobe Flash. Примерно так:
$ cp /tmp/FlashIBmQCU video.flv

Поставив свежий пре-релиз флэш-плеера, который на днях обсуждали на хабре (у меня 64-битная система), я с удивлением обнаружил, что этот способ больше не работает, так как никакие файлы во временном каталоге не создаются. Рассудив, однако, что едва ли плеер хранит видео целиком в памяти, и куда-то он его всё-таки должен писать, я приступил к расследованию.
Читать дальше →
Всего голосов 135: ↑130 и ↓5+125
Комментарии53

Полнофункциональный RDP клиент — FreeRDP

Время на прочтение3 мин
Количество просмотров423K
Не секрет, что в современном мире без продуктов Microsoft практически не обойтись. Однако во многих случаях получается так, что гораздо эффективней использовать на рабочих компьютерах системы на базе GNU/Linux, а не Windows. Это значительно упрощает администрирование и сокращает расходы, предоставляя при этом пользователям гораздо больше легкодоступного функционала. Но что делать с теми приложениями, которые работают только под Windows и которым нет подходящего аналога в мире Linux? Поскольку обычно таких приложений единицы (иначе просто нету смысла ставить Linux на рабочий компьютер), то разумным выбором может стать использование терминальных серверов, работающих под серверными ОС от Microsoft. Кроме того, Linux лучше всего подходит для любых тонких клиентов, поскольку адекватных версий Windows для них просто не существует.

В любом случае необходимо уметь подключаться к терминальным серверам Windows. Для этого в MS был разработан свой протокол удалённого рабочего стола — RDP. Однако до недавнего времени для Linux существовал единственный открытый клиент для работы с этим протоколом — rdesktop. К сожалению, его развитие давно остановилось, и он испытывает огромные трудности при взаимодействии с современными версиями Windows.

Но недавно тихо и незаметно проект rdesktop был форкнут, в результате чего на свет появился новый открытый RDP клиент — FreeRDP. Первый же релиз этой программы разом исправил большинство известных проблем rdesktop, и проект продолжает активно развиваться. Почему-то появление столь полезного приложение обошли вниманием, поэтому я и решил опубликовать этот пост, чтобы хоть как-то исправить эту ситуацию и рассказать всем о существовании нормального RDP клиента для Linux. Под катом — описание возможностей FreeRDP и немного про отличную графическую оболочку Remmina для него.

Читать дальше →
Всего голосов 93: ↑87 и ↓6+81
Комментарии75

Загрузка классов в Java. Практика

Время на прочтение7 мин
Количество просмотров84K
Данная статья является продолжением статьи Загрузка классов в Java. Теория.

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

Код приложения не претендует на оригинальность, а лишь объясняет подходы и принципы написания пользовательских загрузчиков классов и методы инвокации динамического кода.
Читать дальше →
Всего голосов 37: ↑33 и ↓4+29
Комментарии19

Непрерывное wavelet преобразование

Время на прочтение5 мин
Количество просмотров56K
Здравствуйте, уважаемое хабрасообщество.
В последнее время на хабре стали появляться статьи, так или иначе связанные с анализом и обработкой сигналов и изображений (например Обнаружение устойчивых признаков изображения: метод SURF, Интегральное представление изображений от BigObfuscator), в связи с чем я хотел бы вкратце осветить такой инструмент для анализа сигналов, как wavelet-преобразование.

Для того, чтобы понять смысл вейвлет анализа начнем довольно издалека. В данной статье описывается математический смысл (простыми словами) вейвлет-преобразований, о применимости и его дискретной версии я расскажу позднее.

Спектральный анализ — это один из методов обработки сигналов, который позволяет характеризовать частотную составляющую измеряемого сигнала.

Читать дальше →
Всего голосов 66: ↑63 и ↓3+60
Комментарии55

Правильный захват контекста в Javascript

Время на прочтение5 мин
Количество просмотров37K
Довольно часто во многих статьях я вижу, как люди захватывают контекст this для использования в анонимной функции и удивляюсь — то, что уже стало стандартом — просто ужасная практика, которая противоречит всем канонам программирования. Вам знакома такая запись?
var self this;
Может вам тоже стоит переосмыслить этот аспект?
Читать дальше →
Всего голосов 113: ↑87 и ↓26+61
Комментарии147

Жизнь в облаках

Время на прочтение4 мин
Количество просмотров12K
Ещё недавно проблема синхронизации всего и вся меня мало волновала, как-то жил без этого, поскольку работал постоянно на одном компьютере, на ноутбуке хватало браузера с интернетом, основные пароли просто помнил или хранил зашифрованную базу на флешке.
Позже необходимость больше работать в разных местах на ноутбуке или втором компьютере привели к мыслям об организации дел. Варианты рассматривались следующие:
1. поставить на основном компьютере TeamViewer, чтобы он был всегда доступен.
2. использовать Dropbox для синхронизации всех необходимых файлов.
3. найти онлайн-сервисы для перенесения активности в них. Это решение позволит:
• работать с любого компьютера и любой ОС (хочется перейти на Линукс как основную ОС, оставив Винду для Старкрафта).
• не таскать с собой флешек и вообще даёт максимальный комфорт и независимость.
На этом решении и остановился, хотя всё ещё нахожусь в процессе поиска, хотел бы поделиться найденным и послушать советов по продолжению.

Итак, что переносим в онлайн?


Читать дальше →
Всего голосов 55: ↑45 и ↓10+35
Комментарии109

F3: маленький PHP-фреймворк с огромными возможностями

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


Хочу представить вашему вниманию легковесный PHP-фреймворк, на который я недавно наткнулся и который сразу же полюбил.

Fat-Free чем-то похож на известный Ruby-фреймворк Sinatra. Автор Fat-Free помешан на минимализме и чистоте кода, что положительно отразилось на этом простом каркасе для разработки самых разнообразных приложений.

Fat-Free состоит из одного файла и весит всего 55KB. При этом фреймворк обладает таким функционалом: специфический и довольно удобный шаблонизатор, гибкое кеширование, автоматическая защита от спама, интегрированные средства для юнит тестов, профайлер кода.

Он настолько маленький и быстрый, что даже может использоваться для контроля траффика Web-сервера.

Это, также, единственный фреймворк, который защищает Ваше приложение от хотлинкинга и DoS атак.
Читать дальше →
Всего голосов 172: ↑152 и ↓20+132
Комментарии102

Алгоритм Хафа для обнаружения произвольных кривых на изображениях

Время на прочтение4 мин
Количество просмотров47K
Преобразование Хафа — это метод обнаружения прямых и кривых линий на полутоновых или цветных изображениях. Метод позволяет указать параметры семейства кривых и обеспечивает поиск на изображении множества кривых заданного семейства. Мы рассмотрим его применение для поиска на изображении прямолинейных отрезков и дуг окружностей.

Читать дальше →
Всего голосов 87: ↑75 и ↓12+63
Комментарии25

8 вещей, которые я хотел бы знать, когда начинал свой бизнес

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

Предисловие


В мире, наполненном стартапами, успех или неудачу сложно предсказать. Но одно можно сказать точно: тот, кто решается открыть своё дело, уже никогда не будет таким, как прежде. Постоянные трудности, связанные с появлением новых возможностей и проблем, делают процесс удивительным и интересным. Я думаю, что именно поэтому многие люди начинают своё дело, несмотря на наличие другой (более простой) альтернативы — работать на кого-то другого.
За свою жизнь я открыл несколько фирм и могу сказать, что некоторые извлечённые мной уроки были интуитивно понятны и доступны, в то время как другие — далеко не так просты и очевидны. Однако, учитывая временные и денежные затраты на понимание этих уроков, ни один из них я не могу назвать дешёвым.
Эти уроки изменили моё мировозрение, изменили меня как личность. Я рад, что мне пришлось столкнуться с ними, но это не значит, что я не хотел бы знать их изначально.
Вот эти восемь вещей, которые я хотел бы знать, когда начинал своё первое дело.
Читать дальше →
Всего голосов 166: ↑147 и ↓19+128
Комментарии64

Информация

В рейтинге
1 859-й
Откуда
Barcelona, Barcelona, Испания
Дата рождения
Зарегистрирован
Активность

Специализация

Backend Developer
Senior