Search
Write a publication
Pull to refresh
22
0
Александр Ф. Михайлов @chelaxe

User

Send message

Снова «Морской бой». Считаем число возможных расположений кораблей

Reading time6 min
Views35K
Раз уж неделя «Морского боя» на Хабре продолжается, добавлю и я свои два цента.
При попытке найти оптимальную стратегию для игры за компьютер довольно быстро приходим к такому приближению:

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

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


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

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

Что же ещё попробовать? Любой олимпиадник тут же ответит — динамическое программирование. Но как его организовать?

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

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

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

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

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

VoIP-cофтфон 3CXPhone для Android — впервые с PUSH-уведомлениями

Reading time1 min
Views8.9K
Компания 3CX на днях выпустила приложение, VoIP-софтфон 3CXPhone для Android. Главная фича 3CXPhone — поддержка PUSH-уведомлений, которые могут ‘разбудить’ смартфон при VoIP звонке или входящем сообщении в чат (кстати, 3CX это первая АТС, поддерживающая PUSH).
image

Кроме этого, функционал устройства включает:
• Создание конференц-звонков
• Отслеживание статусов присутствия
• Многолинейность – управляйте несколькими звонками одновременно
• Корпоративный чат
• Возможность настройки переадресации со смартфона
• Возможность быстро установить свой статус (доступен, отсутствует, нет в офисе и т.д.)
• Возможность проверять голосовую почту и записи разговоров
• Централизованная история вызовов
• Настройка за секунду по email
Читать дальше →

Руководство по созданию собственной установочной сборки Windows 8

Reading time16 min
Views61K
Введение

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

Использование такой сборки автоматизирует работу системного администратора по установке и настройки операционной системы. Особо актуально для тех случаев, когда необходимо установить однотипный набор программ на большое количество компьютеров. Так же полезно руководство будет и тем, кто просто хочет создать собственный установочный образ Windows 8 с набором используемых им программ и драйверов.

В данном руководстве затрагиваются вопросы подготовки такой сборки, создание загрузочной флешки и записи полученной сборки на флешку. Так же, полученный образ в дальнейшем, используя службы развертывания в сети (WDS), можно установить на любое количество компьютеров в корпоративной сети, но это тема уже следующего руководства.

Текст рассчитан на начинающих пользователей, поэтому объясняются и иллюстрируются порой простейшие вещи.

Читать далее...

Ближайшее будущее Wi-Fi: как обстоят дела с 802.11ac

Reading time6 min
Views74K
В ближайшее время Wi-Fi должен разжиться тремя интересными усовершенствованиями:

  • 802.11ac (он же «Гигабитный Wi-Fi») как средство повышения скорости и емкости WLAN
  • Wi-Fi Certified Passpoint (он же Hotspot 2.0) на основе спецификации 802.11u, как способ значительно улучшить ситуацию с хотспотами и разгрузить сотовые сети.
  • Wi-Fi Certified Voice Enterprise: как способ наведения порядка в ситуации с построением высокопроизводительных сетей для передачи голоса и видео. Отличную инфраструктуру можно построить и сейчас, но отсутствие жестких стандартов для клиентских устройств создает проблемы с работоспособностью решения в целом.

Все они в той или иной мере уже доступны в реальных продуктах и имеют потенциал стать массовыми в самое ближайшее время. В этой части рассмотрим 802.11ac.
Дальше

LinkMeUp. Выпуск 3

Reading time1 min
Views6.2K
В сегодняшнем выпуске мы решили немного изменить ход беседы:

1) Новости телекома
  • Развитие сетей LTE
  • Передача данных на скорости 400 Гб/c на расстояние 12000 км
  • Технология бесшовного роутминга между сетями 3g/4g и wifi/
  • Противостояние Америки и китайских производителей сетевого оборудования

2) Общие размышления на тему удалённой работы для инженеров
3) Протоколы RADIUS и DIAMETER.



Скачать файл.

Asterisk на Mikrotik

Reading time2 min
Views86K
image

Задался идеей поднять voip на mikrotik. Кто помнит, в старых версиях routeros был модуль для voip, потом его выпилили, а жаль. Нативно поднять астериск на routeros не выйдет, однако есть возможность поднять виртуальный роутер с openwrt в режиме metarouter, вот отсюда и будем исходить.

