ホーム ブログ ページ 64

Linux便利コマンド ~履歴検索~

0

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

こんにちは、oneafter999です。
今回は、Linuxのちょっと便利なコマンドをご紹介します。

踏み台サーバを介してローカルセグメントに入る時など、IPアドレス入りのSSHをいちいち入力するのは非常に面倒なものです。
また直近の履歴は[↑]で表示されますが、それでもなかなか目当てのコマンドはみつからない・・・。
そんな時便利なのが、Ctrl + Rコマンドです。
このコマンドは入力後、目当てのコマンドの一部を入力することで、過去コマンドの中から候補を表示してくれるコマンドです。

使用例

test@TEST1:~$ Ctrl + R
(reverse-i-search)`’:
※↑で「ss」と入力
(reverse-i-search)`ss’: ssh test@192.168.3.100
表示された候補が違う場合、Ctrl + Rで次の候補を表示することができます。
また、やっぱり履歴検索をやめたい場合は、Ctrl + Cでキャンセルが可能です。

便利なのはもちろんのこと、ちょっとかっこいい点も見逃せません!

文字列の一部を置換したい

0

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

初めましてこんばんわ、トマトです。

まだまだひよっこな私ですが、日々Ruby on Railsに悪戦苦闘しております。

さて、今回は何かとよく使われる、

文字列の一部を置換するメソッドをご紹介したいと思います。

○gsubメソッド

このメソッドは引数を2つとります。

第1引数では正規表現を使って置換したい部分のパターンを指定し、

第2引数では第1引数のパターンでマッチした部分と入れ替える文字列を指定します。

 文字列.gsub(/マッチさせたいパターン/,'置換したい文字列')

。。。とまぁ、言葉で表すとわかりづらいので

実際に使ってみましょう。

str = "red$blue$$green$$$yellow$$$$pink"
p str.gsub(/\$+/,' ')

# 出力結果
# "red blue green yellow pink"

このように置換することができるんですね。

実用的な使い方の例としては、場合によって”http”と”https”とで出し分ける際に

img = "http://tomato.com/product/img/tomato.jpg"
my_img = ""
if flg==1
   my_img = img.gsub(/\^http/,'https')
else
   my_img = img
end

上のように記述をすれば、簡単です。

○subメソッドとの違い

gsubメソッドとすごくよく似ているメソッドがsubメソッドです。

名前がそっくりならば、機能もやっぱりそっくりです。

ためしに使い比べてみましょう。

img = "http://tomato.com/product/img/tomato.jpg"

p img.gsub(/tomato/,'banana')
# gsub出力結果
# "http://banana.com/product/img/banana.jpg"

p img.sub(/tomato/,'banana')
# sub出力結果
# "http://banana.com/product/img/tomato.jpg"

よく見てみるとgsubメソッドでは、”tomato” にマッチした部分

すべてを置換しているのに対して、

subメソッドでは最初の”tomato”にマッチした部分のみ

置換しているのがわかります。

要するに

○gsubメソッド=すべて置換する

○subメソッド=先頭だけ置換する

ということなのです。

○gsub!、sub!メソッド

gsubとsubメソッドに”!”のついたこのメソッド。

これもちょっと使ってみましょう。

img = "http://tomato.com/product/img/tomato.jpg"
img.gsub(/tomato/,'banana')
p img
# gsub出力結果
# "http://tomato.com/product/img/tomato.jpg"

img.gsub!(/tomato/,'banana')
p img
# gsub!出力結果
# "http://banana.com/product/img/banana.jpg"

subメソッドやgsubメソッドでは置換後の文字列を

その都度生成して返しているのに対して、

sub!メソッドやgsub!メソッドを使うと文字列自体を変更してしまうので、

使用する際には注意が必要です。

やけに長くなりましたが、以上文字列置換メソッドの紹介でした。

また次回お会いしましょう。

file_fieldで画像をアップ

0

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

http://d.hatena.ne.jp/zenpou/:titileにて公開した記事を公開します。

railsで、Resourceというmodelに画像を保存する時、

new_fileというメソッドを使ってデータを保存する様につくったんですが、

そういうとき、file_field :record, :resourceのデータを受け取っても

そのまま代入できないので、その問題に対する対処です。

  alias :resource_old= :resource=
  define_method("resource=") do | value |
    if value.class == ActionController::UploadedTempfile
      resource = Resource.new_file(value, value.original_filename)
      self.send :resource_old= , resource
    elsif value.class == Resource
      self.send :resource_old= , value
    else
      nil
    end
  end

model側からbelongs_toでresourceに連携した後に定義される代入を

