Как стать автором
Обновить
40
0

Пользователь

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

Определяем веса шахматных фигур регрессионным анализом

Время на прочтение15 мин
Количество просмотров85K
Здравствуй, Хабр!

В этой статье речь пойдёт о небольшом программистском этюде на тему машинного обучения. Замысел его возник у меня при прохождении известного здесь многим курса «Machine Learning», читаемого Andrew Ng на Курсере. После знакомства с методами, о которых рассказывалось на лекциях, захотелось применить их к какой-нибудь реальной задаче. Долго искать тему не пришлось — в качестве предметной области просто напрашивалась оптимизация собственного шахматного движка.

Вступление: о шахматных программах



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

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

Строго говоря, настоящая оценка может принимать только три значения: выигрыш, проигрыш или ничья — 1, 0 или ½. По теореме Цермело для любой заданной позиции она определяется однозначно. На практике же из-за комбинаторного взрыва ни один компьютер не в состоянии просчитать варианты до листьев полного дерева игры (исчерпывающий анализ в эндшпильных базах данных — это отдельный случай; 32-фигурных таблиц в обозримом будущем не появится… и в необозримом, скорее всего, тоже). Поэтому программы работают в так называемой модели Шеннона — пользуются усечённым деревом игры и приближённой оценкой, основанной на различных эвристиках.
Читать дальше →
Всего голосов 64: ↑64 и ↓0+64
Комментарии45

Да какого, блин, хрена, D-Link⁈

Время на прочтение2 мин
Количество просмотров80K
Как уже писал в апдейте к посту про баг в HNAP DIR-890L, его нашли в начале года, в DIR-645, и выпустили патч. Сейчас D-Link выпустил патч и для DIR-890L.
Патчи для DIR-645 и DIR-890L одинаковые, поэтому я буду писать только про DIR-890L.

Хоть в предыдущем посте я рассматривал только выполнение команд, патч указывает на несколько дыр в безопасности, которые появились из-за использования strstr для валидации HNAP-заголовка SOAPAction:
  • Использование неаутентифицированных пользовательских данных в вызове system
  • Использование неаутентифицированных пользовательских данных в вызове sprintf
  • Неаутентифицированные пользователи могут выполнять привилегированные HNAP-запросы (такие, как смена пароля администратора)

Видите, D-Link признала все это в информации об уязвимости, и они ясно представляли все векторы атаки.
Итак, убрали ли они переполнение стека sprintf?

image
sprintf(cmd_buf, “sh %s%s.sh > /dev/console”, “/var/run”, SOAPAction);

Нет.
Читать дальше →
Всего голосов 137: ↑129 и ↓8+121
Комментарии47

Реализуем безопасный VPN-протокол

Время на прочтение12 мин
Количество просмотров48K
Снова тема VPN, конфиденциальной передачи данных, безопасности и криптографии. Сейчас, в эру пост-Сноудена, стало модно клепать безопасные, уважающие приватность, невзламываемые, защищённые от спецслужб и цензуры программы. Однако эта статья – не очередной маркетинговый пиар, а, скорее, демонстрация того, как применяются криптографические примитивы и на что стоит обращать внимание при разработке подобного программного обеспечения.



Результатом этой работы предполагается создание работающего клиент-сервера, пригодного для review разработчиками (то есть немного кода на высокоуровневом языке), достаточно производительного, чтобы использоваться в промышленных условиях, имеющего высокий порог безопасности: GoVPN.
Читать дальше →
Всего голосов 47: ↑46 и ↓1+45
Комментарии56

Многозадачность в ядре Linux: прерывания и tasklet’ы

Время на прочтение6 мин
Количество просмотров76K
Котейка и младшие братьяВ предыдущей своей статье я затронула тему многопоточности. В ней речь шла о базовых понятиях: о типах многозадачности, планировщике, стратегиях планирования, машине состояний потока и прочем.

На этот раз я хочу подойти к вопросу планирования с другой стороны. А именно, теперь я постараюсь рассказать про планирование не потоков, а их “младших братьев”. Так как статья получилась довольно объемной, в последний момент я решила разбить ее на несколько частей:
  1. Многозадачность в ядре Linux: прерывания и tasklet’ы
  2. Многозадачность в ядре Linux: workqueue
  3. Protothread и кооперативная многозадачность

