1. トップページ
  2. コンピューター・Web関連

Puppy Linux(おぺらっぴぃ)の高速化設定

2015年03月10日

久々にPuppy Linux(おぺらっぴぃ)を再インストールしたので高速化するための設定をメモしておく。

仮想コンソールを無効

/etc/inittabを以下のように変更。

::sysinit:/etc/rc.d/rc.sysinit
tty1::respawn:/sbin/getty -n -l /bin/autologinroot 38400 tty1
#tty2::respawn:/sbin/getty 38400 tty2
#tty3::respawn:/sbin/getty 38400 tty3
::ctrlaltdel:/sbin/reboot

Grub4Dosのブートメニューを無効

/menu.lstを以下のように変更

timeout 0
default 0
hiddenmenu

シャットダウン時に電源が自動的に切れるようにする

/menu.lstを以下のように変更

kernel /boot/vmlinuz root=/dev/sda2 ro acpi=force

Webブラウザーの優先度をあげる

/usr/local/bin/defaultbrowserを以下のように変更

#!/bin/sh
exec nice -n -20 opera "$@"

シャットダウン時にCDを取り出さない

メニュー>セットアップ>個人保存ファイルの設定で「シャットダウン時にCDを取り出す」のチェックを外す

Flash Playerをインストールする

メニュー>インターネット>GetFlashからFlash Player 10.3.183.90をダウンロードする。

Xorgウィザードで24bitカラー以上を選択する。

デスクトップの背景画像を無効

/root/Choices/ROX-Filer/PuppyPinを以下のように変更

<!--<backdrop style="Scaled">/usr/share/backgrounds/default-431JP.jpg</backdrop>-->

おぺらっぴぃは素晴らしい

2014年02月19日

Puppy Linux 431JP2012に最新版Operaを乗せたおぺらっぴぃは素晴らしい。Linuxディストリビューションは星の数ほど存在するのだが、128MBのRAMでもLinuxディストリビューションは数えるほど少ない。128MBのRAMで動作する様々なLinuxディストリビューションを試したのだが、どれも一長一短で納得いくものには出会えなかった。

一番最初に試したのがPuppy Linux Precise-550JPで、起動するにはするのだがWebブラウザーの動作がどうにもゆっくりしている。Webブラウザーの中では軽量で高速と言われるMidoriを使用してもまだ遅く感じる。

次に試したのがDamn small Linux 4.4 日本語版(通称DSL)なのだが、これが非常に早い上にメモリー消費量が恐ろしいほど少ない。Webブラウジングを行う上でもMozilla Firefox 2.0がデフォルトで入っており一応問題ないのだが、気になるのは2008年11月18日にリリースされた 4.4.10 以降5年弱バージョンアップされていないことだ。Linuxカーネルもサポートが終了した2.4系のためセキュリティー上の不安は大いにある。2012年09月26日に久々の更新があり、dsl-4.11.rc2がリリースされたのだが、こちらはまだ日本語化されていない。

それとWebブラウザーMozilla Firefox 2.0ということもあり、最新のCSSなどに対応できず、レイアウトが崩れるWebページが多くあった。これに関してはDSLにOperaかMidoriの最新版をインストールしようとしたのだが、これがまた一苦労なのだ。APTから最新版をインストールすることはできないため、ソースコードからインストールすることになるのだが、DSLにはGCCやglibcがインストールされていないためconfigureが通らない。故にまずAPTでこれらをインストールする必要がある。その後Webブラウザーに必要な各種ライブラリーをインストールする必要があるのだが、これがなかなか見つからない。結局面倒になり途中でやめてしまった。

次に試したのがTiny Core Linuxの日本語版。使用する前からメモリーやディスク容量が少ないPCでも動作すると言われており、またDSLの開発者が喧嘩別れしてこのTiny Core Linuxを作成したこともあり期待は高かったのだが、実際に起動してみると遅い。Linuxカーネル 3系を使用している影響かどうかは分からないが起動後やたらメモリーを消費する。それと有志が日本語版を提供しているのだが、日本語化がどうにも不十分なように感じる。

次に試したのがDebian GNU/Linux 7.0なのだが動作が遅いなんてものではない。Webブラウザーの起動にも時間がかかる上に、起動してもまともに使える状況ではない。最少構成でインストールしその後自分流にセットアップしようともしたのだが、Xが起動しない。いろいろ試したのだが自分のスキルではどうにも事態は好転しなかった。

