Pull to refresh
78
0
Александр @Alex10

Full-stack Web Developer

Send message

Отказоустойчивый кластер Master-Slave на PostgreSQL

Reading time9 min
Views123K
Приветствую, хаброжители!
В этой статье я хочу поделиться опытом развертывания кластера Master-slave на СУБД PostgreSQL. Отказоустойчивость достигается с помощью возможностей pgpool-II (failover, online recovery).
pgpool — это прекрасное средство для масштабирования и распределения нагрузки между серверами и, думаю, немногие знают о возможностях автоматического создания failover на ведомом сервере при отказе ведущего и как добавить новые мощности в уже работающий кластер без отключения всего кластера.
Читать дальше →
Total votes 47: ↑47 and ↓0+47
Comments18

Подборка полезного для любителей Twitter Bootstrap

Reading time1 min
Views83K
В подборке инструменты, плагины и другие полезности, облегчающие работу с Twitter Bootstrap. Предыдущая подборка.

Инструменты




Bootstraptor — подборка большого количества бесплатных и премиум тем, в том числе Starter Kit, на основе Bootstrap.
Читать дальше →
Total votes 109: ↑96 and ↓13+83
Comments21

Вода горит! А также ЭГЭ и волны-убийцы

Reading time14 min
Views197K
Водяная спичка — устройство для поджигания воды и проведения интересных опытов с взрывами.
Это конечно не термоядерный взрыв, но что водородный, это точно! Опыт безопасен, так как водород сгорает мгновенно, без накопления опасных объемов.
Предполагаю, что подобная буря в стакане, в масштабах планеты является источником возникновения интересных явлений — волн-убийц и цунами неизвестного происхождения, которые появляются буквально из ниоткуда, обрушиваются на судно и так же бесследно исчезают. На данный момент отсутствует внятное объяснение причин возникновения таких волн.

Возможно, все происходит так…


Анимация “Водяной”

При попадании молнии на поверхность Мирового океана, происходит водородный взрыв, а при удачном сочетании глубины воды и рельефа дна, направления удара и величины напряжения, продолжительности импульса и длительности его фронта — формируется огромная одиночная волна в результате импульсного электролиза поверхностного слоя воды, рассматриваемого в этой статье. Не последнюю роль в явлении играет резонанс.
В районе Бермудского треугольника эти условия выполняются наиболее часто, поэтому он получил свою печальную известность.
Примерно одна миллионная из 250 миллионов молний, ежегодно бьющих по поверхности Мирового океана, рождает супер-волну.
Белая волна — насыщенная газами вода, в которую попадают экипажи низколетящих летательных аппаратов, не является вымыслом и она присутствует в опытах. Вписывается в эту теорию и возникающий при ударе молнии электромагнитный импульс (ЭМИ), выводящий из строя навигационное оборудование.
В отличие от других экзотических способов поджигания воды, рассматриваемый вариант прост и имеет 100% повторяемость. Опыт показывает огромную скорость и производительность электролиза воды при коротком импульсном воздействии, а также позволяет безопасно исследовать электрогидравлический эффект и молнию в лабораторных условиях. Прибор можно использовать для изучения условий формирования блуждающих волн. В дальнейшем станет реальностью создание автоматических устройств, которые сгенерируют встречную волну для гашения разрушительных цунами и волн-убийц в охраняемых прибрежных зонах.

Предположение проверено и подтверждено на небольшом макете. GIF-анимация “Водяной” — формы волн: “одиночная башня”, “белая стена”, а также чудо-юдо с глазами и другие красивые элементы из воды, полученные при начальном для возникновения эффекта напряжении 145 вольт, показаны в тексте выше.
Любой желающий может повторить опыт и проверить предположение.
Читать дальше →
Total votes 152: ↑138 and ↓14+124
Comments92

Часть 2. Как подключить смартфон к авто — приступаем к практике

Reading time7 min
Views237K
После того как мы подковались теоретически (см. Часть 1) и уже представляем, что стоит, а чего и не стоит ожидать от подключения смартфона к вашему авто, можем переходить к практике.

Читать дальше →
Total votes 38: ↑34 and ↓4+30
Comments50

Руководство по магическим методам в Питоне

Reading time28 min
Views601K
Это перевод 1.17 версии руководства от Rafe Kettler.


Содержание


  1. Вступление
  2. Конструирование и инициализация
  3. Переопределение операторов на произвольных классах
  4. Представление своих классов
  5. Контроль доступа к атрибутам
  6. Создание произвольных последовательностей
  7. Отражение
  8. Вызываемые объекты
  9. Менеджеры контекста
  10. Абстрактные базовые классы
  11. Построение дескрипторов
  12. Копирование
  13. Использование модуля pickle на своих объектах
  14. Заключение
  15. Приложение 1: Как вызывать магические методы
  16. Приложение 2: Изменения в Питоне 3


