@z.e.r.o.s.u.g.a.r 순화어, 다듬은 말은 "누구나 이해하기 쉬운 말"을 목적으로 한다. 전쟁용어를 청산하기 위함도, 민족성을 철저히 지키기 위해서도, 사회 정의와 기타 사회상규를 지키기 위함이 아니다.
"오마카세"라는 표현을 80대 할머니는 잘 이해하지 못할 것이다. 그에 비애 "맡김차림", "주방특선"과 같은 표현은 바로 이해할 수 있을 것이다.
다듬은 말은 더 이상 강제성을 띄지 않는 권고안에 불과하다. 일상 생활에 다듬은 말을 쓰지 않으면 반민족 분탕으로 낙인찍는 존재가 아니라, "다수의 불특정 청자가 기대되는 상황에서 조금 더 많은 청자가 쉽게 알아들을 수 있는 표현"을 알려주는 일종의 가이드라인이다.
node:fs의 readdir은 왜 readDir이 아닌걸까? readFile은 readFile이면서 readdir은 readDir이 아니다. readdir이라는 UNIX 함수명을 따왔다는게 정설이고, nodejs 팀에서도 fs 함수 명명법을 `fs.<unix function name><other stuff>`으로 설명하고 있다.
그런데 정작 fs.readdir은 readdir이 아닌 scandir을 사용한다. UNIX 함수 중 readdir이라는 이름이 있다는 이유로, 심지어 정작 readdir이 아닌 다른 UNIX 함수를 사용하고 있으면서, 다른 대부분의 함수 명명법이었던 카멜케이스를 깨트린 상황인거다.
여러모로 nodejs 팀 내에서 어떠한 논의 끝에 이러한 결정을 하게 된 것인지 궁금하게 만드는 이름이다. 고심해서 결정한 것으로 보이는 흔적이 여기저기 남겨져 있지만, 명확한 이유를 언급한 글을 찾지는 못했다. 언젠가 해당 네이밍에 관여한 사람을 만나면 꼭 물어보고 싶다.
많은 사람들이 온라인 상 본인인증 절차, 공인인증서 인증 절차에 대해 불평을 하면서도, 정작 이러한 절차가 "왜 생겨났느냐"에 대해서는 깊이 생각하지 않는다. "그냥 빼버리면 되는거 아니냐" 같은 생각을 가진 사람들이 생각보다 꽤 많다.
온라인에서의 본인인증, 공동인증서는 "보안"의 목적으로 시행되는 것이 아니다. 각자 "증빙"과 "서명"에 가까운 목적을 가진다.
법적으로 만 14세 미만 미성년자의 개인정보를 수집하기 위해서는 법정대리인의 동의가 필요하다. 그렇다면 당신의 서비스를 이용하는 고객이 만 14세 미만인지 확인할 필요가 있다. 그걸 제일 잘 해낼 수 있는 방법이 무엇일까? 휴대폰 본인인증이다.
법적으로 인감 및 그 증명이 필요한 사무가 있다. 금융, 행정, 법률 관련 업무가 대표적이다. 그러한 사무가 예상되는 곳에서 공인인증서를 요구한다. 공인인증서는 일종의 "전자적으로 구현된 인감"에 가깝다.
온라인 본인인증과 공동인증서를 없애는 일은 정말 쉽지 않다. 온라인 본인인증을 없애려면 법이 "만 14세 미만의 미성년자도 법정대리인 동의 없이 개인정보를 펑펑 쏴대도 괜찮다"고 바뀌어야 하며, 공인인증서를 없애려면 법이 "은행에서 도장 없이 통장과 비밀번호만으로 펑펑 출금할 수 있어야 한다"고 바뀌어야 한다.
물론 과장된 표현임은 안다. 또, 오프라인 행정 사무가 간소화 되어야 한다고도 생각한다. 국제적인 정서에 맞지 않기도 하고. (서양권 한정이다. 동양권은 생각보다 유사한 정책들이 꽤 있다.) 그럼에도 이러한(방향의) 법률 개정이 쉽지 않은 일이고, 1-2년만에 해결될 수 있는 일이 아니라는 것은 명백한 사실이다. 관련되어 엮인 법률들과 인프라가 상당히 많기 때문에... 십수년 사이즈로 길게 봐야한다.
"그냥 빼버리면 되는거 아니냐" 같은 소리를 할 수 있을 정도로 작은 스케일의 일이 아니라는 것을 이야기하고 싶었다.
본인인증을 해야만 가입할 수 있는 앱을 하나 관리하고 있는데, 극초창기에 정말 놀라운(?) 이슈를 겪었다.
인증 문자를 수신받지 못했다는 문의가 자주 들어오더라. 본인인증 특성상 메시지 발송을 내 서버에서 처리하는 것도 아니고, 코드를 아무리 뒤져봐도 문제될 점을 찾지 못해 애를 썩였다. 결국 "정확한 정보를 입력하여 다시 시도해 달라"는 늬앙스의 답변을 할 수 밖에 없었고, 슬프게도 한번 가입에 실패한 그들은 다시 돌아오지 않았다.
그러다 우연히 지인이 가입하는 모습을 보며 그제서야 깨달았다. 이름을 입력하는 란에 본인의 실명이 아니라, 자신이 사용하고자 하는 닉네임을 입력하고 있던 것이다. 이름/생년월일/성별/전화번호/통신사 를 입력하고 선택하는 UI 구성이라면 당연히 본명을 입력할거라 기대했는데, 전혀 그렇지 않았던거다.
"이름" 대신 "이름(실명)" 으로 라벨을 변경하니 관련 문의가 급감했다. 내게 당연한 것이 그들에겐 그렇지 않을 수 있다는걸 다시 한번 깨달았다.
최근 10년간 PHP 기피현상을 만든 주범은 국내에선 그누보드, 해외에선 워드프레스라고 생각한다. 그들이 죽지 않는 한 PHP가 다시 부상할 가능성은 0%다. (물론 그들이 죽어도 1% 이상 오르지는 않겠지만;)
난 PHP를 꽤 좋아하는 편인데, 그누보드 코드, 워드프레스 코드 한번 손대고 나면 한동안 PHP의 애정이 팍 식는다... 조금 더 진심을 담아보자면, 그들이 사용된 코드를 눈에만 담아도 개빡친다. 코드에 불을 붙일 수만 있다면 당장 불질러 버리고 싶을 만큼.
워드프레스 그 자체에 대해서는 큰 반감이 없다. 모던하지 않은 코드에 아니꼬움을 느끼지도 않는다. 오히려 PHP4 시절 C 익스텐션 만들어 운용하던걸 아직까지 유지보수하고 있는 만큼... 사실 닌 모던하지 않은 코드가 더 익숙하다. 그럼에도 워드프레스와 그누보드가 문제라고 생각하는 것은, 그것을 사용하는 개발자들 대다수가 강하게 표현해 "제정신이 아닌 코드"를 작성하는데에 거리낌이 없기 때문이다. 워드프레스, 그누보드 관련 유지보수 의뢰를 지금도 종종 받는다. 이전 개발자들이 작성해 둔 코드를 보면 항상 놀란다. SQL 인젝션, XSS 등에 아주 취약한 코드들 뿐이다. 워드프레스, 그누보드 유지보수 작업 수백건 중 적절한 필터링을 거치는 제품은 손에 꼽을 정도로 적다.
escape 없이(또는 빈약하게) raw 쿼리를 실행하는 제품들이 아직까지도 공공연하게 판매되고 있는 시장은 명백하게 잘못된 시장이다. 물론 다른 언어들, 다른 솔루션에서도 충분히 이러한 문제점을 가질 수 있겠지만, 워드프레스, 그누보드 시장은 심각하다. 아무런 자정작용 없이 취약점 투성이의 제품을 팔아치우고, 대부분의 에이전시들은 문제의식조차 가지지 못한다.
요새 애플 앱스토어 심사가 매우 너그러워진 것 같다. 좀 더 정확하게는 앱 심사 담당자들이 일을 대충하는 것 같다.
특정 일자 이전에 생성된 계정으로는 로그인이 불가능한 버그가 존재하는 업데이트를 심사 넣었는데, 심사 통과했다. 플레이스토어에서 거절당하지 않았으면 버그를 눈치채지 못하고 배포할 뻔 했다.
간단한 앱들은 앱스토어 심사 절차를 일종의 QA 단계로 생각하고 배포하기도 했었는데(ㅎㅎㅎㅎ;;;) 이젠 그러면 안될 것 같다...
한글 파일명은 지양하자.
한국 지명에 대응하는 이미지를 출력해야 하는 상황이 있었다. iOS와 안드로이드 개발환경에서 정상적으로 출력되는 것을 보고 스테이징 배포를 했는데, 이상하게 안드로이드 릴리즈 환경(apk)에서만 이미지가 잘못 출력되는 문제가 발생했다. expo-image에 유사한 이름의 이미지가 잘못 캐싱되어 잘못된 이미지가 출력되는 버그가 있었다보니, 그쪽에 포커스를 두고 몇시간동안 코드를 뒤적이고 있었다.
하... 결론은 허무했다. 한국 지명에 대응되는 이미지 에셋을 별 생각 없이 디자이너에게 받은대로 한글 파일명으로 저장해 사용하고 있었는데, 한글 파일명의 에셋을 제대로 번들링하지 못해 마지막 이미지 하나만 번들링 되고 있더라.
proguard 껐다 켰다 해보다 apk 패키지 용량이 예상보다 작게 나와 패키지를 뜯어보고 나서야 깨달았다... 한글 파일명은 지양하자.
#1에서 언급했던 소스코드 유실은 결국 별 의미 없는 이야기가 됐다.
기 계약된 유지보수 업체가 뻔히 존재하는데, 윤 정부가 소스코드를 삭제했다는 것도 말이 안되고, 전 정부의 홈페이지를 리뉴얼 했다는건 당연히 소스코드가 살아있다는 이야기기도 하고. 이 정부가 전 정부에게 누명을 씌웠다고 해석하고 싶지는 않다. 뭐 특별히 그런 발언을 하게 만든 이유가 어련히 있었겠지.
다만 성급한 "소스코드 유실" 발언으로,
1. 버전 관리조차 하지 않는 생각없는 한국
2. 백업조차 하지 않는 생각없는 한국
3. 접근권한 통제조차 하지 않는 생각없는 한국
4. 시스템 감사로그 하나 찍지 않는 생각없는 한국
5. 서버 접속 정보를 포스트잇에 써두고 파쇄하는 한국
6. 제대로 찾아보지도 않고 보도자료 뿌리는 한국
중 적어도 하나에 해당한다는걸 온 동네방네 떠들고 다닌게 되었음은 부정할 수 없다...
사이드 프로젝트에서 수파베이스를 걷어냈다.
당시 백엔드 작성이 너무 귀찮았던 나머지 수파베이스를 셀프호스팅하여 사용했는데, 어제 밤 아주 큰 맘 먹고 2-3년만에 수파베이스를 걷어냈다. 근데 걷어내고 보니 백엔드 코드 150줄, 마이그레이션 코드 50줄짜리 작업이더라ㅋㅋ;
귀찮다고 아무 생각 없이 SaaS 업어오지 말고, 각 잘 재보고 결정하자. 언젠간 걷어내야 한다는걸 알면서도, 심지어 그 작업이 크게 어렵지 않을걸 알면서도, 걷어낼 각오를 하기가 쉽지 않다...
@baameu 전문가란 그 분야에서 저지를 수 있는 모든 실수를 해 본 사람이다.
이러한 관점에서 SW엔지니어는 다른 직종에 비해 비교적 "저렴하게" 전문가가 될 수 있는(그 문턱이라도 바라볼 수 있는) 직종이라고 생각한다. 큰 돈 들이지 않고 마음껏 실수해 볼 수 있는 환경을 조성할 수 있게 된 것은 SW엔지니어들에게 정말 큰 축복이다.
실수를 하는 환경이 테스트베드라고 하더라도, 전자쟁이, 기계쟁이들은 실수가 곧 부품값으로 직결되고, 요리쟁이등은 실수가 곧 재료값에 직결된다. 건축쟁이들은 테스트베드를 구축하는 것부터가 아주 큰 비용이 들어가고, 의학, 생물, 화학, 천문학쟁이도 마찬가지다.
그에 비해 코드쟁이들은... 전문가까지의 길이 멀고 험하더라도, 거기까지 도달하기 위한 경비가 타 직종 대비 저렴하다는 점은 부정할 수 없다.
난 내가 코드쟁이라는 점이 즐겁다. 내 마음껏 실수해볼 수 있는 환경을 원하는대로 조성할 수 있는 분야가 어디 흔한가.
청와대 웹사이트의 소스코드가 유실되었다는 이야기가 있는데, 의아한 부분이 있다. 청와대에서 사용하던 웹사이트는, 그것의 소스코드가 유실된 상태에서도 정상 작동할 수 있는 구조가 아니다.
전통적(?)으로 청와대 웹사이트들은 PHP로 개발되어왔다. 2000년대 전후에도 워드프레스 내지는 라라벨을 사용했다는 기록이 남아있고, 박근혜, 문재인, 윤석열 정권의 웹사이트 모두 여러 곳에서 PHP의 흔적을 찾아볼 수 있다.
그래서 정말 의아하다. PHP는 소스코드가 곧 웹사이트가 되는 언어다. PHP 웹사이트에서 소스코드가 유실되었다는 말은, 그냥 웹사이트 자체가 완전히 망가졌다는 이야기가 된다. 그러나 윤석열이 파면당한 당일까지 웹사이트가 멀쩡히 운용되고 있었으며, 그 이후 점검중인 상태로 존재하다 4/28 윤석열의 정보가 빠진 웹사이트가 다시 열렸다. 파면 이후로도 정상적으로 웹사이트가 운용되고 있었는데, 소스 코드가 유실되었다는 이야기는 정말 의아하다.