いつかのご飯とデザート

にほんブログ村 料理ブログ おうちごはんへ

クスクスって何?

クスクスは小麦粉に水を含ませて1ミリ程度の粒状に丸めてそぼろ状にしたものだそうで。
てっきりこういう状態の穀物があるのかと思ってましたが、人の手で粒状にしてるんですね。
世界最小のパスタと言われてるそうです。

この日は、クスクスとマトンのトマト煮込みプレート。トマト煮込みはハリッサを入れてあります。
ハリッサはKALDIファンなら要チェックの唐辛子ペーストです。お肉料理とかアジアン料理に使えます。ラム肉のグリルに直接つけても美味しいです。
この日のクスクスにつけたりもしました。色々使えて超おすすめ。

つけあわせは、チーズのラビオリと人参のカナッペ。

自家製いちごクリームパイ

奥さんが仕入れてくれた冷凍パイシートを使って自家製いちごクリームパイを作成。
カスタードクリームさえどうにか出来れば、あとはパイ生地に塗ってイチゴはさんで表面に卵黄を塗ってオーブンで焼くだけ!パイシート使えるねー。
焼き上がりに粉砂糖を振れば映える事間違いなしのいちごクリームパイが完成なり。

イチゴのクリームパイ
広告

私のヘビメタ好きの原点 X Japan

にほんブログ村 音楽ブログ HR/HMへ

X Japan とは?

X JAPAN(エックスジャパン)は、日本ヴィジュアル系ロックバンド[1][2][3]1989年X(エックス)としてメジャーデビューし、1992年にX JAPANに改名。1997年9月22日に解散を発表し、同年12月31日のラストステージで活動を一旦終了。2007年10月22日に再結成。通称は、X(エックス)

https://ja.wikipedia.org/wiki/X_JAPAN

ヘビーメタルにハマるきっかけ

私が大好きな3大日本人ヘビーメタルバンドの一つ。

中学時代に X Japan (当時は X )を友達から教えてもらって衝撃を受けた覚えがあります。
それまで聞いていた音楽は主に TM Network や BUCK-TICK だったので、激しい曲調の X の楽曲はとても衝撃的でした。
それ以後、ヘビーメタルを好んで聞くようになったので、自分のヘビメタ好きの原点となっている気がします。

BLUE BLOOD

1989年リリースの記念すべきメジャーデビュー後初のアルバム。
私が一番好きなアルバムです。


歳がばれますが、たしか中学校2年か3年の頃でした。
当時はCDは変えず、レンタル屋でCDを借りてカセットテープに録音したものを聞いてました。
もう本当にアホかって位聞いてました。
ちょっとわかりませんが、入手してから1年は毎日聞いてましたよ。
アルバムを通しで、少なくても2回は聞いてました。
学校に行く前と家に帰ってきてからと。
中学校の時は、アルバムを1回聞くために早起きしてましたから。
何なんでしょうね?あの情熱はw
学校から帰宅後は、Xの影響でギターも弾き始めてたので、ギターの練習をしてご飯食べて、寝る前に BLUE BLOOD を聞くっていう生活をしてましたね。

高校生になってからも X 熱は冷めませんでした。というか加熱してた気が。。。
家から自転車で1時間位掛けて通ってたのですが、通学中にウォークマンで X を聞きながら登校する生活でした。
たしかアルバム通しで聞くとちょうど1時間位なので都合良かったですね。
朝から晩まで X ばかりでほとんど洗脳ですねw

楽曲

  1. PROLOGUE (~WORLD ANTHEM)
  2. BLUE BLOOD
  3. WEEK END
  4. EASY FIGHT RAMBLING
  5. X
  6. ENDLESS RAIN
  7. XCLAMATION
  8. オルガスム
  9. CELEBRATION
  10. ROSE OF PAIN
  11. UNFINISHED

全12曲。収録時間65分。
1曲たりとも捨て曲なし。1秒たりともダレない。
激しさと美しさ、スリリングでスピード感抜群な楽曲達。
まさしく名盤中の名盤。
全曲好き。
収録順が最高です。
学生時代は絶対にこの順番で聞いてました。
あ、カセットテープだから曲の頭出し面倒ってのもありましたが。
この順番で聞くのが良いんです。
聞きすぎてテープが伸びてきたりして、最終的にCD買いなおしましたね。

思い入れのある曲達

