Ubuntuの最近の記事

自鯖の Ubuntu を 16.04 にした。そろそろ次のLTSが出るってのに、いまさらw。ってのが、大晦日だったような。

で、アップグレードしたはいいけど、あちこち動かなくなっていた(このブログとか)のをようやく動くようにした話。

PHP が 7.0 にアップグレードされて、設定ファイルが新しいパスに作られて、旧設定が引き継がれなかったせいで、日本語ワカリマセーン状態だったので、mbstring 系を再設定。

まだ、Movable Type が動かないのでログを見ると mysql_connect がないとのエラー出力。ググると、mysql_connect は php 7.0 から削除されたらしい。mysqli とか新しいモジュール使えということらしい。インストールは勝手にされているようだが。(´・ω・`)

しょうがないのでソース(/[movable type のルート]/php/lib/mtdb.mysql.php に発見)をのぞいたら、pdo_mysql 有効になっている(/etc/php/7.0/apache2/conf.d/20-pdo_mysql.ini にシンボリックリンクが存在する)と pdo_mysql を、次にmysqli、それ以外ならmysql使うというif 文になっていたので、こいつをどかして(/etc/php/7.0/mods-available/ リンク元ファイルがあるとこに移動)、mysqli を使うようにする。動いた。以上。

まぁ、https://www.movabletype.jp/documentation/mt6/installation/system-option.html の下の方にある、ダイナミックパブリッシング(オプション)を使う場合ですけどね。

なんか、テンプレートがデフォルトになってしまったけど、記事が読めるようになったのでひとまず良しとする。続きはまたいつの日にか。

VirtualBox Guest Additionを入れる準備

 *  Ubuntu 14.04 guest
    sudo apt-get install dkms build-essential module-assistant
    sudo m-a prepare
 
    ここまでやったら、VBoxGuestAdditionのディスクをマウントして、インストール
    インストール後は、一旦VMをシャットダウン(再起動ではない)すること。
 
 *  mount shared folder
    sudo mount -t vboxsf -o uid=$UID,gid=$(id -g) VMshare ~/VMshare

od -vAn -N8 -tu8 < /dev/urandom | node -e "var d2x=function(d){var s='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';var l=s.length;var x='';while(d>0){x=s.charAt(d%l)+x;d=Math.floor(d/l);}return x;};process.stdin.resume();process.stdin.on('data',function(str){console.log(d2x(str));});" | cut -b 1-8

  1. 		/dev/urandamから20桁取って来る
  2. 数字とアルファベット(0-9a-zA-Zの62進数)に変換する(11桁くらいになる)
  3. 先頭8文字取ってくる。

 

以上

ImageMagickのconvertを利用している。あとwgetとsedくらい入ってるっしょ。

 

#!/bin/sh

USAGE="usage: $0 [USER NAME] [SLIDE NAME]"
if [ $# -lt 2 ]; then
echo >&2 $USAGE
    exit 1
fi

USER_NAME=$1
SLIDE_NAME=$2
SLIDESHARE_URL="http://www.slideshare.net/"

TITLE=""
PDF_NAME=""

wget -nv --content-disposition $SLIDESHARE_URL/$USER_NAME/$SLIDE_NAME --output-document=tmp.html
wait

CNT=0
while read line
do
    TITLE=`echo $line | sed -n -e "s/.*<title>\(.*\)<\/title>.*/\1/p"`
    PNG_URL=`echo $line | sed -n -e "s/.*data-full=\"\(.*\)\" .*/\1/p"`

    TITLE=`echo $TITLE`
    PNG_URL=`echo $PNG_URL`
    if [ ${#TITLE} -ne 0 ]; then
        echo $PDF_NAME
        PDF_NAME=`echo $TITLE`
    fi

    if [ ${#PNG_URL} -ne 0 ]; then
        echo $PNG_URL
        CNT=`expr $CNT + 1`
        wget -nv --content-disposition $PNG_URL --output-document=${CNT}.png
    fi
done < tmp.html

convert $(for i in $(seq 1 $CNT); do echo ${i}.png; done) ${PDF_NAME}.pdf

rm -f *.png
rm -f tmp.html

13.04でXRDPは0.6.0になった(?)

 

大体、前回の12.04の時と同じだが、キーマップ作成、.xsessionの内容(gnome-fallbackとした)

http://recitativo-fant.asia/blog/2012/08/ubuntu-1204-xrdp.html

 

変更点は、ほとんど、下記参考ページの通り。

http://ubun2.wiki.fc2.com/wiki/xrdp再び

 

ただし、下記が異なる(私の環境の場合)

 

「d」のキーでウィンドウが最小化してしまう場合。

dconfエディタの場合、/org/gnome/desktop/wm/keybindings/show-desktop の値から'<Super>d'を削除することで治る。

 

Ubuntu 13.04 で GP04P をUSB接続で使う

ビルド環境をインストール

apt-get install build-essential

 

下記からLinux用ドライバをダウンロード

http://www.huaweidevice.com/worldwide/downloadCenter.do?method=toDownloadFile&flay=software&softid=NDcwMzU=

ダウンロードしたものを解凍して、出てきたtar.gzをまた解凍して、driverフォルダの中に入って、

./install

 

以上。

Rって検索でうじゃこらヒットしちゃうから大変だけど、「apt-cache search R|grep statistic」とかやって見つけたそれっぽいものをリストアップしとくよ。

 

r-base →本体

r-base-*

r-bioc-*

r-cran-*

r-nocran-*

r-other-*

タイムスタンプをファイル名やら何かのIDやらに使ったりするけど、重複が怖いのでナノ秒まで取ると長すぎて使えないとか、色々有りますよねー。でも、タイムスタンプにしとくと、時系列に並べるのが楽とかあるよねー。

 

年〜ナノ秒まで並べると、24桁。

これをエポック秒+ナノ秒にすると現在19桁。

 

[自然数をX進数の文字列に変換するJavaScript](http://recitativo-fant.asia/blog/2013/01/xjavascript.html)

[Linuxコマンドからパイプでnode.jsに渡して処理するワンライナー](http://recitativo-fant.asia/blog/2013/02/linuxnodejs.html)

dateコマンド(エポック秒+ナノ秒) date +"%s%N" でタイムスタンプ取得、これらを組み合わせて、・・・

 

とかやってみるけど、JavaScriptの桁数の関係上、現在時刻でマイクロ秒(16桁)くらいまでしか計算できてない(=逆算もできない)ので(逆算しないなら使えなくもないけどw)、「cutコマンドで16桁だけ取り出す」をカマして、下記としてみた。

 

date +"%s%N" | cut -b 1-16 | node -e "var d2x=function(d){var s='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';var l=s.length;var x='';while(d>0){x=s.charAt(d%l)+x;d=Math.floor(d/l);}return x;};process.stdin.resume();process.stdin.on('data',function(str){console.log(d2x(str));});"

 

これで、「1359705351694061」(エポック秒+マイクロ秒の16桁)を「6e6ngkaIt」(9桁)にできた。\(^ω^)ノ ヤッホイ

 

ちなみに、逆算する場合はこちら。

 

echo "6e6ngkaIt" | node -e "var x2d=function(x){x=''+x;x=x.trim();var i,j,k=0,s='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',l=x.length;for(i=0;i<=l;i++){for(j=0;j<s.length;j++){if(s.charAt(j)==x.charAt(i)){k+=j*Math.pow(s.length,l-i-1);}}}return k;};process.stdin.resume();process.stdin.on('data',function(str){console.log(x2d(str));});"

コマンド | node -e "process.stdin.resume();process.stdin.on('data',function(str){console.log(【処理】)})"

UTF-8について

Webサーバのログとか、AJAXの内容とかでは、日本語や記号をUTF-8でエンコードされた形、あるいはUTF-8のコード表記で見ることが多くなってきたわけですが・・・

 

例えば「ポ」という文字は・・・

 

\u30ddという「コード」がマッピングされている。

 

これは、UTF-8における「その文字のコード」であり、UTF-8でエンコードしたものではない。

 

実際にこれらのコードでエンコードするには、他に追加すべき情報がある。

 

このコードを2進数にすると次のようになる。

 3 0 d d => 0011 0000 1101 1101

 

これを次のようにゴニョゴニョする。

=---- : 「1」の個数(=バイト数)+「0」
     ---- : 1バイト目
         =-- : 「10」バイトの区切り
            ------ : 2バイト目
                  =-- : 「10」バイトの区切り
                     ------ : 3バイト目
     ----   ------   ------ : この領域に「30dd」を入れると次のようになる。
=11100011=10000011=10011101 : これを16進にすると次のようになる。
=E3=83=9D : UTF-8エンコード完了

 

nkf(ファイルのエンコードをゴニョゴニョする)コマンドで確認する。

echo "ポ"|nkf -wMQ

=E3=83=9D

 

逆に言うと、nkfでは、実際のどの文字がどのコードにマッピングされているか直接的には分からない。

 

コード<==>文字の変換には、JavaScriptがお手軽でいい。

### コード→文字の変換

 -  サーバでnode.jsとか入っていれば、

    node -e "console.log(unescape('\u30dd'.replace(/\\\\u/g, '%u')))"

 -  あるいは、Google Chrome のデベロッパーツールのコンソールで、

    console.log(unescape('\u30dd'.replace(/\\u/g, '%u')))

### 文字→コードの変換

* replaceの位置が変わっていることに注意 *

 -  サーバでnode.jsとか入っていれば、

    node -e "console.log(escape('ポ').replace(/%u/g, '\\\\u'))"

 -  あるいは、Google Chrome のデベロッパーツールのコンソールで、

    console.log(escape('ポ').replace(/%u/g, '\\u'))

 

JavaScriptでエンコードするには、encodeURI, encodeURIComponentを使う。

 

ハ長調だと「ラ」の音は、「A」っていうコードだけど、実際は「440Hz」みたいな(?)

このアーカイブについて

このページには、過去に書かれた記事のうちUbuntuカテゴリに属しているものが含まれています。

前のカテゴリはPDAです。

次のカテゴリはプログラミングです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。