Несмотря на то, что мировая культура в лице Википедии и Пола Маккартни уверяет нас, что Mary had a little lamb, на территории одной восьмой части суши продолжают считать, что на самом деле «У Мэри был ягнёнок». Кто же на самом деле был у Мэри, и как записать это на разных языках мира? Попробуем выяснить это (а также понять, что думают по этому поводу японцы) вместе с нашим любимым Python-ом и встроенным в него модулем поддержки многоязычных переводов gettext.
Вадим @n3m0
Пользователь
Прогресбар и нити в PyGTK
10 min
2.4KНедавно появилась необходимость и желание ознакомится с PyGTK. Литературы на русском по данному вопросу практически нет, а то, что находит гугл в разных блогах — бывает немного устаревшим. Также с удивлением обнаружил, что и на хабре тема PyGTK не особо популярна.
Итак, не буду рассказывать про компоновку элементов интерфейса, ибо такие статьи уже есть. Расскажу про следующий шаг: создание приложения, которое выполняет некую работу, в процессе отображая свой прогресс.
Итак, не буду рассказывать про компоновку элементов интерфейса, ибо такие статьи уже есть. Расскажу про следующий шаг: создание приложения, которое выполняет некую работу, в процессе отображая свой прогресс.
+36
Новый API оборудования для Firefox 3.6: ориентация
2 min
549Tutorial
Translation
Одна новая возможность, которую мы делаем частью Firefox 3.6 — это возможность вебостраницам обращаться ко сведениям об ориентации компа в пространстве, когда они доступны. Как вы можете видеть на демонстрации (только в первоисточнике, оттого что Хабрахабр не позволяет использовать <video> в переводах), можно использовать эти сведения, чтобы выяснить, движется ли комп и в каком направлении он повёрнут.
Использовать API весьма просто. Вам достаточно добавить простой слушатель событий:
Использовать API весьма просто. Вам достаточно добавить простой слушатель событий:
window.addEventListener(«MozOrientation», function(e) {Изначально собрав API как желаемую часть нашего грядущего выпуска мобильного браузера, мы сделали API доступным также и для настольных систем. Многие современные компьютеры Macbook и Thinkpad содержат устройства и драйверы, делающие видимыми сведения о положении компьютера. Мы добавили поддержку для Линукса, Маков и некоторых Ѳинкпадов, на которых имеются драйверы и устройства. (Заметим, что на некоторых Макбуки определяют ориентацию, противоположную действительной — над этим мы ещё работаем.)
/* 3 values: e.x, e.y, e.z */
}, true);
+19
Расширения Firefox — Работа с настройками
5 min
4.5KСегодня я хотел бы рассказать о том, как можно реализовать систему настроек для своего расширения. Начиная с определения опций и заканчивая добавлением в ваше расширение возможности менять настройки с помощью созданных вами диалоговых окон.
Первую статью, надеюсь из будущего цикла моих статей, можно найти здесь.
Первую статью, надеюсь из будущего цикла моих статей, можно найти здесь.
+25
Асинхронное программирование: концепция Deferred
7 min
55KАсинхронная концепция программирования заключается в том, что результат выполнения функции доступен не сразу же, а через некоторое время в виде некоторого асинхронного (нарушающего обычный порядок выполнения) вызова. Зачем такое может быть полезно? Рассмотрим несколько примеров.
Первый пример — сетевой сервер, веб-приложение. Чаще всего как таковых вычислений на процессоре такие приложения не выполняют. Большая часть времени (реального, не процессорного) тратится на ввод-вывод: чтение запроса от клиента, обращение к диску за данными, сетевые обращение к другим подсистемам (БД, кэширующие сервера, RPC и т.п.), запись ответа клиенту. Во время этих операций ввода-вывода процессор простаивает, его можно загрузить обработкой запросов других клиентов. Возможны различные способы решить эту задачу: отдельный процесс на каждое соединение (Apache mpm_prefork, PostgreSQL, PHP FastCGI), отдельный поток (нить) на каждое соединение или комбинированный вариант процесс/нить (Apache mpm_worker, MySQL). Подход с использованием процессов или нитей перекладывает мультиплексирование процессора между обрабатываемыми соединениями на ОС, при этом расходуется относительно много ресурсов (память, переключения контекста и т.п.), такой вариант не подходит для обработки большого количества одновременных соединений, но идеален для ситуации, когда объем вычислений достаточно высок (например, в СУБД). К плюсам модели нитей и процессов можно добавить потенциальное использование всех доступных процессоров в многопроцессорной архитектуре.
Первый пример — сетевой сервер, веб-приложение. Чаще всего как таковых вычислений на процессоре такие приложения не выполняют. Большая часть времени (реального, не процессорного) тратится на ввод-вывод: чтение запроса от клиента, обращение к диску за данными, сетевые обращение к другим подсистемам (БД, кэширующие сервера, RPC и т.п.), запись ответа клиенту. Во время этих операций ввода-вывода процессор простаивает, его можно загрузить обработкой запросов других клиентов. Возможны различные способы решить эту задачу: отдельный процесс на каждое соединение (Apache mpm_prefork, PostgreSQL, PHP FastCGI), отдельный поток (нить) на каждое соединение или комбинированный вариант процесс/нить (Apache mpm_worker, MySQL). Подход с использованием процессов или нитей перекладывает мультиплексирование процессора между обрабатываемыми соединениями на ОС, при этом расходуется относительно много ресурсов (память, переключения контекста и т.п.), такой вариант не подходит для обработки большого количества одновременных соединений, но идеален для ситуации, когда объем вычислений достаточно высок (например, в СУБД). К плюсам модели нитей и процессов можно добавить потенциальное использование всех доступных процессоров в многопроцессорной архитектуре.
+34
Собственный сервер Git на базе Ubuntu или Debian/GNU Linux
2 min
81KЯ встречал в сети много tutorial'ов по установке своего сервера git как на gitweb, так и на webdav, но, увы, они либо были только по одному из вышеназванных пунктов, не освещая другой, либо банально не работали. Вчера возникла необходимость поднять свой сервер репозиториев. Потратил пару часов — поднял, теперь хочу поделиться опытом, потому что считаю проблему актуальной :)
+33
Создание расширения FireFox для начинающих
8 min
49KВ данной статье представлена пошаговая инструкция по разработке простейшего расширения для FireFox.
Это частичный перевод оригинальной статьи.
Это не моя статья, а моего друга (его мыльце: templar8@gmail.com).Он очень хочет попасть на Хабр. У меня самого не хватает кармы для инвайта.
Это частичный перевод оригинальной статьи.
Это не моя статья, а моего друга (его мыльце: templar8@gmail.com).
+84
Небольшая подборка по превращению в Firefox 3.7 Mockup интерфейс
1 min
1.2KНедавно я вернулся на Firefox (после Google Chrome и, о ужас (?) IE8)
Сразу предупреждаю, что это все для Vista/7 насчет других ос — не знаю не пробывал (но планирую попробывать, кроме аэро эффектов разумеется)) и извиняюсь за ссылки на англоязычную версию аддон-сайта (писал часть прямо из мануала автора темы)
Почитав новости и тенденции развития Firefox наткнулся на mockup'ы Firefox 3.7. Запряг гугла и собрал себе похожий фейс из этого:
Сразу предупреждаю, что это все для Vista/7 насчет других ос — не знаю не пробывал (но планирую попробывать, кроме аэро эффектов разумеется)) и извиняюсь за ссылки на англоязычную версию аддон-сайта (писал часть прямо из мануала автора темы)
Почитав новости и тенденции развития Firefox наткнулся на mockup'ы Firefox 3.7. Запряг гугла и собрал себе похожий фейс из этого:
+1
Хабраподсветка или эксперименты в изолированном окружении Python
4 min
5.1KПротестировать свежую версию любимого фреймоврка. Запустить приложение со специфичным набором библиотек. Установить необходимые библиотеки по списку зависимостей. Как решить все эти задачи не затронув системные файлы? В этой статье речь пойдет об утилитах virutalenv и pip.
+26
Список полезных инструментов для php разработчика
10 min
150KTranslation
PHP один из самых широко используемых языков для создания вебсайтов. PHP фреймворки, такие как Zend, CakePHP, CodeIgniter и т.д и open source классы и библиотеки упростили разработку.
Независимо от того, являетесь ли вы опытным разработчиком или новичком, инструменты, которые вы используете, имеют прямое влияние на вашу продуктивность. Здесь собран список действительно полезных утилит и расширений для PHP разработчиков, которые помогут ускорить разработку, и улучшит итоговое качество кода.
Независимо от того, являетесь ли вы опытным разработчиком или новичком, инструменты, которые вы используете, имеют прямое влияние на вашу продуктивность. Здесь собран список действительно полезных утилит и расширений для PHP разработчиков, которые помогут ускорить разработку, и улучшит итоговое качество кода.
+186
Создание сложных приложений в ExtJS.
8 min
4.9KTranslation
Автор: Jozef Sakalos, aka Saki
Статья в оригинале: Создание сложного приложение в Ext на blog.extjs.eu
Я решил написать эту статью для тех пользователей Ext 2.x, которые уже переросли одну единственную HTML-страницу со встроенными скриптом, создающим простое окно или форму, для тех, которые уже решили, что Ext — это их путь и для тех, которые превозмогая трудности связанные с большими объемами кода, понимают, что нуждаются в его структурировании.
Сколько людей, столько и мнений. И поэтому способ, который я опишу ниже, не является одним единственным возможным. Также хотелось бы отметить, что не каждое приложение, написанное с применением этого подхода, является гарантированно хорошим. Ничего подобного.
Замечу, что описываемый подход является работоспособным, четко структурированным, без труда поддерживаемым и, одним словом: рабочим!
Статья в оригинале: Создание сложного приложение в Ext на blog.extjs.eu
Предисловие
Я решил написать эту статью для тех пользователей Ext 2.x, которые уже переросли одну единственную HTML-страницу со встроенными скриптом, создающим простое окно или форму, для тех, которые уже решили, что Ext — это их путь и для тех, которые превозмогая трудности связанные с большими объемами кода, понимают, что нуждаются в его структурировании.
Сколько людей, столько и мнений. И поэтому способ, который я опишу ниже, не является одним единственным возможным. Также хотелось бы отметить, что не каждое приложение, написанное с применением этого подхода, является гарантированно хорошим. Ничего подобного.
Замечу, что описываемый подход является работоспособным, четко структурированным, без труда поддерживаемым и, одним словом: рабочим!
+44
+1
Пример использования пользовательских событий
4 min
7.7KНаверное много кто знает что в jQuery есть набор стандартных событий, таких как Click или MouseDown и прочие, на которые можно повесить обработчики или возбудить с помошью функций click() mousedown() и прочих. Чуть поменьше людей знают, что те-же самые действия можно сделать с помощью функций bind() и trigger():
И наверное мало кто знает, что в функциях bind() и trigger() можно использовать свои собственные события. Зачем это нужно, я и хочу рассказать на примере.
$(document).bind('click', function(){
alert('It works!');
});
$(document).trigger('click');
* This source code was highlighted with Source Code Highlighter.
И наверное мало кто знает, что в функциях bind() и trigger() можно использовать свои собственные события. Зачем это нужно, я и хочу рассказать на примере.
+39
8 полезных регэкспов с наглядным разбором
2 min
274KО мощи и гибкости регулярных выражений написано много, и их использование давно уже является стандартом для различного рода операций над текстом. Пожалуй, чаще всего регэкспы работают при валидации вводимых данных — здесь им практически нет альтернативы, если не считать громоздкий циклический разбор с кучей неочевидных проверок. Начнём с самого простого:
По сути, слово с дефисами.
Паттерн: /^[a-z0-9-]+$/

