[바미] Hoisting에 대해 알아보자!
·
프로그래밍(Basic)/Javascript(TS,Node)
Hoisting은 우리가 무의식적으로 사용하고 있을 수 있는 개념입니다. 이번 글에서는 Hoisting의 특징에 대해 알아보겠습니다.  모든 변수 선언은 호이스팅(Hoisting)되는데 호이스팅(Hoisting)이란 변수의 선언과 할당이 분리되어 처리되는 것을 의미합니다. 쉽게 말해서 변수가 함수 내부에서 선언되었을 경우 해당 선언은 함수의 최상위로 끌어올려지고, 함수 외부에서 선언되었을 경우 전역 컨텍스트의 최상위로 이동하게 됩니다. 이렇게 말로하는것보다 코드로 이해하는게 더 빠르니 코드를 봅시다.const hoisting = () => { console.log("First-Name:", name); var name = "Marcus"; console.log("Last-Name:", name);}..
[바미] js엔진은 어떻게 동시처리를 하는지 알아보자.
·
프로그래밍(Basic)/이론
[목표] nodejs가 싱글쓰레드임에도 불구하고 비동기처리를 한다는데 어떻게해? 의문에 답해보자 nodejs가 이벤트루프기반 비동기처리를 한다는데, 이벤트루프가 대체 뭔지 알아보자 랜더링엔진 구조, 처리방식은 알아봤는데 자바스크립트 엔진은 그냥 지나간 것 같으니 이번 기회에 알아보자 [우선! 자바스크립트 엔진과 브라우저 랜더링엔진은 다르다] 랜더링엔진은 HTML과 CSS파일을 파싱하여 새로운 트리구조를 만들고 브라우저 화면에 문서를 나타내는(painting) 작업을 함 자바스크립트 엔진은 js 코드 파일을 해석하고 실행하는 인터프리터(구글의 V8과 같은 엔진) [자바스크립트 엔진 구조] 대부분의 자바스크립트 엔진은 다음과 같이 세가지 영역으로 나뉨 1) Call Stack 자바스크립트는 단 하나의 호출 ..
[바미] Ajax 통신을 알아보자!
·
프로그래밍(Basic)/이론
[목표] 모던웹 구현에 필요한 Ajax 개념알기 Ajax 직접 구현해보는 것 마음먹기 [먼저 보면 좋은 게시글] 1) HTTP 프로토콜 자세히 알기 2) 싱글쓰레드 자바스크립트 엔진은 비동기처리를 어떻게 하는가 [Ajax란] 자바스크립트를 이용해서 비동기적으로 브라우저와 서버가 데이터를 주고 받는 방식을 말함 새로운 언어나 프레임워크, 라이브러리가 아님, 네트워크 통신 방식을 말함 Asynchronous Javascript and XML : 자바스크립트로 비동기 통신을 하고, XML 형식으로 데이터 리턴을 받는다는 뜻 XML 데이터보다 JSON 데이터 포맷을 훨씬 더 많이 사용함 자바스크립트를 통해서 서버에 요청을 하고, 서버로부터 데이터를 리턴받음 DOM을 제어해서 서버로부터 리턴받은 데이터를 가지고 ..
[바미] Beyond OOP에 대해 알아보자.
·
프로그래밍(Basic)/Golang
OOP가 나온지 20년이 되었고, 모든 개발자들이 OOP란 개념은 필수가 되었고, OOP를 해야만 하는 언어들도 많이 나타났습니다. 그 만큼 OOP는 훌륭한 개념이고, 프로그래밍 역사상 가장 훌륭한 기술이자, 가장 성공한 기술이 아닐까 싶습니다. 그럼에도 불구하고, OOP는 문제점이 점점 드러나기 시작했는데 잘 하면 좋은데 잘 하기 어렵다.는 점이죠. 이걸 잘하려면 알아야 하는 내용도 너무 많고, 숙지하고, 숙달해야 하는 부분이 너무 많기 때문이죠. 이게 단순히 지식 만으로 되지 않습니다. 이 지식을 가지고 숙달하는 과정이 필요하죠. 이 지식도 올바른 지식을 가지고 올바르게 숙달시켜야 하는데 실제 상황에서는 올바른 지식을 가진 개발자가 흔하지 않을 뿐더러 올바르게 숙달시킨 개발자도 흔치 않습니다. 그 이..
[바미] Go - ODD의 SOLID에 대해 알아보자.
·
프로그래밍(Basic)/Golang
안녕하세요. 오늘은 OOD의 SOLID에 대해 알아보도록 하겠습니다. OOD(Object-oriented design)는 Object 중심의 설계 방법 입니다. 실제 코딩하는 것보다 설계가 중요한 이유는 설계된 밑바탕이 잘 되어 있어야 그걸 기반으로 개발자들이 코딩을 할 때 잘 할 수 있는데 예전(Unix, OS2) 한 사람이 주도적으로 코딩을 했지만 현재에 와서는 혼자서 하기엔 규모가 커졌기 때문에 수 백명의 개발자들이 하나의 프로그램을 만듭니다. 그렇기 때문에 각자 자기가 맡은 부분에서 코딩을 잘 할 수 있도록 잘 나눠주고, 모듈을 잘 조율 시켜주는 사람이 아키텍쳐이죠. OOD는 그 설계를 할 때 Object중심으로 설계를 해야 좋은 코드를 짤 수 있다는 것을 말합니다. OOD에서 5가지 법칙이 있는..
[바미] Go - Interface에 대해 알아보자2.
·
프로그래밍(Basic)/Golang
안녕하세요! 지난 시간에 Interface에 대해 얘기 했었죠? 지난 시간에 이어서 Interface에 대해 알아가 보겠습니다. 지난 시간에 얘기했던 것을 정리해보면 OOP에서 Objcet란 상태와 기능을 합한거라고 했었고, 이 기능을 외부에 공개된 공개기능, 외부에 공개되지 않은 내부기능 이 있다고 했었죠? 외부 기능은 외부와 통신하는 기능이기 때문에 외부 Obejct와의 관계로 볼 수 있습니다. 이 관계를 따로 정의 해놓은 것이 Interface라고 했습니다. 그래서 이 관계를 따로 Interface에서 정의할 수 있기 때문에 Object에세 관계의 종속성을 끊었고, 이렇게 독립 시켜 놓았기 때문에 관계만 포함하고 있으면 Object A든 Object B이든 상관 없이 사용할 수 있어 확장성이 생기게..
[바미] Go - OOP 3번째! Interface에 대해 알아보자.
·
프로그래밍(Basic)/Golang
안녕하세요! 이번에는 Interface에 대해 알아보겠습니다. 여기서'Inter'라는 것은 왔다 갔다 하는 것을 의미합니다. Inter가 쓰인 말 중에 Inter change가 있고, Interaction이 있는데 Interaction은 상호작용을 말하는 것이고, Inter change는 고속도로에서 도로가 바뀌는 것을 의미 합니다. 'face'라는 것은 얼굴이라는 뜻도 있지만 면, 접촉면, 표면을 의미 합니다. 그래서 Interface라고 하면 서로 상호 작용을 하는 접촉 면을 의미하죠. 보통 UI(User Interface)를 보통 얘기하는데 어떤 게임을 할 때 UI가 좋다, 나쁘다. 이런 얘기를 하는데 UI라는 것은 게임을 할 때 키보드와 마우스의 입력과 화면상의 게임 캐릭터의 상호작용, 그러니까 ..
[바미] Go - OOP(Object란?)
·
프로그래밍(Basic)/Golang
안녕하세요. 저번 시간에 이어서 절차적 프로그래밍이 어떤점이 나빴기 때문에 OOP가 나타났는지를 살펴보도록 하겠습니다! 저번시간에 딸기잼 샌드위치를 만드는 프로그램을 만들었었는데 이번에는 그 프로그램이 변경되서 딸기잼이 아니라 오렌지잼 샌드위치를 만드는 프로그램을 만든다고 했을 때 어떤 부분들이 수정되야 하는지 살펴보죠! type OrangeJam struct { opened bool } 먼저 딸기 잼이 아니라 오렌지 잼이 있어야 할 것 입니다. 그 다음에 func main() { // 1. 빵 두개를 꺼낸다. breads := GetBreads(2) //jam := &StrawbrreyJam{} jam := &OrangeJam{} // 2. 딸기잼 뚜껑을 연다. // OpenStrawberryJam(j..
[바미] Go - OOP에 대해 알아보자.
·
프로그래밍(Basic)/Golang
OOP(Object Oriented Programming)는 한국어로 풀어 쓰면 '객체 지향 프로그래밍'이라고 번역을 하는데 이 번역이 잘 못 되었다 생각합니다. '지향'은 Direct, 그러니까 어떤 방향성을 갖고 있는 것이고, 그 쪽으로 가겠다.는 얘기인데 'Oriented'는 어떤 중심의, 기원의, 근간이 되는 이라는 뜻입니다. 그러니까 객체 지향은 내가 객체 쪽이 아닌데 객체 쪽으로 나아가겠다.는 뜻인데 이미 프로그래밍은 객체로 넘어갔고, 지금은 객체 중심으로 프로그래밍을 해야 합니다. 물론 'OOP'가 처음 나왔을 때는 "우리는 아직 OOP가 아니기 때문에 OOP를 향해 가자!" 라고 말할 수 있지만 2021년 현재는 이미 OOP로 넘어갔고, 넘어간지도 20년이나 지났습니다. Java나 C#같은..
Bami
'프로그래밍(Basic)' 카테고리의 글 목록 (12 Page)