カテゴリー別アーカイブ: Application

ソフトウェア関連の話題。

LINEで友だちを擬似グループ管理する

今やインフラと言って差し支えない程に普及したLINEですが、未だに友だちのグループ管理機能は実装されません。管理・整理整頓魔として大変気持ち悪いので、擬似的にグループ管理するアイデアを記しておきます。

ポイントは「表示名」にあります。スマートフォン版LINEでは、「友だち」タブから対象をタップして、名前の横にある小さな「ペン」をタップすると変更可能です。一方、PC版LINEでは、「友だち」タブから対象を右クリックして「表示名の変更」から呼び出せます。

「表示名」の命名規約は「[擬似グループ名]_[本名]([渾名/HN])」です。例えば、ABC社2015年度入社の後輩である渡辺太郎君の渾名が「なべさん」だった場合は、「ABC2015_渡辺太郎(なべ)」とします。

これを全ての友だちに実施します。友だちは表示名でソートされますので、めでたく擬似的にグループ管理できました。

また、副産物としては、プロフィールの「名前」に渾名を設定している人も少なくないので、「誰だったっけ?」も防止できます。擬似グループの命名センス次第で便利さは増すかと思います。

foobar2000でインターネットから取得した歌詞を表示する

foobar2000でインターネットから取得した歌詞を表示してみたのでメモしておきます。

全体像

スマートに実現する方法はありません。下記のように様々なcomponents及び、外部プログラムを協調させます。また、全自動ではできませんでした。

foobar2000で歌詞を表示するための設定全体像

foobar2000で歌詞を表示するための設定全体像

処理の流れ

理解する必要はありませんが、おさえておいたほうが良いでしょう。

  1. RunServicesが再生中の曲名+歌手を引数にLyricMasterを呼出します。
  2. LyricsMasterが曲名+歌手をキーに複数の歌詞掲載サイトを検索して、HTMLをパース、歌詞を抽出、候補リストを出力します。
  3. 人間が候補リストから最も正しい歌詞を選択すると、LyricsMasterが歌詞を曲名+歌手をファイル名に設定してファイル出力します。
  4. LyricsPanel(要:ColumnsUI)が再生中の曲名+歌手を元に歌詞ファイルを特定して画面表示します。

必要資材

下記に必要な資材をまとめましたので適宜取得してください。

資材名 取得先
RunServices http://www.foobar2000.org/components/view/foo_run
CulumnsUI http://yuo.be/columns.php
LyricsPanel http://foo2k.chottu.net/
LyricsMaster http://www.kenichimaehashi.com/lyricsmaster/

手順

手順自体はfoobar + Lyrics Master – 別称 うしぶの通りやれば出来ました。

トラブルシューティング

