Обновить

Настройка APC Smart UPS 1000 в Ubuntu server 14.04 LTS и установка модуля Webmin

Началось все с того, что у меня сгорел служивший верой и правдой много лет Back-UPS 500VA. Не беда, подумал я и заменил его на APC Smart UPS 1000, что для моего сервера оказалось гораздо лучше. Сразу скажу, изначально сервер работал на форточках и проблем с бесперебойником не было. После замены ИБП и окончательно-бесповоротном переходе на Ubuntu я задался вопросом: собственно, как мониторить состояние сети электропитания и состояние бесперебойника? Погуглив некоторое время, я наткнулся на несколько инструкций по подключению бесперебойников к никсовым машинам, но почему-то они все были про Back UPS и USB. В частности, меня натолкнуло на написание этой статьи аналогичная статься на Хабре «Начальная настройка ИБП APC в Linux с точки зрения чайника».

Но у меня же старенький тысячник с ком-портом и про USB он и слыхом не слыхивал.
Читать дальше →

Инжект пакетов в закрытые WIFI сети

При передаче данных по защищенным беспроводным wifi-сетям заголовок фрейма 802.11 передается в открытом виде тогда как вся его полезная нагрузка поддаётся шифрованию. Для правильной обработки такого фрейма машина получателя должна каким либо образом “догадаться” что данные внутри него зашифрованы, и перед их передачей на более высокие уровни модели OSI их необходимо расшифровать. Эту роль согласно стандарту 802.11 выполняет флаг WEP, который занимает 15-ий бит в заголовке фрейма 802.11, и принимает значение 1 при использовании шифрования.

Структура фрейма 802.11
Заголовок фрейма 802.11



Frame control field




Отсюда вопрос: Как отреагирует машина в защищенной wifi сети на фрейм в котором флаг WEP не установлен, когда в 15-м бите заголовка будет находиться 0?
Читать дальше →

Псевдо 3D: jquery против gif-anim

Как то раз, разгребая завалы рабочих файлов я наткнулся на 2 скучноватые, в общем-то, фотографии. А интерес мой к ним вызвало то, что я случайно сделал фото одного и того же объекта с немного разной позиции. И вот, просматривая их подряд я ощутил эффект трехмерности изображения. В порядке эксперимента я тут же создал анимированный gif, который менял эти фотографии по кругу. Результат из 2 фотографий выглядел довольно гротескно и вау-эффект не ощущался. Тогда я решил, что мне нужны промежуточные кадры. Программа для создания gif-анимации предлагала подобный функционал. Но анимация 64 кадра размером 3000х2000 точек, роняла эту программу-редактор в 100% случаев. Я уменьшил количество кадров и их размер, результат меня по прежнему не радовал — хотя дерганность исчезла, размер получившегося файла составлял что-то около 4 с небольшим мегабайт. Очередная светлая мысль — нужно использовать jquery! В сгенерированном gif-anim нет ничего сложного, нужно только использовать анимацию по css-свойству opacity.
И вот что у меня получилось

Троллинг Мой Мир@Майл.ру

Предисловие


Начать стоит, пожалуй, с того, что весной 2012 года, мне попался один очень интересный скрипт на JavaScript, который в общем рейтинге голосований за фото, автоматически «выставлял» для всех фото оценку +1. Зарегистрировав аккаунт на Mail.Ru, я запустил скрипт и оставил его на ночь.

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

Пару дней назад мне стало скучно и я восстановил доступ к аккаунту: оказывается, за это время он был полностью очищен, я запустил старый скрипт и был удивлен тем, что он перестал работать. Программисты Mail.Ru явно не сидели на месте и слегка подредактировали страницы. Разве это проблема?

Полазив по сайту, я нашел страницу голосования, теперь она находится в разделе "Фото дня".

day_photo

Старый добрый FireBug показал следующее:

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

Защита видеоконтента (flv) от кражи с помощью lighttpd

В этом посте я попробую подробно расписать как защититься от кражи видеоконтента. Для начала нужно определиться с ОС и сервером. Мой выбор пал на Ubuntu. Нам потребуется 2 http сервера: один — Apache, другой — Lighttpd. В качестве web-оболочки выбираем свой любимый двигатель CMS. На примере буду рассматривать datalife engine (DLE).
Читать дальше →

SMS уведомление о перебое питания используя Asterisk + Dongle и apcupsd