1. Часть ЧПУ (человекопонятный URL)
По сути, слово с дефисами.
Паттерн: /^[a-z0-9-]+$/

+88
Выборка произвольных записей в MySQL
4 min
108KЕсть вроде бы обычные задачи, которые можно решить сразу и не задумываясь, но при интенсивном использовании таких решений возникают проблемы, причем не маленькие. Об одной из таких задач я и хочу рассказать.
+12
Умная адресная строка
1 min
3.3KОбычная адресная строка:

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

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

Идею нужно реализовать при клике с зажатой клавишей alt, так, что бы при комбинации сtrl+alt+клик ссылка открывалась в новой вкладке. А без комбинаций – оставалась привычная всеми функция редактирования адреса вручную.
UPD: я не программист, просто возникла такая идея. Реализовать, кроме как на примере картинками, я не могу.
UPD2: отличный плагин для firefox, спасибо Elanc.
UPD3: в Safari Cmd+клик по заголовку браузера Snobit

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

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

Идею нужно реализовать при клике с зажатой клавишей alt, так, что бы при комбинации сtrl+alt+клик ссылка открывалась в новой вкладке. А без комбинаций – оставалась привычная всеми функция редактирования адреса вручную.
UPD: я не программист, просто возникла такая идея. Реализовать, кроме как на примере картинками, я не могу.
UPD2: отличный плагин для firefox, спасибо Elanc.
UPD3: в Safari Cmd+клик по заголовку браузера Snobit
+124
Заметки о метапрограммировании в Python
2 min
7KПо мере накопления опыта программирования на одном языке, все мы нарабатываем стандартные для себя приемы программирования. Чем выше наш опыт, тем больше количество, более разносторонни методы их работы. При переходе на другой язык, мы стараемся их воспроизвести. Иногда, такое бывает что часть из них неактуальна или неэффективна. Большую часть времени от изучения языка отнимают новые несвойственные прежним нам, приемы. Я хотел бы отметить некоторые особенности Python, которые для меня были не очевидны поначалу освоения.
+34
Один шаблон формы для всего проекта
6 min
5.3KЧасто в одном проекте встречаются различные по структуре формы, где-то label элемента и сам элемент формы находятся на одной строке, где-то друг под другом, в одном случае нужна форма занимающая всю предоставленную ей ширину (например написание/редактирование статьи), в другом лишь определенную, заданную ширину (например форма регистрации/авторизации), да и внешнее оформление бывает разным.
Из за этого многие верстальщики начинают верстать каждую форму по отдельности, давая им и их элементам различные стили, тем самым усложняя работу себе и тем людям, кто будет собирать эти макеты.
Из за этого многие верстальщики начинают верстать каждую форму по отдельности, давая им и их элементам различные стили, тем самым усложняя работу себе и тем людям, кто будет собирать эти макеты.
+39
Что на самом деле сделал Google
3 min
2.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.
Итак, пока все спорят, насколько хорош браузер Chrome, меряются тестами и ждут портов на Линукс и Мак, основная революция произойдет совсем не там.
Она кроется в маленькой незаметной кнопочке «создать ярлыки приложения».
Воспользовавшись этой функцией, вы получаете на рабочем столе или в главном меню ярлык на свой любимый сайт, который откроется без панели навигации и прочих ненужных элементов. Например, я первым делом создал такой ярлык для Google Reader. И удивился, насколько шустро он стал работать. Ну собственно, ничего удивительного. Наверняка для своих приложений Гугл оптимизировал JavaScript и собственный же движок.
Ну да суть не в этом. Что я получил? Я получил отличный, удобный, шустрый RSS-reader, который ничуть не уступает своим традиционным аналогам. Потом я наткнулся на забавную статью о том, как можно тем же способом получить неплохой калькулятор. А сколько уже небольших, приятных сервисов существует в сети? Тут и календари и текстовые редакторы и даже сложные графические приложения.
А теперь вспоминаем, какие основные особенности нового браузера от Google: оптимизация работы JavaScript (ускорение просто в разы!) и самостоятельные потоки для каждого окна. То есть одно кривое приложение не подвесит и не повалит остальные (сейчас может, но это исправят). В результате мы получаем… почти идеальную платформу для приложений.
Полная кросс-платформенность. HTML и JavaScript худо-бедно, но работают на любой операционной системе (где будет Google Chrome). Простота разработки и огромное количество готовых фреймворков. Огромное количество удобных бесплатных редакторов и сред разработки. Решение проблемы с обновлениями софта. Пользователь автоматически работает с самой последней версией. Замечательная обратная связь и статистика. Вы будете совершенно точно знать, какие функции вашей программы наиболее востребованы, оценивают ли пользователи ваши гениальные идеи или применяют приложение совершенно неожиданным способом. Кстати, не удивлюсь, если в Chrome встроен сборщик статистики, который отправляет много интересной информации в
Теперь следующий тонкий момент: браузер с открытым исходным кодом. Значит, наработками Google смогут воспользоваться и разработчики других, альтернативных браузеров. Даже великий и ужасный IE сможет включить аналогичные функции. И вот как раз это Google и надо. Зачем распространять свой браузер, если основную фичу можно продвинуть руками конкурентов. И пусть даже доля Chrome будет два процента, но если при этом все остальные браузеры станут поддерживать интернет-приложения, Google своего добьется.
А добьется он того, к чему стремится уже очень давно: повальной миграции пользователей на веб-приложения и сервисы. И кажется, на этот раз у него это получится. Да, серьезный софт, завязанный на сложные вычисления или требующий низкоуровневой работы с железом, никуда не денется. Но посмотрите сами на свой рабочий стол. Много там таких приложений? А сколько всяких мелких утилит для ежедневной работы? А ведь приличное их количество может работать через веб, ничуть не теряя функциональности.
К слову, никто не мешает делать ссылку и на локальную копию веб-сайта. И не удивляйтесь, если завтра ваша любимая программа X выйдет не в виде исполняемого файла, а в виде кучи HTML и JS кода, распакованного на ваш жесткий диск.
В общем, скоро мы окажемся в новом мире. Которым будет править не Microsoft, но Google.
+234
первая книга о Django на русском
1 min
28KDjango. Разработка веб-приложений на Python

Это полное руководство начинается с введения в Python, затем подробно обсуждаются основные компоненты Django (модели, представления и шаблоны) и порядок организации взаимодействия между ними. Описываются методы разработки конкретных приложений: блог, фотогалерея, система управления содержимым, инструмент публикации фрагментов кода с подсветкой синтаксиса. После этого рассматриваются более сложные темы: расширение системы шаблонов, синдицирование, настройка приложения администрирования и тестирование веб-приложений. Авторы раскрывают разработчику секреты Django, давая подробные разъяснения и предоставляя большое количество примеров программного кода, сопровождая их построчным описанием и иллюстрациями.
+41
Information
- Rating
- Does not participate
- Location
- Киев, Киевская обл., Украина
- Date of birth
- Registered
- Activity