prism.js(1.23.0)を WordPress で利用する

Posted by muchag | Library & PlugIn & AddIn,WordPress |
初回投稿:2021-04-01 (木) 15:11:10 | 最終更新:2021-04-01 (木) 15:48:51

前回 の導入から4年。
prism.js も成長しただろうし
私の言語も広がってきたので
再度導入してみる。

公式:Prism

【環境】
PrismJS: 1.23.0
WordPress: 5.7
導入
設定

公式サイトの ダウンロードページ にて設定。

()内は、<code class=”language-xxxxx”> の xxxxx に設定すべき値。
公式:Supported languages

  • Compression level:
    • カスタマイズをしたいので、[Development version] を選択
  • Core
  • Themes
    • ダークテーマが好きなので、[Okaidia]
  • Languages
    • ☑ Select/unselect all
  • Plugins
    • 次項参照
プラグイン

せっかく Diff を導入したので、そちらで記述してみる。


Line Highlight
Line Numbers
Autolinker
+ Custom Class
Show Language
JSONP Highlight
Highlight Keywords
Remove initial line feed
+ Inline color
+ Keep Markup
Command Line
Unescaped Markup
+ Data-URI Highlight
Toolbar
+ Copy to Clipboard Button
+ Match braces
+ Diff Highlight
+ Treeview
参考サイト

Blogger.comにPrism.jsをCDNで導入する(2020-11-20)

容量

言語追加の方法がわからないので
今回はフル選択してみた。
時代は、5G だしね!
Total filesize: 768.93KB (98% JavaScript + 2% CSS)
ぎゃー!重い・・・
ちなみに前回は
Total filesize: 146.01KB (96% JavaScript + 4% CSS)

でも、読み込み速度はあんまり気にならない。
ラッキー♪

DL、配置、WordPress へ組み込み

prism.js(1.9.0)を WordPress で利用する 参照。

利用

prism.js(1.9.0)を WordPress で利用する 利用 参照。

Keep Markup

(おそらく)今回 Keep Markup プラグインを追加したおかげで
HTML コードを表現する際に < > をエスケープする必要がなくなった。

今まで

< > をエスケープする必要があった。


<pre class="line-numbers" data-language="HTML" data-start="" data-line="">
<code class="language-markup">
&lt;p&gt;Example&lt;/p&gt;
</code>
</pre>
これから

<pre class="line-numbers" data-language="HTML" data-start="" data-line="">
<code class="language-markup">
<p>Example</p>
</code>
</pre>
で!

過去記事の表示が崩れてるんだろうな・・・。

Posted by muchag | Library & PlugIn & AddIn,WordPress |
初回投稿:2021-04-01 (木) 15:11:10 | 最終更新:2021-04-01 (木) 15:48:51

ERROR Cannot read property ‘toLowerCase’ of undefined

Posted by muchag | Nuxt.js |
初回投稿:2021-03-05 (金) 18:30:39 | 最終更新:2021-10-16 (土) 11:39:52

【環境】
create-nuxt-app: 3.5.2
Nuxt.js: 2.15.2
-> 2.15.4
Vue.js: 2.6.12
Node.js: 12.18.2
-> 14.16.1

このエラーは、エラー文は頼りにならないことが多いみたい。

色々なことが原因で、最終的にこういうエラーを吐くことになっているだけなので
毎度、原因を探る作業が必要になりそう。

原因を探るためには、コメントアウトを繰り返し
原因箇所を特定するところから始める。

私の場合は

において、掲題のエラーが出た。

Nginx の設定
気のせい?

以下の記事を書いたのは、Nuxt に触りたての頃。

今振り返ってみると、その後、Nuxt インストール時に
このような現象は起きていないので
気のせいだったかも?

ここまで

Nuxt2.15.2


yarn create nuxt-app hello

と普通にインストールしただけなのに
開発サーバを起動したら

ERROR Cannot read property ‘toLowerCase’ of undefined 11:19:35

at WebSocketServer.handleUpgrade (node_modules/ws/lib/websocket-server.js:193:27)
at WS.handleUpgrade (node_modules/@nuxt/content/lib/ws.js:21:21)
at WS.serve (node_modules/@nuxt/content/lib/ws.js:17:10)
at node_modules/@nuxt/content/lib/middleware.js:12:15
at call (node_modules/connect/index.js:239:7)
at next (node_modules/connect/index.js:183:5)
at next (node_modules/connect/index.js:161:14)
at next (node_modules/connect/index.js:161:14)
at WebpackBundler.middleware (node_modules/@nuxt/webpack/dist/webpack.js:2192:5)

というエラーが出た。

調査

泣きそうになりながら Google 先生へ質問してみた。

nuxt + エラーメッセージ

nuxt Cannot read property ‘toLowerCase’ of undefined

