arachansan's diary

誰にも左右されず、硬派なBlogを書きます。

MSYS2でOpen usp Tukubaiが動かなかったでござる

おぉ!待ってました。 Windows + MSYS2で心置きなくOpen usp Tukubaiが動かせそう。 と思いきや。

kunst1080.hatenablog.com

Open-usp-Tukubai 動かない。 MSYS2にインストールはできるのですが、 動きません。

Open-usp-TukubaiはPython2奨励なのに、 pacmanは勝手にpython3をインストールします。

そして勝手にPython3で実行しようとするので動きません。

環境

  • Windows 7 SP1 (x64)
  • MSYS2(x64)
  • update-coreにて最新版にアップデート済み (2015/11/19現在)

現象

くんすと氏のサイトのとおりにインストールを実行

$ pacman -U open-usp-tukubai-HEAD-1-any.pkg.tar.xz パッケージをロード...
依存関係を解決しています...
衝突するパッケージがないか確認しています...
パッケージ (2) python-3.4.3-2 open-usp-tukubai-HEAD-1
合計インストール容量: 75.21 MiB
インストールを行いますか? [Y/n] Y
...(省略)....

で試しにjoin0を実行してみると SyntaxErrorでまともに動いてくれません。

$ join0
File "/usr/bin/join0", line 217
print tline.getField(0)
^
SyntaxError: invalid syntax

対処方法

Python2で動かすようにすればいい。

幸か不幸かOpen-usp-TukubaiはPythonスクリプトなので、 先頭のスクリプト起動の指定を python から python2 に変更してみる。

まずはPython2をインストール

$ pacman -S python2

join0の先頭を python2に書き換え

$ head -n 1 join0
#!/usr/bin/env python

$ sed -i 's/python/python2' /usr/bin/join0

$ head -n 1 join0
#!/usr/bin/env python2

お試し実行

$ join0
Usage   : join0 [+ng<fd>] key=<n> <master> <tran>
Version : Fri Oct 21 11:26:06 JST 2011
          Open usp Tukubai (LINUX+FREEBSD/PYTHON2.4/UTF-8)

お、動いたけど…。 全てのOpenTukubaiコマンドにこれを実行しないと…。

シェル芸スタート

まずは、ls -lでタイムスタンプでも見てみる。

$ cd /usr/bin
$ ls -l | awk '$6~/10. * /' | awk '$7~/15. * /'
-rwxr-xr-x   1 yusuke None     3983 1015 19:58 calclock
-rwxr-xr-x   1 yusuke None     4735 1015 19:58 cgi-name
...(省略)...

2015年10月15日のファイルは全て Open usp Tukubaiのようだ。

findで絞り込んで xargsで渡す戦略でいく。

$ find -mtime 34
./calclock
./cgi-name
./check_attr_name
./check_need_name
./cjoin0
...(省略)...
$ find -mtime 34 -type f | xargs head -n 1
==> ./calclock <==
#!/usr/bin/env python

==> ./cgi-name <==
#!/usr/bin/env python

==> ./check_attr_name <==
#!/usr/bin/env python

==> ./check_need_name <==
#!/usr/bin/env python

==> ./cjoin0 <==
#!/usr/bin/env python

...(省略)

お、sedに食わせても大丈夫だな。

$ find -mtime 34 | xargs sed -i 's/python/python2/'

成功!

$ find -mtime 0 -type f | xargs head -n 1
==> ./calclock <==
#!/usr/bin/env python2

==> ./cgi-name <==
#!/usr/bin/env python2

...(省略)...
$ join2
Usage   : join2 [-d<string>] key=<n> <master> <tran>
Version : Wed Oct 26 03:01:58 JST 2011

終わりに

pacmanのパッケージを作ってくれた作者には、問題点を報告した。 Github Issueにも書くべきかな?

PrinterPortを追加するPowershell

はじめに

WMIOjbectのWin32_TcpIpPrinterPortを使えばprnport.vbsの場所を気にすることなく、ポートを作成できます。

ソースコード

Portを追加するPowershellです。

