Search
Write a publication
Pull to refresh
0
0
Александр Бобров @Syra

User

Send message

Зачем нам всем нужен SAT и все эти P-NP (часть вторая)

Reading time10 min
Views24K
В предыдущей части были освещены общедоступные вопросы, касающиеся SAT и P-NP: история проблемы, интуитивные определения классов и задач, указаны основные приложения SAT и основные последствия, в случаи решения P ?= NP (там же можно найти достаточное число ссылок на различный материал для самостоятельного изучения тематики).

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



картинка из статьи Boolean Satisfiability: From Theoretical Hardness to Practical Success (Communications of ACM)

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

Packet crafting как он есть

Reading time14 min
Views121K


Создание пакетов или packet crafting — это техника, которая позволяет сетевым инженерам или пентестерам исследовать сети, проверять правила фаерволлов и находить уязвимые места.
Делается это обычно вручную, отправляя пакеты на различные устройства в сети.
В качестве цели может быть брандмауэр, системы обнаружения вторжений (IDS), маршрутизаторы и любые другие участники сети.
Создание пакетов вручную не означает, что нужно писать код на каком-либо высокоуровневом языке программирования, можно воспользоваться готовым инструментом, например, Scapy.

Scapy — это один из лучших, если не самый лучший, инструмент для создания пакетов вручную.
Утилита написана с использованием языка Python, автором является Philippe Biondi.
Возможности утилиты практически безграничны — это и сборка пакетов с последующей отправкой их в сеть, и захват пакетов, и чтение их из сохраненного ранее дампа, и исследование сети, и многое другое.
Всё это можно делать как в интерактивном режиме, так и создавая скрипты.
С помощью Scapy можно проводить сканирование, трассировку, исследования, атаки и обнаружение хостов в сети.
Scapy предоставляет среду или даже фреймворк, чем-то похожий на Wireshark, только без красивой графической оболочки.
Утилита разрабатывается под UNIX-подобные операционные системы, но тем не менее, некоторым удается запустить ее и в среде Windows.
Эта утилита так же может взаимодействовать и с другими программами: для наглядного декодирования пакетов можно подключать тот же Wireshark, для рисования графиков — GnuPlot и Vpython.
Для работы потребуется права суперпользователя (root, UID 0), так как это достаточно низкоуровневая утилита и работает напрямую с сетевой картой.
И что важно, для работы с этой утилитой не потребуются глубокие знания программирования на Python.
Читать дальше →

Устройство минималистичных посадочных страниц

Reading time7 min
Views45K


Предыдущий перевод (Landing page, которая работает), посвященный дизайну качественных посадочных страниц набрал больше 150 000 просмотров. С тех пор прошло уже много времени и подход к дизайну изменился – все больше становится минималистичных страниц, о которых и пойдет речь в статье.
Читать дальше →

10 правил дзен-программиста

Reading time9 min
Views111K
От переводчика: это перевод статьи Кристиана Глобмайера The Ten Rules of a Zen Programmer. Статья мне понравилась, решил сделать перевод, после окончания перевода загуглил название, нашел вариант перевода: 10 принципов дзен программиста. Отличается от моего, поэтому решил свой вариант перевода все-таки запостить.

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


Одним дождливым утром я сидел за своим столом и думал об эффективной работе. До того, как я начал работать фрилансером, у меня бывало, что я работал много, но никогда не был доволен результатом. Я начал практиковать Дзен в 2006 году. То, что мне пришло в голову через довольно большое время — старые мастера Дзен уже знали сотни лет назад, как сегодняшние программисты должны работать. Хотя я не люблю посты «как быть лучшим программистом», я хочу рассказать о некоторых моих мыслях с того времени. Этот пост будет служить мне напоминанием, но если у вас есть идеи, не стесняйтесь оставлять комментарии.
Читать дальше →

Программирование детей или программирование для детей?

Reading time3 min
Views34K
Из опыта (и интуиции тоже) обучение программированию хочется надежно отнести поближе к отметке 14+.

Почему 14 с плюсом?


Потому, что: раньше — не значит вовремя. На самом деле 12, но в целом лучше c 14-ти…
Да, можно раньше. Но не нужно. Программирование в основном занимается анализом, обработкой и структурированием информации. Как эффективные, осознаваемые механизмы восприятия и взаимодействия с миром – эти качества складываются (созревают) в человеке к 12-14 годам. Вот тогда, изучение программирования становиться естественным и логичным продолжением дальнейшего развития. Не для всех, но для тех, кому оно видится интересным.

Как это оценить? Никак.
В 12-14 лет у человека уже достаточно для этого опыта. Он сделает это самостоятельно (надо только предложить). Программирование – объемная и не самая простая область знаний. Без настоящего (самостоятельного) интереса к нему, программирование быстро становится каторгой. Ещё одной, в дополнение ко всем тем необязательным дисциплинам, которые были скорее навязаны заранее, чем предложены вовремя.