どのLinuxディストリビューションも欠点ばかりが目につきまともに使用できる状況ではなかったが、おぺらっぴぃによって見事に改善した。おぺらっぴぃにはLinux版のOperaの最新バージョンであるOpera 12.16がデフォルトでインストールされている。DSLなどの古いLinuxディストリビューションでは自前で最新ブラウザーをインストールしなければならなかったのだが、おぺらっぴぃではその負担はない。

第二の評価点としてはPuppy-431JP2012に比べて、ディストリビューションのサイズが小さくなっている。フォーラムによると文書作成ソフトであるabiwordや表計算ソフトであるGnumericなどが削られているが、これ等は後からでも導入できるので問題ないと思われる。最新のブラウザーのみが導入されていればいい自分にとってありがたい。

第三の評価点としては動作が非常に早い。起動後freeコマンドでメモリー使用量を確認してみても60MBぐらいしか使用していない。Operaも問題なく動作する。

おぺらっぴぃはまだ正式なバージョンはリリースされていないが、現状の最新版であるrev.021でも問題なく動作する。今後正式版のリリースに期待したい。

CakePHP の Upgrade shell

2013年04月05日

今まで CakePHP 1.3.15 を使用していたのだが、ARC2 を利用することになったので PHP のバージョンが必然的に 5.3 以降となった。

折角なので CakePHP 2 にアップグレードでもしようかと思ってたのだが、これが面倒極まりない。

CakePHP 2 に付属している Upgrade shell を利用すれば簡単にアップグレードが可能だと思っていたのだが、考えが甘かった。

フォルダーのリネーム一つとっても Controller とすべきなのに controllers のままだったり layouts や elements もそのままになっている。

実際にアクセスしても以下のようなエラーが出てしまう。

Notice: Undefined index: Error in C:\Users\admin\Downloads\xampp\htdocs\cakephp2\lib\Cake\Core\Configure.php on line 99

Notice: Undefined index: Exception in C:\Users\admin\Downloads\xampp\htdocs\cakephp2\lib\Cake\Core\Configure.php on line 100

Fatal error: Class name must be a valid object or a string in C:\Users\admin\Downloads\xampp\htdocs\cakephp2\lib\Cake\Error\ErrorHandler.php on line 122

一つ一つファイルを CakePHP 2 用に書き換えるのも面倒なのでやめた。CakePHP 3 の開発も行われているようなので CakePHP 1.3.15 で様子見でいいかな。

タグ: PHP

匿名通信のアルゴリズム

2013年03月31日

Tor や I2P で用いられている匿名通信のアルゴリズムが紹介されている。よくまとめられていて分かり易い。

PHP 5.3 のサポートが終了

2013年03月27日

マイナビニュースやスラッシュドット・ジャパンに PHP 5.3 のサポートが終了する記事が掲載されていた。

記事中には5.3がもっとも高いシェアを占めたと書かれているが、私の知る限り無料のレンタルサーバなどでは未だに PHP 5.2 が主流のように感じる。場合によっては PHP 5.1 や PHP 5.0 でサービスを提供している所もある。

全ての人が最新バージョンという恵まれた環境の中でウェブサイトを作ることが出来るわけではないのだ。

ICRA(Internet Content Rating Association) が終了していた

2013年03月27日

久々にインターネットにおけるレイティングを調べている中で分かったことなのだが ICRA によるラべリングは終了したようだ。

Upon the recent decision of FOSI's Board of Directors, the ICRA labeling engine has been discontinued. While all current labels will continue to work with Internet content filters, the ICRA label generator, ICRA tools and Webmaster support will no longer be available.

ICRA は HTTP Response Header で使用する PICS-Label の値やサイトのレイティングを記述した RDF/XML を生成してくれるジェネレータなどを提供していただけに少し残念だ。

ちなみに ICRA のジェネレータによって生成された RDF/XML は以下のようなものである。

<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
    xmlns:dcterms="http://purl.org/dc/terms/"
    xmlns:label="http://www.w3.org/2004/12/q/contentlabel#"
    xmlns:icra="http://www.icra.org/rdfs/vocabularyv03#"
