Search
Write a publication
Pull to refresh
40
0
Вадим @n3m0

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

Send message

Международные ягнята

Reading time5 min
Views19K
Несмотря на то, что мировая культура в лице Википедии и Пола Маккартни уверяет нас, что Mary had a little lamb, на территории одной восьмой части суши продолжают считать, что на самом деле «У Мэри был ягнёнок». Кто же на самом деле был у Мэри, и как записать это на разных языках мира? Попробуем выяснить это (а также понять, что думают по этому поводу японцы) вместе с нашим любимым Python-ом и встроенным в него модулем поддержки многоязычных переводов gettext.

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

Прогресбар и нити в PyGTK

Reading time10 min
Views2.4K
Недавно появилась необходимость и желание ознакомится с PyGTK. Литературы на русском по данному вопросу практически нет, а то, что находит гугл в разных блогах — бывает немного устаревшим. Также с удивлением обнаружил, что и на хабре тема PyGTK не особо популярна.

Итак, не буду рассказывать про компоновку элементов интерфейса, ибо такие статьи уже есть. Расскажу про следующий шаг: создание приложения, которое выполняет некую работу, в процессе отображая свой прогресс.
Читать дальше →

Новый API оборудования для Firefox 3.6: ориентация

Reading time2 min
Views549
Одна новая возможность, которую мы делаем частью Firefox 3.6 — это возможность вебостраницам обращаться ко сведениям об ориентации компа в пространстве, когда они доступны. Как вы можете видеть на демонстрации (только в первоисточнике, оттого что Хабрахабр не позволяет использовать <video> в переводах), можно использовать эти сведения, чтобы выяснить, движется ли комп и в каком направлении он повёрнут.

Использовать API весьма просто. Вам достаточно добавить простой слушатель событий:
window.addEventListener(«MozOrientation», function(e) {
              /* 3 values: e.x, e.y, e.z */
              }, true);
Изначально собрав API как желаемую часть нашего грядущего выпуска мобильного браузера, мы сделали API доступным также и для настольных систем. Многие современные компьютеры Macbook и Thinkpad содержат устройства и драйверы, делающие видимыми сведения о положении компьютера. Мы добавили поддержку для Линукса, Маков и некоторых Ѳинкпадов, на которых имеются драйверы и устройства. (Заметим, что на некоторых Макбуки определяют ориентацию, противоположную действительной — над этим мы ещё работаем.)

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

Расширения Firefox — Работа с настройками

Reading time5 min
Views4.5K
Сегодня я хотел бы рассказать о том, как можно реализовать систему настроек для своего расширения. Начиная с определения опций и заканчивая добавлением в ваше расширение возможности менять настройки с помощью созданных вами диалоговых окон.

Первую статью, надеюсь из будущего цикла моих статей, можно найти здесь.

Итак, приступим

Асинхронное программирование: концепция Deferred

Reading time7 min
Views55K
Асинхронная концепция программирования заключается в том, что результат выполнения функции доступен не сразу же, а через некоторое время в виде некоторого асинхронного (нарушающего обычный порядок выполнения) вызова. Зачем такое может быть полезно? Рассмотрим несколько примеров.

Первый пример — сетевой сервер, веб-приложение. Чаще всего как таковых вычислений на процессоре такие приложения не выполняют. Большая часть времени (реального, не процессорного) тратится на ввод-вывод: чтение запроса от клиента, обращение к диску за данными, сетевые обращение к другим подсистемам (БД, кэширующие сервера, RPC и т.п.), запись ответа клиенту. Во время этих операций ввода-вывода процессор простаивает, его можно загрузить обработкой запросов других клиентов. Возможны различные способы решить эту задачу: отдельный процесс на каждое соединение (Apache mpm_prefork, PostgreSQL, PHP FastCGI), отдельный поток (нить) на каждое соединение или комбинированный вариант процесс/нить (Apache mpm_worker, MySQL). Подход с использованием процессов или нитей перекладывает мультиплексирование процессора между обрабатываемыми соединениями на ОС, при этом расходуется относительно много ресурсов (память, переключения контекста и т.п.), такой вариант не подходит для обработки большого количества одновременных соединений, но идеален для ситуации, когда объем вычислений достаточно высок (например, в СУБД). К плюсам модели нитей и процессов можно добавить потенциальное использование всех доступных процессоров в многопроцессорной архитектуре.
Читать дальше →

