2016年12月17日土曜日

吉川英治の三国志全8巻の感想

光栄の歴史シミュレーションゲーム「三国志」にはまった時期があり、小説のほうにも興味が出てきたので読んでみました。

3カ月かけて、吉川英治の三国志全8巻を読みました。

以下感想です。

三国志1
劉備が黄河を眺めている場面からスタートして、関羽、張飛との出会い、黄巾賊や董卓との戦い、其のあたりが書かれています。
キャラクターの性格わけがしっかりしていて、愛着を持ちやすいです。
特に張飛は、気に入らないことがあれば、手が付けられないくらいの暴れん坊になってり、そのせいで話がどんどん展開して面白いです。
劉備を中心に話が進んでいきますが、途中から曹操や孫堅も出てきてきます。
この二人の側に立っての話も展開していくので、物語をいろんな角度から読むことが出来ます。
次から次にいろんな武将が出てきて、ゲームで知った武将が出てくると、うれしくなります。
この武将ゲームでは大したことない能力だったけど、実はこんな活躍してたんだとか、そういった読み方もできました。



三国志2
中学生くらいに読んだときは難しい漢字や、表現についていけずに途中で断念してしまいました。
大人になって読んでみると、知識が付いた分、読破できました。
とても読みやすく、展開が速いので退屈することがありません。
主要な武将たちのキャラクターがよく描き分けられています。
曹操は古い慣習に囚われず、出来る人間はどんどん取り立てていく、新しい時代を作る人の象徴みたいです。
強引なところがあるので部下から恐れられているところがあります。
劉備は同じ人に何度裏切られても、許しています。そうやって、仲間を作っていっています。人徳の高さから部下から慕われています。
呂布は武力だけで策略がない、そして裏切り者みたいな感じです。
何だか、ここに載っている武将たちの生き方を読むと、自己啓発書を読むよりも参考になります。



三国志3
呂布がとうとう倒されて、何だか少し寂しくなります。
でも、さすがにゲームだと武力が一番高い武将だったので、史実でもやっぱり倒すのにてこづってたんだなあ。という印象です。
序盤戦から中盤戦に入ったという感じで、どんどん面白くなっていきます。
毎回の武将が名乗りあって一騎打ちするシーン。」決着が決まるシーンはあっさりした描写で、潔しという感じでいいです。
まるで、講談のようです。
此の巻では、関羽が、玄徳と離れ離れになって、仕方なく曹操側についています。
曹操は関羽の武勇にほれ込んでいるので、金銀を与えたり、たくさん宴をひらいたり、重用しますが、関羽は心ここにあらずで
玄徳のもとにいつも帰りたがってます。
振られて振られても、関羽に言い寄る曹操。ついには、関羽に別れを告げられたくなくて、居留守まで使いますが、ついに去られてしまいます。
曹操もこうやって見ると結構健気だったりしますね。



三国志4
劉備が見つかったので、関羽が曹操のもとを離れます。
曹操の手下たちが、関羽の帰還を阻止しようとしますが、返り討ちにされます。
関羽強いです。
ゲームでもめっぽう強かった。
曹操も、さっぱりした男なので、関羽が元鞘に戻るのを許しています。
だんだん、キャラクターが立ってきて面白くなってきました。
勝つために何でもやる曹操軍、ちょっと地味だけど地道に発展していく孫権軍、
諸葛亮孔明を手に入れてこれからという劉備軍。
いよいよ三国志という感じになってきました。
やっぱり、劉備がいつも仁を貫き通そうとするあまり、機会を損失しています。
孔明に舌打ちされるくらいですから、よっぽどのことです。
そこがいいところで、人が集まる理由なのでしょうけれど。



三国志5
かの有名な赤壁の戦いが収録されています。
前半のクライマックスといった感じで盛り上がってます。
劉備が孔明を軍師に迎え、いよいよこれからといったところです。
孔明と劉備が話してると、関羽、張飛がちょっとやきもち焼いてるように見えます。
呉の周瑜も中々の知恵者ですが、孔明の手のひらで転がされてしまいます。
孔明の万能っぷりがすごいです。
周瑜と孔明の間を行ったり来たりして板挟みになる魯粛が何だか健気です。
兎に角文章がてきぱきしていて、読んでいて心地よいです。
血の流れる戦の描写まで爽やかです。



三国志6
父・罵騰の仇・曹操をうつべく、西涼から馬超が登場。
また、黄忠と厳顔の老コンビが勇ましく頑張ります。
年寄りの冷や水だの何だのと、冷やかされながらも、見ておれとばかりに大活躍。
五虎大将軍が揃いました。プラス孔明。
劉備軍、全盛期です。
どんどん攻め入って劉璋 から領土を奪取し、蜀が出来上がりました。
ここから、魏、呉、蜀の三国志になります。
群雄割拠していた時代と戦争の意味合いが、異なってきているのを感じます。
一戦、一戦が、血気に逸った思慮浅く適当な内容ではだめになってきています。
戦に至るまでの準備やそのあとの処理が大事になってきたんだなあという印象です。
それだけ、国が大きくなり何もかもを運営することが難事となったのでしょう。
序盤の、英雄が乱立した小競り合いのころが懐かしいです。



三国志7
関羽、張飛、曹操、劉備、黄忠などの大物が相次いで退場します。
寂しくなっていきます。
大物といえば、張遼も亡くなっていますが、こちらは、その顛末がたったの一行で片づけられていて、
「あんなに活躍してたのに!」という感じです。
ですが、こういうさっぱりしたところも好きです。
劉備が死に際に、孔明に蜀のその後を託す場面。
最も心に残りました。
劉禅が頼りなければ、孔明が国の長になれと。。。
巻の後半では、孔明が南蛮に攻めて行きます。
南蛮王孟獲や、一部の熱狂的なファンを持つ兀突骨だのといったキャラクターが登場します。
兀突骨に至っては人間とは思えない描写です。
孟獲は、七回生け捕られ、七回放逐されています。
その度に、孔明に対して吐く悪態や負け惜しみの数々、、、七回目に生け捕られて、やっと改心。
何か、憎めないキャラクターです。
すごいのが、初期から活躍している趙雲が年とっても未だに功を立てているところ。



