Programming」カテゴリーアーカイブ

composer モジュールのバージョンの調べ方

composer モジュールのバージョンは composer.lock に記録されていますが、これを取り出すコマンドを考えてみました。

まずは composer コマンドを使う方法。

$ composer show --ansi laravel/framework | less -R

composer--ansi は出力結果を常に色付きにするためのオプションで、less-R は色情報を解釈してカラー表示にしてくれるオプションです。

これだと色んな情報が一度に出力されてしまうので、バージョン番号だけほしいときはちょっと不便。

なので jq を使って JSON ファイルを直接漁る方法も考えてみました。

$ cat composer.lock | jq -r '.packages | map(select(.["name"] == "laravel/framework")) | .[0].version'

jq-r は出力する文字列のダブルクォーテーションを外すためのオプションです。

Perl でファイルの更新日時を Time::Piece で取得する

もしかしたらこれらをまとめてやってくれるモジュールがあるのかもしれないけど……

use common::sense;
use Time::Piece qw/localtime/;

my ($accessed_at, $updated_at, $created_at) = map { scalar localtime($_); } (stat $file)[8..10];

stat 関数で取得した、ファイルのアクセス日時,更新日時,作成日時を map を使って Time::Piece オブジェクトに変換しています。

初めスカラーコンテキストの指定をしてなくてハマったのでメモしておきます。

GitLab の日付を日本人に馴染むように書き換える Greasemonkey

GitLab で英語形式で表示される日付を、日本語形式に変換する Greasemonkey を書いてみました。1

コミットログの 21 Oct, 2015 みたいなのを 2015/10/21 に置き換えます。
ツールチップの日付も変換しようと試みていますが、GitLab では timeago という jQuery プラグインが使われており、読み込むタイミングによってはうまく変換できないかもしれません。

公開はしますが、JS に関しては今回初めて Class を作ってみたというくらい素人なので、各自直して使っていただければと思います。

  1. Oct ってどう見ても 8 なのに 10月 っていうのに毎回混乱する

URLを短縮するWindowsアプリを作りました

bit.ly で URL を短縮するための Windows アプリを作りました。

起動するとまず、APIキーを訊かれるので、ここからAPIキーを取得し、入力します。
あとは、短縮したいURLをコピーして、タスクトレイのアイコンを左クリックするだけで、短縮されたURLがコピーされます。
どこか適当な場所に貼り付けて利用して下さい。

おまけの機能として、数式をコピーした状態で、タスクトレイのアイコンをクリックすると、計算結果がコピーされます。
計算できるのは、+ - * / だけです。

とらぷてぃ。 v.1.5

PuTTYを透過するために作ったソフト、「とらぷてぃ。」をアップデートしました。

今回アップデートした点は、PuTTYを英語表示にしているときに、設定画面を透過しない設定が効かないのを修正したのと、プログラムの仕組みを少し変えました。
そのため、設定画面を開いたときにタスクトレイに表示されるようになった反面、設定画面をいくつも開けるようになってしまいました。
まあ、これに関しては実害はないので、また気が向いたときに直そうと思います。

AudioVideoPlayback と TVersity

Windows 7 で Microsoft.DirectX.AudioVideoPlayback.Audio を使って VBR の MP3 を再生すると、曲の長さが狂う1んだけど、TVersity を入れたらそれが直った!

  1. 具体的にいうと、Audio.CurrentPosition で得られる最大値よりも、audio.Duration で得られる値の方が大きくなって、Audio.CurrentPosition に値を再設定すると、元の再生位置よりも手前が再生される現象が起こっていた。

Androidアプリをバージョンアップする方法のメモ

自作Androidアプリをバージョンアップさせるときの手順。
忘れそうだったので、メモしておきます。

プログラムに修正を加えて、動作確認ができたら、まずバージョン番号を上げます。
AndroidManifest.xml を開いたら [Manifest] タブを選択し、[version code] を +1 します。
この値はかならず正の整数。
[version name] は、任意の数上げます。
できたら保存してビルドします。

