読者です 読者をやめる 読者になる 読者になる

ほんじゃら堂

めんどくさい仕事をラクにする作業自動化レシピ集

ClojureでExcelからPostgreSQLにデータを取り込む

Clojureの練習を兼ねて、Excelでデータを編集して簡単にデータベースに 反映できるLeiningenアプリケーションを作ってみました。 pirosuke/clj-xlsx2db データベース操作にはKormaを使ってるのですが、 使いやすくて気に入ってます。 使い方 コマンドを指定…

Twitter APIでタイムラインを分析してブログ投稿に最適な時間を見つける

最近記事を予約投稿するということを覚えたので、 せっかくだからたくさんのユーザーに見てもらえる時間に投稿したい、 ということで調べてみました。 このブログは記事を投稿した時に自分のTwitterタイムラインにリンクを ツイートするようになっているので…

ClojureでHTML以外に対応したテンプレートエンジンを探す

Clojure始めました。 ちょっとしたスクリプトを作成しながら勉強中です。 最初にClojureで書かれたソースを見たときは 「このカッコ地獄には絶対慣れない」 と思いましたが、 書いているうちにカッコのおかげで処理や変数の範囲が明確に なっていることに気…

Pythonでオブジェクトから階層ごとに属性があるかチェックせずに値を取得するための関数

AmazonのAPIを触っていて、レスポンスとして返ってきた(XMLから生成された)オブジェクトから値を取得する際にいちいちhasattrでチェックするのが面倒だったので、そのパスがなければデフォルト値を返す関数を作った。 見つけられなかったけど、標準ライブ…

大阪駅前第3ビル地下2階の「みなとや」濃厚鶏こってりらーめんとしめ飯が好きすぎて他のメニューが頼めない

言い切った。タイトルで言いたいこと全部言ったよ。 お店の紹介はこちらの食べログで。 あっさりらーめんとか、角煮丼とか色々メニューはあるのに、 らーめんとご飯一緒に食べたら絶対お腹いっぱいになって 午後苦しいってわかってるのに、それでも毎回同じ…

PythonでExcelの表からINSERT用SQLを生成して初期データ作成を楽にする

職場はメイン言語がJavaなので、プロジェクトでPythonを使う機会は ないのですが、キャプチャを撮ったりExcelを操作したりする作業を 「こっそり自動化」するスクリプトをPythonで書いたりしています。 最近はSE作業で何かとExcelを使うことが多いので、 Exc…

Python+ScrapyでWeb上のリストからデータを抽出する

昨日の続きでScrapyをさわる。 ちなみに、昨日Linux環境にインストールする時は苦労したが、 今日Windows環境にpipでScrapyをインストールしてみたら、 何ひとつひっかからずにインストールが完了した。 ともあれ、ようやくScrapyをインストールできたので、…

CentOSのPython2.7環境にScrapyをインストールするまで

ひとつPythonでWebスクレイピングでもやってみようかとScrapyをVPS環境に入れてみたところ、インストールするだけで手間取ってしまった。 環境はPython2.7.3で、インストールしてから特に何も設定していない状態。 本サイトに書いてある通り、まずは pip ins…

バスバブルで泡風呂をつくって、いつもとちがうバスタイム

週末に近くのイオンに家族で買い物に行った時に、 子どもたちが石鹸屋さんが泡をつくって見せているのにえらく興味を持ったようだったので、バスバブルを買ってみました。 子どもたちは泡風呂初体験なので、 たまに買うアンパンマンやディズニーのキャラクタ…

PostgreSQLで2つのリスト間の類似度を算出する方法を考える

あるリストを元に、それと似た内容を持つリストをデータベースの中から探したい、 というケースはいくつか考えられる。 例えば、 いくつかの商品を組み合わせて作ったセット商品のうち、今見ている商品と同じような構成のものを探す SNSで自分と同じようなフ…

iOSアプリ版ファイナルファンタジー7がリリースされてる!

これはやらなくては。 なんか急にキター! iOS版「ファイナルファンタジーVII」配信開始 ステータスMax機能とか、サクサク進められて良さそう! FINAL FANTASY VIISQUARE ENIX INCゲーム¥1,800 既に1〜6はリリース済みだったのですね。 FINAL FANTASYSQUARE …

石川県のとじま水族館のイルカの楽園で大人も子どもも大興奮

石川県の実家に帰省した際、のとじま水族館に行ってきました。 金沢を超えて能登半島の和倉温泉を過ぎてさらに車で20分かかるという、 なかなか行きにくいところにあるのですが、 ジンベエザメがいたり、イルカにエサやりができたり、子どもが喜ぶ仕掛けが満…

