Search
Write a publication
Pull to refresh
0
max7 @max7read⁠-⁠only

User

Send message

О переборе на примере генерации кроссвордов

Reading time5 min
Views11K
С статье "Алгоритм формирования кроссвордов" были предложены несколько эвристик, которые были реализованы в программе автоматической генерации кроссвордов. Несмотря на то, что предложенные эвристики хорошо проработаны, даже они не позволили за разумное время сгенерировать кроссворд для самой сложной из приведенных сеток:

image
Этот и все последующие рисунки взяты из исходной статьи

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

Пишем бота для MMORPG с ассемблером и дренейками. Часть 1

Reading time4 min
Views36K
Привет, %username%! Итак, продолжим написание нашего бота. Сегодня мы внедрим наш код в игровой процесс (не без помощи ассемблера), а позже позаботимся и о том, что бы его было не так просто найти, ведь наказывают не за то что жульничаешь, а за то что попался. И если быть до конца честным то даже не совсем в сам процесс игры будем его внедрять, да и 1 раз только за весь жизненный цикл.

Но обо всем по порядку, так что жду Вас под катом!

Приподнять завесу тайны

Разработка простой игры в Code::blocks с использованием Direct3D 9

Reading time12 min
Views47K
Хочу рассказать о своем первом опыте в геймдеве. Сразу стоит оговориться, что статья будет чисто технической, поскольку моей целью было всего лишь получение навыков разработки графических приложений, использующих Direct3D, без привлечения высокоуровневых средств разработки игр типа Unity. Соответственно, никаких разговоров о внедрении, монетизации и раскрутке игры также не будет. Статья ориентирована на новичков в программировании приложений Direct3D, а также просто на людей, интересующихся ключевыми механизмами работы подобных приложений. Также в конце привожу список литературы по геймдеву, тщательно отобранный мной из более чем ста книг по программированию игр и компьютерной графики.
Читать дальше →

Ноутбуки Lenovo поставляются с вредоносным ПО Superfish и его CA-сертификатом и приватным ключом в хранилище

Reading time2 min
Views123K
Программа Superfish, которая поставляется с ноутбуками Lenovo Y50, Z40, Z50, G50 и Yoga 2 Pro, представляет из себя типичный Malware, который прослушивает трафик, анализирует поисковые запросы пользователя и вставляет рекламу на страницы сторонних сайтов. Работает это приложение на уровне системы, перехватывая, в том числе, HTTPS-трафик. Для этого, приложение устанавливает CA-сертификат Superfish в хранилище ключей Windows и проксирует весь трафик между хостом и браузером, подменяя сертификат на свой. Поставляется это ПО, как минимум, с июня 2014 года. Первое сообщение об этой программе на форуме Lenovo датировано сентябрем 2014 года.

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

Кабельные телеканалы в США ускоряют фильмы и сериалы, чтобы показать больше рекламы

Reading time2 min
Views29K
Журналисты The Wall Street Journal отмечают, что ряд американских кабельных телеканалов используют специальные приёмы, чтобы немного ускорить воспроизведение фильмов, шоу и сериалов. Выигранное таким образом время тратится на увеличение продолжительности рекламных слотов, что ведёт у увеличению рекламной выручки. Для зрителя телеканала «ускорение» шоу может быть заметно по изменению тонов голосов актёров — они звучат выше, чем при обычной скорости воспроизведения.
Узнать подробности

Мир стремительно становится «on-demand»

Reading time4 min
Views25K


Сразу три свежих новости свидетельствуют об одной и той же тенденции. Во-первых, в Барселоне Uber начал доставлять еду: уже существующая система теперь используется еще и для ситуации «запусти приложение, выбери что-то из ассортимента ресторанов-партнеров, и водитель Uber привезет тебе это через 10 минут». Во-вторых, Amazon теперь предлагает жителям Манхэттена доставку определенных товаров в течение одного часа. В-третьих, стартап Washio, предоставляющий в нескольких американских городах «стирку на заказ» (к клиенту приезжают, забирают его грязную одежду, позже возвращают чистой и поглаженной), ввел ускоренный режим Washio Now: раньше требовалось заблаговременно записываться на конкретное время, а теперь можно нажать кнопку «приезжайте», и машина прибудет в течение часа.

Все это говорит о следующем: модель «хочу это здесь и сейчас», ранее действовавшая для такси и пиццы, стремительно распространяется на другие области. Business Insider, определив в прошлом году on-demand economy как «экономическую активность технологических компаний, отвечающую на потребительские запросы немедленным предоставлением товаров и услуг», обещал ей большое будущее — и его прогноз сбывается на глазах.
Читать дальше →

NAS + SoftetherVPN = универсальный VPN сервер

Reading time4 min
Views70K
Думаю не ошибусь, если предположу, что у любого пользователя периодически возникает необходимость получить доступ к какому-либо сетевому ресурсу (IP-камере, сетевому накопителю, компьютеру, холодильнику и т.п.) внутри домашней или офисной сети через Интернет. Ну и само собой этот доступ должен быть:
А) универсальный, т. е. с любого компьютера или гаджета;
Б) защищенный от несанкционированного доступа нежелательных лиц.

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

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


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

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

