Pull to refresh
2
0
Aleksandr G. @devosx

DevOps Team Lead

Send message

Двухфакторная аутентификация на домашнем серваке — быстро, дёшево, дружелюбно

Reading time3 min
Views16K
Двухфакторная аутентификация — предоставления информации от двух различных типов аутентификации информации [»]

Например, это могут быть последовательно введённые пароль и код, который выдаёт токен с кнопкой. Думаю, многие из вас такие девайсы видели, а кто-то даже их регулярно использует.



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

С некоторых пор Google сделала доступной двухфакторную аутентификацию в своих сервисах. Теперь токен переехал в ваш мобильный телефон с Android'ом! iPhone и Blackberry тоже сгодятся в такой роли. Очень удобно. Опробовав на Gmail, мне захотелось такую же штуку сделать у себя, тут-то я внезапно и нашёл libpam-google-authenticator.
Читать дальше →
Total votes 92: ↑89 and ↓3+86
Comments29

Практический пример использования Backbone

Reading time5 min
Views44K
В данной заметке речь пойдет об использовании Backbone, а в частности, примеры кода работающего с сервером. Это должен быть некий промежуточный пункт в блужданиях Ищущего, так как иначе начать им пользоваться очень сложно, а вероятность отказаться от идеи перехода стремится к единице.

Зачем вообще нужна данная публикация? Тут уже были статьи по теме, но они затрагивают лишь очень поверхностно то, о чем и так написано в документации, хотя следовало бы показать пути недокументированные. Именно так: backbone это не комплексная standalone библиотека вроде Jquery, которую и не тронешь, не сломав. Данная библиотека предназначена лишь для построения приблизительной структуры; мы же можем лепить из данного материала то, что нам нужно. Еще раз: тут нет смысла искать готовые паттерны, буква в букву примеры не нужно перепечатывать, все равно не поможет. Нужно научиться пользоваться инструментом, после чего уже бросаться в бой.
Читать дальше →
Total votes 32: ↑27 and ↓5+22
Comments37

Мой open source велосипед

Reading time4 min
Views18K
“Воин не бросит начатое.”
Мастер Шифу, м.ф. Кунг-фу Панда


Можно рассматривать этот топик не как технический, а как художественный. Тут не будет кусков кода, диаграмм классов и прочей ерунды. Будет история одного java open source проекта, который я разрабатываю уже около года.

Начало


Все началось, когда я был на четвертом курсе одного провинциального российского университета. С семестра, о котором ходили легенды на моей специальности, как о “семестре-убийце“ с его 55-ю лабораторными работами по графике, компиляторам и вычислительной математике (далее ВМ).
Читать дальше →
Total votes 109: ↑94 and ↓15+79
Comments30

Как работает yield

Reading time6 min
Views677K
На StackOverflow часто задают вопросы, подробно освещённые в документации. Ценность их в том, что на некоторые из них кто-нибудь даёт ответ, обладающий гораздо большей степенью ясности и наглядности, чем может себе позволить документация. Этот — один из них.

Вот исходный вопрос:
Как используется ключевое слово yield в Python? Что оно делает?

Например, я пытаюсь понять этот код (**):
def _get_child_candidates(self, distance, min_dist, max_dist):
    if self._leftchild and distance - max_dist < self._median:
        yield self._leftchild
    if self._rightchild and distance + max_dist >= self._median:
        yield self._rightchild

Вызывается он так:
result, candidates = list(), [self]
while candidates:
    node = candidates.pop()
    distance = node._get_dist(obj)
    if distance <= max_dist and distance >= min_dist:
        result.extend(node._values)
        candidates.extend(node._get_child_candidates(distance, min_dist, max_dist))
        return result


Что происходит при вызове метода _get_child_candidates? Возвращается список, какой-то элемент? Вызывается ли он снова? Когда последующие вызовы прекращаются?

** Код принадлежит Jochen Schulz (jrschulz), который написал отличную Python-библиотеку для метрических пространств. Вот ссылка на исходники: http://well-adjusted.de/~jrschulz/mspace/

Подробный и обстоятельный ответ
Total votes 141: ↑136 and ↓5+131
Comments41

Подборка скриптов для создания галереи на php

Reading time1 min
Views36K
Искал я на просторах Интернета всего лишь скрипт для создания индекса изображений с lightbox и генерированием thumbnails. Помимо того что меня полностью устроило (phppi), нашел довольно интересную подборку галерей. В наличии комментарии и пояснения, думаю будет полезно новичкам да и бывалым время сэкономит.

