Search
Write a publication
Pull to refresh
0
0
Андрей @andreypaa

User

Send message

Модели Django и решение проблем с конкурентным доступом к данным

Reading time3 min
Views30K
Всем привет!

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

Стартовые данные


  • 2 сервера с Django, запущенные под uWSGI
  • 1-2k запросов в секунду
  • Проект с движением денег внутри

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

Централизованный сбор, хранение и просмотр Syslog в Debian Linux

Reading time2 min
Views62K
В качестве стандартного syslog-сервиса в Debian используется rsyslog. Дальше рассказывается, как отправлять копии журналов на сервер, сохранять их в SQL-базе и просматривать через удобный Веб-интерфейс.

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

10 способов сделать резервную копию в PostgreSQL

Reading time5 min
Views286K
Многие разговоры про бэкапы начинаются с присказки что люди делятся на две категории… так вот я отношусь к тем людям которые делают бэкапы. Правильно настроенное резервное копирование и проверка резервных копий укрепляет сон. А наличие заранее написаных и проигранных инструкций по восстановлению вообще укрепляет пищеварение и иммунитет. Так вот, за время работы с PostgreSQL мне довелось часто настраивать резервное копирование, при этом условия и требования были самые разные. Однако при этом набор инструментов за редким исключением оставался неизменным. В этой статье поделюсь своим опытом в деле, как можно брать резервные копии PostgreSQL.
image

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

Автоматизируем и ускоряем процесс настройки облачных серверов с Ansible. Часть 5: local_action, условия, циклы и роли

Reading time9 min
Views38K
В первой части мы начали изучение Ansible, популярного инструмента для автоматизации настройки и развертывания ИТ-инфраструктуры. Ansible был успешно установлен в InfoboxCloud, описаны принципы работы, базовая настройка. В завершении статьи мы показали как быстро установить nginx на несколько серверов.

Во второй части мы разобрались в выводе playbook, научились отлаживать и повторно использовать скрипты Ansible.

В третьей части мы узнали как написать единый Ansible playbook для разных ОС (например с rpm и deb), как обслуживать сотни хостов и не писать их все в inventory и как сгруппировать сервера по регионам InfoboxCloud. Было изучено использование переменных Ansible и файла inventory.

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



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

Wi-Fi термометр на ESP8266 + DS18B20 всего за 4$

Reading time3 min
Views316K


В последнее время всё большую популярность набирают Wi-Fi модули на основе ESP8266. Я тоже решил приобщиться к прекрасному, задумав реализовать термометр, отдающий данные по HTTP. Итак, поехали.
Читать дальше →

PHPixie 3.0 ORM или новый взгяд на ActiveRecord

Reading time4 min
Views10K
image Уже закончен долгообещанная третья версия PHPixie ORM компонента. Он теперь полностью независим от фреймворка и может спокойно использоваться сам по себе. В связи с этим, пока продолжается работа над другими компонентами и пишется документация, разработчики составили небольшой туториал для того чтобы можно было уже начать работу с ОРМ. Ниже я предоставлю его перевод и добавлю несколько вещей от себя, но сначала давайте посмотрим чем полезным порадует нас эта версия:

  • Большинство ORM используют Model классы, которые используются как для выполнения запросов так и для репрезентации самых записей в базе данных. Например так делают Kohana и Laravel. PHPixie разделила модель на Repository, Entity и Query, каждая из которых имеет строго свое предназначение.
  • Кроме SQL баз данных (SQLite, PostgreSQL, MySQL) полностью поддерживается также Mongo. Вы сможете связать отношениями модели с SQL баз данных с моделями хранящимися в коллекциях Mongo.
  • Чтобы поддерживать связи между разными базами ( например между таблицами в разных базах в MySQL ) много ORM используют отдельные запросы вместо join-ов и субзапросов. PHPixie же использует субзапросы всегда где это возможно.
  • Поддержка встроенных сущностей в Mongo
  • На 97% покрыта юнит тестами ( планируется 100% до конца этой недели), и еще на 75% функционалными тестами.
  • Эффективное использование Query позволяет уменьшить число запросов к базе. Например вам надо связать все топики автора с какими-то тегами. В большинстве ОРМ вам придется сначала найти топики, потом теги и тогда связать их ( 3 запроса к БД ). PHPixie позволяет сделать это за один запрос. Кстати пример этого есть в туториале снизу


