Hatena::ブログ(Diary)

システムエンジニア奮闘記 〜ダメダメSEの備忘録〜

オススメ商品

2010/03/31

Twitter Post Bookmarklet with goo.gl Short URL

見ているページをTwitterに投稿するBookmarkletを作った。

殆ど参考のサイトそのままだけどURLgoo.glを使いたかったので少し手を入れた。


-----

javascript:

var d=document,

w=window,

l=location,

e=encodeURIComponent,

t=(d.selection)?d.selection.createRange().text:(w.getSelection)?w.getSelection():(d.getSelection)?d.getSelection():'';

w.callback = function(response){

if(response.error_message){

alert("An error occured: " + response.error_message);

}else{

var f='http://twitter.com/home/?status=’+e(t)+'+'+e(d.title)+'+'+e(response.short_url);

w.open(f,'_blank');

}

};

var s = document.createElement("script");

s.src = "http://ggl-shortener.appspot.com/?url=" + encodeURIComponent(window.location.href) + "&jsonp=callback";

void(document.body.appendChild(s));

-----


かなりヤッツケなのでリファクタリングのコメントは喜んで受けます。


〜参考〜

見ているページをTwitterに投稿するBookmarkletブログ用ボタン [C!]

http://creazy.net/2009/06/retweet_bookmarklet_and_blogparts.html

goo.gl bookmarklet Bookmarklet - Marklets.com

http://www.marklets.com/Bookmarklets/goo.gl%20bookmarklet.aspx

2009/12/20

Twitter Bot by PHP

PHPTwitterBotを作った。

実行された時に自動フォローやフォロー解除する仕組みを実装した。


0.

PEAR::HTTP_Client」を使うと超簡単なので使う。

-----

pear install --alldeps HTTP_Client

-----


1.

Botプログラム

指定するのは「$username」と「$password」で「$msg」に入れた文字をPostする。

<?php

require_once 'HTTP/Client.php';

$twitter_url = 'http://twitter.com/';
$post_url    = $twitter_url . 'statuses/update.xml';
$follow_url  = $twitter_url . 'followers/ids.xml';
$friend_url  = $twitter_url . 'friends/ids.xml';
$create_url  = $twitter_url . 'friendships/create.xml';
$destroy_url = $twitter_url . 'friendships/destroy.xml';

$username = 'xxxxxxxx';
$password = 'xxxxxxxx';

$basic  = array('Authorization'=>'Basic ' . base64_encode($username . ':' . $password));
$client = new HTTP_Client(null, $basic);

// post message
   ・
   ・
   ・
$client->post($post_url, array('status' => $msg));

// get follow ids
$follow_ids = array();
$client->get($follow_url);
$res = $client->currentResponse();
$xml = new SimpleXMLElement($res['body']);
for ($i = 0; $i < count($xml->id); $i++) {
    $id = $xml->id[$i];
    $follow_ids[] = (int)$id;
}

// get friend ids
$friend_ids = array();
$client->get($friend_url);
$res = $client->currentResponse();
$xml = new SimpleXMLElement($res['body']);
for ($i = 0; $i < count($xml->id); $i++) {
    $id = $xml->id[$i];
    $friend_ids[] = (int)$id;
}

// create friend step
$ids = array();
$ids = array_diff($follow_ids, $friend_ids);
foreach ($ids as $id) {
    $client->post($create_url, array('user_id' => $id));
}

// destroy follow step
$ids = array();
$ids = array_diff($friend_ids, $follow_ids);
foreach ($ids as $id) {
    $client->post($destroy_url, array('user_id' => $id));
}

〜参考〜

Twitterbotを作ってみた - math, programming, and little something to laugh

http://d.hatena.ne.jp/aomori-ringo2/20091001/1254541419

PHPTwitterに投稿 - HIRACCHI H.D.

http://d.hatena.ne.jp/hirataka522/20080126/1201300282

