Как стать автором
Обновить
4
0

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

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

Сборка пакетов библиотек для rpm-based дистрибутивов Linux

Время на прочтение6 мин
Количество просмотров38K
Во многих наших проектах используются open-source библиотеки. Когда разработка ведется под одну конкретную платформу, нет смысла собирать одни и те же библиотеки из исходников каждый раз, когда к проекту подключается новый разработчик. Кроме того, установка библиотек а-ля make && sudo make install считается плохим тоном, поскольку система засоряется «бесхозными» файлами, о которых нет информации в базе данных менеджера пакетов RPM.

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

Самый простой deploy приложения на Ruby on Rails

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

Полгода назад я написал пост Deploy приложения на RoR 4 с помощью Capistrano 3. Прошло время, я получил много положительных отзывов, но были и отрицательные. Из них можно было понять следующее:
  • Инструкция слишком сложная для новичка
  • Очень много всего приходится делать «руками»

Я подумал и написал gem 'capistrano3-ubuntu-server-config', который полностью настраивает Ваш «чистый» Ubuntu сервер. Всё, что Вам нужно сделать руками — создать нового пользователя и дать ему права visudo (причем давать ему права на passwordless sudo ему не надо). Он может:
  • Настроить SSH (Добавить настройки 'PermitRootLogin no', 'UseDNS no', 'AllowUsers username')
  • Создать и настроить swap (размер запрашивается)
  • Сделать
    sudo apt-get update
    и
    sudo apt-get upgrade

  • Установить из исходников и настроить как чистый Nginx, так и с модулем Pagespeed
  • Установить PostgreSQL из репозитория, затем создать суперпользователя БД (имя пользователя и пароль запрашиваются)
  • Установить из исходников и настроить Redis
  • Установить RVM с последней версией Ruby и gem'ами Rails, Bundler
  • Скопировать Ваш приватный ssh ключ (например для доступа к приватному git репозиторию) с локальной машины на сервер и добавить его в ~/.ssh/config
  • Установить imagemagick из репозитория (Необходим для Paperclip, постоянно его забываю ставить)
  • Установить любые дополнительные пакеты из репозитория (Запрашивает какие именно)

Можно запустить конфигурационный wizard, который узнает, что именно из вышеперечисленного необходимо сделать и заранее спросит все настройки, чтобы можно было потом пойти попить кофе, а можно запустить отдельные таски. Данный gem будет полезен не только Rails разработчикам, а всем, кто использует Capistrano для деплоя.

Эта статья раскроет следующие темы:

Узнать как задеплоить Ваше приложение за 5 минут активного времени

Кластеризация данных СУБД Oracle вне кластерной таблицы

Время на прочтение5 мин
Количество просмотров10K
Oracle кластер умер, да здравствует кластеризация!
Здесь и далее имеется в виду cluster хранения данных, а не Oracle Real Application Custer


Проблематика


Большим информационным системам свойственно постоянное поступление различной информации, которая накапливается, обсчитывается и архивируется. Мы рассмотрим вариант структурированных данных, хранящихся на сервере RDBMS Oracle и в качестве примера возьмём таблицу, содержащую CDR записи (т.е. записи о вызовах) для абонентов оператора связи.
Данные о звонках поступают хаотично, т.е. не упорядоченно, как вы понимаете, по атрибутам абонентов. Все данные имеют свой жизненный цикл — оперативные, актуальные и архивные. Со временем частота обращений и требования по скорости доступа к данным меняются (т.е. падают). Т.о. записи годичной давности вполне можно хранить на медленных дисках, активные — на дисках с высокой скоростью доступа и без претензий на производительность операций записи, а вот вновь поступающим данным свойственно требование к максимально высокой скорости записи и чтения.
Читать дальше →

Об удобной навигации и отладке C++ кода в Vim