こちらで検索したところ
GitHub:Cannot read property toLowerCase of undefined(2019-07-24)
Qiita:Cannot read property ‘toLowerCase’ of undefinedのとき何を確認すべきか?(2020-12-09)
などが上位にでてきたんだけど
いずれもコーディングミスを原因とするもの。

  • HTML の記述ミス
  • SSR の問題?(よく理解できなかった)
  • javascript による undefine オブジェクトへの参照

どれも新規 Nuxt.js プロジェクトにはありえないので
検索ワードを変更してみることにした。

エラー発生ファイル名 + エラーメッセージ

上記エラーメッセージを引き起こしているファイル名を入れてみた。

WebpackBundler.middleware Cannot read property ‘toLowerCase’ of undefined

で検索すると、WebSocket に関わる記事が最初に出てきた。

中を見ると、エラーメッセージが全く同じ!

@nuxt/content

途中 @nuxt/content が原因っぽいことが書いてあったので
試しに、@nuxt/content を外してインストールしてみると
確かに件のエラーが出ない。

原因その1

更に読み進めると
GitHub:Nginx の WebSocket を有効にすると問題が解消される(2020-10-16)
との返信を見つけた。

解決その1

そこで
Qiita:NginxのリバースプロキシでWebソケットを通す際の設定(2019-12-28)
こちらを参考に、Nginx において WebSocket を有効に設定してみた。


server {
    listen       80;
    server_name  192.168.56.xxx;

+   proxy_http_version 1.1;
+   proxy_set_header Upgrade $http_upgrade;
+   proxy_set_header Connection "upgrade";

    location / {
        proxy_pass http://127.0.0.1:3000;
    }
}

これで確かに
@nuxt/content を同梱してインストールしても
件のエラーは出なくなった。

公式

と、ここまで試行錯誤を繰り返した後で
公式に Nginx のリバースプロキシを利用する設定が載っているのを見つけた。
公式:NGINX Using NGINX as a reverse proxy


map $sent_http_content_type $expires {
    "text/html"                 epoch;
    "text/html; charset=utf-8"  epoch;
    default                     off;
}

server {
    listen          80;             # the port nginx is listening on
    server_name     your-domain;    # setup your domain here

    gzip            on;
    gzip_types      text/plain application/xml text/css application/javascript;
    gzip_min_length 1000;

    location / {
        expires $expires;

        proxy_redirect                      off;
        proxy_set_header Host               $host;
        proxy_set_header X-Real-IP          $remote_addr;
        proxy_set_header X-Forwarded-For    $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto  $scheme;
        proxy_read_timeout          1m;
        proxy_connect_timeout       1m;
        proxy_pass                          http://127.0.0.1:3000; # set the address of the Node.js instance here
    }
}

こちらで試したところ、件のエラーが出た。

WebSocket 有効化

そこで、前述の WebSocket を有効にする設定を加えた。


map $sent_http_content_type $expires {
    "text/html"                 epoch;
    "text/html; charset=utf-8"  epoch;
    default                     off;
}

server {
    listen          80;             # the port nginx is listening on
    server_name     your-domain;    # setup your domain here

    gzip            on;
    gzip_types      text/plain application/xml text/css application/javascript;
    gzip_min_length 1000;

+   proxy_http_version 1.1;
+   proxy_set_header Upgrade $http_upgrade;
+   proxy_set_header Connection "upgrade";

    location / {
        expires $expires;

        proxy_redirect                      off;
        proxy_set_header Host               $host;
        proxy_set_header X-Real-IP          $remote_addr;
        proxy_set_header X-Forwarded-For    $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto  $scheme;
        proxy_read_timeout          1m;
        proxy_connect_timeout       1m;
        proxy_pass                          http://127.0.0.1:3000; # set the address of the Node.js instance here
    }
}

エラーが出る。。。

直アクセス

curl http://localhost:3000/

と、直接アクセスしたときはエラーが出ないので
やっぱり Nginx の問題だと思われる。

リバースプロキシ排除

location ディレクティブ内のリバースプロキシの設定をコメントアウトしてみた。


map $sent_http_content_type $expires {
    "text/html"                 epoch;
    "text/html; charset=utf-8"  epoch;
    default                     off;
}

server {
    listen          80;             # the port nginx is listening on
    server_name     your-domain;    # setup your domain here

    gzip            on;
    gzip_types      text/plain application/xml text/css application/javascript;
    gzip_min_length 1000;

+   proxy_http_version 1.1;
+   proxy_set_header Upgrade $http_upgrade;
+   proxy_set_header Connection "upgrade";

    location / {
        expires $expires;

#        proxy_redirect                      off;
#        proxy_set_header Host               $host;
#        proxy_set_header X-Real-IP          $remote_addr;
#        proxy_set_header X-Forwarded-For    $proxy_add_x_forwarded_for;
#        proxy_set_header X-Forwarded-Proto  $scheme;
#        proxy_read_timeout          1m;
#        proxy_connect_timeout       1m;
        proxy_pass                          http://127.0.0.1:3000; # set the address of the Node.js instance here
    }
}