PROLOGUE (~WORLD ANTHEM)

壮大な曲でまさにプロローグに相応しいワクワクするような曲です。
カバーだけど好き。
もともとはカナダの フランク・マリノ&マホガニーラッシュ って人達のカバー曲というのは知ってましたが、実際のオリジナルは聞いたことなくて、どんな感じなんだろうと思ってました。
Spotifyで探したらありました。

オリジナルと比べると若干最後の方がアレンジされてるんですね。
それにしても最近は便利ですね。
CD屋とか探しに行かなくてもすぐ探せるし聞けるし。本当に便利。

BLUE BLOOD

PROLOGUEからのBLUE BLOODへの流れ。もう最高。
このアルバムのタイトル曲ですが、X 屈指のハイスピード曲。速さだけなら、オルガスムや X といった曲の方が早かったりする?でも、この曲の方が好きです。
早く、激しく、美しい。3拍子揃った、素晴らしい、ベビーメタルナンバーですよ。
X の良い所は歌メロもキャッチーで覚えやすい所です。
こんなにスラッシュメタル調で激しいのに全力疾走で歌いまくってる感じが大好き。
Toshi ってボーカリストは凄いなーって心底思います。

wiki で知りましたが、 なんとアルゼンチンのプログレッシブ・メタルバンドAUVERNIAって人達がカバーしてます。

WEEK END

X と言えば私の中ではこの曲です。アルバム中で一番大好きな曲。
Yoshiki がロックンロールを作ったら、こうなったみたいな紹介をされる曲です。
確かにミドルテンポでのりのりな感じがあって若干ポップな感じも受ける。
でも激しく美しい曲展開は、まさに X ならではって感じです。
この曲だけはいつ聞いても、カッコ良いって思えます。

あぁ、久しぶりにYoutubeで見ましたが。最高ですね。
ギターが気持ちいい。pataとhideのツインリード最高ですよね。
今見てもギターソロとか超カッコいー!
本当にドラマチックで美しい。
そう。ツインリードのギターのカッコよさを X で知りました。
X 聞き出してギター始めた口ですが(昔の話)2人に憧れましたねぇ。
特にWEEK END のソロは大好きです。1年位掛けてギターを完全コピーしました。(遠い目)
勿論、今はまったく弾けませんが。。。
この曲はシングルカットされてます。アルバムバージョンとちょっと違うんですよ。
サウンドも硬質的になってるし、モダンな感じになってますね。
シングルカット版のオリジナル音源探しましたが、ちょっと見当たりませんでした。
残念。
この曲、実は6分もあるんですね。聞いてて長さを感じさせない所はさすがYoshiki。

ROSE OF PAIN

このアルバムは最初に言った通り、捨て曲は一切無いです。故に全曲言いたい事はあるのですが、そうすると、いくら時間有っても足りないので、すっ飛ばしてあえてこの曲。
アルバム最後から2曲目。何と収録時間11分49秒という大作曲。
いや、この曲は、恐ろしい位にスリリングでドラマチック。
特に中盤以降のテンポアップする展開は、今聞いても鳥肌が立つ位カッコいい!
ギターがザックザック言ってるのが心地よい!
ゴシック的雰囲気とヘビーメタルが見事に融合してる曲です。
そして歌メロのキャッチーさは X ならでは。
飽きさせない曲展開で11分49秒という長さを感じさせません。

UNFINISHED

Yoshiki ってピアノを弾くドラマーで、作曲家なんですよね。
本当多才な人で尊敬します。
当然ピアノは X の曲によく使われます。アルバム収録曲のENDLESS RAIN なんかは有名ですね。
でもこの曲も負けず劣らず名曲です。
私は X のバラードでこの曲が一番好きです。(最近の曲は良く知りませんが。。。)
アルバムのラストに相応しい曲。
約1時間、聞いたあとにこの曲が流れると癒される感じがしますね。
長時間の聞き疲れも UNFINISHED のあまりの美しさに心地良さに変わると思います。
見事な曲順だと思います。
この曲の前に11分49秒の ROSE OF PAIN 聞いてるんですよ?!
でも UNFINISHED で全て帳消しです。疲れも吹っ飛びます。
だから、また最初から聞けて UNFINISHED ?w
凄すぎると思います。このアルバム。

結びの言葉