Надеюсь я смог вас заинтересовать, теперь посмотрим на пример с ссылки вверху в переводе:
Читать дальше →

Верстка email рассылок от А до Я для чайников

Reading time9 min
Views414K
Уже 3 с лишним года занимаюсь дизайном и версткой почтовых рассылок, которые ориентированы на англоязычных пользователей. За время работы перелопатили огромную кучу информации, перепробовали много вариантов верстки, набили достаточное количество шишек. Были найдены и исправлены типичные баги, которые в той или иной мере повторялись во всех почтовых клиентах. Также нашлись проблемы с некоторыми CSS свойствами — различные почтовые клиенты интерпретировали их по разному. Каждое письмо тестировалось на самых популярных почтовых клиентах: Gmail, Outlook, Yahoo, Android, iOS, MozillaThunderbird, Microsoft Outlook, The Bat. Рассылки ходят на сотни миллионов пользователей и приносят очень хорошие результаты. Итак, приступим к изучению.
Читать дальше →

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

Reading time1 min
Views103K
image

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

Мониторинг для бедных или SAR + MySQL + Gnuplot

Reading time10 min
Views22K

Почему именно SAR?


Я уже довольно давно занимаюсь мониторингом. Поэтому по роду своей деятельности частенько сталкиваюсь с нестандартными ситуациями, когда приходится придумывать различные «велосипеды», для того, чтобы мониторить хост. Например, мы будем рассматривать ситуацию, когда у нас есть сервер (виртуалки или VDS), который очень ограничен в ресурсах.

Существует множество хороших систем мониторинга, таких как Zabbix, Nagios, Cacti и т.д. Но для нашей ситуации все они не подходят, в силу ясных причин — они сами потребляют ресурсы, которых у нас итак не очень много. Сразу возникает вопрос, как быть? И тут к нам на помощь спешит SAR.
Читать дальше →

Полная энергетическая автономия или как выжить с солнечными батареями в глубинке (часть 2. практическая)

Reading time8 min
Views528K


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



Собираем автономку

Автоматизируем и ускоряем процесс настройки облачных серверов с Ansible. Часть 3: Переменные и файл inventory

Reading time6 min
Views39K
В первой части мы начали изучение Ansible, популярного инструмента для автоматизации настройки и развертывания ИТ-инфраструктуры. Ansible был успешно установлен, описаны принципы работы, базовая настройка. В завершении статьи мы показали как быстро установить nginx на несколько серверов.

Во второй части мы разобрались в выводе playbook, научились отлаживать и повторно использовать скрипты Ansible.



В этой части вы узнаете, как писать единый Ansible playbook для разных ОС (например с rpm и deb), как обслуживать множество хостов и не писать их все в inventory, как сгруппировать сервера по регионам InfoboxCloud и многое другое.
Читать дальше →

Используем время простоя веб-приложения для фоновых задач

Reading time4 min
Views14K
Я люблю, когда мои приложения бегут со скоростью 60 fps, даже на мобильных устройствах. А еще я люблю сохранять состояние моего приложения, например, открытые окошки или введенный текст в localstorage и метаданных пользователя (если он зарегистрирован), чтобы, закрыв его, работу с ним можно было бы продолжить позже с того же места, в том числе и на другом устройстве.

Это все прекрасно, вот только сегодня я столкнулся с одной проблемой. Дело в том, что есть у меня одно боковое меню, offcanvas, и его состояние (открыто/закрыто) я тоже бы хотел сохранить в браузере и учетной записи пользователя. Вот только запись в localstorage и AJAX реквест на обновление в БД асинхронны и они все время норовят запускаться прямо во время сложной анимации, крадя у меня пару-другую фреймов, что особенно заметно на мобильных устройствах. Очевидно, мне бы хотелось, чтобы данные сохранялись после того, как анимация завершится, а не в критичный момент моего приложения, но как?
Читать дальше →

