우울한 날엔 니체가 딱이다.운동을 다시 시작한지, 일주일이 조금 넘었다.온 몸이 두들겨 맞은 것처럼 아프다.옛날 같았으면, 이러한 고통이 너무 좋게 느껴졌겠지만 요즘은 그마저도 없다.그냥 답답한 마음이다.그래서, 이런날에는 니체가 딱이라고 생각했다. 니체는 어떤 삶을 살았을까"나를 죽이지 못하는 것은 나를 더 강하게 만든다."니체의 [우상과 황혼]에서 나오는 말이다.좋은 말이다. 간단히 말해 고통을 해석하고 자기 삶에 대해 힘으로 전환하라는 뜻이다.그렇다면, 니체는 뭔 삶을 살았길래, 이런 말을 했을까? 니체가 말하는 이상니체의 [차라투스트라는 이렇게 말했다.] 에서는 니체가 생각하는 수많은 이상향이 나온다.사회/문화적 가치에 끌려다니지 않고 스스로 가치를 만드는 사람(신은 죽었다!)고통을 피하기보다 자..

전체 글
읽기: 기본InputStream / OutputStream → 바이트 단위 I/OReader / Writer → 문자 단위 I/OInputStreamReader / OutputStreamWriter → 바이트 ↔ 문자 변환 연결자바에서는 기본적으로 파일 I/O에 대해 위처럼 다룬다. 다만, 다 비슷하기 때문에, 일단 byte 단위 I/O만 알아본다. public static void main(String[] args) { String path = "/app/src/파일.txt"; try (FileInputStream input = new FileInputStream(path)) { for (int position = 0; position new File..
투포인터투포인터는 배열이나 리스트에서 두 개의 인덱스를 움직이며 조건을 만족하는 구간이나 쌍을 찾는 기법이다. 핵심: 모든 경우를 다 확인하지 않고, 조건에 따라 포인터를 이동해서 탐색 범위를 줄이는 것즉, 완전 탐색과 같은 문제를 O(N) 혹은 O(N log N) 정도로 줄일 수 있다. 투포인터가 가능할 수 있는 조건투포인터가 가능한 핵심 조건은 한 포인터를 움직였을 때 결과가 어느 방향으로 변할지 예측 가능해야하는 것이다.1. 배열이 정렬되어 있어, left++ 하면 값이 커지고, right-- 하면 값이 작아짐2. 모든 원소가 양수라, 구간을 늘리면 합이 커지고, 줄이면 합이 작아짐3. 두 배열이 정렬돼 있어, 어느 쪽 포인터를 이동해야 할지 판단 가능한 경우즉, 배열의 단조성이다. 투포인터1 - ..
"하나님께서 당신을 사랑하십니다."의 의미를 기억하자. 다윗의 고백, 그리고 기도를 그만두라!시편 38편 4절~8절내 죄악이 내 머리에 넘쳐서 무거운 짐 같으니 내가 감당할 수 없나이다.다윗의 참회시이다.다윗은 뭘 그렇게 잘못했길래 이러한 죄책감을 느낄까?가끔 살아가다보면, 우리는 삶에 대해 하나님 앞에서 떳떳할 수 없음을 느낀다.자다가도 죄에 대해 생각이나고, 여행을 떠나서도 죄에 대해 생각이 난다.우리는 죄인이기에 당연한 생각일 것이다.내가 피곤하고 심히 상하였으매 마음이 불안하여 신음하나이다다윗은 자신의 죄로 인해, 상당한 아픔을 느낀다.어제 설교에서는 이에 대해 "기도를 그만두라!"고 설명한다.죄로 인해 아프다면, "당연히 기도를 통해 치유받아야 하는것이 아닌가?"에 대한 의문이 일었다.하지만, ..
리눅스에서 I/O를 다루는 방법리눅스는 많은 I/O 자원을 파일처럼 추상화해서 file descriptor로 접근하게 한다.파일 디스크립터를 파라미터로 파일 인터페이스를 사용할 수 있다. 대표적인 파일 인터페이스 - 시스템 open()파일/디바이스를 열고 fd 획득read()fd로부터 데이터 읽기write()fd에 데이터 쓰기close()fd 닫기lseek()파일 offset 이동stat() / fstat()파일 메타데이터 조회poll() / select()여러 fd의 준비 상태 감시epoll()많은 fd를 효율적으로 감시mmap()파일 등을 가상 메모리에 매핑ioctl()디바이스에 특수 명령 전달 리눅스에서 대표적인 파일 자원 regular file: 디스크에 저장된 일반 파일socket: 네트워크 통..
아버지와 아침운전을 하다.오랜만에 장롱에 묵혀뒀던 면허증을 꺼냈다.목표는 혼자 낚시 여행 다녀오기이다.어쨋튼, 굴삭기를 제외한 근 6년 간 첫 운전에 매우 비싼 아부지 차를 몬다는건 영광스러운 일이 그지없었다.핵심은 평소 "귀찮다. 금방 배운다."라는 생각을 가져왔다는 것이다.문득, 이러한 경험해보지 못한 일에 대해 섣불리 판단하거나, 예측, 어림짐작을 하게 되는 이유에 대해 궁금해졌다.휴리스틱 - 정신적 지름길인간은 자원을 이용함에 있어서 항상 선택을 해왔어야 했다.돈보단 워라벨을 선택하고, 일보단 잠을 선택하기도 한다.즉, 인간은 자신의 한정된 자원안에서 기회비용을 따지며, 선택해왔다.이러한 선택은 동물들에게도 적용이 된다.자연스럽게 포식자를 보면 붙어보지 않고, 바로 피한다.자연스럽게 어미보단 새끼..
편향된 자기 스키마의 문제점에 대하여내가 가장 좋아하는 애니메이션 케릭터를 뽑자면, 단연 올마이트라 할 수 있겠다.항상 웃으며 사람들을 구한다. 스스로도 겁을 갖지만, 책임감을 통해 힘든 내색 한 번 안보인다.내가 그에게 열광하는 것은 아마 목표를 향해 나아가는 집요함일 것이다.올마이트의 자기 스키마 형성 경로 - 역할 동일 시 경로 집중올마이트의 자기 스키마 형성 경로 - 경험(가치 내면화 경로)올마이트가 히어로 활동을 한창 하던 때, 사회는 범죄와 악에 대한 불안이 만연한 사회였다.그는 "빌런이 많다"는 생각보다는 사람들에게 "괜찮다."고 믿게 해줄 존재가 없다는 것에 초점을 맞췄다. 올마이트의 자기 스키마 형성 경로 - 해석(가치 내면화 경로와 역할 동일 시 경로 분기)올마이트는 빌런이 많음이라는 ..
Brute Force완전 탐색이란 가능한 모든 경우를 직접 확인해서 정답을 찾는 방법이다.이 알고리즘에서 가장 중요한 것은 모든 경우의 수가 몇 개인지 확인하는 것이다.선택지가 10개이고, 20번 선택해야 한다면, 10^20이다.시간 복잡도 상 불가능하다. 유형1. 선택지가 2개인 완전 탐색타겟 넘버https://school.programmers.co.kr/learn/courses/30/lessons/43165=> 2개로 분기가 되니, 계산->조건->분기 순으로 해야 중복이 안된다.유형2. 순열보통 순열을 만들때는 DFS + 백트레킹을 사용하여 순열을 만든다.StringBuilder를 통하여 수를 만들고, isVisit[]을 통하여 이미 StringBuilder에 들어가 있는 것들을 제외시켜준다.만일, ..
