中国インターネット事情
  • カテゴリ プログラム の最新配信
  • RSS
  • RDF
  • ATOM

ブラウザ作りました。
IEとかそんなやつと同じですが、ちょっと違います。

開発理由 ブラウザは使いにくい

無数のページから1000件まで絞り込むのは優秀なサーチエンジンのおかげで1秒足らず。しかしその後は、目的のページを発見するまで延々と「クリック、戻る」を繰り返し、20件も見ればもういいとなってしまうのです。

残りの980件にはもっと見たかったページがあったかも知れない。

 サーチエンジン研究

このような状況を改善すべく世界中の優秀な研究者達は、利用者が求めている最も適したページを表示しようと、主にランキング精度の向上を目指して研究を続けているわけですが、私から見れば方向が間違っているように見えます。もっと単純な方法でこれを解決し、SEOやらSEMを無効化します。

順位づけの意味

さらに、サーチエンジンのランキングによって売り上げが大きく変動する商用ページの場合、ランキング上位ページと下位ページの間に、どの程度、ページではなく、提供するサービスや品質の違いがあるのか?

ブラウザのネック

しかし、上記の様々な問題は、ブラウザに多数のページを素早く閲覧する手段がない……ユーザーは短期間に大量ページを閲覧できないといった制約条件がある場合に限り発生します。

Listbrowserであなたの制約条件を解除します。
WEBページを100ページ、1000ページを見るのが楽勝になります。ブログやツイッターのネタ探しにどうですか?
筆者は大体この自作ブラウザでネタ探ししとります。

 

無料でDLできます。
めもりーいっぱい。
CPU とにかく速いやつ。
HDD とにかく速いやつ。
ネット環境 とにかく速いやつ。
OS Windows7以上、推奨。VistaやXPでも動く。
マウスがあったほうがいい。

DL URLはこちら
https://chinese-homepage.com/mysoft/Listbrowser2012.zip


https://chinese-homepage.com/mysoft/setup.exe

【今回の変更部分】
Windows8 IE10に対応
GPUレンダリングに対応
高速JSエンジンに対応
タブの入れかえに対応

最大の変更は、ジャバスクリプトのオート切り替えを実装。
リスト下りの時は、JS無効。上りの時はJS有効。

ジャバスクリプトがページ表示を遅くしている主原因だし、セキュリティ上も問題がある。
そこで、下りで最初みるときはJSをOFFにして、上りで戻ってみるときにはJSをONにする機能を追加した。

これによって、セキュリティとスピードの二者を両立することができた。
以上。

サーバを変えたために、BlogからのTwitterの連動投稿ができなくなったのかと思ったら、違ったようである。
どうも10月ぐらいから、TwitterのAPIが変更になったのが原因のようである。

Apiの変更では様々な制限が出てきたようだが、ここのブログの場合はそんなに更新があるわけでなし大した影響はないと思われるが、連動投稿プログラムを修正する必要があるようだ。


■以下、修正方法

https://twitter.com/statuses/update.xml
このURLだと返り値が「sorry, that page does not exist」になってしまう。
どうやら、このURLは廃止になったようである

そこで、
http://api.twitter.com/1.1/statuses/update.json
このURLに変えたところ、投稿できるようになった。

プログラムはこんな感じで、
この部分を、
$req = $to->OAuthRequest("https://twitter.com/statuses/update.xml","POST",array("status"=>"$message"));

以下のように変更したら、再び連動投稿ができるようになった。
$req = $to->OAuthRequest("http://api.twitter.com/1.1/statuses/update.json","POST",array("status"=>"$message"));

さて、これでいいはずである。
という事で、ちゃんとTwitterにも連動して投稿できるか? この記事を投稿してみます。

オープンソース版のCRMがあると言うので、試しにコアサーバに入れてみた。
いつもの如く、safemodeに引っかかるので、phpをcgiで動作させたりする必要がある。

まず、SugerCRMのトップディレクトリにある.htaccessに以下の記述を追加する。
AddHandler application/x-httpd-phpcgi .php
php_value session.save_path "/virtual/ユーザー名/public_html/ドメイン名/tmp/"

次に、トップディレクトリにtmpディレクトリを作る。

そして、インストール画面に従って
cacheやら幾つかのフォルダのパーミッションを変更する。

MYSQLにDBを作っておく。

インストール画面にしたがってその設定を入力する。

尚、最新版の6x系はPHPのzip関数が使えないと動かないらしく、インストールすることはできなかった。
5xならいけるようだ。

中国語版もあるので、中国でも使えるかもしれない。研究中。

大量にある中国の電話番号から、粗い住所をつかみたいと思ったので、このアプリを作りました。

