jpgのグリッチをもうちょっと。

こちらのpythonのコードをrubyで書いて幾つかのパターンを作ってみた。

#!/usr/bin/env ruby

require 'rubygems'
require 'mini_magick'
require 'base64'

path = ARGV.first
img = MiniMagick::Image.open(path)
txt = Base64.encode64(open(path, 'rb') {|f| f.read }).gsub(/\n/, '')
num = img[:width] * img[:height] / 10000

(1..32).each do |i|
  glitched_txt = txt.split(//).map do |c|
    if c == '0' and rand(num) == 0
      rand(9).to_s
    else
      c
    end
  end.join
  open("glitched-#{i}.jpg", 'wb') {|f| f.write(Base64.decode64(glitched_txt)) }
end

glitch

glitched-16

こっちの方が怖くていいな。

参照:サケグリッチ

夜、寝る前に布団のなかで、

(画像グリッチってデジタルなホラー表現に使えるんじゃね?)

と唐突に思い、布団から飛び起きてこちらを参考にいろんなパターンを生成するコードを書いてみた。

# glitch.rb
(1..9).each do |i|
  (1..9).each do |h|
    `cat bell.jpg | sed 's/#{i}/#{h}/g' > bell-#{i}-#{h}.jpg` unless i == h
  end
end

元の画像はこれ。

昼-寺

沢山できてる。

jpg

jpgとgifを試してみたんですが、単なる文字置換なのでフォーマットの性質がモロにでて面白い。jpgの場合はカオス過ぎてもうちょっと別のパターンを使った方が良さそう。

gif

gifの場合は何色が何個続くかってだけなので不気味感はちょっと少なめ。jpgとgifでそれぞれ怖そうなのは下記の2つぐらいかなあ。

bell-8-6

bell-7-8

参照:hysysk:blog: today's glitch 3

sqlite3-rubyをインストールしたら(tapsの依存で入る)見覚えのあるマークが。

Terminal — zsh — 80×24

これ、Twitterで聞いたらハートを横にしたマークなんですね。(屁的なものかと思ってた)

「sqlite3-rubyはsqlite3に変わったYO!」ってだけの警告文なのに誰が書いたのか分かるのって凄い個性ですね・・・。

authorを見に行ってみる。

sqlite3-ruby | RubyGems.org | your community gem host

やっぱりアンタか・・・。

まだ空きがあるはず!今日はTokyo PayPal Developers Groupのイベントですよ!

PayPal Express Checkout, Subscriptions - Tokyo PayPal Developers Group

セレゴ・ジャパン様がミーティングルームとプロジェクターを貸してくださいました。場所は渋谷駅の北川、セルリアンタワーから歩いて2分ほどです。地図:http://www.cerego.com/en/contact-us/

開場は19:30から、発表の開始は20:00頃です。イベント終了後、おそらく近くのお店で懇親会が行われます。

paypal-express@novさんのお話も絶対聞きたいし、@mreinschさんが作った、簡単にPayPalの定期支払いが出来るRailsプラグインのsubscription_fuも超注目なのです。

っていうか、今やってる仕事のプロジェクトでもsubscription_fu使うので行かなければならないのです。そしてsubscription_fuの低レイヤー部分はpaypal-expressに置き換えられる予定なので両方必聴なのです。

# Gemfile:
group :development
  gem 'haml-rails'
end

真面目なサイトを作る時になんでSlimじゃなくてHamlかっていうと、ちょこちょこバグがあるからです・・・。

ProxyLocal

ProxyLocal could proxy your local web-server and make it publicly available over the internet.

ローカルのWebサーバーに他人にちょっとアクセスして欲しい時(何かの実験中とか)に便利なgem。

# app.rb:
require 'rubygems'
require 'sinatra'

get '/' do
  ' ┐(´ー`)┌'
end

こういう糞アプリがあったとして、まずローカルで立ち上げる。

% ruby app.rb 
== Sinatra/1.2.6 has taken the stage on 4567 for development with backup from Thin
>> Thin web server (v1.2.11 codename Bat-Shit Crazy)
>> Maximum connections set to 1024
>> Listening on 0.0.0.0:4567, CTRL+C to stop

でproxylocalをインストールして立ち上げると・・・

% gem install proxylocal
% proxylocal 4567 --host unk
Local server on port 4567 is now publicly available via:
http://unk.t.proxylocal.com/

http://unk.t.proxylocal.com/

xxx.t.proxylocal.comでアクセス出来るようになる。このぐらいの気軽さで外からアクセスさせることができると嬉しい。

datamapper(dm-core) 1.1.0では0.10.0からdeprecatedになっていた明示的なINの利用が出来なくなりました。明示的なINと暗黙的なINって何なのかというと下記の様な違いです。

# implicit
Foo.all(:id.in => [1, 2, 3])

# explicit
Foo.all(:id => [1, 2, 3])

対象がArrayだと自動的にINになるんですね。1.0.2で使ってたけどdeprecatedの表示は出てなかった気がするけどなあ。ヤラレタ。

つい先日、LokkaにもCI環境が整ったのでデグレしないようにテスト駆動バグ修正していくことにしました。

RuntimeError - explicit use of 'in' operator is deprecated - Issues - komagata/lokka - GitHub

$ gem install cmdline-fu
% cmdline-fu matching ssh               
# Copy ssh keys to user@host to enable password-less ssh logins.
$ssh-copy-id user@host

# start a tunnel from some machine's port 80 to your local post 2001
ssh -N -L2001:localhost:80 somemachine

# output your microphone to a remote computer's speaker
dd if=/dev/dsp | ssh -c arcfour -C username@host dd of=/dev/dsp

# Mount folder/filesystem through SSH
sshfs name@server:/path/to/folder /path/to/mount/point

サイトの方ちゃんと見に行ってみると、「こっちのがいいだろう」とか「それ動かなくね?」とかツッコミが多いので常用するワンライナーを探してる場合はちゃんと見た方がいいかも。

# config/application.rb:
module Foo
  class Application < Rails::Application
    config.autoload_paths += %W(#{config.root}/lib)
  end
end

gemにmoneky patch当てないでcloneしてgem 'foo', :git => 'git://foo'しようというのをどっかでみたけどslim-railsで

Deprecated: Use `require 'slim'` instead of `require 'slim/rails'`

が出るのは放置してたらcloneしてる人がいた。pull requestが送られてから2週間たってるけどマージされる気配が無いのでcloneした方を使う。

# Gemfile:
gem 'slim-rails', :git => 'git://github.com/stjernstrom/slim-rails.git'

もっと面倒なのかと思ってたけど簡単。さっさと自分でやればよかったな。