Долгие поиски привели меня на сайт openwrt.wk.cz (доступен только по ipv6), откуда и был скачан образ openwrt для mt-mips. Все эксперименты проводил на 2011UAS-2HnD. Так как не у всех есть ipv6, я сделал зеркало для установки пакетов с него (ms1.nserver.us/openwrt.wk.cz.), где и лежат необходимые пакеты. Кстати, во время поисков, так и не удалось найти полноценную статью по этой теме не то что на русском, но и на любом другом.

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

Делаем dDNS-клиент для DNS Яндекса на MikrotikOS

Reading time4 min
Views26K
Зашёл недавно с другом разговор про DynDNS и подобные сервисы, и я вспомнил что давно хотел реализовать аналог на базе API которое предоставляет Yandex для управления DNS-хостингом. Уже несколько лет я владею чудесной железкой Mikrotik RB750GL и очень хотелось чтобы обновляла запись именно она.
Но до недавнего времени это было не возможно, так как MikroTik умеет скачивать файлы только по HTTP, а API Yandex работает только по HTTPS. И вот зайдя на Wiki Mikrotik увидел заветную запись:
Fetch now supports HTTPS protocol. By default no certificate checks are made, but setting check-certificate to yes enables trust chain validation from local certificate store. CRL checking is never done.

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

Первый компилятор C от Денниса Ритчи — на Github

Reading time1 min
Views61K

Компьютер DEC с носителем DECtape

На Github выложили last1120c и prestruct-c — ранние версии самого первого компилятора С в истории. Код написан самим Деннисом Ритчи в 1972-1973 гг.

Компиляторы найдены несколько лет назад на старой магнитной ленте DECtape, вставленной в антикварный компьютер VAX производства компании DEC.
Читать дальше →

Неизвестный математик совершил прорыв в теории простых чисел-близнецов

Reading time2 min
Views186K
В математике чрезвычайно редко случается, чтобы учёный старше 40 лет опубликовал первую серьёзную научную работу. Ещё реже бывает, чтобы эта работа имела большую научную ценность. Именно такой редчайший случай представляет из себя доцент университета Нью-Гэмпшира Итан Чжан (Yitang Zhang), который до сих не имеет ни должности профессора, ни веб-странички со списком научных работ. Тем не менее, ему удалось совершить серьёзный шаг к решению одной из старейших математических проблем — гипотезе о простых числах-близнецах.

Когда журнал “Annals of Mathematics” получил 17 апреля 2013 года научную работу Чжана, они восприняли её скептически. Заявка на прорывное исследование от неизвестного учёного? Это слишком банально и часто встречается, чтобы оказаться правдой. На удивление редколлегии, несколько научных экспертов подробно изучили работу Чжана — и нашли доказательство гипотезы о расстоянии между парными простыми числами предельно ясным, чётким и бесспорным.

В результате, журнал одобрил работу для публикации в исключительно короткие сроки — уже через три недели после поступления.
Читать дальше →

Вычисление N-го знака числа Пи без вычисления предыдущих

Reading time4 min
Views135K
С недавних пор существует элегантная формула для вычисления числа Пи, которую в 1995 году впервые опубликовали Дэвид Бэйли, Питер Борвайн и Саймон Плафф:
image

Казалось бы: что в ней особенного — формул для вычисления Пи великое множество: от школьного метода Монте-Карло до труднопостижимого интеграла Пуассона и формулы Франсуа Виета из позднего Средневековья. Но именно на эту формулу стоит обратить особое внимание — она позволяет вычислить n-й знак числа пи без нахождения предыдущих. За информацией о том, как это работает, а также за готовым кодом на языке C, вычисляющим 1 000 000-й знак, прошу под хабракат.
Читать дальше →

Google представил Hangouts: унифицированный мессенджер для Android, iOS, и Chrome

Reading time2 min
Views106K


У корпорации Google довольно много разнообразных сервисов. Некоторые из них закрываются, другие — продолжают работу. Но есть и сервисы, которые объединяют. Именно так произошло с Google Talk, Google+ Messenger, и Google+ Hangout. В течение некоторого времени все эти мессенджеры существовали независимо друг от друга. Сегодня корпорация Google объявила об объединении указанных сервисов, с введением в работу унифицированного сервиса, получившего название Hangouts. Сегодня приложение будет доступно для всех платформ, указанных в заголовке.

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

