スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[CentOS]プロキシの設定

基本的なところですが忘れ去っていたので。

# /etc/profile.d/proxy.sh
export http_proxy=http://[プロキシサーバーのIP]:[ポート]/
export ftp_proxy=http://[プロキシサーバーのIP]:[ポート]/
export HTTP_PROXY=http://[プロキシサーバーのIP]:[ポート]/
export FTP_PROXY=http://[プロキシサーバーのIP]:[ポート]/

# /etc/profile.d/proxy.csh
setenv http_proxy http://[プロキシサーバーのIP]:[ポート]/
setenv ftp_proxy http://[プロキシサーバーのIP]:[ポート]/
setenv HTTP_PROXY http://[プロキシサーバーのIP]:[ポート]/
setenv FTP_PROXY http://[プロキシサーバーのIP]:[ポート]/


bashを使用しているため、proxy.shだけでも良さそうですが、念のため。
スポンサーサイト

[Javascript]雑多メモ

javascript、jqueryの雑多なメモです。

要素の生成
$('<div id="mypanel" style="background-color:#FFFFDD;">');
//以下のような書き方もできます
$(document.createElement("div"))
.attr("id", "mypanel").css("background-color", "#FFFFDD");

イベントの追加
$(document.createElement("a"))
.attr("id", "mylink")
.attr("href", "javascript:;")
.text("link")
.click(
function(){
//表示
$("#mytextarea").show();
//非表示
$("#mytextarea").hide();
//要素の表示非表示を反転
$("#mytextarea").toggle();
}
);

要素の配置
//mypanelの子要素として末尾へ追加
$("#mypanel").append(mytextarea);
mytextarea.appendTo("#mypanel"); //$("#mypanel")でも動作しました

//mypanelの子要素として先頭へ追加
$("#mypanel").prepend(mytextarea);
mytextarea.prependTo("#mypanel");

//mypanelと並列に後ろへ追加
$("#mypanel").after(mytextarea);
mytextarea.insertAfter("#mypanel");

//mypanelと並列に前へ追加
$("#mypanel").before(mytextarea);
mytextarea.insertBefore("#mypanel");

//テキストエリアの読み書き
var text = $("#mytextarea").val();
$("#mytextarea").val(text);

セレクタとマッチした要素をさらに下位へ走査したい場合
//tr要素を配列として取得
var trList = $("table tr");
//先頭のtr要素の下位のtd要素を配列として取得
var tdList = $("td", trList[0]);

その他
・IE6では、indexOfを配列に対して使用できませんでした。

[Ruby]net/httpでPOST

net/httpを使用して、シンプルなPOSTからファイルのアップロードまで試してみました。

まずはシンプルなパターン。
require "net/http"
require "uri"

uri = URI.parse("http://www.mysample.com/index.php")
Net::HTTP.start(uri.host, uri.port){|http|
#ヘッダー部
header = {
"user-agent" => "Ruby/#{RUBY_VERSION} MyHttpClient"
}
#ボディ部
body = "id=1&name=name"
#送信
response = http.post(uri.path, body, header)
}

次に、HTTPRequestのサブクラスであるNet::HTTP::Postを使用したパターン。
require "net/http"
require "uri"

uri = URI.parse("http://www.mysample.com/index.php")
Net::HTTP.start(uri.host, uri.port){|http|
#リクエストインスタンス生成
request = Net::HTTP::Post.new(uri.path)
#ヘッダー部
request["user-agent"] = "Ruby/#{RUBY_VERSION} MyHttpClient"
#ボディ部
#第二引数は省略可能
request.set_form_data({:id=>"1", :name=>"name"}, "&")
#送信
response = http.request(request)
}

最後にファイルアップロードのパターン。
(form enctype="multipart/form-data"のパターン)
require "net/http"
require "uri"

uri = URI.parse("http://www.mysample.com/index.php")
Net::HTTP.start(uri.host, uri.port){|http|

#リクエストインスタンス生成
request = Net::HTTP::Post.new(uri.path)

#ヘッダー部
request["user-agent"] = "Ruby/#{RUBY_VERSION} MyHttpClient"
request.set_content_type("multipart/form-data; boundary=myboundary")
#(以下でも可)
#request["content-type"] = "multipart/form-data; boundary=myboundary"

#ボディ部
#multipart/form-dataの仕様にあわせてbodyを作成
body = ""
body.concat("--myboundary\r\n")
body.concat("content-disposition: form-data; name=\"id\";\r\n")
body.concat("\r\n")
body.concat("1\r\n")

body.concat("--myboundary\r\n")
body.concat("content-disposition: form-data; name=\"file1\"; filename=\"sample.txt\"\r\n")
body.concat("\r\n")
File::open("sample.txt"){|f| body.concat(f.read + "\r\n") }

body.concat("--myboundary\r\n")
body.concat("content-disposition: form-data; name=\"file2\"; filename=\"sample.png\"\r\n")
body.concat("\r\n")
File::open("sample.png"){|f| body.concat(f.read + "\r\n") }

body.concat("--myboundary--\r\n")
request.body = body

#送信
response = http.request(request)
}

[Ruby]rexmlを使用してみる

rexmlを触った時のメモです。

サンプルのxmlファイル(address_book.xml)。
<?xml version='1.0' encoding='UTF-8'?>
<address_book>
<address type='a' id='1'>
<name>佐藤</name>
<zip>111-1111</zip>
<address>東京都</address>
</address>
<address type='b' id='2'>
<name>鈴木</name>
<zip>222-2222</zip>
<address>埼玉県</address>
</address>
<address type='a' id='3'>
<name>田中</name>
<zip>333-3333</zip>
<address>神奈川県</address>
</address>
</address_book>

以下はサンプルのコード。
require "rexml/document"

#xmlファイルを読み込む
doc = REXML::Document.new(File.new("address_book.xml"))

#xpathで指定した要素を配列として繰り返し処理
doc.elements.each("address_book/address[@type='b']"){|address|
#属性をまとめて取得して出力
#address.attribute("id")で特定の属性を取得することも可能
address.attributes.each{|k, v|
puts k + ":" + v
}
#子要素の名前を指定してテキストを出力
puts address.elements["name"].text
#適当に書き換える
address.elements["name"].text = "遠藤"
}

#ファイルへ出力
#doc.write(STDOUT)で標準出力
doc.write(File.new("address_book.xml", "w"))

[Ruby]テスト用クラス

テスト用クラスの書き方です。

class Calc
def self.add(a, b)
a + b
end
def self.subtract(a, b)
a - b
end
def self.smaller?(a, b)
a < b ? true : false
end
def self.larger?(a, b)
a > b ? true : false
end
end

require "runit/testcase"
require "runit/cui/testrunner"

class CalcTest < RUNIT::TestCase
def test1
assert_equal(10, Calc.add(3, 7), "add error")
assert_equal(10, Calc.subtract(15, 5), "subtract error")
end
def test2
assert(Calc.smaller?(2, 3), "smaller? error")
assert(Calc.larger?(3, 2), "larger? error")
end
end

RUNIT::CUI::TestRunner.run(CalcTest.suite)

面倒ですが活用していきたいものです。
プロフィール

jou4

Author:jou4
FC2ブログへようこそ!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。