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

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

Python 設定ファイルから値を読み込む

環境

OS: CentOS7
Python3.6.0
vagrant上にあるもの

設定ファイルから値を読み込む

Pythonの標準モジュールの中に configparser というものがあるのでそれを使う

Windowsの設定ファイルのiniによく似た形で記述されているファイルを読み込めるらしい

まず、設定ファイル

# example.conf
[person]
name=HanakoYamada
age=20


Pythonで取得してみる

>>> import configparser
>>> config = configparser.SafeConfigParser()
>>> config.read("example.conf")
['example.conf']
>>> config.get("person", "name")
'HanakoYamada'
>>>


1.configparserをインポート
2.SafeConfigParserという(設定ファイルを読み込むためのオブジェクト?)ものを生成
3.read()で設定ファイルを読み込む
4.get()で値の取得


こんな感じでPythonでは値の読み込みができる


参考サイト
設定ファイル (ConfigParser) - Python入門から応用までの学習サイト
13.2. ConfigParser — 設定ファイルの構文解析器 — Python 2.7.13 ドキュメント
kazuki-nagasawa.hatenablog.com

2017/3/15(水)追記

もし、設定ファイル中に "%" などの記号が入っていた場合
configparser.RawConfigparser() を使用する

参考サイト
stackoverflow.com

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)
>>>