雑多なブログ

音楽や語学、プログラム関連の話題について書いています

『セルフトーク超入門 心の中のつぶやきを変えれば、人生が変わる』を読んだ(シャド・ヘルムステッター著)

自分に対するネガティブな考えって厄介ですね。
『セルフトーク超入門 心の中のつぶやきを変えれば、人生が変わる』という本では、そういったネガティブな考えと向き合って変化していくヒントが書かれています。

脳に組み込まれるプログラム

これまで見聞きしてきた事や、考えたり言葉にする事を通して、様々なメッセージが脳にインプットされます。メッセージを繰り返しインプットし続ける事で、それが真実かどうかに関係なく脳に強く組み込まれます。そうして、脳に組み込まれた考えをプログラムといいます。

セルフトーク(ひとりごとや、心の中のつぶやき)

人は様々なセルフトーク(ようするにひとりごとや、心の中のつぶやき)をしていますが、このセルフトークはこれまでインプットされ、組み込まれてきたメッセージの影響を強く受けています。

セルフトークは普段何気なく行っている事でありますが、ある一定の事柄についてのセルフトークを繰り返せば繰り返すほど、その考えを信じるように強く脳に働きかけることになります。

例えば、「私は価値のない人間だ」と、言い続けているとその事があたかも真実であるかのように身に迫って感じられてきます。

こういったセルフトークをする事は、脳に組み込まれたプログラムを強化する働きがあります。

ネガティブなセルフトークを変える

セルフトークによって、脳に組み込まれたプログラムが強化される、と言う事は、それをやめて、別のセルフトークをすればプログラムそのものを変える事ができるのです。

そのために必要な事は、普段何気なく行っている自分自身のセルフトークを監視する事。そして、自分自身のセルフトークを自覚したら、意識的にそれを変えていき、新しいセルフトークを習慣化する事です。

awsの各種サービスの概要

とりあえず、AWSにどんなサービスがあるのか改めて確認してみている。 途中までかいて力尽きたので後日更新する予定です。

コンピューティング

