Search
Write a publication
Pull to refresh
120
0
Dmitrii E @NeonMercury

Expert Software Engineer

Send message

Советы по отладке в Visual Studio 2010

Reading time8 min
Views73K
Это двадцать шестая публикация в серии публикаций о VS 2010 и .NET 4.

Сегодняшняя публикация рассматривает некоторые полезные советы по отладке которые вы можете применять в Visual Studio. Мой друг Скот Кэйт (Scott Cate) (который опубликовал в блоге дюжину великолепных советов и трюков по VS) недавно обратил мое внимание на несколько хороших советов о которых не знает много разработчиков использующих Visual Studio (даже при том, что многие из них работают с ней уже давно с более ранних версий).
Читать дальше →

Лампа настроения!

Reading time2 min
Views38K
Лампа настроения (mood lamp) является RGB лампой, которая меняет цвет в случайном порядке. Была зеленая, плавно стала голубой, потом фиолетовой… какого цвета она станет в следующий момент времени не знает никто)

image

Купить такую проблематично, сделаем ее сами!)
Читать дальше →

Пи. Научно не популярное

Reading time1 min
Views4.3K
Пи — математическая константа, выражающая отношение длины окружности к длине её диаметра. Обозначается буквой греческого алфавита «пи». Пи в Википедии.


Но речь сегодня не об этом.
Читать дальше →

Цвета в web-дизайне: Выбор правильного сочетания для вашего сайта

Reading time6 min
Views383K
Цвета в web-дизайнеЦвет, безусловно, является важным источником эмоции. Цвета могут устанавливать правильный тон и передавать необходимые эмоции посетителям, могут взволновать, вызвать множество чувств и стимулировать к действиям. Он является чрезвычайно мощным фактором воздействия на пользователей.
Читать дальше →

Компиляция. 10: компиляция в ELF

Reading time13 min
Views7.1K
В прошлый раз мы ограничились компиляцией джей-скрипа в файл в нашем собственном формате, которому требовался специальный загрузчик. Кроме того, мы задумали было пару оптимизаций исполнимого кода, требующих анализа соседних команд.

Далее в посте:

  1. Оптимизация «в глазок»
  2. Стандартные функции
  3. Вывод в ELF
  4. Как это работает?
  5. Что получилось?
Читать дальше →

Пишем свой первый Windows-драйвер

Reading time5 min
Views136K
Итак, после моей предыдущей статьи я понял что тема про программирование драйверов Windows интересна хабровчанам, поэтому продолжу. В этой статье я решил разобрать простую программу-драйвер, которая делает только то, что пишет отладочное сообщение «Hello world!» при старте драйвера и «Goodbye!» при завершении, а также опишу те средства разработки, которые нам понадобятся для того, чтобы собрать и запустить драйвер.

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

Windows-компьютер без антивирусов

Reading time6 min
Views64K
Предупреждение: Описанное в статье несколько устарело, т.к. я забросил винды в эпоху Windows 2003.

Каждый раз, когда меня знакомые спрашивают: «какой антивирус лучше?», я могу сказать только одно: «антивирус — как придворный шаман. Бывают лучше, бывают хуже, но определить, кто лучше камлает, не получится». Антивирус не гарантирует защиту от вирусов, более того, у него есть полное моральное право пропустить новую заразу и начать её детектить дня через 2-3 после «инцидента». Т.е. как основное средство защиты он годится не очень.

Ниже описывается настройка windows, которая позволит защититься от любых реальных (т.е. встречающихся в природе) вирусов без использования антивирусов. Данная конфигурация уже 3 с половиной года работает на терминальном сервере, где пользователи (в лучшие времена до 70 человек) совсем не стесняются притаскивать на флешках всяких засранцев, лазать по сети где попало и т.д.

Теория


Любой уважающий себя вирус, оказавшись запущенным, тем или иным методом стремится в системе закрепиться, т.е. создаёт исполняемый файл или библиотеку, которая прописывается тем или иным образом в запуск. «Авто» запуск или в форме «дополнения» к другим исполняемым файлам (debugger, hander, плагин, и т.д.) — не важно. Важно: существует барьер под названием «запуск кода». Даже старые-добрые вирусы, дописывающие себя в исполняемые файлы, всё равно должны иметь возможность писать в файлы, которые предполагается запускать.

