株の仕組みについてなんとなく理解できた

詳しくない人にとっては、何となく株というものが何なのか理解しづらい面もあると思います。

株の仕組みについて、何となく理解することができました。

株はなぜ売れるのか

株はなぜ売れるのかというと、基本的な理由としては「配当があるから」です。

株主というのは、言い換えると企業の資本金の共同出資者であり、お金を出資する代わりに、企業が利益を得たときに、その分け前を貰える権利を持つです。

議決権などもあるのですが、そこはメインではないと思うので割愛します。

企業が利益を上げる=もらえる配当金が増える=株式の価値が増大する

というのが、基本的な株式の原則です。

それで株の価値が上がったり下がったりするのです。

逆に企業の売上や利益が減少すると、配当金が減るので、株式の価値が下がるわけです。

しかし、株には無配の株も存在しています

では、なぜ配当がないのに株式の価値がつくかというと、企業が株主への還元をしない代わりに、企業の内部留保に回し、さらなる企業の成長を公約しているからです。

企業の価値を高めることで、還元がないけど、株の価値をあげているわけです。

株主は、企業が成長することで、将来の配当によるリターンがより大きくなることや、株式の価値が高まることで、売却益がより高くなるため、こういった無配の株でも成長する企業の株であれば購入がされます。

他の金融商品との比較

世の中には様々な金融商品が存在しています。

現金というのも一種の金融商品です。

銀行に現金を預けていると、僅かではありますが金利がつきます。

国債を買うと、償還期限まで保有していると、利息がつきます。

積立の保険を購入すると、利息がつきます。

株も所持していると、配当がつきます。

不動産は、活用することで賃貸料などの収益を得ることができる他、価格が変動します。

その他にも、現代の世の中には、無数の様々な金融商品が存在しています。

これらの金融商品を比較し、資産家は、自分の資産のポートフォリオを形成するわけです。

LaravelでReactはJQueryのようにそのまま読み込んで使うことができるか

最近流行りの技術で、ReactはLaravelでJQueryの代わりのように使うことができるかということで、気になる方がいると思います。

私もそう思い、簡単な導入ができるのかどうかを検討してみました。

やってみたこと

Laravelをインストールして、プロジェクトを作成

最初に表示されるwelcome.blade.phpのテンプレートを弄って、Reactのライブラリを読み込み、Reactの簡単なプログラムを作成してみる。

やってみた結果

駄目でした。

理由はというと、まず、Reactで、テンプレートに変数を埋め込むときに、以下のように書きます

{{ message }}

この表記が、Laravelの変数の表記と被ってしまうためです。

Reactで変数を受け渡そうと、上記の様な表記を書くと、Laravelのほうでエラーになってしまいます。

VueをLaravelにそのまま導入しようとする場合と同じですね。

しかし、これは特別な設定をしないままJQueryを使うようなイメージでReactを使う場合で、設定をきちんとすればLaravelでもReactを使用することは可能ですが、少々ややこしいです。

LaravelでVue.jsは普通に(JQueryみたいに)使えるか検証

LaravelとかのPHPのフレームワークを使ってアプリケーションを開発しつつ、フロントエンドの部分はJQueryでなくVue.jsを使って開発したい・・・。

そういう事を考える人は多いと思います。

かなり基本的なことですが、それができるのかどうかを検証してみました。

やってみたこと

  • Laravelをインストール
  • 最初に表示されるwelcome.blade.phpのテンプレートを貪って、Vue.jsのファイルを読み込んで、実装できるかどうか検証する
  • まずは、チュートリアルにあるようなHello、Vueのような表示させるだけの処理を、welcome.blade.php上に実装してみる。

結果

上記の手順をやってみると、駄目でした。

何故かというと・・・

Vueの記法と、Laravelの記法が衝突してしまう

ということです。

具体的にいうと、Vueの場合で変数を扱うのに、htmlの中に

{{ message }}

こういう表記を使うわけですね。

この表記なのですが、LaravelでViewに変数を渡す場合の表記と同じなのです。

つまり、そのままだと、Vueのhtmlの記法とLaravelの記法が衝突してしまい、うまく動作しないというわけです。

Vueの記法の変数の部分が、存在しないみたいなエラーが、Laravelのほうから吐かれてしまうわけです。

しかし、これは、あくまでLaravelのView側でJQueryを使うみたいに気軽に使えるかという点での話なので、Laravel自体はVueに対応しているので、それ用の設定をすれば使うことは可能です・・・が、少々ややこしいです。

【AWS】EFSとFSxの違い

AWSについて勉強をしていて、EFSとFSxの違いについてよくわからなかったので、メモです。

調べた結果としては、どちらもファイルシステムなので、共通ファイルサーバとかに使うイメージだと思いますが、わかりやすい違いとしては、EFSは、LinuxのNFSという技術を使っているので、つまりはLinuxやUnix系のサーバで使うということですね。

これに対してFSxは、Windowsから使用することができるので、サーバがWindows系の場合にはこちらを選ぶのかなというイメージです。

FSxには、Windows向けと、HPCというハイスペックのコンピュータ向けのファイルシステムの2種類が存在しているみたいです。

その他、FSxはフルマネージドなので管理がしやすいという特徴があるみたいです。

それ以外の違いについてはよく分かりませんでした。

cakephp3でファイルをサーバからダウンロード後に削除する方法

cakephp3で、ファイルをサーバからダウンロード後に削除する方法についてのメモ書きです。

Cakephp3で、サーバ上からダウンロードするには

