안드로이드 스튜디오 에서는 아래와 같이 작성 합니다.

	

// 먼저 volley 를 import 합니다.
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;

// NODE 서버로 보내기 (보내는 함수 안에 아래 사용)

        // node 서버에 보낼 값 Json 형태로 만들기
	JSONObject requestJsonObject = new JSONObject();
	try {
		requestJsonObject.put("seq", seq);

	} catch(JSONException e) {
		e.printStackTrace();
	}

        // 2. RequestQueue 선언
        RequestQueue requestQueue = VolleyNetwork.getInstance(this).getRequestQueue();
    
        // 3. node 서버 IP와 받을 경로 수정 (http://192.168.20.123:3000/post)  하고, 
	JsonObjectRequest R_Object = new JsonObjectRequest(Request.Method.POST,"http://192.168.20.123:3000/receiv", requestJsonObject, new Response.Listener() {
	
		@Override
		public void onResponse(JSONObject response) {
			JSONArray J_JsonArray = new JSONArray();
			try {
				J_JsonArray = response.getJSONArray("results");
				JSONObject dataObj = J_JsonArray.getJSONObject(0);
	
				EditText etId = (EditText) findViewById(R.id.etId);
				EditText etName = (EditText) findViewById(R.id.etName);
	
				etId.setText(dataObj.getString("id"));
				etName.setText(dataObj.getString("name"));
	
			} catch(JSONException e) {
				e.printStackTrace();
			}
	
		}
	}, new Response.ErrorListener() {
	
		@Override
		public void onErrorResponse(VolleyError error) {
			Toast.makeText(context, "네트워크 연결 오류.", Toast.LENGTH_SHORT).show();
			Log.i("VolleyError", "Volley Error in receiv");
		}
	});
	requestQueue.add(R_Object);


// NODE 서버에서 받기 해당 함수 안에 아래 사용

        // 값 가져오기
	EditText etId = (EditText) findViewById(R.id.etId);
	EditText etName = (EditText) findViewById(R.id.etName);
	// 값 세팅
        Id = String.valueOf(etId.getText());
	Name = String.valueOf(etName.getText());

        // Json 형태로 만들기
	JSONObject requestJsonObject = new JSONObject();
	try {
		requestJsonObject.put("Id", Id);
		requestJsonObject.put("Name", Name);

	} catch(JSONException e) {
		e.printStackTrace();
	}

	final Context context = this;

        // volleynetwork 선언
	RequestQueue requestQueue = VolleyNetwork.getInstance(this).getRequestQueue();
	JsonObjectRequest S_Object = new JsonObjectRequest(Request.Method.POST, "http://192.168.20.123:3000/send", requestJsonObject, new Response.Listener() {
		@Override
		public void onResponse(JSONObject response) {
                    // 받아올 값이 없으므로 빈란
		}
	}, new Response.ErrorListener() {

		@Override
		public void onErrorResponse(VolleyError error) {
			Toast.makeText(context, "네트워크 연결 오류.", Toast.LENGTH_SHORT).show();
			Log.i("VolleyError", "Volley Error in send");
		}
	});
        // 실행
	requestQueue.add(S_Object);


위에서 넘긴 값을 Node 서버에서 아래와 같이 처리 합니다.(receiv 의 경우)


	
    // index.js
server.post('/receiv', function(req, res) {
	// receiv 에서 넘긴 seq 값 변수로 담기
        var id = req.body.seq;
	
	var sql = 'SELECT a.id, a.name FROM  table as a where  a.seq = '+seq;	
	dbPool.getConnection(function(err, dbConnection) {
        if(err){
		dbConnection.release();
		console.log('ERROR: CANNOT CONNECT Mysql');
		console.log(err);
		response.status(500).send('Internal Server Error');
        }else{
		dbConnection.query(sqlgetMemList, function(err, result, fields) {
        if(err) {
          dbConnection.release();
          console.log('ERROR: CANNOT QUERY Mysql');
          console.log(err);
          res.status(500).send('Internal Server Error');
        } else {
			
            dbConnection.release();
	    res.setHeader('Content-Type', 'application/json; charset=utf-8');
	    res.status(200);
	    res.json({"results": result});
        }
      });
    }
  });
});


서두 없이 작성해서 죄송합니다. 자세한 내용 원하시면 답변 부탁 드립니다.