Reading time3 min
Views96K

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


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

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

Онлайн-фотоконкурсы запатентованы: тролль требует выплат

Reading time2 min
Views14K
Фонд электронных рубежей совместно с адвокатской конторой Durie Tangri LLP вступились в защиту фотолюбителя, на которого напал патентный тролль.

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

«Часть нашей работы состоит в том, чтобы определять глупые патенты и пытаться избавиться от них, и этот патент один из самых глупых, какие я видел», — сказал юрист EFF Даниэль Назер (Daniel Nazer), член комитета EFF по борьбе с идиотскими патентами.
Читать дальше →

Ликвидация Ассоциации пользователей криптовалют в РФ

Reading time5 min
Views28K
В конце 2013 года группа энтузиастов криптовалют решила самоорганизоваться для более конструктивного взаимодействия и диалога с регулирующими органами Российской Федерации. В декабре 2013 прошло первое собрание учредителей, на котором было принято решение о создании некоммерческой организации — Ассоциации пользователей криптовалют.

Как цели мы себе поставили объединение операторов крипотовалют и консолидацию мнений для взаимодействия с регуляторами РФ, а также помощь в организации правового регулирования в области криптовалют. Также планировалось взаимодействие с аналогичными зарубежными ассоциациями для изучения лучших практик и обмена опытом.
Читать дальше →

Указатели, ссылки и массивы в C и C++: точки над i

Reading time10 min
Views632K
В этом посте я постараюсь окончательно разобрать такие тонкие понятия в C и C++, как указатели, ссылки и массивы. В частности, я отвечу на вопрос, так являются массивы C указателями или нет.

Обозначения и предположения


  • Я буду предполагать, что читатель понимает, что, например, в C++ есть ссылки, а в C — нет, поэтому я не буду постоянно напоминать, о каком именно языке (C/C++ или именно C++) я сейчас говорю, читатель поймёт это из контекста;
  • Также, я предполагаю, что читатель уже знает C и C++ на базовом уровне и знает, к примеру, синтаксис объявления ссылки. В этом посте я буду заниматься именно дотошным разбором мелочей;
  • Буду обозначать типы так, как выглядело бы объявление переменной TYPE соответствующего типа. Например, тип «массив длины 2 int'ов» я буду обозначать как int TYPE[2];
  • Я буду предполагать, что мы в основном имеем дело с обычными типами данных, такими как int TYPE, int *TYPE и т. д., для которых операции =, &, * и другие не переопределены и обозначают обычные вещи;
  • «Объект» всегда будет означать «всё, что не ссылка», а не «экземпляр класса»;
  • Везде, за исключением специально оговоренных случаев, подразумеваются C89 и C++98.


Указатели и ссылки


Указатели. Что такое указатели, я рассказывать не буду. :) Будем считать, что вы это знаете. Напомню лишь следующие вещи (все примеры кода предполагаются находящимися внутри какой-нибудь функции, например, main):

int x;
int *y = &x; // От любой переменной можно взять адрес при помощи операции взятия адреса "&". Эта операция возвращает указатель
int z = *y; // Указатель можно разыменовать при помощи операции разыменовывания "*". Это операция возвращает тот объект, на который указывает указатель

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

Построение графиков в LaTeX/PGFPlots

Reading time13 min
Views104K
image

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

VPN везде и всюду: IPsec без L2TP со strongSwan

Reading time10 min
Views340K
image
достаточно сильный лебедь

Если вы когда-либо искали VPN, который будет работать на десктопах, мобильных устройствах и роутерах без установки дополнительного ПО и перепрошивки роутера, вы, вероятно, выбирали между PPTP и L2TP+IPsec. У протокола PPTP имеются проблемы с безопасностью и прохождением через брандмауеры и NAT, так что в 2015 году его уже использовать не стоит, а использование L2TP излишне, т.к. L2 VPN, по моему мнению, для обычного удаленного доступа не нужен практически никогда.

Удивительно, что в интернете не так-то просто можно найти информацию о настройке чего-то помимо L2TP+IPsec в транспортном режиме, учитывая, что это обширный стек протоколов, который можно конфигурировать буквально как душе угодно, поэтому я попытаюсь устранить такое несовершенство мира.

Небольшое введение в мир IPsec

Вообще говоря, не совсем правильно называть IPsec VPN. IPsec не предназначен для построения «виртуальных частных сетей», а создан для шифрования или защиты от подмены передаваемых по IP данных. Это специальный слой поверх IP, который, в зависимости от режима и настроек, работает по-разному. В отличие от привычного VPN, который создает новый интерфейс в системе, на который вы, как это чаще всего бывает, назначаете IP-подсеть из диапазона частных адресов (т.е. создаете новый сетевой сегмент), и через который маршрутизируется трафик в зашифрованном виде, IPsec просто шифрует трафик магическим образом между «внешними» интерфейсами сервера и клиента.
Читать дальше →

