2012年12月22日土曜日

orgのバージョンを7.9.2にするとorg-googlecが使えなくなる件


Org-modeのバージョンが6.3くらいで古かったのでバージョンを上げた.
すると,Org-modeからこのブログに投稿するために使っているorg-googlecが使えなくなった.
今回は,この問題に対処する.

環境





OS
Mac OS X 10.7.5

Emacsバージョン
23.4.1

Org-modeバージョン
7.9.2







症状




http://tokikane-tec.blogspot.jp/2012/09/emacsblogger6970.html
で紹介した通り,
M-x org-googlecl-blog
を実行すると,以下のエラーメッセージが出力される.



let: Symbol's function definition is void: org-forward-same-level


どうやら, org-forward-same-level という関数がないらしい





原因




結論から言うと, Org-modeの関数名が変わってる のが原因.
具体的には, org-forward-same-level という関数の名前が org-forward-heading-same-level に変わった.
ちなみにこの関数は,今カーソルがあるネストのレベルと同じレベルの次の要素の先頭に移動する関数である.
そして,org-googlecは org-forward-same-level 内部で使っていた.
このために上記のようなエラーが出た,というわけである.





対処




関数の名前が変わったなら,呼び出す部分のソースコードを弄ればいい.
org-googlecl.elの



(org-forward-same-level 1 t)   


という行を



(org-forward-heading-same-level 1 t)   


と書き直す.
これで無事問題が解決する.





おわりに(余談)




どのバージョンを境に関数名が変わったかは不明である.

Org-modeは,結構,昔の環境のことを考えずに変更が加えられることがある.
以前もOrg-modeの参照で :- に置換するという(おせっかい)機能がついていて,はまった.
自分はいつも fig:hoge みたいな書き方をするので困った.

あとこういうのってgithubでpull requestを出して本家を直してもらう,というのがいいのだろうか?
今までpull requestを出したことがないので,よくわからない.










--
My Emacs Files At GitHub

大都会岡山合同勉強会でLTしました.


