コズログ

コズァドットハテナァブログゥドットッッジェーピゥィー

クラシックギターの練習(2017年6月の第1週)

クラシックギターの練習メモです。

現在「改訂新版 カルカッシ・ギター教則本 溝淵浩五郎 編著」を練習しています。

先週の課題曲

ラグリマ

課題曲じゃないと思ってたけど弾くことに!

練習してたからよかったけど!

来週もやるでー?

ト長調 ギャロップ

ギャロップなのでテンポが速くて辛い!

無理して速く弾くと変な音がでたり、そもそも音がでなかったりする。

  • 弱起の音を強く出しすぎ、弱くして次の小節から実質スタートする気持ちで。

ト長調 二重奏の1つ目

ファーストは単音だけで簡単かと思いきや・・・2弦3フレットのレと3弦4フレットのシの重音を素早く押弦できなくて悶絶。

小指が不自由でたまらない!

  • セカンドは、ファーストの弱起の次の音から入るので、しっかりとアイコンタクトしてからテンポをとってスタートすること。
  • セカンドはpで弾く音を強めに出す。

ト長調 二重奏の2つ目

いきなり重音の上行スラーから始まって、さらにレとシの押弦を強要されるヤバイ曲。

安定の爆死!

  • 上行スラーの音をきっちり出す。(わかってたけどできなかった!)
  • セカンドは、ファーストの音がない(休符の部分だったっかな?)部分で強めに音をだす。

今週の課題曲

今まで弾いた曲と比較すると、難易度が高い曲とのこと。

ロマンスの後半よりは難易度は低いと先生は言っていたが・・・速度がアレなので爆死案件だと思う。

ちなみに、まだロマンスの後半をキレイに弾けない!

その他

来月、先生のミニコンサートがあるらしい。

急遽きまったとか。

そんな急に決まったのにコンサートできるって所にプロの凄さを感じる。

最近のPHPときたら・・・

テンプレートエンジンのくせに最近のPHPはオブジェクト志向やらDIやらイキり始めた件 - Best effort JavaScript

ここ数年の話ですが、テンプレートエンジンのくせに最近のPHPは、

  • 引数や戻り値の型指定ができるようになった。(スカラータイプヒンティング含む。)
  • クラス内にクラスを定義できるようになった。(無名クラス)
  • ずいぶんと関数プログラミング的なコードもかけるようになった。
  • なんか速くなった。
  • Composerが便利になった。

ことが個人的には驚きです。

中でも、無名関数なりLambdaなり手続きをそこそこ自由に作れるのは、オブジェクト指向プログラミングのコンテキストにおいても、便利になったといえると思います。

とはいえ、マルチスレッド対応やメタプログラミングには弱いのでその辺も強化して欲しいところです。

そろそろ「function」って書かなくてもいいようにしてくれてもいいのよ?

余談ですが、PHPの気持ち悪い配列について。

シンタックスシュガーが無い時は、ハッシュやリストをラップしたオブジェクトを利用していたので、使う機会は少なかったのですが、最近は楽なので配列使うようになってしまったぜ・・・。

特定のインターフェイスを実装したオブジェクトなどを集約する場合は、コンテナクラスを作ってタイプヒンティングかけないと気持ち悪くてしゃあないですけどね!

Docker(Compose)でPHP+MongoDB環境を作る時のメモ

PHP7+Apache+MongoDB環境が必要になったので、Dockerで環境構築しました。

2017年5月25日時点でのメモです。

MongoDB

以下に公式のリポジトリがあるので、テキトウにタグを指定してDockerfileを作りました。

今日時点で安定版の3.4.4を選択しました。

https://hub.docker.com/r/_/mongo/

FROM mongo:3.4.4

こんな感じ。

PHP-Apache

PHPも以下の公式リポジトリから入れます。

https://hub.docker.com/_/php/

今回は、apacheでいくので「-apache」付きのPHP7を選択し、以下のようなDockerfileを作成しました。

FROM php:7.0.19-apache

RUN apt-get update && apt-get install -y \
    libssl-dev && \
    docker-php-ext-install -j$(nproc) mbstring && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

RUN curl -L -O https://pecl.php.net/get/mongodb-1.2.9.tgz
RUN pecl install mongodb-1.2.9.tgz

PHPモジュールは、docker-php-ext-installの後ろに追加するのがお作法らしいです。(今回はmbstraingのみです。)