詰まった箇所をメモしておきます。

  • LyricsPanelの上で右クリック→Reload Lyrics File
  • foobar2000上の曲名+歌手と、歌詞ファイル名と一致させる。(例えば、(カバー)(CV.〜)が付いているだけでもダメ。姓名の間に空白があってもダメ。)
  • 初期設定では文字化けするので、LyricsPanelの設定をUTF-8にする。
  • おまけ:AMIPで同じことをやろうとしましたが、iTunesでエンコードしたMP3に付属するID3タグはUnicodeになっていて、かつ、AMIPはUnicode非対応らしいので必ず文字化けを起こしてしまい諦めました。(参考:Winampやfoobar2000とLyrics Masterを連携させる方法

CentOSでTortoiseSVNを動作させる

VMWareのCentOS(ゲストOS)にWINEをインストールして、TortoiseSVNを動作させてみました。完全に誰得情報です。

環境情報

見ての通り64bitです。

cat /etc/redhat-release 
CentOS release 6.6 (Final)
uname -a
Linux localhost.localdomain 2.6.32-504.3.3.el6.x86_64 #1 SMP Wed Dec 17 01:55:02 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

WINEのインストール

WINEは標準リポジトリに存在しないので、epelリポジトリを追加する必要があります。ちなみに、WindowsのVMWare環境でネットワーク設定を「NAT」にしている場合はゲストOSのインターネット側との通信が異常に遅くなる事象が発生するので、今回だけは「ブリッジ」にすることをおすすめします。

su -
rpm -ivh http://ftp.riken.jp/Linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum repolist

http://ftp.jaist.ac.jp/pub/Linux/Fedora/epel/6/x86_64/repoview/epel-release.html

後はyumにおまかせです。

yum install wine

WINEの初期設定をします。ひたすらYESを押せばインストール完了します。この時点から既にWindowsっぽいウィンドウが出てきます。

winecfg
Screenshot-Wine configuration

Screenshot-Wine configuration

TortoiseSVNのインストール

Windowsと同じようにmsiファイルを取得して、msiexecオプションを付けたwineから呼び出します。日本語パックもついでにインストールしときます。

wget http://downloads.sourceforge.net/project/tortoisesvn/1.8.10/Application/TortoiseSVN-1.8.10.26129-x64-svn-1.8.11.msi
wget http://downloads.sourceforge.net/project/tortoisesvn/1.8.10/Language%20Packs/LanguagePack_1.8.10.26129-x64-ja.msi
wine msiexec /i TortoiseSVN-1.8.10.26129-x64-svn-1.8.11.msi
wine msiexec /i LanguagePack_1.8.10.26129-x64-ja.msi

成功すると、こんな妙なところにインストールされています。

/home/username/.wine/drive_c/Program Files (x86)/TortoiseSVN/bin

ちなみに、CentOSのメニューからは起動できません。(配置されているのは.lnkファイルだからうまく実行できないみたいです。)

tortoisesvn起動

tortoisesvn起動

TortoiseSVNを使ってみる

fixme等の怪しいメッセージがたくさん出ますが問題なく起動できます。TortoiseSVNはTortoiseProc.exeにコマンドを与える形で各種機能を呼び出すデザインになっているようです。そのため、インストールで.lnkファイルが作成されたんだと思います。詳細なオプションは本家マニュアルが詳しいです。

めんどうですが、binフォルダに移動して、wineから呼び出します。

cd "/home/username/.wine/drive_c/Program Files (x86)/TortoiseSVN/bin"
wine TortoiseProc.exe /command:about
wine TortoiseProc.exe /command:settings

mfc110u.dllが見つからない的なエラーが出た時は、ホストOSのWindowsの「C:\Windows\System32」から当該ファイルをコピーして、ゲストOSのCentOSの「/home/username/.wine/drive_c/windows/system32」にペーストしてください。

全機能を動かしてはいませんが、とりあえず動いてるように見えました。WINEすごいですね。

参考にさせてもらった資料

秘密鍵/公開鍵を使ってパスワード無しのssh接続をする(cygwin@Windows→xrea)

公開鍵/秘密鍵を使ったパスワード無しのssh接続を、Windowsのcygwinからxreaサーバに実施する際のメモです。

まずは公開鍵/秘密鍵を作成する。cygwinはデフォルトで~/.sshフォルダが存在するため作成不要。ssh-keygenはオプションなしだとrsaを使用する。

$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/User/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/User/.ssh/id_rsa.
Your public key has been saved in /home/User/.ssh/id_rsa.pub.
The key fingerprint is:

$ cd .ssh/

$ ls -la
合計 13
drwxrwx---+ 1 User なし    0 11月 29 15:10 .
drwxrwxr-x+ 1 User なし    0 9月  29 23:51 ..
-rw-rw----  1 User なし 1679 11月 29 15:10 id_rsa
-rw-rw-r--  1 User なし  394 11月 29 15:10 id_rsa.pub
-rw-rw-r--  1 User なし  745 11月 29 14:03 known_hosts

xreaに公開鍵をscpでファイル転送する。

$ scp ./id_rsa.pub jikkenjo@s353.xrea.com:.

xrea側でauthorized_keysに追加する。xreaにssh接続するためには、Webのコントロールパネルから「ホスト情報登録」をしておく必要があります。

$ ssh -l jikkenjo s353.xrea.com

> mkdir .ssh
> chmod 700 .ssh
> mv id_rsa.pub ./.ssh/.
> cd .ssh/
> cat ./id_rsa.pub >> authorized_keys
> chmod 600 authorized_keys
> logout

早速、sshで接続してみる。が、「秘密鍵のパーミッションが緩すぎる」と怒られてエラーとなる。

$ ssh -l jikkenjo s353.xrea.com
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0660 for '/home/User/.ssh/id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: /home/User/.ssh/id_rsa
jikkenjo@s353.xrea.com's password:

そもそも、id_rsaに所有グループが設定されていなかったので設定して、グループからのアクセスを拒否するパーミッションに設定する。(念のため、ユーザの所属するグループを確認して設定。)

$ groups
なし Users HomeUsers

$ chgrp Users ./id_rsa
$ chmod 400 ./id_rsa

これにて一件落着。

$ ssh -l jikkenjo s353.xrea.com
> 

ファイル名の先頭が半角空白のファイルをFTPサーバにアップロードすると詰む

先頭に半角空白があるファイルをFTPサーバにアップロードすると、各種クライアント(FFFTPで検証)が対応していないのか、ダウンロードは元より、削除や移動もできなくなり詰みます。

ちなみに、Explorerのアドレスバーにftp://〜と入力することで簡易なFTPクライアントとしても使えますが、そちらでもエラーが発生します。

エラーメッセージ例

550 The system cannot find the file specified.

FTPサーバのファイルまたはフォルダーを削除しようとしてエラーが発生しました。このフォルダーへのアクセス許可があるかどうかを確認してください。

対応方法

コマンドプロンプトでftpコマンドを使って接続し、ファイル名をダブルクォーテーションで囲って指定することで削除(delete)や移動ができます。

$ ftp xxx.xxx.xxx.xxx
> delete " filename.msg"

Explorerからは先頭空白のファイル名を付与できませんが、WindowsAPI経由では可能のようです。今回の私の場合は、Microsoft Office Outlookのメールをファイルとして保存すると、ファイル名の先頭に半角空白が紛れ込みました。

Firefoxで使用しているアドオンメモ

OperaからFirefoxに乗り換えて9ヶ月経ちました。暇だったので、私がFirefoxで使用しているアドオンの一部とその使い方を紹介しておきます。

Default FullZoom Level

ツールバーにズーム率を指定するパネルを追加できます。また、ページごとにズーム率を記憶してくれます。

1ページに通常よりたくさんの情報を表示したい場合や、(今となってはオワコンの)ネットブック等の解像度が低い環境でブラウジングする際に便利です。私の場合は、GoogleCalendarに90%の指定をしています。

Download statusbar

ファイルのダウンロード状況をわかりやすく表示してくれる有名なアドオンです。

FEBE

Firefoxの環境を定期的に丸ごとバックアップできる、もしものときに安心なアドオンです。アドオンや設定含め、(FEBEの設定次第で)すべてをバックアップ可能なため、カスタマイズした使いやすいFirefoxを、PCの故障によって失うことがありません。私は、バックアップ先をDropboxのフォルダに指定しています。

FireFTP

以前は静的なウェブページ制作を趣味にしていたのでFFFTPを使っていました。が、ブログに移行して、静的なウェブページ制作の機会が減ったため、殆どFFFTPを使わなくなっていたことに気づきました。上記FEBEで接続先のバックアップも取れるし、ということで、PC初期化をきっかけにFFFTPからFireFTPに乗り換えました。使用感は劣りますが、たまに使う分には問題ありません。

Remembet Password

Firefoxにデフォルトで備わっているログインマネージャ機能で、ユーザIDとパスワードを記憶してくれます。ただし、フォームにautocomplete=offが設定されていた場合は、記憶対象外になってしまいます。主に銀行等のセキュリティが重要視されるウェブページで設定されていることが多いようですが、そもそも端末を他人に貸すことがないのであれば問題ありません。その場合も記憶してくれるようになります。

X-notifier

Twitter、LINE、Skype等のSNSを主に使うため、メーラも使わなくなりました。Gmailはブラウザで十分ですし、docomoメールもブラウザから閲覧可能になったので、新着メールを通知してくれる機能だけで十分です。過去に紹介しています。

Tab Mix Plus

タブの機能を拡張します。非常に細かく設定できます。私は主にタブ幅を固定するために使用しています。

Private Tab

Firefox標準のプライベートブラウジングは別ウィンドウとして開いてしまいます。このアドオンを導入すると、特定のタブだけをブライベートブラウジングとして使用できます。twitterの開発用別アカウントにログインする場合や、他人にブラウザを一時的に貸す場合などでとても便利です。

消音

Firefoxだけ1ボタンでミュートにするアドオンです。OSのボリュームミキサーで同じことができますが、ワンボタンでミュートON/OFFを切り替えられるのが地味に便利です。主に、音楽を聴きながら艦これをやるとき、艦これをミュートにするために使用しています。

以上です。他にも使っているアドオンはありますが。

Windows8.1でVMWarePlayer6.0でOWASPでBurbSuiteで……

思った以上にハマったのでメモしておきます。備忘録レベルです。

はじまりは、Webセキュリティを攻撃者の立場から勉強しようと思い、脆弱性の残されたWebアプリケーション(Webサーバ)をローカルでたてて実験しようと考えたことからでした。調べてみると、OWASP Broken Web Applicationsという、脆弱性の残されたWebサーバとWebアプリがVM仮想イメージで配布されていることを知りました。Windows8.1のホストOSから、VMWarePlayer6.0を使ってゲストOSとして呼び出す手順が妥当と判断しました。また、脆弱性診断のためローカルプロキシツールであるBurbSuite(FreeEdition)を使用することとしました。

各種ダウンロード/インストール

VMwareWorkstation10はインストーラに内包されるネットワーク設定ツールを抽出するために必要のため、インストールする必要はありません。今回はなくてもいいですが、VMwareのネットワークをツールを使ってわかりやすく学びたければ、少し重いですがダウンロードしておきましょう。

VMwarePlayer6.0
普通にインストールしてください。
VMwareWorkstation10 評価版
別項で説明。
Java Runtime Environment
私のPCにはJavaがインストールされていませんでした……。インストール後はPATHを通しておいてください。
BurbSuite FreeEdition
jarをどこかに配置してください。
OWASP Broken Web Applications
どこかに配置します。(C:\vm)

VMwareWorkstation10の使い方(なくてもいい)

PlayerシリーズにはVMwareのネットワーク設定ツールが含まれていないため、必要の場合は、Workstaionのインストーラに含まれるツールを抽出してやります。コマンドラインで同じフォルダに移動して、下記コマンドを実行します。

./VMware-workstation-full-10.0.1-1379776.exe -e work

後は、workフォルダにあるcore.cabを解凍して、下記ファイルを「C:\Program Files (x86)\VMware\VMware Player」に移動します。もうWorkstationは用済みのため削除していただいて構いません。

  1. vmnetcfg.exe
  2. _vmnetcfglib.dll→vmnetcfglib.dllにリネーム

VMwareのネットワークを設定

「コントロールパネル>ネットワークの状態とタスクの表示>アダプターの設定の変更」で下記画面を開くと、VMnet1とVMnet8ができています。

ネットワークアダプターの設定

ネットワークアダプターの設定

VMwareではVMを起動するときにネットワークアダプタの設定をBridge/HostOnly/NATから選択できます。それぞれの違いは下記のとおりです。今回はNATを選びますがHostOnlyでも良いです。セキュリティ脆弱のあるアプリをあげるので、念のためBridgeはやらないほうが無難です。

ネットワークの接続形態を理解するために、ここの図が非常にわかりやすかったです。

設定 使用する仮想アダプタ 用途
Bridge VMnet0 ゲストOSをホストOSのつながるルータへ接続したい場合。(今回は非推奨。)
HostOnly VMnet1 ゲストOSとホストOSをHUB(L2SW)で接続したい場合。
NAT VMnet8 ゲストOSとホストOSとNATルータ(L3SW)で接続したい場合。
仮想マシン設定の編集

仮想マシン設定の編集

NAT接続にした前提で話を進めます。ゲストOSからインターネットに接続するためには設定が必要となります。(まあ、やらなくてもいいですが。)設定のイメージについてはここの図が非常にわかりやすかったです。ちなみに、VMnet8をvmnetcfg.exeで見てみると下記の通り。DHCPサーバ機能も兼ねているので、DHCPの設定を見てみると.128からIPアドレスが配布されるように初期設定されていました。

仮想ネットワークエディタ

仮想ネットワークエディタ

DHCP設定

DHCP設定

Windows8.1側では、インターネット接続をしているアダプタの設定画面を開いて、インターネット接続をVMnet8と共有します。(こういう設定をICSと呼ぶらしいです。)

インターネット接続の共有

インターネット接続の共有

あとは、VMnet8アダプタのIPアドレス設定を確認します。(ゲストOSのeth0にVMnet8(DHCP)から配布されるIPアドレス/ネットマスクに従ったIPアドレスが設定されていれば問題ありません。)このあたりのイメージは先程も紹介したこちらの記事にある画像がわかりやすいですのでぜひ参照してください。ちなみに、DHCPでIPアドレスは.128から配布される設定となっているので.1固定にしておけばゲストOSとIPアドレスが被りません。

VMnet8のIPアドレスを確認

VMnet8のIPアドレスを確認

後は、VMwarePlayerでOWASP仮想イメージを実行するだけです。root/owaspbwaでログインできると思います。Windows8.1側とLinux側で相互にpingが通り、Linuxからgoogle.com(インターネット)にpingが通り、ホストOSのブラウザから「http://192.168.137.129/」(IPアドレスはifconfigで確認)につながれば設定完了です。長い道のりでした。

BurbSuiteの設定

BurbSuiteの配置されたフォルダにコマンドラインで移動して、下記コマンドを実行します。パス等の関係なのか、バッチファイルではうまく行きませんでした。動かない場合は、きちんとコマンドラインでフォルダに移動してから実行してみてください。

java -jar burpsuite_free_v1.5.jar

Proxy>OptionsよりIP:Portを確認します。ループバックアドレスである「127.0.0.1:8080」で待ち受けていることを確認できました。(わざわざ確認するまでもないですが。)つまり、試験するブラウザにプロキシを設定します。

ループバックアドレスの確認

ループバックアドレスの確認

ブラウザへのプロキシ設定

試験対象のページ以外へのアクセスはループさせたくありません。そういう、プロキシ適用有無のルールを記述する方法があります。下記ファイルをどこかに配置してください。

function FindProxyForURL(url, host)
{
	if(isInNet(host, "192.168.137.0", "255.255.255.0")){
		return "PROXY 127.0.0.1:8080";
	}
	else return "DIRECT";
}

Firefoxの場合は下記のように設定します。バックスラッシュとスラッシュ問題もあるようなのでいろいろ試してみてください。

プロキシの設定

プロキシの設定

最終確認

試験ページ(http://192.168.137.129/)にアクセスした時はBurbSuiteがリクエストを捉えてくれて、それ以外のページにアクセスした時は素通りしてくれるようになることを確認して全ての工程が完了です。自分、お疲れ様でした。

おまけ

できない! つながらない! というときはWindows側アダプタの停止→開始や、Linux側アダプタのdown→upを試してください。

ifconfig eth0 down
ifconfig eth0 up

参考URL

非常に多くのサイトを参考にしました。感謝。

WindowsのLINEアプリで既読となるタイミング

まわりでかなりの割合が使っていたため、時代の波に取り残されまいと始めたLINEですが、目の前にPCという最高の入力デバイスがあるにも関わらずスマホでペチペチ入力するのは面倒臭い。そのため、デスクに座っているときはWindowsデスクトップ版のアプリを使っています。

こちらが相手の発言に「既読」を付けるのは、会話ウィンドウをアクティブにしたときだということが友人との検証で明らかとなったのでメモしておきます。逆に言うと、会話通知がありタスクバーでピコピコしているときは既読がついていません。返事を保留しても安心して作業を進められますね。(既読をつけると「返信しなくてはならない」という強迫観念に駆られるチキンにも安心仕様。)

それと、PCでアプリを起動しているときはスマホに通知がいかないようにする設定が非常に便利のためオススメです。「PC版利用時にはスマートフォン側に通知が行かないようにする」にチェックを付けます。

LINE設定画面

LINE設定画面

他にも、「表示名を変更」する機能も便利です。HNやニックネームでLINEに登録している人が非常に多く「誰やねん」となりかねないので登録/整理しておくべきでしょう。Gmailのアドレス帳と2重管理になっているのがストレッサーですがしょうがないです。

ちなみに、PC版ではCtrl+Alt+Rで自分の発言が「既読」になったか表示することができます。

docomoキャリアメールでsmtp/imap接続ができるように

docomoキャリアメール(@docomo.ne.jp)がマルチデバイス対応(smtp/imap接続が可能)になりました。(2013年12月17日対応

元々は「spモードメール」というアプリだったのですが、この前「ドコモメール」というクラウドでメールを管理するアプリ/方式に変更されていました。当時時点で、マルチデバイスやWeb対応もアナウンスされてはいたのですが、2013年12月17日にやっとサービス開始しました。smtp/imapにも対応しているため、使い慣れないdocomo謹製アプリはアンインストールしてしまいましょう。

Mobile(Android)

AndroidではK-9 Mailがオススメです。但し、docomo謹製「ドコモメール」アプリ以外ではプッシュ通知されませんので、定期的に新着チェックする設定にしてやる必要があります。

設定完了すると下記画面のように表示されます。

K-9 Mailのアカウント設定後画面

K-9 Mailのアカウント設定後画面

PC(Windows/Firefox)

PCではFirefoxのアドオンであるX-notifierが良さそうです。私も前はThunderbirdを使っていたのですが、最近はSNSツールが発達してきてメールを使うことが少なくなったこともあり、ブラウザで十分だと感じています。そのため、あえてメーラを使うことをやめました。

余談ですが、Windows8.1pre→Windows8.1でCドライブが初期化される罠にかかったことをきっかけに、Operaにも無事見切りをつけられてめでたくFirefoxに乗り換えました。それから、ブログ化してからめったに使わなくなったFFFTPをFireFTPに乗り換え、ほとんど見ない2ちゃんねるブラウザはJaneStyleからchaikaに乗り換えました。最近はFirefoxに依存して生きています。

さて、話を戻すと、X-notifierは下記設定で使っています。リンクは「https://mail.smt.docomo.ne.jp/mail」に設定しておくと便利です。

X-notifierのdocomo設定画面

X-notifierのdocomo設定画面

まだX-notifierは使い慣れていない(以前はGmail Managerを使っていた)ので、これから使い込んでみます。

GoogleCalendarで追加したカレンダーがAndroidで表示されない事象の解決

GoogleCalendarで追加したカレンダーがAndroidで表示されない事象の解決メモです。

ジョルテカレンダー等も根っこはAndroid標準のカレンダーデータを使用しているので、同じ手順で解決できます。Android標準のカレンダーアプリでも追加したカレンダーが表示されていない時に効果のある手順です。逆に、標準カレンダーに表示されているのに、ジョルテに表示されていない等の事象は、ジョルテの再インストールで直るかもしれません。

Androidのカレンダーデータを一度クリアして、再度読み込みさせる手順で解決します。細かい手順は端末メーカによって違うので適宜読み替えてください。

  1. 設定>アプリ>すべてのアプリ>カレンダーの保存>データを削除
  2. 設定>アカウント>Google>同期>カレンダーの同期 のチェックを1度外して付ける
  3. 同期が終わると追加したカレンダーが表示される