以下のURLにPDF上げました.
みんなEmacs使おうね(違う
http://dl.dropbox.com/u/14752840/slide/gddaitokai.pdf


--
My Emacs Files At GitHub

2012年12月5日水曜日

おいしい広島 Advent Calendar 2012 5日目


投稿がギリギリになってごめんなさい.




おいしい広島 Advent Calendar 2012




おしい!広島県・おしいは、おいしいの一歩手前。なんて自虐的なことゆっとんじゃけど、おいしいところよーけあるけぇ。

そんなわけで、隣の大都会に負けてられない!

広島に関するアツイ思いをつなげていこうぜ。

※内容は技術系とか関係なくご自由にどうぞ
例 俺の一番オススメなお好み焼きとか 俺が考えた最強の広島弁ネタとか







自己紹介




というわけで,私,DeepTokikanが本日の「おいしい広島 Advent Calendar 2012」の5日目の記事を書かせて頂きます.
(ブログの名前が時羽金也になってますが,これは日本語版の偽名です.)

岡山の人が残念大学生と言うと,きっとそれは私でない誰かです,きっと…
私は,岡山にいる普通の大学生です.
ちなみに,歳は21です.異論は認めません.






岡山から見た広島




実は僕,広島には1度しかいったことがありません.
しかももう1年ちょっと前です.
なので,今回は岡山から見た広島,ということで記事を書いていきたいと思います.

まず,私が岡山で,広島について見聞きしたことを書きたいと思います.

その1: おたふくソース大好き!?
大学の広島出身の知り合いと学食においてある調味料(マヨネーズとかドレッシングとか)の話をしてたとき,広島出身のその人は
「おたふくソースがないのはおかしい」
とか
「おたふくソースをおいてくれた店員さんがいたら,広島に銅像を立てる」
などおたふくソースについて熱く語っておりました.
これから察するに,広島の人はみんなおたふくソースが大好きなのだろうと思います.


その2: 広島にはデスマってる人がいる
これは,TwitterのTLでよくみます.
デスマの話になると颯爽とTLに現れて皆を笑いの渦に巻き込んでいく,とかなんとか.
```
  <

そういえばブログどうなったのかな?


その3: 広島から独立した国家,福山という国があるらしい.
広島県の西の方 東の方に,福山という場所があります.
どうもこれが広島から独立し,国として運営されているらしいです.
ちなみに,福山は何か秘密裏の活動をしてるのか,グーグルマップの衛星写真に一部移らない箇所があります.
(雲の力を借りて隠してます.)


その4: 広島の方は結構岡山の勉強会に出没する
岡山でも広島に負けず劣らずIT系の勉強会をやっています.
その岡山の勉強会では,結構広島から来る人をみます.
中には,岡山に来すぎて,大都会岡山クラスタだと思われている人もいそうです.
あと#た で通じる何か(誰か?)があるらしいです.
僕は無関係です.


と岡山で見聞きする広島のうそか本当かわからない話でした.






岡山から見た広島のIT系勉強会などの話(個人的見解)




ここからは,ITコミュニティーの話
これまでのカレンダーの記事にもあったと思いますが,広島ではIT系の勉強会が活発に行われているようです.
特にRuby関連とAndroid関連が活発なように思います.

また,ここ昨年と今年はOSCが広島で開催されています.
私は,今年のOSCには残念ながらいけなかったのですが,昨年のOSC広島には行ってきました.
2日目のmakoさんの記事に今年のOSCの話が書かれています.

僕が思うに,広島で行われるOSCは幅広い分野の方々が集まってるように思います.
昨年ですとLinuxの仮想化の話から,ガイガーカウンターの話,Google技術の話,Emacsの話,など様々な話や展示を見ることができました.
こういう人たちが集まるのは,広島やその近辺ではさまざまな分野の方が活発に活動しているのからだと思います.






最後に




いろいろと書きましたが,広島はおもしろそうな所なので,広島の人も岡山の人もそうでない人も,機会があれば広島の勉強会に遊びに行ってみるといいと思います.
(その帰りにちゃんと大都会岡山に寄るように)

私も今年度中に広島に遊びに行ってみたいですが,予定が合うかどうか…

明日の担当は yuu eshima さんです.



--
My Emacs Files At GitHub

2012年11月11日日曜日

Emacsのバックアップファイルの保存先変更


Emacsでファイルを編集すると,バックアップファイル(<ファイル名>~) や 自動保存ファイル(#<ファイル名>#) が自動生成される.
MacでEmacsを使っていると,時たまEmacsが落ちるので,これらは重宝する.
これらがあれば,Emacsが不正終了して,保存できていなかったファイルでも,コマンド一つで編集途中の状態に復旧できるからだ
(M-x recover-this-file で復旧できます.)

しかし,これらのファイルの自動生成には,いくつか困ったことがあります.


  1. 編集しているとディレクトリと同じディレクトリに作成される

    このため,ディレクトリの中が散らかる



  2. Dropboxのディレクトリの中のファイルを編集すると,バックアップファイルまで同期される.





これらを解決するために,バックアップファイルの保存先ディレクトリを変更します.



ディレクトリの変更方法




まずはバックアップファイルの保存先ディレクトリを変更します.
~/.emacs/init.el に以下を追加します.




(setq backup-directory-alist
(cons (cons ".*" (expand-file-name "~/.emacs.d/backup"))
backup-directory-alist))






".*" は正規表現でバックアップファイルを生成するファイルを指定しています.
".*" は任意の文字列に一致する正規表現です.
ですので,任意のファイルに対して,バックアップを生成します.
(expand-file-name "~/.emacs.d/backup") の部分は,バックアップファイルの保存先ディレクトリを指定しています.
この例では, ~/.emacs.d/backup というディレクトリに保存することになります.

次に自動保存ファイルの保存先ディレクトリを変更します.



(setq auto-save-file-name-transforms
`((".*", (expand-file-name "~/.emacs.d/backup/") t)))





先の同様,".*" は自動保存ファイルを生成するファイルを正規表現で指定しています.
また, (expand-file-name "~/.emacs.d/backup") は自動保存ファイルの保存先ディレクトリを指定しています.

これで,<ファイル名>~ や #<ファイル名># でディレクトリが散らかったり,Dropboxの同期のポップアップを見て悲しい気持ちにならずに済む!(はず)







--
My Emacs Files At GitHub

2012年9月23日日曜日

sbtの導入


いろいろあってScala+JavaFXでテトリスを作ることになりそう.
なので,まずsbtを導入します.


環境






  • Mac OS 10.7.4(Lion)







sbtのインストール




