TOEIC試験も終わったので
最近見ているもの
TOEICの試験も終わりました。得点がだいぶ悪かったような気がするのでドキドキしています。
試験が終わったので、最近はFire TV Stickでモヤさまを観たりとか、有田と週刊プロレスととか、FRIENDSとか観ています。
- 発売日: 2013/11/26
- メディア: Amazonビデオ
- この商品を含むブログを見る
すっかり勉強しなくなったかといえばそうではないのですが、頭を少し休めようと思ったので仕事が終わって家に着いたらダラダラと見ている状態です。
英語の勉強を完全にやめたわけではなくまだ続けていて、最近はゼロからスタート英語を読むトレーニングBOOKという本を読んでいます。
- 作者: デイビッド・セイン
- 出版社/メーカー: ジェイ・リサーチ出版
- 発売日: 2017/09/26
- メディア: 単行本
- この商品を含むブログを見る
昔から雑学っぽいものを読むのが好きなので、英文でもそういうものを読むと頭に入ってくる気がしています。1つの話が100wordsから200wordsくらいなので飽きずに読むことが出来ます。音声をダウンロードして、通勤中に聴いたりしてます。
あと、試験が終わったのでエンジニアリング組織論を読み始めました。
エンジニアリング組織論への招待 ~不確実性に向き合う思考と組織のリファクタリング
- 作者: 広木大地
- 出版社/メーカー: 技術評論社
- 発売日: 2018/02/22
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る
今日はChapter1を読んでいたのですが、仕事をしていて認識のズレが何故起こるのかとか、解消するための導きが書いてあるのでなかなか面白いです。
最近の話
今月もあと数日で終わるのですが、今月で消えてしまう有給が微妙に余っているので有給消化をし始めました。月末は旅行に行こうかと思っています。旅行は行くまでのプランを建てるのが楽しいのですが、行ってからも楽しめるように大量を整えていかないとですね。ご飯とかオヤツをたくさん食べて2キロ位は太ってこようかと思います。
仕事も今季やることはほぼ終わった状態なのでゆっくり休めそうですね。
pythonで動的にクラスとメソッドをCallする
これはなに?
JavaScriptとかで動的にオブジェクトやメソッドが呼べたりしますが、pythonでも出来たら良いな思ったので調べてみました。
実際に書いてみた
参考にしたQiitaの内容を見て、実際に動作を確認してみました。call_test.py
という名前で書いてみます。コードはこんな感じです。
class Callback(object): def __init__(self, data): self.data = data def wake_up(self): return self.data # 通常の使い方 cb = Callback('test') result = cb.wake_up() print(result) # wake_upを実行 result2 = getattr(cb, 'wake_up')() print(result2) # wake_upは実行されない result3 = getattr(cb, 'wake_up') print(result3) # ここで実行される print(result3()) # クラスを動的に設定 cls = globals()['Callback'] instance = cls('test') result4 = instance.wake_up() print(result4) # wake_upを実行 result5 = getattr(instance, 'wake_up')() print(result5)
実際にプログラムを実行すると意図した通り動作するようでした。
$ python call_test.py test test <bound method Callback.wake_up of <__main__.Callback object at 0x1016bbc88>> test test test
まとめ
動的にクラスやメソッドが呼べると便利な場合もありますが、クセのあるコードにもなるので使うところは注意しながら書いたほうが良さそうですね。
参考にしたサイト
追記
他にも、Pythonで文字列から定義済みクラスのインスタンスを作るというのがありました。勉強になりますね。
花粉症対策にIHADAを買ってみた
twitterで見かけたので早速一昨日くらいに買ってみました。昨日と今日付けているのですが、まあまあ効いているような気がします。スプレータイプなので朝シュッとひと掛けしています。
朝つけて午後くらいにもう一回付けると良いのかもしれませんね。
効いている気がするのですが、症状があまり出てない時は実感が湧いてこないのですよね(^_^;)
でも、くしゃみする回数が少なくなったように思えるのできっと効いているのでしょう。
明日もまた付けてからお出かけしようと思います。
- 楽天
- Amazon
資生堂薬品 イハダアレルスクリーンN スプレータイプ イオンの透明マスク 頭・髪用 花粉・PM2.5をブロック 100g
- 出版社/メーカー: 資生堂薬品
- 発売日: 2018/01/16
- メディア: ヘルスケア&ケア用品
- この商品を含むブログを見る
pandasでテーブルタグがあるサイトをスクレイピングする
これはなに?
仕事で使っている某サイトの管理画面で日々のレポートが見れるのですが、CSVダウンロードとか何かしらのダウンロードがなくてサイトを閲覧することしか出来ないところがありました。あちこちスクレイピングを調べていると、pandasでスクレイピングすることが出来るようなので使ってみようかと思いました。
インストール
私の環境ではpython3.6.4を使っています。幾つかインストールする必要があります。
$ pip install pandas lxml html5lib BeautifulSoup4
書いたコード
テーブルタグがありそうなサイトを考えた時、オライリーのことを思い出しました。ここではオライリーの書籍一覧をスクレイピングしてみます。ファイル名はpandas_test.pyという名前でとりあえず書いてみます。
import pandas as pd url = 'https://www.oreilly.co.jp/catalog/' rows = pd.io.html.read_html(url) print(rows[0].head()) print('-----') print(rows[0].head().to_dict(orient='records'))
書いたコードを実行
実行した結果は以下のようになります。
$ python pandas_test.py ISBN Title 価格 発行日 0 4-87311-061-0 Javaネットワークプログラミング 第2版 6264 2001/10/01 1 4-87311-063-7 C++プログラミング入門 新版 3024 2001/11/01 2 4-87311-065-3 サーバ負荷分散技術 3240 2001/12/01 3 4-87311-078-5 NFS & NIS 第2版 5184 2002/04/01 4 4-87311-079-3 不正アクセス調査ガイド 3672 2002/04/01 ----- [{'ISBN': '4-87311-061-0', 'Title': 'Javaネットワークプログラミング 第2版', '価格': 6264, '発行日': '2001/10/01'}, {'ISBN': '4-87311-063-7', 'Title': 'C++プログラミング入門 新版', '価格': 3024, '発行日': '2001/11/01'}, {'ISBN': '4-87311-065-3', 'Title': 'サーバ負荷分散技術', '価格': 3240, '発行日': '2001/12/01'}, {'ISBN': '4-87311-078-5', 'Title': 'NFS & NIS 第2版', '価格': 5184, '発行日': '2002/04/01'}, {'ISBN': '4-87311-079-3', 'Title': '不正アクセス調査ガイド', '価格': 3672, '発行日': '2002/04/01'}]
感想とまとめ
思った以上に簡単に出来たので驚きました。pandasを使うの初めてなのですが、これは便利ですね。.to_dict()
とかto_json()
をやる時に、.to_dict(orient='records')
のようにorient指定するとそのままBigQueryに登録できそうな形式になるのでありがたいです。
もう少しpandasを触ってみようと思います。
参考にしたサイト
Redmineの担当者をauto completeで検索するChrome拡張機能を作った
これはなに?
Redmineのプロジェクトで担当者が多い場合、プルダウンから探すの大変みたいな話を社内でしていたので、何か作れないかと思ってとりあえずChrome拡張機能を作ってみました。
作ったもの
Chromeウェブストアにアップしました。
https://github.com/yuji0602/ChromeExtension_RedmineAutoComplete
苦労したこと
ネットでauto completeするやり方とか調べると出てきたりしたので意外に楽かなと思ったのですが、プロジェクトとかステータスのプルダウンを変更するとRedmineがajaxでアクセスして表示を書き換えたりするので悩みました。 変更されたイベントを監視するようにして、変更後に再度設定をするようにしました。 そもそもChrome拡張機能を作ったことが無いのであれこれ調べてようやくリリースすることが出来ました。
感想とまとめ
初めてChromeウェブストアにアップするユーザは5ドル払うというので躊躇してたのですが、とりあえず出してみました。 そんなに使われる機能ではないと思いますが、作っている時に気がつくことが多かったのでいい勉強になりました。