Философия программирования 5 — Колибри и Реактос

Reading time7 min
Views36K
Кто умеет копировать, тот умеет ДЕЛАТЬ. Это сказал Леонардо да Винчи. Видите ли, вы исходите из своих представлений, о том, что такое ХР, винда, операционка. Люди как рассуждают:

— Мне было ещё мало лет у меня стояла ХР, вот были золотые деньки, но тепереча не то, что давеча. Новые времена, современное ПО. Не понимаю, зачем копаться в старье? Вы бы хоть делали клон десятой винды, но куда с вашей то скоростью, вы его сделаете лет через 100.

Но если люди копируют старое ПО, это ещё не значит, что они ретрограды или некрофилы. Во-первых они это делают сейчас, находясь в современных условиях, зная все тенденции и направления. Во-вторых, устаревание софта вообще вещь крайне контр-интуитивная. Например, в самых современных приложениях есть куски кода написанные более двадцати лет назад, и, заметьте, — никто не собирается их переписывать. Это информация, она не изнашивается, как изнашиваются метал или дерево. Но людям свойственно своё бытовое восприятие переводить на вещи нематериальные и требующие совершенно иного взгляда. Понимаете? Информация. Это не вещь. Сравнивайте со стихами Пушкина.
Читать дальше →

Deploy Django приложений с использованием Ansible для чайников

Reading time8 min
Views22K
Доброго времени суток!

Совсем недавно мой коллега познакомил меня с замечательным инструментом автоматизации ручного труда под названием Ansbile. После чего моментально родилась идея написать что-то своё, что упрощает тот самый ручной труд. Что чаще всего приходится делать руками? Правильно, деплоиться.

В этой статье я расскажу о том, как с использованием ansible раскатать django-проект на чистом удаленном сервере ubuntu 14.04, создав при этом для проекта отдельного пользователя.
Читать дальше →

Vagrant для малышей, или как на Windows легко получить настроенный сервер для разработки веб-приложений

Reading time9 min
Views197K
Здравствуй, мой дорогой любитель поработать с Composer'ом, создавая свой очередной крутой проект на одном из модных фреймворков. Или, быть может, ты — фронтэнд-мастер, пишущий сложные штуки на JS и CSS, компилируя их из jsx- и less-файлов, устанавливая библиотеки через Bower, а проект собирая в каком-нибудь Grunt, попутно прогоняя код юнит-тестами и, конечно же, заливая потом всё это на github… Если всё это — часть твоей повседневной жизни, то хвала Всевышнему, поздравляю: ты прошел все эти испытания и даже не сломал себе мозг. Отныне, ты — из числа тех счастливых, потративших не одну неделю, разбираясь в том, как корректно настроить всю эту кучу инструментов, а также, ты — один из тех, кто может доминировать, властвовать и унижать блистать своими знаниями в комментариях Хабра к статьям других, менее проворных и смышлёных коллег по цеху…

Но… быть может, ты — лишь один из тех, кто только мечтает о подобных извращениях манипуляциях мастеров разработки современных веб-приложений?) Тогда я спешу обрадовать тебя: я тут на днях узнал пару полезных вещей и понял, что это — настоящий подарок для начинающих разработчиков. И решил написать эту статью.
Читать дальше →

Flask. Наполняем «флягу» функционалом

Reading time7 min
Views47K

Предисловие


В прошлом году решил для себя вплотную познакомиться c Python, а в последствии перебраться на него с PHP. На данный момент моя стезя — веб-разработка, а потому осваивать новый язык я начал именно со стороны веба, в частности, с обзора доступных фреймворков и проектов на них. Познакомившись с возможностями TurboGears, web2py, Django, я всё таки поддался «тренду» и погрузился в мир Django.