うちの娘たち(5歳未満)のお気に召したiPadアプリ14選

自分で使うために購入したiPadですが、購入後数日で娘たちの おもちゃの1つとして奪われてしまいました。 園児が特に使い方を説明しなくても使いこなせるのがさすがのiPadです。 色々とアプリやゲームを入れてあげてみると、見向きもしないものと 長い期間使…

新しいパソコンへの移行ついでに仕事用に使ってるアプリ一覧をまとめた

会社のノートパソコンの調子が悪くなってきたので、新しいパソコンに移行中です。 環境はWindows7。 色々とアプリをインストールしなおしたりデータを移行したり必要があるので、 整理ついでに開発関連ツール等自分が使っているアプリと最新版入手場所を ま…

熱中症には気をつけよう、結構身近なものだった

ここ数週間で立て続けに次女と実家の母親が熱中症にかかって大変でした。 幸いどちらも軽〜中度だったようですぐに回復しましたが、 今までなかったことなので焦りました。 実は熱中症だとわかったのはあとになってからで、 次女の場合は保育園で嘔吐して微…

PythonとPandasで作業履歴から案件別作業別のピボットテーブルを作成する

作業履歴が入ったデータベーステーブルから、 案件情報を行に、作業内容(「設計」とか「PG」とか)を列に、 案件別作業内容別合計時間を値として持つピボットテーブルを作成して Excelで確認する必要があったので、以前から興味のあったPandasを 使ってスク…

夏休みの帰省先まで自転車を持っていく方法を検討する

日頃は忙しくて全く乗れていませんが、一応去年から自転車を趣味に加えたので、 長期休みで実家に帰った際は「この辺を自転車で走ってみたいな」と思うわけです。 クロスバイクに乗っているのですが、これを実家に持っていく方法としては、 事前に輸送する …

時間管理ができていないと感じたら、まず時間の使い方を正確に把握しよう

時間というのは大変価値の高いもので、誰であれ1日24時間と決まっており、 放っておいても失われていくものである。 ということを分かっていても、なんやかんやと忙しくしたりダラダラしたり しているうちに過ぎていくもので、 「ああ、もっとちゃんと時間を…

今日よかったことをノートに書きのこす

1日の最後の仕事がうまくいかなかったり、気になることが残っていると、 その日1日があまり良くない日だったようなモヤモヤ感覚が残り、 次の日にもよくない影響を与えることがある。 実際のところ1日の中では良いことも悪いことも起こっているはずで、 その…

A3用紙とA4用紙のどちらで印刷すべきか

今日は1日中資料作成で疲れました。 でも苦労して作成した文書が製本印刷で綺麗に出力されると、 ちょっとしたライター気分になって嬉しくなります。 印刷されるのを見ながらふと、A4用紙をホッチキスで止めるのと、 A3用紙でA4冊子を製本印刷するのとどちら…

Subversionにコミットしたらチャットワークに通知するNode.jsスクリプト

ある開発プロジェクトで、 非技術系のメンバーにも進捗を知っておいてもらいたいものの、 「お前らSubversion入れろ」とか「リポジトリログを見ろ」といっても見そうになく、 いちいち伝えるのも面倒大変そうだったので、 Subversionにコミットがあったらメ…

Node.jsでWebページのレスポンス時間をチェックする

個人的にNode.jsを習得しようと色々調べてた時に 仕事でWebアプリの速度改善の依頼が飛び込んできたので、 Node.jsでHTTPリクエストのレスポンス時間をチェックしたい時は どう書くのかな、と調べてみた。

Node.jsでRedmineのREST APIにアクセスしてチケット取得&一括登録

とあるWeb開発プロジェクトで WBS(Excel製)に書かれた、機能ごとの開発担当・開始日・期日・予定工数を そのままRedmineのチケットとして登録するという、 手作業でやったらえらく時間のかかりそうな作業があったので、 RedmineのAPI経由でチケットを一括登…

Node.jsのRESTクライアントモジュールでBit.lyのAPIにアクセスする

Node.jsのRESTクライアントモジュールを試すため、 以前Groovyで作成したBit.lyの履歴を取得するスクリプトをNode.jsで焼きなおしてみる。 「node-rest-client」というモジュールを使用した。 get_bitlinks.js var RestClient = require('node-rest-client')…

MongoDBに保存したデータをNode.js+ExpressでWeb表示する簡単なサンプル

そろそろNode.jsスクリプト作成にも慣れてきたので、 簡単なWebアプリ作成に挑戦してみた。 Meteor、MEAN.js、Sails.jsなど色々あって迷ったけど、 まずはシンプルにExpressを使ってみる。 MongoDBコレクションに保存された情報を Webページ上に一覧表示する…