Собственный сервер Git на базе Ubuntu или Debian/GNU Linux

Reading time2 min
Views81K
Я встречал в сети много tutorial'ов по установке своего сервера git как на gitweb, так и на webdav, но, увы, они либо были только по одному из вышеназванных пунктов, не освещая другой, либо банально не работали. Вчера возникла необходимость поднять свой сервер репозиториев. Потратил пару часов — поднял, теперь хочу поделиться опытом, потому что считаю проблему актуальной :)

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

Создание расширения FireFox для начинающих

Reading time8 min
Views49K
В данной статье представлена пошаговая инструкция по разработке простейшего расширения для FireFox.
Это частичный перевод оригинальной статьи.

Это не моя статья, а моего друга (его мыльце: templar8@gmail.com). Он очень хочет попасть на Хабр. У меня самого не хватает кармы для инвайта.
Текст статьи

Небольшая подборка по превращению в Firefox 3.7 Mockup интерфейс

Reading time1 min
Views1.2K
Недавно я вернулся на Firefox (после Google Chrome и, о ужас (?) IE8)
Сразу предупреждаю, что это все для Vista/7 насчет других ос — не знаю не пробывал (но планирую попробывать, кроме аэро эффектов разумеется)) и извиняюсь за ссылки на англоязычную версию аддон-сайта (писал часть прямо из мануала автора темы)
Почитав новости и тенденции развития Firefox наткнулся на mockup'ы Firefox 3.7. Запряг гугла и собрал себе похожий фейс из этого:
Получить набор ссылок

Хабраподсветка или эксперименты в изолированном окружении Python

Reading time4 min
Views5.1K
Протестировать свежую версию любимого фреймоврка. Запустить приложение со специфичным набором библиотек. Установить необходимые библиотеки по списку зависимостей. Как решить все эти задачи не затронув системные файлы? В этой статье речь пойдет об утилитах virutalenv и pip.
Читать дальше →

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

Reading time10 min
Views150K
PHP один из самых широко используемых языков для создания вебсайтов. PHP фреймворки, такие как Zend, CakePHP, CodeIgniter и т.д и open source классы и библиотеки упростили разработку.
Независимо от того, являетесь ли вы опытным разработчиком или новичком, инструменты, которые вы используете, имеют прямое влияние на вашу продуктивность. Здесь собран список действительно полезных утилит и расширений для PHP разработчиков, которые помогут ускорить разработку, и улучшит итоговое качество кода.
Читать дальше →

Создание сложных приложений в ExtJS.

Reading time8 min
Views4.9K
Автор: Jozef Sakalos, aka Saki
Статья в оригинале: Создание сложного приложение в Ext на blog.extjs.eu

Предисловие


Я решил написать эту статью для тех пользователей Ext 2.x, которые уже переросли одну единственную HTML-страницу со встроенными скриптом, создающим простое окно или форму, для тех, которые уже решили, что Ext — это их путь и для тех, которые превозмогая трудности связанные с большими объемами кода, понимают, что нуждаются в его структурировании.
Сколько людей, столько и мнений. И поэтому способ, который я опишу ниже, не является одним единственным возможным. Также хотелось бы отметить, что не каждое приложение, написанное с применением этого подхода, является гарантированно хорошим. Ничего подобного.
Замечу, что описываемый подход является работоспособным, четко структурированным, без труда поддерживаемым и, одним словом: рабочим!
Читать дальше →

Scrum'd — система управления проектов в стиле Agile

Reading time1 min
Views5.2K
Не так давно, я открыл для себя, систему управления проектами на базе методологии Scrum Описания Scrum'd на Хабре я не разыскал, в связи с этим, под катом мое краткое описание.
Читать дальше →

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