В третьей части я также попробую сравнить все эти, на первый взгляд, разные сущности и извлечь какие-нибудь полезные идеи. А через некоторое время я расскажу про то, как нам удалось применить эти идеи на практике в проекте Embox, и про то, как мы запускали на маленькой платке нашу ОС с почти полноценной многозадачностью.

Рассказывать я постараюсь подробно, описывая основное API и иногда углубляясь в особенности реализации, особо заостряя внимание на задаче планирования.
Читать дальше →
Всего голосов 94: ↑93 и ↓1+92
Комментарии31

Программируем квадрокоптер на Arduino (часть 1)

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


Здравствуйте, хаброжители!
В этой серии статей мы с вами приоткроем крышку квадрокоптера чуть больше, чем этого требует хобби, а также напишем, настроим и запустим в воздух собственную программу для полетного контроллера, которым будет являться обычная плата Arduino Mega 2560.

У нас впереди:
  1. Базовые понятия (для начинающих коптероводов).
  2. PID-регуляторы с интерактивной web-демонстрацией работы на виртуальном квадрокоптере.
  3. Собственно программа для Arduino и настроечная программа на Qt.
  4. Опасные тесты квадрокоптера на веревке. Первые полёты.
  5. Крушение и потеря в поле. Автоматический поиск с воздуха средствами Qt и OpenCV.
  6. Окончательные успешные тесты. Подведение итогов. Куда дальше?

Материал объемный, но постараюсь уложиться в 2-3 статьи.
Сегодня нас ожидает: спойлер с видео, как наш квадрокоптер полетел; базовые понятия; PID-регуляторы и практика подбора их коэффициентов.
Читать дальше →
Всего голосов 107: ↑106 и ↓1+105
Комментарии96

Построение диаграмм и графов в Doxygen

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


Данная статья входит в получившийся цикл статей о системе документирования Doxygen:

  1. Документируем код эффективно при помощи Doxygen
  2. Оформление документации в Doxygen
  3. Построение диаграмм и графов в Doxygen

Она завершает цикл статей о системе документации Doxygen. На этот раз статья посвящена построению различных диаграмм и графов в Doxygen. В ней мы рассмотрим основные их виды, различные способы их настройки и оформления, а также приведём ряд примеров и советов по их использованию.
Читать дальше →
Всего голосов 23: ↑23 и ↓0+23
Комментарии2

Создаем свое Amazon-like навигационное меню

Время на прочтение3 мин
Количество просмотров23K
Ранее на Хабре уже рассказывали о загадочном меню. Изобретение по истине гениальное и полезное. Уверен, каждый из вас хотел бы модифицировать меню на своем сайте таким же образом.

image
Читать дальше →
Всего голосов 34: ↑23 и ↓11+12
Комментарии10

3/14/15 9:26:53 Празднование «Дня числа Пи» века, а также рассказ о том, как получить свою очень личную частичку числа пи

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

Перевод поста Стивена Вольфрама (Stephen Wolfram) "Pi or Pie?! Celebrating Pi Day of the Century (And How to Get Your Very Own Piece of Pi)"
Выражаю огромную благодарность тем, кто помог мне сделать этот перевод: Курбану Магомедову и Ольге Лавренюк.


Эта суббота будет «Днем числа Пи» века. Дата 3/14/15 в формате месяц/день/год задает первые цифры числа π=3.1415… А 9:26:53.589… утра будет «супер моментом дня числа Пи».


Благодаря Mathematica и Wolfram|Alpha, я уверен, что наша компания выдала миру больше раз число π, чем какая-либо другая организация в истории. Поэтому, конечно, мы должны сделать нечно особенное (мероприятие SXSW) для этого особенного Дня числа Пи.


Читать дальше →
Всего голосов 43: ↑38 и ↓5+33
Комментарии46

30 чудных библиотек для PHP программистов

Время на прочтение6 мин
Количество просмотров105K
Предлагаю читателям «Хабрахабра» перевод публикации «30 Amazing PHP Libraries for Programmers and Developers». Авторы собрали несколько удивительных PHP-библиотек, которые помогут реализовать некоторые классные вещи, не прилагая много усилий. Цель обзора состоит в том, чтобы преподнести что-то новое, поэтому список не включает популярные библиотеки.
Читать дальше →
Всего голосов 71: ↑60 и ↓11+49
Комментарии18