三国志8
孔明が死んでしまい、物語もここで終わります。
そのあと、短いですが、孔明がどんな人だったかという解説と、蜀を含めたその後30年の話が書かれています。
その中で、前半の主人公が曹操で、後半が孔明だったということが書かれています。
まさにその通りだと思いました。
曹操の破天荒ぶりも、その人が亡くなったあとは、それを引き継ぐかのような登場人物は出てきませんでした。
そのあと、曹操とはタイプが異なる孔明が大活躍をします。
本当に、完璧な軍師で、向かうところ敵なしといった感じです。
ただ、惜しむらくは、蜀に人材が足らなかったということだけですね。。。。
孔明の指揮を破って、勝手に行動して、司馬懿に粉砕される馬謖。。。
孔明の悪い噂をの流して、信頼度を落とす、味方の武将までいたり。。。
病で余命長くないと感じた孔明が、寿命を延ばすために願かけていた燭台の火を、魏延に、
誤って蹴飛ばされて、消されたり。。。

また、運もなかったです。
司馬懿をあと少しで、火計で焼き殺すことが出来たのに、突然雨が降ってきたり。。。

こういったことがなければ、蜀は魏に勝てたのではと思えてきます。
司馬懿は結構、鏡に映った自分と戦ってただけのような感じもするし。。

ただ、孔明の短所として、遊びがないということが書かれています。
それが人を寄せ付けがたく見せていて、結果、良将が集まり辛かったのではと解説されています。

「ふつーあきらめるやろー」と思うような事態に何度も遭遇しても、取り乱さず、次々新しい案を考え出しては
実行する孔明の姿勢は、すごいの一言です。



2016年12月9日金曜日

データベースエンジニアになるには??

仕事でデータベースをやっている私から、データベースエンジニアになりたい人に向けて。


■必要な学歴
はっきり言って、高卒でも問題ないと思います。
IT業界には、高卒でバリバリやってる人が沢山います。
データベースをやりたいっていう気持ちがあれば大丈夫です。
注意してほしいのが、ITという仕事は向き不向きがあって、勉強して見て向いてないと思う場合は、無理しない方がいいかもしれません。
大学生の時、自分で向いてないと思った人が、情報工学部から別の部に転籍していました。
もちろん、時間を掛けてみないと判断できない部分でもあるので、そこはよく考えてください。
大企業で活躍したいのであれば大学に行くことをお奨めします。
高卒だと募集要項の「大卒」のところで引っかかってしまうことがありますので。(もちろん学歴不問の会社もあります。)

■必要な勉強
数字を扱ったり論理的に考えることが多い世界なので、数学は出来たほうがいいと思います。
ただ、三角関数とか微分・積分とかまでは、私が仕事した範囲ではまだ出て来ていません。
四則演算、二進数、十六進数、比率の問題、グラフを見て考える力、素早い単位の換算(MByteからGByteへなど)。
私は、この辺りの勉強がデータベースを仕事にするなら必要だと思うし、日々、必要なので使っています。
加えて、私が携わっている関係データベースタイプを前提に話すと、集合演算とかベン図が分かるようにしておくといいと思います
これらは、データベースに問い合わせるSQL文という言語の基礎になっているからです。
後は、学生のうちは基本情報処理試験の範囲を、資格に受かる・受からないに関わらず勉強しておくといいです。
特にコンピュータ装置のハードウエア(ディスク、メモリ、CPU)やOSの仕組みは、データベースソフトウエアと深く関わる部分なので、気持ち深めに勉強しておくといいです。
私は、この部分を疎かにしていたせいで、いざ管理者として、データベースに関わった時に結構痛い目を見ています。(詳細は「32ビットショック!」)
所詮データベースは、OSやハードウエアという土台に乗っているものであり、土台を良く知らないと使いこなすことが出来ない代物なのです。

あとは、国語です。
国語は人の話を良く聴いて、それを理解して、文章にして、説明できる能力を身につける勉強になります。
これは、お客さん又は業務チームから、仕様や要求を訊き出して、それを理解して、データベース設計書なりスクリプトに落とし込める能力に繋がります。

■キャリアパス
新卒でいきなりデータベースを任せられることは余りないと思います。
まずは、どこかのチームやプロジェクトに配属され基礎的な仕事の仕方を覚えるところからです。
インフラチームに所属できれば、OS、ディスク、ネットワーク、サーバの基礎的な知識を学びながら実践を積むことが出来ます。
私の場合、業務チームのプログラマからスタートしました。
SQLやプログラミング言語を覚え、業務知識や画面設計の基礎を学ぶことが出来ました。
ですが、インフラについては疎かになり、データベースエンジニアになってから、この部分で苦労しました。
実際に、OS、ディスク、ネットワークを知っていないとデータベースは思うように動いてくれないんだな、ということを実感しました。
反対に、正規化やSQLの知識が、論理的なパフォーマンスチューニングを行う上で役立ちました。
インフラ、業務のプログラマ、どちらからスタートしても、データベースエンジニアになった時、有利不利があると思います。
データベースエンジニアになる前に、現在の自分の立ち位置に応じて足りない知識は勉強して置いて、損はありません。

現場でデータベースを設計してゴリゴリ構築して、管理しまくりたい人は大企業に行くよりも、中小のSI企業に入ったほうがいいかもしれません。
大企業だと現場作業より、マネージメント的な立場を任されることが多く、自分で手を動かすことが少ないからです。

データベースエンジニアとして実力が認められると、色々と仕事を任せてもらえます。
私は、一時期二つ仕事を抱えていて、その分給料がアップしていました。

IT業界は次々新技術が出て来て覚えるのが大変です。
個人的には、データベースを支えている根っこのところにある技術や知識は急な変化がないので、データベースエンジニアは息長く仕事ができる職業ではないかと思っています。

■必要な資格
私の場合、OracleSilverを取得していたので、ORACLEの仕事の募集に引っ掛かることが出来ました。
なので、資格はチャンスを広げるという意味で、必要です。
ちなみに私は、教科書丸暗記でOracleの資格を取ったため、現場で実践しながらコマンドを覚えていきました。何とかなってます。
今考えたら無謀ですが、案ずるより産むが易し、かもしれません。