Время на прочтение7 мин
Количество просмотров42K
Компания, где я работаю, разрабатывает программное обеспечение на C++ под Linux. Долгое время мы использовали Qt Creator, с редкими ребятами работающими из Emacs и Vim. Когда я сам попытался пересесть на Vim, я понял, что ситуация с плагинами для разработки на С++ очень не простая. Поработав немного с CTags, я быстро понял, что без напильника работать в Vim будет очень сложно.
К сожалению, с ростом опыта работы с Vim редактор в Qt Creator в режиме эмуляции устраивал меня все меньше, и в какой-то момент я решил потратить немного времени и разобраться, как же сделать из Vim нормальную среду.
Я очертил для себя четыре вещи, которые я бы хотел от среды разработки, и которых мне бы хватило в Vim, чтобы полностью на него перейти:

1. Автодополнение
2. Навигация по коду
3. Отладка прямо из среды
4. Интеграция с Git (в частности Blame прямо в редакторе, и Git Grep)

Автодополнение в Vim — это решенная проблема, и название у решения YouCompleteMe. Это очень качественный плагин, который реализует автодополнение для большого количества языков программирования, в частности Python и C++. Ходят слухи, что внутри Google YouCompleteMe решает и вторую проблему с навигацией кода, но использует для этого внутренные инструменты гугла для индексирования.

Интеграция с Git в какой-то степени решена с помощью vim-fugitive. Это не такая комплексная интеграция, как бывает у Jet Brains, или в Visual Studio, но сравнимая с тем, что предлагает Qt Creator. Те два сценария, которые нужны были мне: blame и grep — работают хорошо.

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

Выразительный JavaScript: Формы и поля форм

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

Содержание




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

Мефистофель, в «Фаусте» Гёте


Формы были кратко представлены в предыдущей главе в качестве способа передачи информации, введённой пользователем, через HTTP. Они были разработаны в вебе до появления JavaScript, с тем расчётом, что взаимодействие с сервером происходит при переходе на другую страницу.

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

Lock-free структуры данных. Диссекция очереди

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

Со времени предыдущего поста из жизни lock-free контейнеров прошло немало времени. Я рассчитывал быстро написать продолжение трактата об очередях, но вышла заминка: о чем писать, я знал, но реализации на C++ этих подходов у меня не было. «Не годится писать о том, что сам не попробовал», — подумал я, и в результате я попытался реализовать в libcds новые алгоритмы очередей.
Сейчас настал момент, когда я могу аргументированно продолжить свой цикл. В данной статье закончим с очередями.

Кратко напомню, на чем я остановился. Были рассмотрены несколько интересных алгоритмов lock-free очередей, а под занавес приведены результаты их работы на некоторых синтетических тестах. Главный вывод — всё плохо! Надежды на то, что lock-free подход на магическом compare-and-swap (CAS) даст нам пусть не линейный, но хотя бы какой-то рост производительности с увеличением числа потоков, не оправдались. Очереди не масштабируются. В чем причина?..
Читать дальше →

Поднимаем упрощенную провайдерскую сеть дома

Время на прочтение23 мин
Количество просмотров71K
Изначально эта статья была дневником по лабораторной работе, которую я придумал сам для себя. Постепенно мне начало казаться, что данная информация может быть полезна кому-то еще. Поэтому я постарался преобразовать заметку в более-менее приличный вид, добавить описание некоторых команд и технологий.

В статье рассматривается построение простейшей сети с несколькими провайдерами и клиентами, в частности, такие технологии, как NAT, OSPF, BGP, MPLS VPN. Многое, естественно, будет не учтено. Например в статье почти нет описания проблем безопасности, т.к. на эту тему можно говорить бесконечно, а текст и так получается довольно объемным. QoS тоже оставлен в стороне, т.к. в лабораторных условиях его особо не проверишь.

По поводу целевой аудитории. Совсем новичкам в сетях статья, боюсь, будет непонятна. Людям, обладающим знаниями хотя бы на уровне CCNP – неинтересна. Поэтому я примерно ориентируюсь на сертификацию CCNA R&S.
Читать дальше →

Собираем, парсим и отдаём логи с помощью Logstash

Время на прочтение10 мин
Количество просмотров292K
Приветствую.

