본문 바로가기

당신이 감동할 때.

(349)
갈림길에서 서서 2017년 8월 29일, 지금 다니고 있는 회사에 개발자로 입사를 한 게 말 그대로 엊그제 같은데, 약 2년이란 시간이 흘렀다. 비교 대상인 "어제의 나"와 굳이 매일 비교를 해보면, 꽤 많은 성장을 하고 있다. 매일매일은 아니지만, 높이가 다양한 계단을 오르는 것처럼 성장을 해온 것 같다. 개인적으로도, 회사로서도 같이 성장을 하고 있다는 자체가 아주 긍정적인 신호였고, 멀지 않은 미래가 기대되곤 했다. 그렇게 잘 안착하고 있는 와중, 올해 추석 전 무심코(?) - 정확히는 어느날 그냥 폰으로 푸시가 와서 터치 몇 번 하니 알아서 된 - 어떤 앱에 프로필 등록을 했었는데, 바로 그 앱을 서비스하는 회사에서 가벼운 티타임 제안을 받았다. 처음에는 다른 회사들은 어떻게 일을 하고 있을까? 잘 작동/운영되고..
Row-based Binlog(binlog_format=row) 일 때, mysqlbinlog 로 실행된 쿼리 백트래킹 해보기 어제, spring batch 로 준실시간 migration 해주는 job 이 하나 있는데, sql 이 실패했거나 예외가 발생하면 Prepared SQL 은 로깅이 되지만, 실패할 당시의 SQL 의 파라미터는 로그로 남지 않는다. db 에 insert 는 됐지만, 이상한 값이 들어가 있는 row 를 발견했어서, spring batch 의 버그인지 내가 만든 버그인지 구별이 먼저 필요했어서 mysqlbinlog 를 사용해보기로 했다. row based binlog format 일 때 mysqlbinlog 를 그냥 쓰면 GTID 를 set 해주는 내용 밖에 없어 원하는 insert 구문을 찾을 수 없었다. 결론적으로는 `--base64-output=decode-rows -v` 이 옵션이 있어야 했다. mys..
어제의 볼링 지난 월요일에 직장 전 동료와 3게임 쳐서 109, 174, 137 점 나왔다. ㅜㅜ 들쭉 날쭉... 어제는 퇴근 길 광주에 있는 동양 볼링장에서 3게임 침. 109, 171, 172 점 나왔다. 역시나 들쭉 날쭉... 첫 게임에서 뭔가 힘이 안 빠지고, 자세가 이상해지고 몸에 식은 땀도 흘러서 오늘은 날이 아닌가보다하며 그냥 갈까 했는데, 멘탈 잡고 동영상 찍어가며 뭐가 문제인지 투구마다 살펴보다가 2번째 게임 중간부터는 뭔가 좀 편안하게 칠 수 있었던 것 같다. 마지막 게임 치는 모습. 일관성이 없어도 너무 없다. 퍼스널이 벌어졌다 좁아졌다. 백스윙이 몸 안쪽으로 심하게 들어왔다 적당히 들어왔다 ㅜㅜ
리눅스에서 프로그램 업데이트 후 dock 에 등록 안 될 때 집에 2대의 데스크톱 컴퓨터 중 1대는 우분투 데스크톱이다. 공부할 때 많이 쓰는 머신인데, 공부를 영 안 했는지 최근 너무 오랜만에 켰다. 그리고 개발툴인 idea, pycharm 등 프로그램 업데이트를 하고 싶어졌다. 근데 윈도우즈에선 .exe 로, 맥에선 .dmg 로 설치하다보면 알아서 예전 버전을 삭제해주고, path 도 잡아주고 사용자가 별 다른 액션을 하지 않아도 깔끔하게 업데이트 된 버전을 사용할 수 있는 반면에, 리눅스 데스크톱을 쓰다보면, 사용하는 프로그램은 대부분 .tar 로 배포된다. jetbrains 의 프로그램도 그러하다. 그래서 사용자가 tar 파일을 압축풀고 원하는 설정(dock 에 추가, 터미널에서 실행 가능하게 등등)은 직접 해줘야 하는데, 그 중 dock 에 등록이 안 되..
오늘의 볼링 지난주 일요일, 유튜브 볼링상사 구독자 오프라인 이벤트 참여차, 1게임을 치고 나서 4일동안 못치다가 오늘 휴가내고 볼링치고 왔다 ㅎㅎ 한.. 2-3주 전쯤 양평 물맑은 볼링장에서 잘 치시는 크랭커 분에게 포인트 레슨(?) 조언(?)을 들었는데 그 때는 잘 안 되다가 그 다음부터는 웬지 잘 되는 느낌이다 ㅎㅎ 당시 포인트 집어준 부분은 어브덕션(내전)이 안 되서 사이드롤이 안 생기는 점과 바깥으로 공을 뽑아내지 못하는 점이었다. 그 날은 조언을 듣고 바로 잘 되진 않았지만 그 부분을 신경쓰며 몇번 쳐보고 집에서도 매트/러그 위에 릴리즈를 해보며(단독 주택의 장점! ㅎㅎ) 그 부분에 집중 연습을 해봤다. 그러다 어느 순간, 어브덕션이 이런 느낌이구나를 깨닫게 되었고 항상 부족했던 일관성이 어느정도 생기기 ..
OOM 맞고 나서 알아본 apache poi xlsx 레거시 코드에서 csv 를 생성해주는 코드(csv 다운로드 기능)가 여러 이유로 아직도 쓰이고 있다. 로직은 xlsx 를 생성하고 이 xlsx 로부터 데이터를 읽으며 csv 를 쓰는 로직이었다. 오래된 코드(무려 2013년!)이고, 다 퇴사를 해버린데다 히스토리 관리가 잘 안 돼있어서 왜 xlsx 를 먼저 생성하는지 정확한 이유를 찾진 못했지만, 이미 xlsx 다운로드 기능을 먼저 만들어놔서 그것을 활용하는 게 더 낫다고 판단이 됐었나 보다. 그러던 중, 어제 약 23,000 rows 에 대한 csv 다운로드 요청이 OOM 을 유발하며 서버가 죽는 현상이 발견되었다. (컬럼수도 493개였음) xlsx 를 생성할 때 Workbook 의 인스턴스 타입을 XSSFWorkbook 으로 되어있었는데, 해당 인스턴..
이탈젯 필그림 점화플러그 셀프 교체 나에게는 2015년식(? 2014년식인지 헷갈린다..) 이탈젯 필그림 125 라는 스쿠터가 있다. 한때, 베스파와 동일 디자인 라이센스를 획득(공유)하여 다른 재질이지만 베스파와 거의 똑같은 외형의 스쿠터로 잠깐 국내에 알려졌던 것 같긴 한데, 내가 구매할 당시에는 디자인 라이센스가 없어졌나 그래서 다른 디자인의 필그림이 출시되었다. 지금은 양평이 집이지만, 서울에 있을 때는 거의 매일 타고 다닐 정도로 없으면 안 되는 소중한 존재였다. 지금도 직장인 서울 강남에 주로 주차를 해두며 서울 시내를 돌아다닐 때 아주 유용하게 잘 타고 다니고 있다. 다만, 관리를 잘 못해주고 있는 것이 사실... 작년 겨울에, 계속 차를 타고 다니며 이 필그림의 배터리의 - 극을 미리 빼놓지 못해, 결국 방전까지 시킨 뒤, ..
Mysql GTID-based Replication 오류 Skip 하기 뚜렷이 어떤 SQL 에러가 발생한 지 확인 가능하고, 그걸 Skip 해도 된다는 확신이 있으면 이 방법이 가장 쉽고 빠르다. 1. 문제가 된 gtid 트랜잭션 번호 찾기 2. 문제가 된 gtid 트랜잭션 건너 띄도록 빈(empty) 트랜잭션 주입 mysql> SET GTID_NEXT="c85b621b-8fd3-11e8-862c-020051680009:66194695"; Query OK, 0 rows affected (0.00 sec) mysql> begin; Query OK, 0 rows affected (0.00 sec) mysql> commit; Query OK, 0 rows affected (0.01 sec) mysql> SET GTID_NEXT="AUTOMATIC"; Query OK, 0 rows..