ホーム ブログ ページ 59

ファイラの選択(Windows)

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

こんにちは

みなさんファイラをつかっていますか。
ファイラを使うとファイルの操作が早くなるのでおすすめできます。Windowsはファイラの種類が豊富で自分にあったファイラを選べます。

たくさんありますが、今回は私がつかっていてオススメな
テキストベースの2画面ファイラを1つを少しだけ紹介します。

「あふ」は0.3秒くらいで起動するファイラです
こういうインタフェースで操作します。


とっつきにくそうですし、実際とっつきにくいですが、いいです


この2画面ファイラ、Windows標準のエクスプローラと一番違うことはなにかといえば、
ファイルの操作(コピーや参照など)をすべてキーボードでできることです。腕がつかれません。

基本的に矢印キーでカーソル移動し、1キーでファイルをコピーしたりエディタで開いたりできます。
これだけで腕の移動距離を15cm少なくできるため、1ヶ月ではその30倍に達しますのでとても楽です。



矢印キーが遠いと感じる方はviライクにj/k等にバインドしましょう。私はそうしています。
「あふ」の紹介ではなく2画面ファイラの紹介になってしまいましたが、いいです。


最後にwindowsでおすすめなファイラを挙げます。「あふ」の他にもオススメできますので見てください。

キーボード派
あふ(早くて多機能)
だいなファイラ(FTP接続可能)
Paper Plane xUI (軽くて多機能でわかりにくい)

マウス派
X-Finder(右クリックの多機能ぶり)
まめfile(かわいい)
MDIE(エクスプローラライク)

まだありますけど、オススメできるのはやっぱりPaper Plane xUI なのでぜひ使ってみてください。

Cisco 基本的なモードについて

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

こんにちは、tibaです。

今回は、Ciscoルータ/スイッチの基本的なモードについて紹介します

ルータ/スイッチの設定には、CLI(Command Line Interface)を使用しますがCLIにはいくつかのモードがあります。モードによっては受け付けないコマンドもあるので、理解しておく必要があります。

ユーザーモード

 プロンプトでは、「Router>」と表示されます。

  • このモードでは、一般ユーザーが基本的なテストコマンドを実行したり、システム情報を表示させたりできます。
  • 確認できる情報には制限があり、全ての情報を表示することはできません。

特権モード

 プロンプトでは、「Router#」と表示されます。

  • このモードでは、管理者がシステムの動作確認をしたり、全てのシステム情報を表示し確認することができます。
  • 特権モードとはLINUXのroot権限の様なものです。

グローバル設定モード

 プロンプトでは、「Router(config)#」と表示されます。

  • このモードでは、ホスト名やパスワードなどシステム全体にかかわる設定をすることができます。
  • ユーザーモードと特権モードでは情報を見る事はできますが、設定のすることができません。
  • このモードから他の設定モードに移行することができます。

ライン設定モード 

 プロンプトでは、「Router(config-line)#」と表示されます。

  • このモードでは、回線(コンソールやtelnetなど)に関する設定をすることができます。
  • 個々の回線にログインパスワード設定するのもこのモードです。

インターフェース設定モード

 プロンプトでは、「Router(config-if)#」と表示されます。

  • このモードでは、IPアドレスの設定など、ルータのインターフェースにかかわる設定をすることができます。
  • インターフェースごとに無効・有効にする設定や速度などのモード設定などができます。

ルータ設定モード

 プロンプトでは、「Router(config-router)#」と表示されます。

  • このモードでは、ルーティングプロトコル(ネットワークの経路情報を交換するためのプロトコル)などの設定をすることができます。

以上が、Ciscoルータ/スイッチの基本的なモードです。

各モードの意味を理解することで設定・確認の時にスムーズに作業を行うことができるので、覚えておきましょう。

AdWordsとGoogle Analyticsの連携方法

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

AdWordsとGoogle Analyticsの連携方法

はじめまして、アクセス解析チームのK山です。

初回の今日はAdWords広告とGoogle Analyticsの連携について説明したいと思います。

AdWordsアカウントをGoogle Analyticsに登録

これは、AdWordsとGoogle Analyticsのログイン用メールアドレス(以下、アカウントといいます)が異なっている場合の設定となるため、同一のアカウントを使っている場合は「AdWordsとGoogle Analyticsの連携設定」へ進んでください。
異なるアカウントを使っている場合はGoogle Analytics上で設定を行う必要があります。

◆AdWordsのアカウントを管理者として登録する。

①Google Analyticsにログイン後、プロファイルを選択し「ユーザーマネージャー」、「ユーザーを追加」の順にクリック。

ユーザーマネージャー
ユーザーを追加

②メールアドレスにAdWordsのアカウントを入力し、アクセスタイプをアカウント管理者にした後、変更を保存。

アカウント登録

AdWordsとGoogle Analyticsの連携設定

両者間でのアカウントの設定が済んだら、次にAdWordsの管理画面からGoogle Analyticsと連携するための具体的な手順を説明します。

 ◆AdWordsの管理画面でGoogle Analyticsのアカウントをリンクさせる。

①管理画面の「Analytics」のタブをクリックし、「Google Analyticsのアカウントを持っています。このAdWordsアカウントにリンクしてください。」をチェックし次へ。

アカウントのリンク

②連携させるGoogleAnalyticsのアカウントをプルダウンメニューから選択。その下のチェックボックスは2つともチェックをしアカウントのリンクをクリック。

アカウントをリンク

最後に、リンクさせたGoogle Analyticsのアカウントが正しいか確認し完了となります。

確認作業

以上でAdWordsとGoogle Analyticsの連携方法の設定は完了です。これで、Google AnalyticsでAdWordsの費用データも見る事ができるようになり、そのデータを元にROI分析も可能となります。

Google Analyticsをさらに活用するためのAdWordsとの連携方法でした。

WindowsにLinux開発環境を構築する方法

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

はじめまして。エンジニア初心者のlietoです。