私の好きな3大日本人ヘビーメタルバンドの X Japan でした。
日本人と書きましたが、色々海外勢も聞いた上で、結局今でも好きで聞いてるのは日本人のバンドだったりします。
何故かって、やっぱり作品に対する共感度が全然違うと思います。
言葉の壁の話もありますが、メロディやリズム、音楽そのものがやっぱり日本人が作るものが、結局の所、響くなぁという感じです。

X Japan には 私の大好きな3大日本人ギタリストの hide も居ましたし。
hide のOfficial site は今も健在で活発に活動されてるようですね。
素晴らしい。
hide の事もいずれ書きたいと思います。

ではこの辺でお開き。

アジアンご飯

にほんブログ村 料理ブログ おうちごはんへ

グリーンカレー、里芋のチーズ焼き、チキングリル

我が家はわりとアジアンご飯が好きです。パクチー大好き。ジャスミンライス大好き。
この日はパクチーがありませんが。ガパオとかパクチー山盛りで食卓に並んでたり。

そういえば子供の頃に食べたタイ米(ジャスミンライス?)は、日本米の代わりに食べたから妙にパサパサ感があって美味しくなかった気がしましたが。
今思うと不向きな料理に無理やり使ってたからでしょうね。
やっぱりジャスミンライスにはアジアン料理ですよ。
この日のグリーンカレー超辛かったけど、ジャスミンライスとやっぱり合いますねー。

里芋のチーズ焼き

里芋のチーズ焼きはレンジでチンしてからフライパンで焼くと楽です。

マッサとチキングリル

チキングリルにKALDIで買ったマッサをつけていただきました。
マッサは塩漬けパプリカのペーストです。美味しいー。

プログラマー向けネーミング辞書サービス「codic」

にほんブログ村 IT技術ブログへ

codicとは?

codicは、プログラマーのためのネーミング辞書です。


https://codic.jp/

変数名とかメソッド名とかコーディングしてると名前を考えないといけない時が多々ありますが、そういう時どうしてますか?
私は今までGoogle先生などの翻訳サービスで作成したい変数名やメソッド名の英訳を調べて、ひとつひとつ名前を作ってました。
例えばプログラム中に「開始時間」を保存する変数名を決めたい場合、翻訳サービスに掛けて「start time」を得ます。それをもとに変数名を「startTime」とする。みたいな感じです。
codicはそんな時に是非使っていきたいサービスです。

英単語作成サービスみたいなものですが、単なる英単語作成サービスじゃないんです。
プログラマーのかゆいところに手が届く感じ。
最近、コーディングしてる時は必ずここで名前作ってます。このブログの「外部サイト」ページには以前から掲載していたのですが、あまりにも便利なので改めて紹介する事にしました。

基本的な使い方

codic はユーザー登録しなくてもすぐ使えます。
また便利な機能が使い放題です。使い方は簡単。

  1. codic」にアクセス。「使ってみる」をクリック。
  2. 以下の画面で左側に英訳したい日本語名を入力する。
入力1

操作はたったこれだけで、英訳可能です。

翻訳サービスと何が違うのか?

codicの肝は日本語の単語を翻訳してプログラミングに使用しやすいような形式に変換してくれる点です。上記も良く見ると「startTime」という風になっています。
通常のGoogle翻訳等もそうですが、サービスにかけると「start time」などと「スペース」で単語が区切られます。しかし、それでは一つの変数名に使えないので、後から手で修正しないといけませんが、codicは一つの文字列として連結して英訳を出力してくれるのです。

google翻訳

色々な連結方法

下記のように「記法」アイコンから英単語の連結方法を選択できます。

連結方法
  • PascalCase
  • camelCase
  • snake_case(小文字)
  • SNAKE_CASE(大文字)
  • ハイフネーション
  • 変換なし

選択するだけで、入力済の英単語が変換されます。

snake_case

一括変換

左側の日本語入力欄は複数行の入力が可能です。

一括変換

想定されるよくあるケースとして、項目定義等の一覧表を元に変数名などを作る場合。
通常の翻訳サービスなら一個一個コピー&ペーストでやらないといけない点をcodicなら全て選択してペッと張り付けてやればそれだけで英訳が出力されるという話です。

DB定義書の作成でもカラムの論理名と物理名を併記しないといけないとか、そういうケースでも使えますよね。10や20の項目なら一個一個やってっても良いですけど、50個とか100個とか項目あるテーブルなんて、やってられないですよね。
そういう時にcodicにペッと張り付けてやれば良いのです。
本当に便利です。

