Как стать автором
Обновить
10
0
Shmavon Gazanchyan @MunGell

Manager

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

Разворачиваем приложение на чистой Убунте: от A до Z

Время на прочтение5 мин
Количество просмотров3.6K
Итак, у вас есть чистая Ubuntu, в консоли открыто ssh-соединение с сервером и консоль вас заманчиво приглашает — «root@my-awesome-host:~#» — и больше ничего нет. А хочется запустить и показать всему миру какое-то рельсовое приложение. Поехали от супа до орехов.

Читать дальше →
Всего голосов 65: ↑48 и ↓17+31
Комментарии43

Связка rvm + Rails + Nginx + Unicorn или деплоим рельсы правильно

Время на прочтение9 мин
Количество просмотров55K
Целью данной заметки я ставлю в подробностях описать организацию сервера для Rails приложений в самой популярной на данный момент связке: rvm + Rails + Nginx + Unicorn. К написанию статьи побудило отсутствие полной пошаговой документации по этой связке, понятной не только ядреным профессионалам этой области. Далее я попытаюсь подробно, шаг за шагом, описать идеологически правильный процесс организации сервера для обслуживания нескольких Rails приложений (на примере одного) — если у вас есть абсолютная уверенность в том, что на подопытной машине никогда не будет работать более одного приложения — настройка может быть существенно короче и проще. Хочу предупредить, что тонкости, касающиеся работы приложения под высокой нагрузкой в статье не описываются, т.к. цель ставилась иная — заставить работать приложение в связке и сократить количество конфликтов с другими приложениями до минимума.
Читать дальше →
Всего голосов 68: ↑63 и ↓5+58
Комментарии135

Подготовка rails-окружения для установки Redmine используя RVM

Время на прочтение3 мин
Количество просмотров5.8K
Для корректной работы многих rails-приложении требуются конкретные версии состовляющих компонент, таких как версия ruby, версия самого rails, а так же rake, rubygems и т.д. И скорее всего в вашем дистрибутиве Linux (в моём случае это Ubuntu 10.04 LTS Server) версии этих компонент будут отличаться. Можно пойти простым путём — поставить ruby нужной версии из исходных кодов, а всё остальное с помощьью rubygems. Но мы же хотим получить надёжный и воспроизводимый результат, а систему, при этом не превратить в свалку.
Читать дальше →
Всего голосов 15: ↑10 и ↓5+5
Комментарии15

Доступные методы борьбы с DDoS-атаками для владельцев vds/dedicated серверов с Linux

Время на прочтение12 мин
Количество просмотров38K
image

Начать свое присутствие на Хабре мы решили с материала, подготовленного для Конференции уральских веб-разработчиков, в котором описаны проверенные на собственной практике и оказавшиеся вполне успешными методы борьбы с DDoS-атаками. Целевая аудитория данной статьи — это программисты, имеющие в распоряжении vds или dedicated. Статья не претендует на полноценное руководство и многие сисадминские нюансы в ней намеренно опущены. Мы рассматриваем только DDoS типа http flood как наиболее распространенный тип DDoS и наиболее дешевый для заказчика.

Целевая аудитория данной статьи – это программисты, имеющие в распоряжении VDS или Dedicated.
Читать дальше →
Всего голосов 97: ↑80 и ↓17+63
Комментарии116

Джентельменский набор модулей для Drupal 7

Время на прочтение3 мин
Количество просмотров86K
Доброго всем времени суток!

Те, кому часто приходится поднимать сайты на Drupal, имеют в загашнике постоянный набор модулей и тем, которые так или иначе могут использоваться на поднимаемом ресурсе.
При отсутствии данного набора приходится вспоминать и скачивать модули для воплощения на сайте того или иного функционала.
Поскольку актуальной на данный момент версией является седьмая, о ней и пойдёт речь.
Читать дальше →
Всего голосов 46: ↑40 и ↓6+34
Комментарии22

Анонимности нет, смиритесь! (русские субтитры)

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

Выступление Стива Рамбама на конференции Hackers On Planet Earth (часть I)


Это выступление Стива Рамбама на последней конференции H.O.P.E. (Hackers On Planet Earth)

Стив выступает на каждой хакерской конференции H.O.P.E. с 1994 года.
Если вы не знаете про Стива и не видели его выступления — обязательно посмотрите это видео.

Покажите его тем, кто плохо знаком с миром IT: бухгалтерам, продажникам, маркетологам…
Обычным людям.

Видео с русскими субтитрами на Universal Subtitles
(хабр не позволил вставить скрипт):
Ctrl+ www.amara.org/ru/videos/YSEgofMg2wgv/info/steven-rambam-privacy-is-dead-get-over-it-part-1