sbtのインストールは sbt-launch.jar をダウンロードし,これを実行するスクリプトを作成することで完了する.
例として ~/local/bin/sbt/ の下にインストールする手順を以下に示す.


  1. sbt-launch.jar から sbt-launch.jar をダウンロード.これを ~/local/bin/sbt/ の下に置く.


  2. sbt というファイル名でスクリプトファイルを作る.
    スクリプトの中身は以下のようになる.



    java -Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=384M -jar `dirname $0`/sbt-launch.jar "$@"






  3. スクリプトファイル sbt に実行権限を与える.
    $ chmod +x ~/local/bin/sbt/sbt


  4. PATHを通す.
    ~/.bash_profile に以下の行を追加



    export PATH=/Users/<ユーザー名>/local/bin/sbt/:$PATH







これでインストールは完了





とりあえずHello World




とりあえず,Hello Worldを出力するだけのプログラムを実行してみる.
プログラムは ~/hello 以下に作成する.
手順を以下に示す.



$ cd ~
$ mkdir hello
$ echo 'object Hi { def main(args: Array[String]) = println("Hello World!") }' > hw.scala
$ sbt
...
> run
...
Hello Wolrd!










おわりに




とりあえずこれでHello Worldができた.
使い方など,もっとsbtのことを知りたい人は参考URLを見てください.
というか,この記事よりも参考URLの方がわかりやすいと思います.





参考URL





--
My Emacs Files At GitHub

2012年9月22日土曜日

「JRuby+Swingでテトリス」という話を聞いて


今日は第11回 岡山Ruby, Ruby on Rails勉強会に参加して,いろいろな発表を聴講させていただきました.
いろいろ話を聞かせていただいたなかで,自分が一番興味を持った話についてまとめた記事を書きます.
内容はJRubyとSwingでテトリスを作るというものでした.
Ruby初心者にとっていい話だったと思います.


なぜテトリス?




雑誌に書いてた言葉「テトリスもかけないとプログラマになれない」





JRuby






  • JRubyはJavaで実装されたRuby


  • GUIのライブラリは標準ではない.


  • そこでJavaのswingを用いる


  • SwingはOSに依存することは少ない.







参考動画




【プログラミング】テトリスを1時間強で作ってみた【実況解説】


  • テトリスを1時間強で作ってみる.(ニコニコ動画)


  • この動画はWinAPIとC言語でテトリスを作っている.







コード






  • テトリスの落ちたブロックは2次元配列で管理


  • 全体のコードは300から400行


  • 開発はTDDで行う.







プログラミング




ゲームプログラムには以下のような要素が詰め込まれている.


  • 関数呼び出し


  • 条件分岐


  • ループ


  • オブジェクト指向


  • テスト



これらのことをゲームプログラミングを通して学べる.





Ruby初学者にとってのメリット




Ruby初学者は






発表を聞いた私の感想






  • Rubyに限らずゲーム作りはプログラミングや言語の勉強の題材としてよさそう.


  • とりあえず僕もテトリスを作ろうと思った


  • テトリスできたらまた報告する予定





--
My Emacs Files At GitHub

2012年9月20日木曜日

JRubyでSwingを使ってみる




目標




JRubyを使ってJavaのGUIツールキットであるSwingを用いる.
これによってRubyでGUIプログラムを作成する.






動作環境




私が動作させた環境を以下に示します.
どれが関係あり,どれが関係ないかはよくわかってません.


  • Mac OS X 10.7.4(Lion)


  • Ruby 1.9.3


  • Jruby 1.6.8


  • java version 1.6.0_35






そもそもJRubyとは




JavaVM上でRubyを動かすソフトウェアである.JavaからRubyを呼び出すこともできるらしい.





JRubyの長所




JRubyには以下の長所がある(らしい)


  • Javaの豊富なライブラリが使える.


  • Java並みの速度でRubyで書いたプログラムが動く


今回は1つめ長所の恩恵にあずかることになりそうです.





JRubyをインストール




RVMを用いてインストールします.
以下のコマンドでインストールできます.



rvm install jruby-1.6.8










JRubyの使い方




ex.rb というRubyのプログラムをJRubyで動かすには以下のようにする.



jruby-1.6.8 ex.rb










swingを使ってみる




参考ページそのままのサンプルコードを動作させてみる.
上の方のimport文でswing関連のものをインポートしている.



require 'java'

import 'javax.swing.JFrame'
import 'javax.swing.JButton'
import 'javax.swing.JTextField'
import 'javax.swing.JPanel'
import 'java.awt.BorderLayout'

class ButtonAction
  include java.awt.event.ActionListener
  
  def initialize(text)
    @text = text
  end
  def actionPerformed(evt)
    @text.setText("Click")
  end
