GitHub OAuth 구현하기 (1)
앞으로 몇개 글을 통해서 Go로 OAuth 인증을 구현하는 것을 해보려고 합니다. 오늘 글은 그 첫번째로 OAuth인증 방식과 GitHub에서 OAuth앱을 등록하는 방법을 간략히 설명합니다. 아마도 "Login with Google" 또는 "Sign in with GitHub" 이라는 버튼은 이제 익숙하게 봐왔을 것입니다. 사용자에게는 편리한 기능이지만, 기능을 개발하는 개발자는 개발하기가 좀 까다로운 기능입니다. ( 물론 이미 훌륭하게 구현해 놓은 소스코드들이 있기 때문에 반드시 까다롭다고 말할 수는 없습니다. ) 바로 OAuth 라는 규약의 인증과정을 이해해야 하고, 그 규약에 맞추어 메시지를 주고 받을 수 있어야 하기 때문이기도 하고, 테스트를 하려면, 직접 해당하는 서비스와 연결해야 할 필요가 ..
goroutine example.
go에서 가장 많이 들리는 특징이 동시성 처리인 goroutine입니다. 실제로 어떻게 하는 건지 간단하게 구현해보고, 실행 시간 비교를 했습니다. 1. 동시에 처리할 기능. 원칙대로라면 실행시간이 오래 걸리는 기능을 사용해야 하지만, 구현상의 복잡함을 생략하기 위해, 간단한 산술 연산으로 대체하고 실행시간은 sleep을 줘서 처리시간이 오래 걸림을 가정했습니다. func add100(arg int) (result int){ result = arg + 100 time.Sleep(time.Duration(1000)*time.Microsecond) return } func add1(arg int) (result int) { result = arg + 1 time.Sleep(time.Duration(10)*t..
오라클 클라우드 VM 포트 열기.
저번에 받았던 평생무료 클라우드( https://bitlog.tistory.com/90 )에서 뭘 하나 띄워서 개인적으로 써보려고 했는데, 외부에서 접속이 되지 않는 것을 알았습니다. 네트워크 보안설정때문인데요. 별다른 설정을 하지 않았다면, 외부로 나가는 통신은 모두 열려있지만, 외부에서 들어오는 통신은 22 ssh 포트를 제외하곤 차단되어 있습니다. 그래서 외부에서 접근하도록 하려면 두군데 설정을 조정해야 합니다. 하나는 VM의 방화벽과 다른 하나는 공용서브넷에서 포트 접속을 허가해야 합니다. 공용서브넷의 보안 규칙 설정. 메뉴 -> 네트워킹 -> 가상클라우드네트워크에 접근합니다. 그러면 (별도로 생성하지 않았다면) 하나의 가상클라우드 네트워크(VCN)이 보이게 되는데요. vcn 이름을 클릭하고, 공..
자바 Input 구현방식에 따른 속도비교.
Java를 이용해서 알고리즘 문제를 풀 때, 알고리즘을 어떻게 구현하느냐에 따라서 동작 속도의 차이가 발생합니다. 그리고 거기에 속도 차이를 발생시키는 요소가 한가지 더 있습니다. 바로 입력입니다. 일반적으로 Java의 입력 속도는 C에 비해 느리다고 알려져있습니다. 입력 값이 작은 경우, 문제 풀이에 영향을 주는 경우는 드물지만, 대용량의 입력을 받아야 하는 경우, 입력 처리가 늦게 되면 실제 문제를 위한 연산 시간이 줄어들어 손해를 볼 수 밖에 없습니다. Java에서 입력을 어떻게 구현하느냐에 따라서 실제 얼마나 차이가 나는지, 비교해봤습니다. 1. Scanner를 그대로 사용하는 경우. 2. BufferedReader를 사용하고, 문자열을 Strring.split로 분리하는 경우. 3. Buffer..
[번역글] Godoc: documenting Go code
원문 : Godoc: documenting Go code ( https://blog.golang.org/godoc ) 전체 내용은 원문에서 확인하실 수 있으며, 또 내용 중 일부 오역이 포함되어 있을 수 있으니, 가능하면 원문을 참조하시는 걸 추천드립니다. Go 프로젝트는 문서화를 중요하게 여깁니다. 문서화는 소프트웨어를 유지보수가능하고 접근성이 좋게 만드는 중요한 부분입니다. 물론 정확하고 잘 쓰여지는 것은 중요합니다. 하지만 작성하고 유지하는 것 또한 중요합니다. 이상 적인 것은 코드와 더불어 계속해서 동시에 변화해나가는 것입니다. 개발자가 문서를 쉽게 만들 수록 모두에게 좋습니다. 이를 위해 godoc이라는 문서화 도구를 만들었습니다. 이 글은 godoc이 문서화를 위해 어떤 방식을 사용했는지 설명..