일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- OOM
- boj
- codewars
- 자바
- 프로그래머스
- 코드워
- go
- 동적프로그래밍
- DP
- zookeeper
- 알고리즘
- 튜토리얼
- dynamic programming
- redis
- HBase
- golang
- 파이썬
- docker
- programmers
- Java
- gradle
- 스칼라
- 문제풀이
- 주키퍼
- Go언어
- Python
- scala
- Linux
- leetcode
- 리눅스
- Today
- Total
목록분류 전체보기 (111)
파이문
다리를 지나는 트럭 programmers.co.kr/learn/courses/30/lessons/42583?language=java 대기하는 트럭 리스트(값은 트럭의 무게)가 주어지고, 리스트에 있는 트럭이 다리를 모두 지나는 시간을 리턴하는 문제이다. 단, 다리를 지날 때 다리 위에 있는 트럭들의 무게 합산이 다리가 버틸 수 있는 무게(weight) 보다 적어야 하고 하나의 트럭이 다리를 지나는 시간은 bridge_length 와 같다. 큐와 스택 카테고리에 있어서, 큐로 풀었다. (구현체는 deque 쓰긴 함) import java.util.ArrayDeque; import java.util.Queue; class Solution { public int solution(int bridge_length..
😀 0. 프로세스가 죽었다 서버의 프로세스가 메모리 부족으로 kill 되었다는 알람이 왔다. kernel: Out of memory: Kill process () score or sacrifice child 최근 서버에 서비스 몇 개를 더 띄웠는데, 그것 때문에 일어난 영향으로 보였다. 짧은 식견으로는 새로 올린 서비스가 메모리를 많이 잡아먹었고, 그렇기 때문에 새로 올린 서비스가 죽어야 한다고 생각했다. 그러나 실제로 죽은 프로세스는 HBase 의 RegionServer 였다. 확인해보니 HBase RegionServer 의 oom_score 가 더 높았었기 때문이었다. oom_score 는 여기서 짧게 작성한 적이 있는데, 쉽게 말하면 서버의 메모리가 부족할 때 oom_score 가 높은 프로세스가 ..
동일한 Column Qualifier 에서 (이를 'A' 라고 하겠다.) 조건 여러개를 OR 로 필터 하고 싶었다. 예시로 보자면 A 가 1 인 경우 또는 2인 경우를 스캔하고 싶어, 다음과 같이 작성하였다. (실제로는 Byte 값이 들어간다.) Scan scan = new Scan(); FilterList filterList = new FilterList(); SingleColumnValueFilter aIsOne = new SingleColumnValueFilter( 'CF', 'A', CompareFilter.CompareOp.EQUAL, 1 ); SingleColumnValueFilter aIsTwo = new SingleColumnValueFilter( 'CF', 'A', CompareFilte..
프로세스는 커널에게 필요한 만큼의 메모리를 요청하고 커널은 메모리 영역을 프로세스에게 주지만, 실제로는 할당은 하지 않고 해당 영역을 프로세스에게 주었다는 것을 저장해 둔다. 이 과정을 Memory commit 이라고 부른다. Memory commit 이 필요한 이유가장 큰 이유는 fork() 와 같은 프로세스를 생성하는 시스템 콜을 처리할 수 있어야 하기 때문이다. 예를 들면 물리 메모리가 4기가 일 때, 3기가 프로세스 A가 돌고 있다고 해 보자. 해당 프로세스가 자식 프로세스 B를 생성하게 (fork) 되면 자식 프로세스 B는 부모 프로세스 A와 마찬가지로 3기가 프로세스일 것이다. 하지만 이미 전체 메모리 4기가에서 3기가를 부모 프로세스 A 가 사용하고 있기 때문에 가용 메모리는 1기가 밖에 되..
docker container log가 계속 쌓여서 disk full 이 났다. 그래서 도커 컨테이너 내부 로그를 삭제 해야 했다. 스크립트로 만들기 도커 컨테이너 로그를 삭제하는 script를 만들었었다. 스크립트 예시 #!/bin/sh CONTAINER=$1 LOG=$(docker inspect --format='{{.LogPath}}' "$CONTAINER") echo "LogPath:" $LOG echo "Ary you sure clear the all $CONTAINER logs? [y|n]" read answer if [[ $answer == "y" ]]; then echo "Clear Logs!" truncate -s 0 "$LOG" fi echo "Done" 인자 값에는 container ..
gradle-ssh-plugin 문서: gradle-ssh-plugin.github.io/docs/ 저장소: github.com/int128/gradle-ssh-plugin 해당 플러그인의 장점은 병렬로 실행 된다는 것 정도 ssh example session 은 병렬로 실행 되기 때문에 아래와 같은 경우 web01, web02 가 병렬로 실행된다. 순차적으로 실행하길 원하면 ssh.runInOrder 를 사용할 것 ssh.run { session(remotes.web01) { execute 'command1' } session(remotes.web02) { execute 'command2' } } session 함수 안에서 사용하는 객체는 Remote 라는 클래스 객체로 같은 사람이 개발한 groovy..
gradle 빌드 시에 다음 에러 등장 Exception in thread "main" java.net.ConnectException: Connection refused (Connection refused)... 사용하고 있는 컨테이너 (또는 서버) 에서 gradle-bin-xxx 을 다운로드 받지 못하는 상황이었음 (Connection refused) 그런데 로컬 환경에서 다운로드 시에는 잘 됨 gradle 빌드 시에만 안되는 것이였음 이럴 경우 proxy 설정을 의심해 볼 수 있다. (서버에서 외부 리소스 다운로드를 막아두었던지 하는 등의 이슈) 2가지 방법이 있는데 gradle.properties 를 수정하는 방법 또는 gradlew 에서 JVM Option 을 수정하는 방법이 있다. 두개가 서로 ..
상황 git rm /path/to/file git commit -m "Delete wrong file" . git push git rm (--cached 없이) 으로 파일을 삭제하고 커밋하고 push 까지 해 버림 (...) (원래는 git mv 로 파일을 변경했는데 source 파일을 삭제 안하고 target 파일을 삭제했다는 TMI) 목표 이 때 잘못 삭제한 파일을 복구하고 싶었다. Example git version < 2.23 # 복구할 version 확인하기 $ git log # version 으로 이동 $ git reset # 삭제한 파일을 다시 가져온다 $ git checkout -- /path/to/file # 다시 커밋함 $ git commit -m "Fix" /path/to/file #..
파이썬 모듈 경로 site-packages 에 user module 을 만들어서, 해당 경로를 추가하였다. 그런데 user module 이 실제로 있는 경로 안에서 import 하면 어떻게 되는지 궁금해서 모듈을 import 할 때 어떤 것이 우선시 되는지 찾아보았다. 기본적으로 파이썬의 import module 우선 순위는 다음과 같다. 1. 빌트인 모듈 2. sys.path 로 출력되는 경로 순서 여기서 sys.path 는 아래의 경로들을 의미한다. 1. 현재 디렉토리 (sys.path 를 출력하면 가장 먼저 빈 문자열이 들어가 있는데 이를 의미) 2. PYTHONPATH (shell 에서 지정한 경로) 3. 설치할때 지정한 경로 대신에 현재 경로에 심볼릭 링크가 있다고 해서, 심볼릭 링크가 sys...
curl 로 특정 URL 을 요청할 일이 있어서 해보다가 request, response 시간을 자세히 측정할 수는 없는걸까? 하다가 찾아보았다. 1. curl-format.txt 란 파일을 생성하고 아래의 내용을 입력한다. time_namelookup: %{time_namelookup}s\n time_connect: %{time_connect}s\n time_appconnect: %{time_appconnect}s\n time_pretransfer: %{time_pretransfer}s\n time_redirect: %{time_redirect}s\n time_starttransfer: %{time_starttransfer}s\n ----------\n time_total: %{time_total}s\..