外部のネットワークに接続できない
環境
Raspberry pi3
OS: Raspbian jessie lite
ping google.com でエラーになる
外部のネットワークに接続できない...
pi@raspberrypi:/etc $ ping google.com connect: Network is unreachable
デフォルトゲートウェイが正しく設定できていなかった
外部と通信するための出入り口
/etc/network/interfaces に設定を記述することで解決した
ゲートウェイの確認をしてみた
pi@raspberrypi:/usr/bin $ route -v カーネルIP経路テーブル 受信先サイト ゲートウェイ ネットマスク フラグ Metric Ref 使用数 インタフェース 192.168.3.0 * 255.255.255.0 U 303 0 0 wlan0
ゲートウェイが'*'だと、設定できていないらしい
あれ、 /etc/dhcpcd.conf に書いたんだけどな
# /etc/dhcpcd.conf static domain_name_servers=192.168.3.1
設定が反映されていないっぽい?
/etc/network/interfaces にゲートウェイの設定を記述する
固定IPにしていて、設定する場合
manual を static にする
address, netmask, gateway を追加する
# /etc/network/intetfaces ... allow-hotplug wlan0 iface wlan0 inet static wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf address 192.168.3.14 netmask 255.255.255.0 gateway 192.168.3.1
再起動する
外部と通信でるようになった
pi@raspberrypi:~ $ ping google.com PING google.com (216.58.221.14) 56(84) bytes of data. 64 bytes from nrt13s38-in-f14.1e100.net (216.58.221.14): icmp_seq=1 ttl=55 time=5.90 ms 64 bytes from nrt13s38-in-f14.1e100.net (216.58.221.14): icmp_seq=2 ttl=55 time=9.36 ms 64 bytes from nrt13s38-in-f14.1e100.net (216.58.221.14): icmp_seq=3 ttl=55 time=29.5 ms
参考サイト
weworkweplay.com
CentOS スクリプトを定期的に実行する crontab
CentOS7で定期的に実行する
これは定期的になにか取得したり、投稿したりしたいときに使えるかも
crontabというものを使う。
cron の設定ガイドをみながらやってみた
crontab -e
で設定を行う
20 02 * * 1 $HOME/.pyenv/shims/python 実行したいファイル
pyenvの場合、$HOME/.pyenv/shims/pythonで実行しないといけないらしい
デフォルトでは、システムにインストールされているpythonで実行されてしまうため
Python Pyhtonからtwitterを使ってみる
Pythonでtwitterを使うには
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」を押す
こんな感じで入力する
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.1 ドキュメント
>>> 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 設定ファイルから値を読み込む
環境
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