전체 글
-
20220908 TIL 다 이유가 있다.TIL 2022. 9. 8. 23:30
메가테라 첫 주차에 마주쳤던 JVM. 이제서야 메모리 구조를 외울 수 있게 되었다. JVM을 처음 마주쳤을 때 들었던 감정은... 매우 복잡했다. 이게 다 뭣인가. 런타임 메모리 영역은 심지어 5개로 나뉘어진다. 처음에는 낯설고 낯선 용어 밖에 없어서 이게 다 뭔가 싶었지만 공부를 하다보니 하나하나 없어선 안 될 하나하나 소중한 곳들이었다. 이 복잡한 구조는 어떻게 하면 조금이라도 메모리의 낭비를 막을지 고민한 흔적의 결과였다. 인스턴스의 멤버변수는 인스턴스마다 다른 값을 가져야 하니 인스턴스 생성 시 마다 스택에 영역이 할당된다. 그리고 변수들을 후입선출인 스택에 쌓는 이유는 가장 나중에 메모리에 올라간 가장 안쪽 블럭의 지역 변수가 가장 먼저 메모리에서 해방되어야 하기 때문이다. 그리고 객체의 인스턴..
-
20220907 TIL 내가 알던 for문이 아냐!TIL 2022. 9. 7. 18:20
대부분의 프로그래밍 언어에서 for문은 for(초기화 식; 조건식; 증감식) 으로 구성된다. 그런데 자바에서 초기화 식, 조건식, 증감식 그 어느 것에도 아무 것도 안 넣어줘도 멀쩡히 돌아간다는 것을 아는가.. 루프변수가 초기화 식에서만 선언될 필요는 없는 것은 알고 있었지만 for문은 생각보다 자유로웠다..! for(;;)으로 무한루프를 돌릴 수 있고, 초기화 식을 미리 선언하면 쓰지 않아도 된다. 조건식을 for문 내부에서 쓰는 경우에 조건식을 생략할 수 있고, 증감을 for문 내부에서 하는 경우 증감식도 생략할 수 있다. 그렇지만 그렇게 할 수 있는 걸 수많은 루프를 돌리면서 왜 이때까지 몰랐을까? 사람들이 그렇게 많이 사용하지 않기 때문이다. 그리고 그렇게 사용하지 않는 이유는 그렇게 사용하지 않..
-
20220906 TIL 인터페이스가 뭐예용?TIL 2022. 9. 6. 17:24
개발을 하다보면 정말 많이 말듣쓰하게 되는 용어 중 하나가 인터페이스다. 하지만 이렇게 자주 쓰이는 용어임에도 인터페이스가 뭔지 물으면 대답하기가 참 곤란하고 어렵다. 심지어 자바 인터페이스는 다중상속을 쉽게 해준다는데 왜 interface라는 용어가 붙은 건지 이해를 하기가 어렵다. 자바 인터페이스를 검색하면 보통 인터페이스를 어떻게 사용하는지 밖에 나오지 않는다. 하지만 인터페이스의 뜻을 제대로 이해하지 못하면 인터페이스를 오용, 남용할 가능성이 높아보이고, 언제 써야할 지 판단이 어려워서 이 글에서는 자바 인터페이스를 왜 interface라고 하는지 분석해봤다. 인터페이스가 어려운 여러분과 저를 위해 이 글을 바칩니다. 인터페이스의 일반적인 의미부터 알아보자. inter + face = 서로 맞대고..
-
20220905 TIL 마우스 없이 살아남기TIL 2022. 9. 5. 15:04
오늘도 또 하나의 숙원사업을 청산했다. 수많은 개발자들이 찬양하는 vim. 많은 사람들이 좋다고 하는데에는 이유가 있을 것이다. 나는 아직도 마우스를 쓰는 게 더 편하지만 여러 단축키들도 많이 습득하고 있는 요즘 이왕이면 아예 마우스에게 안녕을 고해보는 것도 나쁘지 않을 것 같다. 인텔리제이에 vim을 사용할 수 있는 익스텐션을 설치했다. 뭔가 신세계다. 커서를 하나하나 움직이는 게 너무 불편했는데, vim을 사용하니 마우스 없이도 쉽게 슉슉 움직일 수 있다. 아직 익숙지 않지만 영타를 처음 배울 때처럼 하나하나 익혀서 생산성을 높여보자. 하루 적어도 한 번씩 아래의 키들을 활용해보자. shift i i shift a a h, j, k, l w b e shift [, ] v : 영역 선택 shift v ..
-
20220904 TIL 메가테라 수강생이 알려주는 메가테라의 가장 좋은 점TIL 2022. 9. 4. 12:55
메가테라 성수코딩도장은 뚝섬역 근처에 위치하고 있다. 그 말은 맛집으로 둘러싸여 있다는 말이다. 물론 예산의 한계와 시간 부족으로 매일매일 누리고 살 수는 없겠지만, 조금만 걸어가면 서울숲도 나오고, 맛집 밀집도는 단연코 내가 가본 곳 중 1위이다. 게다가 메가테라 대표님이신 홀맨님이 맛집 정보통이시다. 이것이 왜 제일 좋은 점인가. 나만 그러한지 모르겠지만 사람은 공부를 아주 열심히 하면 스트레스를 받기 마련이다. 그러면 그 스트레스를 언젠가 풀어야 하는데, 공부할 시간도 없는데 스트레스를 풀 시간은 당연히 더 없다. 그렇다면 어떻게 해야하겠는가. 시간을 안쓰고 스트레스를 풀 수 있어야 한다. 사람은 무조건 밥을 먹고 산다. 따라서 어차피 밥을 먹으면서 시간을 사용하는데 그 시간에 스트레스까지 풀리면 ..
-
20220903 TIL 추상화야 고마워TIL 2022. 9. 3. 13:43
오늘은 숙원사업을 해결했다. 도대체..! 트랜지스터는 뭣이고 레지스터는 뭣인가. 내가 공부하기를 포기한 몇 안 되는 과목 중 하나인 물리. 물리는 학점을 목숨처럼 챙겼던 대학교에서도 포기했다. 전기장 자기장 토오크 난 몰른다. 그런데 컴퓨터에서도 물리가 나를 괴롭힐 줄이야. 고등학교 때 어렴풋이 들어봤던 기억이 있는 NPN PNP 트랜지스터 자유전자... 아직도 잘은 모르지만 IT책에서 반복되어 언급되는 트랜지스터와 레지스터에 대한 찝찝함은 이루 말할 수 없을 정도였다. 한 두 번 언급되고 말았다면 아 몰랑 하고 넘어갔겠지만, 이것은.. 컴퓨터의 아주 중요한 부품인 것 같다는 생각이 안 들 수 없을 정도로 자주 나왔다. 하지만 나는 트랜지스터, 레지스터에 대한 개념 없이도 코딩을 몇 년간 지금까지 잘 해..
-
20220902 TIL 본질에 집중하자TIL 2022. 9. 2. 17:29
본질이란 무엇일까? 본질이란 추상적인 단어이고, 설명하기가 쉽지 않은 단어이다. 하지만 객체지향프로그램에서 본질은 코드로 구현되어 있다. 그 말은 나도 프로그래밍을 할 때 객체지향적으로 하려면 본질을 분리해야 한다는 말이다. 본질이 뭔지 명확히 설명을 못해도 괜찮다. 하지만 적어도 분리는 할 수 있어야 한다. 본질을 분리한다는 말은 어떤 뜻일까? 관심사의 분리와도 관련이 있는데, 본질끼리 묶어두면 본질이 분리된다. 먼저 본질이 무엇인지 잘 모르겠다면 본질이 아닌 것을 먼저 알아보자. 프로그램에서 본질이 아닌 것은 클라이언트가 바뀔 때마다 바꿔줘야 되는 부분이다. 클라이언트가 바뀌어도 본질은 그대로일 것이다. 그래서 우리는 그 바뀌지 않는 것을 본질이라고 부르는 것이다. 즉, 버튼을 누르거나, 터미널에서 ..
-
메가테라 3주차 주간회고회고 2022. 9. 2. 17:27
이번 주는 스윙과 객체지향을 함께 배우는 한주였는데, 매우매우 바쁜 한 주였다. 처음에는 아무것도 할 수 없어서 너무 당황스러웠고, 아무것도 못했는데, 다행히 동기분들과 함께 성장해서 이제는 조금은 할 수 있는 수준이 되었다. 뿌듯하다. 아직 잘은 못하지만 손도 못 대던 수준에서 조금은 할 수 있어 졌다는 것에 만족한다. 스윙을 익히게 된 것이 너무나 기쁘다. 스윙 사용법이 검색해도 잘 나오지 않기 때문에 나중에 까먹을 지도 모를 나를 위해 그리고 스윙으로 고통받고 있는 분들을 위해 사용법을 남겨두겠습니다. 스윙 사용법 일단 JFrame으로 창을 띄웁니다. 그리고 그 JFrame으로 만든 프레임에 요소들을 더하는 방식으로 진행이 됩니다. 패널은 넣고싶은 요소의 뭉텅이라고 보면 되고, 프레임에 바로 넣고..