Pull to refresh
7
0.1
Андрей Абакумов @ScratchBoom

User

Send message

Как устроен AES

Reading time7 min
Views291K

О чём эта статья



Долгое время я считал, что криптографические алгоритмы шифрования и хеширования, вроде AES и MD5, устроены очень сложно и написать их совсем не просто, даже имея под рукой полную документацию. Запутанные реализации этих алгоритмов на разных языках программирования только укрепляли это мнение. Но недавно у меня появилось много свободного времени и я решил разобраться в этих алгоритмах и написать их. Оказалось, что они очень просто устроены и для их реализации нужно совсем немного времени.

В этой статье я напишу как устроен алгоритм шифрования AES (которого иногда называют Rijndael) и напишу его на JavaScript. Почему на JavaScript? Чтобы запустить программу на этом языке, нужен только браузер в котором вы читаете эту статью. Чтобы запустить программу, скажем, на C, нужен компилятор и найдётся совсем мало желающих, готовых потратить время на компиляцию кода из какой то статьи. В конце есть ссылка по которой можно скачать архив с html страницей и несколькими js файлами — это пример реализации AES на JavaScript.

Читать дальше →
Total votes 120: ↑115 and ↓5+110
Comments45

Рисоваська, часть 3: Амазоновские веб-сервисы в действии

Reading time10 min
Views36K
В данной статье я расскажу, что же такое Amazon Web Services или сокращенно AWS, для чего это можно использовать, и приведу пошаговую инструкцию, как настроить их у себя с самого начала. В статье основной упор будет сделан на Amazon Elastic Compute Cloud или EC2 и Amazon Simple Storage Service или S3. Amazon CloudFront, являющийся логическим продолжением S3, хорошо рассмотрен в статье mish: Настраиваем CloudFront для работы с S3. С остальными амазоновскими сервисами вы можете познакомиться самостоятельно: Amazon SimpleDB, Amazon Simple Queue Service или SQS, а также другими сервисами Амазона. Данная статья является продолжением первой и второй статей. Итак:

Что такое Amazon Web Services


Это набор удобных сервисов, которые можно использовать как по отдельности, так и вместе. В первую очередь это «облачные вычисления» (анг. Elastic Compute Cloud). Что это значит? Это значит, что вы можете запустить в «облаке» любое кол-во компьютеров нужной вам конфигурации c нужной вам операционной системой всего за пару минут. Это действительно так. Время запуска одного инстанса (instance называется один виртуальный сервер в амазоне) обычно не превышает двух минут. Сразу после запуска инстанс начинает работать, к нему есть root-доступ по SSH или Remote Desktop, если там установлен Windows. Не правда ли, здорово! С момента запуска оплата за инстанс идет по часам. В любой момент вы можете остановить инстанс и деньги за его использование перестанут сниматься. Помимо времени работы инстанса, так же отдельно оплачивается входящий и исходящий трафик.
Читать дальше →
Total votes 101: ↑98 and ↓3+95
Comments51

Хостинг на AWS (EC2, EBS, S3) для чайников

Reading time4 min
Views138K
На хабре уже проскакивали периодически заметки посвященные AWS (Amazon Web-Services) — так что тема не новая. Однако, если для меня лично (да и для многих моих знакомых как выяснилось) — этот термин был знаком — однако каких-либо деталей я не знал. Попробую на основании только-что полученного опыта рассказать немного подробней, а так же изложить основные шаги по организации хостинга сервера на AWS и его преимущества. Как и несколько ссылок, которые могут оказаться полезными.
image
Читать дальше →
Total votes 101: ↑98 and ↓3+95
Comments62

Intel IPP Samples for Windows — работа над ошибками

Reading time13 min
Views2.5K
Проверка Intel IPP Samples for Windows
Это моя очередная заметка о том, как PVS-Studio делает программы более надёжными. То есть где, и какие ошибки он обнаруживает. На этот раз под молоток попали примеры, демонстрирующие работу с библиотекой IPP 7.0 (Intel Performance Primitives Library). Хотел, вначале, этот пост поместить в блог Intel, но потом решил, что это будет совсем уже...
Читать дальше →
Total votes 40: ↑29 and ↓11+18
Comments15

Метод имитации отжига

Reading time7 min
Views50K
Дорогие друзья, доброго времени суток!

Уже не один раз здесь обсуждалась такая разновидность оптимизационных алгоритмов, как генетические алгоритмы. Однако, существуют и другие способы поиска оптимального решения в задачах с многими степенями свободы. Один из них (и, надо сказать, один из наиболее эффективных) — метод имитации отжига, о котором здесь ещё не рассказывали. Я решил устранить эту несправедливость и как можно более простыми словами познакомить вас с этим замечательным алгоритмом, а заодно привести пример его использования для решения несложной задачки.

