그림을 본다는 건 꿈을 꾼다는 것 그림을 본다는 건 사랑을 한다는 것 세상살이 모든 고달픔과 시름과 걱정 내려놓고 어디론가 잠시 샛길로 빠져 걸어본다는 것 여럿이서도 좋겠지만 혼자라면 더욱 홀가분하고 좋은 것 (나태주의 시 중에서)
- 김두엽의《그림 그리는 할머니 김두엽 입니다 》중에서 -
* 그림을 보는 것만으로도 꿈을 꾸고 사랑도 할 수 있는데 그림을 직접 그리면 어떨까요? 아마도 더 많은 꿈, 더 아름다운 사랑을 하지 않을까요? 글을 쓰고 시(詩)도 쓰고 그림을 그리는 것은 무에서 유를 만드는 창조 행위입니다. 전율과 흥분과 희열이 춤을 추는 무릉도원입니다.
foreign key는... not valid후validate constraint방식 사용
Range 쿼리
겹치지 않는 범위:
단순 조건p >= start and p <= end는 비효율적 (복합 인덱스 있어도)
효율적 방식:
select *
from (select ... from ranges where start <= p order by start desc limit 1)
where end >= p
(start 컬럼 인덱스만 필요)
겹칠 수 있는 범위:
일반 B-tree 인덱스로는 비효율적
MySQL은 spatial index, PostgreSQL은 GiST 사용 권장
Concurrency and Parallelism
volatile
volatile은 lock을 대체할 수 없으며 atomicity 제공 안 함
lock으로 보호된 데이터는volatile필요 없음 (lock이 memory order 보장)
C/C++:volatile은 일부 최적화만 방지, memory barrier 추가 안 됨
Java:volatile접근은sequentially-consistent ordering제공 (필요 시 JVM이 memory barrier 삽입)
C#:volatile접근은release-acquire ordering제공 (필요 시 CLR이 memory barrier 삽입)
메모리 읽기/쓰기 재정렬 관련 잘못된 최적화 방지 가능
TOCTOU (Time-of-check to time-of-use) 문제
SQL DB에서 응용 계층 제약 조건 처리
단순 unique index로 표현 불가한 제약(예: 두 테이블 간 유니크, 조건부 유니크, 기간 내 유니크)을 애플리케이션에서 강제하는 경우:
MySQL(InnoDB): repeatable read 레벨에서select ... for update후 insert, 그리고 유니크 컬럼에 인덱스가 있으면 gap lock 덕분에 유효 (단, gap lock은 고부하 시 deadlock 유발 가능 → deadlock detection 및 retry 필요)
PostgreSQL: repeatable read 레벨에서 동일 로직은 동시성 상황에서 불충분 (write skew 문제)
해결책:
serializable isolation level 사용
애플리케이션 대신 DB 제약 사용
조건부 유니크 → partial unique index
두 테이블 간 유니크 → 별도 테이블에 중복 데이터 삽입 후 unique index
기간 배타성 → range type + exclude constraint
Atomic reference counting
Arc,shared_ptr와 같이 많은 스레드가 동일 카운터를 자주 변경하면 성능 저하
Read-write lock
일부 구현은 read lock에서 write lock으로 업그레이드 지원하지 않음
read lock 보유 상태에서 write lock 시도 시 deadlock 발생 가능
Common in many languages
Null/None/nil 체크 누락이 흔한 오류 원인
반복문 중 컨테이너 수정 시단일 스레드 데이터 경쟁발생 가능
가변 데이터 공유 실수: 예) Python에서[[0] * 10] * 10은 올바른 2D 배열 생성 아님
(low + high) / 2는 overflow 가능 → 안전한 방식은low + (high - low) / 2
단락 평가(short circuit):a() || b()는 a가 true면 b 실행 안 됨,a() && b()는 a가 false면 b 실행 안 됨
프로파일러 기본값은CPU time만 포함→ DB 대기 등은 flamegraph에 나타나지 않아 오해 유발
정규 표현식 dialect가 언어마다 다름 → JS에서 동작하는 정규식이 Java에서 동작 안 할 수 있음
Linux and bash
디렉터리 이동 후pwd는 원래 경로, 실제 경로는pwd -P
cmd > file 2>&1→ stdout+stderr 모두 파일,cmd 2>&1 > file→ stdout만 파일, stderr는 그대로
파일 이름은대소문자 구분(Windows와 다름)
실행 파일은capability 시스템존재 (getcap으로 확인)
Unset 변수 위험:DIRunset이면rm -rf $DIR/→rm -rf /실행 위험 →set -u로 방지 가능
환경 적용: 스크립트를 현재 shell에 적용하려면source script.sh사용 → 영구 적용하려면~/.bashrc에 추가
Bash는명령어 캐싱:$PATH내 파일 이동 시ENOENT발생 →hash -r로 캐시 갱신
변수 미인용 사용 시 줄바꿈이 공백으로 처리
set -e: 스크립트 오류 시 즉시 종료하지만, 조건문 내부(||,&&,if)에서는 동작 안 함
K8s livenessProbe와 디버거 충돌: 브레이크포인트 디버거는 앱 전체를 멈추게 하여 health check 응답 실패 → Pod가 종료될 수 있음
React
렌더링 코드에서state 직접 수정
Hook을 if/loop 안에서 사용→ 규칙 위반
useEffectdependency array에 필요한 값 누락
useEffect에서정리(clean up) 코드 누락
Closure trap: 오래된 state 캡처로 인해 버그 발생
잘못된 위치에서 데이터 변경 →불순한 컴포넌트
useCallback사용 누락 → 불필요한 리렌더링 발생
메모된 컴포넌트에비메모 값 전달시 memo 최적화 무효화
Git
Rebase는 히스토리 재작성
rebase 후 일반 push는 충돌 → 반드시 force push 필요
remote branch 히스토리 변경 시 pull도--rebase사용
--force-with-lease는 일부 경우 다른 개발자 commit 덮어쓰기 방지 가능, 단 fetch만 하고 pull 안 하면 보호 안 됨
Merge revert 문제
Merge revert는 효과 불완전 → 동일 브랜치 다시 merge 시 아무 변화 없음
해결책: revert의 revert 실행 또는 깨끗한 방법(backup → reset → cherry-pick → force push)
GitHub 관련 주의사항
API 키 같은 secret을 commit 후 force push로 덮어도GitHub에는 기록이 남음
private repo A를 fork한 B가 private이라도, A가 public이 되면 B의 내용도 공개됨 (삭제 후에도 접근 가능)
git stash pop: conflict 발생 시 stash가 drop되지 않음
.DS_Store는 macOS가 자동 생성 →.gitignore에**/.DS_Store추가 권장
Networking
일부라우터·방화벽은 유휴 TCP 연결을 조용히 끊음→ HTTP 클라이언트·DB 클라이언트의 커넥션 풀 무효화 가능 → 해결:TCP keepalive 설정
traceroute결과는신뢰성 낮음→ 경우에 따라tcptraceroute가 더 유용
TCP slow start는 대기시간 증가 원인 →tcp_slow_start_after_idle비활성화로 해결 가능
TCP sticky packet 문제: Nagle 알고리즘은 패킷 전송 지연 →TCP_NODELAY활성화로 해결 가능
Nginx 뒤에 백엔드 배치 시커넥션 재사용 설정 필요 → 미설정 시 고부하 환경에서 내부 포트 부족으로 연결 실패
Nginx는 기본적으로패킷 버퍼링→SSE(EventSource)지연 발생
HTTP 표준은GET·DELETE 요청 body를 금지하지 않음→ 일부는 body 사용하지만 많은 라이브러리·서버가 지원하지 않음
하나의 IP에 여러 웹사이트 호스팅 가능 → 구분은 HTTPHost헤더와 TLS의SNI가 담당 → 단순 IP 접속 불가 사이트 존재
CORS: 다른 origin 요청 시 브라우저는 응답 접근 차단 → 서버에서Access-Control-Allow-Origin헤더 설정 필요
쿠키 전달 포함 시 추가 설정 필요
프론트엔드와 백엔드가동일 도메인·포트라면 CORS 문제 없음
Other
YAML 주의사항
YAML은공백 민감→key:value는 오류,key: value가 올바름
국가 코드NO는 따옴표 없이 쓰면false로 해석되는 문제 발생
Git commit hash를 따옴표 없이 쓰면 숫자로 변환될 수 있음
Excel CSV 문제
Excel은 CSV 열 때자동 변환수행
날짜 변환:1/2,1-2→2-Jan
대형 숫자 부정확 변환:12345678901234567890→12345678901234500000
escape()와 encodeURIComponent()는 모두 문자열을 인코딩하는 JavaScript 함수이지만, 사용 목적과 인코딩 방식에서 중요한 차이가 있습니다. 웹 환경에서 데이터를 안전하게 전송하기 위해 주로 encodeURIComponent()를 사용하고, escape()는 더 이상 권장되지 않습니다.
제13회 서울국제어린이영화제 공식 포스터 [은평구 제공] 은평구가 오는 9월 10일부터 17일까지 ‘제13회 서울국제어린이영화제’를 개최한다고 31일 밝혔다.
상영은 구파발 롯데시네마 은평과 은평문화예술회관 대공연장에서 진행된다.
개막식은 9월 10일 오후 6시 롯데시네마 은평에서 열리며 김미경 구청장의 개막 선언을 시작으로 개막작 소개 및 상영 순으로 진행된다.
올해 개막작은 체코의 신예 감독 크리스티나 두프코바(Kristina DUFKOVA)의 첫 장편 애니메이션 ‘위풍당당 벤(Living Large)’이다.
개막작 위풍당당 벤(Living Large) 스틸컷 [은평구 제공] 두프코바 감독은 독창적인 비주얼 스타일로 아동과 성인의 세계를 자연스럽게 융합해 온 작가로, 이번 작품에서는 사춘기의 혼란과 외모에 대한 고민을 안고 살아가는 12세 소년 ‘벤’의 내면을 섬세하고 유쾌하게 그려냈다. 이 작품은 이번 영화제를 통해 국내 최초로 상영된다.
올해 영화제에는 역대 최다 출품 기록이 세워졌다. 총 123개국에서 3천576편의 작품이 접수됐으며 이 중 예심을 거쳐 35개국 127편이 최종 상영작으로 선정됐다. 전 세계 다양한 문화와 감성이 담긴 작품들이 어린이와 가족 관객을 만날 예정이다.
특히 헝가리 애니메이션 111주년을 기념한 ‘국제교류전: 헝가리’ 섹션이 마련된다. 헝가리 국제어린이청소년영화제 ‘씨네미라’와 협력해 엄선된 단편 애니메이션을 선보이며 함께 마련된 ‘마커스 골드선(Marcus Goldson)’의 일러스트 전시는 부다페스트의 도시 정취를 생생하게 전한다.
주말에는 가족 단위 관객을 위한 야외 프로그램도 풍성하게 준비된다. 롯데몰 은평 스카이필드는 ‘예스키즈존’으로 꾸며지며 그림책 워크숍, 필름 콘서트, 야외 상영회 등 다채로운 체험 프로그램이 펼쳐질 예정이다.
폐막식은 9월 17일 오후 5시 30분 은평문화예술회관 대공연장에서 열린다. 영화인들이 참여하는 레드카펫 행사에 이어 시상식과 축하공연, 폐막 선언이 진행될 계획이다.
김한기 집행위원장은 “서울국제어린이영화제는 가족이 함께 영화를 통해 소통할 수 있는 특별한 영화 축제”라며 “세계 유수 영화제에서 주목받은 ‘위풍당당 벤’을 국내 관객들에게 처음 소개하게 되어 기쁘다. 다양한 나라의 작품들이 관객에게 신선한 감동과 상상력을 전달하길 바란다”고 말했다.
김미경 조직위원장이자 구청장은 “올해 영화제는 사상 최다 출품작을 기록하며 국제적 관심을 입증했다”며 “이번 영화제를 통해 영상 콘텐츠에 노출된 어린이들이 보다 건강한 시선으로 세상을 바라보고 자신의 꿈을 키워나가길 바란다. 서울국제어린이영화제를 온 가족이 함께 즐기는 융합형 영상문화 축제로 성장시키겠다”고 말했다.
영화제 상영작과 부대행사에 관한 자세한 사항은 서울국제어린이영화제 공식 누리집(www.sicff.kr)에서 확인할 수 있다.
깨달음이나 자각은 충분히 힘들게 수련하거나 충분히 오래 명상함으로써 성취할 수 있는 특수한 경험이나 마음 상태가 아닙니다. 단지 마음의 본성 그 자체를 인지하는 것뿐입니다.
- 루퍼트 스파이라의 《알아차림에 대한 알아차림》 중에서 -
* 마음을 안다는 것, 매우 어려운 일입니다. 더구나 '마음의 본성'을 안다는 것은 참으로 어렵습니다. 붓다도 6년의 고행을 멈추고, 보리수나무 아래에서 고요히 '아나빠나사띠'를 하며 정등각(正等覺)을 이루었습니다. 참된 깨달음은 마음의 본성을 알아차리는 데에 있습니다. 잘못된 열심은 에고를 더 강화시켜 마음의 본성을 더 가릴 수 있습니다.