Reading time4 min
Views7.7K
Наверное много кто знает что в jQuery есть набор стандартных событий, таких как Click или MouseDown и прочие, на которые можно повесить обработчики или возбудить с помошью функций click() mousedown() и прочих. Чуть поменьше людей знают, что те-же самые действия можно сделать с помощью функций bind() и trigger():
$(document).bind('click', function(){
  alert('It works!');
});

$(document).trigger('click');


* This source code was highlighted with Source Code Highlighter.

И наверное мало кто знает, что в функциях bind() и trigger() можно использовать свои собственные события. Зачем это нужно, я и хочу рассказать на примере.
Читать дальше →

8 полезных регэкспов с наглядным разбором

Reading time2 min
Views274K
О мощи и гибкости регулярных выражений написано много, и их использование давно уже является стандартом для различного рода операций над текстом. Пожалуй, чаще всего регэкспы работают при валидации вводимых данных — здесь им практически нет альтернативы, если не считать громоздкий циклический разбор с кучей неочевидных проверок. Начнём с самого простого:

1. Часть ЧПУ (человекопонятный URL)


По сути, слово с дефисами.

Паттерн: /^[a-z0-9-]+$/
short_url

Примеры посерьёзнее

Выборка произвольных записей в MySQL

Reading time4 min
Views108K
Есть вроде бы обычные задачи, которые можно решить сразу и не задумываясь, но при интенсивном использовании таких решений возникают проблемы, причем не маленькие. Об одной из таких задач я и хочу рассказать.
Почитать интересную статью

Умная адресная строка

Reading time1 min
Views3.3K
Обычная адресная строка:
image
Но иногда перейдя по такой ссылке возникает потребность попасть на уровень выше.

К примеру на главную:
image
или на любой другой уровень:
image

Идею нужно реализовать при клике с зажатой клавишей alt, так, что бы при комбинации сtrl+alt+клик ссылка открывалась в новой вкладке. А без комбинаций – оставалась привычная всеми функция редактирования адреса вручную.

UPD: я не программист, просто возникла такая идея. Реализовать, кроме как на примере картинками, я не могу.
UPD2: отличный плагин для firefox, спасибо Elanc.
UPD3: в Safari Cmd+клик по заголовку браузера Snobit

Заметки о метапрограммировании в Python

Reading time2 min
Views7K
По мере накопления опыта программирования на одном языке, все мы нарабатываем стандартные для себя приемы программирования. Чем выше наш опыт, тем больше количество, более разносторонни методы их работы. При переходе на другой язык, мы стараемся их воспроизвести. Иногда, такое бывает что часть из них неактуальна или неэффективна. Большую часть времени от изучения языка отнимают новые несвойственные прежним нам, приемы. Я хотел бы отметить некоторые особенности Python, которые для меня были не очевидны поначалу освоения.
Читать дальше →

Один шаблон формы для всего проекта

Reading time6 min
Views5.3K
Часто в одном проекте встречаются различные по структуре формы, где-то label элемента и сам элемент формы находятся на одной строке, где-то друг под другом, в одном случае нужна форма занимающая всю предоставленную ей ширину (например написание/редактирование статьи), в другом лишь определенную, заданную ширину (например форма регистрации/авторизации), да и внешнее оформление бывает разным.

Из за этого многие верстальщики начинают верстать каждую форму по отдельности, давая им и их элементам различные стили, тем самым усложняя работу себе и тем людям, кто будет собирать эти макеты.
Читать дальше →

Что на самом деле сделал Google

Reading time3 min
Views2.4K
Я осознал. Только что. Наверное, я тормоз… но пока эта мысль нигде не озвучивалась.
Итак, пока все спорят, насколько хорош браузер Chrome, меряются тестами и ждут портов на Линукс и Мак, основная революция произойдет совсем не там.
Она кроется в маленькой незаметной кнопочке «создать ярлыки приложения».
Воспользовавшись этой функцией, вы получаете на рабочем столе или в главном меню ярлык на свой любимый сайт, который откроется без панели навигации и прочих ненужных элементов. Например, я первым делом создал такой ярлык для Google Reader. И удивился, насколько шустро он стал работать. Ну собственно, ничего удивительного. Наверняка для своих приложений Гугл оптимизировал JavaScript и собственный же движок.

