목록분류 전체보기 (498)
규도자 블로그
개발자들은 코드로 말한다. 라고는 하지만 결국 사람의 최종 아웃풋은 언어라는 도구를 머릿속에서 활용해 추론과 논리 등의 과정을 거쳐 실세계로 나온다. 결국 사람이 생각하는 수단 또한 "언어"이며 코드라는 최종 산출물에는 자연어, 혹은 파편화된 단어나 이미지로 이루어진 고도의 두뇌작용이 수반된다. 유발하라리가 사피엔스에서 인간이 허구를 믿는 능력으로 지구의 지배자가 됐다고 하는데 그것과 궤를 같이 한다고 생각한다. 실세계를 반영한 객체지향 프로그램도 결국에는 반영을 통한 새로운 시스템의 창조이지 복사가 아닌 것 처럼 결국에는 무엇이 대상이 됐든 간에 세상 어떤 것이든 사람의 뇌라는 함수를 통해 최소 한 번은 추상화 과정을 거쳐야만 다른 사람에게 전할 수 있는 수단으로 옮길 수 있다. 심지어 본인이 직접 인..
드래곤북이라고 불리우는 컴파일러 설계에 대한 바이블이 있다. 1986년에 발매된 책으로써 난이도가 괴랄하기로 악명높은 책이기도 하다. 직접 컴파일러를 설계하고 만드는 것에 대한 책인데 20년이 지나서야 개장판이 나왔다. 바로 이 책인데 이 책마저도 중고나 새 책 모두 구하기가 어렵다. 근데 종로 알라딘 중고서점에서 1판의 번역판을 구했다. 이학성이라는 분에게 감사하다. 물론 내용은 2판이 더 풍부하다. 그냥 나는 한 명의 프로그래머로써 절판된 좋은 책을 구했다는 것 자체만으로도 너무 기쁨을 감출 수가 없다. 한국어판 드래곤북은 구글에서 이미지조차 찾기가 힘들더라. 약속 때문에 종로에 가게 된 김에 들려서 이것저것 보다가 우연히 눈에 띄게 돼서 샀는데 너무 신기했다. 컴파일러 제작 및 설계에 대한 부분들은..
http://erdcloud.com 바로 이곳이다. 제목에 써있는 그대로이다. 무료이면서 정말 간편하고 클라우드 기능에 협업까지 가능한 ERD 툴이다. 물론 네이티브 앱만큼 자연스럽진 않지만 간편하게 사용하기에 그만이다. 무엇보다 작성 중인 ERD를 어디에서든 다시 볼 수 있을 뿐더러 계속 작업을 이어나갈 수 있다. 물론 완성된 ERD를 query로 빼는 작업까지 가능하다. 실행화면 하단의 Export버튼을 누르면 원하는 DB의 TABLE 생성 명령어를 조회할 수 있다. 그리고 무엇보다 재미있는 점은다른 프로젝트에서 이용한 ERD를 조회할 수 있다는 점이다. 그누보드나 워드프레스 같은 오픈소스 프로젝트들의 ERD는 그렇다 쳐도 국내 개발자 커뮤니티인 OKKY의 ERD가 있었던 건 좀 의외였다. OKKY를..
PHP는 변수의 선언 여부를 체크하는 방법이 아주 많다. 내장 함수도 많을 뿐더러 ==나 ===까지. PHP가 코드뭉텅이라는 오명을 갖는 이유 중 하나이기도 한데 그만큼 true false를 검사하는 조건문을 뭘 써야할지 고민이 될 때가 있다. 그럴 때 참고하면 좋은 테이블이다. None은 변수가 선언되지 않은 상태이다. 위는 그림파일이고 $var = None Array() Null '' false 0 '0' ' ' 'text' true 1 '1' empty($var) O O O O O O O X X X X X is_null($var) O X O X X X X X X X X X isset($var) X O X O O O O O O O O O $var X X X X X X X O O O O O $var =..
예전에 재미있게 읽었는데 요즘에 초예측, 사피엔스, 호모데우스 등등을 읽으면서 뭔가 다시끔 읽어보고픈 생각이 들어 다시 읽게 됐다. 처음 제목을 접했을 땐 그냥 이기적으로 살라는 식의 자기계발서적인 줄로만 알았는데 아니어서 놀랐던 기억이 있다. 물론 그런 책이 아니어서 더 좋았다. 사피엔스에서 유발 하라리가 얘기했던, "호모 사피엔스가 지구를 지배하게 된 힘"은 어디에서 오는가에 대한 대답을 유발 하라리는 허구를 공유하여 결속할 수 있는 인간 특유의 특징을 지목했다. 예를 들어 은행은 돈을 빌려준 사람이 갚을 것이라는 "믿음이라는 허구"를 이용하여 가치를 생산하고 그 가치를 또 다른 사람에게 빌려줌으로써 현재 갖고 있는 재화의 가치보다 미래의 가치를 빌려와서 이용할 수 있게 됐다. 종교도, 정치도 마찬가..
[백준/1978/파이썬(python3)] 소수 찾기 문제 주어진 수 N개 중에서 소수가 몇 개인지 찾아서 출력하는 프로그램을 작성하시오. 입력 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. 출력 주어진 수들 중 소수의 개수를 출력한다. 입출력 예 입력출력 4 1 3 5 73 풀이 def prime_list(n): n = n + 1 #추가된 부분 sieve = [True] * n m = int(n ** 0.5) for i in range(2, m + 1): if sieve[i]: for j in range(i+i, n, i): sieve[j] = False return [i for i in range(2, n) if sieve[..
https://chrome.google.com/webstore/detail/wappalyzer/gppongmhjkpfnbhagpmjfkannfbllamg?utm_source=chrome-ntp-icon 여기에서 설치할 수 있다. 그냥 말 그대로 현재 접속해있는 사이트가 어떤 framework나 언어 등을 통해 만들어졌는지 알 수 있는 사이트이다. 한 예로 티스토리 블로그에 접속해있는 지금 상태값을 보자면 위와 같은 모습을 확인할 수 있다. 이로써 티스토리는 php로 만들었고 웹서버로는 apache를 사용하고 있다는 걸 알 수 있다. 현재 개인 프로젝트로 진행중인 사이트의 모습이다. local에서 Next.js의 개발용 웹서버로 돌린지라 Web Server또한 Next.js로 출력되는 것 같다. 물론 이 ..
파이썬(Python) 내장함수의 시간복잡도 나는 내장함수는 뭔가 당연히 최적화돼있겠거니 하고 생각없이 쓰곤 한다. 하지만 그런 자세가 프로그램의 효율에 커다란 영향을 끼치지 않나 싶다. 특히 이번에 에라토스테네스의 체를 응용한 문제를 풀고 있는데 정확한 개념을 알기 위해 위키에 쳐보니 다음과 같은 함수가 나왔다. def prime_list(n): # 에라토스테네스의 체 초기화: n개 요소에 True 설정(소수로 간주) sieve = [True] * n # n의 최대 약수가 sqrt(n) 이하이므로 i=sqrt(n)까지 검사 m = int(n ** 0.5) for i in range(2, m + 1): if sieve[i] == True: # i가 소수인 경우 for j in range(i+i, n, i)..
정책은 코드에 종속되어선 안 된다. (Policies should not be subordinate to the code.) 예전에 실용주의 프로그래머의 서평을 쓴 적이 있다. 거기에서 가장 깊게 와닿았던 부분이 정책과 코드에 대한 부분이었는데 사실 서평에도 써있다시피 실제 책에 나온 표현은 그냥 정책은 수시로 바뀐다 가 전부였다. 하지만 너무 포괄적인 문장이지 않은가. 해서 정책은 코드에 종속되어선 안 된다라는 의미로 혼자 받아들였고 또 실제 구현에 있어서도 굉장히 도움이 되는 말인지라 스스로에게 상기시키기 위해 포스트잇에 써서 모니터에 붙여놨는데 동료분도 굉장히 좋은 말인 것 같다고 말씀해주셨다. 그래서 많은 사람들이 보면 좋을 것 같아 조금 더 공개된 장소에 적어두는 것이다. 실용주의 프로그래머에 ..
https://gitstar-ranking.com 바로 이곳이다. 들어가보면 알겠지만 사용자, 기관, 저장소별로 구분돼있다. 얼마 전에 직장동료에게 vue.js가 react의 별 갯수를 이겼다고 들어가지고 깃허브에서 직접 찾아봤는데 vue가 react보다 두계단 위에 있었다. 찾아본 김에 아 이런게 정리된 사이트가 있었으면 좋겠다 싶어서 찾아봤더니 금방 나오더라. 조금 아쉬웠다. 없었으면 내가 만들려고 했는데... 근데 이것도 절대적이지 않은 게 시간의 흐름에 따른 변화 요소가 반영돼있지 않아 트렌드에 민감한 정도를 제대로 파악할 수는 없다. 예를 들어 현재 별 갯수 약 30만 개로 압도적 1위를 달리고 있는 freeCodeCamp저장소의 최초 이슈는 2014년에 등록된 것에 비해 별 13만개로 3위를 ..