Вступление


Что такое магические методы? Они всё в объектно-ориентированном Питоне. Это специальные методы, с помощью которых вы можете добавить в ваши классы «магию». Они всегда обрамлены двумя нижними подчеркиваниями (например, __init__ или __lt__). Ещё, они не так хорошо документированны, как хотелось бы. Все магические методы описаны в документации, но весьма беспорядочно и почти безо всякой организации. Поэтому, чтобы исправить то, что я воспринимаю как недостаток документации Питона, я собираюсь предоставить больше информации о магических методах, написанной на понятном языке и обильно снабжённой примерами. Надеюсь, это руководство вам понравится. Используйте его как обучающий материал, памятку или полное описание. Я просто постарался как можно понятнее описать магические методы.
Читать дальше
Total votes 143: ↑139 and ↓4+135
Comments59

Простая методика построения фильтров товаров с помощью MongoDb и MapReduce

Reading time8 min
Views32K
Впервые столкнувшись с MapReduce, я продолжительное время искал реальные примеры применения. Пресловутый поиск слов в тексте, встречающийся в каждой второй статье о MapReduce, искомым примером считать не будем. Наконец, на двух курсах по Big Data на Coursera, я нашёл не только живые примеры, но теоретическую подоплёку для более глубокого понимания происходящего. Возможность применить полученный багаж знаний не заставила себя долго ждать.

В этой небольшой статье я хочу поделиться опытом реализации классической для большинства Интернет-магазинов системы фильтров товаров по критериям применительно к туристическому порталу, где появилась задача поиска и фильтрации по базе в десятки тысяч отелей, каждый из которых описывается рядом параметров и наличием нескольких десятков предоставляемых сервисов из сотен возможных.
Всех интересующихся MongoDb и MapReduce приглашаю под кат.
Total votes 74: ↑69 and ↓5+64
Comments18

Портирование на питон 3. Работа над ошибками

Reading time13 min
Views11K
Примечание от переводчика:
Представляю вам, перевод интересной статьи Армина Ронахера, автора веб-фреймворков Flask и Werkzeug, шаблонизатора Jinja2 и вообще известного питониста об актуальных техниках и подводных камнях, применяемых им в его проектах при добавлении поддержки третьего питона. Небольшая заметка по поводу названия данной статьи. Оно является отсылкой к статье Армина 2010 года «Портирование на питон 3. Руководство», в которой он описывал подготовку кода для автоматического портирования через утилиту 2to3. Как показывает практика, сегодня такой подход является скорее антипаттерном, т.к. с одной стороны, качество кода в результате подобных операций заметно ухудшается, а кроме того, такой код заметно труднее поддерживать.


После чрезвычайно болезненного опыта портирования Jinja2 на третий питон, мне пришлось оставить проект на холостом ходу на некоторое время, т.к. я слишком сильно боялся сломать поддержку питона 3 версии. Подход, который я использовал состоял в написании кода для питона 2 версии и перевода с помощью 2to3 на третий питон во время установки пакета. Самым неприятным побочным эффектом стало то, что любое изменение, которое вы вносите, требует примерно минуты на перевод, тем самым убивая скорость ваших итераций. К счастью, оказалось, что если правильно указать конечные версии питона, процесс идет ощутимо быстрее.

Томас Волдман из проекта MoinMoin начал с запуска Jinja2 через мой python-modernize с правильными параметрами, и пришел к единому коду, который работает под 2.6, 2.7 и 3.3. Путем небольших приборок мы смогли прийти к приятной кодовой базе, которая работает со всеми версиями питона и при этом, в большинстве своем, выглядит, как обычный код на питоне.

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

В данной статье я выборочно рассмотрю некоторые советы и фишки, которыми я могу поделиться, на случай если они кому-либо помогут в схожих ситуациях.
Читать дальше →
Total votes 37: ↑33 and ↓4+29
Comments18

Распознавание некоторых современных CAPTCHA

Reading time15 min
Views79K
Именно так называлась работа, представленная мной на Балтийском научно-инженерном конкурсе, и принёсшая мне очаровательную бумажку с римской единичкой, а также новенький ноутбук.

Работа заключалась в распознавании CAPTCHA, используемых крупными операторами сотовой связи в формах отправки SMS, и демонстрации недостаточной эффективности применяемого ими подхода. Чтобы не задевать ничью гордость, будем называть этих операторов иносказательно: красный, жёлтый, зелёный и синий.

