Heat-Hazeの日記

ネット上で様々の有益な情報を発信する人に感謝。

サーチエンジンクライシス

anond.hatelabo.jp

ちょっとだけ昔話を書きたくなった。 2000年始めのころ、まだサーチエンジンといったらinfoseek,goo,exciteだった。一部の詳しい人が「最近おもしろい検索エンジンがあるんだけど。googleっていうんだけどさ」ってなかんじでまだググレカスなんていう言葉ができる前の時代。 そのころのSEOなんてページ下部に単語をページの背景色と同色にしてつらつらと並べただけの単純なものだった。そのころの検索エンジンは簡単だったのでそれだけで効果があった。だんだん検索するとそんなゴミみたいなページばかりがヒットするようになって、このままじゃインターネットは便所の落書きみたいになってしまうんじゃないかと危惧されていた。 でも、ちょうどそのころにgoogleが突如彗星の如く現れてそんな心配は払拭された。もっともすごすぎて他の検索エンジンが対抗できないまま消えてしまい、グーグル村八分なんて言葉も出るくらいになってしまった。

googleは登場以来優秀な検索エンジンであり続けてきた。そしてこれからもそうであり続けるのか。わからないけど他に比肩するほどの検索エンジンがない以上もしgoogleが負けたらそれはウェブがゴミの山になることを意味してて、非常に残念なことになってしまうと思う。だから、googleには頑張ってほしい。

CentOS 6.8でVNC接続するとXが切断される。

自宅のファイルサーバーで先日yum updateして以来VNC経由で ログインすると不定期に画面が真っ黒になってログイン画面に戻ってしまう。 いろいろ調べたところ、バグのようだ。

0010934: Xvnc login session (via xinetd and xdmcp) kicks you out after a few minutes of working - CentOS Bug Tracker

Bug 1337067 – gdm xdmcp session dead

とりあえず直接サーバーにログインすればいいのでバグが修正されるのを待つとしよう。

Structorizer

NSチャートというものがある。プログラムのフローを箱の入れ子で表現したものである。フローチャートは複雑な処理になると流れが読みにくくなる、同じアルゴリズムでも書き方によって見た目が異なる図ができるという問題がある。 それに比べ、NSチャートはより実際のプログラムの構造に近い形で記述できるので同じような図にないりやすい。ただし、goto,breakのようなジャンプ命令の表現がうまくできない(と思う)。 NSチャートの欠点として処理の一部を修正しようとすると、どうしても全体的に書き直さなければならない点がある。手書きだと大変面倒でNSチャートがあまり使われなかった理由なのだろう。

NSチャートが記述できるフリーソフトがないかと探していたところ、Structorizerというルクセンブルグ生まれのソフトを見つけた。

f:id:Heat-Haze:20160802230312p:plain

ライセンスはGPLJavaで作られている。言語の設定は英語以外にフランス語、ドイツ語、中国語等に対応している。日本語は残念ながら対応していない様子。なので英語設定で使うがチャートに日本語を入力しても問題なく表示される。構文の初期設定がなぜかフランス語になっている。

f:id:Heat-Haze:20160802230313p:plain

なので設定を変更して英語に直した。

f:id:Heat-Haze:20160802230314p:plain

作成したNSチャートはPNG,EMF,SVG,PDFの形式で出力可能。また、CやJavaソースコードとして出力可能である。 例えば下のようなNSチャートをCのソースとして出力すると

f:id:Heat-Haze:20160802230315p:plain

次のようになる。

// function isLeapYear( int year ) 
// Generated by Structorizer 3.24-14 

#include <stdio.h>

// うるう年か判定する 
// TODO: Revise the return type and declare the parameters. 
int isLeapYear(int year)
{
    // TODO: declare your variables here: 
    
    // TODO: 
    // For any input using the 'scanf' function you need to fill the first argument. 
    // http://en.wikipedia.org/wiki/Scanf#Format_string_specifications 
    
    // TODO: 
    // For any output using the 'printf' function you need to fill the first argument: 
    // http://en.wikipedia.org/wiki/Printf#printf_format_placeholders 
    
    if (year % 100 == 0)
    {
        if (year % 400 == 0)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    else
    {
        if (year % 4 == 0)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
}

NSチャートの欠点である修正が面倒な点も編集ソフトがあれば気にならない。プログラムの設計をする際にNSチャートを使ってみようと思う。

PySide2

PySide2

いつの間にかPySideのQt5対応版としてPySide2というものが作られている様子。PySideはNokiaが作ったPython用のQt4ライブラリなんだけど、NokiaMicrosoft事業を売却したりしてPySideがQt5に対応することは期待薄。同様のライブラリにPyQtがあるけれどライセンスがGPLか商用ライセンスの二択でビジネスでは使い辛い(PySideはLGPL)。
まだまだ開発中のようだけれど頑張ってほしいところ。IssueリストではわかりずらいからPySide2ではなくてPySide5がいいんじゃね的な話が出ていたり。