2010年1月19日 星期二
python 區域模糊找圖
====================
原由:
====================
此功能就像是按鍵精靈中的"區域模糊找圖"一樣
可以指定一個區域,然後找到所需要的圖片,並傳回座標
會寫這程式其實是因為按鍵精靈實在是不太好掌控
稍微複雜一點的就寫不出來 = ="(語法不合胃口 顆顆)
所以就想到弄別的程式語言寫,不過我最熟悉的只有PHP
也不能來做這檔事
所以就研究起來之前想學的語言PYTHON
(順便學一學)
經過一個晚上的研究,以及找方法
(= =中文資料真的頗少)
終於...發現了幾個可以抓取螢幕的小程式
(顆顆 所以才PO上來)
也經過了一個早上才終於寫出來
不過速度還是有點不太理想(已經有稍微修正,可是還是不盡理想)
====================
程式碼
====================
import psyco
psyco.full()
from PIL import Image, ImageGrab
import math
#FindPic(左上X,左上Y,右下X,右下Y,圖檔路徑,相似度)
def FindPic(ux,uy,dx,dy,path,like):
imS = ImageGrab.grab((ux,uy,dx,dy))
imD = Image.open(path)
for x in range(imS.size[0]-imD.size[0]):
for y in range(imS.size[1]-imD.size[1]):
if(imD.size[0] >= imD.size[1]): #這邊是快速版,只比對斜線
r = imD.size[1]
else:
r = imD.size[0]
t = 0
ct = 0
for xy in range(r):
(DR,DG,DB) = imD.getpixel((xy,xy))
(SR,SG,SB) = imS.getpixel((xy+x,xy+y))
if(DR==SR and DG==SG and DB==SB):
t=t+1
if(t >= r*like):
ct=1
#return x+ux,y+uy #這邊是快速版,只比對斜線
c = 0
e = 0
if(ct==1):#這邊是完整比對
for imDX in range(imD.size[0]):
for imDY in range(imD.size[1]):
(DR,DG,DB) = imD.getpixel((imDX,imDY))
(SR,SG,SB) = imS.getpixel((imDX+x,imDY+y))
if(DR==SR and DG==SG and DB==SB):
c = c+1
if(c >= imD.size[0]*imD.size[1]*like):
return x+ux,y+uy
else:
e = e+1
if(e >imD.size[0]*imD.size[1]*(1-like)):
break;break;
return -1,-1
print FindPic(85,45,150,100,"c:\\re.bmp",1)
#print FindPic(0,0,1024,768,"c:\\re.bmp",1) #re.bmp 要24位元的
====================
附註
====================
此程式需要加裝
psyco (可以省略,速度約差三分之一到二分之一)
PIL
記得縮排
====================
此程式速度還在想加速的方法 = ="
如果要使用 盡量把區域設小一點,不要設全螢幕
不然,可能要很久很久(九秒...)
print FindPic(0,0,1024,768,"c:\\re.bmp",1)
不過如果有限制的話
速度就還可以接受摟!!
print FindPic(85,45,150,100,"c:\\re.bmp",1)
================END==================
2009年12月23日 星期三
OGame私服問題
OGame私服問題,前情提要
==========================================
前幾天發現FACEBOOK有OGAME
就很開心的想要回鍋一下
不過卻遇到很多伺服器的問題
於是就找阿找的竟然發現OGAME有私服 = ="(恕我孤陋寡聞 顆顆~)
而且竟然還有可以下載的
就很開心的下載了(想要的人GOOGLE一下就有了)
然後就下載了第一個版本,並且安裝~ = ="
不過問題超多的,就放棄了
於是就用了第二個版本,發現還蠻正常的
就照著步驟安裝下去...
一切都很正常
但是到了要註冊新帳號的時候卻出現了
================================================
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'id_planet' at row 1
INSERT INTO ugml_errors SET `username`='newUSER', ' at line 5
OH NO~
於是就很努力GOOGLE找找,找不太到 = ="
只好靠自己了 顆顆~
於是仔細觀察了一下程式碼
就發現了一些問題
可能是和MYSQL版本有關吧!!(實際上我也不知道)
不過問題最後還是有解決了
解決方法:(版本不同我就不知道了)
在 reg.php
(141行) `id_planet`='',
這邊改成
`id_planet`='0',
不過之後卻出現了另一個問題
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'b_hangar_id' doesn't have a default value
INSERT INTO ugml_errors SET ' at line 5
解決方法:
將 MYSQL內
TABLE
`ugml_planets`
內的欄位
b_hangar_id
改成
NULL屬性
就可以正常註冊新帳號了
至於後續問題就有碰到再說吧
顆顆~~只是自己架開心的,(當然不會笨笨的當單機玩 顆顆~ )
2009年12月10日 星期四
簡單後端控制之檔案上傳
(WINDOWS)
================================
原由:
主要是從老師那邊拿到了一個空間
也就是拿到一台電腦的掌控權
不過卻很難控制(學校裡面防護多多)
都只能以遠端控制的方法
要傳檔案只有慢慢慢
所以就乾脆寫了一個簡單的PHP上傳的程式
顆顆顆~~
================================
功能
可以瀏覽整台電腦
可以在指定位置上傳檔案(就是當下瀏覽的位置)
可以覆蓋已經存在的檔案
應該可以中文(要以BIG5,看電腦是甚麼編碼吧)
================================
警告
此程式很危險,最好不要亂放
要記得加上防護,EX帳號密碼認證等等
================================
PHP程式碼
================================
<?php
$localhost = 'http://localhost/';//這邊要改成實際網址初目錄
//$path = 'http://xxx.xxx.xxx.xxx/';
$path = $wwwpath = 'c:\\wamp\\www\\';//對電腦來說放網站的實際位置
//$path = 'c:\\apache\\htdocs\\';
//路徑變好看用
if(isset($_GET['path'])){
$path = $_GET['path'];
$temp = $path = explode('\\',$path);
foreach($temp as $a => $b){
if($b == '..'){
unset($path[($a+1)]);
unset($path[($a)]);
$path[($a-1)] = '';
}
}
$path = implode('\\',$path);
}
//上傳用
if(isset($_POST['submit'])){
if($_FILES['file']['error'] > 0){
switch($_FILES['file']['error']){
case 1 : die("檔案大小超出 php.ini:upload_max_filesize 限制");
case 2 : die("檔案大小超出 MAX_FILE_SIZE 限制");
case 3 : die("檔案僅被部分上傳");
case 4 : die("檔案未被上傳");
}
}else{
if(is_uploaded_file($_FILES['file']['tmp_name'])){
$DestDIR = $path;
if(!is_dir($DestDIR) || !is_writeable($DestDIR))
die("目錄不存在或無法寫入");
//$File_Extension = explode(".", $_FILES['file']['name']);
//$File_Extension = $File_Extension[count($File_Extension)-1];
//$ServerFilename =date("YmdHis") . "." . $File_Extension;
$ServerFilename = $_FILES['file']['name'];
copy($_FILES['file']['tmp_name'] , $DestDIR . "/" . $ServerFilename );
echo $ServerFilename."<br>";
echo $DestDIR."<br>";
echo 'SUCCESS'."<br>" ;
}
}
}
//瀏覽用
$opdir = dir($path);
while($entry = $opdir->read()){
if(is_dir($path.$entry) && $entry != '.'){
echo '<a href = "dealfile.php?path='.$path.$entry.'\\" >'.$entry.'</a> <br />';
}elseif(!is_dir($path.$entry)){
if(strstr($path.$entry,$wwwpath)){
$url = str_replace($wwwpath,$localhost,$path.$entry);
echo '<a href = "'.$url.'" >'.$entry.'</a> <br />';
}else{
echo $entry.'<br />';
}
}
}
$opdir->close();
?>
</p>
<form action="dealfile.php?<?php echo 'path='.$path.$entry ; ?>" method="post" enctype="multipart/form-data" name="form1"
id="form1">
<input type="file" name="file" />
<input name="MAX_FILE_SIZE" type="hidden" id="MAX_FILE_SIZE" value="2000000" />
<input type="submit" name="submit" value="upload" />
</form>
2009年10月10日 星期六
php facebook API 自寫FACEBOOK遊戲
最近BLOG很久沒更新
主要是把時間花在研究FACEBOOK 和 PHP 之間的關係
最一開始是偶然在網路上看到了,可以利用JAVA將PHP寫入GOOGLE內
之後就在研究這個東西
不過幾天後又很偶然的發現了!!
原來FACEBOOK可以直接支援PHP
於是研究兩天之後就決定用PHP來寫FACEBOOK遊戲了
目前已經架構OK!!
名稱暫定 :
FQbattle
http://apps.facebook.com/fqygame/
大家可以來玩玩看!!
目前介面還不是很好看啦 = ="
其實說實在的FACEBOOK開發手冊上面
寫的很詳盡
而且他還有一個語法測試機
也都不錯用
而且期時會用到的語法就那些吧!!
有興趣的話 大家也可以試看看喔!!
2009年9月16日 星期三
GOGOBOX 搜尋引擎(PHP程式碼公開)
從寫好到現在已經過了一段時間了
大概搜到有五十多萬筆就停止了
原因主要是 :
- 資料庫目前還是在自己的小筆電上面,要公開搜尋要移到"大主機"上
- 本人沒有付費空間或是"大主機",只有免費空間
- 免費空間放三十萬筆就爆了(修一修頂多放五十萬筆),但GOGOBOX有上百萬筆
- 已經有人寫出來了,而且也夠好了
所以決定在忘記之前,快點先寫出來 (BLOG+福球亂彈)
=======GOGOBOX 搜尋引擎(原理)===========
其實只是使用最簡單也最笨的搜尋方法 "蜘蛛爬行法" (不太清楚是不是這樣叫)
爬行的只有會員ID,然後每個ID裡面都有許多檔案
這些檔案就用內建的GOGOBOX搜尋器,去搜尋
本人是一次搜尋最多五百筆(當然,你要一次用更多都沒關係),如果超過五百筆就跳頁
(使用瀏覽器看最多五十筆,他是記錄在COOKIE,改成五百)
(程式碼裡面全部都可以很清楚的看到方法,歡迎大家討論)
=======GOGOBOX 搜尋引擎(PHP程式碼)===========
//(因為是邊測試邊寫,所以寫的超亂的,未整理過,請包含)
//(邊碼為UTF8)
//(PS此篇還需要先用CURL登入,並將SESSION記錄起來才可使用GOGOBOX內建搜尋)
//這邊是開始使用"蜘蛛爬行法"
//30000000 前面開頭的"3"也等於網址的開頭 http://box3.gogobox.com.tw
//要修改的話要全部修改(約有兩三個)
//由於PHP有時間限制,所以要先改過,本人約改成兩個小時
//然後一次五千筆(可以開好多個網頁一次進行)
for($a=20001;$a<=25000;$a++){
$no = $a + 30000000; //GOGOBOX 會員ID 也是BOX ID
gogo_load($no);//呼叫主程式
}
//GOGOBOX 搜尋引擎 主程式
function gogo_load($no){
$post['box_no']=$no;//GOGOBOX 會員ID 也是BOX ID
$post['nPageNo']='1';//搜尋第幾頁
$row_page=500;//一次筆數(使用GOGOBOX內建搜尋)
$cookie_file_path = "d:\cookie.txt";//紀錄SESSION的地方,GOGOBOX內建搜尋必須登入
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path);
curl_setopt($ch, CURLOPT_COOKIEFILE,$cookie_file_path);
//get info
//這行為登入的網址,要先登入一次GOGOBOX然後把記錄的SESSION記錄到上面的//d:\cookie.txt
//不過因為只用一次,之後都可以使用,所以登入的程式碼刪了 =="
//其實主要是因為是邊研究邊寫,所以之後覺得沒用,就...
//$login ='http://client.gogobox.com.tw:8000/caccessX';
$url = 'http://box3.gogobox.com.tw:8037/app/list_file.cgi?box_no='.$post['box_no'];
curl_setopt($ch, CURLOPT_URL,$url);
$num = curl_exec($ch);
$num = strip_tags($num,'');
$num = strstr($num,'全部資料夾');
$num = strstr($num,'(');
$num = (int)substr($num,1,6);
//以上是判斷是否有資料,如果有才執行以下"使用GOGOBOX內建搜尋 搜尋檔案"
//不過之後覺得這邊可以改一下,速度可以更快
if($num !=0){
$page = ceil($num/$row_page);
//===============================================
$url = 'http://box3.gogobox.com.tw:8037/app/list_file.cgi';
//$post['nPageNo']='1';
$once_num = 0;
for($i=1;$i<=$page;$i++){
load_gogobox($post['box_no'],$i,$num,$row_page,$page); //呼叫 使用GOGOBOX內建搜尋
}
}else{
echo $no.' ';//if
}
curl_close ($ch);
}
//這邊就是發送資訊給GOGOBOX叫他搜尋某BOX的所有檔案
//一次搜尋五百筆(預設)
//然後取得資料
function load_gogobox($post_no,$i,$num,$row_page,$page){
$chx = curl_init();
$cookie_file_path = "d:\cookie.txt"; //登入SESSION都記錄在這邊
curl_setopt($chx, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($chx, CURLOPT_COOKIEJAR, $cookie_file_path);
curl_setopt($chx, CURLOPT_COOKIEFILE,$cookie_file_path);
$url = 'http://box3.gogobox.com.tw:8037/app/list_file.cgi';
$post['box_no'] = $post_no; //GOGOBOX會員ID,BOX ID
$post['nPageNo'] = $i; //第幾頁
if($i==$page){
$once_num = $num%$row_page;
}else{
$once_num=$row_page;
}
curl_setopt($chx, CURLOPT_POST,1);
curl_setopt($chx, CURLOPT_URL,$url);
curl_setopt($chx, CURLOPT_POSTFIELDS, $post);
//GOGOBOX 是利用COOKIE來記錄要顯示幾筆
//很久以前看的時候沒有發現
//是前個月(應該吧)看他的JAVASCRIPT 才發現的 =="
curl_setopt($chx, CURLOPT_COOKIE, "CbFileBoxListCnt=".$row_page." ; path=/"); //顯示X筆
$result = curl_exec($chx);
gogobox($result,$once_num);//開始把GOGOBOX內建搜尋的結果(五百筆) 紀錄出來
curl_close ($chx);
}
function gogobox($content,$once_num){ //取回 分析 GOGOBOX內建搜尋
//主要就是一些字串處理
$content = strstr($content,'<!-- list table -->');
$content = substr($content,0,strpos($content,'<!-- list table END -->'));
//echo $content;
for($i=0;$i<$once_num;$i++){
$content = substr($content,strpos($content,'colspan=\'6\'')+10);
$content_link = strip_tags($content,'<td><a>');
$content_data = strip_tags($content,'<td>');
$title = strstr($content_data,'class=\'box_f_name\' valign=\'middle\'>');
$title = strstr($title,'>');
$title = trim(substr($title,1,strpos($title,'</td>')-1));
$name = strstr($content_data,'class=\'box_f_info_01tdu\'>');
$name = strstr($name,'>');
$name = trim(substr($name,1,strpos($name,'</td>')-1));
$size = strstr($content_data,'class=\'box_f_info_02\'>');
$size = strstr($size,'>');
$size = trim(substr($size,1,strpos($size,'</td>')-1));
$date = strstr($content_data,'class=\'box_f_info_04\'>');
$date = strstr($date,'>');
$date = trim(substr($date,1,strpos($date,'</td>')-1));
$link = strstr($content_link,'onClick="Copy_Link');
$link = strstr($link,'\'');
$link = substr($link,1);
$link = trim(substr($link,0,strpos($link,'\'')-1));
$return['file_title']=mysql_escape_string($title);
$return['file_name']=mysql_escape_string($name);
$return['file_size']=mysql_escape_string($size);
$return['file_link']=mysql_escape_string($link);
$return['db_date']=mktime();
//data_creat_some("gogobox",$return); //最後將字串都整理好後,建立到資料庫去
//這邊就不把此FUNCTION寫出來了,可以用var_dump($return)看資料
//之後即可自行應用
}
}
===============引用先前====================
引用先前發的 "GOGOBOX 搜尋引擎"
以下是之前研究GOGOBOX的原由
GOGOBOX 搜尋引擎
想必有許多人都也有想過吧!!
當初FINDBOX出來的時候,可是為之驚人啊!!
每天流量都爆破!!顆顆
但是不知怎麼的後來就消失了
======題外話======
(知道的人還請跟我說說吧!THX!~)
只知道之後GOGOBOX有改版
檔案的下載位置好像都有改變的樣子(不太記得了)
所以FINDBOX就失效了??? (I REALLY DONT KNOW)
(或是被警察伯伯抓了???這樣有犯法嗎??)
這一值都是我現在的疑問 顆顆
不過現在好像又有很多人有架類似的站吧!!
顆顆~~這邊也是其中之一
======題外話======
所以就決定再來試做一個 GOGOBOX搜尋引擎
於是就花了許多時間在研究他的檔案位置
最後是有得出一些結論 :
第一個 GOGOBOX 每個會員都有編號
第二個 GOGOBOX 每個檔案也都有編號
第三個 GOGOBOX 每個檔案下載位置都有加上會員編號
第四個 不知道怎麼不列會員編號就下載到檔案
最後 GOGOBOX 必須要有會員編號 和檔案編號才能下載 (不知道對不對)
但是還有一個線索,就是他每個會員BOX裡面都可以搜尋到他所PO的所有檔案
結合以上幾點就用PHP寫出了一個搜尋器
因為不可能直接使用GOGOBOX的搜尋引擎,所以大概就是要像GOOGLE一樣
把檔案都先搜索過然後存到資料庫,使用者再直接搜尋這個資料庫
這樣速度才OK
SO...
目前今天花了一個下午,大概寫出了一些,已經可以廣搜GOGOBOX了
不過速度有點慢 == 十分鐘 約 幾千個檔案而已
(過了幾天,目前約四十萬筆吧!!)
一切還在測試中,...至於公開程式碼 大概會慢一點公開
ps 目前搜了兩萬五千筆左右 == 離全部還好遠好遠
===============宣告====================
此篇內容僅供測試,如果有利用做不法行為,與本人無關
2009年9月12日 星期六
PHP SMARTY樣板處理程式
轉自福球亂彈(其實也是我自己打的 = =")
這是一個很好用的外掛程式
安裝極為簡單
只要解壓縮後
把下面的資料夾複製到你的網站資料夾下面即可
接下來只要引用即可
==================================
SMARTY簡介
==================================
1.smarty是甚麼?
是一個樣板處理程式,他主要是方便管理HTML和PHP之間的聯繫關係,也有將HTML和PHP分開的功能,"以便使用者管理網站"。而且在實際使用上,程式碼會簡潔許多。
2.為什麼非要用smarty?
當然不一定要使用,不過你一用,就會愛上的。
smarty主要功能就是把PHP和HTML程式分開放,這樣就能使專門設計HTML美觀方面的人,和專門寫PHP程式的人可以方便分工合作,使事情處理上更有效率。
而且使用smarty,也可以大量減少網頁數量。
一個PHP => 一個樣板 = 同性質所有功能的兩個檔案就可以處理完
一個PHP => 少量樣板 = 一個中小型網站可處理完畢。
多個PHP => 少量樣板 = 大型網站(論壇、多樣的互動網站)
3.甚麼時候用到smarty?
測試性PHP程式基本上不會用到,但只要有"介面"出現,用就對了!!
==================================
簡單教學
==================================
一開始在先看一下
smarty資料夾下面有兩個php程式
main.PHP
smarty_php.php
這兩個是最一開始處理SMARTY的程序
main.php 算是最原始的
smarty_main.php 是本人稍稍改過的(建議使用,已排除JAVASCRIPT問題)
基本上就不需要動這個檔案了
我們開始使用SMARTY
在PHP程式上面先 require('smarty/smarty_main.php');
此時就已經算是建立一個樣版了(smarty_main.php)
PHP部分
<?php
require('smarty/smarty_main.php'); //路徑沒問題吧!! 已經建立摟
//接下來可以直接使用,由於引入檔開啟CLASS的建立是用 $tpl 所以之後都要用$tpl
//將字串傳到樣板,用assign
$tpl -> assign("trans_title","我是要給HTML顯示的抬頭");
$tpl -> assign("trans_body","我是要給HTML顯示內容");
//可以用很多次,意思是可以設定很多個變量(自己隨便設)
//接下來就可以展現樣版了,很EASY吧
$tpl -> display('tmp/test.html'); //路徑應該知道吧!!
?>
HTML樣板部分
<html>
<title>{{$trans_title}}</title>
<body>
{{$trans_body}}
</body>
</html>
這樣就可以了,php就會開啟此樣板,並把變量傳過來,然後顯示
最後的輸出結果(看到的)
網頁的標題就會是 "我是要給HTML顯示的抬頭"
內容只有 "我是要給HTML顯示內容"
最後的輸出結果(html)
<html>
<title>我是要給HTML顯示的抬頭</title>
<body>
我是要給HTML顯示內容
</body>
</html>
就是這樣,簡單吧!!
這樣就可以隨便把變數放在自己想要的地方
如果不用樣版的話,就必須在php裡面寫html,會變得很麻煩的喔!!
先這樣吧!! 以後再打稍為進階一點的 =="
smarty.rar (93.54 KB)
2009年8月29日 星期六
GOGOBOX 搜尋引擎
========================================
9/17
現在已經公布 "GOGOBOX搜尋引擎PHP程式碼" 摟!!
請到 福球亂彈 (方便討論喔!!)
GOGOBOX 搜尋引擎 PHP程式碼公開
或是本BLOG (有意見或建議可留言喔!!)
GOGOBOX 搜尋引擎 PHP程式碼公開
觀看最新版本
========================================
9/1
剛剛把已經把搜到的GOGOBOX檔案部分上傳到免費空間了
(三十萬筆,因為空間不夠= =)
可以測試看看,不過此空間的廣告有點討厭 = ="
福球亂彈 => 福球程式設計(PHP) => PHP主題討論 => GOGOBOX搜尋引擎測試
順便廣告一下論壇 ==
歡迎大家來討論!!
========================================
最近和朋友想說要架一個論壇
主要是要放一些和興趣相關的內容
當然有程式設計的版面摟!!
福球亂彈 歡迎大家參觀,也歡迎一起經營喔(誠摯的邀請版主ING)!!
PHP版
(還在計畫中,請不要嫌棄)
再分配管理版面的時候,當然我就是負責"電腦"這方面的板塊~呵呵
但是想阿想的!
最重要的,還是要有主打的東西吧!!
這樣才有吸引人的地方。
再想阿想的,就想到了 GOGOBOX 搜尋引擎
想必有許多人都也有想過吧!!
當初FINDBOX出來的時候,可是為之驚人啊!!
每天流量都爆破!!顆顆
但是不知怎麼的後來就消失了
======題外話======
(知道的人還請跟我說說吧!THX!~)
只知道之後GOGOBOX有改版
檔案的下載位置好像都有改變的樣子(不太記得了)
所以FINDBOX就失效了??? (I REALLY DONT KNOW)
(或是被警察伯伯抓了???這樣有犯法嗎??)
這一值都是我現在的疑問 顆顆
不過現在好像又有很多人有架類似的站吧!!
顆顆~~這邊也是其中之一
======題外話======
所以就決定再來試做一個 GOGOBOX搜尋引擎
於是就花了許多時間在研究他的檔案位置
最後是有得出一些結論 :
第一個 GOGOBOX 每個會員都有編號
第二個 GOGOBOX 每個檔案也都有編號
第三個 GOGOBOX 每個檔案下載位置都有加上會員編號
第四個 不知道怎麼不列會員編號就下載到檔案
最後 GOGOBOX 必須要有會員編號 和檔案編號才能下載 (不知道對不對)
但是還有一個線索,就是他每個會員BOX裡面都可以搜尋到他所PO的所有檔案
結合以上幾點就用PHP寫出了一個搜尋器
因為不可能直接使用GOGOBOX的搜尋引擎,所以大概就是要像GOOGLE一樣
把檔案都先搜索過然後存到資料庫,使用者再直接搜尋這個資料庫
這樣速度才OK
SO...
目前今天花了一個下午,大概寫出了一些,已經可以廣搜GOGOBOX了
不過速度有點慢 == 十分鐘 約 幾千個檔案而已
(過了幾天,目前約四十萬筆吧!!)
一切還在測試中,...至於公開程式碼 大概會慢一點公開
ps 目前搜了兩萬五千筆左右 == 離全部還好遠好遠
(目前想辦法讓論壇人氣多一點,所以想讓此搜尋變成主打 顆顆 (作夢ing))
最後 歡迎大家來參觀福球亂彈
==============END=================
2009年8月22日 星期六
PHP 自動更新進入yahoo 搶拍賣 PART II 新版
搶拍賣(日貨)用的程式,就是會固定幾秒就搜索一次賣家的帳號,只要最上面的連結改變(表示PO新貨)
馬上就會進去新的頁面
==============================================
使用方法
第一格式輸入YAHOO賣家的網址(清單瀏覽,新貨出現在最上面)
然後可以按送出試試看
下面會出現一行 就是目前最新的物品
如果不是出現現在最新的物品
可以在第二格輸入數字
從 0 開始 01234...
就是要列出目前最新的物品連結
OK之後就點 START 就會開始每X秒自動掃一次
在後面的 下面這行的5就是每五秒掃一次 可以自己改變
echo '<meta http-equiv="refresh" content="5; url=test.php">';
PS 不過此版本還是不能脫逃 YAHOO 999的命運
每五秒一次 大概十五分鐘就壽命終結 ==
目前努力研究逃脫YAHOO 999 的命運
歡迎一起討論^^
最新發現!!!
最近測試發現
用APACHE 傳送過多造成999
IE FIREFOX 還是可以正常瀏覽
因此這裡可能就是可以破解的地方!!
==============================================
<form name="form1" method="get" action="test.php">
<input type="text" name="url" id="textfield">
<input type="submit" name="button" id="button" value="送出">
<input name="num" type="text" id="num">
<input type="submit" name="star" id="star" value="star">
<input type="submit" name="stop" id="stop" value="stop">
</form>
<?php
session_start();
if(isset($_GET['url']) and @$_GET['url'] != ''){
$_SESSION['url']=$_GET['url'];
}
if(isset($_SESSION['url'])){
$url = $_SESSION['url'];
}else{
$url ="http://tw.user.bid.yahoo.com/tw/user/lainjp98?userID=lainjp98&catID=&catIDselect=&clf=&u=:lainjp98&s1=ptime&o1=d&at=false";
}
if(isset($_GET['num']) and @$_GET['num'] != ''){
$_SESSION['num']=$_GET['num'];
}
if(isset($_SESSION['num'])){
$next = $_SESSION['num'];
}else{
$next = 1;
}
$fp =fopen($url,"r");
$content = stream_get_contents($fp);
$content = str_replace('刊登時間','||',$content);
$content = strstr($content,'||');
$content = strip_tags($content,'<a>');
$content = substr($content,60);
$i=0;
//$next = 5;
while($content = strstr($content,'<')){
//$content = strstr($content,'<');
$pos = strpos($content,'>')+1;
$pos = strpos($content,'>',$pos)+1;
$content_link = substr($content,0,$pos);
$content = substr($content,$pos);
if($i==$next){
if(@$_SESSION['check'] ==1){
if($_SESSION['temp'] != $content_link){
$content_link = strstr($content_link,'"');
$content_link = substr($content_link,1);
$pos = strpos($content_link,'"');
$content_link = substr($content_link,0,$pos);
echo '<meta http-equiv="refresh" content="1; url='.$content_link.'">';
}
}
if(@$_GET['star'] =='star'){
$_SESSION['temp']=$content_link;
$_SESSION['check'] =1;
}
echo $content_link."<br>";
}
$i++;
}
if(@$_GET['stop'] =='stop'){
$_SESSION['check'] =0;
}
if(@$_SESSION['check'] ==1){
echo '<meta http-equiv="refresh" content="5; url=test.php">';
}
fclose($fp);
?>
2009年8月12日 星期三
C++學習檔案 < 亂數列排大小+輸入值列出位置 >
< 亂數列排大小+輸入值列出位置 >
#include <iomanip>
#include <iostream>
#include <time.h>
#include <stdlib.h>
using namespace std;
int main() {
srand(time(0));
int o[15],n[15],m=0,t;
for(int i=0;i<15;i++){
o[i] = rand()%100;
n[i] = 0;
cout << setw(3) << o[i];
}
cout <<endl;
for(int j=0;j<15;j++){
for(int i=0;i<15;i++){
if( o[i] > n[j]){
n[j] = o[i];
m=i;
}
}
o[m] =0;
cout << setw(3) << n[j];
}
cout <<endl<<"plz input integer value" << endl;
cin >> t;
for(int i=0;i<15;i++){
if(n[i]==t){
cout << "integer " << n[i] << " was fount in site " << i+1 <<endl;
}
}
system("pause");
return 0;
}
================END==============
C++學習檔案 < 河內塔 (1.FOR迴圈)+(2.遞迴) >
1. 河內塔 for迴圈寫法
(包含實體位置)(單陣列從零開始)
當三個的時候
陣列位置
2 | 5 | 8
1 | 4 | 7
0 | 3 | 6
---------
1 | 2 | 3 (塔)
---------
以此類推 (每行最後兩個)
心得:
物品123
柱子ABC
河內塔最簡單的原理就是
1->2->3->1->2->3.... 一直巡迴
每一次都判斷柱子a->b->c->a.....
(請看程式碼,有點亂= =)
#include <iomanip>
#include <iostream>
using namespace std;
int main() {
int b,n,t=0,p=1,j=0,n2,n3,sum=0;
cin >> n;
int *a = new int[n*3] ;
b=1;
for(int i=(n*3-1);i>=0;i--){
if(i<n)
a[i]=b++;
else
a[i]=0;
}
while(1){
n2=j%(n*3);
n3=t%(n*3);
//cout <<p <<n2<<a[n2]<<n3<<a[n3]<<endl;
if(p==a[n2]){
for(int k=0;k<n;k++){//判斷上面是否有東西
if(n2%n==k){
if(a[(j+1)%(n*3)] !=0){
//cout<<"b";
t=j;
p==n?p=1:p++;
}
}
}
}
if(p==a[n2]){
t=j;//暫存
//cout <<p <<endl;
// cout <<n2<<endl;
}
if((a[n3]==p &&a[n2]==0 && n2%n==0)||(a[n3]==p &&a[n2]==0 && n2%n!=0 && a[(j-1)%(n*3)] > p )){//移動+判斷
a[n2]=p;
a[n3]=0;
cout<<"item:"<<setw(3)<<p <<" from:"<<setw(3)<< n3/n+1<<" to:"<<setw(3)<<n2/n+1<<setw(5)<< n3<<setw(3)<<n2<<endl;
sum++;
}
if(n2 ==(t-1)%(n*3) ){
p==n?p=1:p++;//j=0;
}
j++;
if(a[(n*2-1)]==1 || a[(n*3-1)]==1)
break;
}
cout << "sum:" <<sum<<endl;
system("pause");
}
====================================
2. 河內塔 遞迴寫法
不包含位置
#include <iostream>
using namespace std;
void hanoi(int,char*,char*,char*);
int main()
{
cout << "input a number:";
int number;
cin >> number;
char p1[]="A";
char p2[]="B";
char p3[]="C";
hanoi(number,p1,p2,p3);
system("pause");
return 0;
}
void hanoi(int n,char* p1,char* p2,char* p3)
{
if(n==1){
cout << "no." << n << " from " << p1 << " to " << p3 << endl;
}else{
hanoi(n-1,p1,p3,p2);
cout << "no." << n << " from " << p1 << " to " << p3 << endl;
hanoi(n-1,p2,p1,p3);
}
}
=======END======