ホーム ブログ ページ 59

PostgreSQL 8.3 以降からの postgresql.conf を、サーバースペックによるデフォルト値を設定し、パフォーマンスチューニングする

0

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

こんにちは、O2 です。

今回は、postgresql の設定ファイル(postgresql.conf) に関しての、私が最近設定している

デフォルト値を公開しようと思います。

実際、インストール直後の設定では、「ロースペックのマシン環境でも動作する」設定の為

最近のサーバースペックにあった、デフォルト値を記述してみようと思います。

とは言っても、私が扱っている最近のサーバーのメモリは、8GB、16GB、32GB で、さらに

PostgreSQL 8.3以降を使用しているので、PostgreSQL 8.3以降での、メモリ3パターンでの

デフォルト値を紹介します。

注意.あくまでも、私が割り出したデフォルト値ですので、どのように使用するかによってチューニングは

必要になりますので、参考にご使用ください。

説明の前に

 PostgreSQL 8.2 以降かな?(間違っていたらだれか指摘してね)、設定値関して

 shared_buffers などのメモリ設定が、MB(メガバイド)や、GB(ギガバイト)という単位で

 設定できるようになっている為、設定しやすくなっています。

共通

 max_connections = 200

  log_destination = ‘stderr’

  logging_collector = on

  log_directory = ‘/var/log/postgresql’

  log_filename = ‘postgresql-%Y-%m-%d.log’

  log_min_messages = info

  log_error_verbosity = verbose

  log_line_prefix = ‘%t:%r[%p-%v]’

  log_autovacuum_min_duration = 0

  autovacuum = on

  log_lock_waits = on   deadlock_timeout = 30s

メモリ:8GB の場合

  shared_buffers = 2GB

  work_mem = 32MB

  wal_buffers = 512KB

  checkpoint_segments = 16

  random_page_cost = 3.0

  effective_cache_size = 2GB

メモリ:16GB の場合

  shared_buffers = 3GB

  work_mem = 32MB

  wal_buffers = 512KB

  checkpoint_segments = 16

  random_page_cost = 3.0

  effective_cache_size = 3GB

メモリ:32GB の場合

  shared_buffers = 8GB

  work_mem = 64MB

  wal_buffers = 512KB

  checkpoint_segments = 32

  random_page_cost = 3.0

  effective_cache_size = 8GB

※今回の設定は、サーバーをDB専用にした場合を想定して書いてます。

Merbを使ってみる

0

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

こんにちは。T氏です。

最近は、ようやくRailsの開発にも慣れてきました。

慣れてくると、Rails以外のフレームワークも使ってみたいな、なんて思ったりします。

そこで、以前から気になっていたMerbのインストールから起動までをご紹介したいと思います。

まずはインストールからです。

*ここでは、rubyとgemはインストール済みを前提とさせて頂きます。

merbのインストール

  # 約50個近くインストールされるので注意 
$ sudo gem install merb
Password:
Building native extensions.  This could take a while...
Successfully installed addressable-2.0.2
Successfully installed extlib-0.9.12
Successfully installed data_objects-0.9.12
Successfully installed dm-core-0.9.11
.....
.....
.....
Successfully installed merb-1.0.12
  # デフォルトはsqliteなので、
# mysql を使いたい方はこちらをインストール
$ sudo gem install do_mysql
  # postgresを使いたい方はこちらをインストール
$ sudo gem install do_postgres

これでインストールは完了です。

次にプロジェクトを作成してみましょう。

プロジェクトの作成もコマンド一つで行えます。

  $ merb-gen app test-merb
Generating with app generator:
[ADDED] Rakefile
[ADDED] app/controllers/application.rb
[ADDED] app/controllers/exceptions.rb
[ADDED] app/helpers/global_helpers.rb
[ADDED] app/models/user.rb
[ADDED] app/views/exceptions/not_acceptable.html.erb
[ADDED] app/views/exceptions/not_found.html.erb
[ADDED] autotest/discover.rb
[ADDED] autotest/merb.rb
[ADDED] autotest/merb_rspec.rb
[ADDED] config/database.yml
[ADDED] config/dependencies.rb
[ADDED] config/environments/development.rb
[ADDED] config/environments/production.rb
[ADDED] config/environments/rake.rb
[ADDED] config/environments/staging.rb
[ADDED] config/environments/test.rb
[ADDED] config/init.rb
[ADDED] config/rack.rb
[ADDED] config/router.rb
[ADDED] public/javascripts/application.js
[ADDED] public/stylesheets/master.css
[ADDED] merb/merb-auth/setup.rb
[ADDED] merb/merb-auth/strategies.rb
[ADDED] merb/session/session.rb
[ADDED] .gitignore
[ADDED] public/.htaccess
[ADDED] tasks/doc.thor
[ADDED] public/javascripts/jquery.js
[ADDED] doc/rdoc/generators/merb_generator.rb
[ADDED] doc/rdoc/generators/template/merb/api_grease.js
[ADDED] doc/rdoc/generators/template/merb/index.html.erb
[ADDED] doc/rdoc/generators/template/merb/merb.css
[ADDED] doc/rdoc/generators/template/merb/merb.rb
[ADDED] doc/rdoc/generators/template/merb/merb_doc_styles.css
[ADDED] doc/rdoc/generators/template/merb/prototype.js
[ADDED] public/favicon.ico
[ADDED] public/images/merb.jpg
[ADDED] public/merb.fcgi
[ADDED] public/robots.txt
[ADDED] tasks/merb.thor
[ADDED] spec
[ADDED] gems