솔리디티 1차 배열의 선언 및 입력하고 받아오기 위해 아래와 같이 간단한 코드를 구현 해 보았습니다.


C++ 이나 JAVA 를 해보셨다면 어렵지 않게 이해 하실 수 있으리라 생각 됩니다.


아래 코드를 Remix 에서 실행 해 보겠습니다.

※ Remix 실행 준비 하기는 아래 링크를 참조 하시면 됩니다.

http://hatpub.tistory.com/54


	
pragma solidity ^0.4.24;
contract setArray {
    
    uint256[] DeptsId; //DeptsId 라는 정수형의 배열 선언
    
    // DeptsId 배열에 값 입력 할 함수 setDept
    function setDept(uint256 _deptid) public returns(uint256) {
        uint256 length = DeptsId.push(_deptid); 
        // push 로 파라미터 값을 넣고 length 변수에 배열의 index 를 받아 와서 return 한다.
        return(length);
    }
    
    // DeptsId 배열의 값을 불러올 함수 getDept
    function getDept(uint256 _number) public view returns(uint256) {
        // 배열의 값을 불러 올때는 index 값으로
        return(DeptsId[_number]);
    }
    
    
}




1. setDept 영역에 1~3 까지 입력을 하였습니다.




2. getDept 영역에 index 값인 0~2 를 입력 해서 call 을 하시면 위에서 입력한 1~3 의 값이 나오는 것을 확인 할 수 있습니다.

웹에서는 for 문이나 while 문을 돌려서 사용하시면 모든 값 혹은 특정 값을 불러 올 수 있습니다.


지난 포스팅에 구조체(struct) 배열(array) 를 하였는데, 기초적인 일반 배열을 지나친 것 같아 기초적인 내용을 포스팅 하였습니다.

솔리디티로 이더리움을 개발 하는 날까지 열심히 공부 해 봅시다!

solidity, ethereum

솔리디티(solidity) 로 이더리움 개발하기.


솔리디티에는 C언어와 같이 구조체(struct) 를 만들어 사용 할 수 있습니다. 



	
pragma solidity ^0.4.24;
contract test {

    // Struct 생성
    struct Employee{
        uint256 EmpId;  // 사원번호
        string EmpName; // 사원명
        string DeptName; // 부서명
    }

    // 생성한 Employee Struct 를 배열로 사용하기 위해 Employees 라는 배열 선언.
    Employee[] Employees;

    // 생성된 구조체 배열에 값 담기.
    function setEmp(uint256 _EmpId, string _EmpName, string _DeptName) public {
        // 솔리디티 배열은 push 를 이용하여 배열에 값을 입력 한다.
        Employees.push(Employee(_EmpId, _EmpName, _DeptName));
    }

    
    // 구조체 배열의 값 불러오기.
    // 배열의 특정 값과 for 문을 이용하여 배열의 전체 값을 불러 오기 위해 _number 라는 파라미터를 입력 받는다.
    function getEmp(uint _number) public view returns(uint256 getEmpId, string getEmpName, string getDeptName){
        getEmpId = Employees[_number].EmpId;
        getEmpName = Employees[_number].EmpName;
        getDeptName = Employees[_number].DeptName;
    }

}



작성한 코드를 Remix 에서 적용 해 보겠습니다.

Remix 세팅 방법은 이 전 글을 참고 하시면 됩니다.

http://hatpub.tistory.com/54?category=1009960


1. setEmp 함수에 파라미터를 주어 값 세팅.




2. getEmp 함수에 _number 파라미터 값을 주어 배열에 저장된 값 불러오기.




이더리움(Ethereum)을 개발 하기 위해선 솔리디티 언어를 사용해야 하는데요.


솔리디티(solidity) 를 지원하는 개발 툴은 많지 않습니다.


그중에 가장 쓰기 편한 툴이라고 생각하는 비주얼 스튜디오를 알려 드리겠습니다.


우선 비주얼 스튜디오 코드를 다운 받으셔야 합니다.


비주얼 스튜디오 코드(Visual Studio Code) 는 오픈소스로 무료 이므로 편하게 사용하셔도 됩니다.



※ 다운로드 링크

https://code.visualstudio.com/?wt.mc_id=vscom_downloads