>
    <rdf:Description rdf:about="">
        <dcterms:creator rdf:resource="http://www.icra.org" />
        <dcterms:created>2011-04-30</dcterms:created>
        <dcterms:modified>2011-04-30</dcterms:modified>
        <label:authorityFor>http://www.icra.org/rdfs/vocabularyv03#</label:authorityFor>
    </rdf:Description>

    <label:Ruleset>
        <label:hasHostRestrictions>
            <label:Hosts>
                <label:hostRestriction>japan.nusutto.jp</label:hostRestriction>
            </label:Hosts>
        </label:hasHostRestrictions>
        <label:hasDefaultLabel rdf:resource="#label_1" />
    </label:Ruleset>

    <label:ContentLabel rdf:ID="label_1">
        <rdfs:comment>Label for all/most of website</rdfs:comment>
        <icra:nz>1</icra:nz>
        <icra:sz>1</icra:sz>
        <icra:vz>1</icra:vz>
        <icra:lz>1</icra:lz>
        <icra:oz>1</icra:oz>
        <icra:cz>1</icra:cz>
        <rdfs:label>No nudity; No sexual material; No violence; No potentially offensive language; No potentially harmful activities; No user-generated content; </rdfs:label>
    </label:ContentLabel>
</rdf:RDF>

タグ: RDF

HTML の中に Turtle を埋め込む方法

2013年03月27日

Turtle の仕様は Turtle - Terse RDF Triple Language にて公開されていたようだが、正式な W3C 勧告候補案が http://www.w3.org/TR/2013/CR-turtle-20130219/ にて公開されている。

ところでこの勧告候補案の A Embedding Turtle in HTML documents 中でThis section is non-normative.と前置きしながらも Turtle を HTML5 の中に埋め込む方法を提案している。

<script type="text/turtle">
@prefix dc: <http://purl.org/dc/terms/> .
@prefix frbr: <http://purl.org/vocab/frbr/core#> .

<http://books.example.com/works/45U8QJGZSQKDH8N> a frbr:Work ;
     dc:creator "Wil Wheaton"@en ;
     dc:title "Just a Geek"@en ;
     frbr:realization <http://books.example.com/products/9780596007683.BOOK>,
         <http://books.example.com/products/9780596802189.EBOOK> .

<http://books.example.com/products/9780596007683.BOOK> a frbr:Expression ;
     dc:type <http://books.example.com/product-types/BOOK> .

<http://books.example.com/products/9780596802189.EBOOK> a frbr:Expression ;
     dc:type <http://books.example.com/product-types/EBOOK> .
</script>

以前 HTML の中に RDF/XML を埋め込む方法として HTML のコメントを使用してその中に RDF/XML を記述するという方法があったがそれに近いものを感じる。悪くはないと思うのだが、RDFa があるのだからここまでしなくてもいいような気が…

タグ: RDF

ある時点を RDF で表現する

2013年03月27日

Webページのある時点を RDF で表現するにはどうしたらよいかを考えてみる。

実はある興味深いブログをブックマークしていたのだが、久々にアクセスしてみると胡散臭い情報商材を紹介したページとなっていた。恐らくドメインの売買が行われたのであろう。

仮にそのページの URL が http://www.example.com/blog/ であったとすると、ある時点で http://www.example.com/blog/ はブログであり、ある時点では情報商材を紹介したページということになる。

例えば http://www.example.com/blog/ がブログだった時の RDF は以下のようなものだとする。

@prefix dc: <http://purl.org/dc/elements/1.1/> .

<http://www.example.com/blog/>
    dc:title "アリスのブログ"@ja;
    dc:description  "アリスの日々を綴ったブログです。"@ja;
    dc:creator "アリス"@ja; .

この RDF は http://www.example.com/blog/ がブログだった時点では真だが、情報商材の時点では偽となる。こういった場合ある時点を RDF で指定する方法はあるのだろうか。

自分が思いつく方法としてはスナップショットのようなクラスを利用する。

@prefix ex: <http://www.example.com/vocabulary/> .
@prefix dc: <http://purl.org/dc/elements/1.1/> .

[]
    a ex:Snapshot;
    dc:title "アリスのブログ"@ja;
    dc:description  "アリスの日々を綴ったブログです。"@ja;
    dc:creator "アリス"@ja;
    ex:isSnapshotOf <http://www.example.com/blog/>;
    ex:date "2011-09-06"; .

空白ノードに ex:Snapshot の性質を与えて ex:isSnapshotOf で URL を指定し ex:date で日時を指定する。

この方法ならば RDF でWebページのある時点を切り取ることが出来る。

参考までにここで使用した語彙を Turtle で定義しておく。

