kuniku’s diary

はてなダイアリーから移行(旧 d.hatena.ne.jp/kuniku/)、表示がおかしな箇所はコメントをお願いします。記載されている内容は日付およびバージョンに注意してください。直近1年以上前は古い情報の可能性が高くなります。

7/23の朝、ほぼ1年後に、nexus5でwifiが繋がらなくなった(nexus5からwifiに繋がらないPart4)

http://d.hatena.ne.jp/kuniku/20160722/1469197497

と同じ症状。

今回は、Nexus5が電源落ちて、復帰したらWIFIは認識してるんだけど繋がらない。

対応

  1. IPをDHCP自動でパスワード設定しても繋がらない
  2. WIFIルーター側を電源から抜いて強制落とす
  3. WIFIルーター側の電源をもとに戻す
  • ルーターSSID変えるのではなく、固定IP(静的)で設定しなおした
  • 設定した内容
固定IP  192.168.0.10 前回の1年前と同じIPで
デフォルトゲートウェイ 192.168.0.3 無線LANルーターそのものの
サブネットマスク 255.255.255.0
DNS1 8.8.8.8 Google Public DNSを利用
DNS1 8.8.4.4 or 未設定 Google Public DNSを利用

Spring Bootつかってthymeleafのキャッシュを無効にしているが、キャッシュされたままになる

bootのversion は、1.4系使ってます.

  • file
    • src/main/resources/application.properties
    •  spring.thymeleaf.cache = false 

になっているが、htmlファイル修正しても反映されないときは、spring boot 用の依存性が不足していることがある.

  • 確認点
    • pom.xmlでdevtoolsが依存性に存在しているか確認すること
		<dependency>
		    <groupId>org.springframework.boot</groupId>
		    <artifactId>spring-boot-devtools</artifactId>
		</dependency>
		<dependency>
		    <groupId>org.springframework.boot</groupId>
		    <artifactId>spring-boot-starter-thymeleaf</artifactId>
		</dependency>
  • ヒントにたどり着いた

http://qiita.com/NagaokaKenichi/items/9b19665f131f1a8017be

2016/4/27 追記
Spring Boot1.3以上を使っている方は、Spring Loadedはもう開発が進んでないので使わない方がいいです。代わりにSpring Boot1.3から使えるSpring Dev Toolsを使った方がいいです。

と末尾の pom.xml dependency を参考にした

でも、devtoolsでも解消しない、する時もあるのか?
キャッシュが効いてしまう。

2017年9月リリース予定?

PostgreSQL10 の資料
https://www.slideshare.net/toshiharada/jpug-studypostgre-sql10pub
全129ページ

会社で、使ってるMacの環境

会社で、使ってるMacなど

  • 2016 mac book pro 15
  • Core i7 2.7Ghz
  • memmory 16GB
  • Radeon pro 455 2048MB
  • usb-typeC * 4
  • 本体側は、JISキーボード

他は

  • キーボードとマウス
    • Apple Magic Keyboard (US配列) MLA22LL/A
    • Apple Magic Trackpad 2 MJ2R2J/A
  • Club 3D USB 3.1 Type C to DisplayPort 1.2 4K 60Hz UHD / 4K ディスプレイ Active Adapter 変換アダプタ (CAC-1507)
  • モニタ 27インチの4K
    • https://www.amazon.co.jp/Dell-ディスプレイ-P2715Q-IPS非光沢-sRGB99/dp/B00PXXIYMK/
    • モニタは、HDMIだと30Hzなので typeCからDisplayPortに変換して、モニタ側の設定でDPだと1.1がデフォルトになっている?ので、1.2に変更して使う。
    • モニタは、Windowsとも兼用するので、Windows側だとGPUは組み込みでcore i7-2600 CPUとDELLのマザーで最初からついてるDP接続だと30hzになる、それと4Kにすると文字が小さく細くなり、目が疲れるので2kWQHD 2560×1440にして使っている

[SQL]SQLで最新の日付のデータや同一グループの中で最新のレコードを取得する

履歴テーブルというか、どんどん情報を格納しておいて、そこから最新を取得するSQL

例えば、

価格情報のテーブル
 商品ID
 日付
 価格

