Skip to content

Instantly share code, notes, and snippets.

@lnznt
lnznt / smuga.rb
Last active April 23, 2017 10:27
[Ruby] sample: Send Mail Using the Gmail API
APP_NAME = 'Send Mail Using the Gmail API'
#
# To run this program, we need two files.
#
# 1. clent_secret.json
#
# Create credentials in your Google Developers Console and download it.
# Details for see 'Google Developers Console' web page.
#
# 2. credential.yaml
@lnznt
lnznt / array_traversable.rb
Last active August 29, 2015 14:14
My Extension (Ruby)
module ArrayTraversable
def traverse(each=:each, *args, &block)
visit = -> y, obj=self, idx=[] do
idx.push 0
obj.send(each, *args) do |x|
if x.kind_of?(Array)
visit.(y, x, idx)
else
y << [x, idx]
end
$ ruby prolog_parser.rb 'f(x,y) :- a(b(c(d,e,f),!),[1,2,X|Y])'
{:":-"=>
[{:f=>[:x, :y]},
{:a=>[{:b=>[{:c=>[:d, :e, :f]}, :!]}, {[1, 2, {nil=>:X}]=>[{nil=>:Y}]}]}]}
@lnznt
lnznt / file10.txt
Created January 26, 2015 10:18
Ruby: Module.#prepend でメソッド呼び出しをフック ref: http://qiita.com/lnznt/items/5653f04749c9f82f7021
p C.ancestors #=> [C::Logging, C, Object, Kernel, BasicObject]
$ pry -r drb # 'drb' を require する
:
@lnznt
lnznt / file0.txt
Created January 23, 2015 23:02
Prolog: Prolog からの Ruby 呼び出し ref: http://qiita.com/lnznt/items/4043f4b75b00d525156c
$ ruby prolog_server.rb # デフォルトでポート 53340/tcp を LISTEN
# 起動したままになる。停止するには Ctrl-C
# --log ログファイル名 を付けて起動するとログ出力します
@lnznt
lnznt / Rakefile
Last active August 29, 2015 14:13
Ruby: Prologで翻訳「時の蝿はひとつの矢を好む」 ref: http://qiita.com/lnznt/items/72abba6b045ef4ffafae
require 'prolog_translator'
SERVER = 'server.pro'
PORT = Prolog::Proxy::PORT
#
# Prolog サーバへの起動と設定
#
desc 'Prolog サーバの起動'
task:server, [:port, :server_program] do |t, args|
@lnznt
lnznt / file0.txt
Last active August 29, 2015 14:13
Ruby: ミニ Prolog パーサ (改) ref: http://qiita.com/lnznt/items/016210e1121cc9219190
$ make
racc -g -o prolog_parser.rb prolog_parser.ry
@lnznt
lnznt / Makefile
Last active August 29, 2015 14:13
Mini Prolog Parser (for Ruby with Racc)
RACC := racc
RACCFLAGS := -g
SOURCES := prolog_parser.ry
TARGETS := ${patsubst %.ry, %.rb, ${SOURCES}}
.SUFFIXES : .rb .ry
%.rb : %.ry
$ ruby t1.rb
hello # 子スレッドで表示
hello # 〃
hello # 〃