電話番号入れてボタンを押すだけで、省や市がわかります。 但しズレていることあり。

あまり使い道も無さそうですが。一応公開。

Windows用 フリーソフト

ダウンロードはこちらから。
https://chinese-homepage.com/mysoft/china_tel.zip

 

XOOPS 日本で一番普及しているCMS?
しかし、ワードプレスの方が圧倒的に進んでいると思う今日この頃です。

さて、ブログの関連記事を表示したいなと思ってもそんな機能は付いていない。ワードプレスなら簡単ですが。
無いなら自分でつくるということで、適当に作ったのがこれです。

d3blog_main_details.html あたりに貼りつけると、関連記事が表示されます。
ツッコミどころは色々とありますが、直すのも面倒なので、改善したらそのソースを是非公開して下さい。

ソースコード
--------------------------------------------------------------------------------------------
<{php}>

require '../../mainfile.php' ;
if( ! defined( 'XOOPS_TRUST_PATH' ) ) die( 'set XOOPS_TRUST_PATH into mainfile.php' ) ;

$word = $this->get_template_vars('xoops_pagetitle');
$word = mb_ereg_replace(' ', ",", $word);
$word = mb_ereg_replace('\!', ",", $word);
$word = mb_ereg_replace('\?', ",", $word);
$word = mb_ereg_replace('\(', ",", $word);
$word = mb_ereg_replace('「', ",", $word);
$word = mb_ereg_replace('\[', ",", $word);

$word = mb_ereg_replace('する', ",", $word);
$word = mb_ereg_replace('の', ",", $word);
$word = mb_ereg_replace('て', ",", $word);
$word = mb_ereg_replace('で', ",", $word);
$word = mb_ereg_replace('に', ",", $word);
$word = mb_ereg_replace('を', ",", $word);
$word = mb_ereg_replace('は', ",", $word);
$word = mb_ereg_replace('く', ",", $word);
$word = mb_ereg_replace('し', ",", $word);

$word = mb_ereg_replace('「', ",", $word);
$word = mb_ereg_replace('」', ",", $word);

$word = mb_ereg_replace('、',",", $word);
$word = mb_ereg_replace('。',",", $word);
$word = mb_ereg_replace('vs',",", $word);
$word = mb_ereg_replace(',,',",", $word);

$data = array("","","","");
$data = split(",",$word);

$word = $data[0];
if ($word ==""){$word = $data[1];}
$wi = mb_strlen($word);
if ($wi < 3){$word = $data[1];};
$wi = mb_strlen($word);
if ($wi < 3){$word = $data[2];};

global_search_base($word,7,0,"370");

function global_search_base($keyword , $limit , $offset, $nowbid){
 $sql = "SELECT bid,title,published FROM b47c5c_d3blog_entry WHERE ";
 $whr = "CONCAT(title,' ',excerpt) LIKE '%$keyword%' " ;
 $sql = "$sql $whr ORDER BY published DESC";
 $db =& Database::getInstance();
 $result = $db->query( $sql , $limit , $offset ) ;
 while( $myrow = $db->fetchArray($result) ) {
            $thisbid = $myrow["bid"];
            $nowbid = $_GET["bid"];

            if ($nowbid != $thisbid){
                $published = date("m/d",$myrow["published"]);
                echo '<li><a href = "details.php?bid='.$myrow["bid"].'">'.$myrow["title"].'</a>'.'('.$published.')'.'</li>';
            }
 }
}
<{/php}>
--------------------------------------------------------------------------------------------

 

rssを抜粋配信するために。

xoops_trust_path/modules/d3blog/mainのrss.phpと言うファイル。
その71行目あたりを赤字に変更してみました。

    foreach($entries as $entry) {
        $item['title'] = xoops_convert_encoding($entry->getVar('title'));
        $item['link'] = sprintf('%s/modules/%s/details.php?bid=%d', XOOPS_URL, $mydirname4show, $entry->bid());
        $item['guid'] = sprintf('%s/modules/%s/details.php?bid=%d', XOOPS_URL, $mydirname4show, $entry->bid());
        $item['pubdate'] = d3blog_rfc2822_date($entry->published());
 
$naiyou = xoops_convert_encoding($entry->pingExcerpt(0));
 if (mb_strlen($naiyou) > 249){
         $item['description'] = mb_substr($naiyou,0,250)."…";
 }else{
  $item['description'] = $naiyou;
 }

        $items[] = $item;
    }

    $tpl->assign('feed', $feed);
    $tpl->assign('entries', $items);

}
 

ほかのrdf.phpとかatom.phpとかも同じ感じで直すと良い。

