코딩과 디버깅에 관하여

오늘은 코딩과 디버깅에 관하여 읽었다. 내 경험상 코딩과 디버깅을 하는 것은 그리 중요하지 않았었다. 왜냐하면 코딩을 하려면 문제를 어떻게 풀지 이해하고 계획이 세워져 있었어야 하기 때문이다. 그래서 코딩은 대충 생각하는 경향이 있었는데.. 이 챕터를 읽으면서 코딩을 하면서 간과하지 말아야 할 것들, 문제를 풀면서 가져야 할 습관들을 알아보았다. 글을 쓰면서 오늘 읽었던 내용을 정리하고, 다시한번 복습해보는 시간을 가지려고 한다. ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ 먼저 코딩을 하는데 있어서 중요한 것들을 보면, 간결한 코드를 작성하는것 적극적으로 코드를 재사용하는것 표준 라이브러리를 공부하는 것 항상 같은 형태로 프로그램을 작성하는 것 일관적이고 명료한 명명법 사용하는 것 모든 자료를 정규화해서 저장하는 것 코드와 데이터를 분리하는 것 들이 있다. 음.. 많다. 하지만 다 알아둬야 할 것들이니, 빼먹지 말고 지키려고 노력하고 실천해보자. 간결한 코드를 작성하는 것 코드를 길게 작성할수록 그 코드는 읽기 어려워지고, 단순한 버그들을 찾기 어렵고 오타나 디버깅이 어렵다. 코드는 간결하게 작성할수록 좋은 것이라고 할 수 있다. 물론 간결하게 작성한 만큼 소스 고치기가 어려워질수도 있지만, 그런 경우에는 모듈화를 잘 시켜놓거나 해야할 것이다.. 말이 쉽지만 몇번 소스를 갈아엎으면서 경험해봤던 적이 있어 이 부분은 좀 더 이해할 수가 있었다. 그리고 간결한 코드를 작성하는것은 단순히 코드를 짧게 쓰는 것이 아니라, 명확한 들여쓰기와 읽기 쉬운 함수,변수의 네이밍, 설명이 잘 되어있는 주석 등도 포함이 될 것이다. 적극적으로 코드를 재사용하는 것 같은 소스가 중복되는 상황이 발생한다면 어떻게 해야할까. 자바를 배우면서 메서드를 만들고 클래스를 만들었던 기억이 난다. 상속이란 개념을 이용해서 클래스를 사용했던 경험이 있는데, 이와 같다. 코드를 재사용하는 것은 코딩...

문제 해결 개관

이 포스팅은 '프로그래밍 대회에서 배우는 알고리즘 문제해결전략(인사이트, 구종만 지음)'책을 읽고 쓴 것임을 밝힙니다. 문제를 해결하는 방법을 익히기 위해서는, 문제를 푸는것에 그치는 것이 아닌, 좀 더 깊은.. 문제 속을 들여다봐야 할 수 있어야 하는것 같다. 한가지 문제를 풀었다고 해서 다른 문제를 항상 풀 수 있는 것이 아니기 때문에.. '문제를 푸는 것'이 아니라 '문제를 푸는 기술'을 연마해야 한다. 우리의 선조들 뿐만 아니라 역사적으로 인간은 문제를 해결하면서 살아왔기 때문에, 문제를 해결했던 예전의 일들을 보면서 문제를 해결하는 방법(==기술)을 배우면 더 도움이 될 것 같다. 그래서 책에서는 '파인만 알고리즘'을 처음 보여준다. 이 알고리즘은 3단계로 되어 있다. 파인만이 누구인지는 검색 해보도록 하자 칠판에 문제를 적는다. 골똘히 생각한다. 칠판에 답안을 적는다. 좀 감이 오는가? 여기서 느껴야 하는 것은 문제를 보기만 하지 않는다는 것. 문제를 적음과 동시에 어떻게 문제를 풀어야하는지 생각한다는 것이다. 이를 지나 좀 더 문제를 해결하기 위한 구체적인 방법을 제시한 ' 어떻게 문제를 풀 것인가 (How to solve it)'에서는 다음과 같은 문제 해결방법을 제시했다. 문제를 이해한다. 어떻게 풀지 계획을 세운다. 계획을 수행해서 문제를 해결한다. 어떻게 풀었는지 돌아보고, 개선할 방법이 있는지 찾아본다. 좀 더 구체적으로 문제를 해결하는 방법이 된것을 볼 수 있다. 이를 토대로 우리도 문제를 해결해보자. 문제를 이해하는 것이다. 문제를 이해하기 위해서는 문제를 정확하게 읽고 이해해야 한다. 이를 제대로 못하면 시간만 낭비하는 꼴이 될 것이다. 문제를 정확하게 읽고 조건들을 모두 잘 체크하고, 이를 토대로 다음 단계로 넘어가야 한다. 어떻게 풀지 계획을 세운다. 문제를 이해함으로써 문...