■向いてる性格
明るくて、前向きで、好奇心のある人......
どこかの会社の新卒募集に載っている文言のようです。
私は、そんな完璧超人とは程遠いです。
少し色んな事に興味があるくらいのふつーの人です。
それでも、何とかなります。
そんな私が気を付けていることです。
 ・障害が起きても慌てず、その場で踏みとどまって考える
 ・分からないことは、恥ずかしがらず分かるまで訊く
 ・報連相をする
 ・やろうとしてることが、サポートされているか確認する
少しの度胸と、マメさと、真面目さが必要だと思います。

以上、私の少ない経験から、伝えられそうなことを書いてみました。


勉強も大事ですが、遊びも忘れずにお願いいたします。
人と話したり、遊ぶことで、楽しんだり、傷ついたりして、人が何考えているのか、どういう気持ちか、少しでも理解できるようになります。
結局、システムを使うのも、作るのも人なのですから。
世の中が複雑になって来て、ああだったらいいのに、こうだったらいいのにという思いが言葉で表現し辛いです。
だから、人の気持ちを汲み取って、ああしよう、こうしようって提案出来たら、もっと仕事もし易くなるかなあ、なんて、思ったりしてます。

2016年10月28日金曜日

カセットテープが今、若者の間で人気

カセットテープが今、若者の間で人気らしいです。

イメージ 1

ネットやラジオでニュースされてます。
それに伴い、カセットデッキも売れてるのだとか。
あの、カセットをデッキに入れて再生ボタンを押す感じが、オシャレで新鮮なんだとか。あとノイズが入るとことかね。
デジタルネイティブならでは、の感覚ですなあ。

カセットテープとカセットデッキを知らない世代が、初めて見てオシャレだとか、ナイスガジェットだとか思って買いだしたのだとか。
不便さを知らないから、余計カッコよく見えるのでしょう。

カセットは長く聴いていると擦り切れるし、デッキは重たいから持ち運びにくい。
ipodとかスマホがある若い世代は余裕をもってこの不便さを楽しめるのでしょうね。
学生時代はカセットしかなかった身分の私からすると、断然、スマホでラジオ聴いて、youtube観るほうが場所もかさばらないし、音も劣化しないからそっちのがいいね!

カセットテープの優れてるところって、優れてるっていうよりも構造上仕方ないのだけれど、最初から聴くしかないところです。
CDや動画みたいに、聴きたいところからスタートできない。
だから、アルバムを最初の一曲から順番に聴くことになる。
だから、アーティストの思いが伝わりやすい。
そこがいいところ!
そういえば、学生の頃聴いてたアルバムのほうが全曲タイトルも知ってた。
それはカセットで一から聴いてたからだ。
(厳密にいうと、ゲオで借りて来たCDをメタルテープにダビングして聴いてた。もちろん、個人で楽しむためだけですよ)
今は、スマホとかでダウンロードして、好きな曲から聴くから、一枚のアルバムで、知らない曲のほうが多くなった。
それは、カセットで聴くほうがいいかも。
でも、一から好きな曲まで聴く時間なんて、ないくらい、皆さん忙しい。

結局、今の聴取スタイルが、今の生活に一番合っているのです。

2016年10月6日木曜日

映画一言レビュー25本

休みの日や早く帰れた日を利用して色々と映画観てます。
一言レビューを書いて、映画館、DVDで観た映画を記録しています。
あとで、読み返して観た当時を思い出したり、また借りるときの役に立てたり。
★の数(面白かったら多い)はあくまで私の評価なので、万人には当てはまりません。


1本目パルプ・フィクション:KILL BILLという映画を観たことがあって、それが面白かったので同じ監督ということで観てみました。異なる複数の話が交錯しながら展開していきます。脚本よく出来てるなあと思いました。★4つ。

イメージ 5


2本目CUBE:CUBEという部屋の中で様々なことが起こる話です。舞台もCUBEという部屋だけで、役者も7人しか出てきません。低予算映画らしいですが、それはまったく感じませんでした。★4つ。

イメージ 4

3本目ベンジャミンバトン:老人で生まれて、年をとるごとに若返る主人公の物語です。みんなが年を取るのに、自分は若返るって悪くない気もしますが、これはこれで大変だと思いました。★3つ。

イメージ 3


4本目ショーシャンクの空に:色んなサイトで、お奨めされてました。脱獄のお話です。観ると元気が出ると思います。主人公とその周りの人間たちの話も入り混じって面白かったです。★4つ。

イメージ 2

5本目明日、君がいない:19歳の監督が撮った映画です。高校が舞台です。最初に午後2:37にある事件が起きます。そこからさかのぼってその日の朝から話が始まります。サスペンスみたいですが、違います。命がテーマといった感じです。★3つ。

イメージ 1



6本目「メメント」:記憶が10分しか持たない主人公のお話。結末からさかのぼる展開で、徐々に秘密がわかる内容。話のつなぎ方や、画像がモノクロになったり、セリフなんかがオシャレな印象を受けました。あと、何回観ても、発見がありそう。★4つ。

イメージ 1

7本目「スパイダーマン」:アメコミのような、陽気な展開を想像していたのですが、意外にシリアスだった。家族で観ても楽しめそう。蜘蛛の糸を使って戦うとことか、面白かった。★3つ。

イメージ 2

8本目「ラン・ローラ・ラン」:ドイツ映画。赤毛の女の子が彼氏を助けるために街を走り回ります。「もし」、「だったら」といった視点で、主人公の行動で結末がどうなったかをすべてみせてくれます。展開がスピーディなので、観やすかったです。★3つ。

イメージ 3

9本目「今を生きる」:テーマは今を生きる。規律を重んじる学校に型破りの先生がやってきて…名言がたくさん出てきます。生徒、親、教師の立場でそれぞれ考えてみると、みんな言い分は正しい気がします。話はちょっと、たんたんとしすぎてたかな。★2つ。

イメージ 4

10本目「失楽園」:黒木瞳観たさに。濃厚なラブシーンも印象に残ったけど、オフィスにパソコンがないとか、みんながみんな携帯を持っていないとか。。で、行き違いになったり、そのせいかなぁ、13年前位の映画なのに、なんだか昭和っぽい印象を持った。★3つ。