Нужно чтобы на мобильный приходило смс в случае исчезновения и возобновления питания на сервере. Есть Freebsd демон apcupsd управления ИБП APC и asterisk с подключенными к нему GSM модемами.
Читать дальше →

Если вы тоже решили стать программистом

Мне часто приходилось отвечать на вопросы новичков, решивших стать программистами. Статей на эту тему написано много, когда-то было достаточно сослаться на них, когда-то прокомментировать, а иногда отвечать самостоятельно. Один из таких ответов вылился в эту статью. Возможно кому-то она будет полезной. Если вам тоже часто приходится вводить новичков в курс дела — прошу под кат.

Для начала, определимся с целями.

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

Прикручиваем django-profile

Прочитав замечательную статью и установив django-registration, появилась потребность установить django-profile. Скачав с репозитория, приступил к изучению, поискам в интернете и прочтению стандартной документации. Мне, как новичку в django, это приложение показалось удобным, так как не нужно много заморачиваться и нет пока необходимых знаний для реализации профайлов юзеров. Хотелось бы поделится тем, что получилось, узнать с людьми, которым это будет интересно. Возможно, для тех, кто пользуется django уже довольно давно данная статья покажется смешной. Но если бы я наткнулся на нее, то мне бы она помогла. По этой причине я и решил её написать.

В принципе, инструкция по установке есть в репозитории, за исключением одного маленького нюанс — он не обновлялся около 4-х лет. Это была основная проблема, так как я использую django 1.6.5.
Читать дальше →

Фильтрация спама средствами сервиса от Яндекса

Кто сталкивался с фильтрацией спама знает, какая это не тривиальная задача. Бороться с ним эффективно в одиночку очень сложно. Поэтому хочу поделиться универсальным рецептом фильтрации спама с помощью бесплатного сервиса «Почта для домена» от Яндекса.
Читать дальше →

Ошибка настройки Source NAT на маршрутизаторах Mikrotik

Я столкнулся с интересной особенностью работы маршрутизаторов Микротик. В сети есть 3 VLAN, маршрутизацией между ними занимается Микротик и все бы хорошо, но иногда из сети выпадают хосты. При этом сам Микротик эти хосты видит, но трафик до них отправлять не хочет. Обычно проблема «самоликвидируются» после перезагрузки устройства. Второй особенностью поведения является странное поведение трафика – TCP и ICMP пакеты проходят нормально, а вот UDP теряются в недрах маршрутизатора. Манипуляции с таблицей маршрутизации не помогают. «Рассасывается» проблема так же как и появляется – сама без чьей либо помощи.
Читать дальше →

Локальная защита от компрометации

Контекст


Что имеем:
  • Информационные ресурсы освещают тему приватности однобоко, не делая различия между приватностью и компрометацией владельца.
  • Информация в литературе разрознена, четких руководств нет.
  • Использование индивидуальной компрометации владельца в современном мире вообще ставит под сомнение любые права и «свободы» личности. Решение проблемы комплексной индивидуальной системы защиты от компрометации финансово невыгодно, требует глубоких знаний и временных затрат.

Любой антивирусный «suite» или аналог как всегда «рекламирует» приватность, абсолютно забывая, что в случае преднамеренной компрометации и в дальнейшем при физическом попадании компьютера в «чужие» руки, их защита не выдержит «минимальных» способов извлечения целевой информации. Огромное количество программ, да и сама OS, оставляют следы своей деятельности на жестком диске, по которым косвенно можно судить о действиях владельца ПК. Кроме того существуют специально написанные трояны, которые будучи установленными через дыру в вашу OS не только будут сохранять ваши пароли, но и могут без вашего ведома сохранить на вашем же компьютере компрометирующие вас данные.
Читать дальше →

«Ручная» регулировка оборотов кулера

Года два назад ко мне в руки попал подержаный MacBook White, которым я пользуюсь по сей день. Тогда на нем еще стояла WinXP и он жутко грелся из-за того, что кулер никак не хотел раскручиваться на полную, так что я, подумав некоторое время, установил родную для него MacOS(чтобы обновить UEFI), но принятое мною решение не оправдалось. Стало ясно, что проблема явно аппаратная, а менять что-то в ноуте было затратно да и неинтересно, поэтому оставалось единственное верное решение, которое, я был уверен, даст свои плоды — установка на ноут дистрибутива линукс, а именно lubuntu, которая мне приглянулась из-за простоты своего облегченного интерфейса. Таким образом и началось мое тесное знакомство с данной осью.
Читать дальше →

R и RStudio в облаке

