2012-05-18
■facebook php sdk api でログアウトする方法

destroySession()をすればOKでした。
$logoutUrl = $facebook->getLogoutUrl();
$facebook->destroySession();
header("Location: ".$logoutUrl);
いろんなBlogで
「ログアウトはgetLogoutUrl()で生成したURLに飛べばいい」
って言ってるが出来ない。
たぶんだれもログアウトを試してないと思われる。
2011-09-08
2011-08-04
■Youtubeで、ページスクロールしてブラウザに現れたときに再生を始めるJavascript

ちょっと頼まれたので作ったコードです。
jQueryにはLazyLoadなる画像の後読みのプラグインがありますが
あれは画像の表示されたら画像を読みにいくっていうことで
無駄な読み込みを減らす事ができたりするってことでしたが
(結局のところ読みこんじゃうらしいですね)
Youtubeの動画をページに埋め込んで、スクロールして
表示されたときに、再生してくれたらいいなってことで
jQueryのLazyLoadをコードを眺めていたら
どうもスクロール位置が云々している様子。
だったら、スクロールイベントで、動画を貼付けた位置になったら
再生させればいいんじゃね?ってことで
じゃあ、再生コントロールはどうしたかっていうと、
YouTube JavaScript Player APIってのがあるので、これを利用。
設定的には動画の表示が画面の2/3を超えたら再生を始めるようにしました。
また、リロードで動画の表示位置からいきなり始まったときは
スクロールをちょっとすると反応するようです。
ってことで、プラグインではないけど作ったコードをさらしておきます。
何かの参考にしてみてくださいw
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js"></script>
<!-- 設定 -->
<script type="text/javascript">
var youtube_video_id="nCCbRsXB6ng";
var youtube_video_width= "320"
var youtube_video_height= "330"
var youtube_video_volume= 10;
</script>
<script type="text/javascript">
function onYouTubePlayerReady(playerId) {
ytplayer1 = document.getElementById("myytplayer");
}
$(document).ready(function(){
var use_youtube_video_width;
var use_youtube_video_height;
var use_youtube_video_volume;
if( typeof youtube_video_width != "undefined" )
use_youtube_video_width =youtube_video_width
else
use_youtube_video_width = "400"
if( typeof youtube_video_height != "undefined" )
use_youtube_video_height =youtube_video_height
else
use_youtube_video_height = "330"
if( typeof youtube_video_volume != "undefined" )
use_youtube_video_volume =youtube_video_volume
else
use_youtube_video_volume = "0"
var params = { allowScriptAccess: "always" };
var atts = { id: "myytplayer" };
swfobject.embedSWF("http://www.youtube.com/v/"+youtube_video_id+"?enablejsapi=1&playerapiid=ytplayer","ytapiplayer",use_youtube_video_width, use_youtube_video_height, "8", null, null, params, atts);
var youtube_hello_flg=false;
$(window).scroll(function () {
if(youtube_hello_flg==false){
var scroll_y = document.documentElement.scrollTop || document.body.scrollTop;
var off = $('#youtube_moviestart_trigger_tag').offset();
var win_height = $(window).height()
if(off.top<=(scroll_y + win_height/3*2) && youtube_hello_flg==false){
if( typeof ytplayer1 != "undefined" ){
youtube_hello_flg=true;
ytplayer1.playVideo(); //再生開始(自動再生)
ytplayer1.setVolume(use_youtube_video_volume); //音量を20に設定
}
}
}
});
});
</script>
3<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
2<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
1<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
0
<!-- youtube動画 -->
<div id='youtube_moviestart_trigger_tag' align='left' style='margin: 5px 20px 0;float:left;'>
<div id='ytapiplayer'> You need Flash player 8+ and JavaScript enabled to view this video.</div>
</div>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>end
2011-08-03
■Mac上のVirtualBoxに作成したGuestOS(CentsOSLinux)からホストのフォルダをマウントする