MongoDBのドライバ関連モジュールをインストールする際の注意点として、PHPのMongo系ドライバが2つあり、古い方は非推奨になっておるという所です。(古いMongoと新しいMongoDB、名前がややこしい・・・。)

なので、特に理由がなければ新しいモジュールを選択するべきです。

PHP: MongoDB - Manual

MongoDBモジュールのインストールは、マニュアルに書いてある通り、「pecl install mongodb」で行けると思ったのですが、パッケージが見つからないというエラーがでました。

updateしても改善しなかったので、直接ダウンロードしてインストールすることにしました。

PECL :: Package :: mongodb

冪等性を確保するためにもバージョン指定して入れたほうが良さそうなので、これで良しとしました。

インストール途中でエラーを吐いたので、libssl-devを追加しました。

あとは、php.iniに以下を追加します。

extension = mongodb.so

私はphp.iniをホスト側にマウントしています。(必要なら追記してください。)

私はphp.iniをゲスト側にコピーしています。(必要なら追記してください。)

COPY config/php.ini /usr/local/etc/php/

DockerCompose

最後にdocker-compose.ymlを編集してコンテナを制御します。

  mongo:
     build: "./mongo"
     container_name: "mongo"
     ports:
       - "27017:27017"
     volumes:
       - ./mongo/data:/data/db
  php-apache:
    build: "./php-apache"
    container_name: "php_apache"
    ports:
      - "60001:80"
    volumes:
      - ./php-apache/www:/var/www
    depends_on:
      - mongo

WEBサーバー(apache)をポート60001で待ち受けて、Mongoのほうはデフォルトの27017にしました。

MongoDBのデータを永続化するために、/date/dbをホスト側のmongo/dateにマウントしています。(データボリュームコンテナ使ってもええんやで。)

depends_onにて、php-apacheコンテナからMongoコンテナを参照できます。

全体的なディレクトリ構成

ディレクトリ構成はこんな感じです。

./
  |- docker-compose.yml
  |- php-apache
  |    |- Dockerfile
  |    |- config(php.ini)
  |    |- www
  |- mongo
       |- Dockerfile
       |- data

最後にビルドしてテスト

docker-compose up --build -d

をしてビルドしてコンテナ立てたら、PHP側からphpinfoなどを見てモジュールが有効になっているのを確認するとよさげです。

Vue pioneer 2016で地形を作ってみた

地形を作成できる有名なソフトはいくつかありますが、その中の一つである「Vue」を触ってみました。(Vue.jsではありませんよ!)

目的は、地形を作成するワークフローと、どのような地形を作ることができるのかの調査です。

とりあえずフリー版使ってみる

3D Software > VUE Pioneer 2016

Vueには、様々なバージョンがあるようでしたが、まずはフリーのPioneerを触ってみることにしました。

Vueはバージョン毎にインストールされているモジュールの数が異なるので、使える機能も違います。

Pioneerは、基本部分だけの機能となります。

さくっと触ってみた感じだと、以下の事ができました。

  • ハイトマップを利用しての地形作成。
  • ブラシによる地形の操作。
  • 遠景の地面や空の設定とマテリアルの割当。
  • 各要素の配置とレンダリング

ブラシにより地形の操作がある程度できるので、ハイトマップだけでは作成できない地形も作ることができます。

がしかし、一度メッシュをハイトマップでは作成できない形に編集すると侵食などの効果をかけることはできませんでした。

2Dモードと3Dモードのように区別されるらしく、地形に対して効果をかけれるのは2Dモードだけなようです。

以下、オーバーハングした地形を作成している公式の紹介です。

3D Software > VUE Pioneer 2016

フリー版でも色々な岩や石、木々やマテリアルが入っていますが、足りない場合はストアで買う事もできるらしいです。

採用するかどうか

もう少し使ってみますが、私の環境と現状では採用しないと思います。

  • インポート・エクスポートは、Complete版からでコストが気になる。
  • UE4へインポートもできるけど、基本的にハイエンド向きなので親和性が低い。
  • 地形を作るだけの目的だとオーバースペックすぎる。
  • わりと不安定。
  • World Machineほど、詳細な設定でハイトマップを作成できそうになかった。(ノードベースでも作成できるのかな?)

というのが主な理由です。

個人的には、生産性を高めるために、ある程度はプロシージャルで生成してくれて、ブラシでメッシュを変更するときにも、できるだけ自然に変更できるようなソフトを求めていました。

