Архив за 10 апреля 2013

Нелинейное сжатие размерности, используя ограниченную машину Больцмана Привет. В этом посте мы продолжим экспериментировать с ограниченной машиной Больцмана. В предыдущем посте о регуляризации в РБМ мы увидели как можно получить более локальные фичи, которые обладают большей обобщающей способностью. Но мы не оценили их робастность по сравнению с более простыми и быстрыми алгоритмами. Для этого эксперимента мы обратимся к линейному методу главных компонент (вы можете ознакомиться с этим методом и глянуть реализацию на c# в моем первом посте). Желающим ознакомиться с первоисточником по теории сжатия размерности с использованием РБМ рекомендую глянуть статьи Джеффри Хинтона тут и тут. Мы же продолжим тестирование на множестве печатных больших букв: обучим РБМ, построим главные компоненты, сгенерируем сжатые представления данных, а из них восстановим первоначальные изображения, и затем оценим разницу между оригинальными изображениями и восстановленными.

Читать полностью »

Вступление

В этой статье я попробую рассмотреть безопасность чуть-чуть повыше ядра, а именно: как работает безопасность в Native user space. Мы коснемся темы процесса загрузки операционной системы и рассмотрим структуру файловой системы Android. Как я уже говорил, я не очень силен в Linux, поэтому если заметите неточности, то исправляйте — меня научите и статью улучшите. Так как эта тема довольно обширная, я решил разбить её на две части. В первой части мы рассмотрим процесс загрузки операционной системы и особенности файловой системы. Всем кому интересно, добро пожаловать!
Читать полностью »

Недавно заинтересовался реализацией std::string в libstdc++. Не в связи с принятием нового стандарта, а чтобы разобраться. Благо требования к строковму типу почти не изменились.

Основным средством для анализа кода несомненно является метод пристального вглядывания, но чтобы сузить область вглядывывания и сделать процедуру более захватывающей можно реализовать для строки идиому «трассер» подсмотренную в «C++ Templates: The Complete Guide». Трассировка позволяет выявлять подозрительные интересные операции над строками.

Как известно, std::string это псевдоним для std::basic_string<char> и нам ничего не мешает определить std::basic_string<X>. В X можно определить несколько статических счетчиков и итерировать их в конструкторе, деструкторе и остальных методах. Выполняя разные операции над такой строкой можно будет проследить эффективность применяемых алгоритмов в терминах количества операций.
Кроме того, в g++ для std::string a(«entrails»); выражение
std::cout << reinterpret_cast<char*>(*((void**)(&a)));
выведет содержимое строки. Т.е. std::string — является, по сути, указателем на char.
Вобщем, эти и другие шокирующие поднобности под катом. Читать полностью »

Введение

Как правило разработчик сталкивается с проблемой распространения приложения, в 2010 студии все было просто — отдельный проект и базовый функционал есть. С переходом на 2012 студию все стало сложнее: MS исключили инсталятор из проектов и советуют пользоваться сторонними продуктами. Монстров типа InstallShuild как то не хочется использовать, поэтому смотрим в сторону СПО. Первое что попадается это система WIX http://wix.sourceforge.net система изумительная и самое главное созданная в недрах MS. Однако остается проблема одного файла: для .NET приложений требуется фреймворк, инсталятор, и многое другое. В итоге мы получаем папку с целой кучей файлов, как это все распространять? В архиве не удобно, стандартный функционал WIX недостаточно гибок и тут приходит на помощь WIX и WiX Extended Bootstrapper Application . Кратко он позволяет упаковать все в один исполнимый файл. Соответственно я расскажу как это сделать.

Читать полностью »

Иногда человечество поражает своей тупостью и нежеланием видеть ситуацию так, как она действительно есть… ( Неизвестные )

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

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

Расскажу небольшую историю, которая случилась со мной на работе. Дело было давно, как-то приасанили меня к новому web-проекту, проектированием которого я не имел ни малейшего отношения. Тимлид первым делом залил в svn php и js framework'и.
В качестве JS был выбран Mootools 1.2.2 или 1.2.4, а в дополнение к нему Jx UI Library в виде JxLib. Все шло хорошо, проект подходил к своему завершению, версии браузеров росли и тд. И вот, в один прекрасный момент, придя на работу я увидел баг, в кором говорилось а том что в IE9 (а он только-только вышел) админка не работает вообще. Первым делам начал искать проблему, как оказалось Mootools 1.2.x — не поддерживает IE9, а вот в версиях over 1.3.x — все работает и летает. Ну, долго не думая, качаем последнюю версию сего чуда и ставим. Радоватся пришлось не долго — начали вылазить баги в JxLib. Оказывается, что проект 'заглох', и последняя доступная версия совместима только с Mootools 1.2.x. Много времени прошло с того момента, но тот говнокод, с помощью которого пришлось залатать этот баг, надломал мою веру в Mootools и ему подобные вещи. Теперь, я думаю, стало ясно, откуда такое отношение к JS либам.

А теперь хочется ответить (пояснить почему так, а не иначе) на некоторые комментарии.

1)
Сonsole.log — вот этого я не ожидал, я предлогал многое но только не это. Я в курсе того что он (console.log) поддерживает форматирование и передачу нескольких параметров, но я не могу вспомнить, когда последний раз я этим пользовался. Мне вполне хватает одной переменной, а усложнять _d() ради того чтобы использовать всю мощь сonsole.log раз в месяц, — нецелесообразно (проще написать заветные 11 символов `сonsole.log`).

