본문 바로가기

코딩

(157)
자바스크립트의 클로저를 간단한 예제로 알아보기 클로저...자바스크립트를 공부하다보면 만나게 되는 어려운 개념들 중 하나입니다. 클로저를 잘 이해하기 위해서는 버그를 줄일 수 있는 변수 정의 방법에 대해 알아야 합니다. 변수를 사용할 때에는 변수를 정의하고, 데이터를 할당해야 합니다. var 변수; // 변수 정의 변수 = 10; // 데이터 할당 자바스크립트에서 var 키워드를 사용해서 변수를 정의하면 재정의와 재할당이 모두 가능합니다. var 변수; 변수 = 10; var 변수 = 20; // 재정의 변수 = 30; // 재할당 재정의는 이미 정의된 변수를 다시 정의하는 것이고, 재할당은 이미 데이터를 할당한 변수에 새로운 데이터를 할당하는 것을 의미합니다. 자 그럼 변수를 재정의하고 재할당 할 수 있게되면 어떤 문제가 발생할까요? var 간식; ..
c언어로 isalpha, isdigit, isalnum, isascii, isprint 함수 구현하는 방법 is 시리즈 함수는 매개변수로 받은 int 자료형 데이터가 ascii 코드 상에서 어떤 의미를 가지는 데이터인지 판별하는 함수다. 그래서 ascii 코드표를 잘 참고하면 어렵지 않게 함수를 정의할 수 있다. 1. isalpha 구현 개요 isalpha 함수는 매개변수로 받은 int 자료형 데이터가 알파벳인지 확인하는 함수다. 함수는 대문자 알파벳이거나 소문자 알파벳일 경우 1을 반환하고, 그 외에는 0을 반환한다. 구현 매개변수로 받은 데이터가 알파벳인지 확인할 때에는 ascii코드를 체크하는 방법이 가장 쉽다. 터미널에서 아래 명령어를 입력하면 ascii 코드표를 확인할 수 있다. man ascii 위 표를 보면 10진수 아스키 코드가 65일때 대문자 알파벳 A와 대응된다. 우리가 함수에서 매개변수로 ..
짧지만 굵었던 42경산 피신 리로드 후기 42 경산 라피신 1기 1차 교육생이었습니다만 본과정에 합격하게 되었습니다. 합격 후 첫 번째 과정이 바로 피신 리로드 과정이었습니다. 피신 리로드는 본과정에 들어가기 전 라피신 과정을 되새기며 예열 하기 위한 과정입니다. 라피신 이후 본과정 시작 전까지 2달 정도의 시간이 비었기 때문에 Norminette라던가 로우레벨로 코드를 구현하는 접근방식이라던가 가물가물해진 내용들이 있었기 때문에 라피신 리로드 과정이 조금은 부담스러우면서도 한편으로는 반가웠습니다. 피신 리로드 기간에는 27개의 과제를 해결해야 합니다. 과제들은 모두 라피신 기간에 만나보았던 문제들로 이루어져 있습니다만 제가 라피신 기간에 도달하지 못했던 레벨의 과제도 풀어야 했기 때문에 조금은 긴장감이 느껴졌습니다. 라피신 리로드 기간은 딱 ..
VSCode - 들여쓰기를 space에서 tab으로 변경하고 저장하기 에꼴 42에서는 norminette라는 프로그램을 이용해 코드 포맷을 강제합니다. 42 경산에서도 마찬가지로 norminette를 이용해서 작성한 코드의 포맷을 지정하고 있습니다. 이게 왜 중요하냐면, 42 교육과정에서는 과제를 제출할 때 기계평가라는 것을 거칩니다. 기계평가는 42 서버에서 제출된 과제의 코드를 검사하여 코드가 정상적으로 동작 하는지, 지정된 코드 포맷을 만족하는지 등을 검사하는 과정을 의미합니다. 아무튼 이 norminette를 만족시키기 위해서는 들여쓰기를 4칸짜리 tab으로 지정해야 합니다. 그런데 vscode를 최초 설치 시 들여쓰기 설정이 4칸짜리 space로 설정되어있습니다. 저기 가운데에 Spaces: 4라고 표시되어있는 부분이 들여쓰기를 space로 처리했다는 의미입니다...
모던 자바스크립트 딥다이브 - 표현식과 문 우리는 코드를 작성하는 과정에서 값을 다룬다. 값을 생성하기 위해서는 표현식을 평가해야 한다. 표현식을 평가한다는 것은, 표현식을 해석해서 값을 생성하거나 참조한다는 뜻이다. var age = 20 + 10; 위 예제에서 20 + 10은 숫자 타입 값 30을 생성하는 표현식이다. 그러므로 변수 age에는 20 + 10이 날 것 그대로 할당되지 않고, 20 + 10이 평가된 숫자 타입 값 30이 할당된다. 그렇다면 단순한 숫자 20도 표현식일까? 20; 위 예제에서 숫자 20은 리터럴이라고 부른다. 좀 더 정확히 말하자면 숫자 리터럴이다. 100; // 정수 리터럴 100.5; // 부동 소수점 리터럴 null; // null 리터럴 등등 리터럴은 약속된 기호나 문자를 사용해서 값을 생성하는 표기법을 의미..
모던 자바스크립트 딥다이브 - 변수 모던 자바스크립트 딥다이브 스터디를 시작했다. 1~3장까지는 기본적인 자바스크립트 소개와 환경 셋팅에 대한 내용이라 4장부터 스터디를 시작하기로 했다. 4장의 내용은 변수에 대한 것. 가장 먼저 변수란 무엇인가? 프로그래밍을 할 때 가장 많이 사용하는 개념 중 하나가 변수라고 생각한다. 이 변수에 대해 이해하기 위해서는 컴퓨터가 데이터를 저장하고 불러오는 원리를 이해해야 한다. 컴퓨터는 메모리에 데이터를 저장한다. 그리고 메모리의 최소 단위는 메모리 셀이며 8비트 크기를 가진다. 이 메모리 셀에 데이터를 저장하고 메모리 셀의 주소를 통해 데이터를 참조할 수 있음. (여기서 참조란 메모리에 저장된 데이터를 읽어들이는 것을 의미한다.) 사설이 길었지만 다시 변수란 무엇인가에 대해 이야기해보자면 변수는 데이터..
메모리 효율적인 자바스크립트 기반 Fulltext 검색엔진 MiniSearch 소개 해커톤에서 챗봇 개발을 했는데, 보유한 데이터를 검색해서 보여줄 수 있는 기능이 필요했다. 별도의 서버를 사용할 수 있다면 좀 더 정석적인 도구를 사용할 수 있었겠지만, 주어진 환경이 글리치 서버 환경 뿐이라서 MariaDB나 MongoDB 같은 DB 연동이 불가능한 환경이었고, 글리치 특성 상 무거운 라이브러리를 설치하기가 부담스러웠다. 그래서 주어진 환경에서 가장 가볍고 효율적으로 원하는 기능을 구현할 수 있는 MiniSearch를 사용하게 됐다. MiniSearch의 깃허브 주소는 아래와 같다. 사용 방법과 소개 또한 원문으로 존재하기 때문에 혹시 사용해보고 싶다면 참고하면 좋을 것 같다. https://lucaong.github.io/minisearch/ MiniSearch MiniSearch M..
비전공자의 42경산 1기 라피신 후기 1. 42 경산이란? 혹시 42 서울을 들어보셨나요? 42 서울은 프랑스의 에꼴42의 어쩌구저쩌구... 네, 설명이 장황하니 요약하자면 42는 교수, 교재, 교육비가 없는 코딩 교육과정입니다. 좀 더 엄밀히 말하면 코딩 보다는 프로그래밍 전반에 대한 교육 과정이라고 할 수 있겠네요. 현재 전 세계적으로 수십개의 캠퍼스가 존재하며 세계적으로 유명한 교육기입니다. 국내에도 이미 서울에 캠퍼스가 존재하는데 이번에 42 경산 캠퍼스도 생겼습니다. 기존의 부트캠프와는 결이 다르다는 평이 많아서 궁금하기도 했고, C언어와 터미널 위주의 교육 환경이 궁금하기도 해서 한 번 신청해보았어요. 2. 42 경산에 기대하는 것 한달간 라피신 과정을 진행하면서 라피신은 본인이 42의 교육과정에 적합한지 확인하고, 적합하지 않다..