ゴミ箱

忘備録とかいろいろ愚痴ったりとか

提督業務環境構築 -リテイクその1-

あらまし

艦メモ ~艦娘メモリーズ~(艦これ専用ブラウザ) - 理ろぐが動いてワッショイしてました。
が、強引すぎるlibcのアップデートに環境が破壊されてしまいました。
(忠告は出ていた)

その時何が起こったのか

locale環境ぶっ壊れました。

元に戻した

libc6 Download (DEB, RPM)から自分の環境のデフォルトのものをとってきます。

Fei3939@debian:~$ sudo dpkg -i libc6_2.13-38+deb7u1_amd64.deb

さてどうするのか

実はgeta6/teitoku · GitHubについても艦メモと同じエラーで動かなかったため、
実質ふりだしに戻ります。
仕方ないので、解決策を探す旅へと戻りました。

解決したのか

Debian 7 GLIBC · Issue #972 · LightTable/LightTable · GitHubの中見てたら解決しました。
とても死にたい。

手順

Fei3939@debian:~$ sudo sh -c 'echo "deb http://ftp.debian.org/debian/ testing main contrib non-free" >> /etc/apt/source.list'
Fei3939@debian:~$ sudo apt-get update && sudo aptitude update
Fei3939@debian:~$ sudo aptitude install -t testing install libc6-dev

これでlibcのversionが上がりました。(やった時点では2.18になりました)

艦メモをDebian(Wheezy)で動かす

あらまし

自宅PC(Windows機)の電源が爆発してお亡くなりになられたため、
急遽ノートPCにて提督業務を遂行する環境を構築する任務が発生。

候補

以前は艦これ専用ブラウザー Teitoku - geta6 | makeboothを使っていましたが、
改めて導入しようとしてうまく行かず。
そこで、艦メモ ~艦娘メモリーズ~(艦これ専用ブラウザ) - 理ろぐを入れてみました。

環境

Fei3939@debian:~$ uname -a
Linux debian 3.2.0-4-amd64 #1 SMP Debian 3.2.57-3+deb7u2 x86_64 GNU/Linux
Fei3939@debian:~$ cat /etc/debian_version 
7.5

※Flashplayerは既に入っているとします。

手順

基本的にはUbuntuの場合をDebianで読み替えて(読み替えるほどじゃない)行きます。
64bit環境なので、Ubuntu-64bit(deb)からDLします。
つづいて、

$ sudo dpkg -i kanmusumemory-0.0-ubuntu-x86.deb

で、問題はここからでした。

Fei3939@debian:~/Downloads$ KanmusuMemory 
/usr/local/bin/kanmusumemory/KanmusuMemory: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.14' not found (required by /usr/local/bin/kanmusumemory/KanmusuMemory)
/usr/local/bin/kanmusumemory/KanmusuMemory: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.14' not found (required by /usr/local/lib/kanmusumemory/libQt0TwitterAPI.so.0)

