Search
Write a publication
Pull to refresh
24
0
ilnarb @ilnarb

User

Send message

Скрытые цепи Маркова, алгоритм Баума-Велша

Reading time4 min
Views25K
Скрытые модели/цепи Маркова одни из подходов к представлению данных. Мне очень понравилось как обобщается множество таких подходов в этой статье.

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

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

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

Университет MIT выложил бесплатно лекции в Сеть

Reading time1 min
Views151K


Один из лучших технологических вузов мира опубликовал большинство своих обучающих курсов, лекций и семинаров в интернете на отдельном ресурсе.

Есть аудио и видео-курсы, поиск по каталогу, по номеру курса, по наименованию дисциплины, все предметы и степень сложности разделены в отдельные рубрики.
Читать дальше →

Отказоустойчивый кластер Master-Slave на PostgreSQL

Reading time9 min
Views127K
Приветствую, хаброжители!
В этой статье я хочу поделиться опытом развертывания кластера Master-slave на СУБД PostgreSQL. Отказоустойчивость достигается с помощью возможностей pgpool-II (failover, online recovery).
pgpool — это прекрасное средство для масштабирования и распределения нагрузки между серверами и, думаю, немногие знают о возможностях автоматического создания failover на ведомом сервере при отказе ведущего и как добавить новые мощности в уже работающий кластер без отключения всего кластера.
Читать дальше →

Грамотное адаптивное выравнивание шапки сайта

Reading time3 min
Views157K
Зачастую вроде бы простые задачи верстки требуют сложной структуры HTML-разметки и использования CSS-трюков. Центрирование элементов или выравнивание контента может быть очень утомительным. Одна из таких задач — это выравнивание элементов верхней части сайта так, чтобы логотип был слева, а пункты меню — справа. Можно использовать float и position:absolute, а для выравнивания по вертикали — добавлять margin и padding разным элементам. Вроде бы ничего сложного. Но если сайт должен корректно отображаться и на мобильных устройствах, возникает много проблем.



Ниже описан лаконичный способ решения этой проблемы.
Читать дальше →

Вся правда о модели Пропасти: Ранние рынки и как быть, если вы совершили ошибку

Reading time9 min
Views31K

Модель пропасти


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

Сейчас, куда не посмотри, все стали учёные: литературой запаслись, интернеты читают. Кого не спроси, и о кривой принятия технологии знают, и вообще всё им понятно: «… да-да, знаем! Есть Новаторы, Ранние последователи, есть рынок ранний, а есть поздний, отщепенцы и увальни — ну куда без них? Да-да, между рынками, ранним и основным, есть пропасть, которую нужно перепрыгнуть!» Знают. Прыгают. Только, бывает, пикируют. А всё почему? Потому что аннотацию прочли, а содержимое не осилили. Поэтому я написал эту заметку. Речь пойдёт о том, что важные вещи, которые нужно знать о модели Пропасти, не всегда лежат на поверхности.
image

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

Как и зачем я стал работать за компьютером стоя

Reading time4 min
Views183K


Ежедневно я работаю за компьютером 9–10 часов. Вплоть до прошлой недели я проводил все это время, сидя на своей вечно расширяющейся заднице.

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

Universal Analytics – веб-аналитика нового поколения

Reading time11 min
Views24K
Universal Analytics – новая версия системы веб-аналитики Google Analytics.

Принципы работы Universal Analytics отличаются от принципов работы предыдущей версии системы. Если вам интересно, что представляет из себя обновление Google Analytics и что полезного появилось в данной системе, вы наткнулись на нужную статью.

Занимаясь сбором информации при подготовке данной статьи, я потратил немало времени на то, чтобы найти что-то полезное (под полезным я подразумеваю кейсы использования данной системы), однако, оказалось, что найти практические советы в интернете (как западном, так и нашем) не так уж и просто – их просто нет (за редким исключением). Так как прошло уже почти полгода с момента выхода Universal Analytics в режиме Beta (система продолжает работать в данном режиме и сейчас, но для Google долгий период тестирования – это обычная ситуация), возникает закономерный вопрос «почему?». Неужели компании не видят смысла в том, чтобы сейчас инвестировать (несмотря на «бесплатность» системы, инвестировать все же придется, так как все настройки, которые вы имплементировали в предыдущую версию, в новую автоматически не перенесутся) в процесс перехода с Google Analytics на Universal Analytics? Забегая немного вперед, выражу свое мнение: во многих случаях стоит.
Читать дальше →

Рейтинг Mail.Ru: считаем больше и лучше

Reading time3 min
Views13K
Полгода назад мы рассказывали вам, чем мы в Рейтинге занимались зимой. Лето уже близится к середине, и, помимо визитов в отчетах, о которых мы написали здесь, мы успели сделать еще некоторое количество занимательных вещей. Под катом — сложные отчеты, картинки в поисковых запросах, новый код счетчика и среднесуточные показатели в статистике.

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

Разработка web API

Reading time9 min
Views291K

Интро


