さくらレンタルサーバーのデフォルトのシェルを変更する

何番煎じかわからないですが…

さくらレンタルサーバーのスタンダードプランのOSはFreeBSDでデフォルトのシェルはcshみたいです。
いつもbash使っているのでTabで保管してくれないのは物凄く面倒…

なので、bashに変更してみました。やり方は簡単

とりあえず、今何のシェルを使ってるか確認

% echo $SHELL
/bin/csh

どんなシェルが使えるか確認

% cat /etc/shells
# $FreeBSD: release/9.1.0/etc/shells 59717 2000-04-27 21:58:46Z ache $
#
# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.

/bin/sh
/bin/csh
/bin/tcsh
/usr/local/bin/bash
/usr/local/bin/rbash
/usr/local/bin/zsh
/usr/local/bin/rzsh
/usr/bin/passwd

今回はbashを使うので下記のコマンドを打つ
パスワードを打つ必要が有る

% chsh -s /usr/local/bin/bash
Password:
chsh: user information updated

ログインし直すとbashになってる。
.bashrcと.bash_profileを作る

vim .bashrc
# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

# User specific aliases and functions
alias ll='ls -l'

vim .bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH

以上です。

次は
コマンドを入力する左側がディレクトリ移動する度に増えてくという問題に当たったので変更していきます。
コマンドを入力する左側の表示を変更する

Twitterのアプリ登録にはまずキャリアメールを登録する必要が有る

https://apps.twitter.com/app/newに必要事項を書いて次へ進もうとこんなエラーが出る

Error
You must add your mobile phone to your Twitter profile before creating an application. Please read https://support.twitter.com/articles/110250-adding-your-mobile-number-to-your-account-via-web for more information

te

ググってみるとこんな記事が出た

Twitterのアプリケーション新規登録時に、開発者のTwitterアカウントと携帯電話の関連付けが必須になった模様。 » Otapps

要約すると携帯のキャリアメールを登録してね。って事らしい

試しに自分のドメインで登録しようとしたけどダメだった(´・ω・`)
キャリアのメールアドレスなんて持ってないよ…(´・ω・`)
どうすればいいの?教えてエライ人!

追記:
エライ人からTwitter公式アプリで一度でも認証すれば登録出来るよ!と言われてやったら本当に登録出来ました。
めでたしめでたし

SkypeのPCU使用率が100%になって重い時の対処法

何故かSkypeのCPU使用率が100%近くになる現象に悩まされてました。
ググるとこんな記事が

起動直後から数十秒の間 Skype が CPU 1コアを 100%使用し続ける – Skype Community

とりあえず、IEをデフォルトブラウザに設定すれば良いようです。

もっと言うと
正確には “htm” のみ IE に関連付けすれば問題は回避出来るようです
“html” や”HTTP/HTTPS”等のプロトコルは Chrome に関連付けで問題ないようです。

ドメイン取った&WordPress復活させました

クイックインストールって方法でWordPress復活させてみました。
作るのは簡単だったのに記事と写真の移行が手間取った(´・ω・`)

所で、旧ドメインが消失しました。
大体予想できると思いますが…、お金払い忘れました(´・ω・`)
普通だったら期限が切れる一ヶ月前位からメールが来るのですが、全て迷惑メールフォルダに入ってました(´・ω・`)

某人に相談したら「ちょっとすると売りに出されるよ」と言われたのでほぼ毎日バリュードメインでsekkiを検索してましたw
(マジで一日事位に検索してましたw)
2ヶ月くらい経ったある日知り合いに、「なんか広告になってるけど?」
って言われダッシュでアクセスすると

ってなっていましたw

この取られた日もちゃんと検索してたんですが、なんかタイミングが悪かった様です(´・ω・`)

このドメインってそんなに価値が有ったのかな(´・ω・`)

このドメイン(sekki.org)は多分一時的な物です。
sekki.netは、2013年1月15日に作られて、2014年1月15日に期限が切れるそうです。

もし、来年ドメインが売ってたら買い直したいな(´・ω・`)

みなさんもドメインの更新は忘れないように!

VB.netでパケットキャプチャーを作ってみる

VB.netでパケットキャプチャーを作ってみる

