Pull to refresh
23
Karma
0
Rating
lenstr @LeNsTR

User

Благодаря WebAssembly можно писать Frontend на Go

QuakeJS is a port of ioquake3 to JavaScript with the help of Emscripten.

Насколько я понимаю, там всё же не wasm, а asm.js

Серия видеоуроков по Kotlin

Это просто компиляция скрипта на лету и запуск его тут же из классов.

Введение в теорию взаимодействующих последовательных процессов (Communicating Sequential Processes — CSP)

И большое спасибо за перевод. Появилось сильное желание разобраться с теорией.

Введение в теорию взаимодействующих последовательных процессов (Communicating Sequential Processes — CSP)

Как и было указано выше данная запись является укороченным вариантом более формальной записи:
VMS = μX: {coin, chock}•(coin → (choc → VMS))


Поправьте, пожайлуста, на:
VMS = μX: {coin, chock}•(coin → (choc → X))

Иначе сильно сбивает с толку :)

Пайпы, the pythonic way

Ваша статья натолкнула меня на некоторые мысли в контексте Ruby.

В нем проблемы с пайпами как таковой нет:

my_function(sum(filter(lambda x: x % 3 == 1, [x for x in range(100)])))

записывается как:

my_function ((1..100) . to_a . keep_if {|x| x % 3 == 1 } . reduce(:+))

Но с генераторами вида:

def fib
  a, b = 0, 1
  loop do
    yield a
    a, b = b, a + b
  end
end

fib . take_while {|x| x < 10}

такое уже не проходит.

Приходится немножко извращаться:

def fib
  a, b = 0, 1
  res = []
  loop do
    return res unless yield a
    res << a
    a, b = b, a + b
  end
end

fib {|x| x < 10} # => [0, 1, 1, 2, 3, 5, 8]

Неплохо, но хочется-то предыдущий вариант! :)

Конечно, можно использовать Fiber, дополнив его методом take_while:

class Fiber
  def take_while
    res = []
    loop do
      val = self.resume
      return res unless yield val
      res << val
    end
  end
end

def fib
  Fiber.new do
    a, b = 0, 1
    loop do
      Fiber.yield a
      a, b = b, a + b
    end
  end
end

fib . take_while {|x| x < 10} # => [0, 1, 1, 2, 3, 5, 8]

Работает. Но что же это получается: каждую функцию, от которой требуется свойство бесконечного генератора, внутри оборачивать в Fiber? Noway! Я слишом ленив для такого.

И тут мой взор упал на декораторы питона: «Хорошая штука» — подумал я, сейчас возьму такую же в любимом руби и… внезапно в Ruby такого не оказалось.
«Вещь то полезная… надо реализовать!» — подумал небезызвестный Yehuda Katz и забацал поддержку декораторов для руби в 80 строчек кода.

Пишем свой декоратор:

class Generator < Decorator
  def call(this, *args)
    Fiber.new { loop { @method.bind(this).call(*args) { |x| Fiber.yield x } } }
  end
end

и класс для бесконечного генератора чисел фибоначчи с «чистым» методом fib:

class FibGen
  extend MethodDecorators

  Generator()
  def fib
    a, b = 0, 1
    loop do
      yield a
      a, b = b, a + b
    end
  end
end

FibGen.new.fib . take_while {|x| x < 10} # => [0, 1, 1, 2, 3, 5, 8]
FibGen.new.fib . take(7) . map {|x| x * 2} . reduce(:+) # => 40

Отлично! :)

Итого: добрая половина дня убита занятием вот этой замечательной фигней ^.^

Говнокод: врага надо знать в лицо

def foo n
  numbers = [1]
  while numbers.last <= n
    puts (numbers.last.even? ? numbers.reverse : numbers).join '-'
    numbers << numbers.last.next
  end
end

foo 6


Извините, на говнокод меня уже не хватило (

Финальный релиз PySide 1.0.0

Привязку питона к Qt разрабатывают авторы Qt, со всеми вытекающими. Аргумент?

iPADром – S02E07. Обзор софта для iPad

Меня искренне поразило, как тонко вы обосрали художника Cannon Cadet.

Scala + Processing – интересный способ выучить новый язык

Большое спасибо за наводку! :) Прикрутил к ruby, буду учить маленьких программистов :3

MWC 2011, вести с полей: BlackBerry PlayBook

Подключив мышку с клавиатурой по usb, очевидно же ;)

Стивы отвечают на вопросы читателей Nokia Conversations

Вот бы еще ведущему iPad в руки :D
А то так он с этим ноутом неловко смотрится…

RubyConf 2010: настоящее и будущее Руби (I)

Да, согласен, миграция потребует значительного времени.

RubyConf 2010: настоящее и будущее Руби (I)

Мацумото в своем докладе обещал к концу этого года.

Angry Birds — теперь и для Windows

А если на время моего комментария и появления того топика посмотреть?)

Angry Birds — теперь и для Windows

Странно, что первым делом не портировали на мак. В свете сегодняшнего запуска Mac App Store было бы очень кстати.

Google покажет нетбук на базе Chrome OS

Что-то мне подсказывает, что нетбуков будет 65536 :)

Objective-C для C# разработчиков

> в Objective-C все методы public (точнее говоря, в нем вообще нет разделения методов по уровням доступа).

А как же @private, @protected, @public?

Information

Rating
6,160-th
Location
Москва и Московская обл., Россия
Registered
Activity