image

То, что информатика (тень программирования) есть в школьной программе начиная с первого класса – лишь следствие крайне буквального применения и без того неуравновешенного, догматического посыла: что «чем раньше, тем лучше».
Читать дальше →

Интервью с Бьерном Страуструпом о языке C++

Reading time12 min
Views83K
image
Считанные часы остались до Нового 2014-го года, в котором в числе прочего всем нам был обещан новый стандарт C++14. Однако он будет не большим самостоятельным обновлением, а лишь доработкой C++11, багфиксом, который придаст текущей версии языка завершенный вид. На этом фоне Уильям Вонг (англ. William Wong) от ресурса electronicdesign.com взял интервью у Бьерна Страуструпа (дат. Bjarne Stroustrup), создателя C++. Беседа затронула несколько тем: от истории разработки C++ и особенностей стандарта C++11 до проблемы обучения этому языку программирования.

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

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

Часть 1. Unboxing VisuMax — фемто-лазера для коррекции зрения

Reading time6 min
Views367K



Другие публикации в этом цикле


Часть 2. Сколько мегабит/с можно пропустить через зрительный нерв и какое разрешение у сетчатки? Немного теории
Часть 3. Знакомьтесь — лазер по имени Amaris. Переезды и первое пробуждение VisuMax
Часть 4.1 Возвращаем зрение. От очков до эксимерного лазера
Часть 4.2 Возвращаем зрение. От очков до эксимерного лазера

Эта статья открывает цикл, посвященный сфере высоких технологий в медицине, а именно в офтальмологии. Я думаю, что хабрасообществу будет интересно увидеть то, что скрывается за кулисами современной офтальмологической клиники. Я думаю, что для многих не секрет, что одним из наиболее эффективных способов коррекции зрения является Femto LASIK-технология. Основная задача фемтосекундного лазера — выкраивание роговичного лоскута — флэпа. Это крайне важный и ответственный этап лазерной коррекции зрения.

Сегодня мы рассмотрим необычный unboxing. Я думаю, что все читатели Хабрахабра уже привыкли к частым обзорам новых телефонов/планшетов/%devicename%. Но именно сегодня мы займемся распаковкой куда более внушительного «гаджета». Это — один из самых новых представителей фемтосекундных лазеров — VisuMax от фирмы Zeiss. Это очень радостное событие для нашей клиники — лазер позволит выполнять коррекцию нарушений рефракции с очень большой точностью по очень многим показаниям. Этой статье предшествовала огромная работа по выбору наиболее подходящего решения для нашей клиники, обучение инженеров, врачей и много чего еще. Сразу хочу предупредить — я врач по образованию, но постараюсь максимально полно раскрыть технические детали и нюансы. Не обижайтесь, если допущу какие-то ошибки — буду рад любым вашим замечаниям.

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

3 предельно простые вещи, которые мы узнали про свою команду

Reading time8 min
Views78K
image

В нескольких топиках меня просили рассказать про нашу команду. А именно – как так получилось, что мы сразу знали, как и что делать в бизнесе, и, казалось, не ошибались. Так вот, мы ни разу не суперлюди. Мы часто ошибаемся, часто ходим по граблям и часто спорим внутри команды.

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

Недавно нашей сети исполнилось 5 лет. Первые два года были просто взрывом: мы стартовали без кредитных средств с одного маленького магазина и как-то вдруг стали российской розничной сетью.
Читать дальше →

Задача изменения голоса. Часть 1. Что такое голос?

Reading time12 min
Views55K
Этим постом мы хотели бы начать цикл статей, посвященных задаче изменения голоса. В зарубежной литературе данную задачу часто именуют термином voice morphing, в отечественной литературе данная задача ещё не получила достаточного освещения как в научных, так и в инженерных кругах. Тема является достаточно обширной и во многом творческой. В результате работы в данном направлении у нас накопился определенный опыт, который мы планируем систематизировать и изложить, а также передать основную суть некоторых алгоритмов.

image