Так уж сложилось, что по долгу работы мне приходится много времени уделять логам. Это и участие в выработке правил и политик сбора/хранения/использования логов, это и разбор разных инцидентов и обнаружение аномалий. За сутки наши программы, сервисы и серверы генерируют ОЧЕНЬ большое количество логов. И потребность копания в логах растёт постоянно.
Мне довелось поработать с коммерческими лог-менеджмент продуктами типа ArcSight, RSA Envision, Q1 Labs. У этих продуктов есть как плюсы, так и минусы. Но в статье речь пойдёт не о них.
Речь будет о Logstash.

Что же такое Logstash? Зачем он нужен? Что он умеет?
Читать дальше →

PHPStamp — честная генерация DOCX документов из шаблона

Время на прочтение2 мин
Количество просмотров27K
Это еще одна попытка реализовать стабильный, полноценный шаблонизатор офисных документов, основанных на XML, пользуясь стандартными для PHP средствами DOMDocument и XSL.

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

Рубин на рельсах: продакшен и деплой для чайников

Время на прочтение13 мин
Количество просмотров32K
Год назад я довел свое первое рельсовое приложение до приемлемого вида. Вопрос использования готового кода в продакшене ранее меня не заинтересовал. С чего вдруг? Несложный язык, лаконичный фреймворк — уж деплой-то явно не сложнее, чем преодоление ментального тормоза после PHP.

Команда разработчиков Rails рекомендует использовать Phusion Passenger, он что-то вроде mod_php — установил, разместил файлы и полетел. На момент изучения вопроса на форумах хватало баталий о производительности решений; Passenger в них фаворитом не значился.

Совета относительно альтернативы я спросил у техдиректора сайта с миллионом уников в сутки — тот отправил меня гуглить на тему Nginx и Unicorn. Инструкция по настройке продакшена, найденная на Хабре, датировалась 2009 годом. Помимо прочего, ее просто переполняли изъяны уроков «Как нарисовать сову».

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

How to: AD + MSSQL to SSRS

Время на прочтение5 мин
Количество просмотров35K
Доброго дня. Решил что опыт обработки данных AD посредством SQL будет полезен не только мне, тем более внятного мануала на русском я так и не нашел.
Поэтому начнем

Организация backup-сервера. Linux, ZFS и rsync

Время на прочтение5 мин
Количество просмотров66K
TL;DR:
Статья о настройке бекапа линуксовых серверов. В качестве хранилища используется раздел ZFS с включенными дедубликацией и компрессией. Ежедневно делаются снапшоты, которые сохраняются в течение недели (7 штук). Ежемесячные снапшоты хранятся в течение года (еще 12 штук). В качестве транспорта выступает rsync: на сервере он запущен демоном, на клиентах он запускается из crontab.
Читать дальше →

PL/SQL через dblink

Время на прочтение15 мин
Количество просмотров66K
On metalink, every one said there's no solution…
Oracle can't do that ...


Приходилось ли Вам реализовывать нестандартные решения? А в Oracle? Мне бы хотелось рассмотреть использование техник, позволяющих лучше узнать принципы работы СУБД, а в совокупности предоставляющие удобство для разработчика.
Читать дальше →

Настройка двухсторонней синхронизации БД Oracle (Oracle Streams)

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


Что делать, если нет дисковой полки под RAC, а отказоустойчивость БД Oracle в реальном времени обеспечить нужно? Настроить потоки данных Oracle (Oracle Streams)!

Про потоки данных написано много. Например, здесь, здесь и здесь, в том числе и в официальной документации. В данной статье описан вариант настроек без использования redo-логов, работающий для редакций Oracle Standard Edition One и Oracle Standard Edition 11gR2 (лицензия на Enterprise позволяет провести настройку проще, прямо в Enterprise Manager Console, см. ограничения).
Читать дальше →

Таможенным пошлинам на посылки все-таки быть, причем скоро

Время на прочтение3 мин
Количество просмотров57K
Такой вывод следует из проекта бюджета Российской Федерации на 2015-2017 годы, в целом уже одобренного правительством. Как пишут РИА Новости, за счет пошлин на интернет-торговлю запланировано пополнение бюджета в размере 60 миллиардов рублей. И на эти деньги очень рассчитывают.