2)

Функция addEvent продолжит выполняться после обработки ошибки с помощью функции _d.

— я в курсе этого, это сделано специально, ибо проверку на существование DOM объекта, а предпочитаю делать в основном скрипте, но вы меня меня убедили — добавлю return false.

3)

Загрязнение глобального пространства переменных — очень плохой тон.

— тут вы правы, но кроме readyList = []; я ничего не могу найти глобального :)

Ну что ж, я думаю пора заканчивать эти холивары и начать рассмотрение новой партии JS кода.
Читать полностью »

Датская компания Bang & Olufsen объявила о выпуске новых моделей наушников Beoplay H3 и Beoplay H6. При изготовлении наушников были использованы алюминий и кожа. Обе модели наушников совместимы со смартфонами.

Читать полностью »

Сервис «Выставки в Китае» — это онлайн-календарь главных отраслевых и международных выставок Китая, с возможностью синхронизации с мобильными устройствами через Google Календарь.

Выставки в Китае — 48 часов от идеи до запуска

Читать полностью »

The Pirate Bay [опять] хотят заблокировать

В своём посте TweakTown сообщил, что шведское правительство решило заблокировать домен thepiratebay.se, самого популярного файлообменника в мире.

В 2011 году американское правительство обещало применить похожие санкции к домену thepiratebay.org.

10 дней назад официальный блог бит-торрента шутя опубликовал пост что они переедут обратно в Америку.

Сейчас администрация The Pirate Bay планирует переехать с thepiratebay.se на thepiratebay.gl.

Читать полностью »

Завершилось соревнование по дата майнингу Heritage Health Prize
Крупнейшее со времен Netflix Prize соревнование в области анализа больших массивов данных подошло к концу. И хотя официальные результаты первой десятки и победитель будут объявлены через два месяца, итоги уже можно подводить.
Целью было спрогнозировать госпитализацию пациентов в течение будущего года на основании данных за предыдущие два года лечения. По замыслу спонсора это позволит больше внимания уделять именно тем пациентам, которые больше всего в нем нуждаются, за счет чего сэкономить часть из 30 млрд. $, ежегодно затрачиваемых в США на госпитализацию.
Заявленный организаторами приз в 3 000 000$ был недостижим из-за установленного предела точности в 0.4 RMSLE(меньше-лучше; лучший достигнутый результат 0.46; разница между первым и сотым местом 0.008; RMSLE — среднеквадратическое отклонение логарифма ошибки) и предоставленных данных — в них просто не содержалось достаточного для достижения такого уровня точности количества информации. Поэтому фактически борьба шла за 500 000$, достающиеся лучшей команде, фонд промежуточных финишей и бесценный опыт.
Читать полностью »

По иронии судьбы именно в день проведения большой онлайн-конференции о Bitcoin, произошло событие, которое ждали все, и в которое никто не верил.

Курс Bitcoin стремительно падал последние несколько часов

После стремительного взлета за последнюю неделю со 100 до 250 баксов за 1 биткоин, обменный курс еще более стремительно стал снижаться. На момент написания поста 1 биткоин стоил 105 долларов США.

Завтрашнее интервью с Алексеем Стукаловым, представителем биржи icBITЧитать полностью »