2021년 11월 25일 목요일

재림 # 1

인생의 가장 큰 수수깨끼는 자신이 가진 프레임으로 세상을 바라볼 때 불현듯 찾아온다.

기적은 마치 유성처럼 부지불식간에 우리 옆을 아무 일 없다는 듯 비켜지나갈때도 있지만

그 반대의 경우를 생각할 수 없을 만큼 인간의 삶은 너무나도 짧고 허망할 뿐이다.


"두.. 두줄. 어째서..?"

지원은 두 눈을 의심했다. 하늘이 무너지는 기분을 느끼며 차가운 바닥에 쓰러졌다. 

"이럴 수 없어.. 이럴 수 .."

꽃다운 나이 스무살, 연애경험도 없는 지원에게 동정임신이란 형언할 수 없는 끔직한 기적이었다.


"그래. 예수가 어떤 존재였을지 한번 상상해보세요."

나이가 지긋해 보이는 흰 머리의 교수는 교단을 이리저리 돌아다니며 졸고있는 학생들 앞에서 혼잣말 처럼 중얼거리는 듯 강의를 이어나갔다.

"예수라는 한 사람은 말이죠, 사실은 그렇게 처음부터 밝은사람이 아니었을지도 몰라요"

"싱글맘의 품에서 자라며 온갖 굳은일을 하며 자라났죠. 어찌보면 약간의 애정결핍과 세상에 대한 분노 또한 마음속에 있었을지도 모릅니다."

고산대 신학대학 교수 곽철호는 그렇게 혼잣말 같은 강의를 마치고 너저분한 랩실로 돌아왔다.  랩실에는 젊어보이지만 어딘지 모르게 추레한 이미지의 대학원생 경표가 맨 바닥에 늘어지듯 누워있었다.

"얌마 경표야! 그렇게 맨바닥에 누워있지 말라고 해도!"

"어엇..! 교수님 일찍오셨네요"

경표는 슬그머니 상체를 일으켰지만 아직 엉덩이는 바닥에 대고 다시 늘어지게 하품했다.

"그 지난번에 말씀하신 자료들은 일단 몇개 찾아서 웹하드에 저장해두었는데요. 이게 뭐 워낙 드문 케이스다 보니 사실 자료 찾기가 쉽지 않네요."

교수는 혀를 끌끌 차며 의자에 털썩 앉았다.

"그래 뭐. 그렇게 드문 일이니 사람들이 기적 기적 하는거지.. 자주 일어났으면 기적이라고 하겠어? 일단 지난번 자료도 한번씩 다시 스크랩 해서 정리좀 하자."

교수는 무심히 웹하드를 뒤져보며 파일을 하나씩 열어본다.

경표는 간신히 바닥에서 일어나며 혼잣말을 했다.

"에휴.. 말이 안되는 일이니까.."


2024년 10월 6일 서울 밤10시. 초등학교 고학년 쯤 되보이는 학생이 검은 후드를 눌러쓴 채 다 쓰러져가는 빌라의 공동 쓰레기통을 비우고 있다.

"후우 .. 하아"

각종 더러운 쓰레기들. 비닐과 비닐 안에 쌓여있는 음식물 쓰레기들을 다 튿어진 장갑으로 하나씩 가져온 쓰레기통에 담는다. 

"에이 씨발! 정말 못해먹겠네"

어린아이의 입에서 나왔다고 하긴 어려울 찰진 발성의 육두문자가 허공을 갈랐다.

삑-삑-삑

공동 현관 문을 열며 누군가 걸쭉하게 취해서 들어온다. 남자가 비틀비틀 대며 학생에게 불안하게 다가갔다.

"이새끼 너 .. 누구야?"

취한 남자는 초면에 반말을 시전하며 아이의 후드티를 뒤집어 깠다. 

어린아이의 얼굴 이라고는 믿기 힘들정도로 세상의 풍파를 다 맞은 듯한 표정과 눈 밑에 자그마한 상처. 액면가는 중학생은 되어보이지만 영양 부족 탓인지 골격과 키는 아직 초등학생 수준에 머물러 있는듯한 체구. 

16살 진호는 화들짝 놀라며 다시 후드를 뒤집어 썼다.

"아니.. 저 그냥 청소하러.."