@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix ex: <http://www.example.com/vocabulary/> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .

ex:Snapshot
    a owl:Class;
    rdfs:subClassOf
        [   a owl:Restriction;
            owl:onProperty ex:isSnapshotOf;
            owl:cardinality 1;
        ],
        [   a owl:Restriction;
            owl:onProperty ex:isSnapshotOf;
            owl:allValuesFrom owl:Thing;
        ],
        [   a owl:Restriction;
            owl:onProperty ex:date;
            owl:cardinality 1;
        ],
        [   a owl:Restriction;
            owl:onProperty ex:date;
            owl:allValuesFrom xsd:date;
        ];
    rdfs:label "Snapshot"@en;
    rdfs:comment "ある時点を切り取ったスナップショットである。"@ja .

ex:isSnapshotOf
    a owl:ObjectProperty;
    a owl:FunctionalProperty;
    rdfs:subPropertyOf dcterms:isPartOf;
    rdfs:domain ex:Snapshot;
    rdfs:range owl:Thing;
    rdfs:label "is Snapshot of"@en;
    rdfs:comment "主語は目的語のスナップショットである。"@ja .

ex:date;
    a owl:DatatypeProperty;
    a owl:FunctionalProperty;
    rdfs:subPropertyOf dcterms:date;
    rdfs:domain ex:Snapshot;
    rdfs:range xsd:date;
    rdfs:label "date"@en;
    rdfs:comment "スナップショットの日時"@ja .

ヨコハマ・アート・LOD

2013年03月27日

公益財団法人横浜市芸術文化振興財団ヨコハマ・アート・LODというプロジェクトの中で RDF でデータを公開しているのだが、そこで定義されている語彙が「なんだかなぁ」と思わざるえない。

YAN event Vocabulary の一部を引用する。

<rdf:Description rdf:about="http://fp.yafjp.org/terms/event#Event">
    <rdfs:label xml:lang="ja">イベント</rdfs:label>
    <rdfs:comment xml:lang="ja">イベントを表す</rdfs:comment>
    <rdfs:isDefinedBy>http://fp.yafjp.org/terms/event/</rdfs:isDefinedBy>
    <rdf:type>http://www.w3.org/2000/01/rdf-schema#Class</rdf:type>
</rdf:Description>

@rdf:reource は何処へ行ってしまわれたのでしょうね。

パンくずリストを RDFa で表現する

2013年03月26日

リッチスニペットでのパンくずリストにおける問題で Google のパンくずリストでの RDFa の記述は問題があるのではないかと指摘したが、ではどのように記述すればよいか代替案を考えてみる。

最初に記述方法を考えるうえで以下のような条件を設ける。

  • RDF として問題ないようにする
  • 簡単に導入できる
  • コードが汚くならないようにする

この条件からするとパンくずリストを RDFa で階層的に表現するのは無理だと言える。となると他に考えられる方法としては RDF Collection か rdf:Seq を利用する方法が考えられる。

まず以下のようなパンくずリストのコードがある。

<div class="breadcrumb">
    <a href="http://www.example.com/dresses">洋服</a> › 
    <a href="http://www.example.com/dresses/real">ドレス</a> › 
    <a href="http://www.example.com/dresses/real/green">緑のドレス</a>
</div>

RDF Collection を使用した記述

このコードを RDF Collection を使用して表現するとおそらく以下のようになる。

<div class="breadcrumb" prefix="ex: http://www.example.com/vocabulary/" about="" rel="ex:breadcrumbList" inlist="">
    <a typeof="ex:Breadcrumb" href="http://www.example.com/dresses" rel="ex:url" property="ex:title">洋服</a> › 
    <a typeof="ex:Breadcrumb" href="http://www.example.com/dresses/real" rel="ex:url" property="ex:title">ドレス</a> › 
    <a typeof="ex:Breadcrumb" href="http://www.example.com/dresses/real/green" rel="ex:url" property="ex:title">緑のドレス</a>
</div>

このコードを Turtle に変換すると以下のようになる。

@prefix ex: <http://www.example.com/vocabulary/> .

<>
    ex:breadcrumbList (
        [   a ex:Breadcrumb;
            ex:url <http://www.example.com/dresses>;
            ex:title "洋服";
        ]
        [   a ex:Breadcrumb;
            ex:url <http://www.example.com/dresses/real>;
            ex:title "ドレス";
        ]
        [   a ex:Breadcrumb;
            ex:url <http://www.example.com/dresses/real/green>;
            ex:title "緑のドレス";
        ]
    ); .