자신있게 하자

자신감 - 문제를 어떻게 풀어야 하나요? 매일 매일 나는 문제를 마주치면서 살고 있는데, 가장 큰 문제는.. 어떻게 해야 이 문제들을 해결할 것인지 해결책을 찾지 못한다는 것이다. 지금 내가 가지고 있는 큰 문제는 몇가지가 있는데, 아래와 같다. 꾸준히 하는 것이 없다. 스마트폰을 너무 많이 사용한다. 유튜브 가끔 아프리카 뉴스 자꾸 미루는 습관 이 문제들을 해결하기 위해 많은 생각을 해보았다. 그러나 그것도 큰 문제가 있었다. 바로 생각만 하고 만다는 것이다.. 내 유전자에는 이 생각만 주구장창하고 '행동'으로 이어지지가 않았다. 그래서 강한 마음을 먹고 이 문제를 풀어보려고 한다. 해야 할 것들은 너무 많으면 안되니까 딱 두가지를 7월달 동안 해보려고 한다. 프로그래밍 대회에서 배우는 알고리즘 문제해결전략 책 읽기 하루 최소 10페이지 사이드 프로젝트 진행 기간 : 2019.07.08 월요일 ~ 2019.07.31 토요일 매일 포스팅 올리기 못한 날은 못한 이유에 대한 포스팅 올리기 일요일은 자유롭게 하도록 한다. 행동도 하는 사람이 되자

homebrew를 사용하여 다른버전의 노드를 사용할 경우 나타난 문제

homebrew를 사용하면서 어려웠던 점은, node를 설치할 때였다. brew node 를 하여 노드를 설치할 경우, 12버전이 설치가 되는 것.. 나는 LTS버전인 10버전을 설치하고 싶은데 왜 자꾸 12가 설치돼 ㅡㅡ.. 하여 찾아보니, 10버전을 설치하려면 node@10 이런식으로 설치를 해야했다. 다만 문제는, 저렇게 설치하니까 환경변수세팅이 되지 않는다는 것이다.. 아마 폴더 이름이 node@10으로 되어있어서 자동으로 세팅이 되지 않는것 같다. 하여 직접 .bash_profile에서 환경변수 설정을 직접해줬다. 이에 대한 내용을 정리해봤다..( 링크 ) 이 일로 인해 다행스럽게도 맥 환경변수 설정에 대한 내용을 이해했다 하핳

mac 환경변수 설정에 대한 정보

이미지
환경변수 설정을 아무리 해도 안되는 이 시간.. 너무 궁금했다. 하라는대로 했더니 안됨 -> ㅡ.ㅡ -> 왜 그런지 이유를 알아야겠다. 그래서 찾아본 맥 환경변수를 설정하는법. 우선 윈도우는 환경변수 설정이 비교적 직관적으로 할 수 있게 되어있다. (내컴퓨터에 들어가서 path에 경로 추가를 하면 됨) 그러나 맥을 처음 사용하는 사람들은(특히 터미널 초심자) 환경변수를 어디서 설정해야되는지부터 막히는 경우가 많을 것이다.(필자의 생각인데 필자만 그럴수도 .. 하하) 그래서 우선 내가 검색해서 알게 된 것을 정리해봤다. 우선 먼저 알아야될 것을 보면.. 1. 맥은 설정에서 환경변수를 세팅하지 않는다. 2. .bash_profile이란 파일을 가지고 환경변수를 설정한다. ---------------------------------------------------------------------------------------- 참고!!! shell의 종류는 여러가지가 존재한다. bash, zsh 등등.. 각 shell 종류에 맞춰서 profile을 지정해줘야하므로, 꼭 본인의 mac에서 현재 사용중인 shell의 profile을 수정 및 적용해야된다. zsh을 사용할 경우에 대한 자세한 설명은 이 블로그 에 너무 잘 설명되어 있으므로 참고하시길 바람! ---------------------------------------------------------------------------------------- 이상 이후 설명 우선 맥은 텍스트파일로 환경변수를 관리하는데, 그 파일은 .bash_profile 이라는 이름을 가지고 있다. 그리고 이 파일은 기본적으로 생성이 되어 있지 않다. (왤까?) 그래서 이 파일을 만들어주고, 빈 파일에다가 설정(설정할 파일의 경로)을 해주면 된다. 근데 어디에다 만드느냐가 중요한데, 기본적으로 본인 컴퓨터의 홈 폴더이다. -> 맥에서 따로 수정을 하지 ...