イメージ 5

11本目「ガチ☆ボーイ」:邦画。大学のプロレスサークルが舞台。主人公の記憶が一日しか持たないという設定です。プロレスの台本が覚えられずガチで試合します。コメディかと思ったら、後半から泣ける展開です。感動したい人におすすめです。★3つ。

イメージ 1

12本目「ユージュアル・サスペクツ」:有名な作品ですね。カイザーソゼが何者なのかが気になりながら観てました。まるで、架空の有名人みたいです。話は少し淡々とした印象でした。★3つ。

イメージ 2

13本目「ユナイテッド93」:911同時多発テロのノンフィクション。結末がわかっていても、乗客たちに助かってほしかったです。ハイジャックしたテロリストも悪いだけの人として描かれていないのがよかった。テロリストも、乗客もそれぞれが信じている神に祈っているのが印象的でした。★4つ。

イメージ 3

14本目「鉄男」:何だかすごい映画だ。全編にわたって、鉄が軋むようなノイズが流れてます。それがかっこよく感じた。鉄に変身していく男が工場で戦ってます。鉄フェチ、工場フェチにはたまらないかもです。グロいですが、クレイアニメ見たいな動きのとこは、笑っちゃいました。★3つ。

イメージ 4

15本目「香港国際警察 NEW POLICE STORY」:序盤で、ジャッキーチェンが敵にコテンパンにやられ、土下座までさせられます。全てを失い自暴自棄になって、呑んだくれるジャッキー。とてもシリアスな展開が続きますが、ちゃんと「らしさ」が残ってます。ラストが良いです。★4つ。

イメージ 5

16本目「生きてこそ」:アンデス山脈に墜落した飛行機から生還した人々の実際の話です。救助隊は捜索を打ち切り、寒さ、飢餓、雪崩が生き残った人々を襲います。全編まさにタイトル通りです。極限状態での人間の弱さや強さが出ていました。皆が助け合って生き残ろうとするのも良かった。★5つ。

イメージ 1

17本目「逃亡者」:ハリソンフォード。前半はアクションしてて、後半はサスペンスの謎解きって感じでした。映画を観ているというよりも、テレビドラマを観ている感じでした。ちょっと淡々としてたかなと感じました。★2つ。

イメージ 2

18本目「スーパーサイズミー」:ファーストフードを一カ月食べ続けたらどうなるかを監督が体をはって検証したドキュメンタリー映画。アメリカのバーガーやドリンクってやっぱ大きいですね。映画で言ってることが全て本当だとは思わないけど、アメリカのことについて勉強になった。★3つ。

イメージ 3

19本目「7人の侍」:昔の映画で、200分位で、白黒だからついていけるかなと、思いましたが、面白かったです。立場が弱いはずの農民が意外と図太く描かれていました。あと、ギャグが意外に多くてところどころ笑えました。合戦シーンは迫力ありです★4つ。

イメージ 4

20本目「3-4X10月」:北野武監督。草野球チームと暴力団の抗争の話ですが、ストーリーはよくわかんないとこありました。が、独特の間や、暴力シーンのリアルさが良かったです。セリフがほとんど無いのに、映像だけで伝わる部分が結構ありました。★4つ。

イメージ 5

21本目「ブレードランナー最終版」:結構色んなサイトで絶賛されてたので、観てみました。映像は独特で、世界観が良く出ていました。話としては、正直よくわからないし、淡々としすぎてた感が。SFや近未来の退廃した感じが好きな方は合うかもしれません。★2つ。

イメージ 1

22本目「7つの贈り物」:ウイル・スミス。主人公が7人の人達に様々な贈り物をします。最初、ラストに近いシーンが登場します。そこから時間が遡って、話が展開していきます。なぜ、主人公が他人を助けようとするのかが、だんだん分かると面白くなってきました。★3つ。

イメージ 2

23本目「仁義なき戦い」:オープニングは、キノコ雲をバックにタイトルがバーンと出て、お馴染のテーマが。話の展開が速すぎてついていけませんでした。バタバタ人が死んでいきます。このスピード感は観ていて心地よかった。死んだ人にはちゃんとテロップでご紹介が入る親切設計です。★4つ。

イメージ 3

24本目「その男、凶暴につき」:北野武監督。独特の間とかかいいですね。それにしても暴力シーンがリアルです。本当に殴ってますね。敵のヤクザ、目が据わってて静かで怖い。怒鳴り散らすヤクザよりも、黙ってて何するか分かんなヤクザのほうが怖いなと思いました。★4つ。

イメージ 4

25本目「レザボア・ドッグス」:最初の会話シーンから引き込まれましたね~。強盗に向かうシーンでオシャレな音楽が流れるとこも格好よかった。ほとんど会話で成り立っている話だけど、その会話が面白かったね。☆は誰なんだろうって思ってみてたら、あいつだった。まるでSAWみたいだ。★4つ。

イメージ 5

2016年7月16日土曜日

せどりってなに!?儲かるの!?

副業とかについて調べてると、「せどり」というものがあるのを知りました。
本せどりについて、調べました。

以下の手描きの図が、その調査をまとめたものです。


■せどりとは

二種類いて、それがこの、
せどり
ビームせどり
です。

せどりは、普通に自分の知識と経験から売れる本を目利きする人です。
古来から古本屋に存在する人々ですね。
一冊一冊、ネットで相場を調べてたりします。
手間がかかります。

ビームせどりはネット時代に現れた新しいせどりです。
バーコード機器を使い、本のバーコードを読み取ってそれをネット相場と突き合わせて、本の価値を瞬時に判断します。
この作業を、バーコードを使って大量かつ素早く行うため、効率がいいみたいです。
ただ、普通のせどりからも、店員からも、その特異な動きや、本棚をいつまでも占領していることや、大量買いをすることから疎まれる存在です。
ま、どこの世界にも、沢山儲けようとすれば、色んな目にさらされます。


■儲ける仕組み

では、図の説明を。
古本屋で安く仕入れた本を、高値でネットで売りぬくという副業です。
本を目利きする力が要りますし、本をたくさん買って運ぶ手間もあります。
また、ネットショップを開設して発送する手間もあります。
ですが、元手があんまりいらないし、資格もいらないから始めやすいです。