Изменение голоса может преследовать разную цель. Два основных направления, которые тут однозначно можно выделить – это получение реалистичного звучания измененного голоса и получение некоторого причудливо-фантастичного звучания. Неплохих результатов во втором случае вполне можно добиться, обрабатывая речевой сигнал как обычный звук, не заостряя внимание на его особенностях и делая многие допущения. Например, индустрия электронной музыки породила колоссальное количество разнообразных аудио-эффектов и результат их применения к речевому сигналу помогает создать самый невероятный образ говорящего.
В задаче реалистичного изменения голоса применение «музыкальных» (назовем их так) аудио-эффектов может привнести искажения, не характерные для натуралистичного звучания речи. В подобном случае необходимо более точно понимать, из каких звуков состоит речь, как они образуются и какие их свойства являются критическими для восприятия. Проще говоря — необходимо производить анализ сигнала перед его обработкой. При автоматизированной обработке речевого сигнала в реальном времени этот анализ усложняется многократно, т.к. умножается количество неопределенностей, которые надо как-то попытаться разрешить, и сокращается количество применимых алгоритмов.
В ближайших статьях мы рассмотрим варианты простейшей реализации таких эффектов, как изменение пола говорящего и изменение возраста говорящего. Чтобы читатель лучше понимал, какие параметры сигнала будут изменяться, в первых статьях будут затронуты основные вопросы образования звуков речи и способы формального описания речевого сигнала. После этого уже будут обсуждаться конкретные предлагаемые алгоритмы изменения голоса, их сильные и слабые стороны.

P.S.
Добавил дополнительные ссылки на первоисточники

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

КМ в играх

Reading time12 min
Views53K
Я расскажу вам о том, кто же такой комьюнити-менеджер (КМ), чем он занимается и каковы отличия, например, от SMM-специалиста (social media manager). Также вы узнаете об азах управления сообществом и нескольких приемах, которые используют КМы в своей работе. Полезен материал будет и командам разработчиков как небольших, так и крупных проектов, в которых планируется работа с комьюнити. Специально для менеджеров проектов есть раздел о важных ошибках, которые в свое время допустили многие продюсеры в рамках управления игровым проектом. В общем, читать рекомендую всем, кто так или иначе связан с игровой индустрией или просто ею интересуется.


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

250 строк кода, распознающих дату на русском языке

Reading time2 min
Views47K
Около года назад мне понадобилось распознавать даты в тексте, который вводят пользователи. Пришлось немного разобраться в регулярных выражениях и написать функцию, на вход которой поступает текстовая строка, а в результате получается распознанная дата.



Пример и код в jsFiddle.
Читать дальше →

Производящие функции — туда и обратно

Reading time9 min
Views108K
«Производящая функция является устройством, отчасти напоминающим мешок. Вместо того чтобы нести отдельно много предметов, что могло бы оказаться затруднительным, мы собираем их вместе, и тогда нам нужно нести лишь один предмет — мешок».
                                                                                                                                                               Д. Пойа

Введение


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

Идея производящих функций достаточно проста: сопоставим некоторой последовательности <g0, g1, g2, ..., gn> — дискретному объекту, степенной ряд g0 + g1z + g2z2 +… + gnzn +… — объект непрерывный, тем самым мы подключаем к решению задачи целый арсенал средств математического анализа. Обычно говорят, последовательность генерируется, порождается производящей функцией. Важно понимать, что это символьная конструкция, то есть вместо символа z может быть любой объект, для которого определены операции сложения и умножения.
Читать дальше →

OpenVX: стандарт компьютерного зрения

Reading time4 min
Views28K
Автор: Виктор Ерухимов, исполнительный директор Itseez, председатель рабочей группы OpenVX

The Khronos Group 18 ноября 2013 года представила предварительную спецификацию стандарта OpenVX 1.0 для компьютерного зрения. Поскольку Itseez был одним из инициаторов этой деятельности и активно участвовал в создании спецификации, мы решили рассказать про этот стандарт аудитории Хабрахабра.

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

Объектно-ориентированный бизнес: как работает франшиза

Reading time8 min
Views54K
Если сравнивать свой бизнес и франшизу — разница будет примерно как между использованием сторонней библиотеки или написанием собственной. Своя приносит глубокое моральное удовлетворение, сторонняя – работает.

Пример: По данным президента Российской Ассоциации развития франчайзинга из новых бизнесов течение первых 5 лет работы только 14% компаний, открытых по франшизам, закрываются по различным причинам — против 85% закрытых самостоятельных компаний. UPD: тут был пример из детального исследования в США, но в комментариях мы ковыряем источник, не всё так радужно. В России нормальной независимой статистики пока нет, но, как говорят профильные издания, ситуация близка к тому, что франчайзинг переживает второй год в восемь раз чаще. И это, кстати, отлично понимают банки: например, предлагают специальные льготные кредиты для бизнеса, открытого по франшизе.

image
Кусочки из нашего франчбука: полностью готовый «код», который просто надо воплотить.

Но вернёмся к этой объектно-ориентированной модели бизнеса и трём её главным качествам: наследовании, инкапсуляции и полиморфизму. Ну и заодно рассмотрим грабли, по которым мы ходили. В целом, франчайзинг для бизнеса — это примерно то же, что WEB 2.0 для Интернета. Ниже ликбез, почему.
Читать дальше →

Задача о ранце и код Грея