Я понимаю, почему генетические алгоритмы пользуются такой большой популярностью: они очень образны и, следовательно, доступны для понимания. В самом деле, несложно и крайне интересно представить решение некой задачи, как реальный биологический процесс развития популяции живых существ с определёнными свойствами. Между тем, алгоритм отжига также имеет свой прототип в реальном мире (это понятно и из самого названия). Правда, пришёл он не из биологии, а из физики. Процесс, имитируемый данным алгоритмом, похож на образование веществом кристаллической структуры с минимальной энергией во время охлаждения и затвердевания, когда при высоких температурах частицы хаотично движутся, постепенно замедляясь и застывая в местах с наименьшей энергией. Только в случае математической задачи роль частиц вещества выполняют параметры, а роль энергии — функция, характеризующая оптимальность набора этих параметров.

Читать дальше →
Total votes 73: ↑71 and ↓2+69
Comments31

VirtualBox 3.2: теперь можно запускать MacOS X в виртуальной машине. Под windows и linux

Reading time2 min
Views73K
logoНеожиданно тихо прошел релиз новой версии virtualbox, в котором впервые появилась возможность запускать в виртуальной машине MacOS X. Официально. С оригинального диска. Не хакинтош.

Почитать что получилось а что нет
Total votes 184: ↑176 and ↓8+168
Comments290

Знакомство с WebGL

Reading time6 min
Views44K

Введение


Статья создана с целью показать основные действия, необходимые для отображения 3d в современном браузере, используя технологию WebGL. Для достижения цели рассмотрим задачу построения нескольких линий в трехмерном пространстве.

Схема работы:
  1. Получаем WebGL контекст из canvas'а.
  2. Загружаем программу шейдеров. А именно:
    • создаем программу шейдоров;
    • получаем исходный код отдельно для вершинного и фрагментного шейдеров;
    • компилируем коды шейдеров;
    • присоединяем к программе;
    • активируем программу.

  3. Устанавливаем две матрицы: model-view и projection.
  4. Размещаем, заполняем, активируем буферы данных вершин.
  5. Рисуем.

Читать дальше →
Total votes 68: ↑67 and ↓1+66
Comments15

База GeoIP – страны и города, январь 2011

Reading time2 min
Views12K
Вышла в свет новая версия русскоязычной базы данных стран и городов. Основные изменения:
— для перевода названий городов использован API Карт Google (идея chernikov)
— для поиска по странам СНГ подключена база geobaza.ru (идея derketzer)
Результат этой работы доступен для свободного скачивания.
Читать дальше →
Total votes 91: ↑88 and ↓3+85
Comments49

Закономерные случайности

Reading time3 min
Views4.3K
Увлекаясь компьютерной графикой, заметил, что комбинация правил и случайности может давать неожиданно красивые результаты.

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

Еще подметил, что многократное повторение даже неказистых форм создает гармоничные рисунки, если видеть их целиком.





Красиво, но траффик...
Total votes 152: ↑145 and ↓7+138
Comments84

Хабраиндекс для статей по программированию под Android

Reading time2 min
Views94K
Читать дальше →
Total votes 220: ↑204 and ↓16+188
Comments43

Работа с камерой в Android

Reading time7 min
Views130K
Работа с камерой на телефоне всегда представляла для меня интерес. Как же это все устроено… И вот мне в руки попал телефон с Android'ом. Я не преминул возможностью попробовать разобраться в этом. Вот что получилось в итоге.
Исходный код и подробности
Total votes 61: ↑55 and ↓6+49
Comments19

Шаблонная магия, метафункция IsValidExpression

Reading time7 min
Views2.4K
Доброго времени суток, уважаемое Хабрасообщество.

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

Пример:
/* Определяем метафункцию HasF, которая позволяет определить наличие функции f() у любого класса. */
DECLARE_IS_VALID_EXPRESSION(
    HasF,
    ( ( U * ) NULL )->f() /* Это выражение компилируемо только если присутствует U::f() */ );
 
struct Foo{ void f(); };    
struct Bar{};
 
BOOST_STATIC_ASSERT( HasF< A >::value );  /* Тут константа HasF< A >::value будет true */
BOOST_STATIC_ASSERT( !HasF< B >::value ); /* Тут константа HasF< A >::value будет false */

Как Вы уже, наверное, догадались мы будем думать как написать макрос DECLARE_IS_VALID_EXPRESSION.
Читать дальше →
Total votes 32: ↑29 and ↓3+26
Comments14

Верстка почтовых рассылок

Reading time6 min
Views71K
Привет, Хабр!

В этой статье я бы хотел поделиться своими познаниями в кроссбраузерной и кроссмейлерной верстке почтовых рассылок. Под словом кроссмейлерность подразумевается — корректное отображение верстки во всех почтовых клиентах. Я считаю, что статья вполне актуальна, в виду того, что на хабре эта тема несколько раз освещалась, но некоторые нюансы были неточными, а другие просто устарели. По долгу службы я долгое время занимался версткой html расылок по всему миру, и приведенные ниже правила будут касаться следующих почтовых клиентов и веб-интерфейсов: MS Outlook 2003-2010, mail.ru, rabmler почта, Яндекс почта, Gmail, Yahoo! Mail (Classic), Thunderbird 2.0-3.0, Hotmail, Windows Live Mail, Apple Mail 3-4, AOL Mail, Lotus Notes 8-8.5.
Читать дальше →
Total votes 150: ↑146 and ↓4+142
Comments81

