PyhaLokkaにMLを作りました。

Lokka-ja | Google グループ

僕一人ではすごく悲しい雰囲気になってしまうのでサクラでいいので入ってください・・・。

PyhaLokkaの開発について

ブログってフレームワークのHello world的な扱いで出てくるぐらいなので誰でも作れます。逆に言うと技術的なチャレンジは少なく、どれだけ手を動かせるか的なところがあってプログラマー的には面倒です。だからあまりエッジな人は作りませんよね。あるとすればミニマリストのための超シンプルツールで、これは作ってて楽しい。僕も以前、普通に作り始めたらそうなってしまって、一般ユーザーやデザイナーがWordPressに求めてるようなものは出来ませんでした。

PHP以外で一般ユーザーやデザイナーにも普及するWebアプリなんて無理なんだと諦めていましたが、RedmineはWeb制作会社にいるデザイナーに何人か聞いたら結構な割合で知ってました。なんだ、Rubyでも行けるんじゃん。

「なんで僕らは仕事で、自分のブログで、WordPressを使ってるんだ?Rubyでそういうのが無いのはおかしい!」

そんなよく分からない義務感?が開発の原動力になっていて、元々そういうツールがあればそれを使いたいし、その開発に参加すれば良いと思っています。しかし上記の様な事情があってあまり作りたがる人はいません・・・。

※Radiant CMSは僕的に設計やコードは素晴らしくて若干うっとりしたぐらいです。しかしデザイナーに聞くと、本当に欲しいのは純粋なCMSではなく、ブログツールベースのCMSであるようなのです。

PyhaLokkaはSinatraベースのまだまだ未熟なブログツールなので、Rubyがわかれば誰でもコーディングの余地がいくらでもあります。(例えば投稿した後にflushで「投稿しました」とか出すべきなのを出してないとか、helperその他はpadrinoのモジュールに置き換えたいとか、テストが無いとか・・・)

貧相なプロジェクトの割にWordPress打倒!という分り易くも無茶な目標を掲げてやっていくのは面白いかもなあと最近思いはじめました。

「みんな、オラに力(コード)を分けてくれ!」

作ってる人のためのプロフィールサービス"MAKES THIS"にAPI作りました。jsonでプロフィール情報を返します。/profiles.jsで一覧、/名前/profile.jsで個別にって感じです。

API - MAKES THIS

MAKES THISはTHE SETUPのパクりです。THE SEUPみたいにインタービューに答える風で書いてみてください。

DataMappervalidationエラーのメッセージを国際化するdm-validations-i18nというgemを作りました。

komagata's dm-validations-i18n at master - GitHub

require 'rubygems'
require 'dm-core'
require 'dm-migrations'
require 'dm-validations'
require 'dm-validations-i18n'

DataMapper.setup(:default, 'sqlite::memory:')

class Employee
  include DataMapper::Resource
  property :id, Serial
  property :name, String
  validates_presence_of :name
end

DataMapper.auto_migrate!

# here!
DataMapper::Validations::I18n.localize! 'ja'

puts Employee.create.errors.first
Nameを入力してください。

gedoh

取り急ぎMAKES THISLokkaで必要だったのでスイマセン・・・。

言語ファイルさえあればen, ja以外もすぐ対応します。翻訳内容はgettext_activerecordからほぼお借りしました。

MemoryStick PRO Duo 16GB

最近、PSPでゲームのダウンロード購入をちょこちょこしてます。アーカイブスのゲームが2〜3本しか入らないので16GBのメモリースティックを買いました。

PSP買ったのが昔なので今まで使ってるのが何GBなのか忘れてましたが交換するとき見てびっくり。1GBしかなかったのか・・・。

# lib/tasks/cron.rake 
task :cron => :environment do
  ENV['days'] = '1'
  Rake::Task['redmine:send_reminders'].invoke
end

タスクを引数付きで実行する

rakeタスク内から。

Rake::Task['foo'].invoke('1', '2')

rakeコマンドから。

rake 'foo["1", "2"]'

こんなこと出来るんですね。普通はENV通して渡すと思います。

引数や標準入力から簡単にTweetするtというgemを作りました。

komagata's t at master - GitHub

インストール

$ gem install t

ターミナル

$ t Hello!
$ echo Hello! | t

Ruby

require 't'

t 'Hello!'

jugyoさんのgとかのパクリです。

xAuthとか使う人それぞれが申請とか面倒だし糞かったるくて仕方が無いのでOAuthでpit丸投げです。ローカルでcronでTweetすることが結構あったので。

gemを正規表現で検索したかったのはこれが見つけ辛いからです・・・。

% gem search ^t$ -r

*** REMOTE GEMS ***

t (0.1.0 ruby)

gemって正規表現で検索出来たんですね。

% gem search ^term- -r

*** REMOTE GEMS ***

term-ansicolor (1.0.5 ruby)
term-extractor (1.0.0 ruby)

知らんかった・・・。

#include <QApplication>
#include <QLabel>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QLabel *label = new QLabel("Hello Qt!");
    label->show();
    return app.exec();
}
$ qmake -project

projectファイルを作成(helloqt.pro)。ここまではプラットフォーム非依存。

$ qmake -spec macx-g++

プラットフォーム依存のMakefileを作成。(オプション無しだとxcode用のファイルを作成)

$ make
$ open helloqt.app

helloqt

Tokyo Rubyist Meetupのキックオフパーリー(笑)に行ってきました。(@jishihaさんは身内に不幸があってのキャンセルです)

Tokyo Rubyist Meetupは@pwimさん主催の海外と日本のRubyistの交流を深めるためのコミュニティです。@jishihaさんに誘われると何処でもホイホイついて行ってしまうんですが、英語出来ないから"部屋の隅で一人でカナッペとかを食べる羽目"(via @yoshuki)になるであろう覚悟で行きました。

実際には@yoshukiさんに助けてもらったり、果敢に話しかけるも、殆どの人に「日本語でイイですよ」と情けをかけられたりして一人カナッペ状態にはなりませんでした。

当日、本当にMAKES THIS英語と日本語での自己紹介を書いておいてiPadに表示して持っていったんですが、全員英語で自己紹介タイムがあってマジで助かりました。でも片言でも英語で意思疎通出来るようにならないとなーと反省しました。