2007年12月4日 星期二
2007年11月30日 星期五
[PHP] fsockopen 之簡單的實作範例
<?
if( empty($_GET['u']) )
return;
class 叮叮噹噹 {
public static function getImageContent( $src_url ){
$host = "叮叮噹噹";
$fp = fsockopen( "叮叮噹噹" , 80, $errno, $errstr, 30);
if( !$fp ){
$mseg = $errst." (".$errno.")";
return ;
}else{
$host = "叮叮噹噹";
$target = strstr( substr( $src_url , strlen("http://") ) , "/" );
$filename = substr( $target , strrpos( $target , "/") );
$filename = substr( $filename , 1 );
$referer = "http://叮叮噹噹/";
$out = "GET ".$target." HTTP/1.1\r\n";
$out .= "Host: ".$host." \r\n";
$out .= "Referer: ".$referer." \r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
$content = "";
$inheader = 1;
while (!feof($fp)) {
$line = fgets($fp,1024);
if ($inheader && ( $line == "\n" || $line == "\r\n" ) ) {
$inheader = 0 ;
}else{
if ($inheader == 0) {
$content.=$line;
}
}
}
fclose($fp);
if( empty($content) )
return;
header("Content-Type: application/octet-stream");
header('Content-Disposition: inline; filename="'.$filename.'"');
echo $content;
}
}
}
叮叮噹噹::getImageContent( $_GET['u'] );
?>
2007年11月6日 星期二
[VIM] 打出 ^M
Ctrl + v
接著把 ctrl 不放
但放開 v 改換按 m 就會產生 ^M 啦
同理於 ^@ = Ctrl + v -> Ctrl 繼續按著 但放開 v -> Ctrl + Shift + @
2007年11月5日 星期一
[VIM] %s/@\n/@\n/g 之產生 ^@ 問題
檔案內容:
@
@U:495410000
@ID:
@
@U:495410000
@ID:
@
@U:495410000
@ID:
...
最基本的格式是
@
@U:
@Name:
若想增加欄位成為
@
@U:
@Name:
@Info:
此時透過 vim 下的參數是
:%s/\n@\n/\n@Info:\n@\n/g
以此減少檔案內需要變動的資料數
但轉換後卻會出現擾人的'^@'符號
與 Randy 閒聊後發現 :%s/前面/後面/g 的"後面"中的'\n'會有問題
改成 '\r' 卻可以達到一樣想要的效果!
:%s/\n@\n/\r@Info:\r@\r/g
在此紀錄一下
[Javascript] Key Event 之蔓延的處理方式
有時偵測到 Key 時, 不想讓 Key 繼續蔓延下去使用, 即可考慮這個方式處理
function preventDefault(ev) {
if (ev.preventDefault){
ev.preventDefault();
}else if (ev.cancelBubble){
ev.cancelBubble = true;
}else{
ev.returnValue = false;
}
}
document.onkeydown=keyAtPost;
function keyAtPost(e){
var evt = window.event || e ;
var evt_key = evt.which != null ? evt.which : evt.keyCode ;
var GetDefine = 0 ;
if ( evt_key > 47 && evt_key < 58 ){ // 以數字鍵為例
switch( state_control ){
...
case STATE_INIT:
state_control = STATE_GO;
...
GetDefine = 1;
break;
...
}
}
if( GetDefine ) {
preventDefault(evt);
}
}
當 match 到一個自訂的狀態時,不想讓此鑑盤事件繼續蔓延到其他地方,好比如現在正在 textarea 時 把數字鍵當成特殊鍵使用,並且不想在 textarea 顯示數字時 可採用這種方式處理
--
在此感謝 Vexed 學長的教導 :D