Fairware

Reading time3 min
Views825
«Fairware» — термин, недавно изобретённый автором программ Hardcoded Software. Он обозначает СПО, нацеленное на широкую аудиторию (для проприетарных приложений прямым аналогом является условно-бесплатная лицензия — shareware) с целью получения достойной компенсации от пользователей.
Читать дальше →
Total votes 80: ↑70 and ↓10+60
Comments90

Вопросы по продвижению приложений для Android

Reading time5 min
Views9.8K
Недавно мой знакомый попросил меня ответить на несколько вопросов по продвижению приложений для Android. Мы договорлись, что я напишу пост. За последний год у меня сложилось определенное впечатление о работе на рынке Android Market. С удовольствием поделюсь своим мнением. Надеюсь, что мой опыт будет полезен разработчикам. Буду рад, если пост породит конструктивную дискуссию.
Читать дальше →
Total votes 91: ↑85 and ↓6+79
Comments37

Обнаружение объектов методом Оцу

Reading time6 min
Views44K
Здравствуйте, уважаемые хабрачитатели и хабракритики. Этот пост я хотел бы посвятить такой актуальной на сегодняшний день теме, как обнаружение объектов на изображениях.
В качестве одного из алгоритмов такого обнаружения рассмотрим выбор порога быстрым и эффективным методом Оцу.
Читать дальше →
Total votes 121: ↑117 and ↓4+113
Comments33

Материальная помощь идеям

Reading time4 min
Views16K
Многие авторы несбывшихся стартапов жалуются на то, что получить инвестиции проект, находящийся только на стадии идеи, почти невозможно. Инвесторы хотят обязательно посмотреть и пощупать уже что-то работающее, а еще лучше уже зарабатывающее деньги.

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

Мы решили помочь идеям делом. Главстарт готов проинвестировать в проекты на стадии идеи, которым для доведения до стадии готового продукта требуется до 12 месяцев и до 100 тыс. долларов.

А теперь расскажем об этом подробнее.
Читать дальше →
Total votes 90: ↑61 and ↓29+32
Comments157

Анонимный браузер своими руками или Hide your ass yourself

Reading time4 min
Views14K
Вступление

Этот небольшой топик расскажет о том, как просто и быстро сделать свой браузер, с небольшими добавками, которые помогут нам остаться анонимным в сети. Всю черную работу за нас сделает Qt, а именно его модуль QtWebKit. Мы лишь добавим в нужные места строки, подменяющие http-заголовки наших http- запросов. Это позволит оставаться анонимными при пассивном анализе http-запросов. Также переопределим navigator, что позволить оставаться анонимными для javascript-ов при активной идентификации. Для определенности обозначим основные параметры, с помощью которых нас можно идентифицировать в сети – вот именно их мы и будем подменять. Первое – это конечно IP адрес, тут все просто – используем прокси. Второе – любые заголовки http-запроса (user-agent будет наиболее интересен: его значение нужно подменять как в заголовках http-запросов, так и в проверке javascript-ами). Также реализуем возможность редактировать и подставлять свои сookies для определенных сайтов, раз уж есть такая возможность. И дополним все это встроенным редактором для подменяемых параметров с возможностью их сохранения для последующего использования.
Читать дальше →
Total votes 59: ↑53 and ↓6+47
Comments34

Новый программерский жаргон

Reading time7 min
Views50K
Посетителям сайта stackoverflow.com был задан вопрос: «Какие программерские термины вы придумали, так чтобы они стали популярны в ваших кругах (то есть вы слышали, что кто-то их повторяет)?

Ниже — вольный перевод самых популярных ответов.

Читать дальше →
Total votes 411: ↑373 and ↓38+335
Comments193

Кладезь полезной информации

Reading time1 min
Views2.6K
«Чем больше я знаю, тем больше понимаю, что ничего не знаю».

Даже если вы уже давно не чайник и не боитесь увеличить относительный уровень своего незнания — попробуйте проделать на своей машине:
sudo apt-get install fortunes-ubuntu-server
а потом просто вызывайте
/usr/bin/ubuntu-server-tip

Многократный мысленный оргазм гарантирован.
Вот просто некоторые примеры:
  • Для создания копии файла без дублирования пути файла используйте команду '$
    cp /long/path/to/file/name{,.orig}', которая создаст копию файла с суффиксом ".orig".
  • Если вы выполнили команду и забыли про 'sudo', вы можете набрать 'sudo !!'
    для вторичного запуска предыдущей команды с использованием 'sudo'.
  • Последующие команды обычно принимают аналогичный аргумент. 'Alt-.' вставляет
    последний аргумент предыдущей команды. Чтение документации рулит!

Приятного чтения!
Total votes 180: ↑169 and ↓11+158
Comments111

Information

Rating
2,579-th
Location
Россия
Date of birth
Registered
Activity