エラーが出ない!

proxy_set_header

いっぱいコメントアウトしたので、選別をしたところ


map $sent_http_content_type $expires {
    "text/html"                 epoch;
    "text/html; charset=utf-8"  epoch;
    default                     off;
}

server {
    listen          80;             # the port nginx is listening on
    server_name     your-domain;    # setup your domain here

    gzip            on;
    gzip_types      text/plain application/xml text/css application/javascript;
    gzip_min_length 1000;

+   proxy_http_version 1.1;
+   proxy_set_header Upgrade $http_upgrade;
+   proxy_set_header Connection "upgrade";

    location / {
        expires $expires;

        proxy_redirect                      off;
#        proxy_set_header Host               $host;
#        proxy_set_header X-Real-IP          $remote_addr;
#        proxy_set_header X-Forwarded-For    $proxy_add_x_forwarded_for;
#        proxy_set_header X-Forwarded-Proto  $scheme;
        proxy_read_timeout          1m;
        proxy_connect_timeout       1m;
        proxy_pass                          http://127.0.0.1:3000; # set the address of the Node.js instance here
    }
}

これならエラーが出ない。
proxy_set_header があるとエラーが出ることが判明。

リバースプロキシを location の外へ

途方に暮れていたところ
なんとなく、proxy_set_header を location ディレクティブの外へ配置してみた。


map $sent_http_content_type $expires {
    "text/html"                 epoch;
    "text/html; charset=utf-8"  epoch;
    default                     off;
}

server {
    listen          80;             # the port nginx is listening on
    server_name     your-domain;    # setup your domain here

    gzip            on;
    gzip_types      text/plain application/xml text/css application/javascript;
    gzip_min_length 1000;

+   proxy_http_version 1.1;
+   proxy_set_header Upgrade $http_upgrade;
+   proxy_set_header Connection "upgrade";

+   proxy_set_header Host               $host;
+   proxy_set_header X-Real-IP          $remote_addr;
+   proxy_set_header X-Forwarded-For    $proxy_add_x_forwarded_for;
+   proxy_set_header X-Forwarded-Proto  $scheme;

    location / {
        expires $expires;

        proxy_redirect                      off;
        proxy_read_timeout          1m;
        proxy_connect_timeout       1m;
        proxy_pass                          http://127.0.0.1:3000; # set the address of the Node.js instance here
    }
}

エラーが出ない!

解決その2???

解決したとは思えないけど
疲れたので、アプリ側を実装するまで、一旦これでよしとする。。。

参考サイト

GitHub:Websocket error using alternative server framework(2020-06-14)

PLEASE SLEEP:nginx の proxy_set_header の継承ではまった(2013-05-18)
-> 調査の過程でこんな記事も見つけたので、一応メモ。古い記事なので、今は仕様が変わっているかも

v-if の使い方(位置)

久しぶりにこのエラーに遭遇した。

エラー
TypeError: Cannot read properties of undefined (reading ‘toLowerCase’)

前回と文言が異なるのは、Nuxt の仕様変更かしらね?

原因

コメントアウトを繰り返し、箇所を特定したところ

~/components/Loader.vue

ここだった。

解決

とりあえず一個上のDOMにv-ifを移動して解決。

ハッカーになりたい!:Nuxt.jsの$route.pathは$nuxt.$route.pathを使え!(2018-09-04)

という記事を見かけたので


こうしたら、エラーが出なくなった。

言われてみれば、元のコードだと
template 直下に v-if が仕込まれているので
状況によっては、template 内が空になるコードとなっている。

これは Nuxt の仕様的に、確かアウトだったような。。。
そのせいか~ 🙄

Posted by muchag | Nuxt.js |
初回投稿:2021-03-05 (金) 18:30:39 | 最終更新:2021-10-16 (土) 11:39:52

phpPgAdmin

Posted by muchag | PostgreSQL |
初回投稿:2019-11-23 (土) 21:43:05 | 最終更新:2019-11-24 (日) 12:00:36

【環境】
phpPgAdmin: 5.6
PostgreSQL: 12.1
配置
DL

SourceForge:phpPgAdmin ダウンロードページ より、DL。
2019-11-23 現在
phppgadmin-REL_5-6-0.zip

配置

解凍して出てきた

phppgadmin-REL_5-6-0

を ppa とリネームして、CakePHP4 の webroot ディレクトリ直下へ配置。

.gitignore
.gitignore