Fullscreen Gallery with Thumbnail Flip



Читать дальше
Total votes 46: ↑25 and ↓21+4
Comments10

Упрощение жизни разработчика с помощью сторонних сервисов

Reading time3 min
Views9.6K
Представляю скромную подборку сервисов, которые ускоряют экономят время разработчику и/или ресурсы сервера. Здесь не будет подробных обзоров, только список с кратким описанием и ссылками. Также, я не претендую на свежесть ресурсов, поэтому кому-то перечисленный список покажется слишком очевидным и известным всем.

Буду рад включить ссылки и описания, предложенные в комментариях.

Google Fusion Tables


Позволяет развернуть реляционную базу данных на серверах гугла с обращениями с помощью библиотеки Visualization или JSONP.
Статья на хабре: habrahabr.ru/blogs/webdev/116035
Ссылка: www.google.com/fusiontables/Home

Минусы: количество обращений в секунду равно пяти с одно IP адреса и столько же при обращении с аккаунта (используя авторизацию). То есть развернуть сайт с хорошей посещаемостью и работать с сервисом с помощью сервера не получится. Стоимость увеличения лимита — от 10 тысяч долларов в год (см. Maps API Premier). Кроме того, отсутствуют джойны, которые заменяются представлениями (view), создаваемыми через интерфейс.
Читать дальше →
Total votes 170: ↑156 and ↓14+142
Comments41

Duqu: история Stuxnet продолжается…

Reading time2 min
Views7.4K
На протяжении последних нескольких дней большое внимание приковано к вредоносной программе Win32/Duqu. Дело в том, что по особенностям своей реализации Win32/Duqu похож на широко известный Win32/Stuxnet. В прошлом году мы проводили довольно детальный анализ червя Win32/Stuxnet, в результате которого появился исследовательский отчет «Stuxnet Under the Microscope». И сейчас исследуем Win32/Duqu, изучив модули и механизмы их работы которого, можно утверждать, что эта вредоносная программа базируется на одних тех же исходных кодах или библиотеках, что и сам Win32/Stuxnet. Пожалуй, это даже не просто исходные коды, а некоторый framework для разработки вредоносных программ или кибероружия. Восстановленный код драйверов Duqu нам очень напомнил, то, что мы уже видели в Stuxnet. Эти драйверы практически идентичны с тем, что мы видели прошлой осенью.
Читать дальше →
Total votes 16: ↑15 and ↓1+14
Comments5

Java сертификация. Подготовка к SCJP

Reading time5 min
Views70K
В этом месяце я сдавал экзамен SCJP. В этом топике я расскажу о подготовке и экзамене.
В основном для тех, кто собирается сдавать и кому нужно больше информации об этом.

Уточнение


Так как Sun'a больше нет, то и экзамена SCJP тоже нет. Теперь он значится так:
1Z0-851 Java Standard Edition 6 Programmer Certified Professional Exam.
прочитать об экзамене и посмотреть задачи
Total votes 89: ↑84 and ↓5+79
Comments43

Проксируем Cookies на Nginx при помощи модуля lua-nginx

Reading time4 min
Views30K


Я уже писал о том, как с помощью Nginx трансформировать контент на лету. С момента публикации статьи на базе описанного метода запущен и развивается реальный проект ecommerce. Помимо перевода и трансформации также реализован и SEO рерайт по заветам руководства для начинающих от Google.

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

В чем суть проблемы


Проблема заключается в том, что любой нормальный сервер приложений всегда выставляет Cookie, например для того, чтобы сохранять сессию клиента или корзину с его товаром. Если этот сервер (точнее его администратор) озабочен поддержанием определенного уровня безопасности, то он выставляет в теле Cookie домен и путь, например domain= backend.org; path=/path1. Наш Nginx запущенный в режиме Reverse Proxy замечательно меняет все ссылки в теле документов с backend.org на frontend.org, но не делает этого для кук! Это означает что браузер клиента отвергнет такие куки.

Этот вопрос с давних пор волнует умы администраторов nginx, в рассылках он всплывает по 1-2 раза в год. Большинство вопрошавших, по-видимому, решили свои проблемы подкручивая логику backendа, но не я! После очередного апдейта оригинального сайта стало понятно, что костыль с PHP + Curl тянуть больше невозможно и надо непременно найти решение с помощью Nginx!