WindowsにLinux開発環境を構築する方法を紹介します。
今回、VMwareで作成した仮想サーバの中にCentOSでLinux開発環境を構築していきたいと思います。

①VMwareで仮想マシンを作成


VMwareの「Create Virtual Machine」から、設定条件を選択して作成を進めます。

OSの設定では、それぞれ下記を設定してください。
Operating System:Linux operating system
Version              :Red Hat Enterprise Linux 5 (32-bit) ※CentOS5.3(32bit)使用のため 

全ての設定が終わったら、「Finish」を押して作成完了。

(設定例)

仮想マシンが作成できたので、次にCentOSを導入します。

②仮想マシンにCentOS導入

  1. isoイメージ(CentOS-5.3-i386-bin-DVD.iso)をダウンロードします。
  2. 「Summary」の「CD/DVD Drive」の「Edit」をクリックし、「ISO Image」を選択し、「Browse…」リンクからダウンロードしてきたisoイメージを選択します。
  3. 「Console」の画面上をクリックし、仮想マシンを起動。(Powered On)
  4. 再度「Console」の画面上をクリックし、しばらくするとインストールが開始します。

【仮想マシンでの操作】

インストールの前に、仮想マシンでの操作方法を説明します。

・カーソル移動「Tabキー」

・選択「Spaceキー」

・決定「Enterキー」

・仮想マシンから自分のマシンにマウスを移動させたい場合「Ctrlキー」+「Altキー」 【インストール】

インストール画面が立ち上がったら、「Enter」を押して、インストールを開始します。

  1. CDメディアのチェックをするか聞かれますが、ここは「Skip」で飛ばしちゃいましょう。
  2. 言語の選択・キーボード設定では日本語を選択します。
  3. あとの設定は、自分の構築したい環境に合わせて設定してください。

 ※「すべてのデータを消去して、このドライブを初期化しますか?」と警告が出てきた場合、「はい」を選択して問題ないです。

全ての設定が終わったら、20分程でインストールが完了するので、再起動します。

再起動をしたら、セットアップ画面が立ち上がるので、セットアップをしていきます。

 【セットアップ】

セットアップは、自分の構築したい環境に合わせて設定してください。

(設定例)

  1. ファイアウォール:無効 ※警告「はい」
  2. SELinux:無効 ※警告「はい」
  3. 日付と時刻:現在の日時に合わせる
  4. ユーザーの作成:入力事項を入力し、ユーザーを作成
  5. サウンドカード:そのまま次へ
  6. 追加のCD:そのまま次へ

全ての設定が終わったら、終了します。

VMwareに戻り、仮想マシンを起動してください。

③仮想マシンでCentOS起動

設定したユーザ名とパスワードを入れて起動してください。

これでLinux開発環境導入完了です!

④その他

『VMware Tools』

VMwareで「VMware Tools」をインストールすると、

「Ctrlキー」+「Altキー」を押さなくても、仮想マシンから自分のマシンにマウスを移動できるようになります。

また、仮想マシンと自分のマシンの間でコピーなどができるようになります。

とても便利なので、インストールすることをおすすめします。

簡単でしたが、WindowsにLinux開発環境を構築する方法を紹介しました。

それでは、また次回に。。

[Ruby] RGhost(Ruby Ghostscript)を用いたPDF生成入門

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

こんにちは。

今回はRGhostを紹介しようと思います。

RGhost(Ruby Ghostscript)とは、PDFや画像(JPGなど)の生成ができるRubyライブラリです。検証環境Windwos XP
Ruby 1.8.6
Ghostscript 8.63

RGhostインストール前にする事
 RubyライブラリをしようするためRuby及びRubyGemsのインストールが必要です。
また、RGhost(Ruby Ghostscript)は、GhostscriptをレンダリングしてPDFなどを生成するためインストールが必要です。
RGhostのインストールgem install rghostサンプルをPDFで出力する方法
require ‘rubygems’
require ‘rghost’
RGhost::Config::GS[:path] = Ghostscript(gswin32c.exe)のパス指定
#例: RGhost::Config::GS[:path] = ‘C:\gs\gs8.63\bin\gswin32c.exe’
RGhost::Config.is_ok?.render :pdf, :filename => ‘is_ok.pdf’#サンプル(PDF生成)
RGhost::Config.environment_fonts.render :pdf, :filename => ‘environment_fonts.pdf’#サンプル2(PDF生成)
生成されたもの[サンプル1(PDF)サンプル2(PDF)]
サンプルをJPGで出力する方法
require ‘rubygems’
require ‘rghost’
RGhost::Config::GS[:path] = Ghostscript(gswin32c.exe)のパス指定
#例: RGhost::Config::GS[:path] = ‘C:\gs\gs8.63\bin\gswin32c.exe’
RGhost::Config.is_ok?.render :jpg, :filename => ‘is_ok.jpg’#サンプル3
RGhost::Config.environment_fonts.render :jpg, :filename => ‘environment_fonts.jpg’#サンプル4
生成されたもの[サンプル3(JPG)サンプル4(JPG)]簡単なPDFを生成する
require ‘rubygems’
require ‘rghost’