Add-Port.ps1

     $PortList=New-Object System.Management.ManagementClass("Win32_TcpIpPrinterPort")
     $Port=$PrinterList.CreateInstance()
     $Port.name=“192.168.0.200"  # Port名
     $Port.Protocol=1    
     $Port.HostAddress=“192.168.0.200” # PortのIPアドレス   
     $Port.PortNumber=“9100” # Port番号   
     $Port.SnmpEnabled=$true # SNMPをonにするかしないか  
     $Port.Put()  #  管理者権限でないと動かない 

Win32_TcpIpPrinterPortでPortを追加している。

$Port.nameにはポート名を追加している。

Windowsでは通常IPアドレスと同じになっている。

$Port.HostAddressにPortのIPアドレスを入れる。

$Port.PortNumberにはポート番号を入れる。

これを実行すればプリンターのポートを追加することができる。

この前にプリンタードライバーを追加しているので、

後はWin32_Printerでプリンターを追加すればプリンターが使えるようになる。

PrinterDriverを追加するPowershell

はじめに

プリンターをコマンドラインで追加するバッチは長らく、rundll32 printui.dll,PrintUIEntry を実行したり、prnport.vbsといったvbsを使ったものが主流であった。

私はこれらの設定方法はもう古いと思っている。

Powershellという武器を使えばWMIObjectを使ってプリンタードライバーをインストールできる。

PrintUIEntryを使ったバッチファイルよりもわかりやすい。

基本的なソース

プリンタードライバーのインストールをPowershellで書いた。

まずはソースを眺めてください。

次に説明を書きます。

add-prindriver.ps1

# 共有ドライブ Z:ドライブを作っておく
net use z: \\NAS\Driver password /user:root
 
$PrinterDriverList=New-Object System.Management.ManagementClass("Win32_PrinterDriver")
$PrinterDriver=$PrinterDriverList.CreateInstance()
# プリンタードライバー名
$PrinterDriver.Name="Canon LBP8720/8710 LIPSLX"
#  Windows x64か Windows NT x86か
$PrinterDriver.SupportedPlatform="Windows x64"
$PrinterDriver.Version="3"
# ドライバーのフォルダ
$PrinterDriver.DriverPath=”Z:\Printer_Driver\LIPSLX\x64\Driver"
# INFファイルのあるパス
$PrinterDriver.InfName=”Z:\Printer_Driver\LIPSLX\x64\Driver\CNLB0JA64.INF"
$PrinterDriverList.AddPrinterDriver($PrinterDriver)
# Putするのに管理者権限が必要
$PrinterDriverList.Put()

New-Object System.Management.ManagementClass("Win32_PrinterDriver") でPrinterDriverを追加するWMIObjectを呼び出している。

infファイルに書かれているプリンタードライバー名をNameに書く

SupportPlatformは64bit版OSであれば、Windows x64と書く。

DriverPathにはプリンタードライバーのフォルダーを指定する。

InfNameにはinfファイルがある場所をフルパスで書き込む。

これを実行すればPCにプリンタードライバーを追加できます。

ポートの追加は?プリンターの追加は?

上記のようにプリンタードライバーを追加した上で 下記のWMIObjectを使って追加します。

  • ポートの追加 -- Win32_TcpIpPrinterPort
  • プリンターの追加 -- Win32_Printer

追って説明します。

Powershellで遠隔操作

VNCの限界

会社には100台以上のPCがある。
プリンターの入替や社員へのPCサポートで遠隔操作する必要がある。

そこで数年掛かりでVNCを導入していった。
現在ほぼ全てのPCにUltraVNCを常駐させている。

社員へのPCサポートでは威力を発揮するのはいいのだが、
何か作業をする時に社員からPCの操作を奪う必要がある。
社員の PCの操作を奪わず に作業をしたい。

LinuxだとSSHで入って、

  • プロセスをkill
  • yumやapt-getを使ってソフトをインストール
  • CUPSを弄ってプリンターをインストール

なんてことができる。

社員のPCの操作を奪う必要もない。

そんなことがWindowsでできるだろうか?

PowershellはProcessをkillするのも難しくない。

Powershellで遠隔で繋ぎに行ければ、最強なんだけどな。

plus.google.com

Powershellで遠隔操作