다운로드 후 설치가 완료 되면 언어팩과 Git 을 설치하라고 팝업이 뜨는데 언어팩은 설치 하시면 한글로 볼 수 있어 좋습니다.







비주얼 스튜디오 는 아래 이미지 처럼 기본적으로 솔리디티를 확장자로 포함하고 있지 않습니다.







그래서 확장 프로그램을 하나 더 설치 하셔야 합니다.

좌측 하단의 설정 모양을 클릭 하시고 확장관리 를 클릭 합니다.







검색창에 solidity 를 검색 하고, Juan Blanco 님께서 배포하신 solidity 를 설치 해 줍니다.

※ 설치 후 다시 로드 꼭 해주세요







설치 하여 다시로드 해 주시면 저장 시에 아까는 없었던 solidity(*.sol) 이라는 확장자가 생겨나게 됩니다.







그리고 마지막으로 간단하게 작성 하고 sol 파일로 저장 하시면 아래 이미지와 같이 컬러가 들어가 코딩하기 쉽게 변합니다!

이제 개발만 하면 되겠죠?



Remix 링크 주소


- Javascript VM 을 이용하여 개발 시

https://remix.ethereum.org/


- VMWare 를 사용하여 Web3 Provider로 개발 테스트 하시는 분들은 보안서버 없이 접속 하셔야 합니다.

http://remix.ethereum.org/



이 블로그 내에서 VM Ware 를 이용하여 테스트 서버를 구축에 대한 언급이 없으므로 Javascript VM 으로 개발 연습 하는 방법을 알려드리겠습니다.



# Remix 첫 화면 설정

JavaScript VM 선택 시 100ETH 보유한 계정이 5개 생성 됩니다.

 





# 파일 생성

좌측 상단의 '+' 버튼을 클릭하여 새 파일을 만들어 줍니다.






# 컴파일 버전 세팅 (개발환경에 맞게 버전 설정 해주시면 됩니다.)

'Setting' 메뉴의 Select New compiler version 을 클릭하여 개발에 맞는 버전을 선택 합니다.

저는 최신 버전인 0.4.24 버전을 선택 하였습니다.






# 코드 작성 및 컴파일

	
pragma solidity ^0.4.24;
contract test {
    
    uint8 public EmpId; //사원번호
    string public EmpName; //사원명
    
    // Set function
    function SetTest(uint8 _EmpId, string _EmpName) public {
        EmpId = _EmpId; // 사원번호 값 입력
        EmpName = _EmpName; // 사원명 값 입력
    }

    
    /// Get function
    function GetTest() public view returns(uint8, string){
        return(EmpId, EmpName);
    }

}

Solidity 언어를 작성 하고 'Compile' 메뉴에 오류 및 경고를 모두 제거 합니다.

(DApp 개발 시 중요한 부분이기 때문에 노란 경고창 까지 모두 수정 해 줍니다)






# 코드 실행

'Run' 메뉴로 들어가 Contract 명 확인 후 'Deploy' 를 클릭 하여 컨트랙트를 생성 합니다.


 




# SetTest 함수를 이용 하여 EmpId, EmpName 값 세팅

작성된 코드를 테스트 할 수 있는 기능이 생성 되었습니다.

'SetTest' 함수를 이용하여 변수에 값을 입력 해 봅니다.






# 변수, GetTest 함수를 클릭 해 보면서 값 SetTest 함수에서 입력한 값 잘 들어갔는지 확인.

값을 확인 합니다.





위와 같은 방법으로 Remix 를 이용하여 Solidity 를 개발 해 보았습니다.

간단한 Set, Get 함수를 사용하여 변수에 값을 넣고 불러오는 작업을 하였는데요.

Solidity 언어의 기능 하나하나 앞으로 살펴 보도록 하겠습니다.





이더리움 DApp 을 개발 하기 위해선 솔리디티(Solidity) 를 필수로 공부 해야 합니다.


2018년 8월 파이썬으로 지원 할 거라는 말이 있지만 아직 확실하지 않으니 DApp 개발을 하실 분들은 솔리디티를 공부 하셔야 합니다.


전부 무료 사이트 이며, 기초과정을 마치면 회원가입을 하셔서 중급단계로 넘어 가시면 됩니다.


링크 ↓↓↓↓↓↓


https://cryptozombies.io/ko/




한글을 지원하고 있어 영어에 부담이 있으신 분들도 쉽게 솔리디티에 접근 하실 수 있습니다.


