サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
猫
laughingman7743.hatenablog.com
Pythonでメール送信時に、CCやBCCを指定したい、さらに複数指定したい、差出人名を指定したい、返信先を指定したい、ファイルを添付したい、タイトルやメッセージを動的にしたい...etcといった場合に結構コードがとっ散らかってしまうので、かなり前に書いたラッパークラスです。 setting.pyの内容を適当に修正してmail.pyを実行すれば簡単に試すことができます。 Pythonでメール送信するような場面があれば。。。 Enjoy!
AWSコストの可視化として、請求レポート*1をAthena*2でクエリを投げられる形式に変換して、Redash*3でダッシュボードを作成していたりします。 元データがCSV+ZIPと非常に扱いにくい形式なのでCSV+GZIPに変換していたのですが、カラムナー形式に変換すると良さそうだなと思い、PyArrow*4を使ってParquet*5+Snappy*6に変換してみました。 以下のスクリプトはS3に出力されている請求レポートをダウンロードしてきて、Parquet+Snappyに変換、Athenaで扱いやすいパス(Hiveのパーティショニング形式)にアップロードするようなPython3のスクリプトの例です。 少し形は違いますが、同じようなことをAirflow*7を使って毎日ぶん回しています。月初にはパーティションを追加、4〜5日目ぐらいまでは前月のデータも更新されるので当月分と合わせて変換す
オリジナルは以下です。 Feedly 移行記念、Feedly をはてブ対応させるユーザースクリプト – OTCHY.NET Enjoy!
例のごとく国土交通省のデータをダウンロードしてきてElasticsearchに突っ込んで検索してみます。 国土数値情報ダウンロードサービス GDALのドキュメント*1を参照するとogr2ogrコマンドでシェープファイルを直接Elasticsearchに投入できそうですが、 マッピング定義をあれこれ変更したりしていろいろやってみましたがGeoShape形式での投入はできず。。。 C++で実装されているのでとりあえず深掘りするのはやめて、GeoJSON形式に変換してPythonスクリプトから投入することにします。 以下の国土交通省のページから日本全国の行政区域データをサウンロードしてきます。 国土数値情報 行政区域データの詳細 シェープファイルファイルのGeoJSON変換は以下のコマンドでできます。 変換するとFeatureCollectionという一塊のJSONオブジェクトとして出力されます
最近HiveでETL処理とかするためにEMRをよくさわっています。Boto3からクラスタ起動したりステップ追加したりしています。 Boto2だとクラスタ作成時にセキュリティグループの設定等をapi_paramsに追加する形になり非常にわかりにくいです。 Boto3だとJSONライクな指定ができていろいろと捗ります。 日次でクラスタを起動してETL処理するようなスクリプトのサンプルです。AirflowでDAGを作って実行すると良いですね。 https://gist.github.com/laughingman7743/5c675c9b1d9ed02539e6 クラスタの起動 クラスタ起動時にステップも指定できますが、どうも追加される順序がバラバラだったりするので、起動してから順に追加するような形が良さそうです。 Hiveメタデータストアの指定 ConfigurationsにRDSの接続先を指
Play2.4でSlick3.0*1とplay2-auth*2を使ったログイン認証を実装してみた。 テンプレートはSBAdmin2*3をベースに、BootswatchのSlate*4を適用しています。(チャートはHighcharts*5が使いたいので除いています) 認証用のTraitは以下 コントローラでミックスインして利用する際に、Play2.4から利用できるランタイムDIの仕組みでサービスクラスをDIする形。 コントローラのテストは適当にMockito*6でサービスクラスのモックを作る。 サービスクラスも同様にランタイムDIを利用してリポジトリをDIする形。 サービスクラスのテストも同様に適当にMockitoでリポジトリのモックを作る。 リポジトリはHasDatabaseConfigProvider[JdbcProfile]をミックスインして、DatabaseConfigProvide
オフィシャルリポジトリに上がっているSBTを利用した例*1を参考に、以下のようにbuild.sbtに数行加えるだけです。(3.0からパッケージのscalaプレフィックスがなくなっています。それ以外は特に変更はないようです) ローカル環境のPostgreSQLのテーブル定義を生成する例です。 27行目がSBTのコマンドを設定している部分で、activator slickCodeGen でコードジェネレーションタスクを実行できるようになります。コメントアウトしてありますが、28行目がコンパイル時に組み込む設定です。 JodaTimeを使いたい等のカスタマイズ例はググれば結構出てくるので割愛。 接続先の定義はapplication.confの設定を使うこともできます。*2(slickDriverの設定で末尾の$を削除するのを忘れずに) Tuple22問題も解消されていて素晴らしいですね。 SBT
Playframeworkデーモン化でググるとなぜかcommons-daemonを利用した例が引っかかったり。。。 Supervisorでデーモン化するのが楽です。 Play2.3系デーモン化設定ファイル例 activator clean stageしてtargetディレクトリ以下を配置しています。 起動するポートを変更は-Dhttp.portで出来ます。開発環境と本番環境で設定ファイルを分けるときは、-Dconfig.fieで設定ファイル(絶対パス)を指定します。 -Dpidfile.pathでPIDファイルを吐かないようにするのも忘れずに。その他オプションは適宜設定してください。*1 limit設定を変更するようにしています。Supervisorでユーザを指定する起動方法だと変更出来ない*2といった情報も見つかりますが、Supervisor3.0(2013-07-30)では問題なく変更
cx_Oracle*1を使います。 cx_Oracleのビルド・インストール*2には、リンク先の通り少し環境を作る必要があります。 GCCが必要なので以下のコマンドでXcode Command Line Toolsをインストールします。 Oracleが配布しているInstant Client Package*3のBasicとSDKも必要なのでダウンロードし、適当なディレクトリに解凍してパスを通しておきます。(以下はホームディレクトリのbin以下に配置しています) 共有ライブラリはシンボリックリンクを作成しておきます。 環境ができたら pip でインストールするだけです。 接続確認は以下の様なスクリプトでできます。 もちろんSQLAlchemy*4を使ってO/Rマッピングもできます。 Enjoy! *1:http://cx-oracle.sourceforge.net/ *2:http://
HAProxyは1.5系を使いたいのでRPMのビルド環境を作る。*1 HAProxyのRPMを作成してインストールする。*2 PgBouncerはPGDG*3からyumでインストールする。 HAProxyの設定は以下 PgBouncerの設定は以下 WebアプリからはPgBouncer(5433)に接続、PgBouncerがHAProxy(5434)に接続、HAProxyがRDSへのリクエストを振り分ける構成にしています。 RDSの認証方式はサポートに確認したところMD5とのこと。 PgBouncerのserver_lifetimeは短めにし、server_round_robin設定を有効にしておきます。*4 PlayframeworkでWebアプリを作ることが多く、デフォルトのDBPoolがBoneCPで使い物にならないので、 PgBouncerを利用する形にしていますが、HikariC
このページを最初にブックマークしてみませんか?
『laughingman7743.hatenablog.com』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く