"이새끼가 말 똑바로 안해?"

착!

다짜고자 진호의 뺨을 때리는 취한남성

털썩

진호는 성인 남성의 힘을 버티지 못하고 다리에 힘이 풀려 주저앉았다.

"후.. 씨발"

주저앉은 채로 주머니에서 뭔가를 꺼내는 진호.

진호는 다시 일어서며 작은 주머니칼을 꺼내 남자앞에 들이밀었다.

"이 씨발새끼야. 내가 쓰레기 치우러 왔지 뺨맞으려고 온줄알아?"

남자는 슬슬 뒷걸음질 치더니 계단위로 휙 올라가버렸다.

"하아.. 저 개같은"

한참을 그렇게 덩그러니 떨리는 손으로 주머니칼을 쥔채 서 있었다. 옆은 눈물이 앞을 가렸지만 진호는 분노를 꾸역꾸역 누르며 하던일을 마저 해나갔다.

2021년 1월 10일 일요일

프론트경험 없는 개발자가, React Native로 앱 만든 후기

대기업 프로그래머 6년차. 하지만 앱개발 및 프론트앤드 경험은 거의 없음.

참고로 안드로이드 IOS 개발경험은 전무하였고, 실제 업무는 데이터 처리 및 클라우드쪽.


사실 프론트앤드 개발하면서 가장 어려웠던 부분은, Javascript 진영을(landscape) 이해하는 것 이었다.

볼륨이 워낙 커서 어떤 순서로 어떻게 이해해야 할지 상당히 난감했던 기억이 있었다.

 * 추천드리는 순서: ES3~ES7까지의 히스토리와 문법 이해 -> Javascript 내부구조(이벤트루프, 비동기) + Nodejs이해 -> BOM, DOM 조작 관련 커멘드 -> Webpack 들 모듈러에 대한 이해


사실 안드로이드나 IOS 도메인의 내부 구조에 대해서는 잘 몰랐고 지금도 잘 모른다. 이미 RN이 상당한 수준으로 감싸고 있기 때문에 많은경우 신경 쓸 필요가 없다. (과거에는 manual install 이나 linking 등등 떄문에 android를 너무 모르면 개발하기 쉽지 않았다.)

ReactJS 와 React Native는 웹과 앱이라는 도메인이 다르지만 구조적 개념은 비슷하다. 따라서 둘 중 하나만 배우면 둘다(웹과 앱) 잘할 수 있다.

--

React Native를 사용하며 느꼈던 점

1. UI 조작이 직관적이다: DOM 을 직접 조작하는건 매우 고통스러운 일이며, 직관적이지 않다. React는 각 UI 요소를 전부 컴포넌트로 관리하여 살제로 우리에게 보이는 UI묶음이 하나의 객체처럼 여겨진다. 즉, UI와 실제 코드의 괴리감이 적은편


2. 맨바닥부터 시작하지 말라: 물론 React Native 도 미리 제공하는 예쁜 컴포넌트들을 다수 가지고있지만,  그런 기본 컴포넌트보다 디자인이 들어간 컴포넌트를 원할것이다. 필자는 Kitten UI 를 사용하였고, 일종의 Wrapper로써, 꽤나 전문적이어 보이는 디자인을 활용할 수 있었다.


3. 찾아보면 다 있다: 내가 필요한 기능을 집어넣고 싶을때 가장 먼저 해야할것은 구글링. 리액트 네이티브의 써드파티들은 생각보다 엄청나게 일을 열심히한다. 예를들면 카메라 조작이 필요하다면 검색을 잘 해서 가장 최근까지 활발히 개발되어있는 컴포넌트를 사용하면 된다. 


4. 설치하면서 자주 막힌다: 이게 특히나 안드로이드쪽 번들링할때 문제가 많이 발생하는데 왠만하면 gradle 떄문인 경우가 많다. 설치가 좀 꼬였을 경우 왕왕 cd ./android & ./gradlew clean 으로 해결되는 경우가 꽤 많다. 그 외에도 자잘하게 이슈들이 계속 발생한하는데 무었이 문제인지 알기 어려운 부분이 너무 많다. 이떄는 그냥 'what went wrong' 부분을 카피해서 구글링하면 대체로 해결법을 찾을 수 있다. 