①せどりがbookoffなどで、古本を目利きして安く仕入れる。
①'ビームせどりはbookoffなどで、バーコードを使って売れる本を瞬時に調べて目利きする。
ビームせどりは、専用のバーコードリーダを使って、素早く大量の本の目利きをネットを利用して行うせどらーのことです。
せどりからも、やりすぎると嫌がられるし、店も禁止してる場合があります。
②仕入れた本を、amazonなどのECサイトで高値で売る。
希少価値の高い本は高値でも買い手がいます。
③100円で仕入れた本が5000円で売れて4900円のもうけ。

あと、せどりは、メルマガやせどり塾なんかを紹介して、ノウハウを公開することでお金を稼いでるみたいです。

■まとめ

せどりは、いつでもできるし、元手もいらないから始めやすいですが、本屋に行って本を選ぶ時間はかかるし、車で運搬したらガソリン代は掛かりますし、、、、
諸経費と手間を差し引けば、儲けも薄いのかなって感じです。
ビームせどりに関しては、同業者からも疎まれてますしね。

でも、希少価値の高い本を、見つけ出してamazonで高値だろうと売るという行為は、amazonで本をよく買う自分にとって、続けてほしい行為ではあります。
私は、欲しい本を探すのに日本全国のbookoffを周るわけにはいかんですよ。
それなら、せどりの方が、見つけてネットで売ってくれれば、すぐ買えますからね。

ランニングしながら、バックグラウンドでyoutubeを聴きたい

ランニングしてる時、ウエストポーチにスマホを入れて、bluetoothでワイヤレス接続でyoutube聴いてます。

ただ、youtubeはバックグラウンドで再生が出来ません。
常に、youtubeの画面を表に出していないと、音楽が聴けません。

ランニングすると、ウエストポーチが上下左右に揺れるので、youtubeの画面が押されてしまい、再生が止まったり、別の動画になったり、スマホの別のアプリが立ち上がったりです。
そのたびに、立ち止まって、さっきまで聴いてたアプリを再立ち上げしてまた聴くという、不便極まりないことをしてました。

どうにかバックグラウンドで再生できないか調べたら、以下のアプリがありました。

MixerBox3ミクサーボックス



このアプリは、youtubeの動画を検索して再生し、バックグラウンド再生させることが出来ます。
今んとこ無料です。

私のスマホで使ってみました。
右下がyoutubeの再生動画です。
この状態で、ウエストポーチに入れてランニングしても、youtubeの画面が押されて再生が止まることもないです。



なかなか、便利なものを見つけました。
youtubeしながらlineしたりメールしたり、ネットサーフィンもできます。

2016年5月15日日曜日

トリガーの検証

トリガーについての検証です。

ここでは、以下の言葉を、以下の意味で使用します。

・元テーブル(test):トリガーとなる動作を受けるテーブル
・ダミーテーブル(dummy_test):トリガー自体の動作を受けるテーブル

元テーブルにデータを入れようとすると、ダミーテーブルにデータを入れるトリガーを使って
動作検証しました。

■正常系
testテーブルにデータを入れたら、dummy_testにもデータが入るトリガーを作成。

・元テーブル作成
SQL> create table test(a number);

表が作成されました。

・ダミーテーブル作成
SQL> create table dummy_test(a number);

表が作成されました。

・ダミーテーブルにデータを入れるトリガー作成
SQL> create or replace trigger t_ins_dummy_test
  2  before insert on test
  3  for each row
  4  begin
  5  insert into dummy_test values(:new.a);
  6  end;
  7  /

トリガーが作成されました。

・トリガー実行前
SQL> select * from test;

レコードが選択されませんでした。

SQL> select * from dummy_test;

レコードが選択されませんでした。

・トリガー実行。
testテーブルにデータが入れる前に、ダミーテーブルにデータが入る
SQL> insert into test values(1);

1行が作成されました。

・トリガー実行後
SQL> select * from test;

         A
----------
         1

SQL> select * from dummy_test;

         A
----------
         1


■異常系
・トリガー実行前
SQL>  select * from dummy_test;
 select * from dummy_test

・わざとダミーテーブルを削除
SQL> drop table dummy_test purge;

表が削除されました。

・ダミーテーブルが無いので、トリガー失敗
SQL> insert into test values(1);
insert into test values(1)
            *
行1でエラーが発生しました。:
ORA-04098: トリガー'SYSTEM.T_INS_DUMMY_TEST'が無効で再検証に失敗しました

・トリガー実行後
SQL>  select * from dummy_test;
 select * from dummy_test

トリガーを使う上で注意しないといけないのが、
元テーブルと、ダミーテーブルにデータ入れる動作が、1トランザクションであるということです。
要するに、トリガーとなる動作と、トリガー自体の動作は1トランザクションであり、どちらかが
失敗するとトランザクションの処理自体がロールバックされます。
この場合は、ダミーテーブルを削除することで、わざとエラーを発生させましたが、それ以外の
エラーでダミーテーブルへの処理が失敗したとしても同じように、トランザクション自体が失敗します。

ということは、トリガーの仕組みを入れることで弱点を一つ作ってしまうことにもなるのです。
トリガー自体は便利な機能ですが、そういった仕組みを把握しておかないと、思わぬところでエラーを引き起こしてしまうことになるのです。


■トリガーが無い状態で元テーブルにデータを入れると?
・トリガー実行前
SQL> select * from test;

レコードが選択されませんでした。

SQL> select * from dummy_test;

レコードが選択されませんでした。

・トリガー無い状態で、元テーブルにデータを入れる
SQL> insert into test values(1);

1行が作成されました。

・トランザクション中にトリガー作成
SQL> create or replace trigger t_ins_dummy_test
  2  before insert on test
  3  for each row
  4  begin
  5  insert into dummy_test values(:new.a);
  6  end;
  7  /

トリガーが作成されました。

・トリガー実行後
SQL> select * from test;

         A
----------
         1

SQL> select * from dummy_test;

レコードが選択されませんでした。


元テーブルにデータを入れた後、ダミーテーブルにデータを入れるトリガーを作っても、
トリガーは動作しません。
トリガーを動作させたければ、元テーブルにトリガーとなる動作をさせる前に、トリガーを作っておく必要があります。