Документируем код эффективно при помощи Doxygen

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


Данная статья входит в получившийся цикл статей о системе документирования Doxygen:

  1. Документируем код эффективно при помощи Doxygen
  2. Оформление документации в Doxygen
  3. Построение диаграмм и графов в Doxygen

Это первая и основная статья из упомянутого цикла и она представляет собой введение в систему документирования исходных текстов Doxygen, которая на сегодняшний день, по имеющему основания заявлению разработчиков, стала фактически стандартом для документирования программного обеспечения, написанного на языке C++, а также получила пусть и менее широкое распространение и среди ряда других языков.

В этой статье мы сначала познакомимся с самой системой и её возможностями, затем разберёмся с её установкой и базовыми принципами работы, и, наконец, завершим знакомство рассмотрением различных примеров документации, примеров того, как следует документировать те или иные части кода. Словом, познакомимся со всем тем, что позволит вам освоиться и начать работать с этой замечательной системой.
Читать дальше →
Всего голосов 52: ↑52 и ↓0+52
Комментарии39

Разбираемся с LCD экраном LPH9157-2 от Siemens C75/ME75

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

Внятной документации на этот экран я не нашел поэтому пришлось разбираться с тем что есть и экспериментировать. В качестве управляющего устройства я использовал Raspberry PI. Так-же была написана программа позволяющая превратить этот экран в мини-монитор.

Описание


Данный дисплей имеет разрешение 132 x 176 пикселей и даёт возможность работать с тремя цветовыми палитрами 16(5-6-5), 12(4-4-4) и 8(3-3-2) бит.
Читать дальше →
Всего голосов 70: ↑70 и ↓0+70
Комментарии22

Jammer: глушим GSM, 3G, 4G, WiMAX, Yota

Время на прочтение3 мин
Количество просмотров226K
Мы живем в свободной стране. Любой может приобрести «игрушку», за которую в США светит штраф $112,000 (джаммеры так же признаны вне закона в Англии, Странах Евросоюза, Австралии, Канаде, Индии, Сингапуре и пр)

Пока есть возможность («пока лопух не догадался»), я взял на обзор одну из популярных гражданских глушилок.

Обзор 5-канальной глушилки ГРН40-А5

В 2012 году обсуждался вопрос широкого использования GSM-глушилок в общественных местах.
В 2014 российские разработчики представили свой аппарат для ЕГЭ.
В 2014 журнал «Хакер» признал глушилки (jammer) полезным гаджетом.
В феврале 2015 года африканский злоумышленник протащил глушилку в парламент.

Что интересно, началась веселуха и на глушилки появляются антиглушилки (и обнаружители глушилок), а на них в свою очередь появляются глушилки антиглушилок и тд.
ТТХ
Общая выходная мощность: 12 Вт
Размер прибора: 21*17*6 мм
Вес устройства: 2 кг
Питание: АС:110/220V — DC:5V, 12A
Потребляемая мощность устройства: 30 Вт
Подавляемые системы:
CDMA-800, GSM-900 и GSM-1800, PHS-1900, 3G, 4G, LTE, WIMAX
Рабочие температуры -40℃ to +55℃
Расстояние эффективного подавления регулируемое, от 1 до 80 м (в зависимости от близости базовой станции и прочих условий)


Читать дальше →
Всего голосов 46: ↑37 и ↓9+28
Комментарии32

USB killer

Время на прочтение2 мин
Количество просмотров434K
Было обычное хмурое зимнее утро, мы с коллегами по обыкновению пили утренний кофе, делились новостями, ничто не предвещало беды. Но тут приятель рассказал… далее цитата из скайп чата:

Как-то читал статейку как парень в метро вытянул у чавака из сетчатого кармана сумки флеху, на которой 128 было написано. Пришел домой, вставил в ноут -> спалил пол компа… Написал на флехе 129 и теперь носит в наружном кармане своей сумки...

Картинка для привлечения внимания:



Так как я работаю на предприятии, которое занимается разработкой и производством электроники, то мы с коллегами принялись активно обсуждать варианты реализации такой флешки, — которая “спаливала бы полкомпа.” Было множество хардкорных, фантастических, а также вполне реальных вариантов. И всё бы так и закончилось этим весёлым обсуждением, если бы я не собирался заказывать изготовление печатных плат для других своих проектов.
Читать дальше →
Всего голосов 230: ↑217 и ↓13+204
Комментарии418

