2011年2月28日

Access Counter

今回は記事のアクセスランキングを設置します。

もちろん自力で作ることはできませんので、ホームページメーカーさんのAccess Counterを使わせていただきます。

まずは必要なプラグインをダウンロードし、mtのpluginsフォルダにアップロードします。

で、プラグインの設定を行い、再構築することで終了です。

まだまだアクセスが全然ありませんので、もちろん全件0のまんまです。

このままではランキングになりませんので、適当な記事をリロードしまくると...、無事アクセスカウントが動きました!!

続いてサイドメニューにランキングを表示させます。

新しいウィジェットを作成し、以下のコードを貼り付けました。

<mt:If tag="BlogEntryCount">
<div class="sidetitle" id="st10name">Access Ranking</div>
<div class="side" id="st10list">
<div class="categories"> <ul class="tree">
<mt:Entries sort_by="accessed_count" sort_order="descend" limit="10"> <$mt:setvar name="rank" value="1" op="++"$> <li class="tree<mt:EntriesFooter>_end</mt:EntriesFooter>"><a href="<$mt:EntryPermalink$>"><$mt:var name="rank"$>:<$mt:EntryTitle$></a>&nbsp;[<$mt:AccessedCount$>回]</li> </mt:entries> </ul> </div> </div> <script type="text/javascript"> FoldNavigation('st10','off',false); </script> </mt:If>

私のブログに合うようにスタイルは変えてありますが、案外うまく表示できました。ただ、回数を表示させたかったので、タイトル末に表示させたのですが、どうも見た感じがくどいので、嫌なんですが、これ以上うまく表示させる技術は私にはありません...。

2011年2月27日

Lego 5893

基本チュートハンパな私ですが、これでも3児の父です。

で、今日は長男の誕生日。

誕生日プレゼントととして買い与えたのが、これです。

lego 5893

今日で7歳になった息子には、ややハードルが高かったのか、作り上げるのに3時間ほどかかりました。

で、完成したのがこちらです。

IMG_2790.JPG

細部まで結構良く出来ていて息子も私も大満足です。

ページ分割

それほど記事が多い訳ではないのですが、1ページに表示できる記事がげんていされてしまいますので、ページ分割を導入することにしました。

手順はいつもの小粋空間さん。その中にメインページのページ分割 for Movable Type 4がありましたので、そのまま利用させていただきました。

ブログが既にphp化されていますので、前半部分の手順は不要でした。

で、MTPaginateプラグインをダウンロードし、mtをインストールしたフォルダにそれぞれアップロードしました。

テンプレート、メインページのテンプレートを小粋空間さんの記事の通り修正し、再構築し、完成。

2011年2月26日

月別アーカイブの折りたたみ+ツリー化

カテゴリアーカイブについては、先日の作業で折りたたみ+ツリー化ができているので、今回は月別アーカイブの折りたたみ+ツリー化をしたいと思います。

ただ、折りたたんだり、ツリー化するほど記事がたくさんありませんので、私のブログにはあまり役に立ちません...。

それはさておき、早速、いつもの小粋空間さんのホームページを開き、該当の記事を探します。

すると、月別アーカイブリストの年別表示(ツリー化+折りたたみ)という記事がヒットしましたので、手順どおり作業を進めたいと思います。

もともと、menufolder.jsを使ったサイドメニューの折り畳みをしていますので、そのあたりの作業は割愛するのと、カテゴリアーカイブで折りたたみ用のスタイルシートを設定しているので、それを流用する為に、


<div class="categories">

を挿入します。

月別アーカイブリストの年別表示(ツリー化+折りたたみ)では、月のツリー化はできても、年のツリー化ができないので、後々年のツリー化をする為にも、カテゴリアーカイブのスタイルシートを流用することにします。

で結果的に作業は完了し、年単位の折りたたみ+ツリー化が完了しました。

で、ここからが難敵、年のツリー化です。

はっきりいってどこから手を突けたらいいのかすら分かりません。

考え方としては、月別アーカイブの最後の年だけtree_endを出力するようにすればいいはずなのですが...。

とりあえず、monthly Archivesの中で一番古い記事の年(end_year)を取得します。


<mt:ArchiveList archive_type="Monthly"><mt:ArchiveDateEnd format="%Y" setvar="end_year" /></mt:ArchiveList>

でいいのかな。