/webroot/ppa/*
設定
設定ファイルリネーム
/webroot/ppa/conf/config.inc.php-dist

/webroot/ppa/conf/config.inc.php

とリネーム。

設定
ホスト名

- $conf['servers'][0]['host'] = '';
+ $conf['servers'][0]['host'] = 'localhost';
  $conf['servers'][0]['host'] = '192.168.xxx.xxx'; <- IP 直打ちも可
DB 名

- $conf['servers'][0]['defaultdb'] = 'template1';
+ $conf['servers'][0]['defaultdb'] = 'hoge';
言語

- $conf['default_lang'] = 'auto';
+ $conf['default_lang'] = 'japanese';
スーパーユーザログイン

phpPgAdmin では、pgsql, postgres, root, administrator というユーザ名でのログインは
制限されているとのこと。

今回はローカル環境でのテストインストールなので
これを解除してみる。


- $conf['extra_login_security'] = true;
+ $conf['extra_login_security'] = false;
参考サイト

Qiita:ローカル環境PostgreSQL + phpPgAdmin でデフォルトユーザーでログインできないときの対処(2016-12-24)

テーマ
選択肢

ppa トップページでテーマを選択することができる。
とりあえず

  • Default
  • Cappuccino
  • Blue/Green
  • Bootstrap3

の4種から選べる。

ディレクトリ

これらが

/webroot/ppa/themes

こちらにある

  • bootstrap(Bootstrap3)
  • cappuccino(Cappuccino)
  • default(Default)
  • gotar(Blue/Green)

に対応している。

今回は、Cappuccino にしてみた。

カスタマイズ

.topbar, .trail {
	color: #fff;
	background-color: #363330;
	margin: 0;
	padding: 0;
	text-align: left;
}

Chrome で見ているけど、キャッシュがきつく、
スーパーリロードも効かない。
一晩寝かせたら、やっと反映された。

ドライバ
エラー

設定を終えて、ppa へアクセスしてみたら、下記エラーが出た。

データベースをサポートするように PHP のコンパイル・インストールがされていません。
configure の --with-pgsql オプションを用いて PHP を再コンパイルする必要があります。
インストール

PHP の PostgreSQL ドライバを追加インストール。


yum install -y --enablerepo=remi --enablerepo=remi-php74 php-pgsql

__snip__

インストール:
  php-pgsql.x86_64 0:7.4.0~RC6-15.el7.remi

完了しました!
Apache 再起動

Apache を再起動して、無事 phpPgAdmin が表示された。


systemctl restart httpd
ログイン

現状は、パスワードなしのログイン方法しかわかっていない。

それでも、事前 設定 が必要。

試行錯誤
ドライバ
依存性
依存解決エラー?

PostgreSQL のドライバをインストールしようとしたら
こんな感じになった。


yum install -y php-pgsql

__snip__

updates                                                  | 2.9 kB     00:00
(1/3): epel/x86_64/updateinfo                              | 1.0 MB   00:01
(2/3): remi-safe/primary_db                                | 1.6 MB   00:04
(3/3): epel/x86_64/primary_db                              | 6.9 MB   00:11
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ php-pgsql.x86_64 0:5.4.16-46.1.el7_7 を インストール
--> 依存性の処理をしています: php-pdo(x86-64) = 5.4.16-46.1.el7_7 のパッケージ: php-pgsql-5.4.16-46.1.el7_7.x86_64
--> 依存性解決を終了しました。
エラー: パッケージ: php-pgsql-5.4.16-46.1.el7_7.x86_64 (updates)
             要求: php-pdo(x86-64) = 5.4.16-46.1.el7_7
            インストール: php-pdo-7.4.0~RC6-15.el7.remi.x86_64 (@remi-php74)
                php-pdo(x86-64) = 7.4.0~RC6-15.el7.remi
            利用可能: php-pdo-5.4.16-46.el7.x86_64 (base)
                php-pdo(x86-64) = 5.4.16-46.el7
            利用可能: php-pdo-5.4.16-46.1.el7_7.x86_64 (updates)
                php-pdo(x86-64) = 5.4.16-46.1.el7_7
 問題を回避するために --skip-broken を用いることができます。
 これらを試行できます: rpm -Va --nofiles --nodigest
解決

そこで、php アップデート のときのコマンドを参考に
前述のようにしたら、無事にドライバをインストールできた。

ログイン

ユーザ名を、postgres。
パスワードは、なし、ALTER ROLE で再設定後の両方を試したけど
ログインできない。

対応

ドキュメント を見てみたら
Support for PostgreSQL 8.4.x, 9.x, 10.x, 11.x
あ、れ?
もしかして、12.1 だから?
多分そういう問題ではないよね。。。

一部解決

設定 をしたら、パスワードなしならログインできるようになった。

Posted by muchag | PostgreSQL |
初回投稿:2019-11-23 (土) 21:43:05 | 最終更新:2019-11-24 (日) 12:00:36

DELETE

Posted by muchag | MySQL |
初回投稿:2019-11-23 (土) 13:35:17 | 最終更新:2019-11-23 (土) 13:35:17

【環境】
MySQL: 8.0.13
リレーション

テーブルを結合して一括削除を行う場合。

DELETE の後に、テーブルエイリアスを書く必要があるとのこと。


DELETE
    h <- これがミソ
FROM
    `hoges` AS h
LEFT JOIN `moges` AS m
    ON m.`hoge_id` = h.`id`
WHERE
    h.`id` = 5

知らなかった。。。

確かに、ミソのところがないと、構文エラーとなる。

これがエイリアスでなくて、テーブル名の直書きだったらどうなのかとか
未調査。

参考サイト

Qiita:mysqlでjoinした結果をdelete(2015-01-27)

Posted by muchag | MySQL |
初回投稿:2019-11-23 (土) 13:35:17 | 最終更新:2019-11-23 (土) 13:35:17

操作

Posted by muchag | PostgreSQL |
初回投稿:2019-11-17 (日) 21:30:18 | 最終更新:2021-03-19 (金) 9:01:53

【環境】
PostgreSQL: 12.1
CentOS: 7.5.1804
ユーザ切り替え

OS のユーザを切り替え。


su - postgres
最終ログイン: 2019/11/17 (日) 19:40:30 JST日時 pts/0

全てはここから。

ログイン
ログイン

psql -h [host_name] -p [port_no] -U [user_name] [db_name]

という書式でログイン。


psql -h localhost -p 5432 -U muchag testdb
psql (12.1)
"help"でヘルプを表示します。

で、下記のような、SQL 文入力待機状態になる。


 
ショートカット

postgres ユーザが postgres データベースへアクセスする場合のみ使える?


psql
ログアウト

\q

exit も有効。

確認
バージョン
ログイン前

psql --version
psql (PostgreSQL) 12.1
ログイン後

SELECT version();
                                                 version
---------------------------------------------------------------------------------------------------------
 PostgreSQL 12.1 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39), 64-bit
ユーザ一覧

\du
                                             ロール一覧
 ロール名 |                                   属性                                   | 所属グループ
----------+--------------------------------------------------------------------------+--------------
 postgres | スーパユーザ, ロール作成可, DB作成可, レプリケーション可, RLS のバイパス | {}
データベース一覧
ログイン前

psql -l
                                        データベース一覧
   名前    |  所有者  | エンコーディング | 照合順序 | Ctype(変換演算子) |     アクセス権限
-----------+----------+------------------+----------+-------------------+-----------------------
 postgres  | postgres | UTF8             | C        | C                 |
 template0 | postgres | UTF8             | C        | C                 | =c/postgres          +
           |          |                  |          |                   | postgres=CTc/postgres
 template1 | postgres | UTF8             | C        | C                 | =c/postgres          +
           |          |                  |          |                   | postgres=CTc/postgres
ログイン後

\l
                                        データベース一覧
   名前    |  所有者  | エンコーディング | 照合順序 | Ctype(変換演算子) |     アクセス権限
-----------+----------+------------------+----------+-------------------+-----------------------
 postgres  | postgres | UTF8             | C        | C                 |
 template0 | postgres | UTF8             | C        | C                 | =c/postgres          +
           |          |                  |          |                   | postgres=CTc/postgres
 template1 | postgres | UTF8             | C        | C                 | =c/postgres          +
           |          |                  |          |                   | postgres=CTc/postgres
設定

SHOW all;
SHOW [設定名];
ヘルプ
ログイン前

psql --help
ログイン後
コマンドヘルプ

\?
SQL ヘルプ

\h
利用可能なヘルプ:
  ABORT                            ALTER PROCEDURE                  ALTER VIEW                       CREATE FOREIGN TABLE             CREATE TABLESPACE                DROP DATABASE                    DROP SCHEMA                      GRANT                            SELECT
  ALTER AGGREGATE                  ALTER PUBLICATION                ANALYZE                          CREATE FUNCTION                  CREATE TEXT SEARCH CONFIGURATION DROP DOMAIN                      DROP SEQUENCE                    IMPORT FOREIGN SCHEMA            SELECT INTO
  ALTER COLLATION                  ALTER ROLE                       BEGIN                            CREATE GROUP                     CREATE TEXT SEARCH DICTIONARY    DROP EVENT TRIGGER               DROP SERVER                      INSERT                           SET
  ALTER CONVERSION                 ALTER ROUTINE                    CALL                             CREATE INDEX                     CREATE TEXT SEARCH PARSER        DROP EXTENSION                   DROP STATISTICS                  LISTEN                           SET CONSTRAINTS
  ALTER DATABASE                   ALTER RULE                       CHECKPOINT                       CREATE LANGUAGE                  CREATE TEXT SEARCH TEMPLATE      DROP FOREIGN DATA WRAPPER        DROP SUBSCRIPTION                LOAD                             SET ROLE
  ALTER DEFAULT PRIVILEGES         ALTER SCHEMA                     CLOSE                            CREATE MATERIALIZED VIEW         CREATE TRANSFORM                 DROP FOREIGN TABLE               DROP TABLE                       LOCK                             SET SESSION AUTHORIZATION
  ALTER DOMAIN                     ALTER SEQUENCE                   CLUSTER                          CREATE OPERATOR                  CREATE TRIGGER                   DROP FUNCTION                    DROP TABLESPACE                  MOVE                             SET TRANSACTION
  ALTER EVENT TRIGGER              ALTER SERVER                     COMMENT                          CREATE OPERATOR CLASS            CREATE TYPE                      DROP GROUP                       DROP TEXT SEARCH CONFIGURATION   NOTIFY                           SHOW
  ALTER EXTENSION                  ALTER STATISTICS                 COMMIT                           CREATE OPERATOR FAMILY           CREATE USER                      DROP INDEX                       DROP TEXT SEARCH DICTIONARY      PREPARE                          START TRANSACTION
  ALTER FOREIGN DATA WRAPPER       ALTER SUBSCRIPTION               COMMIT PREPARED                  CREATE POLICY                    CREATE USER MAPPING              DROP LANGUAGE                    DROP TEXT SEARCH PARSER          PREPARE TRANSACTION              TABLE
  ALTER FOREIGN TABLE              ALTER SYSTEM                     COPY                             CREATE PROCEDURE                 CREATE VIEW                      DROP MATERIALIZED VIEW           DROP TEXT SEARCH TEMPLATE        REASSIGN OWNED                   TRUNCATE
  ALTER FUNCTION                   ALTER TABLE                      CREATE ACCESS METHOD             CREATE PUBLICATION               DEALLOCATE                       DROP OPERATOR                    DROP TRANSFORM                   REFRESH MATERIALIZED VIEW        UNLISTEN
  ALTER GROUP                      ALTER TABLESPACE                 CREATE AGGREGATE                 CREATE ROLE                      DECLARE                          DROP OPERATOR CLASS              DROP TRIGGER                     REINDEX                          UPDATE
  ALTER INDEX                      ALTER TEXT SEARCH CONFIGURATION  CREATE CAST                      CREATE RULE                      DELETE                           DROP OPERATOR FAMILY             DROP TYPE                        RELEASE SAVEPOINT                VACUUM
  ALTER LANGUAGE                   ALTER TEXT SEARCH DICTIONARY     CREATE COLLATION                 CREATE SCHEMA                    DISCARD                          DROP OWNED                       DROP USER                        RESET                            VALUES
  ALTER LARGE OBJECT               ALTER TEXT SEARCH PARSER         CREATE CONVERSION                CREATE SEQUENCE                  DO                               DROP POLICY                      DROP USER MAPPING                REVOKE                           WITH
  ALTER MATERIALIZED VIEW          ALTER TEXT SEARCH TEMPLATE       CREATE DATABASE                  CREATE SERVER                    DROP ACCESS METHOD               DROP PROCEDURE                   DROP VIEW                        ROLLBACK
  ALTER OPERATOR                   ALTER TRIGGER                    CREATE DOMAIN                    CREATE STATISTICS                DROP AGGREGATE                   DROP PUBLICATION                 END                              ROLLBACK PREPARED
  ALTER OPERATOR CLASS             ALTER TYPE                       CREATE EVENT TRIGGER             CREATE SUBSCRIPTION              DROP CAST                        DROP ROLE                        EXECUTE                          ROLLBACK TO SAVEPOINT
  ALTER OPERATOR FAMILY            ALTER USER                       CREATE EXTENSION                 CREATE TABLE                     DROP COLLATION                   DROP ROUTINE                     EXPLAIN                          SAVEPOINT
  ALTER POLICY                     ALTER USER MAPPING               CREATE FOREIGN DATA WRAPPER      CREATE TABLE AS                  DROP CONVERSION                  DROP RULE                        FETCH                            SECURITY LABEL

\h [SQL コマンド名] <- 詳細を見る
試行錯誤編
ログイン

真面目に書くと、ログインできない。。。


psql -h localhost -p 5432 -U postgres
psql: エラー: サーバに接続できませんでした: FATAL:  Ident authentication failed for user "postgres"
Posted by muchag | PostgreSQL |
初回投稿:2019-11-17 (日) 21:30:18 | 最終更新:2021-03-19 (金) 9:01:53

構成設定

Posted by muchag | CakePHP 4.x |
初回投稿:2019-11-17 (日) 14:40:09 | 最終更新:2019-11-24 (日) 13:58:41


公式:構成設定

【環境】
CakePHP: 4.0.0-RC1
初期設定

CakePHP3 の
初期設定
構成設定
も参照。

app.php
CakePHP3 差分
/config/app.php

こちらは、アプリケーション設定のファイル。

CakePHP4 では、

/config/app_local.php

が追加されている。

.gitignore

そして、.gitignore の記述が、CakePHP3 と比べて


- /config/app.php
+ /config/app_local.php

のように変更されている。

結論

環境に依存しない設定を

/config/app.php

環境に依存する設定を

/config/app_local.php

へ、記述するルールみたい。

その他
/config/app_local.example.php

も追加されていた。

作業
データベース
/config/app_local.php

'Datasources' => [
    'default' => [
        'host' => 'localhost',
        /*
         * CakePHP will use the default DB port based on the driver selected
         * MySQL on MAMP uses port 8889, MAMP users will want to uncomment
         * the following line and set the port accordingly
         */
        //'port' => 'non_standard_port_number',

        'username' => 'my_app',
        'password' => 'secret',

        'database' => 'my_app',
        /**
         * If not using the default 'public' schema with the PostgreSQL driver
         * set it here.
         */
        //'schema' => 'myapp',

        /**
         * You can use a DSN string to set the entire configuration
         */
        'url' => env('DATABASE_URL', null),
    ],

    /*
     * The test connection is used during the test suite.
     */
    'test' => [
        'host' => 'localhost',
        //'port' => 'non_standard_port_number',
        'username' => 'my_app',
        'password' => 'secret',
        'database' => 'test_myapp',
        //'schema' => 'myapp',
    ],
],