История про realloc (и лень)

Reading time9 min
Views48K

Простой макрос


Все началось с простого макроса: (приблизительный код)
#define ADD_BYTE(C) do {            \
  if (offset == capa) {             \
    if (capa < 16) {                \
      capa = 16;                    \
    } else {                        \
      capa <<= 1;                   \
    }                               \
    buffer = realloc(buffer, capa); \
    assert(buffer != NULL);         \
  }                                 \
  buffer[offset++] = (C);           \
} while(0)


Для тех, кто не знаком с языком программирования C, поясню: этот простой макрос добавляет байт «C» в динамически выделяемый буфер (buffer), размер которого (в байтах) равен capa. Следующая позиция для записи определяется при помощи параметра offset. При каждом заполнении буфера происходит двукратное увеличение его объема (начиная с минимального размера в 16 байт).

Мы добавляем байты в динамический буфер — это одна из наиболее распространенных операций практически в любой программе (для работы со строками, массивами и т. п.).

Но как понять, насколько эффективна стратегия перераспределения?
Читать дальше →

Оплата на счет Яндекс.Денег картой VISA/MasterCard или как заблокировать произвольный кошелек

Reading time5 min
Views87K


Без малого год назад запустил у себя на сайте прием платежей на счет в Яндекс.Деньгах с банковских карт VISA/MasterCard. Без проблем не обошлось, но, в итоге, все заработало.

Недавно, примерно 9 февраля, на на один из кошельков в Яндекс.Деньгах внезапно перестали приходить переводы, сделанные картой. При этом переводы, сделанные Яндекс.Деньгами продолжали исправно приходить.

В чем причина, кто виноват, и как можно (попробовать) заблокировать любой счет в Яндекс.Деньгах для приема средств через VISA/MasterCard — попробуем разобраться под катом
Читать дальше →

Архивирование на магнитную ленту в Veeam Backup & Replication v8: новое для хорошо знакомого старого

Reading time5 min
Views20K
Многие организации используют устройства, работающие с магнитной лентой, в своей инфраструктуре резервного копирования. Магнитная лента была и остается эффективным средством для долгосрочного хранения резервных копий, позволяя реализовать правило «3-2-1» защиты данных. Именно поэтому Veeam продолжает усовершенствовать поддержку ленточных библиотек, о чем и будет мой сегодняшний рассказ.



За подробностями добро пожаловать под кат.

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

ZeroNet — Распределенные сайты через Bittorrent и Bitcoin

Reading time2 min
Views39K

— Стартовое окно ZeroNet

В нынешнее время активно развиваются различные распределенные технологии, ранее уже пояились на свет: распределенные мессенджеры (Tox), распределенные микроблоги (Twister), и теперь дошло дело до полноценных распределенных сайтов.
Читать дальше →

Oculus Rift позволяют взглянуть на мир глазами человека с шизофренией

Reading time2 min
Views21K
Компания Viscira работает над проектом Mindscape: пользователь с помощью очков виртуальной реальности Oculus Rift видит мир глазами человека с позитивными симптомами шизофрении. Цель проекта — не диагностика или лечение болезни, а помощь в её понимании, которая нужна членам семьи пациента, персоналу клиник, студентам медицинских факультетов.

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

Использование альтернативного аллокатора памяти в проекте на C/C++

Reading time4 min
Views18K
Эта статья написана прежде всего для программистов C/C++, использующих в своей работе Visual Studio 2013. Поскольку я, как говорится, totally windows guy, то я не могу оценить полезность этой статьи для программистов, не использующих эту среду в своей работе. Итак.

Не секрет, что стандартный аллокатор new/delete/malloc/free в языке C/C++ не блещет быстродействием. Конечно, всё зависит от реализации, но, если говорить об оной от компании Microsoft, то это факт. Кроме того, стандартная реализация аллокатора обладает еще одним фатальным недостатком — фрагментацией памяти. Если в вашей программе происходят частые выделения/освобождения памяти, вы можете обнаружить, что спустя несколько часов работы ваша программа упала по причине нехватки памяти, хотя свободной памяти еще достаточно — просто в результате фрагментации в пуле аллокатора не осталось свободного участка достаточного размера. (Это, кстати, абсолютно реальный случай, который произошел на одном из проектов, в котором я принимал непосредственное участие.)
И что же делать?

Математическая задача о 100 коробках и спасении заключенных

Reading time7 min
Views150K
Предлагаю читателям «Хабрахабра» перевод публикации «100 Prisoners Escape Puzzle», которую я нашел на сайте компании DataGenetics. Все ошибки по данной статье присылайте, пожалуйста, в личные сообщения.

По условию задачи в тюрьме находится 100 заключенных, каждый из которых имеет личный номер от 1 до 100. Тюремщик решает дать заключенным шанс на освобождение и предлагает пройти придуманное им испытание. Если все заключенные справятся, то они свободны, если хотя бы один провалится — все умрут.


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

Information

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