次に、 作業中の記事の年(current_year_s)を取得し、先ほどのend_yearと一致すればtree_endを出力します。

<mt:archiveDate format="%Y" setvar="current_year_s" />
<mt:if name="current_year_s" ne="$end_year"><li class="tree"><mt:else><li class="tree tree_end"></mt:if>

ということになります。

それ以外に、月の記事数の表示をカテゴリアーカイブでいうところの、subcategoriesとして処理する為に、若干の修正を加え、無事、完成しました!?

全体としてはこんな感じで仕上げてみました

<mt:ifArchiveTypeEnabled archive_type="Monthly">
<div class="sidetitle" id="st7name">Monthly Archives</div>
<div class="side" id="st7list">

<div class="categories">
<ul class="tree">
<mt:ArchiveList archive_type="Monthly"><mt:ArchiveDateEnd format="%Y" setvar="end_year" /></mt:ArchiveList>
<mt:ArchiveList archive_type="Monthly" sort_order="descend">
<mt:ArchiveListHeader>
<mt:archiveDate format="%Y" setvar="current_year_s" />
<mt:if name="current_year_s" ne="$end_year"><li class="tree"><mt:else><li class="tree tree_end"></mt:if>
<div class="subcategories" id="archive<mt:archiveDate format="%Y" />name"><span><mt:archiveDate format="%Y&#24180;" /></span></div>
<div id="archive<mt:archiveDate format="%Y" />list">
<ul class="tree">
<mt:archiveDate format="%Y&#24180;" setvar="year" />
<mt:setVarBlock name="monthly_fold_script">FoldNavigation('archive<mt:archiveDate format="%Y" />','off',false);</mt:setVarBlock>
</mt:ArchiveListHeader>
<mt:archiveDate format="%Y&#24180;" setvar="current_year" />
<mt:archiveDate format="%Y" setvar="current_year_s" />
<mt:if name="current_year" ne="$year">
<li class="tree tree_end"><mt:getVar name="month_title" /></li>
</ul>
</div>
</li>

<mt:if name="current_year_s" ne="$end_year"><li class="tree"><mt:else><li class="tree tree_end"></mt:if>
<div class="subcategories" id="archive<mt:archiveDate format="%Y" />name"><span><mt:getVar name="current_year" /></span></div>
<div id="archive<mt:archiveDate format="%Y" />list">
<ul class="tree">
<mt:setVarBlock name="monthly_fold_script" prepend="1">FoldNavigation('archive<mt:archiveDate format="%Y" />','off','false');</mt:setVarBlock>
<mt:else>
<mt:unless name="__first__">
<li class="tree"><mt:getVar name="month_title" /></li>
</mt:unless>
</mt:if>
<mt:getVar name="current_year" setvar="year" />
<mt:setVarBlock name="month_title"><a href="<mt:archiveLink />" title="<mt:archiveDate format="%Y&#24180;%m&#26376;">" ><mt:archiveTitle regex_replace="/\d+&#24180;/","" /> [<mt:archiveCount />]</a></mt:setVarBlock>
<mt:ArchiveListFooter>
<li class="tree tree_end"><mt:getVar name="month_title" /></li>
</ul>
</div>
</li>
</mt:ArchiveListFooter>
</mt:ArchiveList>
</ul>
</div>
</div>

<script type="text/javascript">
FoldNavigation('st7','off',false);
<mt:getVar name="monthly_fold_script" />
</script>
</mt:ifArchiveTypeEnabled>

こんな力技じゃなく、もう少しスマートに処理できるんでしょうけど、なんせチュートハンパなものですから...。

GoogleMap API V3 その4

早速ですが、サンプルスクリプトを修正していきます。
まず、ルート案内の基本となるポイントの修正です。

これはgoogle mapsを見ながら通るポイントを見つけ、google mapsが導くルートと駅伝のルートが正しいことを確認しながらリストアップしてきます。本来であれば、中継所だけをポイントとしておいておくのが一番スッキリするのですが、google mapsが近道を探し出したりしてしまうので、中継所以外の交差点もポイントとして出しておく必要があります。

ですが、ここで大きな問題が...。
中継所+交差点などのポイントをリストアップしていくと、ルート案内としておくことができるポイントが足りなくなってしまいました...。Google Maps API V3のディレクションのドキュメントでは、ディレクションクエリのステータスとして、MAX_WAYPOINTS_EXCEEDEDの場合には最大のウェイポイント数は23+基点と終着地点ということになっているのに、基点+終着地点+ウェイポイントが10個で上記のステータスが出てしまいます。

