• Прототипное ООП для Lua

      Привет, я придумал свой велосипед для реализации прототипного подхода ООП в Lua.

      Основные фишки
      • Single inheritance
      • Traits
      • LuaJIT


      Перейдем сразу к примерам.

      -- подключаем модуль
      local object = require("object")
      
      -- определяем наш класс, который на самом деле объект
      local HelloClass = object:extend(function(class)
        -- конструктор (необязательно)
        function class:init(name)
          self.name = name
        end
      
        -- метод класса
        function class:sayHello()
          print("Hello " .. self.name)
        end
      end)
      
      local hello = HelloClass:new("John")
      hello:sayHello()
      

      Читать дальше →
      • +10
      • 9,9k
      • 4
    • Обзор Komodo Edit и Komodo IDE 8

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



        Komodo Edit — это кросс-платформенный текстовый редактор, который построен на движке Mozilla, поддерживает большое количество языков. Проект является полностью открытым и распространяется под лицензией MPL (Mozilla Public License). Разработка проекта ведется на GitHub.
        Как и у всех, есть авто-дополнение со справочной информацией, поддержка плагинов, макросы, сниппеты.
        Главная фича, которая мне понравилась, это удаленное редактирование кода, подобно Sublime если прикрутить к нему плагины для работы по SFTP. В восьмой версии также появился визуальный скроллинг, аналогично тому, который есть в Sublime.

        Читать дальше →
      • Вычисление рекуррентных соотношений на Perl

          Привет,
          в этом посте я расскажу рецепт добавления функциональности в Перл.

          Как уже стало понятно из названия, мы будем вычислять рекуррентные соотношения.
          Например, формулы для вычисления факториала выглядят вот так:
          f(0) = 1
          f(n) = n * f(n-1)
          


          Функциональные языки программирования позволяют определять такие функции достаточно просто, в Erlang это делается следующим образом:
          factorial(0) ->
              1;
          factorial(N) ->
              N * factorial(N-1).


          А теперь попробуем сделать нечто похожее, что позволяло бы нам писать код вида:
          #!/usr/bin/perl -I./lib
          use strict;
          use bigint;
           
          use Recurrent;
           
          recurrent fac => {
              arg(0) => lambda { my($n) = @_; return 1 },
              arg(n) => lambda { my($n) = @_; return $n * fac($n-1) },
          };
           
          print fac(100);

          Из примера видно, что у нас появились новые функции recurrent, arg, n и lambda. На самом деле, практическая польза есть только у recurrent, все остальные нужны лишь для получения более «красивого» кода.

          Давайте напишем модуль Recurrent.pm
          Читать дальше →
        • Стартуют продажи Samsung Galaxy Camera в USA и UK

            Стартуют продажи весьма оригинального устройства от Samsung — Samsung Galaxy Camera, 16 мегапиксельной цифровой камеры, работающей под управлением операционной системы Android 4.1 Jelly Bean.

            Устройство работает на базе четырехядерного процессора Exynos 4412 с частотой 1.4ГГц. Есть WiFi, 3G.
            А также, ксеноновая вспышка и 21 кратный оптический зум.

            image

            В США продажа начнется 16 ноября компанией AT&T с ценой $499,99.
            В Великобритании на этой неделе по цене £420 с VAT.

            Ссылки

            Обзор устройства
            промо-сайт Samsung.
          • Windows 8 для разработчиков: возрождение мечты? (1/2)

            • Перевод
            Ранее в этом месяце Microsoft несколько шокировала Windows-разработчиков: платформа .NET, которую компания продвигала на протяжении последнего десятилетия как основную для разработчиков, не будет использоваться при построении приложений для нового интерфейса Windows 8. Вместо этого, разработчики должны использовать HTML5 и JavaScript.

            Многие из них, что естественно, задались вопросом, который пока не получил ответа: «Как я смогу использовать имеющийся у меня опыт для разработки новых приложений?» Microsoft же хранит молчание и не планирует сообщать ничего до конференции BUILD (бывшая PDC) в сентябре.

            Но, вероятно, не все так мрачно, как многие думают. Ранние сборки Windows 8 утекли в интернет, и были приложены значительные усилия, чтобы понять, как они работают. Что ж, все выглядит так, словно разработка приложений под Windows 8 не только не ужасна, но и наконец-то сможет избавить разработчиков от многих раздражающих препятствий на их пути. Если у Microsoft получится реализовать все запланированное, следующая версия Windows станет настолько же важным релизом, насколько важным должен был стать релиз Windows Longhorn.
            Читать дальше →
          • Драм-машина на Perl в 120 строк

              Попробуем написать простенькую драм-машину на перле используя MIDI и Tkx в качестве графического тулкита.

              image

              Основные возможности
              1. 47 инструментов, одновременно может быть использовано 4.
              2. Управление с клавиатуры.
              3. Регулятор громкости.
              4. Регулятор BPM от 60 до 600 ударов в минуту.


              Читать дальше →
            • Союзмультфильм на YouTube

                image

                Буквально вчера обнаружил, что на YouTube появился канал «Союзмультфильм» со старыми, добрыми, советскими мультфильмами. Пока доступно только 48 видеозаписей, но их количество увеличивается с каждым днем!

                http://www.youtube.com/user/Soyuzmult
              • Интерпретатор Brainfuck на Bash

                  В последнее время популярность эзотерического языка Brainfuck набирает обороты. Количество приложений, написанных на Brainfuck увеличивается не в арифметической, а даже в геометрической прогрессии. Очень похожая ситуация с Android.

                  Сегодня я решил запустить свой первый хелловорлд на этом языке. Я счастливый пользователь NetBSD на тостере, и у меня не получилось настроить интернет. Поэтому, я не смог воспользоваться уже готовыми решениями для запуска программ на Brainfuck'e.

                  Выход оставался один — написать интерпретатор самому. Из софта были только Bash и системные утилиты.

                  $ cat bf.sh
                  #!/bin/bash
                  C="s[0]=0; p=0;"
                  while read -n1 c; do case $c in
                  	\+) C="$C s[\$p]=\$((\${s[\$p]}+1));";;
                  	\-) C="$C s[\$p]=\$((\${s[\$p]}-1));";;
                  	\>) C="$C p=\$((\$p+1));";;
                  	\<) C="$C p=\$((\$p-1));";;
                  	\.) C="$C printf \\\\\$(printf '%03o' \${s[\$p]});";;
                  	\,) C="$C read -n1 c; s[\$p]=\`printf '%d' \"'\$c\"\`;";;
                  	\[) C="$C while [[ \${s[\$p]} > 0 ]]; do ";;
                  	\]) C="$C done;";;
                  esac; done < $1; 
                  eval $C
                  
                  $ cat hello.b
                  ++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++
                  .>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.
                  ------.--------.>+.>.
                  
                  $ ./bf.sh hello.b
                  Hello World!