このような目的には、あまり効果が無いかなと思いました。

エコシステムなど技術的に気になるところですが、このあたりを触るのはまたの機会にしたいと思います。

f:id:koztks:20170524215741j:plain

地球上だけでなく、他の惑星っぽい感じな地形や風景も作れそうでした。

クラシックギターの練習(2017年5月の第3週)

感想

ラグリマは自分の中では結構弾けるようになったけど、先生には遠く遠く及ばない!

全ての曲において、先生が弾くと自分とは全く違う曲に聞こえるのだけど、ラグリマは特に違いがあると思った。

音自体の質も当然違うけど、音のつながりや絶妙な強弱、そしてそれらをコントロールする全体的な経験値と余裕が圧倒的に違うという感想。

今週

ラグリマ

  • 前半のセーハを慌てない。セーハに入る前にテンポを落として、ビブラートと共にセーハに入ると急がなくていい。

カルカッシ ト長調 valse

  • Aの重音部分は、スタッカートにしてもしなくてもいい。好みで。
  • Aで運指が悪い所がある。(今後は練習時に効率的な運指を考える。)
  • クレッシェンドをかける所はかける。
  • Cで、不協和音になる所があるので先行する音の指を話して消音すること。
  • ワルツなので基本的にゆっくりめで。(いつも速く弾きすぎる。)

再来週

来週はお休みなので、2週間ぶんの課題。

二重奏が・・・苦手なんだよねー。

ZBrushで岩というか崖の練習

ちょっと前から岩や石の練習をしていたのですが、本当にうまく作れません・・・。

そんな泥沼の中でも少しずつコツみたいなものはつかめてきた気がする!

f:id:koztks:20170520131120p:plain

全体的にわざとらしくてアカン感じです。

下のほうはテキトウになってるように見えるけど、テキトウにやりました。

地面とのつながりをイメージできなかったので・・・。

以下練習メモ

  • ブラシのサイズと強さを調整して常に影響範囲を考えてつくる。
  • ディテールは絶対に最後!ディテールつけるまえにクローンしておくといいのかも。

ZBrushで洞窟を作ってみたが・・・

前回あえなく爆死したZBrushでの地形作成ですが、諦めが悪い性分なのでなんとか挑戦しております。

「World Machine」などのTerrain系ソフトで作れば非常にリアルな地形が作れますが、いろいろ考えた結果、自分でモデリングしたいなと思いました。

  • Z軸(高さ)方向に複雑な地形やオーバーハングした地形が作りにくい。
  • 自動的に生成されるのが気に入らない。
  • 洞窟やダンジョンなどのレベルは結局モデリングする必要がある。
  • モデリングする時間を増やして上達したい。

というのが理由です。

そんなわけで、色々な資料や動画を見ながら、昨日はとてもとても小さな洞窟をモデリングしてみました。

調査のかいあってか、下手ながらもソレッぽくできたのですが・・・まだまだ納得いかないっ!

前回失敗した部分では、

  • スケールは気にしないことにした。最終的にBlenderに持っていって調整する。(ポリゴン数には気をつけようと思う。)
  • 大まかな形を作ってからディテールを作ることを徹底。(適切なブラシを選ぶ。)

というアバウトな感じで、なんとなく自分で納得して解決したのですが、最終的に大きい地形を作る時にどうしたらいいのかわかりません。

ZBrushで大きくて複雑なハイポリを表示するのはとてもキツイと思うので(私のPCじゃ無理です)、部分的に作成していくとして、最終的に統合させるのはどうしようかな・・・。

サブツール単位でパーツを管理して、リトポしてポリゴン数を減らし、その状態で統合するしかない気がしますが、有機的なメッシュの場合につなぎ目がうまく処理できるのかわかりません。

無限にポリゴンを増やせるなら楽なのに・・・。

あとマテリアルの割当や、各種マップが利用できるのかも調査していません。

全部UV展開して手で塗るとか死にそうなので、なんとかしたいです。

以下、ZBrushの練習メモです。

  • スムースブラシを使いすぎない。
  • ストロークとアルファの設定をないがしろにしていたので、適切に選ぶ。
  • サブツールをもっと効率的につかう。
  • インサートブラシが便利なので効率的につかう。
  • ブーリアンでさくっと形を作れる所は、面倒くさがらないでさくっと作ってから形を調整する。

本当に上手くならんわ~。