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이 문서화를 위해 어떤 방식을 사용했는지 설명..

[번역글] An intro to Go for non-Go developers.

원문 : An intro to Go for non-Go developers ( https://benhoyt.com/writings/go-intro/?fbclid=IwAR2dqFtMFep66auHbx0tDTAQvSvac7huECOieFV5BZYZa5L0w4bC0pD3_YY ) 괜찮은 내용이 있어, 원문 중 일부를 번역했습니다. 전체 내용은 원문에서 확인하실 수 있으며, 또 내용 중 일부 오역이 포함되어 있을 수 있으니, 가능하면 원문을 참조하시는 걸 추천드립니다. 왜 Go 인가? 구글 트렌트에 따르면, Go는 지난 몇년간 인기가 가파르게 상승했습니다. 언어의 간략함이 일부 이유겠지만, 아마도 더 큰 이유는 훌륭한 도구때문이 아닐까 생각됩니다. 제가 Go로 프로그래밍하는 것을 좋아하는 이유는 아래와 같습니다..