Category:

読みやすいコード、メンテナンスしやすいコード

自分が個人的に読みやすい、メンテナンスしやすいと思うソースコードの特徴を書いてみようと思います。個人の好みも含みます。 言語やアーキテクチャ、プロジェクトにかかわらず、コードレビューの時にはこのような観点でレビューしてます。 モジュール名・クラス名・関数名・変数名からその責務が明確である 基本的に、一つの責務を持つ GOOD: getBook(id: string), updateBook(book: Book) BAD: getAndUpdateBook(bookId: string) その責務がわかるように命名する 英語として成り立ってる(日本語に直訳して意味が通じる) 第三者が見て別の意味に捉えようがない ただし、具体的に説明しすぎず、適宜抽象化する 具体的にしすぎると、処理をちょっと変えるたびに関数名も変更が必要になってしまうし、関数名が長くなりすぎる傾向がある 例: 本リストを Continue Reading

Posted On :
Category:

ミニマルなCSSフレームワークMilligramの使い方

今回、ミニマルなCSSフレームワーク Milligram を使って、個人事業主としてのWebサイトを作ってみたのですが、ある程度使い方を把握できたと思うので、紹介したいと思います。 特徴 高速でクリーンに開発をスタートするための、最低限のスタイルだけを提供するというスタンスで作られたCSSフレームワークです。 軽量(gzip圧縮で2KB) 必要最低限のコンポーネント群 テンプレートやテーマなどが存在しない ドキュメントも少なく、学習量も少ない 使い方 インストール インストール方法は、 こちら にあります。 npm/yarnなどを使う方法と、 bower install milligram npm install milligram yarn add milligram CDN を利用する方法があります。 <link rel="stylesheet" href=& Continue Reading

Posted On :
Category:

PostgreSQLにおけるjson/jsonb型の取り扱い

PostgreSQLには、JSONデータを管理する型としてjson型とjsonb型があります。 これらは登録は簡単なのですが、検索して利用する際は少し癖があるので、解説しようとお思います。 PostgreSQL version: v12.6 json型とjsonb型の違い ドキュメント から抜粋しました。 キー順序や重複を利用するような特殊ケースを除き、jsonb型を利用する方が良さそうです。 json型 jsonb型 入力テキストの正確なコピーを格納(空白、キー順序、重複キーなども保持) 入力テキストをパースした結果をバイナリ形式で格納(空白、キー順序は保持しない。重複キー重複キーは最後の値だけを保持) 利用時に再解析する必要があるため、利用時に時間がかかる 格納時にオーバヘッドがあるが、利用時は高速に利用できる インデックスをサポートしていない インデックスをサポートしている データ登 Continue Reading

Posted On :
Category:

UbuntuにJenkinsをインストールして初期設定を行うまで

Ubuntuにjenkinsをインストールする手順を記載します。 基本的には こちら にしたがって作業を進めます。 バージョン Ubuntu: 18.04 Jenkins: 2.190 Javaランタイム: 11 Javaランタイムのインストール Jenkins 2.164 よりJava 11をサポートしているらしいので、Java11をインストールします。 それ以前のバージョンの場合は、Java8をインストールします。 sudo apt-get update sudo apt-get install openjdk-11-jre java –version > openjdk 11.0.4 2019-07-16 Jenkinsインストール wget -q -O – https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key ad Continue Reading

Posted On :
Category:

ssh_exchange_identification: Connection closed by remote host エラーの対処

ssh_exchange_identification: Connection closed by remote hostエラーが発生した場合の対処方法をメモっておきます。 まず、ググると以下がヒットしたので、それを試してみました。 ~/.ssh/known_hosts から関連しそうな設定を消す /etc/hosts.allow に接続元IPアドレスを記載する /etc/ssh/sshd_config の MaxStartups の設定をデフォルト値の 10:30:100 から増やす host名やipアドレスが本当にあっているか確認する しかしいずれも解決にはつながらず、途方にくれた私を救ってくれたのは、上司からの Host test-* みたいな共通設定が入ってません?? というエスパー指摘でした。まさにその設定が入っています!! 踏み台サーバ経由で各サーバにsshする必要があるため、 Continue Reading

