전체 글 15

Clean Code 3장. 함수

프로그래밍을 배우기 시작하고 첫 번째... 는 아니고 많았던 의구심 중 하나입니다. 왜 우리는 함수를 사용하는가 main 함수에 10000줄에 다르는 모든 로직을 넣고 실행해도 코드는 돌아가지만 한 달 뒤에 몇 줄의 코드를 수정하려고 할 때 어디에 어떤 코드가 있는지 찾는 건 끔찍합니다... 함수는 여기서 등장합니다. 함수는 기능을 구분합니다. 정말 쉽게 생각해서 100줄의 코드당 하나의 함수로 치환한다고 생각합시다. 그럼 우리가 봐야할 코드는 100개의 함수 이름과 그 안의 로직 100줄로 줄어듭니다.  그렇다고 무턱대고 100줄씩 잡을 수는 없고 어떻게 함수를 나눌 수 있을까요? 기능 별로 나누면 됩니다. 최대한 작게. 그리고 알아보기 쉽게 이름을 붙입니다. Account getAccount(int ..

개발 2024.06.11

Clean Code 2장. 의미 있는 이름

본격적으로 어떻게 하면 좋은 코드를 작성할 수 있을지 고민해 봅시다.이번 장의 주제는 적절한 이름을 짓는 것 입니다. 의미있는 단어를 사용합시다.int r, d; 이런 코드는 주로 알고리즘을 풀이에서 볼 수 있습니다. 남에게 보여줄 필요가 없고 시험을 위해 짧은 시간안에 풀이해야 하기 때문입니다. 물론 과거에는 용량을 신경쓰느라 적은 코드를 쓰는 것이 좋은 코드로 인정받기도 했습니다.  하지만 코드는 남 뿐만 아니라 30분 후의 자신도 보게 됩니다. 가독성이 떨어지는 코드를 디버깅하는 것만큼 끔찍한 일은 없습니다. 좀더 확실한 이름을 지어서 의미를 분명히 해주세요int radius, distance;   착각할 만한 이름을 사용하지 맙시다.int list;int linux;int photoInTheBox..

개발 2024.06.11

Clean Code 1장. 깨끗한 코드

코드가 사라질 날이 올까요? 미래는 어떻게 될지 모르지만, 지금까지는 꼼꼼히 요구사항을 작성해서 Ai에게 주면 Ai가 열심히 코딩을 하고, 우리가 그 코드를 돌리고 외칩니다. WTF! 다음에는 꼭 한번에 돌아가는 요구사항을 Ai에게 전달하리라.. 여기서 요구사항이란 추상화된 코드와 같습니다. "이런 로직을 짤건데, 조건은 이렇고, 이런 상황에서 이렇게 동작해야해" main... if... while... 표현하는 방식이 다를 뿐이죠 그럼 어떻게 요구사항을, 코드를 잘 전달할 수 있을까요? 모릅니다. 다만 이렇게 하면 안된다더라를 모아서 나쁜 코드라고 부를 수는 있겠죠 시간이 없어서 급하게 코드를 짜면서 나중에 리펙토링하자고 생각하지만 제가 제 코드를 다시 볼 때는 코드가 안돌아가서 밖에 없더군요. 그때 ..

개발 2024.06.10

Clean Code

본 글은 로버트 C.마틴의 Clean Code 를 읽고 느낀점을 적는 학습 용도의 글입니다. 저는 지금 framwork 개발자로 일을 하고 있지만 전에는 벡엔드 개발자로 준비하고 있었습니다. 나중에는 어떤 개발을 할지 또 모르죠 개발자가 그렇죠 뭐.. 안주하지 말고 계속 새로운 지식을 배우고 나아가야 합니다. 하지만 개발에 몸 담고 있다면 어디서든 필요한 지식이 몇가지 있습니다. 그 중 하나가 코드를 통해 소통하는 방법입니다. 그 대상은 남이 될 수도, 과거의 자신이 될 수도, 또 미래의 제가 될 수도 있습니다. 이 책을 읽고 조금이라도 말이 통하는 사람이 되었으면 좋겠습니다. 다만 책을 한권만 읽은 사람이 무섭다고들 하잖아요? 글의 학습에 앞서 아무리 훌륭한 방법이라도 시간의 흐름이나 관점에 따라 더 ..

개발 2024.06.10

노트북 윈도우 10 - 노트북 닫을 시 화면 멈춤현상

데스크톱에 비해 노트북은 이동성이 좋습니다. 또 사용하지 않을 때는 닫아 놓아, 노트북 디스플레이나 키보드에 먼지가 쌓이는 것을 방지 할 수 있습니다. 저도 노트북을 이용 중입니다. 다만 노트북이용중 드물게 특정상황에서 노트북을 닫았다가 열면 화면이 멈추는 경우가 생깁니다. 제 경우, 노트북을 절전으로 바꾼 후, 즉시 노트북 화면을 닫고 일정시간이 지나면 검은화면으로 정지하는 현상이 발생합니다. 이 현상을 해결하고자 인터넷 검색을 해봤지만, 일반적 해결방법으로는, 전원 및 절전 설정에서 노트북 닫음 옵션이 있었지만 저는 해당되지 않았습니다. 다만 임시적인 해결방법으로, 노트북 절전모드가 완벽하게 변환된 후 노트북을 닫을 시 이런 현상이 발생하지 않았습니다. 사소하지만 다시 생각해보면 절전으로 바꾼 후 바..

윈도우 2021.11.19

앱 개발 - 앱 인벤터

앱 개발을 배우고 싶은데 진입장벽을 느끼시나요? 뭔지 모를 언어를 처음부터 배워야 한다는 생각에 막막하시다면 블록 코딩으로 앱을 만들 수 있는 앱 인벤터를 이용해 보세요! appinventor.mit.edu/ MIT App Inventor | Explore MIT App Inventor MIT App Inventor for iOS on the App Store It is with great pleasure that the App Inventor team announces that the MIT App Inventor companion app for iOS is now generally available on the Apple App Store for iPhone, iPad, iPod Touch, and ..

앱 개발 2021.03.09

군대에서 코딩하기 - 강원열린군대(2군단)

강원열린군대에 지원하라! 군대는 공부하기에 열악한 환경입니다. 수업을 듣는다는 의무감을 느끼기 힘들고, 누군가 지도해주지도, 과제를 내주지도 않습니다. 또 군대에 있으면 2년간을 의무로서 지내고 있다는 생각에 추가로 뭔가를 하지 않아도 된다는 안도감에 빠지기 쉽죠. 학창시절 학원에 다니면 공부를 하고있다는 생각이 드는것 처럼요. 하지만 군복무를 하면서도 열심히 공부하려는 의지가 있다면, 강원열린군대에 지원해 보세요. 19년도에 처음 시행된 교육과정이며, 2군단내 부대마다 지원자를 받아 한곳에 모여, 여러기술에 대해 교육받는 과정입니다. 교육받는 기술의 종류에는 드론, 3D프린터, APP개발, AR-VR-CG, 빅데이터, AI, 블록체인이 있습니다. 저는 20년도 과정에 참여했었고 APP개발 분과 였습니다..

군대 코딩 2021.03.04

html, javascript 키보드 이벤트

javascript로 키보드 이벤트를 제어할 수 있습니다. 우선 이벤트를 추가합니다. 1 2 document.addEventListener("keydown",keyPush); document.addEventListener("keyup",keyPull); cs 여기서 addEventListener의 첫번째 매개변수는 자신이 추가하고자하는 이벤트를 입력합니다. 키보드 이벤트에는 keydown, keyup 등이 있습니다. keydown의 경우 누르는 순간의 이벤트이고, keyup의 경우 눌렀다 놓는 순간의 이벤트입니다. 두번째 매개변수는 이벤트가 발생할때 실행되는 함수입니다. 이를 이용하여 키보드버튼의 움직임을 구현할 수 있습니다. 우선 4가지 방향을 설정하고 해당하는 keyCode가 눌렸을때 해당하는 연산을..

2021.02.27

크롬에서 코딩하기

웹 브라우저 크롬에도 소스코드를 편집할 수 있는 에디터기능이 내장되어있습니다. 우선 크롬을 키고 개발자도구(F12)를 엽니다. 상단바에서 source메뉴로 이동합니다. 좌측 (+)버튼을 누르거나 자신의 폴더를 드래그-드랍하면 폴더를 생성할 수 있습니다. 상단에 액세스를 요청하면 허용해주면 됩니다. 직접 폴더를 통해 파일을 만들어도 되고 크롬에서 파일을 만들 수도 있습니다. 파일에 html, css, js등 확장자명을 붙여주면 소스코드에 그에 맞는 색을 입혀줍니다. 파일을 오른쪽 클릭하면 웹 브라우저에 바로 결과를 볼 수 있습니다. 하단 console에서도 간단한 연산을 하거나 값을 도출 해볼 수 있어서 편합니다. 완벽한 개발환경을 갖추기 힘든 상황이거나 소스코드를 조금 수정해서 결과를 확인하고자 한다면 ..

2021.02.26

html 스크롤 멈추기 - css : overflow 속성

웹 문서가 길어지면 스크롤 바가 생기고 여러 가지 방법으로 스크롤을 할 수 있습니다. 마우스 휠, 스크롤바 드래그, 터치 패드, 키보드 방향키 등이 있습니다. 특정 상황에 스크롤이 움직이는 것을 막고 싶을 때 이를 제어할 수 있는 방법에 대해 알아봤습니다. css - overflow 속성을 활용하여 이를 제어할 수 있습니다. 스크롤에도 X축과 Y축이 있는데, 각각 overflow-x, overflow-Y에 해당합니다. overflow: visible; 스크롤 없이 모든 내용을 보여줍니다. The Web Real-Time Communications Working Group has published WebRTC 1.0: Real-Time Communication Between Browsers as a W3C..

2021.02.22