Это же видео без наложенных субтитров, для англоговорящих:

Читать дальше →
Всего голосов 86: ↑77 и ↓9+68
Комментарии116

Используйте бандлер вместо практики rvm gemset per project

Время на прочтение1 мин
Количество просмотров7.6K
Наша команда долгое время использовала известную практику rvm gemset per project. Однако, после работы с пакетным менеджером nodejs мы поняли, что гораздо удобнее складывать зависимости в папку проекта (дефолт для нодовского пакетного менеджера).

Немного покопавшись в документации бандлера я обнаружил, что тоже самое можно сделать и на его основе.
Читать дальше →
Всего голосов 51: ↑48 и ↓3+45
Комментарии32

Резервное копирование для standalone *NIX-серверов. Эмулируем TimeMachine

Время на прочтение7 мин
Количество просмотров7.1K
Думаю никому из присутствующих не нужно объяснять важность резервного копирования.
Проблема в том, что из десятков готовых решений ни одно толком не удовлетворяет моим требованиям standalone *NIX-сервера на колокейшене.
Чего же хотелось от резервного копирования?
1) ежедневного полного бакапа всех данных. Никаких incremental-бакапов.
2) максимально быстрого восстановления отдельно взятого файла. Архиваторы (tar/gzip/bzip2/rar) отпадают
3) быстрого мониторинга «кто именно залил вчера на сервер 156Гб?!!!»
4) резервные копии хочется хранить максимально долго, насколько хватает свободного места на дисках.
5) хочется не заботиться об ручном удалении старых копий если место на диске всё-таки уже кончилось
Если в двух словах — то мне захотелось реализовать функционал MAC OS TimeMachine на Linux-сервере.
И я начал писать скрипт.
Читать дальше →
Всего голосов 48: ↑41 и ↓7+34
Комментарии25

КартонБот v1.0 — утилизируем картон с пользой для мозга

Время на прочтение6 мин
Количество просмотров30K
Количество попыток собрать робота у меня – не счесть. Но, то материалов не хватало, то навыков их обработки, то каких-то узлов, то знаний, как все эти штуки связать вместе. Если знакома такая ситуация – я постараюсь рассказать свой опыт сборки робота из подручных материалов и каких-то узлов купленных на eBay.
image
Робот обошелся мне в 35$ и два дня отпуска, но восторг, испытанный от его первых движений, стоил намного больше. Если заинтересованы – прошу под кат (много картинок).
Читать дальше →
Всего голосов 148: ↑147 и ↓1+146
Комментарии60

Тренды, возведенные в культ

Время на прочтение4 мин
Количество просмотров30K
Несколько последних лет ознаменовались появлением большого количества новых терминов, понятий, технологий, течений. Также появилось достаточное количество базвордов, которые заполонили медийное пространство. И заполонили до такой степени, что многие айтишники начинают поддаваться на соблазны и искушения рисующихся золотых перспектив. Но не буду говорить загадками — под катом список понятий, с которыми связано большое количество надежд, холиваров и… заблуждений. Давайте немного разберемся, что к чему.
Читать дальше →
Всего голосов 237: ↑213 и ↓24+189
Комментарии225

Чем может быть полезен Inkscape для веб-разработчиков?

Время на прочтение2 мин
Количество просмотров7.4K
Перевод с английского: Inkscape: optimization tips for web developers.

В этой короткой статье я поделюсь с вами несколькими полезными приемами работы с редактором векторной графики Inkscape, которые помогают ускорить процесс подготовки SVG-кода.

Читать дальше →
Всего голосов 32: ↑29 и ↓3+26
Комментарии5

Ваш сайт тоже позволяет заливать всё подряд?

Время на прочтение4 мин
Количество просмотров52K
Один французский «исследователь безопасности» этим летом опубликовал невиданно много найденных им уязвимостей типа arbitrary file upload в разных «написанных на коленке», но популярных CMS и плагинах к ним. Удивительно, как беспечны бывают создатели и администраторы небольших форумов, блогов и интернет-магазинчиков. Как правило, в каталоге, куда загружаются аватары, резюме, смайлики и прочие ресурсы, которые пользователь может загружать на сайт — разрешено выполнение кода PHP; а значит, загрузка PHP-скрипта под видом картинки позволит злоумышленнику выполнять на сервере произвольный код.