5. 될수있으면 서버리스로: firebase를 일정부분 무료로 사용할 수 있기때문에, 구태여 백엔드를 만들지 않아도 서버리스로 쉽게 무료로 앱을 만들 수 있다. 또한 Invertes라는 회사가 firebase에 대해 react native 에서 조작할 수 있도록 패키지를 만들었고 문서도 상당히 잘 되어있기 때문에 활용도가 높다.


6. 상태에 대한 이해가 필수: 다음과 같은 키워드에 대해 잘 이해해야 한다. Redux, Hook, useEffect, useStatue, Subecribe. 리액트는 무조건 상태값 조정으로 모든 동작이 이루어진다. 리액트의 정적구조는 JSX 가 책임지고 동적구조는 function 과 status가 책임진다. 처음 앱을 설계할 때 이 상태값을 어떻게 관리하고 조작할 것인지 미리 생각해두는게 스파게티코드를 막는 매우 중요한 부분이다.


7. 성능에 대해서 신경써야한다: 컴포넌트 상태가 자주 바뀌고 그에따라 자주 랜더링될수록 사용자는 버벅거림을 느낄 수 있다. 개발할 떄 항상 이점을 염두해두고 같은 동작이라면 최대한 랜더링이 자주 되지 않는 방향으로 설계해야한다.


8. IOS 개발하려면 어쨌든 맥이 필수: 아무리 하이브리드용 언어라지만 Xcode와 에뮬레이터가 있어야 앱을 번들링해서 앱스토어에 등록할 수 있다. 또한 실물 아이폰이 없으면 아무리 에뮬레이터에서 잘 돌아가도 실제 기기에서의 동작을 보장할 수 없다. 개발 자체도 맥에서 하는게 더 편한 이유는, 리액트네이티브 코드가 안드로이드 에뮬레이터에서 썩 좋은 성능올 돌아가지 않는다.


--


결과물 : 여기저기 다니면서 맛집이나 카페 등등 기록하려고 만든 앱입니다. 친구들끼리 팔로잉 할수도 있고. 이웃들끼리 소통할 수 있는 플랫폼 입니다.


온더랜드 - 지역기반 SNS

Android: https://play.google.com/store/apps/details?id=com.duddlsdbql.ontheland

Ios: https://apps.apple.com/us/app/id1518369229#

원문: https://www.clien.net/service/board/lecture/15783611

2020년 11월 10일 화요일

경력직 컴퓨터공학 지식

웹 개발 (프론트/백) 경력직 프로그래머 면접에 도움이 될 만한 내용으로 Index 형식 구성중. 

내가 무얼 모르는지 아는게 중요하다. 

신입 프로그래머 컴퓨터공학 지식: https://softwarepatrasche.blogspot.com/2016/04/blog-post.html?showComment=1606787920137#c9214959261385290037


작은 돌

작은 돌 표면에 아주 미세하게 껌딱지처럼 붙어서 평생을 사는 미생물들이 있다. 그들에겐 아주 작은 습기와 햇빛만 비춰주면 돌을 다 덮을 것 처럼 증식했다가 자기들끼리 싸우고 죽이며 다시 개체수가 줄어든다. 이 작은 돌에는 다른 미생물들도 많이 사는데 이 개체는 자신들이 이 돌의 주인인양 다른 개체들을 사정없이 먹어치운다. 빛이 없는곳엔 작은 반디불이가 무리짓는다. 본성이 잔인한 존재이지만 아름다움을 추구하는듯 돌은 반짝이게 한다.

어느 날 아주 작은 모래알갱이가 이 돌에 부딧쳤다. 돌에 비해 아주 작았지만 속도가 빨라서 많은 파편이 튀었다. 돌은 움푹 패이고 갈라졌다. 돌에살던 미생물들은 대략 3할정도 남았다. 서로 잡아먹던 이들이지만 멸종의 위기에선 어떻게든 살아보려 갈라진 곳의 반대편으로 모인다. 습기와 햇빛을 주지만 더이상 증식하지 않는다. 돌을 전부 뒤엎을 것 같던 이 개체들의 자신감도 풀이 꺽인듯 주변 미생물들과 그저 어울어진다.

2019년 9월 11일 수요일

어느 밤