Безусловно, есть вирусы, размножающиеся без создания файлов (например, мс-бласт). Но условием появления этого вируса должна быть доступность сервера для обращений с носителей вируса или запуск кода через эксплоит в браузере\сетевой компоненте. В случае дыры в браузере дальнейшее размножение не возможно (т.к. нужно обращаться к браузерам на других машинах, а это требует поднятия сервера, куда будут ходить другие пользователи и мотивации пользователям ходить именно на этот узел). В случае дыры в сетевой компоненте и размножения без сохранения на диск, описанная мною методика с большой вероятностью работать не будет и возможна эпидемия. Однако, я не уверен, что антивирусы поймают такой 0day эксплоит, плюс, их (дыры) довольно резво фиксят, так что этот сценарий я откладываю как маловероятный. Наличие же файрволов ещё более уменьшает их опасность. От не-0day вполне же спасает своевременная (автоматизированная) установка обновлений.

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

В Windows существует технология — политика ограниченного запуска приложений. Её можно активировать в режиме «запрещать всё, что не разрешено». Если поставить запрет полный — для всех, включая администраторов, все файлы, включая библиотеки, то мы получим точную гарантию того, что посторонний (не входящий в список разрешённых) файл не будет запущен. По-крайней мере я пока не слышал, чтобы в этой технологии были дыры. Обращаю внимание, нужно запрещать и библиотеки тоже, потому что печально известный конфикер запускается с флешек именно с помощью запуска библиотеки обманом rundll32.

Однако, запреты и разрешения не будут иметь смысла, если не сформулировать правила, которые запретят запуск «чужаков».

Модель безопасности


Перед тем, как описать подробно конфигурацию, сформулирую теоретические принципы её организации:

1. То, куда пользователь может писать закрыто для запуска.
2. То, что пользователь может запускать, закрыто для записи.
Читать дальше →

«Оживление» пользовательского интерфейса

Reading time12 min
Views33K
image

Приложение не отвечает?!


Многие из тех, кто программирует WPF-приложения, наверное тысячи раз писали конструкцию вида:
{Binding Items}

Если получение элементов коллекции Items выполняется в основном потоке приложения и занимает некоторое время — мы получаем «мертвый» пользовательский интерфейс. Приложение некоторое время не будет отрисовывать изменения состояния и реагировать на пользовательский ввод.
Читать дальше →

Пишем свою ОС: Выпуск 1

Reading time6 min
Views280K
Данный цикл статей посвящён низкоуровневому программированию, то есть архитектуре компьютера, устройству операционных систем, программированию на языке ассемблера и смежным областям. Пока что написанием занимаются два хабраюзера — iley и pehat. Для многих старшеклассников, студентов, да и профессиональных программистов эти темы оказываются весьма сложными при обучении. Существует много литературы и курсов, посвящённых низкоуровневому программированию, но по ним сложно составить полную и всеохватывающую картину. Сложно, прочитав одну-две книги по ассемблеру и операционным системам, хотя бы в общих чертах представить, как же на самом деле работает эта сложная система из железа, кремния и множества программ — компьютер.

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

Затачиваем старый код под новые реалии

Reading time18 min
Views3.3K
Sharp envelope knifeВ данной статье я расскажу об одном из способов, позволяющих с наименьшими усилиями трансформировать программный код на C/C++ в код, написанный на C#. Впрочем, рассказанные принципы подойдут и для других пар языков. Хочу сразу оговориться, что способ не рассчитан на трансформацию кода, реализующего GUI.

Для чего это делать? К примеру, я таким образом портировал известную графическую библиотеку LibTiff (и LibJpeg заодно) на C#. Это позволило использовать наработки многих людей, создававших LibTiff, в моей программе вместе с библиотекой классов .NET Framework. Примеры кода в статье будут в основном из LibTiff и LibJpeg.

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

Используем Unmanaged С++ код в .NET программах

Reading time7 min
Views7.3K
image

Сегодня я (как, наверное, и многие другие программисты), все больше использую в своих разработках платформу .NET и язык C#, но все еще остаются уголки где оправдано применение C++. Это создает необходимость их интеграции.

Зачем?

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

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

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

Распознавание цифр с помощью простейшей статистики и анализа топологии

Reading time2 min
Views25K
Дело было на третьем курсе, появился у нас предмет ИИС (интеллектуальные информационные системы). Так как я давно интересовался распознаванием образов, удалось выпросить тему «распознавание рукописных цифр». Я решил не возиться с нейронными сетями и придумать что-то свое, простое, но достаточно эффективное.
Читать дальше →

