이더리움은 단순히 데이터를 저장하는 용도를 가진 비트코인의 블록체인을 넘어 동작하는 프로그램을 담을 수 있는 2세대 블록체인 입니다. 이더리움에 담겨진 프로그램은 마치 계약서와 같다고 하여 스마트 컨트랙트라고 합니다. 이더리움을 활용한 응용 프로그램(dapp)을 개발하기 위해서는 스마트 컨트랙트를 거의 필수적으로 개발해야 하는데요, 앞으로 여러 포스팅에 거쳐 이러한 스마트 컨트랙트를 작성하는 방법에 대해 알아보도록 하겠습니다. ■ 스마트 컨트랙트 개요스마트 컨트랙트는 이더리움이 최초가 아닌 1994년에 처음으로 제안된 개념입니다. 현실의 계약서는 글로 작성되어있어 실제 사람이 계약을 이행해야 했습니다. 하지만 디지털 명령어로 계약을 작성한다면, 해당 명령어에 따라 자동으로 계약을 이행할 수 있다는 개념 ..
■ InvocationTargetExceptionJava Reflection을 사용중 InvocationTargetException가 발생하는 경우가 있습니다. 이 예외를 처음 만났을 때는 정확하게 어느 위치에서 예외가 발생하였는지 알 수 없어 굉장이 당황할 수 있습니다.(사실 제가 그랬습니다...) InvocationTargetException는 method invoke시 호출한 메소드 내에서 Exception이 발생했을때 해당 Exception을 wrapping 해주는 Exception 클래스입니다. 실제로는 invoke 된 메서드에서 발생한 Exception이지만, 마치 invoke 구문에서 발생한것처럼 보이기 때문에 InvocationTargetException 자체의 stack trace 만으로..
인증되지 않은 SSL 인증서를 사용하는 사이트는 보안에 위험할 수 있습니다. 따라서 Java의 기본 API는 유효하지 않은 SSL 인증서를 사용하는 서버에 접속하지 못하게 설계되어있습니다. 하지만 개발용 서버나 여러가지 경우의 상황에서 유효하지 않은 SSL 인증서를 사용하더라도 접속을 해야하는 경우가 있습니다. 그래서 이번 예제는 유효하지 않은 SSL 인증서를 사용하는 서버에 접속할 수 있도록 HttpsURLConnection를 설정하는 예제입니다.
React는 Facebook에서 개발한 웹 프론트엔드 라이브러리 입니다. MVC중의 V - View 만을 담당하는 라이브러리 입니다. 기존의 DOM은 자주 변하는 동적인 UI에 최적화 되어있지 못해서 웹 기술이 발전하고 웹페이지의 규모가 커질 수록 성능상의 이슈가 빈번히 발생했습니다. 그래서 페이스북에서는 이 DOM의 조작을 최소화 시켜서 UI업데이트를 최적화 해 주는 React라는 라이브러리를 개발하였습니다. React는 Virtual DOM이라는 기존의 DOM을 추상화해서 업데이트 되는 UI를 반영하고, 업데이트가 완료되면 이 Virtual DOM을 이전의 Virtual DOM과 비교해서 달라진 부분만 실제 DOM에 반영하는 방식으로 레이아웃 계산을 최소화 시킴으로써 성능을 향상시켜줍니다. 따라서 성..
안녕하세요 박스여우입니다. 최근들어 안드로이드 개발을 꾸준히 못하고 있어서 많이 잊어먹은게 많은것 같습니다. 얼마전에 후배가 dp와 px의 차이점이 뭐냐는 질문에 멘붕이 오고야 말았습니다.. 분명 1학년 전공프로젝트 발표때 전교생앞에서 발표했던 내용이었지만 기억이 나질 않았습니다.. 그래서 앞으로는 다시 공부를 열심히 해보도록 하겠습니다. ■ DP - Device Independence Pixel안드로이드에서 px을 사용하게되면 말그대로 px단위로 레이아웃을 구성하게되어 다양한 크기의 스마트폰의 해상도에따라 UI가 천차 만별이 됩니다. 그래서 android에서 만들어낸 단위가 dp(dpi)입니다. 우선 dp를 다루기전에 dpi라는 단위부터 짚고 넘어가야 할것 같습니다. dpi는 dots per inch로..
정말 오랜만의 포스팅입니다. 겨울방학 3개월동안 인턴과정을 진행했고 정직원 확정이 된 뒤로 블로그에 대한 관심이 소홀해진것 같아 죄송합니다 ㅠㅠ. Android에서는 Kotlin을 정식언어로 채용하고 곧있으면 Java 9이 출시된 분위기에서 Java 8버전에대한 소개를하자니 많이 늦은감이 있긴합니다만 그래도! Java8에서 새롭게 추가되었던 default 메소드에 대해서 알아보도록 하겠습니다. ■ Interface대부분 아실거라고 생각하지만 달라진점을 소개하기 전에 기존 특징을 먼저 알아보고 넘어가도록 하겠습니다. 인터페이스는 기본적으로 상수와 추상 메소드만을 정의할 수 있었습니다. 이를 클래스에서 구현하거나 익명으로 인터페이스를 구현한 객체를 생성할 수도 있습니다. 1234567interface Par..
안녕하세요 박스여우입니다. 얼마전에 NodeJS를 다루던 중 POST Request를 받을 때 파라미터를 사용할 수가 없었습니다. 그래서 이번에는 NodeJS에서 Get과 Post Request의 Paramater를 사용하는 방법에 대해서 알아보도록 하겠습니다. ■Get Request우선 Get 방식부터 살펴보도록 하겠습니다. 일반적인 파라미터 사용1234567//http://localhost:8080/test/users?id=test&name=boxfoxapp.get('/test/users', function(req, res) { var user_id = req.param('id'); var user_name = req.param('name'); res.send(user_id + ' ' + user_n..
안녕하세요 박스여우입니다. 요즘 새로운 서비스를 준비중이라 NodeJS를 다루고 있는데요, 그래서 이번에는 NodeJS와 MongoDB연동하고 사용하는 방법에 대해서 알아보도록 하겠습니다. ■MongoDB 설치지난 포스팅에 이어서 진행되는 프로젝트이므로 이전 포스팅을 보지 않으셨다면 읽고 오시는것을 추천합니다. 그럼 MongoDB연동을 시작해 보도록 하겠습니다. MongoDB를 사용하기 위해서는 MongoDB를 사용해야겠지요? MongoDB를 설치하는 방법은 매우 다양합니다. 저의 경우 여러가지 방법을 시도해 보았지만 대부분 되지않는 방법이 많아서 제가 성공한 MongoDB 설치 방법을 적어보도록 하겠습니다. 1234[root@localhost ~]# cd /usr/local/[root@localhost..
안녕하세요 박스여우입니다. 요즘 새 프로젝트를 진행하며 NodeJS를 사용하고 있는데요, 제 프로젝트를 진행함과 동시에 배우게 되는것들을 포스팅 하려고 합니다. 그래서 오늘은! Linux 환경에서 NodeJS를 설치하고 간단한 HTTP 서버를 구현해 보도록 하겠습니다. ■ NodeJS 시작!1[root@localhost local]# sudo apt-get install -y nodejscslinux에서 nodejs를 설치하는 방법은 매우 간단합니다. 바로 명령어 한줄이면 바로 NodeJS가 설치됩니다. 위의 명령어는 단순히 NodeJS만을 설치하는 명령어이며 추가적인 모듈들을 설치하기 위해서는 npm install 명령어를 사용하시면 됩니다. 이에 대해서는 추후에 소개해 드리도록 하겠습니다.NodeJS..
■결정장애를 위한 패키지 구조 선택법안녕하세요 박스여우입니다. 얼마 전에 프로젝트를 진행하며 패키지를 어떻게 해야 효율적이고 예뻐 보일까 고민에 빠진 적이 있었습니다. 이렇게 할까, 저렇게 할까 고민하다 패키지구조를 몇 번이나 수정했는지 모르겠습니다... 그래서 이번 포스팅에서는! 조금 가벼운 주제로 저처럼 패키지 구조를 선택하는 대에 어려움을 겪고 계시는 분들을 위해 패키지의 구조와 어떤 구조가 적합한지 선택하는 방법에 대해서 알아보도록 하겠습니다. ■레이어 우선 구조우선 첫 번째 구조인 레이어 우선 구조입니다. 레이어 우선 구조는 각각의 이름을 가진 모듈을 하위에 두고 service, dto, dao 등 각 클래스들의 역할로 묶은 구조입니다. - com.boxfox.service.modulename-..