因為虛擬機器上要重新安裝Delphi XE7 update1時空間不足,接著要把Virtual Machine的Disk Size加大後出現了”there is not enough space on the file system for the selected operation”。搞了好久才知道Virtual Disck要加大的容量,系統的可用空間需要大於它,也就是說如果你要從60G加大到70G的話,你的系統可用空間也要有70G以上才行。
Delphi結合簡易PHP路徑規劃
延續上一篇的文章,如何透過Delphi傳遞起訖點就能幫助做路徑規劃呢?透過Delphi的WebBrowser元件搭配遠端的PHP,傳遞參數可以做得到!
PHP的部份,我們主要是要傳遞FROM以及TO二個參數(以下不做解釋XD)
[php]
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta charset="utf-8">
<title>路徑規劃</title>
<style>
html, body, #map-canvas {
height: 100%;
margin: 0px;
padding: 0px
}
</style>
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp"></script>
<script>
var directionsDisplay;
var directionsService = new google.maps.DirectionsService();
var map;
var stepDisplay;
var markerArray = [];
function initialize() {
var rendererOptions = {
map: map,
suppressMarkers : true
}
directionsDisplay = new google.maps.DirectionsRenderer(rendererOptions);
var fengyuan = new google.maps.LatLng(24.253706601916402, 120.72275021093753);
var mapOptions = {
zoom:17,
center: fengyuan
};
map = new google.maps.Map(document.getElementById(‘map-canvas’), mapOptions);
directionsDisplay.setMap(map);
stepDisplay = new google.maps.InfoWindow();
calcRoute();
}
function calcRoute() {
for (i = 0; i < markerArray.length; i++) {
markerArray[i].setMap(null);
}
markerArray = [];
var start = <?php echo ‘"’.($_GET["FROM"]).’"’; ?>;
var end = <?php echo ‘"’.($_GET["TO"]).’"’; ?>;
var request = {
origin:start,
destination:end,
travelMode: google.maps.TravelMode.WALKING
};
directionsService.route(request, function(response, status) {
if (status == google.maps.DirectionsStatus.OK) {
directionsDisplay.setDirections(response);
showSteps(response);
}
});
}
function showSteps(directionResult) {
var myRoute = directionResult.routes[0].legs[0];
for (var i = 0; i < myRoute.steps.length; i++) {
var icon = "https://chart.googleapis.com/chart?chst=d_map_pin_letter&chld=" + i + "|FF0000|000000";
if (i == 0) {
icon = "https://chart.googleapis.com/chart?chst=d_map_xpin_icon&chld=pin|glyphish_walk|00FFFF|FF0000";
}
var marker = new google.maps.Marker({
position: myRoute.steps[i].start_point,
map: map,
icon: icon
});
attachInstructionText(marker,myRoute.steps[i].instructions);
markerArray.push(marker);
}
var marker = new google.maps.Marker({
position: myRoute.steps[i – 1].end_point,
map: map,
icon: "https://chart.googleapis.com/chart?chst=d_map_xpin_icon&chld=pin|glyphish_walk|ADDE63"
});
markerArray.push(marker);
}
function attachInstructionText(marker, text) {
google.maps.event.addListener(marker, ‘click’, function() {
stepDisplay.setContent(text);
stepDisplay.open(map, marker);
});
}
google.maps.event.addDomListener(window, ‘load’, initialize);
</script>
</head>
<body>
<div id="map-canvas"></div>
</body>
</html>
[/php]
DELPHI的部份,因為D7的URLENCODE有問題,所以我們另尋了一個解決的部份(見延伸閱讀)
[pas]
function HTTPEncode(const AStr: String): String;
const
NoConversion = [‘A’..’Z’,’a’..’z’,’*’,’@’,’.’,’_’,’-‘,’0′..’9′,’$’,’!’,””,'(‘,’)’];
var
Sp, Rp: PAnsiChar;
begin
SetLength(Result, Length(AStr) * 3);
Sp:= PAnsiChar(AStr);
Rp:= PAnsiChar(Result);
while Sp^ <> #0 do
begin
if Sp^ in NoConversion then
Rp^ := Sp^
else
if Sp^ = ‘ ‘ then
Rp^ := ‘+’
else
begin
FormatBuf(Rp^, 3, ‘%%%.2x’, 6, [Ord(Sp^)]);
Inc(Rp,2);
end;
Inc(Rp);
Inc(Sp);
end;
SetLength(Result, Rp – PAnsiChar(Result));
end;
function URLEncode(const Url: String): String;
begin
Result:= HttpEncode(UTF8Encode(Url));
end;
[/pas]
最後在畫面上佈置出二個Edit以及一個Button,以及WebBrowser。程式很簡單
[pas]
procedure TForm1.Button1Click(Sender: TObject);
var
str:WideString;
begin
str := ‘http://你的php位置?FROM=’+URLEncode(edit1.text)+’&TO=’+URLEncode(edit2.text);
self.WebBrowser1.Navigate(str);
end;
[/pas]
延伸閱讀:
Delphi URLEncode問題解決
http://alexey-m.ru/articles/urlencode-utf-8-windows1251
Google Map 路徑規劃API測試
Google Map是筆者覺得很棒的一項服務,而且Google也很佛心的提供開發的API(雖然有次數限制)。因為住豐原的關係,常常聽到週遭朋友說不知道那些可以去,所以就嘗試玩了一下路徑規劃。其實也還不複雜~例出主要的部份
JavaScript
[js]
var start = document.getElementById(‘start’).value; // 起點(可以是地址或是經緯度)
var end = document.getElementById(‘end’).value; // 終點(可以是地址或是經緯度)
var request = {
origin:start,
destination:end,
travelMode: google.maps.TravelMode.WALKING // 設成步行 (預設是google.maps.TravelMode.DRIVING 開車)
};
directionsService.route(request, function(response, status) {
if (status == google.maps.DirectionsStatus.OK) {
directionsDisplay.setDirections(response);
}
});
[/js]
延伸閱讀:
Google Map API 3.0 https://developers.google.com/maps/documentation/javascript/directions?hl=zh-tw
讓佛祖、耶酥一起保佑程式碼無BUG,比乖乖有效?
微博上看到各國機房為了確保主機穩定不出怪事,請出法師、大師、神父到機房作法、禱告。
台灣最聞名的就是放乖乖了,然後要記得是綠燈(正常)的椰子乖乖:)
最近程式設計師流行直接寫在CODE裡,像上次寫的機器上除了要擺乖乖外,程式碼也該加上佛祖保佑,今天更出現耶穌版本。
[pascal]
// |~~~~~~~|
// | |
// | |
// | |
// | |
// | |
// |~.\\\_\~~~~~~~~~~~~~~xx~~~ ~~~~~~~~~~~~~~~~~~~~~/_//;~|
// | \ o \_ ,XXXXX), _..-~ o / |
// | ~~\ ~-. XXXXX`)))), _.–~~ .-~~~ |
// ~~~~~~~`\ ~\~~~XXX’ _/ ‘;)) |~~~~~~..-~ _.-~ ~~~~~~~
// `\ ~~–`_\~\, ;;;\)__.—.~~~ _.-~
// ~-. `:;;/;; \ _..-~~
// ~-._ `” /-~-~
// `\ / /
// | , | |
// | ‘ / |
// \/; |
// ;; |
// `; . |
// |~~~—–…..|
// | \ \
// | /\~~–…__ |
// (| `\ __-\|
// || \_ /~ |
// |) \~-‘ |
// | | \ ‘
// | | \ :
// \ | | |
// | ) ( )
// \ /; /\ |
// | |/ |
// | | |
// \ .’ ||
// | | | |
// ( | | |
// | \ \ |
// || o `.)|
// |`\\\\) |
// | |
// | |
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// 耶穌保佑 永無 BUG
[/pascal]
同場加映
[pascal]
//
// _oo0oo_
// o8888888o
// 88" . "88
// (| -_- |)
// 0\ = /0
// ___/`—‘\___
// .’ \\| |// ‘.
// / \\||| : |||// \
// / _||||| -:- |||||- \
// | | \\\ – /// | |
// | \_| ”\—/” |_/ |
// \ .-\__ ‘-‘ ___/-. /
// ___’. .’ /–.–\ `. .’___
// ."" ‘< `.___\_<|>_/___.’ >’ "".
// | | : `- \`.;`\ _ /`;.`/ – ` : | |
// \ \ `_. \_ __\ /__ _/ .-` / /
// =====`-.____`.___ \_____/___.-`___.-‘=====
// `=—=’
//
//
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// 佛祖保佑 永無bug
//
//***************************************************
[/pascal]
升級Yosemite執行Java出現需要舊版Jave SE6執行階段
升級Yosemite後,發現執行Jave撰寫的程式時出現需要安裝舊版Java SE6。
解決方案是到Apple Supportj找到Java for OS X下載就行了
http://support.apple.com/kb/DL1572?viewlocale=zh_TW&locale=en_US
cmd.fm 下指令聽音樂玩遊戲的網站
無意間發現了一個酷站,是模仿DOS界面的音樂網站,不管是查詢、播放、音量都需要打指令,適合技術狂熱的朋友。
主頁面可以看到音樂來源是soundcloud,這網站透過api取得音樂。
常用的指令:
聽音樂的話就輸入 play rock ,就會播放rock類型的音樂….
調音量就輸入 volume 1~100
暫停就輸入 pause
繼續播就打 resume
上一首 back
下一首 next
從help看到有遊戲,如果打mario就出現瑪莉兄弟…..
服務名稱: cmd.fm
網址: https://cmd.fm/