PHPによる誰でも出来る簡単Twitterbotの作り方 - 遥か彼方の彼方から

http://d.hatena.ne.jp/tek_koc/20080804/1217822667

[観] Twitter API 仕様書 (勝手に日本語訳シリーズ)

http://watcher.moe-nifty.com/memo/2007/04/twitter_api.html

2009/11/10

「自分が欲しいものを作る」という件

神田うのが「自分が欲しいものを作る」と言っていたそうだ。


そもそもリサーチなんて大衆の総意を量るだけだし、

自分も大衆の一部だと考えれば、成功する可能性も(それなりに)高いと思う。

余計な時間を省くことも出来るし。


問題は「説得力」で「自分が欲しいから」では、周りも動かないし費用も捻出してもらえない。


結局、リサーチして「世間が求めているのはコレです。」って言った方が簡単という話になる。


神田うのは自力(資本・資金)が既にあるので、自由に事業を行うことが可能だったと思える。


一社会人が会社を動かして、同様のコトをするのはナカナカ難しい。


社長とかに成ると、自分がやりたいコトをやれる。

そういうコトだと思う。

2009/06/17

VMware Tools Install

VMwareのGuestOSで時刻がズレまくるのを対応してみた。


WindowsConsoleインストール設定

-----

Windowsツールバー

VM -> Install VMware Tools...

-----


▼ イメージ(RPM)のコピー ※CR-ROM上からの実行はNG

-----

mkdir /mnt/cdrom

mount /dev/cdrom /mnt/cdrom

cp /mnt/cdrom/VMwareTools-1.0.x-xxxxx.i386.rpm /usr/local/src/

cd /usr/local/src/

rpm -ihv /usr/local/src/VMwareTools-1.0.x-xxxxx.i386.rpm

-----


▼ 「vmware-config-tools.pl」実行

-----

vmware-config-tools.pl

-----

   ・

   ・

   ・

Setup is unable to find the "gcc" program on your machine. Please make sure it

is installed. Do you want to specify the location of this program by hand?

[yes]

-----

gccが見つからない」と言われた。


gccインストール

-----

yum install gcc

-----


▼ 「vmware-config-tools.pl」再実行

-----

vmware-config-tools.pl

-----

   ・

   ・

   ・

What is the location of the directory of C header files that match your running

kernel? [/usr/src/linux/include]

The path "/usr/src/linux/include" is not an existing directory.

[yes]

-----

「C headerファイルのディレクトリが見つからない」と言われた。


カーネルヘッダー関連をインストール

-----

yum install kernel-headers kernel-devel

-----


▼ 「vmware-config-tools.pl」再々実行

-----

vmware-config-tools.pl

-----

完了。


▼ 時刻同期設定

-----

【.vmxファイル】

tools.syncTime = "TRUE"

-----


▼ 時刻同期(カーネル起動)設定

-----

vi /boot/grub/grub.conf

-----

kernel /kernel-x.x.x-x.x.x root=/dev/sda clock=pit nosmp noapic nolapic

-----

「clock=pit nosmp noapic nolapic」を追記。


▼ 起動時に失敗する時は「vmware-config-tools.pl」を再実行

-----

vmware-config-tools.pl

-----


〜参考〜

[ アトム-サイト ] VMware ゲストOS上の時刻

http://atom.blogdns.com/1/368.html

VMwareLinux を動かした際の時刻のずれを解消する(続き) - WebOS Goodies

http://webos-goodies.jp/archives/50179807.html

2009/06/16

MySQLの起動ユーザを変更する件

XAMPP for Linux (LAMPP)」だとMySQLがnobodyユーザで実行されるので変更した。


vi /opt/lampp/etc/my.cnf

-----

# The MySQL server

[mysqld]

user = mysql(←追記)

port = 3306

socket = /opt/lampp/var/mysql/mysql.sock

-----


「/opt/lampp/var/mysql」配下の権限変更を忘れずに。