Webエンジニアのメモ帳

技術的な話を中心に書いています。

2020-01-01から1年間の記事一覧

【MariaDB】文字コードを変更する方法 (utf8 → utf8mb4)

MariaDBではデフォルトの文字コードがutf8となっていますが、これでは日本語を上手く扱うことができません。 そのため、utf8mb4に変更する必要があります。この記事では、その方法を説明します。 現状の文字コードを確認 以下のSQL文で確認できます。 MariaD…

【MySQL】主キーだけ変えてレコードをコピーする

MySQLでレコードをコピーする方法を説明します。 レコードを複製する方法 (主キーを設定していない場合) まずは、テーブルに主キーが設定されていない場合です。 以下のようなpersonテーブルを考えます。 ID NAME AGE 001 山本 25 002 田中 23 003 鈴木 30 …

【PHP】コードの整形をコマンド一発で行う

コードの整形方法 PHPのコードの整形は、ターミナルから以下のコマンドを打つだけでできます。 vendor/bin/php-cs-fixer fix . --rules=@PSR2 第2引数の.は対象とするディレクトリを表しているので、特定のファイルやディレクトリだけ修正の対象にしたい場合…

【Mac】movをmp4に変換する方法【コマンドで簡単】

Macでmovをmp4に変換しようと思って調べると、期間限定 or 容量制限ありで無料といったアプリばかりでてきます。 そこで、ターミナルからffmpegというコマンドを使って変換を行う方法を紹介します。 インストール方法 brewコマンドでffmpegをインストールし…

【MySQL】インデックスについて

MySQLなどのようなRDB(Relational DataBase)にはインデックスというものがあります。 この記事では、インデックスについて説明します。 インデックスとは 一言で言えば、インデックスとは索引のようなものです。(英語のindex自体が索引という意味です。) 例…

【Python】文字コードを指定してファイルの内容を読み込む

Pythonで文字コードを指定してファイルの内容を読み込むには、以下のように記述します。 path = "{ファイルのパス}" with open(path, "r", encoding="utf-8") as f: content = f.read() 組み込み関数のopen()については以下のドキュメントに書かれています。…

【Python】日本語の出力ができない場合の対処法

エラーの内容 以下のような、文字列を出力させるだけのプログラムを動かすと、エラーになりました。 # coding:utf-8 print("あ") エラーの内容は以下のような感じです。 Traceback (most recent call last): File "print.py", line 3, in <module> print("\u3042") U</module>…

【Python】Webサイトの内容を読み込む