Rails経験者なら、見た事があるようなファイルが生成されていますね。

最後にルートディレクトリに移動して、merbの起動をしてみましょう。

起動は下記のコマンドで行えます。 

  $ merb

しかし、ここで一点注意が必要です。

私の環境では実行時に下記のエラーが出ました。

   ~ 
~ FATAL: The gem data_objects (= 0.9.11, runtime), [] was not found
~  

どうやら見つからないようです。

これは、設定ファイル(config/depencies.rb)を見ると、

下記の記述がありますので修正する必要があります。

   #do_gems_version   = "0.9.11"
do_gems_version = "0.9.12" # gem list --local | grep data_objectsでバージョンを確認

これで、改めて起動すると無事に立ち上がります。

今日はmerbのインストールから起動までご紹介致しました。

ご覧いただき、ありがとうございました。

rails2.2のbutton_to_function

0

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

rails2.2にてformの入れ子ができないようで、でもどうしても1formに複数ボタンがあり、 複数アクションにしたい場合はどうすればよいか。 調べましたところ、button_to_functionを使いましたら、jsでディレクトリの指定ができるようです。ただ、button_to_functionは名前通りbuttonですのでフォームをsubmitする必要がない時、使えると思います。詳しくはrailsのapiドキュメントをご参照いただければと思います。…

Andorid開発環境構築

0

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

今回はAndroidアプリの開発環境構築しましたので手順を投稿します。

OSはmac10.5です。

大きく分けて下記2項目を行いますが,すでにeclipseの環境が
ある前提で話を進めていきます。

・ android仮想デバイスのインストール
・ eclipseにandroid開発用のプラグインをインストール

1,android仮想デバイスのインストール
   下記よりandroids sdk をダウンロード
    http://developer.android.com/intl/ja/sdk/1.5_r3/index.html
    
    任意のディレクトリに展開(今回はアプリケーションフォルダに展開しました)
    パスを通す
    $export PATH=$PATH:/Applications/android-sdk-mac_x86-1.0_r2/tools

    次にAndroid Virtual Deviceの作成
    $android create avd –name myroid  –target 3
        –name のあとには デバイスの名前
        (–target 1 なら Andorid1.1)
        (–target 2 なら Andorid1.5)
        (–target 3 なら Andorid1.5をベースにGoogleApls)

     今作成したデバイスの起動
    $emulator -avd myroid
   
2,eclipseにandroid開発用のプラグインをインストール
   
   ここからはeclipse上で作業を行いプラグインをインストールします。
   Eclipse 用 ADT プラグインのインストール、eclipseのバージョンによって
   違うようです。(eclipse3.5がリリースされていたので3.5で構築をしました。
   ちょっと重い気がしますが問題なく動作しております)

   eclipseのバージョンが3.3の場合
      → https://dl-ssl.google.com/android/eclipse/
   eclipseのバージョンが3.4の場合
      → https://dl-ssl.google.com/android/eclipse/

   Android DDMSとAndroid Development Toolsにチェックを入れインスール
   eclipseの再起動を行えばプラグインが反映されます。

今回は開発環境構築を行いましたので、次回の投稿ではサンプルをご紹介できればと思います。

Ethnaの動作イメージ。

0

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

Ethnaがどんな動作をしているか追っていきましょう!

  1. クライアントはControllerクラスにアクセスする。
  2. アクセスされたControllerクラスは、クライアントのリクエストに対応する処理が定義されているAction Class(という名前の)オブジェクトを生成し、実行します。
  3. Action Classオブジェクトは処理(バリデーションやDBとのやりとり等)を実行し、結果をControllerオブジェクトに返します
  4. ControllerオブジェクトはAction Classが返した結果に対応するビューオブジェクトを生成します
  5. ビューオブジェクトはHTMLをクライアントに対して表示する