一見地味だが非常に便利なところ

日本語じゃなくて英文を入力する事も可能なんです。スペース区切りの普通の文章をsnake_caseやcamelCaseにして利用する事も可能。

英文を連結

また、これも地味に便利なんですが。括弧()「」を除外してくれるんです。

括弧の除外

なかなか便利なサービスだと思います。
機会あれば使ってみてはどうでしょうか?「codic」

ブロトピ:今日のブログ更新
ブロトピ:ブログ更新通知をどうぞ!
ブロトピ:ブログ更新通知
ブロトピ:ブログ更新しました!

マルチプロセスプログラミング

にほんブログ村 IT技術ブログへ

Child_Process.exec()

スクレイピングツールを高速化するため、マルチプロセスプログラミングが可能な
Child_Process モジュールの勉強中。
Child_Process は子プロセスを作成するメソッドが幾つかあり、今回は exec() について。
exec() は子プロセスを作成し、その中でシェルを起動して引数に渡されたコマンドを実行するメソッド。
Windowsの場合、cmd.exe /c XXXX という形式で実行される。実行できるコマンドはcmd.exe で実行できるものなら何でも可能。色々試してみます。

コマンドプロンプト組み込みコマンドを実行する

cmd.exe を起動してるので組み込みコマンドの dir が実行できる。

const { exec } = require('child_process');
const iconv = require('iconv-lite');
console.log("parent:" + process.pid);
const command = 'dir c:\\temp';
const child = exec(command, {encoding: 'buffer'}, (error, stdout, stderr) => {
    if (error) {
        console.error(`exec error: ${error}`);
        return;
    }
    if(stdout.length !== 0){
        console.log(iconv.decode(stdout, "Shift_JIS"));
    }
    if(stderr.length !== 0){
        console.log(iconv.decode(stderr, "Shift_JIS"));
    } 
});
console.log("child:" + child.pid);

実行結果

multi> node .\Proc_exec.js
parent:14352
child:19168

c:\temp のディレクトリ

2018/09/29 10:58 .
2018/09/29 10:58 ..
0 個のファイル 0 バイト
2 個のディレクトリ 175,356,596,224 バイトの空き領域

ポイント

  • 日本語Shift_Jisを扱うためにiconvを利用している。
  • コマンドは引数もブランク区切りでそのまま書いて、文字列で渡している。
  • 別々のプロセスなのでプロセスIDが異なっている。

バッチファイルを実行する

当然バッチファイルの実行も可能。

const { exec } = require('child_process');
const iconv = require('iconv-lite');
console.log("parent:" + process.pid);
const command = 'test.bat';
const child = exec(command, {encoding: 'buffer'}, (error, stdout, stderr) => {
    if (error) {
        console.error(`exec error: ${error}`);
        return;
    }
    if(stdout.length !== 0){
        console.log(iconv.decode(stdout, "Shift_JIS"));
    }
    if(stderr.length !== 0){
        console.log(iconv.decode(stderr, "Shift_JIS"));
    } 
});
console.log("child:" + child.pid);

test.bat

@echo off
date /t
echo exec batch

実行結果

multi> node .\Proc_exec.js
parent:14008
child:10180
2019/05/06
exec batch

PowerShellコマンドを実行する

Node.jsからPowerShellが実行できる。

const { exec } = require('child_process');
const iconv = require('iconv-lite');
console.log("parent:" + process.pid);
const command = 'powershell.exe -command "Get-Date"';
const child = exec(command, {encoding: 'buffer'}, (error, stdout, stderr) => {
    if (error) {
        console.error(`exec error: ${error}`);
        return;
    }
    if(stdout.length !== 0){
        console.log(iconv.decode(stdout, "Shift_JIS"));
    }
    if(stderr.length !== 0){
        console.log(iconv.decode(stderr, "Shift_JIS"));
    } 
});
console.log("child:" + child.pid);

実行結果

multi> node .\Proc_exec.js
parent:12172
child:13572

2019年5月6日 2:25:32

外部コマンドを実行する

kintoneのクライアントである cli-kintone.exe も実行できます。
が、何故か以下だとエラーになります。