RNCWKWebview 에러 발생

이미지
React-Native(이하 RN)으로 어플리케이션을 개발중인데, 갈수록 두서가 없어지고 에러의 늪으로 빠져가는것만 같다. 목표에서 벗어나지 않게 잘 잡아야겠다. 이 에러 처리하느라고 쓴 시간이 꽤 길다보니 정신사나워서 아주 힘들었다.. --- 본론으로 들어가서, 설명조로 얘기합니다. 환경은 다음과 같습니다. - react : 16.8.3 - react-native : 0.59.5 - react-native-webview : 3.9.1 - expo : 사용 안함 에러이미지는 다음과 같습니다. RNCWKWebView를 UIManager에서 찾을수가 없다는 메세지. 이 메세지가 뜬 이유는 제가 RN에서 웹뷰를 띄우려고 하니까 나타났습니다. 당최 이게 뭐냐.. 나는 당연히 링크누르면 웹뷰 나올줄알았지.. 다른 어플에서처럼 ( ㅡ.ㅡ.. ) 그치만 아니었고.. 위와 같은 에러가 떠서 잽싸게 구글링을 했습니다. 그렇지만 제가 찾은 것은 수많은 영어문서들..이었습니다. 하지만 링크를 눌렀을 때 웹이 나타나야 하기 때문에, 웹뷰를 꼭 띄워야 하는 상황이었고, 이 에러를 해결할수밖에 없었습니다. 이제 본론으로 들어가서, 이 에러가 발생한 이유는, RN에서 WebView 컴포넌트가 분리되었기 때문입니다. RN 홈페이지( 링크 )에서 보면, WebView는 React Native Core에서 제거될 것이다 라고 되어있고, 분리가 되었습니다. 그래서 react-native 패키지에서 사용하면 저런 에러가 나타납니다. Core에서 제거되었기 때문에, 이 react-native-webview는 외부에서 관리되며 github에 소스가 올라가있습니다. ( github 주소 ) 당연히 npm에도 올라가있고 package.json에 추가하여 패키지를 다운로드 받을 수 있습니다. 하지만 문제가 또 있는데, package.json에 webview를 추가한다 해서 바로 사용할 수 없다는 것입니다. (정확한 이유는 아직 찾지 못했습니다) -...

react-native run-ios can not find any simulator가 나타났을 때

이미지
react-native 개발을 함부로 덤볐다가 발생한 대참사 - native code를 건드려야 되는 상황이 되었을 때다. 필자는 ios, android개발을 해본적이 없는 생 초짜이기때문에, 네이티브 에러가 날 경우 시간소모가 굉장히 심한 편이다. 각오 하고 개발해야할듯 하다.. 이 에러는 해결했지만 정작 풀어야 하는 에러는 해결 못하여 아직 진행중이다.. <환경 체크> react : 16.5.0 react-native : 0.59.5(https://github.com/expo/react-native/archive/sdk-32.0.0.tar.gz) node : 11.12.0 yarn : 1.15.2 여튼, react-native run-ios can not find any simulator 에러가 나타났을 경우에 처리법은 다음과 같습니다. 말 그대로 어떤 simulator을 찾지 못해서 나타난 에러인데, 하단에 에러메세지를 보게되면  /node_modules/react-native/local-cli/runIOS/findMatchingSimulator.js 이 경로를 볼 수 있을 것입니다. 이 경로대로 들어가보면 아래와 같은 내용을 볼 수 있을 것입니다. 저 빨간줄이 문제입니다. if문에서 startWith하는데...  들어오는 device 목록들을 보면 'iOS'가 아닙니다..아니 근데 startWith로 해놓은거 실화냐..? 들어오는거 콘솔로 찍으면 아래처럼 나옵니다.. 전혀 아니죰.. 흠 substring 처리를 하던가 해놨어야되는데 facebook 기술자가 매우 바쁜가 봅니다..(아님 정신차리고 하라고 일부로 해놨을수도 있음) 그래서 우리는 이걸.. 바꾸면 됩니다. 뭘로? includes로. 위 소스 주석에 보면  Making sure the version of the simulator is an iOS or tvOS (Removes App...