Androidでアイコンを追加する

結論 Vector Asset Studioで追加する 方法 以下公式ドキュメント参考: developer.android.com

セッションベース認証まとめ

セッションベース認証について調べたことをまとめます。 セッションベース認証 概要 セッションベース認証は、主にセッションIDを用いて行う認証方式です。 基本的なフローは以下です。 まずユーザが認証画面で認証情報を入力しwebサーバに情報を送ります。w…

【エラー】COPY failed: file not found in build context or excluded by .dockerignore: stat file_name: file does not exist を解決

現象 以下のような記述のDockerfileを用意しアプリケーションをコンテナ化しgcloud run deployでCloud Run上にデプロイしたところ、特定のファイル(今回はinit.incファイル)がアップされていないことに気が付きました。 FROM php:7.0-apache # Configure PHP…

【GCP】SpringBoot + App Engine + CloudSQL + VPCネットワーク

はじめに MySQLを用いたCRUDを行うSpringBootアプリケーションを、App Engineスタンダード環境にデプロイし、プライベートIPでCloud SQLへ接続を行う大枠の手順についてまとめます。 環境 アプリケーション環境 言語: Java8FW: SpringBootビルドツール: Mave…

【GCP】GAE Java8フレキシブル環境からスタンダード環境に変更する

はじめに Java8, SpringBootで作ったアプリをGoogle App EngineのJava8フレキシブル環境にデプロイしていたのですが、デプロイ先の環境をスタンダード環境に変更する必要がありました。これの手順についてメモします。 環境 以下アプリケーションの環境です…

"Communications link failure"でアプリ起動できない問題

SpringBootで作ったアプリを起動すると、以下のエラーが起こり起動に失敗する現象に遭遇しました。 Caused by: com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure この現象の原因と解決策についてメモします。 環境 言語:…

Linux負荷監視コマンドについて(top,vmstat,iostat...)

Linuxの負荷監視コマンドについてまとめます。 キャパシティプランニング(Capacity planning)とは、リソース不足によってシステムの運用に支障が出ないようにリソースを将来的に確保するための設計技法です。 具体的には、以下のようなリソースの状態を測定…

【Linux】~/.bash_profileや~/.bashrcなどの起動順序

ステップシステム全体の設定ファイルユーザ毎の設定ファイル1. ログインシェル起動時/etc/profile-(2. Debian系のみ)/etc/bash.bashrc-3. ~/.bash_profileがある場合-~/.bash_profile4. ~ /.bash_loginがある場合-~/.bash_login5. ~/.profileがある場合-~/.p…

【Linux】SUID, SGID, スティッキービット

SUID SUID(Set User ID)とは、実行権のあるファイルに設定されている特殊なアクセス権のこと。 例えば、一般ユーザ(rootでないユーザ)が自身のパスワードを変更すると、この変更は/etc/passwdファイルに保存されます。そこで、/etc/passwdファイルのパーミシ…

【Linux】標準出力と標準エラー出力は何が違う?

Linuxの標準入出力について Linuxでは、データのストリーム(データの入出力に伴うデータの流れのこと)を扱うために以下のように、標準出力/標準出力/標準エラー出力の3つの経路(インターフェース)が用意されています. ファイル・ディスクリプタ番号入出力名 …

Origin(オリジン)とは

Originとは、URLのスキーム、ドメイン、ポートの3つによって定義され、それらが全て一致した場合に、その2つのオブジェクトは同じオリジンといいます。 ちなみに、https://example.com:8080 というURLがあった時、httpsをスキーム、example.comをドメイン、8…

dbに接続できない - could not connect to server

Dockerを使ってRails6の環境を作り、docker-compose upで起動すると、以下のようなエラーが表示されました。 PG::ConnectionBad: could not connect to server: No such file or directoryIs the server running locally and acceptingconnections on Unix d…

Next.js - プリレンダリングについて

Next.jsのプレリンダリングについて学んだので忘備録として残します。 プリレンダリングとは Next.jsにおいて、最も重要な概念はプリレンダリング(pre-rendering)です。 Next.jsは、デフォルトで全てのページでプリレンダリングします。これは、クライアント…

Dockerでコンテナ化したrailsアプリをproductionモードで起動する

Dockerでコンテナ化したrailsアプリをproductionモード(本番環境)で起動する方法をメモします。 productionモードとして起動するには以下のような設定項目があります。 production用docker-compose.ymlを用意DB設定ファイルの編集(config/database.yml)secre…

Rails - productionモードでAction Textがロードされない

タイトル通りの問題が起きて調べたのでメモします。 Action Textを導入したrailsアプリをproductionモードで実行したところ、Action Textを用いて実装した箇所がブラウザにロードされない事象が起きました。 解決策 以下のように、config/initializers/asset…

マスタリングTCP/IPを読んだ

