본문 바로가기

분류 전체보기236

메모리 분석 사이트 1. HeapHero(https://heaphero.io/) 자바 힙 메모리 분석 사이트. zip or gz 파일 가능 2. GCeasy(https://gceasy.io/) GC분석 사이트. 가입 후, 무료로 사용할 경우 횟수 제한 3. FastThread(https://fastthread.io/) 자바 쓰레드 분석 사이트 2019. 5. 28.
return label(block) 코틀린의 모든 블록은 라벨 설정이 가능하다. 그래서 return할 때 반환할 블록을 임의로 설정하여 여러가지 효과를 나타낼 수 있다. case 1) 일반적인 return. 3을 만나면 forEach를 종료한다. fun foo() { listOf(1, 2, 3, 4, 5).forEach { if (it == 3) return // non-local return directly to the caller of foo() print(it) } println("this point is unreachable") } 결과값 12this point is unreachable case 2) forEach에 람다를 적용한다. 블록에 라벨을 설정하여 해당 블록만 반환하도록 변경. 3을 제외하고 다 출력 fun foo() {.. 2019. 5. 23.
유용한 함수 let, apply, run, with let : 호출하는 객체를 이어지는 블록의 인자로 넘기고 블록의 실행 결과를 반환(인자가 한 개 일 경우 it으로 대체 가능) class A { fun get() { println("get A") } } A?.let { it.get()// "get A" } apply : 호출하는 객체를 이어지는 블록의 리시버로 전달하고 객체 자체를 반환 class A { var a : Int var b : Int var c : Int fun setA(n : Int) { a = n } fun setB(n : Int) { b = n } fun setC(n : Int) { c = n } } val result = A.apply { setA(1) setB(2) setC(3) } // 아래처럼 쓰는 것을 위 apply로 간단하게.. 2019. 5. 21.
비동기적 Javascript – 싱글스레드 기반 JS의 비동기 처리 방법(구조 싱글 스레드 (Single-Thread) 로 작동한다고 알려져있는 Javascript 가 어떻게 비동기 작업을 통해 여러가지 Task를 동시에 처리하는지에 대해 알아보자. 특히 Promise 패턴, Async Await 를 제대로 이해하기 위해서는 꼭 공부하고 넘어가자. 비동기적 Javascript C, Java, Python 을 사용하면 상식적으로 별도의 스레드나 프로세스를 사용하지 않는 이상, 먼저 작성된 순서대로 즉, 동기적으로 코드가 실행된다. 가령, 3번째 줄에 있는 코드의 작업이 5번째 줄에 있는 코드보다 늦게 끝나는 비상식적인 일은 발생하지 않는다는 뜻이다. 하지만 자바스크립트는 먼저 실행된 코드의 작업이 끝나기 전에 더 나중에 실행된 코드의 작업이 끝날 수 있다. 아주 간단한 예를 들어보겠.. 2019. 4. 22.
Linux 메모리 확인 방법들 1.top 개인적으로 많은 용도로 가장 빈번하게 활용하고 있습니다.^^; 총 메모리 사용량을 모니터링하는데 주로 사용하는데, 프로세스 당 메모리와 CPU사용량도 보여줍니다. 아래 설명할 free 명령어처럼 buffer와 cache 정보도 확인할 수 있습니다. 여기서 짚고 넘어가야 할 것은, 기본적으로 리눅스는 가장 빠른 성능을 위해 실행 중인 프로세스들이 요청하는 메모리를 제외한 메모리들 중 거의 대부분을 Disk cache로 사용한다는 점이다. top 명령어를 실행해 보면 이를 알 수 있는데, Mem영역의 free 메모리 사이즈보다 Swap영역의 cached Mem 사이즈가 훨씬 큰 것을 볼 수 있다. 명령어를 실행하면 실시간 모니터링이 되는데, 옵션 키들을 사용할 수 있다. shift + m - 메모.. 2019. 4. 11.
BASH 쉘 profile, bashrc 설정 제목: BASH 쉘 설정: 버전 1.0 Bash은 Bourne Again Shell의 축약어이다. 이것은 원래의 Bourne 쉘과 호환이 가능하며 명령 라인 편집과 같은 몇 가지 점에서 기능이 향상되었다[역자 주: Bash 쉘은 Bourne 쉘에서 작성된 프로그램을 수행할 수 있으며, Bourne 쉘 보다 더 많은 기능을 제공한다]. 또한 Bash 쉘은 리눅스 쉘이며 리눅스에서 가장 널리 사용되는 쉘이다. 쉘이 무엇인지 모르는 사람이 있을지도 모르니 설명하기로 하자. 쉘이란 사용자와 커널 사이의 매개체 역할을 하는 프로그램이다[역자 주: 쉘은 사용자로부터 명령을 받아서 그것을 프로세싱하기 위해 커널에게 넘겨주는 일을 하는 프로그램이다]. 대부분의 리눅스 소프트웨어같이, bash도 상세한 부분까지 설정할 .. 2019. 4. 10.
단축키 find(Ctrl+F) 안될 때 설치했고, 단축키에는 분명 등록되있는데 안된다. 이유는 명확하다. 무언가 다른 plugin에서 해당 단축키를 먹고 있다. 내 경우는 설치 시 같이 추가했던 intellij vim이었고, 해당 플러그인을 disable해서 해결했다. edit창에 대한 조작이라 이것 외에도 많은 플러그인들이 충돌할 수 있을 것으로 생각된다. 플러그인 조작은 File -> Settings(Alt + Ctrl + S) -> plugins -> installed 2019. 4. 9.
좌측 Project View에 파일 목록 안보일 때 1. 정상적으로 import되지 않음. 2. 정상적으로 import하였으나 excluded 되었을 때 1번의 경우는 쉽게 원인 파악이 가능하다. 다시 import해보면 되니까. 2번의 경우는 다시 import해도 설정이 그대로 남아있다. idea폴더를 날리고 다시 import하거나 excluded된걸 찾아야 한다. 1,2 모두 해결을 위한 과정은 비슷하다. >> File > Project Structure > 좌측 Modules탭 intelliJ 파일 구조에서 제외시키기 참 쉽게 되있다. 그래서 고생함. 가령 위 화면처럼 프로젝트의 root폴더가 선택된 상태로 바로 위 Mark as의 Excluded를 클릭하면 전체 프로젝트가 다 excluded된다. 그럼 안보임... 난 탭인줄 알았고, 탭 별로 다르게.. 2019. 4. 8.
Express node.js 의 미들웨어 모듈 Express 나름대로 정리 Express가 할 수 있는 일의 단적인 예제 기존의http.createServer(function (req, res) { const method = req.method.toLowerCase(); switch(method){ // get 요청 처리 : 영화 목록 보기, 영화 상세정보 보기 // 영화목록보기 /movies // 상세보기 /movies/1 or 2 or 3 .... case 'get' : handleGetRequest(req,res); break; // 영화 정보 추가 /movies case 'post' : handleSelectMethod(req, res); function handlePutRequest(req, res){ con.. 2019. 3. 13.