WEB Server на базе ENC28j60 + Arduino — проще не бывает

Время на прочтение4 мин
Количество просмотров179K
image

Всем привет.
Как многие слышат, что нужно создать WEB сервер – сразу становится не по себе, всячески пытаются отойти от этой темы применив другие варианты управления и мониторинга своих устройств. Но ведь интернет и сеть есть уже почти в каждом устройстве. Так чем Ваш творение хуже?
Так что Если Вам интересно – идем дальше.
Читать дальше →
Всего голосов 32: ↑27 и ↓5+22
Комментарии48

Говорила же мама: не доверяй телефону с SIM-картой

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

Спецслужбы США и Великобритании выкрали шифры у производителя SIM-карт


Под поздний вечер сайты крупнейших агентств поразила ещё одна интересная техническая информация. На этот раз, с компьютерных технологий перешли на более современные, мобильные. Надо сразу скаазать, что у специалистов давно возникали сомнения в надёжности SIM-карт. Некоторые прямо как в воду глядели (в 2013-м), не только с сим-картами, но и со Сноуденом…

К примеру, вот заметка 2013 года: "Сим-карта далеко не так хорошо защищена как хотелось бы думать" Карстен Ноль (Karsten Nohl) говорил: «Мы можем дистанционно (через SMS) установить программу на мобильный телефон жертвы, причем эта программа будет работать полностью независимо от телефона. Мы можем шпионить за вами. Можем добыть ваши криптоключи, используемые для шифрования телефонных звонков. Мы можем читать ваши SMS. Помимо же просто шпионажа, мы (так же через SMS) можем похищать из SIM-карты телефона критично важные данные о владельце — вашу мобильную личность — и снимать деньги с вашего счета». И…
Читать дальше →
Всего голосов 85: ↑67 и ↓18+49
Комментарии70

Говорила же мама: не доверяй прошивкам жёстких дисков

Время на прочтение3 мин
Количество просмотров148K
Отбирая хлеб новостников....

По всем каналам пролетела новость, небезынтересная для технических специалистов. А также, для разгадывателей головоломок и кроссвордов. Правило, которое иллюстрирует данный факт, говорит: проблема не всегда отыскивается под фонарём, где светло и удобно искать. Уязвимость и «жучки» скрываться могут и на другом уровне поиска. Страхуясь от уязвимостей в программах, надо не забывать, что они могут быть встроены в аппаратуру.

Далее — цитируем «РБК».

«Касперский» раскрыл уникальную американскую шпионскую программу


Агентство национальной безопасности США придумало скрывать шпионские программы в жестких дисках, производимых Western Digital, Seagate, Toshiba и другими ведущими изготовителями, получая таким образом доступ к информации на большинстве компьютеров в мире. Об этом сообщает Reuters со ссылкой на исследование «Лаборатории Касперского» и показания бывших сотрудников АНБ.
Читать дальше →
Всего голосов 102: ↑89 и ↓13+76
Комментарии205

Как работает мозг?

Время на прочтение8 мин
Количество просмотров120K
Этот пост написан по мотивам лекции Джеймса Смита, профессора Висконсинского университета в Мадисоне, специализирующегося в микроэлектронике и архитектуре вычислительных машин.

История компьютерных наук в целом сводится к тому, что учёные пытаются понять, как работает человеческий мозг, и воссоздать нечто аналогичное по своим возможностям. Как именно учёные его исследуют? Представим, что в XXI веке на Землю прилетают инопланетяне, никогда не видевшие привычных нам компьютеров, и пытаются исследовать устройство такого компьютера. Скорее всего, они начнут с измерения напряжений на проводниках, и обнаружат, что данные передаются в двоичном виде: точное значение напряжения не важно, важно только его наличие либо отсутствие. Затем, возможно, они поймут, что все электронные схемы составлены из одинаковых «логических вентилей», у которых есть вход и выход, и сигнал внутри схемы всегда передаётся в одном направлении. Если инопланетяне достаточно сообразительные, то они смогут разобраться, как работают комбинационные схемы — одних их достаточно, чтобы построить сравнительно сложные вычислительные устройства. Может быть, инопланетяне разгадают роль тактового сигнала и обратной связи; но вряд ли они смогут, изучая современный процессор, распознать в нём фон-неймановскую архитектуру с общей памятью, счётчиком команд, набором регистров и т.п. Дело в том, что по итогам сорока лет погони за производительностью в процессорах появилась целая иерархия «памятей» с хитроумными протоколами синхронизации между ними; несколько параллельных конвейеров, снабжённых предсказателями переходов, так что понятие «счётчика команд» фактически теряет смысл; с каждой командой связано собственное содержимое регистров, и т.д. Для реализации микропроцессора достаточно нескольких тысяч транзисторов; чтобы его производительность достигла привычного нам уровня, требуются сотни миллионов. Смысл этого примера в том, что для ответа на вопрос «как работает компьютер?» не нужно разбираться в работе сотен миллионов транзисторов: они лишь заслоняют собой простую идею, лежащую в основе архитектуры наших ЭВМ.

