1. Unity心得01 - 從0到1自製Unity遊戲

    自製了一款APP手遊 - 異世界冒險之時間逆行

    一款啟發自電影「天能」的遊戲,藉由穿梭不同的時間流完成任務。文章最後有附上連結(也有PC版本),有興趣的可以玩玩看。

    2023/06/02 Unity系列 Unity

  2. 區塊鏈淺談11 - 建置乙太坊私有鏈上的Ethereum Network Status

    建置於乙太坊私有鏈上的Ethereum Network Status

    Etherum Network Status是一個非常方便,能及時查看乙太坊網路整體狀態的一個網頁,本篇會介紹如何自己架一個可以看自己私有鏈狀態的Etherum Network Status

    建置環境

    我的環境

    • Ubuntu:16.04
    • nodejs:6.14.1
    • npm :3.10.10
    • geth :1.8.3

    建置步驟

    底下的建置步驟是我參考兩個Github網頁並自己測試成功

    eth-netstats

    2018/03/22 區塊鏈系列 BlockChain

  3. Java 實作 Http-Request

    Java 實作 Http-Request

    之前專案有實作Java-Http-Request,以下紀錄分享

    curl example

    curl -s -X POST \
      http://localhost:4000 \
      -H "authorization: Bearer token" \
      -H "content-type: application/json" \
      -d '{
    	"fcn":"fcn",
    	"args":["a","b"]
    }'
    

    Java example

    import java.io.BufferedReader;
    import java.io.DataOutputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.nio.charset.StandardCharsets;
    
    class TempController {
    	def send(){
    		String body = '{"fcn":"fcn","args":["a","b"]}'
    		String auth = "Bearer token"
    		String urlParameters  = body;
    		byte[] postData = urlParameters.getBytes( StandardCharsets.UTF_8 );
    		int postDataLength = postData.length;
    		String checkurl = "http://localhost:4000";
    		try{
    			URL connectto = new URL(checkurl);
    			HttpURLConnection conn = (HttpURLConnection) connectto.openConnection();
    			conn.setRequestMethod( "POST" );
    			conn.setRequestProperty( "Content-Length", Integer.toString( postDataLength ));
    			conn.setRequestProperty( "authorization", auth);
    			conn.setRequestProperty( "Content-Type", "application/json");
    			conn.setRequestProperty( "charset", "utf-8");
    			conn.setUseCaches(false);
    			conn.setAllowUserInteraction(false);
    			conn.setInstanceFollowRedirects( false );
    			conn.setDoOutput( true );
    				
    			DataOutputStream wr = new DataOutputStream(conn.getOutputStream());
    			wr.writeBytes(urlParameters);
    			wr.flush();
    			wr.close();
    				
    			int responseCode = conn.getResponseCode();
    				
    			BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
    			StringBuilder sb = new StringBuilder();
    			String line;
    				
    			while ((line = br.readLine()) != null) {
    				sb.append(line+"\n");
    			}
    			br.close();
                //輸出結果
    			System.out.println(sb);
    		}catch (IOException e){
    			e.printStackTrace();
    		}
    	}
    }
    

    2018/03/21 學習筆記 java

  4. 實作網頁與後端Session Timeout

    實作網頁與後端Session Timeout

    Timeout的核心部分引用Versatility Werks的程式碼jTimeout.js(程式碼貼於此文章最下方),Html頁面實作則分三部分

    jTimeout.js的一些參數設定與功能實作

    <script src="your_js_path/jTimeout.js"></script>
    <script>
    $(function(){
    	$.jTimeout({
    	  	/* 10分鐘Timeout */
    	  	'onClickExtend': function(jTimeout){
    	  		window.localStorage.timeoutCountdown = 600
    	  		$('#consTime').text( 600 );
    	  	},
    	  	/* 倒數60秒後不延長則Timeout,秒數設定在jTimeout的secondsPrior參數 */
            'onPriorCallback': function(timeout, seconds){
    	  		timeout.options.extendOnMouseMove=false;
    	  		timeout.mouseMoved = true;
    	  		$("#timeoutModal").modal('show');	  			            
    	  	},
    	  	/* 滑鼠移動延長Session設定為False */
            'extendOnMouseMove': false,
    	  	/* 時間到會觸發的url */
            'onTimeout': function(timeout){
    			/* Force logout */
    	  		window.location.href="logout_url";
    	  	}
    	});
        var timer,	
        setTimer = function(){
    	  	timer = window.setInterval(function(){
    	  		$('#curTime').val( window.localStorage.timeoutCountdown );
    	  		$('#consTime').text( window.localStorage.timeoutCountdown );
    	  	}, 1000);
    	};
        setTimer();
    });
    </script>
    

    需要根據環境客製化的有

    • your_js_path
    • logout_url

    2018/03/13 學習筆記 javascript,jquery

  5. 區塊鏈淺談10 - 今年主要目標:Hyperledger Fabric 1.0

    轉移研究Hyperledger Fabric

    去年幾乎都是在研究Ethereum,去實現與實作DAPP與Smart Contract。但從今年年初開始,因為工作方面需要,而開始大量研究Hyperledger Fabric,不利用雲端去建立Fabric的架構與客製化ChainCode並測試。所以之後有關Hyperledger的文章會多點,Ethereum會減少許多。

    Hyperledger 簡單介紹

    Hyperledger Fabric與Ethereum差別非常的大,畢竟兩者一開始設計的目標就是不同,一個是給企業開發使用,一個是給一般大眾使用。Hyperledger Fabric最主要的幾個服務功能,也就是會封裝成Docker去運行的功能有Orderer,CA,Peer,更進階的Kafka機制則會多增加Zookeeper,Kafka

    • Orderer:共識與排序服務,目前有Solo跟Kafka兩種共識機制
    • CA:身分驗證機制
    • Peer:運行ChainCode驗證與資料儲存
    • Zookeeper:同步所有Kafka內容與配置
    • Kafka:一台Kafka就是一個Broker角色,一個Kafka共識機制由多個Broker所組成一個群集

    Fabric-Sample 入門

    請先參考Hyperledger Fabric範例網站https://hyperledger-fabric.readthedocs.io/en/release-1.0/,裝好所有環境(GOLANG,DOCKER,DOCKER-COMPOSE,NODEJS)

    2018/03/12 區塊鏈系列 BlockChain