投稿者: admin Page 20 of 47

個人的にgitignoreのリストを作ってみました。

個人的にgitignoreのリストを作ってみました。

全部はいってますが、必要分を削って使っています。

GitHub : TakamoriYamashiro/mygitignore

#---------------- About files
*.log
*.sql
*.sqlite


#---------------- OS generated files
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
Icon?
ehthumbs.db
Thumbs.db


#---------------- npm specific files
# package.json
# gulpfile.js
package-lock.json
node_modules/


#---------------- bower specific files
# bower.json
bower_components/


#---------------- Apache specific files
.htaccess
.htpasswd


#---------------- WordPress specific files
**/wp-config.php
**/wp-content/uploads
**/wp-content/themes/twenty*
**/wp-content/backup-db
**/wp-content/backups
**/wp-content/cache
**/wp-content/upgrade
**/wp-content/uploads
**/wp-content/wp-cache-config.php
**/wp-content/plugins/hello.php


#---------------- CakePHP specific files
/config/app.php
/config/.env
/tmp/*
/logs/*
/tmp/*
/vendor/*


#---------------- Tool specific files
*~ # vim
*.swp # vim
*.swo # vim
*.sublime-* # sublime text
*.komodoproject
*.tmlanguage.cache # sublime text & textmate
*.tmPreferences.cache # sublime text & textmate
*.stTheme.cache # cache files for sublime text
.settings/* # Eclipse
.idea/* # JetBrains, aka PHPStorm, IntelliJ IDEA
nbproject/* # NetBeans
.vscode # Visual Studio Code
.sass-cache/ # Sass preprocessor

Dash (https://kapeli.com/dash ) に登録していつでもすぐ追加できて便利です。 (このDashは早く買っておけばよかったソフトのトップクラスでおすすめ)

Dashの登録画面

Dashの登録画面

gitのローカル環境で自分のファイルだけを無視(.gitignore)する方法。

gitのローカル環境で自分のファイルだけを無視(.gitignore)する方法。

(プロジェクトのパス)/.git/info/exlude  

に.gitignoreと同じように記載するだけでできました。

# git ls-files --others --exclude-from=.git/info/exclude
# Lines that start with '#' are comments.
# For a project mostly in C, the following would be a good set of
# exclude patterns (uncomment them if you want to use them):
# *.[oa]
# *~

#**************************************  my ignore settings
.gitignore
.DS_Store?
._*
.Spotlight-V100
.Trashes
Icon?
ehthumbs.db
Thumbs.db

gulpfile.js
package.json
package-lock.json
node_modules/
bower.json
bower_components/
.idea

MySQL動的に変化が多すぎるスキーマの管理方法を考える。

MySQL動的に変化が多すぎるスキーマの管理方法を考える。

最近小規模な独自の物流システムを設計しているところなのですが、商品のスキーマがいろいろ変化が多いのでどのように設計していくかを考えています。

作りたいのはこのようなテーブル

テーブルA

テーブルA

基本的な情報以外は’メタ情報’として外部へ分ける。

先程のテーブルAを次の図のテーブルB,Cように別に分ける。(WordPressの postsとposts_metaのような感じ縦持ちと呼ぶのは知らなかった。><)

テーブルBは基本的な情報のみ

テーブルB

テーブルB

テーブルCはメタ情報を記録

テーブルC

テーブルC

また情報が増えた場合は以下の用に増えても問題がない。

title

title

スキーマの管理をどうするか問題

もう一つの問題は、スキーマの変更をどうやって管理していくか。
勝手にデータを追加していっても良いのですが、データの正規化のためのバリデーションルールなどを管理画面から操作していくために。

productsテーブルにはどのようなメタデータがあるかを何処かで定義しないといけません。
幾つか思いつく方法としては、

  • A.Jsonなどでテキストで保存する。
  • B.モデルのプログラムに記載する。
  • C.scheme用の別テーブルに保存する。

などが思いつきましたが、Aの方法はバックアップなど、管理も大変なのでNG。
Bのモデルのプログラムに記載するは、隠蔽するということで良い面もありそうだけど今回は、運営の担当者レベルで、管理画面から動的に変更をしたいのでNG。
ということでCのスキーマ用のテーブルに保存する方法を考えて行きたいと思います。

スキーマ定義テーブルの設計

まずは最少な感じだとこんな感じ。(愛称:nicknameと説明:descriptionと追加)

schemes : A

schemes : A

もう少し考えるとお昼は提供可(day_menu)、夜はNG(night_menu)などの1 or 0 みたいな選択肢の場合はどうしよう。

schemes : B

schemes : B

と言った感じで表現できそう。なにか動的フォームの設計のようです。あとはセットメニューに配達範囲(プルダウンのような)の項目を追加をイメージして見ます。

schemes : C

schemes : C

関連するテーブル追加も考えたのですが、READで負荷がかかるところでないので(管理画面からの操作のみを想定)JSON文字列を突っ込んでます。
(DB正規化を尊重する場合は、scheme_select_optionsなどのテーブル追加なのかどうか?とかも)

今回の実装は以下の方向性で進めてみる。

まずはデータの全体のイメージはこれ

実際データのイメージ

実際データのイメージ

で、実際のテーブルは以下の通りに定義

tables

tables

とりあえず問題は無いと思うのですが、細かい部分をDBに定義するかプログラム部分に持ってくるかが今後ちょっと検討課題になってきそうです。

商品とセット商品の関連付け。(データベースの設計)

商品とセット商品の関連付け。(データベースの設計)

物流関連のシステム周りでセット商品の使いについて考えてみた。
以下の書籍を参考にして組んでいる。アプリケーションはPHP(CakePHP3)のMySQL

商品のセット情報をもつ関連テーブルを作る

商品のセット情報をもつ関連テーブルを作る

なにかもっとスマートな方法がありそうな気もするが、こっちの方があれか、
たしかに拡張性が高そうな気もした。多対多のような、セットをセットにしたファミリーセットとかもいけそうだし。

とりあえず、これで進めてみる。

ディスプレイアームで机の上がかなりスッキリ快適環境。(早く買っておけばよかった、どうせなら)

FLEXIMOUNTS-ガススプリング式液晶ディスプレイアーム ホワイト)

FLEXIMOUNTS-ガススプリング式液晶ディスプレイアーム ホワイト)

FLEXIMOUNTS-ガススプリング式液晶ディスプレイアーム ホワイト)

デスク周りをリニューアルしたついでに、1年ほど利用しているモニタアームです。
つかってみてすごく快適で使い勝手もよいのでご紹介。

購入のキッカケはディスプレイのスタンドが大きくて机が狭くなってしまっていた事です。
使っているディスプレイを4Kの’LG 27UD68-W IPSディスプレイ ’に変えたのですが以下の通りディスプレイ自体は薄いのにスタンドで15cmほどスペースをとってしまっている状態。(しかもAmazonのレビューなどでもある通り、スタンドはあまり安定性も良くない感じでした。そこでモニタアームを購入しました。

スタンドの様子

スタンドの様子

その後快適に利用しています。いろいろなモニターアームを半年くらいいろいろ物色していたのですが、もっと早く買っておけばよかったなぁと。

このモニタアームで気に入っている点を色々。

色が取り付け部分ふくめて白

結構仕事する上で見た目てきなモチベーションも重要、
この部分までキレイに白なアームはなかなか見つからなかったです。

取付部の見た目。

取付部の見た目。

スペースがが大きく取れる!!

なんといってもこれ、スペースが広がるのは本当に仕事がはかどります。

  • 手前にメモやタブレットを置いても広々
  • キーボードを奥に置けるので、肘までを机の上に載せれる。(長時間タイピングしていたりする場合にとても楽です。)

タブレットとメモ帳を置いた所、机の奥行きは59cm

タブレットとメモ帳を置いた所、机の奥行きは59cm

肘まで机に置いて楽にタイピング

肘まで机に置いて楽にタイピング

ちなみに机も通常より低めのものを利用しています。

モニタの位置や角度が自由自在。

同じ姿勢に疲れて来たりした場合に、気分によってモニタの位置、角度を変えれるしもちろん縦にすることもできます。(デュアルディスプレイの人とかは良いかも)

テーブル面まで低くして、作戦本部っぽくしたり
くるっとひねって縦にしたり

何と言っても、気持ちが良い。

なんといっても、以前抱えていたスタンドの色のデザインの不満、スペースが狭い不満がなくなってストレスフリーになって気持ちよく作業ができるのが一番良かったところです。

その他利用している物(Amazonアフィリエイトリンクになっています。)

  • LG 27UD68-W IPSディスプレイ

  • SONY ワイヤレスポータブルスピーカー Bluetooth/Wi-Fi対応 ブラック SRS-X7/B

nginxのPHPのアップロードファイルサイズの変更方法。

nginxのPHPのアップロードファイルサイズの変更方法。

WordPressで画像をアップした所画像がアップできませんでした。
結果を3行でいうと以下で解決。

  • nginxのclient_max_body_sizeを上げる。
  • php.iniで、upload_max_filesizeを上げる
  • php-fpmのrestartとnginxのreload

以下いくつか段階があったようなのでその解決方法の詳細

1、httpエラーがでる。

この場合はnginxが送信できるhttpのbodyサイズが不足していました。
私の環境の場合は、以下の設定ファイルを書き換えてnginxをreloadして解決しました。

ファイル : /etc/nginx/nginx.conf (共通の設定ファイルの最後当たりに追加)

http {
    (中略)
    client_max_body_size 50M;
    include /etc/nginx/conf.d/*.conf;
}

(ドメインごとの設定ファイルなどで変更ができるように includeの前にいれました。)

2、PHPのファイルアップロード制限

しばらく大丈夫だったのですが、今度はWordPressでアップロードした場合に上限だとエラーメッセージがでました。

6000x4028-17M.jpg exceeds the maximum upload size for this site.

これはPHPの設定 ‘upload_max_filesize’ が原因でした。
まずサーバーで値を確認。

# php --info | less
//'upload_max_filesize'を検索。
upload_max_filesize => 2M => 2M
//と2MBにっているさらに'php.ini'で検索してphp.iniの場所を確認。
 Loaded Configuration File => /etc/php.ini

/etc/php.iniを編集します。

# vim /etc/php.ini
//以下の部分を元の 2Mから10Mへ変
upload_max_filesize = 10M
//保存して10Mになっていることを確認
# php --info
upload_max_filesize => 10M => 10M

そしてnginx再起動

# systemctl restart nginx

でアップロードすると、あれできない。。と少し悩む。
あーphp-fpmもかと。

# systemctl restart php-fpm.service

として解決

Bywordでの記事アップが高速でいい感じです。

Bywordでの記事アップが高速でいい感じです。

最近Bywordで記事を書いてますがとても早くアップでき良いです。

画像の貼り付けもドロップで、

title

title

簡単です。

Youtubの4K60fps、8K60fpsの動画を快適に見たいけどどうしたらよいのやら。orz..

先日So-netの回線で、IPoE接続に切り替えさらに、DS-Lite(iPv6トンネルゲートウェイ)を利用し始めて快適なネット速度が出せるようになってきました。(以下の通り早い場合は200Mbpsくらいもでたりします。)

title

title

そこでディスプレイも以前から4Kディスプレイを使っていることもあり、4K60fpsのYoutube動画を快適にみたいのですが、どうしても再生で引っかかってしまいます。なにか良い方法は無いものか。。うーん。。
以下の環境でみているのですが、どうしても見ることができません。なぜだろう

だれか良い方法を知っていたら教えてほしいです。(涙)
Twitter : @yamajiro

閲覧環境

PC : MacBook Pro (Retina, 15-inch, Mid 2015)

  • CPU : 2.5 GHz Intel Core i7
  • 16 GB 1600 MHz DDR3
  • GPU : AMD Radeon R9 M370X 2048 MB

ディスプレイ : LG 27UD68-W IPSディスプレイ

  • 27インチ
  • 4K/3840×2160
  • AH-IPS非光沢
  • HDMI2.0準拠
  • 接続 : MacLab. Thunderbolt ( Mini Displayport ) → Displayport 変換 ケーブル

ルーター : BUFFALO WXR–1900DHP2 (利用推奨環境6人・4LDK・3階建)

  • 無線モード : IEEE802.11ac
  • PCとの距離は3–4mくらい接続はいつも安定している。障害物はなし

インタネットプロバイダ : So-net

  • 接続 :IPoE接続 DS-Lite(iPv6トンネルゲートウェイ)を利用(Youtubeはipv6直接つながっているはず)
  • 速度 : 遅くて 20Mbps、通常70Mbps〜100Mbps、早い時200Mbps台

利用機材の Amazonアソシエイトリンク一覧

  • MacBook Pro (Retina, 15-inch, Mid 2015)

  • LG 27UD68-W IPSディスプレイ

  • BUFFALO WXR–1900DHP2 (利用推奨環境6人・4LDK・3階建)

Macでcakephp3 の環境構築 bakeコマンドでエラー(php.iniと、MAMPのMySQLのソケットの場所が原因でした。)

Macでcakephp3 の環境構築 bakeコマンドでエラー(php.iniと、MAMPのMySQLのソケットの場所が原因でした。)

以前Cakephp3の環境をMacにつくってうまくいっていたのですが、bakeコマンドを使ったところでエラーが発生しました。
(結果を先にいうと、CLIのPHPのphp.iniのpdo_mysql.default_socketの値とMAMPのMySQLのsocketの位置が違ってました。)

以前の環境設定の記事
MacでCakePHP3をComposerを使ってセットアップ

エラーは次のようなエラー

 % bin/cake bake all users
Bake All
---------------------------------------------------------------
One moment while associations are detected.
Exception: SQLSTATE[HY000] [2002] No such file or directory in [/Users/taka/htdocs/_template/php/cakephp3/bookmarker/vendor/cakephp/cakephp/src/Database/Driver/PDODriverTrait.php, line 47]
2017-08-29 02:34:48 Error: [PDOException] SQLSTATE[HY000] [2002] No such file or directory in /Users/taka/htdocs/_template/php/cakephp3/bookmarker/vendor/cakephp/cakephp/src/Database/Driver/PDODriverTrait.php on line 47
Stack Trace:
#0 /Users/taka/htdocs/_template/php/cakephp3/bookmarker/vendor/cakephp/cakephp/src/Database/Driver/PDODriverTrait.php(47): PDO->__construct('mysql:host=loca...', 'root', 'root', Array)
#1 /Users/taka/htdocs/_template/php/cakephp3/bookmarker/vendor/cakephp/cakephp/src/Database/Driver/Mysql.php(104): CakeDatabaseDriverMysql->_connect('mysql:host=loca...', Array)
#2 /Users/taka/htdocs/_template/php/cakephp3/bookmarker/vendor/cakephp/cakephp/src/Database/Schema/BaseSchema.php(45): CakeDatabaseDriverMysql->connect()
#3 /Users/taka/htdocs/_template/php/cakephp3/bookmarker/vendor/cakephp/cakephp/src/Database/Dialect/MysqlDialectTrait.php(63): CakeDatabaseSchemaBaseSchema->__construct(Object(CakeDatabaseDriverMysql))
#4 /Users/taka/htdocs/_template/php/cakephp3/bookmarker/vendor/cakephp/cakephp/src/Database/Schema/Collection.php(52): CakeDatabaseDriverMysql->schemaDialect()
#5 /Users/taka/htdocs/_template/php/cakephp3/bookmarker/vendor/cakephp/cakephp/src/Database/Schema/CachedCollection.php(42): CakeDatabaseSchemaCollection->__construct(Object(CakeDatabaseConnection))
#6 /Users/taka/htdocs/_template/php/cakephp3/bookmarker/vendor/cakephp/cakephp/src/Database/Connection.php(368): CakeDatabaseSchemaCachedCollection->__construct(Object(CakeDatabaseConnection), true)
#7 /Users/taka/htdocs/_template/php/cakephp3/bookmarker/vendor/cakephp/cakephp/src/Database/Connection.php(387): CakeDatabaseConnection->getSchemaCollection()
#8 /Users/taka/htdocs/_template/php/cakephp3/bookmarker/vendor/cakephp/bake/src/Shell/Task/ModelTask.php(1016): CakeDatabaseConnection->schemaCollection()
#9 /Users/taka/htdocs/_template/php/cakephp3/bookmarker/vendor/cakephp/bake/src/Shell/Task/ModelTask.php(968): BakeShellTaskModelTask->_getAllTables()
#10 /Users/taka/htdocs/_template/php/cakephp3/bookmarker/vendor/cakephp/bake/src/Shell/Task/ModelTask.php(209): BakeShellTaskModelTask->listAll()
#11 /Users/taka/htdocs/_template/php/cakephp3/bookmarker/vendor/cakephp/bake/src/Shell/Task/ModelTask.php(127): BakeShellTaskModelTask->getAssociations(Object(CakeORMTable))
#12 /Users/taka/htdocs/_template/php/cakephp3/bookmarker/vendor/cakephp/bake/src/Shell/Task/ModelTask.php(110): BakeShellTaskModelTask->getTableContext(Object(CakeORMTable), 'users', 'Users')
#13 /Users/taka/htdocs/_template/php/cakephp3/bookmarker/vendor/cakephp/bake/src/Shell/Task/ModelTask.php(97): BakeShellTaskModelTask->bake('Users')
#14 /Users/taka/htdocs/_template/php/cakephp3/bookmarker/vendor/cakephp/bake/src/Shell/BakeShell.php(257): BakeShellTaskModelTask->main('Users')
#15 /Users/taka/htdocs/_template/php/cakephp3/bookmarker/vendor/cakephp/cakephp/src/Collection/CollectionTrait.php(51): BakeShellBakeShell->BakeShell{closure}('Users', 0)
#16 /Users/taka/htdocs/_template/php/cakephp3/bookmarker/vendor/cakephp/bake/src/Shell/BakeShell.php(258): CakeCollectionCollection->each(Object(Closure))
#17 /Users/taka/htdocs/_template/php/cakephp3/bookmarker/vendor/cakephp/cakephp/src/Console/Shell.php(494): BakeShellBakeShell->all('users')
#18 /Users/taka/htdocs/_template/php/cakephp3/bookmarker/vendor/cakephp/cakephp/src/Console/CommandRunner.php(140): CakeConsoleShell->runCommand(Array, true)
#19 /Users/taka/htdocs/_template/php/cakephp3/bookmarker/bin/cake.php(12): CakeConsoleCommandRunner->run(Array)
#20 {main}

エラーを読んでいきます。

Exception: SQLSTATE[HY000] [2002] No such file or directory in [/Users/taka/htdocs/_template/php/cakephp3/bookmarker/vendor/cakephp/cakephp/src/Database/Driver/PDODriverTrait.php, line 47]

PDOのドライバーのクラスでファイルが見つからないらしい。該当箇所を見る。

$connection = new PDO(
            $dsn,
            $config['username'],
            $config['password'],
            $config['flags']
        );

PDOをnewしているところでエラーなのでPDO自体がまずいのか。
phpinfoのPDOを探ってみる。

% php --info | less
//で、PDO部分を検索
PDO

PDO support => enabled
PDO drivers => mysql, odbc, sqlite

pdo_mysql

PDO Driver for MySQL => enabled
Client API version => mysqlnd 5.0.12-dev - 20150407 - $Id: b396954eeb2d1d9ed7902b8bae237b287f21ad9e $

Directive => Local Value => Master Value
pdo_mysql.default_socket => /tmp/mysql.sock => /tmp/mysql.sock

PDO_ODBC

PDO Driver for ODBC (unixODBC) => enabled
ODBC Connection Pooling => Enabled, strict matching

pdo_sqlite

PDO Driver for SQLite 3.x => enabled
SQLite Library => 3.15.1

あー、たしかMAMPのmysqlのソケットの場所が違ったはず。と思い出す。
シンボリックリンク作成

% ln -s /Applications/MAMP/tmp/mysql/mysql.sock /tmp/mysql.sock

気を取り直してもう一いっかいで、うまくいきました。

% bin/cake bake all users
Bake All
---------------------------------------------------------------
One moment while associations are detected.

Baking table class for Users...

Creating file /Users/taka/htdocs/_template/php/cakephp3/bookmarker/src/Model/Table/UsersTable.php
Wrote `/Users/taka/htdocs/_template/php/cakephp3/bookmarker/src/Model/Table/UsersTable.php`
Deleted `/Users/taka/htdocs/_template/php/cakephp3/bookmarker/src/Model/Table/empty`

Baking entity class for User...

Creating file /Users/taka/htdocs/_template/php/cakephp3/bookmarker/src/Model/Entity/User.php
Wrote `/Users/taka/htdocs/_template/php/cakephp3/bookmarker/src/Model/Entity/User.php`
Deleted `/Users/taka/htdocs/_template/php/cakephp3/bookmarker/src/Model/Entity/empty`

Baking test fixture for Users...

Creating file /Users/taka/htdocs/_template/php/cakephp3/bookmarker/tests/Fixture/UsersFixture.php
Wrote `/Users/taka/htdocs/_template/php/cakephp3/bookmarker/tests/Fixture/UsersFixture.php`
Deleted `/Users/taka/htdocs/_template/php/cakephp3/bookmarker/tests/Fixture/empty`
Bake is detecting possible fixtures...

Baking test case for AppModelTableUsersTable ...

Creating file /Users/taka/htdocs/_template/php/cakephp3/bookmarker/tests/TestCase/Model/Table/UsersTableTest.php
Wrote `/Users/taka/htdocs/_template/php/cakephp3/bookmarker/tests/TestCase/Model/Table/UsersTableTest.php`

Baking controller class for Users...

Creating file /Users/taka/htdocs/_template/php/cakephp3/bookmarker/src/Controller/UsersController.php
Wrote `/Users/taka/htdocs/_template/php/cakephp3/bookmarker/src/Controller/UsersController.php`
Bake is detecting possible fixtures...

Baking test case for AppControllerUsersController ...

Creating file /Users/taka/htdocs/_template/php/cakephp3/bookmarker/tests/TestCase/Controller/UsersControllerTest.php
Wrote `/Users/taka/htdocs/_template/php/cakephp3/bookmarker/tests/TestCase/Controller/UsersControllerTest.php`

Baking `index` view template file...

Creating file /Users/taka/htdocs/_template/php/cakephp3/bookmarker/src/Template/Users/index.ctp
Wrote `/Users/taka/htdocs/_template/php/cakephp3/bookmarker/src/Template/Users/index.ctp`

Baking `view` view template file...

Creating file /Users/taka/htdocs/_template/php/cakephp3/bookmarker/src/Template/Users/view.ctp
Wrote `/Users/taka/htdocs/_template/php/cakephp3/bookmarker/src/Template/Users/view.ctp`

Baking `add` view template file...

Creating file /Users/taka/htdocs/_template/php/cakephp3/bookmarker/src/Template/Users/add.ctp
Wrote `/Users/taka/htdocs/_template/php/cakephp3/bookmarker/src/Template/Users/add.ctp`

Baking `edit` view template file...

Creating file /Users/taka/htdocs/_template/php/cakephp3/bookmarker/src/Template/Users/edit.ctp
Wrote `/Users/taka/htdocs/_template/php/cakephp3/bookmarker/src/Template/Users/edit.ctp`
Bake All complete.

sassのfunctionで戻り値に()かっこを使った場合に、スペースが入ってしまうのを解消するのは + (コンパイラによっては)

sassのfunctionで戻り値に()かっこを使った場合に、スペースが入ってしまうのを解消するのは + (コンパイラによっては)

以下の用な関数を作ってコンパイルした時に余分なスペースが入ってun validなCSSになってしまってましたが、戻り値を+で連結するとスペースが入らずvalidになりました。(※gulp-sassを使っての環境でのこと)

(以下 sass記法です)

[関数]

@function px2vw($num)
    @return ($num/1024*100)vw

[使い方]

div
    width : px2vw(500)

[コンパイル結果:期待値]

div{
    width : 48.828125vw
}

[コンパイル結果:実際]

div{
    width : 48.828125 vw
}

orz.. vwの前にスペースが入ってエラー。。

[解決方法]

@function px2vw($num)
    @return ($num/1024*100)vw

あと以前はPHPStorm上で、Compassを使ってコンパイルしていた場合は出ませんでした。

Page 20 of 47

Powered by WordPress & Theme by Anders Norén