추석 연휴. 밤이 너무 깊지 않은 통에 도통 잠이 들지 않았다. 친구들에게 연락해 볼까 했지만 이내 관두었다. 애매한 거리감의 여사친에게 보낸 메시지에 결국 삭제 버튼을 누르었다. 밖에 나가볼까 했지만 술을 한잔 마신 덕에 차를 끌고 나가 긴 글렀고 버스를 타자니 택시로 돌아올 것 같았다. 중심가에서 꽤나 떨어진 외진 위치의 평범한 아파트에 자리 잡은 부모님의 거처는 야경이 정말로 아름다웠다. 수평선 끝에서 끝까지 출처모를 빛무리들이 매일 밤 반짝였다. 야경에 사로잡힌 아버님은 단박에 구매를 결정하였고 덕분에 생각지 못한 심각한 층간소음에 골머리를 앓았다. 



"띠링" 울리는 전화. 삭제한 메시지에 무심한 질문이 돌아온다. 잠시 고민 후 집을 나선다. 어차피 이렇게 보내기엔 너무 아까운 시간이다. 가을장마가 끝난 직후라 그런지 밤바람은 스산했다. 한적한 버스에 몸을 실어 가만히 기대어간다. 요즘 들어 자주 기댄다. 기댈 곳 없는 세상에 홀로 우뚝 서 있노라면 썩은 나무처럼 밑동이 부서져 어디로든 나뒹굴 것 같았다. "어디야?" 집 앞까지 찾아가도 하염없이 늦는 그녀는 미안한 기색 없이 항상 쾌활하다. "가던 데로 가자" 잠시 고민하는 척했지만 행선지는 몇 년째 변하지 않았다. 뜨거운 국물에 소주 한잔 할 수 있는 곳. 갖은 걱정들과 욕망들이 어깨 위에서 머리 위에서 살그머니 내려온다. 



"요즘 뭐하고 지내길래 소식이 없냐" "코타키나발루 다녀왔어" "남자 친구랑?" "아니~ 가족이랑 다녀왔지" "너는 어떻게 매주 여행을 가니. 돈도 많이 못 벌면서. 누가 보면 재벌인 줄 알겠어~" "인생 즐기는 거지 뭐 있니. 그리고 나 그렇게 많이 안가~" "너 지난번에도 어디 다녀왔잖아" "언제?" "지난주엔가? 인스타에 사진 올렸던데". 한잔. 두 잔. "사는 게 지겹고 의미가 없는 것 같아" "넌 항상 그래. 뭔가 새로운 일을 시작해봐" "난 나를 위해 일을 하고 싶어. 뭔가 인생의 주인공이 내가 아닌 것 같아" "넌 사업을 해야 하는 것 같아. 그래야 좀 행복할 것 같아" "음. 글쎄 꼭 사업이라기 보단 뭔가 주도적인 일을 해야 행복을 느낄 것 같아" "돈 많이 벌면 나 잊지 말구~" "그래. 너 아들 낳으면 내가 꼭 챙길게"



특별한 일이 없기에, 특별한 얘기는 나누지 않았다. 그저 뿌리 깊이 자리 잡은 외로움을 조금 덜어내어 술잔에 섞어본다. 스무 살 때부터 부모와 떨어져 지낸 지 9년. 길지 않은 시간이었지만 여전히 멀리 떨어져 있으면 왠지 모를 불안감이 나를 다시 이따금씩 고향으로 이끈다. 천성이 새로운 환경에 적응을 못하는 기질이라 유치원 저학년 때에는 일 년 내내 계단에 앉아 홀로 지냈다. 그런 꼬맹이가 스스로의 텃밭을 일구기 위해 꽤나 오래도록 나와있었지만, 자연스레 생긴 향수병을 관계로써 해소하기보단 혼자라는 것을 받아들이는 방향으로 자라게 되었다. 관계에 대한 기대감이 실망으로 변하면서 방어태세에 본격적으로 돌입한다. 말수는 더욱 줄고 생각은 더 많아졌다.



