• Как реализовать язык программирования на JavaScript. Часть 3: CPS-интерпретатор

    • Перевод
    • Tutorial

    Здравствуйте! Представляю вам третью часть моего перевода руководства реализации своего языка программирования на JavaScript — PL Tutorial.


    От переводчика


    Мы создадим свой язык программирования — λзык (в оригинале — λanguage). В процессе создания мы будем использовать достаточно много интересных техник, таких как рекурсивный спуск, стиль передачи управления, базовые техники оптимизации. Будет создано две версии интерпретатора — обычный и CPS-интерпретатор, транс-компилятор в JavaScript.


    Автор оригинала — Mihai Bazon, автор известной библиотеки UglifyJS (инструмент для минимизации и форматирования JS-кода).

    Читать дальше →
  • In-app purchasing или внутренние платежи в приложениях для Android

    О чем это вообще?



    С версией приложения Android Market 2.3.0 для разработчиков приложений для платформы Android открылась возможность предоставлять пользователям платежи внутри самих приложений. Теперь можно продавать уровни и артефакты, видео, музыку, плагины и прочее, пользуясь лишь встроенными средствами платформы. Давайте увидим, как это можно сделать.

    Что нам понадобится?



    Как обычно, любимая IDE, Android SDK и пример приложения.
    Так же будет полезным представлять себе, что такое Service, BroadcastReceiver и, конечно, Activity.

    Так же нам понадобится разрешение в файле манифеста —

    <uses-permission android:name="com.android.vending.BILLING"/>, без него ничего не заработает.

    Как это в принципе работает?



    Читать дальше →
  • Как привести на сайт посетителей честными способами и сэкономить: дайджест полезных материалов для начинающих



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

      Я собрал небольшой дайджест, в котором собраны ссылки на практические материалы, в которых рассказывается о том, как действенно привлечь трафик на свой сайт и после этого повысить его конверсию, а также каких ошибок стоит избегать в процессе работ.
      Читать дальше →
    • Сколько новичку можно заработать на YouTube в 2015 году?

      Ваш сайт – это ваши правила, но и полностью ваши проблемы с его развитием. 15 SEO-экспертов в прошлой статье указали причины, мешающие продвижению новых ресурсов. Легкая ошибка – и пришествие трафика откладывается на неопределенный срок. А вместе с ним – и запланированный доход. Но ведь можно использовать для заработка и чужие сайты, которые не нужно продвигать! И иногда зарабатывать с их помощью получается быстрее даже новичку… Рассмотрим нюансы привлечения трафика из второго по посещаемости сайта в Мире – YouTube.com. И поможет нам в этом Денис Коновалов (konoden).


      Читать дальше →
      • +8
      • 234k
      • 9
    • Расширения Intel SGX, учебное руководство. Предисловие и полное содержание курса



        В течение последних месяцев в блоге Intel публиковался русский перевод цикла обучающих статей с ресурса Intel Developer Zone, посвященный использованию расширений Intel Software Guard Extensions в программировании — Intel SGX Tutorial. Публикация растянулась во времени, поэтому для тех, кто решил методично изучать данный вопрос, мы сделали общий индекс статей как на языке оригинала, так и на русском. После выхода новых постов (а автор обещает продолжение) и их перевода они также будут сюда добавлены.

        Под катом вы также найдете требования к ПО и «железу» для изучения курса.
        Читать дальше →
        • +12
        • 3,3k
        • 2
      • Трудности на пути создания «универсальной» метамодели для моделирования предметных областей

          Для создания модели предметной области сначала строится модель наших представлений. Описание наших представлений содержится в метамодели (например, в нотации BPMN). Метамодели, в свою очередь, строятся на основе мета-метамодели. Однако, наши представления имеют очень непростую структуру, которая до сих пор не имеет формального описания. Поэтому построение метамодели и мета-метамодели сильно затруднено. Попытку описать эту структуру предприняли греки, когда придумали основы логики. Способы нашего мышления изучали математики, когда столкнулись с парадоксами, пытаясь построить основы своей науки. Казалось бы, прогресс есть, но по какой-то причине, остановившись на формальном описании инструментов логического вывода, математики не сделали попытку применить полученные наработки к моделированию нашего мира (наверно, потому что для них – это прикладная задача, не вызывающая интереса).



          В итоге те принципы, на основе которых создаются нотации и языки моделирования предметных областей, выбираются разработчиками относительно произвольно. Понятно, что созданные таким образом языки моделирования имеют достаточно ограниченную область применения. Эту область должны были бы описать создатели языка, но разработчики, как правило, это требование игнорируют.
          Читать дальше →
        • CodePlex закрывается

          • Перевод
          Это не первоапрельская шутка

          Спустя 11 лет после того, как мы создали CodePlex, пришло время попрощаться. Мы запустили CodePlex в 2006 году, потому что мы, как и другие в отрасли, увидели необходимость в отличном месте для совместного использования программного обеспечения. На протяжении многих лет мы видели множество замечательных аналогов CodePlex, но на данный момент GitHub является де-факто местом для обмена файлами с открытым исходным кодом, и большинство проектов с открытым исходным кодом мигрировало туда.
          Читать дальше →
        • Геймдев для чайников или как в одиночку сделать игру

          Привет, будущий геймдевелопер! Я думаю, что многих интересует, а можно ли создать игру одному, а тем более без вложений. Вот именно об этом и пойдет речь. Я столкнулся с этим не понаслышке. Все, что написано ниже, основано на собственном опыте геймдева с нуля за 3 месяца.
          Читать дальше →
        • Быстрый старт в изучении анализа данных и машинного обучения от МФТИ и Яндекса

            Почему анализ данных


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

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

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

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

            Пришла пора внести ясность в этот вопрос.

            image

            Читать дальше →
          • МФТИ запустил онлайн-курс по управлению инновационными проектами

              image

              Курс разработан МФТИ совместно с компанией eNANO при поддержке IBS и предназначен для лидеров инновационных компаний, технологических предпринимателей, стартаперов и всех тех, кто занимается высокотехнологичным бизнесом, а также изучает инновации и управление проектами.

              Читать дальше →
              • +10
              • 5,8k
              • 2
            • Как сверстать шаблон для Joomla

              • Tutorial

              Введение


              В предыдущей статье мы изучили, как создать тему для WordPress. Давайте сегодня на основе этого же шаблона Corporate Blue попробуем создать сайт на второй по популярности CMS – Joomla! Поскольку в статье описывается в основном вёрстка, будем считать, что Joomla! у вас уже установлена. Если вы не знаете, как установить Joomla!, то инструкцию можно найти здесь. В данном руководстве мы не будем подробно описывать CSS стили и HTML код – это было сделано в самой первой статье. Вместо этого рассмотрим детально особенности создания шаблона именно для Joomla!
              Читать дальше →
            • Drupal 8. Обучающие материалы и не только

                Друзья, вы мне, конечно [1] [2], не поверите, но вышел Drupal 8. В последнее время поступает достаточно много вопросов на тему того, что почитать, посмотреть, послушать для изучения восьмерки. Очень многие чувствуют себя не вполне уверенно и задаются вопросами: переходить на неё или не переходить, жив Drupal или нет, и всем прочим.

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

                image

                Читать дальше →
                • +6
                • 33,2k
                • 2
              • Интервью с Дрисом Байтаертом: о Drupal 8, Open Source, бизнесе и Индии

                • Перевод

                Дрис Байтаерт, создатель и руководитель проекта Drupal, недавно посетил Индию. Linux For You поговорил с ним о его планах по расширению сферы Drupal в Индиии, о Drupal 8, о компаниях, специализирующихся на Drupal и их бизнес модели, об Open Source и др.

                Существует множество систем управления контентом, где именно вы позиционируете Drupal и чем вы отличаетесь?

                Drupal это интересное животное, если вы присмотритесь внимательно. На нем работает два процента всех сайтов в мире. Но самое уникальное в Drupal это то, что он масштабируется от больших веб сайтов до очень маленьких. На нем работают блоги, но на нем также работают большие сайты медиа компаний. Он также уникальный в своих возможностях и функциональности. И все благодаря сообществу Drupal, в котором десятки тысяч людей развивают Drupal. У нас есть более 10 000 модулей. Поэтому мы находится в таком положении, что мы можем создать любой вид сайта на Drupal.

                Это делает ваш вопрос особенно интересным, потому что вы можете использовать Drupal для ведения блогов, в этом случае мы конкурируем WordPress, и вы также можете использовать Drupal для создания больших корпоративных веб сайтов, в этом случае мы конкурируем с проприетарными программными решениями. В одно и то же время, вы можете использовать Drupal для сайтов с совместной работой. В этом случае мы конкурируем с Jive. Выходит, что Drupal уникален и не похож ни на одну другую платформу, он применим ко всем этим различным форматам.
                Читать дальше →
              • За что я люблю Drupal

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

                  Сразу стоит предупредить, что Drupal это не готовое решение. После установки вы не получите настроенную и работающую социальную сеть, интернет магазин и т.д. В Drupal действует принцип «предоставление возможностей по мере необходимости». Именно поэтому на Drupal не делают сателиты и ГС в промышленном масштабе и, возможно, именно поэтому количество рабочих сайтов на Drupal уступает таким CMS как Joomla и Wordpress, любимым CMS строителей сателитов и ГС.

                  Drupal предоставляет удобные инструменты для разработки сайта, который нужен именно вам. Создатели Drupal понимают, что каждый сайт индивидуален и предоставление готового решения было бы не правильно, вместо этого они предоставляют инструменты для разработки. Весь Drupal и все его модули пропитаны этой идеей. Отсутствие ограничений и множество настроек позволяют разработать сайт под конкретную задачу легко и просто.
                  Читать дальше →
                • Почему не Drupal?

                  Dries Buytaert
                  Недавно, я столкнулся с некоторыми проблемами при разработке проекта на Drupal 7 (при переходе на Drupal 7), но речь не о них. В поисках решений, я натолкнулся на статью "The Drupal Crisis", одного из разработчиков Drupal — Daniel F. Kudwien, которая пролила свет на происходящее в кузнице Drupal. Сразу скажу, что большая часть проблем описанных в статье уже не актуальна, т.к. статья прошлогодняя. Тем не менее многим будет интересно ознакомиться с ее переводом.
                  Читать дальше →
                • Бесплатного супа больше не будет

                    Фундаментальный поворот к параллелизму в программировании

                    Автор: Герб Саттер
                    Перевод: Александр Качанов

                    The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software
                    (By Herb Sutter)

                    Ссылка на оригинал статьи: www.gotw.ca/publications/concurrency-ddj.htm

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

                    Данная статья достаточно старая. Ей уже 7 лет, если считать с момента ее первой публикации в начале 2005 года. Помните об этом, когда будете читать перевод, так как многие вещи, которые для вас уже стали привычными, для автора статьи в 2005 году были в новинку и только-только появлялись.

                    Читать дальше →
                  • Обработка древовидных структур и унифицированное AST

                      Предыдущая статья серии была посвящена теории парсинга исходников с использованием ANTLR и Roslyn. В ней было отмечено, что процесс сигнатурного анализа кода в нашем проекте PT Application Inspector разбит на следующие этапы:


                      1. парсинг в зависимое от языка представление (abstract syntax tree, AST);
                      2. преобразование AST в независимый от языка унифицированный формат (Unified AST, UAST);
                      3. непосредственное сопоставление с шаблонами, описанными на DSL.

                      Данная статья посвящена второму этапу, а именно: обработке AST с помощью стратегий Visitor и Listener, преобразованию AST в унифицированный формат, упрощению AST, а также алгоритму сопоставления древовидных структур.



                      Содержание


                      Читать дальше →
                      • +13
                      • 12,3k
                      • 3
                    • Теория и практика парсинга исходников с помощью ANTLR и Roslyn

                        В нашем проекте PT Application Inspector реализовано несколько подходов к анализу исходного кода на различных языках программирования:


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

                        Наш цикл статей посвящен структуре и принципам работы модуля сигнатурного поиска (PM, pattern matching). Преимущества такого анализатора — скорость работы, простота описания шаблонов и масштабируемость на другие языки. Среди недостатков можно выделить то, что модуль не в состоянии анализировать сложные уязвимости, требующие построения высокоуровневых моделей выполнения кода.



                        К разрабатываемому модулю были, в числе прочих, сформулированы следующие требования:


                        • поддержка нескольких языков программирования и простое добавление новых;
                        • поддержка анализа кода, содержащего синтаксические и семантические ошибки;
                        • возможность описания шаблонов на универсальном языке (DSL, domain specific language).

                        В нашем случае все шаблоны описывают какие-либо уязвимости или недостатки в исходном коде.


                        Весь процесс анализа кода может быть разбит на следующие этапы:


                        1. парсинг в зависимое от языка представление (abstract syntax tree, AST);
                        2. преобразование AST в независимый от языка унифицированный формат;
                        3. непосредственное сопоставление с шаблонами, описанными на DSL.

                        Данная статья посвящена первому этапу, а именно: парсингу, сравнению функциональных возможностей и особенностей различных парсеров, применению теории на практике на примере грамматик Java, PHP, PLSQL, TSQL и даже C#. Остальные этапы будут рассмотрены в следующих публикациях.

                        Читать дальше →
                      • Статический анализ и регулярные выражения

                          Я занимаюсь разработкой статического анализатор кода PVS-Studio для анализа программ на языке Си/Си++. После появления в PVS-Studio 4.00 анализа общего назначения мы получили множество откликов, как положительных, так и отрицательных. Кстати, предлагаю скачать новую версию PVS-Studio, в которой благодаря откликам людей было поправлено большое количество ошибок и недочетов.

                          В ходе обсуждения PVS-Studio 4.00 вновь встал вопрос, можно ли реализовывать большинство проверок, используя регулярные выражения, и не переусложняем ли мы, говоря, что обязательно необходимо строить и работать с деревом разбора. Вот пример комментария на эту тему. Подобный вопрос возникает уже не в первый раз, и я решил написать статью, чтобы объяснить, почему пытаться использовать регулярные выражения для анализа Си/Си++ кода — эта очень плохая идея.

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

                          Читать дальше →
                        • Грамматика арифметики или пишем калькулятор на ANTLR

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