本体とテストそれぞれの、
データベースホスト、ユーザ名、パスワード、データベース名を設定。

PostgreSQL

今回は、CakePHP4 デフォルトの MySQL ではなく
PostgreSQL を利用するので


'driver' => 'Cake\Database\Driver\Postgres',

こちらも、本体とテストのそれぞれに追記。

.env
CakePHP3 差分
その他
/config/.env.example

が追加されていた。

作業
bootstrap.php
/config/bootstrap.php

// if (!env('APP_NAME') && file_exists(CONFIG . '.env')) {
//     $dotenv = new \josegonzalez\Dotenv\Loader([CONFIG . '.env']);
//     $dotenv->parse()
//         ->putenv()
//         ->toEnv()
//         ->toServer();
// }

このコメントアウトを復帰。

.env.example
/config/.env.example

こちらに基づいて、

/config/.env

を作成。


export APP_NAME="__APP_NAME__"
export DEBUG="true"
export APP_ENCODING="UTF-8"
export APP_DEFAULT_LOCALE="en_US"
export APP_DEFAULT_TIMEZONE="UTC"
export SECURITY_SALT="__SALT__"
  • アプリ名:任意
  • ロケール:ja_JP
  • タイムゾーン:Asia/Tokyo
  • ソルト:ランダム