なぜなのかはさっぱり分かりません。
仕方が無いので、ルート案内用のポイントと中継所用のポイントを別の配列で管理することにしました。


var examples = [{
latlngs: [
[35.312932,135.134513],
[35.304807,135.135814],
[35.311912,135.219952],
[35.387406,135.177171],
[35.304807,135.135814],
[35.312932,135.134513]
],
chukeis: [
[35.312932,135.134513, 'スタート・ゴール<br />三段池公園総合体育館'],
[35.309102,135.154281, '第1中継所<br />(太光バス停前)'],
[35.313659,135.183345, '第2中継所<br />(中丹養護学校前)'],
[35.342586,135.216513, '第3中継所<br />(太ヶ鼻バス停前)'],
[35.364335,135.201817, '第4中継所<br />(西坂集荷場前バス停前)'],
[35.379030,135.157333, '第5中継所<br />(千原砕石場先広場)'],
[35.363997,135.119171, '第6中継所<br />(夏間バス停前)'],
[35.350159,135.115858, '第7中継所<br />(筈巻天満宮前)']
],
mapType: google.maps.MapTypeId.ROADMAP,
travelMode: 'driving'
}

最初のlatlngsという配列はサンプルの通りルート用の配列です。別にchukeisという配列を準備し、中継所にポイントを出し、ポップアップウィンドウを表示させるようにしました。

mapTypeはROADMAP、travelModeはとりあえずdrivingに設定してあります。
function addAddress() は今回使いませんので、全部削除。
function addMarker(latlng, doQuery) についても、今回は画面上で新たなウェイポイントを追加しない前提ですので、ウェイポイントの数のチェックなどは行わせていません。
function updateElevation() も今回は使いません。
function calcRoute(travelMode) について、ウェイポイントにはマーカーを設置しませんので、stopverはfalseに設定します。
function addressKeyHandler(e)も今回は使いませんので、全部削除。
function loadExample(n)については、基点、終点、ウェイポイント以外に、中継所のマーカーを設置しますので、


for (var i = 0; i < examples[n].chukeis.length; i++) {
var latlng = new google.maps.LatLng(
examples[n].chukeis[i][0],
examples[n].chukeis[i][1]
);

var myMarker = new google.maps.Marker({
position: latlng,
map: map
});

attachMessage(myMarker,examples[n].chukeis[i][2]);
}

だけを追加しました。


<div id="main">
<div class="course_title">
<table summary="コース図">
<tr>
<td><a href="#" onclick="loadExample(0); return false">全体</a></td>
<td><a href="#" onclick="loadExample(1); return false">第1区</a></td>
<td><a href="#" onclick="loadExample(2); return false">第2区</a></td>
<td><a href="#" onclick="loadExample(3); return false">第3区</a></td>
<td><a href="#" onclick="loadExample(4); return false">第4区</a></td>
<td><a href="#" onclick="loadExample(5); return false">第5区</a></td>
<td><a href="#" onclick="loadExample(6); return false">第6区</a></td>
<td><a href="#" onclick="loadExample(7); return false">第7区</a></td>
<td><a href="#" onclick="loadExample(8); return false">第8区</a></td>
</tr>
</table>
</div>

<div id="map_canvas" style="border: 1px solid black; width:666px; height:400px"></div>
<div id="chart_div" style="width:666px; height:200px" onmouseout="clearMouseMarker()"></div>
</div>

で、最後にhtmlを挿入して完成!

Google Maps JavaScript API v3 Example: Elevation Ekiden ver.

もっとスマートに作ることも出来るんでしょうけど、なんせ素人でチュートハンパなものですから、こんな力技でしか作ることが出来ません。
でも、それなりに見えるでしょ?

2011年2月25日

GoogleMap API V3 その3

サンプルのとおり作成し、このブログにウェブページとしてサンプルを載せようと思ったのですが、断続的にjavascriptのエラーが発生して正常に動きません。

firebugで見る限りでは、Google Maps JavaScript API v3 Example: Elevationのスクリプトにエラーが発生しているようです。
ただ、Google Maps JavaScript API v3 Example: Elevation単独でのページであれば何もエラーが発生しないので、このブログに使っているjavascirptと何か競合しているのかと思い、順番にスクリプトをはずしていくと、prototype.jsをはずすと正常に動作しました。
setMapがprototype.jsのmapと競合しているんだと思うのですが、無知でチュートハンパな私には解決方法は全く分かりません。ということで、このブログのカレンダーをprototype.jsではなくjQueryのカレンダーに変更することにしました。

手順はいつもの小粋空間さんの手順どおり進めていきます。Ajax 月送りカレンダー(jQuery・MT4版)の記事をよく読み、scriptをダウンロードして、サーバーにアップロードし、各種テンプレートを変更して、再構築!で、OKです。

で、完成したサンプルページがこのページです。

Google Maps JavaScript API v3 Example: Elevation

これから、また駅伝用に修正をしていきたいと思います。

2011年2月24日

GoogleMap API V3 その2

GoogleMapAPIもV3になってから簡単になりました。


<script type="text/javascript" src="http://www.google.com/jsapi"></script>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>

って読み込むだけですね。

以下の部分でルート検索、標高用のグラフの初期化をしています


<script type="text/javascript">
  var map = null;
  var chart = null;

  var geocoderService = null;
  var elevationService = null;
  var directionsService = null;

  var mousemarker = null;
  var markers = [];
  var polyline = null;
  var elevations = null;

  var SAMPLES = 256;

 var examples = [{
    // Lombard St
    latlngs: [
      [37.801000, -122.426499],
      [37.802051, -122.419418],
      [37.802729, -122.413989]
    ],
    mapType: google.maps.MapTypeId.ROADMAP,
    travelMode: 'driving'
  },{
    // Mount Everest
    latlngs: [
      [27.973323, 86.908035],
      [28.020614, 86.960906]
    ],
    mapType: google.maps.MapTypeId.TERRAIN,
    travelMode: 'direct'
  }];

SAMPLESというのは標高表示グラフの解像度になります。数値を大きくすると細かいグラフになりますし、小さくすると荒いグラフになります。ただ、Google Elevation APIで512までに制限されているようです。

このケースだと、examplesという配列に緯度・経度の情報、地図のタイプ、移動方法の選択をします。

mapTypeはROADMAPを選択し、travelModeはwalkingあたりを選択しておけば問題ないと思います。で、上から順番にexamples[0],examples[1]という配列になり、後でルートを選択する場合にはその番号を使用します。

今回は基本的にサンプルのjavascriptをとりあえずはそのまま使用します。

GoogleMap API V3 その1

今回は管理、運用している別サイトの話。

京都府民総合体育大会市町村対抗駅伝 のホームページを管理しています。

その中でコース紹介のページを作っているのですが、面倒でPDFファイルを貼り付けていただけなのでうすが、どうも面白くないので、GoogleMapAPIのルート案内を使ってみることにしました。

ただ、単にルート案内だけを導入しても面白くない。

そこで、Google先生に聞いてみますと、高低差表示ができるページが紹介されていましたので、さっそくそちらの高低差表示も含めたコース紹介を導入することにしました。

実は、当初はGoogleMapAPIのルート案内ではなく、Yahoo!のルートラボを使用しようと考えていたのですが、ホームページに貼り付けたときにどうも他のページとの整合性が取りにくく、細かいカスタマイズができない。で、結局GoogleMapAPIを使って地図を貼り付ける形に落ち着きました。

で、再度Google先生にお伺いしたところ、http://gmaps-samples-v3.googlecode.com/svn/trunk/elevation/elevation-profile.htmlなるページがヒットしました。

ソースを見る限り、それほど複雑な仕組みにはなっていないようですので、解析しながらおいおい設置したいと思います。

2011年2月23日

php化mt-search.cgiの不具合の続き

先日、php化mt-search.cgiの不具合の為のphpスクリプトを他のサイトにならって修正しました。

でも、タグクラウドに関しては、

<a href="http://blog.hanpahanpa.net/mt/mt-phpincgi.php
?tag=チュートハンパ
&amp;requrl=http://blog.hanpahanpa.net/mt/mt-search.cgi
&amp;IncludeBlogs=1">

っていうソースになってしい、そのままだと、

Another HTML-lint gatewayでhtmlの文法チェックを掛けるとがっつりエラーが出てしまいます。

ですので、

<a href="http://blog.hanpahanpa.net/mt/mt-phpincgi.php
?tag=%E3%83%81%E3%83%A5%E3%83%BC%E3%83%88%E3%83%8F%E3%83%B3%E3%83%91
&amp;requrl=http://blog.hanpahanpa.net/mt/mt-search.cgi
&amp;IncludeBlogs=1">

ってな具合にurlencodeする必要があります。

これくらいの知識ならなんとかありますので、

<a href="<$mt:CGIPath$>mt-phpincgi.php
?tag=<$mt:TagName$>
&amp;requrl=<mt:CGIPath /><mt:SearchScript />
&amp;IncludeBlogs=<mt:blogID />"><mt:tagName /></a>

ってなっているところを、

<a href="<$mt:CGIPath$>mt-phpincgi.php
?tag=<?php echo(urlencode("<$mt:TagName$>")); ?>
&amp;requrl=<mt:CGIPath /><mt:SearchScript />
&amp;IncludeBlogs=<mt:blogID />"><mt:tagName /></a>

ってな具合に修正しました。

テキスト版アクセスカウンタ

php化も無事終わり、アクセスカウンタを再設置したのはいいけど、どうも動いていない...。

ipアドレスで重複チェックしているところだと思うけど、原因不明。

とりあえず、また調べることにして、しばらく放置。

2011年2月22日

デザイン改造 その7

続いて取り組みたいのはマンスリーアーカイブのツリー化。
でも、その前にやはりmt-search.cgiの不具合を解消し、アクセスカウンタであったり組み込んだphpスクリプトを正常に動くようにさせなければ!

ということで、google先生にお伺いしましたところ、The blog of H.Fujimotoさんのコメント/検索関連テンプレートのPHP化(その1)という記事がヒットしました。

難しいことは分からないので、手順どおりスクリプトをダウンロードし、変更箇所を指示通りに変更。
で、検索ボタンをクリックしたら、無事表示!となるところが、全く何も表示されない???
phpは少しだけ、perlは全く分からない私にはThe blog of H.Fujimotoさんのスクリプトの意味が全然分からず、原因も全く分かりませんでした...。

それでも少ない知識の中でスクリプトを読んでみると、どうやら/cgitmp/というフォルダにテンポラリファイルを作成し、最終的にそれをincludeすることで画面に表示させているらしい、ということが分かりました(誰でもわかるんでしょうけどね...)で、そのテンポラリファイルをダウンロードし、中身を確認してみると、ちゃんとソースが作成されている。
のに何故?と思っていたら、以前のphp化の記事のところで、

<MTUnless name="system_template">
<? php echo('
</MTUnless>
<?xml version="1.0" encoding="utf-8"?>
<MTUnless name="system_template">
'); ? >
</MTUnless>

に変更して、ヘッダーに<?phpを表示させないようにするスクリプトを組み込んでいた為、拡張子がphpファイルなのに、一行目が
<?xml version="1.0" encoding="utf-8"?>
だった為、サーバー側でうまく表示できていなかったようです。

で、そこを通常通り

<?php echo('<?xml version="1.0" encoding="utf-8"?>'); ?>

に戻して、<?php echo・・・と表示させるように変更すると、無事表示されるようになりました。
で、晴れてアクセスカウンタ復活です。

デザイン改造 その6

カテゴリアーカイブリストのツリー化+折りたたみの続きです。

もともと、最初の段階からmenufolder.jsによるサイドメニューの折りたたみを導入しているので、難しいことは考えずにいつものように小粋空間さんの指示にしたがって手順をすすめていくと、2回、3回の試行錯誤の結果、折りたたみ完了です。

まだまだ記事もカテゴリも少ないので、折りたたむほどのことでもないんですけどね...。

2011年2月21日

デザイン改造 その5

ツリー化の続きです。

以前にブログを作っていたときも、同じように小粋空間さんのサイトを参考にしながらデザインを変更して言ったのですが、そのときはたいそう苦労したのを覚えています。

でも、今回はすんなり出来てしまったので、やや拍子抜けしております。

これで、だいぶ見やすく分かりやすくなったと思います。

あとは、これを折りたためるようにするだけですね。

2011年2月20日

デザイン改造 その4

引き続きデザインの改造を続けます。
最終的に、カテゴリアーカイブ、月間アーカイブも全てツリー化したいのですが、とりあえず出来るところからツリー化しました。
できたのは簡単な、最近のブログ記事、だけですけど...。

デザイン改造 その3

今回はデザイン改造というよりも機能の追加。

カレンダーを表示させせたいと思います。

いつもお世話になっている小粋空間さんにmt4にajaxカレンダーを表示させるという記事がありますので、いつものようにそのまま活用させていただきます。

今回はAjax 月送りカレンダー(MT4版)ってのを試してみます。

全ては小粋空間さんの記事のとおりなので、手順通り進めれば何事もなかったかのようにちゃんとカレンダーが表示されました。

さすがですね。

それと、今回はアクセスカウンタを追加しました。

画像タイプのアクセスカウンタだとフリーのものも出回っているので、案外簡単に設置できるのですが、個人的に画像タイプのアクセスカウンタは好きではありません。

結局、phpで適当なスクリプトを組んで設置することにしました。

悪戦苦闘の末、なんとか完成しました。

と思っていたのですが、やはり落とし穴が...。

mt-search.cgiで検索結果を表示させると、アクセスカウンタのphpスクリプトがそのまま表示されてしまう!?

シロートの私には対処方法は今のところ分かりません。

とりあえずの対処法は、アクセスカウンタを消す!ことしかできませんので、とりあえず設置を取りやめ、google先生と相談中です、トホホ。

2011年2月19日

php化

引き続き、mt4の修正を行っています。
最終的に、php化しなければいけないので、早い段階でphp化してしまいます。
作業自体はそれほど難しい物ではないので、テンプレートの必要個所を変更し、XML宣言の修正を行い、再構築。で、いらないファイルを削除して完成!

のはずでしたが、タグクラウドはサイト内検索などのmt-comment.cgi・mt-search.cgiを使用すると、画面がおかしくなります。ページのソースを確認すると、
<?php echo '<?xml version="1.0" encoding="UTF-8"?>' ?>
となってしまっています。
もちろん、画面上に'?>といったゴミが残ってしまいます。
今まであまり気にしたことが無かったのですが、気になります。

で、いつもの小粋空間さんに関連記事が載っていましたので、

<MTUnless name="system_template">
<? php echo('
</MTUnless>
<?xml version="1.0" encoding="utf-8"?>
<MTUnless name="system_template">
'); ? >
</MTUnless>

と変更し、無事php化が完了しました。

デザイン改造 その2

引き続き、デザインの変更をしていきます。

全体的なレイアウトは嫌いではないのですが、地味な感じですので少し明るめのデザインに。

また幅が800pxに設定されていますが、最近のディスプレイ事情もありますし、800pxでは写真などを貼り付けるにしても、どうも狭く感じてしまいますので、900pxに変更しました。

あとはまたまた小粋空間さんの記事を参考にしてサイドメニューの折り畳みを導入しています。

最終的にはカテゴリアーカイブ、マンスリーアーカイブもツリー形式の折りたたみにしたいのですが、一度に取り組んでしまうと、何が何だか分からず、失敗したら元に戻せなくなりますので、とりあえずメニューの折り畳みのみ導入しました。

で、結果がこんな感じです。

blog-image-03.png

2011年2月18日

デザイン改造 その1

デフォルトの状態でmt4をスタートさせるとこんな感じになります。
でも、私の好みのデザインではないので、チュートハンパな知識で少しずつ改造していきます。
blog-image-01.png
いつも参考にさせてもらっている小粋空間さんのデザインを利用させていただきます。
Movable Type(MT)テンプレートの中から、Movable Type 4.2 テンプレートセット(コミュニティ機能なし)のXHTML 1.0 Strict(utf-8 版):スタイル対応版(フッタ付きリキッドレイアウト対応)を利用させていただきます。
template_4_2_utf8_1_13_style_liquid.lzh
手順に沿って変更を続けると、このような画面になります。
これで少しは好みに近いデザインになりました。
blog-image-02.png
また改造は少しずつ...。

チュートハンパな世界へようこそ

パソコンは好きなので、仕事でも趣味でも日常的に使っています。
インターネットも好きなので、仕事でも趣味でも日常的に使っています。

パソコンは25年、インターネットは15年ほどの経験になります。

そんな経験を生かし、色々なことに取り組んでいますが、何一つとしてモノになりません。

そんなチュートハンパな取り組みを紹介しています。