<Shell script> シェルのジョブ制御を有効にする
<Python, codecs> 文字列のエンコード、デコード
文字列str
のエンコードencode
とデコードdecode
。
codecs
というモジュールでいろいろ対応できるらしいっす。
In [8]: import codecs
文字列を期待するものたち、、、
In [10]: codecs.encode('hage', 'utf8') Out[10]: b'hage' In [11]: codecs.encode('hage', 'rot13') Out[11]: 'untr'
バイト列を期待するものたち、、、
In [12]: codecs.encode(b'hage', 'base64') Out[12]: b'aGFnZQ==\n' In [13]: codecs.encode(b'hage', 'zip') Out[13]: b'x\x9c\xcbHLO\x05\x00\x03\xfa\x01\x96' In [15]: codecs.encode(b'hage', 'hex') Out[15]: b'68616765' In [16]: codecs.encode(b'hage', 'bz2') Out[16]: b'BZh91AY&SY[G\xf8a\x00\x00\x01\x81\x00"\xc0 \x00!\x9ah3M\x17<]\xc9\x14\xe1BAm\x1f\xe1\x84' In [17]: codecs.encode(b'hage', 'uu') Out[17]: b'begin 666 <data>\n$:&%G90 \n \nend\n'
参考にしたところ。
マニュアル。
7.2. codecs — codec レジストリと基底クラス — Python 3.6.1 ドキュメント
キーワード。 暗号、復号
<Python, yaml> Yamlしてみた。
設定ファイル config file
の1つの形式である、yaml
をやってみた。
In [1]: s = ''' ...: name: Hage ...: sex: male ...: class: useless ...: hair: nothing ...: arms: ...: - gun ...: - pachinko ...: ''' In [3]: with open('aaa.yaml', 'w') as f: ...: f.write(s) ...: In [4]: more aaa.yaml name: Hage sex: male class: useless hair: nothing arms: - gun - pachinko In [5]: import yaml In [6]: with open('aaa.txt', 'r') as f: ...: data = yaml.load(f) ...: In [7]: data Out[7]: {'arms': ['gun', 'pachinko'], 'class': 'useless', 'hair': 'nothing', 'name': 'Hage', 'sex': 'male'}
にゃるほど。
参考にさせてもらったところ。
<selenium, Python> Proxyの設定... Firefoxの場合と、Pyvirtualdisplay
selenium
でProxy
を指定する方法…Firefox
の場合。
あと、Pyvirtualdisplay
で、Firefox
のヘッドレスheadless
をやってみた。
ヘッドレス、、とは、GUI
無し。
つまり、うまくいけばtelnet
やrsh
で端末から入って、コマンドラインで動かせる。
rom selenium import webdriver import time import os from pyvirtualdisplay import Display url = 'http://www.yahoo.co.jp' proxy = webdriver.Proxy() proxy.proxy_type['string'] = 'AUTODETECT' with Display(visible=0, size=(800, 600)): d = webdriver.Firefox(proxy=proxy) d.get(url) time.sleep(10) print(d.title) d.get_screenshot_as_file('{}.png'.format(os.path.basename(__file__))) d.quit()
うまくいった。
すばらしい! やったー。
いつもいつもお世話になるスタックオーバフロー。
マニュアル。
https://seleniumhq.github.io/selenium/docs/api/py/webdriver/selenium.webdriver.common.proxy.html
<Json, jQuery> JSONP
サイトを越えて、すなわち、クロスドメインcloss domain
で、
JSON
データを$.getJSON()
したいときは、JSONP
らしい。
ふーん。
結局、$.getJSON()
先生でなくて、$.ajax()
さんでやったんだけど、動いた。
$(function(){ $.ajax("http://hanage.hana.co.jp/json/return", { type: "get", data: { q: "f" }, dataType: "jsonp" } ) .done(function(data){ alert("Aha!"); }) .fail(function(){ alert("Boo..."); }); });
参考。
エラー発見までの過程。。。
対象URLにアクセス。
Google ChromeでF12
をポチ。
デバックモードで下記を見る。
一番下のエラーメッセージ XMLHttpRequest...
ほげほげで、ああー、JSON
ゲットできなかったんだと知る。
<Json, REST API> Json Test
REST API
の実験をかねて、Json
のデータを返してくれるようなとこないかな? と探したらあった。
こりゃいいや。
早速試す。
In [1]: import requests In [2]: requests.get('http://echo.jsontest.com/key/value/one/two') Out[2]: <Response [200]> In [3]: r = requests.get('http://echo.jsontest.com/key/value/one/two') In [4]: r.content Out[4]: b'{\n "one": "two",\n "key": "value"\n}\n' In [5]: import json In [8]: r.content.decode('utf-8') Out[8]: '{\n "one": "two",\n "key": "value"\n}\n' In [10]: json.loads(r.content.decode('utf-8')) Out[10]: {'key': 'value', 'one': 'two'}
いける。 いけるじょー。
<Python> 文字コード
文字コード Character Codes
で少し遊んだ。
UTF-8
のコード表。
このコード表を元にデコードdecode
してみる。
In [36]: b'\xe3\x81\x82'.decode() Out[36]: 'あ' In [37]: b'\xc3\xa0'.decode() Out[37]: 'à'
なるへそ。
じゃ、ってことで、エンコードしてみる。
In [38]: 'あ'.encode() Out[38]: b'\xe3\x81\x82'
ふむふむ。
で、わかりずらかったのがリテラル
ちゅうやつ。
要はどう表記するか? ということらしい。
アスキー文字ascii
君達は、\x
で始まるコード記号でスタートしなくても認識してくれるようだ。
In [40]: b'7'.decode() Out[40]: '7' In [41]: b'\x37'.decode() Out[41]: '7'
参考。
マニュアル。
https://docs.python.jp/3/howto/unicode.html#converting-to-bytes