end


frame = JFrame.new("HOGE")
button = JButton.new("Click!!!")
text = JTextField.new(10)

button.add_action_listener(ButtonAction.new(text))

panel = JPanel.new
panel.add text
panel.add button
frame.getContentPane.add(panel, BorderLayout::CENTER)
frame.setDefaultCloseOperation(JFrame::EXIT_ON_CLOSE)
frame.pack
frame.visible = true










おわりに




とりあえず,動作することまでは確認.
これでRubyでGUIプログラムをつくることができそう.
他にもRubyでGUIプログラムをつくる方法があるのかもしれないけど,僕はまだ知らない.






--
My Emacs Files At GitHub

MacにRVMをインストール


MacにRubyのバージョン管理プログラムであるRVMをインストールする.


実行環境






  • Mac OS X 10.7.4


  • GNU bash, version 3.2.48







RVMのインストール







$   bash < <(curl https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)




次にエディタで ~/.bash_profile を開き,文末に以下を追加する.
(私の場合は上記コマンドの実行により,既に追加されていた.)



[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*




.bash_profile 編集後



$ source ~/.bash_profile




を実行.
これで,RVMのインストールは完了する.
試しにRuby1.9.3をインストールしてみる.



$ rvm install 1.9.3
$ rvm list

rvm rubies

=* ruby-1.9.3-p194 [ x86_64 ]

# => - current
# =* - current && default
# * - default












--
My Emacs Files At GitHub

2012年9月16日日曜日

Emacsからbloggerへ記事を投稿する




実行環境






  • Mac OS X 10.7.4


  • GNU Emacs 23.4.1






googleclのインストール




ターミナルで以下のコマンドを実行
sudo port install googlecl
Ubuntuならapt-get でできるかも(やってないけど)





googlecl.elのインストール




https://github.com/rileyrg/org-googlecl
からZIPをダウンロードし,適当なところに展開し,ファイルのパスをload-pathに追加する.






Emacsの設定




.emacs に以下の設定を追加する.
(require 'org-googlecl)
(setq googlecl-blogname "ブログの名前")
(setq googlecl-username "gmailのアドレス(hogehoge@gmeil.com)")





投稿方法




Emacs上で投稿したい記事(見出し)にカーソルを合わせ
M-x org-googlecl-blog
を実行する.
カーソルを合わせている見出しの部分木がブログとして認識される.





余分な行間への対策




以上の手順を踏めば投稿はできるのですが,行間が無駄に大きく見栄えが悪いです.
これは,(参考URL(2)曰く)出力結果のhtmlが余分に<p>タグを出力しているかららしいです.
ということで,googlecl.elを改造します.
googlecl.elの135行目あたりの

(with-temp-file tmpfile
(insert bhtml)
(goto-char (buffer-end 1))


(with-temp-file tmpfile
(insert (replace-regexp-in-string
"<p>\n*\\(\\(.*\n\\)+?\\)</p>"
"\\1" bhtml))
(goto-char (buffer-end 1)))
と書き換えます.
おそらく正規表現を用いて,出力結果のhtmlの<p>部分を変換してると思われます.





おわりに




この記事は上記の通りに行って投稿した記事です.
今後は,もう少し見栄えがよくなるようにしてみたいです.
あと,プレビューできないのも困るので,なにかいい方法があればいいな…と思ってます.






--
My Emacs Files At GitHub
新しいブログを作りました. <![CDATA[/*>

新しいブログを作りました.

1 はじめに

この記事は新しいブログの作成にあたり,本ブログ作成の目的,また本ブログの方針について述べる.

2 作成の目的

本ブログの作成の目的は以下の2つである.
  1. 技術系の記事と日記を別々のブログにすること. これまで,私が更新していた苦学生 時羽金也 では,技術系の記事と日記を混合して更新していた. これでは,方向性がわかりづらいブログになる. よって,技術系の記事と日記を別々のブログへ投稿することにする.
  2. EmacsのOrg-modeから記事を投稿すること. 現在,ブログへ記事を投稿するには多くのコストがかかる. 長い文章をブラウザ上で作成することは,作業効率の点で不利である. 作業を効率的にするため,EmacsのOrg-modeで記事の作成,投稿を行う環境を構築する.

3 本ブログの方針

本ブログは日記のような記事は一切投稿せず,技術系の記事のみを投稿する.
Date: 2012-09-16 日
HTML generated by org-mode 6.33x in emacs 23
-->