Model・View・Controllerとは?

MVCとは、処理の中核を担当する「Model」、表示・出力を担当する「View」、入力を受け取ってその内容に応じてViewとModelを制御する「Controller」のことで、

この3つの要素を用いてシステムを実装する方式をMVCモデルと呼びます。

Ethnaでは、このModelに含まれる箇所が、Actionclassになります。

といった感じで、それぞれの役割を切り離すことで、仕様変更の影響を受けにくいし、機能ごとの役割が明確化されるんですね。

画像があれば、理解しやすいと思うんですが、用意できなくてスミマセン、、…

MacでOracle Instant Clientを利用する

0

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

先日Snow Leopardが発売されて、私もアップグレードしてみました。OSの起動、停止が早くなり、とても満足です。ただ…

問題もあって、残念ながら以前書いた記事(http://doruby.kbmj.com/8y/20090505/Mac_OS_X_Leopard__Oracle_)のインストール方法が使えなくなってしまいました。原因はSnow LeopardのJavaのバージョンとLeopardのJavaのバージョンが違うためぽいです。ごにょごにょしたら解決しそうですが、今回はさっぱりあきらめて、Railsで単にローカルマシンから別サーバのOracleへつなぐところまでをやってみました。

MacPortsから

	%port search oracle-instantclient
	oracle-instantclient @10.2.0.4.0 (databases)
	    Oracle database connection libraries
	

上記をインストールします。ただし、そのままインストールしようとしても駄目で、instantclientのzip自体は自分でダウンロードしてくる必要があります。

http://www.oracle.com/technology/software/tech/oci/instantclient/htdocs/intel_macsoft.html

上記から”instantclient-basic-10.2.0.4.0-macosx-x64.zip “と”instantclient-sdk-10.2.0.4.0-macosx-x64.zip”をダウンロードし、/opt/local/var/macports/distfiles/oracle-instantclientへ配置してください。

その上でインストールを行います。

	% sudo port install oracle-instantclient
	

これはあっけなく終わる筈です。で、実際Railsから接続する為に activerecord-oracle_enhanced-adapter (1.2.1) などもgem からインストールする必要があるのですが、実際の接続に使う ruby-oci8 1.0.6(200909時点stable最新)もインストールします。

このインストールですが、先ほど入れたoracle-instantclientのありかをきちんと教えてあげないといけないです。なので

	% export DYLD_LIBRARY_PATH=/opt/local/lib/oracle
	% gem install ruby-oci8 -v 1.0.6 -- --with-instant-client
	

DYLD_LIBRARY_PATHを設定した上で、ruby-oci8にinstantclientを使うオプションをつけてインストールする必要があるみたいです。

これで無事別サーバのOracleなどに接続できる筈です。

Flash Lite 1.1 のファイルサイズ(容量)を節約する9の方法

0

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

Flash lite 1.1 の開発を行う際に誰もが悩むのが、100KBのファイルサイズ制限の中で
いかにリッチなコンテンツを制作するかという部分ではないでしょうか。
今回は、表示側(グラフィック等)と制御側(スクリプト)に分けて、
ファイルサイズを節約するポイントをまとめてみました。

■グラフィック

(1)グラフィックはベクターで描く?画像を読み込む?
グラフィックをベクターにするか画像にするかは、そのグラフィックによって
ケースバイケースです。

実際には、画像とベクターの容量を見比べながら四苦八苦してみることに
なりますが、基本的な切り分けとしては、単純なパスの図形等は画像よりも
ベクターのほうが容量を節約できるので、ベクターで描くようにします。

逆に複雑なパスのベクターはアンカーポイントが沢山存在するため、画像よりも
容量を食う場合が多々あります。
ただし、シェイプの最適化を行って、見た目に影響が出ない程度にパスを単純化
することで、ガクっと容量が減ることもしばしばあります。
複雑なグラフィックの場合は、時間はかかりますが画像と見比べながら
調節していくと良いかと思います。


(2)読み込む画像の画質を調整
読み込む画像に関しては、読み込む前に画質や色数をある程度落としておく
ことも重要です。
PhotoShopやIllustrator等で保存する際に、画質のスライドバーを調節するか
カラーパネルで余分な色を削っていきましょう。
画質落とし過ぎかな・・・と感じるくらいでも、実機で表示してみると
意外と綺麗に表示されたりします。
画像形式はGIFかPNGがおすすめです。


(3)インスタンスを有効に使いまわす。
各所で使用するグラフィックはできるだけインスタンス化して使い回すことで、
ファイルサイズを削減できます。
また、同じ形状のグラフィックで色だけが違うもの等は色だけ変えて
使いまわすこともできます。
この辺りの節約術は、デザインの段階でも気にしながら作業を行う必要がありそうです。


■その他、表示側

(4)フォントはデバイスフォントを使用
フォントはデバイスフォントを使用することでファイルサイズを節約できます。
フォントサイズはキャリアや機種によってまちまちですが、12pxか24pxに
設定することで、キャリアや機種ごとの表示の差異は非常に少なくなります。


(5)無駄なフレームは使わない
空のフレームでも削除してみるとファイルサイズがを若干削減できる場合があります。
削ることができるキーフレームやトゥイーンで使用しているフレームを何フレームか
削ると更に効果があります。


■スクリプト
スクリプトの記述量が多ければ多い程ファイルサイズに影響します。

(6)共通化できるスクリプトはフレームアクションに。
同じような処理をしているスクリプトはフレームアクションにしてしまい、
callで呼び出して実行することで、記述量を減らすことができます。

※Flash Lite 1.1 では、functionが使用できないため、この call を度々
利用しますが、引数や戻り値は使えません。
引数や戻り値となる値はグローバル変数として保持しておくのが良いかと思います。


(7)変数名、フレームラベル名等

様々な箇所で記述される変数名、フレーム名だからこそ短くすればするほど、
ファイルサイズを節約できます。
理想としては、1〜3文字程度が理想と各所で言われていますが、
かえって難解なソースになることもあるかと思いますので、
切り詰めすぎずにほどほどに。


(8)URL等の長い文字列は変数に。
基本中の基本かとは思いますが、URL等、ソースの各所で使用する長めの
文字列は変数にいれて使い回すことで記述量を削減できます。


(9)for文等で動的に生成できる変数が沢山ある場合はベタ書きしない
for文等で動的に生成できる変数名、値が沢山ある場合は動的に作ってしまいましょう。
こうすることで生成された変数はメモリに持たせることができますので、
ファイルサイズを圧迫しなくて済みます。

以上、ファイルサイズに困ったら、一度上記の内容で実践できることがないか

見直してみるのはいかがでしょう。

本当は、最近流行っているタイトルっぽく 「Flash lite 1.1 のファイルサイズを節約する10の方法」とかにしたかったのですが・・・いまいち流行りに乗り切れずに9個止まりでした。。。

googleAnalyticsでonclickで複数ドメイン計測とtarget=”_blank”が使えない不具合

0

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

アクセス解析チーム中林です。
 
GoogleAnalyticsで複数ドメインを計測する場合、

GoogleAnalyticsではタグやリンクにちょっとした修正が必要となります。

詳しくは↓こちらをごらんください。
Google Analyticsで複数ドメインのサイトを計測する方法
http://doruby.kbmj.com/UsabilityAnalytics/20090416/Google_Analytics_2_1

今日は複数ドメインのサイトを計測する場合の注意点についてのお話です。

■通常のリンクの場合
上記のサイトにありますが、

Google Analyticsでは複数ドメインを計測する場合に
トラッキングコードの他に、ドメインをまたぐリンクに下記のように修正が必要となります。

<a href=”http://ga.kbmj.com/” onclick=”pageTracker._link(this.href); return false;”>同ウインドウ</a>

 ■targetで指定する場合

target=”_blank”
onclick=”pageTracker._link(this.href);

の二つの関数を使用すると関数同士が競合してしまって
うまくウインドウを開くことができなくなってしまいます。
(もしくはGoogleAnalyticsに正くデータが送られなくなってしまいます。)

×間違い<a href=”http://ga.kbmj.com/” target=”_blank” onclick=”pageTracker._link(this.href); return false;”>別ウインドウ</a>

○正しい
<a href=”http://ga.kbmj.com/” onclick=”window.open(pageTracker._getLinkerUrl(this.href),’_blank’); return false;”
>別ウインドウ</a>

上のリンクでは下記の関数を使用しています。


onclick=”window.open(pageTracker._getLinkerUrl(this.href),’_blank’); return false;

これによって、別ウインドウで開くとともに
Google Analyticsでデータを正しく取得することができるようになります。


ブラウザのセキュリティ設定を「高」にしている場合や
javascriptを防ぐセキュリティソフトを使用している場合は
上手く行かないことがあるようです。

参考になりましたでしょうか。

ではでは失礼いたします。

ファイラの選択(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がさらっと作れます。皆さんもぜひ一度お試し下さい。

最近人気な記事