• Эффективность обзоров простых игр под iOS

      image

      В предыдущей статье я вывел формулу успешности приложения. Под приложением я понимаю простую, казуальную игру, разработанную под iOS. Что-то вроде тетриса, кроссворда, судоку, 2048, японского дурака, косынки. На создание которого уходит неделя программисткого труда. Для проверки формулы необходима достаточно большая статистическая выборка — порядка 10.000 честно загруженных приложений. Я попытался решить эту задачу при помощи обзоров на 4-х русских и 2-х зарубежных площадках. Кроме того, отследил в первой версии программы наиболее популярные нажатия на кнопки, убрал второстепенные элементы управления, учел замечания игроков и получил следующие результаты.
      Читать дальше →
    • Видеозаписи докладов конференции AI&BigData Lab

      • Tutorial


      Команда проекта GeeksLab 12 апреля 2014 года в Одессе провела конференцию «Al&BigData Lab», которая была посвящена большим данным и искусственному интеллекту.

      Презентации и видеозаписи докладов под катом.
      Читать дальше →
      • +30
      • 9,7k
      • 2
    • О правомерности работы физического лица с магазином App Store в РФ

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

        Итак, суть статьи заключается в том, чтобы понять: можно ли в РФ физическому лицу законно получать прибыль от продаж программ в App Store? Просмотр тематических форумов с подобными вопросами привел к выводу: мнения людей на этот счет расходятся. Одни считают, что можно, другие — что такая деятельность будет квалифицироваться как незаконная предпринимательская деятельность, т.к. договор от Apple — это агентский договор и в нем нет ни слова про авторские вознаграждения, и, как следствие, нужно регистрироваться в качестве индивидуального предпринимателя (ИП).
        Читать дальше →
      • Fody и его плагины

          image
          С выходом Roslyn разговоры о том, что скоро кода можно писать будет меньше вспыхнули с новой силой. Сегодня я расскажу немного о другом подходе как писать меньше кода и соответственно делать меньше ошибок — расскажу о Fody. На хабре упоминание нашёл только вскользь в рамках решения како-то проблемы. Для того, чтобы заинтересовать читателя, ещё не решившего стоит ли тратить своё время на данный текст отмечу, что популярный NotifyPropertyWeaver переехал на Fody и с помощью Fody можно делать всякие там классные AOP.
          Читать дальше →
          • +17
          • 20,5k
          • 6
        • Cетевое взаимодействие посредством TCP в C# — свой велосипед

          • Tutorial


          Приветствую!

          Продолжу серию постов посвященных программированию, на этот раз я хочу поговорить на тему сетевого взаимодействие посредством TCP соединения между .Net приложениями. Статья может быть полезна новичкам или тем кто еще не сталкивался с сетью по отношению к .Net. Полностью работоспособный пример прилагается: http://yadi.sk/d/1OxmAFuCN3kmc.

          Подробности под катом.
          Читать дальше →
          • +2
          • 36,1k
          • 9
        • Bootstrap Dropdown Menus Enhancement v3.1.1

            Около года назад, я создал расширения выпадающих меню для Bootstrap v2 (хабрапост). В связи с пасхальными праздниками наконец нашлось время обновить функционал до версии 3 (Bootstrap v3).
            Список функций:
            • Добавлена поддержка подменю
            • radio и checkbox
            • позиционирование
            • bullet

            Читать дальше →
          • Что такое Томита-парсер, как Яндекс с его помощью понимает естественный язык, и как вы с его помощью сможете извлекать факты из текстов

              Мечта о том, чтобы машина понимала человеческий язык, завладела умами еще когда компьютеры были большими, а их производительность – маленькой. Главная проблема на пути к этому заключается в том, что грамматика и семантика естественных языков слабо поддаются формализации. Кроме того, от языков программирования их отличает присутствие многозначности.

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

              image

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

              Называется технология Томита-парсер, и по большому счету, любой желающий может воспользоваться ей уже сейчас: бинарные файлы доступны для скачивания. Однако прежде чем пользоваться технологией, нужно научиться ее правильно готовить.
              Читать дальше →
            • Катаемся на флоппике и изучаем перспективный роутер. (В этой статье не пострадал ни один TP-Link MR3020 и TL-WR703N, и отделался легким испугом HAME MPR A100 (A2))

              • Tutorial
              Всем привет!

              Сегодня хочу рассказать о интересном мобильном роутере HAME MPR-A100 (аналог HAME MPR-A2). Устройство показалось интересным, особенно для «кухонного» роботостроения и я решил рассказать о нем. Статью построю следующим образом — сначала расскажу о самом роутере, а потом построим на его основе максимально простой и дешовый бот на колесном шасси из подручного материала. Будет проще и дешевле чем в прошлый раз.

              И самое главное найден ответ на вопрос — «Что делать с вашим старым флоппиком который лежит в шкафу?»

              Основное преимущество — сразу с коробки будем иметь довольно большой аккумулятор (5000mAh) со всей обвязкой, и туда можно установить OpenWrt. Если подключить фантазию то может получится множество новый решений на основе этого роутера.



              Читать дальше →
            • Yii 2.0 beta

                Нам очень приятно сообщить о выходе бета-версии PHP фреймворка Yii 2. Вы можете загрузить его с yiiframework.com.

                Бета включает в себя сотни новшеств, изменений и исправлений с релиза альфы.
                Далее мы сделаем обзор наиболее важного, но сначала ответим на часто задаваемые вопросы.

                Читать дальше →
              • Семь лет WPF: что изменилось?

                • Перевод
                Прим. перев.: это перевод статьи Six years of WPF; what's changed?, написанной 3 августа 2012 года. Сейчас WPF уже не шесть, а семь лет, однако ничего не изменилось.

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

                Шесть лет назад я написал статью про валидацию в WPF на Code Project. Ещё я написал свой error provider, который поддерживает IDataErrorInfo, потому что — вы не поверите! — WPF 3.0 не поддерживал IDataErrorInfo. Позже я работал над несколькими опенсорсными WPF проектами вроде Bindable LINQ (первоначального реактивного программирования для WPF, ещё до изобретения Rx) и Magellan (MVC для WPF а-ля ASP.NET). Я даже некоторое время состоял в клубе, посвящённому превозносению MVVM и киданию ссылок на Code Project, известном как WPF Disciples («Приверженцы WPF»).

                Когда я оглядываюсь на WPF, я вижу технологию с отличным фундаментом, которая была испорчена плохой реализацией и, что более важно, отсутствием финансовых вложений. Я рад, что для меня это в прошлом.

                Вот как в далёком 2006-м году выглядела разметка относительно простого окошка (код позаимствован из проекта, над которым я тогда работал):

                	<Window x:Class="PaulStovell.TrialBalance.UserInterface.MainWindow"
                	  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                	  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                	  xmlns:tb="clr-namespace:PaulStovell.TrialBalance.UserInterface"
                	  xmlns:tbp="clr-namespace:PaulStovell.TrialBalance.UserInterface.Providers"
                	  xmlns:system="clr-namespace:System;assembly=mscorlib"
                	  Title="TrialBalance" 
                	  WindowState="Maximized"
                	  Width="1000"
                	  Height="700"
                	  Icon="{StaticResource Image_ApplicationIcon}"
                	  Background="{StaticResource Brush_DefaultWindowBackground}"
                	  x:Name="_this">

                Только взгляните на все церемонии! x:Class! Пространства имён XML! Почему бы не объявить всё это в одном месте, почему бы стандартные пространства имён не включать неявно?

                К счастью, сейчас 2013-й год, и WPF был проделан огромный путь. Вот так код будет выглядеть сегодня:
                Даёшь прогресс!
              • [видео] Как избежать незапланированного отката: разбор 7 реальных переговорных ситуаций

                  Раз уже тема переговоров с заказчиками и коллегами оказалась интересна хабровчанам (48,000 просмотров видео за неделю), мы решили продолжить эту тему.

                  Предыдущие материалы:


                  На этот раз мы попросили Дмитрия Коткина, руководителя Санкт-Петербургской школы переговорщиков ШиП разобрать ситуации более подробно. Правда, и ситуации не такие простые. Более конкретные, про проектную работу в ИТ, с непростыми заказчиками и коллегами.

                  Надеемся, что это окажется вам полезным. Видео-разборы 7 реальных ситуация — под катом:
                  • “На свободу — с готовой отчетностью!”
                  • “4 часа, чтобы сделать клиенту чушь”
                  • “Миссия невыполнима (с данным оборудованием)”
                  • “Начинайте работы, через 14 часов открытие магазина”
                  • “Наш бюджет в 3 раза меньше”
                  • “Незапланированный откат”
                  • “Если у вас в руках молоток, то все вокруг кажется гвоздем”


                  Читать дальше →
                • Как Минковский во Flappy Bird играл



                  Многие пробовали играть во Flappy Bird. Редко кому удается пролететь за 50 труб, очень немногие долетают до сотни-двух. Некоторые пробовали создать бота, в том числе на хабре. Удивительно, но даже у самого успешного бота, которого можно найти на просторах интернета, результаты не очень-то впечатляют – что-то около 160 очков. Возникает вопрос, а можно ли вообще играть во Flappy Bird бесконечно долго? Или всегда с некоторой, пусть и небольшой, вероятностью может встретиться последовательность препятствий, которую даже опытный игрок/идеальный бот не сможет преодолеть?

                  И тут на помощь приходит математика. Давайте найдем выигрышную стратегию для Flappy Bird.
                  Читать дальше →
                • Тренды e-commerce: Зарубежные игроки приходят в Россию

                    image

                    Недавно мы писали о том, что российский рынок электронной коммерции довольно интересен зарубежным игрокам, и рассуждали о том, как российские интернтет-магазины (особенно небольшие), могли бы противостоять угрозам из-за границы. На днях стало известно о том, что крупнейший игрок мирового ecommerce-рынка — eBay, заключил партнерское соглашение с Wikimart. Цель сотрудничества — ускорение доставки товаров российским клиентам компании.
                    Читать дальше →
                  • «Сверхзвуковая» загрузка фотографий в Облако с помощью собственного NSInputStream



                      Максимально быстрая загрузка фотографий и видео с устройства на сервер была нашим основным приоритетом при разработке мобильного приложения Облако Mail.Ru для iOS. Кроме того, с самой первой версии приложения мы предоставили пользователям возможность включить автоматическую загрузку на сервер всего содержимого системной галереи. Это очень удобно для тех, кто волнуется о возможной потере телефона, однако, как вы понимаете, увеличивает объем передаваемых данных в разы.

                      Итак, мы поставили перед собой задачу сделать загрузку фото и видео из мобильного приложения Облака Mail.Ru не просто хорошей, а близкой к идеальной. Результатом стала наша библиотека POSInputStreamLibrary, которая реализует потоковую загрузку в сеть фото и видео из системной галереи iOS. Благодаря ее тесной интеграции с фреймворками ALAssetLibrary и CFNetwork загрузка в приложении происходит очень быстро и не требует ни байта свободного места на устройстве. О реализации собственного наследника класса NSInputStream из iOS Developer Library я расскажу в этом посте.
                      Читать дальше →
                    • 5 способов сравнить два байтовых массива. Сравнительное тестирование

                      секундомерВ результате профилирования моей софтины я сделал вывод о необходимости оптимизации функции сравнения буферов.
                      Т.к. CLR не предоставляет стандартного способа сравнить два куска памяти, то функция была написан на скорую руку самостоятельно (лишь бы работало).
                      Погуглив по фразе «Best Way to Compare Byte Arrays in .Net», я пришёл в замешательство: в абсолютном большинстве случаев люди предлагали использовать либо LINQ, либо Enumerable.SequenceEqual(), что практически одно и тоже. Даже на StackOverflow это был самый популярный ответ. Т.е. катастрофически популярно заблуждение вида:

                      «Compiler\run-time environment will optimize your loop so you don't need to worry about performance.» Отсюда.

                      Именно оно впервые навело меня на мысль написать этот пост.
                      Я провёл сравнительное тестирование пяти способов сравнения буферов, доступных из C#, и на основании результатов тестирования дал рекомендации в выборе способа.
                      Кроме того, я декомпилировал некоторые функции, и проанализировал код, генерируемый JIT-компилятором для конфигурации x86, а так же сравнил машинный код, генерируемый JIT-компилятором, с машинным кодом функции CRT аналогичного назначения.
                      Читать дальше →
                    • Модель Random Forest для классификации, реализация на c#

                        Доброго времени суток, читатель. Random Forest сегодня является одним из популярнейших и крайне эффективных методов решения задач машинного обучения, таких как классификация и регрессия. По эффективности он конкурирует с машинами опорных векторов, нейронными сетями и бустингом, хотя конечно не лишен своих недостатков. С виду алгоритм обучения крайне прост (в сравнении скажем с алгоритмом обучения машины опорных векторов, кому мало острых ощущений в жизни, крайне советую заняться этим на досуге). Мы же попробуем в доступной форме разобраться в основных идеях, заложенных в Random Forest (бинарное дерево решений, бутстреп аггрегирование или бэггинг, метод случайных подпространств и декорреляция) и понять почему все это вместе работает. Модель относительно своих конкурентов довольно таки молодая: началось все со статьи 1997 года в которой авторы предлагали способ построения одного дерева решений, используя метод случайных подпространств признаков при создании новых узлов дерева; затем был ряд статей, который завершился публикацией каноничной версии алгоритма в 2001 году, в котором строится ансамбль решающих деревьев на основе бутстреп агрегирования, или бэггинга. В конце будет приведен простой, совсем не шустрый, но крайне наглядный способ реализации этой модели на c#, а так же проведен ряд тестов. Кстати на фотке справа вы можете наблюдать настоящий случайный лес который произрастает у нас тут в Калининградской области на Куршской косе.

                        Читать дальше →
                      • Мобильные приложения «Сочи 2014»: как показать мегабайты результатов пользователям

                          Вот и отгремели «Жаркие.Зимние.Твои» Олимпийские игры. Не смотря на весь скепсис, переживания и недоверие, игры, без сомнения, прошли хорошо. Как один из участников этого проекта, отвечающий в составе интернет-команды за официальные мобильные приложения, хотел бы поделиться с интернет-сообществом некоторыми подробностями, как это всё вообще стало возможным и как было реализовано.
                          Читать дальше →
                        • HybridAuth — интеграция сайта с социальными сетями

                          • Tutorial

                          Введение


                          На своем сайте на php для авторизации пользователей я в последнее время пользовался сервисом Loginza. Все было очень круто и удобно, но в голове начала зарождаться идея отказа от этого замечательного сервиса и вот почему:

                          1. Авторизация пользователей в случае закрытия Loginza или отказа от нее — в этом случае мы потеряем пользователей, в привязанных профилях которых не указан email;
                          2. Дополнительная информация, например, ВКонтакте умеет отдавать фото пользователя в нескольких видах, в том числе квадратный аватар. С Логинзой получить эти данные не представляется возможным, сервис сам решает какие данные запрашивать и какие отдавать;
                          3. С момента продажи Яндексу Логинза начала умирать: на запросы пользователей никто не отвечает, сервис не развивается, а находится в том виде, в котором был 1-2 года назад.

                          Встал вопрос замены и использовать альтернативные сервисы желания уже не возникало — никто не представлял возможности «общаться» с соц. сетью напрямую, а расширенные поля профиля обычно включались в платные услуги. Хотелось автономного решения с возможностью гибкой настройки запрашиваемых полей и в итоге я остановился на php библиотеке HybridAuth.
                          Подробнее о HybridAuth
                        • 9 главных тенденций рынка мобильных приложений в 2013 году



                            Известный сервис аналитики App Annie выпустил традиционный отчет о рынке мобильных приложений в 2013 году.
                            Ушедший год стал большой вехой для всей индустрии мобильных приложений, готовя почву для новых интересных возможностей в 2014 году.

                            Хочу привести основные тезисы доклада, которые, надеюсь, помогут вам принимать правильные решения в новом году:
                            Тренды в картинках
                            • +22
                            • 21,2k
                            • 6
                          • Невыносимая сложность программирования


                              A n00b y0u areКогда-то книга “Совершенный код” Стива МакКоннела произвела на меня большое впечатление. Я лично думаю, что эту книгу обязательно должен прочесть каждый, кто зарабатывает на жизнь написанием кода. Особенно настоятельно я рекомендую эту книгу новичкам.

                              Настоящие размышления о программировании посвящаются главе 33 “Личность” и тем, кто решил связать свою жизнь с разработкой программного обеспечения.
                              Читать дальше →