새벽 1시가 넘은 시간. 쉼터였던 술집은 근처에 위치한 성인나이트의 2차 전쟁터로 변했다. 40대가 넘어 보이는 아저씨와 아줌마들이 나름의 멋으로 한껏 꾸미고 치근덕거리고 교태를 부린다. "저것 봐 저것 봐. 엄청 늙어 보이는 남자가 저 여자한테 말 걸고 있잖아" 그녀는 인상을 찌푸리면서도 호기심에 눈이 반짝인다. 심각한 인지부조화의 장이 등 뒤에서 시작되기에 그녀가 가리키는 방향으로 고개를 돌리지 않는다. 결혼과 사랑은 나에게 아직 불가침의 영역이지만 이들을 달리 어떻게 설명할 수 있을까. 난 그들과 다르고 또 부모님은 다를까. 



"잘 가" 총총 멀어져 가는 뒷모습을 본다. 외로움은 또다시 사냥감을 발견한 맹수들처럼 나를 에워싸고 천천히 기다린다. 취기가 가시고 정신이 멀쩡해지면 득달같이 달려들어 내 뒷목, 어깨, 허벅지, 발꿈치, 무릎, 팔꿈치를 문다. 그리고 그들은 천천히 나를 움직인다. 말과 행동을 일반인들보다 느려지고 눈에는 생기가 사라진다. '그으으으' 입에서는 맹수의 그것과 비슷한 소리가 흘러나온다. 한 걸음씩 발을 뗼 때마다 썩은 내가 진동한다. 추한 모습을 보이기 싫어 사람이 적은 곳으로 자연스럽게 걸음을 옮긴다. "깔깔깔" "그랬고 그랬잖아" "진짜?" 왁자지껄 나누는 이야기들에 더욱더 몸을 피한다. 더욱더 숨어 들어간다. 깊을 굴 속으로 기어들어간다. 지렁이처럼 몸을 움직여 간신히 남은 틈을 메운다. 그러곤 눈을 감는다.

2019년 8월 29일 목요일

외제차를 샀다

외제차를 샀다. 에스토리칼 블루의 17년식 BMW는 5월의 햇살을 받으며 따사롭게 반짝였다. 살만해서 산 외제차는 아니었다. 하루 8시간 노동에 자유를 박탈당한 나의 꿈과, 결국 이뤄지지 못한 사랑이 나를 현실에 발 디딜 곳 없게 만들었다. 결국 이놈도 다른 놈들과 마찬가지로 많은 시간을 들여 갚아나가야 할 짐이 될 테지.



들뜬 마음은 4개월 만에 다시 수면 깊이 가라앉았다. 현실로 돌아오는 데에 걸리는 시간은 내어 바친 돈만큼, 딱 그 정도만 유효했다. 노동은 계속되었다. 대기업 프로그래머로 일한 지 만 3년. 입사 전 그토록 좋아 보였고 다다를 수 없어 보였던 이 직함은 이젠 지긋지긋하게 싫고 역겨워졌다. 앞으로 30년 동안 노동과 젊음의 등가교환은 계속될 것이고 늙고 병들은 몸을 이끌고 이 닭장을 벗어나 대략 30평대 수도권 아파트와 대학 졸업한 아들과 딸이 덜렁 생길 테고, 틈만 나면 부동산 얘기, 돈 얘기, 자식 얘기하는 늙은 와이프가 곁에 남겠지. 평범하고 얼핏 보면 부유해 보이는 삶이지만 그 무언가 중요한 것이 빠져 보였다.



돌아보면 삶이라는 건 늘 밀물과 썰물의 반복이었다. 밀어닥칠 땐 정신없이 그 위치 그 자리라도 지켜보려고 발버둥 쳐 보지만, 빠져나갈 땐 영혼이라도 같이 용해되어 나간 듯 끝없는 공허함이 수면 아래 있던 백사장처럼 고개를 내민다. 그럴 때면 가끔 극단적인 생각도 한다. 이대로 끝이면 어떨까. 이 모든 경쟁, 욕망, 거짓말, 노력, 실패, 인간관계, 집착, 희열 그리고 두통이 거대한 피로감이 되어 코끼리의 발처럼 가슴을 짓무른다.



친구가 빌려준 이상 문학상 전집에 이런 재미난 표현을 쓴 글이 문득 기억났다. 작가의 심장 위에는 항상 코끼리의 발이 올려져 있다. 친구를 만날 때나 산책을 할 때나 잠을 잘 때, 불현듯 코끼리는 잠시 고민 후 발에 힘을 준다. 작가는 말할 수 없는 고통을 느끼고 잠을 설치고 길에서 가슴을 부여잡고 고통스러워한다. 고통의 크기는 작은 당구공이었다가 거대한 지구가 되지만, 가장 가까운 친구들도 알 길이 없다.