그럼 모두 열공하세요!



노바택 액션캠 PC 캠으로 사용법!


먼저 제가 구매한 노바택 액션캠 입니다. 일명 짭프로 라고 많이 부르고 있는 상품 입니다!

기본 구성으로 방수팩도 포함되어 있어 해외여행이나 물놀이 촬영 시 아주 좋습니다!




액션캠이라 액티비티 하면서 촬영하기 좋은데요. 액티비티 이외에 PC캠으로도 이용 할 수 있는 기능이 탑재 되어있습니다.

오늘은 PC캠 사용법에 대해서 알려드리겠습니다.




우선 PC와 캠을 연결 합니다.(기존 안드로이드폰 충전 케이블로 연결 가능합니다.)





케이블 연결 시

1. USB 모드

2. PC Camera

3. 충전 모드

이렇게 3가지 기능이 있습니다.


이 중 2번 PC Camera 모드를 선택 해 줍니다.





연결을 시 자동으로 Android 라는 웹캠으로 설치 됩니다. (윈도우10 기준)





그리고 카메라 어플리케이션을 실행 합니다. (기본 어플, 무설치)





카메라 어플을 실행 하면 노트북일 경우 기본 노트북 내장 카메라로 실행이 됩니다.

이때 아래 이미지의 빨간색 동그라미 카메라 변경 버튼을 클릭 해 줍니다.





그럼 아래 이미지와 같이 액션캠으로 PC캠을 사용 할 수 있게 설정이 끝났습니다.





그럼 여기 까지 입니다.

액션캠을 이용하여 재미있는 순간을 많이 촬영 해 보세요!!



오늘은 이전 시간까지 했던 텔레그램 봇을 종합하여 PHP 연동을 해보겠습니다.

가장 간단한 방법으로 코인 지정가 알람을 만들어 보겠습니다. 다른 것들과 적용 하여 여러분 만의 텔레그램 봇을 완성 시키길 바랍니다.


오늘 개발을 이어 나가시려면 아래 4가지 모두 수행 되어야 합니다.


1. 텔레그램 봇 생성하기.

http://hatpub.tistory.com/48?category=851684


2. 생성한 텔레그램 봇 채널 관리자로 추가 하기.

http://hatpub.tistory.com/49?category=851684


3. 봇이 관리자인 채널에 메시지 보내기.

http://hatpub.tistory.com/50?category=851684


※ Snoopy 를 이용하여 코인 거래소 API 불러 오기

http://hatpub.tistory.com/39




아래와 같이 간단하게 만들어 보았습니다.


HTML 까지 포함된 PHP 파일을 첨부 하였으니 필요 하신 분은 다운 받아서 활용하시기 바랍니다.

여러분 개개인에게 도움이 될만한 코딩 하시길 바랍니다.


PHP 파일 다운 받기

datepicker.php



	
<?
// Snoopy.class.php 사용하게끔 포함 하기.
include_once './insert/Snoopy.class.php';
$snoopy = new snoopy;
// 비트렉스의 값으로 불러오기.
$snoopy----->fetch("https://bittrex.com/api/v1.1/public/getmarketsummaries");
$t	 = $snoopy->results;

// Snoopy 링크 참고
preg_match_all("|MarketName\":\"(.*)\",\"High\"|U", $t, $name, PREG_SET_ORDER);
preg_match_all("|Last\":(.*),\"BaseVolume\"|U", $t, $price, PREG_SET_ORDER);

// 텔레그램 봇 API 값
$api_code = '511337000:AAG7gRmT3Ra8FYl22gekgckK_iwVwkJAAAA';

$int = 0;
WHILE($int < count($name)){
	//XLM 의 값이 0.00003487 미만 이면 알람 받기.
	if($name[$int][1] == 'BTC-XLM' && $price[$int][1] < 0.00003487){
		//받을 메시지 입력
		$telegram_text = $name[$int][1]." 현재 ".$price[$int][1]." 사토시" ;
		//챗 아이디와 메시지 배열에 입력
		$query_array = array(
			'chat_id' => '-1001305033363',
			'text' => $telegram_text,
		);
		// 메시지 보낼 URL
		$request_url = "https://api.telegram.org/bot{$api_code}/sendMessage?" . http_build_query($query_array);
		$curl_opt = array(
				CURLOPT_RETURNTRANSFER => 1,
				CURLOPT_URL => $request_url,
			);
		// curl로 접속
		$curl = curl_init();
		curl_setopt_array($curl, $curl_opt);

		// 응답결과는 알아서 처리.
		var_dump(curl_exec($curl));

	}
	$int++;
}