クラウドとはなにか?
別に昔からあるもので、データをどこかに保存したりデータをどこかで処理してくれる外注サービスと言う事になる。

特に保存タイプのクラウドサービスの場合は、自分のデータがどのサーバに保存されているかとか、或いはどの程度バックアップされているのだとかがわからない。
利用者側としては、ただクラウドという言葉の前に漠然と、まあどこかにあるだろうとかそんな感覚に陥って妙に納得をしているだけなのかもしれない。
クラウドの説明だと、雲の向こうは気にする必要はないとか書かれている物もある。

ただの外注サービスにクラウドと名が付けば気にする必要がないなんて。。

別に、雲の向こうに神様が居るわけでもなし、普通の人間が頑張っているだけなのだから、普通に気にする必要もあるのではないだろうか。
いつブラックスワン(予想出来ない事象)がクラウドの上に降ってくるのかもわからないのに、重要なデータを良くわからないそのクラウドだけに預けて大丈夫?
メールもデータもそこにしか無かったら、何かあったらお手上げだ。

クラウドをウリにしたファーストサーバというホスティング会社で現在大規模な障害が発生し、顧客のデータが消失しているのだという。
恐ろしい話である。
店舗系のサイト等をこのサーバに置いている会社などは、サイトそのものが消えてしまって機会損失からなにから最悪な状態だろう。

やはり、クラウドを利用しているとしても、雲の向こう側に注意を払い監視する必要があるのではないだろうか。
そして、やっぱり、自らバックアップを欠かさないことも重要なのだろう。
クラウドを使って居ても、メールは一応ローカルのメールクライアントを使って落としておくだとか。

クラウドじゃなくて、クリアーにして仕組みを見えるようにしてもらわないと、いろいろと問題があるのでは。

検索エンジン等でキーワードを入力すると、候補が表示される機能がある。
サジェスト機能というものだが、自作ソフトにも付けたら良さそうなのでやってみた。

このURLにキーワードを投げると、候補がXMLで返ってくる。
http://www.google.com/complete/search?output=toolbar&q=china
あとはこれを取り込んで表示すればOKである。それだけである。

なお、ImmGetCompositionString APIで変換途中の文字列を取得できるのでそれを利用した。

https://chinese-homepage.com/mysoft/Listbrowser2011_Puls.exe
作ったものはここでDLできる。

それにしても、明日から春節だ。。

製作環境Windows7

久々にEC-CUBEをいじってみると、いつの間にか大幅に代わっていた。
以前、書いたこの記事も、
https://chinese-homepage.com/modules/d3blog/details.php?bid=319&cid=16
新しいバージョンでは動かなかった。
2.11.X系用のペイパルモジュールの中身を見てみるとずいぶんと変更されているようだ。これでは動くはずはない。
そこで、また改造してみる。
ちなみにこれは、以前の記事と同じくペイパルサイトに遷移した時にカード情報以外の部分を予め自動入力してしまおうというハックである。

・EC-CUBE2.11.4
・ペイパル ウェブペイメント プラス モジュール
これの説明には月額3000円とか要審査とか書いてあるが、以前のような無料タイプのサービスもこのモジュールで利用できる。
http://store.ec-cube.net/products/detail.php?product_id=179

尚、この改造で適応できているのはPCのみである、携帯などは、別の改造が必要になる。

変更1
data/downloads/module/mdl_paypal/paypal_link.tpl 49行目くらいに以下を追加

    <input type="hidden" name="<!--{$key}-->" value="<!--{$arrForm[$key].value|h}-->" />
    <!--{assign var=key value="notify_url"}-->
    <input type="hidden" name="<!--{$key}-->" value="<!--{$arrForm[$key].value|h}-->" />

    //追加部分ここから
    <!--{assign var=key value="billing_address1"}-->
    <input type="hidden" name="<!--{$key}-->" value="<!--{$arrForm[$key].value|h}-->" />
    <!--{assign var=key value="billing_city"}-->
    <input type="hidden" name="<!--{$key}-->" value="<!--{$arrForm[$key].value|h}-->" />
    <!--{assign var=key value="billing_country"}-->
    <input type="hidden" name="<!--{$key}-->" value="<!--{$arrForm[$key].value|h}-->" />
    <!--{assign var=key value="billing_state"}-->
    <input type="hidden" name="<!--{$key}-->" value="<!--{$arrForm[$key].value|h}-->" />
    <!--{assign var=key value="billing_zip"}-->
    <input type="hidden" name="<!--{$key}-->" value="<!--{$arrForm[$key].value|h}-->" />
    <!--{assign var=key value="billing_first_name"}-->
    <input type="hidden" name="<!--{$key}-->" value="<!--{$arrForm[$key].value|h}-->" />
    <!--{assign var=key value="billing_last_name"}-->
    <input type="hidden" name="<!--{$key}-->" value="<!--{$arrForm[$key].value|h}-->" />
    <!--{assign var=key value="night_phone_b"}-->
    <input type="hidden" name="<!--{$key}-->" value="<!--{$arrForm[$key].value|h}-->" />
    <!--{assign var=key value="email"}-->
    <input type="hidden" name="<!--{$key}-->" value="<!--{$arrForm[$key].value|h}-->" />
    //追加部分終わり

    <input type="hidden" name="bn" value="EC-CUBE_cart_WPS_JP" />
    <input type="hidden" name="locale.x" value="ja_JP" />