以下のコマンドを実行すると、Webサイトの内容を読み込むことができます。 from bs4 import BeautifulSoup from urllib.request import urlopen url = "{読み込みたいWebサイトのURLをここに記述}" html = urlopen(url) soup = BeautifulSoup(html, 'html.pa…

【Git】コミットログを全て消す方法

あまり使う機会はないですが、これまでのコミットログを全て消すには、以下のコマンドを実行します。 rm -rf .git git init git add {コミットに含めたいファイル} git commit -m "{コミットメッセージ}"

【pcf】phpのコードをデプロイする方法

pcf(pivotal cloud foundry)にphpのコードをデプロイする方法を説明します。 使用するbuildpackについて phpのコードをデプロイする場合、manifest.ymlに記述するbuildpackはphp_buildpackを指定します。 このbuildpackについてはドキュメントに詳細が書かれ…

【php】設定ファイルについて

phpの設定ファイルについて説明します。 php.ini phpの全体的な動作を設定するファイルです。たとえば文字コードなどを設定しています。 phpをインストールした段階で配置されるのが普通で、パスを確認するには以下を実行します。 php --ini ちなみにサーバ…

phpがLinux上で動く仕組み

phpのコードがLinux上で動く仕組みを説明します。 Webサーバーの機能 まず、通常のhtmlファイルがサーバーで表示される仕組みを考えてみます。 サーバーを立てただけでは、当然ですがWebサーバーとしては機能しません。 ブラウザでサーバーのIPアドレスを打…

Docker Swarmについて

Docker Swarmとは、複数のコンテナを管理するためのツールのことです。 いわゆるコンテナオーケストレーションツールで、Kubernetesなどが主流なようですが、Docker SwarmはDockerの標準機能で使えるので手頃というメリットがあります。 簡単に図にすると以…

【Spring Boot 】@Componentがシングルトンであることの確認

Spring Bootの@Componentはシングルトンです。つまりインスタンスが1つしか存在しません。 @Componentだけでなく、@Controllerや@Serviceも同じです。 これを簡単なコードを書いてテストしてみました。 実験1 まずは、以下のようなコントローラークラスを実…

SOLID原則について

オブジェクト指向プログラミングで用いられる「SOLID原則」について説明します。 1. 単一責任の原則(Single responsibility principle) 1つのクラスは1つの機能だけ持つ、という原則です。 例えば、あるクラスがGetterとSetterに加え、DBにデータを保存す…

【Linux】ホスト名やIPアドレスを確認する方法

Linuxでホスト名やIPアドレスを確認する方法を説明します。 ホスト名を確認する hostname 直感的な名前のコマンドです。 IPアドレスを確認する ifconfig こちらは結果の見方が少し複雑です。 以下のサイトなどを参考にするとわかりやすいかなと思います。 if…

【Java】Streamの使い方

Java8から追加されたStreamという機能があります。 これは、ListなどのCollectionに対し、mapやfilterなどの中間操作を行い、collectなどの終端操作を行うというものです。 以下、使い方を説明します。 Listの各要素に同じ処理を行う まずは、数字のリストの…

【Java】パッケージとモジュールについて

Javaのパッケージとライブラリについて説明します。 パッケージとは パッケージというのは、Javaのクラスをまとめて分類するための仕組みです。 Javaのプログラムは以下のように先頭にimport文があるのが一般的ですが、 import (パッケージ名).(クラス名) (…

【Spring】RestTemplateの使い方

SpringでHTTP通信をする際に使える、RestTemplateの使い方を説明します。 リクエストを行う方法 リクエストパラメータもリクエストボディーもなしでGETする場合 RestTemplate restTemplate = new RestTemplate(); String url = "http://sample.co.jp/test"; …

【Java】Slf4jを使ってログ出力を行う

Javaでは「Slf4j」というライブラリを使うと非常に簡単にログ出力ができます。 この記事ではSlf4jの使い方を説明します。 Slf4jの使い方 build.gradleの設定 まずは、build.gradleのdependenciesのところに以下を追加します。 dependencies { compileOnly 'o…

【Java】Slf4jを使って出力したログの内容をテスト

Slf4jを使って出力したログの内容を検証する方法を説明します。 なお、Sl4fjについては、以下の記事で説明しています。 http://lavapies9.com/2020/04/16/2020-04-16-101635/ テスト対象のクラス テスト対象のクラスは以下とします。 import lombok.extern.s…

【Java】Lombokの@Dataと@Valueについて

Lombokを使うと、ゲッターやセッター、コンストラクタなどを一々書かなくても、クラスにアノテーションを付与するだけでこれらを使うことができるようになります。 これらをまとめて付与してくれる2種類のアノテーションについて説明します。 @Dataについて …

【Git】リモートのブランチをローカルに取り込む

リモートのブランチをローカルに取り込むには、以下のようにします。 $ git checkout -b (ブランチ名) origin/(ブランチ名) エラーが出た場合の対処法 以下のようなエラーが出ることがあります。 fatal: 'origin/(ブランチ名)' is not a commit and a branch…

【Git】コミットするブランチを間違えた際の対処法

Gitでコミットするブランチを間違えた際に、正しいブランチにコミットを付け替える方法を説明します。 1. ログを確認し、コミットIDを確認する $ git log 2. 正しいブランチに移動 $ git checkout (ブランチ名) 3. 1で確認したコミットを付け足す git cherry…

【Java】バージョン関連のエラーが発生する場合の対処法

エラーの内容 普段InteliJ IDEAでJavaを使って開発をしているのですが(ビルドツールはGradle)、 Could not target platform: 'Java SE 11' using tool chain: 'JDK 8 (1.8)'. のようなエラーが出ることがあります。 解決方法 IntelliJ IDEAの上部のバーで In…

【シェル】パイプとエラーについて

パイプで無関係な2つのコマンドを繋いでいて、1つめのコマンドでエラーが発生したときの挙動を調べました。 $ expr 2 / 1 || echo a 2 # エラーを発生させる $ expr 2 / 0 || echo a expr: division by zero a その結果、1つめのコマンドが正常に実行されれ…

【Python】文字列に変数を埋め込む方法

文字列に変数を埋め込む方法を説明します。 方法1 "{animal}が{num}匹います".format(animal="カピバラ", num=3) 'カピバラが3匹います' 「カピバラ」の部分は文字列ではなく変数にしても動きます。 方法2 方法1をさらに簡略化した記法です。 "{0}が{1}匹い…

【Python】Gmailからメールを送る

Gmailのアカウントからメールを送るPythonのスクリプトは以下の通りです。 なお、Pythonは3系を使用しています。 # coding:utf-8 import smtplib from email.mime.text import MIMEText from email.utils import formatdate FROM_ADDRESS = "Gmailのアドレス…

【YouTube Data API】動画のリンクが有効かどうか取得する方法

youtubeの動画は削除されたり、アップロードしているアカウントが凍結されて視聴できなくなったりする場合があります。 YouTube APIを使い、動画がこのような状態でないか調べる方法を説明します。 APIキーの取得 今回の方法では、Youtube Data APIというAPI…