?>




결과화면





궁금하신 내용 있으시면 댓글 부탁 드립니다.

오늘은 생성한 텔레그램 봇으로 채널에 메시지를 보내 보도록 하겠습니다.

지금가지 세팅이였다면, 오늘 부터는 실제 메시지를 보내는 중요한 내용 입니다. 이글을 처음 보신다면, 아래 링크로 처음 부터 따라 하시면 좋을 것 같습니다.



1. 텔레그램 봇 생성하기.

http://hatpub.tistory.com/48?category=851684


2. 생성한 텔레그램 봇 채널 관리자로 추가 하기.

http://hatpub.tistory.com/49?category=851684





1) 생성된 채널(봇이 관리자로 들어가 있는 채널) 에 아무말이나 입력을 해 봅니다.

※ 저는 모바일로 hi 라는 말을 입력 하였습니다.





2) 이제 첫 날에 텔레그램 봇을 생성하면서 받은 API 키를 사용 해야 하라 때가 왔습니다.




아래 URL 에 API 내용을 붙여 넣기 하여 인터넷 주소창에 입력하고 이동 해 봅니다.

https://api.telegram.org/bot(이부분)/getUpdates


예) https://api.telegram.org/bot511337000:AAG7gRmT3Ra8FYl22gekgckK_iwVwkJAAAA/getUpdates



인터넷 창에 위의 주소로 이동을 하면 위 이미지 처럼 내용이 나타나게 됩니다.

여기서 중요한 것은 id 의 값입니다. '-' 부터 복사 해 둡니다.




3) 그럼 이제 텔레그램 봇으로 메시지를 보내 보겠습니다.

아래의 빨간 글자만 여러분의 API 값, Chat id 값으로 바꾸고 진행 하시면 됩니다.

마찬가지로 아래 URL 을 인터넷 창에 입력 하고 이동 해 보겠습니다.


https://api.telegram.org/bot(API 값 위와 동일)/sendMessage?chat_id=-1001305033363&text=Hello


예) https://api.telegram.org/bot511337000:AAG7gRmT3Ra8FYl22gekgckK_iwVwkJAAAA/sendMessage?chat_id=467385328&text=Hello




위와 같이 이미지가 뜨면서 채널에 Hello 라는 메시지가 봇을 통해 들어 온 것을 확인 하실 수 있습니다.






봇을 이용하여 채널에 메시지를 보내는 방법까지 해 보았습니다.

이 내용을 응용하여 다른 여러 프로그래밍 언어로 챗봇을 만드실 수 있습니다.

다음 시간에는 php 와 연동하여 봇으로 메시지를 보내보도록 하겠습니다.

만들어진 봇과 1:1 대화만 하신다면 굳이 채널을 만드실 필요는 없습니다.

텔레그램 봇을 만들어서 다같이 공유할 내용이 있다면 채널을 만들어 봇을 관리자로 만드시는게 좋으실텐데요.

오늘은 생성한 봇을 채널 관리자로 만드는 방법을 알아보겠습니다.


텔레그램 봇 생성하기

http://hatpub.tistory.com/48?category=851684 




1) 텔레그램 기본 화면에서 우측 상단 글쓰기 버튼을 클릭 합니다.





2) 채널 만들기를 클릭 합니다.





3) 채널명과 채널설명(선택) 을 입력 하고 다음 버튼을 클릭합니다.





4) 공개/비공개 설정을 합니다. (공개일 경우 채널 주소를 수동으로 입력 해야 합니다.)





5) 채널이 만들어 졌다면 우측 상단의 동그라미 버튼을 클릭 합니다.





6) 관리자 버튼을 클릭 하여 관리자를 추가 하여 줍니다.









7) @를 추가 하여 생성한 봇 이름을 검색 하여 추가 합니다.





8) 권한을 설저어 한 뒤 완료!




9) 위 단계를 마치면 관리자에 봇이 추가 된 것을 확인 하실 수 있습니다.



+ Recent posts