В этой статье я расскажу, как писать код на языке R (через интерфейс RStudio), не устанавливая на компьютер ни R, ни RStudio. Лично мне это потребовалось для того, чтобы работать с R на хромбуке, но теоретически может быть использовано на любом устройстве.
Читать дальше →

Передача AntiForgeryToken в каждый AJAX POST реквест, генерируемый Ajax.ActionLink

Этот текст описывает приём, полезный при создании Ajax UI на базе библиотек Microsoft, поставляемых вместе с ASP.NET MVC.

Хорошей практикой является валидирование всех POST реквестов с помощью AntiForgeryToken. Это легко сделать, генерируя его с помощью вызова хелпера Html.AntiForgeryToken() в каждой форме при рендеринге. При этом, в контролере к экшенам, валидирующим этот токен, добавляется атрибут ValidateAntiForgeryTokenAttribute. Всё хорошо, пока не используются методы взаимодействия с сервером, которые выполняют Ajax реквесты без явного создания форм. Например, такие, как созданные с помощью хелпера Ajax.ActionLink(). В случае использования хелпера Ajax.ActionLink форма создается динамически перед отправкой. Стандартного способа внедрить в её тело требуемый токен нет. В описываемом случае абсолютно все экшены, принимающие POST реквесты, валидируют AntiForgeryToken. Если ничего не предпринять, то реквесты, генерируемые кодом Ajax.ActionLink, будут отвергнуты сервером.
Читать дальше →

Программный продукт — какой он должен быть?

В свое время, мне довелось ознакомиться с книгой создателя международной платежной системой VISA Ди Хока. Книга называлась «Философия твоей кредитки». В данной книге автором при разработке логики и системы VISA, широко применялся один очень интересный метод. Создавая какой-либо процесс или операцию, а также все структуру платежной системы, не имеющей, к слову, на тот момент аналогов, он всегда задавал себе один и тот же вопрос: «А какой должна быть в идеале процедура(операция, система международных платежей)?».

Я предлагаю аналогично, абстрагироваться от установившейся повсеместно практике, и ответить на вопрос в общих чертах, так сказать, в теории. Ответить на вопрос: «А каким в идеале должен быть программный продукт?». Какие атрибуты должны быть у завершенного программного кода, чтобы он воспринимался на рынке ПО, как что-то единое, законченное и понятное для конечного потребителя настолько, чтобы он готов был использовать его для решения для своих непосредственных задач. Итак, у Вас есть написанный, скомпилированный и рабочий программный код, назовем его условно «Программа». Что еще нужно сделать, чтобы он стал программный продуктом?
Читать дальше →

Как сделать телевизор из компьютера

Добрый день,

Наверняка многие сталкивались с проблемой, при которой у вас по какой-то причине нет телевизора, но есть компьютер с интернетом и смартфон Android. При этом нужно простое и быстрое решение (без покупки дополнительной техники, вроде TV-приставок или подключения спутника).

Когда передо мной встала такая проблема, мне казалось, что решение должно быть тривиальным. Однако Google помочь не смог (в плане готового решения). Поэтому я придумал свое и решил поделиться с вами.
Читать дальше →

MongoDB Native и ensureIndex

Решил написать небольшую заметку про ensureIndex при работе с MongoDB в NodeJS.

В работе ensureIndex в MongoDB native драйвер скрывается небольшой подвох, который с течением времени может проявиться.

Вся проблема кроется при работе с Compound Indexes: docs.mongodb.org/manual/core/index-compound/#prefixes
Читать дальше →

Подгружаемые динамические данные на сайте

Здравствуйте. Часто на сайтах есть динамические данные, которые нельзя по каким-либо причинам кэшировать. Это “вычисляемые” данные. Например, количество товаров в корзине и общая сумма корзины, целевые рекламные баннеры, показываемые авторизованному/неавторизованному пользователю в зависимости от его покупок, поисков и т.п., часто обновляемый курс валют и … можно и дальше перечислять.
Как правило, вы выбираете для проекта фреймворк, CMS, которые замечательно все кэшируют и быстро отдают страницы, но подобные данные неоправданно тормозят вывод страниц. Что делать?
Еще один велосипедист?

Samsung Gear VR — Виртуальная реальность становится мобильной

На прошедшей выставке IFA 2014 в Берлине, всем известная компания Samsung анонсировала свои собственные очки виртуальной реальности, что само по себе довольно интересно. Но, изюм заключается в том, что в этом принимает участие никто иной как Oculus.

image

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