Это краткий перевод основных тезисов из брошюры «Web API Design. Crafting Interfaces that Developers Love» Брайана Маллоя из компании Apigee Labs. Apigee занимается разработкой различных API-сервисов и консталтингом. Кстати, среди клиентов этой компании засветились такие гиганты, как Best Buy, Cisco, Dell и Ebay.

В тексте попадаются комментарии переводчика, они выделены курсивом.

Собираем API-интерфейсы, которые понравятся другим разработчикам


Понятные URL для вызовов API

Первый принцип хорошего REST-дизайна — делать вещи понятно и просто. Начинать стоит с основных URL адресов для ваших вызовов API.

Ваши адреса вызовов должны быть понятными даже без документации. Для этого возьмите себе за правило описывать любую сущность с помощью коротких и ясных базовых URL адресов, содержащих максимум 2 параметра. Вот отличный пример:
/dogs для работы со списком собак
/dogs/12345 для работы с отдельной собакой
Дальше

Главный принцип хорошего кода

Reading time9 min
Views86K
За двадцать лет разнообразного программирования я сформулировал, убежден, главнейший принцип хорошего кода. Опираясь на него, мне и моим коллегам удавалось приводить в порядок самый страшный код, объединять в команде малосовместимых программистов и годами поддерживать системы без лишнего нытья.

Прочтение этой статьи: 15 минут
Осмысление методики: 10 минут
Ощутимые результаты: 30 минут

Итак,

Вы опасно некомпетентны в криптографии

Reading time7 min
Views142K
От переводчика: Хоть посыл статьи Najaf Ali, переведённой ниже, и носит слегка рекламный оттенок («оставьте криптографию нам, экспертам»), но описанные в ней примеры показались мне довольно интересными и заслуживающими внимания.
Кроме того, никогда не будет лишним повторить прописную истину: не придумывайте свою крипто-защиту. И эта статья отлично иллюстрирует почему.

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

Необыкновенный способ генерации лабиринтов

Reading time6 min
Views87K
В этой статье я расскажу об одном необычном подходе к генерации лабиринтов. Он основан на модели Амари́ нейронной активности коры головного мозга, являющейся непрерывным аналогом нейронных сетей. При определенных условиях она позволяет создавать красивые лабиринты очень сложной формы, подобные тому, что приведен на картинке.

Вас ждет много анализа и немного частных производных. Код прилагается.
Прошу под кат!

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

Инструмент контроля за поведениеем роботов на вашем сайте

Reading time3 min
Views5K
Приветствую!
Сегодня я бы хотел рассказать про свой проект, старт которому был дан еще в 2008 году. С тех пор многое поменялось, как в архитектуре хранения данных, так и в алгоритмах обработки информации.

Речь пойдет о сервисе для SEO специалистов и/или рядовых вебмастеров. BotHunter является системой пассивного наблюдения (в реальном режиме времени) за юзерагентами на вашем сайте. Примеры интерфейсов см. ниже, либо в DEMO аккаунте на сайте системы (в demo режиме ограниченный функционал). Читаем далее



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

Про мнимые и реальные оптимизации в 10 раз, целительный SSE, и все такое

Reading time6 min
Views38K
По мотивам одного вчерашнего поста про оптимизацию условных переходов при расчете x=sign(a,b)*min(abs(a), abs(b)) якобы в 10 раз. Краткая сводка:

  • оптимизация налицо, но размер мнимый: не в 10 раз, а 2.5 раза;
  • бенчмарки надо делать правильно: не надо мерить CPU stalls, RAM bandwidth итп вместо исследуемой функции;
  • бенчмарки надо делать правильно: иначе могут дико дрожать;
  • выставлять только приоритет прикольно, но на коротких бенчмарках зря: +0.5% скорости, -15% дрожания;
  • нужно мерить исследуемую функцию и только ее, только так получаешь корректные данные;
  • нужно греть проц, нужно считать минимум из N прогонов/секунд, только так побеждаешь дрожание;
  • нужно пользовать SSE, с ним получилось 8.6 раз, причем код… читается.

В общем, опять пачка классических методологических ошибок при бенчмарке. Кому интересно, как такие ошибки НЕ делать, подробности, детальный разбор полетов, оптимизация в еще несколько раз и, главное, исходники под катом.
Читать дальше →

Работа плагина jQuery validate изнутри

Reading time6 min
Views145K
Есть множество статей о том, как написать свои правила для плагина jQuery validate, но мало какие из них объясняют внутреннюю работу этого плагина, что мы и обсудим в этой статье.
Это первая часть серии статей «Понимание ненавязчивой валидации Asp.NET MVC»

1. Работа плагина jQuery validate изнутри
2. Понимание Html-кода, сгенерированного ненавязчивой валидацией в ASP.Net MVC
3. Внутренняя работа плагина unobtrusive jQuery validate в ASP.Net MVC.

Что мы узнаем из этой статьи:
1. Как валидировать форму.
2. Сообщения валидации и как они работают.
3. Добавление собственных правил валидации.
4. Что именно происходит, когда мы вызываем метод валидации.

Как валидировать форму


