기타

    [JS] 콜백함수 설명(사용법이 아닌, definition 탐구)

    Nodejs를 공부하다가 콜백함수에 대해 찾아보았다. 사용법이 아닌 콜백함수 자체에 대해 명료하게 설명한 댓글이 있어 필사한다. 함수를 호출할 때 call이라는 표현을 씁니다. (전화를 거는 것과 같은 의미로 씁니다.) 이건 흐름제어에 대한 주도권과도 관계가 있는데요. 개발자가 주도권을 잡고 필요한 함수를 호출하는게 일반적인 개발의 흐름입니다. 제공되는 라이브러리 함수 등은 모두 주도권을 가진 개발자가 직접적으로 호출해야 하죠. 이건 내가 (주도권을 가진 사람을 A라고 명명) 전화를 걸어야만 전화 받는 사람(B라고 명명하자)이 전화를 받고 무엇인가를 행하는 것과 같은 개념입니다. 이 때 전화를 받은 B가 A가 요청한 일을 하다가 또는 다한 후에 A에게 무언가를 요구할 수 있습니다. 그런데 이 때 B가 A..

    'ssh' is not recognized as an internal or external command, operable program or batch file. 해결법

    putty로만 작업했었어서 정말 오랜만에 만나보는 문장이었다. Windows cmd 에서 'ssh' is not recognized as an internal or external command, operable program or batch file.와 같은 문구가 나온다면 2가지 상황을 의심할 수 있다. 1. 정말 그 명령어를 실행하기 위한 file이 존재하지 않거나 2. 환경변수를 설정하지 않았거나 우선 1번의 경우를 점검해보자. 만약 위 사진과 같이 설치되어 있지 않다면 위의 '기능 추가'을 클릭하여 설치해주면 된다. 그러나 사진처럼 설치가 되어있음을 확인했다면 2번의 경우를 의심해볼 수 있다. OpenSSH의 경로는 대개 C:\Windows\System32\OpenSSH이다. 실제로 ssh가 존..

    프로그램 메모리 세그먼트

    세그먼트 방식은 가상 주소인 논리적 주소를 활용하여 상대적인 위치를 지정하고 offset(시작주소)을 더하여 물리적인 주소로 접근한다. 이를 통해 CPU가 프로세스는 연속된 메모리에 위치하구나하는 착각을 줄 수 있다. 세그먼트 방식은 메모리 보호를 쉽게 할 수 있고 공유에도 이점이 있다. 왜냐하면 단순히 크기 단위로 구분하는 페이징 방식과는 다르게 논리적 내용의 단위로 구분하기 때문이다. 논리적 내용의 단위가 무엇이냐면 예를 들어 데이터 세그먼트에 리터럴이 있을 수가 있고 정적 변수가 있을 수가 있고 어떠한 구조체가 있을 수도 있기 때문에 단순히 크기 단위로 구분하는 것이 아니라 이를 규칙을 정해 구분해주는 것이다. 프로그램 메모리 세그먼트는 컴파일러에 의해 프로그램이 프로세스에 올라갈 때 세그먼트가 크..

    컴파일(Compile)과 런타임(Runtime)

    컴파일(Compile) 컴파일러가 소스코드를 한꺼번에 기계어로 변환시켜주는 과정. 컴파일은 이전 글에서 설명했듯 컴파일 언어(C,C++,JAVA)가 실행(즉, 런타임)되기 위해서는 반드시 컴파일 과정을 거쳐야 한다. 당연하게 인터프리터 언어들은 컴파일을 하지 않는다.(하지만 속도는 컴파일 언어보다 느리다.) 런타임(Runtime) 컴파일을 마친 컴퓨터 프로그램이 동작되고 있는 그 환경 자체 혹은 동작되는 동안의 시간. 많이 드는 예시로 JavaScript가 웹 브라우저에서 작동하면 런타임 환경은 웹 브라우저이고 Nodejs에서 작동한다면 런타임 환경은 Nodejs가 된다. 각각의 과정 간 에러가 발생할 수 있는데 컴파일 에러는 프로그램 실행 과정 중에 에러가 발생하는 경우이고 런타임 에러는 프로그램 실행..

    프로그램을 누가,왜 번역하는가?(프로그래밍 언어의 역사)

    컴퓨터의 배선을 직접 조작해야하는 하드웨어 프로그래밍 최초의 컴퓨터를 에니악(ENIAC)으로 알고 있는 분들이 많습니다. 하지만 정말 최초의 컴퓨터는 콜로서스인데요. 당시 콜로서스가 극비의 임무를 맡고 있었기 때문에 대중에게 공개가 늦게되었다고 하네요. 두 컴퓨터는 사실 컴퓨터라기보다는 계산기에 더 가까웠습니다. 주 기능이 연산이었기 때문이죠. 또 이때는 지금처럼 연산기호나 프로그래밍 언어를 사용하여 코딩을 할 수 없었습니다. 컴퓨터의 배선을 직접 조작하는 '하드웨어 프로그래밍'을 해야만했습니다. 소프트웨어 프로그래밍의 탄생 하지만 폰 노이만 아저씨가 새로운 구조를 만들어줍니다. '내부기억장치'를 탑재해서 프로그램을 저장하고 중앙처리장치가 이 프로그램을 읽어서 구동시키게 하는 '소프트웨어 프로그래밍'의 ..