ApacheのアクセスログをMongoDBコレクションにインポートするNode.jsスクリプト

MongoDBの勉強を兼ねて、Apacheのアクセスログを後でログ分析や ビジュアライズに使えるようにMongoDBにインポートするスクリプトを書いた。 下記のスクリプトはログファイルを行単位で読み込んでMongoDBの 特定のコレクションに登録する。 行単位のファイル…

PHP製のWebアプリが遅い場合の基本チェック6点

先日別のチームから、 「PHPで作成したWebアプリの速度が遅いので助けてくれー」 という相談を受けた。 対応したものの、結構時間がかかって面倒だったので、 今後こういった問題が起こった時に使えるよう、チェックリストをまとめてやった。 基本的な内容だ…

PDF文書の作成と編集の無料ツールならこのソフト:CubePDF

ExcelなりWordなりテキストエディタなりメールなりで作成した文書を PDF化するに使える無料ツールです。(Windows用) 無料PDF作成・変換フリーソフト CubePDF インストールするとプリンタとしてCubePDFが作成され、 印刷時にそれを選択することで文書をPDF…

Nashornスクリプト実行時のクラスパス設定を容易にするためにNasven.jsを使う

Nashornというのは、Java8に同梱されている新しいJavascriptエンジンで、 Javaライブラリを呼び出して利用するJavascriptプログラムを作成することができる。 Node.jsで適当なライブラリが見つからない場合やJavaライブラリに精通していて ちょっとしたスク…

Javascriptでできることを調べて、メイン言語にするメリットを確認する

Javascriptがプログラミング言語としてどうか、ということはさておいて、 「もうJavascriptさえ覚えておけば何でもできるんじゃない?」 というくらいJavascriptでできることが増えているので、それをまとめてみる。 Javascriptでできること Webサイトのクラ…

Javascript(node.js)でExcelのシート一覧を出力する

node.jsはWindowsでもLinuxでも同じスクリプトが そこそこ安定して動くので嬉しい。 今回は、ExcelJSモジュールを使って、 Excelのシート一覧を出力するスクリプトを書いた。 リダイレクトでファイルに出力できる。 簡単なスクリプトだけど、こういうものを…

B2Bに対応した主要ECサービス&製品のリスト

ECサイト構築に関わることになり、 まずは事前調査として各社のEC製品・サービス内容を比較検討することとなった。 主要なB2B向けEC製品・サービス Googleで検索してみたところ、 下記の製品・サービスが利用者も多く、よく利用されているようだ。 製品・サ…

Node.jsとwebshotパッケージでWebサイトのスクリーンショットリスト作成を自動化する

Web開発を仕事にしていると 「マニュアルやプレゼンに使うのでWebアプリのスクリーンショットをくれ」 と依頼されることがよくある。 ChromeのFireshotのようなブラウザの拡張機能を使ったりすれば 1画面ずつ撮っていけるのだけど、 chrome.google.com たく…

treeコマンドで出力したJSONをExcelで階層表示できるように変換する

あるプロジェクトのソース分析を行う必要があったので、 まずはソースファイルの一覧をExcelに出力してみることにした。 treeコマンドがいい感じで階層出力してくれるのだけど、 それをそのままExcelに持っていくと文字化けするので、 treeコマンドから一旦J…

Java8のJavascriptエンジンNashornでパスワード付きExcelを開く

