• Простое объяснение движения денег в банковской системе

    • Перевод
    От переводчика: В последние месяцы в жизнь многих людей прочно вошли новости сферы финансов. Одна из недавних тем — возможное отключение России от системы SWIFT. Угроза выглядит очень серьезно, но что на самом деле грозит стране, если события будут развиваться по этому сценарию? Наш сегодняшний материал призван помочь разобраться с тем, как все устроено в глобальном мире финансов.

    На прошлой неделе [статья опубликована в ноябре 2013] Twitter сошел с ума из-за того, что кто-то перевел почти 150 миллионов долларов за одну транзакцию в криптовалюте. Появление такого твита было в порядке вещей:



    Транзакция 194 993 биткоинов стоимостью в 147 миллионов долларов порождает много тайн и спекуляций

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

    С помощью этой статьи я попытаюсь изменить ситуацию и проведу простой, но, надеюсь, не слишком упрощенный, анализ в этой области.
    Читать дальше →
  • Главные темы CodeFest 2015

      image

      По традиции в последние выходные марта мы проводим крупнейшую IT-конференцию за Уралом. 28—29 марта встречаемся там же, где и в прошлом, и позапрошлом, и позапозапрошлом году — в новосибирском Экспоцентре. Поводы те же: познакомиться с крутыми спикерами, пообщаться с коллегами по отрасли и пошуметь на афтепати.

      В программе семь треков: mobile-, frontend- и backend-разработка, тестирование, управление продуктами и проектами, дизайн и поток квартирников — так у нас называются дискуссионные панели.
      Итак, к главным темам программы
      • +22
      • 8,7k
      • 3
    • PVS-Studio: 25 подозрительных фрагментов кода из CoreCLR


        Корпорация Microsoft выложила в открытый доступ исходный код движка CoreCLR, который является ключевым элементом .NET Core. Эта новость, конечно же, не могла не привлечь наше внимание. Ведь чем больше аудитория у проекта, тем тревожнее будут выглядеть найденные подозрительные места. Несмотря на авторство Microsoft, как в любом крупном проекте, тут есть на что посмотреть и над чем задуматься.

        Введение


        CoreCLR является средой исполнения .NET Core, выполняя такие функции как сборку мусора или компиляции в конечный машинный код. .Net Core — это модульная реализация .Net, которая может быть использована как база для огромного количества сценариев.

        Исходный код с недавнего времени доступен на GitHub и проверялся с помощью PVS-Studio 5.23. Как и я, желающие могут получить полный лог проверки с помощью Microsoft Visual Studio Community Edition, выход которой тоже был недавней новостью от Microsoft.
        Читать дальше →
      • Age of JIT compiling. Part I. Genesis

          Тема рантайма платформы .NET освещена весьма подробно. Однако работа самого JIT, результирующий код и взаимодействие со средой исполнения – не очень.

          Ну что ж, исправим это!

          Узнаем причины отсутствия наследования у структур, природу unbound delegates.

          А еще… вызов любых методов у любых объектов без reflection.
          Читать дальше →
        • Age of JIT compiling. Part II. CLR is watching you

            Продолжая тему JIT-компиляции .NET'a, сегодня мы рассмотрим диспетчеризацию методов у интерфейсов, generics (как классов, так и отдельных методов вместе с реальными сигнатурами); производить отладку релизных сборок с оптимизациями; разберемся с истинным предназначением типа System.__Canon (это не то, что Вы подумали).
            Читать дальше →
          • Конференция Mobius 2015 по мобильной разработке: анонс докладов

              Всем привет!

              В последние две недели я что-то слегка забегался и перестал следить за докладами, опубликованными на сайте Mobius 2015. Сегодня зашел и офигел: пока я мотался по командировкам, наш программный директор Андрей real_ales Дмитриев замутили нереально крутую программу! Лично мне кажется, что она на голову выше как прошлогодней, так и вообще любой программы любой другой мобильной конфы.



              На сегодня программа Mobius 2015 сформирована на 85%: анонсировано 18 докладов из планируемых 21. Все доклады мы разбили на 5 групп: Devices, Tools, Tests, Security и Others. Сейчас, за 4 недели до конфы, самое время для того, чтобы коротко по ним пройтись.
              Обзор докладов Mobius 2015
            • Программа и материалы курса «Multicore programming in Java»

              • Tutorial
              Добрый день.
              Меня зовут Головач Иван, я буду уже второй раз вести спецкурс-вебинар «Multicore programming in Java». В этой статье предлагаю на рассмотрение программу курса и наиболее полезные ссылки по вопросам многопоточности в Java.

              Также я веду курс «Scala for Java Developers» на платформе для онлайн-образования udemy.com (аналог Coursera/EdX).

              Кратко о курсе: стартует 1 сентября, ведется в режиме вебинаров дважды в неделю (понедельник + четверг) в 19.00-22.00 (по московскому времени), состоит из 16 лекций по 2.5 часа (=40 лекционных часов), рассчитан на Java Middle.

              1. Модуль #1: Между hardware и New JMM
              1.1 Программа модуля
              1.2 Литература к модулю
              2. Модуль #2: java.util.concurrent
              2.1 Программа модуля
              2.2 Литература к модулю
              3. Модуль #3: Fork/Join Framework + Parallel Streams
              3.1 Программа модуля
              3.2 Литература к модулю
              4. Модуль #4: “Неклассические архитектуры”
              4.1 Программа модуля
              4.2 Литература к модулю
              Читать дальше →
              • +17
              • 30,6k
              • 1
            • Сертификация Microsoft

              • Tutorial

              Сертификация Microsoft предназначена для специалистов в различных областях, связанных с информационными технологиями, а также c сертификациями аппаратного и программного обеспечения на предмет совместимости с продуктами Microsoft.

              Экзамены сдаются в центрах VUE. Экзамены по направлению Office сдаются в Certiport центрах тестирования.

              Стоимость экзаменов обычно равна 80$ (60 EU), но некоторые экзамены могут стоить дешевле (60$).
              Общую картинку можно увидеть на следующем плакате:
              Читать дальше →
            • Легкое управление списками баз 1С

              «Лучше день потерять, а потом за пять минут долететь» (с) м/ф Крылья, ноги и хвосты.



              На «Хабре» есть три отличных поста про управление списками баз в 8.х:

              1. «Управление списками баз 1С 8.2»;
              2. «Как приготовить сотни баз 1С и не сойти с ума»;
              3. «Управление списком баз 1С 8.2 с помощью Active Directory».

              Каждый из них содержит свой кусок паззла от полноценной картины: Легкое управление списками баз 1С.
              Читать дальше →
            • Расшифровываем формулу Хабра-рейтинга или восстановление функциональных зависимостей по эмпирическим данным

                Если вы когда-нибудь читали раздел помощь на Хабре, то наверняка видели там прелюбопытнейшую строчку:
                Допустим, вы написали публикацию с рейтингом +100 — это добавило к вашему персональному рейтингу величину Х. Через несколько десятков дней этот самый Х вычтется, тем самым вернув вас на прежнее место.
                то наверняка задавались вопросом, что это за Х и с какого он района чему он равен?

                Сегодня мы ответим на этот вопрос.


                (измеряем Хабра-рейтинг в попугаях)

                Структура статьи


                1. Аналитический вывод
                2. Регрессия
                3. Исключения
                4. Устойчивая регрессия
                5. Скрипт и данные
                6. Почему скрывать функцию бесполезно
                7. Что с этим можно сделать?
                8. Интерпретация формулы
                Читать дальше →
              • Лучшие грабли российских IT-стартапов



                  1. Упарываться по хардкору
                  Это не ошибка, но очень характерная ситуация для IT-сферы. Пока другие стартаперы не имеют продукта, зато рассылают релизы со скриншотами, пьют смузи, выступают на конференциях и выставках, айтишники пишут код. Когда прототип собран и дело доходит до поиска инвестора, становится понятно, что пиар тоже был нужен. Вот только начинать его надо было месяца так два назад.

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

                  3. Не знать конкурентов
                  Офигенный подход аутистов — взять и сделать прототип без изучения рынка. Незнание прямого конкурента, косвенного конкурента и западных аналогов продукта — это не самая хорошая идея. Нужно смотреть, кто уже работал в этом направлении и, главное, с какими проблемами сталкивался. Потому что эти проблемы придут к вам. Ещё полезно замерять показатели конкурентов и сравнивать со своими. Если конкурентов нет — это повод насторожиться. Возможно, ваш продукт никому не нужен.
                  Читать дальше →
                • Баг в CLR: как затащить объект в песочницу без маршаллинга и вызвать Callback

                    Добрый день! Надеюсь, я уже завоевал на Хабре достижение «узнал автора по заголовку» -) Однако сегодня речь пойдет о свежей, еще не закрытой уязвимости в .Net, на которую меня навел своей мыслью один человек (кто подкинет ему инвайт?), который написал мне на почту:

                    Вы пытались IL кодом приводить объекты к строковому типу и передавать в другие домены?


                    Сначала я его не понял, но потом родился пример кода, который пробрасывает любой объект типа, находящегося в SharedDomain в песочницу и позволяет использовать его методы БЕЗ маршаллинга.

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

                    Первое, что нам понадобится — это ставшие обыденностью, методы EntityPtr.ToPointer() и *.ToInstance() из DotNetEx. Их комбинация заставляет приводить объект к несовместимому типу. Т.е. к тому типу, которым он не является:
                    string str = EntityPtr.ToInstance<string>(EntityPtr.ToPointer(new List<int>()));

                    Естественно, если вызвать любой метод у такой «строки», ничего не получится: вылетит Exception (кроме виртуальных методов от object — их позиции в таблице вирт методов совпадут с переопределенными в нашем типе и вызов произойдет корректно)

                    Однако, поскольку строка является уже сериализованным объектом, то при маршаллинге она передается по ссылке, без копирования. Это значит, что мы можем прокинуть ее в метод, код которого выполняется в «песочнице» и там, внутри, сделать кастинг обратно в тип.
                    Читать дальше →
                    • +20
                    • 7,6k
                    • 9
                  • Пишем расширения c Roslyn к 2015 студии (часть 2)

                    • Tutorial
                    … Эта статья является продолжением первой части о написании расширений к студии с Roslyn.

                    Тут я буду описывать что делать, если мы хотим сгенерировать/поменять какой-нибудь код. Для генерации кода мы будем статические методы класса SyntaxFactory. Некоторые методы требуют указать ключевое слово/тип выражения/тип токена, для этого есть перечисление — SyntaxKind, который содержит все это вместе.

                    Хорошо, давайте для примера сгенерируем код, содержащий число 10. Это делается просто.

                    SyntaxFactory.LiteralExpression(SyntaxKind.NumericLiteralExpression, SyntaxFactory.Literal(10))

                    Я не шутил, когда говорил, что чтобы создать код проще всего распарсить строку. Благо, SyntaxFactory предоставляет кучу методов для этого (ParseSyntaxTree, ParseToken, ParseName, ParseTypeName, ParseExpression, ParseStatement, ParseCompilationUnit, Parse*List).

                    Но это не путь настоящего самурая.
                    Давайте генерировать по пути самурая
                    • +27
                    • 6,2k
                    • 2
                  • Предлагаю нестандартный опросник по .Net

                      Предлагаю не совсем стандартный опрос по платформе .Net. Спойлерами раскрыты ответы на вопросы, но все-таки прошу сначала самим ответить на опросник, после чего идти и смотреть ответы :)

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

                      Изначально, когда методы компилируются, все точки вызова других методов указывают не на скомпилированное тело, а на кусочек ассемблерного кода фиксированной длинны и содержащий одни и те же инструкции для любого метода. По сути меняется только адрес, на который происходит jmp. До того как метод скомпилирован, адрес указывает на компилятор этого метода (потому при первом вызове происходит компиляция). Далее, когда компиляция закончена, аргумент команды jmp меняется с адреса компилятора на адрес целевого, уже скомпилированного метода. Плюсы очевидны: т.к. прокси — содержит одно и те же инструкции, то группу методов можно рассматривать как таблицу с двумя полями: Код и Адрес Перехода с одной стороны и не менять адреса у инструкции вызова метода — с другой.

                      Читать дальше →
                    • Курсы этичного хакинга и тестирования на проникновение. Новый набор

                        Курсы этичного хакинга и тестирования на проникновение. Практическая подготовка.


                        Поздравляем всех читателей блога PENTESTIT с новым, 2015-м годом, который, скорее всего, будет сложным, но интересным и многое расставит на свои места. Кризис — время непростое, но что, как не кризис провоцирует компании массово оптимизировать расходы и повышать качество услуг, а сотрудников стимулирует поддерживать, повышать уровень профессиональной подготовки? Кризис — это время возможностей. Как для самосовершенствования, так и для развития нового бизнеса.

                        В предыдущих статьях мы подводили итоги нашей работы в 2014 г. Для нас этот год оказался весьма позитивным. Проделав большой объем работы, удерживая на высоком уровне качество услуг, мы смогли сделать большой шаг вперед, расширив рынок не только в России, но и в странах Восточной и Западной Европы, Северной Америки, Азии и, конечно, СНГ. Спасибо всем тем, кто по-достоинству оценил нашу работу и профессионализм.

                        Обновленная программа, включающая самый актуальный материал.
                        В конце прошлого года мы говорили об изменениях, которые затронут программы обучения «Zero Securty: A» и «Корпоративные лаборатории». Мы дополнили их новыми способами обнаружения и эксплуатации уязвимостей. Отличительной особенностью программы «Корпоративные лаборатории» является то, что помимо хардкорной практической подготовки слушатели получают возможность послушать доклады, которые можно услышать только на профессиональных технических форумах — это одна из отличительных особенностей наших курсов.

                        Примеры заданий по эксплуатации уязвимостей.

                        Читать дальше →
                        • +10
                        • 24k
                        • 3
                      • Упаковка, компрессия и защита сборок

                          последняя редакция статьи доступна на сайте makeloft.xyz

                          Материалы этой статьи описывают механизмы компоновки, компрессии, динамической загрузки, а также пути элементарной защиты .NET-сборок стандартными средствами среды разработки Visual Studio. Однако, возможно, нижесказанное будет в некоторой степени справедливо и для других программных платформ.

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

                          Но, обладая определёнными знаниями, можно выполнить весь процесс самостоятельно с полным контролем на каждом шаге и возможностью отладки уже упакованных сборок…

                          image
                          Читать дальше →
                        • Разработка vs. Тестирование, или куда податься выпускнику ФВТ

                            Среди определенной части специалистов сферы IT бытует мнение, что разработку ПО и тестирование следует рассматривать как процессы-антагонисты. Действительно, написание исходного кода, разработка дизайна и т.д. – это созидательные процессы, в то время как тестирование – всегда носит деструктивный характер. На фоне специфики своей деятельности, между специалистами двух областей непрерывно возникают различные рабочие, а иногда и личностные, конфликты. Поэтому команды разработки и тестирования, зачастую, противостоят друг другу, а сотрудники делятся на «чужих» и «своих». К какому же лагерю примкнуть начинающему айтишнику? Попытаемся проанализировать оба направления и ответить на данный вопрос.
                            Читать дальше →
                          • Visual Studio + Roslyn = конфигуратор для 1С: Предприятие

                              Roslyn позволяет C# проект преобразовать в открытый XML-формат конфигурации 1С: Предприятие. C#-проект при поддержке Visual Studio автоматически снабжается Intellisense, интерактивной проверкой синтаксиса и типов, рефакторингом, расширенным поиском по проекту, поддержкой XmlDoc. Настраиваемое расположение документов проекта на диске и более выразительный и экономный формат делает C#-проект на Visual Studio лучшим выбором в системах версионирования.

                              Понятно, что от чистой теории до реализации всех особенностей 1С очень далеко. Приведенный в статье пример обладает следующими ограничениями. В примере реализована поддержка нескольких типов объектов и нескольких часто встречающихся свойств. Атрибуты объектов могут быть одного типа, хотя 1С допускает составной тип. Трансляция кода в код 1С не поддерживается. Реализованы англоязычные наименования.

                              Читать дальше →
                              • +12
                              • 11,9k
                              • 9
                            • C#: Внутреннее строение инициализаторов массивов

                              Наверняка почти каждому, кто имел дело с C#, известна подобная конструкция:

                              int[] ints = new int[3] { 1,2,3 };//А если уж вдруг и не была известна, то отныне и впредь уж точно
                              

                              Вполне логично было-бы ожидать превращение этой конструкции в нечто подобное:

                              int[] ints = new int[3]; 
                              ints[0] = 1; 
                              ints[1] = 2; 
                              ints[2] = 3;
                              

                              Увы и ах, на деле орех гораздо более морщинист, чем кажется с первого взгляда, и имеются некоторые тонкости, на которые будет указано позже. А до тех пор, наденем ношеную «IL freak» майку (у кого имеется) и погрузимся в недра реализации.
                              Погрузись, и ты узнаешь насколько глубока кроличья нора
                            • Дайджест интересных, топовых и фатальных материалов из мира Хабра за 2014 год

                                В 2014 году на Хабре начали набирать обороты дайджесты интересных материалов и событий по разным тематикам. В этом посте будут рейтинги постов Хабра за 2014 год. Вдруг кто-то пропустил или думает, что почитать на выходных.

                                Для рейтинга был найден последний, судя по дате, пост 2013 года. Первый после него пост 2014 года был 11 января. Видимо автор начал писать его до НГ, а потом резко оказалось 11 января после праздников. А вот следующий уже ближе к началу года. В общем, возможно, есть минимальные погрешности.

                                За 2014 год на Хабре и GT, куда переехали некоторые посты, находится 7672 опубликованные записи. Это примерно 21 пост в сутки.

                                Из всех этих записей были выбраны 20 топовых по количеству плюсов, 10 антитоповых по количеству минусов, и по 15 интересных записей из разных хабов, где количество постов с рейтингом +20 было более 10. Интерес поста оценивался простой формулой «на глаз». Результат равен рейтингу*5 плюс количество попаданий в избранное*2 и плюс комментарии. Коэффициенты добавлены для того, чтобы минусные посты ушли дальше в минус и, если в них было много комментариев, они не вытеснили интересные посты из топа.

                                В общем, дайджест топовых, фатальных и интересных постов Хабра за 2014 год под катом.
                                Посмотреть длинный список постов