Railsを追いきれる自信が無かったから。Rails文化に引っ張られてアプリが一生完成しない気がしたから。あとアプリとしては問題無いのにベースのRailsのバージョンが低いだけで残念っぽくなってるアプリ(Redmineとか)を見たから。
半年やってみてSinatra面倒クセー!っていっぱいあったけど、(Sinatra本体の)ソースが短いので完全把握できる掌握感は独自のOSS作る上で心強かった。
Railsを追いきれる自信が無かったから。Rails文化に引っ張られてアプリが一生完成しない気がしたから。あとアプリとしては問題無いのにベースのRailsのバージョンが低いだけで残念っぽくなってるアプリ(Redmineとか)を見たから。
半年やってみてSinatra面倒クセー!っていっぱいあったけど、(Sinatra本体の)ソースが短いので完全把握できる掌握感は独自のOSS作る上で心強かった。
Macで気軽にメールしたい。
Snow LeopardではSMTPサーバーとしてpostfixが入っている。smtp.gmail.comと直接やり取りするプログラムを書いてもいいけど、せっかくSMTPサーバーがあるのでその辺はそっちに任せてsendmailコマンド等を使うことにした。
「Macはpostfixが動いてるの?そんな無駄なモノ今すぐ止めなきゃ!」
と思った方、ご安心下さい。Snow LeopardのpostfixはlaunchdのQueueDirectories機能を使っているので/var/spool/postfix/maildropディレクトリに変化が起きた時だけ立ち上がって、60秒後に終了するので慢性的な負荷は書けません。(/System/Library/LaunchDaemons/org.postfix.master.plistに設定がある。)
gmailにリレーするにはSASLとTLSの設定が必要なので下記のようにする。
% sudo vi /etc/postfix/sasl_passwd
smtp.gmail.com:587 komagata@gmail.com:パスワード
% sudo postmap /etc/postfix/sasl_passwd
% sudo rm /etc/postfix/sasl_passwd
% sudo vi /etc/postfix/main.cf
relayhost=smtp.gmail.com:587
smtp_sasl_auth_enable=yes
smtp_sasl_password_maps=hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options=
smtp_use_tls=yes
smtp_tls_security_level=encrypt
smtp_sasl_mechanism_filter = plain # if you use Yosemite
% sudo postfix stop
% sudo postfix start
% date | mail -s test komagata@gmail.com
ひゃっほう。
何か問題があれば% tail -f /var/log/mail.log
してログを確認しましょう。
二段階認証を使ってる場合はアプリパスワードを発行してそれを上記のパスワードに入力してください。
2012/06/05追記:Lionでも同じでOKでした。
2013/05/02追記:Mountain Lionでも同じでOKでした。
2014/03/11追記:Mavericksでも同じでOKでした。(by tagawaさん)
2015/06/04追記:Yosemiteではmain.cfに一行追加する必要がありました。あとは同じ。
2017/07/25追記:Sierraでも動きますが、Googleから「安全性の低いアプリのログインをブロックしました」として弾かれてしまいます。Googleのアカウント設定で「安全性の低いアプリのログインを許可」すればOKです。(推奨できませんが)
Leopardでランチャーは何を使えばいいのか - komagata [p0t]
この問題。結局"ターミナルが1キーで起動すればいい"というところに帰結するのではないかと考え、Visorを使ってみました。(LanchBarも試し中だけどUnix Executableに引数を渡す方法がわからない)
結局我々の様なオールドタイプは自動化の為の資産はCUIコマンドとして蓄積してくのが楽かもしれない。
openweb
openでURLを開くのにhttp://を付けるのが面倒なので。
#!/bin/sh
open http://$1
ggl
google検索。
#!/usr/bin/env ruby
require 'cgi'
system "open \"http://google.com/#&q=#{CGI.escape(ARGV.first)}\""
docskomagata
このブログを検索する。(自分のブログに書いた手順を検索することが頻繁にある)
#!/usr/bin/env ruby
require 'cgi'
system "open \"http:/docs.komagata.org/search/?query=#{CGI.escape(ARGV.first)}\""
shellは自動化の総本山なので既存の便利な物がいくらでもある。
しかしネックが、VisorはTerminalの1番Window(Cmd-1)を使ってしまうので普通にTerminalを使っているとき、Cmd-TabでTerminalをアクティブにしたときにCmd-2を押す必要があるところ。
もう一度、俺に取っての理想のランチャーの要件をまとめてみる。
以前、VirtualBox 3系から4系に移行しても問題無く使えたと書いたけど問題あった。VirtualBoxの3系から持ってきたイメージで下記のような警告が出るようになった。
無視して使ったが下記のようなエラーが出てスナップショットからの再開が出来ない。(スナップショットを破棄して普通に起動すれば動く)
これはあの警告のせいだと思い、指示通りにOracle VM VirtualBox Extension Packをダウンロードしてインストールした。しかし直らない。仕方ないので下記のようにUSB 2.0を無効にしたら直った。
本格的に使うにはちょっと早いのかもしらん。
ちょっと頭の片隅においておくといいかもしれないWordPress関連の2つの論争 « WaviaeiWordPress3.0がリリースされましたが、このバージョンからcapital_P_dangit()という関数がコアの中に付け加えられました。このコードが何をするかと言うと、記事のタイトル(the_title)、記事の本文(the_content)、そしてコメントの本文(comment_text)に、間違ったスペルのWordPressが書かれていると、それを自動的に正しいスペルに修正する、というものです。(厳密にいうと、DBには間違ったまま保存され、記事として動的に出力される時に正しいスペルで表示するようfilterがかかります。)
Oh my god! oh my god...
特定の単語のスペルミスを直すためだけの関数がコアに入るとは・・・。
もし僕がやるならWordPressのビジュアルエディタにスペルチェック機能(英語のスペルミスを黄色くハイライトするとか)を実装すると思う。
僕の感覚とのあまりの乖離に一瞬痛快にすら思えたけど、これは間違った悟りだ。
origin = github。
% git branch -r
heroku/master
origin/HEAD -> origin/master
origin/admin-notice
origin/draft
origin/master
origin/pyha-last
モートブランチが表示される。
% git checkout -b draft origin/draft
リモートブランチのdraftをローカルブランチdraftとして持ってくる。
% git branch
draft
* master
一方、こっちのやり方は駄目!ってのをみたんだけど、なんでだかは知らない。
$ git checkout -b draft
$ git pull origin draft
ジェイソン・フリード:なぜ職場で仕事ができないのか
ここ最近気になってるが"受動的なコミュニケーションツール"という奴。まだ自分の中でモヤッとしているけど書くことで少しでもまとめたい。(たまにまとまってない記事も書きたい!)
俺の想像する受動的なコミュニケーションツールの特徴
要は"私書箱"と同じ性質を持っている。Emailは私書箱を電子化したようなものなので「メールでいいじゃん!」っていうことなんだけど、欲しいものはちょっとEmailとも違う気がなんとなくしている。
攻殻機動隊で「お前の外部記憶領域にデータを置いといた。」みたいなセリフがありました。
個人に紐付けられたネット上の領域で、他人が場所を知ってて、誰もが書き込める領域・・・って~/mboxのことじゃん!(プロバイダの)
「メールしといたYO!」って言えよ!難しい言い方すんなよ!って思ったんですが、機能的には殆ど同じでもそういう用途の為の場所とメールって何かちょっと違うな?って気がします。
97年頃のWarezのFTP交換用サーバー・・・って例えが分かり辛過ぎるけど、個人に紐づいた領域で、誰にでも書き込み可能な領域だから、受け取る方もそこに置かれるファイルは基本信用してなくて、ウィルススキャンしてから他の場所にmoveするという感じの領域。ネット上にあるんだけどPublicとPrivateの間にありつつ両方の性質をもつDMZみたいな領域。
今だと感覚的にはShareしてる友達同士のDropboxフォルダが近い気がする。でもTwitter IDみたいのを知ってれば誰でもファイル置けるようなもうちょっとPublicな領域。
そんな私書箱ってファイル置いても相手の作業に割り込みをかけないし、送る方も送る前に許可を取る必要もないので気軽に置ける。
年末年始にTwitter IDでそういう領域あったら便利だと思ってほぼ実装したんだけど、それだと結局FireStorageみたいなファイル受け渡しサービスになっちゃうからツマラナイし儲からなそうということで辞めた。
メールをリデザインするという意味では似てるけどGoogle Waveはリアルタイムウェブの方向で、そうではなくて、もっと非リアルタイムな感じ、私書箱としてメールをリデザインしたモノが欲しい。
Twitterを利用したように、何か他の便利な使い方の提案とか表現方法があるんだろうなぁ、とモヤモヤ考えています。
このソフトウェアはマジおすすめ。
機能がすっごい豊富なのに3150円と格安です。ここだけの話、このソフトがあるとパソコンが動いたりするらしいです。
Mac App Storeも使えるようになるらしいです。
・・・っていう宣伝してもやっぱりLokkaのLoepard対応はやった方がいいですよね・・・。
public/theme/(Mac版の場合はLokka.app/Contents/Resources/public/theme/) ディレクトリにテーマ名でディレクトリを作ります。
既存のテーマのディレクトリをコピーして修正しても構いませんが、ゼロからexampleというテーマ作ってみます。
exampleディレクトリの作成
テーマのディレクトリの中にテンプレートファイルを作成します。テンプレートの形式は複数から選べますが、一番簡単なerbで作ってみます。
Lokkaのテーマに最低限必要なテンプレートは下記の二つだけです。
まずは個別ページのテンプレートを書いてみます。
exampleテーマを使うように設定します。themeディレクトリにexampleディレクトリを作成した時点でテーマが認識されているので、管理画面の"テーマ"から"example"のテーマを選択します。
そして、個別ページを見てみましょう。(最初から1エントリーある筈なので http://localhost:9646/1 にアクセスします。)
単なるHTMLですが、ちゃんと表示されました。
しかし、静的なHTMLを表示するだけではつまらないのでサイトのタイトルを表示してみましょう。
h1タグの部分にサイトのタイトルを表示するように変更しました。<% と %>を囲うのがerb形式のテンプレートの記法です。<%= %>のように=が最初に付くと内容を表示するという意味になります。(これはphp/wordpressの<?= ?>と同じです。)
また http://localhost:9646/1 にアクセスして確認してみましょう。
サイトのタイトルが表示されました。この内容は管理画面の"設定" > "タイトル" で変更することが出来ます。同じようにサイトの詳細も <%= @site.description %>と書けば表示されます。
今度は個別ページなので、エントリーの内容を表示してみましょう。
http://localhost:9646/1 というURLからわかるように、IDが1のエントリーを表示するためのテンプレート内容になっています。
上記URLから判断して、IDが1のエントリーが@entryという変数の中に自動的に入っているので、@entry.titleや@entry.bodyでそれぞれエントリーのタイトルと本文が取り出せます。
表示されました。
一覧ページのテンプレートを作る前に、エントリーが一個だけでは一覧になっているかわからないので管理画面の"投稿" > "登録" から幾つか適当に投稿(Post)を登録しておきます。
entries.erbというファイル名で一覧のページのテンプレートを作成します。
一覧は個別より少し複雑です。<% @posts.each do |post| %>から<% end %>の書き方に注目して下さい。do ~ endは一組になっていて、@posts.each do ~ end は@postsの個数分だけdo ~ endを繰り返すという構文です。投稿(Post)が3個あれば3回繰り返されます。
結果は下記のように表示されます。
画像やCSS、Javascriptといった外部リソースはテーマフォルダに含めることができます。
例えば、example/logo.png は <img src="/theme/example/logo.png"> のようにテンプレート中で指定できます。下記のようにディレクトリを作っても構いません。
example/ images/ logo.png stylesheets/ style.css javascripts/ jquery.js
また、テーマまでのパスは下記のように書くこともできます。
<img src="<%= @theme.path %>/logo.png" />
テーマ作成に最低限の知識はこれだけです。Lokkaにはその他に柔軟なテンプレートタイプとテーマAPIを持っていますが、それは別のエントリーで紹介したいと思います。
いつもググってる気がするのでシリーズ。
require 'rubygems'
require 'active_record'
ActiveRecord::Base.establish_connection(
:adapter => 'postgresql',
:host => 'localhost',
:username => 'komagata',
:password => '',
:database => 'foo',
:port => 5432
)
class Post < ActiveRecord::Base
end
puts Post.first.name