三蔵開発メモ

Web開発やインフラ関連のメモを共有します

dockerでlaravelを動かしたらルーティングが正しく動かなかったのを解決したメモ

php7.3-apacheという公式イメージを利用して、dockerでlaravelを動かしたら「/」直下は表示されるのにルーティングはうまくいかなかった。

  • .htaccessの記述は問題なし
  • php artisan route:list で確認してもちゃんとルーティングはでている

いろいろ調べたところ、mod_rewriteが動いていないのが原因だった。

Dockerfileに

RUN mv /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled
RUN /bin/sh -c a2enmod rewrite

上記を追加して再ビルドしたら無事動くようになった。

FlutterでiOS実機ビルドでエラーがでてしまったのを直した

FlutterでiPhoneに実機ビルドしようとしたとき、 アプリはインストールされるのだが、エラーになってしまいsyncできない状態になってしまった。

Unable to locate DeviceSupport directory with suffix 'Symbols'. This probably means you don't have Xcode installed, you will need to launch the app manually and logging output will not be shown!
Could not install build/ios/iphoneos/Runner.app on (deviceId).
Try launching Xcode and selecting "Product > Run" to fix the problem:
  open ios/Runner.xcworkspace

Error launching application on iPhone8.

こちらの記事を参考にFLUTTER_ROOTをセットしてみたが、 自分の場合それだけでは改善しなかった。

以下を.bash_profileに追加

export FLUTTER_ROOT=[flutterSDKの場所]

qiita.com

さらに以下の記事を参考に、flutter clean等を実行したら無事ビルドできるようになった。

cd [プロジェクトのルート]/ios
pod setup
cd [プロジェクトのルート]
flutter clean

qiita.com

Mac OS X CatalinaにRuby On Rails6環境を構築

勉強用にいれてみました。備忘録メモ。

以下の条件で構築しています。

  • Xcode インストール済み
  • Command Line Tools インストール済み
  • Homebrew インストール済み

rbenvをインストール

Rubyのバージョン管理をできるrbenvをインストール

brew install rbenv ruby-build

#パスを通す
echo 'if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi' >> ~/.bash_profile
source ~/.bash_profile

#rbenv管理のRubyに変更
rbenv install 2.6.5
rbenv global 2.6.5
ruby -v

Rails、Bundlerをインストール

gem install rails -v 6.0.2
gem install bundler
rbenv rehash
rails -v

データベース用にsqlite3をインストール

brew install sqlite3

アプリケーションを作ってみる

rails new test_app
cd test_app
rails s

ここでコケました。yarnのバージョンが古くて不整合が起きる場合があるみたいです。

brew upgrade yarn
yarn upgrade
rails s

無事起動すれば構築完了です。

BootstrapVueでテーブル(<b-table>)の見出し(<th>)に任意の色をつける

BootstrapVueを利用しているのですが、見出しにvariantとかで一般的に使える色をつけたいのに、
オプション(head-variant)では「light」と「dark」しか選べないので、
以下の様に解決した。

<b-table :item=items thead-class="bg-primary text-white">
</b-table>

thead-classというものが利用できるので、
そこにbootstrap4で使えるクラスを使って色付けした。

同じ要領で、<b-input-group>のprependも色付けができた。

<b-input-group class="text-center">
  <b-input-group-text class="bg-primary text-white">タイトル</b-input-group-text>
  <b-form-input></b-form-input>
</b-input-group>

b-input-group内のprependで指定をするのではなく、
<b-input-group-text>に切り出してクラス指定をしてあげればOK。

PHPStorm(又はintellij)で、json_encode関数を使うとアラートが出る

json_encode関数はそもそもデフォルトで使えるものだが、注意を促される。

なぜかということについては、こちらで詳しく原因を書いてくれている。 blog.pinkumohikan.com

具体的な解決方法は、composer.jsonファイルのrequire内に
ext-jsonを追加してあげれば良い。

"require": {
        "php": ">=5.6",
        [中略]
        "ext-json": "*"
    },

mongodbでjavascriptを使って処理を実行するとき外部引数を設定する方法

概要

mongodbでは、jsファイルを実行して複雑な処理をすることができるが、その時外部引数を設定する方法があるのでメモ。

mongodbで実行するためのjsを用意

testというdbに、commentsという「_id(mongoid)」と「insert_date(datetime)」と「comment(string)」のカラムを持つコレクションがあるとする。

vi test.js
var startDate = ISODate(STARTDATE+'T00:00:00+09:00');
var endDate = ISODate(ENDDATE+'T23:59:59+09:00');
db.comments.find({"insert_date":{$gte : startDate, $lte : endDate}).sort({"insert_date":1}).forEach(function(record) {
  print(record._id + "," + record.insert_date + "," + record.comment);
});

スクリプトを実行

--evalオプションを使う。この場合、上記スクリプトのSTARTDATEが2019-04-01、ENDDATEが2019-04-30となる。
動的に日付をコマンド実行時に変えられるので、cronなどで実行することができるようになった。

mongo test --eval "STARTDATE='2019-04-01';ENDDATE='2019-04-30';" test.js --quiet > comments.csv

MacでLinuxなどでよく使うコマンドをターミナルに設定

centosなどで使うllコマンドがMacでは使えないので、エイリアスを追加。

vi ~/.bash_profile

以下を追加
※ついでに色分けするオプション(G)と、フォルダに「/」が足される(F)追加したコマンドを足しています。

alias ls="ls -FG"
alias ll="ls -FlG"

設定反映をする

source ~/.bash_profile

黒背景の場合、上記設定のみだと見づらい場合があるので、以下の設定を「.bash_profile」に追加

export LSCOLORS=xefxcxdxbxegedabagacad

青地の反転になるので、見やすくなるはず。
※LSCOLORSの後の文字列の2つ目「e」が文字の背景色なので、eをdとかcに変えれば色が変わるので、好みの色にすることができます。