Читать дальше →
Total votes 319: ↑313 and ↓6+307
Comments148

Шесть советов по созданию сайтов для многоязычной аудитории от Google Web Studio

Reading time3 min
Views18K
Уровень подготовки веб-мастера: любой

В Интернете немало сайтов, содержание которых доступно на нескольких языках, и таких ресурсов становится все больше. Тем не менее, создание многоязычного веб-сайта – это не просто перевод или локализация (L10N). Здесь необходимо принимать во внимание множество других аспектов, каждый из которых относится к интернационализации (I18N). В Справке Google вы можете найти информацию о том, как оптимизировать для Google Поиска мультирегиональные и многоязычные сайты, а в этой статье мы хотим поделиться несколькими советами по созданию ресурсов для многоязычной аудитории.

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


Язык и направленность текста тесно связаны с содержанием страницы. В этой связи старайтесь всегда использовать разметку, а не таблицы стилей. Задавайте язык и направление текста (по крайней мере для материалов в html) с помощью псевдоклассов lang и dir:

<html lang="ar" dir="rtl">

Мы не советуем применять оригинальные решения, такие как специальные классы или идентификаторы.
Полагаться на таблицы стилей не стоит: пользовательские агенты могут игнорировать такие свойства, как направление или двунаправленный текст Unicode. Для XML ситуация прямо противоположна: поскольку XML не поддерживает специальную разметку для интернационализации, в этом случае рекомендуется использовать таблицы стилей.
Читать дальше →
Total votes 42: ↑34 and ↓8+26
Comments2

Hyperboria: Интернет 2.0

Reading time3 min
Views118K


Hyperboria — это Open Source реализация проекта Mesh сетей, аналог всем известного и желанного проекта Netsukuku, который, к сожалению, умер.

Другими словами, Hyperboria это самоорганизующаяся децентрализованная сеть, которая сама строит маршруты между узлами.
Или проще говоря — это то, чем интернет должен был стать, свободным, не цензурируемым, быстрым и автоматически масштабируемым.
Читать дальше →
Total votes 88: ↑85 and ↓3+82
Comments55

Пишем свой шаблонизатор на Python

Reading time6 min
Views25K
Наверняка многие из вас задумывались о том, как устроены шаблонизаторы, какого его внутреннее устройство и каким образом происходит преобразование в фрагменты HTML-кода, однако не догадывались о каких-то особенностях его реализации. Поэтому давайте реализуем упрощенную версию движка шаблонов и продемонстрируем как это работает «под капотом».
Читать дальше →
Total votes 45: ↑40 and ↓5+35
Comments6

Советы Google по кодированию на языке Python. Часть первая: советы по программированию

Reading time13 min
Views114K

Хай, Хабр!
Сегодня я хочу представить, дорогому хабрасообществу свой первый хабраперевод. Программировать на языке Python — подобно песне. Но еще лучше, когда Ваш код читаем и понятен, а значит чуть более поэтичен, чем обычно бывает производстве. У каждого свои правила и свои стереотипы относительно написания и оформления исходного кода, на каком бы языке он ни был написан. Множество копий сломано о щиты на форумах, но, как ни крути, нельзя не считаться с мнением авторитетных товарищей. Так что сейчас будет представлен перевод первой части стайл-гайда для языка Python от Google. Коснется он именно постулатов написания кода (вторая часть тоже скоро появится, а посвящена она будет форматированию исходного кода). Сразу предупреждаю: тут много (если не большая часть) прописных истин, которые все знают уже давно. Но я искренне надеюсь, что Вы сможете найти тут что-то новое или хотя бы вспомнить старое. Приступим под катом. И pdf тут как тут.
Читать дальше →
Total votes 122: ↑109 and ↓13+96
Comments58

MongoDB: слишком много полей для индексации? Используйте общий индекс

Reading time6 min
Views30K

Суть проблемы


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

{
    _id: 123,
    firstName: "John",
    lastName: "Smith",
    age: 25,
    height: 6.0,
    dob: Date,
    eyes: "blue",
    sign: "Capricorn",
    ...
}


По таким документам можно делать выборку людей по цвету глаз, определенного роста, фамилии и по прочим характеристикам. А что делать если например документ состоит из десятков полей, или заранее не известны, или каждый документ имеет свой набор полей? Как при помощи индексов быстро решить данную проблему, но при этом не строить их по каждому полю, т.к это слишком дорогое решение.
Читать дальше →
Total votes 45: ↑43 and ↓2+41
Comments17

Делаем систему видеонаблюдения