Реверс AdMob SDK или еще один способ защитить свой код

Reading time5 min
Views11K
Началась эта история с новости о том, что летом в Минске открывается салон Bentley. Так я понял, что пришло время встраивать рекламу в свою вторую игру, иначе я рискую оказаться в конце очереди. Скачал последнюю версию SDK (6.4.1 на данный момент), интегрировал в игру, запустил и сразу увидел подозрительные строчки в logcat
Читать дальше →

Защита Android приложений от взлома

Reading time5 min
Views49K
В данной статье мы кратко расскажем о том, как можно защитить свою программу от взлома, не интегрируя стандартное решение от Google и предоставим пример рабочего кода. Интересно? Просим под кат!

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

8 фактов, которые вы, возможно, не знали о C#

Reading time7 min
Views195K
Вот несколько необычных фактов о языке C#, о которых знают лишь немногие разработчики.

1. Индексаторы могут использовать params параметры


Мы все знаем, как обычно выглядят индексаторы x = something["a"], а так же код необходимый для его реализации:

public string this[string key]
 {
   get { return internalDictionary[key]; }
 }

Но знали ли вы, что для доступа к элементам вы можете использовать params параметры x = something["a", "b", "c", "d"]?
Просто напишите ваш индексатор следующим образом:
Читать дальше →

Как подключить сторонний браузер в приложении на C#

Reading time3 min
Views100K
image

В определенный момент мне стало некомфортно использовать стандартный контрол WebBrowser, предлагаемый Visual Studio.
Причин было несколько:
1. Использовался IE-движок, что само по себе уже сильный аргумент.
2. Кривая работа с JS.
3. Отсутствие масштабирования.
4. Если запустить на машине, где стоит IE6, то все его «достоинства» переносятся на приложение.

В итоге был начат поиск альтернативных решений.
Было рассмотрено 2 SDK. xulrunner(Mozilla) и Awesomium(Chrome)

Подключение обоих происходит примерно одинаково, но на всякий случай опишу оба.
Читать дальше →

Пишем эмулятор Кубика Рубика

Reading time20 min
Views78K
OpenGL — платформонезависимая спецификация, описывающая программный интерфейс для создания компьютерных приложений, использующих двухмерную и трехмерную графику.
В этой статье я опишу, как можно создать эмулятор Кубика Рубика на OpenGL.

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


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

Безопасная работа с исключениями в C#

Reading time4 min
Views49K
Структурные исключения — один из ключевых механизмов обработки ошибочных (в том числе и собственно исключительных) ситуаций. Ниже перечислены некоторые рекомендации по программированию, повышающие общее качество кода при работе с исключениями на C# и шире — платформе .NET.

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

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

Как выглядит DDoS-атака

Reading time1 min
Views116K
Почти каждый представляет себе, что такое DDoS-атака. Но лучше один раз увидеть, чем сто раз услышать. Сайт VideoLAN на днях подвергся довольно необычной DDoS-атаке. Хотя интенсивность запросов была не очень велика — от 400 до 1600 запросов в секунду, ботнету удалось создать очень большую нагрузку на сервер, так как компьютеры-зомби не просто заходили на одну из страниц сайта, а скачивали дистрибутив VLC-плеера весом в 22 мегабайта. Пиковая нагрузка на серверы доходила до 292 гигабит в секунду. С помощью logstalgia — инструмента, который превращает логи сервера в наглядную анимацию — администраторы сайта сделали и опубликовали на Youtube визуализацию, благодаря которой можно увидеть, как выглядит DDoS-атака:



Фильтрация запросов на уровне DNS

Reading time4 min
Views20K
Начиная с версии 9.8.1 DNS-сервера bind появилась новая возможность — DNS RPZ. Это интересный инструмент, который может оказаться весьма полезным для многих сисадминов. Странно, но в русскоязычном сегменте интернета эта тема совершенно не освещена. Спешу восполнить этот пробел.
Читать дальше →

Information

Rating
Does not participate
Location
Снежинск (Челябинская обл.), Челябинская обл., Россия
Date of birth
Registered
Activity