※該当の記事タイトル一覧はリンク一覧から参照できます。
Amazon Product Advertising API(APAAPI)のPHPプログラム名前: 小川 邦久 リンク: http://kunisan.jp/ 日付: 2011年9月4日 ![]() 2008年にオープンした「KUNISAN.JPショップ」ですが、商品データ取得&表示用のPHPを公開しました。
KUNISAN.JPショップのPHPプログラム(サンプル) http://kunisan.jp/shop/apaapi_program_sample.php 「KUNISAN.JPショップ」は、アマゾンの膨大な商品データを扱える、Amazon Product Advertising API(APAAPI)を利用しています。このAPIは、昔「Amazon Web Service(AWS)」と呼ばれていましたが、同名のクラウド系データベースサービスから分けるようにしてAmazon Product Advertising APIの名称になりました。 KUNISAN.JPショップのオープン当時は、単純な商品サーチ機能だけのページだったのですが、そのうちに「特定の商品を表示するページをいっぱい作れば、検索サイトに引っかかりやすくなるかも」というアイデアが浮かび、数十個、数百個、はたまた数千個のPHPファイルを作成し、ファイルを増やす毎にアクセス数も上昇していきました。最終的には2万個程度のPHPファイルからなる20万ページ程のサイトになりました。特にYahoo!Japanからのアクセスが多く、アフィリエイトサイトとしてある程度成功したと言える状態になりました。 ところが、昨年末にYahoo!サーチがGoogle化してしまい、さらにGoogleサーチが「大量生成ページ」や「自前のコンテンツの無いアフィリエイトページ」に対してペナルティを課するようになりました。最大で1日あたり3000~4000UVあったアクセス数が、先月の時点で1日あたり500UVまで減ってしまいました。さらに検索サイト等のクローラーを除くと一日200~300UV程度まで落ち込んでしまった形です。 影響がこれだけならいいのですが、KUNISAN.JPドメイン全体にペナルティが課せられる形になってしまったため、本ブログや他の情報系ページ、ツール系ページについても、アクセス数が以前の半分から最大1/5程度まで落ち込んでしまうものもありました。 その後、KUNISAN.JPドメイン全体のアクセス数を回復させるため、KUNISAN.JPショップを含めた大量生成型のページを全て削除することに決定しました。KUNISAN.JPショップについては、トップのサーチ機能だけを残して、あとの20万ページは全て削除しました。2008年のオープン当時に戻った感じです。 今回、KUNISAN.JPショップのPHPプログラムを公開することになりましたが、2008年当時のWebサーバーはPHP4対応で"simplexml"を使えなかったことと、私自身PHPのプログラミングを始めてから3ヶ月しか経っていなかったこともあり、"spliti"の繰り返しでデータを取得していくという、苦肉の策(?)でプログラムを作成しています。ちなみに、楽天商品検索APIのサンプルプログラムも公開していますが、こちらはsimplexmlを使ったりして、少々こなれた感じにはなっています。 Web管理関連記事(リンク一覧): さくらのレンタルサーバ 新サーバーへの移行 / SPF、DKIM、DMARCの設定とネームサーバー(DNS)設定のトラブル / さくらレンタルサーバーのアクセス履歴をPHPで表示 / PHPで画像のアップロード(さくらレンタルサーバーのPHPでImageMagick) / KUNISAN.JPサイトのメンテナンス(2018) / ...(記事連続表示) 関連カテゴリー: Web管理関連記事, PHP関連記事
ショッピング系サイトの終了(Googleの品質ガイドライン違反)名前: 小川 邦久 リンク: http://kunisan.jp/ 日付: 2011年8月14日 ![]() 2008年のKUNISAN.JPショップを皮切りに、アマゾン、バリューコマース、楽天等のアフィリエイトのページを作成してきました。その多くがAPIサービスを利用して、PHPのプログラムでページを大量に生成するものです。データはキャッシュの場合を除いてリアルタイムにデータベースから取得するため、一度作ってしまえば更新の必要がなく、数十万ページが動的に更新するような形になっていました。一時期はこれでかなりの額の収入があって、2009年の10月に開始した個人事業の中核の事業ともなっていました。
しかし、Amazon Product Advertising APIの度重なる仕様変更に加え、昨年末に実施されたYahoo!サーチのGoogle化によるアクセス数の大幅減があり、毎月の収入は半分程度まで減ってしまいました。これに加えてGoogleの「大量生成型ページ」のペナルティ化があったり、その後も私の手持ちのサイトにとって不利となる検索アルゴリズムの変更が追加されていったものと思われます。結果、KUNISAN.JP全体の1日あたりの閲覧者数はピークの8000人/日から2000人弱/日と1/4以下にまで落ち込んでしまい、アフィリエト収入に至っては、ピークの1/5程度まで下がっていしまいました。 「収入が下がったのはアクセス数が下がったため。アクセス数が下がったのはGoogleの検索結果順位が下がったため」ということは明白なので、先日Googleウェブマスターツールより、サイト再審査のお願いを出してみました。すると、帰ってきた答えがこれです。 「サイトが Google の品質ガイドラインに違反しています」 どのページがどのような違反なのか、具体的には書かれていませんでしたが、「アフィリエイトページの大量生成」は間違いなく品質ガイドラインに反しています。「やはり、これが原因でアクセス数が落ちていたのか…」とはっきりと理解できました。 しかし、「収入を伸ばすためにアクセス数を上げたい」→「アクセス数を上げるために違反ページを削除する必要がある」→「違反ページは収入頭の大量生成されたアフィリエイトページ」→「違反ページを削除するとアクセス数が増えても収入が増えない」ということもあり、「どうしようかな…」ということになってしまいました。ただ、「以前の収入レベルならまだしも、現状の収入レベルなら、ここからさらに半減してもあまり痛くない。アクセス数が増えれば、代わりにクリック報酬型の広告収入が増えるかも知れない。大量生成されたアフィリエイトページは、いずれにしても先が無いのだから、アクセス数を増やすことをベースに、自前コンテンツのホームページやブログを多くの人に見てもらうことを優先して、それ以上のことは後になってから考えよう」という結論に達しました。 そして、本日削除したページは以下のとおりです。 ・KUNISAN.JPショップのサーチ機能以外全て ・学び舎サーチ ・駅近君 ・KUNISAN.JPサービスモール 先日、別タイプの大量生成型ページである「町の噂DB」と「有名人DB」も削除してるので、全部合せて25万~30万ページ程を短期間に削除した形になります。 現在残っているページは、旅行記や体験記など固定コンテンツのもの、計算機能などのあるツール系のもの、そしてこのKUNISAN.JP(ブログ掲示板)という感じになっています。本サイトトップページの下の方を見ると一覧が出てきます。 今は本職がサラリーマンで、新規ホームページの作成まで手が回りません。ただ、このブログだけはコツコツとコンテンツを積み重ねていきたいと思います。ここでKUNISAN.JPの「コンテンツ重視宣言」を出したいと思います。 Web管理関連記事(リンク一覧): さくらのレンタルサーバ 新サーバーへの移行 / SPF、DKIM、DMARCの設定とネームサーバー(DNS)設定のトラブル / さくらレンタルサーバーのアクセス履歴をPHPで表示 / PHPで画像のアップロード(さくらレンタルサーバーのPHPでImageMagick) / KUNISAN.JPサイトのメンテナンス(2018) / ...(記事連続表示)
RSSでの全文配信終了のお知らせ名前: 小川 邦久 リンク: http://kunisan.jp/ 日付: 2011年7月25日 ![]() 2010年1月から開始した、「KUNISAN.JP - 新・ブログ掲示板」のRSSフィードですが、本日を持って全文配信を終了しました。今後はタイトルのみの配信となり、今までご利用いただいた方にはご不便をおかけすることになり、大変申し訳無く思っています。
このような決定に至った理由としては、RSSで配信したコンテンツをそのままページに表示し、あたかも「自分のコンテンツである」というような不当なページを発見したためです。このページの管理者から私への連絡は一切無く、またそのページから私のページへのリンクも一切無く、しかも検索条件によっては、私のサイトよりも上にランクされることもありました。加えて、そのページのタイトルとアドレスを変えただけのページが複数存在していることも確認しています(恐らく同じ管理者が所有しているものと思われます)。 あまりにもひどいので、何ヶ月か前にGoogleに対して「スパムサイト」報告をしたのですが、全く対応してもらえませんでした。もしかしたら、RSSで取得できる情報をページ上にそのまま表示するのは、法的にもGoogleのガイドライン上も問題無いのかも知れません。そのため、今回のような「配信終了」という措置を取らざるをえないという結論に達しました。 RSSは「Web2.0」と騒がれていた頃に注目を浴びていたサービスの一つですが、最近はRSSリーダーのサービスを止める業者が出てくるなど、少し「過去の物」になりつつあるような気がします。RSSフィードを提供する側にとっても、ホームページのPVが減少することに直結しますし、それに伴って広告収入が減ってしまうという懸念があります。ただ、それよりも上記のような「スパム行為」が横行してしまうと、とてもRSS配信を続ける気にはならなくなってしまいます。 いずれにしても、今回の決定についてご理解いただき、今後も「KUNISAN.JP - 新・ブログ掲示板」を見守っていただけると、管理者としても幸いに思います。 Web管理関連記事(リンク一覧): さくらのレンタルサーバ 新サーバーへの移行 / SPF、DKIM、DMARCの設定とネームサーバー(DNS)設定のトラブル / さくらレンタルサーバーのアクセス履歴をPHPで表示 / PHPで画像のアップロード(さくらレンタルサーバーのPHPでImageMagick) / KUNISAN.JPサイトのメンテナンス(2018) / ...(記事連続表示)
ブログやホームページに「Twitter(ツイッター)で共有」ボタン設置名前: 小川 邦久 リンク: http://kunisan.jp/ 日付: 2011年6月18日 ![]() 1年前に本ブログで「Twitterで共有」ボタンの説明を書きましたが、その後Twitterの仕様が変わり、1ヶ月程前から従来の方法ではリンク(URL)やコメントがTwitterのコメント欄に反映されなくなってしまいました。従来は以下のようなリンクを設置していました。 <a href="http://twitter.com/home?status=XXXX">Twitterで共有</a> ※XXXXのところにURIエンコード(UTF-8)したリンク(URL)+文章を入れる形。URIエンコードは、 http://kunisan.jp/uri_encode_decode/ を参照。 今ではこのような形のリンクをクリックしてもTwitterのトップページに行くだけで、コメント欄は空の状態になってしまいます。 そのため解決方法を探していたところ、以下のページ(Twitter公式)でちゃんと紹介されていました。 http://dev.twitter.com/pages/tweet_button このページには公式のリンクボタンを設置する方法も掲載されていますが、私としてはブログやホームページの見た目を変えたくないので、リンク先のURLを変更する形で対応してみました。具体的にはこんな感じの記述になります。 ※Twitter上でKUNISAN.JPのホームページを「このページは楽しい!」と紹介する形。 ■ HTML <a href="http://twitter.com/share?url=http://kunisan.jp/kuni/&text=%E3%81%93%E3%81%AE%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%AF%E6%A5%BD%E3%81%97%E3%81%84%EF%BC%81" target="_blank">Twitterで共有</a> さらにこれをPHP、Perl、JavaScriptで記述すると、こんな感じになります。 ■ PHP(SJIS記述の場合) $tword = 'このページは楽しい!'; $tword = urlencode(mb_convert_encoding($tword,"UTF-8","SJIS")); $url = 'http://kunisan.jp/kuni/'; print '<a href="http://twitter.com/share?url='.$url.'&text='.$tword.'" target="_blank">Twitterで共有</a>'; ■ Perl(SJIS記述の場合※Jcode.pmが必要) $tword = 'このページは楽しい!'; &Jcode::convert($tword, "utf8", "sjis"); $tword =~ s/([^0-9A-Za-z_ ])/'%'.unpack('H2',$1)/ge; $url = 'http://kunisan.jp/kuni/'; print '<a href="http://twitter.com/share?url='.$url.'&text='.$tword.'" target="_blank">Twitterで共有</a>'; ■ JavaScript tword = 'このページは楽しい!'; tword = encodeURIComponent(tword); turl = 'http://kunisan.jp/kuni/'; document.write('<a href="http://twitter.com/share?url='+turl+'&text='+tword+'" target="_blank">Twitterで共有</a>'); 変数のところの記述を変更すれば色々と応用できると思うので、興味がある方は試してみてください。 ちなみに今までと違って、リンクをクリックすると確認用のウインドウが出てきます。ここで「ツイート」ボタンを押すとツイートされる形になります。 Web管理関連記事(リンク一覧): さくらのレンタルサーバ 新サーバーへの移行 / SPF、DKIM、DMARCの設定とネームサーバー(DNS)設定のトラブル / さくらレンタルサーバーのアクセス履歴をPHPで表示 / PHPで画像のアップロード(さくらレンタルサーバーのPHPでImageMagick) / KUNISAN.JPサイトのメンテナンス(2018) / ...(記事連続表示) 関連カテゴリー: Web管理関連記事, PHP関連記事
KUNISAN.JPショップの原状回復に向けて名前: 小川 邦久 リンク: http://kunisan.jp/ 日付: 2011年1月16日 ![]() KUNISAN.JPショップはAmazon Product Advertising API(APAAPI/旧:AWS)を用いた仮想ショッピングサイトで、全部で2万以上のPHPファイル、30万以上のページから構成されています。もちろんページを増やす作業はプログラムの手書きではなく、ある「キーワード」を打ち込むことで、半自動的に生成してくれるようになっています(このプログラムもPHPで自作しました)。画面構成は非常にシンプルですが、大きな商品画像を使っているのが最大の特徴です。2008年初頭に作成したKUNISAN.JPショップですが、ページ追加を重ねていった結果、2009年の夏ごろには手持ちのサイトの中で稼ぎ頭にまで成長しました。その後も収益の高い状態が続いていましたが、2010年秋になりAPAAPIから「ユーザーレビューを取得できなくなる」というサービス変更がありました。さらにYahoo!サーチのGoogle化が追い打ちをかけ、一日あたり2000~3000UVあったアクセス数が、昨年12月には1000UV以下にまで落ち込んでしまいました。収益もアクセ数減に応じて、激しい落ち込みです。今までKUNISAN.JPショップはYahoo!サーチからのアクセスが大多数であったこともあり、Googleへの対応を考える必要が出てきました(対応が後手に回ってしまいましたが…)。 ところで、昨年夏にKUNISAN.JPショップの「別館」という形で作成した「有名な靴屋への近道」というサイトがあります。これはKUNISAN.JPショップのプログラムを基本としていますが、APAAPIにリクエストするデータをMySQLに格納する形にプログラムを変更しており、KUNISAN.JPショップのように各PHPファイルにデータを格納する形よりも管理やページ追加が楽になりました。このサイトについては、KUNISAN.JPショップと異なり、Yahoo!サーチのGoogle化後もアクセス数が減ることはありませんでした。 Googleについてはサイト全体があるテーマに絞られたものほど、検索ランクが高めに出る傾向があると聞いたことがあります。「有名な靴屋への近道」は靴とバッグを専門にしているので、テーマが絞られた形になっているという解釈になるかと思います。反対にアクセス数の激減したKUNISAN.JPショップは、「何でも屋」的な内容になっており、またページ構成も体系的になっていません。これをヒントにして、KUNISAN.JPショップの別館専門店として、新たに4サイトを立ち上げてみました。 ・パソコンショップ ・アウトドアショップ ・赤ちゃん用品ショップ ・オーディオショップ 先に作ったパソコンショップ、アウトドアショップについては、今のところ好調なアクセス数を記録しています。赤ちゃん用品ショップ、オーディオショップについてはこれからどうなるか見極めた上で、今後の展開を考えていきたいと思います。 ただ、2009年夏~2010年夏に記録したような収益に戻るかどうかは、現状では不透明です。また、戻るとしてもかなりの時間がかかることが予想されます。サラリーマンをやりながらの週末プログラマーなので、昨年のように一気にページを増やすようなことができませんが、何とか再び軌道に載せられたら嬉しいです。 Webの世界は技術的な変化が早いですが、首の皮一枚でも何とか付いて行きたいところです。 Web管理関連記事(リンク一覧): さくらのレンタルサーバ 新サーバーへの移行 / SPF、DKIM、DMARCの設定とネームサーバー(DNS)設定のトラブル / さくらレンタルサーバーのアクセス履歴をPHPで表示 / PHPで画像のアップロード(さくらレンタルサーバーのPHPでImageMagick) / KUNISAN.JPサイトのメンテナンス(2018) / ...(記事連続表示)
学び舎サーチ - スクール検索サイト名前: 小川 邦久 リンク: http://kunisan.jp/ 日付: 2010年10月24日 ![]() 新しく作成したサイトを公開します。学び舎サーチ http://kunisan.jp/learning/ 内容は沿線別(今のところ首都圏のみ)、都道府県別で、語学やITなどの学校、講座、レッスンなどが検索できるというものです。フリーワードでの検索も対応しています。基本部分はPHPで作成し、MySQLで各種データを連動させつつ、バリューコマース経由で「ケイコとマナブ」のデータを引っ張って表示させています。見た目は100ページ以上ありますが、トップページ以外はコアとなるプログラムは1本のみです。 このページは製作開始から本日の「ほぼ完成」まで、約一ヶ月かかりました。今年3月までの個人事業専業なら3日足らずで仕上がったと思いますが、週末の限られた時間だけでの製作となると、やはり期間が長くなってしまいます。プログラム自体はシンプルなので、これからも少しずつ拡張して行きたいと思います。 Web管理関連記事(リンク一覧): さくらのレンタルサーバ 新サーバーへの移行 / SPF、DKIM、DMARCの設定とネームサーバー(DNS)設定のトラブル / さくらレンタルサーバーのアクセス履歴をPHPで表示 / PHPで画像のアップロード(さくらレンタルサーバーのPHPでImageMagick) / KUNISAN.JPサイトのメンテナンス(2018) / ...(記事連続表示)
Google AdSense広告配信停止(2度目)名前: 小川 邦久 リンク: http://kunisan.jp/ 日付: 2010年10月2日 ![]() 先月27日にGoogleよりAdSense広告の配信を停止する内容のメールが来ました。手持ちのショッピングサイトが、Googleのポリシーに引っかかったようです。翌日には実際に広告の配信が停止されて、広告のあった部分が空白になってしまいました。
昨年6月には違うサイトが「Googleサービスの抜け道を利用する(YouTube著作物配信の助長)」という理由で、広告配信停止になりました。それ以来、2度目の広告配信停止の措置です。この時にはその後ページ上に「Google広告配信停止になったため、本サービスの継続を中止する」等、Googleの名前を連呼するような形の説明文を掲載したことが、「Googleブランドの(不正)利用」ということになってしまい、広告配信停止が延長されたという経緯があります。 今回問題になったショッピングサイトですが、Amazon Product Advertising API(APAAPI、旧AWS)のデータをもとにしたコンテンツを掲載していました。これにAdSense広告を掲載し始めたのは2年以上前です。その後は特に問題なくサイトを運営していたのですが、APAAPIの仕様が変わることになり、ユーザーレビューをコンテンツに埋め込む形でなく、iframaeで表示するように変更しなければなりませんでした。広告配信停止の連絡はページ変更から2週間後なので、恐らくページ内に突然増えたiframeを自動的に検知するなどした上、APAAPI側の不具合でエラーが多発してたことなども影響して、広告配信停止の措置が取られたものと思います。 加えて「コンテンツがアフィリエイトのみ」というのも、ポリシー違反となってしまいます。アフィリエイト広告だけでなく、APAAPIからユーザーレビューなども引っ張ってきていたので、問題ないと思っていましたが、どうやらこのような形態のものもポリシー違反になってしまうようです。 そのため、このショッピングサイトに加えて、他のアフィリエイト系APIからデータを引っ張っているサイトについても、AdSense広告を全て外した上で、Googleに「広告配信復活」のお願いを出しました。 その後Googleからメールが来たのですが、今度は別のページについて「見出しの直下に広告が配置されていて、広告が見出しに関連した内容と誤解される」ということで、広告配信停止が解除されませんでした。そのページは見出しの部分の背景色は緑で、広告とその周りの背景は白だったので、見間違えるようなことは無いと思っていましたが、どちらにしてもポリシー違反ということだったので、このページからも広告を外しておきました(元々広告を掲載できるようなコンテンツではなかったので)。加えて他にも見出し直下に広告を掲載しているページがあったので(一応見出しと広告には、一行分以上の隙間がありましたが)、そのようなページについては全て見出しと広告の間に罫線を入れた上で、広告の上に「スポンサードリンク」の表記を入れておきました。 改めてGoogleに「広告配信復活」のメールを出したところ、今度は問題がなかったようで、無事に広告掲載復活となりました。 AdSenseのポリシーはよく読んでいたつもりではあったのですが、解釈の違いでポリシー違反となってしまいました。上記の例が他の方の参考になればと思います。 Web管理関連記事(リンク一覧): さくらのレンタルサーバ 新サーバーへの移行 / SPF、DKIM、DMARCの設定とネームサーバー(DNS)設定のトラブル / さくらレンタルサーバーのアクセス履歴をPHPで表示 / PHPで画像のアップロード(さくらレンタルサーバーのPHPでImageMagick) / KUNISAN.JPサイトのメンテナンス(2018) / ...(記事連続表示)
ネットブックWebサーバー終了とWebARENA SuiteX高機能データベース利用名前: 小川 邦久 リンク: http://kunisan.jp/ 日付: 2010年6月26日 ![]() 今年の2月、ネットブック(FRONTIER FRNU305)にXAMPPを入れて、Webサーバーとして稼働させていました。主にKUNISAN.JPサイトのアクセス解析用として使っていて、24時間電源を入れっぱなしだったのですが、5月までは大きなトラブルも無く、順調に動き続けていました。しかし、6月になってから、Apacheが突然停止してしまったり、Windowsが勝手に再起動したりするなどの現象が出るようになりました。特に昼間の室温の高い時にだけトラブルが発生するため、恐らく暑さが原因であったものと思われます。7月~8月のもっと暑い時期になると、さらにトラブルの確率が上がることが予想されました。かと言って、クーラーを24時間付けっぱなしにすると、電気代だけで月7,000円以上の出費になってしまいます。 そのため、自宅でのネットブックWebサーバーの運用は「これ以上続けられない」と判断し、代わりにWebARENA SuiteXの「高機能データベース(DB)」を利用してみることにしました。月額2,100円(税込)ですが、自宅Webサーバー+クーラーの電気代のことを考えると、それほど高いとも思いませんでした。 「高機能DB」は申し込み直後から利用可能になりました。早速ネットブックのデータベースから一部データをエクスポートし、高機能DBにインポートします。日本語データの文字化けが発生しましたが、その他の部分は問題ありませんでした。アクセス解析用のプログラムについては、DB接続パラメーターの変更とエンコードの設定変更(SJIS→UTF-8)で普通に動いてくれました。さらに、動作速度もネットブックに比べて3~5倍程度速いようです(正確には測定していませんが)。 そして本日、データの完全移行作業と文字化け修正、それと各ホームページのアクセス解析用コードの変更作業を行い、無事切り替え作業が終了しました。ネットブックの電源を落とし、ルーターの設定で80番ポートも閉じて、自宅Webサーバー稼動前の状態に戻りました。 それにしても、自宅サーバーの安定稼働は本当に難しいものです。温度管理、停電対策、セキュリティ設定、OSアップデート、トラブルシューティングなど、時折手をかける必要が出てくるものがあります。うちでは、ネットブックを利用した簡易的なものでしたが、24時間稼働にあたっては「何もしなくていい」という状態に持って行くことができませんでした。 そういった経緯で、私としての落ち着きどころは、「手のかからない有料サービス」ということになりました。 WindowsPC関連記事(リンク一覧): EWiN ブルートゥース+2.4G USB無線両対応タッチパッド搭載折りたたみキーボード / 【2025新登場】ProtoArc Bluetooth 折りたたみ式キーボード XK01 / ブラザー(Brother)複合機 MFC-J4950DN / 息子のPCを新調 - GIGABYTE ゲーミングノート GAMING A16 CMHI2JP894SH / エレコム ワイヤレスキーボード・マウスセット TK-FDM110MBK / ...(記事連続表示) 関連カテゴリー: Web管理関連記事, WindowsPC関連記事
コメント:ネットブックWebサーバー終了とWebARENA SuiteX高機能データベース利用 名前: 湯浅 大介 日付: 2010年6月28日 ![]() ご無沙汰しております。 DB入れ替えお疲れ様でした。自宅でのサーバー運用はやっぱり難しいみたいですね。気になることを1つ減らせたことを考えると¥2,100は安いかも知れないですね。 関係ないですが、ついにウチの会社もWindows7への入れ替えをすことになりました。今年度中に全てのPCを切り替える予定で、忙しくなるんだろーなー・・・ コメント:ネットブックWebサーバー終了とWebARENA SuiteX高機能データベース利用 名前: 小川 邦久 リンク: http://kunisan.jp/ 日付: 2010年6月28日 ![]() ネットブックの簡易サーバーとは言え、時間の面でもコストの面(ネットブック本体価格やクーラー電気代なども含めて)でも、ホスティングサーバーのサービスの方が「楽」という結論に達しました。
Windows 7はXPやVistaに比べて便利にできてますが、総入れ替えとは大変ですね…。私はSE職から足を洗ったので、現在そういった作業は他人にお任せしてます。自宅の趣味(というか週末の個人事業?)としては色々とやってますけど。
Twitter API + PHP + MySQLの連携名前: 小川 邦久 リンク: http://kunisan.jp/ 日付: 2010年4月11日 ![]() ※(2010/4/11追記)PHPプログラムはページ下部のコメント欄をご参照ください。先日、本サイトに「管理者のつぶやき」というページを設置して、私のTwitter(ツイッター)の書き込みをリアルタイムで表示するようにしてみました。ただ、Twtter APIを用いた簡易的なブログラムなので、「管理者のつぶやき」を見るより、直接Twitterの私のページを見た方が早いという話もありました。 しかし、本家Twitterについても、検索機能はあまり充実していると言えません。基本的に日本語検索が不完全なことに加え、「何日から何日までのつぶやき」というような、書き込み日時による抽出も不可能です。過去のつぶやきを見るには、画面下にある「もっと読む」ボタンを何回か押さないといけません。せっかく自分で書き込んだ内容なので、日記やブログのように読み返せると便利なのに、と思うことも多々ありました。 そのようなことから、Twitterの書き込みを日付とワードの両方で検索できるシステムを自前で作ることにしました。本ページ左の「管理者のつぶやき」をクリックすると、最新のつぶやきに加えて、新たに設置した抽出機能もチェックできます。 原理としては、KUNISAN.JP内のあるページを開くことで、Twitterに書き込んだ内容をMySQLに書き込むプログラム(PHPで作成)が動作するようになっています。検索機能はTwitter APIではなく、このMySQLの方からデータを抽出する形になっているため、より柔軟なデータ抽出が可能となっています。 とは言うものの、ブログに比べて各書き込みの情報量が少ないので、どれだけ利用価値があるのかは定かではありません。ただ、私としては過去の書き込みにアクセスしやすくなったということで、Twitterの利用価値がますます上がったように感じています。 Web管理関連記事(リンク一覧): さくらのレンタルサーバ 新サーバーへの移行 / SPF、DKIM、DMARCの設定とネームサーバー(DNS)設定のトラブル / さくらレンタルサーバーのアクセス履歴をPHPで表示 / PHPで画像のアップロード(さくらレンタルサーバーのPHPでImageMagick) / KUNISAN.JPサイトのメンテナンス(2018) / ...(記事連続表示) 関連カテゴリー: Web管理関連記事, PHP関連記事
コメント:Twitter API + PHP + MySQLの連携 名前: 小川 邦久 リンク: http://kunisan.jp/ 日付: 2010年4月11日 ![]() Twitter APIのデータをMySQLに渡すプログラムとMySQLのデータを抽出・表示するプログラムを公開します(どちらもPHP)。 予め「TWITTER」テーブルを作成し、「NAME(text)」「COMMENT(text)」「TIME(int)」の3つのフィールドを用意しておきます。その後、下記プログラムのデータベース接続用の変数と、Twitter APIリクエスト部分の"kunihisa_ogawa"を変更すれば、そのまま使えると思います。 ※プログラムは個人使用に限り自由にご利用いただいて結構ですが、動作確認等すべて自己責任でお願いします。当方では一切のサポートを行っていません。 ※プログラムの無断配布、転載等はご遠慮ください。当ページへのリンクはご自由にどうぞ。 ※当サイトで動作しているものと、一部中身が異なります。 ■■■■ Twitter APIからMySQLへデータ追加 ■■■■ //エンコード設定 mb_language("ja"); mb_internal_encoding("SJIS"); mb_regex_encoding("SJIS"); //データベースオープン //変数設定 $dbserver = 'localhost'; $dbuser = 'XXXXXXXX'; $dbpassword = 'XXXXXXXX'; $dbname = 'XXXXXXXX'; //MySQLに接続する $con = mysql_connect($dbserver,$dbuser,$dbpassword); //データベースを選択 $selectdb = mysql_select_db($dbname); //Twitter APIに接続 $contents = file_get_contents('http://search.twitter.com/search.atom?q=from:kunihisa_ogawa&rpp=100'); //XMLをオブジェクトに変換 $xml = simplexml_load_string($contents); //ループ処理 for ($i = 0; $i < 100; $i++ ) { //書き込み人の取得 $author_name = $xml->entry[$i]->author->name; //書き込み人のユーザー名のみ取得 //$author_link = $xml->entry[$i]->author->uri; $author_id = mb_split('\(',$author_name); $id = mb_ereg_replace(' ','',$author_id[0]); //本文の取得 $bunsho = $xml->entry[$i]->title; $bunsho = mb_convert_encoding($bunsho,"SJIS","UTF-8"); //本文をUTF-8に変換 $utf8_comment = mb_convert_encoding($bunsho,"UTF-8","SJIS"); //ダブルクオーテーションを参照文字に変換 $utf8_comment = mb_eregi_replace("\"",'"',$utf8_comment); //時間をUNIX形式に変更 $unixtime = strtotime($pdate); //DBデータを抽出(ダブりの有無) $sql = 'SELECT * FROM TWITTER WHERE TIME = '.$unixtime; //DB結果を取得 $data = mysql_query($sql); //ダブり用変数のリセット $dub = ''; //DB結果セットの表示 while ($sd = mysql_fetch_array ($data)) { //COMMENTがあれば取得(つまりダブり) $dub = $sd[COMMENT]; } //ダブりがなく、かつ$unixtimeが0より大きければレコード追加の処理 if (($dub == '')&&($unixtime > 0)){ //テーブルにレコードを追加する $sql = 'INSERT INTO TWITTER (NAME,COMMENT,TIME) VALUES ("'.$id.'","'.$utf8_comment.'","'.$unixtime.'")'; if (mysql_query($sql)) { //print 'レコード追加成功<br>'; } else { //print 'レコード追加失敗<br>'; } } ■■■■■■■■■■■■■■■■■■■■■■■■■■ ■■■■■ MySQLのデータを抽出して表示する ■■■■■ //エンコード設定 mb_language("ja"); mb_internal_encoding("SJIS"); mb_regex_encoding("SJIS"); //データベースオープン //変数設定 $dbserver = 'localhost'; $dbuser = 'XXXXXXXX'; $dbpassword = 'XXXXXXXX'; $dbname = 'XXXXXXXX'; //MySQLに接続する $con = mysql_connect($dbserver,$dbuser,$dbpassword); //データベースを選択 $selectdb = mysql_select_db($dbname); //何日前からのデータを取得するか?(デフォルト値) $term = 30; //日付1の取得(いつから) $date1 = $_GET[DATE1]; if ($date1 == '') { $date1 = date('Y/m/d',(time() - (86400 * $term))); //デフォルト値設定 } //日付2の取得(いつまで) $date2 = $_GET[DATE2]; if ($date2 == '') { $date2 = date('Y/m/d',time()); //デフォルトは今に設定 } //サーチワードの取得 $searchword = $_GET[WORD]; $hyojiword = mb_convert_encoding($searchword,'SJIS','UTF-8'); //表示件数の取得 $hyoji = $_GET[HYOJI]; if ($hyoji == '') { $hyoji = 30; } //最大1000件まで表示 if ($hyoji > 1000) { $hyoji = 1000; } //フォーム表示 print ' <form method="get" action="twitter_kunisan_jp.php"> <b>日付:</b> <input type="text" name="DATE1" value="'.$date1.'" style="width: 85px;">~<input type="text" name="DATE2" value="'.$date2.'" style="width: 85px;"> <b>検索ワード:</b> <input type="text" name="WORD" value="'.$hyojiword.'"> <b>表示件数:</b> <input type="text" name="HYOJI" value="'.$hyoji.'" style="width: 45px;"><br> <button type="submit" value="">つぶやき抽出</button> </form> '; //サーチワード指定があれば、サーチワードでも抽出をかける if ($searchword != '') { $filtersql = 'AND COMMENT LIKE \'%'.$searchword.'%\''; } //SQL指定 $sql = 'SELECT * FROM TWITTER WHERE TIME >= '.strtotime($date1).' AND TIME <= '.(strtotime($date2) + 86399).' '.$filtersql.' ORDER BY TIME DESC LIMIT '.$hyoji; //DB結果を取得 $data = mysql_query($sql); //データ件数リセット $ndata = 0; //DB結果セットの表示 while ($sd = mysql_fetch_array ($data)) { //書き込み人のユーザー名取得 $id = $sd[NAME]; //本文の取得 $bunsho = $sd[COMMENT]; $bunsho = mb_convert_encoding($bunsho,"SJIS","UTF-8"); //URLをリンクに変換 $bunsho = mb_eregi_replace("(https?:\/\/[-_.!~*'()a-zA-Z0-9;/?:@&=+$,%#]+)",'<a href="\\1"'.$target.'>\\1</a>',$bunsho); //書き込み日の取得 $pdate2 = date('Y/m/d H:i:s',$sd[TIME]); //コメント表示 print '<p><b>'.$id.'</b>: '.$bunsho.' ('.$pdate2.')</p>'; //データ件数カウント $ndata = $ndata + 1; } //検索結果がない場合 if ($ndata == 0) { print '<p>指定された検索ワードのつぶやきはありませんでした。</p>'; } ■■■■■■■■■■■■■■■■■■■■■■■■■■ コメント:Twitter API + PHP + MySQLの連携 名前: 小川 邦久 リンク: http://kunisan.jp/ 日付: 2013年6月23日 ![]() 2013年6月12日以降、Twitter API 1.0が使用できなくなったことにより、上記のTwitter APIからデータを取得するプログラムも動作しなくなりました。
Google AdSense for Dummies名前: 小川 邦久 リンク: http://kunisan.jp/ 日付: 2010年3月31日 ![]() 昨年末に購入した「Google AdSense For Dummies内容としては、AdSenseの広告の種類や管理画面の操作方法など基本的事項についての説明や、広告の配置、色使い、アクセス数増加対策など、運用面での実践的なことも書かれています。「裏技」のようなものは書かれておらず、自己クリックなどの違反行為はもちろんですが、グレーゾーンにあたるようなことも「絶対にやってはいけない」としており、長期的に稼ぐ基本は「コンテンツを充実させること」と強調しています。 ただ、コンテンツの充実→リピーターが増える→広告クリックが増える、という図式は必ずしも当てはまらないような気がします。AdSenseに限らず、一般的にリピーターは広告のクリック率が低いと言われています。それよりも、コンテンツの充実→被リンクの増加→検索結果ランキングが上がる、という効果の方がメリットが大きいです。 この本にはおまけでUS$25のAdWordsギフト券が付いてきます。ただし、このギフト券を使えるのは今までにAdWordsのアカウントを取得していない人のみで、私は既にAdWordsの使用経験もあるので、残念ながら使うことができませんでした。私はこの本を2,000円弱で購入しましたが、もしこれからAdSenseもAdWordsも両方やってみたいという人がいたら、かなりお得ということになります(場合によっては元以上?)。 ちなみにこの「Dummies」シリーズですが、私は今までにWindows 2000、Networking、Lotus Notes 6と購入していて、今回のAdSenseが4冊目になります。文章が口語調で書かれており、「英語はそこそこできるけど読解は苦手」という人でも、あまりストレスを感じずに読み切ることができると思います。 英語学習関連記事(リンク一覧): MLB中継や選手・監督インタビューで英語学習 / NetflixでSeinfled(となりのサインフェルド)の全エピソード視聴完了 / Duolingo - 初心者向け外国語学習アプリ / 4か月ぶりのTOEIC L&R(オンラインIP)で初のリーディング満点 / インテリ君の英語遊び TOEIC®英単語・英熟語 - プチコン4で英語学習ゲーム / ...(記事連続表示) 関連カテゴリー: Web管理関連記事, 英語学習関連記事
コメント:Google AdSense for Dummies 名前: ゆあ 日付: 2010年4月1日 ![]() Lotus Notes for dummies(頂いた本)家にありますよー。たまに読んでましたが、会社のメールソフトがNotesからOutlookになったので、あまり読まなくなってしまいましたが・・。 コメント:Google AdSense for Dummies 名前: 小川 邦久 リンク: http://kunisan.jp/ 日付: 2010年4月1日 ![]() そういえばLotus Notes for dummiesは会社のお金で買ったので、会社に置いておきましたね。Windows 2000は行方不明で(もういらないですが)、Networkingは今でも手元にありますよ。あっ、もちろんどちらも個人のお金で買ったものですよ。
※該当の記事タイトル一覧はリンク一覧から参照できます。
■ ホームへ
|