(べつにVirtualBoxじゃなくてもVMware fusionでもパラレルでもいけるでしょう)
たぶん普通なら、ゲストOSでexportしたディレクトリをMacでマウントすればいいんだけど
四六時中ゲストOSを立ち上げっぱなしではないので
ゲストOS上のファイルをオープンしっぱなしにできない訳で。。。
じゃあ、ホストのディレクトリをゲスト側でマウントしちゃえばいいじゃん
と思いついた次第w
で、ググってみるとsshfsでやるのがいいらしいってことで
以下は手順
ゲストOSにsshfsをインストール
yumで一発かと思ったけどそうでもないので
wget 'http://downloads.sourceforge.net/project/fuse/fuse-2.X/2.8.5/fuse-2.8.5.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Ffuse%2Ffiles%2Ffuse-2.X%2F&ts=1312361792&use_mirror=cdnetworks-kr-1' tar xzvf fuse-2.8.5.tar.gz cd fuse-2.8.5 ./configure make make install wget "http://downloads.sourceforge.net/project/fuse/sshfs-fuse/2.3/sshfs-fuse-2.3.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Ffuse%2Ffiles%2Fsshfs-fuse%2F2.3%2F&ts=1312361617&use_mirror=cdnetworks-kr-1" tar xzvf sshfs-fuse-2.3.tar.gz cd sshfs-fuse-2.3 ./configure make
(wgetするファイルは適宜最新バージョンを確認してください)
でも、このままsshfsを実行すると
sshfs: error while loading shared libraries: libfuse.so.2: cannot open shared object file: No such file or directory
てなエラーが出る可能性があるので
/etc/ld.so.conf
を
include ld.so.conf.d/*.conf /usr/local/lib
として
ldconfig
を実行しておく
マウントする
アップルアイコンから
「システム環境設定」-「共有」
を選び、
リモートログインを「入」にする。
このとき、
このコンピュータにリモートからログインするには "ssh xxxxxxx@192.xxx.xx.xx"と入力してください。
とでてるけど、IPのところはゲストとホストの関係でのIPにしてください。
(たぶんゲストOSとはNATやらホストオンリーアダプタなどでネットワークを組んでいると思うので
ゲストからホストに接続できるIPに読み替えてください。
で、ゲストOS側でマウントポイントを作成(普通にmkdirでディレクトリ作成)をつくって
mkdir /mac
sshfsでマウント
sshfs xxxxxxxx@192.168.56.1:/Users/xxxxxxxxx /mac
(IPとユーザ名とマウントしたいmac側のディレクトリは読み替えてね
192.168.56.1はホストオンリーアダプターでのホスト側の自環境でのIPアドレスです)
これで
[root@localhost ~]# ll /mac 合計 448 drwxr-xr-x 1 xxxxx xxxxx 170 6月 1 11:29 Applications drwx------ 1 xxxxx xxxxx 2312 8月 1 20:05 Desktop drwx------ 1 xxxxx xxxxx 374 6月 15 19:05 Documents drwx------ 1 xxxxx xxxxx 10676 8月 3 17:56 Downloads drwx------ 1 xxxxx xxxxx 1598 7月 26 17:24 Library drwx------ 1 xxxxx xxxxx 102 12月 13 2010 Movies drwx------ 1 xxxxx xxxxx 136 12月 13 2010 Music drwx------ 1 xxxxx xxxxx 238 4月 25 15:39 Pictures drwxrwxrwx 1 xxxxx xxxxx 238 12月 14 2010 Public drwxr-xr-x 1 xxxxx xxxxx 170 12月 13 2010 Sites
ってな感じになってるんじゃないですかねー
2011-04-19
■iTunes Connectの 「Release This Version」ボタン

アプリ再申請をする際、承認後のリリースについて「Version Release Control」にて
Automatically release アプリ名 バージョン番号 once it has been approved I will release アプリ名 バージョン番号 after it has been approved
という項目があり、
「I will release アプリ名 バージョン番号 after it has been approved」 の開発者側で行うを選択をすると、
申請が承認されても公開にはならずに、
「Pending Developer Release」というステータスになります。
このとき、iTunes Connectには 「Release This Version」ボタンが表示されますが
ここについて言及がほとんどないので、どういう動きをするかが不安でしたが、
このボタン、押すと確認が求められずに即座にリリース処理が走り出し、
「Processing for App Store」というステータスに変わり、
しばらく(おおよそ5分程度)すると「Ready for Sale」になります。
が、
実際にダウンロードできるようになるにはもうしばらくかかるようです。
(1時間〜2時間程度かかるような気がしますし、検索するたびに変化するので
落ち着くにはもう数時間かかりそう。。)
ので、バージョンアップリリース日が決まっているならばその日までボタンを押すのはひかえて
リリースする2、3時間前にボタンを押すのがいいんじゃないかな?と思います〜
(以上、2011年4月19日現在の情報です)
2011-04-08
■KeyRemap4MacBookでF10,F11,F12にHome,End,Delを割り当てる

ウインドウズな人にはMacBookのキーボードのキーって足りないんすよ
いや、しってるよ。Fnとかcommandを使えばできることを。。
でも、その器用さは俺にはなくてさw
で、行き着いたのはKeRemap4MacBookなのですが
標準設定にはF12にDel(FORWARD_DELETE)を割り当てるのはあるんだけど
俺好みの女にはできそうにないので
設定を追加することにして、俺好みに仕立てちゃる!
private.xml(ぐぐってね)に以下の設定を追加して
<?xml version="1.0"?> <root> <item> <name>F10をHOME、F11をEND、F12をDELに変更</name> <appendix>Change F10 to Home,F11 to END,F12 to DEL</appendix> <identifier>private.standard</identifier> <autogen>--KeyToKey-- KeyCode::F10 , KeyCode::CURSOR_LEFT, ModifierFlag::COMMAND_L</autogen> <autogen>--KeyToKey-- KeyCode::F11 , KeyCode::CURSOR_RIGHT, ModifierFlag::COMMAND_L</autogen> <autogen>--KeyToKey-- KeyCode::F12 , KeyCode::FORWARD_DELETE</autogen> </item> </root>
ReloadXMLし、
検索窓で「F11」とか入れれば
出てくると思うので、チェックすれば完了。
これで
F10 → HOME
F11 → END
F12 → DEL(FORWARD_DELETE)
になります。
あとはキートップ上にシールでも張っておけばいいと思いますw
根からのまっかーな人には耐えられないだろうなぁwwwwwwww
Exposé?なにそれ?
2011-03-29
■APNSで突然エラーが出るようになった!?

iPhoneアプリでApple iPhone Notification Services(APNS)で開発しているとき
自分はphpで送信してるんですが(方法はググってね)
前までうまく行ってたのに、
なぜか動かなくなって以下のようなエラーを吐くようになりました。。
ポートが閉じられたのかな、、なんておもっていろいろ調べていたけど
どうも、ただ単にAPNS開発用の証明書の期限が切れてただけでした。
ので、Provisioning PortalのAPP IDsで同じように作成しなおしてください。
(一回作っているので作り方はわかりますよね? 自分は完璧にあたふたしましたw)
PHP Warning: stream_socket_client(): SSL operation failed with code 1. OpenSSL Error messages: error:14094415:SSL routines:func(148):reason(1045) in /xxxxx/apns_send.php on line xx Warning: stream_socket_client(): SSL operation failed with code 1. OpenSSL Error messages: error:14094415:SSL routines:func(148):reason(1045) in /xxxxx/apns_send.php on line xx PHP Warning: stream_socket_client(): Failed to enable crypto in /xxxxx/apns_send.php on line xx Warning: stream_socket_client(): Failed to enable crypto in /xxxxx/apns_send.php on line xx PHP Warning: stream_socket_client(): unable to connect to ssl://gateway.sandbox.push.apple.com:2195 (Unknown error) in /xxxxx/apns_send.php on line xx Warning: stream_socket_client(): unable to connect to ssl://gateway.sandbox.push.apple.com:2195 (Unknown error) in /xxxxx/apns_send.php on line xx Failed to connect 0
(ググっても出てこなかったので、同じような境遇にあった人のために残していきます)
APNSでとても参考にさせていただいたサイト
2011-02-15
■MacにEclipsePDPをいれて日本語化

まだ入れたばかりなのでこれで合ってるかはわかりませんが
備忘録として・・・
前提として、Eclipse PDT 2.2.0 Mac OSX 64-bit版で試しています。
・http://www.eclipse.org/pdt/downloads/
Eclipse PDT 2.2.0 All In Ones / Eclipse PHP Package
All-In-One Bundle including Eclipse and required dependencies All-In-One Mac OSX Cocoa 64-bit
・http://mergedoc.sourceforge.jp/
から
Eclipse 3.6.1 Helios Pleiades All in One
Standard All in One (JRE なし)PHP
・個々を解凍する。
・Eclipse 3.6.1 Helios Pleiades内のeclipseフォルダの「dropins」フォルダを
・Eclipse PDTのeclipseフォルダのEclipe(またはEclipse.app)を
「パッケージの内容を表示」をし、
Contents/MacOS とたどり、
eclipse.ini をテキストエディット等で開き、
最後に
-javaagent:../../../dropins/MergeDoc/eclipse/plugins/jp.sourceforge.mergedoc.pleiades/pleiades.jar
を追加して保存。
・Eclipe(またはEclipse.app)をダブルクリックで日本語化されたEclipseが立ち上がります。
そのときのタイトルがこんな感じなはずです。
うまく立ち上がったら、Eclipse PDTのeclipseフォルダをアプリケーションフォルダに入れてしまいましょう。
以上です
Let's Develop!
立ち上がらない、エラーになるなどの場合はeclipse.iniに追加した設定が間違ってるのかも・・
2010-12-23 PEAR::Services_ShortURL で & が入るURLは & を %26 にする

題名どおり、
&が付いているURLは
どうもAPIを経由する際、
&は引数になってどこかに行ってしまうのかどうかわからないけど
& を %26 にして渡さないと行けない様子w
単純にstr_replaceして対応した次第。
$url="http://d.hatena.ne.jp/imaiworks/?a=b&c=test"
Services_ShortURL::setServiceOptions('Bitly', array(
'login' => 'xxxxxx',
'apiKey' => 'R_xxxxxxxxxxxxxxxxxxxxx'
));
$api = Services_ShortURL::factory('Bitly');
$url = str_replace("&","%26",$url);
$short_url= $api->shorten($entry);
2010-10-21
■たぶんこれであってる、objective-cのメソッドの作り方

objective-cのメソッドの複雑さがさっぱり理解できずに
引数わたしもままならない状態でアプリを奇跡的につくっていたんだが
最近やっとこ理解できてきたので、この時点でわかっているであろうことをつらつらと・・
よく値を設定する際に
[scrollView setZoomScale:1.3 animated:NO];
という感じで、値をセットすることがあるが
普通の感覚だと
scrollview.zoomScale = 1.3;
とやるのが当たり前だと思っていて、この二つの差がよくわからなかったが
たぶん、おおよそどちらも一緒。
で、この時のsetZoomScaleは多分、UIScrollViewのメソッドで
zoomScaleに値をセットするためだけに存在する。(ウソかもしれないのは話半分でw)
で、その後のanimatedは何かという話になるが
animatedの仕組みは別にして、animatedという引数にNOをセットしてる。
素直にみれば、そういうこと。終了w
いやいや、、
まあ、既存のクラスやメソッドはそれでいいんだわ。
決められたようにセットしておけば動くんだからね。
で、本題。
独自でメソッドを作るにはどうする?っていう話。
先のsetZoomScaleがメソッド名でanimatedは引数名・・・
これに気がつけばだいぶ話は早いんだが、ググってもそういう話が全く出てこず
もしくは、この話に行き着く調べ方がまったくわからんんすよ・・
たとえば、メソッドに3つの値を渡したいとします。
phpなら
function aaa(bbb,ccc,ddd)
{
}
aaa(1,2,3);
超簡単。(こういうのが基本的になってる脳なのでw)
で、objective-cだと、
.hの@interface{}の後にプロトタイプ宣言(ってobjective-cでもいうのかな?、、調べないとw)
-(id) aaa:(NSInteger *) bbb set_ccc:(NSInteger *) ccc set_ddd:(NSInteger *) ddd ;
.mにメソッドを追加して
-(id) aaa:(NSInteger *) bbb
set_ccc:(NSInteger *) ccc
set_ddd:(NSInteger *) ddd
{
NSLog(@"%d %d %d",bbb,ccc,ddd);
}
どこかでよびだす。
[self aaa:1 set_ccc:2 set_ddd:3 ];
以上、メソッドの作り方、使い方。
これでいいはず。自分のところでは動いてるw
(要するにこれ以上解説できる能力が今は(当分?)無いw)
わざとメソッド名と引数名や引数に違い出してみたが、わかりやすく見えただろうか?
メソッドに値を渡すときの違いが微妙なイメージがあるから
本当にわかりにくく、悩みまくってたが、徐々に理解ができてきた・・・
こんだけのことだがわからなかったのは、頭が固いのかなぁ?とかw