以前Groovyで作成したパスワード付きExcelを開くスクリプトをJavascriptでも 書いてみよう、ということでnode.jsで色々試してみたところ、パスワード付き Excelに対応しているライブラリが見つからなかった。 (普通にExcelを操作するだけならxlsjs等良さげ…

bit.lyのAPI経由で自分のBitlink履歴を取得するGroovyスクリプト

HTTP BuilderのRESTClientを使うと、Web APIとの連携が簡単にできるようだ。 bit.lyに記録したブックマークを分析したかったので、API経由でbitlinkを ダウンロードするスクリプトを書いてみた。 他にエクスポート機能が見当たらなかったのだけど、 API経由…

GroovyでPDFファイル内のテキストを取得する

PDFファイルの検索なんかに使えそう。 OCRではなく、PDF作成時にインデックス化されたテキスト情報を取得する。 pdfboxを使っているので、Javaでも同じような処理で実装可能。 今回はページ数と全テキストの取得のみだけど、 pdfboxの機能で色々な情報を取り…

サブフォルダに入っている画像ファイルを1つのフォルダにコピーするスクリプト

過去にデジカメから取り込んだ写真や他の人から受け取った画像を Flickrなどのサービスにアップロードしたり、 ブログにアップロードしたりする際、 画像ファイルがサブフォルダにわかれたままだとアップロードしにくい場合がある。 そんな時に、画像を1つの…

IoT(Internet of Things)でWeb系開発者はリアルなモノづくりに関われるようになる

Internet of Things(モノのインターネット)とは、 これまでの人が発信し、人が受けとる「人のインターネット」に 「モノ」が加わり、モノからモノ、モノから人、人からモノへの 情報のやりとりが可能となった状態を指す言葉だ。 例えば個人レベルでは車で自…

Geb(GroovyのSeleniumライブラリ)でのWeb画面キャプチャが簡単でめちゃ便利

自社のホームページやWebシステムの画面キャプチャを保存する作業は、 それほど頻度は高くないけどいざやるとなるとめんどくさいものだ。 Seleniumでどうにかしようと調べてみたら、GroovyからSeleniumを 扱うためのGebというライブラリが便利そうだったので…

Groovy(もしくはJava)でログインの必要なサイトのWebスクレイピング

APIが存在しないWebサイトから情報を自動取得する方法として、Webスクレイピングを使う。 Jsoupというライブラリがシンプルで使いやすい。 取得したページの要素をjQuery風のセレクタを使って取得することができる。 http://jsoup.org/ 通常のスクレイピング…

仕事でJavaを使うプログラマが個人用のライトな言語としてGroovyを選択するメリットとは

ここ数ヶ月ほどGroovyを使ってみて、感じたメリット。 こういうことを明確にしておくと、他の言語に傾いて時間を無駄にせずにすむ。 Javaで覚えたライブラリをそのまま使えるので、基本を覚えればすぐに使える 逆にGroovyで覚えたライブラリをJavaでも使える…

RSS(Atom)データをPostgreSQLに取り込むGroovyスクリプト

特定のサイトが提供している情報を分析するために RSSからデータを取得するスクリプトを書いた。 XMLSlurper、GroovySQL、あとGroovyのクロージャのおかげで 結構シンプルに作成することができた。慣れたらもう少し Groovyらしいコードにできそう。 保存用の…

訪れた場所と移動に関するライフログを自動で取ってくれる「Moves」が素晴らしい

Facebookに買収されて話題になったライフログアプリ。 このアプリは素晴らしいところが2点: 移動や滞在の履歴を自動で記録してくれる 履歴を様々な形式でエクスポートして分析できる 移動や滞在の履歴を自動で記録してくれる スマホを持ち歩くだけで、歩い…

GroovyでExcelデータをコンバートして別Excelファイルとして出力する

Excelデータを分析しやすい形に加工できるよう、 Excelシートから1行ずつ読み込み→データを加工→別Excelファイルとして保存 という流れのスクリプトを書いた。 今後はこのスクリプトをベースにデータ加工ツールを サクサク作っていきたい。 convert_excel_te…

どれも欲しい!2014にブクマした未来的自転車と周辺グッズの記事まとめ

自転車関連のニュースや記事は日々流れているけど、 その中でも大胆で未来的でかっこいい自転車や周辺グッズの 記事を忘れないうちにまとめておく。 チェーンもベルトもない自転車「HANK」 自転車からチェーンを撤廃したらメリットしかなかった 自転車からチ…

GroovyでAmazonのProduct Advertising API経由で商品を検索する

AmazonのAPIを使用してKindle書籍情報をブログ上に出せないかと 思い、まずは商品を検索するスクリプトを書いてみた。 まだGroovyに慣れていないということもあり、結構苦戦したけど ひとまず商品情報を検索・取得して画面上に表示することはできた。 今回は…

Groovy(またはJava)でパスワード認証付きExcelファイルを開く

仕事上Excelでデータを管理したり集計したりする機会が増えてきたので、 作業を自動化できるよう、プログラムでExcelを操作する方法を調べている。 社内のメイン言語はJavaなのである程度共有しつつ、 軽く作れるようにGroovy言語を選択する。 今回は手始め…

自宅からのVPN接続用に社内PCのIPアドレスをDropboxフォルダに定期出力する

以前VPN経由でWindowsのリモートデスクトップで社内PCにアクセスする必要が あった時期に、DHCPサーバから割り当てられるIPアドレスが変わっていて 接続できず、焦ることがよくあった。 そこで、IPアドレスをDropboxフォルダに定期出力するbatスクリプトを書…

CakePHPとjQueryで汎用的なリンククリックカウンターを作成する

ページに記載した外部リンクが何回クリックされたかを知りたかったので、 リンククリックをカウントするスクリプトを作成した。 Google Analyticsのイベントトラッキング機能の簡易版。 リンクにあらかじめ決めたCSSクラスとリンクを識別するための属性を 設…