寒天培地で育てられた水草購入
熱帯魚の趣味についても書いてみようと思います。
より詳しく言うと、アクアリウムで、水槽の中に水草を植えて楽しんでます。
もちろん、おさかなさんも好きなので、一緒に入れて育ててます。
熱帯魚がより生き生きと生活している様子が楽しいのです。
先日、東大阪のアクアティラーズさんで、水草を購入しました。
アクアテイラーズ Aqua Tailors 東大阪のアクアリウムプロショップ 淡水魚・水草・シュリンプ・海水魚・無脊椎販売
うちの水槽は 60cm とごくノーマルな大きさの水槽です。
しかも、現在 結構大きめの植物も植わっている状況…。
どんどん成長しちゃう様な、元気な水草を植えるわけにもいきません。
今回、小さくてこじんまりした、かわいらしい水草を見つけて、3つ購入してみました。
- クリプトコリネ・ルーケンス(写真:左奥)
小型のクリプトでうちの狭い水槽にもレイアウトしやすそう。
しかも、やや日陰でも育てやすいクリプト、というポップも張ってあり、すでに水草が植えてある水槽にはピッタリなんじゃないかと。
でも以前、クリプト買ったとき、予想以上に伸びた記憶があり、後景として植えてみました。
- ヒドロコティレ・ミニ(写真:左手前)
小型のヒドロコティレで、前景にも中径にも使えるみたい。
姿かたちは「つた」風で、葉っぱがすごく小さいのがかわいらしい。
うちの水槽に相性がよさそうなので買ってみました。
- ミリオフィラム・マットグランセ(写真:中央奥)
これは和の風情がある水草なので、前からほしかったんで、思わず買っちゃいました。
でも、これは、有茎層と言って茎がすっと伸びるタイプの水草。
もりもり育つか、貧弱でへなへなになるか、心配しております。
光景で、できる限り光が当たりそうなところにそっと植えました。
いずれも、「ADA水草のもり」シリーズです。
今回、初めて、寒天培地で滅菌状態で作成された苗を買いました。
寒天なんてそのうち溶けちゃうでしょ、と思い培地ごと植え付けようとしましたが、、
寒天培地って水より軽いのでうまく植えることができません。
そこで、寒天培地を割って除去しました。
中には、培地に根が張り、苗の株同士を分離できないため、ほとんど培地を除去できなかった苗もありましたが、
その場合、そのまま植え付けて、上から少し土をかけて浮かないようにしました。
元気に育ってほしいもんです~。
PHPビルトインサーバーにIPアドレス指定でアクセスするには?
問題
PHPインストール後、ビルトインサーバを立ち上げてみた。
PHP: ビルトインウェブサーバー - Manual
マニュアルに従って立ち上げる。
すると、サーバー本体から
curl http://localhost:8000/src/test.php
などでアクセスできるが、家庭内のPCからサーバーのIPを指定した場合、まったくアクセスできない。
「アドラーに学ぶ部下育成の心理学」を読んで
Amazon.co.jp: アドラーに学ぶ部下育成の心理学: 小倉 広: 本
私はあまり部下を叱るのは意味がないと思っていました。ただ同時に、失敗をフォローするだけで終わらせてしまっていいのか、成功したときにほめるだけだと何かが足りないのはないか、とも感じていました。
この本で、その必要なピースの一つが見つかったように思います。それは「勇気づけ」。(成功/失敗関係なく、)部下の「成長」のポイントを見つけてやることが、何よりの勇気づけになるようです。
たぶん正しく勇気づけてあげるには、普段から部下の事をよく見ておく必要があります。今その部下には何が足りないのか、次はどのように成長すればよいのか考えてやる、一定の努力が必要となります。ただ、難しく考える必要はなく、部下が成長しようとしているのを前提として構わない、のがポイントだと思いました。
また、「教えるな」という点にも納得です。私自身、「思ったとおりにやれ」と言われた時が一番やる気が出た経験があります。その時の事を思い返してみると、ポイントは「自分で決めていいんだ」と気がつけた事にあったようです。その時、自然に「自分はどうしたいか」という考えが芽生えるようになりました。それは決して「放置」ではなかったです。
つまり「相手に任せる」という事、相手を信じる事です。信じないより、信じたほうが、自分の人生は豊かになるかもしれません。それに信じてもらったほうが、相手は頑張るでしょうしね。お互いハッピーでしょう。
成功したときはいいですけど、失敗したとき、自分なら部下にどう接するべきなのか、という大きな課題もありますね。この本では約束に対して成果が上がったかを、感情抜きで論理的に判断するのが、采配として正しいとしています。むしろ、はっきりと采配しないと、約束どおりでなくてよかったんだという誤解を生むので、という教育上の配慮を大切にしているのですね。これも、処遇が悪くなってがっかりしても、自分が原因なんだと跳ね返して頑張るのは部下自身、という相手を信じるスタンスに基づいています。
また、そのスタンスをはっきりと伝える必要があるな、と思いました。失敗は成功のもと、という考えは私も好きです。ただそれを旗印にしただけでは腐ってしまう時もあると思います。その時こそ勇気づけてやる必要がありそうです。
私としては成果判断の根本となる目標設定が大事なんだろうな、とも思いました。部下が目標を自分のものとする、そこがスタートなのではないかと。
また、失敗時の処遇も、論理的に意味のある内容にするべきとあり、大事だと思いました。関係のない適当な処置を施すと、「罰」にしかならないのですね。
部下は自立して考える、という事を逆にとらえれば、部下の感情はコントロールできない、ということになります。だから、蔭口や反論があっても無理に解消させない。今までそればかり気にしてくじけそうになっていましたが、気にしても仕方がない。むしろ、自分の感情をコントロールしなさい、と。
確かに、上司なのに逆切れしてたらいけませんよね。簡単じゃないですが、出来る限り頑張ろうかとは思いました。
MySQLストアドプロシージャのサンプル1
ストアドを久々に作ったら色々と忘れてました…。
サンプルに解説を付けておけば判り易く覚えられそう。
#既存プロシージャがあれば DROP してから CREATE する事。 #DROP は DELEMITER 外に書く事。 DROP PROCEDURE IF EXISTS memberupdate; DELIMITER // CREATE PROCEDURE memberupdate () BEGIN #宣言は、変数、カーソル、ハンドラの順に行わないとエラーが出る。 #他にもDATE、CHARなどの型も利用できる。 DECLARE mem_id INT; DECLARE mem_name VARCHAR(20); DECLARE mem_age INT; DECLARE fetch_state INT default 0; #カーソルはSELECT文をそのまま利用できる。 DECLARE cur_member CURSOR FOR SELECT uid, name, age FROM member; #ループの終了判別にエラーハンドラを利用している。 DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET fetch_state = 1; OPEN cur_member; #ラベル名:の後ろには半角スペースを入れる事。 label1: REPEAT #MySQLのプロシージャには配列が無い。 #だから、カーソルのループ内で、値を取り出してで更新処理を行っている。 #一時テーブルを作る方法もあるが、結構面倒なので。 FETCH cur_member INTO mem_id, mem_name, mem_age; IF NOT fetch_state THEN UPDATE member SET name = CONCAT(mem_name, 'さん'), age = mem_age + 1 WHERE uid = mem_id; END IF; counter=counter+1; IF mem_id=2 THEN #LEAVEで特定ラベルのループを抜ける事ができる。 #この例では単一のループなのであまり意味が無いが、 #入れ子でループしている場合に効果あり。 LEAVE labl1; END IF; UNTIL fetch_state END REPEAT label1; CLOSE cur_member; #最後のENDの後ろにセミコロンを入れない事。 END // #末尾DELIMITERと;の間には半角スペースを入れる事。 DELIMITER ;
サーバ間でmountする場合は、mountされる側にNFSサービスが必要!
覚えるためにメモ。
サーバ(192.168.10.111)から別サーバ(192.168.10.110)のディレクトリを mount した。
vi /etc/fstab ... 192.168.10.110:/var/www/html /html nfs defaults 0 0 ...など編集 mount -a
しかしこの結果
mount.nfs: access denied by server while mounting (IPアドレスなど)
とエラーが表示されてしまう。
ちなみに、SELinuxは沈静化してあるので、このせいではない。
よくわからないのでググってみると、マウントされる側の準備も必要だったようだ…。
2 NFSサーバ側の受け入れ状態確認
exportfs -v
4 サービス再起動
exportfs -ra
5 クライアント側でマウントコマンド再実施
mount -a
エラーが出なくなった!
6 確認
df -h
JMeterについて調べてみた
これからJMeterを使う予定なので下調べ。
GUIインターフェースを使ってかなり細かく負荷テストのシナリオを設定する事ができます。
面白いのは、ブラウザで辿ったページを記録して、それに対して負荷テストをしたりする事もできたりする点です。
WEBサイト負荷テストツール7選 | さぶみっと!JAPAN
エラー発生の有無、期待したデータがレスポンスに含まれているかの確認なども簡単に行うことが可能
http://www.jasst.jp/archives/jasst07e/pdf/C2-1.pdf
これらから手順を抽出し、自分の考えを加えた。
1 テスト環境の作成
プロジェクト、スクリプトの配備
DBの配備
- 設定ファイルの修正(取りあえず動かせるようにするだけ、チューニング等は後から行うのでプレーンなまま)
- 既存ログファイルのクリーニング
負荷試験に供するテストデータの作成
- マスタ、トランザクション共に、実運用時の件数に近づける(コーディング中の未熟なデータが入らないように注意する)
2 ダウンロード
3 インストール
tarを解凍
4 起動
binディレクトリのjmeter.batを実行
5 テスト計画の作成と実行
- スレッドグループの作成
- タイマの設定(同時アクセスのテストでなければ設定の必要あり)
- デフォルトHTTPリクエストの作成(サーバ名やIPを指定)
- テスト内容の設定
- リスナーの作成(テストレポートのファイル名を指定)
- テストプランの保存(上記で指定した内容を保存)
- 実行
ポイント
- スレッド数 = ユーザ数
- シナリオ = テスト内容
- 容量不足になったらヒープサイズを増やす(jmeter.batで指定)
6 結果の確認
- 指定回数分、実行されたか?実行回数を確認。
- 平均応答時間は目標範囲内か?(例えば、2秒以内とか)
7 チューニング
DBサーバやWebサーバに割り当てるメモリを増やすなど
MySQLのTemporary table
現場のSQLの中に、CREATE TEMPORARY という文をいくつか見かけたので、「一時テーブル」について勉強してみました。
Temporary Tableはセッションを抜けると自動的にDropされる。
異なるセッションのTemporary Tableは別々のものと扱われる。
Temporary Table(一時テーブル)について - 十番目のムーサ
*1
テンポラリテーブルはそのサイズがtmp_table_size以下であればMEMORYテーブルとしてメモリ上に作成され、tmp_table_sizeを超えるとISAMテーブルとしてディスクに書き出されます。
MySQLの「temporary table (一時テーブル)」 と「tmp file(テンポラリファイル)」の違いと「Copying to tmp table」と「copy to tmp table」の違い | 田舎に住みたいエンジニアの日記
*2
MEMORYテーブルの大きさはmax_heap_table_sizeによっても制約されるため、tmp_table_sizeを大きくする場合は同時にmax_heap_table_sizeも大きくします。
MySQLの「temporary table (一時テーブル)」 と「tmp file(テンポラリファイル)」の違いと「Copying to tmp table」と「copy to tmp table」の違い | 田舎に住みたいエンジニアの日記
*3
クエリが最適化されていない場合は、大きなテンポラリテーブルが作られてしまいます。テンポラリテーブルがtmp_table_sizeやmax_heap_table_sizeに割当のサイズを超える場合は、「Created_tmp_tables」のメモリ上で収まらずに「Created_tmp_disk_tables」としてディスクに書かれてしまいます。
MySQLの「temporary table (一時テーブル)」 と「tmp file(テンポラリファイル)」の違いと「Copying to tmp table」と「copy to tmp table」の違い | 田舎に住みたいエンジニアの日記
*4
CREATE TEMPORARY TABLE tmp1
SELECT * FROM test_dt
WHERE item_name like '%検索文字列%'