Как стать автором
Обновить
67
0
Макс Вязников @ha7y

IT предприниматель

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

Colocation в десктопном ЦОД вместо Hetzner [cheapdc.ru]

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров5.8K

Опыт создания дата-центра от серверов на квартире у тёщи до локации на оборонном заводе с промышленными UPS’ками и гигабитным интернетом, описал в статье «История одного домашнего дата-центра».

Сегодня расскажу продолжение: выделенные серверы на десктопном железе, стойки под них, копание в законы про хостинг, колокейшн, дата-центры в контейнерах.

Читать далее
Всего голосов 11: ↑10 и ↓1+11
Комментарии8

История одного домашнего дата-центра

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров35K

История о создании домашнего дата-центра от 0 серверов (только посадочная) до сотни (ещё нет) за 1.5 года. Через интернет в новостройке, перепрошивку UPS и собственные стойки для десктопного железа к балансу отказоустойчивости с ценой и планам на будущее.

Вся история
Всего голосов 91: ↑89 и ↓2+108
Комментарии59

SQL Insert Injection в одном интернет магазине

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

Давно на Хабре не звучали истории про SQL injection. А уж рассказов из жизни про SQL INSERT injection вообще очень мало. Поэтому расскажу свою.
Лирическое вступление
Лирическое вступление

Всё началось с моего желания купить себе нечто недешёвое в разборном виде в интернет-магазине A.B.ru фирмы B. После оформления, связи с менеджером по электронной почте, получения посылки и обзора её содержимого оказалось, что некоторых метизов очень не хватает. Полного перечня всего необходимого не было, лишь список болтов, гаек и шайб. Я начал сборку, дойдя до того места, где без отсутствующих болтов уже никак не обойтись. Поэтому мною было скурпулёзно составлено описание не найденных метизов и выслано электронным письмом той же девушке-менеджеру, с которой мы общались. К чести магазина стоит сказать, что практически всё необходимое было выслано второй посылкой. Поэтому я начал сборку, загоняя в дальний угол своего разума опасения о том, что может отсутствовать что-то ещё. Но, дойдя до финишной прямой, оказалось, что примерно 1/4-ой часть устройства не хватает в принципе, судя по фотографиям из руководства и здравому смыслу. Поэтому за первым письмом о недокомплекте последовало второе, куда более обширное, а сборка отложена.
Когда прошла вторая неделя ожидания, мне удалось убедить себя в том, что девушка-менеджер вышла в отпуск. Поэтому я переслал ей письмо двухнедельной давности ещё раз и перешёл к поиску других каналов электронной связи — очень уж не хотелось звонить в Москву. В первую очередь тоже самое письмо было отправлено на общий эл-адрес A@B.ru, на что был получен мгновенный ответ: почтовый сервер отказывается принимать письмо из-за переполненного ящика получателя <мужик>@B.ru. Тогда была найдена форма обратной связи на сайте — последняя ниточка соединяющая меня на текущий момент с интернет-магазином. В первую очередь я описал проблему переполненного почтового ящика и вставил сообщение об отказе доставить письмо, которое содержало в себе одинарные кавычки…

Начало

На попытку отправить отчёт об ошибке через форму обратной связи, на пару секунд на странице появилась ошибка, в которой угадывался голос MySQL. Поэтому я открыл консоль браузера, повторил запрос и заглянул в ответ сервера:
Читать дальше →
Всего голосов 67: ↑53 и ↓14+39
Комментарии27

Потеря точности из Double во Float или «Куда пропадали копейки?»

Время на прочтение7 мин
Количество просмотров55K
Преобразование чисел из одного типа в другой обычно ведется таким образом, чтобы не потерять лишних чисел, т.е. из меньшего типа к более вместительному. Но что, если предыдущий разрабочик использовал конвертацию из Double во Float и стали пропадать копейки в отчетах?
В статье приводится изучение конвертации плавающих чисел в Java:
    99999999.33333333 -> 100000000.0000000
    98888888.33333333 ->  98888888.0000000
     2974815.78000000 ->   2974815.7500000

Давайте разберемся, к чему приводит такое преобразование и почему все происходит именно так. Ведь казалось бы, раз используемые в проекте числа далеки от максимальных значений типов float и double, то конвертация его из первого во второй не должна повлечь за собой отрицательных последствий в большинстве случаев.
Читать дальше →
Всего голосов 27: ↑16 и ↓11+5
Комментарии18

