GeekFactory

int128.hatenablog.com

2015-01-01から1年間の記事一覧

個人的レトロスペクティヴ

2015年の振り返り。 仕事 銀座で働いてた マスターになったりセンセイになったりと忙しい一年だった 企画や開発のチームが最大限の力を発揮できるように悩み抜いた一年だった 聞くこと、描くこと、伝えることでコミュ力が鍛えられた一年だった 転職せずに他…

Gradle SSH PluginやGroovy SSHはどのようにテストしているか

G*Advent Calendar 2015の18日目です。 qiita.com 昨日は某社の方をゲストに迎えて闇の話をしていたためAdvent Calendarの公開が遅れました。大変申し訳ございません。 本記事では、Gradle SSH PluginやGroovy SSHをどのようにテストしているか説明します。G…

CoffeeScriptのアプリをDockerイメージにする

CoffeeScriptで書いたアプリをDockerイメージとしてリリースする方法を説明します。Dockerを使うとNode.jsのインストールや依存関係の解決を手動でやる必要がなくなるので、他の環境でさくっとアプリを実行したい時に便利です。 以下の簡単なスクリプトを例…

アジャイルな家計の見積もりと計画づくり

家庭を支える技術 Advent Calendar 2015の13日目です。 www.adventar.org 本記事では、我が家の家計を支える技術を紹介します。昨年も家計を支える技術という記事を書きましたが、今年は環境の変化に対応したグレードアップ版をお届けします。タイトルは有名…

Sambaにおける複数パーティションの容量の補正

Sambaで複数のパーティションをまたがる共有ドライブを公開すると、空き容量が正しく表示されない問題があります。 例えば、下表のように /home の下に複数のパーティションをマウントしている場合、 /home の共有ドライブに対する容量は10 GBと表示されてし…

スプレッドシートでカラムの更新日時を記録する

Google Appsのスプレッドシートは便利ですね。特に、JavaScriptで独自の関数やトリガーを定義できるのでハックが捗りますね。本エントリではスプレッドシートで特定のカラムの更新日時を記録する方法を説明します。 題材 スプレッドシートで下図のようなタス…

HubotでWebHookのHTTPリクエストを受け取る

Hubotはチャットの投稿を受け取って処理を実行するのに便利ですが、外部からHTTPリクエストを受け取って処理を行うこともできます。 HubotにはExpressが組み込まれており、デフォルトでは8080ポートをlistenします。HubotでHTTPリクエストを処理するには、以…

Gradle SSH Plugin 1.1.4, Groovy SSH 1.1.8をリリースした