2016年5月4日水曜日

【ロックについての検証2】for update

テーブルにupdate文を投げたまま戻ってこないことってよくありますね。
ORACLEにタイムアウトが設定されてないので、対象テーブルのロックが解除されるまで、
ずーっと待つことになります。
アプリの不具合で、対象テーブルのロックが保持されたままになった場合、後の処理が
待ちになってしまいます。

そうならないためにも、
これから更新しようとするテーブルが既にロックされているかどうか調べてから、処理をする
ように作るのもありだと思います。

そんなとき、select * from xxx for update文を使って、更新対象テーブルがロックされてるか
確認します。

■検証

★セッションA
・テスト用テーブル作成
SQL> create table a(a number);

表が作成されました。

・テスト用データ作成
SQL> insert into a value(1);
insert into a value(1)

SQL> insert into a values(1);

1行が作成されました。

SQL> insert into a values(2);

1行が作成されました。

SQL> insert into a values(3);

1行が作成されました。

SQL> insert into a values(4);

1行が作成されました。

SQL> insert into a values(5);

1行が作成されました。

SQL> commit;

コミットが完了しました。

・テストテーブルをupdate
SQL> update a set a=1;

この時点で、テストテーブルaにロックが掛かってます。

★セッションB
別セッションで、ロック中のaテーブルを参照します。

・30秒待って、aテーブルへのロックを取得できなければ、諦める
09:31:11 SQL> select * from a for update wait 30;
select * from a for update wait 30
              *
行1でエラーが発生しました。:
ORA-30006: リソース・ビジー; WAITタイムアウトの期限に達しました。

・aテーブルへのロックを取得できなければ、即諦める
09:31:43 SQL>
09:31:43 SQL> select * from a for update nowait;
select * from a for update nowait
              *
行1でエラーが発生しました。:
ORA-00054: リソース・ビジー。NOWAITが指定されているか、タイムアウトしました

・aテーブルへのロックを取得できるまで待つ
SQL> select * from a for update;
※CTRL + Cで止めるまで待ってます。



その後・・・・

★セッションA
・テスト用テーブルの処理を確定し、ロック解除
SQL> rollback;

ロールバックが完了しました。

★セッションB
・テスト用テーブルのロックが解除されたので、セッションBがロックを獲得し、
 テーブルaの結果が返ってくる
SQL> select * from a for update;

         A
----------
         1
         2
         3
         4
         5


select * from a for update;で、テーブルaがロックされます。
select * from aは、テーブルaへのロックを取得しないので、結果が返ってきます。

2016年4月10日日曜日

【ロックについての検証1】ORACLEのロック解除方法

データベースで、ロックが発生してしまい処理が停止したことはありませんか。
そんな時、ロックをしている原因となっているセッションは何なのかを調査します。
そのセッションを切断することにより、ロック待ちして止まっていたセッションが流れ出します。

■データベースロック状態確認SQL
SELECT A.SID SID,
       A.USERNAME USERNAME,
       A.SERIAL# SERIALNO,
       A.SCHEMANAME SCHEMANAME,
       A.MACHINE MACHINE,
       B.TYPE,
       B.BLOCK BLOCK,
       A.PROGRAM PROGRAM,
       A.PROCESS CLIENT,
       TO_CHAR(B.CTIME/60,'999990.9') LOCK_TIME
FROM V$SESSION A,
     V$LOCK B
WHERE A.SID = B.SID
AND   B.TYPE IN ('TX')
ORDER BY LOCK_TIME DESC;

■ロック解除SQL
ALTER SYSTEM DISCONNECT SESSION 'SID,SERIALNO' IMMEDIATE;



■検証
●1.テスト用テーブル作成
SQL> CREATE TABLE TEST(A NUMBER);

表が作成されました。

SQL> INSERT INTO TEST VALUES(1);

1行が作成されました。

SQL> COMMIT;

コミットが完了しました。

●2.ロックをわざと発生させる
それぞれ別のコマンドプロンプトを起動して、DB接続を実施。
・セッション1(ロックの原因を作る)
SQL> UPDATE TEST SET A = 4 WHERE A = 1;

1行が更新されました。

・セッション2(セッション1の処理確定待ち)
SQL> UPDATE TEST SET A = 5 WHERE A = 1;

・セッション3(セッション1の処理確定待ち)
SQL> UPDATE TEST SET A = 6 WHERE A = 1;

・ロック状態確認SQLを実行
SQL> SET LIN 10000 PAGES 50000 TRIMSPOOL ON
SQL> SELECT A.SID SID,
  2         A.USERNAME USERNAME,
  3         A.SERIAL# SERIALNO,
  4         A.SCHEMANAME SCHEMANAME,
  5         A.MACHINE MACHINE,
  6         B.TYPE,
  7         B.BLOCK BLOCK,
  8         A.PROGRAM PROGRAM,
  9         A.PROCESS CLIENT,
 10         TO_CHAR(B.CTIME/60,'999990.9') LOCK_TIME
 11  FROM V$SESSION A,
 12       V$LOCK B
 13  WHERE A.SID = B.SID
 14  AND   B.TYPE IN ('TX')
 15  ORDER BY LOCK_TIME DESC;

       SID USERNAME                         SERIALNO SCHEMANAME                     MACHINE                                                          TY      BLOCK PROGRAM                        CLIENT
         LOCK_TIME
---------- ------------------------------ ---------- ------------------------------ ---------------------------------------------------------------- -- ---------- ------------------------------ ------------------------------ ---------
        10 SYS                                 61653 SYS                            WORKGROUP\YDB                                                    TX          1 sqlplus.exe                    3372:10892
               9.5
       243 SYS                                 56557 SYS                            WORKGROUP\YDB                                                    TX          0 sqlplus.exe                    4076:3440
               9.3
       245 SYS                                 34310 SYS                            WORKGROUP\YDB                                                    TX          0 sqlplus.exe                    10680:8012
               9.0

LOCK_TIMEは、ロックが始まってからの時間。
BLOCK列が1のレコードがロックの原因を作ったセッション1です。
SID、SERIALNOを特定して切断します。

