@RestController で別のエンドポイントに同じ処理を行わせる方法(エイリアス)

たとえばECサイトで、購入した商品の「変更処理 (/edit) 」と「キャンセル処理 (/cancel) 」があったとします。 でもサーバ側では実際には同じPUTリクエストで行われており、違いは渡ってくるPUTオブジェクトの中身だけ(変更点が数量フィールドなのか削除フ…

ZoneId を使った LocalDateTime から OffsetDateTime への変換

ZonedDateTime を経由する方法 private static OffsetDateTime LocalToOffset(LocalDateTime localDateTime, ZoneId zoneId) { return ZonedDateTime.of(localDateTime, zoneId).toOffsetDateTime(); } atZoneメソッドを使う方法 private static OffsetDateT…

メソッドの冒頭に if 文で return させる場合に else をつけたほうがいい理由

「メソッドの冒頭で if 文で return させる」っていうのはどういうことかというと private static String getContents(HashMap<String, String> myMap, String key) { if (myMap == null) { return ""; } return myMap.get(key); } みたいなヤツのことです。 この場合だと、</string,>…

OffsetDateTime - "2019-04-01T00:00:00+09:00" の "+09:00" って何??

OffsetDateTime っていうのはオフセット情報がついた日時のフォーマットです。 こういうやつ。 2019-04-01T00:00:00+09:00 で、ここの最後についている +09:00 これがオフセットです。 厳密なところはISO 8601に定義されてるんですが 一旦気になるところだけ…

SpringBoot で OffsetDateTime を deserialize するときに Jackson が勝手に UTC に変換してしまう件について

よそのAPIが返してくる OffsetDateTime を処理するロジックを書いていたところ、テストが fail して、見てみると何故か UTC に変換されてたことがありました。 API が返している値 "2018-04-01T00:00:00+09:00" レスポンスをデバッグしてみた値 "2018-03-31T…

Mac Book でマルチジェスチャーが効かなくなったときの対処法

Mac Book って三本指で上にスワイプするとウィンドウ一覧が出たり、横にスワイプするとデスクトップを切り替えたりできて便利なんですが、ふとした時に効かなくなるんですよね。 そういうときの対処法がめっちゃ簡単だったので載せておきます。 ターミナルア…

git-flow の各ブランチをひとことで説明

git

developブランチ 共通の開発環境 featureブランチ 案件毎に作られる開発環境 releaseブランチ 「リリースするもの」リスト masterブランチ いま本番で動いているもの hotfixブランチ 緊急用tmpブランチ memo 開発はdevelopから派生させたfeatureブランチで行…

ディレクトリの作成時に有無を判別しない方法

mkdirコマンドは、既に対象のディレクトリがあるとエラーになってしまいます [farmedgeek@Mint:~]$ ls -ld /home/farmedgeek/aaa drwxrwxr-x 2 farmedgeek farmedgeek 4096 Jan 7 10:54 /home/farmedgeek/aaa [farmedgeek@Mint:~]$ mkdir /home/farmedgeek/a…

ディレクトリパスをラッピングし過ぎ問題

DIR1="/aaa/bbb/ccc/" DIR2="${DIR1}ddd/eee/" DIR3="${DIR2}fff/" DIR4="${DIR3}ggg/hhh/" CONF="${DIR2}xxx.conf" FILE="${DIR4}filename.txt" こういう 入れ子になったディレクトリパスの変数化ってメリットあるのかな?と。。 「ファイル覗きたいんやがD…

シンボリックリンクの「リンク元」と「リンク先」

いっつもわからなくなるんですが [farmedgeek@Mint:~]$ date > moto [farmedgeek@Mint:~]$ cat moto Mon Jul 6 12:08:10 JST 2015 [farmedgeek@Mint:~]$ の場合 ln -s ${リンク元} ${リンク先} なので [farmedgeek@Mint:~]$ ln -s moto saki [farmedgeek@Min…

ターミナルで実行した時と他プロセスからキックされた場合のbashの挙動が違う場合

ターミナルから叩いた時は上手くいったのに IT(結合テスト)で他プロセスからキックされたら上手く動かない。。 みたいなときって、たまーにあります。 適正なユーザでない よくあるのは「ユーザが違う」っていうケースです。 結合テストだとバッチ用ユーザ…

Permission denied の対応

「許可がありません.」とか「Permission denied.」って言われる場合 たんにファイルに実行権限がない場合は chmod でヨロシクドウゾなんですが 例えば ドットコマンド を実行した場合にコレが出た場合 [farmedgeek@Mint:~]$ . ./tmp.sh /bin/.: Permission d…

ターミナルのプロンプト表記の変更

デフォルトだとこうなってますが farmedgeek@localhost ~ $ ls -l ちょっと気に食わないので変えちゃいます .bashrc に下記を追記してください PS1='[${debian_chroot:+($debian_chroot)}\u@\Mint:\W]\$ ' こうなります farmedgeek@localhost ~ $ . .bashrc …

adduser と useradd の使い分け

結論から言うと adduser → 「とりあえずお手軽にテストユーザ作りたい場合」 対話形式で必要な情報を聞いてくれるから useradd → 「ある程度運用人数も多くて、レギュレーションが決まってるとか、スクリプトで大量に作りたい、っていう場合」 デフォルトだ…

trコマンドの落とし穴

trコマンドの落とし穴 これもう個人的な記事なんですが、、騙された感が強かったので。。 単なる文字の置換をしたいときに、簡易版sedとして重宝するtrコマンドですが 何気に文字"列"には対応していません。 $ tr abc 123 の意味するところは "abc"っていう…

MXレコードの概要

digコマンドでMXレコードを表示します (はてなのドメインを使わせてもらいます) [farmedgeek@Mint ~]$ dig d.hatena.ne.jp MX ; <<>> DiG 9.8.1-P1 <<>> d.hatena.ne.jp MX ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status…

bashで丸括弧を使う理由

bashで丸括弧を使うことでサブプロセスを走らせることができる bashで丸括弧が出てきて、「?????」ってなったので、調べてみました。 ./subproc.sh #!/bin/sh echo "[mainプロセスで変数に格納、mainプロセスで表示]" PROC="main" echo "PROC=${PROC}\n…

【shiftコマンド】bashで引数の数が可変の場合の処理

引数がいくつ来るか分からない場合 shiftコマンドを実行することで、シェルの引数を順に第一引数として呼び出すことができます ./shift.sh #!/bin/sh for i in `seq 1 ${#}` #引数の数だけループさせる do echo ${1} #第一引数を表示 shift #shift done 実行…

curlでHTTPレスポンスのみを表示する方法

レスポンスがないWebAPIとか、ウェブビーコンのURLを叩くときに HTTPレスポンスで成否を判断する方法ですね curl -s ${URL} -o /dev/null -w "%{http_code}\n" 例 [farmedgeek@Mint ~]$ curl -s https://www.google.co.jp/ -o /dev/null -w "%{http_code}\n"…

gitでローカルの作業を無かったことにする方法

git

結論から言うと、以下のコマンドになります [farmedgeek@Mint ~/src]$ git checkout . 流れを追っていってみます まずcloneほやほやのこのファイルを編集してみます [farmedgeek@Mint ~/src]$ cat sample.py #!/usr/bin/python # coding:utf-8 print 1 これ…

cron実行時のカレントディレクトリ

cronが実行されるところ cronってどこで実行されるんだろう?っていうのを知らなかったので 調べてみました。 やり方 あえて相対パスでcrontabを作成 * * * * * date >> cron.txt これでやってみたところ [farmedgeek@Mint ~]$ tail -f /home/farmedgeek/cro…

bashでoracle(SELECT)

bashでoracleに接続し、SELECT結果を利用したい bash内部で、oracleに接続して取得した結果を シェル変数に入れて使いまわす方法です。 ./select.sh #!/bin/sh MY_SYSDATE=`sqlplus -s scott/tiger << EOF set feedback off; set echo off; set flush off; s…

公開鍵暗号の仕組み

公開鍵って、鍵なのに公開しちゃったらダメじゃない? どういう仕組みなの? って思いますよね。 えっ?思わない?玄人は黙っててください。 まず前提として 以下のことを覚えてください 公開鍵は秘密鍵とペアで利用される 公開鍵で暗号化されたものは、その…

rsyncでディレクトリの同期

rsync ディレクトリ間の同期をとるコマンド rsync ${dirA} ${dirB} とやることで、${dirA} のファイルをまるごと ${dirB} へコピーすることができます。 scpと同様に、ホストを跨いで行うことも可能。 その場合は rsync ${dirA} ${hostname}:${dirB} で ${ho…

ssh接続できない

sshでエラーが 頻繁にログインするサーバと たまにしかログインしないサーバってあると思うんですけど 今日、後者のサーバに半年ぶりくらいにログインしようとしたら こんなエラーが出てきました。 [farmedgeek@Mint ~]$ ssh ltns_host @@@@@@@@@@@@@@@@@@@@…

バッファオーバーフロー予防

C

Cのソースコードを読んでいて出てきたこんな処理 while(fgets(buf, 256, fpMaster) != NULL){ fputs(buf, fpCopy); } while文で回しながら fpMasterから256バイトずつbufに入れてfpCopyに移す っていうのをやってるんだけど なんでイチイチこんなことしてん…

mongoDBのインストール

mongoDBを入れてみたここを参照(公式) http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/ 事前準備 公開鍵の取得 [farmedgeek@Mint ~]$ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10 /etc/apt/sources…

ポートの開放

前回に引き続き、ポートの話です。 前回は、ポートがどうなってるかを確認するところまででしたので 今回は閉じているポートを開けるところまでやってみたいと思います。 ポートを開けるには、iptablesをいじる必要があるんですが、素人には難しい(らしい)…

ポートスキャン

開いているポートを調べる方法です nmapコマンドを使います なければ入れましょう [farmedgeek@Mint ~]$ sudo apt-get install nmap 空いているポートの一覧を出してくれます [farmedgeek@Mint ~]$ nmap 127.0.0.1 Starting Nmap 6.00 ( http://nmap.org ) a…

csv変換スクリプト

csv変換スクリプト 任意のデリミタで区切られたファイルをcsvに変換するスクリプトです ./to_csv.py こういうファイルがあるとします [farmedgeek@Mint ~/python]$ cat input.txt no name date num 1 spam-man 1990/03/10 32 2 egg-man 1989/07/31 2 3 ham-m…