Search
Write a publication
Pull to refresh
0
0
Александр @procks

User

Send message

Предобучение нейронной сети с использованием ограниченной машины Больцмана

Reading time9 min
Views55K
Привет. Как и планировалось в прошлом посте об ограниченных машинах Больцмана, в этом будет рассмотрено применение RBM для предобучения обыкновенной многослойной сети прямого распространения. Такая сеть обычно обучается алгоритмом обратного распространения ошибки, который зависит от многих параметров, и пока не существует точного алгоритма выбора этих самых параметров обучения, как и оптимальной архитектуры сети. Разработано множество эвристик, позволяющих сократить пространство поиска, а также методик оценки качества выбранных параметров (например, кросс-валидация). Мало того, оказывается, и сам алгоритм обратного распространения не так уж хорош. Хотя Румельхарт, Хинтон и Вильямс показали сходимость алгоритма обратного распространения (тут еще более математическое доказательство сходимости), но есть небольшой нюанс: алгоритм сходится при бесконечно малых изменениях весов (т.е. при скорости обучения, стремящейся к нулю). И даже это не все. Как правило, этим алгоритмом обучают небольшие сети с одним или двумя скрытыми слоями из-за того, что эффект обучения не доходит до дальних слоев. Далее мы поговорим подробнее о том, почему же не доходит, и применим технику инициализации весов с помощью обученной RBM, которую разработал Джеффри Хинтон.

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

Пользовательские скрипты в Opera Mobile для андроид

Reading time2 min
Views29K
Ни для кого не секрет, что для андроида существует довольно много интернет браузеров, у каждого есть свои плюсы и минусы, приходится держась их штук пять в телефоне на всякий случай. Так уж сложилось что основным браузером для меня всегда была Opera Mobile, ну привык я к ней ещё со времён Symbian, для андроида даже сделали специальную Оперу с поддержкой расширений, как для декстопной версии, в мобильной Опере так же можно включить поддержку пользовательских скриптов (UserJS), делается это довольно просто через настройки в opera:config
Читать дальше →

Миникомпьютер из роутера с OpenWRT: разрабатываем USB-видеокарту

Reading time25 min
Views188K

Добрый день, уважаемые хабровчане. В этом цикле статей мы с вами пройдем достаточно длинный, но весьма интересный путь по превращению обычного роутера в мини-компьютер с LCD-дисплеем. Для этого мы разработаем сначала USB-видеокарту на базе микроконтроллера STM32F103, потом тестовый драйвер, который позволит нам выводить на него графику, и, наконец – полноценный драйвер фреймбуффера, благодаря которому можно будет запустить настоящие графические приложения, такие как x-сервер. Заодно мы научимся включать наш код в дерево исходников OpenWRT, допиливать его ядро и делать прочие полезные вещи.
Ну а в самом конце мы получим результат, который, я надеюсь, вызовет ностальгическую слезу у многих читателей. Я постараюсь излагать материал таким образом, чтобы в конце каждого этапа мы получали осязаемый результат, не дающий угаснуть энтузиазму. Итак, начнем.
Читать дальше →

HTML5 Video — от А до Я

Reading time6 min
Views239K
Да, да, это очередная статья про html5 и тэг < video >. Но главным ее отличием будет то, что здесь будут рассмотрены самые базовые понятия и теории. Так что приготовились внимательно читать и записывать, let html5 rocks!
Читать дальше →

Цифровые подписи в исполняемых файлах и обход этой защиты во вредоносных программах

Reading time8 min
Views84K
image
Хабрапривет!

Ну вроде как удалось решить вопросы с кармой, но они ником образом не касаются сегодняшней темы, а лишь объясняют некоторое опоздание её выхода на свет (исходные планы были на ноябрь прошлого года).

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

Java собеседование. Коллекции