●3.ロックの原因になったセッション1を切断
SQL> ALTER SYSTEM DISCONNECT SESSION '10,61653' IMMEDIATE;

システムが変更されました。

●4.セッション1切断後、ロック状態確認SQLを実行
       SID USERNAME                         SERIALNO SCHEMANAME                     MACHINE                                                          TY      BLOCK PROGRAM                        CLIENT
         LOCK_TIME
---------- ------------------------------ ---------- ------------------------------ ---------------------------------------------------------------- -- ---------- ------------------------------ ------------------------------ ---------
       245 SYS                                 34310 SYS                            WORKGROUP\YDB                                                    TX          0 sqlplus.exe                    10680:8012
               0.9
       243 SYS                                 56557 SYS                            WORKGROUP\YDB                                                    TX          1 sqlplus.exe                    4076:3440
               0.9

セッション1が切断され、セッション2がロック元に変わりました。(BLOCK=1)

・セッション1(切断され、何もできない)
SQL> UPDATE TEST SET A = 4 WHERE A = 1;

1行が更新されました。

SQL>
SQL> commit;
commit
     *
行1でエラーが発生しました。:
ORA-03113: 通信チャネルでend-of-fileが検出されました
プロセスID: 2800
セッションID: 10、シリアル番号: 61653

・セッション2(処理確定待ち)
SQL> UPDATE TEST SET A = 4 WHERE A = 1;


・セッション3(セッション2の処理確定待ち)
SQL> UPDATE TEST SET A = 6 WHERE A = 1;


●5.ロックの原因になったセッション2を切断
SQL> ALTER SYSTEM DISCONNECT SESSION '243,56557' IMMEDIATE;

システムが変更されました。

●6.セッションBA切断後、ロック状態確認SQLを実行
       SID USERNAME                         SERIALNO SCHEMANAME                     MACHINE                                                          TY      BLOCK PROGRAM
          CLIENT                         LOCK_TIME
---------- ------------------------------ ---------- ------------------------------ ---------------------------------------------------------------- -- ---------- ------------------------------ ------------------------------ ---------
       245 SYS                                 34310 SYS                            WORKGROUP\YDB                                                    TX          0 sqlplus.exe
          10680:8012                           0.4

セッション2が切断され、セッション3の確定待ちになりました。

・セッション2(切断され、何もできない)
SQL> UPDATE TEST SET A = 5 WHERE A = 1;

1行が更新されました。

SQL>
SQL> rollback;
rollback
       *
行1でエラーが発生しました。:
ORA-03113: 通信チャネルでend-of-fileが検出されました
プロセスID: 9960
セッションID: 243、シリアル番号: 56557

・セッション3(処理確定)
SQL> UPDATE TEST SET A = 6 WHERE A = 1;

SQL> COMMIT;

コミットが完了しました。

●7.セッション1,2切断、セッション3commit後、ロック状態確認SQLを実行
SQL> SELECT A.SID SID,
  2         A.USERNAME USERNAME,
  3         A.SERIAL# SERIALNO,
  4         A.SCHEMANAME SCHEMANAME,
  5         A.MACHINE MACHINE,
  6         B.TYPE,
  7         B.BLOCK BLOCK,
  8         A.PROGRAM PROGRAM,
  9         A.PROCESS CLIENT,
 10         TO_CHAR(B.CTIME/60,'999990.9') LOCK_TIME
 11  FROM V$SESSION A,
 12       V$LOCK B
 13  WHERE A.SID = B.SID
 14  AND   B.TYPE IN ('TX')
 15  ORDER BY LOCK_TIME DESC;

レコードが選択されませんでした。


CLIENT列の値を特定し、タスクマネージャから切断することも可能です。

2016年3月21日月曜日

【1Z0-060】ORACLE MASTER 12c GOLD移行試験(Upgrade to Oracle Database 12c)を受験

10gGOLDが失効してしまい、12cGOLDへのアップグレードを行いました。
このブログ読んでくれてるORACLE MASTER受験予定の方に役立つように、一通り経験したことを
載せておきます。
以下の方法で、合格したので、参考になればと思います。

■試験申込

・試験会場選択
 ピアソンVUEのサイトで試験予約を行います。
 自宅から近場の試験会場を選択しました。

・試験日時選択
 試験日時は自分で決めます。
 いつ受験したらいいか迷っている人は、とりあえず今日から約1カ月先を予約してしまっても
 いいかと思います。
 その理由は、人間不思議なもので予約したことで、それがプレッシャーになり何とか合格しよ
 うと、やる気が出るからです。
 私の場合は、試験日時を決めたことで、試験当日から逆算して、何日までに参考書を読み
 終わって、何日までに問題集を解き終わってといった勉強計画を立てることが出来ました。
 ちなみに、試験日時は変更可能です。
 試験日時24時間前なら、キャンセルや日時の変更に対しキャンセル料が掛かりません。

■勉強について

・教材
 いわゆる黒本と呼ばれる定番参考書を使用しました。

 ・セクション1対策

 オラクルマスター教科書 Gold Oracle Database 12c Upgrade 新機能編

 ・セクション2対策

 Gold Oracle Database DBA11g 新機能編 (DVD付) (オラクルマスター教科書) 

 オラクルマスター教科書Gold Oracle Database 10g【DBA10g】編

 上記で足りない部分は、ORACLEについて書かれた有識者のブログ、ORACLE社が公開して
 いるマニュアル、技術資料を参考にしました。

 あと、確実に合格したい人は、7000円近くかかりますがクラムメディアの問題集がお奨めです。
 この問題集からの類似問題が多数出題されました。
 ただ、この問題集は誤字脱字が多いです。
 また、誤答が多い(常に指摘を受け修正されています。)、解説が少ないで
 黒本や、黒本付属のiStudyLEでしっかり勉強してから、この問題集に取り組んだほうが良い
 です。
 ちゃんと勉強してからだと、誤答を見抜けるようになります。

