アマノです。
以前中村さんが「ブラウザ三国志」というゲームをやっていたのが
面白そうだったので自分もちょっと手を出してみました。
このゲームは普通のゲームとは少し違い
ソフトをインストールしてPC内で遊ぶのではなく
インターネットをするブラウザ上で動きます。
以前同じようにブラウザゲームの「ドラゴンクルセイド」ってのが
面白そうでいつかはやってみようかなと思っていたので
同じようなゲームで新しい物って事で手を出してみました!
以前社内で(少しだけ)流行ったMicroSoftのAgeOfEmpiresを
ゲーム進行がゆったりした感じになったようなゲームです。
インターフェースがブラウザなので
インストール型のものより表現が制限されているのですが
うまくページ構成とJavaScriptを使用しており
下手なゲームよりよほど完成度は高いです。
基本無料で便利アイテムで課金するタイプのサービスで
そこもうまくバランスが取られており特に課金しなくても
十分楽しめますが、うまく課金への誘導のための
リンクが貼られていて勉強になります。
こういった類のゲームは大好きなので
いつか自分でも作ってみようかなと思ってますw
アマノです。
みなさんはパスワードの付け方についてどの程度意識していますか?
それなりにネットリテラシーのある人は単語を使用しないだとか
数字だけにしないだとか有名な言葉やタイトルを使用しないだとか
個人情報を使用しないだとかはよく耳にしていると思います。
しかし、書置きしておくのも×だし、かといって覚えられないものでは
忘れてしまったときに・・・
という事である程度妥協して付けている人は少なくないのでは?
自分はまぁ大丈夫だろうと考えている人も下記を読んでみてください。
まずは下のサイトの一覧をチェックしてみてください。
What’s My Pass?
この中に使用しているパスワードがあるアナタは
今すぐそのパスワードを変更してください。
上記のサイトはネットで公開されているものです。
つまりは誰でも知っているバスワードという事で
確実にこれらのパスワードはチェックされます。
この一覧に乗っていないから安心しているアナタ!
不正アクセスで上記のパスワードを使用するのは入門編です。
上記のパスワード一覧は、いってみれば不特定の相手に対して
試してみるパスワード郡だと思っていいと思います。
それに対して特定の人物のパスワードを試すのに
パスワード生成のためのツールというものが存在します。
すでにいくつもそういったツールは存在し、それらは
その人の名前や住所、生年月日等を入力すると
それらの並びを変えたり組み合わせたりして数千~数十万の
パスワード郡を一気に作成してしまいます。
例としてCUPPというツールがあるので調べてみてください。
こんな感じで今では簡単なパスワードならばすぐに
クラックできてしまう危険性があるのが分かってもらえたでしょうか?
ただ、だからといって常に難しいパスワードを設定するのも大変です。
そういった場合はパスワードが必要なものの重要度を考えてください。
例えば、メーリングリスト用などは比較的簡単なパスワード、
PCや重要なファイル等はパスワード作成ツール等を使った
解析されずらいパスワード。といった使い分けをするといいでしょう。
今までパスワードがばれて問題が起こった!って人は
ほとんどいないとは思いますが、常にその危険性がある事を
忘れないように・・・
アマノです。
先日自分の私用PCのHDDが壊れました;;
PCを起動してみるとOSが立ち上がった後
音はするけどディスプレイに出力されない・・・・
結局OSを再インストールしてみる事に。
が、フォーマット中にブルーバックのエラー;;
もう1度試してみても同じところでエラー。
どうやらHDDの一部のセクタが
エラーを起こすようになってしまったようです。
でも、一部だけならって事でエラーが起こる場所を避けて
パーティションを区切り直してOSインストールは完了!
OS用のパーティションは分けるようにしていたので
同じHDD内の別パーティションのデータを
安全なHDDに移してひとまず安心・・・
とまぁここまで長い前振りでw
後日、HDDを買いにいってきました。
壊れたHDDを買った頃は160Gで8千円とか
それでも安い!って時代でした。
でも今のHDDの価格を見てみると1Tで6800円・・・
買っちゃいましたw
でもコレHDDが壊れると1Tのデータが飛んでしまうって考えると怖いですね・・・
アマノです。
セッションを特殊な方法で保存したい場合に呼び出す
session_set_save_handler() 関数ですが、
この関数を使用している場合にリダイレクトを使用すると
正常にセッションを処理してくれない場合があるようです・・・
通常はリダイレクトした場合、リダイレクト元のページで
open
read
write
close
で処理され次にリダイレクト先のページで同じように処理されますが
どういうわけか
元ページのopen,read
先ページのopen,read
元ページのwrite,close
先ページのwrite,close
という順で処理される事があるようです。
こうなると前ページでのセッション変更が読み込めず
セッションの中身をうまく渡すことができなくなります。
この問題が起きるようであればリダイレクトしている直前に
session_write_close();
を入れると、その時点でwrite,closeを呼び出してくれますので
同じような問題が起きている場合は参考にしてみてください。
ASENSの毒味担当天野です。
時々お昼ご飯においしい店は無いか食べ歩きしていて
いくつかおいしい店を見つけているので一度まとめてみます。
お昼時にASENSに来て食事をどうしようか迷った事がある人は参考にどうぞ
「陳麻家 平野町店」
ASENSを出て右手の信号を右に進むとすぐ右手にあります。
坦々麺がオススメ。麺は細麺で辛いけど後を引かないアッサリ系です。
陳麻飯はご飯に麻婆豆腐をかけたような感じ
「福神」
ASENSを出て右手の信号を左にすすんで
高速を過ぎてすぐの十字路を左へ70mくらいすすむと左手にあります。
カレー屋です。ちょっとせまいけどハヤシライスは逸品。
「定食屋」
ASENSを出て右手の信号を左に進んでもらって
高速をすぎた次のブロックの右手の地下にあります。
メニューが結構充実。チキンの照り焼き定食がオススメ
「洋食屋」
ASENSを出て右手の信号をそのまま真直ぐ進むと左手にあります
店のスペースもそこそこ広くてゆっくりできる雰囲気。どのメニューでもハズレ無しな感じ
「天洋」
ASENSを出て右手の信号を左にすすんで
高速を過ぎてすぐの十字路を左へ曲がるとすぐ右手にあります。
こってり系のラーメン屋。ごはんセット頼むとごはんがおかわり自由なのでがっつりいきたい時に
前回の記事「オブジェクト指向型のプログラムの考え方(2)」
前回でクラスのfunction部分の作り方は何となくイメージしてもらえるようになったと思いますので、今回はクラスの変数やコンストラクタの使い方について書いていきます。
オブジェクト指向のプログラムを書く場合はこの変数の使い方にも注意しなくてはいけません。
クラスの変数に設定していいのは基本的に扱う対象のパラメータ関連のみと考えてください。
つまり、今回の場合では扱う対象がwordpress(以下WP)になるのでWP関連のパラメータや初期値で必要なものが対象になります。
今回はWPに接続するためにXMLRPCを使用しているのでWPに接続するためのオブジェクトが生成されます。この生成されたオブジェクトや、このオブジェクトを使用してWPにアクセスする場合にIDとPASSが必要になりますので、これらをクラスの変数として持ちます。
また、このように扱う対象に対して初期値が存在する場合は、それらをコンストラクタを使用して設定するようにします。
変数の悪い用法としてよく見かけるのですが、クラスの関数同士の値の受け渡しをしたいためにクラス変数を使用する人がいます。
前回書いたプログラムではsendXmlの時に$messageを変数として持たせておけば引数で渡さなくてもよくなるのでそのような使い方をする人もいますが、こういった使い方は極力やめて閉じた関数を書くようにしてください。
と、私はこんな感じでオブジェクト指向のプログラムを作成しています。
初めのうちは何となく形にはなっていても、他のシステムで再利用したりできるような物にはなっていないと思います。(私も手探りで作った部分や急いでいるときはこうなります。)
それでも多少読みやすく保守性もあがっているはずですし、そのソースを他のシステムで利用しようと改良したりしていくうちに綺麗な形になっていくと思います。
今回の例で「PHPからWPを操作する」をクラス化したプログラムを作成しましたが、製作途中のものでもよければ要望があれば公開もしたいと思っているので興味のある人はコメントしてやってください。
前回の記事「オブジェクト指向型のプログラムの考え方(1)」
さて、今回の例は「PHPからwordpress(以後WP)に記事を投稿するシステム」になります。
私がオブジェクト指向プログラミングを書くときはまず外枠を作って、あとは後ろから逆向きに考えていきます。っと言っても分からないので例題を作成しながら手順を説明していきましょう。
まず外枠ですが、これは今回作るプログラムがいったい何をする物なのか?という一番大きな区切りです。
「WPに記事を投稿する」場合の外枠を考えてみましょう。
この機能だけであれば「WPに記事を投稿する」というのが外枠になりますが、それでは寂しいので汎用性を持たせておいて新規投稿だけじゃなくてWP関連全てを扱うというのを外枠に設定しましょう。
それをそのままプログラムに書けば class wordpress () { } が作れます。
外枠ができたので、次は何をすればいいのかを分解して考えていきます。
例外はあるでしょうが基本的に動詞ごとに機能を分解していきます。
今回必要なのは「WPに記事を投稿する」という機能ですので、この機能を持つ関数を名前だけでいいので作ってしまいます。これで
class wordpress {
function sendWpNewPost( ) { }
}
までができました。
この次も後ろから考えます。つまりこの関数が何をするかは気にしないで最終的に何が出力されるのか?を考えちゃいます。
この関数はWPに記事を投稿するという目的の関数ですので、とりあえずは投稿が成功したかどうかが分かればいいですね。って事で return に true か false が出力される事まで決まりました。
では、次は何をすれば先ほどの出力結果を得られるのかを考えます。
出力結果はWPに投稿が成功したかどうかなのでWPにどうやって投稿すればいいかを探すと、WPにはXMLを受け取って色々と操作ができるXMLRPC APIを持っているらしいので今回はそれを使って投稿します。
WPのXMLRPC APIについては今回は詳しくは説明しませんが、新規投稿するという意味のXMLを作成してそれを送信する事でWP側から結果をXMLで受け取る事ができるようです。
という事でここで新しくやることが増えました。これを分解して考えると「新規投稿するというXMLを作成する」「XMLを送信する」「結果を返す」の3つに分けられます。このまま3つに分けてもいいのですが、少し考えてみると「新規投稿するというXMLを作成する」というのは自分自身の関数sendWpNewPostと1:1で対応する機能なのでそのままsendWpNewPost上に書いてしまいます。また、同じように「XMLを送信する」と「結果を返す」については1:1に対応していますね。そういう場合もくっつけてしまって1つの関数 function sendXml( ) { } を作成します。
sendXmlも同じように下から考えて作っていきます、出力はXMLを送信した時に返ってきた結果で、その結果を得るには~を考えると最終的には送信するXMLが必要だとわかります。その関数内で必要な情報がある場合はそれを関数の引数に入れて
// XMLの送信
function sendXml($message) {
$response = $this->client->send($message);
return $response;
}
ができます。基本機能としてはこれでいいのですが、このままでは結果がXMLだったりエラーの処理が入っていないのでそれらについては用途によって追加します。
これでXMLを渡せば結果が返ってきますので、その結果を見てtrueかfalseを返す事ができるようになりました。
次は送信するためのXMLを作成するには~・・・と下方からどんどん何が必要なのかを考えながら最終的に必要な情報がでてくるまで上に上にプログラムを足していく形で作成し、外部から必要な情報を引数にいれていきます。(このとき、クラスの中ではGLOBALやDBを直接参照したりという事は基本的にしないようにしましょう。それらの情報が欲しい場合は引数でもらってくるようにしてください。)
これでfunction部分は何となく作れるようになりましたかね?
長くなってきたので次回はコンストラクタとオブジェクト変数の使い方について書いていきます
最近はとりあえず動くプログラムなら書ける人ってのは結構いると思いますがソコから先へ進むのは中々大変ですよね。
この記事を足がかりにしてステップアップできた人とかいればいいなと思います。
オブジェクト指向でプログラムを書くと何がいいかって言うと
- オブジェクト毎に分かれているので保守性に優れテスト、デバッグが楽になる。
- 他のプロジェクトに流用したり他の人が簡単に再使用できる。
- なにより1つ上のレベルみたいで書けるとかっこいい
でも実際はオブジェクト指向プログラミングと言ってもそんなに大げさな物ではありません。
プログラムを書く前にちょっと整理するだけでソレっぽくなります。
私流の方法ですが、最近作成した「PHPからwordpressに記事を投稿するシステム」を例にして次から説明していきます。
最近のコメント