Выполнение кода с правами apache — это, конечно, не полный контроль над сервером, но не стоит недооценивать открывающиеся злоумышленнику возможности: он получает полный доступ ко всем скриптам и конфигурационным файлам сайта и через них — к используемым БД; он может рассылать от вашего имени спам, захостить у вас какой-нибудь незаконный контент, тем подставив вас под абузы; может, найдя параметры привязки к платёжной системе, отрефандить все заказы и оставить вас без дохода за весь последний месяц. Обидно, правда?

Как ему это удастся?
Всего голосов 121: ↑102 и ↓19+83
Комментарии120

Введение в OCaml: Структура программ на OCaml [2]

Время на прочтение12 мин
Количество просмотров8.1K
[прим. пер.: продолжение перевода, первая статья тут]
тизер к статье с графикой на OCaml

Структура программ на OCaml


Теперь мы потратим немного времени на высокоуровневый анализ некоторых настоящих программ на OCaml'е. Я хотел бы показать вам локальные и глобальные определения, разницу в использовании ;; и ;, модули, вложенные функции, ссылки. Из-за этого мы столкнёмся с множеством концепций OCaml'а, которые пока что не имеют смысла для начинающего изучать OCaml, так как мы не встречали их ранее. Не фокусируйтесь на них, сконцентрируйтесь вместо этого на общем представлении о формате программ и особенностях языка, на которые я буду указывать.

Локальные «переменные» (на самом деле локальные выражения)


Возьмём нашу функцию average на Си и добавим в неё локальные переменные (сравните её с примером в прошлой главе).

double average (double a, double b)
{
  double sum = a + b;
  return sum / 2;
}

Теперь посмотрим на это для OCaml:

let average a b =
  let sum = a +. b in
  sum /. 2.0;;

Стандартное выражение let name = expression in используется для определения локального именованного выражения и name может быть использовано в дальнейшем вместо expression вплоть до ;;, который означает окончание локального блока кода. Обратите внимание, мы даже не использовали отступ после объявления in. Просто воспринимайте let ... in так, как будто это один оператор.
Читать дальше →
Всего голосов 25: ↑22 и ↓3+19
Комментарии24

Введение в OCaml: The Basics [1]

Время на прочтение10 мин
Количество просмотров26K
(предисловие от переводчика: сел учить окамл, обнаружил, что отсутствует перевод на русский язык руководства для начинающих. Восполняю этот пробел).

Основы


Комментарии


Комментарии в OCaml обозначаются символами (* и *), примерно так:
(* Это однострочный комментарий *)

(* Это комментарий
   на несколько
   строк.
*)

Другими словами, комментарии в OCaml очень похожи на комментарии в Си (/* ... */).