include RGhost RGhost::Config::GS[:path] = ‘C:\gs\gs8.63\bin\gswin32c.exe’
#base作成
doc = Document.new
#表示
doc.show “Row 1”
#改行
doc.next_row
doc.show “Row 2”,:color => :red
#表示+改行
doc.show_next_row “Test 1”
doc.show_next_row “Test 2”,:color => :blue
#x行目に移動(下記は10行)
doc.goto_row 10
doc.show_next_row “test 10”
doc.goto_row 9
doc.show_next_row “test 9”
doc.goto_row 12
#2倍表示
doc.scale(2,2)
doc.show “test +5”
#pdfで出力
doc.render :pdf, :filename => ‘rghost_sample.pdf’
生成されたもの[サンプル(PDF)まとめ
サンプルを用いたりすれば、簡単にPDFを作成できました。
他にも色々な事ができそうなRubyライブラリなので今後もいろいろためしてみようと思います。

Code Golf(フィボナッチ数列)

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

こんにちは。

今回は、Rubyを使ったフィボナッチ数列のCode Golfを 行ってみました。

Code Golfとは

より少ないバイト数で課題をプログラミングする事を言います。
要するにいかに少ない文字数でプログラムを書けるか競う遊びです。

http://golf.shinh.org/p.rb?Fibonacci+Numbersの問題をやってみました。

・問題

f(1)->1

f(2)->1

f(x)->f(x-1)+f(x-2)

print f(1) to f(46)

以下にプログラムを短くしていった過程を示します。

まず、普通にフィボナッチ数列の定義通りにやってみる。

f=[];p f[1]=1;p f[2]=2;(3..45).each{|x| p f[x]=f[x-1]+f[x-2]}

できるだけ短いソースで書いてみる。

p 1;p a=b=1;22.times{p a+=b;p b+=a}

ここからはどうにか短くできるように頑張る。

a=b=1;23.times{p a;a+=b;p b;b+=a}

a=0;b=1;46.times{p a+=b;b=a-b}

a=0;b=1;46.times{p -a+=b=a-b}

p a=b=1;45.times{p b+=a=b-a}

最後のソースを軽く説明すると、フィボナッチ数列は1つ前の数と2つ前の数を足していくものですがこのソースでは、

(1つ前の数字+1つ前の数字ー2つ前の数字)

を表示させていっている感じです。

今回は最終的に28文字までしかできませんでした。24文字が一番短いらしいのですが、4文字とどきませんでした。今後、頑張りたいと思います。

この様なプログラムを書くのは、とてもおもしろいので皆さんも是非チャレンジしてみて下さい。

Ethna インストール

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

はじめまして。 KBMJのdelikuです。

初回ということで、PHPのフレームワークの1つEthnaを紹介したいと思います。

■そもそもフレームワークってなに?

 フレームワークとは、アプリケーションの「ひな形」や「骨組み」であり、開発する際に頻繁に必要とされる汎用的な機能をまとめて提供し、アプリケーションの土台として機能するソフトウェアのことです。

 ■Ethnaの特徴

 ・MVCモデルに基づくフレームワーク

 ・ethnaコマンドによるファイル生成

 ・アクションフォームクラスによるフォーム値の自動検証

 ・テンプレート変数の自動サニタイズ ごちゃごちゃと書いていますが、詳細は以下のhttp://ethna.jp/index.php?ethna:Ethnaに載っています。

 ■Ethnaのインストール 本日のメインの話に移ります。

・ http://ethna.jp/ethna-document-tutorial-install_guide.html

  上記URLのインスト-ル手順を参考にするのもアリです。

◆Pearコマンドによるインストール

 これが一番楽ちんな方法です。

 $ pear channel-discover pear.ethna.jp

 $ pear update-channels 最新版がほしいなら以下のコマンドを実行。

 $ pear install http://pear.ethna.jp/pear/Ethna-2.5.2009062201.tgz

 安定版がほしいなら以下のコマンドを実行。

 $ pear install -a ethna/ethna

 ちなみに2009/06/16に 開発版 Ethna 2.5.0 preview4 と 安定版 2.3.7 が配布されています。 2.5.0以降からutf-8に対応しています。 

 pearコマンドを利用すればご覧のように簡単にインストールできてしまいます!

PostgreSQLで、テーブルのFILLFACTORがいくつに設定されているか、確認するにはどうすれば?

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

こんにちは、O2 です。

以前、migrate で、FILLFACTORを設定する投稿をしてみましたが

そもそも、本当に設定されているの?

どうやって確認するの?

などと、質問あると思いますので、それを確認する方法を、ちょっぴり紹介

※性能評価の確認ではないです。

こんな感じのSQLで確認できるんです。

select reloptions from pg_class where relname = ‘テーブル名’;

実際に、DBに接続して確認してみましょう。

select relname, reloptions from pg_class where reloptions is not null;

上記を実行してみると、全体のテーブルでのFILLFACTORの内容が確認できるんです。

       relname         |   reloptions
————————+—————–
users                  | {fillfactor=90}
albums                | {fillfactor=90}
photos                 | {fillfactor=90}
(3 rows)

PostgreSQLのHOT機能を活用するためのmigrateでFILLFACTOR設定してみる

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

こんにちは、O2 です。

HOT を使える環境か、確認するモジュールを前回公開してみましたが

今回は、migrate 時に、 FILLFACTORを設定してみましょう。

たとえば、以下の様してみると、users テーブルのFILLFACTORを90%に設定することができるよ。

class PostgresHot < ActiveRecord::Migration

  require ‘dbcheck’

  def self.up
    if DBCHECK.enable_hot
      ActiveRecord::Base.connection.execute(‘ALTER TABLE users SET (FILLFACTOR=90);’)
    end
  end

  def self.down
    if DBCHECK.enable_hot
      ActiveRecord::Base.connection.execute(‘ALTER TABLE users SET (FILLFACTOR=100);’)
    end
  end
end

なぜ、 enable_hotでチェックするかというと、

実は、共有のテストサーバ-には、postgreSQL が、8.3 以下が入っていたりするんです。(^^;;

不正アクセス検知(構成編)

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

今回、不正アクセスの検知について、ご紹介します。

不正アクセスの検知方法は、いろいろありますが、ネットワーク型の検知ソフトのため、他のサーバに対するパケットに対しても検知するので、各サーバに検知ソフトを導入しなくても良いからです。
 

不正アクセス検知方法

~snort+Oinkmaster+SnortSnarf+swatch~・snort:ネットワーク型の不正アクセス検知ソフト。パケットに対して、不正なパケットをログ(もしくはDB)に保存する
Oinkmaster:snortのシグネチャ(ルールファイル)を更新(cronで設定することで自動更新します)
SnortSnarf:snortで検知した不正アクセスに対して、ブラウザで閲覧
swatch:不正なパケットをログより、必要なログに対して、メールやビープ音で通報

デメリット

・導入しているサーバに接続しているL2switchがミラーポートの機能がないとネットワーク型になりません。
 (L2switchのメーカによっては、ミラーポート機能があっても、ミラーポートを設定したポートに対して、
 アクセスができないことがあるので要注意!)
・ SnortSnarfをcronで稼動する際は、メモリをかなり使用するため、注意してください。
  (目安 メモリ1GB:1時間に1回、メモリ512GB:1日に1回)

[Java]無名クラス

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

無名クラスとは匿名クラスとも呼ばれており、

名称の通り、名前を持たない一時的なクラスのことです。

 (抽象)クラスを継承したり、インターフェースを実装したりして作成を行います。

 記述方法は以下の通り

赤色の部分が無名クラスと呼ばれる部分です。

リストの中身をソートするための順序付けを定義するインターフェースを実装しています。

public class JavaTest {
public static void main(String[] args) {
		List<Test> list = new ArrayList<Test>();
list.add(new Test(3,"boo"));
list.add(new Test(2,"foo"));
list.add(new Test(4,"woo"));
list.add(new Test(1,"goo"));

System.out.println(list);
Collections.sort(list, new Comparator<Test>() {
public int compare(Test o1, Test o2) {
return o1.id.compareTo(o2.id);
}
});

System.out.println(list);
}
}

class Test {
public Test(Integer id,String name) {
this.id = id;
this.name = name;
}

public Integer id;
public String name;
@Override
public String toString() {
return id + ":" + name;
}


}

無名クラスを使わずに書くと以下のようになります。


public class JavaTest {
public static void main(String[] args) {
List<Test> list = new ArrayList<Test>();
list.add(new Test(3,"boo"));
list.add(new Test(2,"foo"));
list.add(new Test(4,"woo"));
list.add(new Test(1,"goo"));

System.out.println(list);
Collections.sort(list, new ListComparator());
System.out.println(list);
}
}

class Test {
public Test(Integer id,String name) {
this.id = id;
this.name = name;
}

public Integer id;
public String name;
@Override
public String toString() {
return id + ":" + name;
}


}

class ListComparator implements Comparator<Test> {
public int compare(Test o1, Test o2) {
return o1.id.compareTo(o2.id);
}
}

コード量に大して差はないのですが、
比較の条件が近くにありコードが見やすくなっています。

他にもいろいろな利点があったりします。

一時的に一部のメソッドを上書きして使用したい場合などの重宝したりします。

(テストを行う際にモックを作成する代わりに疑似データを返すように上書きするなど)

簡単にですが今回はここまでに・・・。

MySQLを診断してチューニングポイントを教えてくれるツール「MySQLTuner」の紹介

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

MySQLを診断してチューニングポイントを教えてくれるツール「MySQLTuner

このツールのCentOS5.3へのインストールを実施してみます。

MySQLTuner」のインストールから、使用方法を紹介します。

このツールはMySQLを診断し、設定値をどのように書き換えたらいいか教えてくれます。 (全部これに頼るというよりは参考程度のようですので、注意が必要です)

インストールは簡単。 任意のディレクトリにスクリプトをダウンロードし、実行権限を与えるだけです。

# wget http://mysqltuner.com/mysqltuner.pl

# chmod +x mysqltuner.pl

実行方法は以下の通りです。

# ./mysqltuner.pl

>> MySQLTuner 1.0.0 – Major Hayden

>> Bug reports, feature requests, and downloads at http://mysqltuner.com/

>> Run with ‘–help’ for additional options and output filtering [!!] Successfully authenticated with no password – SECURITY RISK!

——– General Statistics ————————————————–

[–] Skipped version check for MySQLTuner script

[OK] Currently running supported MySQL version 5.0.45-log

[OK] Operating on 64-bit architecture

——– Storage Engine Statistics ——————————————-

[–] Status: -Archive -BDB -Federated +InnoDB -ISAM -NDBCluster

[–] Data in MyISAM tables: 51M (Tables: 77)

[–] Data in InnoDB tables: 63M (Tables: 103)

[OK] Total fragmented tables: 0

——– Performance Metrics ————————————————-

[–] Up for: 7d 1h 1m 2s (121K q [0.200 qps], 120K conn, TX: 103M, RX: 9M)

[–] Reads / Writes: 100% / 0%

[–] Total buffers: 6.1G global + 34.2M per thread (100 max threads)

[OK] Maximum possible memory usage: 9.4G (59% of installed RAM)

[OK] Slow queries: 0% (0/121K)

[OK] Highest usage of available connections: 41% (41/100)

[OK] Key buffer size / total MyISAM indexes: 3.9G/106.2M

[OK] Query cache efficiency: 84.6% (269 cached / 318 selects)

[OK] Query cache prunes per day: 0

[OK] Sorts requiring temporary tables: 0% (0 temp sorts / 4 sorts)

[!!] Temporary tables created on disk: 47% (18 on disk / 38 total)

[OK] Thread cache hit rate: 99% (41 created / 120K connections)

[OK] Table cache hit rate: 62% (10 open / 16 opened)

[OK] Open file limit used: 0% (15/8K)

[OK] Table locks acquired immediately: 100% (58 immediate / 58 locks)

[OK] InnoDB data size / buffer pool: 63.6M/2.0G

——– Recommendations —————————————————–

General recommendations:

Variables to adjust:

    max_connections (> 100)

    wait_timeout (> 20000)

    interactive_timeout (> 20000)

    query_cache_size (> 100M)

だらだらと結果が返ってきますが、「Recommendations」以降におすすめの 設定値が出力されます。(文中の[!!]箇所は改善が必要な箇所のようです)

私が実施したMySQLバージョン、搭載メモリーは以下の通りです。

 MySQLversion 5.0.45  搭載メモリー16GB

おすすめの設定値を参考に、「my.cnf」を書き換え、再び「./mysqltuner.pl」 の実行を繰り返していくと、チューニングの手助けになりそうです。

[python]プロトタイプをcursesで

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

みなさんはプログラムのアイデアが浮かんだとき、ロジックはできたのに、それを表現するUIが書けなくて悩んだ事はありませんか? GUIは手間がかかるし、文字だけだと味気ない。 そんなときにはcursesです。

cursesはターミナル上の操作を行うライブラリです。 windowの様に画面に枠を書いたり、文字に色を付けたりなどが簡単にできる様になっています。GUIほどきれいなものはできませんが、ただの文字よりは洗練されたUIが作れます。 今回はpythonでターミナルUIを使ったチャットプログラムをつくってみました。 ソースはこちら。chat.py

python2.6.1で動作確認しています。

使い方は$ python chat.py -s

でサーバ起動、$ python chat.py

でクライアント起動です。 起動すると下図のような画面が表示されます。

枠線と色がついただけですが、けっこう見栄えがすると思いませんか?

さて、cursesを使うときのきもの部分をちょっと解説します。

class CursesWindow():

  def __init__(self,host=”):

    locale.setlocale(locale.LC_ALL,”)

    curses.wrapper(self.loop,host)

コンストラクタで、curses.wrapperを呼び出しています。

このラッパーがなかなかのやり手で、必要な初期化処理をしてくれた上に、 例外が発生したときにターミナルの状態を復元して終了してくれます。 これをせずに、cursesを使ったプログラムが例外で落ちると、ターミナルに文字を打ち込んでも表示されなくなったりして、大いに困ります。

localeの設定は日本語の表示で必要らしいです。よくわかりませんが、おまじない。

wapperに渡しているloopはメイン処理を行う関数です。 中でループをまわしてチャットの受信、送信処理を行っています。

準備はこれで終わりです。なんと簡単!。

あとはloop関数にわたってきたWindowオブジェクトを使って、枠線を書いたり文字を書いたりします。

このようにcursesを使うとGUIには劣るものの、そこそこ見栄えのいいUIがさらっと作れます。皆さんもぜひ一度お試し下さい。

高さの違う2つの要素を縦中央に並べる(垂直方向にセンタリングする)方法

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

上の画像のような高さの違う2つの要素を、縦中央に並べる方法をご紹介します。
サンプルでは画像とテキストですが、テキスト同士、画像同士でも 同じことができます。

確認ブラウザ IE6~8、FF2、3

まずはXHTML<div id=”box”>
    <span class=”item_l”><img src=”sample.jpg” width=”171″ height=”173″ alt=”sample” /></span>
    <div class=”item_r”><p>何かに使おうと思って描いたイラストです。<br />ネットワークっぽいイメージ。</p></div>
</div>

次はCSS.item_l {
  display: -moz-inline-box;
  display: inline-block;
  vertical-align: middle;
}

.item_r {
  display: -moz-inline-box;
  display: inline-block;
  vertical-align: middle;
}

/*IE6用ハック*/
* html .item_l,
* html .item_r {
  display: inline;
  zoom: 1;
}

/*IE7用ハック*/
*:first-child+html .item_l,
*:first-child+html .item_r {
  display: inline;
  zoom: 1;
}

p {
  width: 300px;
  line-height: 130%;
  margin-left: 20px;
}

Firefox2対しては「display: -moz-inline-box;」という独自のプロパティで対応。
IE6、7に対しては「display: inline;」に「zoom: 1;」とすることで
inline-block扱いになります。

また、「display:inline-block」内のブロック要素の幅を指定しないと、
その親要素に幅を指定していてもはみ出してしまいます。
サンプルの場合は右側のテキストのP要素に幅を指定しています。

囲う要素が多くて少々見辛いですが、結構使うシーンがあると思いますので
参考にしてみてください。

railsでの環境使い分け production.rb development.rb

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

こんにちはtacchiです。

今回はrails開発でよくやる環境の使い分けを書きます。

短い記事ですが、お付き合い下さい。

KBMJで開発を行う場合、production、developmentは次のようなシーンで 利用されます。

本番環境:production

個人の開発環境:development

では、テストサーバとかどうすんの?

とかの疑問が浮かぶと思うんですが、このようにしてます。

本番環境:production

個人の開発環境:development

テストサーバ:stagingでは、staging環境の構築手順を記載します。

まずはプロジェクト生成

rails hogehoge

create

create app/controllers

create app/helpers

create app/models

create app/views/layouts

create config/environments

create config/initializers

create config/locales …

staging作成

以下のようなhogehogeプロジェクトが作成されます

-rw-r–r– 1 tacchi staff 10011 8 4 11:10 README

-rw-r–r– 1 tacchi staff 307 8 4 11:10 Rakefile

drwxr-xr-x 6 tacchi staff 204 8 4 11:10 app

drwxr-xr-x 9 tacchi staff 306 8 4 11:10 config

drwxr-xr-x 2 tacchi staff 68 8 4 11:10 db

drwxr-xr-x 3 tacchi staff 102 8 4 11:10 doc

drwxr-xr-x 3 tacchi staff 102 8 4 11:10 lib

drwxr-xr-x 6 tacchi staff 204 8 4 11:10 log

drwxr-xr-x 11 tacchi staff 374 8 4 11:10 public

drwxr-xr-x 11 tacchi staff 374 8 4 11:10 script

drwxr-xr-x 8 tacchi staff 272 8 4 11:10 test

drwxr-xr-x 6 tacchi staff 204 8 4 11:10 tmp

drwxr-xr-x 3 tacchi staff 102 8 4 11:10 vendor

staging.rbの作成

cp config/environments/production.rb config/environments/staging.rbdatabase.ymlの編集 デフォルトで以下のようなconfig/database.ymlが作成されますので編集します。

# SQLite version 3.x

# gem install sqlite3-ruby (not necessary on OS X Leopard)

development:

  adapter: sqlite3

  database: db/development.sqlite3

  pool: 5

  timeout: 5000

# Warning: The database defined as “test” will be erased and

# re-generated from your development database when you run “rake”.

# Do not set this db to the same as development or production.

test:

  adapter: sqlite3

  database: db/test.sqlite3

  pool: 5

  timeout: 5000

production:

  adapter: sqlite3

  database:

  db/production.sqlite3

  pool: 5

  timeout: 5000

staging追加

staging:

adapter: sqlite3 #この辺りは、postgresql、mysqlなどお好きなように

database: db/production.sqlite3 #ここも同上

pool: 5

timeout: 5000

最後の仕上げ

これで、migrate流せばよいだけですねrake db:migrate RAILS_ENV=staging

補足(script/consoleを実行する場合)

ruby script/console -e staging

補足(passengerを使う場合)

apacheのconfの以下を変更(すでにpassengerの記述がある前提)RailsEnv production   ⇒ RailsEnv staging

findコマンドのmtimeオプションについて

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

find コマンドの -mtime オプションを指定することで最後にデータが修正された日時で検索することができます。
日時の指定方法も色々あるのですが、個人的にわかりづらかったので以下のパターンだとどのような結果になるのか、実際に動かしてみることにしました。


試すパターン
find -mtime 日数
find -mtime +日数
find -mtime -日数

結果からいうと、
find -mtime -3 3日(72時間)前〜現在
find -mtime 3  3日(72時間)前〜4日(96時間)前
find -mtime +3 4日(96時間)前〜過去
こうなります。


とりあえず、確認用のファイルを適当に作って試してみます。
touch -t 07140000 0714.txt
touch -t 07130000 0713.txt
touch -t 07120000 0712.txt
touch -t 07110000 0711.txt
touch -t 07100000 0710.txt
こんな感じで空のファイルを5つ作成しました。
ls
0710.txt  0711.txt  0712.txt  0713.txt  0714.txt

touch の -t オプションでタイムスタンプを設定しています。
設定できているか確認してみます。

atime(最後にファイルにアクセスした時刻)
% ls -alu
total 8
drwxr-xr-x  2 sk sk 4096 2009-07-14 11:34 ./
drwxr-xr-x  7 sk sk 4096 2009-07-14 11:29 ../
-rw-r–r–  1 sk sk    0 2009-07-10 00:00 0710.txt
-rw-r–r–  1 sk sk    0 2009-07-11 00:00 0711.txt
-rw-r–r–  1 sk sk    0 2009-07-12 00:00 0712.txt
-rw-r–r–  1 sk sk    0 2009-07-13 00:00 0713.txt
-rw-r–r–  1 sk sk    0 2009-07-14 00:00 0714.txt

mtime(最後にファイルを変更した時刻)
% ls -al
total 8
drwxr-xr-x  2 sk sk 4096 2009-07-14 11:32 ./
drwxr-xr-x  7 sk sk 4096 2009-07-14 11:29 ../
-rw-r–r–  1 sk sk    0 2009-07-10 00:00 0710.txt
-rw-r–r–  1 sk sk    0 2009-07-11 00:00 0711.txt
-rw-r–r–  1 sk sk    0 2009-07-12 00:00 0712.txt
-rw-r–r–  1 sk sk    0 2009-07-13 00:00 0713.txt
-rw-r–r–  1 sk sk    0 2009-07-14 00:00 0714.txt

ctime(最後にファイルを変更した時刻)
% ls -alc
total 8
drwxr-xr-x  2 sk sk 4096 2009-07-14 11:32 ./
drwxr-xr-x  7 sk sk 4096 2009-07-14 11:29 ../
-rw-r–r–  1 sk sk    0 2009-07-14 11:32 0710.txt
-rw-r–r–  1 sk sk    0 2009-07-14 11:32 0711.txt
-rw-r–r–  1 sk sk    0 2009-07-14 11:32 0712.txt
-rw-r–r–  1 sk sk    0 2009-07-14 11:32 0713.txt
-rw-r–r–  1 sk sk    0 2009-07-14 11:32 0714.txt

大丈夫そうですね。

ではさっそく以下を試してみます。
ちなみに実行したの7月14日のお昼頃です。
find ./ -mtime -3
find ./ -mtime 3
find ./ -mtime +3

結果。
find ./ -mtime -3
./
./0714.txt
./0713.txt
./0712.txt

find ./ -mtime 3
./0711.txt

find ./ -mtime +3
./0710.txt

図にまとめるとこんな感じでしょうか。

ではもうひとつ。
同様の操作をdaystartオプションを付与して試してみます。
find ./ -daystart  -mtime -3
find ./ -daystart  -mtime 3
find ./ -daystart  -mtime +3


結果。

find ./ -daystart  -mtime -3
./
./0714.txt
./0713.txt
./0712.txt

find ./ -daystart  -mtime 3
./0711.txt

find ./ -daystart  -mtime +3
./0710.txt

結果は同じですが、0時を基準にするので、図にするとこのようになります。

 図にするとよりわかりやすいですね。以上になります。

gemをユーザディレクトリにインストール

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

新しく書き込みを行います。
今後、記事を書きますので、宜しくお願い致します。
今回は、gemをユーザディレクトリ以下に設置する方法をメモします
rubygemsをダウンロードし、同封されているsetup.rbを

ruby setup.rb --prefix=~/gems

のように、インストールディレクトリを指定しセットアップを開始します。 次に、.bashrcなどにGEM_HOMEとRUBYLIBのPATHを指定すれば準備が整いました。

export GEM_HOME=~/gems
export RUBYLIB=~/gems/lib

これでユーザごとに異なるgemや複数のバージョンを扱えるようになります。

ブラウザのデフォルトスタイルをリセットする

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

こんにちは、maiです。今回はコーディングでデザイン用にcssを書き出す前の下準備のお話。

ただhtmlを書いただけでも、見出しは大きかったり、
リストには黒い丸が表示されたり、strongは太字になったりemは斜体になったり、
そのすべてはブラウザがもともと持っているstyleです。

まあ…正直邪魔ですよね。
リストのマークは黒丸じゃなくて画像で作った矢印にしたいし…とか。

そんなとき、いちいち
list-style: none;
なんて書くのはめんどくさいことこの上ない。
1カ所だけならいいんですけどね。

 なので、もう最初からなかったことにしたいstyleはリセットしてしまいましょう。
↓に実際に使ってるリセット用cssを一気に公開です。

/* Universal selector */
* {
margin:0;
padding:0;
position:static;
}

/* Text(Heading) */
h1, h2, h3, h4, h5, h6 {position:static;}

/* Text(Block) */
address, blockquote, div, p, pre {
font-style:normal;
font-weight:normal;
position:static;
}

/* Text(Inline) */
abbr, acronym, br, cite, code, dfn, em, kbd, q, samp, span, var {
position:static;
border:none;
font-style:normal;
font-weight:normal;
}
strong {
position:static;
border:none;
font-style:normal;
font-weight:bold;
}

/* Hypertext */
a {text-decoration: none;}

/* List */
ul, dl, dt, dd {
list-style-type:none;
font-style:normal;
font-weight:normal;
position:static;
}
ol {list-style-type:none;}

/* Image */
img {
border:0;
vertical-align:top;
}

/* Scripting */
noscript, script {
font-style:normal;
font-weight:normal;
position:static;
}

/* Etc. */
hr, table, form, fieldset, del {
font-style:normal;
font-weight:normal;
position:static;
}

ーーーーーーーーーーーーーーーーーーーーーーーーーここまで

これを使うと、見出しも段落もリストもなにもかも、
何一つ変化のないテキストとして表示されるので、
ここに適宜必要なstyleを追加していきます。

リセット用のcssは1つのファイルにまとめておくと、
使い回しがきいて非常に便利になります。

swfmillのインストール(makeのところ)でエラーがでた

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

最近Flash Liteを使うことになり、動的なFlash Lite作成のために、swfmillを入れることになりました。

インストールして、いざmake!というところで、エラーがでましたので、
その解決方法をご紹介します。

==============================
インストール環境:Ubuntu 9.04
swfmill:0.2.12
gcc:4.3.3
==============================

  1. swfmillをダウンロードします。
    # wget http://swfmill.org/releases/swfmill-0.2.12.tar.gz
    # tar xzf swfmill-0.2.12.tar.gz
    # cd swfmill-0.2.12
  2. ビルドします。
    # ./configure
  3. makeします。# make
    Making all in src
    make[1]: ディレクトリ `/usr/local/src/swfmill-0.2.12.2/src’ に入ります
    make  all-recursive
    (省略)
    swft_css.cpp: In function ‘void parse_color(std::string, CSSColor*)’:
    swft_css.cpp:25: warning: format ‘%x’ expects type ‘unsigned int*’, but argument 3 has type ‘unsigned char*’
    swft_css.cpp: In function ‘void swft_unit(xmlXPathParserContext*, int)’:
    swft_css.cpp:197: error: ‘strcmp’ was not declared in this scope
    make[3]: *** [libswft_la-swft_css.lo] エラー 1
    make[3]: ディレクトリ `/usr/local/src/swfmill-0.2.12.2/src/swft’ から出ます
    make[2]: *** [all-recursive] エラー 1
    make[2]: ディレクトリ `/usr/local/src/swfmill-0.2.12.2/src’ から出ます
    make[1]: *** [all] エラー 2
    make[1]: ディレクトリ `/usr/local/src/swfmill-0.2.12.2/src’ から出ます
    make: *** [all-recursive] エラー 1

    エラーになってしまいました。残念です。

    調べてみましたところ、gcc 4.2以前とgcc 4.3のバージョンの違いに問題があるようでした。
    yamcha 0.33 が fedora 9 (gcc 4.3) で make できない、そんなとき エラーを出しているファイルに #include <string.h>を追加しないとだめなようです。
    (gccをバージョンダウンさせてもよさそうです。)
    というわけで、swft_css.cppに書き込みます。
     何回か同じエラー(でもエラーを出しているファイルは変わっている)が出ますので、
    エラーを出しているファイルに次々と#include <string.h>を加えてmakeしていきます。
    最終的には通ります。
    これで入りました。
  4. make installします。
    # make install

確認してみます。$ swfmill

swfmill 0.2.12.2
     XML-based SWF (Shockwave Flash) processing tool

入りました。

keepalivedの設定

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

どうもメガネです。16回目です。

「keepalived」とはIPVS※を冗長化してるものです。
※IPVSとはロードバランサを中心に、リアルサーバーのクラスタとして
  バーチャルサーバーを構築することで、エンドユーザーからは1つのサーバー
  として見えるようにすることです。1~4はLBサーバで行います。
5~は実サーバで行います。

1 ipvsadmのインストール
実際の操作はこのipvsadmを利用することになります。
#yum install ipvsadm

2 keepalivedのインストール
RPMを使用するので適当に用意してください。
#rpm -ivh keepalived-1.1.13-6.i386.rpm

3 設定ファイルの変更
#vi /etc/keepalived/keepalived.conf

以下の場合

VIP 10.0.0.100
ソースIP 10.0.0.101
ソースIP 10.0.0.102

############################################################
virtual_server 10.0.0.100 80 {
  delay_loop  3
  lvs_sched   rr
  lvs_method  DR
  protocol    TCP
  real_server  10.0.0.101 80 {
    TCP_CHECK {
      connect_timeout 30
    }
  }
  real_server  10.0.0.102 80 {
    TCP_CHECK {
      connect_timeout 30
    }
  }
}
vrrp_instance vip_test {
  state BACKUP
  interface eth0
  virtual_router_id 1
  priority 100
  virtual_ipaddress {
    10.0.0.100 dev eth0
  }
}
############################################################

4 keepalivedの起動
#/etc/init.d/keepalived start
 VIPが応答することを確認します。
#ping 10.0.0.100

実IPが10.0.0.101と10.0.0.102サーバで以下のループバックの設定を行います。

5 ループバックの設定

############################################################
DEVICE=lo:0
IPADDR=10.0.0.100
NETMASK=255.255.255.255
NETWORK=10.0.0.0
BROADCAST=10.0.0.255
ONBOOT=yes
############################################################

#ifup lo:0

6 ARPへの対応
#vi /etc/sysctl.conf

############################################################
##最終行に以下を追加
net.ipv4.conf.eth0.arp_ignore = 1
net.ipv4.conf.eth0.arp_announce = 2
############################################################

#sysctl -p

以上で終了です。

Apacheの負荷状況をモニタリングするツール「apachetop」

0

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

TOPコマンドのようにapacheログからモニタリングできる「apachetop」
このツールのCentOS5.3へのインストールを実施してみます。

インストール方法はいくつかありますが、rpmでインストールしてみました。
(「yum install apachetop」もあります)

# wget http://centos.karan.org/el4/extras/stable/i386/RPMS/apachetop-0.12.5-2.el4.kb.i386.rpm
# rpm -ivh –nodeps apachetop-0.12.5-2.el4.kb.i386.rpm

これでインストールは終わりです。
利用方法は下記のようなので、実行してみます。

書式:apachetop -f アクセスログのファイル名

# apachetop -f /usr/local/apache2/logs/access_log
apachetop: error while loading shared libraries: libreadline.so.4: cannot open s
hared object file: No such file or directory

エラーになりました。
エラー解消のため、シンボリックリンクを張ります。
(エラーにならなければこの設定は飛ばしてください)

# cd /usr/lib
# ln -s libreadline.so.5.1 libreadline.so.4

再び実行
すると、下記が立ち上がりました。

last hit: 05:33:53         atop runtime:  0 days, 00:01:00             05:33:54
All:          346 reqs (   6.1/sec)        152.7K ( 2742.5B/sec)     451.8B/req
2xx:       9 ( 2.6%) 3xx:     337 (97.4%) 4xx:     0 ( 0.0%) 5xx:     0 ( 0.0%)
R ( 30s):     105 reqs (   3.5/sec)         35.1K ( 1197.9B/sec)     342.2B/req
2xx:       6 ( 5.7%) 3xx:      99 (94.3%) 4xx:     0 ( 0.0%) 5xx:     0 ( 0.0%)

 REQS REQ/S    KB KB/S URL
   11  0.61   7.2  0.4*/projects/activity/test
   10  0.33   0.0  0.0 /stylesheets/application.css
   10  0.33   0.0  0.0 /javascripts/dragdrop.js
   10  0.33   0.0  0.0 /javascripts/effects.js
   10  0.33   0.0  0.0 /javascripts/prototype.js
   10  0.33   0.0  0.0 /stylesheets/jstoolbar.css
   10  0.33   0.0  0.0 /javascripts/application.js
   10  0.33   0.0  0.0 /javascripts/controls.js
    6  0.33   0.0  0.0 /images/feed.png
    5  0.28   0.0  0.0 /images/attachment.png
    3  0.14   0.0  0.0 *
    2  0.10   5.7  0.3 /projects/show/test
    2  0.10   0.0  0.0 /images/time.png
    2  0.07   0.0  0.0 /images/22×22/projects.png
    2  0.07   0.0  0.0 /
    1  1.00  22.2 22.2 /projects/test/issues
    1  1.00   0.0  0.0 /images/true.png

リクエストされたURL等が参照できます。
デフォルトの設定ですと、直近の30秒のものがモニタリングされ、5秒置きに再描画します。
実行時のオプション指定で、モニタリング時間、描画時間等の調整が可能です。
例.直近60秒のログをモニタリングし、10秒置きに再描画

apachetop -f /usr/local/apache2/logs/access_log -T 60 -d 10

apachetop実行時に指定できるコマンドは下記の通りです。
※ターミナル上で”apachetop -h”を入力すれば参照できます。

# apachetop -h
ApacheTop v0.12.5 – Usage:
File options:
  -f logfile  open logfile (assumed common/combined) [/var/log/httpd/access_log]
              (repeat option for more than one source)

URL/host/referrer munging options:
  -q          keep query strings [no]
  -l          lowercase all URLs [no]
  -s num      keep num path segments of URL [all]
  -p          preserve protocol at front of referrers [no]
  -r          resolve hostnames/IPs into each other [no]

Stats options:
  Supply up to one of the following two. default: [-T 30]
  -H hits     remember stats for this many hits
  -T secs     remember stats for this many seconds

  -d secs     refresh delay in seconds [5]

  -h          this help

Compile Options: -HAVE_KQUEUE -HAVE_FAM -ENABLE_PCRE
Polling Method: stat

また、apachetop実行中に使用できるコマンドは下記の通りです。
※apachetop実行中に”h”を入力すれば、参照できます。

ApacheTop version 0.12.5, Copyright (c) 2003-2004, Chris Elsworth

ONE-TOUCH COMMANDS
d          : switch item display between urls/referrers/hosts
n          : switch numbers display between hits & bytes or return codes
h or ?     : this help window
p          : (un)pause display (freeze updates)
q          : quit ApacheTop
up/down    : move marker asterisk up/down
right/left : enter/exit detailed subdisplay mode

SUBMENUS:
s:  SORT BY: [the appropriate menu will appear for your display]
        r) requests  R) reqs/sec  b) bytes  B) bytes/sec
        2) 2xx   3) 3xx   4) 4xx   5) 5xx

t:  TOGGLE SUBDISPLAYS ON/OFF:
        u) urls  r) referrers  h) hosts

f:  MANIPULATE FILTERS:
        a) add/edit menu c) clear all  s) show active (not done yet)
        a:  ADD FILTER SUBMENU
                u) to urls  r) to referrers  h) to hosts

モニタリングを終了したい場合は”Ctrl + c”で抜けてください。


どのURLに対してアクセスが多い等、リアルタイムに確認したい場合に使えそうですね。

最近人気な記事