$this->response->withFile(

メソッドが便利ですが、実行した時点でファイルが出力されてしまうので、その後サーバ上のファイルを削除しようとした場合、その後にファイル削除しようとした場合にうまく行かずに困っていました。

Laravelだと、

response()->download($pathToFile, $name)->deleteFileAfterSend(true)

みたいな方法でダウンロード後削除することができるのですが、cakephpではなく、どうしたものかと…。

それで色々調べたところ、cakephpの上記のメソッドを使わずに、PHPに直接記述したダウンロードする方法を取ることで解決しました。

phpに直接書く場合は、

//ファイルダウンロード
header (“Content-disposition: attachment; filename=wa3_db.sql”);
header (“Content-type: application/octet-stream; name=wa3_db.sql”);

 readfile($fileName);

 //ファイル削除
 unlink($fileName);

みたいなかんじで、readfile後に、unlinkすることで対処できました。

Composerについて分かりやすく解説

phpを使って開発をしていると、最近で必ず出てくるのがComposerです。

初学者の人には、そもそもComposerってなんぞ?っていうかんじでとっつきにくいのではないでしょうか。

自分の中で、最近腑に落ちた理解の仕方があったので書いておきます。

まず、そもそも一般的なComposerの説明とは

Composerについてよく知らない人が調べると出てくる説明は「PHPのパッケージ管理用のソフト」ということなのですが、これだけ聞いても正直良くわかりません。

PHPのパッケージ管理用のソフト?は?

と自分も思っていましたが、最近貪っていて、意味がわかってきました。

それは・・・・

特定のディレクトリ以下に、そのプロジェクトで使う必要なライブラリや設定を閉じ込める仕組み(を提供するソフト)

ということです。

まず、Composerを使わないと、例えば特定のプロジェクトでPHPのライブラリをインストールするときに、あるプロジェクトで使ったライブラリのバージョンと、他のプロジェクトで使うライブラリのバージョンが違うとすると、困ったことになりますね。

Composerの場合、まずそのプロジェクトのディレクトリ以下に、そのプロジェクトに必要なライブラリを、PHP自体とは切り離して必要なライブラリ(PHPのコアな部分を除く)をインストールしてしまうわけです。(インストールするというか、ファイル群を設置するという方が適切かもしれません)

Composerを使ってプロジェクトを作成すると、そのプロジェクトフォルダのvendorというフォルダ以下に、プロジェクトでは直接触らないようなライブラリやファイルが大量に入っていると思いますが、この部分がComposerを使って導入されたライブラリのまとめの部分です

そして、package.jsonに設定を書いておくことで、設定を変えたい場合はComposerでアップデートをかけることで、該当のプロジェクトフォルダ以下のphpのライブラリだけが更新されます。

サーバごとではなく、プロジェクトのフォルダごとに必要なPHPのライブラリ一式をまとめることができるようになるわけです。

つまり、1つのサーバに1つのシステムしか入っていない場合はComposerのようなソフトは必要ないわけですが、一つのサーバに複数のサイトやシステムを管理するようなシステムの場合、このようなシステムは重要になりますね。

php+ajaxでCSVをダウンロードした場合の文字化け対処法

以下の問題を解決するのに苦労したので、備忘録として書いておきます。

発生した問題

phpでそのままCSVを生成して出力した場合は問題なく出力できる

ajaxを使って、生成したCSVをダウンロードすると、エクセルで開いた場合に文字化け

出力されたCSVファイルを、テキストエディタで開くと、ファイルの文字コードがUTF-8になっている?(普通にPHPで出力した場合はsjis)

前提の環境

サーバ側で出力しているCSVはPHPで生成し、文字コードはsjis

ブラウザはIE11

今回やろうとしていたのは、PHPでそのまま出力するのではなく、ajaxでダウンロードするパターンだったので、文字化けの対処法を探すのに苦労しました。

以下の記事のおかげで解決できました。

JavaScript 文字化けしないファイルの出力法 | グルーヴであなたのビジネスは加速する

サンプルコード(上記のサイトからそのまま抜粋)

ar csv = 'ここにCSVのデータを入れる';

var link = document.createElement('a');
var bom = new Uint8Array([0xEF, 0xBB, 0xBF]);
var blob;

if (window.navigator.msSaveOrOpenBlob) {
  // for ie
  blob = new Blob([bom, csv], {type: 'text/csv'});
  window.navigator.msSaveOrOpenBlob(blob, csvName);
} else if (window.webkitURL && window.webkitURL.createObjectURL) {
  // for chrome (and safari)
  blob = new Blob([bom, csv], {type: 'text/csv'});
  link.setAttribute('download', csvName);
  link.setAttribute('href', window.webkitURL.createObjectURL(blob));
  link.click();
} else if (window.URL && window.URL.createObjectURL) {
  // for firefox
  blob = new Blob([bom, csv], {type: 'text/csv'});
  link.setAttribute('download', csvName);
  link.setAttribute('href', window.URL.createObjectURL(blob));
  link.click();
}

やっていたこととしては上記と同じで、ajaxで取得したCSVデータをwindow.navigator.msSaveOrOpenBlobで開くというものだったのですが、new Blobで開くblobデータを作成する場合に、テキストの先頭にBOMをつければよいというものでした。

自分の場合は、この方法で解決することができました。

セッションの概念について理解が進んだ

PHPやサーバサイドのプログラミングをしていると、セッションという概念がよく出てきますが、分かるようで分からないような概念だなと思っていました。

サーバ側でセッションを保持するとか、それってつまりどういうこと?

という風に思っていたのですが、要はセッションというのは、特定のユーザに紐づく一定時間の間保持する情報をデータとして保持する仕組みということです。

その仕組みは、phpのセッションを使うのであれば、PHPのミドルウェアの中にプログラムで作られていますし、フレームワークのセッションの仕組みであれば、フレームワークのライブラリの中でプログラムで実装されています。

セッションがサーバ側でデータを保持する仕組みというのは、要はデータであれば何でもいいので、特定のフォルダ以下にファイル形式で書き出してある場合もあれば、データベースで保持する場合もあります。

PHPはデフォルトでは、ファイル形式で特定のフォルダ以下に書き出す形式なので、ファイルで書き出す形式が多いようです。

PHPのフレームワークのCakephpの場合、デフォルトの設定ではファイル形式で書き出しますが、設定を変更することでデータベース側でセッションを持つような仕組みにすることも可能です。

まとめ

セッションというのは、一定の時間の間だけサーバ側で特定のデータを保持する仕組みのこと。

そのデータを保持する形式は、ファイル形式の場合もあればデータベース形式の場合もある。

Node.jsについて理解が少し進んだ

今や様々なところで使われているNode.js。

そもそもこれが何なのか、今ひとつ理解できていない(使ってはいるものの、イメージが沸かない)状態だったのですが、ようやく理解が進みました。

それはどういうことかといいますと、「特定のディレクトリ以下に閉じ込めたJavascript実行環境」です。

どういうことかと、Javascriptのライブラリなどを一式準備するとき、必要となるライブラリなどが一式ありますが、それが、サーバ全体で共有するようなイメージだと、プロジェクトによって、必要なライブラリやバージョンが異なったりするため、競合が起こり、管理が大変になります。

それが、特定のディレクトリ以下に一式をすべてまとめられて単位で区切られていれば、プロジェクトごとにバージョンが異なっていても競合を起こすことはありません。

それを管理するのが「npm(node package manager)」です。

phpでいうcomposerみたいなかんじですね。

linuxの場合、yumでパッケージ管理をしていると、サーバ全体のライブラリが更新されたりしますが、npmの場合、特定のディレクトリ(npmを実行した環境)以下に全てまとめられ、それは主にプロジェクトごとに作成されます。

このことが当たり前っちゃ当たり前ですが、npmを実行してもバックグラウンドで何が実行されているかが分かりにくいため、ようやく理解することができました…。

nginx起動時のエラーの対処メモ

使っているサーバがkusanagiなのですが、nginxを起動時にエラーではないのですが、謎のwarningが出たのですが、原因について調査したのでメモです。

実行しようとしたコマンド

kusangi nginx

※ kusanagiでの、nginxの再起動コマンドです。

表示されたワーニング

kusanagi nginx
Nginxを使用します。
nginx: [warn] conflicting server name "default_server" on 0.0.0.0:80, ignored
nginx: [warn] conflicting server name "default_server" on 0.0.0.0:443, ignored
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
完了しました。

nginxの再起動自体は完了していますが、ワーニングが発生しています。

問題の場所がどこかが分からないんですよね…

解決した方法

cd /etc/nginx/conf.d

使っているサーバで、nginxの設定ファイルがあるディレクトリまで移動します。

_httpd.conf

というファイルがあり、中身を見ると

 ## default HTTP
  2 server {
  3     listen       80;
  4     server_name  default_server;

となっています。

_ssl.conf

というファイルがあり、中身を見ると

## default SSL
  2 server {
  3     listen       443 ssl;
  4     server_name  default_server;

となっています。

このdefault_serverというのが、ワーニングが出ている原因になっているようです。

考えたところ、この_httpd.confと、_ssl.confという設定ファイルは、読み込まれているものの無視されているようなので、ファイルをバックアップだけ取って、削除しました。

その後、nginxを再度再起動したところ

[[email protected] conf.d]# kusanagi nginx
Nginxを使用します。
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
完了しました。

今度はOKでした。

サーバ上のサイトも問題なく見れました。

何かの際に、不要な上のファイルが生成されて残っていたようで、削除することでワーニングが出なくなりました。

※ 同じ現象で対応される場合は、バックアップだけはきちんと取っておくことを推奨します。

ローカルのMAMP環境でのlaravelのmigrate時MySQL接続エラーに対処

MAMP環境で、Laravelでphp artisan migrateを実行したところ、以下のエラーが出ました

No such file or directory (SQL: select * from information_schema.tables where table_schema = ○○○ and table_name = migrations and table_type = ‘BASE TABLE’)

データベースの接続を.envファイルには設定できています。

調べてみると、/config/database.phpにsocketの追加が必要なようです。

MAMPでは、ソケットが以下の設定になっていました。

Socket/Applications/MAMP/tmp/mysql/mysql.sock

これを、/config/database.phpに追記します。

'mysql' => [
            〜省略〜
            'unix_socket' => env('DB_SOCKET', '/Applications/MAMP/tmp/mysql/mysql.sock'),
       〜省略〜
]

上記に修正後、再度 migrationを実行すると、今度は問題なく実行することができました!

Vue3で単一ファイルコンポーネントにpropsで値を受け渡す方法

Vue3で、単一ファイルコンポーネントにpropsで値を受け渡す方法についてのメモです。

親コンポーネント側の記述

下記では、Controllerから埋め込んだidという変数を、子コンポーネントのTestComponentに渡しています。

<div id="app">
    <test id="{{ $id }}"></test>
</div>

子Component側の記述

子Component側が、受け渡された値を使用するには、propsで名前を指定する必要があります。

<template>
    <div>親コンポーネントから渡された値:{{ id }}</div>
</template>

<script>
    module.exports = {
        props: ['id'],
        data() {
            return {
                ''
            }
        },
    }
</script>

laravel8のVueをVue2からVue3にバージョンアップした

作っていたサイトのLaravelと使っていたVueのバージョンが2系だったのから3系にバージョンアップしました。

以下、手順についてのメモです。

Vueのバージョンの確認方法

プロジェクトフォルダで

npm list vue

[email protected]

2系な模様。これを3系に上げたい

package.jsonの編集

プロジェクトフォルダのpackage.jsonを編集します。

まずは編集前に、package.jsonをバックアップ後、以下の記述を削除


"vue": "^2.6.12",
"vue-loader": "^15.9.6",
"vue-template-compiler": "^2.6.12"

Vue3のインストールを実行

Vue3のインストールをnpmで実行します。

npm install -save-dev [email protected]

その後、再び vue のバージョンを確認

npm list vue

[email protected]

Vue3系に上がってる!

num run dev を実行。

変なエラーが出る。丁寧に以下のコマンドを実行しろということ。

npm install @vue/compiler-sfc [email protected]^16.1.0 –save-dev –legacy-peer-deps

上記を実行後、npm run devを実行。

問題なく実行できました。

そして、あとはアプリ側のVueのソースを、Vue3のプログラムに書き直します。

これは、ここのサイトを参考にさせていただきました。

Vue 3 を Laravel 8で使う方法(npm) | console dot log

これで、うまく行った・・・かと思いきや、ローカルではうまく動いたのに、本番環境ではテストプログラムが動作しません。

散々調べた挙げく、原因が分かりました。

CDNのキャッシュ

Laravel + Vueでは、npm run devで、app.jsをビルドするのですが、

これが、古いファイルがCDNにキャッシュされてエラーになっていたのが原因でした。

CDNのキャッシュをクリアすることで、無事に表示されることになりました。

と、ここまででようやくLaravel8 + Vue3で基本的なプログラムが表示できたのですが、スタート地点に立つだけでも大変ですね・・・。

Laravel+Vueで、Componentを更新しても反映されない

Laravel8+Vueでサイトを構築中、VueのComponentのファイルを更新しても、何故か画面に反映されなくて困りました。

具体的にいうと、デフォルトでLaravelでVueを有効にすると入ってくるExample Componentがあります。

ファイルの場所は、Laravelのルートディレクトリ以下の

/resources/js/components/ExampleComponent.js

があります。

このファイル内容をテストで更新してみたのですが、画面に反映されないのです。

謎…。

で、調べてみたところ、ルートディレクトリで

npm rum dev

をしないと更新されないということ。

なんだそれ、分かりにく・・・

しかし試しに実行で、エラー

Error: Cannot find module ‘../package.json’

で、調べてみると、node_modueを再インストールしてみたらいいということです。

rm -rf ./npm_modules

npm install

で、node_moduleを再インストールで、

npm rum dev を実行

今度はエラーがでず・・・

で、サイトを見に行くと、、、、

更新されていない orz

で、ブラウザのキャッシュを削除すると・・・・

更新されました!!

というわけで、分かりにくかったですが、何とかComponentを更新するところまではたどり着きました。

ただこれだけのことで、最初は大変・・・

MacでLacieの外付けHDDを初期化する方法

  • 2021年5月20日 7:48 AM
  • Mac

Macでタイムマシンを使い、全体のデータのバックアップを取るようにしていたのですが、Macを新しいマシンに買い替えた後、一度Lacieの外付けHDDを初期化しないといけなくなったので、やり方のメモです。

1.ディスクユーリティティを開く

Launchpad→その他→ディスクユーティリティを開きます

Lacie の外付けHDDの初期化

左メニューに、外付けHDDが認識されていれば、LACIEが表示されます。

その中から「KACIE SETUP」を選択し、「消去」を選択します。

これを実行した後に、タイムマシンを起動してバックアップディスクを選択すると、初期化したLACIEの外付けHDDを選択できるようになりました。

Windows7をWindows10にバージョンアップした場合、Office2007は使えるのか

妹の家族が、仕事で家のPCがWindows7なのをWindows10にしたので
メモです。

まず、Win7をWin10にバージョンアップするのは基本無料でできるみたいです。

Windows 10 のディスク イメージ (ISO ファイル) のダウンロード

懸念点として、Win7に入っているOfficeが2007(Excel2007、Word2007)
なので、それがWin10にバージョンアップしても使えるのかというのが
気になるところでした。
(また、パワーポイントだけなぜか2010でした)

調べたところ、基本使えるということみたい(サポート自体は終了している)
なのですが、保証はできないということみたいでした。

Office製品のライセンス情報を確認したところ、製品のライセンス自体はきちんと登録されているという状態でした。

バージョンアップがうまくいかなかった場合を想定して、一応
システムイメージを作成する形で、万が一うまくいかなかった場合も
想定してバックアップはとっておきます。

バックアップの方法は、以下のサイトなどが参考になりました。

Windows 7を外付けHDDにバックアップする方法。10での復元方法まで丸わかり【Windows Tips】 | できるネット

しかしここで、外付けのHDDが必要になり、電気屋で外付けのHDDを購入しました。

私が購入したのは以下の製品です。

出費が6000円ほどと、微妙な出費。しかし、これで全体のバックアップを取っておけば、最悪失敗しても戻せるので、安心感が違います。

バックアップはシステムイメージの作成で全体のフルバックアップを取ったので、これにPCの性能が微妙だったのもあり、10時間ほどかかりました。

結果から言うと、後のバージョンアップよりも、バックアップに最も時間がかかった形になりました。

その後、Windows 10 のディスク イメージ (ISO ファイル)し、更新を実行します。

これにはそれなりに時間がかかったものの、特にトラブルなくアップデートが完了しました。

その後、Windows10を起動して確認したところ・・・

特に問題なくOffice2007、Office2010ともに起動することができました。

なので、結論として、妹夫婦のPCのWindows7→10への移行で、Office2007、Office2010は、Windows10へ移行しても問題なく使用することができました。

今後同じような状況になった方に参考になればと思います。

kusanagiでMariaDBのバージョンを10.1から10.3に上げた

使っているサーバで、Laravelでサイトを構築しようと思ったら、migrationでエラー。

原因としては、mysqlのバージョンが最新でないことが原因だそうです。

使っていたのがMariaDB10.1で、MySQL5.6相当

MariaDBを最新の10.3に上げることができれば、MySQLの5.7に相当するようです。

アップした方法

以下のサイトに解説がありました。

KUSANAGI バージョンアップ情報 8.5.0-1 | KUSANAGI

yum update -y
kusanagi upgrade mariadb 10.3

上記を実行する前に事前にバックアップは取っておいてねということなので、取っておきました。

参考にしたサイトは以下です。

MariaDBを10.3にアップグレードする際の手順と注意事項 | 己で解決!泣かぬなら己で鳴こうホトトギス

mkdir /tmpMDB10.1
mkdir /tmpMDB10.1/my.cnf.d
mkdir /tmpMDB10.1/postfix
mysqldump -u root -p --all-databases > /tmpMDB10.1/all_db_backup.sql
cp -r -a /etc/my.cnf /tmpMDB10.1/my.cnf
cp -r -a /etc/my.cnf.d/* /tmpMDB10.1/my.cnf.d/
cp -r -a /etc/postfix/* /tmpMDB10.1/postfix/

上記の方法でバックアップを行った後、バージョンアップを実行しました。

バージョンアップは数分時間がかかったものの問題なく終了し、各種サイト(WordPress、Laravel)はいずれも問題なく動いていることを確認しました。

また、目的であったLaravelのmigrationも問題なくできるようになりました。

cakephp3の日時のYMDフォーマットについて

cakephp3で、データベースから取得した日時などのオブジェクトのデータを画面に出力する場合に、YMD形式のフォーマットに変換するケースがありますが、yは大文字か小文字か、など微妙なところでよく分からなかったのでメモです。

例えば、以下のように使います。

$now = Time::parse('2014-10-31');
// '2014-10-31 00:00:00' と出力します。
$now->i18nFormat('yyyy-MM-dd HH:mm:ss');

cakephpで使われているYMDフォーマットについては、以下のページに詳しく解説がありました。

Formatting Dates and Times | ICU Documentation

上記のページから抜粋します。

SymbolMeaningPatternExample Output
Gera designatorGGG, or GGG
GGGG
GGGGG
AD
Anno Domini
A
yyearyy
y or yyyy
96
1996
Yyear of “Week of Year”Y1997
uextended yearu4601
Ucyclic year name, as in Chinese lunar calendarU甲子
rrelated Gregorian yearr1996
QquarterQ
QQ
QQQ
QQQQ
QQQQQ
2
02
Q2
2nd quarter
2
qstand-alone quarterq
qq
qqq
qqqq
qqqqq
2
02
Q2
2nd quarter
2
Mmonth in yearM
MM
MMM
MMMM
MMMMM
9
09
Sep
September
S
Lstand-alone month in yearL
LL
LLL
LLLL
LLLLL
9
09
Sep
September
S
wweek of yearw
ww
27
27
Wweek of monthW2
dday in monthd
dd
2
02
Dday of yearD189
Fday of week in monthF2 (2nd Wed in July)
gmodified julian dayg2451334
Eday of weekE, EE, or EEE
EEEE
EEEEE
EEEEEE
Tue
Tuesday
T
Tu
elocal day of week
example: if Monday is 1st day, Tuesday is 2nd )
e or ee
eee
eeee
eeeee
eeeeee
2
Tue
Tuesday
T
Tu
cstand-alone local day of weekc or cc
ccc
cccc
ccccc
cccccc
2
Tue
Tuesday
T
Tu
aam/pm markerapm
hhour in am/pm (1~12)h
hh
7
07
Hhour in day (0~23)H
HH
0
00
khour in day (1~24)k
kk
24
24
Khour in am/pm (0~11)K
KK
0
00
mminute in hourm
mm
4
04
ssecond in minutes
ss
5
05
Sfractional second – truncates (like other time fields)
to the count of letters when formatting. Appends
zeros if more than 3 letters specified. Truncates at
three significant digits when parsing.
S
SS
SSS
SSSS
2
23
235
2350
Amilliseconds in dayA61201235
zTime Zone: specific non-locationzzz, or zzz
zzzz
PDT
Pacific Daylight Time
ZTime Zone: ISO8601 basic hms? / RFC 822
Time Zone: long localized GMT (=OOOO)
TIme Zone: ISO8601 extended hms? (=XXXXX)
ZZZ, or ZZZ
ZZZZ
ZZZZZ
-0800
GMT-08:00
-08:00, -07:52:58, Z
OTime Zone: short localized GMT
Time Zone: long localized GMT (=ZZZZ)
O
OOOO
GMT-8
GMT-08:00
vTime Zone: generic non-location
(falls back first to VVVV)
v
vvvv
PT
Pacific Time or Los Angeles Time
VTime Zone: short time zone ID
Time Zone: long time zone ID
Time Zone: time zone exemplar city
Time Zone: generic location (falls back to OOOO)
V
VV
VVV
VVVV
uslax
America/Los_Angeles
Los Angeles
Los Angeles Time
XTime Zone: ISO8601 basic hm?, with Z for 0
Time Zone: ISO8601 basic hm, with Z
Time Zone: ISO8601 extended hm, with Z
Time Zone: ISO8601 basic hms?, with Z
Time Zone: ISO8601 extended hms?, with Z
X
XX
XXX
XXXX
XXXXX
-08, +0530, Z
-0800, Z
-08:00, Z
-0800, -075258, Z
-08:00, -07:52:58, Z
xTime Zone: ISO8601 basic hm?, without Z for 0
Time Zone: ISO8601 basic hm, without Z
Time Zone: ISO8601 extended hm, without Z
Time Zone: ISO8601 basic hms?, without Z
Time Zone: ISO8601 extended hms?, without Z
x
xx
xxx
xxxx
xxxxx
-08, +0530
-0800
-08:00
-0800, -075258
-08:00, -07:52:58
'escape for text'(nothing)
' 'two single quotes produce one' '

cakephp3でorder byにcase文を使用する

cakephp3で、order by 句にcase文を使用したいケースがあったので、メモです。

今回実装したかったのは以下の内容です。

特定のテーブルから、

(1) あるカラムがAまたはBのグループを先頭に持ってきて

(2) その後に(1)でないグループを表示

(3) (1)(2)が同じ条件場合は、別のカラムの値降順で表示

以下のような実装で実現できました。

// モデルでの実装の例
$query = $this->find();

// CASE WHEN ((カラム名 = A) or (カラム名 = B)) THEN 1 ELSE 2 END
$case = $query->newExpr()
                ->addCase(
                    $query->newExpr()->add([
                        'OR' => [
                            'カラム名' => A,
                            'カラム名' => B
                        ]
                    ]),
                    [1, 2],
                    ['integer', 'integer']
                );

$query->order([
    $case,
    カラム名 => 'DESC'
]);

/* これで、
select * from table order by (CASE when (カラム名 = A or カラム名 = B) THEN 1 ELSE 2 END), カラム名 DESC
と同じものが実行できました
*/

口内炎対策にチョコラBBよりもおすすめなルシーぜBBプラスとは

  • 2021年5月9日 1:19 PM
  • 雑記

以前、ダイエットをしていたらビタミン不足からか口内炎ができてしまい、薬局にチョコラBBを書いにいきました。

そこでチョコラBBを探していたところ、薬局の店員さんにおすすめされたのが「ルシーゼBBプラス」という商品です。

ルシーゼBBプラスは、チョコラBBと同じようなビタミンの補給効果がありつつ、価格がチョコラBBと比べて安く、お買い得な商品となっています。

ルシーゼBBプラス 280錠 1980円

チョコラBB プラス 250錠 4928円

サイトで販売しているのを比較するだけで、容量が多めなのに価格は安くなっています。

効用的にはほぼ同じかんじなようです。

さらに、薬局で買ったところ、ルシーゼBBプラス(280錠)は上記よりも多少安く1680円(税込み)でした。

チョコラBBプラスもAmazonとかだと安くは買えるものの、2500円以上となっています。

いわゆるジェネリックっぽい位置づけみたいで、宣伝広告にお金をかけないぶん安くなっているんだとか?ということです。

BUFFALO WiFi 無線LAN 中継機 WEX-733DHP/N 11ac 433+300Mbps コンセント直挿しモデル レビュー

中継機として、BUFFALO WiFi 無線LAN 中継機 WEX-733DHP/N 11ac 433+300Mbps コンセント直挿しモデルを購入して使ってみたのでレビューを書いてみたいと思います。

まず、この商品を買おうと思ったのは、中継機から中継機に電波を飛ばす目的で購入しました。

台所に一台、別の種類のBuffaloの中継機を買って使っていたのですが、廊下を挟んだ寝室にWi-Fiが届きにくいという現象があったためです。

そこで、寝室に中継機としてこの商品を設置して使ってみました。

ちなみに、台所に設置していた中継機は、BUFFALO WiFi 無線LAN 中継機 WEX-1166DHP2/N 11ac 866+300Mbps コンセント直挿し/据え置き可能モデル 日本メーカー【iPhone12/11/iPhone SE(第二世代) メーカー動作確認済み】という別の種類の中継機で、2年前に購入したモデルです。

それを購入してみたんですが・・・値段が5000円ほどで少々高い!

というわけで、別の商品を調べてみたらこの商品が見つかり、値段が2000円前後と、とても安かったのでこれを買ってみたわけです。

そして使ってみたところ、問題なく使えて、上記の異なる種類のBuffaloの中継機からの電波も問題なく飛ばすことができました。

値段が安く問題なく使えるので満足度は高いです。

上記の最初に買った中継機はなぜ値段が高いのかというのが気になるところですが、上記の中継機にはアンテナがついているということくらいでしょうか(アンテナを傾けることで電波を飛ばす向きを変えられる)

設定も特に難しい点はなく、コスパがお買い得なのでおすすめの商品です。

おすすめ度:5/5 コスパよく問題なく使えるのでおすすめ!

ヤリスのパノラミックビューモニタは必要かレビュー

先日車でヤリスを購入したのですが、買う際にオプションのパノラミックビューモニターが必要かどうか迷ったので、機能についてレビューしたいと思います。

まず、私自身ですが、迷った末に結局パノラミックビューモニターはつけました。

そして、しばらく使ってみた感想なのですが・・・

別になくてもいい

です。

まず、パノラミックビューモニターは、標準でついているバックカメラ以外に、真上から車を見下ろしたような視点でモニターに見える機能です。

しかし、結局どういう場面で必要になるかというと、主にバックするときにぶつけないように注意したいので必要になるといったかんじです。

しかし、バックがある程度なれてる人であれば、バックモニターで事足りるケースが多いです。

標準でついているバックモニターは、あると明らかに便利な機能なのですが、上から見る視点はというと・・・なくても困らないケースが多いです。

さらに、最新のヤリスでは、障害物へ距離が近づくと警告音がなる仕組みがあるのですが、これが便利で、このおかげでバックするときに困ることが少ないです。

パノラミックビューモニターが実際に役に立ったケースというと、広めの駐車場にバックで入れるときに、車を入れる箇所のラインが分かりやすいので、切り返しの回数が少なくなるケースはあるかもしれません。

しかし、オプション価格は3万円以上とそれなりにするので、そこまでいるかと言われると・・・正直微妙だと思います。

3万円が安いと思うか高いかと思うかで、必須ではないものの、駐車場へ入れるのが気持ち楽になる場合があるかも・・・というかんじなので必要だと思う人は購入を検討してみてもいいかもしれません。

Ezo Brick Series Quos 磁気式ワイヤレスモバイルバッテリー レビュー

iPhoneのモバイルバッテリーとして、「Ezo Brick Series Quos 磁気式ワイヤレスモバイルバッテリー」を購入したのでレビューをします。

この製品の特徴は、スマートフォン用のモバイルバッテリーなのですが、Mag Safeに対応しているので、iPhone12以降であれば、マグネット式で背面にくっつけて充電することができる特徴があります。

そのため、通常のモバイルバッテリーよりも使いやすいと思って注文しました。

感想を書くと、マグネット式で背面にくっつけて問題なく充電はできるのですが、iPhone12の場合、ケースを使っていると充電自体はできるものの、粘着しない(バッテリーの重さではずれる)という欠点がありました。

私はiPhone12をケース付きで使っていて、純正のAppleの充電器だと問題なくケースの上からでも充電して、さらに粘着もしたので、その点が不満です。

ケースをなしで使うと問題なく背面にマグネットで粘着するのですが、ケースを使う前提で使うと、Mag Safeに対応しているというメリットがかんじられず残念という感想でした。

レビュー 2/5

ケースに対応してればよかったのですが・・・。

それ以外は問題ないです。

ちなみに、5/8現在、何故か現在Amazonから商品ページが削除されています。

【ロマサガRS】単一属性術に、複合属性杖と単体属性杖はどちらが威力が出るか

ロマサガRSで、最新のイベントで、水属性の杖のブリムスラーブスが入手できるイベントがありました。

早速強化してみたところ、以下の性能です。

水属性杖のブリムスラーブス

この杖を、水属性術士のヴァッサールに装備させて見ようと思ったのですが、複合属性杖とどちらが術の威力が出るのか疑問に思いました。

例えば、水火の複合属性杖のフュージョンクラウンがあります。

水火属性杖のフュージョンクラウン

上記の2つの杖を装備した場合、どちらが水術の威力が出るのかを検証してみました。

検証

ヴァッサールに上記の杖を2つ装備させて、同じ術を使ってダメージを比較してみる

ブリムスラーブス(水属性杖)の場合

猛る雹雷

25000ダメージ×2

フュージョンクラウン(水火属性杖)の場合

猛る雹雷

29000ダメージ×2

ということで、検証してみた結果、単体属性術の場合でも、単属性杖と複合属性杖を比較した場合、特に単体属性杖のほうがダメージが出るわけではないことがわかりました。

そのため、術士が単体属性術士の場合で、武器が単体属性杖と複合属性杖がある場合、武器の術威力が高い杖を単純に選ぶほうがよいといえます。

【モンハンライズ】ウロトコルの場所

モンスターハンターライズで、ウロトコルのいる場所についての解説です。

ウロトコルは、依頼クエストの「溶岩洞のサブキャンプ・安全確保」でのターゲットとなっています。

サブキャンプの開放は必要なので、ウロコトコルを狩りに溶岩洞に向かうプレイヤーは多いかと思います。

ウロトコルの場所についてですが、以下の場所で確認できました。

溶岩洞

エリア13

下層 2匹(普通に上を通る通路から段差で左側の下に降りたところ)

エリア14

上層 2匹(そのまま上の階層で移動してエリア14まで行った場所)

下層 3匹(上層から飛び降りて下に降りれる場所)

ターゲットは8匹となっているので、上記の場所を回って、あと少し時間で復活するのを待てば達成できますね。

【モンハンライズ】百竜夜行攻略

モンスターハンターライズで、百竜夜行の攻略です。

百竜夜行とは

百竜夜行とは、モンスターハンターライズで新しく追加されたタイプのクエストで、様々な防衛設備を使って、次々と襲来するモンスターの群れと撃退するタイプのクエストです。

百竜夜行をクリアするメリット

百竜夜行をクリアするメリットとしては、クリア報酬として「百竜チケット」を入手することができることがあげられます。

加工屋で、百竜チケットを使って武器を特殊強化(百竜強化)することができます。百竜強化をすることで、武器のさらなる性能を引き出すことができます。

百竜夜行攻略のポイント

準備時間に、防衛設備のセットアップを行う

モンスターが襲来するまえに、防衛設備のセットアップを行うことが基本中の基本となります。

防衛設備には、床に四角の板が出ている場所で、上まで移動することで防衛設備をセットアップすることができます。

バリスタ、大砲、爆弾などを選ぶことができ、モンスターの通り道には爆弾を設置し、高台になっている場所にはバリスタや大砲を設置します。

バリスタ、大砲は手動か自動かを選択することができ、自動にすると、里の人が自動的にバリスタや大砲を使用してモンスターに攻撃をします。

ハンターがバリスタを使用するか里の人に任せるかは自由ですが、基本的に設置型の設備にはすべて何らかの設備を設置し、空きがないようにすることがポイントです。

また、ハンターがバリスタや大砲などを操作する場合でも、下に降りて戦う場合には自動にチェンジしておきましょう。

撃龍槍を使用する

施設には撃龍槍を使用できる箇所があります。

撃龍槍は砦レベルが上がることで使用することができるようになりますが、使えるポイントでモンスターにヒットさせることでモンスターに大ダメージを与えることができます。

操竜を活用する

百竜夜行では、モンスターが同時に多く出現する関係で、操竜を使用することができるポイントが多くあります。

操竜は強力でモンスターに大ダメージを与えることができる他、他のプレイヤーやNPCが攻撃をする隙を作り出してくれるので狙えるタイミングではハンターが積極的に下に降りて狙っていくと良いです。

落とし物のアイテムを活用する

モンスターにある程度ダメージを与えると撃退できますが、撃退する際などにアイテムを落としていくことがあります。

落とすアイテムには特殊な爆弾系のアイテムなど、活用することでモンスターに大ダメージを与えることができるアイテムがあるので積極的に活用すると良いでしょう。

反撃の狼煙を活用する

反撃の狼煙が上がることでハンターの攻撃力が大幅に上昇します。通常は防衛設備や操竜、アイテムによるダメージを狙っていくと良いですが、反撃の狼煙が上がっている間は設備は里の人に任せてハンターは下に降りてモンスターに攻撃によるダメージを狙っていく良いでしょう。

音の防壁の効果【モンハンライズ】

モンスターハンターライズで、狩猟笛の旋律「音の防壁」の効果についての解説です。

音の防壁は、一定時間、音の壁をまとい、一度だけダメージアクションを無効化するという効果です。

音の防壁の効果
音の防壁の効果

使用してから効果は一定時間あるものの、効果があるのは一度だけなこと。また、あくまでダメージアクションを無効化するだけで、ダメージ自体を無効化するわけではないことに注意が必要です。

効果はそこまで大きい旋律とは言えないと思いますが、メリットなのはメリットなので、余裕があるときには攻撃しつつ旋律を使用することでパーティのサポートになると思います。

【モンハンライズ】マガイマガドの弱点、倒し方攻略

モンスターハンターライズで、マガイマガドの弱点、倒し方についての解説です。

マガイマガド攻略のポイント

・ これまでのモンスターと比べて強力なので、クエストに回復アイテムを多めに持ち込んでおこう。

・ 怒り状態になったときに行動が強力になるので、強力な攻撃を受けてキャンプ送りにならないように気をつけよう

・ 動きを止める罠系のアイテムも有効。落とし穴を持ち込んでおけば役に立つ。強敵なので、ある程度ダメージを与えて残りHPが少なくなったら罠から捕獲で仕留めるのもおすすめ。

・ 他のモンスターと同じフィールドに入ったとき、操竜をうまく活用してダメージを与えよう

・ 弱点属性は水、雷

・ 状態異常は、爆破以外の状態異常は全て有効。特に効きやすいのは水属性武器での水属性やられ

・ 部位は頭部が弱点だが、それ以外では腕刃、尻尾にダメージが通りやすい。胴は肉質が固め

・ 部位破壊可能なのは頭部、腕刃、背中、尻尾、

・ ガスをまとった攻撃を受けると鬼火やられになり、衝撃を受けたり時間経過で爆発する。消臭玉や翔蟲(かけりむし)を利用することでふりほどける。翔蟲を利用することでふりほどいたガスにマガイマガドの攻撃を当てることができれば、爆発させてチャンスを生み出せる

・ 背中に溜まったガスを攻撃する、もしくは赤くなっているガスの噴出孔を攻撃することで背中のガスを誘爆して大ダメージを与えることができる。

マガイマガドの状態異常の有効度
マガイマガドの肉質
マガイマガドドの素材

【モンハンライズ】オンラインでプレイする方法

モンスターハンターライズで、オンラインでプレイする方法についての解説です。

まず、モンハンライズでのオンラインプレイには、インターネット通信と、ローカル通信があります。

インターネット通信は、インターネットを通じて全国のハンターとプレイができます。インターネット通信をプレイするにはニンテンドースイッチのオンライン(月額有料、一ヶ月300円ほど)に入る必要があります。

ローカル通信は、友達と複数人で集まってプレイする方法です。

インターネット通信でプレイをするには、集会所に移動し、自分がホストになるか、他人のクエストに途中から参加するかの方法があります。

自分がホストになるには、集会所のカウンターでクエストを受注するときに「参加要請を予約して受注」し、他のハンターの参加を待つ方法です。

この場合、クエストが開始して最初は自分一人だけですが、途中から他のハンターが入ってきます。

他人がホストになっているクエストに参加するには、集会所にあるクエストボードから「参加要請に応じる」を選択し、自分が参加したいクエストを選択します。

他のプレイヤーがホストになっているクエストで、参加可能なクエストがあった場合、途中から参加することができます。

【モンハンライズ】オトモ雇用係のイオリの場所

モンハンライズで、オトモ雇用係のイオリの場所についてです。

クエストを進めていると、ストーリーの進行で「オトモ雇用窓口のイオリと話す」という進行内容が出現します。

ムラを探してみても、オトモ雇用係窓口のイオリは見つかりません。

オトモ雇用窓口のイオリの場所ですが、村から移動できるオトモ広場にいます。

オトモ広場は、村から橋がかかってい移動できる先のエリアにあります。

入るとすぐ近くにオトモ雇用係のイオリはいます。

ホーム

フィード

ページの上部に戻る