본문 바로가기
반응형

IT/Knowledge211

재귀 함수란? (recursive function) 재귀 함수는 말그대로 자기 함수를 호출하는것을 의미한다. 이해하기 쉽도록 코드로 설명을 해보면 function recursive(variable) { ... ... if(조건 충족){ return result; } else{ return recursive(value); } } 이런식으로 while 문처럼 무한 반복이 아닌 종료 조건이 있는 전제 하에 자기 자신을 호출하는 함수이다. 대표적으로 재귀함수로는 하노이 탑이 있다. 하노이 탑은 타워 1에서 타워 3으로 그대로 탑을 옮기면 되는데 단 조건이다. 작은판 위에 큰판을 올릴수가 없는것이고 한번에 하나씩만 옮길수가 있다. 직접적으로 만들어서 해봐도 좋고 머리로 생각을 해봐도 좋은데 결국엔 하는 행동이 반복적이게 된다. 결론은 가장 아래있는 판은 목적지로 .. 2022. 3. 25.
동기 / 비동기 프로그래밍 자바스크립트를 다뤄본 사람은 비동기 프로그래밍이라고 들어본적이 있을것이다. 사전적 의미를 먼저 보자면 동기적(synchronous) 어떤 일이나 행동을 일으키게 하는 계기가 되는. 또는 그런 것. 비동기적(asynchronously) 사전적 의미가 안나오지만 동기적의 반대라면 인과 관계가 없는 . 이라는 뜻이다. 결국 동기적은 a가 일어나고 b가 일어나고 c가 일어나고, 즉 순서가 있으며 비동기적은 순서가 없다. 프로그래밍을 짤때는 await, async 등의 코드를 넣어주면서 비동기식에서 동기식으로 코드를 짜곤한다. 예를들어 웹페이지를 띄우고 첫번째 버튼을 찾아라 라는 코드를 구현하였는데 웹페이지가 띄어지기 전에 첫번째버튼을 찾아라 라는 코드가 실행이 되면 not found/ nosearch에러 등이 .. 2022. 3. 24.
Cookie ? Session? Cache? 쿠키와 세션 그리고 캐시에 대해서 알아보도록 할것이다. 셋의 공통점은 웹에서 사용되고 뭔가를 저장하는것이다. 쿠키 일단 사용자가 어떤 웹사이트를 들어가게 되면 내가 어딜 방문을 했는지, 뭘 검색을 했었는지, 어떤 아이디와 패스워드로 로그인을 했는지 등 수많은 작업을 하게 된다. 쿠키는 이런것이다. 내가 방문하고 내가 검색한 기록들을 내 컴퓨터에 저장을 해두는 것이다. 그리고 좀더 정확하게 말하면 내 컴퓨터에 있는 브라우저에 저장을 하는것이다. 브라우저 관련해서는 아래 참고 사이트를 확인해보도록 한다. 세션 하지만 쿠키에는 한계가 있다. 내 브라우저에 저장을 하다보니 보안 측면에서도 약하고 쉽게 지워지거나 변경되기도 한다. 내 민감한 정보들도 쿠키에 저장을 해두기엔 예민하고 그러고싶지 않을것이다. 이럴 경.. 2022. 3. 23.
프로그램 / 프로세스 / 스레드 컴퓨터를 사용하다보면 프로그램이라는 단어를 많이 사용해보았을 것이다. 프로그램 윈도우 사용자 기준으로 설명을 한다면 .exe파일들 , 즉 실행할수 있는 모든 것을 프로그램이라고 한다. 프로세스 그리고 그 프로그램들이 실행이 되거나 동작을 하게 되면 그것들을 프로세스라고 한다. 윈도우 사용자들은 강제 종료를 위해서 Ctrl + Alt + Delete 를 눌러보았을텐데 거기서 작업관리자를 들어가면 사진처럼 많은 프로세스가 현재 윈도우 상에서 돌고 있음을 확인할수 있다. 예전 초창기 컴퓨터에서는 다중, 멀티프로세싱이 불가능 하여 하나의 작업을 할동안은 다른 작업들은 대기를 해야만 했다. 하지만 기술의 발전으로 동시성 프로세싱이 가능해졌다. 여러개의 작업이 있을때 A작업조금 B작업조금 .... Z작업 조금 이렇.. 2022. 3. 22.
Internet Explorer 가 사라지고 있는 이유 컴퓨터를 접한지 얼마 되지 않은 사람들은 Internet Explorer를 사용해보지 않았을수도 있지만 2000년대 초중반에 컴퓨터를 접해본 사람이라면 이 Explorer를 사용해보지 않은 사람은 없을것이다. 그때는 제일 많이, 거의 독보적으로 사용되던 브라우저가 왜 지금은 잘 사용되지 않는지에 대해 알아볼것이다. 일단 브라우저에 대한 개념을 잘 모르시는 분들은 아래 참고 포스팅을 통해서 익히고 오는것이 도움 될것이다. 90년대에 익스플로러는 넷스케이프와 긴 싸움 끝에 승리하여 인터넷 브라우저 시장을 장악하였다. 경쟁사도 없고 독보적으로 단독으로 독차지를 하였다. 그 결과 업데이트와 개선 문제 등에 소홀히 하게 되었다. 고객들의 요청은 많았는데 속도개선 부터 시작해서 많은것을 그대로 방치만 해두었다. 그.. 2022. 3. 21.
Browser란? 다들 흔히 컴퓨터를 사용하면서 인터넷을 하게 되는데 이 인터넷을 사용하려면 browser라는 것을 사용하게 된다. 어?! 저는 브라우저가 아니라 크롬을 쓰는데요? 저는 사파리를 써요! 라고 하시는 분들도 계실수도 있지만 이것들을 통틀어서 브라우저라고 한다. Browser란? 인터넷에서 웹 서버의 모든 정보를 볼수 있도록 하고, 문서 검색을 도와주는 응용 프로그램이다. 대표적으로는 위에 말한것 같이 Chrome safari IE(internet explorer) opera firefox 네이버 웨일 edge 등 다양한 브라우져들이 있다. 예를들어서 .docx 파일을 읽으려면 워드 프로그램이 있어야한다. microsoft의 워드든 한글과 컴퓨터의 워드든 word 프로그램에서 docx 파일을 읽을수가 있다. .. 2022. 3. 20.
MVC란? 웹페이지를 만들기 위해서는 아주 다양한 방법들이 있다. 프로그래밍 언어를 무엇을 쓰느냐도 고려해야할 사항이고 프로젝트의 규모가 크다면 개발 방식이나 패턴, 아키텍쳐 들도 충분히 고려해야할 사항이다. 또한 하나의 웹페이지를 작성하기 위해서는 한 페이지에 모든것을 넣어서 구현을 할수도 있지만 이번 포스팅에서는 그와 다른 Model, View, Controller를 구분해서 개발을 하고 이를 앞글자만 따서 MVC 패턴이라고 하는 방법에 대해서 알아보도록 할것이다. 간단한 사이트는 하나의 페이지에서 모든것을 동작 시킬순 있다. 하지만 큰 포털 사이트나 다양한 기능들이 많이 모여있는 그런 웹사이트라면 얘기가 다르다. 요소가 얽히고 거대하고 복잡해지는데 이럴땐 모듈화 하여 업무를 분리해야한다. 어떤 작업이든 업무를.. 2022. 3. 19.
안드로이드 13 티라미수(Tiramisu) 안드로이드 스튜디오를 사용하면서 맥에서 사용하다보니 안드로이드 에뮬레이터 보다는 IOS 에뮬레이터를 사용해서 몰랐는데, 안드로이드 13버전이 출시 되었다는 소리를 들었다. 그리고 찾아보니 대략적인 일정은 다음과 같다. Android 13 빌드 예상 릴리스 타임라인 안드로이드 13 티라미슈 2022/05 개발자 미리보기1 2022/02 개발자 미리보기2 2022/03 개발자 미리보기3 2022/04 베타1 2022/05 베타2,3 2022/06-07 베타4 2022/08 안정적 빌드 2022/09 그리고 변경 사항은 다음과 같다. 앱 언어 OS설정에서 앱 별로 언어를 개별적으로 설정할수 있어서 다국어 사용자에게 유용할듯 하다. 알림 런타임 사용권한 스마트폰 사용시 많은 알림이 있는데 좀더 자유로워 질것이라.. 2022. 3. 17.
try - catch - finally 예외처리란? 프로그래밍에서 예외처리란 굉장히 중요한 부분이다. 서버가 잘 돌다가 죽을수도 있고 무한 대기, 홀딩 현상이 걸릴수도 있다. 일상생활에서의 예외처리를 잠깐 예를 들면. 외출을 해야하는 경우인데 친구들끼리 오늘은 각자 준비해서 검정색 신발을 신고 만나자! 라고 얘기가 되었다. 근데 다들 모였는데 한 친구만 안나오길래 그 집에 가보니 친구가 신발장 앞에서 검은 신발이 없어서 가만히 기다리고만 있었다. 이게 바로 예외처리가 안되어서 특정 부분에서 락이 걸리거나 홀딩 이 걸린 현상이다. 또 다른 예로는 시험지에 이름을 쓰고 학번을 써야하는데 누군가 실수로 이름란에 학번을 쓰고 학번 란에 이름을쓰게 되었습니다. 이걸 사람은 보고 알아서 이해할수 있지만 컴퓨터는 분명이 이름에는 스트링 형식, 학번에는 인티져 형식이 .. 2022. 3. 16.
반응형