次に apkファイル を出力します。
Eclipse で [Java] パースペクティブを選び、[パッケージ・エクスプローラー] からプロジェクト(仮に my-android-project とする)を選び、右クリックする。
[Androidツール] → [Export Unsigned Application Package...] を選ぶ。
保存ダイアログが表示されるので、保存場所とファイル名を指定して(仮に C:\Users\yuuAn\Desktop\my-android-project.apk とする)、保存する。

次に署名を行います。
keystore は C:\Users\yuuAn\.android\my-release-key.keystore にあるとします。

C:\Users\yuuAn\Desktop> jarsigner -verbose -keystore "C:\Users\yuuAn\.android\my-release-key.keystore" "C:\Users\yuuAn\Desktop\my-android-project.apk" my-release-key

青字の部分は適宜変更。
キーストアのパスワードと鍵のパスワードを入力すれば、署名完了。

次に Zipalign を適用します。

C:\Users\yuuAn\Desktop> zipalign -v 4 "C:\Users\yuuAn\Desktop\my-android-project.apk" my-android-project-release.apk

最後に my-android-project-release.apk を公開します。
Android デベロッパー コンソールから、先ほど作成した my-android-project-release.apk をアップロードします。

[商品の詳細] タブの [掲載情報] にある [Recent Changes] に、更新情報を書きます。
保存します。

しばらくすると、新しいファイルが反映され、マーケットからアップデートできるようになります。

Androidで共有したときのアプリ名を任意のものにする

Androidで共有(暗黙的インテント)できるアプリ一覧に、自分のアプリを追加するためには、AndroidManifest.xml に、

<intent-filter android:label="@string/intent_name">
    <action android:name="android.intent.action.SEND" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:mimeType="text/plain" />
</intent-filter>

このようなインテントフィルターを追加しますが、この時に赤字の部分でラベルを指定すると、アプリ一覧に表示されるアプリ名を、ドロワーに表示されるアプリ名とは別のものにできます。

久しぶりにAndroidアプリ開発しようと思ったら動かない件

以前作った mixi Checking! for Android というAndroidアプリをアップデートしようと思って、久しぶりにEclipseを起動したのですが、実行してもエラーが出てしまいました。

Your project contains error(s), please fix them before running application.

何がエラーなのか分からなくて、さんざん悩んだんですが、「問題」というタブを見たら、次のようなエラーが出ていました。

Error generating final archive: Debug certificate expired on 12/01/19 23:50!

ググってみると、どうやらこれは debug.keystore の有効期限が切れているのが原因のようでした。

PuTTYのウィンドウを半透明にする方法

SSHクライアントのPuTTYですが、MacやLinuxの人がやってるみたいに、ウィンドウを半透明にして表示すると、ブラウザで参考になるサイトを見ながらプログラミングできたり、あるいは動画を見ながら作業をしたりなんかもできて、いろいろ捗りますよね。

それで、何年か前からPuTTY 0.59 ごった煮版に背景半透明化機能を付けた次のバージョンを使っていました。

ところが最近になって、Vimでマウスが使えることを知り、PuTTYを通してマウス操作をしようと思うと、PuTTY 0.59ではうまく動かないということが分かりました。
例えば、マウスホイールでスクロールすることができません。

いろいろ試した結果、この問題は、PuTTYのバージョンを上げれば解決することが分かりました。
そこで、ごった煮のパッチが当たったPuTTYで、背景を半透明にできるものが無いかと探していたら、次のバージョンを見つけました。

こちらはPuTTY 0.60を元にして描画処理をかなりいじったもののようですが、問題がひとつ。ちょっと重いのです。
あと、Aeroの機能で透過すると、ぼやけてしまって後ろの文字が見えません。雰囲気はいいんですけどね。

ということで、自分でPuTTYのソースを読んで改良するか?とも思ったのですが、それは難しそう。
そこで思いついたのが、Windows2000からOS標準の機能としてウィンドウを半透明にする機能が付いていて、それを利用して任意のウィンドウを透過表示にするアプリケーションが、結構昔からちらほら見かけるぞということでした。

透過処理を当てるPuTTYにはこれを選びました。

通常のごった煮版です。Vimでのマウス処理も、特別な設定をすること無く使えました。
これが半透明で使えたら問題なしですね。