聖誕節快樂
Delphi 7 從健保局下載zip檔案順便解壓縮
由於學校還使用Delphi 7,為了要教同學從網路上下載檔案加上解壓縮費了不少力氣。順便就記錄一下如何從健保局抓下檔案後,然後一道解壓縮。
1.Delphi7沒有壓縮元件,所以要尋求免費的資源。幸好有Opensource的Delphi 7zip元件
網址:https://code.google.com/p/d7zip/
下載之後解壓縮會有三個檔案
7z.dll
readme.html
sevenzip.pas
2.把7z.dll跟sevenzip.pas放到程式目錄下(散佈程式時記得.exe檔跟7z.dll要一起copy)。
3.回到Delphi7的Project→add to project把sevenzip.pas加進專案
4.File→Use Unit選Sevenzip.pas後就可以開始寫code了
5.畫面上佈置如下圖
(text設為http://www.nhi.gov.tw/Resource/webdata/2976_1_hospbsc.zip)
6.ButtonClick程式如下
[pascal]
procedure TForm1.Button1Click(Sender: TObject);
var
ms:TMemoryStream;
i:integer;
tempfile,extname,filename1:String;
begin
ms := Tmemorystream.Create;
ms.Clear;
ms.Position :=0;
try
idhttp1.Get(edit1.text,ms);
ms.SaveToFile(ExtractFilePath(Application.ExeName)+’\test.zip’);
except
end;
if fileexists(ExtractFilePath(Application.ExeName)+’\test.zip’) then
begin
with CreateInArchive(CLSID_CFormatZip) do
begin
OpenFile(ExtractFilePath(Application.ExeName)+’\test.zip’);
for i := 0 to NumberOfItems – 1 do
if not ItemIsFolder[i] then begin
tempfile := ItemPath[i];
extname:=ExtractFileExt(tempfile);
if extname =’.txt’ then
filename1:=tempfile;
end;
ExtractTo(ExtractFilePath(Application.ExeName));
end;
Memo1.Lines.LoadFromFile(Filename1);
end;
end;
[/pascal]
P.S idhttp1.HandleRedirects := True;
Mac安裝laravel
- 終端機輸入下列指令取得最新版本composer
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
cd /Applications/MAMP/htdocs/
composer create-project laravel/laravel laraveltest
中文網域轉換設定Addon Domains
目前有開放中文網域,不過在虛擬主機上Cpanel設定Addon Domains會出現錯誤,這時候需要透過PUNYCODE轉換才能將網域名稱從Unicode 編碼轉成DNS系統的編碼。
可以透過IDN Converter(https://manage.centralnic.com/support/idn_converter)把網域放在左邊的輸入框,按下Convert to PunyCode,就可以得到PunyCode編碼。
最後將Punycode編碼的網域名稱貼進去就可以成功設定:)