В настоящий момент нет однострочных комментариев (как #... в Перле или // ... в C99/C++/Java). Когда-то обсуждалась возможность использовать ## ..., и я весьма рекомендую окамловским товарищам в будущем добавить эту возможность (однако, хорошие редакторы открывают возможность использования однострочных комментариев даже сейчас).

Комментарии в OCaml вложенные, это позволяет очень просто комментировать куски кода с комментариями:
(* This code is broken ...

(* Primality test. *)
let is_prime n =
(* note to self: ask about this on the mailing lists *) XXX;;

*)

Вызов функций


Допустим, вы написали функцию, назовём её repeated, которая берёт исходную строку s, число n и возвращает новую строку, состоящую из n раз повторённой строки s.

В большинстве С-подобных языков вызов функции будет выглядеть так:
repeated ("hello", 3) /* this is C code */

Это означает «вызвать функцию repeated с двумя аргументами, первый аргумент — строка hello, второй аргумент — число 3».

Подобно остальным функциональным языкам программирования, в OCaml, запись вызовов функций и использование скобок существенно отличается, что приводит к множеству ошибок. Вот пример того же самого вызова, записанного на OCaml: repeated "hello" 3 (* this is OCaml code *).

Обратите внимание — нет скобок, нет запятых между аргументами.
Читать дальше →
Всего голосов 65: ↑59 и ↓6+53
Комментарии80

Реализация REST API на Symfony2: правильный путь

Время на прочтение18 мин
Количество просмотров57K
REST
Создание REST API это нелегкая задача. Нет, серьезно! Если вы хотите написать API правильно, вам придется о многом подумать, решить, быть прагматиком, или API маньяком. REST это не только GET, POST, PUT и Delete. На практике, у вас могут быть взаимодействия между ресурсами, нужно перемещать ресурсы куда-то еще (к примеру внутри дерева), или вы захотите получить конкретное значение ресурса.

В данной статье собрано все, чему я научился реализуя различные API сервисы, используя для этих целей Symfony2, FOSRestBundle, NelmioApiDocBundle и Propel. К примеру сделаем API для работы с пользователями.
Читать дальше →
Всего голосов 32: ↑29 и ↓3+26
Комментарии25

Rackspace обновило свое облако

Время на прочтение1 мин
Количество просмотров3K
image
Ровно 2 года назад, в июле 2010 года, компания Rackspace совместно с NASA объявили об открытии исходных кодов своих проектов (Rackspace Cloud Files и Nebula соответственно), которые стали базой для открытой облачной операционной системы OpenStack. За это время к инициативе присоединились почти две сотни компаний включая таких гигантов как Akamai, AT&T, Dell, IBM, HP и Canonical.

Множество компаний уже используют OpenStack в своих облаках (например, Deutsche Telekom, в России — Selectel), теперь же сама компания-основатель объявила о переводе своей облачной инфраструктуры на открытую платформу (а точнее с 1 августа).
Читать дальше →
Всего голосов 23: ↑20 и ↓3+17
Комментарии27

Встречайте обновленный Windows Azure. Небольшой обзор нововведений

Время на прочтение11 мин
Количество просмотров5K
Добрый день, уважаемые коллеги. Пока ещё уставшие от недосыпа последних дней (утренняя Венера, MEET Windows Azure) спят, в Томске сидит скромный автор и пишет эти строки, испытывая нечто вроде феерии от того, что происходит сейчас в мире IT. А мы, друзья, стоим на пороге окончательной необходимости менять парадигму.

В этой статье я попробую в рамках небольшого обзора передать то, что произошло сегодня ночью на событии MEET Windows Azure – мажорном релизе новой функциональности платформы. Основной доклад делался светлым умом, которого в твиттере назвали «Мидасом нашей современности» — Скоттом Гатри.

Читать дальше →
Всего голосов 30: ↑23 и ↓7+16
Комментарии13

Облачные базы данных: кто их делает и на что они способны

Время на прочтение5 мин
Количество просмотров35K
Помните, раньше было всего две-три облачных платформы и примерно столько же облачных БД? Сегодня облака стали гораздо популярнее, и, в связи с этим, значительно возросло и количество сервисов БД, построенных на них. Честно говоря, уже становится трудно уследить за их развитием и распространением! В этой статье мы представим вашему вниманию основные доступные облачные базы данных и вкратце расскажем о том, что они из себя представляют и куда движутся.

Примечание: мы говорим только об автоматизированных БД, не включая те, которые требуют пользовательского администрирования
Читать дальше →
Всего голосов 4: ↑3 и ↓1+2
Комментарии1

Памятка пользователям ssh

Время на прочтение13 мин
Количество просмотров1.5M
abstract: В статье описаны продвинутые функций OpenSSH, которые позволяют сильно упростить жизнь системным администраторам и программистам, которые не боятся шелла. В отличие от большинства руководств, которые кроме ключей и -L/D/R опций ничего не описывают, я попытался собрать все интересные фичи и удобства, которые с собой несёт ssh.

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

Оглавление:
  • управление ключами
  • копирование файлов через ssh
  • Проброс потоков ввода/вывода
  • Монтирование удалённой FS через ssh
  • Удалённое исполнение кода
  • Алиасы и опции для подключений в .ssh/config
  • Опции по-умолчанию
  • Проброс X-сервера
  • ssh в качестве socks-proxy
  • Проброс портов — прямой и обратный
  • Реверс-сокс-прокси
  • туннелирование L2/L3 трафика
  • Проброс агента авторизации
  • Туннелирование ssh через ssh сквозь недоверенный сервер (с большой вероятностью вы этого не знаете)
Читать дальше →
Всего голосов 360: ↑352 и ↓8+344
Комментарии148

Leaflet 0.4 — новая версия открытой JS-библиотеки для интерактивных карт

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


После пяти с половиной месяцев разработки с момента выхода предыдущей версии, очень рад наконец представить вам Leaflet 0.4 — новую версию легковесной JavaScript-библиотеки для интерактивных карт, которая одинаково хорошо работает и на десктопных браузерах, и на мобильных устройствах.

Этот релиз, к которому приложило руку 33 разработчика, несёт в себе более простой, удобный API и громадное множество улучшений и исправлений вместе с масштабным обновлением документации, запуском официального блога и страничкой плагинов. Давайте рассмотрим улучшения по порядку.
Читать дальше →
Всего голосов 77: ↑74 и ↓3+71
Комментарии30

Информация

В рейтинге
Не участвует
Откуда
London, England - London, Великобритания
Дата рождения
Зарегистрирован
Активность