В первой своей статье, посвящённой конвертерам, я описал способ использование конвертеров в качестве расширения разметки. Продолжая тему конвертеров, хотелось бы рассказать о параметрах конвертера.
Vasiliy @JMS
Пользователь
Сравнение строк в C# (по умолчанию)
10 min
56KЧасто бывает, что мы соединяем 2 коллекции или группируем коллекцию при помощи LINQ to Objects. При этом происходит сравнение ключей, выбранных для группировки или связывания.
К счастью, стоимость этих операций равна O(n). Но в случае больших коллекций нам важна эффективность самого сравнения. Если в качестве ключей выбраны строки, то какая из реализаций сравнения будет использована по умолчанию, подходит ли эта реализация для ваших строк и можно ли, указав IEqualityComparer<string> явно, сделать эту операцию быстрее?
Как же выбирается реализация компаратора, если пользователь не указал её явно?
К счастью, стоимость этих операций равна O(n). Но в случае больших коллекций нам важна эффективность самого сравнения. Если в качестве ключей выбраны строки, то какая из реализаций сравнения будет использована по умолчанию, подходит ли эта реализация для ваших строк и можно ли, указав IEqualityComparer<string> явно, сделать эту операцию быстрее?
clients.Join(orders,
c => c.Name,
o => o.ClientName,
(c, o) => CreateOrederDto(c, o));
Как же выбирается реализация компаратора, если пользователь не указал её явно?
+28
Анализ хостеров и их тарифов на виртуальные серверы
4 min
25KПривет, меня зовут Сергей, я редактор Хостинг Кафе. Каждый день я с утра до ночи пишу хостерам и задаю им много вопросов о них самих и их тарифах. Совсем недавно количество хостеров, которые представлены в каталоге HOSTING.cafe превысило 250, поэтому я решил сделать исследование о хостерах и их тарифах на виртуальные серверы, систематизировав информацию по различным параметрам. Если представленный материал окажется интересным, можно провести аналогичные исследования для виртуального хостинга, SSL сертификатов, лицензий и места для резервных копий.


+10
Как продать приложение, которое не приносит прибыль? И сколько оно стоит?
5 min
52KДавайте посмотрим правде в глаза — заработать на инди-приложении становится все сложнее. Под катом я расскажу, как можно продать ваше приложение, если оно перестало приносить прибыль, и сколько можно получить. В долларах :)
+23
Как я написал игру за 3 года
3 min
55KНа днях я закончил создание своей небольшой игры и хочу описать вам путь, по которому я прошел. Хочу сразу оговориться, что моей главной целью было получение знаний и опыта в создании 3D игр для Android, и этого я успешно добился. По этой же причине я не использовал готовые движки.

Я начинал с создания карт для Counter-Strike: сделал карту с автобусной остановкой из своего города, пытался сделать школу. Круто же постреляться в родной школе? Это дало мне базовое понимание из чего состоит виртуальный мир.
Несколько позже я начал проходить туториалы по OpenGL на Android. Радовался как ребенок, когда впервые на экране телефона появился заветный треугольник!

*Картинка взята отсюда
Затем получился кубик с наложенной текстурой камня и появились мысли о создании своей простейшей игры. Перенос игры Portal на Android казался вполне достижимой задачей для новичка. Я сильно недооценивал предстоящий объем работ. Хорошо, что на то время уже существовал Portal в Google Play, и я успел создать только одну комнату.
Тогда я решил сделать что-то попроще и, увидев в Футураме бильярд без гравитации, решил его по-быстрому воплотить (пока другие не успели). Оказалось, что я по-прежнему недооценивал объем работ. И, кстати, бильярд без гравитации таки успели сделать раньше меня.

Я начинал с создания карт для Counter-Strike: сделал карту с автобусной остановкой из своего города, пытался сделать школу. Круто же постреляться в родной школе? Это дало мне базовое понимание из чего состоит виртуальный мир.
Несколько позже я начал проходить туториалы по OpenGL на Android. Радовался как ребенок, когда впервые на экране телефона появился заветный треугольник!

*Картинка взята отсюда
Затем получился кубик с наложенной текстурой камня и появились мысли о создании своей простейшей игры. Перенос игры Portal на Android казался вполне достижимой задачей для новичка. Я сильно недооценивал предстоящий объем работ. Хорошо, что на то время уже существовал Portal в Google Play, и я успел создать только одну комнату.
Тогда я решил сделать что-то попроще и, увидев в Футураме бильярд без гравитации, решил его по-быстрому воплотить (пока другие не успели). Оказалось, что я по-прежнему недооценивал объем работ. И, кстати, бильярд без гравитации таки успели сделать раньше меня.
+71
Фишки XAML-разработчика: встраиваемые конвертеры
4 min
8.3KTutorial
Разберём интересный и нестандартный сценарий использования конвертеров — Inline Converter.


+12
Real-Time игры и кроссдоменное соединение
4 min
11KВ прошлом месяце на главной странице Google красовалась ссылка на игру Lightsaber Escape. К сожалению, поиграть мне в нее не удалось, но создать нечто похожее захотелось.
Немного истории. Мне в детстве очень нравилась приставка Nintendo Will, именно тем, что ты управляешь движениями и благодаря этому можно сильнее погрузится в атмосферу игры. Для своей игры я тоже хотел использовать данную идею. Контроллером должен был стать телефон с гироскопом (сейчас он есть во многих), а в качестве экрана любое устройство с браузером, поддерживающим Web Socket. В качестве прототипа для игры был выбран «Paint».
Об идее
Немного истории. Мне в детстве очень нравилась приставка Nintendo Will, именно тем, что ты управляешь движениями и благодаря этому можно сильнее погрузится в атмосферу игры. Для своей игры я тоже хотел использовать данную идею. Контроллером должен был стать телефон с гироскопом (сейчас он есть во многих), а в качестве экрана любое устройство с браузером, поддерживающим Web Socket. В качестве прототипа для игры был выбран «Paint».
+12
STM32F4: GNU AS: Мигаем светодиодом (Оживление) (Часть 2)
14 min
31KTutorial
Это вторая публикация на тему программирования микроконтроллеров STM32 на языке ассемблера, первая часть находится Здесь.
Если у вас возникли вопросы или пожелания, но вы не можете здесь писать то переходите в VK: vk.com/topic-200545792_46641967
Дополнительно, обращаю внимание что сейчас (2021 год) написан небольшой редактор для программирования на ассемблере, в котором так же был написан код аналогичной функциональности, но с использованием «плюшек и удобных подушек» редактора, посмотреть конкретно про написание мигалки в нем можно в статье Assembler Editor Plus: Использование модулей (возможно в процессе прочтения нужно будет пройти еще по нескольким ссылкам где будет описано про функциональность редактора в общем, и как выполняется создание проекта, компиляция, прошивка, отладка)
Итак, в прошлой статье мы создали инструмент при помощи которого, можно произвести компиляцию и компоновку (линковку) проекта на языке ассемблера. Теперь напишем программу за работой которой можно наблюдать.
Если у вас возникли вопросы или пожелания, но вы не можете здесь писать то переходите в VK: vk.com/topic-200545792_46641967
Дополнительно, обращаю внимание что сейчас (2021 год) написан небольшой редактор для программирования на ассемблере, в котором так же был написан код аналогичной функциональности, но с использованием «плюшек и удобных подушек» редактора, посмотреть конкретно про написание мигалки в нем можно в статье Assembler Editor Plus: Использование модулей (возможно в процессе прочтения нужно будет пройти еще по нескольким ссылкам где будет описано про функциональность редактора в общем, и как выполняется создание проекта, компиляция, прошивка, отладка)
Итак, в прошлой статье мы создали инструмент при помощи которого, можно произвести компиляцию и компоновку (линковку) проекта на языке ассемблера. Теперь напишем программу за работой которой можно наблюдать.
+11
Пишем правильный манифест для сайта
3 min
98KДумаю, многие знают о возможности добавления иконки сайта на рабочий стол мобильного устройства. Это удобно и причины могут быть разные (нету мобильного приложения, предоставляющего туже информацию, либо вы хотите сразу открыть определенную страницу сайта и т.д.). За некоторые свойства того, как будет отображаться сайт и как будет выглядеть иконка после добавления и отвечает файл манифеста.
Манифест для сайта – это простой JSON-файл, который позволяет вам настроить следующие вещи:
1. Какая будет иконка у пользователя, после того как он добавит ваш сайт на рабочий стол
2. Как будет запускаться ваш сайт (с адресной строкой, без нее или в полноэкранном режиме)
3. Splash screen
4. Цветовую тему
5. Ориентацию экрана
6. Начальный url
и многое другое
Манифест для сайта – это простой JSON-файл, который позволяет вам настроить следующие вещи:
1. Какая будет иконка у пользователя, после того как он добавит ваш сайт на рабочий стол
2. Как будет запускаться ваш сайт (с адресной строкой, без нее или в полноэкранном режиме)
3. Splash screen
4. Цветовую тему
5. Ориентацию экрана
6. Начальный url
и многое другое
+21
STM32F4: GNU AS: Прерывания, Системный таймер (SysTick) (Часть 6)
10 min
14KTutorial
Прошлые части публикации:
STM32F4: GNU AS: Программирование на ассемблере (Часть 1)
STM32F4: GNU AS: Мигаем светодиодом (Оживление) (Часть 2)
STM32F4: GNU AS: Мигаем светодиодом (Версия для STM32F4 Discovery, Оптимизация) (Часть 3)
STM32F4: GNU AS: Настраиваем среду компиляции (Часть 4)
STM32F4: GNU AS: Настройка тактирования микроконтроллера (Часть 5)
STM32F4: GNU AS: Мигаем светодиодом (Оживление) (Часть 2)
STM32F4: GNU AS: Мигаем светодиодом (Версия для STM32F4 Discovery, Оптимизация) (Часть 3)
STM32F4: GNU AS: Настраиваем среду компиляции (Часть 4)
STM32F4: GNU AS: Настройка тактирования микроконтроллера (Часть 5)
обсуждение этой и других статей цикла: vk.com/topic-200545792_46642273
В первых публикациях — мы тактировали микроконтроллер от внутреннего тактового генератора (HSI)… ну если быть совсем точным, то мы вообще не настраивали тактирование микроконтроллера, и пользовались тем состоянием которое было у микроконтроллера при старте (включении питания, сбросе). Для первых программ это вполне допустимо, но для будущих проектов этого не достаточно, поэтому в пятой части публикации я предложил модуль настройки тактирования микроконтроллера (sysclk) на его «родную» (определенную производителем) частоту в 168 МГц.
Теперь организуем задержку на заданное количество миллисекунд при помощи системного таймера (SYSTICK).
+10
Миссия невыполнима: геолокация на Android без сжирания батарейки
10 min
80KПользователь: это невозможно, GPS съест батарейку
Джуниор: это возможно, используй Geofences
Сеньор: есть варианты и получше

На картинке сначала в одну, а потом в другую сторону одновременно с одним человеком «прогулялись» 6 одинаковых телефонов. Но какой разный результат!
+38
Система плагинов и модулей в Unreal Engine 4
5 min
43KTutorial

Здравствуйте, меня зовут Дмитрий. Я занимаюсь созданием компьютерных игр на Unreal Engine в качестве хобби. Сегодня я расскажу, как создать свой модуль, а потом, как создать плагин в Unreal Engine 4.
+19
Добавляем в игру мультиплеер с помощью Node.JS и Frida. Часть 1
6 min
19KTutorial
Recovery Mode

На Хабре уже есть пару упоминаний об инструменте Frida («Frida-node или немножко странного кода», «Точки соприкосновения JavaScript и Reverse Engineering»). В одной статье уже упоминается использование Frida на практике, однако почти везде инструмент используют как фреймворк для реверс-инжиниринга и исследования функционала программ (может даже взлом).
Я же хочу рассказать о процессе превращения одной любимой для меня однопользовательской игрушки в полноценную, многопользовательскую.
+11
+36
Фишинговые приложения для Вконтакте на Google Play
2 min
17KПару месяцев назад лаборатория Каспеского опубликовала статью о фишинге аккаунтов ВК в Google Play, но не рассказали как это реализовано и почему такие приложения задерживаются в маркете. В их статье говорилось о том, что около 1 миллиона пользователей могли стать жертвами фишинга.
Примерно те же приложения я реверсила еще весной. Я тогда поспорила с другом, что в маркете есть вредоносные приложения. Вредоносные приложения найти не получилось, нашлись только фейки для “Вконтакте”. Но возможно, просто мало искала. Но сейчас и их в маркете найти уже не удалось, скорее всего они были удалены, после обнаружения Лабораторией Касперского.
Примерно те же приложения я реверсила еще весной. Я тогда поспорила с другом, что в маркете есть вредоносные приложения. Вредоносные приложения найти не получилось, нашлись только фейки для “Вконтакте”. Но возможно, просто мало искала. Но сейчас и их в маркете найти уже не удалось, скорее всего они были удалены, после обнаружения Лабораторией Касперского.
+9
Общая схема построения алгоритмов на примере кубика Рубика
3 min
22K
+13
Большой ликбез: распределённые системы хранения данных в практической привязке для админов среднего и крупного бизнеса
14 min
59KTutorial
Современные сети и дата-центры бодро шагают к полной и тотальной программно-определяемой схеме, когда фактически неважно, какое железо вы напихаете внутрь, всё будет на софте. У сотовых операторов это началось с того, что им не хотелось ставить по 20 антенн на дом (у них узлы переконфигурируются, меняют частоты и параметры просто обновлением конфига), а в дата-центрах сначала с виртуализации серверов, которая теперь мастхэв, а потом продолжилось и виртуализацией хранилищ.
Но вернёмся в Россию 2015 года. Ниже я покажу, как «из подручных средств» (x86 машин и любых «хранилок») сэкономить денег, повысить надёжность и решить ещё ряд типовых для сисадминов среднего и крупного бизнеса задач.
На этой схеме видны обе архитектуры, о которых пойдет речь. SDS — два красных контроллера в центре с любым бекэндом, от внутренних дисков до FC полок и облаков. И виртуальный SAN, на схеме Hyper-converged storage.
Самое главное:
Заодно рассмотрим пару типовых задач с конкретным железом и ценами.
Но вернёмся в Россию 2015 года. Ниже я покажу, как «из подручных средств» (x86 машин и любых «хранилок») сэкономить денег, повысить надёжность и решить ещё ряд типовых для сисадминов среднего и крупного бизнеса задач.

На этой схеме видны обе архитектуры, о которых пойдет речь. SDS — два красных контроллера в центре с любым бекэндом, от внутренних дисков до FC полок и облаков. И виртуальный SAN, на схеме Hyper-converged storage.
Самое главное:
- Вам плевать, что за железо стоит: диски, SSD, зоопарк производителей, старые и новые модели… — всё это отдаётся оркестирующему софту, и он приводит это к той виртуальной архитектуре, которая вам нужна в итоге. Грубо говоря, объединяет в один том или позволяет нарезать как вам удобно.
- Вам плевать, какие интерфейсы у этих систем. SDS построится сверху.
- Вам плевать, какие функции ваши хранилки могли, а какие не могли (опять же, теперь они могут то, что надо: решает софт сверху).
Заодно рассмотрим пару типовых задач с конкретным железом и ценами.
+20
Важнейшее из искусств: как мы реализовали проигрывание видео в Облаке Mail.Ru
9 min
19K
Некоторое время назад в Облаке Mail.Ru появилась возможность проигрывания видеофайлов. Уже в самом начале работы над этим функционалом мы решили, что будем разрабатывать этакий швейцарский нож: требовалась возможность проигрывать любые видеоформаты и функционирование на всех устройствах, где доступно Облако. Загруженные в Облако видеофайлы можно условно разделить на две категории: «фильмы/сериалы» и «видеоролики пользователей», которые люди снимают на телефоны и видеокамеры — для этого случая особенно характерно разнообразие форматов и кодеков. Без предварительной обработки просмотреть все это на любом устройстве невозможно, например, из-за отсутствия нужного кодека или же размер файла окажется слишком большим.
В этой статье я расскажу о том, как устроено проигрывание видеофайлов в Облаке Mail.Ru и каким путем мы шли, чтобы сделать воспроизведение в Облаке «всеядным» на вход и поддержать максимальное число устройств на выходе.
+35
Видео докладов Badoo с конференции Highload 2015
1 min
13KНаконец-то у нас появились видео выступления наших спикеров на Highload 2015, которые мы с удовольствием выкладываем.
Если у вас появятся вопросы к докладчикам, задавайте их в комментариях. Ребята на них обязательно ответят.
1. «Near-realtime аналитика событий в высоконагруженном проекте», доклад Александра Крашенинникова
Если у вас появятся вопросы к докладчикам, задавайте их в комментариях. Ребята на них обязательно ответят.
1. «Near-realtime аналитика событий в высоконагруженном проекте», доклад Александра Крашенинникова
+23
Специалисты FireEye обнаружили новый буткит
2 min
7.5KСпециалисты компании FireEye опубликовали данные о бутките под названием BOOTRASH, который используется кибергруппой с названием FIN1. FIN1 прибегает к использованию различного вредоносного ПО под общим названием Nemesis для компрометации банков и платежных терминалов. FireEye указывает, что кибергруппа использует механизм заражения системы на уровне секторов жесткого диска, компрометируя известную структуру Volume Boot Record (VBR), в которой расположены структуры данных файловой системы и код загрузчика.

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

Так называемая платформа злоумышленников Nemesis включает в себя набор различных файлов и инструментов, включая кейлоггер, инструменты передачи файлов, захвата скриншотов и управления работающими процессами. Все эти инструменты используются злоумышленниками для кражи финансовой информации у банков и платежных терминалов.
+10
Information
- Rating
- Does not participate
- Location
- Ростов-на-Дону, Ростовская обл., Россия
- Date of birth
- Registered
- Activity