オーバーライドしてます。

こうするとパラメータの中身をそのまま出せるので非常に楽です。

背景透過に対応するシム技法

0

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

初めまして。新人エンジニアの はる です。

社内では主にRuby on Rails と Flash をいじっています。

今回は、「透過に対応するシム技法」についてご紹介します。

Q:シム技法とは?

例えば、FlashをWEBページの上に重ねて表示(WEBページの1つ上のレイヤーに
Flashを表示するイメージ)する場合、IE6ではセレクトボックスが最前面に表示
されてしまいます。


HTMLのレイヤー構造を指定する方法としては、通常、CSSのz-indexプロパティを
使用しますが、IE6のSELECT要素にはz-indexを指定することが出来ません。
これはIE6において、SELECT要素がウィンドウコントロールとして扱われている
ために起こる現象です。


対策としては、iframe要素をSELECT要素の上に重ね、さらにiframeの上にFlashを
重ねることで、SELECT要素が最前面に表示されなくなります。
これを「シム技法」といいます。

さて、ここからが本題です。

シム技法を用いて背景が透明のFlashを表示したい場合を考えます。

iframeにはallowtransparency属性があり、

allowtransparency="true" ・・・背景を透過にする
allowtransparency="false" ・・・背景を透過にしない(初期値)

と定義されています。

しかし、背景を透過させるためにtrueを指定した場合、iframeの背景が透過されても

シムとして使用することができません。また、flaseを指定した場合は、シムとして

使用することはできるものの透過されません。

つまり、このままでは背景が透明のFlashをシム技法で表示することができない

ということになります。

これを解決するためには、iframeに少し珍しいstyle指定を行います。

<iframe frameborder="0" scrolling="no" style="filter:alpha(opacity=1);">

CSSのfilterプロパティはIE(Win)の独自プロパティであり、主に文字や画像を装飾

するために用いられます。上記のstyle指定では、不透明度を1%に指定することで

“ほぼ”透明のシムとして使用することができます。

filterプロパティは、IE独自の機能ですが、そもそもシム技法を使用しなければならない

ブラウザもIE6以下のみですので、IE6以外では表示しないよう切り分けることをお勧め

します。

また、FlashとFlashが重なるページの場合、Flashを表示しているobjectタグに、

以下の指定を行う必要があります。

<param name="wmode" value="transparent" />
<embed ...wmode="transparent" ... />

上記の指定をしていない場合、FlashがHTMLのレイヤー構造を理解することが

できませんので、ご注意下さい。

以上、長文になりましたが「透過に対応するシム技法」についてご紹介させていただきました。

次回は「Ruby on Rails と Flash の連携方法」について触れてみたいと思います。

Rubyのクラス

0

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

どうもメガネです。9回目です。
今回はRubyのクラスについて説明します。
Rubyはオブジェクト指向言語なのでオブジェクトを使えるようになると便利です。
Class名は大文字で始めなければいけません。
Class Test
end
次はメソッドの定義の仕方です
Class Test
  def helloworld
   print “Hello, World\n”
  end
end
次にインスタンスの作成です。
test = Test.new
p test.helloworld
Hello, World #出力される
次にコンストラクタについて説明します。
コンストラクタは便利なのでぜひ使ってみてください。
class Test
  def initialize(myname)
   @name=myname
  end
  def helloworld
   print “Hello, World I am”,@name,”\n”
  end
end
インスタンスの作成
test = Test.new(“hoge”)
p test.helloworld
Hello, World I am hoge #出力される
コンストラクタを使わない場合
class Test
  def name(myname)
   @name=myname
  end
  def helloworld
   print “Hello, World I am”,@name,”\n”
  end
end
インスタンスの作成
test = Test.new
test.name(“hoge”)
p test.helloworld
Hello, World I am hoge #出力される
見て分かるようにコンストラクタを使うとインスタンスの作成と処理を一度に行えます。
今日はここまで

CSSハック〜モダンブラウザ(IE、Safari)編

0

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

こんにちは。maiです。

web標準化の波のおかげで、時代はcssレイアウト。

でもcssってブラウザごとにズレたりするのが困りものですよね。

そんなときにブラウザを限定してcssを適用するハックをご紹介します。

ちなみに、Firefoxが一番仕様に近い動作をするので、

cssを書くときはまずFirefoxで確認しながら書きます。

そのためFirefox向けのハックは基本やりません。

 Safari向け

html*セレクタ { /* for safari */ プロパティ:値; }

Safari 2.x系