const { exec } = require('child_process');
const iconv = require('iconv-lite');
console.log("parent:" + process.pid);
const command = 'cli-kintone.exe';
const child = exec(command, {encoding: 'buffer'}, (error, stdout, stderr) => {
    if (error) {
        console.error(`exec error: ${error}`);
        return;
    }
    if(stdout.length !== 0){
        console.log(iconv.decode(stdout, "Shift_JIS"));
    }
    if(stderr.length !== 0){
        console.log(iconv.decode(stderr, "Shift_JIS"));
    } 
});
console.log("child:" + child.pid);

実行結果

multi> node .\Proc_exec.js
parent:14812
child:13360
exec error: Error: Command failed: cli-kintone.exe

引数なしで実行すると cli-kintone.exeはヘルプの出力をするのですが、エラーになりました。
どうやらexec() は実行したコマンドの実行結果(%ERRORLEVEL%)が 0 以外の場合はエラーにするようです。cli-kintone.exe を引数なしで実行すると 1 が返却されていたのでexec() でエラー判定されていたようです。
以下の形式にすれば cli-kintone が 1 でも more の実行結果が 0 になるのでOKです。

const command = 'cli-kintone.exe | more';

cli-kintone.exe の結果をNode.jsに取り込む

外部コマンドの結果を取り込んで処理可能です。
cli-kintone.exe はアプリの取得情報をJSON形式で出力できるので、Node.js側に取り込むのが楽です。stdout の値をJSON.parse() してあげれば、Node.js 内にオブジェクトとして取り込めます。

const { exec } = require('child_process');
const iconv = require('iconv-lite');
console.log("parent:" + process.pid);
const command = 'cli-kintone.exe -d domain -a appid -t token -o json -e sjis -c dateTime,workStatus';
const child = exec(command, {encoding: 'buffer'}, (error, stdout, stderr) => {
    if (error) {
        console.error(`exec error: ${error}`);
        return;
    }
    if(stdout.length !== 0){
        var obj = JSON.parse(iconv.decode(stdout, "Shift_JIS"));
        console.log(obj.records);
    }
    if(stderr.length !== 0){
        console.log(iconv.decode(stderr, "Shift_JIS"));
    } 
});
console.log("child:" + child.pid);

実行結果

multi> node .\Proc_exec.js
parent:16884
child:12392
[ { dateTime: { type: ‘DATETIME’, value: ‘2019-05-03T10:48:00Z’ },
workStatus: { type: ‘DROP_DOWN’, value: ‘退勤’ } },
{ dateTime: { type: ‘DATETIME’, value: ‘2019-05-03T08:20:00Z’ },
workStatus: { type: ‘DROP_DOWN’, value: ‘出勤’ } },
{ dateTime: { type: ‘DATETIME’, value: ‘2019-05-03T06:15:00Z’ },
workStatus: { type: ‘DROP_DOWN’, value: ‘退勤’ } },
{ dateTime: { type: ‘DATETIME’, value: ‘2019-05-03T05:44:00Z’ },
workStatus: { type: ‘DROP_DOWN’, value: ‘出勤’ } },
{ dateTime: { type: ‘DATETIME’, value: ‘2019-05-03T03:45:00Z’ },
~~~~~~~~

Node.jsの外部スクリプトを実行する

最終的にどうなるか分かりませんが、親プロセスから子プロセスを生成し外部のNode.jsスクリプトを非同期実行する形式になるかと思います。以下の形式になるかと。

const { exec } = require('child_process');
const iconv = require('iconv-lite');
console.log("parent:" + process.pid);
const command = 'node .\\child.js';
const child = exec(command, {encoding: 'buffer'}, (error, stdout, stderr) => {
    if (error) {
        console.error(`exec error: ${error}`);
        return;
    }
    if(stdout.length !== 0){
        console.log(iconv.decode(stdout, "Shift_JIS"));
    }
    if(stderr.length !== 0){
        console.log(iconv.decode(stderr, "Shift_JIS"));
    } 
});
console.log("child:" + child.pid);

child.js

console.log("Child proc");

実行結果

multi> node .\Proc_exec.js
parent:18828
child:5164
Child proc

Node.js で外部コマンド実行できると、色々夢が広がりますね。
サーバプロセス作ってリクエスト来たら外部コマンド実行とか。何とか。
次回はちょっと横道にそれて、その辺を試してみようかと。

ブロトピ:今日のブログ更新
ブロトピ:ブログ更新通知をどうぞ!
ブロトピ:ブログ更新通知
ブロトピ:ブログ更新しました!