これGLIBCのversionが2.14以上を要求されてます。
それに気づかずに、シンボリックリンクの貼り付けとか考えてて時間食いました。
結果から言うと、Debian Wheezyのデフォルトのlibc6のversionは2.13なんですね…
libc6 Download (DEB, RPM)←ここ見ると(ノ∀`)アチャーですわ。
しょうがないんで、こっから一番新しいの(書いてる時点では2.19)をDLします。
んでインスコ……

Fei3939@debian:~/Downloads$ sudo dpkg -i libc6_2.19-1_amd64.deb 
dpkg: libc6_2.19-1_amd64.deb が libc6:amd64 を含んでいることを考慮すると:
 libc6:amd64 は locales (<< 2.19) を壊します
  locales (バージョン 2.13-38+deb7u1) が提供され、導入済み です。

dpkg: libc6_2.19-1_amd64.deb の処理中にエラーが発生しました (--install):
 libc6:amd64 のインストールは locales を壊す可能性があり、
 設定削除は許されていません (--auto-deconfigure が助けになります)
処理中にエラーが発生しました:
 libc6_2.19-1_amd64.deb

へー(棒

Fei3939@debian:~/Downloads$ sudo dpkg -i --auto-deconfigure libc6_2.19-1_amd64.deb 
dpkg: `libc6:amd64' のインストール によって壊れた locales の設定削除を考えています ...
dpkg: 問題ありません。(libc6:amd64 によって壊れた) locales の設定削除をします
(データベースを読み込んでいます ... 現在 154242 個のファイルとディレクトリがインストールされています。)
libc6:amd64 2.13-38+deb7u1 を (libc6_2.19-1_amd64.deb で) 置換するための準備をしています ...
locales を設定削除しています ...
Checking for services that may need to be restarted...
Checking init scripts...
libc6:amd64 を展開し、置換しています...
libc6:amd64 (2.19-1) を設定しています ...
Checking for services that may need to be restarted...
Checking init scripts...

Restarting services possibly affected by the upgrade:
  exim4: restarting...done.
  cups: restarting...done.
  cron: restarting...done.
  atd: restarting...done.

Services restarted successfully.
dpkg: 依存関係の問題により locales の設定ができません:
 locales は以下に依存 (depends) します: glibc-2.13-1 ...しかし:
  パッケージ glibc-2.13-1 はまだインストールされていません。
libc6:amd64 (2.19-1) は locales (<< 2.19) を壊し、導入済み です。
設定される locales のバージョン は 2.13-38+deb7u1 です。

dpkg: locales の処理中にエラーが発生しました (--install):
 依存関係の問題 - 設定を見送ります
処理中にエラーが発生しました:
 locales

(もしかしてコケた…???)

Fei3939@debian:~/Downloads$ KanmusuMemory 

f:id:Fei3939:20140609230502p:plain
キタ━━━━(゚∀゚)━━━━!!

お疲れ様でした。

Debian squeezeにgo言語の環境構築

Go言語

aptitudeを試す

$ sudo aptitude install golang
名前か説明が "golang" にマッチするパッケージは見つかりませんでした
名前か説明が "golang" にマッチするパッケージは見つかりませんでした
インストール・削除・更新されるパッケージがありません。
更新: 0 個、新規インストール: 0 個、削除: 0 個、保留: 3 個。
0 B のアーカイブを取得する必要があります。展開後に 0 B のディスク領域が新たに消費されます。

( ^ω^)…

$ sudo aptitude search go
p   addresses-goodies-for-gnustep   - GNUstep 用個人アドレスマネージャ (Goodies)
p   aewm++-goodies                  - 最小限のウィンドウマネージャの補完ユーティ
p   akonadi-kde-resource-googledata - Google calendar and contacts resource for 
p   alt-ergo                        - Automatic theorem prover dedicated to prog
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
p   gok-doc                         - GNOME Onscreen Keyboard 用文書ファイル    
p   goldendict                      - a feature-rich dictionary lookup program  
p   goldendict-wordnet              - electronic lexical database of English lan
v   golearn                         -                                           

(#^ω^)……

直接

ここから取ってくるじゃろ?

こうして

$ sudo tar -C /usr/local -xzf go1.2.2.linux-amd64.tar.gz 
$ export PATH=$PATH:/usr/local/go/bin

こうやって

package main

import "fmt"

func main() {
  fmt.Printf("hello\n")
}

こうじゃ

$ go run test.go 
hello

スクリーンショット+Twitter

あらまし

前から触ろうと思っていたC#の題材としてスクショアプリを作ってみました。
ただスクショとるだけだとつまらないので、そのままTwitterに投稿できるようにしてみました。

開発環境

機能

あれだった点

Twitter認証でコケてた
  • OAuth認証でPINコードを取得してaccess.TokenとAccess.TokenSecretを投げたときに受け取ったはずのserviceの中がNullでNullReferenceExceptionが返ってきた
using TweetSharp; 

TwitterService service = new TwitterService("consumerKey", "consumerSecret");
OAuthRequestToken requestToken = service.GetRequestToken();
Uri uri = service.GetAuthorizationUri(requestToken);
Process.Start(uri.ToString());
//---- ここまでは良かった ----//

string verifier = "123456"; //-- Pinコード

//-- アクセストークンを取ってくる…
OAuthAccessToken access = service.GetAccessToken(requestToken, verifier);

//-- 問題はここ
service.AuthenticateWith(access.Token, access.TokenSecret);

この部分で例外をキャッチしていたようでserviceの参照でNullを見てたらしい…
(数日放置して書き直したら動いたので原因がまだよくわからない)

UIがクソ
  • 自分のセンスのなさが伺えます
  • Twitter認証するための認証ページを開かせるためのボタンと認証ボタンを分けてた
    • 結局認証ボタンでまとめて、別フォームを開いてPinコードを入力するようにした
常に画像が添付して投稿される状態
  • スクショした画像をすぐにそのままつぶやく目的だったから良いといえばよかったけど…
  • 結局投稿するときに画像を添付するかどうか尋ねるダイアログを出すようにした

修正や改善や機能追加的なTodo(もしやるとしたら)

  • Twitter認証の情報を保持させる(今はアプリ起動後に毎回認証しないとダメ)
    • access.Tokenとaccess.TokenSecretとか持ってたらいいとか見たけど無理だった。ヨクワカラン
  • 認証ボタンの位置を変える
    • 今の位置だとスクショの取れる範囲に影響している
  • スクショを取ったときにファイル名を付けて区別できるようにする
    • test.pngとか決め打ちにしてる
  • 全体的にデザインがクソ
    • どうしようもない

やってみて

C#とかフォームアプリとかGUITwitter連携とかいろいろと勉強になったし楽しかった。
もうちょっといじって適当なところでgithubとかに公開できたらいいなーとは思うけど
ソースコードあれだしやらないかな…

TeraTermショートカット

Windowsマシンで作業中にTeraTermよく使います。
んで接続先とかいちいち選択してパスワード入力してって
とてもめんどくさかったので、接続先のショートカット用意して
ついでに鍵認証で自動化しました。

鍵生成とか

Puttyとかでもいいんですけど、みんな入ってるはずの
たまたま入ってたGitBashプロンプトを使います。

$ ssh-keygen.exe -t rsa

で、デフォルトだとおそらく(自分の場合は)
C:\Users\ユーザ名\.ssh\の下にid_rsaとid_rsa.pubができます。
これを接続先のマシンに持ってって、.ssh下のauthorized_keysとかに追記してやればOK。

ショートカット

TeraTerm自体のショートカットをどっかに作って、右クリックからプロパティ選びます。
そーするとリンク先に
"C:\Program Files (x86)\teraterm\ttermpro.exe"とか入ってるはずなので、
ここの後ろに追記します。

接続先:ポート番号 /サービス /認証方法=???? /ユーザ=○○○○ ......

実際にはこんな感じになる。

"C:\Program Files (x86)\teraterm\ttermpro.exe" hogehoge.com:22  /ssh2  /auth=publickey /user=teokure /keyfile=C:\Users/teokure/.ssh/id_rsa

ssh2で接続して鍵認証なのでこんな感じになります。
/keyfileに鍵までの絶対パスを渡してやります。

SLP Advent Calendar 15日目

mikutter install battle on Windows

SLP Advent Calendarの15日目の記事です。

どうもFei3939です。

なんかサークルでもAdventCalendarやるらしく早々と適当な日に
参加表明した結果直前まで何書こうかなやんでました。

ところで、知ってる人は知ってると思いますが、
うどん大でmikutterといえば私です。(自称
去年参加したmikutter Advent Calendarは今年も行われているようです。
今更DebianとかFedoraとかにinstallするのも芸がないので、Windowsにしてみました。

mikutterとは

Linux向けのTwitterクライアントです。
詳しくは→mikutter

本題

基本的には、mikutter Advent Calendar13日目「mikutter on Windows の実現手順(最新版)」の再現です。

環境はWindows 8(64bit)です。

必要なもの
手順
  1. Ruby2.0.0-p353のinstall
    - Rubyの実行ファイルへ環境変数PATHを設定する
    - .rbと.rbwファイルを関連付ける
    にチェックを入れておく
  2. gem install gtk2 bundler
  3. mikutter本体のDLと展開
  4. ruby mikutter.rb

_人人人人人_
> 動いた <
 ̄Y^Y^Y^Y ̄

引っかかった点
  • bundleのinstall
    • mikutterフォルダ内で bundle install --path=vendor/bundle
結論

Linux上で動かすほうがぬるぬる動くよ!
でもWindowsでもmikutter使えるよやったね!

*1:x64じゃない方です