html:first-child セレクタ { /* for safari2.0 */ プロパティ:値; }

 IE向け

IE6

* html セレクタ { /* for ie6 */ プロパティ:値; }

IE7

*:first-child+html セレクタ { /* for ie7 */ プロパティ:値; }

記述する順番は以下の通り。

1.Firefoxに適用するデフォルトの指定

2.Safariに適用する指定→Safari2に適用する指定

3.IEに適用する指定(順番はどっちでも)

IE系はどっちも同じ指定をすることが多いですが、

* html セレクタ, *:first-child+html セレクタ { /* for ie */ プロパティ:値; }

という書き方はできないので注意です。

apacheの構文チェックをしよう。

0

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

こんにちは、タジです。

今回はapacheの構文チェックについてです。

 apacheを起動しようとしたらSyntax Errorが出て起動しない・・・なんて経験はないでしょうか。

自宅サーバやテストサーバならまだ良いですが、そうでなければ大変なことになります。

Syntax Errorは、Configファイルの文法や構文が間違っているため読み込めない、というエラーです。

つまりこれを事前に確認できれば良いわけですね!

apacheの構文チェックは起動スクリプトにオプションをつけるだけです。

/usr/localの下にapache2が入っている場合は

/usr/local/apache2/bin/apachectl -t

と打てば構文チェックができます。

 また、/etc/init.d/ の下にシンボリックリンクが貼られている場合は、

/etc/init.d/apache2 -t

という感じでもOKです。

apacheのConfigファイルはhttpd.confというファイルなので、これを書き換えたときは必ずチェックするようにしましょう。

 では、また次回。

railsの開発用サーバを使ってみよう。

0

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

こんにちは、タジです。

今回はrailsに用意された開発中のアプリケーションを実際に動かすためのスクリプトである、script/serverについてです。

 このスクリプトを使うと非常に簡単にアプリの動作を確認できます。また、Webサーバも立ち上げてくれるので、ブラウザからも確認ができます。

起動も簡単で、起動したいプロジェクトのディレクトリで

ruby script/server

と打つだけです。

特に何も設定していない場合は、railsに付属しているWebサーバであるWEBrickを起動します。

起動後は、

http:localhost:3000

にアクセスすることで、ブラウザから動作確認ができます。

3000というのは使用するポート番号で、これを変更すれば複数立ち上げることもできます。

ruby script/server –port=3001

と打てばlocalhostの3001番で起動するという感じです。

今回はここまでです。

それではまた次回。

macユーザーのための便利なエクセル(excel 2004)ショートカット集

0

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

こんにちはカツオです。 今日は自分が会社に入ってから覚えた ショートカット (for mac)を書こうと思います。

役に立つと思う順に書きますね。   

コピー  
command + c

切り取り  
command + x

貼付け  
command + v

エクセルの書式設定ダイアログを開く
command + 1   

セル内で改行  
command + option +enter

選択しているセルを再編集  
control + u

セルの削除  
control + k

セルの追加  
control + i

選択しているセルの数値と値の削除

control + b

選択セル位置と同じ列で直前の値をコピーして入力  
control + d

選択セル位置と同じ行で直前の値をコピーして入力  
control + r

選択セル位置の列をすべて選択
control + スペース

選択セル位置の行をすべて選択  
shift + スペース

保存
command + s

名前を付けて保存   
command + shift + s    

現在の日付   
control+;(セミコロン)

現在の時刻
control + :(コロン)   

左揃え
command + L    

中央揃え
command + E    

右揃え
command + R    
   
macユーザーは エクセルでセル内改行とか絶対つまづきますよね。
あとセルで再編集はとても便利ですね。   
また覚えたら追加していきますね。 ではでは  

rakeをバージョン指定して実行してみる~undefined method `last’ for {}:Hash~

0

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

ローカル環境で rake db:migrate をしようとしたら
rake aborted! undefined method `last’ for {}:Hash残念でたまりません。