といった構造において 商品IDごとに、最新日付の価格を取得するといった場合
毎回、いろいろな手法があるなーと思うんです。
RDBごとに性能も変わるので、試してみるしかない。

Group byのmaxを使う
  • 降順でソートして、Limit 1 や分析関数の row_number() を使う
  • 最大値のカラムに対して、条件を指定する xxx = select max(yyy) / xxx In select max(yyy)
  • existsを使う(not exists の場合は、 b.create_date > a.create_date のように、existsの場合は、 b.create_date < a.create_date)

別の観点

中規模くらいのシステム、レコード数が 数千万〜、億を超えるくらい
    • View等を定義して、個々のロジックで異なることが少なくなるようにしてください
    • Viewを設計・メンテナンスするのは、DBA or DB回りの人が行ってください
    • チューニングが必要になった場合には、Viewのメンテナンスで対応できます(ヒント句を入れる、SQLを組み替える)
    • OraclePostgreSQLのマテリアライズド・ビューを利用する場合は、リフレッシュを考えてください、高速リフレッシュで対応できることが前提です。
      • 1日数回程度のリフレッシュすれば良いのであれば、完全リフレッシュでも良いかもしれません。
データ量が1億レコード超えてくるような場合だと、非常に遅くなります
  • そのような場合の1つの打開策として、最新を管理するテーブルを別に用意します。

価格情報のテーブル
ID(シーケンスみたいな値、PK)
 商品ID
 日付
 価格

価格情報管理テーブル
最新ID:価格情報のテーブル.ID
商品ID:1つ古い、もしくは最新と同じ

非同期処理がある場合の最新IDはデータが確定・固定されるまでは、最新IDに反映しない方が良い。でないと、中途半端なデータが最新扱いになる可能性がある。
最新IDと商品IDが一致する場合と 最新IDが100, 商品IDが99のような場合もありえる。逆転して 最新ID99、商品ID 100 というケースは発生しないようにするか、どのケースはどちらを使うのか業務ロジックを決めておく。

として、価格情報管理テーブル.最新のIDから、価格情報のテーブル.ID をたどるようにします。
これだと、INNER JOIN で比較的速くなります。

注意点は、
  • 価格情報のテーブルにトリガーを仕掛け、価格情報管理テーブルに反映するのは、どうしようも無い時の最終手段と考えてください。
  • トリガーは、見通しを非常に悪くします。再コンパイルが必要になり無停止リリースできない場合が多々あります。
  • アプリ側で共通ロジックを作成して対応することを推奨。

cenots7 setup ローカルの試し用環境の作成

セットアップ、インストール

  • CentOS-7-x86_64-DVD-1611.iso をダウンロード
  • VirtualBoxRHEL 64 を選び新規作成 、起動して、isoを選択する
  • インストール

 言語:日本語 > Japaneseを選択
 
 ソフトウェアの選択
  最小限のインストールから変更
  
  ベース環境で   GNOME Desktop を選択し
  開発ツール
  互換性ライブラリ
  を選択
 
ネットワークとホスト名で
  ホスト名を、xxxを入力
 
 enp0s3 IPv4を オンにする、IPv6はオフのまま

--> インストール開始 、最小限の構成ではないため、ちょっと時間かかる。
  最小限だと、数分で終わるくらい。
  選択した場合は、15−30分くらいだったかな・・・。

インストールの最後で、
--> 再起動 を行う

その後、ライセンスに同意
Gnome入れたので、GUIの画面が表示される、Gnome入れていない場合は、コンソールで選択)

言語、キーボードを選択
後は、必要に応じて。

初期設定

http://qiita.com/emabust/items/eb0ece84e074cca8fef1
$:ユーザ
#:root

  • 一般ユーザーからsudoできるように設定


$su -
# usermod -G wheel [一般ユーザー名]

  • yum パッケージのアップデート


$ sudo yum -y update

netstat はコマンド表示結果遅いし、プロセスIDわからないしって調べた結果

http://qiita.com/tksmaru/items/d4951b5394aeee8c3cbc
のように

tomcat8080使っているのプロセスを特定


$ lsof -n -P -i:8080
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 1050 xxx 39u IPv6 xxx 0t0 TCP *:8080 (LISTEN)

1050がpidなので、これをkill


kill-9 1050