На протяжении почти года я честно пытался подружиться с ним. Написал несколько простеньких проектов, но монструозность фреймворка отпугивала, обилие «батареек» путало выбор, а с некоторыми ограничениями не хотелось мириться. Душа требовала лаконичности и однозначности, что в конечном счете привело меня к знакомству с Flask. Изучив документацию по фреймворку и смежным проектам (Jinja2, Werkzeug), я проникся идеологией и стал вплотную изучать фреймворк.

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

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

Обработка логов с учётом предыдущих сообщений в logstash/elasticsearch

Reading time4 min
Views9.2K
Про отлов ядерных MCE (machine check error) и прочей гадости с помощью netconsole я писал недавно. Крайне полезная вещь. Одна проблема: throttling на CPU из-за локального перегрева (длительной нагрузки) фиксируется как MCE. Случается бэкап — и админам приходит страшное сообщение об MCE, которое на практике означает «чуть-чуть перегрелось» и точно не требует внимания к себе в 3 часа ночи.

Смехотворность проблемы ещё тем, что Linux фиксирует MCE после того, как throttling закончился. То есть режим 'normal', но вместо этого оно превращается MCE. Выглядит это так:
CPU0: Core temperature above threshold, cpu clock throttled (total events = 40997)
CPU4: Core temperature above threshold, cpu clock throttled (total events = 40997)
CPU4: Core temperature/speed normal
CPU0: Core temperature/speed normal
mce: [Hardware Error]: Machine check events logged

При этом мы точно хотим реагировать на нормальные MCE. Что делать?

В рамках logstash обработка сообщений предполагается stateless. Видишь сообщение — реагируешь. Внедрять же ради одного типа сообщений более сложную систему — оверкилл.

Казалось бы, есть фильтр (не путать с output) elasticsearch, который позволяет делать запросы. К сожалению, он не умеет делать 'if'ы, то есть remove_tag и add_tag будут отрабатывать вне зависимости от того, удался поиск или нет.

Грустно.
Читать дальше →

Как не переплачивать за Умный Дом. Защита от потопа (антипротечка)

Reading time6 min
Views91K
В статье представлен прагматичный подход по созданию одного из элементов Умного Дома — экономной защиты от потопа (антипротечки) на базе универсального контроллера домашней автоматизации.

Главные отличия от ранее представленных на хабре решений данной задачи – простота реализации, относительно дешево + для повторения не надо быть программистом. Правда паять все равно придется, но всего 2 раза.


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

Социальный casual

Reading time11 min
Views16K
Казуальные игры сегодня являются очень востребованным жанром в Одноклассниках со своим устоявшимся форматом. Об особенностях разработки и создания казуальных игр, о возможных ошибках и рекомендуемых шагах рассказывает Артур Шакалис, продюсер с восьмилетним стажем.

Что такое казуальные игры? Это игры с короткими и интенсивными игровыми сессиями, адресованные неискушенным игрокам, с очень красивыми, приятными визуальными эффектами, минимумом текста и очень цепляющие. Об этом полезно помнить, когда вы делаете подобную игру, чтобы понимать, для кого вообще вы ее делаете и каким принципам игра должна соответствовать. Немногим больше года назад топовые казуальные игры в Одноклассниках выглядели примерно так: в основном был хардкор, то есть игры от Plarium, мелкими вкраплениями туда попадал мидкор и всякие интересные твисты, например, игра «Небеса» от компании 2reallife. Но в сентябре-ноябре 2013 года произошел перелом. Играющая аудитория неожиданно стала быстро увеличиваться, прирост составил около трех миллионов абсолютно новых игроков. И это произошло благодаря игре «Найди кота». Это упрощенный до абсурда hidden object, где в каждой комнате нужно найти всего лишь один объект: кота. На этом игра вся и строилась.


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

Фантастические фильмы для долгих зимних вечеров

Reading time5 min
Views71K


Около года назад мы опубликовали подборку интересных фантастических сериалов. В январе поэкспериментировали с новинками фантастической литературы и даже настольными играми из всё той же фантастики. Давайте теперь поговорим о полнометражных фантастических фильмах.

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

Information

Rating
Does not participate
Location
Мордовия, Россия
Date of birth
Registered
Activity