ググってみると
rake db:migrate すると undefined method `last’ for {}:Hash と出る
↑では新しいバージョンを削除することでエラーを解消しています。

とりあえず今回は、rakeのバージョンを指定して実行してみようと思います。

rake _0.7.3_ db:migrate
これでOKのようです。

partialについて

0

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

どうも。

昨日に続いて、バッチです。

本日はpartialについて簡単に説明します。

partialは部分的に別のファイルを挿入することができます。

前回のlayoutに続いて、メニューやヘッダーフッターに使用する ことが多いと思います。

使い方は、まずpartialファイルを作ります。 ファイル名は少し特殊で、

_hoge.rhtm

というようにファイル名の最初にアンダースコアがつきます。

作ったpartialファイルを挿入するには、

<% render :partial => “hoge” %>

と書きます。

この部分にpartialファイルの中身が挿入されるわけです。

編集する機会が多かったりする部分は、partialでまとめておくと

一気に変更できますね。 

Railsのlayoutファイルについて

0

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

どうも。

新人のバッチです。

本日はRailsのlayoutファイルについて簡単に説明します。

RailsでlayoutとはHTMLでいうフレームみたいなもので、

同じデザインをいくつものファイルで共有する際に用います。

layoutファイルはviewフォルダ内のlayoutsフォルダに置きます。

使用するにはcontrollerの最初に、使用するlayoutファイルを記述します。

 layout ‘hoge’

また、一つのファイルのみに適用する場合は、

 layout ‘hoge’ :only => :アクション名

適用しないファイルを定める場合は、

 layout ‘hoge’ :except => :アクション名

で設定できます。

設定ができたらlayoutファイル内の、

 <%= yield %>

と書かれている部分に各アクションの内容が挿入されます。

linux locateコマンドについて

0

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

今日はlocateコマンドについて

簡単に説明します。 

ファイルを検索したいけど findじゃ時間がかかるし、

重たいって時に locateコマンドが役に立ちます。

locateコマンドでは

ファイル名やディレクトリ名から、

あらかじめ作成してあるデータベースから パスを高速検索することができます。

$ locate ファイル名(ディレクトリ名等)

で一瞬でパスが検索できます。

しかし、もしファイルを検索して

warning: locate: warning: database /var/lib/slocate/slocate.db’ is more than 8 days old

等とwarningがでてしまったら、

それはDBの更新が8日以上してないってことなのです。

その場合、DBの更新が必要です。

DBの更新のコマンドは

$updatedb

で対応できます。

たくさんファイルとかディレクトリとかじゃんじゃん探しちゃってください。

Rubyの例外処理

0

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

どーもメガネです。7回目です。今回はRubyの例外処理について説明します。
例外とはプログラムの実行中にエラーが発生すると例外が発生します。例外が発生するとプログラムの実行は中断し例外を探します。
要するに、何か問題が発生した場合に“エラー”ではなく、“エラーみたいですよ”と報告し、その報告を受け取って何かしらの処置をするのが「例外処理」です。で、ここでいう“報告”が「例外」で、“報告する行為”を“「例外」を投げる”といいます。

簡単に書くと

1,例外処理を使わない処理  
if a() == false  
    エラー処理        
end               
if b() == false   
    エラー処理
end
if c() == false
    エラー処理
end

2,例外処理を使った処理
begin
    a()
    b()
    c()
rescue
    エラー処理
end

これで例外処理が便利だということが分かったと思います。

ではさっそく書き方を説明します。

begin
    例外が起こる可能性のある処理
rescue
    例外が起こった場合の処理
end

またrescueのあとに変数名を指定することで例外オブジェクトを得ることができます。

begin
    例外が起こる可能性のある処理
rescue => 例外オブジェクトが代入される変数
    例外が起こった場合の処理
end

ほかの言語を知っている方であればtry~catchと使い方は変わりません。
以上です。

Rubyでどう書く?:RubyCocoa+Core Animationでお手軽アニメーション

0

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

KBMJがZDnetで連載している記事を紹介します。コメントなどありましたらそちらでお願いします。

Rubyでどう書く?:RubyCocoa+Core Animationでお手軽アニメーション 佐藤伸吾(KBMJ)

今回はRubyCocoaとMac OS XのフレームワークであるCore Animationを使って、お手軽にアニメーションを作成してみましょう。

問題

RubyCocoaは、Mac OS XのCocoaオブジェクトをRubyスクリプトからRubyオブジェクトとして扱うための、Ruby用ライブラリとフレームワークです。RubyCocoaを用いれば、RubyでCocoaアプリケーションを記述することができるのです。

 Core AnimationはMax OS Xのフレームワークで、その利点は手軽さにあります。普通にアニメーションプログラミングを行おうとすると、時間軸管理、非同期な描画スレッド、パフォーマンスの向上など、考慮すべき点があまりにも多すぎます。

 しかし、Core Animationを用いれば、面倒な部分はOSに任せて、自分の実現したいことに集中できるのです。

 今回はRubyCocoaとMac OS XのフレームワークであるCore Animationを使って、お手軽にアニメーションを作成してみましょう。

回答例

 AppController.rbを作成し、以下のように記述します。

require ‘osx/cocoa’
OSX.require_framework ‘QuartzCore’

class AppController < OSX::NSObject
ib_outlet :window
ib_outlet :view
ib_action :pressPosition
ib_action :pressRotation
ib_action :pressSepia
ib_action :pressBloom
ib_action :pressHole
ib_action :pressZoom
ib_action :pressHalftone

def awakeFromNib
bitmapImage = OSX::NSBitmapImageRep.imageRepWithContentsOfFile_(‘/Users/ssato/Pictures/ruby.png’)
image = bitmapImage.CGImage()

layer = OSX::CALayer.layer()
layer.contents = image
layer.frame = OSX::CGRectMake(0,0,995/4,996/4)

black=OSX::CGColorCreateGenericRGB(0,0, 0,1.0)
backgroundLayer=OSX::CALayer.layer()
backgroundLayer.backgroundColor=black

backgroundLayer.addSublayer_(layer)

@view.setLayer_(backgroundLayer)
@view.setWantsLayer_(true)
end
def pressPosition(sender)
animation = OSX::CABasicAnimation.animationWithKeyPath_(‘position’)
animation.duration = 1.0

layer = @view.layer.sublayers.objectAtIndex_(0)
position = layer.position
animation.fromValue = OSX::NSValue.valueWithPoint_(OSX::NSPointFromCGPoint(position))
position.x += 256;
position.y += 160;
animation.toValue = OSX::NSValue.valueWithPoint_(OSX::NSPointFromCGPoint(position))
animation.autoreverses = true
animation.repeatCount = 4
layer.addAnimation_forKey_(animation, ‘positionAnimation’)
end
def pressRotation(sender)
animation = OSX::CABasicAnimation.animationWithKeyPath_(‘transform’)
animation.duration = 0.5
animation.autoreverses = true
animation.repeatCount = 4
transform = OSX::CATransform3DIdentity
animation.fromValue = OSX::NSValue.valueWithCATransform3D(transform)
transform = OSX::CATransform3DMakeRotation(Math::PI, 0, 1.0, 0)
transform.m34 = 1.0 / -420.0
animation.toValue = OSX::NSValue.valueWithCATransform3D(transform)
layer = @view.layer.sublayers.objectAtIndex_(0)
layer.addAnimation_forKey_(animation, ‘transformAnimation’)
end
def pressSepia(sender)
filter = OSX::CIFilter.filterWithName_(‘CISepiaTone’)
filter.setDefaults()
layer = @view.layer.sublayers.objectAtIndex_(0)
layer.name = ‘sepiaFilter’
layer.setFilters_(OSX::NSArray.arrayWithObject_(filter))
end
def pressBloom(sender)
filter2 = OSX::CIFilter.filterWithName_(‘CIBloom’)
filter2.setDefaults
filter2.setValue_forKey_(OSX::NSNumber.numberWithFloat_(0.0), ‘inputIntensity’)
filter2.setValue_forKey_(OSX::NSNumber.numberWithFloat_(5.0), ‘inputRadius’)
filter2.setName_(‘bloomFilter’)

layer = @view.layer.sublayers.objectAtIndex_(0)
layer.setFilters_(OSX::NSArray.arrayWithObject_(filter2))

pluseAnimation = OSX::CABasicAnimation.animation
pluseAnimation.keyPath = ‘filters.bloomFilter.inputIntensity’
pluseAnimation.fromValue = OSX::NSNumber.numberWithFloat_(0.0)
pluseAnimation.toValue = OSX::NSNumber.numberWithFloat_(1.5*2)
pluseAnimation.duration = 1.0
pluseAnimation.repeatCount = 4
pluseAnimation.autoreverses = true
layer.addAnimation_forKey_(pluseAnimation, ‘bloom’)
end
def pressHole(sender)
filter = OSX::CIFilter.filterWithName_(‘CIHoleDistortion’)
filter.setDefaults()
layer = @view.layer.sublayers.objectAtIndex_(0)
layer.setFilters_(OSX::NSArray.arrayWithObject_(filter))
end
def pressZoom(sender)
filter = OSX::CIFilter.filterWithName_(‘CIZoomBlur’)
filter.setDefaults()
layer = @view.layer.sublayers.objectAtIndex_(0)
layer.setFilters_(OSX::NSArray.arrayWithObject_(filter))
end
def pressHalftone(sender)
filter = OSX::CIFilter.filterWithName_(‘CICMYKHalftone’)
filter.setDefaults()
layer = @view.layer.sublayers.objectAtIndex_(0)
layer.setFilters_(OSX::NSArray.arrayWithObject_(filter))
end
end

Interface Builderで画像1のようにコンポーネントを配置します。

画像1

画像1

NSObjectを追加して、ClassにAppcontrollerを指定します(画像2)。

画像2

画像2

OutletsとActionsのConnectionを画像3のように設定します。

画像3

画像3

実行結果

Positionボタンを押すと、画像が斜めに移動します(画像4)。

画像4

画像4

Rotationボタンを押すと画像が回転し、Sepiaをクリックすると画像がセピア色になります(画像5)。

画像5

画像5

同様に、Bloomは画像が光り輝き(画像6)、Holeは画像に穴が空きます(画像7)。Zoomボタンはズームエフェクト(画像8)で、Halftoneはハーフトーンフィルタです(画像9)。

画像6

画像6

画像7

画像7

画像9

画像8

画像9

画像9

解説

共通部分

Core Animationを使用するためにフレームワークを設定します。

OSX.require_framework ‘QuartzCore’

AppControllerからviewにアクセスするためのアウトレットを宣言します。

ib_outlet :view

ib_action :pressPosition
ib_action :pressRotation
ib_action :pressSepia
ib_action :pressBloom
ib_action :pressHole
ib_action :pressZoom
ib_action :pressHalftone

pressPosition部分

アクションを宣言し、ボタンが押された時の処理として登録できるようにします。

layerオブジェクトを作成します。Core Animationではレイヤーを基本単位としてアニメーションを実行します。

layer = OSX::CALayer.layer()

backgroundLayerの下にlayerをぶら下げます。

backgroundLayer=OSX::CALayer.layer()
backgroundLayer.addSublayer_(layer)

viewの描画内容としてbackgroundLayerを設定する。

@view.setLayer_(backgroundLayer)
@view.setWantsLayer_(true)

アニメーション化するレイヤプロパティのキーパスを指定して、CABasicAnimationのインスタンスを作成します。

animation = OSX::CABasicAnimation.animationWithKeyPath_(‘position’)

再生時間を1秒に設定します。

animation.duration = 1.0

アニメーションの開始位置を指定します。

animation.fromValue = OSX::NSValue.valueWithPoint_(OSX::NSPointFromCGPoint(position))

アニメーションの終了位置を指定します。

position.x += 256;
position.y += 160;
animation.toValue = OSX::NSValue.valueWithPoint_(OSX::NSPointFromCGPoint(position))

繰り返しアニメーションされるように設定します。

animation.autoreverses = true
animation.repeatCount = 4

layerにアニメーションを設定します。

layer.addAnimation_forKey_(animation, ‘positionAnimation’)

pressRotation部分

単位行列を取得します。

transform = OSX::CATransform3DIdentity

アニメーション開始時の変換行列を設定します。

animation.fromValue = OSX::NSValue.valueWithCATransform3D(transform)
animation.fromValue = OSX::NSValue.valueWithCATransform3D(transform)

回転行列を取得します。

transform = OSX::CATransform3DMakeRotation(Math::PI, 0, 1.0, 0)

 pressSepia部分

セピア調フィルタを作成する。

filter = OSX::CIFilter.filterWithName_(‘CISepiaTone’)

フィルタの入力値をデフォルト値に初期化する。

filter.setDefaults()

layerにfilterを設定する。

layer.setFilters_(OSX::NSArray.arrayWithObject_(filter))

pressBloom部分

Bloomフィルタを作成する。このフィルタはエッジをソフト化し、輝きを画像に適用します。

filter2 = OSX::CIFilter.filterWithName_(‘CIBloom’)

フィルタ出力とオリジナル画像の線形のブレンドを指定するスカラー値であるinputIntensityを0.0に設定する。

filter2.setValue_forKey_(OSX::NSNumber.numberWithFloat_(0.0), ‘inputIntensity’)

フィルタ処理の対象となる領域の半径を指定する値であるinputRadiusを5.0に設定する。

filter2.setValue_forKey_(OSX::NSNumber.numberWithFloat_(5.0), ‘inputRadius’)

フィルタに名前を設定する。この名前は後でアニメーション設定する時に必要となる。

filter2.setName_(‘bloomFilter’)

アニメーション化する属性を指定する。

pluseAnimation.keyPath = ‘filters.bloomFilter.inputIntensity’

inputIntensityの開始値と終了値を指定する。

pluseAnimation.fromValue = OSX::NSNumber.numberWithFloat_(0.0)
pluseAnimation.toValue = OSX::NSNumber.numberWithFloat_(1.5*2)

pressHole部分

穴歪みフィルタを作成する。

filter = OSX::CIFilter.filterWithName_(‘CIHoleDistortion’)

pressZoom部分

カメラをズームしたようなエフェクトをシミュレートするズームブラーを作成する。

filter = OSX::CIFilter.filterWithName_(‘CIZoomBlur’)

pressHalftone部分

ハーフトーン表現を行うフィルタを作成する。

filter = OSX::CIFilter.filterWithName_(‘CICMYKHalftone’)

最後に

駆け足で説明しましたが、いかがだったでしょうか?RubyCocoaを使うと、RubyからMac OS Xのリッチなフレームワークを使うことができます。

もっと良い方法があれば、コメントやbuilderブログなどで是非教えていただきたいと思います。

ntpをインストールする

0

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

こんにちはmugiです。

今回はCentOS5.2にntpをインストールします。 

ntpのインストール 

# yum -y install ntp

ntpの設定

# vi /etc/ntp.conf

ファイル内に「server *.*.*.*.*」のような記述があるかと思いますので、そこに同期させたいntpサーバを記述します。保存して閉じます。

時刻合わせ(ntpdは同期をとるサーバとあまりにも時刻がずれていると同期がとれないことがあるため) 

# ntpdate server *.*.*.*.*

起動

# /etc/init.d/ntpd start 

自動起動をONにする

# chkconfig ntpd on

サーバが起動したとき自動でntpdが起動するようになります。

同期がとれているか確認 

# ntpq -p

     remote           refid      st t when poll reach   delay   offset  jitter

==============================================================================

* server *.*.*.*.* .GPS.            *    *   *  ***    *.***  -*****.  **.***

 LOCAL(0)        .LOCL.          ** l   **   **  ***    *.***    *.***   *.***

同期したいサーバの頭に*がついていればOKです。

(表示されるまで設定して10分くらいかかるようです)

Rak(grepの検索結果を見やすくする方法)

0

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

ターミナルを用いている時は、検索にgrepをよく使うと思います。

その中で、私はgrepでは検索結果が見づらいと感じた事があります。

そんな時に見つけたのが、今回紹介するgrepの検索結果を見やすくする便利なRubyプラグイン(Rak)です。

RubyGemからRakプラグインをインストールするgem install rak

 これだけでRakを私用する事ができます。

使用例rak 検索文字列

結果は以下(rak def の場合)のようになります。 

rak の便利な使い方

rubyファイルのみ検索 

rak 検索文字列 –ruby

rubyファイル以外の検索

rak 検索文字列 –noruby

2つ以上のキーワード検索はパイプラインを用いれば良い

rak 検索文字列 | rak 検索文字列 

 ヘルプ

rak -h

ruby on railsのActionControllerにモジュールでbefore_filterを実装する方法

0

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

railsのコントローラーにmoduleをinlcudeする時、

moduleにbefore_filterを書いても、AplicationControllerを

継承していないのでエラーが出ます。

moduleで共通化してるわけですから、before_filterもmodule側で

済ませちゃいたいですよね。

 というわけでやり方です。

コントローラと違って、モジュールはActionControllerを継承してないことが

原因でエラーが出ているので、コントローラー側で定義してしまえばエラーが

出ません。

じゃあ、インクルード後に、インクルードしたコントローラ自身に定義する様

書いてあげましょう。

module NantokaModule
def self.included(base)
base.class_eval{
before_filter :filter_name
}
end
end
self.includedというメソッドは、moduleをincludeした時に呼び出されるメソッドです。
で、baseは、呼び出した側のクラスが入ってきますので、そちらに対して、class_evalを
実行します。
そうすると、クラスにbefore_filter~~が宣言されることになります。 

ruby on railsのActionControllerにモジュールでbefore_filterを実装する方法

0

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

railsのコントローラーにmoduleをinlcudeする時、

moduleにbefore_filterを書いても、AplicationControllerを

継承していないのでエラーが出ます。

moduleで共通化してるわけですから、before_filterもmodule側で

済ませちゃいたいですよね。

 というわけでやり方です。

コントローラと違って、モジュールはActionControllerを継承してないことが

原因でエラーが出ているので、コントローラー側で定義してしまえばエラーが

出ません。

じゃあ、インクルード後に、インクルードしたコントローラ自身に定義する様

書いてあげましょう。

module NantokaModule
def self.included(base)
base.class_eval{
before_filter :filter_name
}
end
end
self.includedというメソッドは、moduleをincludeした時に呼び出されるメソッドです。
で、baseは、呼び出した側のクラスが入ってきますので、そちらに対して、class_evalを
実行します。
そうすると、クラスにbefore_filter~~が宣言されることになります。 

カーネルの再構築

0

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

以前、誰かが「Linux2.6系の脆弱性でroot権限奪ってみた」
という記事を書いていましたが、最近CentOSをインストール
したところ、見事にこの脆弱性に引っかかったので、カーネル
を再構築するハメになりました。

というわけで、以下、カーネルの再構築について簡単に
手順を記したいと思います。

作業環境

OS:CentOS5
現行カーネルバージョン:2.6.18-8.el5

カーネルの再構築

1.以下のサイトからカーネルの最新ソースファイルを取得# wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.26.tar.bz2

2.root権限で/usr/srcへ移動。# su –
# cd /usr/src

3.1のファイルを展開し、シンボリックリンクを作成# tar jxvf linux-2.6.26.tar.bz2
# ln -s linux-2.6.26 linux
# ln -s linux-2.6.26 linux-2.6

4.configファイルをコピー# cp /usr/src/kernels/2.6.18-8.e15-x86_64/.config /usr/src/linux/.config

5.configファイルを更新する# cd linux
# make oldconfig

※ ここから先は対話形式で進む。デフォルト設定でよければ[Enter]で先へ進もう。
y = カーネルに静的に組み込まれる。
m = カーネルモジュールとして組み込まれる。(使用時のみ動作する)
n = 設定を無効化。
? = ヘルプを参照。

6.余計なファイルの削除# make clean

7.Kernel を構築します# make bzImage

8.モジュールのコンパイル# make modules

9.モジュールのインストール# make modules_install

10.全体のインストール# make install

11.動作確認
サーバ起動時に、方向キー上下でKernelを選択することが出来るので、
最新カーネルを選択し、問題がないかを確認する。
(失敗の場合は各種デバイスが認識されなかったりする)

ブートローダの設定

デフォルトで最新カーネルで起動するように設定。# vi /etc/grub.conf

「title CentOS (******)」がカーネルの情報で、
上から順に0,1…となる。
最新のカーネルは0(一番上)になっているので、
defaultの設定を0に変更すれば、最新バージョンで
起動する。default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.26)
          root (hd0,0)
          kernel /vmlinuz-2.6.26 ro root=LABEL=/
          initrd /initrd-2.6.26.img
title CentOS (2.6.18-8.el5)
          root (hd0,0)
          kernel /vmlinuz-2.6.18-8.el5 ro root=LABEL=/
          initrd /initrd-2.6.18-8.el5.img

postfixのaliasでメールを転送してみよう。

0

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

こんにちは。タジです。

今回はpostfixのaliasについてです。

エイリアスとは別名という意味で、登録しておくことによりファイルなどの実体を別の名前で参照することができます。
つまり、二つの別のアドレスを同じように扱うことができるわけですね。

主な使い方は転送の設定やメールボックスの共有などが一般的です。

 ここではpostfixのpostmasterのメールを自分の元に転送する場合を例にエイリアスの設定を紹介します。


まず、/etc/aliasesを編集してrootのaliasとして受信したいユーザを登録します。

以下のように追記しましょう。

root:       Taji


登録するのはユーザアカウントだけでなくメールアドレスでも可能です。

root:        Taji@kbmj.com


アカウントの複数登録も可能で、簡易なメーリングリストのようにも使うことができます。「,」を使って並べたアカウント名を区切ります。

root:        m-list

m-list:         red,brue,green,black(アカウント名)


エイリアスを変更した場合、その情報をデータベースに反映させなければなりません。
これはpostfixが設定を高速に読み込むために、直接読まずにデータベースから直接読もうとするためです。

作業は簡単で、以下のコマンドを入力するだけです。

newaliases

このコマンドでデータベースを初期化して設定を反映します。
ここまで設定したら一度postfixをリスタートします。

/etc/init.d/postfix restart

これでaliasの設定は終了です。簡単ですね。

 では転送の設定もしてしまいましょう。

エイリアスでpostfixのメールを転送したい場合、ユーザごとに転送の設定をする必要があります。


方法は簡単で、homeの直下(cdとだけ打てばホームに移動する)に.forwardを作成します。

su – Taji

cd

vim .forward


.forwardの中身は転送先のアドレスを書くだけです。

Taji@kbmj.com


転送元にメールを残しておきたい場合は¥[アカウント名]という記述を追加します。
Tajiというアカウントに残しておくなら・・・

¥[Taji] Taji@kbmj.com

と書きます。

これで転送の設定も終了です。

root宛てのメールが自分のメールボックスに届いていたら成功です。

それではまた次回。 

最近人気な記事