Проработанная идея алгоритма двусмысленного шифрования

Время на прочтение5 мин
Количество просмотров28K
Весьма красочно иллюстрирует размышления на тему шифрования изображение с xkcd.com.



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

Итак, если кратко, то владелец «такого ноута» при использовании изложенного алгоритма будет помнить несколько паролей, каждый из которых является ключом к своему «сейфу» (контейнеру файлов). Владелец определяет то, как распределить информацию среди контейнеров. Соответственно, он может создать несколько подставных контейнеров с заведомо ложной информацией. Итогом проиллюстрированных угроз может стать выдача пароля от одного из таких «сейфов». В случае, если злоумышленники хорошо знакомы с излагаемым алгоритмом, можно, например, выдать еще 1 или 2, и/или сказать, что больше контейнеров в этом архиве нет, а все остальное — случайная информация.
Подробное описание предлагаемого алгоритма
Всего голосов 41: ↑35 и ↓6+29
Комментарии42

Компонент для интеграции строк Ext.grid.Panel с Ext.toolbar.Toolbar

Время на прочтение4 мин
Количество просмотров5.6K
В рамках создания административной части одного из проектов, мне посчастливилось разработать довольно стройный компонент, элегантно дополняющий достаточно богатый функционал библиотеки ExtJS 4.

Пример использования: http://siterra.org/examples/rowtoolbar.html
Репозиторий: https://github.com/siterra/RowToolbar
Тестировался с ExtJS 4.1.1a.

Читать дальше →
Всего голосов 22: ↑20 и ↓2+18
Комментарии7

Генератор надежных и запоминаемых паролей на Javascript

Время на прочтение3 мин
Количество просмотров16K
image
Представляемый генератор паролей создает относительно легко запоминающиеся и, в тоже время, трудноподбираемые пароли. Основная идея состоит в том, что пароли генерируются на основе слогов и поэтому выглядят как слова или словосочетания. Для лучшего запоминания используются заглавные буквы в начале каждого слога.

Проект на Google.Code:
code.google.com/p/jspassgen/downloads/list
Пример работы можно посмотреть здесь:
бизнес-книги.рус/ext/jspassgen/example.html
Читать дальше →
Всего голосов 58: ↑47 и ↓11+36
Комментарии59

NetBeans в Java Real-Time

Время на прочтение2 мин
Количество просмотров5.2K
nb
NetBeans — очень удобная для разработчика среда, обычно отпугивающая своей тормознутостью, т.к. громоздка и написана на Яве. Что ж, будем надеятся, что однажды все наладится, а пока посмотрим, как эту ситуацию может исправить Real-Time Java.

Запуск NetBeans в JavaRTS
Всего голосов 21: ↑16 и ↓5+11
Комментарии42

С днем рождения, PHP!

Время на прочтение1 мин
Количество просмотров2.6K
phpВ 1994 году Расмус Лердорф (Rasmus Lerdorf) создал набор скриптов на Perl/CGI для обработки шаблонов html файлов своего онлайн-резюме. Но когда функционала и скорости Perl перестало хватать, Расмус переписал интерпретатор на C, назвав его PHP/FI (Personal Home Page / Forms Interpreter).

8 июня 1995 года, 14 лет назад, вышел PHP/FI 2.0 — первый публичный релиз.

В общем, поздравляю, PHP! Меньше глюков, больше секурности и ООП-а в головах новичков!
Всего голосов 160: ↑136 и ↓24+112
Комментарии175

Очистка локального репозитория от старых пакетов

Время на прочтение2 мин
Количество просмотров5.2K
Ситуация, когда в кэше накапливается несколько гигабайт пакетов, думаю, известна многим. Так же как и стандартное решение — удаление неустановленных пакетов
$ apt-get clean
Команда очистит директорию "/var/cache/apt/archives/", удалив все, а
$ apt-get autoclean
удалит не только старые версии пакетов локального кэша, но все, которые больше не доступны для скачивания.

Однако, зачастую необходимо удалить лишь устаревшие пакеты, не трогая при этом все остальные.
Далее
Всего голосов 19: ↑12 и ↓7+5
Комментарии6

Информация

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