Posted On :
Category:

Google Apps Script(GAS)のTips

Google Apps Script(GAS)に関するTipsを書きためていきます。 実行中の関数を強制停止する https://script.google.com/home/executions にアクセスして、対象の実行をキャンセルします。 ログ確認 Logger.log()で出力したログはstackdriverに出力されますが、 https://script.google.com/home/executions から確認することができます。 スプレッドシートから値を取得する 1〜最大行数まで2〜3列目の値を取得するケースについて書いてあります。 対象データが多い場合は、getValues()で二次元配列として一括で値を取得するのが鉄則です。 var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); var sheet = spr Continue Reading

Posted On :
Category:

たまに使うLinuxコマンドやbashスクリプトメモ

たまに使うLinuxコマンドやスクリプトを随時メモしていく予定です。 ターミナルからログアウトしてもコマンドを動かし続ける とても処理時間がかかる処理を実行する際に、ネットワークが切れたりして処理が停止するのを避けたいときに使います。 # nohupでhangupシグナルを無視し、バックグラウンドで実行させる nohup コマンド & nohup pg_dump -h localhost -p 5432 -U admin -Fc -f hoge.dmp hoge & # ジョブの確認・停止・再開などは通常と同じ バックグラウンド実行、フォアグラウンド実行 # バックグラウンドで実行する コマンド & sar 5 555 & > [2] 9095 > Linux 5.4.0-1025-gcp (stg-scraper01) 2020年10月01日 _x86_6 Continue Reading

Posted On :
Category:

ローカル環境で開発中の複数アプリサーバのドメインをNginxで統一する

ローカル環境で開発中の複数アプリサーバのドメインを統一する必要が出てきたので、Docker Composeを使ってNginxでリバースプロキシを立てることにした。 実現したいこと http://rinoguchi.io/hoge –proxy–> http://localhost:8080 http://rinoguchi.io/fuga –proxy–> http://localhost:8081 モチベーション Dockerで立ち上げた複数アプリサーバを、Docker Composeを使ってNginxでリバースプロキシする話は結構あるのだが、Dockerを使わず立ち上げたアプリサーバの話は発見できなかった。 個人的には、開発対象のアプリケーションはAutoReloadが効かなくなるのでDockerでは立ち上げない方が良いと考えている。なので、今回Dockerを使わず Continue Reading

Posted On :
Category:

別ドメインへの302 redirectを返すAPIを呼び出すとCORSエラー

別ドメインへの302 redirectを返す別ドメインのAPIを呼び出すとCORSエラーが発生することがわかった。 説明が難しいのだが、自分の具体的なケースを書くと、 ドメインA(フロントエンドサーバ)からドメインB(バックエンドAPIサーバ)のAPIを呼び出す APIがGoogle OAuth認証のためにドメインC(account.google.com)への302 Redirectを返す CORSエラー発生 という流れで、以下のエラーが発生した。 Access to XMLHttpRequest at 'https://accounts.google.com/o/oauth2/auth?client_id=**********.apps.googleusercontent.com&redirect_uri=http%3A%2F%2Flocalhost%3A8080%2F Continue Reading

Posted On :
Category:

はてなブログのMarkdown記法のTips

はてなブログのMarkdown記法はだいたい直感的で特に苦労することもないのですが、たまにわからないものがありますので、メモっていきます。 Markdown記法のリスト内にコードブロック挿入 結論、Markdown記法やはてな記法では、Markdown記法のリスト内でコードブロックを書くことはできません。 しょうがないので、HTMLのpreタグで記載します。 OKパターン:HTMLのpreタグを使います。シンタックス・ハイライトはできません。 このように書くと、 * 項目1 * 項目2 <pre> hoge fuga </pre> 以下のようになります。 項目1 項目2 hoge fuga NGパターン:Markdown記法のコードブロック このように書くと、 * 項目1 * 項目2 “` hoge fuga “` 以下のように、1行コード扱いになってしまいます Continue Reading

Posted On :