何かしらの作業を自動化する際、 その作業を起動する「きっかけ(イベント)」を何にするかを考える必要がある。 例えば定期的に実行するなら、「曜日」や「時間」がきっかけになるし、 自分が実行したい時に実行するなら(それを自動化と呼ぶかどうかはさておき) 「手動実行」がきっかけになる。 この「きっかけ」をうまく設定できるかどうかで、 期待通りのタイミングで作業が行われるかどうか、 無駄な負荷を避けられるかどうかが決まるので、 作業の自動化において結構重要な要素となる。 プログラムの自動化に必要な「トリガー」 あるプログラムを何らかのきっかけによって 自動的に実行されるようにしたい場合、 何らかの対象の変化(きっかけ)を察知する きっかけに応じてあらかじめ決められたプログラムを起動する プログラムの処理が実行される の3段階の処理が必要となる。 上記のうち、1と2が自動化にとって重要な「トリガー」
他の誰かが作成した検索プログラムやストアドファンクションを 修正させられる時に、 検索対象のテストデータとか プログラムに渡す検索パラメータのテスト用データを 必要なパターン分作成してテストするのだけど、 抜け漏れのないテストデータを簡単に生成できないものかと調べていたら、 PythonにもClojureにも組み合わせリストを作成してくれるライブラリがあった。 組み合わせデータを作成する 必要なパターンの組み合わせデータを自前で作成するのはなかなかめんどくさい。 例えば商品検索機能のテストデータを作成する際、 「商品データ」が 属性として「有効区分(0:無効、1:有効)」と「表示区分(0:非表示、1:表示)」を 持っていて、「有効」で「表示」の商品のみ検索結果に含まれる、 ということを確認したい場合に テストデータとしては「有効区分」2パターンと「表示区分」2パターンの 組み合わせで下記の
はてなカウンターの「ログ」画面で ログを月単位でダウンロードできることを発見したので、 ダウンロードしたログを分析用にデータベースに保存するスクリプトを作成する。 ログファイルのフォーマット ログファイルはCSV形式で 下記のような列構成になっている。 アクセス日時 IPアドレス アクセス元URL クライアント環境 クライアントの言語 解像度 色解像度? アクセスURL 文字コードはUTF-8。 データにカンマが含まれる場合はダブルクオートで囲まれる。 データベーステーブルを用意する ほぼそのままログ内容を取り込めるように PostgreSQLにテーブルを作成する。 解像度と色解像度は「x」で結合してdisplayカラムにまとめる。 drop table if exists hatena_blog_logs; create table hatena_blog_logs ( id seria
過去に下記のような、ファイルを複数に分割する方法について記事を書いた: blog.honjala.net この記事に書いたコードをもう少しエレガントに書けないものか、 と方法を調べていて、 Pythonのジェネレータが使えそうだったので色々試してみた。 Pythonのジェネレータについて ジェネレータを意識して使ったことがなかったので、まずは使ってみる。 下記のページを参照した: postd.cc ジェネレータを使用する際は、 「ジェネレータ関数」と ジェネレータ関数が返す「イテレータオブジェクト」の 2つの要素を使う。 yield文で返り値を返す関数を定義すると、ジェネレータ関数になる。 ジェネレータ関数は呼び出しても中の処理が実行されるわけではなく、 代わりにイテレータオブジェクトを返す。 イテレータオブジェクトをforループなりnext関数なりで使用すると、 ジェネレータ関数で定義し
稼働中のWebアプリのデータベースに定期的にアクセスして データの状態をチェックしたい、でもデータベースには 外部から直アクセスできないようになっているので、 SSHトンネル経由でないとアクセスできない、という場合。 A5:SQLなりpgAdminなり最近のDBアクセスツールは 大抵SSH経由でのアクセスに対応しているので、 こういったツールを使えばDBに手動アクセスすることができる。 A5:SQL Mk-2 - フリーの汎用SQL開発ツール/ER図ツール 自分で書いたプログラムからSSH経由でDBにアクセスしたい場合は、 WindowsならPutty(SSHクライアントソフト)が SSHトンネリング機能を持っているので、PuttyなりCUIツールの plinkなりを立ち上げておくことで割と簡単に実現できる。 qiita.com 今回紹介するのは、 Windows以外のクライアントからアク
だいぶ前に書いた下記の記事 blog.honjala.net の内容がPython3で動かないようなので、 Python3対応しつつ、もう少し使えるように書きなおしてみる。 まずはPython3で動くように修正する。 import os import re search_dir = "<検索対象フォルダ>" search_pattern = "<検索パターン>" file_name_list = os.listdir(search_dir) for file_name in file_name_list: f = open(os.path.join(search_dir, file_name), encoding="utf-8") line = f.readline() line_number = 1 while line: m = re.search(search_pattern, li
SQL Serverからエクスポートしたrpt形式ファイルを渡され、 CSVに変換してくれと依頼される。 「あれ、SQL Server Management Studioに 直接CSV出力する機能ありませんでしたっけ?」 と確認しても「しらん。やれ。」と言われる。 そんなよくある状況で助けてくれるrpt2csv変換スクリプトを作成した。 SQL Serverが吐くもの以外でrpt形式のファイルは見たことがないが、 中身は下記のような形式になっている: カラム名1 カラム名2 カラム名3 ... --------- ---------- ---------- ... 値1-1 値1-2 値1-3 ... 値2-1 値2-2 値2-3 ... 1行目がカラム名、 2行目がスペース区切りでハイフンがカラムサイズ分ずつ並び、 3行目以降がカラムサイズ分ずつスペース埋めでデータが並ぶ フォーマットに
毎朝出社時に社員カードで入室し、 入室したのと同じカードで出勤打刻をするのだが、 入って数歩のところにタイムレコーダーが置いてあるにも関わらず、 打刻が漏れることがある。 どうやら、 雨の日に途中で傘を置いたり(傘立てはドアとタイムレコーダーの間にある) 誰かと会って話しながら入室したりすると ルーチンが壊れて打刻を忘れてしまうことがあるようだ。 どれだけ変化に弱いルーチンなんだ、という話だが、 ともあれ打刻が漏れると手続きが面倒なので、 自動チェックの仕組みを考えた。 会社のタイムレコーダーは社内用出勤管理Webサイトと連動しており、 そこで自分の打刻時間を確認することができるようになっている。 仕組みとして、 出勤してるであろう時間と始業開始時間の間にこのサイトをチェックして、 打刻がなければ通知する、というスクリプトを作れば解決できそうだ。 私の場合、だいたい始業30分前くらいに出社
Python手軽でいいね、ってことで 最近はJavascriptよりもPythonでスクリプトを書いている。 今日もパフォーマンステスト用に大量データを登録する必要があったので SQLAlchemyを使ってスクリプトを書いてみた。 Python3で動作確認済み。 create_test_datas.py # -*- coding: utf-8 -*- import sqlalchemy engine = sqlalchemy.create_engine("postgresql+psycopg2://<DBユーザー名>:<DBパスワード>@/<DB名>", client_encoding="utf8") def create_table_defs(conn, meta): """テーブル定義""" tables = { "items": sqlalchemy.Table("t_item",
たまにはPythonを使っておこう、 ということでここ数日シェル環境としてiPythonを使っている。 Jupyter and the future of IPython — IPython ほぼPython言語としての機能は使っていないのだけど、 ちょっとした計算をしたりするにはなかなか便利だ。 せっかく書いた処理を使い捨てにするのはもったいないので、 入力履歴をファイルに自動ログしてくれるスタートアップスクリプトを作成した。 ネタ元は下記のstackoverflowの回答から: stackoverflow.com iPythonは下記のスタートアップフォルダに pythonファイルを作成しておくと起動時に実行してくれる: ~/.ipython/profile_default/startup そこに上のstackoverflow回答に書いてあるとおり、 下記のようなスクリプトを保存してお
python2.x系は、strオブジェクトとunicodeオブジェクトが別々なのでややこしい。 いろいろ調べているうちにこんな感じになった。 python3.x系はテキストはunicode処理されるので、もっと簡単らしい。 MacOS X 10.6.8 Python 2.6.1 # coding: UTF-8 import codecs import string import re f_in = codecs.open('test.txt', 'r', 'utf-8') f_out = codecs.open('test_out.txt', 'w', 'utf-8') lines = f_in.readlines() #読み込み lines2 = [] for line in lines: line = string.replace(line,u'テキスト',u'text') #テキスト
何の話かというと RStudioではじめるRプログラミング入門 作者: Garrett Grolemund,大橋真也,長尾高弘出版社/メーカー: オライリージャパン発売日: 2015/03/25メディア: 大型本この商品を含むブログを見る 某編集長から上記の書籍が送られてきて、「これは、次はRの本を書けという指示か????」と勘ぐってみたものの、筆者はPython派なので、「これと同じことは全部Pythonでもできるんだよー」と言いたくなって、このエントリーを書き始めた次第です。ちなみに、この本、Rの入門書としてはよくできているので、これのPython版ができたら、それはそれで役に立つ気もします。 なお、このエントリーでは、あくまでコードの部分だけを書き直して、RとPythonの差異についての説明だけを行ないます。コードそのものの説明については、上記の書籍をご購入ください。 環境準備 IP
Python Advent Calendar 2013 の14日目です。 今日は、テストコードを書くときに便利なモジュール factory_boy を紹介します。 なお、この記事のサンプルコードは以下の環境で動作確認しています。 Python 3.3.3(2.7でも動くように書いています)factory_boy 2.2.1SQLAlchemy 0.8.4SQLite3インストール#インストールは、pipコマンド一発でできます: pip install factory-boy 今回はSQLAlchemyも使うので、以下のコマンドでインストールしておきましょう: pip install sqlalchemy 基本的な使い方#以下のコードをjojo.py という名前で保存してください: import factory from factory.alchemy import SQLAlchemyMo
まえがき Excel Advent Calendar 2014 に空きがあったので、 前々からやりたかった「xlwings」の記事を書いた。 ちなみに僕はBlogあるので、Qiitaに何もなかったからいい機会だ。 xlwingsとは? VBAでマクロなんて書きたくない人用にPythonでマクロが書けるモジュール。 公式サイトはここですね。 xlwings インストール virtualenvでインストールすると上手く実行できないようだ(多分)。 OSのPythonにインストールした方がいい。 サンプルの実行 ここにクイックスタートが有る。 しかし、僕は少しハマったのでクイックではなくなったが・・。 まず、Excel自体をどこかに保存しておく。 僕はMac OS Xを使ってるので、 /Users/shinriyo/Documentsへ、「ブック1.xlsx」の名前でExcelファイルを保存した
ひとつPythonでWebスクレイピングでもやってみようかとScrapyをVPS環境に入れてみたところ、インストールするだけで手間取ってしまった。 環境はPython2.7.3で、インストールしてから特に何も設定していない状態。 本サイトに書いてある通り、まずは pip install scrapy を実行してみた。 するとUnicodeDecodeErrorが発生する。 これはよくあるPythonの初期設定の問題なので、 /usr/local/lib/python2.7/site-packages/sitecustomize.pyを作成して、 下記の内容を書いて保存しておく。 import sys sys.setdefaultencoding("utf-8") 再度pipを実行すると、またエラー。どうやらlxmlがはいっていないらしい。 pip install lxml エラー。必
今日ご紹介するのは CLI ベースの Twitter クライアント。 ええ、確かにこの手のツールはこれまでにも沢山ありましたが RAINBOWSTREAM はその名前の通り、川の流れのように僕達の目の前をフローしていく世界中の Tweet たちをカラフル・ストリーミングで楽しめるのが特徴。 そうそう、CLI ベースなのにイメージ表示をサポートしているところもユニーク&クールですよ。 まずは、僕の Ubuntu (Mac OS でもOK)へ pip 環境と、 ubuntu $ sudo apt-get install python-pip python-dev 画像処理系など依存するパッケージもインストールしておきましょう。 ubuntu $ sudo apt-get install libjpeg-dev zlib1g-dev libpng12-dev libsqlite3-dev 準備が
By Al Sweigart. Over 500,000 copies sold. Free to read under a CC license. "The best part of programming is the triumph of seeing the machine do something useful. Automate the Boring Stuff with Python frames all of programming as these small triumphs; it makes the boring fun." - Hilary Mason, Data Scientist and Founder of Fast Forward Labs "I'm having a lot of fun breaking things and then putting
10 Reasons Python Rocks for Research (And a Few Reasons it Doesn’t)¶ The following is an account of my own experience with Python. Because that experience has been so positive, it is an unabashed attempt to promote the use of Python for general scientific research and development. About four years ago, I dropped MATLAB in favor of Python as my primary language for coding research projects. This ar
イントロダクション このチュートリアルでは、とあるデータサイエンティストの典型的な1日の過ごし方をご案内しましょう。まず地理空間のデータセットを入手し、不要なものを整理し、補強し、可視化します。使用するツールはPython、BeautifulSoup、pandasとNominatimライブラリ、そして地理情報システムの組織で広く使われているオープンソースの地図ソフトウェア、 QGIS です。 データセットになるのは、全米UFO情報センター(NUFORC)の このページ に掲載されているアメリカ全土のUFO目撃情報です。目標は、過去12カ月間に目撃されたUFOの地図を可視化することです。可視化によりデータセットをはっきりと示し、調査して、目撃されたとされるUFOの行動をよりよく理解することができます。可視化は地図作成プログラム内で行われます。QGISは地理空間データの手軽な試験的分析に特に向
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く