[C#] System.Net.Sockets.Socketを使ってパケットモニタ (3)
こちらのサイトを参考にしました

目的
 ・開いたサイトのアドレスとかもリアルタイムで分かるのでコメントビューアに使いたかった
 ・通信内容が直で分かるので、ニコ生のゲットプレーヤーステータスが暗号化されてても接続できるようにする
です。

これが書いたソースです。

    Private Sub Test()
        Dim ip As String = "192.168.11.2"

        Dim socket As New Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP)

        socket.Bind(New IPEndPoint(IPAddress.Parse(ip), 0))
        socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AcceptConnection, True)
        socket.IOControl(IOControlCode.ReceiveAll, New Byte() {1, 0, 0, 0}, New Byte() {0, 0, 0, 0})

        Dim buffer As Byte() = New Byte(4096) {}
        Dim k As Integer

        Do
            socket.Receive(buffer)

            Dim message As String = Encoding.UTF8.GetString(buffer)
            'Console.WriteLine(message) '←何故かココでプログラムが止まってしまう。原因教えて下さい


            '送信元IP
            Dim source As String = String.Format("{0}.{1}.{2}.{3}", buffer(12), buffer(13), buffer(14), buffer(15))
            '送信先IP
            Dim destination As String = String.Format("{0}.{1}.{2}.{3}", buffer(16), buffer(17), buffer(18), buffer(19))


            If message.Contains("<chat") = True AndAlso source.Contains(ip) = False Then

                'For Each item As String In buffer
                '    Console.WriteLine(item)
                'Next

                Dim dstPort10 As String = Convert.ToString(buffer(22), 16) & Convert.ToString(buffer(23), 16)
                Dim srcPort10 As String = Convert.ToString(buffer(20), 16) & Convert.ToString(buffer(21), 16)
                Dim dstPort As Integer = Convert.ToInt32(dstPort10, 16)
                Dim srcPort As Integer = Convert.ToInt32(srcPort10, 16)


                Dim match = System.Text.RegularExpressions.Regex.Match(message, "thread=""(?<thread>[0-9]+)""")
                Dim thread As Integer = CInt(match.Groups("thread").Value)


                Console.WriteLine()
                Console.WriteLine(k)
                Console.WriteLine("送信元{0}  -  送信先{1}", source, destination)
                Console.WriteLine("ポート{0}  -  {1}", srcPort, dstPort)
                Console.WriteLine("スレッド{0}", thread)
                k = k + 1
            End If


        Loop
    End Sub

はいこれが、パケットキャプチャーのソースです。
以下説明

自分のIP

        Dim ip As String = "192.168.11.2"

messageの中にはパケットのバイナリ?をUTF-8でエンコードした物が一応入ってます。

Dim message As String = Encoding.UTF8.GetString(buffer)
'Console.WriteLine(message) '←何故かココでプログラムが止まってしまう。原因教えて下さい

bufferの中にパケットの16進数(バイナリ?)を10進数に直した1バイトが入ってます。
(写真1)

12,13,14,15 送信元
16,17,18,19 送信先アドレス
が.区切り?で入ってるのでIPの形に直して入れます。
(写真2)

            '送信元IP
            Dim source As String = String.Format("{0}.{1}.{2}.{3}", buffer(12), buffer(13), buffer(14), buffer(15))
            '送信先IP
            Dim destination As String = String.Format("{0}.{1}.{2}.{3}", buffer(16), buffer(17), buffer(18), buffer(19))

messageの中にコメントで使われる形式の”
っとなっているので、threadの値を正規表現で取ります。

                Dim match = System.Text.RegularExpressions.Regex.Match(message, "thread=""(?<thread>[0-9]+)""")
                Dim thread As Integer = CInt(match.Groups("thread").Value)

以上です。ありがとうございました。

VB.netで正規表現を使って文字列を見つける方法2

前回は正規表現で文字列を一つだけ取りましたね?

今回は全部取ってみたいと思います。

前回の続きで書いていきます。

まず、ボタン2を置きます。(無い場合はテキストボックスをフォームに置きます。)
前回読んだ人はスルーしてください。
テキストボックスには↓ココから

<li><a href="html/index.html">トップページ</a></li>
<li><a href="html/test.html">実験用テストページ</a></li>
<li><a href="hoge/index.html">テストのトップページ</a></li>
<li><a href="homu/homu.html">ほむほむ</a></li>

↑ココまで
を入れときます。

ボタン2のソースはこんな感じ

        '. $ ^ { [ ( | ) * + ?  を含む場合は、文字の前にをつける 例: (1)→((?<value>[0-9]*)
    
        '<li><a href="html/index.html">トップページ</a></li>
        Dim pattern As String = "<li><a href=""(?<url>.*)"">(?<text>.*)</a></li>"
        Dim m As Match = Regex.Match(TextBox1.Text, pattern, RegexOptions.IgnoreCase Or RegexOptions.Compiled)

        Do While m.Success

            Console.WriteLine("URL:{0}  -  タイトル:{1}", m.Groups("url").Value, _
                                                      m.Groups("text").Value)

            m = m.NextMatch()
        Loop

1
実行すると…

URL:html/index.html – タイトル:トップページ
URL:html/test.html – タイトル:実験用テストページ
URL:hoge/index.html – タイトル:テストのトップページ
URL:homu/homu.html – タイトル:ほむほむ

全部出てくれましたね!
こんな感じで、難しい事書かなくてもできます。

ね?簡単でしょ?

VB.netで正規表現を使って文字列を見つける方法1