Я вернул тему в рассылку, попутно перебирая варианты из ngx_http_perl_module и переменной $upstream_http_set_cookie, даже заглянул в дебри сорсов с призрачной надеждой написать модуль самому. Но все было неудачно пока в один прекрасный момент я не получил письмо от Mikhail Mazursky, который дал ценный совет. Благодаря этому совету я не только с легкостью решил задачу проксирования Cookie, но и получил новый инструмент, с помощью которого можно создать версию 2.0 своего проекта.

Решение


Название этого инструмента lua-nginx-module, который написан еще одним китайским самородком с корнями из Taobao. Из названия легко понять, что речь об языке скриптов Lua встроенном в Nginx — но это больше чем просто интерпретатор! Эти ребята создали полностью неблокируемую реализацию с производительностью десятки тысяч операций в секунду, которая имеет хуки ко всем событиям внутри Nginx. То что раньше можно было реализовать только написав свой модуль на C, теперь можно сделать несколькими строчками на Lua. Заинтересовались?
Тогда добро пожаловать под кат!
Total votes 64: ↑63 and ↓1+62
Comments18

Онлайн-трансляция Apple Developers Community #9

Reading time1 min
Views2K
Сегодня (18.10) в 18:00 начнется девятая конференция Apple-разработчиков, полный анонс о которой можно прочитать здесь.

image

Напомню лишь, что выступать будут:
  • Вадим Башуров (ИТЦ «Система-Саров») «Как откусить от яблока миллион»;
  • Вячеслав Карпенко (Unreal Mojo) «Борьба с пиратством в App Store»;
  • Григорий Бутейко (DataArt) «Особенности Mac OS Lion»;
  • Тимур Гарифзянов (e-Legion) «Субъективный взгляд разработчика на WP7»;
  • Владимир Колесников (Microsoft) «Windows Phone7: самое главное для разработчика».
Онлайн-трансляция будет доступна в 18:00 по Москве.
Total votes 20: ↑15 and ↓5+10
Comments0

Централизованное развертывание настроек Microsoft Word средствами групповой политики

Reading time10 min
Views29K
Во многих компаниях, для большинства пользователей основным (а иногда и единственным) продуктом, который использует большая часть сотрудников, является тестовый редактор Microsoft Word, входящий как ключевой компонент программного продукта Microsoft Office. В принципе, изначально после установки данный продукт настроен оптимальным образом, и большинство людей использует его, не внося какие-либо изменений в настройки. Если посмотреть на этот программный продукт глубже и хотя бы открыть диалоговое окно «Параметры Word», то можно увидеть, что Microsoft Word включает в себя около двухсот различных настроек, позволяющих подогнать данный продукт непосредственно под свои потребности.
Если перед вами стоит задача, связанная с настройкой некоторых параметров данного продукта для нескольких компьютеров, входящих в домашнее окружение или в рабочую группу, думаю, вас не сильно затруднит, перебрать все настройки и вручную изменить тот или иной параметр. Но если вам нужно поменять определенные настройки для десятка или сотни пользователей, расположенных в нескольких подразделениях на разных этажах, то такое занятие займет у вас продолжительное время, грубо говоря, потраченное зря.
Как многие из вас знают, для централизованного распространения общесистемных настроек и настроек некоторых программных продуктов, целесообразно использовать функционал групповой политики. В этой статье речь пойдет в распространении настроек Microsoft Word 2010 средствами групповой политики, на компьютеры с операционной системой Windows 7, входящие в домен Active Directory, работающим в режиме домена Windows Server 2008 R2 в фиктивной компании Biopharmaceutic.
Читать дальше →
Total votes 10: ↑8 and ↓2+6
Comments5

Поиск создателя Bitcoin

Reading time4 min
Views25K
Основополагающий документ с принципами пиринговой криптосистемы Bitcoin опубликовал некий Сатоси Накамото (Satoshi Nakamoto). До сих пор не известно, кто скрывается за псевдонимом, один или несколько человек.

Японское имя Сатоси означает «ясно мыслящий, сообразительный, мудрый». Слово naka переводится как «внутри», а moto — «начало, основание, базис, организация». То есть Сатоси Накамото можно перевести как «ясно мыслящий человек внутри фундаментальной организации». Интересное совпадение, если учесть революционную сущность платёжной системы Bitcoin, которая грозит перевернуть мировую финансовую систему.

Американские журналисты в последние дни опубликовали сразу два расследования (1, 2), выдвинув разные версии о личности создателя Bitcoin. Одна из этих версий (с российским следом) выглядит весьма правдоподобно. Впрочем, обо всём по порядку.
Читать дальше →
Total votes 191: ↑162 and ↓29+133
Comments61

