Как стать автором
Обновить
0
0
andreyK @andreyK

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

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

Как работает декомпиляция в .Net или Java на примере .Net

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

Сегодня хотелось бы поговорить про декомпиляцию приложений (все применительно к той же Java, да и любому языку с некоторыми допущениями и ограничениями, но поскольку сам я — .Net разработчик, примеры будут совсем немного MSIL'овизированы :) ).

Для вводной, перечислю текущие средства декомпиляции в мире .Net:
  • JetBrains dotPeek (поддержка R# хоткеев, сервер символов)
  • Telerik JustDecompile (также не плохой, множество хоткеев)
  • RedGate Reflector (аналог dotPeek, но платный. Изначально был основным в мире .Net, но пока был бесплатным)
  • icsharpcode ILSpy (хороший, opensource. Полезен, когда вы сами пишете код, использующий Mono.Cecil, т.к. Это даст лучшее понимание его работы)
  • 9rays Spices .Net Decompiler
  • Dis# с функцией inplace editor

Для программной декомпиляции:
  • Mono.Cecil (основной, самый крутой декомпилятор в мире .Net. На выходе получаете объектное «зеркало» содержимого сборки. Т.е. Максимально-упрощенно, без наворотов типа конвертации массива IL в DOM).
  • ICSharpCode.Decompiler (надстройка над mono.cecil, переводящая array[MSIL] в DOM, где есть циклы, switches и if'ы. Является частью SharpDevelop/ILSpy)
  • Harmony Core (аналогичное от меня, но сохраняющее информацию о символах. В среднем состоянии, не готова для прода, помощь приветствуется).


А теперь, хотелось бы описать как они работают (вам же интересно, как работает машинка от JetBrains?). Чтобы как минимум понять, насколько это сложно: написать свой декомпилятор .Net сборки обратно в код на C#.



Читать дальше →
Всего голосов 45: ↑41 и ↓4+37
Комментарии28

Миф о фрагментации Android

Время на прочтение3 мин
Количество просмотров1.8K
image
В последнее время мы все чаще слышим о том, насколько фрагментированным стал рынок Андроид-устройств, как Гугл отдала контроль над Андроидом производителям устройств, и насколько кошмарно написание и тестирование приложений под ОС Андроид. Все это не соответствует действительности.
Читать дальше →
Всего голосов 75: ↑46 и ↓29+17
Комментарии59

Доступен непривязанный анлок для iPhone на iOS 5.0/5.0.1

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


Хакер из Китая Loktar_Sun опубликовал метод разблокирования iPhone с джейлбрейком при помощи утилиты SAM — Subscriber Artifitial Module. Способ подтвержден и проверен известным разработчиком MuscleNerd, у которого процедура анлока прошла успешно. Стоит заметить, что код активации генерируется только для одной SIM-карты, после её смены требуется повторить несложную процедуру. Подходит для всех baseband (модемов).
Читать дальше →
Всего голосов 43: ↑31 и ↓12+19
Комментарии36

Update 3! Серия из 24 лабораторных работ по разработке, тестированию и управлению жизненным циклом ПО для Visual Studio 2013

Время на прочтение5 мин
Количество просмотров13K
Казалось бы, что только совсем недавно мы опубликовали 24 лабораторные работы по разработке, тестированию и управлению жизненным циклом ПО для Visual Studio 2013 на русском языке (http://habrahabr.ru/company/microsoft/blog/236801/), как уже вышло долгожданное обновление Update 3 (http://habrahabr.ru/company/microsoft/blog/240639/).

Мы не могли остаться в стороне: ahriman перевёл обновлённые лабораторные работы на русский язык.
Ссылки на лабораторные работы, инструкция и т.д.
Всего голосов 27: ↑23 и ↓4+19
Комментарии0

Детали реализации стека — часть первая

Время на прочтение3 мин
Количество просмотров28K
image
Какое-то время назад я писал о том, что «ссылки» — это не «адреса», когда речь идёт о C# и размещении его объектов в памяти. Хотя это действительно так, но это всего лишь деталь реализации, но не смысл «ссылки». Другая деталь реализации, которую часто путают с сутью — это то, что «память под значимые типы (value types) выделяется на стеке». Я часто это вижу, потому что именно так написано в нашей документации.

Практически каждая статья, которую я вижу, подробно описывает (часто неверно) что такое стек и что основное различие между значимыми и ссылочными типами — это то, что значимые типы располагаются на стеке. Я уверен Вы можете найти множество примеров таких статей в сети.
Читать дальше →
Всего голосов 40: ↑34 и ↓6+28
Комментарии24

Мастер-класс по нутрям .Net Framework

Время на прочтение3 мин
Количество просмотров20K
< Прежде всего хочу отметить что я имею ввиду под internals. В данном случае я имею ввиду именно внутренние структуры данных .Net Framework. Ведь, находясь под его опекой, что мы видим? Стройную архитектуру классов, строгую типизацию, настройки безопасности. И все вроде как автомагически работает и не надо ни о чем задумываться. И вроде как даже прекрасно. Но вы по сути, находитесь в Матрице. В Матрице, о законах которой вы знаете только понаслышке. Что GC работает именно так, вам сказали. Но Вы ведь не уверенны что это именно так?

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

Я очень надеюсь, что программа Вам очень понравится, т.к. по сути — это результат собственных исследований, и все что тут есть, нагуглить не получится.
Читать дальше →
Всего голосов 32: ↑28 и ↓4+24
Комментарии42

Никто не умеет обрабатывать ошибки

Время на прочтение9 мин
Количество просмотров113K
Из одной книги в другую, из статьи в статью кочует мнение о том, что выражение

try {
   //do something
}
catch(Exception ex) {
}

является плохой практикой. Возврат кодов – также плохая практика. Но становится ли нам, программистам, жить легче с этими знаниями и так уж ли они неоспоримы? И самый забавный вопрос – кто-нибудь в мире умеет грамотно обрабатывать ошибки, возникающие по ходу работы приложения? (под этим я понимаю обработку только тех ошибок, которые имеет смысл обрабатывать и вывод сообщений об ошибках, которые соответствуют действительно произошедшей, которые не вводят пользователя в замешательство, а в идеале и предлагают решение возникшей проблемы).
Подробности под катом
Всего голосов 70: ↑59 и ↓11+48
Комментарии121

Linq-подобный синтаксис для knockout

Время на прочтение3 мин
Количество просмотров4.8K
Прошел год с тех пор, как наша команда разрабатывает web portal используя паттерн MVVM и фреймворк Knockout в частности. Понемногу копился опыт, появлялись различные решения, хорошие и плохие практики, и вот, так сказать, назрело. Для linq-синтаксиса в javascript уже существует библиотека linq.js, и долгое время мы думали, затянуть ли ее к нам в проект. И даже примеры использования вкупе с knockout в интернетах есть.
Идея же, которая меня постигла, была в том, чтобы создание computed инкапсулировать внутрь Linq-методов.
Для сравнения, код из fiddle:
    this.filteredItems = ko.computed(function() {
        var term = this.searchTerm();
        
        return this.items.where(function(item) { 
            return item.name.indexOf(term) > -1; 
        });
    }, this);

и код, который хотелось бы писать вместо этого:
    this.filteredItems = this.items
        .Where(function(item) { return item.name.indexOf(this.searchTerm()) > -1; });

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

CLRium: до конца регистрации — 4 дня

Время на прочтение3 мин
Количество просмотров4.7K
Впереди череда выходных, на которых можно отлично и полезно провести время. И на мой скромный взгляд, когда современный человек имеет тысячи дел, отвлекающих его от возможности расширить свои знания, наличие мастер-класса будет очень полезным. Ведь это как минимум возможность прийти и не отвлекаясь на домашние хлопоты сделать что-то интересное, полезное, а главное – новое для себя.
Несколько дней назад (а кажется, еще вчера) я опубликовал анонс мастер-класса по .Net Framework Internals, который сегодня был назван CLRium. На этой мини-конференции будет показано, как работает любое .Net приложение, и как внести в .Net приложение возможности, которые не закладывались при проектировании платформы. Зачем? Каждый из вас может преследовать свои интересы. Однако, на мой взгляд, можно вывести несколько групп интересов:

  • Вам очень интересно, как .Net Framework работает. Ведь если узнать как оно работает, можно понять ее сущность и начать как-то по-другому относиться в самой платформе. Без единорогов, розовых очков и фей в виде Garbage Collector’а;
  • Вы хотите подтянуть знания чтобы с легкостью отвечать на собеседованиях глубже чем требовалось, тем самым забирая более оплачиваемые вакансии
  • Вам интересно понять как можно легко и непринужденно взламывать .Net приложения в режиме реального времени (в, конечно же, академических целях, не нарушая законодательства и без злого умысла. Ну вы поняли)


Однако чем бы вы ни руководствовались, вы начнете понимать, почему в .Net Framework что-то сделано так или иначе. Откуда растут ноги не правильного подсчета count++ в разных потоках, почему сделали ThreadPool, почему есть потоки, а есть процессы… И на множество других вопросов, корни которых уходят за пределы платформы.
Читать дальше →
Всего голосов 20: ↑17 и ↓3+14
Комментарии4

Автоматизация приемочного тестирования Selenium + .NET Web Api + AngularJs

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

Я расскажу как мы в компании работаем с приемочными тестами. В статье вас ждет ссылка на репозиторий с кодом и видео с примером работы.
Подробности
Всего голосов 30: ↑26 и ↓4+22
Комментарии29

Результаты тестирования облачных хранилищ Amazon, Google, HP, Microsoft и Rackspace

Время на прочтение5 мин
Количество просмотров22K
Компания Nasuni, которая предлагает на рынке готовые решения инфраструктуры хранилищ данных в виде сервисов, подготовила очередной отчет о проведенном тестировании облачных хранилищ данных, которые предлагают на рынке крупнейшие вендоры Amazon, Google, HP, Microsoft и Rackspace.



Среди прочих были проведены следующие тесты: на скорость записи, чтения и удаления данных, отзывчивость сервисов, аптайм, масштабируемость и на число ошибок при чтения/записи данных.
Читать дальше →
Всего голосов 67: ↑38 и ↓29+9
Комментарии21

Как настроить доступ к Microsoft Azure через корпоративную учетную запись (Organizational Account) и включить мультифакторную аутентификацию

Время на прочтение4 мин
Количество просмотров8.9K
Для управления и доступа к ресурсам Azure изначально можно было использовать только Microsoft Account (LiveID), но какое-то время назад была добавлена поддержка учетной записи организации (Organizational Account). Organizational Account обслуживаются службой Azure Active Directory, а это обеспечивает расширенные функции управления данными учетными записями в рамках вашей организации (для которой создается выделенная Azure Active Directory). Например, Organizational Account, так же как и Microsoft Account (LiveID), поддерживают двухфакторную аутентификацию. Но для Organizational Account требование использовать мультифакторную аутентификацию может быть задано как обязательное, т.е. зайти на портал управления Azure пользователь сможет только выполнив все шаги двухфакторной верификации.

image
Мне достаточно часто задают вопрос относительно предоставления доступа к управлению системой, развернутой в Azure. Не всегда предоставление доступа на основе Microsoft Account (LiveID) для реальной системы подходит, т.к. администраторам сложнее контролировать как применяемые меры безопасности, так и права пользователей\сотрудников. Например, сотрудник может уволиться или его аккаунт будет взломан (далеко не все включают для своего аккаунта двухфакторную аутентификацию), в этом случае необходимо приостановить доступ по данной учтённой записи к облачной системе, чтобы никакие действия не могли быть выполнены ни через портал, ни через API.

Organizational Account как раз решает большинство вопросов (централизованное управление доступом, повышенные настройки безопасности и т.п.). Более подробная информация об управление аккаунтами и подписками в Azure представлена в MSDN статье Manage Accounts, Subscriptions, and Administrative Roles.

А далее будет пошаговая инструкция заведения Organizational Account и привязки его к Azure и включения для аккаунта двухфакторной аутентификации.
Подробности
Всего голосов 16: ↑12 и ↓4+8
Комментарии4

Система межбанковских электронных платежей в Украине. Как это работает

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


Межбанковская система электронных платежей (СЭП) Украины – это основная система платежей между банками и учреждениями госказначейства в Украине. Именно через неё происходит основная масса платежей между физическими и юридическими лицами в стране. СЭП представляет собой замкнутую RTGS-систему, в которой деньги циркулируют в замкнутом финансовом пространстве и находятся под эмиссионным контролем со стороны Национального банка. Итак – как это работает…

Читать дальше →
Всего голосов 75: ↑65 и ↓10+55
Комментарии57

Курс лекций «Стартап». Питер Тиль. Стенфорд 2012. Занятие 19

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

Весной 2012 г., Питер Тиль (Peter Thiel), один из основателей PayPal и первый инвестор FaceBook, провел курс в Стенфорде — «Стартап». Перед началом Тиль заявил: «Если я сделаю свою работу правильно, это будет последний предмет, который вам придется изучать».

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

Занятие 1: Вызов будущего
Занятие 2: Снова как в 1999?
Занятие 3: Системы ценностей
Занятие 4: Преимущество последнего хода
Занятие 5: Механика мафии
Занятие 6: Закон Тиля
Занятие 7: Следуйте за деньгами
Занятие 8: Презентация идеи (питч)
Занятие 9: Все готово, а придут ли они?
Занятие 10: После Web 2.0
Занятие 11: Секреты
Занятие 12: Война и мир
Занятие 13: Вы — не лотерейный билет
Занятие 14: Экология как мировоззрение
Занятие 15: Назад в будущее
Занятие 16: Разбираясь в себе
Занятие 17: Глубокие мысли
Занятие 18: Основатель — жертва или бог
Занятие 19: Стагнация или сингулярность?
Читать дальше →
Всего голосов 73: ↑69 и ↓4+65
Комментарии21

Lean. Часть 1. Канбан-доска по-новому

Время на прочтение5 мин
Количество просмотров111K
Яблочко для тизера

Примерно три месяца назад мне, как руководителю студии дизайна, посчастливилось участвовать в замечательном тренинге «Основы бережливого производства». Тренинг этот рассказывал про методологию lean. Для тех, кто не в курсе — это методология “обезжиривания” бизнес-процессов, при которой идет сокращение неизбежных потерь, исключение бесполезных действий и выполнение других манипуляций, направленных на увеличение скорости работы компании, количества производимой продукции или услуг и, как следствие, роста её доходов. Это если вкратце.

То, чем сегодня я с вами хочу поделиться — это результат воплощения в жизнь лишь малой части полученных на этом тренинге знаний. Если вам будет интересна данная тема — я готов рассказать о других вещах, которые мы стали использовать в нашей студии после данного обучения. К слову, очень интересно читать посты на тему lean наших сибирских коллег — компанию Сибирикс. Ребята, так держать!

Итак, сегодня речь пойдет о двух составляющих чудесной методологии lean — это визуализация и канбан. Первая из них говорит о том, что нужно стараться визуализировать в бизнес-процессах всё и вся, чтобы упростить их восприятие и понимание. Со вторым понятием, я думаю, многие хабраюзеры знакомы уже давно и не понаслышке. На Хабре было не мало статей про канбан-доски и другие похожие инструменты управления проектами. Я же хочу рассказать о том, как мы открыли для себя канбан-доску и чем она стала полезна именно нам. Возможно, вы сможете перенять наш опыт и внедрить-таки эту штуковину в своей компании.
Узнать нечто новое о канбан-доске и управлении проектами
Всего голосов 15: ↑12 и ↓3+9
Комментарии21

Введение в HDInsight

Время на прочтение5 мин
Количество просмотров4.4K
HDInsight Services for Windows Azure — это сервис, позволяющий работать с кластером Apache Hadoop в Облаке, предоставляющий программную среду для операций управления, анализа и отчетности по Большим Данным.
Читать дальше →
Всего голосов 7: ↑6 и ↓1+5
Комментарии0

Mikrotik OS и автоматическое переключение на резервный канал

Время на прочтение4 мин
Количество просмотров125K
В недавнем прошлом в связи с переходом с ADSL на Ethernet представилась отличная возможность попробовать оборудование от Mikrotik. В связи с чем был куплен роутер RB750GL. Железка оказалась превосходной как внешне, так и с точки зрения функционала и надёжности.
В итоге у меня осталось оба канала и было решено настроить резервирование с автоматическим переключением. Стандартные средства переключения шлюзов не покрывают всё многообразие сбоев, поэтому нужно писать свои скрипты.
Читать дальше →
Всего голосов 10: ↑10 и ↓0+10
Комментарии41

Архитектура и платформа проекта Одноклассники

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

Архитектура и платформа проекта Одноклассники


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

Читать дальше →
Всего голосов 268: ↑232 и ↓36+196
Комментарии181

Используем NLog 2.0 в Silverlight или как я стал опенсорсником

Время на прочтение4 мин
Количество просмотров5.7K
Началось все достаточно банально — с того, что мне понадобился logging в моем проекте на Silverlight.

Под «взрослым» .NET-ом я всегда пользовался NLog-ом от Ярека Ковальского. А почему не log4net, спросят многие из вас.
Все, конечно, достаточно субъективно, ну да ладно.
Читать дальше →
Всего голосов 73: ↑52 и ↓21+31
Комментарии32

Информация

В рейтинге
Не участвует
Откуда
Украина
Дата рождения
Зарегистрирован
Активность