Posted by muchag | CakePHP 4.x |
初回投稿:2019-11-17 (日) 14:40:09 | 最終更新:2019-11-24 (日) 13:58:41

インストール -> 4.0.0-RC1

Posted by muchag | CakePHP 4.x |
初回投稿:2019-11-17 (日) 13:35:21 | 最終更新:2019-11-17 (日) 13:35:21


公式:インストール

【環境】
CakePHP: 4.0.0-RC1
システム要件

公式には

  • HTTP サーバー。例: Apache。mod_rewrite が推奨されますが、必須ではありません。
  • PHP 7.2.0 以上 (PHP 7.2 も含む)
    • mbstring PHP 拡張
    • intl PHP 拡張
    • simplexml PHP 拡張
  • データベース
    • MySQL (5.5.3 以上)
    • MariaDB (5.5 以上)
    • PostgreSQL
    • Microsoft SQL Server (2008 以上)
    • SQLite 3

と書かれているけど
まだドキュメントを更新し始めたばかりみたいなので
変わる可能性があるかも?

インストール

まだ正式リリースを迎えていないので
おまけ付きでインストール。


composer create-project --prefer-dist cakephp/app:4.x-dev /media/sf_CakeTest
Posted by muchag | CakePHP 4.x |
初回投稿:2019-11-17 (日) 13:35:21 | 最終更新:2019-11-17 (日) 13:35:21

