• Пишем гаджет Windows Sidebar с нуля

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

    Сразу покажу то, что получилось в итоге


    Читать дальше →
  • Как я заработал $200K на рынке образовательных приложений iOS

      Данную статью хочу приурочить к одновременно выходу второй версии моего приложения Word Wizard и взятию новой отметки в $200 000 в Apple AppStore. Далее я постараюсь поделиться своим опытом и мыслями об образовательном рынке, а также рассказать свою историю успеха. Надеюсь что эта информация будет полезна многим независимым разработчикам. Для тех же кто создает образовательные продукты на платформе iOS моя статья даст возможность оценить рынок приложений в этой сфере.



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

      • Translation
      • Tutorial
      Эта статья является переводом цикла из четырёх статей «Linear algebra for game developers», написанных David Rosen и посвящённых линейной алгебре и её применению в разработке игр. С оригинальными статьями можно ознакомиться тут: часть 1, часть 2, часть 3 и часть 4. Я не стал публиковать переводы отдельными топиками, а объединил все статьи в одну. Думаю, что так будет удобнее воспринимать материал и работать с ним. Итак приступим.
      Читать дальше →
    • Вызов unmanaged code из managed без P/Invoke

        Продолжаем маршалировать. На этот раз будет рассмотрен способ вызова С-шных функций из C# без использования P/Invoke( [DllImport] ). А если быть до конца точным, то [DllImport] использовать все же придется, но только один раз. По существу, данная статья является статьей о маршалинге делегатов в указатели на функции и обратно.
        Итак, приступим.
        Читать дальше →
      • Вызов managed кода из unmanaged

        В данной статье будет рассматриваться вызов управляемого C# — кода(.Net) из неуправляемого С — кода.
        Как-то раз на работе дали проект, точнее даже не сам проект, а только его часть. Сам же проект состоял из двух частей: функционал, написанный на С (unmanaged code) и интерфейсная часть, написанная на C# (managed code). Моей задачей было написать интерфейс и связать его с функционалом.
        Читать дальше →
      • Как выполнять методы предков в реализации прототипного наследования

          При работе с наследованием иногда возникает желание иметь функцию доступа к методу предка (методу родительского класса) — в конструкторе (аналоге класса для Javascript) или в методе-потомке, потому что, бывает, что новый класс переопределяет его. Не просто какую-нибудь функцию (метод), а с совершенно понятной записью, чтобы название говорило само за себя, и имеющую доступ к указанному поколению предков (не «пра-пра-пра-», а «пра- 3 раза»).

          Возьмём за основу метод прототипного наследования, который максимально эффективен тем, что производит минимум действий при описании цепочек наследуемых классов и при этом максимально поддерживает базовые операции и свойства наследования: instanceof, constructor. Для доступа к предку он создаёт свойство .superclass.
          Читать дальше →
        • Аппликация Expressions

            Добрый день.

            Просматривая недавно чужой код, наткнулся на довольно интересную задачу о IQueryable и Expession trees. Надеюсь, решение будет кому-нибудь полезно.

            Задача заключается в том, чтобы повторно использовать некоторый Expression внутри другого Expression, например, у нас есть некий f:

            Expression<Func<int, int, int>> f = (a, b) => a + b;
            


            И мы бы хотели использовать этот f внтури другого expression, например так:

            Expression<Func<int, int, int, int>> g = (a, b, c) => f(a+b,b)*c;
            


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

            Решение
          • Барьеры памяти и неблокирующая синхронизация в .NET

            Введение


            В этой статье я хочу рассказать об использовании некоторых конструкций, применяющихся для осуществления неблокирующей синхронизации. Речь пойдёт о ключевом слове volatile, функциях VolatileRead, VolatileWrite и MemoryBarrier. Мы рассмотрим, какие проблемы вынуждают нас воспользоваться этими языковыми конструкциями и варианты их решения. При обсуждении барьеров памяти вкратце рассмотрим модель памяти .NET.
            Читать дальше →
          • Десять гребаных лет на разработку ERP

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

              Меня пригласили на встречу в компанию, которая десять (!!!) лет своими силами разрабатывала программный продукт для управления бизнес процессами (язык не поворачивается этот продукт назвать erp системой).
              И вот по истечении десяти лет руководство компании понимает, что… ничего не понимает. В буквальном смысле слова. Программный продукт прекрасно решает вопросы, связанные с логистикой. Иными словами все вопросы, от момента получения заказа до момент вручения груза клиенту, решены весьма и весьма неплохо. Действительно неплохо. И все. Больше ничего.

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

              Читать дальше →
            • Снова используем Unmanaged С++ код в .NET программах

                .NET C++

                Около года назад я писал статью о том, как можно вызывать методы классов написанных на чистом Си++ из любой .NET программы не прибегая к регистрации COM библиотек, C++/CLI и т.п.

                Сегодня я расскажу об еще одном оригинальном и весьма удобном подходе, а, кроме того, этот топик будет интересен всем хаброчитателям которые хотят побольше узнать о замечательном инструменте Reflection.Emit (на мой взгляд эта тема на хабре недостаточно хорошо освещена).

                Читать дальше →
                • +52
                • 3.8k
                • 7
              • Исследование: 20% разработчиков игр для App Store получают 97% всех денег

                • Translation


                19 сентября я запустил опрос среди разработчиков игр для iOS с целью получить статистику по доходам как можно большего числа из них. Стояла задача сформировать реалистичную картину сегодняшнего состояния рынка и поделится этой информацией с сообществом. Меня к этому подвигло обилие статей, описывающих ситуацию в крайностях: “Разработчик сколотил миллионы на iOS играх!” или же “Игра заработала $0 в App Store”.

                С мыслью получить объективное состояние дел, 19 сентября 2011 года я запустил семидневный опрос, в котором приняло участие 252 разработчика.
                Читать дальше →
              • Каталог брендов по $250 (с доменами .com)

                  Наглядный пример для домейнеров, как нужно строить модель бизнеса: новый сервис Stylate. Здесь начинающий стартап может подобрать красивое имя для сайта — и сразу купить выбранный домен .com вместе с логотипом в векторном формате. Логотип идёт как бонус. Самое главное, что пакеты «домен+логотип» продаются по единой цене $250. Это настоящий демпинг на рынке красивых доменов, где сделки часто проходят в районе $10 тыс.



                  Пока что каталог Stylate весьма скромный: на продажу предлагается всего 33 бренда, но уже готов рубрикатор на 31 отрасль. Очевидно, они будут пополнять ассортимент.

                  Stylate также готов покупать красивые домены у других домейнеров, но сейчас их завалили списками из сотен имён, так что ребята пересматривают финансовые условия.
                • Кроссбраузерный вызов методов Flash из JavaScript

                  • Translation
                  Неделю назад в одном из моих проектов возникла задача заменить существующее слайд-шоу, реализованное на JavaScript более красивым, сделанным на Flash. При минимальном изменении кода требовалось вставить флеш-ролик и наладить передачу данных и обработку событий на страничке так, чтобы она и дальше продолжала работать корректно.

                  Русскоязычные статьи на тему передачи данных в связке JavaScript—Flash дают общее представление о процессе, но не учитывают одну важную деталь: в разных браузерах следует использовать различные объекты для выбора флеш-ролика. Наиболее часто предлагаемое решение работает в Chrome, но отказывается работать в Firefox, и уж тем более в IE.

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

                  Читать дальше →
                • Портирование приложений на Windows Phone 7

                    Microsoft старается упростить программистам портирование приложений с других платформ.

                    На сайте WindowsPhone.interoperabilitybridges.com опубликована таблица соответствий функций API для различных платформ (деревянное меню слева) функциям из Windows Phone 7 (тело страницы):

                    image

                    Интересно сравнить насколько сложно реализуется сходный функционал на разных платформах.
                    Читать дальше →
                  • Разработка игры с использованием Box2D на ActionScript 3

                    Доброго времени суток, дорогой читатель!
                    Недавно была опубликована статья, где описывалась работа с движком Box2D.
                    Однако, движок на сайте был версии 2.1a работа с которым, к сожалению, отличалась от работы предоставленной в статье. К сожалению скудная иностранная документация по этой версии движка заставила во многом разбираться самому. Частью своих изысканий я бы хотел поделиться с тобой, дорогой читатель.
                    Читать дальше →
                  • 20 бесплатных дополнений для Visual Studio

                      Для Visual Studio 2010 создано уже около 900 дополнений. Многие из них позволяют облегчить решение рутинных задач, добавить удобства. Ниже представлено двадцать популярных дополнений, которые вы возможно найдете полезными для вашей работы.
                      Читать дальше →
                    • Real-life unit tests

                      • Tutorial
                      Часто мне приходилось слышать, что кто-то послушал лекцию или прочитал статью про юнит-тесты, вроде как всё понял; решил сам попробовать — и ничего не получилось.

                      Почему так получается?

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

                      В этом видео на живом примере показано, как писать юнит-тесты для кода с внешними зависимостями.

                      www.devclub.eu/2011/06/06/asolntsev-real-life-unit-tests

                      Слайды и пояснения:
                    • Бот для Flash-игры / Внедряемся в Flash


                        В рамках недели ботов для браузерных игр.

                        Эта неделя богата на статьи о ботах для бразуерных игр.
                        Во всех статьях для управления ботом использовался AutoIT. Это простой и хороший способ чтобы начать делать бота «в лоб», он не требует никаких знаний об игре, кроме как знания правил и графического интерфейса. Для серверной части игры такой бот вообще будет выглядеть как обычный пользователь, если не брать во внимание невероятную усидчивость и производительность такого игрока.

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

                        В первой статье я наткнулся на комментарий со ссылкой на пост Adobe Profiler Fail, что побудило меня исследовать эту возможность в целях автоматизации действий в Flash-играх.
                        Читать дальше →
                      • Создаём шрифт, имитирующий ваш рукописный почерк

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

                        Исходя из всего вышесказанного, я пришёл к выводу: нужно сделать шрифт для компьютера, дублирующий мой почерк. На мой взгляд, сделал я его успешно. Родная мать не отличит, где я писал от руки, а где напечатал компьютер. Многим моим знакомым понравилась эта затея, и они стали расспрашивать меня, как я это всё сделал. И чтобы каждому по сто раз не объяснять, я решил написать эту статью – план выполнения работы с подробными комментариями.

                        Итак, в этой статье я расскажу вам, как сделать шрифт, имитирующий ваш почерк.
                        Читать дальше →