Моделирование нейронов


Кора человеческого мозга состоит из порядка ста миллиардов нейронов. Исторически сложилось так, что учёные, исследующие работу мозга, пытались охватить своей теорией всю эту колоссальную конструкцию. Строение мозга описано иерархически: кора состоит из долей, доли — из «гиперколонок», те — из «миниколонок»… Миниколонка состоит из примерно сотни отдельных нейронов.



По аналогии с устройством компьютера, абсолютное большинство этих нейронов нужны для скорости и эффективности работы, для устойчивости ко сбоям, и т.п.; но основные принципы устройства мозга так же невозможно обнаружить при помощи микроскопа, как невозможно обнаружить счётчик команд, рассматривая под микроскопом микропроцессор. Поэтому более плодотворный подход — попытаться понять устройство мозга на самом низком уровне, на уровне отдельных нейронов и их колонок; и затем, опираясь на их свойства — попытаться предположить, как мог бы работать мозг целиком. Примерно так пришельцы, поняв работу логических вентилей, могли бы со временем составить из них простейший процессор, — и убедиться, что он эквивалентен по своим способностям настоящим процессорам, даже хотя те намного сложнее и мощнее.
Читать дальше →
Всего голосов 66: ↑64 и ↓2+62
Комментарии38

Совместное использование криптодисков на ПК и Android

Время на прочтение9 мин
Количество просмотров14K
В данной статье будет рассмотрен пример совместного использования криптодисков CyberSafe Mobile на персональном компьютере и Android-устройстве.



Читать дальше →
Всего голосов 26: ↑15 и ↓11+4
Комментарии86

STM32. Медицинское применение. Тонометр. Введение и аппаратная часть

Время на прочтение6 мин
Количество просмотров64K
Одним из интересных профилей применения современного МК, безусловно, является медицина. Спектр приборов здесь достаточно широк, начиная от простых термометров, где можно применить простой STM8L с ЖК экраном, заканчивая навороченными кардио-мониторами, измерителями ЭКГ, холтерами с возможностями дистанционного сбора и отправки информации по эйзернет или беспроводно с коек пациентов прямо в кабинет глав-врачу. Сегодня мы поговорим о возможности применения МК STM32 при неинвазивном измерении артериального давления осциллометрическим методом. Всех заинтересованных прошу под кат.
Читать дальше →
Всего голосов 35: ↑34 и ↓1+33
Комментарии15

Нестандартный топ новостей о безопасности: Январь

Время на прочтение10 мин
Количество просмотров12K
Всем привет! После успешного дайджеста новостей за 2014 год мы решили сделать рубрику регулярной, точнее – ежемесячной. Сегодня – самые важные новости информационной безопасности за январь. Методика выбора новостей немного изменилась. Мы по-прежнему берем самые посещаемые новости с нашего сайта Threatpost и пытаемся понять, почему они удостоились такого внимания. Но в ежемесячном дайджесте новостей будет пять. Напоминаю, что на Threatpost мы собираем все новости индустрии информационной безопасности. Собственные исследования «Лаборатории» публикуются на сайте Securelist.

Краткое содержание: Дыра в glibc и почему физики не дружат с лириками, северокорейский браузер, зарядка-кейлоггер и дыры в клавиатурах, криптолокеры в целом и в частности, взлом WiFi с социальной инженерией.
Поехали!
Всего голосов 31: ↑26 и ↓5+21
Комментарии14

Информация

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