本ドキュメントははてなダイアリーにおける Atom Publishing Protocol の仕様を解説するものです。主にはてなスタッフがその作成と更新を行っています。
PerlのXML::Atom, XML::Atom::Service, XML::Atom::Ext::Threading, AtompubをRubyにportingしてみました。 atompubというネームスペースは既に確保されてた(ネームスペースだけ8月に確保されてて、具体的なファイルやリポジトリは何も無い…)ので atomutilという名前にしておきました。 RubyForge RDoc gem install atomutil まだDocumentやTestが足りず、非常にバギーだと思いますが、試してみたい方はどうぞ。 使い方はPerlのものとほぼ一緒です。詳しくは上のリンクからRDocを参照して下さい。 entry = Atom::Entry.new entry.title = 'My Entry' entry.summary = 'Summary' entry.updated
2009年08月27日 rubyによるLivedoorブログへの画像アップローダ Livedoorブログに、Atomを使って、指定ディレクトリ内の全画像ファイルを投稿するrubyでのアップローダーを作りました。 ソースはこちらです。 初期設定の項に、以下の項目を指定してください。 Livedoor IDパスワードBlog IDアップロードする画像があるディレクトリ拡張子(jpegもしくはjpg) 画像タイトルが元のファイル名になります。 レスポンスは標準出力にそのまま出ますので、それを加工することで、元ファイルとアップロード後のURLを関連付けることができます。 WSSE認証のヘッダ作成は、以下のサイトのソースを使わせていただきました。 WebOS Goodies また、Net::HTTPの使い方は、以下のサイトがとても参考になりました。 備忘録 ありがとうございます。 「programi
2009年08月27日 atomupload.rb #!/bin/ruby # # Image File Uploader for Livedoor blog # 2008-08-27 Yasuki # require 'net/http' require 'time' require 'digest/sha1' require 'uri' require 'kconv' # # 初期設定 username="aaaaaaaaaa" password="xxxxxxxxxx" blogId="9999999" targetDirectory="images" fileSerfix="jpeg" #------------------------------------ endPoint="http://cms.blog.livedoor.com/atom/blog_id="+blogId+
2010年03月02日 RubyでTypepad Atom APIを使って投稿する TypepadにはRestfulなAPIがあり、それを通じてエントリーを取得したり投稿したりすることができる(API詳細)。投稿の自動化を実現したいと思う用途があったので調べてみた。 RubyからAtomでBlogをゴニョゴニョするというのは、あまりニーズがないのか情報が少なく、どの gem がいいのかを見つけるところから一苦労。Typepadの場合はWSSEという認証を採用しているので、これに対応しているかどうか、また、その場合にどうやって使うのか、というのがキモ。 WSSE認証については下記のページが非常に参考になった(ありがとうございます)。 はてなブックマークをダウンロードするスクリプト が、結局 atom-tools という gem を入れたところ、下記のようなコードでWSSEの処理を自分で書かな
必要なもの † Ruby 1.8.2 1.8.4 Iconv 1.8.2 だと RSS::DublinCoreModel? に dc_subjects がないのでバージョンを上げた。 ↑ ラッパークラス サンプル † (get_rss.rb) require 'rss/1.0' require 'open-uri' class RssSite attr_accessor:url attr_accessor:content attr_accessor:rss def initialize(url) @url = url end def get() @content = "" open(url) {|u| @content = u.read } parse() end def parse() begin @rss = RSS::Parser::parse(content) rescue RSS
はじめに Rubyと出会ったころ、その簡潔さに感動した著者は、「ここまで自然言語に近い形でプログラムが書けるのであれば、インターネットとPCの違いすら理解しない妻でも、少しはプログラミングができるようになるかもしれない」と、家庭での普及に挑戦したことがあります。 その試みは、渡した入門書を「はじめてのRUBAI」と読まれた時点で頓挫したわけですが、その経験から「Rubyの文法に従ってはいるが、何やら他言語の匂いを感じるコード」のことを、Rubyの潜在力を生かしきれていないという意味で「RUBAIコード」と呼ぶことにしました。 そして、社内のさまざまな分野のプログラマにRuby開発を指導してみて分かったのは、"RUBAIコード"には、実装レベルの間違いと、設計レベルの間違いがあるということです。 実装レベルの間違いとは、処理を他言語の習慣に従って記述することで引き起こされます。Javaプログ
こんにちは。typesterの陰謀によりVimmerはモテないというデマが流れておりますが、残念ながらそれがデマだということを身をもって証明できないでいるVimmerの外村です。 先日、お悩み相談の記事がホットエントリーに入ったら彼女ができるという噂が立ち、何を間違えたかホットエントリーに入ってしまったのでどうしようかと思ったのですが、プログラマたるもの問題があればプログラムで解決すべきだろうと考えました。 というわけで彼女を作ってみました。どういうものかというと、 僕だけに定期的につぶやく 僕のリプライだけに反応してリプライを返してくれる まさに僕だけのボット彼女です。今回はこれをGoogleAppEngine+JRubyで実装したので、環境をつくるところか実際に動かすところまで説明します。 1. 環境をつくる まずはGoogleAppEngineのアカウントがないと始まらないので以下か
Ruby と MessagePack-RPC があれば、簡単なkey-valueストレージは簡単に作れます。54行で書けます(レプリケーションと負荷分散機能付き。サーバー38行、クライアント16行)。 簡単なKVSをベースにして、ログ集計や遠隔デプロイ、遠隔管理機能などの機能を追加していけば、ちょっと便利なサーバープログラムをサクサク自作できるハズ。 この分散KVSは、(keyのハッシュ値 % サーバーの台数)番目のサーバーにkeyを保存します。また、サーバーの名前順でソートしたときの「次のサーバー」と「次の次のサーバー」にデータをレプリケーションします。 すべてのサーバーで同じ設定ファイルを使います。サーバーごとの設定は引数を自分のホスト名に書き換えるだけなので、デプロイが容易です。 MessagePack-RPC for Ruby を使うと、分散しないkey-valueストレージ*1は
はじめに SinatraやRamazeといったRubyのWebアプケーションフレームワークに興味をお持ちの方であれば、Rackという名前をしばしば目にしているかもしれません。どうやら様々なフレームワークに使われているらしいのだけど、そいつが一体なんなのかよくわからない、そんなあなたのために今日はそのRackをご紹介したいと思います。 様々なフレームワーク、様々なアプリケーションサーバ しばらく前なら、Ruby on Railsブームの真っ只中、Rubyと言えばRails、Webアプリケーションを作るならRails、といったイメージを持たれていた方も多かったと思います。実際にWebアプリケーションを作ったり、Rubyに触れたりしたきっかけがRailsだったという方も多いでしょう。 しかし最近は、RubyのWebアプケーションフレームワークと一口に言っても、非常に簡単にアプリケーションが書けて
写真1●楽天テクノロジーカンファレンスでソースコード公開を発表するROMAの開発者 西澤無我氏(左)と、Rubyの開発者で楽天技術研究所フェローのまつもとゆきひろ氏(右) 楽天は2009年10月24日、同社が独自開発した分散キー・バリュー型データストア「ROMA」をオープンソース・ソフトウエアとして公開した。ROMAはスケールアウトが容易で、耐障害性の高いデータストア。「楽天市場」と「楽天トラベル」で、ユーザーによる閲覧履歴の保存にROMAを使用している。同日に開催した「楽天テクノロジーカンファレンス」に合わせて、「github」でソースコードを公開した。 ROMAは、楽天技術研究所フェローのまつもとゆきひろ氏(プログラミング言語「Ruby」の開発者)と協力して、2007年から開発してきた分散キー・バリュー型データストアである(写真1)。Rubyを使った大規模システムを実現するための分散処
Ruby のサンプルプログラムを見つけましょう。 サンプルプログラムは自由に使用することができます。(詳しくは こちら) 例: Array#delete Hash Masaru(”まさる”さん)は、 Ruby のリファレンスマニュアルを読んだユーザが、 「もう少しサンプルが多ければいいのに」とか、 「このメソッドでこんなこともできるのに」と思ったときに、 ユーザ自身でサンプルプログラムを登録できるようにするために開発したシステムを利用した、 Ruby のサンプルプログラムを登録や閲覧をするためのサイトです。 String#* / yasuda-h at netlab dot jp 同じ文字列を複数並べて表示する。 47pt | 2008-08-23 02:27:19 String#% / yasuda-h at netlab dot jp 数値で文字列数を指定し、出力される内容の整形を
「png のフォーマットは gif に比べて難しい」などと聞いたことがありましたが、zlib が使える処理系なら、簡単な png 画像はそこそこ簡単に (ビット演算など不要で) 作れるみたいです。 2015/03/12追記:この記事は単なる知的好奇心で自力 png 生成しているに過ぎません。以下のサンプルコードもデモに過ぎないので、実用目的で使うことはおすすめしません。Ruby でベタデータの png 化をしたい人は chunky_png を、綺麗な絵を書きたい人は rcairo を使うといいと思います。 まずはサンプルコード 黒から赤へのグラデーション画像を作るプログラム。 # coding: UTF-8 require "zlib" width, height = 100, 20 depth, color_type = 8, 2 # グラデーションのベタデータ line = (0...
Perl での print debug の方法の紹介がブーム(?)だったので、自分がよく行ってる Ruby での debug 方法7つについて書いてみます。 p ご存じの人も多い Kernel#p メソッド。これを使うとオブジェクトの内容を見やすい形で出力してくれます。 >> p ({:foobar => :baz}) {:foobar=>:baz}Object#inspect を使うと、p で出力するときと同じ文字列を String として取得できます。 >> puts ({:foobar => :baz}).inspect {:foobar=>:baz}初心者の頃この p での出力を使う方法がわからなくて困った記憶が…。 pp pp というライブラリを使うと、p より、より見やすい形式で出力してくれます。たとえば >> a = Array.new(10) { {:foobar => :
第40回RVM(Ruby Version Manager)による環境構築(2) 三村益隆 2010-04-27
PDFを作成するライブラリは数多く存在する。Webシステムであってもずいぶん手軽にはなってきた。だが、テンプレートのメンテナンス性の良さと使い勝手の良さを兼ね備えたPDF作成ライブラリとなるとまだまだ数は少ないのが実情だ。 GhostScriptを使ったPDF作成ライブラリ RailsをはじめとしたRubyによるPDF出力を行うならば、RGhostを使うのが良さそうだ。 今回紹介するオープンソース・ソフトウェアはRGhost、PDFや画像を生成するRubyライブラリだ。 RGhostはRubyGemsからインストールできるライブラリで、スクリプトからPDFを生成する他、PostScript、PNG、TIF、JPEGといった画像への変換もできる。オブジェクト指向らしい値の埋め込みによってPDFが生成できるので、使い勝手は良さそうだ。 EPSをテンプレートにしたPDF生成も可能 TrueTyp
An easy-to-use Ruby web spider framework What is it? Anemone is a Ruby library that makes it quick and painless to write programs that spider a website. It provides a simple DSL for performing actions on every page of a site, skipping certain URLs, and calculating the shortest path to a given page on a site. The multi-threaded design makes Anemone fast. The API makes it simple. And the expressive
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く