Есть 2 основных способа, чтобы валидировать форму.

1. Использовать имена классов как правила

Как это работает

Мы добавляем к полю, которое нужно провалидировать, html атрибут «class», и это подключит валидацию.
Итак, если нам нужно, чтобы текстовое поле было обязательным мы добавляем в элемент input значение атрибута class = «required»

Html
<form action="/" method="post">
  <input id="Name" type="text" name="Name" value="" class ="required"  />
  <input type="submit" value="Submit" />
</form>

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

Оптимизация времени выполнения программы на С++ (убираем условные переходы)

Reading time5 min
Views32K
При оптимизации времени выполнения алгоритма, использующего LDPC декодер, профайлер привел к функции, вычисляющей следующее значение:
image
где a и b — целые числа. Количество вызовов шло на миллионы, а реализация ее была достаточно
проста и бесхитростна...

Игра Жизнь и преобразование Фурье

Reading time5 min
Views63K
Многие слышали о великом и ужасном быстром преобразовании Фурье (БПФ / FFT — fast fourier transform) — но как его можно применять для решения практических задач за исключением JPEG/MPEG сжатия и разложения звука по частотам (эквалайзеры и проч.) — зачастую остается неясным вопросом.

Недавно я наткнулся на интересную реализацию игры «Жизнь» Конвея, использующую быстрое преобразование Фурье — и надеюсь, оно поможет вам понять применимость этого алгоритма в весьма неожиданных местах.
Читать дальше →

Советы Google по кодированию на языке Python. Часть первая: советы по программированию

Reading time13 min
Views115K

Хай, Хабр!
Сегодня я хочу представить, дорогому хабрасообществу свой первый хабраперевод. Программировать на языке Python — подобно песне. Но еще лучше, когда Ваш код читаем и понятен, а значит чуть более поэтичен, чем обычно бывает производстве. У каждого свои правила и свои стереотипы относительно написания и оформления исходного кода, на каком бы языке он ни был написан. Множество копий сломано о щиты на форумах, но, как ни крути, нельзя не считаться с мнением авторитетных товарищей. Так что сейчас будет представлен перевод первой части стайл-гайда для языка Python от Google. Коснется он именно постулатов написания кода (вторая часть тоже скоро появится, а посвящена она будет форматированию исходного кода). Сразу предупреждаю: тут много (если не большая часть) прописных истин, которые все знают уже давно. Но я искренне надеюсь, что Вы сможете найти тут что-то новое или хотя бы вспомнить старое. Приступим под катом. И pdf тут как тут.
Читать дальше →

Логическая организация кэш-памяти процессора

Reading time3 min
Views44K
На днях решил систематизировать знания, касающиеся принципов отображения оперативной памяти на кэш память процессора. В результате чего и родилась данная статья.

Кэш память процессора используется для уменьшения времени простоя процессора при обращении к RAM.

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

Логически кэш-память представляет собой набор кэш-линий. Каждая кэш-линия хранит блок данных определенного размера и дополнительную информацию. Под размером кэш-линии понимают обычно размер блока данных, который в ней хранится. Для архитектуры x86 размер кэш линии составляет 64 байта.



Так вот суть кэширования состоит в разбиении RAM на кэш-линии и отображении их на кэш-линии кэш-памяти. Возможно несколько вариантов такого отображения.
Читать дальше →

Из говнокода в Highload. Используем ТАРАНtool. 5 рецептов повышения производительности

Reading time14 min
Views33K
Ко мне обратился один руководитель стартапа социальной игры с просьбой увеличить производительность своего проекта. На этом этапе был сделан и запущен прототип проекта. И надо отдать должное разработчикам, что проект работал и даже приносил какую-то прибыль. Но, запускать рекламную компанию не имело смысло, так как проект не выдерживал ни каких нагрузок. Валился MySQL (35% ошибок).

Код проекта… В общем у меня осталось впечатление, что писал его недоученный студент… И это, немотря на то, что уже был сделан частичный рефакторинг другим программистом. Единственное, что радовало, то это то, что не использовался какой-либо фреймворк. Конечно, это вечно флеймовый вопрос: Иисус или Магомед? Быть или не Быть? Unix или Windows? Использовать или не Использовать? ИМХО, Моё мнение: фреймворки заточены под узкий круг типовых задач. Социальный проект — задача, как правило, не типовая… Но, в целом, мне проект показался интересным и я решил взяться за улучшение. На этом вступление можно закончить…

Наверно, про повышение производительности и тему highload не писал только ленивый WEB разработчик, знающий хоть что-то в этой области. Принципиально, что-то нового, в данной статье вы не найдёте. Основные идеи разработки highload проектов, были мною изложены в цикле статей HighLoad. Три кита.. Если вам интересно, как я увеличил производительность PHP проекта, используя NoSQL хранилище tarantool, то Добро пожаловать под кат.

Хотя, принципиально можно использовать другое, подходящее под данный круг задач, key/value хранилище, и реализация серверной логики может быть на любом другом скриптовом языке.
Читать дальше →

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Works in
Date of birth
Registered
Activity