나에게 고통은 자유의 박탈이고 용기의 부족, 의지의 결여이다. 나로 태어나 나로 죽을 수밖에 없는 운명에 대한 비통함이다. 현실의 지루함이고 예상되는 모든 시나리오가 5지 선다형이었음을 깨달은 순간이다. 이치에 도통 맞지 않는 세상이며, 그 속에서 정답을 찾으려 하는 사람들이 만들어낸 복잡한 핼러윈이다. 버릴 수 없는 몸의 욕망과 속 깊은 부도덕함과 거짓말들이다. 그럼에도 쓰레기 같은 욕망을 애써 감추려는 시도이며 멀쩡한 척 살아가는 내 사지이다.



에스토리칼 블루의 17년식 BMW는 4개월이 지나도 여전히 잘 나가지만 왠지 모르게 뒷자리에 덜그럭거리는 잡소리가 가끔 나기 시작했다. 애써 외면하지만 고요한 밤 심하게 덜컹이는 지면을 지날 때면 어김없이 내 귀를 간지럽힌다. 울화통이 터지 지기보단 잘 못 들은 걸로 치고 넘어간다. 매번 그렇게 넘어간다.

2019년 8월 18일 일요일

들판


어렸을 땐 고독과 슬픔에 대한 남모를 호기심이 있었다. 나이가 들며 불현듯 생각만 해도 가슴이 얼얼한 그런 기억들이 이따금씩 찾아왔고 힘차게 앞으로 나아갔던 하루하루를 다시 무의 공간으로 만들어버렸다. 아무것도 없는 공간에서 앞으로 계속 나아가도 결국 다시 무의 공간으로 돌아온다. 그저 발에 닿는 감촉만으로 내가 앞으로 가고있다고 인지 할 뿐, 스쳐가는 바람 한점 느껴지지 않는 이 곳에서 그저 묵묵히 고통을 견디어 낸다. 인간은 나약하고 어리석기 때문에 고통은 필연적이다. 어째서 이렇게 불완전한 존재로 만드셨나요. 누군가 그랬다. 즐겁게 살지 않는 것은 죄다. 맞다. 따라서 즐겁게 살기 위해, 고통을 줄이기 위해 또다른 고통을 견디며 산다. 고통 끝에 잠시 행복이 찾아왔지만, 그 행복은 더 큰 고통을 남기고 떠나간다. 행복이 떠난 자리에서 벗어나기 위해 앞으로 나아간다. 한치 앞도 보이지 않는 너른 광야에서 벗어나기란 불가능해보이는 듯 하다. 바로 여기서 실존에 대한 고민이 시작된다. 우린 누구이며 대체 무엇때문에 이런 즐거움과 고통을 느끼며 살아가야 하는가. 목적론에 입각한 이러한 생각은 결론에 도달 할 수 없다는 것을 잘 알고있다. 하지만 여전히 인간은 어리석고 나약하기 때문에 지혜롭고 강인한 것, 바로 목적과 타당성에 손쉽게 이끌린다. 또 그것에 유혹당한다. 결국 아무것도 얻지 못한 채 인생의 결론에 다다른다. 수조의 인간들은 무상하다는 말만 남기고 사라져갔다. 그것을 잘 아는 어리석고 나약한 인간은 다시 글을 쓴다. 현실의 고통과 그것의 타당성을 찾기 위해. 스스로 정리하기 위해. 결국 글은 아무것도 이뤄 주지도 알려주지도 않았다. 한 줄로 주욱 늘여 쓴 글은 행복이 떠나간 너른 광야를 벗어나려는 어리석은 자의 발자국과 같다. 결국 고통은 현실을 있는 그대로 직시하기 위해 사용되었다. 어렸을 적 느끼지 못했던 실존의 고민은 그녀가 떠나간 자리를 실마리 삼아 모락모락 피어 올랐다. 깊어지는 내면에는 썩은 물이 고이기 시작했다. 한동안 그 냄새가 역겨웠지만 조금씩 익숙해져 갔다.