분류 전체보기 88

[서평] The Bullet Journal Method @Ryder Carroll - 1

* 이 서평은 불렛저널링 방법에 대한 내용은 언급하지 않습니다. 이 책을 다 읽은 지는 반년이 넘게 지나갔지만, 책 자체가 우리가 모르던 어떠한 통찰이나 개념을 주제로 한다기 보다는 불렛저널이라는 저널링 방법과 그에대한 철학을 소개하는 책이다 보니 서평을 쓸 생각 자체를 못하고 있었다. 생각해 보면 불렛저널이라는 것 자체가 통찰이고 새로운 개념인데 뜻을 담고있는 책이라기보다 사용설명서같은 느낌으로 생각하다 보니 서평을 쓰는것을 망각하고 있었던 것 같다. 사실 불렛저널 책 안에는 내가 여태 읽은 여러 책들에서 나온 자기관리 방법과 개념들이 드문드문 나오고 있다. 여행을 계획하고 준비하는 것 자체가 행복감과 삶의 질을 올려준다는 이야기나(@당신이 지갑을 열기 전에 알아야 할 것들), 명상을 함으로써 우리가 ..

[서평] 모든 것이 되는 법 @에밀리 와프닉

Youtube 에서 직업 관련 영상을 보다가 이 책을 접하게 되었다. 왠지 모르게 끌리는 제목에 나도 모르게 사 버렸다. 현대 사회에서는 많은 사람들이 하나의 직업에 대한 실력을 쌓아 전문성을 기르고, 그 길로 더 높은 수준의 전문가가 되려고 한다. 나 또한 같은 생각이었고 개발자라는 직업 이외에는 다른 길을 생각해 본 적은 없었다. 그런데 이 책에서는 여러 분야에 흥미가 생기고, 그것을 어느정도 마스터 했다는 생각이 들면 지루해지고 마는 성질을 가진 '다능인' 들에 대한 이야기를 해 주면서, 평소 전문가만이 인생의 모든 길이라고 생각했던 나의 인식의 단조성을 어느정도 바꿔 주었다. 여러 분야에 흥미가 생기고, 그것을 다 하고 싶으면서도 어느정도 숙련되면 지루해 지고 마는 사람들을 다능인 이라고 부르면서..

[SQLite3][C++] database is malformed - DB 에 손상이 갔을 때.

여느때와 같이 bug ticket 이 들어왔나 보고 있던 중에, 내 모듈이 SQLite DB 에 저장한 데이터를 읽을 수 없었다는 이슈가 있었다. log 상으로는 어떠한 문제점도 보이지 않아서 설치된 DB 를 받아서 분석을 해 보았더니, 읽을 수 없었던 PK 를 SELECT 하려고 시도하니 database is malformed 라는 문구가 뜬 적이 있었다. 해당 로그에 대한 자료를 찾아보니 pragma integrity_check 라는 PRAGMA 를 이용해서 DB 가 손상되었는지 확인 할 수 있었지만, 손상되었다는 정보만 얻고 별 소득이 없었다. 결국에 해결해야 되는 것은 내가 구현한 모듈에서 DB 를 손상시킬 수 있는 동작을 하고 있었다는 점이기 때문이다. 우선 모듈은 DB 에 Read/Write ..

[SQLite3][C++] SQLite3 에서 record 를 지워도 DB 용량이 줄어들지 않는 이유는? - page, vacuum, rbu vacuum.

SQLite3 에서 아래와 같이 DELETE query 를 실행하면 record 를 지울 수 있다 DELETE FROM [table_name] WHERE [column_value]=? WHERE 문을 제거하면 전체 테이블이 모두 지워지는데, DELETE Query 를 이용해서 record 는 모두 삭제가 되어도 DB 용량은 그대로인 것을 볼 수가 있을 것이다. 이는 SQLite3 가 reocrd 를 삭제해도 디스크로부터 할당받은 데이터 공간을 바로 버려버리는 것이 아니라, 이후에 새로운 record 가 Insert 되었을 때 재활용하기 위해 page 단위로 빈 공간이라는 정보를 유지하고 있기 때문이다. Vacuum 그러면 DB Size 를 줄이기 위해서는 어떻게 해야 하는가? 간단하게도 VACUUM 이라..

[SQLite3][C++] Sqlite3 의 journal file 에 대해

SQLite 의 Journal file SQLite 에서는 갑작스러운 power failure 등으로 인한 쓰기 작업이 중단되었을 경우 DB 손상을 막기 위해 Rollback Journal 이라는 기법을 사용한다. DB 에 write 작업이 발생하게 되면, rollback journal 이라는 곳에 데이터가 write 로 인해 변경되기 전으로 돌아갈 수 있도록 하는 정보들을 기록하게 된다. 데이터 write 및 commit 이 종료되면 journal file 을 삭제하게 되며, 쓰기작업 도중에 종료될 경우 삭제하지 않은 journal file 이 남아있는 상태로 남아있게 된다. rollback journal 을 이용해 무결성 복원을 해야하는 경우 이 journal 을 hot journal 이라고 부르는데..