EC2 (Amazon Elastic Compute Cloud (Amazon EC2)

AWSが提供する仮想サーバ。

ELB (Elastic Load Balancing)

AWS上で利用できる負荷分散サービス。トラフィックを複数のターゲット(EC2、Lambda、コンテナ)に自動的に分散する事ができる。

ELBはAWSが提供する負荷分散サービスの総称で、負荷分散のサービスは3種類ある。

  • Application Load Balancer (ALB)
  • Network Load Balancer (NLB)
  • Classic Load Balancer (CLB)

Elastic Beanstalk (AWS Elastic Beanstalk)

AWSが提供する、PaaS (Platform as a Service)型のサービス。
詳細は要確認。

Lambda (AWS Lambda)

サーバレスアーキテクチャ型のアプリケーション実行基盤を提供するFaaS (Functions as a Service)サービス。
アプリケーションコードをLambdaにデプロイするだけで、アプリケーション実行環境が構築できる。Lamdbaでは、関数を実行している時間のみ課金される。
特定のイベントをトリガーにして、短時間の処理が実行するようなケースに適している。
※めちゃくちゃ処理に時間がかかるようなバッチなどの実行には向いていない

AWS Batch

バッチ処理を行うためのサービス。 一般的な、定型処理をジョブスケジューラーによって実行していく「夜間バッチ」のような用途ではなく、膨大な量のコンピューティングリソースを、コンテナ型のアプリケーション実行環境で並列実行するための仕組みを提供するサービス。
大規模な科学計算やシミュレーションなどの用途で利用される。

ECS (Amazon Elastic Container Service (Amazon ECS)

コンテナ型のアプリケーションを実行する、コンテナオーケストレーションサービス。

EKS (Amazon Elastic Kubernetes Service (Amazon EKS)

ECSと同様にコンテナオーケストレーションサービス。
ECSとの大きな違いは、コンテナオーケストレーションのエンジンにKubernetes(K8S)を採用している点である。

Fargate (AWS Fargate)

コンテナ用のクラスタを構築し、コンテナを実行するためのコンピューティングリソース。
ECS、EKSの両方で利用可能。
コンテナ用のクラスタはEC2でも構築できるが、Fargate自体のパッチ適用や、ウィルス対策などホストレベルでのセキュリティ対策はAWSによって実施されるため、ユーザーはホストレベルでは運用を意識する必要がない。

ここ最近で描いたもの

ここ最近楽器もたまーに描いています。 が、楽器は細かいパーツを描くのが難しいですね。 集中力がないので、ざっくりした形を描くだけで割と根を上げてしまっています。

f:id:uc_ebuc:20200910125613j:plain

サックスのマウスピース単体を取り上げてみても、微妙なカーブをうまく描けていなかったり、リガチャーの周りとか結構難しいデスネ。 f:id:uc_ebuc:20200910125555j:plain

人物をモデルに色々描いています。 f:id:uc_ebuc:20200910125610j:plain f:id:uc_ebuc:20200910125552j:plainf:id:uc_ebuc:20200910125558j:plainf:id:uc_ebuc:20200910125603j:plain

うーん。もっと練習しなければ!

php: phpspreadsheetでシートのクローンができない。

テンプレートシートをもとに、複数のシートを生成する処理を実装しようとしましたが実装できませんでした・・・・
詳細は省略しますが、おおまかな処理の流れは次の通りです。

  • Excelブックのオブジェクトを生成する
  • テンプレートのExcelを読み込む
  • ループ処理
    • テンプレートシートをクローンする
    • クローンしたシートをもとにシートを生成する
    • Excelブックオブジェクトにシートを追加する
  • Excelブックオブジェクトの内容をlファイルに書き出す

テンプレートシートのオブジェクトをクローンしたい理由としては、ファイルの再読み込みを避けて、処理のパフォーマンスを向上させたいというものがありました。

ですが、実際にやってみるとこれが「sheet not found 」といったような内容のエラーが出てしまい、どうやってもオブジェクトの複製をする事ができませんでした。現時点の最新である1.14.1でも試してみましたが、問題は解消しませんでした。
どうも、セルのスタイルや数式があるとうまく処理できないようです。githubやstackoverflowを調べてもみましたが、問題を解決する情報にはたどり着きませんでした。

パフォーマンスを気にしなければ、シート生成ごとにテンプレートExcelを読み込み直す事で実装も可能でしたが、何十個もシートを生成する必要ある場合には、ファイルの読み直しは現実的ではありません。
私の実装しているケースでは10倍以上処理時間に差が出たので、テンプレートを毎回読み直すのはさすがに無理があります。

と言う事で、解決方法が見つからなかったので、そもそもテンプレート読むのをやめてphp上で最初から動的にシートを生成する形に方向転換しました。

最初からそうすれば良かった(^~^;

ピアノレッスンのおさらい

ii-V-Iの練習

3-5-7-9のルートレスのボイシングを練習する時に、V7を7-#9-3-#5で弾く時、#9を♭9に降ろすことで音の流れを作りだせるので練習してみると良さそう。

f:id:uc_ebuc:20200906222519p:plain

ちなみに、Iも同じように内声を動かすとより変化があって面白そう。 譜例では#4を3に解決させています。 が、若干うろ覚えなので改めて確認必要。

f:id:uc_ebuc:20200906223240p:plain

ラテン音楽

レッスンの内容をもとに簡単なバッキングパターンを作ったので、それを一通り弾けるようにする。次の事にもあわせて取り組んでみる。

  • ベース食い気味で複数の小節にまたがった演奏が多用されるので、そういった部分意識する。
  • アンソニージャクソン、Danilo Perezの音楽を聴いてみてラテンのフィーリングに親しむ。
  • テンションやセブンスよりも、トライドを軸にバッキング作るとラテンっぽい明るさが出る(ポイントごとにその辺り弾き分けられるのが理想かな?)

バッキング

3-5-7-9, 7-5-3-9の基本のパターンは眠っていても弾けるくらい慣れる事。 ※大袈裟だけど、そのくらい慣れ親しむのが大事と言う事で。

  • コードを弾く時のトップノート大事(自分で思っているより他の楽器の人が聴いているとのこと)
  • コード音の隣の音も試してみる(コードを押さえている指を軸に周りの音を使うと効率が良い?)
  • バッキングパターンを全部弾いたり、削ったりでバリエーションを作る。

イントロ

先ずは、On The Sunny Side Of The Street のイントロを題材に、次の事を意識して練習する。

  • メロディーにかぶせず、メロディーの手前で区切る。
  • なんとなくで間延びさせない。
  • 曲の練習する時に一緒に練習する。
  • 曲に入る直前まで慌ただしくしない(8小節のイントロやるなら、残り4小節は大人しめに)
  • セッションやバンドで演奏する時は、イントロで『テンポ・リズム感を伝える事』を意識する(ソロはお好きなように)。
  • 慣れている曲はコードを少し遊んでみると良さそう。
  • 右手でコード弾くだけじゃなくて、アルペジオとかで簡単なフレーズ入れてみても良さそう。

練習曲

The Night Has A Thousand Eyes(黒本で練習中)

また、ラテンで演奏するセクションのリズムを見失いがちなので、いろいろな人の演奏を聴いてリズムに慣れ親しむのと同時に、もう少し弾きこむ必要あり。 GM7のセブンスちゃんと弾かずにG7にしてしまっていたり雑だったので、ちゃんと弾こう・・・

Night And Day

この調整で(どの調子?)弾きこんで慣れていこう。 ラテンのリズムで弾く練習も進めよう。

On The Sunny Side Of The Street

イントロの項で書いた通り、イントロの題材として練習に取り組む。 テーマやアドリブはそこまで苦手意識はないので、あとはバッキングで遊んでみる。

PHP: strposで文字の出現位置を取得する

strposを使うと、指定した文字の最初の出現位置を取得する事ができます。
下記の例は、文字列「abcdef」の中の「b」の位置を取得しています。

<?php
$haystack = 'abcdef';
var_dump(strpos($haystack, 'b'));

実行結果

int(1)

注意点

文字列の先頭1文字目に該当する場合、返り値は「0」を返します。
一方、指定した文字が文字列の中に存在しない場合には、falseを返します。

文字が見つからない場合に処理を分けたい場合、次のような記述はNGです。なぜかと言うと、下記のような記述をすると厳密な比較が行われないため、返り値が「0」の場合も「false」と同じ判定結果になってしまうからです。

NGの例

if (!strpos($haystack, $needle)) {
    // 何かの処理
}

ただしくは下記の通り厳密な比較を行う必要があります。

OKの例

if (strpos($haystack, $needle) === false) {
    //
}

macのchromeでスクリーンショットを撮る

Chromeは標準で画面キャプチャーの機能があります。スクロールしないと表示しきれないような長さのページでも全体をキャプチャーする事ができてとても便利です。

キャプチャーの仕方

デベロッパーツールを開く

option + command + I

コマンド入力ウィンドウ?(名称不明)を開く

shift + command + P

こんな感じのウィンドウが表示されます。

f:id:uc_ebuc:20200903222207p:plain

そこで下記を打ち込みます。

full

下記の通り、コマンドが絞り込まれている状態でエンターを押します。

f:id:uc_ebuc:20200903222318p:plain

そうすると、タブ内の画面がキャプチャされて、ダウンロードフォルダーに保存されます。