変更2
 data/downloads/module/mdl_paypal/LC_Page_Mdl_Paypal_Helper_Link.php 112行くらいに以下を追加


            $objFormParam->addParam("undefined_quantity", "undefined_quantity", 1, "KVa", array("EXIST_CHECK", "MAX_LENGTH_CHECK"), PAYPAL_UNDEFINED_QUANTITY);

            //追加部分ここから
            $objFormParam->addParam("billing_city", "billing_city", MTEXT_LEN, "KVa", array("EXIST_CHECK"), $arrOrder['order_addr01']);
            $objFormParam->addParam("billing_address1", "billing_address1", MTEXT_LEN, "KVa", array("EXIST_CHECK"), $arrOrder['order_addr02']);
            $objFormParam->addParam("billing_country", "billing_country", MTEXT_LEN, "KVa", array("EXIST_CHECK"), PAYPAL_COUNTRY_CODE);
            $objFormParam->addParam("billing_state", "billing_state", MTEXT_LEN, "KVa", array("EXIST_CHECK"), $this->arrPref[$arrOrder['order_pref']]);
            $objFormParam->addParam("billing_zip", "billing_zip", MTEXT_LEN, "KVa", array("EXIST_CHECK"), $arrOrder['order_zip01'] ."-". $arrOrder['order_zip02']);
            $objFormParam->addParam("billing_first_name", "billing_first_name", MTEXT_LEN, "KVa", array("EXIST_CHECK"), $arrOrder['order_name02']);
            $objFormParam->addParam("billing_last_name", "billing_last_name", MTEXT_LEN, "KVa", array("EXIST_CHECK"), $arrOrder['order_name01']);
            $objFormParam->addParam("night_phone_b", "night_phone_b", STEXT_LEN, "KVa",array("MAX_LENGTH_CHECK"),$arrOrder["order_tel01"]."-".$arrOrder["order_tel02"]."-".$arrOrder["order_tel03"]);
            $objFormParam->addParam("email", "email", STEXT_LEN, "KVa", array("MAX_LENGTH_CHECK"), $arrOrder["order_email"]);
            //追加部分おわり

        } else {

 


これで、ページ遷移時にフォームへ自動入力されているはずです。
なお、不具合については特にチェックしていませんので、要テスト。
ハックの適用は自己責任でお願いします。

WEBサイトをみていると、日本の漢字からピンインに変換できるサイトがあるのがわかった。
これが結構便利そうなので、このサイトにもこの機能をつけることにした。

どこかに変換テーブルが落ちていないかと探したら、
http://www.williamlong.info/archives/1027.html

こんなのがあったので、こいつを利用していろいろとやってみる。
class.Chinese.phpというのを利用すると簡単にピンインに変換できた。


コードはこんな感じ。
<?php
require("class.Chinese.php");
$codeTablesDir = dirname(__FILE__)."/config/";

$s = "电话";
$chs = new Chinese("GB2312","PinYin",$s,$codeTablesDir);
$s = $chs->ConvertIT(); 
echo $s;

?>

但し、このままでは完全には日本漢字に対応していない。「黒とか、対とか」。
そこで、日本漢字と中国漢字の対応表を連想配列にでも突っ込んで変換すればいい。

対応表
http://www.kishugiken.co.jp/cn/code10d.html

こんな感じの連想配列を作って逐一変換する。
$jpcn =array("対"=>"对","黒"=>"黑"); etc..

これで一応、日本漢字、繁体字、簡体字、ピンインの変換出来たということで。 

その他のニュース
ブログランキング
にほんブログ村 IT技術ブログへ
 
ニュースカテゴリ
中国ネット基本情報
人気の記事
ニュースのトップへ
中国語サイト制作
ランキング参加中

にほんブログ村 IT技術ブログ Webサイト構築へ

プロフィール
後藤(作者)