マスタリングTCP/IP 入門編 第6版 を読みました。 言わずと知れたバイブル的な存在ですよね。実は3年くらい前のIT業界で働き始めの頃に読んでみたことがあるんですが、書いていることのイメージが出来ず読むのが苦痛でしかなかった覚えがあります。あれから3…

DB設計 - スキーマについて

達人に学ぶDB設計を読んだので学んだ内容をまとめます。 DB設計とは? データベース設計とは、アプリケーションで扱いたい事柄をデータベースで管理できるように、それら事柄を抽象化してデータモデルを作成していく作業です(データモデリング)。 データモデ…

Vim操作チートシート

随時更新します。 基本的な操作 コマンド意味w次の単語へe単語の最後へb前の単語の先頭へ0行頭へ$行末へggファイルの先頭へGファイルの最終行へ%マッチした文字へ移動C-f次のページへC-b前のページへyヤンク(コピー)Y行をヤンクpペーストP現在の位置にペース…

Rails - param is missing or the value is empty: エラー

param is missing or the value is empty: 以下のようなviewとコントローラ(Strong Parameters)を書いていたところ、POST時にparam is missing or the value is empty: article というエラーが発生しました。コードの趣旨としては、articleモデルの属性であ…

Rails - Media Queriesが効かない

問題 Rails on Railsでviewを書いている時に、以下のようにcssをレスポンシブ対応していたのですが、画面を480px以下にしてもスマホ向けのcssが適用されない現象が起きました。 header { color: white; } @media (max-width: 480px) { header { color: black…

モダンJavaScript 新仕様(ES2017/2020/2021)

はじめに ES6以降のモダンなJavaScript仕様について以前こちらの記事にまとめたのですが、個人的に知らなかったシンタックスなどあったので追加でまとめます。 桁埋め // ES2017から '7'.padStart(2, 0) // '07' '7'.padEnd(2, '#') // '7#' '7'.padEnd(6, '…

正規表現メタ文字まとめ

メタ文字一覧 メタ文字意味文字列 / 正規表現 => マッチする箇所.任意の1文字hello / h.llo => hello\w単語を構成する文字hello / h\wllo => hello\W単語を構成しない文字hello! / hello\W => hello!\s空白文字(改行,タブ文字..含む)I am / I\sam => I am\S…

:focusでフォーカス時のborder colorを変更

フォーカス時のボーダー色を変えるにはoutlineを使う .text_box:focus { outline: 2px solid blue; background-color: #FFF; } outlineではradiusを変えられないので、outlineを非表示、borderを変える .text_box:focus { outline: none !important; border:…

git logで特定の行がいつ削除/追加されたか調べる

以下のコマンドで調査可能 $ git log -S "調べたい文字列" --patch file_name.py

JavaScript - 絵文字を除外する正規表現

JavaScriptで絵文字を除外する正規表現のコードスニペット const regEmoji = new RegExp(/[\u2700-\u27BF]|[\uE000-\uF8FF]|\uD83C[\uDC00-\uDFFF]|\uD83D[\uDC00-\uDFFF]|[\u2011-\u26FF]|\uD83E[\uDD10-\uDDFF]/, 'g'); const removeEmoji = input => ( //…

React - <img>タグで画像表示

Reactで画像をアスペクト比を維持して表示する方法メモ。 import Img from './images/img.png' const imgStyle = { object-fit: contain; } const ImgComponent = () => ( <img className="imgStyle" src={Img} alt="" /> ) object-fitは、置換要素(<img>や<video>)などの中身を、コンテナーにどのようにはめ込むかを設</video>…

JavaScript - 文字列が数値変換可能かチェック

'1000' であれば1000を返し、'山田太郎'であれば'山田太郎'を返す関数 const func = (value) => { const parsedValue = Number(value); if (isNaN(parsedValue)) return value; return parsedValue; }

SSH - user@xx.xxx.xxx.xxx: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

↓のようなエラーでsshができずかなり苦しんだ。 $ ssh host_name user@xx.xxx.xxx.xxx: Permission denied (publickey,gssapi-keyex,gssapi-with-mic). 今回の原因は、そもそもsshキーのユーザが間違っていた、というもの。 上記エラーで考えられる理由は複…

JavaScript - 丸括弧に囲われた関数は即時関数

↓のように()で関数をかこうと即時関数になります。即時関数とは、定義と同時に実行される関数のこと。 (function() { console.log('hello') })() 次のように引数を渡すこともできます。 (function(name) { console.log(`hello, ${name}`) })('taro') 以上、…

JavaScript - イミュータブルな配列/オブジェクトの操作

今回はJavaScriptで配列/オブジェクトの要素の追加 /変更 / 編集 をイミュータブル(非破壊的)に行う方法をまとめます。 イミュータブルな操作の基本 基本的には、元の配列やオブジェクトをシャローコピーし、そのコピーに対して操作を加える、というやり方を…