RDFa 1.1 で追加された @inlist のおかけで大分簡略に記述できる。ただ RDF Collection は閉じたリストを表現するときに使われるものであるので、パンくずリストを表現するのに適しているかは正直微妙なところだと思う。

rdf:Seq を使用した記述

次に rdf:Seq を使用した記述の場合は以下のようになる。

<div class="breadcrumb" prefix="ex: http://www.example.com/vocabulary/" typeof="ex:BreadcrumbList" rel="rdf:li">
    <a typeof="ex:Breadcrumb" href="http://www.example.com/dresses" rel="ex:url" property="ex:title">洋服</a> › 
    <a typeof="ex:Breadcrumb" href="http://www.example.com/dresses/real" rel="ex:url" property="ex:title">ドレス</a> › 
    <a typeof="ex:Breadcrumb" href="http://www.example.com/dresses/real/green" rel="ex:url" property="ex:title">緑のドレス</a>
</div>

このコードを Turtle に変換すると以下のようになる。

@prefix ex: <http://www.example.com/vocabulary/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .

[]  a ex:BreadcrumbList;
    rdf:li
        [   a ex:Breadcrumb;
            ex:url <http://www.example.com/dresses>;
            ex:title "洋服";
        ],
        [   a ex:Breadcrumb;
            ex:url <http://www.example.com/dresses/real>;
            ex:title "ドレス";
        ],
        [   a ex:Breadcrumb;
            ex:url <http://www.example.com/dresses/real/green>;
            ex:title "緑のドレス";
        ]; .

この方法ならば RDF 観点からみても全ての条件を満たしていると思う。XHTML の観点からしても無駄なspan要素などもなく美しい。rdf:Seq が記述されていないと思われるかもしれないが ex:BreadcrumbList のサブプロパティに rdf:Seq を指定しておけば問題はないであろう。個人的にはやはり RDF Collection よりは rdf:Seq を使用した記述方法のほうが妥当に思える。

語彙

参考までにここで使用した語彙を Turtle で定義しておく。

@prefix ex: <http://www.example.com/vocabulary/> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix v: <http://rdf.data-vocabulary.org/#> .

ex:BreadcrumbList
    a owl:Class;
    rdfs:subClassOf rdf:Seq;
    rdfs:label "Breadcrumb List"@en;
    rdfs:comment "パンくずリストを格納しておくクラス。"@ja .

ex:Breadcrumb
    a owl:Class;
    rdfs:subClassOf
        v:Breadcrumb,
        [   a owl:Restriction;
            owl:onProperty ex:url;
            owl:cardinality 1;
        ],
        [   a owl:Restriction;
            owl:onProperty ex:url;
            owl:allValuesFrom _:OnlineDocument;
        ],
        [   a owl:Restriction;
            owl:onProperty ex:title;
            owl:cardinality 1;
        ],
        [   a owl:Restriction;
            owl:onProperty ex:title;
            owl:allValuesFrom rdf:PlainLiteral;
        ];
    rdfs:label "Breadcrumb"@en;
    rdfs:comment "一つ一つのパンくず。"@ja; .

ex:breadcrumbList
    a owl:ObjectProperty;
    rdfs:domain _:OnlineDocument;
    rdfs:label "breadcrumb list"@en;
    rdfs:comment "パンくずリスト用の RDF Collection を指定する"@ja; .

ex:url
    a owl:ObjectProperty;
    a owl:FunctionalProperty;
    rdfs:subPropertyOf v:url;
    rdfs:domain ex:Breadcrumb;
    rdfs:range _:OnlineDocument;
    rdfs:label "url"@en;
    rdfs:comment "パンくずの URL を指定する。"@ja .

ex:title
    a owl:DatatypeProperty;
    a owl:FunctionalProperty;
    rdfs:subPropertyOf v:title;
    rdfs:domain ex:Breadcrumb;
    rdfs:range rdf:PlainLiteral;
    rdfs:label "title"@en;
    rdfs:comment "パンくずのタイトルを指定する。"@ja .

_:OnlineDocument
    a owl:Class;
    owl:intersectionOf (<http://xmlns.com/foaf/0.1/Document> <http://www.w3.org/2006/gen/ont#InformationResource>);
    rdfs:comment "オンライン上に存在するドキュメント。"@ja .

タグ: RDF