Reading time4 min
Views242K

Описание системы


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

Система является аналогом видеоглазка, подключенного к телевизору, выполняющим архивацию видео и поддерживающим просмотр видео через локальную сеть (LAN или Wi-Fi). Основными элементами системы являются: IP-камера, коммутатор с поддержкой PoE, неттоп, Wi-Fi роутер. Программное обеспечение, установленное на неттопе, обеспечивает:
— просмотр видео с IP-камеры на экране телевизора, подключенного к неттопу через HDMI;
— архивацию видео с IP-камеры на жесткий диск неттопа (1 ч видео требует порядка 1,3 ГБ);
— просмотр видео с IP-камеры на устройствах, подключенных к неттопу, как к web-серверу (работает с любым броузером);
— просмотр видео с IP-камеры на устройствах, подключенных к неттопу, как к DLNA-серверу.

Структурная схема системы:
image

Читать дальше →
Total votes 38: ↑33 and ↓5+28
Comments61

Отказоустойчивость на базе DNS

Reading time1 min
Views37K
Внутри одно дата-центра организовать отказоустойчивость легко — есть масса инструментов и техник.
А как быть если надо организовать отказоустойчивость на базе нескольких дата-центров?

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

Смысл заключается в том чтоб в каждом дата-центре был свой NS сервер который отдает IP своего дата-центра.

Читать дальше →
Total votes 24: ↑15 and ↓9+6
Comments77

Основы безопасности операционной системы Android. Уровень ядра

Reading time6 min
Views100K

Вступление


Самой распространенной операционной системой для смартфонов на сегодняшний день является Android. Но не только этот факт подогревает интерес к ней. Открытость, возможность что-то настроить, подкрутить, и, естественно, сломать тоже в немалой степени способствуют увеличению популярности этой платформы. Я попробую поделиться опытом, как устроена эта операционная система, а так же рассмотреть систему безопасности. Всем, кому интересно, добро пожаловать! В этой статье я рассмотрю безопасность на уровне ядра.
Читать дальше →
Total votes 108: ↑102 and ↓6+96
Comments19

Бесплатные звонки в США и Канаду с любого SIP устройства

Reading time6 min
Views65K
image

Как многие уже могли догадаться, речь пойдёт о возможности, которую предоставляет сервис Google Voice. В посте трёхгодичной давности уже описывался процесс регистрации аккаунта в GV. При этом можно было принимать звонки на SIP устройства, но для инициализации вызова всё равно приходилось заходить в аккаунт и звонить оттуда, что довольно неудобно. В этом посте я расскажу о том, как полностью подружить Google Voice и SIP.
Читать дальше →
Total votes 37: ↑33 and ↓4+29
Comments23

Полнотекстовый поиск в MongoDB

Reading time7 min
Views64K
В данной статье будет рассмотрена одна из новых возможностей MongoDB версии 2.4 — полнотекстовый поиск. Большая часть этой статьи будет вольным переводом документации, которая, к слову, очень подробная, но разрозненная. Здесь все будет собрано вместе. Так как этого для полноценной статьи мне показалось мало, я решил сравнить МонгоДБ с другой популярной программой для текстового поиска — Sphinx. Мое сравнение будет очень поверхностным, так как со Сфинксом я раньше не работал. Создам таблицу с 16 000 000 записей и посмотрю, кто быстрее.

image

Читать дальше →
Total votes 64: ↑57 and ↓7+50
Comments28

Как запустить программу без операционной системы: часть 2

Reading time8 min
Views65K


В первой части нашей статьи мы рассказали о том, каким образом можно получить простую программу “Hello World”, которая запускается без операционной системы и печатает сообщение на экран.

В этой части статьи, хочется развить получившийся в первой части код таким образом, чтобы он мог быть отлажен через GDB, компилировался через оболочку Visual Studio и печатал на экран список PCI устройств.

! ВАЖНО!: Все дальнейшие действия могут успешно осуществляться только после успешного прохождения всех 6-ти шагов описанных в первой части статьи).

Читать дальше →
Total votes 124: ↑118 and ↓6+112
Comments9

intro.js — пошаговое руководство для веб-страницы

Reading time1 min
Views51K


Эта маленькая библиотека позволяет очень просто создать пошаговое введение для сайта или приложения. Достаточно добавить атрибуты data-intro и data-step с описанием и номером шага соответственно к нужным элементам страницы. Вот так:

<a href='http://google.com/' data-intro='Hello step one!' data-step='1'></a>
Читать дальше →
Total votes 139: ↑134 and ↓5+129
Comments24

Information

Rating
Does not participate
Registered
Activity