「コード」カテゴリーアーカイブ

Python で自分自身のファイル・ディレクトリ名を取得する


python のスクリプト(.py) を作って、スクリプト内で自分自身のファイル名を種痘する場合のお話です。

abc.py ファイル を実行した場合に、 abc.log のようなログファイルを作る際に使えます。

カレントディレクトリを起点にしたファイル名

ここからは、次のようにしてモジュールを読み込む必要があります。

ディレクトリを除いたファイル名

ディレクトリに対してこれを実行すると、ディレクトリ名が取得できます。

ファイル名(拡張子なし)

“.” で文字列を区切ってリストにします。 “a.b.c” のように “.” が2つ以上ある場合は 最後の “.” で区切って (“a.b”, “c”) を返します。

path.basename(__file__)[0] をファイルの存在するディレクトリで実行した場合も同じ結果になります。 (crontab などで実行すると思わぬ結果になります。 “a/b.py” が (“a/b”, “.py”) になります。)

絶対パス

ディレクトリ

相対パス

絶対パス

上の相対パスを path.abspath で絶対パスにしています。


rails で sitemap を作成する gem


Rubyサイトマップ を作成する gem を紹介します。

sitemap_generator

sitemap_generator を使うと、サイトマップが簡単に作成できます。 Ruby だけでも使えます……が、ここでは Rails の上で私が使用した方法を紹介します。

使用方法

環境は次の通りです。

  • Ruby 2.0.0p451
  • Rails 4.1.0
  • sitemap_generator 5.0.2
  1. Gemfilesitemap_generator を 追加して bundle install します。
  2. rake sitemap:install を実行します。 config/sitemap.rb というファイルが作成されます。
    • このファイルに記述したサイトマップ生成スクリプトは rake sitemap:refresh によって更新されます。
    • config/sitemap.rb が作成される他は特になにも起こりません。 sitemap_generatortasks.rb を覗いてみるとよくわかります。
  3. sitemap.rb を編集します。
    • デフォルトでは ルート(“/”)へのサイトマップが3つ作成されます。 それら3つは changefreq が異なりますが、いらないので削除します。 コード内に SitemapGenerator::Sitemap.include_root = false を記述します。
    • SitemapGenerator::Sitemap.create_index = true を記述して、サイトマップのリストを作成します。
    • サイトマップの作成をpingで通知します。 Google と Bing に届くように設定します。 Yahoo! は Google と検索エンジンが同じであるため Yahoo! の設定は必要ありません。
    • lastmod, priority, changefreq などを出力したくない場合には、それぞれの値に nil を設定します。
    • rake sitemap:refresh が実効されるように、 crontab に記述します。

javascript でテーブルをソートする方法


javascript を使ってテーブルをソートすることになった。ドットインストールを見ると複数項目でソートする方法まで載っている・・・が、これを一般化してどんなテーブルでもソートできるようにするにはどうするか考えてみた。公開されているライブラリもあるんですけどね。

続きを読む javascript でテーブルをソートする方法

ツールチップを表示するコード


Ruby On Rails のシステムの中でツールチップを表示しようと思ったときのメモです。

やることは単純で、クリックされたらヘルプを表示して、もう一度クリックされたらヘルプを隠すというものです。はてなマークがクリックされたらツールチップを表示・非表示するということです。

実装は javascript (jQuery) と CSS で行いました。そして Rails の helper に便利メソッドを作りました。以下がそのコード。

環境

  • Ruby 1.8.7p374
  • Rails 3.0.1
  • jQuery 1.4.3

基本

上のように javascript と css を記述して、次のように HTML を書きます。

image/quotation.png はクリックするモノです。その画像をクリックすると表示・非表示が切り替えます。

正確にいうなら、画像を囲んでいる span をクリックすると、その直後のタグの表示・非表示を切り替えます。つまりクリックするものは画像でなくてもよく、もっというならツールチップ以外にも使えるということです。

helper の活用

Rails には helper というものがあるので活用してみます。

このメソッドを次のようにして使うと、上に書いた HTML のように出力されます。

2番目の引数はデフォルト値を設定しており、引数がなくてもいいようにしています。

私がこの tooltip 表示を書き始めたら ほかの人が随所で真似し始めたので、もっと楽にできる helper のメソッドを作ったというお話でした。


Ruby: ハッシュを複数のキーでソートする方法


Ruby で 2 つ のキーを使ってハッシュをソートする場合、 下のように書くことができます。

それでは 3 つ のキーでソートする場合はどのようになるでしょうか。

これ以上キーを増やしていくとコードを書くのが大変なので、 3 つ 以上のキーでも楽にソートできるよう、比較するメソッドを作ってみました。