Gradle SSH Plugin 1.1.4とGroovy SSH 1.1.8をリリースしました。リトライ機構にバグがあったので修正しました(Packet corrupt errors after upgrading from 1.1.5 to 1.1.7 · Issue #77 · int128/groovy-ssh · GitHub)。バグレポートをいただけるのは嬉し…

トニー・モリスからメール来てた

hotchemi.hateblo.jp Gmailの迷惑メールフォルダを整理していたら、数日前にトニー・モリスからメールが来てたことに気づいた。あと、メールを読んでいるうちに、Tony Morisの一部を伏せ字にするとT○○○Morisになるという知見を得た。 ちなみに、hotchemiさん…

SpockのPollingConditionsがE2Eテストで便利

Spockの PollingConditions が便利だったのでメモです。 PollingConditions は条件を満たすかタイムアウトになるまで評価を繰り返してくれます。E2Eテストで別スレッドでサーバを起動してサーバがreadyになるまで待つといった場合に便利です。 import spock.…

Gradle Updateをカイゼンした

Gradle Updateを公開します - GeekFactoryint128.hatenablog.com Gradle Wrapperを自動更新してくれるサービス Gradle Update を公開してから積み残しがいくつかあったので改善しました。 Done README 英語圏の人にも使ってもらうため、使い方やスクリーンシ…

Gradle Updateを公開します

Gradle Wrapperを自動更新してくれるサービス Gradle Update を公開します。Gradle Wrapperのようなビルドシステムは一度設定するとバージョンを上げるタイミングがあまりないのですが、新しいバージョンを使うとパフォーマンスが改善されたりバグを踏まずに…

App StoreのレビューをXSLTで取り出す

App Storeに公開されているアプリのレビューを取り出すXSL(XML Stylesheet)を書きました。 int128/appstore-reviewsgithub.com 以下の手順で使います。 App StoreからXMLをダウンロードします。ここではApp Store XMLと呼びます。 App Store XMLをXSLTで変…

certtoolコマンドとテンプレートで簡単に証明書を作る

Apache httpdやOpenVPNなどで自前のSSL証明書を使うには、一般に以下の手順が必要になります。 CAの秘密鍵を生成する。 CAの自己署名証明書を生成する。 サーバの秘密鍵を生成する。 サーバのCSRを生成してCAに送る。 CAで証明書を発行する。 クライアントの…

コマンドラインで通知メッセージを表示する

osx

Mountain Lion以降のOS Xでは、AppleScriptを使って通知センターにメッセージを表示できるようになりました。下記のような関数定義を .zshrc に書いておくと便利です。 function display_notification () { osascript -e 'on run argv display notification …

git statusを利用したリポジトリ情報のプロンプト表示

zsh

zshでGitのステータス情報をプロンプトに表示するにはvcs_infoを使う方法が一般的ですが、vcs_infoで得られる情報には限りがあります。そこで、git statusを使ってプロンプトを表示する方法を調べてみました。なお、OS XのGit 2.3.2で確認しています。 git s…

Docker Machineで既存サーバにDockerホストを構築する

Docker MachineはDockerホストを構築するためのツールです。VirtualBoxやVMwareなどの仮想化基盤、AWSやGCEなどのクラウドに対応しており、環境構築からDockerクライアントの接続設定まで自動的に行ってくれます。これによって気軽にDocker環境を調達できる…

Hubotでkuromoji.jsによる形態素解析を試す

Hubotでkuromoji.jsを使って形態素解析を行う方法を調べてみました。形態素解析のライブラリは node-mecab-async も有名ですが、Mecabのバイナリを用意する必要があります。kuromoji.jsはPure JavaScriptの実装なので、Herokuに簡単にデプロイできます。 yo …

Travis CIからGitHubにPull Requestを送る

ドキュメントやWebサイトの情報は、プロダクトと同じリポジトリで管理することが望ましいですが、構成管理の都合でリポジトリが別になってしまうことがあります。そのような場合、リポジトリ間で情報を反映する手作業が発生します。例えば、 ドキュメントをH…

プロダクトのドキュメントをMarkdownからAsciiDocに移行した

これまでGradle SSH PluginやGroovy SSHのドキュメントをGitHub Flavored Markdown(GFM)で書いていましたが、AsciiDocに移行してみました。やったことを記事に残しておきます。 動機 これまでソースコードリポジトリとドキュメントリポジトリを別々に管理…

リリースタスクの見える化を自動化する

ソフトウェアのリリース作業は時間が経つとともに複雑化する傾向があります。どんなに作業の自動化を推し進めても、リリース後の確認やドキュメントの更新などの手作業は残ってしまいます。また、一部の担当者しかリリース作業を知らないと、人がボトルネッ…

Chrome Extensionのスクリーンショット作成を自動化した

Chrome Extensionをストアに公開するにはスクリーンショットを作成する必要があります。バージョンアップのたびに手作業が発生してつらかったので自動化してみました。 欲しいもの 私が公開しているChrome Extensionを例にして説明します。 chrome.google.co…

Vue.jsからReact.jsに移行した

公開しているChrome ExtensionをReactベースに移行してみました。これは「新しいタブ」を置き換えるもので、新しいタブを開いた時に軽くて見やすいブックマークページが表示されるようになります。 Chromeストアから入手できます。 chrome.google.com これま…

睡眠時間を通知して夜更かしを防ぐスクリプト

暖かくなってきて、ついつい夜更かししてしまう季節になりました。睡眠時間は翌日の生産性に大きく影響するため、なるべく多くの睡眠時間を確保したいものです。Enterprise Neetなら昼前に出社する生活を堪能できますが、そんな機会はなかなかないものです。…

Gradle Wrapperを自動アップデートするサービスを作ってる

Gradleはおよそ2〜3ヶ月ごとに新しいバージョンがリリースされています。それに合わせてGradle Wrapperもアップデートするとバグフィックスや新機能の恩恵を受けられるのですが、後回しにして放置してしまうことが多いと思います。 ビルドを自動化したのなら…

Jenkins Workflow PluginのDSLを拡張する試み

Jenkins Workflow PluginのDSLを拡張する仕組みを調べたのでメモします. Workflow basic stepsを参考にする Workflow Pluginはbasic stepsという基礎的な命令セットと一緒にリリースされています.basic stepsには下記が含まれます. ArtifactArchiverStep …

Gradle SSH Plugin 1.1.1をリリースした

Gradle SSH Plugin 1.1.1をリリースしました. GradleからリモートサーバにSSHしてコマンド実行やファイル転送を行うことができるプラグインです.Groovy DSLを活用しているので,簡単にSSH処理を記述できます. int128/gradle-ssh-plugin New Features 1.1…

JVMベースのコマンドラインツールをHomebrewで配布する

JavaVMで動くコマンドラインツールをHomebrewで配布する方法を説明します.JavaやScala,Groovyなどで書かれたツールをMacユーザに配布する際に役立ちます. Homebrewとは Mac OS Xで使えるパッケージ管理システムの一つにHomebrewがあります. Homebrewを使…

イメージファイルをExifの撮影日付にリネームする

スマートフォンの写真を整理していたら DSC_XXXX の連番が重なってつらかったので,画像ファイルを撮影日付のファイル名にリネームするツールを作りました.RubyのスクリプトなのでWindowsでもOS XでもLinuxでも使えます. int128/rename-exif Exifライブラ…

vue.jsでInfinite Scrollを実装する

ページを下端までスクロールしたら次のページが読み込まれるInfinite Scroll(無限スクロール)をvue.jsで実装する方法を調べてみました. 一般的なInfinite Scrollの実装方法 スクロール可能な要素の scroll イベントを捕捉して,表示領域の位置を計算しま…