Создание серверной инфраструктуры на малом предприятии в условиях скромного бюджета

Reading time4 min
Views23K
Доброго времени суток, уважаемые читатели.

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

Я думаю, что для тех, кто работал в обычной российской компании численностью менее 20-30, не секрет насколько руководство зажимает деньги на развитие IT. Так было и в компании X, где я работал.
Читать дальше →
Total votes 43: ↑31 and ↓12+19
Comments55

Бесплатные книги

Reading time3 min
Views60K
Несколько книг по разным темам, которые находятся в открытом доступе.

Основы программирования
Читать дальше →
Total votes 243: ↑239 and ↓4+235
Comments32

Git и публикация сайта

Reading time4 min
Views114K
При попытке отредактировать этот старый пост слетело всё форматирование. Может быть я его когда-нибудь исправлю.

Я потратил несколько месяцев на борьбу с глюками Git-svn и обдумывание разных вариантов, прежде чем пришёл к этому методу организации рабочего процесса с сайтом — простому, гибкому и удобному в работе.

Основные преимущества:
  • Делая push из удалённой копии мы автоматически обновляем live-копию сайта
  • Правки файлов на сервере не будут разрушать историю коммитов
  • Простота, не нужны особые правила выполнения коммитов
  • Можно применить к уже запущенному сайту, без повторного деплоя или перемещения файлов
посмотреть, что там такое
Total votes 99: ↑88 and ↓11+77
Comments49

Наш опыт работы с Django, или 10 полезных модулей, облегчающих жизнь

Reading time4 min
Views38K
Бесценный опыт работы с Django, или Django для блондинок, брюнеток и всех-всех-всехПоследние 15 недель мы активно работали над проектом «Стиллион», первым нашим мейнстрим-проектом, написанным на Django. Был приобретен интересный опыт, которым мы хотели бы поделиться с сообществом.
Статья, прежде всего, будет интересна новичкам в Django.
За катом список полезных плагинов, которые мы использовали, и ещё немного клёвых фич
Total votes 108: ↑100 and ↓8+92
Comments59

Полная русификация админки

Reading time10 min
Views39K

Здравствуйте. На днях возникла задача русифицировать админку django включая названия моделей, полей и приложений. Основной целью было избежать модифицирования кода django. Продолжительное гугление не дало целостной картины этого процесса. Поэтому я решил собрать все в одном месте.
Сразу скажу, что еще в самом начале проекта поставил django-admin-tools и тем самым сохранил себе некоторое количество нервных клеток. А все манипуляции проводились над django 1.3.
Интерисующихся прошу под кат
Total votes 85: ↑76 and ↓9+67
Comments16

Начинающим Java программистам

Reading time2 min
Views1.2M
Программирую на Java вот уже 7 лет. Но на работе часто приходится обучать новое поколение. В связи с этим и решил сделать некоторую шпаргалку, которая, надеюсь, пригодится и для хабрчан. Если кто-то может помочь дополнить чем-то информацию из этой статьи, то пишите! Итак:

Основные ресурсы для начального обучения


  • www.javable.com — сайт со статьями и tutorial'ом по Java. Все в основном на русском.
  • www.exampledepot.com — очень полезный ресурс, где собраны краткие примеры использования классов для тех или иных пакетов
  • java.sun.com — без первоисточника не обойтись. Для любого Java программиста JavaDoc должен быть истиной в последней инстанции. Так же здесь можно найти серию tutorial'ов на все возможные темы.

Читать дальше →
Total votes 120: ↑113 and ↓7+106
Comments58

phpinfo.php: невероятно, но факт

Reading time2 min
Views27K
Дело было вечером, делать было нечего. Написал скрипт для поиска файлов phpinfo.php. Было исследовано 36,804 сайтов Рунета, на 1,725 нашёлся файл phpinfo.php с функцией phpinfo (~4.69%).

Как видно, не все вебмастера знают простую истину – взлом сайта начинается со сбора информации о сервере.

Аналогичная проверка зарубежных сайтов показала, что наши иностранные коллеги более благоразумны: исследовано 166,652 сайтов, phpinfo.php обнаружен на 3,923 (~2,35%).

%username%, а ты удалил файл phpinfo.php (temp.php, test.php) со своего сайта?

Побочный результат исследования, статистика версий PHP
Читать дальше →
Total votes 128: ↑102 and ↓26+76
Comments105

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity