Search
Write a publication
Pull to refresh
23
0
Белоглазов Дмитрий @XAHOK

Пользователь

Send message

Неочевидные способы защиты от malware

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

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

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

Настраиваемая авторизация в Asp.Net MVC

Reading time9 min
Views47K
Привет Хабраюзер! Хотел бы поделиться с сообществом своим небольшим опытом разработки на фреймворке ASP.NET MVC. А именно очень важной частью аутентификации пользователей в приложении. А так же реализации системы безопасности, основанной на ролях.
Данная статья скорей всего будет полезна начинающим программистам, использующим ASP.NET MVC в качестве платформы для разработки. Но возможно и «бывалые» (опытные) пользователи подчерпнут для себя какие-нибудь идеи. Критика, предложения и тому подобное приветствуется. Всех заинтересовавшихся прошу под кат.
Читать дальше →

Backbone.js для «чайников»

Reading time13 min
Views289K
Backbone.js для чайников
Как то поздним вечерком мне пришла мысль изучить Backbone.js и привязать его к уже написанному на jQuery сервису. Сервис уже серьёзно расширился и меня достало это нагромождение обработчиков кликов, запросов и логики. Поэтому, я как усердный школьник полез в официальную документацию. Но либо я тупой, либо мой английский меня подкачал, либо то и другое вместе, но я не черта не понял. Я прочитал уже второй раз, внимательно, и для особо одарённых мест использовал google translate. Прочитал также и пример ToDo List. Всё показалось понятно, ровно до той поры пока я не стал писать. После чего я взял всё что нашел по этой библиотеке, как на английском так и переводы. Прочтя кипу документации я решил, что сейчас вроде всё понял. Я напрягся, но… Не вышел каменный цветок у мастера Данилы, т.е. вышло, но это явно был не цветок, и камень как то неправильно пах. Тогда, как прилежный ученик, я решил написать «Hello, KittyWorld» с нуля. Попутно комментируя и сохраняя шаги в hg, у меня получилось введение в backbone.js framework для таких как я, особо одарённых.
Данные 7 шагов с комментариями.

Разработка игр для Windows 8 с использованием MonoGame: поддержка сенсорных экранов

Reading time4 min
Views12K
В предыдущей заметке было рассказано о основных моментах связанных с разработкой игр для Windows 8 и MonoGame. Несмотря на то что игра уже запускается, в ней не хватает важных функций которые необходимы при реализации приложения для Windows 8. Это поддержка прикосновений и обязательный экран privacy policy.
Читать дальше →

50 примеров базового дизайна приложений для Windows 8

Reading time2 min
Views40K
Друзья, рады поделиться с вами несколькими тематическими примерами приложений для Windows 8, от которых вы можете отталкиваться в своей работе. Все примеры размещены на CodePlex и доступны для загрузки с исходным кодом.


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

Обзор чатов для онлайн консультирования (Livechat) (часть 1)

Reading time10 min
Views162K
В своей компании для тех. поддержки клиентов используем чат+хелпдеск от kayako, но столкнулись с необходимостью найти отдельный сервис онлайн чата для новых проектов. По старой привычке — выбор делаем так: составляем список минимальных требований, потом находим все подходящие под них сервисы и проводим их тестирование, и уже из них выбираем лучший вариант.

Исходные требования:
  • Интерфейс полностью на русском языке
  • Возможность вставить фото оператора
  • Активные приглашения — когда оператор может пригласить клиента в чат
  • Статистика по посетителям — откуда пришел, какие странички смотрел
  • Возможность передачи клиента между операторами
  • Сохранение истории общения
  • Клиент под Windows


Изначально к стартовой линии подошли около 30 различных сервисов чатов для консультирования клиентов. Некоторые из них мы рассмотрим подробно, а по некоторым пробежимся лишь вскользь.
Сравнение 13 онлайн чатов

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

Reading time3 min
Views100K
image

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

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

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

Оптимизация 2d-приложений для мобильных устройств в Unity3d

Reading time13 min
Views107K
Недавно наша студия завершила разработку большого обновления — Captain Antarctica: Endless Run — для устройств на iOs. Кропотливая работа над обновлением затронула производительность, которая оказалась очень низкой на слабых устройствах. Я боролся с этим целую неделю и добился как минимум 30 FPS, а также значительного сокращения размера приложения. Хочу рассказать, как я это сделал, ну и как делать не стоит.
Статья пригодится любым разработчикам на Unity (причем не только менеджерам проектов и техническим специалистам, но и просто программистам, художникам и дизайнерам), потому что она затрагивает как оптимизацию на Unity в целом, так и конкретно оптимизацию 2d-приложений для мобильных устройств.

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

Html Agility Pack — удобный .NET парсер HTML

Reading time5 min
Views165K
Всем привет!
Как-то раз мне пришла в голову идея проанализировать вакансии размещенные на Хабре. Конкретно интересовало, есть ли зависимость между размером зарплаты и наличия высшего образования. А еще сейчас у студентов идет сессия (в том числе и у меня), то возможно кому-то уже надоело трепать нервы на экзаменах и этот анализ будет полезен.
Так как я программист на .Net, то и решать эту задачу — парсить объявления на Хабре я решил на C#. Вручную разбирать строки html мне не хотелось, поэтому было придумано найти html-парсер, который помог бы осуществить задачу.
Забегая вперед скажу, что из анализа ничего интересного не вышло и сессию придется сдавать дальше :(
Но зато немножко расскажу про весьма полезную библиотеку Html Agility Pack
Читать дальше →

Светский разговор об управляемой тестами выпечке

Reading time8 min
Views9.5K

Что-то вроде предисловия


Статья «Как два программиста хлеб пекли» сначала мне показалась просто шуткой — настолько абсурдно выглядят попытки выстроить какой-то «дизайн», основываясь на тех «требованиях», которые выдвигает «менеджер». Но в каждой шутке есть доля правды… В общем, возник вопрос к самому себе: а как в данной ситуации сработает тот подход, которого я стараюсь придерживаться в своей практике? То, что выросло при попытке дать ответ, собственно, и представлено далее.
Читать дальше →

Кеширование в ASP.NET MVC

Reading time6 min
Views48K
В прошлом посте я рассказывал о различных стратегиях кеширования. Там была голая теория, которая и так всем известна, а кому неизвестна, тому без примеров ничего не понятно.

В этом посте я хочу показать пример кеширования в приложении ASP.NET MVC и какие архитектурные изменения придется внести, чтобы поддерживать кеширование.

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

Задачи и отмена в .Net — tips & tricks

Reading time11 min
Views103K
С выходом .NET Framework 4.0 в состав BCL была добавлена библиотека Task Parallel Library (TPL), реализующая параллелизм на основе задач. В основе библиотеки лежат типы Task и унаследованный от него тип Task. Эти типы являются обёртками для асинхронных операций; они позволяют абстрагироваться от таких технических деталей, как, например, потоки и синхронизировать асинхронные операции друг с другом.

В этой же версии .NET Framework появился мини-framework для кооперативной отмены асинхронных операций. Состоит он из всего трёх типов:
  • CancellationTokenSource — создаёт маркёры отмены (свойство Token) и обрабатывает запросы на отмену операции (перегруженные методы Cancel/CancelAfter).
  • CancellationToken — маркёр отмены; позволяет несколькими способами отслеживать запросы на отмену операции: опросом свойства IsCancellationRequested, регистрацией callback-функции (через перегруженный метод Register), ожиданием на объекте синхронизации (свойство WaitHandle).
  • OperationCanceledException — исключение, выброс которого по соглашению означает, что запрос на отмену операции был обработан и операция должна считаться отменённой. Предпочтительный способ генерации исключения — вызов метода CancellationToken. ThrowIfCancellationRequested.

Механизм отмены через CancellationToken является стандартным для TPL — есть перегрузки методов, принимающих CancellationToken, исключения OperationCanceledException специальным образом обрабатываются и т.д. Однако, как и в любом другом API, есть свои тонкости, хитрости, best practices.
Читать дальше →

Бизнес-план «Создание игры»

Reading time17 min
Views102K
Некоторое время назад мною был написан Бизнес-план, Дизайн документ и Концепт документ по созданию игры.
К сожалению информация 2011 года, но думаю полезна коллегам.
Система показателей оценки геймплея придумана собственно мной, так что этот бизнес-план, целиком моё субъективное видение.

1. Введение


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

2. Возможности рынка


Для начала надо просто делать бизнес в русском интернете — это один из самых быстрорастущих рынков. Если говорить о конкретных бизнес-направлениях, большой потенциал — у проектов электронной коммерции и сервисов, основанных на социальных связях. И конечно, игры, игры, игры. Играть начинают люди, которые раньше играми не интересовались — например, на мобильном телефоне. Игры привлекают все новых и новых пользователей, и это продолжится. Просто оказалось, что среди огромного разнообразия контента наибольшей популярностью пользуются игры. Комбинация общения и развлекательных сервисов (особенно игр) очень хорошо работает.(1)
Российский интернет-рынок — один из немногих рынков, не переставших расти в кризис, по всем показателям: реклама, домены, хостинг, объем аудитории. Сегмент веб-разработки — не исключение.
Сегодня в 2011 году Интернет населяют 43 млн. россиян (39% населения). Из них активной аудиторией Рунета является 35 млн. человек, а 25 млн. посещают русскую сеть ежедневно. При этом 92% пользователей зарегистрированы хотя бы одной социальной сети, где ежемесячно бывает 25 млн. человек и 16 млн. — ежедневно. Доля пользователей Интернета в стране в среднем составляет: 92% в категории 12-24 года, 76% в населении 25-44 лет, 25% в населении от 45 лет и более.(2)
image
Рисунок 1 Пользуются интернетом хотя бы один раз.

1 Глава Mail.ru Group Дмитрий Гришин в интервью для Forbes Russia.
2 По данным TNS Russia – лидера в предоставлении комплексной медиа- и маркетинговой информации.

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

Заметки о безопасности. Восстановление пароля

Reading time6 min
Views43K
Хотелось бы немного рассказать о подходе повествования в данном посте. Всё описанное имеет реальные случаи произошедшие из моей личной практики, в большинстве своём это популярные проекты, поэтому в тексте буду их упоминать. Главное на что я хотел бы обратить внимание — эта статья может показаться не интересной специалистам ИБ, т.к. она не содержит никаких новых векторов атаки и супер крутых подходов. Вся информация ориентирована на разработчиков и проект-менеджеров.
Проводя заказы на аудит целью ставится аналитика максимального ущерба при минимальных действиях и знаниях злоумышленника. Как показывает практика в суровых условиях производства ПО такие нюансы продумывают единицы проектов.



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

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

И так, рассмотрим слабые места каждого из пунктов выше.
Читать дальше →

Listeners в Ext.NET

Reading time7 min
Views6.6K
В Ext.NET понимание разницы между различными типами событий и их обработчиками является очень важным. Выбор зависит от конкретного сценария, который вы хотите реализовать вашем приложении.
В данной серии из четырех статей мы рассмотрим различные события на клиенте и на сервере, как они вызываются, обрабатываются и какие имеют преимущества. В данной статье будут рассмотрены Listeners – позволяющие «слушать» события на клиенте и обрабатывать его там же, на клиенте, избегая запроса к серверу.
Все компоненты в Ext.NET, такие как Panel, Window, Button, имеют следующие четыре типа обработчиков событий:
Listeners
Слушают события на клиенте и обрабатывают их так же на стороне клиента.

DirectEvents
Слушают события на клиенте, но выполняют их обработку на стороне сервера, вызов происходит посредством AJAX запроса.
DirectMethods
Позволяют вызывать функции на сервере, например написанные на C# или VB, вызов происходит посредством AJAX запроса.
MessageBus
MessageBus позволяет передавать различные события между компонентами, которые могут друг о друге не знать. Обработка сообщений происходит через подписку на определенные сообщения и отправку сообщений о событиях через MessageBus. Каждый компонент на клиенте имеет специальный обработчик MessageBusListeners, а также  MessageBusDirectDirectEvents для передачи обработки на сторону  сервера.


Listeners


Listeners являются обработчиками событий на клиенте. Они выполняют ваш код после появления некоторого события, например, нажатия на кнопку (Button).
Использование Intellisense в Visual Studio дает возможность узнать какие конкретные события есть у каждого компонента. Каждый компонент наследует события от своего предка и обычно добавляет свои.
Все классы в Ext.NET наследуют события от базового класса Observable. Все события находятся в Listeners.

Все доступные события могут быть просмотрены с помощью Intellisense

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


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

Эффективная конкатенация строк в .NET

Reading time8 min
Views38K

Для программистов на платформе .NET одним из первых советов, направленных на повышение производительности их программ, является «Используй StringBuilder для конкатенации строк». Как и «Использование исключений затратно», утверждение о конкатенации часто неправильно понимается и превращается в догму. К счастью, оно не столь деструктивно, как миф о производительности исключений, но встречается заметно чаще.

Было бы неплохо, если бы вы перед прочтением данной статьи прочли мою предыдущую статью о строках в .NET. И, во имя удобочитаемости, дальше я буду обозначать строки в .NET просто строками, а не «string» или «System.String».

Я включил эту статью в список статей, посвящённых .NET Framework в общем, а не в список C#-специфичных статей, так как полагаю, что все языки на платформе .NET под капотом содержат один и тот же механизм конкатенации строк.
Читать дальше →

Генерация случайных чисел в .NET

Reading time7 min
Views138K
Перевод статьи Random numbers широко известного в узких кругах Джона Скита. Остановился на этой статье, так как в своё время сам столкнулся с описываемой в ней проблемой.


Просматривая темы по .NET и C# на сайте StackOverflow, можно увидеть бесчисленное множество вопросов с упоминанием слова «random», в которых, по сути, поднимается один и тот же извечный и «неубиваемый» вопрос: почему генератор случайных чисел System.Random «не работает» и как это «исправить». Данная статья посвящена рассмотрению данной проблемы и способов её решения.
Читать дальше →

Имитируем ночное зрение человека в 3D-игре

Reading time4 min
Views58K
Сегодня мы будем заниматься постпроцессингом изображения в DirectX.

Как известно, в темноте зрение человека обеспечивается клетками-палочками сетчатки, высокая световая чувствительность которых достигается за счет потери цветочувствительности и остроты зрения (хотя палочек в сетчатке и больше, они распределены по гораздо большей площади, так что суммарное «разрешение» выходит меньше).

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

В результате мы получим что-то вроде следующего (смотреть на весь экран!):

До: унылый польский шутер


После: финалист IGF и лауреат всех наград E3

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

Еще один взгляд на Entity Framework: производительность и подводные камни

Reading time10 min
Views44K
Ни для кого не секрет, что адаптация Entity Framework проходит очень медленно. Огромное количество компаний продолжают использовать Linq2Sql и не планируют менять его на что-то новое в обозримом будущем, несмотря на то, что EF – официально рекомендуемая Microsoft технология доступа к БД, а Linq2Sql уже почти не поддерживается.

Тех, кто всё еще сомневается, можно ли использовать EF (и особенно – code first) на реальных проектах, приглашаю под кат.
Читать дальше →

Сериализация .NET объекта в JavaScript variable на HTML странице внутрь Script-блока

Reading time3 min
Views7.8K

Старые добрые hidden inputs


Часто приходится передавать в HTML страницу данные, которые необходимо потом использовать из JavaScript. Издавна для этого используется самый простой способ: hidden inputs. То есть, если нам нужно передать Uri адрес веб сервиса, мы на странице рендерим что-то вроде

  <input type="hidden" name="webServiceUri" value="URI we need"/>

и можем при помощи jQuery или plain old JavaScript найти этот input по имени и прочитать переданное значение.

Но когда нужно передавать много параметров или даже массивы, то этот способ становится не удобным. Можно конечно сделать REST сервис, который отдает все данные по AJAX-запросу со страницы (сессионные данные), но в большенстве случаев это излишне.

В настоящее время часто используется другой способ — на стороне сервера отрендерить в HTML все необходимые данные в виде JavaScript переменной внутри Script-блока.

Рассмотрим как это сделать в ASP.NET MVC.

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

Information

Rating
Does not participate
Location
Пенза, Пензенская обл., Россия
Date of birth
Registered
Activity