スクリプト実行

Posted by muchag | Google Apps Script |
初回投稿:2019-11-17 (日) 10:45:17 | 最終更新:2019-11-17 (日) 10:47:05

スクリプトを実行する方法は
いくつかある。

【環境】
GAS: November 6, 2019
スクリプトエディタ

スクリプトエディタのツールボタン [関数を選択]-[(対象の関数名)] [(再生ボタン)] または Ctrl + R

ボタン
[挿入] から、画像なりテキストなりを配置して
そこへ関数を登録して、ボタンとして利用する。

ただし、ドキュメントでは、文章中にボタンが配置されてしまうので
うまく扱えなかった。

メニュー

function onOpen() {
  var ui = DocumentApp.getUi();
  var menu = ui.createMenu('スクリプトメニュー');
  menu.addItem('リスト変換', 'main');
  menu.addToUi();
}

onOpen メソッドで、当該ドライブファイルを開いたときのイベントハンドラとして
リスト追加スクリプトを記述する。

  • スプレットシート:SpreadsheetApp
  • スライド:SlideApp(かな? 未調査)
  • ドキュメント:DocumentApp
参考サイト

iwb.jp:Googleスプレッドシート Apps Scriptの3つのプログラム実行方法(2018-01-22)

Posted by muchag | Google Apps Script |
初回投稿:2019-11-17 (日) 10:45:17 | 最終更新:2019-11-17 (日) 10:47:05

