2018年8月24日 星期五

網頁開發(2) 利用 Ajax 取的 PHP 值

網頁開發我常利用 Ajax 來連接 PHP以便撈取後端資料

但是 PHP 傳回來的值會是 String 值

JavaScript 每個參數都是一個物件,所以辨認不出 PHP傳回來的值

這時就需要 json 來達到取值的效果

首先是 JavaScript 的 Ajax
var wanteddata;
var requert = $.ajax({
    type: "POST",
    async: false,
    url: "/function/getData.php",
    dataType: 'json',
    data:{id:msg},
    success: function(data){
        wanteddata = data.value; //有些可能要自己 json_decode
    },
    error: function(data,status,e){
        alert('Get Data Error!');
    }
});
再來是 PHP 端 ( getData.php )
<?php
    $value = "IamData";
    $ReturnValue = array("value"=>$value);
    echo json_encode($ReturnValue);
?>
參考資料 : 我的同學

IPv6 筆記 ( 序 + week1 )

工作需求必須從頭到尾了解 IPv6 這項技術

所以好像回到大學時期,重新看了 NTHU 黃能富教授經營的學聯網 ( 課程已關閉 )

但既然重看了,那就索性作筆記但不會太詳細 ( 因為沒人會考我XD )。

參考資料

Week 1 

1. IPv6 之於 IPv4

(1) 提供大量 IP 位址,加速連線 ( 因為位址明確 , 無須 NAT...等技術 )

(2) 精簡 Header ( 因為各Layer功能漸強可以 Cover 或用其他方法表示 )
          
          i.   Header 長度固定 ( 40 bytes )
          ii.  移除 checksum ( Layer2可以做檢查 )
          iii. 移除切割封包功能 ( Source 端自己做 )

(3) 利用 Extension Header 來完成 IPv4 的 Option 功能 ( Ex.RoutingHeader、FragmentHeader ... )

2. IPv6 Addressing

(1) 3種位址 Unicast ( 傳給指定位址 )、Multicast ( 傳給指定某群位址 )、Antcast ( 誰都可轉送 )

(2) IPv6 表示法 (128 bits)

          i.   FEDC:BA98:7654:3210:FEDC:BA98:7654:3210
          ii.  1080:0:0:0:8:800:200C:417A
          iii. 1080::8:800:200C:417A ( 用連續兩個冒號表示連續 16 bits的0 , 但若有2組以上則不行,因為不知道長度 )

(3) Addresses Formats


3. IPv6 功能

(1) ICMPv6 ( Internet Control Message Protocol ) 的功能


(2) Supports IGP (Interior Gateway Protocol) and EGP (Edge Gateway Protocol)

          i.   IGP -> RIPng(RFC 2080)、OSPFv3(RFC 2740)
          ii.  EGP -> MP-BGP4(RFC 2858 and RFC 2545) 、 BGP4+

(3) Plug-and-Play ( Auto Configuration )

          i.   電腦會自動 註冊和產生所有連網必要之參數
          ii.  可以隨時變更 ISP provider
          iii. 可以擁有多個IPv6位址、 IPv6位址有有效期限 
          iv.  2種 modes : stateless 跟 stateful ( using DHCPv6 )
          
          流程 : 自動產生 link-local address ( FE80:: + 48bits Ethernet address )
                     加入一個 All nodes 的 Group 已收到Group裡的訊息 ( FF02::1 )
                     發送 Solicitation Message 到 Router 的 Group ( FF02::2 )
                     Router 發送 Router Advertisement ( 裡面包含Router給的IPv6位址 )

4. Basic Algorithm

(1) 利用 ICMPv6 達到 ARP 的效果 ( Neighbor Solicitation... )

(2)  HOST 擁有 4 個 cache

          i.   The desination's cache ( 紀錄 目的地的 IP 跟 經過的 IP )
          ii.  The neighbor's cache   ( 紀錄  Neighbor's IP 跟 MAC )
          iii. The prefix list  ( 相連Routers 給的 prefix )
          iv.  The router list  ( 相連Routers )

(3) 送封包流程

          i.   先找 The desination's cache 
          ii.  再找 The prefix list ( 看是否在同個子網路下 )
          iii. 透過 Router 發送並更新 cache

5. IPv6 Flows and Flow Label

(1) IPv6 Real-time Support ( 用不同 Flow 來達到 Priority 的效果 )

6. IPv6 Security Support

(1) 所有 IPv6 封包都需要支援 authentication 跟 encryption Headers

2018年8月23日 星期四

BCB 筆記11 (ComboBox OnChange)

有時候會希望 ComboBox Change 的時候

Grid 能自動更新,但 ComboBox OnChange() 似乎事件較弱

所以 OnChange() 執行後,Grid 並沒有立即更新

你必須點 Grid 一下才會更新,當然一定有正規解法

但我很急無法深入研究,所以用這個邪門歪道


1. 首先創一個 Button1 並設定 OnClick 事件 (為了美觀你可以設Button1隱藏)

void __fastcall TMainForm::Button1Click(TObject *Sender)
{
    Grid->Refresh();
}

2. 在你想要的 ComboBox OnChange() 改為 Button1Click()


參考資料 : 著急的我

Windows 工作排程失效

會接觸這個東西是因為要寄系統信

系統信我的實作方法是用 工作排程 時間到就執行對應的 PHP 檔

執行檔是沒問題的,但是排程出問題了

排程總是被略過,好像沒有這回事一樣

我有找到很多方法,但只有這個有效,參考資料裡也有講其他方法

這是我解掉這個方法的圖片 ( 取自參考資料做備份 )


參考資料
https://dotblogs.com.tw/daniel07793/2012/05/07/72002

2018年8月22日 星期三

BCB 筆記10 (Grid 載圖片)

表格填圖片
下面示範 DrawGrid 填圖片 ( 其實 StringGrid 也可以 )

void __fastcall TMainForm::DrawCell(TObject *Sender, int ACol, int ARow, TRect &Rect, TGridDrawState State)
{
    TDrawGrid *drawgrid = dynamic_cast<TDrawGrid *>(Sender);

    Bitmap->LoadFromFile(ExtractFilePath(Application->ExeName)+__PicturePath+"123.bmp");

    drawgrid->Canvas->Draw(Rect.Left, Rect.Top, Bitmap);

    delete Bitmap;
}

依照圖片大小的方法

    drawgrid->Canvas->StrenchDraw(TRect ,Bitmap);

參考資料
1. 我
2. https://bbs.csdn.net/topics/30220802

Popular Posts