<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>ねくすとれんＳＥ徒然書</title>
    <link rel="alternate" type="text/html" href="http://www.nextren.com/secafe/" />
    <link rel="self" type="application/atom+xml" href="http://www.nextren.com/secafe/atom.xml" />
   <id>tag:www.nextren.com,2011:/secafe/11</id>
    <link rel="service.post" type="application/atom+xml" href="http://www.nextren.com/mt3/mt-atom.cgi/weblog/blog_id=11" title="ねくすとれんＳＥ徒然書" />
    <updated>2010-05-25T13:01:09Z</updated>
    
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type  3.2-ja-2</generator>
 
<entry>
    <title>JavaScript の読み込みによって異なるサーバのスクリプトを実行する方法</title>
    <link rel="alternate" type="text/html" href="http://www.nextren.com/secafe/2010/05/javascript.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.nextren.com/mt3/mt-atom.cgi/weblog/blog_id=11/entry_id=315" title="JavaScript の読み込みによって異なるサーバのスクリプトを実行する方法" />
    <id>tag:www.nextren.com,2010:/secafe//11.315</id>
    
    <published>2010-05-25T12:47:39Z</published>
    <updated>2010-05-25T13:01:09Z</updated>
    
    <summary>JavaScript の読み込みによって異なるサーバのスクリプトを実行する方法で...</summary>
    <author>
        <name>レイ・オカモト</name>
        <uri>http://www.nextren.com/okamoto/</uri>
    </author>
            <category term="JavaScript + α" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.nextren.com/secafe/">
        <![CDATA[JavaScript の読み込みによって異なるサーバのスクリプトを実行する方法です。

下記英語サイトが非常に参考になりました。

<a href="http://www.malbecmedia.com/blog/development/cross-domain-gif-request-with-javascript/" target="_blank">Cross-domain gif request with javascript</a>

GoogleAnalytics の手法と同じとのことなので間違いないでしょう。

上記ページより私が行いたかった方法の方が簡潔だったので書き直します。コールバックの部分とかも省いているのでレベルを下げていると考えていただいて構いません。

まず、サーバ上の JavaScript を読み込ませます。

<style type="text/css">div.script { background-color: #FFFFC0; padding: 3px; border: 1px solid #77AAFF; } //--></style>

<div class="script">
&lt;script src="http://domain.jp/cross.js" type="text/javascript">&lt;/script>
</div>

crossRequestSender.js は簡潔に下記のようになります。

<div class="script">
var img = new Image();<br />
img.src="http://domain.jp/cross.gif";
</div>

※ js と gif が異なるサーバ、と言う意味ではなく、JS読み込みタグを埋め込んでいるHTMLファイルが異なるサーバに配置されていることを想定しています。

で、http://domain.jp/ に下記のように mod_rewrite を設定した .htaccess ファイルを配置します。

<div class="script">
RewriteEngine on<br />
RewriteRule ^cross.gif$ /cross.php [L]
</div>

以上で cross.php が実行されます。同じ cross と言う名前を利用しましたが、js ⇒ gif ⇒ php とバトンが引き継がれていったことを確認できるかと思います。
]]>
        
    </content>
</entry>
<entry>
    <title>更新日時と作成日時</title>
    <link rel="alternate" type="text/html" href="http://www.nextren.com/secafe/2010/05/post_1.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.nextren.com/mt3/mt-atom.cgi/weblog/blog_id=11/entry_id=302" title="更新日時と作成日時" />
    <id>tag:www.nextren.com,2010:/secafe//11.302</id>
    
    <published>2010-05-07T10:51:28Z</published>
    <updated>2010-05-07T11:09:18Z</updated>
    
    <summary>MySQL での更新日時（`updated_at`）と作成日時（`created...</summary>
    <author>
        <name>レイ・オカモト</name>
        <uri>http://www.nextren.com/okamoto/</uri>
    </author>
            <category term="MySQL" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.nextren.com/secafe/">
        MySQL での更新日時（`updated_at`）と作成日時（`created_at`）の型をどうしようか迷ってしまい、ちとはまってしまった。。。

私の結論としては下記がベストのように思っている。

まず、テーブル作成は下記のようにする。

CREATE TABLE テーブル名 (
　・・・略・・・
  `updated_at` timestamp DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `created_at` datetime NOT NULL
);

で、データを作成する際は

INSERT INTO  テーブル名 (
　・・・略・・・
`created_at`
)
VALUES (
　・・・略・・・
NOW( )
);

とし、`updated_at`は明示しない。

また、データを更新する際は

UPDATE  テーブル名
SET
・・・略・・・
WHERE
・・・略・・・;

とし、同じく`updated_at`は明示しない。

するとデータ作成時は `created_at`にセットされる NOW( ) と `updated_at` に暗黙的にセットされる CURRENT_TIMESTAMP が同じ値を挿入することにはなるが、以降、データ更新時には`updated_at` は明示しなくても自動的に CURRENT_TIMESTAMP で更新し続けてくれる。

細かくてどうでも良さそうで、今までは両方 datetime にして更新日時には NOW() をセットしていたんだが、この際ケジメをつけようと思ってこだわってみた結果、こう言う結論に私は至ったのである。

異論等御意見歓迎。
        
    </content>
</entry>
<entry>
    <title>ユーザのグループ変更とパーミッションの設定</title>
    <link rel="alternate" type="text/html" href="http://www.nextren.com/secafe/2010/05/post.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.nextren.com/mt3/mt-atom.cgi/weblog/blog_id=11/entry_id=301" title="ユーザのグループ変更とパーミッションの設定" />
    <id>tag:www.nextren.com,2010:/secafe//11.301</id>
    
    <published>2010-05-07T02:14:55Z</published>
    <updated>2010-05-07T04:25:31Z</updated>
    
    <summary>下記が Linux でユーザのグループを変更する場合のコマンド。 sudo /u...</summary>
    <author>
        <name>レイ・オカモト</name>
        <uri>http://www.nextren.com/okamoto/</uri>
    </author>
            <category term="Linux (Unix)" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.nextren.com/secafe/">
        下記が Linux でユーザのグループを変更する場合のコマンド。

sudo /usr/sbin/usermod -g 変更先グループ名 変更対象のユーザ名

ちなみに Linux 操作は root では行わず（SSH でも root ログイン禁止、su でもログイン出来ないようにする）なるべく sudo を使って管理者権限系の操作は行うようにします。 そうすることによって誰が操作を行ったか管理できるようになります。

後、上記コマンドもフルパスでなく、登録しておけばいいですね。alias だと自分のみになりますが、全てのユーザ用に登録する方法は覚えていません。とりあえずは良しとし、どなたか補足いただければ幸いです。

会社用のグループを作っておけば複数のユーザで同じサービスを管理できますが、その際のパーミッションはWEB システムの場合は 664 が良さそうです。

自分と自グループには読み込みと書き込み権限を、それ以外のユーザは読み込みのみの権限を付与しています。

パーミッションは用途によってもっと適切な設定があるかもしれません。
        
    </content>
</entry>
<entry>
    <title>Cassandraを使ってみる</title>
    <link rel="alternate" type="text/html" href="http://www.nextren.com/secafe/2010/04/cassandra_1.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.nextren.com/mt3/mt-atom.cgi/weblog/blog_id=11/entry_id=300" title="Cassandraを使ってみる" />
    <id>tag:www.nextren.com,2010:/secafe//11.300</id>
    
    <published>2010-04-22T12:12:50Z</published>
    <updated>2010-04-22T13:18:28Z</updated>
    
    <summary>前回の記事でCassandraのインストールが終了したので、READMEに載って...</summary>
    <author>
        <name>ikezawa</name>
        <uri>http://www.nextren.com/secafe/</uri>
    </author>
            <category term="Cassandra" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.nextren.com/secafe/">
        <![CDATA[<p>前回の記事でCassandraのインストールが終了したので、READMEに載っているサンプルを使って実際に動かしてみる。</p>
<ol>
	<li>
		<p>コマンドプロンプトでCassandraサーバーを起動する。</p>
		<div id="server_start" style="background-color:#000000; color:#ffffff;padding:5px;">
			<code>
				C: > cassandra -f<br />
				&nbsp;&nbsp;INFO 21:28:42,151 Auto DiskAccessMode determined to be standard<br />
				&nbsp;&nbsp;INFO 21:28:46,540 Sampling index for C:\var\lib\cassandra\data\system\LocationInfo-1-Data.db<br />
				&nbsp;&nbsp;INFO 21:28:47,361 Replaying \var\lib\cassandra\commitlog\CommitLog-1271852302580.log<br />
				&nbsp;&nbsp;INFO 21:28:47,472 Log replay complete<br />
				&nbsp;&nbsp;INFO 21:28:47,862 Saved Token found: 25683936072561874319604724012100455105<br />
				&nbsp;&nbsp;INFO 21:28:47,885 Saved ClusterName found: Test Cluster<br />
				&nbsp;&nbsp;INFO 21:28:47,922 Creating new commitlog segment /var/lib/cassandra/commitlog\CommitLog-1271939327922.log<br />
				&nbsp;&nbsp;INFO 21:28:48,151 Starting up server gossip<br />
				&nbsp;&nbsp;INFO 21:28:48,473 Binding thrift service to localhost/127.0.0.1:9160<br />
				&nbsp;&nbsp;INFO 21:28:48,499 Cassandra starting up...</br>
			</code>
		</div>
	</li>
	<li>
		<p>もう１つのコマンドプロンプトでクライアントを起動する。</p>
		<div id="client_start" style="background-color:#000000; color:#ffffff;padding:5px;">
			<code>
				C: > cassandra-cli<br />
				&nbsp;&nbsp;Starting Cassandra Client<br />	
				&nbsp;&nbsp;Welcome to cassandra CLI.<br />
				<br />
				&nbsp;&nbsp;Type 'help' or '?' for help. Type 'quit' or 'exit' to quit.<br />
				&nbsp;&nbsp;cassandra><br />
			</code>
		</div>
	</li>
	<li>
		<p>サーバーに接続するために<code>connect</code>コマンドを入力します。ホスト名とポート番号は設定をいじっていなければ<var>localhost/9160</var>になります。<br />以下のように表示されていれば接続は完了しています。</p>
		<div id="connect"  style="background-color:#000000; color:#ffffff;padding:5px;">
			<code>
				cassandra > connect localhost/9160<br />
				Connected to: "Test Cluster" on localhost/9160
			</code>
		</div>
	</li>
	<li>
		<p>接続が完了したら、<var>set Keyspace1.Standard2['jsmith']['first'] = 'John'</var>を入力し、実行します。<br />（コマンドの詳しい解説は次回以降に掲載します。）</p>
	</li>
	<li>
		<p>実行すると以下のように表示され、データの投入が正常に完了したことがわかります。</p>
		<div id="inserted" style="background-color:#000000; color:#ffffff;padding:5px;">
			<code>
				cassandra > set Keyspace1.Standard2['jsmith']['first'] = 'John'<br />
				Value inserted.
			</code>
		</div>
	</li>
	<li><p>次に投入したデータを取得してみます。<var>get Keyspace1.Standard2['jsmith']</var>と入力し、実行します。</p></li>
	<li>
		<p>以下のように実行結果が表示され、データが登録されていることと、データを取得できていることを確認できると思います。</p>
		<div id="get_record" style="background-color:#000000; color:#ffffff;padding:5px;">
			<code>
				cassandra > get Keyspace1.Standard2['jsmith']<br />
				=> (column=first, value=John, timestamp=1271940972780000)<br />
				Returned 1 results.
			</code>
		</div>
	</li>
</ol>
<p>以上がREADMEに載っているサンプルです。</p>
<p>コマンドやCassandraの仕組みなど、まだまだ調べてみないとわからない点が多いので、継続して調査していきます。</p>]]>
        
    </content>
</entry>
<entry>
    <title>CassandraをWindowsにインストール</title>
    <link rel="alternate" type="text/html" href="http://www.nextren.com/secafe/2010/04/cassandrawindows_1.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.nextren.com/mt3/mt-atom.cgi/weblog/blog_id=11/entry_id=298" title="CassandraをWindowsにインストール" />
    <id>tag:www.nextren.com,2010:/secafe//11.298</id>
    
    <published>2010-04-21T12:21:01Z</published>
    <updated>2010-04-21T14:51:18Z</updated>
    
    <summary>CassandraをWindowsにインストールした時のメモです。 ※&amp;nbsp...</summary>
    <author>
        <name>ikezawa</name>
        <uri>http://www.nextren.com/secafe/</uri>
    </author>
            <category term="Cassandra" />
    
    <content type="html" xml:lang="ja" xml:base="http://www.nextren.com/secafe/">
        <![CDATA[<p>CassandraをWindowsにインストールした時のメモです。</p>
<p style="color:#FF0000">※&nbsp;執筆時のCassandra(0.6.1)ではJavaSDK <strong>1.6 以上</strong>のパスがJAVA_HOMEに定義されている必要があります。</p> 

<div id="description">
<p>以下がインストール手順になります。</p>
<ol>
<li>Cassandraの<a name="cassandra_home" href="http://cassandra.apache.org/">ダウンロードページ</a>よりダウンロードする。</li>
<li>ダウンロードしたtar.gzファイルを任意の場所へ展開する。</li>
<li>環境変数に<var>CASSANDRA_HOME</var>を新規で追加し、cassandraを展開したディレクトリにパスを通す。</li>
<li>環境変数にすでに存在している<var>Path</var>に<var>%CASSANDRA_HOME%\bin</var>を追加する。</li>
<li>コマンドプロンプトに<code>cassandra</code>と入力し実行するとサーバーが起動できます。</li>
</ol>
</div>
<br />

<p><strong>■&nbsp;サーバーの実行結果</strong></p>
<div id="start_cassandra_output" style="background-color:#000000; color:#ffffff;">
<code>
<br />
C:\ > cassandra<br />
Starting Cassandra Server<br/>
Listening for transport dt_socket at address: 8888<br />
&nbsp;&nbsp;INFO 21:18:20,224 Auto DiskAccessMode determined to be standard<br />
&nbsp;&nbsp;INFO 21:18:22,471 Saved Token not found. Using 25683936072561874319604724012100455105<br />
&nbsp;&nbsp;INFO 21:18:22,471 Saved ClusterName not found. Using Test Cluster<br />
&nbsp;&nbsp;INFO 21:18:22,580 Creating new commitlog segment /var/lib/cassandra/commitlog\CommitLog-1271852302580.log<br />
&nbsp;&nbsp;INFO 21:18:22,892 Starting up server gossip<br />
&nbsp;&nbsp;INFO 21:18:23,594 Binding thrift service to localhost/127.0.0.1:9160<br />
&nbsp;&nbsp;INFO 21:18:23,625 Cassandra starting up...</br>
&nbsp;&nbsp;INFO 21:42:23,089 GC for ParNew: 563 ms, 16260912 reclaimed leaving 12759184 used; max is 1174208512<br />
<br />
</code>
</div>
<br />

<p>Cassandraの操作はクライアントより行います。</p>
<p>サーバーのコマンドプロンプトは起動したままで、もう１つコマンドプロンプトを起動し、<code>cassandra-cli</code>と入力し、実行します。</p>
<p>実行すると以下のように表示され、Cassandraの操作ができるようになります。</p>
<br />

<p><strong>■&nbsp;クライアントの実行結果</strong></p>
<div id="cassandra_cli" style="background-color:#000000; color:#ffffff;">
<code>
<br />
C:\ > cassandra-cli<br />
Starting Cassandra Client<br />
Welcome to cassandra CLI.<br />
<br />
Type 'help' or '?' for help. Type 'quit' or 'exit' to quit.<br />
cassandra ><br />
<br />
</code>
</div>
<br />

<p>以上でCassandraをWindows上で使う準備ができました。</p>]]>
        
    </content>
</entry>

</feed> 


