• Персистентная оперативная память

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

      Персистентная оперативка — очень простая и очень непростая вещь.

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

      Ну, действительно — неважно: если мы смогли спасти состояние компьютера перед его отключением, то можно восстановить это состояние в другом. Таком же. Вообще таком же? Прямо до микросхемы? А если в нём видеокарта другая — уже нельзя?

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

      А задача — именно такова. Обеспечить программе среду, в которой остановка ОС и остановка компьютера для программы выглядели исключительно как нажатие на кнопку «пауза» при просмотре фильма. Во время паузы «под программой» можно даже компьютер поменять, но надо как-то обеспечить ситуацию, в которой продолжение работы для программы будет совершенно прозрачным.

      Это недостижимо, если требование доводить до абсолюта. Состояние хардвера сохранить и полностью восстановить нельзя. Но и не надо. Программе не нужна видеокарта, ей нужен тот же API и сохранённая картинка на экране, а это — можно.

      Что вырисовывается: сохранить состояние только оперативки — мало, а всего компьютера — нереально.

      Инженерная смекалка говорит нам, что нужно специфицировать для программы некоторую среду, которой во-первых, достаточно для самой программы, а во-вторых, в рамках такой среды должно быть возможно выполнить сохранение консистентного состояния программы и всего, что она «видит».
      Читать дальше →
    • Стандарт ECMA-262 (JavaScript) в картинках, часть 1



      Про устройство JavaScript написано много статей. В первую очередь, это "JavaScript. Ядро." Дмитрия Сошникова, перевод статьи Ричарда Корнфорда и поста Дмитрия Франка. Но для того чтобы хорошо разобраться в какой-либо технологии лучше обратиться к первоисточникам. В данном случае к стандарту ECMA-262 ECMAScript Language Specification. Я рассматриваю этот пост как облегченный способ начать изучение стандарта. Рекомендую переходить по ссылкам, вчитываться в текст спецификации и составлять собственные схемы.
      Читать дальше →
      • +8
      • 22.3k
      • 1
    • Три основных браузера добавили поддержку низкоуровневого бинарного формата WebAssembly

      • Translation
      Google, Microsoft и Mozilla на этой неделе синхронно выпустили экспериментальные билды браузеров с поддержкой WebAssembly (wasm) — эффективного низкоуровневого языка программирования, выполняющегося в браузере с производительностью гораздо выше, чем у самых современных и скоростных компиляторов JavaScript.

      Разработчик из Mozilla Люк Вагнер рассказал на Mozilla Hacks о преимуществах WebAssembly, а также сообщил о портировании на WebAssembly научно-фантастического шутера Angry Bots. Демка запускается в браузерах с поддержкой WebAssembly — это последние версии Chrome Canary, Firefox Nightly и Microsoft Edge. Скоро к ним присоединится Safari на WebKit.
      Читать дальше →
    • Tree — убийца JSON, XML, YAML и иже с ними

      Здравствуйте, меня зовут Дмитрий Карловский и я… много думал. Думал я о том, что не так с XML и почему его в последнее время променяли, на бестолковый JSON. Результатом этих измышлений стал новый стандарт формат данных, который вобрал в себя гибкость XML, простоту JSON и наглядность YAML.

      image Tree — двумерный бинарно-безопасный формат представления структурированных данных. Легко читаемый как человеком так и компьютером. Простой, компактный, быстрый, выразительный и расширяемый. Сравнивая его с другими популярными форматами, можно составить следующую сравнительную таблицу:
      Больше — лучше JSON XML YAML INI Tree
      Человекопонятность 3 1 4 5 5
      Удобство редактирования 3 1 4 5 5
      Произвольная иерархия 3 3 3 1 5
      Простота реализации 3 2 1 5 5
      Скорость парсинга/сериализации 3 1 1 5 5
      Размер в сериализованном виде 3 1 4 5 5
      Поддержка поточной обработки 0 0 5 5 5
      Бинарная безопасность 3 0 0 0 5
      Распространённость 5 5 3 3 0
      Поддержка редакторами 5 5 3 5 1
      Поддержка языками программирования 5 5 3 5 1
      Читать дальше →
    • Идеальное собеседование айтишника

      • Tutorial
      – Папа, а идеальное собеседование существует?
      – Нет, сынок, это фантастика.
      (с)

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

      Читать дальше →
    • Entity Framework Code First на практике

      Здравствуйте!

      В этой публикации хочу поделиться личным опытом использования Entity Framework (EF) в реальном приложении и дать несколько полезных советов использования данного фреймворка.

      Я занимаюсь разработкой enterprise приложений на платформе .NET больше 7 лет, за это время перепробовал несколько ORM библиотек, но сейчас для новых проектов использую Entity Framework Code First.
      Читать дальше →
    • TDD — «утка». Введение в Quack-Driven Development. Современная waterfowl-методология для программистов

      • Translation


      Предлагаю к ознакомлению вольный перевод статьи Джейсона Хатчерса «TDD(1) is ‘canard. Tell it to the Duck» или дословно: «TDD — Утка. Скажи это утке». (2)

      Автор критикует «ортодоксальный» TDD подход к разработке и предлагает альтернативный.

      И, да, в заголовке статьи нет опечатки (3).

      Читать дальше →
    • Изучаем Three.js.Глава 2: Работа с основными компонентами, из которых состоитThree.js-сцена

      • Translation
      • Tutorial
      Всем привет!
      В предыдущей главе мы познакомились с основами бибилиотекиThree.js. Увидели несколько примеров и создали свою первую полноценную Three.js сцену. В этой главе мы немного глубже углубимся в эту библиотеку и попробуем более подробно объяснить основные компоненты, составляющие Three.js сцену. В этой главе вы узнаете о следующем:
      1. какие компоненты используются в Three.js сцене
      2. что можно делать с объектом THREE.Scene()
      3. какая разница между ортогональной и перспективной камерами

      Начнем мы с того, что посмотрим, как же можно создать сцену и добавить на нее объекты.

      Становится все интересней и интересней...
      • +20
      • 35.8k
      • 9
    • Удачная модель ветвления для Git

      • Translation
      Перевод статьи Vincent Driessen: A successful Git branching model

      В этой статье я представляю модель разработки, которую использую для всех моих проектов (как рабочих, так и частных) уже в течение года, и которая показала себя с хорошей стороны. Я давно собирался написать о ней, но до сих пор не находил свободного времени. Не буду рассказывать обо всех деталях проекта, коснусь лишь стратегии ветвления и управления релизами.



      В качестве инструмента управления версиями всего исходного кода она использует Git.

      Читать дальше →
    • Вёрстка c «Ушами»

        Очень часто фантазия человека, разрабатывающего макет сайта, не ограничивается шириной 1024px, при этом требуется, чтобы сайт выглядел достойно на всех разрешениях и соответствовал полёту мысли дизайнера.

        Проблему можно представить графически так:
        image

        Задача вёрстки заключается в следующем:
        • — независимо от разрешения (размера она браузера), информативная часть сайта находилась посередине;
        • — справа и слева должны остаться графические блоки (уши), причём эти уши должны быть видны только при увеличенном размере экрана браузера, а при уменьшенном не уместившаяся часть должна прятаться (в идеале, чтобы ещё горизонтальной полосы прокрутки не было);;
        • — страница должна быть резиновой от 680px до 1000px.

        Работает для FF3, FF4, IE8 и почти для Opera.
        Читать дальше →
      • Синхронизатор данных. Разработчику на заметку

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

          Если вы решили написать собственный синхронизатор, то скорее всего столкнётесь с рядом вопросов. В этой статье мы поделимся опытом написания такого компонента и рассмотрим требования, предъявляемые к нему. В основу этих требований легли всевозможные пожелания, полученные нами от пользователей, и реальные сценарии использования синхронизатора событий планировщика XtraScheduler. Потому в качестве примеров кода будем приводить фрагменты кода от указанного продукта.
          Читать дальше →
          • +19
          • 13.1k
          • 7
        • Проблема с безопасностью при использовании аутентификации формами в ASP.NET

            Сообщает Peter Vogel

            Два исследователя безопасности, Тай Донг (Thai Duong) и Джулиано Риццо( Juliano Rizzo), обнаружили баг в используемом по умолчанию механизме шифрования, который задействован в защите куки, обычно применяемых для реализации аутентификации формами (Forms Authentication) в ASP.NET. С помощью разработанного исследователями инструмента (Padding Oracle Exploit Tool или POET), можно многократно модифицировать куки, зашифрованные с помощью механизма шифрования AES и, исследуя возвращаемые ошибки, вычислить машинный ключ (Machine Key), используемый для шифрования куки. По утверждениям исследователей, процесс надёжен на 100% и занимает от 30 до 50 минут для любого сайта.

            Читать дальше →
            • +15
            • 1.6k
            • 7
          • “Одинокий разработчик желает познакомиться”. cofounder.ru: дэйтинг-сервис для стартаперов

              Допустим вам не повезло, вы не учитесь в нормальном вузе, у вас нет знакомых инвесторов, а большинство ваших друзей слишком заняты игрой в веселую ферму. А у вас есть идея проекта, вы хороший разработчик и вы хотите найти партнера или даже собрать команду. Вы можете пойти на free-lance.ru, где вы найдете много отличных профессионалов, которые готовы решить любые ваши задачи, но… конечно за деньги. Мало кто из обычных фрилансеров согласится работать за долю в бизнесе, бесплатно, без каких-либо гарантий на успех. Среди общего списка придется долго искать или создавать объявление и ждать пока кто-то вас найдет сам.

              Что же вы будете делать? Все знают слово нетворкинг: вы общаетесь на тематических форумах, пишете на хабрахабр, заводите блог, приходите на встречи, конференции, знакомитесь с новыми людьми, ваш круг общения расширяется и вместе с ним увеличивается возможность выбирать. Чем больше у вас связей с людьми из вашей области, тем лучше. Например, в Штатах, проводятся конференции для стартаперов, билет на который может стоить от $2000 и выше, хотя ценность контента не особенно велика. Что ценно там — это возможность с кем-нибудь познакомиться. Петя вас знакомит с Васей, Вася с Федей, а с Федей вы однажды создаете компанию. Ну или просто пьете пиво по пятницам — это как повезет.
              Читать дальше →
            • Стартапы, эксперты, бизнес-ангелы и Startup Weekend (пояснение)

                По мотивам моих недавних постов и рассказов в разных местах про стартапы, экспертов, бизнес-ангелов и Startup Weekend: я понял, что у части людей есть не полное понимание того, что мы делаем и кого ищем. Поэтому я решил пояснить:

                1. Главстарт ищет новые идеи и проекты. У Главстарта нет своих проектов. Главстарт помогает проектам, сводя их с экспертами и инвесторами. Сайт Главстарта.

                2. Эксперты – это профессиональные участники рынка, готовые серьезно помогать новым проектам: плотно работать с ними на наших мероприятих и после них. Цель эксперта – стать одним из участников проекта (например, получив долю в 5% за свою помощь и участие). Эксперт, вошедший в какой-либо проект, становится признанным ментором Главстарта, эксперт не оказавший помощь ни одному проекту выбывает из списка экспертов Главстарта.

                3. Бизнес-ангелы – люди, у которых есть некоторое количество денег, которые они готовы вложить в проекты, находящиеся на самых ранних стадиях развития, например, сформировавшихся по результатам Startup Weekend, и, как правило, привлекших экспертов в работу над своими проектами. В этом случае эксперт выступает в качестве гаранта качества представляемого им проекта. В некоторых случаях бизнес-ангел и эксперт может быть одним и тем же человеком.

                4. Startup Weekend – мероприятие, на которое приходят люди со своими идеями для того, чтобы найти эксперта и, может быть, и команду для работы над своим проектом. В течение трех дней они работают, после чего представляют свои проекты бизнес-ангелам.

                5. Ближайший Уикенд пройдет 1-3 октября в Москве. Приглашаются проекты (регистрация на сайте Startup Weekend, эксперты (заявки отправляйте на expert@glavstart.ru) и ангелы (заявки отправляйте на angel@glavstart.ru).

                С уважением,
                Аркадий Морейнис
              • «Оживление» пользовательского интерфейса

                  image

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


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

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

                    NAnt logo
                    Добрый день!

                    Я попробовал описать здесь свой опыт автоматизации сборки приложений .NET (в основном, речь идет о web-приложениях).

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

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