• Вычисление факториала на числах Чёрча

      Доброго дня, друзья!

      Тема функционального программирования раскрыта на Хабре весьма неплохо, есть целая куча статей посвященных λ-исчислению, числам Чёрча и подобным темам, так что ничего нового я не открою, зато мы напишем одну бесполезную и крайне неэффективную программу.

      Для того, чтоб жизнь мёдом не казалась, ограничим себя небольшим подмножеством языка JavaScript, а именно, будем использовать только анонимные функции от одного аргумента. Больше нам ничего не потребуется (ну почти).

      Начнем с определения факториала, и посмотрим, что нам понадобится в процессе решения задачи:

      var fact = function (n) {
        if (n === 0) return 1;
        return n * fact(n - 1);
      };
      


      Итак, нам потребуются функции, логические значения (для результата операции сравнения с нулем), условный оператор, операции умножения и вычитания единицы, кроме того нужно будет реализовать рекурсивный вызов функции.

      Готовы?
      Ну тогда поехали.
    • Ошибки новичка в сфере разработки игр


        Оригинал изображения

        Полгода назад я рассказывал про свой опыт работы фрилансером на oDesk. После этого я решил оставить разработку Android приложений на заказ и заняться своей давней мечтой — созданием игр. Мы с друзьями объединились, и работа закипела…

        Для начала хочу рассказать о текущем состоянии проекта:
        Время от разработки до публикации: 2 месяца
        Время нахождения в магазинах приложений: 3 месяца
        Загрузки iOS: > 15000 (93 % русскоязычные пользователи)
        Загрузки Android: > 35000 (63 % русскоязычные пользователи)

        Данный проект не является финансово успешным на данный момент, поэтому я хочу рассказать о наших ошибках.
        Статья в первую очередь предназначена для новичков в сфере разработки игр.
        Читать дальше →
      • Автоматизация тестирования iOS-приложений с применением Calabash и Cucumber



          В процессе разработки любого приложения наступает момент, когда в связи с ростом функциональности трудозатраты на регрессионное тестирование становятся непомерно велики. Другая причина значительной трудоемкости тестирования iOS-приложений (так же как и любых других мобильных приложений) — разнообразие линейки поддерживаемых устройств и версий ОС, необходимость тестирования в альбомном и портретном режимах, а также при различных условиях соединения с интернетом. Стремление оптимизировать процесс тестирования приводит нас к необходимости его полной или частичной автоматизации.

          В этой статье я расскажу о том, как мы автоматизируем тестирование наших приложений (ICQ и Агент Mail.Ru), поделюсь нашими наработками в этой области и упомяну о проблемах, с которыми мы сталкиваемся.
          Читать дальше →
        • «Математика – один из видов искусства»: пост к столетию со дня рождения Мартина Гарднера

          • Translation
          • Tutorial

          Перевод поста Эда Пегга Младшего (Ed Pegg Jr) "Martin Gardner’s 100th Birthday"

          Я думаю, содержание этого поста будет интересно всем, кто любит математику и ее красоту, всем, кто знаком с замечательными книгами и задачами Мартина Гарднера, а также будет полезно учителям, школьникам и студентам. Все ссылки в данном посте ведут на сайты Wolfram Demonstrations Project (коллекция бесплатных интерактивных демонстраций, созданных пользователями системы Mathematica на языке Wolfram Language с помощью технологии Computable Document Format (CDF), при этом для вас доступны исходные коды всех демонстраций, а значит, вы можете каждую из них скачать, изучить и изменить под себя) и Wolfram MathWorld (крупнейшая и самая авторитетная онлайн-энциклопедия по математике).

          Gardner100_1.gif

          Читать далее...
        • 20 ноября — запуск первой стратегической MMO-игры для… программистов

            В следующий четверг состоится запуск проекта, над которым мы работали последние несколько месяцев. Screeps — первая известная мне стратегическая игра в MMO-песочнице, созданная для программистов. Вместо традиционного Point'n'click, геймплей заключается в написании и постоянном улучшении программы для AI ваших юнитов на JavaScript, которая управляет ими непрерывно и автономно — даже когда вы не онлайн. Это радикально новая идея, и если вы программист, вам определенно стоит на это взглянуть.



            Если вы программист, то не думали ли вы в предыдущий раз, когда играли в свою любимую онлайн-игру, чтобы было бы здорово как-нибудь ее автоматизировать? Зачем тратить время своей жизни на выполнение действий, которые легко выполняются ботом? Почему вы должны каждый день заходить в игру, чтобы получить награду, если с этим легко справился бы скрипт? Больше никакой бессмысленной траты времени на действия, которые под силу и ребенку, мы же способны на большее. В Screeps скрипты не просто разрешены, Screeps это игра о скриптах!

            Под катом технические и игровые подробности.
            Читать дальше →
          • Полноценный процессор в Minecraft: как он работает, как на нем программировать и для чего он?

            Все, наверное, знают, что в песочнице Minecraft можно делать абсолютно всё. Различные цифровые схемы и процессоры создают в Minecaft уже с давних пор. Но тот процессор, о котором я пишу, на самом деле уникален! Его название — DjCPU8.



            Почему он уникален? По многим причинам. Давайте по порядку:

            1) Скорость работы. Это пока самый быстрый процессор такого уровня в Minecraft. Одна инструкция выполняется примерно 1 секунду.
            2) Количество памяти. Оперативной памяти аж 256 байт. Не знаю других ЭВМ с таким объемом памяти.
            3) Вычислительные способности. 42 инструкции. Работает с арифметикой, логикой, стеком, вводом/выводом, регистрами и т.д.
            4) Ассемблер. В других процессорах нужно вводить программу в двоичном виде. Но в DjCPU8 можно вводить ее текстом.
            5) Простота. Ни с какой другой ЭВМ невозможно так просто и приятно работать.
            6) Широта применения. Порты ввода/вывода можно создавать в любом месте.
            Читать дальше →
          • Лучшие плагины для Sublime Text

              WebInspector


              Мощный инструмент для дебаггинга JavaScript, полноценный инспектор кода для Sublime. Фичи: установка брейкпоинтов прямо в редакторе, показ интерактивной консоли с кликабельными объектами, остановка с показом стек трейса и управление шагами дебаггера. Все это работает на ура! А еще есть Fireplay от Mozilla, который позволяет подключаться к Firefox Developer tools и максимально простой дебаггер JSHint.



              Читать дальше →
            • Абстракции в компьютерном покере

                image

                Компьютерный покер является весьма нетривиальной задачей в первую очередь из-за громадного количества игровых состояний, которое настолько велико, что мечтать о непосредственном решении этой игры не приходится. Единственным способом хоть как-то научить машину играть в покер является переход к абстракции — уменьшенной копии покера, в которой близкие в стратегическом смысле ситуации исходной игры объединены воедино. Именно вопросам абстракций в покере и посвящена данная заметка.
                Читать дальше →
              • То, чего еще никто не писал про Нокиа, Элопа и горящую платформу

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

                  Традиционно, для тех кто не любит много буков, краткие (более-менее) тезисы:

                  • Будучи долгое время лидером на рынке, Нокиа сильно расслабилась и загадила свою внутреннюю инфраструктуру бюрократией, чрезмерным аутсорсингом и огромным количеством бесполезной «менеджерской прослойки».
                  • Будучи долгое время лидером, Нокиа просрала потратила много денег на ненужные операционные расходы, поглощения никому не нужных фирм и на невменяемую модель аутсорсинга.
                  • Полностью оторвавшись от реальности с уходом Йормы Оллилла, Нокиа, под управлением гениального юриста CEO Олли-Пекки Каласвуо, потратила кучу денег и усилий на создание бесполезной и неконкурентоспособной сервисной инфраструктуры Ovi. В результате этого, помимо денег, Нокиа потеряла уйму полезного времени, которое можно и нужно было потратить на развитие основного бизнеса — телефонов, софта и т.д.
                  • Бюрократия и непотопляемая менеджерская прослойка в Нокиа, последовательно мигрировала из одного передового проекта в другой, в составе одних и тех же групп лиц, самореплицируясь в виде кучи формальных дебилопроцессов комитетов и управленческих групп, немного перетасовываемых с учетом специфики. В итоге именно эта бюрократия убила и Symbian, и Ovi, и MeeGo и остальные попытки догнать уходящий поезд своими силами.
                  • Борьба с бюрократией и прослойкой в Нокиа зашла в полный тупик.
                  • У великого CEO Элопа просто не было другого выхода кроме как прибить всю старую, неповоротливую и прогнившую организацию, путем создания альянса с Майкрософтом и переходом на Windows Phone. Тем самым все старые процессы, компетенции, технологии и самое главное — люди резко стали, что называется, «не в тему». И следовательно тем самым можно было под благовидным предлогом прибить этот табун менеджеров, бесконечно рисующих фэнтезийные роадмапы с единорогами и перекладывающих бумаги с левого края стола на правый.
                  • Новая Нокиа, после 2011 года и старая Нокиа до 2011 года – это две РАЗНЫЕ организации. Их объединяет только общее название и операционка S40 для телефонов Asha.
                  • Горящая платформа, это не Symbian и не MeeGo. Горящая платформа, это то состояние в которое Нокиа загнали годы расслабленного лидерства и тупоголовые амбиции предыдущего CEO – Олли-Пекки Каласвуо с кликой подкаркивающих вице-президентов.
                  • С бюрократией и бизнес процессами, имеющимися на 2010 год, Нокиа не спас бы ни Андроид, ни половина населения Бангалора, пишущих на Qt под MeeGo. Даже если бы Apple бесплатно передал Нокиа iOS и все сервисы, то они бы выродились руками всяких Requirement Managerов в типичные Нокийские дизайн-химеры и в итоге загнулись через какое-то время.
                  • То, что сделал великий CEO Элоп – было единственно возможным разумным решением, дающим хоть какие-то шансы на выживание. Вопрос «каким образом он это сделал?», остается открытым, равно как и вопрос «поможет ли это Нокиа?» в итоге. Не следует забывать, что нынешняя Нокиа — это совершенно новая организация, поэтому глупо предполагать, что она разом вернет себе лидерство. Как и всем новым организациям ей придется за это лидерство долго бороться.
                  • Без ошибок и побед Нокиа никогда не было бы ни Андроида, ни Айфона. И Google и Apple тщательно проанализировали достоинства и недостатки более старших конкурентов перед тем как шагнуть вперед.

                  Все это в деталях — под катом. Предупреждаю что клевых картинок там нет. Сплошное графоманство и ёрничанье.
                  Читать дальше →
                • Размеры экранов

                  • Tutorial
                  Планшеты и смартфоны оснащаются экранами с разными соотношениями сторон и разной плотностью пикселей, однако эти параметры редко указываются в технических характеристиках.

                  Попробуем разобраться со всеми хитростями, связанными с этими параметрами. Начнём с планшетов.
                  Вот соотношение размеров экранов, использующихся в большинстве современных планшетов.



                  Обратите внимание, насколько экран 8" с соотношением сторон 4:3 визуально больше широкого экрана 7". А широкий экран 10.1" на сантиметр меньше экрана 9.7" по высоте.

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



                  Текст на экранах с низким PPI (количеством точек на дюйм) читается не комфортно. Я бы не стал покупать планшет с экраном, имеющим PPI ниже 150. Даже 164 PPI экрана iPad mini многим кажутся недостаточными. Отлично воспринимаются экраны с PPI больше 200.

                  Для меня было большим открытием, что экран 9.7" 1024x768 имеет даже меньшее PPI, чем экран 7" 800x480.

                  Читать дальше →
                • «Непредвзятый» универсальный алгоритмический интеллект

                    Постановка задачи


                    В предыдущих статьях «Основы подхода к построению универсального интеллекта», часть 1 ( http://habrahabr.ru/post/145309/ ) и часть 2 ( http://habrahabr.ru/post/145467/ ), мы в общих чертах описали разные существующие подходы и сформулировали некоторые методологические принципы, которые целесообразно выполнять при разработке универсального ИИ. В статье «Идеальный ученик, или о чем умалчивается в машинном обучении» ( http://habrahabr.ru/post/148002/ ) необходимость соблюдения этих принципов (и, в особенности, сохранение универсальности) было обсуждено на примере проблемы машинного обучения. Здесь мы разберем одну распространенную модель универсального интеллекта в целом. Хотя эта модель крайне далека от реального универсального ИИ, она позволяет понять критические недостатки других подходов.
                    Читать дальше →
                  • Смысл НДС

                      Думаю многим приходится сталкиваться при общении с заказчиками с вопросом — «А вы работаете с НДС или без НДС?». Постараюсь кратко объяснить в чем суть этого вопроса и в чем суть самого налога на добавленную стоимость. Понимание этого даст вам преимущество перед вашими конкурентами, которые отвечают не задумываясь.
                      Читать дальше →
                    • MIX: первый день, ВСЕ что вы хотели узнать про Windows Phone 7 и Silverlight 4

                        Полное и абсолютное руководство по материалам, представлнным вчера на MIX

                        .
                        image

                        Конференция MIX – это крупнейшее событие в мире web-разработки: три дня, более 130 докладов и сессий, десятки докладчиков с разных компаний со всех уголков мира. Подробное описание конференции я сделал в этой заметке, обратитесь к ней, если хотите узнать что это за мероприятие и какие темы на нем обсуждаются.

                        Напомню, что всю информацию и онлайн-трансляцию можно найти по адресу http://live.visitmix.com/ .

                        Запись прошедшего keynote уже можно посмотреть по адресу www.microsoft.com/presspass/events/mix/videogallery.aspx

                        Что же принесла конференция в свой первый день.
                        Ниже ОЧЕНЬ много картинок (они небольшие). Много текста.

                        Читать дальше →
                      • Как загружается ARM

                          Прошлый мой топик был полностью теоретическим, этот же будет практическим. Практика будет довольно хардкорной (я сам занялся этим вопросом только через год работы с ARMами) — инициализация процессора и памяти. Иными словами: что нужно сделать с процессором, чтобы попасть в функцию main(). Первая часть статьи посвящена инструментам сборки и отладки. Вторая — обработке векторов исключений, третья — инициализации стеков и памяти.
                          Но сначала хочу сделать одно уточнение. Многие почему-то считают, что ARM — это обязательно монстр со внешней памятью, кучей обвязки, работающий на частоте не менее 600Mhz, и т.д. Это правда лишь отчасти (если говорить об ARM9 и более поздних семействах). Тот чип, с которым я обычно работаю (AT91SAM7X512), не намного сложнее знакомых многим AVR. Ему для работы нужны только кварц и питание (можно и без кварца, но тогда будет совсем грустно). Всё. Но возможностей у него, конечно, больше, много больше, чем у AVR. Но об этом позже. Сегодняшняя статья никак не будет привязана к конкретному железу.
                          Читать дальше →
                        • 15 Вопросов на собеседовании в Google, из-за которых вы можете почувствовать себя глупым

                          • Translation
                          15 вопросов от Google
                          Google снова набирает людей.
                          Это отличная новость для тысяч начинающих менеджеров и разработчиков ПО, желающих найти спокойную пристань в эти сложные дни.
                          Теперь плохие новости:
                          • Google предпочитает людей из «Лиги Плюща»
                          • Им интересны ваши оценки (в институте), даже если вам уже за 30
                          • Они ищут людей, которые хотят изменить мир

                          Хуже того, если вы подходите по всем этим параметрам, вам все равно надо проходить собеседование.
                          Льюис Пин (Lewis Pin), тренер по поиску работы из Сиэтла, собрал 140 вопросов, которые в Google спрашивали его клиентов.

                          Сколько шариков для гольфа поместится в школьный автобус?


                          Сколько шариков для гольфа поместится в школьный автобус?
                          Позиция: Менеджер проекта

                          Читать дальше →
                        • Наглядно о ДНК



                            В институте Walter и Eliza Hall (Австралия), сделали несколько отличнейших анимаций о самых базовых процессах происходящих в нашем организме. Все процессы показаны в реальном времени.

                            1. Показано как молекула ДНК длинной ~1.8метра, упаковывается в хромосому.
                            2. Копирование ДНК с помощью молекулярной машины — Хеликазы.
                            3. Переписывание ДНК в РНК, чтобы произвести далее белок гемоглобин.
                            4. Перевод РНК в гемоглобин с помощью рибосомы.
                            5. Гемоглобин и Серповидно-клеточная анемия.

                            К сожалению у видео не очень хорошее качество. Пытался свести качественное видео с сайта института( оно там 600 x 480 ) с этим звуком — не сходится во многих местах ;(

                            Тут есть этот ролик, но без комментариев, зато в отличном качестве, а заодно и все остальные ролики по биологии. Большинство в 600x480. Апоптоз (программируемая смерть клетки), Диабет первого типа, Заражение малярией, Ответ имунной системы на заражение, злокачественная(рак) опухоли.
                            wehi.edu.au/education/wehi-tv
                          • Автор SauceKit арестован

                              В Лас-Вегасе арестован Кристофер Кеннеди (Christopher Kennedy), который обвиняется в продаже зловредного софта под названием SauceKit. Это программа позволяет незаметно внедрять ничего не подозревающим пользователям чужие реферальские куки. Достаточно просто опубликовать специальный скрипт на каком-нибудь форуме (скрипт можно внедрить разными способами) — и все посетители форума станут вашими рефералами на eBay. Соответственно, вы получите своё партнёрское вознаграждение от eBay Partner Network. Как сообщается, некоторые владельцы SauceKit зарабатывают до $10 000 ежемесячно, используя этот софт (подробности см. в ордере на арест, PDF).
                              Читать дальше →
                            • Обзор торговых роботов

                                Привет, хабралюди! Все мы знаем про Forex, может даже кто-нибудь из Вас и пытался (или до сих пор пытается) на нём играть заработать на жизнь, пиво, телефон, машину, стартап (нужное подчеркнуть). Но в нашей жизни полностью уделить все время торговле на валютном рынке, практически не реально и в следствии чего появились автоматические торговые эксперты.
                                В данном посте я расскажу о некоторых платных советниках, которые я покупал и использовал на реальном счете. Все графики и цифры взяты из личного опыта и никаким образом не отношусь к разработчикам советников.
                                Так что предлагается выбрать «красную» или «синюю» таблетку :)

                                Синяя таблетка...