記録として残しておきたいブログ

主にプログラミングについて書きます。現在は http://tmg0525.hatenadiary.jp/ に書いています。

Java long型の変数に値を代入するときの注意点

環境

OS: Windows10

Javaでlong型に代入

// Test.java
...
long num = 9223372036854;
...


Test.javaコンパイルすると、次のようなエラーが出る

Test.java:10: エラー: 整数9223372036854が大きすぎます
        long num = 9223372036854;


え、longで定義してるのに何で????


ぐぐってみたらすぐに解決した


long型であることを明示しないとだめらしい

long型に代入するときには数値の最後に L を付ける

// Test2.java
...
long num = 9223372036854L;
...


longだけ何でこんなことを...

豆知識程度に覚えておくことにします


参考サイト
javamania.blog25.fc2.com

Java JDBCドライバでOracleに接続

環境

OS: Windows10

Class.forName("oracle.jdbc.driver.OracleDriver");
            Connection con = DriverManager.getConnection(
                    "jdbc:oracle:thin:@127.0.0.1:1521:XE",
                    "KADAI",
                    "orapass"
            );
            Statement stmt = con.createStatement();


DriverManager.getConnection()の引数
(URL, スキーマ名, パスワード)となる

  • URL

@127.0.0.1:1521:XE
IPアドレス:ポート番号:データベース名

IPアドレスはデータベースのIPアドレス
ポート番号はデフォルトで"1521"らしい
データベース名はデフォルトで"XE"らしい

これはスキーマ名(ユーザー名)を指定する
今回は、"KADAI"というスキーマ名に接続している

  • パスワード

パスワードを入れる

bottleを使ってみた

環境

OS: CentOS7
vagrant上にある


PythonのWebフレームワークにbottleというものがあるらしいので使ってみた

bottleの使う準備をして、サンプルコードを書いてみた

from bottle import route, run

@route('/hello')
def hello():
    return "Hello World!"

# サーバーのIPアドレスをhostの部分に記述する
run(host="192.168.33.10", port=8080, debug=True)

192.168.33.10:8080/hello にアクセスしたら画面が表示された!!
簡単!!

PostgreSQL INSERT/UPDATE時に現在時刻のTIMESTAMPを入れたいとき

環境

OS: CentOS7
PostgreSQL: 9.6.1
vagrant上で動作

SQLでINSERT/UPDATEするときにその時の時刻のTIMESTAMPを入れたいときがある

[current_timestamp] を使えば一発!!

INSERT INTO m_listener (socialid, userid, username, create_at) VALUES (%s, %s, %s, current_timestamp);


stackoverflow.com

CentOS7 システムタイムゾーンを設定

環境

OS: CentOS7
vagrant上にある

なぜこれをしたいのか

unix時間をタイムスタンプに変換したら、おかしな結果になったから日本時間にできないかと思い、調べてみた

解決法

timedatectlを使う

まずはリストを表示してみる

$ timedatectl list-timezones
...
Asia/Tokyo
...

東京があるから、タイムゾーンを東京にしてみる

$ timedatectl set-timezone Asia/Tokyo


これでタイムゾーンが東京になった

$ timedatectl
      Local time: Sat 2017-03-11 11:27:17 JST
  Universal time: Sat 2017-03-11 02:27:17 UTC
        RTC time: Sat 2017-03-11 02:27:15
       Time zone: Asia/Tokyo (JST, +0900)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: n/a

参考サイト
CentOS 7 : システムのタイムゾーンを設定する : Server World



メモ

PythonUNIX時間からタイムスタンプの取得

datetimeのdatetimeのfromtimestamp()を使う

8.1. datetime — 基本的な日付型および時間型 — Python 3.6.0 ドキュメント

>>> import datetime
>>> unixTime = 1489200576
>>> unixTime
1489200576
>>> timeStamp = datetime.datetime.fromtimestamp(unixTime)
>>> timeStamp
datetime.datetime(2017, 3, 11, 11, 49, 36)
>>>

SQL 複合キーの設定

テーブル作成時に複合主キーを設定するときには

CONSTRAINT を使う。

CONSTRAINT 複合主キーにつける名前 PRIMARY KEY (カラム名1, カラム名2, ...)

-- 貸出管理表
CREATE TABLE RENTAL_MANAGEMENT (
	MEMBER_CODE		CHAR(5)		NOT NULL REFERENCES M_MEMBER (MEMBER_CODE),
	BOOK_CODE		CHAR(9)		NOT NULL REFERENCES M_BOOK (BOOK_CODE),
	STAFF_CODE		CHAR(3)		NOT NULL REFERENCES M_STAFF (STAFF_CODE),
	RENTAL_DATE		TIMESTAMP	NOT NULL,
	RETURN_DEADLINE         TIMESTAMP	NOT NULL,
	CREATE_DATE		TIMESTAMP	NOT NULL,
	CREATE_USER		CHAR(3)		NOT NULL,
	UPDATE_DATE		TIMESTAMP,
	UPDATE_USER		CHAR(3),
	CONSTRAINT PK_RENTAL_MANAGE PRIMARY KEY (MEMBER_CODE, BOOK_CODE, RENTAL_DATE)
);