Reading time10 min
Views910K
С недавнего времени у меня появилась настойчивая мысль, что профессиональное развитие сильно замедлилось и это хочется как-то исправить. Да, читаю книги, слушаю курсы, но в то же время приходит и понимание того, что возможно пришло время сменить работу, здесь вроде как все изучено, плавно уходим в рутину. Данная мысль сподвигла меня на рассылку своего резюме в несколько компаний — лидеров рынка. После прохождения собеседования в 3 из них, я решил, как водится внести свои 5 копеек в освещение обширной темы собеседования, а именно технических вопросов по Java коллекциям, с которыми приходится сталкиваться. Да, знаю, читатель скажет: «коллекции — избитая тема, сколько можно», но часть из приведенных ниже вопросов, я задавал своим знакомым разработчикам, которые занимают именно позиции разработчиков («крепких середнячков», по меркам недалекой от Москвы глубинки, которые уверенно справляются со своей работой на практике, а вот в теории скажем так есть пробелы, потому, что работа не требует решения каких-то нетривиальных задач, да и потому что не всем это интересно — изучать как внутри работает структура данных), вызывало растерянность. Думаю, что рассмотренный материал будет не очень интересен разработчикам выше уровня Junior (я попрошу их комментировать, дополнять и критиковать изложенный здесь материал), а вот Junior`ы уверен, найдут в этой статье интересное для себя.
Читать дальше →

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

Reading time4 min
Views9.1K
Общий привет.

Недавно, для шлифовки морфологического словаря, способного (предположительно) генерировать все возможные формы слова из инфинитива — мне понадобился достаточно объемный частотный словарь русского языка. Частотный словарь — вещь очень простая, слова в нем упорядочены по частоте, с которой они встречаются в анализируемом тексте.
Читать дальше →

Box2d и Libgdx

Reading time9 min
Views58K
День добрый.

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

Я задался целью поэтапно писать статьи о различных аспектах/частях LibGDX, чтобы в итоге, любой человек мог более-менее работоспособную версию своей собственной игрушки сделать. В этой статье хотел бы рассказать про Box2D, который присутствует в LibGDX.
image
Читать дальше →

Кросс-компиляция и отладка C++ Windows-приложения под Linux

Reading time5 min
Views34K
Показали мне недавно интересное приложение, под которое можно разрабатывать плагины. Приложение оказалось очень полезным для научной работы, но вот незадача — приложение разработано под Windows, у меня стоит Ubuntu. Windows для разработки под это приложение от лаборатории получить пока не удалось. Чтобы не тратить время, решил освоить кросс-компиляцию и отладку этого приложения.

Итого, имеется:
Ubuntu 12.10 x64
Не-юникодное приложение Мастерская Граф-Моделей (МГМ) (В командах консоли будет называться gmw.exe)

Нужно:
Разрабатывать и отлаживать плагины (dll-библиотеки), не устанавливая Windows.

И тут нам помогут Wine, Code::Blocks, портированное GDB, и boost.
Читать дальше →

Программируемый микроконтроллер STM32 — с места в карьер

Reading time30 min
Views101K
Ниже описан мой первый опыт общения с программируемым микроконтроллером в лице STM32VLDiscovery, результатом которого явилась машинка из LEGO, управляемая с телефона, и ещё кое-что. Я постарался изложить свой путь в виде пошагового руководства к действию, но, предупреждаю сразу, не руководства «как делать правильно». Первые два раздела являются предисловием и не относятся непосредственно к данному микроконтроллеру.

image

Содержание:


  1. Первый контакт с микроэлектроникой.
  2. Строительство машинки на непрограммируемых логических элементах.
  3. Начало работы с STM32. Среда разработки. Подключение микроконтроллера к машинке.
  4. Определяем угол поворота передних колёс — обратная связь через АЦП.
  5. Использование ЦАП для воспроизведения звуков.


Погрузиться

Продвижение мобильных приложений

Reading time4 min
Views8K
Согласно статистике, 59% мобильных приложений не окупает затраты при его разработке.
Оригинальная идея и хорошая реализация — только половина пути к успеху.
Хорошее приложение, но без маркетинга, с большой вероятностью провалиться, а плохое при грамотном продвижении может окупить себя в десятки раз.

Далее разберем приемы продвижения приложения без вложения средств.

ASO оптимизация

Происходит в два шага и у каждого своя цель:
1. Непосредственно поисковая оптимизация (SEO),
2. Визуальная оптимизация.

Цель первого — повысить searching ranks. То есть сделать так, чтобы Ваше приложение могли найти как можно больше людей, используя поисковик.

Существует три основных бесплатных приема.
1) Название приложения. Очень важно выбрать правильное название. Именно от него в основном зависит, сколько людей найдут Вас, используя поиск. Старайтесь сделать так, чтобы название включало основные ключевые поисковые слова.
Пример: приложение на тему «Развлекательные игры для вечеринок» лучше назвать «Развлечения для вечеринок». Сразу 2 ключевых слова: развлечения и вечеринки. Не стоит называть, к примеру, «Развлекуха» или «Мимоза».
2) Описание. Большинство пользователей читает только первый абзац. Постарайтесь сделать его максимально информативным и привлекательным. Также используйте по максимуму ключевые слова в тексте.
Пример: приложение на тему «Кулинария». Используйте в описании примерно следующие слова: кухня, рецепты, вкусно, приготовление и тд.
3) Перевод. Прирост пользователей до 15%. Используйте основные языки (английский, немецкий, китайский и др). Постарайтесь обеспечить качественный перевод и не переводить текст в гугл переводчике, других программах.
Читать дальше →

Простая эмуляция USB клавиатуры при помощи PIC18F2550 в CarPC на базе Android

Reading time14 min
Views51K
Здравствуйте, уважаемые участники Habrahabr.

При том, что Хабр — портал, ориентированный на программистов, обратил внимание, что последнее время появляется много статей о программировании микроконтроллеров и создании девайсов на их базе. Решил поделиться одной своей разработкой. В прошлом я много писал для МК, даже работал разработчиком ПО и схемотехники в одной из фирм, а до этого программил на АСМе под Z80 и i8080. Сейчас, во взрослой жизни, в основном пишу на PHP/MySQL для собственных интернет-проектов и к программированию МК не возвращался очень давно. Назвать полноценным программистом я себя не могу, т.к. освоить, например, OOP так и не смог, но немного пишу на С по мере надобности.

Некоторое время назад у меня возникла задача создать эмулятор USB клавиатуры для CarPC проекта. Использоваться она должна была в магнитоле Becker BE2580, устанавливаемой на автомобили немецкого производства 2000-х годов. Эмулятор должен был опрашивать штатные кнопки магнитолы и генерировать нажатия на виртуальной USB клавиатуре, подключенной к материнской плате CarPC на базе Android. Что из этого получилось, под катом.
Читать дальше →

История одного Crash-а, и NSLog'а его лечившего

Reading time11 min
Views31K
Лечу Crash'и NSLog'ами. Недорого. Многолетний опыт. 100% гарантия.

Примерно таким заголовком можно было бы описать то, что три с половиной месяца назад происходило у меня на одном из проектов. Вернее, это даже был не мой проект, но с проблемой crash'а пришлось разбираться именно мне.

Все началось с того, что на одном из относительно больших проектов начало стабильно вываливаться исключение при авторизации пользователя. «Ну и что тут такого? У всех бывает. Проверку на nil забыли поставить или где-то накосячили. „Тоже, мне, большое событие — crash на проекте“, — подумает большая часть программистов. В принципе — абсолютно согласен. Crash — не такое уж и редкое явление в программировании под iPhone, и с ним сталкиваешься по десять раз на день. Но этот был особенным. От него уже начало попахивать „магией“, когда мне сказали про его некоторые параметры и особенности:

  • Воспроизводимость на симуляторе: 100%
  • Воспроизводимость на устройстве: 0%
  • Путь к крэшу (после локализации крэша): ~ 40 секунд
  • Настройки оптимизации при компиляции (-O1,-O2...) не влияют на воспроизводимость
  • XIB'ы в проекте не используются


Да выглядел он довольно безобидно:

// Code
UITextView * textView = [ [UITextView alloc] initWithFrame:CGRectMake(0, 150, _width, _height)];

// Exception
*** Terminating app due to uncaught exception 'CALayerInvalidGeometry', 
    reason: 'CALayer bounds contains NaN: [0 0; nan 200]'


»Ну тут же и ежу понятно, что width — после вычисления — NaN!", — подумал я. Бегло поглядев где и как вычисляется ширина вьюхи, и не найдя ничего особого опасного, я, для утверждения своей догадки, поставил перед созданием вьюхи NSLog. А вдобавок, и точку останова на строке с созданием элемента.
// Source:
NSLog(@"width = %f", _width);

//Output:
width = 200


«Гм», — подумал про себя я, и продолжил выполнение программы после точки останова. И крэша не произошло…

Что было дальше? Читайте во второй части сразу под катом...

Рисуем снеговика в PowerShell

Reading time1 min
Views7.6K
Кто сказал, что PowerShell должен обязательно быть серьезным? Эд Вилкинсон, автор блога Hey, Scripting Guy!, однозначно с этим не согласен и предлагает нарисовать в PowerShell снеговика!


Нарисовать ASCII картинку в PowerShell можно с помощью внутренней строки (here-string). Для этого ASCII графика должна храниться в here-string в качестве переменной. Под катом приведен скрипт для рисования снеговика.
Читать дальше →

Обновление Avast полностью блокирует сеть

Reading time1 min
Views87K
Операторы техподдержки и сисадмины видимо обратили внимание на резкий всплеск жалоб от пользователей Avast, у которых со вчерашней ночи (у некоторых сегодня) пропала сеть. У многих в состоянии сетевого подключения на месте IP-адреса и MAC была пустота, у использовавших PPPoE выдавало 720 ошибку.
Читать дальше →

О «карманном» перехвате в предпоследний раз

Reading time2 min
Views77K
Под андроид существует немало различных программ, реализующих тот или иной функционал по перехвату и анализу трафика.
В большинстве своем это однозадачные утилиты, выполняющие 1-2 функции (droidsheep, faceniff), хотя есть и комплексные тулкиты с большим заявленным набором функций (dsploit).

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

Как работают экспертные системы прогнозирования продаж или сколько грузить планшетов в граммах

Reading time8 min
Views52K


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

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

Соответственно, задач у вас сейчас три:
  • Поддерживать ассортимент продукции по основной линейке;
  • Понимать, сколько будет продаж, чтобы планировать закупку аксессуаров;
  • Держать на контроле все хиты и новинки, чтобы всегда продавать ходовые товары и «снимать пену» на запусках новых девайсов.

Через полгода становится веселее

Подделываем вашу подпись при помощи шарнирного механизма. Теорема Кемпе

Reading time5 min
Views223K
В этом посте я расскажу про программу, которая подделывает любую подпись при помощи шарнирного механизма. Программа основана на теореме Кемпе, доказанной в середине 19-го века.

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

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Date of birth
Registered
Activity