<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title>Suinasia(twitter)</title>
<link>http://suin.asia/tag/twitter</link>
<description>「twitter」なエントリー</description>
<language>ja</language>
<lastBuildDate>Thu, 09 Feb 2012 08:46:22 +0900</lastBuildDate>
<docs>http://backend.userland.com/rss/</docs>
<category>twitter</category>
<item>
<title>TwitterにいるXOOPSのすごい人リスト</title>
<link>http://suin.asia/2011/06/17/super_xoopsers_in_twitter</link>
<description><![CDATA[<p>最近、XOOPS関係のつぶやきが多い人や、XOOPSで活発な人のリスト。完全に、<a href="http://d.hatena.ne.jp/sotarok/20110617/1308227462">便乗</a>です。</p>

<p>
<a href="http://twitter.com/domifara">@domifara</a> (すごい活発な人)<br />
<a href="http://twitter.com/bluemooninc">@bluemooninc</a> (weeklycmsの人)<br />
<a href="http://twitter.com/love_marijuana">@love_marijuana</a> (デベロッパーズバイブルの人)<br />
<a href="http://twitter.com/umotti">@umotti</a> (うさできの人)<br />
<a href="http://twitter.com/nbuy">@nbuy</a> (eguideの人)<br />
<a href="http://twitter.com/naaon">@naaon</a> (d3diaryの人)<br />
<a href="http://twitter.com/AXYZ_SAK">@AXYZ_SAK</a> (アクシズの人)<br />
<a href="http://twitter.com/naomi_xoops">@naomi_xoops</a> (テーマの人)<br />
<a href="http://twitter.com/kilica">@kilica</a> (XCL2.2コアの人)<br />
<a href="http://twitter.com/naopon">@naopon</a> (xpWikiの人)<br />
<a href="http://twitter.com/nunoluciano">@nunoluciano</a> (XCL2.2コアの人)<br />
<a href="http://twitter.com/ohwada">@ohwada</a> (OpenIDの人)<br />
<a href="http://twitter.com/tohokuaiki">@tohokuaiki</a> (D3ブログの人)<br />
<a href="http://twitter.com/RyujiAMANO">@RyujiAMANO</a> (ryusの偉い人)
</p>]]></description>
<pubDate>Fri, 17 Jun 2011 12:12:57 +0900</pubDate>
<guid>http://suin.asia/2011/06/17/super_xoopsers_in_twitter</guid>
<category domain="http://suin.asia/tag/XOOPS">XOOPS</category>
<category domain="http://suin.asia/tag/Twitter">Twitter</category>
</item>
<item>
<title>Twitterのように時間を「○分前」と表現をするメソッドをDateTimeクラスに追加してみた</title>
<link>http://suin.asia/2011/02/06/time_ago</link>
<description><![CDATA[<p>TwitterやFacebookなどのリアルタイム性の高いソーシャルメディアは、
投稿した時間を年月日時分秒ではなく、投稿時点からの経過時間で表現しています。
大雑把に見たところ、今日中の時間は「○時間前」「○分前」と表現し、
昨日以前の時間は年月日時分秒で表現しているようです。
ここでは、便宜上「○時間前」「○分前」などの表現を「相対時間」、
年月日時分秒を「絶対時間」と言う事にします。</p>


<h3>仕様</h3>

<p>上の動作を仕様に落としこむと次のようになります。</p>

<ul>
<li>比較対象日時と現在日時の日付が一致する場合、相対時間で表現する。</li>
<li>比較対象日時と現在日時の日付が異なる場合、絶対時間で表現する。</li>
</ul>

<p>上の2つだけだと、日付変更直後の時間が考慮されないので、
日付変更後しばらくは、相対時間で表現する必要があるので、次の仕様も追加しておきます。</p>

<ul>
<li>比較対象日時と現在日時の差が3時間以内の場合、相対時間で表現する。</li>
</ul>


<h3>DateTimeクラスとDateIntervalクラス</h3>

<p>相対時間を表現する関数を別途定義してもいいのですが、今回はDateTimeクラスを継承する形で実装します。
具体的にはDateTimeクラスを継承し、timeAgo()メソッドを追加で定義します。</p>

<p>DateTimeは時間をオブジェクト指向的に扱えて便利です。
DateIntervalクラスと組み合わせることで、日時の差が簡単に求められるのも利点です。
ただし、DateIntervalはPHP5.3以上の環境が必要になるので注意が必要です。
相対時間を求める処理に、DateIntervalクラスを活用します。</p>


<h3>メソッド実装</h3>

<pre name="code" class="php">
&lt;?php
namespace Suin;

class DateTime extends \DateTime
{
	public function timeAgo()
	{
		$now = new DateTime('2011-02-06 00:00:00');
		$nowDate  = $now-&gt;format('Ymd');
		$thisDate = $this-&gt;format('Ymd');
		$nowTimestamp  = $now-&gt;getTimestamp();
		$thisTimestamp = $this-&gt;getTimeStamp();

		// 同一日時か、日付変更直後の場合でも3時間以内の差なら、○○前と表現する
		if ( $nowDate === $thisDate or $nowTimestamp - $thisTimestamp &lt;= 60 * 60 * 3 )
		{
			$diff = $this-&gt;diff($now);

			switch ( $diff )
			{
				case ( $diff-&gt;h &gt; 0 ) : $format = '%h hours ago'; break;
				case ( $diff-&gt;i &gt; 0 ) : $format = '%i minutes ago'; break;
				case ( $diff-&gt;s &gt; 0 ) : $format = '%s seconds ago'; break;
				default : $format = 'just now'; break;
			}
	
			return $diff-&gt;format($format);
		}
		else
		{
			// 昨日以前の日時は○年○月○日○時○分○秒で表現する
			return $this-&gt;format('Y-m-d H:i:s');
		}
	}
}
</pre>

<h3>使い方</h3>

<pre name="code" class="php">
&lt;?php

namespace;

$postedDatetime = new \Suin\DateTime('2011-02-05 16:30:00');
$ago = $postedDatetime-&gt;timeAgo();
</pre>

<p>上の例では、2011-02-05 16:30:00からの相対時間を取得して$agoに代入してます。</p>

<h3>まとめ</h3>

<p>TwitterやFacebookで見かける投稿時間からの経過時間を表現するクラスをDateTimeクラスを継承して作ってみました。
このクラスを使うと、今日中の時間は経過時間で、昨日以前の日時は年月日時分秒で表現することができます。</p>]]></description>
<pubDate>Sun, 06 Feb 2011 17:45:05 +0900</pubDate>
<guid>http://suin.asia/2011/02/06/time_ago</guid>
<category domain="http://suin.asia/tag/PHP">PHP</category>
<category domain="http://suin.asia/tag/DateTime">DateTime</category>
<category domain="http://suin.asia/tag/Twitter">Twitter</category>
<category domain="http://suin.asia/tag/Facebook">Facebook</category>
</item>
<item>
<title>ブログ・Twitter・Wassrの更新をmixiの日記にしてマイミクに知らせるしくみ</title>
<link>http://suin.asia/2009/03/16/twitterwassrmixi.html</link>
<description><![CDATA[<p>ブログやTwitterでつぶやいても、そもそも自分がやっているブログやTwitterの存在を知らないとか、知ってるけどいちいち見には来てくれないという理由で、マイミクのリアクションが薄いときがあります。</p>
<p>見に来てくれないなら、こっちから見せに行こうということで、ブログやTwitterでの更新をmixiの日記にする仕組みを実装してみました。mixiの日記にすると、マイミクの目に触れる確率かかなり高くなります。</p>
<p>どのような仕組みか簡単に説明すると、xreaにあらかじめ仕込んでおいたcronジョブを使って、各ブログのRSSフィードを取ってきて、それをまとめてケータイにメールし、そのメールをmixiに投稿して完了というかんじです。</p>
<p>ケータイにメールを送ってって、かなり遠回りなことしてるなー、と思われたかもしれません。しかし、mixiは日記投稿のAPIがないので、php(snoopyなど)で直接HTTPでつないで日記に書き込む方法は、ちょっと危険なのです。なんでかというと、mixiのデザインやインターフェイスが変わった瞬間に、そのプログラムがうまく日記に書き込みできなくなる可能性があるからです。</p>
<p>逆にケータイからメールで日記を書く場合は、mixi自体が仕様変更しても、その変更に追従するのが容易です。そもそもメール投稿が大きく仕様変更されることはあまり考えられないので、メールを転送する作業が手動になってしまいますが、やっぱりメンテのいらない方法のほうが良いのです。</p>
<p>このドミノ戦法のしくみを図解すると下のようになります。</p>
<p class="photo"><a href="http://picasaweb.google.com/lh/photo/hUQz3t6VKgBw1pxrl41f7w?feat=embedwebsite"><img src="http://lh4.ggpht.com/_dG0BBWAhWis/Sb4jW1LeMqI/AAAAAAAAAaU/MQ6gleFQJD4/s800/HitomatomeShikumi.png" /></a></p>
<p>こうして、こんな感じで日記に投稿されます。↓</p>
<p class="photo"><a href="http://picasaweb.google.com/lh/photo/3jQRK9SDnj0M_6WnmerUYA?feat=embedwebsite"><img src="http://lh4.ggpht.com/_dG0BBWAhWis/Sb4jVoVTHeI/AAAAAAAAAaM/Q2Oupjb9mLU/s800/HitomatomeScreanShot.png" /></a></p>]]></description>
<pubDate>Mon, 16 Mar 2009 18:43:24 +0900</pubDate>
<guid>http://suin.asia/2009/03/16/twitterwassrmixi.html</guid>
<category domain="http://suin.asia/tag/Web">Web</category>
<category domain="http://suin.asia/tag/twitter">twitter</category>
<category domain="http://suin.asia/tag/mixi">mixi</category>
</item>
</channel>
</rss>