Enable-PSRemotingが使えるもログインできない

Enable-PSRemotingという機能を使えば、 Powershellで遠隔ログインが可能になるようだ。

下記サイトには具体的にログイン方法まで書いてあったのだが、 パスワードなしのアカウントだらけなので、 こいつは使えない。

atamoco.boy.jp

パスワードなしでも接続できるようにする

パスワードなしでも接続できる方法が欲しい。

と検索をかけていると下記のサイトに方法を発見した。

Powershellレジストリーを下記のように弄った。

Set-ItemProperty HKLM:\SYSTEM\CurrentControlSet\Control\Lsa -name LimitBlankPasswordUse -Value 0

パスワードなしのアカウントで Windows XP Professionalにリモートデスクトップ接続する - ブログ - ワルブリックス株式会社

Private networkとwork networkのみにする

それでも接続できない。

下記のネットワークだけにしておく必要がある。

  • 「 プライベートネットワーク (Private network)」
  • 「 社内ネットワーク (Work network)」

僕のクライアントにはVirtualBoxが作った「認識されないネットワーク」があったので

下記のサイトを参考に社内ネットワークに変更した。

  1. コントロールパネル」-「システムとセキュリティー」-「管理ツール」を開く
  2. ローカル セキュリティー ポリシー」を実行
  3. 左側のペインから「ネットワーク リスト マネージャー ポリシー」を選択
  4. 右側のネットワークの場所から「識別されていないネットワーク」を選択しダブルクリック
  5. 場所の種類「プライベート」・ユーザーアクセス許可「ユーザーは場所を変更できる」に変更
  6. OKボタンを押下した後、OSを再起動

blog.goo.ne.jp

接続成功

僕のPowershellのコンソール上から

Enter-PSSession -ComputerName IPアドレス

あれ?繋がらないな。

やっぱり、-Credentialが要るのかな?

PS >Enter-PSSession -ComputerName IPアドレス -Credential workgroup¥username

[IPアドレス]c:¥users¥username >

お、繋がった!

終わりに

Powershellで遠隔操作できるということは僕にとってはかなりのブレークスルーだった。

社内の100台近くのPCを一気に操作できるようになったからだ。

こうして更にPowershellにハマっていく。

黄色いおじさんは何故いい生活ができるの?

おさるのジョージ -- Curious George の黄色いおじさん、 何であんないい生活ができるんだ?

  • NewYorkのど真ん中のドアマン付の高級マンション
  • 郊外に別荘
  • 時々、海外旅行

年収1000万円以上の生活だと思う。

お稼ぎになっているかというとそうでもない。

彼の職業はワイズマン博士お付きの学芸員

日本では学芸員とか図書館司書とかという職業は比較的給料が安い。

比較的優遇されているというアメリカでもそんなにいい給料はもらえないと思う。

黄色いおじさんには、スコットランドにお城を持っている親戚がいる。

そこでピンと来た。

彼は稼ぐ必要も無い生まれながらのお金持ちなのではないかと。

実はスコットランド貴族で何かの拍子にアメリカに渡り、 アメリカで暮らしている。

貴族で膨大な資産、領土からの賃借料が上がってくるので糧を稼ぐ必要も、 ちまちま株で資産運用する必要も無い。

参考資料

NewYorkに住むにはいくら必要なのか?

www.cafeglobe.com 最低ラインは下記の通り 年収 1000万円以上 賃料月30万円

学芸員(Curator)の年収

www.payscale.com 平均年収 449,806$ 日本円だと 年収500-600万円ぐらい

うーん、NewYork住まいは難しいな。

AppleTV YouTubeの他の人の再生リストを連続再生する方法

YouTubeで動画の選択が面倒

Apple TV便利ですね。 YouTubeをTVの画面で見るのに重宝しています。 ただ、問題があります。 一本の動画が数分程度の動画が多いので、 頻繁に画像を選び直す必要があります。

プレイリストも作りたくない

YouTubeには再生リストがあります。 再生リストを再生すれば動画を頻繁に選び直す必要はありません。 ただ、Apple TVのYouTubeでは、自分で作った再生リストしか再生できません。

自分で作るのが非常に面倒です。

