Skip to content
6月 13 / rakkyoo

octpress

Octpressでサイトを作ってみました。

具体的には、こんな感じです。

4月 7 / rakkyoo

twittering-modeのエラー「curl exited abnormally (exit-status=60)」

久々にtwittering-modeを使おうかと思い、

ここを参考にして再設定したのですが、その時に2つだけ問題があったので、備忘録です。

1. curl exited abnormally (exit-status=60)が出て止まる

これは、結構問題だったのですが、一行だけinit.elに追記すればOKでした。

1
(setq twittering-allow-insecure-server-cert t)

これだけです。
具体的には、

上記サイトの丸コピー+(setq twittering-allow-insecure-server-cert t)を入れただけです。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
(add-to-list 'load-path "~/.emacs.d/twittering-mode")
;; twittering-mode読み込み
(require 'twittering-mode)
(setq twittering-allow-insecure-server-cert t)
;; 起動時パスワード認証 *要 gpgコマンド
(setq twittering-use-master-password t)
;; パスワード暗号ファイル保存先変更 (デフォはホームディレクトリ)
(setq twittering-private-info-file "~/.emacs.d/twittering-mode.gpg")
;; 表示する書式 区切り線いれたら見やすい
(setq twittering-status-format "%i @%s %S %p: n %T  [%@]%r %R %f%Ln -------------------------------------------")
;; アイコンを表示する
(setq twittering-icon-mode t)
;; アイコンサイズを変更する *48以外を希望する場合 要 imagemagickコマンド
(setq twittering-convert-fix-size 40)
;; 更新の頻度(秒)
(setq twittering-timer-interval 40)
;; ツイート取得数
(setq twittering-number-of-tweets-on-retrieval 50)
;; o で次のURLをブラウザでオープン
(add-hook 'twittering-mode-hook
          (lambda ()
            (local-set-key (kbd "o")
               (lambda ()
                 (interactive)
                 (twittering-goto-next-uri)
                 (execute-kbd-macro (kbd "C-m"))
                 ))))

これで問題なく行けました。

2. macport でのgpgのインストール

ただ名前がわからなかっただけなのですが、「gnupg」で入りました。

1
$sudo port install gnupg

これだけです。

emacsでtwitterが見られてとっても快適です。

3月 14 / rakkyoo

10進数から16進数に変換するワンライナー

色の指定など、10進数から16進数に変換したいなって思うことが多々あるので、ワンライナーの備忘録です。

10進数の「140」を16進数にしたい場合は、

1
$ perl -e 'printf "%x¥n", 140'

1
2
$ perl -e 'printf "%x¥n", 140'
8c

と「8c」と表示されます。

連続して、いくつかの数字を確認したい場合は、

1
$ perl -ne 'printf "%x¥n", $_'

とすれば、10進数数字を入力すればその都度16進数が出力されます。

終了するときは、「Ctrl + c」です。

とっても簡単でした。

2月 16 / rakkyoo

ターミナルからリマインダー.appにタスクを追加(gmailとiftttを使って)

ターミナルからリマインダー.appに簡単にタスクが追加できたらいいのにと思って挑戦してみました。

objective-cを使った方法ではとっても簡単にできるみたいですね。
ターミナルから OSX のリマインダーに項目追加するコマンド – それマグで!

objective-cとかよくわからないので、iFTTTを使えば何かできないかなって思ってやってみました。
iFTTT

1.iFTTTでgmail経由でリマインダー.appに追加できるように設定

iFTTTのレシピは以下のを使いました。

iFTTT / Emails you label “To-do” get added to an iOS Reminders list by maxmeyers

これを使って、gmailのラベルが「Todo」の時に「リマインダーに登録」とレシピを作る(このレシピそのままですが)だけです。

2.gmailで「Todo」のラベルがつくようにフィルター設定

ラベルが「Todo」とつくように設定すればいいだけなので、送信メールアドレスでも、件名でも何でもいいのですが、私は件名でフィルターをしました。

“件名が「todo」の時はラベルを「Todo」にする”っと。

gmailの設定にて、
受信トレイ rakkyoo113 gmail com Gmail 2

「フィルタ」を開いて、
設定 rakkyoo113 gmail com Gmail

こんな感じに設定しました。
設定 rakkyoo113 gmail com Gmail

3.ターミナルからgmailにメールを送信スクリプトを作る

私の場合は、gmailからgmailにメールを送信するようにしたので、以下のようにしました。

まず、以下のモジュールをインストールしておきます

1
2
3
4
5
6
Email::MIME
Email::Send
Net::SMTP
Net::SMTP::SSL
MIME::Base64
Authen::SASL

あとは、ソースを作るだけ。
パスの通っているディレクトリで、「addtodo.pl」を作ります。

1
2
$ cd ~/bin
$ touch addtodo.pl

「addtodo.pl」の中は以下のような感じです。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#! /opt/local/bin/perl -w
use strict;
use warnings;
use utf8;
use Encode;
use Email::MIME;
use Email::MIME::Creator;
use Email::Send;
 
unless ( defined $ARGV[0] ) {
    print encode( 'utf-8', "タスクを追加してください。\n" );
    print encode( 'utf-8', "     ex) addtodo.pl タスクの内容\n\n" );
}
else {
    for my $body_txt (@ARGV) {
        $body_txt = decode( 'utf-8', $body_txt );
        print "*******************\n";
        print "Send Mail\n";
        print "Subject : todo\n";
        print encode( 'utf-8', "body    : $body_txt\n\n" );
        my $mailer = Email::Send->new(
            {
                mailer      => 'SMTP',
                mailer_args => [
                    Host     => 'smtp.gmail.com',
                    Port     => 465,
                    username => '**********@gmail.com',
                    password => 'gmailのパスワード',
                    ssl      => 1,
 
                ],
            }
        );
 
        my $mail = Email::MIME->create(
            header => [
                To   => '**********@gmail.com',
                From => encode(
                    'MIME-Header-ISO_2022_JP',
                    'add tasks <**********@gmail.com>'
                ),
				# subjectを「todo」に指定する。
                Subject => encode( 'MIME-Header-ISO_2022_JP', 'todo' ),
            ],
            attributes => {
                content_type => 'text/plain',
                charset      => 'iso-2022-jp',
                encoding     => '7bit',
            },
            body_str => $body_txt,
        );
        $mailer->send($mail);
    }
}

あとは、実行権限を与えて、

1
$ chmod +x addtodo.pl

終了です。

これで、

1
$ addtodo.pl 追加するタスク

っとすると、件名が「todo」で、本文が「追加するタスク」というメールがgmailにgmailから送れます。

ちなみに、

1
$ addtodo.pl 追加するタスク1 追加するタスク2 追加するタスク3

と連続でも追加できます。

これで、15分くらい待つとリマインダー.appにiFTTT経由で登録されます。
perlスクリプトからgmailにメール
      ↓
gmailのフィルタでラベル「Todo」がつく
      ↓
iFTTTがラベル「Todo」がついているメールをリマインダー.appに登録

っという流れです。

意外と快適に。

2月 15 / rakkyoo

wordのdocx文章をgitでバージョン管理

最近、細々とgitを使ってバージョン管理しています。

word文章でもgitでバージョン管理をしようと思うのですが、git diffしても変更内容が出てきません。
そこで、あれこれと試していたのですが、とっても簡単にできるみたいですので,備忘録です。

試しに、「~/temp_dir/temp.docx」というファイルを作ってみて
スクリーンショット 2014 02 15 14 12
こんな感じでファイルを作ったあとで、

1
2
3
$ cd ~/temp_dir
$ git init
$ git add temp.docx

としてから、
スクリーンショット 2014 02 15 14 13
こんな感じにファイルを更新して

1
$ git diff

とすると、

1
2
3
4
$ git diff
diff --git a/test.docx b/test.docx
index 186efa7..273fc02 100644
Binary files a/test.docx and b/test.docx differ

となって、何が変更されたのかわかりません。

そこで、docxをテキストに変更して、diffを取ってくれるように設定しました。
やり方はとっても簡単。

1.「docx2txt」の準備


Docx to Text convertor

ここから、v1.2をダウンロードして、解凍します。

解凍すると,

1
2
3
4
$ cd ~/Download/docx2txt-1.2
$ ls 
AUTHORS         COPYING         INSTALL         README          VERSION         docx2txt.bat    docx2txt.pl
BSDmakefile     ChangeLog       Makefile        ToDo            WInstall.bat    docx2txt.config docx2txt.sh

こんな感じなので、、、
この中で「docx2txt.pl」を使えばいいので、パスを通してあるディレクトリにコピーします。

1
$ cp docx2txt.pl ~/bin/

などといった感じです。

1
$ cd ~/bin

として、このperlソースを実行するシェルスクリプトを作って実行権限とします。
これもとっても簡単。

1
2
3
4
$ cd ~/bin
$ echo '#!/bin/bash
docx2txt.pl $1 -' > docx2txt
$ chmod +x docx2txt

これだけ。

そうすると、

1
2
3
4
$ cd ~/temp_dir
$ docx2txt test.docx
First text.
Second text.

こんな感じに使うと、docx内のファイルがターミナル上に表示されるようになります。

これはこれで結構便利です。。。

2.gitを設定する

まず「.gitattributes」を作って、「*.docx diff=wordx」と書きます。

1
2
$ cd ~/temp_dir
$ echo '*.docx diff=wordx' > .gitattributes

こんな感じで十分です。
「.docx」ファイルの時は、diffするときにwordxしてね。っといった感じでしょうか?

次に、「wordx」を定義します。
「.git/config」に以下の内容を追記します。

1
2
[diff "wordx"]
    textconv = docx2text

ターミナルから行うとすると、

1
2
$ echo '[diff "wordx"]
    textconv = docx2txt' >> .git/config

こんな感じでできます。

以上で終了です。

3.確認

先ほどの状態で「git diff」すると、、、

1
2
3
4
5
6
7
8
9
$ git diff
diff --git a/test.docx b/test.docx
index 186efa7..273fc02 100644
--- a/test.docx
+++ b/test.docx
@@ -1,2 +1,2 @@
 First text.
-
+Second text.

こんな感じに、「second text.」が追加されていることが表示されています。

とっても快適に。

11月 19 / rakkyoo

sparrowがフリーズしたのでデータフォルダを削除

macでメーラーはこれ↓

を使っています。
twitterライクなユーザインターフェースで、とっても使いやすいのですが、突然フリーズしてしまう事態になってしまいました。

一度強制終了してみ、再起動しても、ダメ。。。

そこで、「help」の「データフォルダを表示」をして、
全画面 2013 11 19 9 44 2

そして、ディレクトリ上にある、
gmailのデータフォルダ↓
Rakkyoo113 gmail com sparrowdb

「rakkyoo_____@gmail.com.sparrowdb」
を削除して、再度Sparrowを立ち上げました。

これで無事にフリーズしなくなりました。

とりあえず、一安心です。

10月 29 / rakkyoo

電源ボタン

今まで,MacBookAirの電源ボタン(右上)を押すと,以下のようなダイアログ

スクリーンショット 2013 10 29 16 12
が出ていたのですが,

osX marvericsにアップデートしたら,ボタンを押すとスリープになってしまうため,このダイアログを出す方法を探していました.

とっても簡単で,

「Controlボタンを押しながら電源ボタン」

で出来るのですね.

とっても簡単でした.

10月 22 / rakkyoo

Day Oneのコマンドラインツール

スマートに日記を書くソフトのDay Oneをまた使ってみようかなと思って,インストールしたのですが,,,


カテゴリ: ライフスタイル
価格: ¥500


いつのまにやらターミナル上から投稿ができるような,コマンドラインツールが変更されていました.

「Day One CLI」なるソフトをインストールする必要があるとのこと.

ここから,「Command Line Interface」をダウンロードしてインストールすれば無事にできました.

しっかりとマニュアルもあって,使いかたもとっても簡単.

ターミナル上から

1
$ dayoen new

と入力すると,,,

1
2
rakkyoo:$ dayone new                                                                                                                                                                       Enter text for journal entry. Type ^D on a newline when finished.
--------------------------------------------------------------------

となるので,文章を入力して,「Ctr-D」を押すだけ.

1
2
3
rakkyoo:$ dayone new                                                                                                                                                                       Enter text for journal entry. Type ^D on a newline when finished.
--------------------------------------------------------------------
テスト投稿

とすると,

Day One 2

こんな感じに投稿できます.

他にも,ファイルをあらかじめ作ってから投稿するのも,

1
$ dayoen new < note.txt

などとすればできますし...

ほかにもいろいろとターミナルからできるみたいです♪

快適そうです.

10月 4 / rakkyoo

plenvを使う

何となく,miyagawaさんのYAPC2013のトークを聞いたり,

ゆーすけべさんのこの記事を読んでみたり

していたら,何となくシステムに入っているperlではなくて,自分でバージョン監理しているperlを使いたいなって思ったので,plenvを入れることにしました.

zshを使っているので,ここを参考に,,,
ターミナル上で,,,

1
2
3
$ git clone git://github.com/tokuhirom/plenv.git ~/.plenv
$ echo 'export PATH="$HOME/.plenv/bin:$PATH"' >> ~/.zshrc
$ echo 'eval "$(plenv init -)"' >> ~/.zshrc

perlのインストールをするため,perl-buildも入れます.

1
$ git clone git://github.com/tokuhirom/Perl-Build.git ~/.plenv/plugins/perl-build/

これで終了みたいです.

モジュールの管理はcpanmでということで,

1
$ plenv install-cpanm

として,cpanmをインストールできます.

実際に使ってみると,

1
$ plenv install -l

とすると,インストールできるバージョンが確認できて,

1
$ plenv install 5.19.4

とすれば,今現在の最新がインストールできました.

とりあえず,

1
$plenv shell 5.19.4

として,使うperlのバージョンを設定して,

使うモジュールをcpanm経由でじゃかじゃかインストールして,準備万端に.

1
2
3
4
$ cpanm Chart::gnuplot
$ cpanm JSON
$ cpanm DBI
・・・などなど

plenvで便利だなって思ったのは,

他のバージョンのインストールしているperlにもモジュールを一括インストールできること.

たとえば,5.19.0でインストールしていたモジュールを一括で5.19.4にもインストールする場合は,

1
$ plenv migrate-modules 5.19.0 5.19.4

とするだけですべてインストール完了となりました.

ちなみに,今回インストールしたモジュールは,

1
$ plenv list-modules

として,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
Acme::Oppai
Algorithm::Diff
App::cpanminus
App::cpanoutdated
CPAN::DistnameInfo
Chart::Gnuplot
DBD::SQLite
DBI
Encode::Locale
ExtUtils::MakeMaker
File::Listing
HTML::Parser
HTML::Tagset
HTTP::Cookies
HTTP::Daemon
HTTP::Date
HTTP::Message
HTTP::Negotiate
IO::HTML
IO::Socket::SSL
JSON
LWP
LWP::MediaTypes
LWP::Protocol::https
List::MoreUtils
Module::Build
Mozilla::CA
Net::HTTP
Net::SSLeay
Number::Format
Path::Class
Perl
Statistics::Basic
Sub::Uplevel
Test::Differences
Test::Exception
Text::Diff
Text::Markdown
URI
WWW::RobotRules
XML::NamespaceSupport
XML::Parser
XML::SAX
XML::SAX::Base
XML::SAX::Expat
XML::Simple
YAML
install
local::lib

といった感じでした.

相当快適に.

6月 5 / rakkyoo

Perl::Tidyでコードの整形をしてみる

コードを書くときはいつもemacs上で行っているのですが,コード整形をしてもらおうと,Perl::Tidyを入れてみました.

インストールは,cpanm経由で簡単で,,,

1
$ cpanm --sudo Perl::Tidy

とするだけ,,,

あとは,Emacsの「.emacs」に,

1
2
3
4
5
6
7
8
9
10
(defun perltidy-region ()
  "Run perltydi on the current region."
  (interactive)
  (save-excursion
    (shell-command-on-region (point) (mark) "perltidy -q" nil t)))
(defun perltidy-defun ()
  "Run perltidy on the current defun."
  (interactive)
  (save-excursion (mark-defun)
  		  (perltidy-resgion)))

と追加するだけです.

あとは,リージョンを指定してから,
M-x perltidy-region
で整形されました.

とっても快適に.