Reading time4 min
Views42K
Не так давно на Хабре была статья «Коды Грея и задачи перебора». Статья эта скорее, математическая, нежели программистская, и мне, как простому программисту, читать её было невыносимо тяжело. Но сама тема мне знакома, поэтому я решил описать её своим взглядом, а так же рассказать о том, как использовал её в решении задачи о ранце.

image
КДПВ: задача о ранце на живом примере

Предыстория


Всё началось 10 лет назад, когда я учился в девятом классе. Я случайно подслушал разговор учителя по информатике, рассказывающего задачку кому-то из старших: дан набор чисел, и ещё одно число — контрольное. Надо найти максимальную сумму чисел из набора, которая не превышала бы контрольное число.

Задача почему-то запала мне в душу. Вернувшись домой, я быстро накатал решение: наивный перебор всех возможных сумм с выбором наилучшего. Сочетания я получал, перебирая все N-разрядные двоичные числа и беря суммы тех исходных чисел, которым соответствуют единицы. Но я с огорчением обнаружил, что при количестве элементов начиная где-то с 30, программа работает очень долго. Оно и не удивительно, ведь время работы такого алгоритма — n*2n (количество сочетаний, умноженное на длину суммы).
Чем же всё закончилось?

Reverse engineering на собеседовании: как мы нанимаем на работу

Reading time11 min
Views134K
Привет. Меня зовут Алексей Маланов, я пять лет проработал руководителем Отдела антивирусных исследований в «Лаборатории Касперского». Хочу поделиться с вами своим опытом найма вирусных аналитиков. Пост, надеюсь, будет интересен и полезен в первую очередь молодым специалистам, которые только собираются сделать первый шаг в карьере. Ну а матерым IT-шникам тоже может быть любопытно, какие же вопросы задают на собеседовании в ЛК. В свое время у меня в команде было несколько десятков человек и нанимали мы постоянно. Я стремился присутствовать на каждом собеседовании лично, чтобы быть уверенным, что человек будет что надо.


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

Как создать орка: краткая инструкция

Reading time2 min
Views49K


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

На КДПВ — представитель орков – это одна из самых древних рас в «Аллодах Онлайн». Они жуткие, могущественные, выносливые. Объединяются в орды для набегов и редко останавливаются на одном месте, чтобы осесть там навсегда. Чаще они строят временные жилища, которые не жалко бросить. Это самая анархичная и свободолюбивая из созданий игрового мира «Аллодов».

Неудивительно, что наши художники, создавая этих персонажей, потрудились на славу. И, конечно, решили создать реальные скульптуры. За помощью обратились к ребятам из Prosto Toys. Если вы играете в “Аллоды Онлайн”, то знаете, что наш орк не огромный мутант, а скорее мускулистый футбольный болельщик: в меру упитанный и в полном расцвете сил. И поэтому модель для создания фигурки выбирали соответствующую: парня в отличной форме, часто бывающего в спортивном зале. Однако из-за его рельефных мышц он оказался не способен принять нужную импульсивную позу. Мастера взяли его за образец, но немного изменили фигурку. Как видите по фото – поза получилась яркой, спина героя выгнута, а мышцы значительно увеличены.

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

Pong на javascript

Reading time2 min
Views22K
Решил поддержать серию постов «Делаем XXX на JS в 30 строк». Взял для примера Pong в приближенному к классическому оформлении:

Вышло не совсем в 30 строк, а целых 38, т.к. логики вышло прилично, а совсем убивать читаемость или сжимать минимизаторами/обфускаторами не хотелось.

В демке:
  • Управление по Up/Down;
  • ИИ противника;
  • Ускорение мяча с каждым отскоком;
  • Обработка клавиатуры, не зависящая от перемещения мяча;
  • Ожидание нажатия клавиш для запуска мяча;
  • Поддержка практически любого размера поля и высоты «игроков»;
  • Ведение статистики.

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

Roguelike/RPG на JavaScript (30 строк кода)

Reading time5 min
Views48K
После серии постов про реализацию простеньких игрушек на JavaScript в 30 строчек, решил попробовать себя в этом «соревновании». Посидев вечер, получилось создать «полноценную» Roguelike/RPG (я не слишком разбираюсь в жанрах, но вышло что-то в этом направлении). Заодно поизучал JavaScript (до этого на нем никогда не писал, как-то все C++ балуюсь).

image

Особенности:
  • Случайно генерируемый мир
  • Прокачка персонажа
  • 3 вида врагов и финальный босс
  • Инвентарь с бутылочками зелья и магазин для их пополнения

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

Сокобан на Javascript в 30 строк

Reading time1 min
Views17K
Всем привет, решил приобщиться к общему безумию. В 30 строк уже написали почти все, что могли, но старого доброго сокобана я не нашел (возможно, плохо искал), так что хочу восполнить этот пробел.



Ссылка на fiddle
Читать дальше →

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity