気ままにもんもん

2011-09-09

見ている記事をツイートしたい

最近は、多くのサイトでtweetボタンがあるので、あまりそういう欲求はないのかもしれません。

個人的には、yahooのニュースを見ていて、全文表示をクリックした画面でtweetボタンがないので、そこに欲しいなぁと思っていました。

ボタンがないために、毎回、URLコピペして、タイトルをコピペして、コメントを追加して、つぶやく・・・という事をしており、面倒だな、と。

で、chrome extensionsで作ってみるか〜!とゴリゴリとしていたのですが・・・。


ブックマークレットだと一瞬で作れるんじゃね?』


はい。そんな事実に気づいてしまい、試しに何も考えずにやってみました。

javascript:%20var%20url='http://twitter.com/home?status='+encodeURIComponent("%E3%80%80->%E3%80%80"+document.title+" "+location.href);window.open(url);

改行等を入れるとこう?

javascript:
 var url = 'http://twitter.com/home?status='
              + encodeURIComponent("%E3%80%80->%E3%80%80" + document.title
                                                      + " " + location.href
                                                    );
 window.open(url);

あとは適当にブクマしておけばOK.

・・・というわけで、欲しい機能は満たせてしまったとさ。。。orz

よろしければ、こうするともっと良いよ〜とかアドバイスくださいw