Razor

Posted by muchag | Library & PlugIn & AddIn,Visual Studio |
初回投稿:2019-11-16 (土) 19:41:28 | 最終更新:2019-11-16 (土) 22:00:47

MVC 3 から、標準で導入されたらしい。
Microsoft:ASP.NET Core の Razor 構文リファレンス

【環境】
VS: 2019C
文法

インライン式。
「コードナゲット」とも呼ばれるみたい。


複数行に渡る場合以外は、閉じる必要がない。

埋め込み例

コメント

全て使える。

エスケープ

Razor の根幹となる @ を文字列として表記したい場合は
例によって @@ と、重ねて記述する。

サニタイズ

コードブロック

複数行に渡る処理を書きたい場合は、@{} で記述する。

コードブロック内に出力内容を記述することも可能。


構文

if などの構文を記述する際は、コードブロック拡張版を利用する。


javascript

if などの構文を記述する際は、コードブロック拡張版を利用する。


javascript へ値を渡すときは
‘(シングルクォーテーション)
“(ダブルクォーテーション)
いずれかで囲む必要があるらしい。

参考サイト

vaguely:【ASP.NET Core】Razorで遊んでみる(2018-11-08)

Posted by muchag | Library & PlugIn & AddIn,Visual Studio |
初回投稿:2019-11-16 (土) 19:41:28 | 最終更新:2019-11-16 (土) 22:00:47

MySQL

Posted by muchag | Java,MySQL |
初回投稿:2019-11-05 (火) 22:15:47 | 最終更新:2019-11-06 (水) 19:36:04


GitHub:nkjmlab/nkjmlab-utils-jpdatum

【環境】
MySQL: 8.0.18
Eclipse:Pleiades All in One JAVA 2019-09 R (4.13.0)
Java: 1.8.0_221
ドライバ
入手先
MySQL 公式

あちこちの記事で、ドライバの入手先として
公式:MySQL Community Downloads Connector/J
を挙げていたけど、どうやって DL してよいのかわからなかった。

同ページに、Recommended Windows Download: と書いてあるから
MySQL インストールディレクトリに同梱されているのかと思ったけど
エクスプローラで、mysql-connector-java で検索してみたものの、ヒットせず。

Maven Repository

仕方がないので
Maven Repository:MySQL Connector/J 8.0.18
こちらの、Files:jar (2.2MB) から DL した。

2019-11-05 現在
mysql-connector-java-8.0.18.jar

配置&参照
[project]\WebContent\WEB-INF\lib\mysql-connector-java-8.0.18.jar

として配置。

ビルド・パス の設定。

接続

数多くサンプルがある中、下記が見やすかったので
不要な部分を削除して、そのままいただきました。
TASK NOTES:JavaでMySQLに接続してデータ操作をする(2015-04-14)


import java.sql.*;

public class MySQLConnector {
    public static void main(String[] args) {
        Connection con = null;
        try {
            // MySQLに接続
            con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "");
            System.out.println("MySQLに接続できました。");
        } catch (SQLException e) {
            System.out.println("MySQLに接続できませんでした。");
        } finally {
            if (con != null) {
                try {
                    con.close();
                } catch (SQLException e) {
                    System.out.println("MySQLのクローズに失敗しました。");
                }
            }
        }
    }
}
取得

Statement stm = con.createStatement();
String sql = "select * from programing";
ResultSet rs = stm.executeQuery(sql);

while(rs.next()){
    int id = rs.getInt("id");
    String name = rs.getString("name");
    System.out.println("取得結果 -> " + id + ":" + name);
}
更新

Statement stm = con.createStatement();
String sql = "insert into programing values(4, 'Python'), (5, 'Go')";
int result = stm.executeUpdate(sql);
System.out.println("更新件数は" + result + "です。");
参考サイト

TASK NOTES:JavaでMySQLに接続してデータ操作をする(2015-04-14)
→とても見やすく、コードは、ほぼそのまま真似させていただきました。

Posted by muchag | Java,MySQL |
初回投稿:2019-11-05 (火) 22:15:47 | 最終更新:2019-11-06 (水) 19:36:04
次ページへ »