Ну да суть не в этом. Что я получил? Я получил отличный, удобный, шустрый RSS-reader, который ничуть не уступает своим традиционным аналогам. Потом я наткнулся на забавную статью о том, как можно тем же способом получить неплохой калькулятор. А сколько уже небольших, приятных сервисов существует в сети? Тут и календари и текстовые редакторы и даже сложные графические приложения.
А теперь вспоминаем, какие основные особенности нового браузера от Google: оптимизация работы JavaScript (ускорение просто в разы!) и самостоятельные потоки для каждого окна. То есть одно кривое приложение не подвесит и не повалит остальные (сейчас может, но это исправят). В результате мы получаем… почти идеальную платформу для приложений.

Полная кросс-платформенность. HTML и JavaScript худо-бедно, но работают на любой операционной системе (где будет Google Chrome). Простота разработки и огромное количество готовых фреймворков. Огромное количество удобных бесплатных редакторов и сред разработки. Решение проблемы с обновлениями софта. Пользователь автоматически работает с самой последней версией. Замечательная обратная связь и статистика. Вы будете совершенно точно знать, какие функции вашей программы наиболее востребованы, оценивают ли пользователи ваши гениальные идеи или применяют приложение совершенно неожиданным способом. Кстати, не удивлюсь, если в Chrome встроен сборщик статистики, который отправляет много интересной информации в Корпорацию Зла Google. Но не удивлюсь и в том случае, если он туда не встроен. :)

Теперь следующий тонкий момент: браузер с открытым исходным кодом. Значит, наработками Google смогут воспользоваться и разработчики других, альтернативных браузеров. Даже великий и ужасный IE сможет включить аналогичные функции. И вот как раз это Google и надо. Зачем распространять свой браузер, если основную фичу можно продвинуть руками конкурентов. И пусть даже доля Chrome будет два процента, но если при этом все остальные браузеры станут поддерживать интернет-приложения, Google своего добьется.

А добьется он того, к чему стремится уже очень давно: повальной миграции пользователей на веб-приложения и сервисы. И кажется, на этот раз у него это получится. Да, серьезный софт, завязанный на сложные вычисления или требующий низкоуровневой работы с железом, никуда не денется. Но посмотрите сами на свой рабочий стол. Много там таких приложений? А сколько всяких мелких утилит для ежедневной работы? А ведь приличное их количество может работать через веб, ничуть не теряя функциональности.
К слову, никто не мешает делать ссылку и на локальную копию веб-сайта. И не удивляйтесь, если завтра ваша любимая программа X выйдет не в виде исполняемого файла, а в виде кучи HTML и JS кода, распакованного на ваш жесткий диск.

В общем, скоро мы окажемся в новом мире. Которым будет править не Microsoft, но Google.

первая книга о Django на русском

Reading time1 min
Views28K

Django. Разработка веб-приложений на Python


первая книга о Django на русскомС помощью простой и надежной платформы Django, основанной на языке Python, можно создавать мощные веб-решения, написав всего несколько строк кода. Ее использование позволяет обеспечить высокую скорость и гибкость разработки, а также решать широкий спектр прикладных задач. Авторы, опытные разработчики, описывают все приемы, инструменты и концепции, которые необходимо знать, чтобы оптимально использовать Django 1.0, включая все основные особенности новой версии.
Это полное руководство начинается с введения в Python, затем подробно обсуждаются основные компоненты Django (модели, представления и шаблоны) и порядок организации взаимодействия между ними. Описываются методы разработки конкретных приложений: блог, фотогалерея, система управления содержимым, инструмент публикации фрагментов кода с подсветкой синтаксиса. После этого рассматриваются более сложные темы: расширение системы шаблонов, синдицирование, настройка приложения администрирования и тестирование веб-приложений. Авторы раскрывают разработчику секреты Django, давая подробные разъяснения и предоставляя большое количество примеров программного кода, сопровождая их построчным описанием и иллюстрациями.
Читать дальше →

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Date of birth
Registered
Activity