とりあえず、chrome extensionsのHello World等は分かりました(=w=;


P.S.

サイト設置用のツイートボタンって割と簡単に作れるんですね。

https://twitter.com/goodies/tweetbutton

2011-01-25

windowsで育った僕のコタツの上に、MBPが来た日。

日記って、なかなか続けられないですね。

さて、タイトルの通り、MacBookProがおうちに来ましたー(>_<

人生、初のPCはWindowsXP

その後、ゲームばかりしていて、大学ではVineLinux, TurboLinux、卒業後はCentOS, Ubuntu, windowsXP等々だった僕には、戸惑いも多く、色々設定する事があるので、その辺りをメモします。

システム環境設定

  • トラックパッド設定
    • 軌跡の速さを最速に
      • マウスが遅くて死にそうな時はこちらをしてリログ
defaults write .GlobalPreferences com.apple.mouse.scaling -1
    • 1本指の操作でタップでクリックにチェック
    • 副ボタンのクリックにチェック
    • 右クリックしたいので
  • その他

google chrome, messenger, skype, echofonインストール

ical, mail設定

テキストエディットの環境設定

開く/保存の項目のファイルを開くときのエンコーディングを自動からUnicode(UTF-8)に変更する

テキストエンコーディング 日本語(Mac OS) には対応していません

って言われる事が僕の使い方だと多いから。ついでに保存時も同じ指定。

ターミナル

  • .vimrc
syntax on
    • vimで開いた時に単色で味気ないので色付けました。
  • .bash_profile
alias ls='ls -G'
    • lsした時に色を付けたかったので
  • 設定
    • シェル終了時:シェルが正常に終了した場合は閉じるに変更
    • あとは背景をスケスケにしておく

とりあえず、こんなところかな。

急いで書いたから何か漏れているかも。

あとは、xcode入れたら大体終わりかな〜?

初日はこんなところ〜。

他にもwindows出身者におすすめなものがあれば教えてください(^q^)ノ

追記:

23:56 指摘により誤字修正

2010-09-07

yamlでアンカーにエイリアス

そういえば、Rubyがまだ1.9.1だったなーという事を思い出したのでアップデートをしてみた。

RubyWorldConference2010の中でYAMLのパーサーががsyckからpsyckに変わったらしいという事を聞きました。

syckの実装者が失踪してしまったからだとかなんとか。

昔、syckでハマった事がありますが、どうなったのかなー?

アンカーにエイリアス

  • 昔ハマったというのは、アンカーにエイリアスを貼って、GCを走らせるとエラーになる(rescueでも拾えない)というものです。
    • GCが走らない限りは、通常どおりつかえる。
    • 多分、サンプルコードを見た方が早いです。
ハマり方

アンカーにエイリアスを貼ります。

  • sample.yaml
sample1:
  - &figure1
    arg1: "test1"
    arg2: "test2"
  - &figure2 *figure1
  • sample.rb
require 'yaml'

a = YAML.load_file("sample.yaml")
p a

puts "=== start ==="
GC.start
puts "=== end ==="
  • 実行
ionis@ubuntu:~/workspace$ ruby -v
ruby 1.9.2p0 (2010-08-18 revision 29036) [i686-linux]

ionis@ubuntu:~/workspace$ ruby sample.rb
{"sample1"=>[{"arg1"=>"test1", "arg2"=>"test2"}, {"arg1"=>"test1", "arg2"=>"test2"}]}
=== start ===
			
glibc detected *** ruby: double free or corruption (fasttop): 0x09e81d50 ***
======= Backtrace: ========= /lib/tls/i686/cmov/libc.so.6(+0x6b591)[0x1a1591] /lib/tls/i686/cmov/libc.so.6(+0x6cde8)[0x1a2de8] /lib/tls/i686/cmov/libc.so.6(cfree+0x6d)[0x1a5ecd] /usr/local/lib/ruby/1.9.1/i686-linux/syck.so(syck_free_node+0x56)[0xe31cf6] /usr/local/lib/ruby/1.9.1/i686-linux/syck.so(syck_st_free_nodes+0x22)[0xe3e472] /usr/local/lib/libruby.so.1.9(st_foreach+0xb1)[0x3db951] /usr/local/lib/ruby/1.9.1/i686-linux/syck.so(syck_st_free+0x37)[0xe3e3f7] /usr/local/lib/ruby/1.9.1/i686-linux/syck.so(syck_free_parser+0x51)[0xe3ea21] /usr/local/lib/ruby/1.9.1/i686-linux/syck.so(rb_syck_free_parser+0x38)[0xe3c518] /usr/local/lib/libruby.so.1.9(rb_gc+0xc2)[0x339612] /usr/local/lib/libruby.so.1.9(rb_gc_start+0x17)[0x339797] /usr/local/lib/libruby.so.1.9(+0x16790d)[0x43190d] /usr/local/lib/libruby.so.1.9(+0x178277)[0x442277] /usr/local/lib/libruby.so.1.9(+0x16d253)[0x437253] /usr/local/lib/libruby.so.1.9(+0x172820)[0x43c820] /usr/local/lib/libruby.so.1.9(rb_iseq_eval_main+0x1e3)[0x43cc43] /usr/local/lib/libruby.so.1.9(+0x58a8a)[0x322a8a] /usr/local/lib/libruby.so.1.9(ruby_exec_node+0x25)[0x322ac5] /usr/local/lib/libruby.so.1.9(ruby_run_node+0x35)[0x3242d5] ruby(main+0x68)[0x80487d8] /lib/tls/i686/cmov/libc.so.6(__libc_start_main+0xe6)[0x14cbd6] ruby[0x80486d1]

実はGC.startがなくても、上記sample.rbの場合はこのエラーが出ますけどね。

このエラーは、GCが走る際に起きるっぽいです。

なので、以下のようなプログラムにすると、CTRL+Cを押すまで、特にエラーは出ないです。

  • sample2.rb
require 'yaml'

a = YAML.load_file("sample.yaml")

puts "=== start ==="
loop do
  print a['sample1'][1], " \r"
end
puts "=== end ==="

しかし、ここで、ふと気づく

/usr/local/lib/ruby/1.9.1/i686-linux/syck.so(syck_free_node+0x56)[0xe31cf6]

・・・もしかして、僕Ruby1.9.2のインストール失敗してない?(=”=;;

ま、まぁ、ruby1.8.6とかIronRuby1.0で発生するのは確認しているので、その辺を使っている方はお気をつけください。

・・・「複数アンカーなんて作らないよ!」と言われれば、それまでなんですけどね!

えぇ・・・私の書き方が悪いだけですよ!(凹

ちなみに、JRubyではこのエラーは出なかったはずです。

また、Ruby1.8.6とIronRubyでは表示される内容が微妙に違ったハズ・・・(ちょっと記憶が曖昧です。)

なお、おそらくこのバグこのチケットだと思われます。

2010-08-05

VMwarePlayerにUbuntuを入れたりしたり。

Ubuntuが綺麗だというので、10系をVMwarePlayerに入れてみた。

今回の環境は以下

VMwarePlayer 3.0.1 build-227600
ubuntu-ja-10.04-desktop-i386-20100512 

ポチポチとしていって、ログイン画面までは行くが・・・なぜか、パスワードが入力できずログインが出来ない。。。

同じVMwarePlayerに入れていたCentOS5.4、Ubuntu8.04では起きていない現象なのでかなりハマる。

再起動したり、ゲームをしたり、ガンダムSEEDを見たりしたけど、直らない。

種もはじけないので、ググる先生に聞いたところ以下の記事を発見。

VMware Player でゲスト OS として Ubuntu 10.04 LTS Desktop をインストールしたらログイン画面でキーボード入力ができなかった問題

ほほぉ・・・。詳細は上記リンク先の記事にお任せするとしてざっくりと以下

  1. オンスクリーンキーボードON
  2. 再起動
  3. /etc/default/console-setupを編集
XKBMODEL="pc106"
XKBLAYOUT="jp"
XKBVARIANT=""
XKBOPTIONS=""
    • (memo)日本語キーボードを使用しているのに英語キーボードの設定になっている場合、コロンはshift+セミコロンキー
      • 地味にviから抜け出せなくて、一瞬「あれ〜?(@q@」ってなってましたw

最後に、再起動して、オンスクリーンキーボードOFFにするだけ。

と上記リンク先のサイト様と同様の手順をしたらログイン出来るようになりました。

めでたしめでたし。

続きを読む

2010-06-01

yaml

いわゆる、書き方が知りたい人はRubyistMagazine

複数行にわたるyamlの書き方

要するに改行を使いたい時。

少しはまったので。メモ。

hoge:
 - |- Proc.new {|params|
   puts params
   }
 - "Proc.new {|params| puts params}"

↑はOKな例。僕は↓を書いてハマった。

hoge:
 - |- "Proc.new {|params|
   puts params
   } "
 - "Proc.new{|params| puts params}"

何がダメかというと、文字列の扱いに気づいてない僕が問題w

これを文字列としてしか使わない場合は大体OKだろうけど、evalとかに使いたい場面で困る。

実際にダメな方でやってみる。

irb(main):026:0>a = YAML::load_file('test.yml') #上記ダメな方のyaml
=> {"hoge"=>["\"Proc.new {|params|puts params\n  } \"", "Proc.new{|params| puts
params}"]}
irb(main):027:0> (eval a['hoge'][0]).call("test")
NoMethodError: undefined method `call' for "Proc.new {|params|puts params\n  } "
:String
        from (irb):27
irb(main):028:0> (eval a['hoge'][1]).call("test")
test
=> nil
irb(main):029:0> exit

yamlではどうやら、どれにも確定しなかった場合に文字列として扱うらしい。

hoge:       #キー
 - hoge     #配列の要素文字列
 - "hoge"   #配列の要素文字列
 - 'hoge'   #配列の要素文字列
 - | "hoge" #バーチカルバーがあると、それは複数行にまたがる文字列である
            #事が確定するので、ダブルクォート込みで文字列になる
            #つまり読み込むと"\"hoge\""となる。
 - 1        #数値

他の複数行にまたがる表現の時も同じ。

言われてみれば納得だけど、気づかんよ。要らんとこでハマッぜ。。。

次回もyamlがらみでハマった話を書いてみます。おやすみなさい。