読者です 読者をやめる 読者になる 読者になる

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

初めてブログやります。主にゲームやプログラミングについて書こうと思っております。今は更新が多めだと思います

CentOS スクリプトを定期的に実行する crontab

環境

OS: CentOS7
Python: 3.6.0
Vagrant上にある

CentOS7で定期的に実行する

これは定期的になにか取得したり、投稿したりしたいときに使えるかも

crontabというものを使う。

cron の設定ガイドをみながらやってみた

crontab -e

で設定を行う

20 02 * * 1 $HOME/.pyenv/shims/python 実行したいファイル

pyenvの場合、$HOME/.pyenv/shims/pythonで実行しないといけないらしい
デフォルトでは、システムにインストールされているpythonで実行されてしまうため

参考サイト
【Python】cronでpyenv環境のPythonが実行されない時の対処法 | あずみ.net

Python Pyhtonからtwitterを使ってみる

Python

環境

Python: 3.6.0
Vagrant上にある

Pythontwitterを使うには

python-twitter というものを使う
python-twitter 3.2.1 : Python Package Index

インストール
pip install twitter-python
Twitter APIの使用の準備

以下のサイトを参考にしました
Twitterのbotをpythonで作成する手順 - Qiita


Twitter Application Managementにアクセスして「Create New App」を押す

こんな感じで入力する

f:id:tmg1998:20170320003637p:plain

Twitterを使用するための値を取得
Consumer Key (API Key)
Consumer Secret (API Secret)
Access Token
Access Token Secret
の4つを取得する

Pythonからツイートしてみる

import twitter

api = twitter.Api(
    consumer_key=取得した Consumer Key,
    consumer_secret=取得した Consumer Secret,
    access_token_key=取得した Access Token,
    access_token_secret=取得した Access Token Secret
)

api.PostUpdate("I love python-twitter!")


これだけで、もうツイートできてしまう。

簡単すぎる...


これで定期的にツイートとかできる!!!!!

Python その日が今年の何週目か datetime

環境

OS: CentOS7
Python: 3.6.0
Vagrant上にあるもの

今日が今年の何週目にあたるか

datetime.isocalendar()でその日が何週目かわかるらしい

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

>>> from datetime import datetime
>>> today = datetime.now()
>>> today
datetime.datetime(2017, 3, 18, 7, 17, 51, 7953)
>>> today.isocalendar()
(2017, 11, 6)
>>>

2017が年、11が週番号、6が曜日となっている

datetime.isocalendar()について

その年の最初の木曜日がある日が1週目になるらしい
2017年の最初の木曜日は1/5(木)のため、
1週目は2017/1/2(月)から2017/1/8(日)となる

2017年1月1日(日)は2016年の52週目だった

>>> from datetime import datetime
>>> datetime(2016, 12, 31).isocalendar()
(2016, 52, 6)
>>> datetime(2017, 1, 1).isocalendar()
(2016, 52, 7)
>>> datetime(2017, 1, 2).isocalendar()
(2017, 1, 1)
>>> datetime(2017, 3, 18).isocalendar()
(2017, 11, 6)
>>>

ちょっと不思議

メモ

指定した日付のdatetimeの生成

>>> from datetime import datetime
>>> testDate = datetime(2017, 3, 18)
>>> testDate
datetime.datetime(2017, 3, 18, 0, 0)
>>>

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

CentOS7 Python SQL

環境

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型の変数に値を代入するときの注意点

Java

環境

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に接続

Java

環境

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"というスキーマ名に接続している

  • パスワード

パスワードを入れる