Связываем домен и динамический IP

Reading time2 min
Views171K
Что мы имеем:
1. компьютер с осью и установленными mysql, apache, php (тут ничего писать не буду, благо мануалов хватает)
2. интернет с присваиваемым динамическим IP, роутер.

Что мы хотим:
1. Что бы люди вбивая в адресную строку браузера доменное имя второго уровня (купленное нами или полученное на каком либо сервисе), попадали на наш сайт (в независимости от того на каком IP он сейчас находиться).
2. Хотим это бесплатно.

Итак, то как это было реализовано мной в виде краткой инструкции можно прочитать под катом, быть может кому-нибудь это пригодиться или просто-напросто будет интересно. Так же, буду рад объективной критике. Спасибо за внимание, и кому интересно добро пожаловать под хабракат.

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

Chrome apps вместо Speed Dial

Reading time3 min
Views3.8K
Здравствуй, Хабр.

Иногда, знаете ли, хочется поделиться какой-нибудь ссылкой или двумя, причём никак с друг другом не связанными, или высказать мысль, но такую маленькую мыслишку, которая на пост не потянет. В общем, будучи верным принципу «нереализованные желания рождают комплексы» я сейчас поведаю вам о по-моему наиболее логичном способе использования chrome apps в хроме и поделюсь несколькими полезными ссылочками, но сделаю это несколько необычным способом.
Читать дальше →

Создаем эмулятор приставки

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



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

Мечта параноика или Еще раз о шифровании

Reading time7 min
Views101K
В свете последних событий с torrents.ru и активизации государственных группировокорганов по борьбе с пиратством, думаю многие задумались как же обезопасить себя или свой сервер на случай если придут нежданные «гости». Вот и мне подвернулась задача защитить локальный медиасервер от посягательств, проведя пару дней за гугленнием и чтением мануалов/howto — мне удалось это реализовать. Скажу сразу, статей по шифрованию очень много, но в основном они рассчитаны на шифрование только определенных разделов, либо устарели/содержат много ошибок.

ЦЕЛИ:

  1. Весь винт(винты) должны быть надежно зашифрованы
  2. На винтах не должно быть абсолютно никакой разбивки, так как будто это новый(или стертый) винт
  3. ОС должна стоять на зашифрованных разделах
  4. Должна быть возможность увеличения дискового пространства, путем добавления новых винтов
  5. Загрузка системы без ввода ключа от шифрованных данных

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

Целебное зелье для IE5+ или IE7.js

Reading time2 min
Views7.1K
Разбирая код очередного проекта внутри тега head наткнулся на интересный код:

<!--[if lt IE 9]>
<script src="http://ie7-js.googlecode.com/svn/version/2.1(beta3)/IE9.js"></script>
<![endif]-->

Только одно слово «IE9» меня пустило в замешательство. Первое что пришло мне в голову — это то, что при помощи этого .js кода браузеры под печальным клеймом Internet Explorer можно заставить работать используя свойства многообещающего IE9. Больше всего я ожидал что будут доступны свойства CSS3.0, но не тут-то было!
Читать дальше →

Хэндгам своими руками

Reading time2 min
Views27K
Думаю, будет правильно сразу сказать, что этот топик не претендует на новизну. Вполне возможно, что все читатели Хабра давно умеют делать хэндгам в домашних условиях, но поиск упорно молчит, именно поэтому я и решился опубликовать эту небольшую заметку.

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

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

RSA, а так ли все просто?

Reading time5 min
Views36K

Прелюдия


Доброго времени суток, уважаемые читатели.
Скорее всего, большинству из вас известно, что из себя представляет асимметричный алгоритм шифрования RSA. В самом деле, этому вопросу по всему рунету и на этом ресурсе в частности посвящено столько статей, что сказать о нем что то новое практически невозможно.
Ну что там, ей богу, можно еще придумать и так все давным-давно понятно. Рецепт приготовления прост:
Два простых числа P и Q.
Перемножить до получения числа N.
Выбрать произвольное E.
Найти D=E-1(mod(P-1)(Q-1)).
Для шифрования сообщение M возводим в степень E по модулю N. Для дешифрования криптотекст C в степень D по все тому же модулю N. Все криптопримитив готов. Берем и пользуемся, так? На самом деле, не так. Дело все в том, что это и в самом деле не более чем криптопримитив и в реальном мире все самую чуточку сложнее.
Читать дальше →

Information

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