・勉強方法
 黒本と付属の問題集を5回繰り返しました。
 仕事では12cに触れる機会がなかったのと、自宅で実機を構築して検証する時間がなかった
 ので、理解したことを頭の中でシミュレーションしました。
 実技試験ではないので、このやり方でも問題ありませんでした。
 通勤電車では参考書を読み、トイレ中ではスマホでORACLE情報を見たり、まとまった時間が
 取れなかったため、隙間時間を利用しました。
 理想としては、実機にORACLEをインストールして検証環境を作成し、黒本に載っている新機能
 を試すのが一番だと思います。
 ただ、実機で一つ一つ検証していくのは時間が掛かります。
 とにかく早く合格したい人は、黒本を理解して暗記することにを中心に勉強すればよいと思い
 ます。

■試験会場にて

・会場へ出発
 当日は、余裕を持って家を早めに出ました。
 1時間も早く試験会場近くに付きました。
 早く着いたおかげで、近くの喫茶店で、落ち着いて試験の復習をすることが出来ました。
 開始時間15分前に会場に着くように移動しました。

・受付
 会場では、係員の指示に従います。
 受付で身分証明書を提出します。
 私の場合、以下を提出しました。
 
  ・健康保険証
  ・運転免許証
 ※上記以外でも、良いです。(パスポート、住基カードなど)詳細はピアソンVUEサイトに
   載っています。
 
 身分証明証を提出できない場合、受験できません。
 過去の試験で提出できず、受験できなくて肩を落として帰っていった人を見たことがあります。
 逆に、身分証明証だけ持っていけば、受験できます。
 受付で、写真を撮られ、タッチパネルとタッチペンで署名をお願いされます。
 
・試験部屋
 試験時間になると、試験部屋に案内されます。
 持ち物は、事前にロッカーに収納しておきます。
 試験中のメモ用に、サインペンとボードを渡されます。
 
 情報処理試験と違い、一つの部屋で同じ試験を受けているわけではありません。
 私が試験部屋に入った時は、既に8人くらいの人たちが試験を受けていました。

■試験

パソコン画面に映し出された、問題に答えていきます。
選択肢から正しいと思ったものに左クリックで印をつけます。
 ★便利だなと思ったのが、
  ・右クリックで、不要な選択肢に取消し線を入れられること。
  ・複数の答えを選択する問題で、例えば3つ選べばいいところを、4つ選ぼうとすると
   「多すぎです。」と指摘してくれること。
 ★思いやりがあるなと思ったのが、
  ・試験終了ボタンを押すと、2、3回くらい「試験終了しますか?」と念押ししてくるところ。
   おそらく、終了ボタンを間違えて押したときの配慮だと思います。
2時間くらいの試験でしたが、1時間くらいで全問解答し終り、残り1時間で見直しと、予想で
自己採点していました。

■合格発表

試験が終わると試験部屋から退室して、受付で終わったことを告げます。
試験結果は、30分後にORACLE CertViewで確認できます。
ドキドキしながら待ちましょう。

■耳より情報

ORACLE MASTER再受験無料キャンペーン実施中です。(2016年7月15日まで)
何と、1回の受験料で2回のチャンスが!

今、失効している方も、試験を受けて合格すれば有効になります!
(受験対象試験が終了になるまでに合格することが条件)

2016年3月16日水曜日

windows版oracle12c DBCAでデータベース作成

自宅パソコンにwindows版oracle12c(12.1.0.2.0)をインストールしました。

■パソコンのスペックは以下の通りです。

・機種:TOSHIBA Dynabook
・プロセッサ:Intel(R) Core(TM) i7-4710HQ CPU @ 2.50GHz
・実装メモリ(RAM):16.0GB
・システムの種類:64ビットOS x64ベースプロセッサ
・OS:Windows 8.1

インストール後、DBCAでデータベースを作成します。
コンテナデータベースで、PDB無し構成で作成します。

コマンドプロンプトで、「dbca」と入力するとDBCAが起動します。

「データベースの作成」を選択。
「次へ」を押下。

「拡張モード」を選択。
「次へ」を押下。

「汎用またはトランザクション処理」を選択。「次へ」を押下。
※事細かーく設定したい時は「カスタム・データベース」を選択します。

グローバル・データベース名「test」と入力。
SID「test」と入力。
「コンテナ・データベースとして作成」にチェックを入れる。
「空のコンテナ・データベースの作成」のラジオボタンにチェックを入れる。
「次へ」を押下。
※コンテナ・データベースとは、1つのデータベースに複数のデータベースを含んだ
データベースです。今回は、PDBを含まない形で作成します。
要するに、コンテナと、シードPDBの構成のみのデータベースになります。

「Enterprise Manager(EM)Database Expressの構成」のチェックボックスにチェックを入れる。
EM Database Expressポート「5500」と入力。
「次へ」を押下。
※EMで、データベースの構成、ASH、ADDMの確認が出来ます。

SYS,SYSTEMユーザに任意のパスワードを設定する。
「次へ」を押下。

任意でリスナーを設定します。
リスナーを作成するなら「新規リスナーの作成」をチェック。
「リスナー・ポート」に1521と任意のポートを入力。
「次へ」を押下。

データベース・ファイルの記憶域タイプ「ファイルシステム」を選択。
ファイル位置、リカバリオプション、アーカイブ有効化は任意で行います。
「次へ」を押下。
※ファイルシステムは昔ながらのDBFファイルによる管理です。
アーカイブログを出力するなら、出力先のディスクサイズに注意。
ディスクがいっぱいになると、データベースが動かなくなります。
何も設定せず、
「次へ」を押下。

「通常設定」のラジオボタンをチェック。
「メモリー・サイズ(SGAおよびPGA)」は700MBと入力。
「自動メモリー管理の使用」のチェックボックスにチェックを入れる。
「次へ」を押下。

※サイズは、パソコンのメモリサイズに合わせて決定してください。

「データベースの作成」のチェックボックスにチェックを入れる。
「データベース作成スクリプトの生成」にチェックを入れる。
「宛先ディレクトリ」に任意の場所を入力。
「次へ」を押下。
※データベース作成スクリプトを出力しておくと、後で、スクリプトを見ながら学習出来ます。

「次へ」を押下。
作成完了まで見守ります。

データベース作成完了報告を確認。
「閉じる」を押下。

データベースが起動しているか確認。
コマンドプロンプトにて、
sqlplus system/system
select name from v$database;
「TEST」と表示されることを確認。
これで、DBCAによるデータベース作成が完了です。