[SQLite3][C++] SQLite 의 file lock 매커니즘

ACID 와 SQLite3 SQLite3 는 Database 의 ACID 를 준수하기 위한 하나의 방법으로 File Locking Mechanism 을 사용한다. 잠시 ACID 에 복습해 보자면 아래와 같다. Atomicity 원자성 : 하나의 논리적 실행단위인 트랜잭션이 도중이 중단되지 않고 끝까지 실행되어야 함 Consistency 일관성 : 트랜잭션 실행이 종료된다면 언제나 일관성 있는 상태의 Database 가 되어야 한다. Isolation 독립성 : 트랜잭션 수행 중에는 다른 어떠한 트랜잭션이 도중에 끼어들거나 트랜잭션의 중간 작업내용을 볼 수 없음을 의미한다. Durability 지속성 : 한번 트랜잭션이 수행 되었다면 그 결과는 시스템 장애나 전원 종료 등이 발생하더라도 영구히 남아야 함을..

[SQLite3][C++] sqlite3_busy_timeout

지난 포스팅에 이어, SQLite3 database 가 locked 상태인 경우에 일정 시간 대기를 하도록 설정이 가능한 sqlite3_busy_timeout 함수를 살펴보고자 한다. 해당 함수에 대한 문서는 아래 주소를 참고 바란다. https://www.sqlite.org/c3ref/busy_timeout.html sqlite3_step 을 통해 DB 에 접근을 하는 동작을 수행할 때 만약에 DB 가 Write 접근 - Read lock 이나 Read/Write 접근 - Write lock 인 상태에는 SQLITE_BUSY 를 즉시 리턴하게 된다. 여러 쓰레드/프로세스에서 해당 데이터베이스에 접근하는게 일반적인 상황이라면 즉시 접근실패를 하고 종료하는 것 보다 lock 을 놓을 때 까지 대기하는것이 ..

[SQLite3][C++] database is locked 에러가 나올 때 ?

database is locked 에러가 나올 때 SQLite 개발을 하다 보면 저런 에러메시지를 만나거나 에러코드 SQLITE_BUSY (5) 를 반환받아서 DB 에 대한 읽기/쓰기 가 불가능한 경우를 본 적이 있을 것이다. 해당 에러코드가 리턴되는 경우는 DB 에 Write 작업을 하는 도중, Read/Write 를 하고자 접근을 한 경우이다. SQLite 는 기본적으로 Atomicity (원자성) 을 지키기 위해서 DB 에 write 작업이 발생을 할 경우 File 단위로 lock 을 걸어 버려서, 같은 Database 의 다른 table 에 접근한다 하더라도 lock 이 걸린 상태에서는 읽기/쓰기가 불가능하다. 혹시나 SQLite3 Lib 을 이용한 프로그램에서 저런 문제가 나온다면, 읽기/쓰기가..

[서평] 당신의 삶에 명상이 필요할 때 @앤디 퍼디컴

최근에 나는 불렛저널이라고 부르는 '나' 맞춤형 플래너를 쓰는 것을 시작하였는데, 그곳에 습관을 가지게 하기 위한 Habit tracker 라는 목록을 만들어 두고 그곳에 명상하기라는 것을 적어 두었다. 4월 7일부터 기록을 시작했는데 결과는 단 두번, 25일과 27일이 전부였다. 그것도 이 책을 읽고 나서야 시작하게 된 것이다. 명상을 하겠다고 해 놓고는 무엇이 명상인지 잘 알지도 못했다. 그냥 눈을 감고, 앉아서, 지금 내 상황과 나에게 필요한 것 뭐 이런것들을 생각하면 되겠지.. 라고 해놓고 단 한번조차 제대로 하지 않았다. 평소에도 명상이라는 것에 대한 이미지가 있었는데, 그저 눈을 감고 자세를 곧게하고 생각을 비우거나, 생각을 하는 것이라고 느끼고 있었다. 하지만 이 책을 읽고 명상에 대한 내 ..

[서평] 코딩진로 @류채윤, 맹윤호, 박민수

" 길을 아는 것과 그 길을 가는 것은 다르다 " 영화 매트릭스에 나오는 대사로 이 책에서 가장 강조하는 문구가 아닐까 싶다. 이 책 자체는 IT 진로로 이직을 하고 싶어하는 비개발자 직군을 타겟으로 쓰인 책이지만, 개발자로써 언제나 이직을 고민하다 보니 눈에 들어와서 읽게 되었다. 실제로 개발자에 들어오면 어떤 문제에 맞닿고, 어떤 좋은 점이 있는 지 등.. 에 대해서는 잘 나와있지 않다. 그런 부분을 기대하는 독자들에게는 기대하지 말라고 말해주고 싶다. 하지만 이러한 점이 나쁘다는 것이 아니다. 위 문구를 강조하는 이유가, 실제로 자신이 개발자로써 조금이라도 체험을 해 보지 않으면 모른다는 것 때문인것 같다. 실제로 이 책에서 가장 인상적이었던 부분이 맹윤호 개발자님이 밟아온 길을 소개하는 것인데, ..

반응형