Интересно, что поступление средств планируется равномерным — по 20 миллиардов в год. Это значит, что пошлины скорее всего введут в ближайшее время, так как до начала 2015 года осталось всего три месяца. А как мы видим выше, доходы за 2015 год не должны быть ниже доходов 2016 и 2017 годов.
Читать дальше →

Итак, вы решили запретить копирование объектов класса в C++

Время на прочтение4 мин
Количество просмотров48K
SHALL NOT DANCE THEREДовольно часто можно встретить код на C++, в котором у одного или нескольких классов конструктор копирования и оператор присваивания объявлены private и написан комментарий вида «копирование запрещено».

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

Рассмотрим возможные проблемы.
Читать дальше →

Khan Academy разработала быструю JavaScript-библиотеку для работы с математическими формулами

Время на прочтение2 мин
Количество просмотров20K
Фактическим стандартом для работы с математическими формулами в вебе, записанными в формате TeX, является библиотека MathJax. Платформа онлайн-обучения Khan Academy имеет в своём арсенале множество курсов, посвящённых математике. Один из важных пунктов миссии академии — сделать качественное образование доступным всем, независимо от географического и материального положения, поэтому для Khan Academy очень существенна быстрая работа сайта на слабых старых компьютерах и мобильных устройствах. Именно поэтому разработчики академии решили написать собственную библиотеку для рендеринга TeX в HTML, которая в перспективе могла бы полностью заменить MathJax и работала бы гораздо быстрее.

Библиотека KaTeX пока ещё довольна молода (текущая версия — 0.1.0) и пока ещё не может сравниться с MathJax по функциональности. Текущий список поддерживаемых функций доступен в вики проекта. KaTeX поддерживает меньше выходных форматов по сравнению с MathJax, которая умеет рендерить формулы в HTML+CSS, SVG и MathML. В КаТеХ реализован вывод в HTML, поддержка MathML планируется в будущем. KaTeX не поддерживает старые (старше 8.0) версии IE.


Ключевое преимущество KaTeX - скорость

Автоматизация создания и редактирования списков использованных источников с помощью Mendeley

Время на прочтение6 мин
Количество просмотров61K
Списки использованных источников приходится использовать довольно часто. Студенты пишут курсовые и дипломы, магистранты, аспиранты и докторанты пишут диссертации. Научные сотрудники пишут статьи и отчеты и много чего еще. Уверен, что каждому из читателей хотя бы раз в жизни приходилось составлять пристатейный список литературы и указывать ссылки на литературу в тексте.

При создании статьи в Сети можно вставлять гиперссылки на источники прямо в тексте, либо добавить в «подвале» маркированный список, в котором эти источники и любая рекомендованная к прочтению литература будут перечислены в произвольном порядке. Однако в научном сообществе и в системе образования к правилу оформления таких списков предъявляются строгие (и порой противоречивые) требования, соблюдать которые вручную — дело муторное и неблагодарное.
В этой статье я поделюсь своим опытом автоматизации создания списка использованных источников с помощью Mendeley.
Читать дальше →

Системы контроля версий: Fossil, часть II

Время на прочтение10 мин
Количество просмотров15K
Продолжаем разговор о Fossil.

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

Ускорение загрузки Windows for fun and profit

Время на прочтение4 мин
Количество просмотров809K
image Пожалуй, начну с того, что если перегружаться 15 раз в год, то любой «тюнинг» процесса загрузки отнимает больше времени, чем будет выиграно на перезагрузках за все время жизни системы. Однако, спортивный интерес берет свое, тем более, что люди интересуется процессом оптимизации быстродействия. А загрузка оказалась самым очевидным кандидатом в примеры того, как на мой взгляд должен выглядеть этот самый процесс. Сразу скажу, что грузиться будем с 5400 rpm винта, грузиться будем в «рабочую» систему: помимо недобитой вендорской крапвари там стоит еще куча всякого типа вижуал студии, антивируса, скайпа, стима, гуглапдейтера и пр…

Про то, почему отключение pagefile-а скорее вредно, чем полезно — как нибудь в другой раз, а пока…
Под катом много однообразных картинок и немножко унылого текста

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность