Как стать автором
Обновить
41
0.1
Роман @WNeZRoS

Разработчик

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

Мобильная связь в Европах

Время на прочтение7 мин
Количество просмотров38K
Я как-то писал о своём выборе роуминговых опций наших сотовых операторов. Тогда я остановился на «Ноль без границ» от МТС для входящих и на тарифе «Вокруг света» от Мегафона для исходящих и интернета. Но уже прошло три года, многое изменилось. Решил задокументировать нынешнее состояние дел.

Для начала — почему только Европа. Тут всё просто — я обычно езжу в отпуск в Европу. Не так часто, как некоторые ездят, но сильно чаще, чем сам езжу в другие части света.
Почему вообще возник такой вопрос, почему не купить местную симкарту в стране пребывания? Во-первых, туристу это не всегда возможно. Во-вторых, туристу это не всегда выгодно, особенно если приехал на пару дней. Но если я в стране на неделю и больше, то местную симкарту стараюсь приобрести.
DontPanicCartoon580_39474a
Читать дальше →
Всего голосов 31: ↑27 и ↓4+23
Комментарии41

Подводные камни WPF

Время на прочтение20 мин
Количество просмотров81K
Каждый, кто достаточно долгое время разрабатывал приложения с использованием WPF, наверное, замечал, что этот фреймворк далеко не так прост в использовании, как может показаться на первый взгляд. В этой статье я попытался собрать некоторые наиболее типовые проблемы и способы их решения.
Читать дальше →
Всего голосов 45: ↑44 и ↓1+43
Комментарии21

Процедура удаления «антивирусного» ПО Baidu

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

Что за байда!


Китайский антивирус «Baidu» распространяется вирусными методами malware/adware, устанавливается вне зависимости от работы других антивирусов, в результате конфликт антивирусов порождает чрезмерное замедление работы ОС Windows.
Удаление ПО Baidu затруднено из-за того, что штатные программы удаления существуют только для двух компонент, драйверы уровня ядра ими не удаляются, более того, при следующей загрузке компьютера это ПО устанавливается повторно. В то же время удалить драйверы байды сложно из-за того, что они блокируют запись в «свои» ветки реестра и блокируют доступ к своим файлам.

Я написал простую инструкцию по полному удалению вредной Байды из Windows 7 и 8 без использования загрузочного носителя, она предназначена для использования техниками по обслуживанию компьютеров («эникейщиками») и подходит любому более-менее опытному пользователю.

Инструкция особенно актуальна для 64-битных версий Windows, поскольку в них не работает AVZ (точнее, нет 64-битного драйвера AVZ Guard).

Инструкция
Всего голосов 37: ↑33 и ↓4+29
Комментарии52

Удобоваримый вызов Java методов из нативного кода

Время на прочтение7 мин
Количество просмотров18K
Существует довольно много приложений под Android, которые совмещают C++ и Java код. Где Java выступает оберткой/прослойкой, а C++ выполняет всю грязную работу. Пожалуй, ярким примером могут служить игры. В связи с этим часто приходится вызывать Java код из нативного для доступа к системным свойствам и плюшкам, которые предоставляет система (переключится на другую активность, послать или скачать что-либо из интернета). Причин много, а проблема одна: каждый раз приходится писать в лучшем случае 5 строчек кода и помнить, какую сигнатуру функции нужно запихнуть в параметр. Потом еще нужно перевести эти параметры в нужный тип. Стандартный пример из туториалов:

long f (int n, String s, float g); 

Строка-сигнатура для данного метода будет (ILjava/lang/String;F)J.

Вам удобно это все запоминать? А переводить С-строки в jstring? Мне — нет. Мне хочется писать:

CallStaticMethod<long>(className, “f”, 1, 1.2f); 

Подробности под катом
Всего голосов 34: ↑33 и ↓1+32
Комментарии15

Опыт разработки под Android Wear

Время на прочтение11 мин
Количество просмотров16K
Спешу поделиться с коллегами накопленным опытом при разработке для Android Wear.

Все важные моменты проще всего показать на примере приложения, которое показывает уровень заряда батареи на часах и смартфоне.
Читать дальше →
Всего голосов 12: ↑8 и ↓4+4
Комментарии8

Делаем отгружаемые сборки: взаимодействуем между доменами без маршаллинга

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


Ссылка на проект в GitHub: DotNetEx

На множественных ресурсах время от времени задается вопрос. Можно ли сделать отгружаемые сборки с текущего домена? Так, чтобы попользовался и «давай, до свидания!»? Везде и всегда ответ, который давался – это «нет». Ведь единственное, что можно выгрузить – это домен. Соответственно, если хочется наладить отгрузку, сборку надо помещать в домен, и налаживать между доменами взаимодействие через сериализуемые типы. А это — очень медленное взаимодействие. А мы скажем так. Можно. С ньюансами. Загружать мы будем также в отдельный домен. Но отменим сериализацию при вызове методов между доменами.

Вопросы, которые мы будем решать:
  • Создание домена с возможностью отдачи объекта из домена в родительский
  • Выгрузка сборки

Читать дальше →
Всего голосов 17: ↑15 и ↓2+13
Комментарии22

О глупости умных людей

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


Для затравки — простая математическая загадка. Бейсбольный мяч и бита вместе стоят 1 доллар и 10 центов. При этом бита стоит на 1 доллар дороже мяча. Сколько стоит мяч?
Читать дальше →
Всего голосов 179: ↑155 и ↓24+131
Комментарии347

Конвертер аудио / видео файлов FFmpeg

Время на прочтение6 мин
Количество просмотров21K
1 Введение

Каждый пользователь хотя бы раз использовал компьютер для просмотра фильмов или прослушивания музыки. Большинство из Вас знает о существова­нии различных форматов как аудио-, так и видеоинформации. Каждый формат предназначен для своей цели.
Так MP4 удобен для воспроизведения на мобильных устройствах за счет высокой степени сжатия. Файлы формата MKV имеют огромные размеры, но вместе с тем высококачественное видео и звук. Формат AVI даже не самостоя­тельный формат, а оболочка для упаковки медиаданных других форматов. Строго говоря, MKV — это тоже контейнер, основанный на двоичном аналоге языка XML [1]. Это позволяет расширять формат без утери совместимости со старыми программами.
Список можно продолжать долго. Часто возникает необходимость пере­вести, например, фильм из одного формата в другой. Например это может пона­добится для просмотра видео на мобильном телефоне или DVD-плеере, кото­рые не поддерживают воспроизведение исходного формата.
В этом случае Вам пригодится простой, но вместе с тем необычайно мощный инструмент — конвертер FFmpeg.
Читать дальше →
Всего голосов 15: ↑15 и ↓0+15
Комментарии2

Грамматика арифметики или пишем калькулятор на ANTLR

Время на прочтение8 мин
Количество просмотров34K
Когда встает вопрос о том, как вычислить арифметическое выражение, то, наверное, многие думают от обратной польской нотации. Поэтому в данном топике хотелось бы рассказать о том, как можно составить грамматику арифметического выражения и построить по ней лексический и синтаксический анализатор при помощи ANTLR.
Читать дальше →
Всего голосов 4: ↑4 и ↓0+4
Комментарии14

Первый релиз Visual Studio Tools for Unity 1.9 после покупки SyntaxTree

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


Была новость о том, что Microsoft покупает SyntaxTree вместе с UnityVS. Всё гадал, когда же бесплатная версия появится.

И вот, не так давно вышел релиз сего удобного инструмента, естественно бесплатно, как и обещали в MS.

Visual Studio 2010 Tools for Unity
Visual Studio 2012 Tools for Unity
Visual Studio 2013 Tools for Unity
Читать дальше →
Всего голосов 34: ↑32 и ↓2+30
Комментарии8

Алгоритм «diamond-square» для построения фрактальных ландшафтов

Время на прочтение12 мин
Количество просмотров117K
Карта игры Minecraft, созданная с помощью приложения CartographДумаю, многие знакомы с весьма необычной игрой Minecraft (справа — пример сгенерированной в ней карты), в которой игрок находится на (практически) бесконечной поверхности Земли и может исследовать окружающий мир с минимальными ограничениями.

Как же автору игры, Notch'у, удалось добиться подобного сходства его случайных «миров» с земными просторами? В этом топике я как раз и рассмотрю один из способов построить искусственный ландшафт такого рода (и вскользь упомяну пару других способов), а также расскажу о моем небольшом усовершенствовании этого алгоритма, позволяющем значительно увеличивать размеры ландшафта без заметных потерь в производительности.

Внутри вас ждет несколько схем и красивых картинок, довольно много букв и ссылка на пример реализации алгоритма.

Читать дальше →
Всего голосов 148: ↑147 и ↓1+146
Комментарии58

Полезные идиомы многопоточности С++

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

Введение

Данная статья является продолжением цикла статей: Использование паттерна синглтон [1], Синглтон и время жизни объекта [2], Обращение зависимостей и порождающие шаблоны проектирования [3], Реализация синглтона в многопоточном приложении [4]. Сейчас я хотел бы поговорить о многопоточности. Эта тема настолько объемна и многогранна, что охватить ее всю не представляется возможным. Здесь я заострю внимание на некоторых практичных вещах, которые позволят вообще не думать о многопоточности, ну или думать о ней в крайне минимальном объеме. Если говорить точнее, то думать о ней только на этапе проектирования, но не реализации. Т.е. будут рассмотрены вопросы о том, как сделать так, чтобы автоматически вызывались правильные конструкции без головной боли. Такой подход, в свою очередь, позволяет значительно уменьшить проблемы, вызванные состояниями гонок (race condition, см. Состояние гонки [5]) и взаимными блокировками (deadlock, см. Взаимная блокировка [6]). Этот факт уже сам по себе представляет немалую ценность. Также будет рассмотрен подход, который позволяет иметь доступ к объекту из нескольких потоков одновременно без использования каких-либо блокировок и атомарных операций!
Еще...
Всего голосов 71: ↑66 и ↓5+61
Комментарии46

Десять возможностей C++11, которые должен использовать каждый C++ разработчик

Время на прочтение12 мин
Количество просмотров535K
В данной статье рассматривается ряд возможностей С++11, которые все разработчики должны знать и использовать. Существует много новых дополнений к языку и стандартной библиотеке, эта статья лишь поверхностно охватывает часть из них. Однако, я полагаю, что некоторые из этих новых функций должны стать обыденными для всех разработчиков С++. Подобных статей наверное существует много, в этой я предприму попытку составить список возможностей, которые должны войти в повседневное использование.

Сегодня в программе:
  • auto
  • nullptr
  • range-based циклы
  • override и final
  • строго-типизированный enum
  • интеллектуальные указатели
  • лямбды
  • non-member begin() и end()
  • static_assert и классы свойств
  • семантика перемещения
Читать дальше →
Всего голосов 133: ↑125 и ↓8+117
Комментарии115

Смешивание текстур ландшафта

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


В данной статье я расскажу об алгоритме смешивания текстур, который позволяет привести внешний вид ландшафта ближе к естественному. Этот алгоритм легко может быть использован как в шейдерах 3D игр, так и в 2D играх.

Статья рассчитана на начинающих разработчиков игр.
Читать дальше →
Всего голосов 243: ↑237 и ↓6+231
Комментарии27

Clipping magic: онлайн-инструмент для вырезания картинки из фона на базе технологий искусственного интеллекта

Время на прочтение2 мин
Количество просмотров535K
Открывшийся недавно в режиме публичной альфы сайт Clippingmagic.com предназначен для решения всего одной задачи — удаления фона изображения, но зато делает он это весьма неплохо. В отличие от большинства подобных инструментов, он имеет удобный и простой интерфейс и при этом результат получается очень приличным. Пожалуй, лучше и аккуратнее можно сделать только в настоящем большом редакторе вроде Photoshop или Gimp, потратив при этом гораздо больше времени.



Алгоритм работы очень прост: загружаем картинку, выделяем зелёным объект, а красным — фон, затем несколькими штрихами исправляем оставшиеся огрехи. Весь процесс занимает буквально минуту-другую и не требует особой твёрдости руки. Изображение можно масштабировать, при этом размер кисти не меняется, позволяя обработать мелкие детали. Результат можно сохранить в формате PNG.
Читать дальше →
Всего голосов 68: ↑56 и ↓12+44
Комментарии55

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

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

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

В общем, опять пачка классических методологических ошибок при бенчмарке. Кому интересно, как такие ошибки НЕ делать, подробности, детальный разбор полетов, оптимизация в еще несколько раз и, главное, исходники под катом.
Читать дальше →
Всего голосов 166: ↑153 и ↓13+140
Комментарии60

Шпаргалка по графическому дизайну Android-приложений

Время на прочтение1 мин
Количество просмотров21K
Разработчик и дизайнер Питер Ноэджл опубликовал «Шпаргалку по графическому дизайну для Android». В ней практически все, что вам необходимо знать для создания графических элементов приложений и оформления страниц в Google Play.

Тут описаны размеры, DPI, цвета, соглашения по именам и много другой важной информации.

Кроме того даются ссылки на все важные ресурсы, такие как стандартные гайдлайны и инструменты, шаблоны и заготовки для Photoshop.

Всего голосов 32: ↑23 и ↓9+14
Комментарии10

GamePlay 3D Framework — лёгкий старт в кроссплатформенную разработку 3D игр

Время на прочтение13 мин
Количество просмотров32K
Доброе время суток, уважаемые хабражители!

Прослушав курс по компьютерной графике в университете и вдоволь наигравшись с OpenGL, я решил, что пора бы уже двинуться дальше и попробовать себя в разработке игр. Писать с нуля свой движок, прямо скажем, не очень-то хотелось. Главной целью было скорее посмотреть как это делается, вынести уроки и может быть создать что-то на базе выбранного движка. Беглый поиск показал, что с открытыми кроссплатформенными движками немного туго. У одного проблемы с Linux, Windows или Mac OS, у другого со свежими версиями мобильных ОС, третий почти заброшен… Но я-таки наткнулся на один очень привлекательный экземпляр, о котором и хочу поведать в этой статье.

gameplay

Имя этому фреймворку — GamePlay 3D. Информации о нём на просторах интернета не очень много, чего уж говорить про рунет. Это open source фреймворк написанный на C++ для программирования игр на C++ со всеми вытекающими из этого достоинствами и недостатками. Авторы проекта позиционируют его как универсальный инструмент, эдакий аналог cocos2d для 3D игр. Чтобы начать писать на GamePlay 3D не нужно обладать глубокими знаниями OpenGL, GLSL или математики 3D графики, однако все мы понимаем, что для достижения хорошего результата от этого никуда не деться. Подробности и небольшой пример для старта под катом.

Читать дальше →
Всего голосов 31: ↑29 и ↓2+27
Комментарии13

Pocketsphinx. Распознавание речи и голосовое управление в Linux

Время на прочтение11 мин
Количество просмотров124K
— Всё в порядке, Лёня?
Динамики отрегулированы на максимум, я морщусь, отвечаю:
— Да. Тише звук.
— Звук — тише, — соглашается «Виндоус-Хоум», — тише, тише…
— Хватит, Вика
С.Лукьяненко, «Лабиринт отражений»

Введение


В 1997-ом году Лукьяненко пророчил для десктопа сочетание CLI и голосового управления. Однако сейчас голосовое управление — достаточно узкая ниша.
Голосовое управление — взаимодействие с устройством при помощи звуковых команд. Не путайте это понятие с распознаванием речи. Для голосового управления достаточно, чтобы устройство реагировало на единственную нужную команду (ведь ваша собака не может работать машинисткой?). Распознавание речи — гораздо более глобальная проблема: в этом случае устройство должно преобразовывать в текстовый формат все слова, произнесенные вами. Как легко догадаться, распознавание речи на данный момент реализовано поверхностно относительно человеческих возможностей.
Функционал, рассмотренный в статье, может быть применен, к примеру, для организации модного сейчас «умного дома» или просто управления компьютером. Честно говоря, для описания управления компьютером хватило бы пары абзацев, но я попытаюсь показать вам основы работы с CMU Sphinx.
Кстати, процентов 70 описанного здесь подойдет и пользователям Windows.
Научим Linux слушаться?
Всего голосов 72: ↑63 и ↓9+54
Комментарии37

Видеообзор ультрабука (планшета) Lenovo IdeaPad Yoga-13

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


Lenovo IdeaPad Yoga 13 — это гибрид ультрабука и планшета, который может похвастаться сенсорным 13.3-дюймовым IPS дисплеем с разрешением 1600х900. Работают аппараты на низковольтных процессорах Intel Core третьего поколения (i3/i5/i7), могут нести на борту от 4 до 8 Гб оперативной памяти и 128 или 256 Гб твердотельный накопитель для хранения данных.

Главная особенность IdeaPad Yoga-13 — это механизм превращения его из планшета в ультрабук и обратно. Дисплей раскрывается на любой угол до 360 градусов, что позволяет использовать аппарат не только в виде планшета и ультрабука, но и в промежуточных конфигурациях.

Работает машинка под управлением Windows 8 и представляет собой довольно интересный инструмент как для создания контента, так и для его потребления.
Всего голосов 24: ↑18 и ↓6+12
Комментарии22

Информация

В рейтинге
3 828-й
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Дата рождения
Зарегистрирован
Активность

Специализация

Software Developer, Game Developer
Lead
C#
MVVM
WPF
Software development
C++
Game Development
AR and VR development
Code Optimization