今回は正規表現を使って文字を抜き出したいと思います。
次回は正規表現を使って複数の文字を抜き出したいと思います。

まず、ボタンとテキストボックスをフォームに置きます。
テキストボックスには↓ココから

<li><a href="html/index.html">トップページ</a></li>
<li><a href="html/test.html">実験用テストページ</a></li>
<li><a href="hoge/index.html">テストのトップページ</a></li>
<li><a href="homu/homu.html">ほむほむ</a></li>

↑ココまで
を入れときます。

ボタン1のソースはこんな感じ

        '. $ ^ { [ ( | ) * + ?  を含む場合は、文字の前にをつける 例: (1)→((?<value>[0-9]*)
    
        '<li><a href="html/index.html">トップページ</a></li>
        Dim matchText = Regex.Match(TextBox1.Text, _
                                    "<li><a href=""(?<url>.*)"">(?<text>.*)</a></li>")



        Console.WriteLine(matchText.Groups("url").Value)
        Console.WriteLine(matchText.Groups("text").Value)
        '↑↓どちらでもおk
        'Console.WriteLine(matchText.Groups(1).Value)
        'Console.WriteLine(matchText.Groups(2).Value)

実行すると…

html/index.html
トップページ

って出ますね、足りないですね!
このソースだと1つしか出せないのです。

次は、正規表現を使って複数の物を抽出してみましょう!

どうでしたか?意外と簡単でしょ?
正規表現の書き方などは他のサイトを参考にしてください。

PHPでタイトル取得してみた

参考サイト:PHPでWEBページのタイトルを抜き出すサンプル
      http://creazy.net/2008/05/php_get_page_title_sample.html

こんな感じで書いて動かしてみる

echo "PageTitle:". getPageTitle("http://www.google.co.jp/");

function getPageTitle($url) {
    $html = file_get_contents($url);
    $html = mb_convert_encoding($html, "UTF-8", "auto" );
    if (preg_match( "/<title>(.*?)</title>/i", $html, $matches)) {
        return $matches[1];
    } else {
        return "タイトル取れなかった";
    }
}

実行すると、一応結果は表示される…が!
Warning: mb_convert_encoding() [function.mb-convert-encoding]: Unable to detect character encoding
って出る、解決するには、

$html = mb_convert_encoding($html, mb_internal_encoding());

と、”auto”を消すだけだった。

これで、”一応取”得はできた
次に今のコードで、
http://headlines.yahoo.co.jp/hl?a=20110321-00000046-jij-soci
ここの名前を取ろうとすると…

見事に文字化けする!
(ちなみに、”auto” 付けてもダメでした)
勝手にエンコードの種類を特定して勝手にしてくれるのかと思ってた…

もしかして:このページが EUC-JP で出来てるから?

取りあえず、ゴニョゴニョしてみる

結論こんなコードになった。

echo "PageTitle:". getPageTitle("http://headlines.yahoo.co.jp/hl?a=20110321-00000046-jij-soci");

function getPageTitle( $url ) {
    $html = file_get_contents($url);
    $enc_format =  "JIS, eucjp-win, sjis-win, UTF-8";
    $html = mb_convert_encoding($html, "UTF-8", $enc_format);
    if ( preg_match( "/<title>(.*?)</title>/i", $html, $matches) ) {
        return $matches[1];
    } else {
        return "タイトル取れなかった";
    }
}

“auto”じゃなく、形式を指定してあげればいいみたい

ちなみに、なぜ、eucjp-win とか付けるのか?
参考サイト:SJISじゃなくてSJIS-win、EUC-JPじゃなくてeucJP-winを使おう
      http://pentan.info/php/sjiswin_eucjpwin.html

以上終わりです。

っと思ったけど、まだ続きがある!
世の中にはこんなサイトもある、

( ゚д゚)…

?!

改行が…

まぁ、正規表現変えればいいだけなんだけどねw

preg_match( "/<title>(.*?)</title>/is", $html, $matches)

/なんとか/i が文字列の大文字・小文字を区別しない
/なんとか/is が大文字・小文字を区別せず、1行とみなして調べる

こんな感じ

結論!

$br = "<br />n";
$url = "http://headlines.yahoo.co.jp/hl?a=20110321-00000046-jij-soci";

    echo "PageTitle:". getPageTitle($url). $br;

    function getPageTitle($url){
        $html = file_get_contents($url);

        $enc_format =  "JIS, eucjp-win, sjis-win, UTF-8";
        $enc_html = mb_convert_encoding($html, "UTF-8", $enc_format);
        if(preg_match( "/<title>(.*?)</title>/is", $enc_html, $matches)){
            //echo mb_detect_encoding($html, $enc_format). "<br />n";
            return $matches[1];
        } else {
            return false;
        }
    }

以上です、お疲れ様でした。

追伸:改行が入るかも…