rukurxの日記

自分の日々の作業や調べたことのメモ

DjangoのモデルでHaving句を使う

ユーザと趣味モデルを定義して、趣味が3つ以上ある既婚者を取得する例。 from django.db import models class Hobby(models.Model): """ 趣味モデル """ name = models.CharField(max_length=255, null=False, blank=False) class User(models.Model): """ …

Pythonで電話番号をハイフン区切りに変換する

電話番号をハイフン区切りにできる便利なライブラリがないか探していたところ、GoogleがGithubで公開しているlibphonenumberを見つけました! libphonenumberは国際電話番号を解析・変換・バリデーションすることができます。 github.com だがしかし!Java, …

Djangoのテンプレート内でリレーション関係の子データをソートする

リレーション組んで取得した子データの表示順がバラバラだったのでどうにかできないかと思ったらテンプレートの組み込みタグである dictsort を使って解決できました! dictsortを指定したキーで昇順にする <ul> {% for user in users %} {% for hobby in user.h</ul>…

Pythonで数字を3桁区切りカンマにする

Integer型の場合 f"{num:,d}" >>> num = 1000000 >>> print(f"{num:,d}") 1,000,000 Float型の場合 f"{num:,.2f}" >>> num = 1234.5678 >>> print(f"{num:,.2f}") 1,234.57 参考 stackoverflow.com

aliasで設定したコマンドをシェルスクリプト内で実行する

シェルスクリプトを実行したらaliasで追加したコマンドが無いよと怒られた... ./hoge.sh: 行 40: hoge: コマンドが見つかりません 普段コマンドラインで使っているコマンドだったので、???状態。 man bash で見たらインタラクティブモードじゃないとalias…

MySQLのSELECT結果をエクスポートする

MySQLからデータをエクスポートするとtsv形式になる。 オプションでCSVとかの形式も選べるのかと思っていたが、どうやらできなそう。 デフォルトのエクスポートだとtsv形式でファイルに出力される echo "SELECT * FROM user" | mysql -uroot -p > data.tsv c…

privateの静的関数をPHPUnitでテストする

PHPUnitでの private static function のテスト方法がわからなかったのでメモ。 公式のドキュメントを見るとReflectionMethod::invokeArgs に最初の引数にnullを渡してあげればよさそうなのでやってみる。 PHPUnitをインストールする $ composer require php…

GitでプッシュしたコミットのAuthorとCommitterを変更する

Git

Gitの設定でglobalにuser.nameとuser.emailを定義していると、 新しくcloneしてきたリポジトリのコミットにglobalのものが使われてしまう。 プライベートでも業務でも同じアカウント使っていれば問題ないが、別々だとPush後に慌てることになる。 自分がいつ…

PHPのFakerを使ってテストデータを自動生成する

PHPでユニットテストを書いていると、適当なテストデータが必要になる。 毎回テストとかHoge的なテストデータを使っていたので、ちゃんとしたテストデータを使いたかった。 PHPにはFakerというランダムにテストデータを生成してくれるライブラリがあるので早…

コマンドラインから使えるチートシートを試してみた

コマンドラインを使うことが多いけど、あまり頻繁に使わないコマンドやオプションはすぐに忘れてしまうので、気軽にコマンドラインから呼び出せるチートシートないかと思っていたら、忘れた頃に発見! github.com そのまんま cheat って名前だった… Macにイ…

Composer使ったのでメモ

Composerとは Composerはライブラリの依存関係を管理してくれるツールです。 ライブラリAを使おうとしたら、内部的にライブラリBやCを使っていることがあります。ライブラリAを使うために自分でBやCをインストールしたりするのは手間がかかります。 getcompo…

PHP7で追加されたスペースシップ演算子(<=>)について

PHPのコードレビューをしていたら見慣れない演算子 <=> を発見! なんやこれと思ったら、PHP7で追加された スペースシップ演算子(spaceship operator) という比較演算子でした。 スペースシップ演算子は左辺と右辺を比較した結果として、-1, 0, 1 のいずれか…

PHPをコマンドライン上で対話式に実行する

PHPの対話シェル(REPL)を使うには -a オプションを指定する。 $ php -a Interactive shell php > 通常のPHPの実行したときと同様に、計算結果の出力やクラスを定義したりできるので、ちょっとした機能の確認に使うと便利そう。 $ php -a Interactive shell p…

MacでのSSH接続を管理する

サーバーにSSH接続するたびに毎回ホスト名や鍵情報を書くのが面倒なので、任意につけたホスト名だけでログインできるようにする。 ついでに踏み台サーバーを経由した多段SSHの設定もする。 通常のSSH $ ssh root@example.com -i ~/.ssh/example.key -p 22 長…

Macで秘密鍵と公開鍵を作成する

毎回ググっていたのでメモしておく。 秘密鍵と公開鍵を作成する $ ssh-keygen -t rsa -b 4096 -C "account@example.com" 暗号化方式はRSA、 鍵長は 4096 にする。-Cオプションはコメントで、ここではメールアドレスにすることでなんの鍵かわかるようにしてい…

Macにgnu-sedをインストールする

sedを使ってファイルの先頭行に文字列を追加しようとしたら、LinuxとMacで挙動が違った。 Linuxの場合は正常に処理が完了する $ sed -i '1ihoge' test.txt $ cat test.txt hoge Macの場合はエラーになる。 $ sed -i '1ihoge' test.txt sed: 1: "test.txt": u…

ReactNativeのビルドプロセスについてメモ

React Nativeのプロジェクトをビルドするため、以下のコマンドを実行する。 $ react-native run-ios React Nativeはこのコマンドで次の2つのことをします。 NodeのWebサーバー(Metroバンドラー)をローカルに起動する。 Metroバンドラー(旧パッケージャー)が…

ReactNativeのBridgeの仕組みについてのメモ

React NativeはJavaScriptでiOSとAndroidのアプリを作成することができるネイティブアプリケーションを作成するためのフレームワークです。 React Nativeでは Bridge という仕組みを使ってJavaScriptからNativeコードに処理を渡して実行することができます。…

React Native実行環境についてメモ

React NativeはJavaScriptで書ける iOS上とローカルのMacでは実行環境が異なる(2パターンある) JavaScriptCore 実機のiOS上で実行する場合は、JavaScriptCoreが使われる JavaScriptCoreはsafariブラウザのJavaScriptエンジンでもある iOSアプリにはiOS上のメ…

React Nativeをアップグレードする

初めてReact Nativeのアップグレード作業をした時、たくさんコンフリクトしてかなり焦った。次回アップグレードをする時にどうすればいいかの手順を自分なりにまとめた。 公式ドキュメントはこちら。 facebook.github.io インストール済のreact-nativeのバー…

はてなブログ始めました

去年からしばらくMediumで技術ブログを書いていましたが、半年ほどかかなくなり気分転換も兼ねてはてなで再開しようと思いました。 基本的には自分の技術メモ程度のものをまた続けていくことになりそう。 使い勝手がよかったらMediumからお引っ越ししようか…