ほんじゃらねっと

ダイエット中プログラマのブログ

プログラミング

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…

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クラスとリンクを識別するための属性を 設…

GMailで特定の条件に合うメールのみ携帯に転送する

GMailのフィルタ機能はメールにラベルをつける以外にもいろいろできる。 条件に合うメールを既読にしたり、アーカイブしたり、 今回のようにメールアドレスを指定して転送したり。 正月休みに入るにあたり、重要なメールのみ携帯に 転送されるように設定した…

WindowsからMacに移行してMac上にWindows環境を作る時に気をつけること

それはずばり、 「何かソフトをインストールしたりする前に、できるだけ早い段階でWindows環境を構築する(もしくは検討する)こと」! でないと選択肢が狭まる。 Mac上にWindows環境を構築する方法は主に2つ 「Boot Campでデュアルブート環境を構築する」 …

GMailで日報メール作成を簡略化する

会社でGoogle Appsが導入され、 メールもGMailを標準で使えるようになった。 ちょっと慣れてきたので最近見つけた、毎日の日報作成を楽にする 便利機能をまとめておく。 といっても使うのは 「連絡先グループ機能」と「定型文作成機能」の2つだけなのだけど…

WebアプリからFAXを送信する方法

Webアプリに登録された情報をFAXで送信したい、という依頼があった。 ECサイトで行われた注文内容をFAXで送信したり、図面を指定の宛先に直接送ったりと BtoBでは色々と使いどころがありそう。 調査したところ、実現方法としては下記の3パターンがあるようだ…

Riv.vimプラグインでバックスペースの挙動を調整

Riv.vimの標準の挙動だと、行頭でバックスペースを押すとdeleteと同じ挙動になる。 どうやら、RivSuperBackSpaceコマンドがそういう動きにさせているようだ。 行頭でも通常のバックスペースとして動くようにならないか調査した。 以下のファイルの412行目付…

CentOS環境でrst2pdfを使って日本語PDFを出力する

riv.vimのpdf出力機能がどうしてもうまく動かせないので、 pythonのrst2pdfで直接出力することにした。 easy_installでrst2pdfをインストールし、以下の設定ファイルで日本語に対応する。 ほぼ参考サイトのまま。 ~/rst2pdf/config [general] # カンマ区切り…

Riv.vimプラグインで全角文字を含むリンクも自動リンクされるようにする

VimでreStructuredTextを使えるように、riv.vimを導入した。 https://github.com/Rykka/riv.vim :RivTitle0 みたいなコマンドでタイトルフォーマットを適用したりできて便利。 ファイルのパスやURLを書くと自動リンクされるので、 ファイル同士の関連付けに…

指定したフォルダ内のファイルのファイル名から特定のパターンの文字列を一括削除する

フォルダを指定してその中のファイルのファイル名の一部を削除するちょっとしたスクリプト。子フォルダの再帰処理はしない。 001_(hoge).txt、002_(fuga).txtなどのファイルを001_hoge.txt、002_fuga.txtに一括変換したい時なんかに使えるよう、正規表現でパ…

Pocketからエクスポートしたブックマークをデータベースに取込むスクリプト

自分のブックマークを色々分析できるように、PocketのOptionsページから エクスポートしたブックマークのリストをデータベースに取込む。 PythonでMySQLdbとBeautifulSoup4を使用。 テーブル CREATE TABLE bookmarks ( id integer NOT NULL AUTO_INCREMENT, …

CakePHPのViewで現在のURLを取得する

$html->url(null);

CakePHPのflashメッセージを通知用とエラー用でデザインを変更する

コントローラで下記のようにsetFlashメソッドを呼び出す。 通知用、エラー用にそれぞれcssクラスを作って指定してやる。 //通知用 $this->setFlash("データを登録しました", "default", array("class" => "flash-notice")); //エラー用 $this->setFlash("エ…

generic.xamlでカスタムコントロールのスタイルを定義する時の決まりごと

http://d.hatena.ne.jp/kaorun/20110323/1300874396 から学んだこと。 generic.xamlはプロジェクトフォルダ直下にThemesフォルダを作成してそこに配置する カスタムコントロールのコンストラクタ内でDefaultStyleKeyを設定する

SilverlightでWebカメラの映像を表示する

こちらを参考に作成した。 http://msdn.microsoft.com/ja-jp/library/ff602282(v=vs.95).aspx Webカメラに接続して映像を画面上に表示できるだけのサンプル。 BrushとしてRectangleのFillに設定してるので、Brushが設定できるところなら どこでも映像を表示…

Silverlightでファイルをアップロードして保存する

複数ファイルアップロードが結構簡単にできるみたい。 下記のサイトを参考(ほぼそのまま)に作ってみた。 Silverlight 4でドロップされたデータをサーバに保存 http://d.hatena.ne.jp/okazuki/20100330/1269949623 Silverlightでユーザがアップロードしたフ…