iPhone/iPadYouTubeアプリをAirPlay

iPhone/iPadYouTubeアプリはチャンネルにある再生リストを再生する機能があります。

それを再生し、AirPlayでApple TVに飛します。

そうすると再生リストにある動画を順番に再生してくれます。

これで再生リストを作る必要ありません。

途中で止まってしまうのですが…。

以下の条件の場合だと、 次の動画の再生をしてくれません。

  • バックグランドでYouTube起動
  • 画面ロック状態

そこで、それぞれに対策を実施します。

バックグラウンドでYouTube起動

これは簡単です。YouTubeの画面をずっと表示させたまま再生し続けるのです。 子供にYouTubeを見せている間にTwitterやFBはできませんが、やりたければPCでやりましょう。

画面ロック

長時間放置していると勝手に画面ロックが掛かります。これは画面ロックが掛からないように設定を変更します。

設定 > 一般 > 自動ロック で自動ロックを「しない」に変更します。

まとめ

iPhone/iPadYouTubeアプリから他の人の再生リストを再生すれば、 自分で再生リストを作成する必要も無いので便利。

AirPlayでiPhone/iPadYouTubeの再生状況を飛ばせば大画面で楽しめます。

再生リストの次の動画が再生されないのは

  • バックグラウンドで再生している
  • 画面ロックが掛かった

以下の方法で回避する

  • YouTubeを再生したままの状態にしておく
  • 画面ロックをしない

はてな参戦の理由

アメブロが使いにくい

嫁のアメーバピグ、アメーバライフへのお誘いの影響でアメブロを使い始めました。

しかしまあ、使いにくい。

見出しがない

私のBlogは見出しを使います。

考えを綺麗に整理した文章を書くには見出しが必要不可欠です。

小説や随筆(エッセー)のような文章であれば不要かもしれません。

私の文章は説明文、新聞に近い。

見出しの無い新聞なんて考えられますか?

箇条書きがない

アメブロには箇条書きもありません。

同じく説明文のようなパッと見て自分の意見を説明する上で箇条書きも必要不可欠です。

誰も長文は読んでくれませんし、私も読みたくありません。

HTMLタグで箇条書きと見出しを表現

私のBlogを見て、ちゃんと見出しと箇条書きでアメブロが書かれているじゃないかと思っているあなた、違います。

Blogの中にHeaderタグや見出しタグを直打して表現していたのですよ。

今日日、Wordのように入力できるBlogばかりなのに。

タグは覚えていますが、ペアで囲わないと行けない分、入力が面倒です。

効率さえ良ければ、markdown記法のようなものでも覚えます。

だけど、もうタグ打ちは嫌なんだ!!

見出しと箇条書きが不要なユーザーだらけ

見出しと箇条書きに対応して と叫んでも誰も相手にしてくれそうにありません。

amebloでアクセス数トップの記事は、芸能人Blogかアフィリエイト

見出しと箇条書きが必要なBlogなど皆無です。

絵文字太字は必要であっても見出しと箇条書きは要らない人たちです。

私はメジャーなユーザー層と明らかに乖離している。

だから、京都の中心で声高に叫んだとしても、渋谷のイケてるamebaさんに届くはずもありません。

Markdown記法への憧れ

Qiitaでmarkdown記法で記事を書いてみたんです。

そしたら、とても使いやすくて。

wiki記法よりも直感的でいいなと思ったんです。

はてながmarkdown対応だと!?

markdown記法に対応しているような変態Blogを探すと...。

GoogleBloggerはゴリゴリ、カスタマイズしないとmarkdown記法は使えません。

G+のヘビーユーザーではありますが、 ゴリゴリ、カスタマイズはスマートではありません。

それだったら通常で対応しているはてなBlogに行こう!

markdown記法でブログが書きたい。

ただ、それだけで はてな にやってきました。

はてなが怖い

お仕事の関係上、Googleり倒している生活を送っている訳ですが、 技術系Blogは大抵はてな だったりするんです。

私のBlogなど埋もれてしまうじゃないかと少し心配しております。

ただ、G+でもFBでもtwitterでもGoing my wayな人なのでそれほど気にはしておりません。