vivatube_의 등록된 링크

 vivatube_로 등록된 네이버 블로그 포스트 수는 83건입니다.

암기 어플 anki 활용법 ( 내돈내산 ) [내부링크]

Anki라는 어플이 있다. Quizlet과 비슷한 느낌이라면 느낌인데 한 마디로 낱말카드이다. 둘다 내돈내산으로 써봤는데 개인적으로는 Anki가 더 잘맞아서 anki를 쓴다. Anki가 뭐냐면 앞면을 보고 뒷면을 맞추는 카드게임 같은 것이다. 나는 외우는 걸 극도로 못하기에 anki를 사용하고 있는데 나에게는 꽤 도움이 되는듯해서 공유하러 왔다. 아이폰은 기억상 3만원 주고 anki를 샀던걸로 기억하는데 그만큼 나의 기억 보조장치가 되어준다. 내가 느낀 가장 큰 장점은 1- 휴대폰 어플과 컴퓨터 패드 등 동기화가 가능함 2- 동기화만 해두면 오프라인에서 사용 가능 3- 자동 설정된 복습 주기별로 카드가 나타남. 이 어플을 한마디로 하면 “ 내 손안의 퀴즈쇼 feat. 강제 복습 ” 되시겠다. “ 어쭈, 이래도 못 외워? 싶을 때까지 나온다.... ” 내가 통과시키는 기준은 “ 설명할 수 있냐없냐이다. ” 일단 뭉치는 나는 내가 공부할 과목별로 나눴다. 원래는 영어 공부도 있었는데 생

자바 공부 중 헷갈리는 개념이 있을 때 나의 해결방법 [내부링크]

class Person{ long id; public boolean equals(Object obj) { if (obj instanceof Person ) return id ==((Person)obj).id; 공부하다가 문득 참조변수의 형 변환이 헷갈렸다. 그래서 이런 생각이 들었다. " 참조변수의 형변환은 조상 타입으로는 instanceof 연산 시 true로 알고 있는데, 조상 타입으로 형변환하면 자손에 있는 멤버를 못 쓸수도 있지 않나...? " 그래서 내가 헷갈리는 걸 해결하기 위해 다양한 방법을 써봤는데 실제로 그런 상황을 만드는 게 최선이라는 생각이 든다. 결국 프로그래밍의 세계는 백 번 보는 것보다 한 번 쳐보는 게 낫기 때문이라는 정설처럼 떠도는 말을 난 믿고 따르기 때문이다. A클래스를 최고 조상으로, B 클래스를 A의 직계 자손으로 , C 클래스를 B의 직계 자손으로 만들었다. 참조변수 a가 가리키는 객체는 A 타입의 인스턴스이고, b가 가리키는 객체는 B타입의 인

String 클래스의 메서드 따라쳐보기 [내부링크]

이런 게 있구나 정도만 알고 넘어가고, 한 번에 외우려하지 말자. 나중에 쓰다보면 익히겠지.

공부 시간을 재지 말고 양을재자. [내부링크]

현재시각 새벽 1시4분 공부 시간 재는 거는 순공 시간 시간 늘리는데는 도움이 되는데 결국은 공부 양을 늘려야한다. 공부 효율을 높이는데는 학습량 체크하고 셀프 피드백 하는 게 제일 완벽하다는 생각이 든다. 순공 시간 체크랑 매일 학습량 체크하고 어떤 부분에서 시간 낭비를 했는지 체크 꾸준히 하기. 집 가는길에 걸어가면서 블로깅 하는 것도 시간 절약의 한 방법이랄까

2024 새해 나의 루틴 [내부링크]

일단 아침 기상 시간은 9시인데 벌써 늦잠잔 적도 있다. 불면증이 어째 해결이 안 된다.. ㅠㅠ 2023년에는 일어나서 네이버나 인스타 유튜브 보며 시간 낭비했던 걸 올해는 하지말자고 생각해서 지금 내 폰에는 인스타 유튜브 네이버 3개가 다 없다. 취업할 때까지 공부 못하는 날 빼고는 깔지도 않을 생각이다. 자고 일어나면 운동을 한다. ( 이틀 하고 하루는 쉰다 ) ( 2023 후반기에 체력이 떨어지는 게 느껴져서 다시 시작 ) 운동이 끝나면 바로 집에와서 찬물로 샤워를 한다. ( 요새는 얼음물이 나온다. ) 그래도 하루 시작할 때 정신차리자는 의미로 한다. 첫 끼로 점심 먹고 바로 집을 나간다. 스터디 카페 가는 길에 편의점에서 김밥이랑 삼각김밥산다. 스터디 카페 도착하면 일단 커피 한 잔을 바로 마시고, 저녁에 먹기 위해 김밥을 냉장고에 넣어둔다. 보통 스터디카페 도착하면 12시~1시쯤이다. 공부 시작 전에는 스트레스 관리를 위해 항상 30분씩 책을 읽는다. 공부 할 거 하다가

코딩 자율학습 HTML+CSS+자바스크립트 - 첫 번째 HTML 문서 만들기. [내부링크]

먼저 Visual Studio Code라는 텍스트 에디터를 설치했다면, 이제 첫 html 문서 만들기를 시작해보자. 저 파일 두개가 겹쳐진 모양을 누르면 Open Folder라는 버튼이 보일텐데, Open Folder를 눌러주자. 새 폴더를 만들고, 폴더 선택을 누른다. 최초 폴더 설정시에는 신뢰할 수 있는 폴더인지 묻는데, 저 네모 박스를 체크해주고, 신뢰할 수 있는 폴더라고 클릭해주면 된다. 익스플로러 창에 만든 프로젝트 폴더가 뜬다. 이제 파일을 만들어야겠지. 파일을 만드는 방법은 여러가지 이지만 어떻게 만들어도 딱히 큰 상관은 없다. 잘 모르겠으면 저 CODE 밑 검은색 빈 공간에서 마우스 오른쪽 버튼을 누르자. 그러면 이렇게 New File...이라고 나오는데 New File로 파일을 생성해주면 된다. 파일명을 index.html이라고 하면, html 파일이 생성된다. index.html이라고 파일명을 하는 이유는 웹 브라우저에서 주소에 명시적으로 파일을 요청하는 게 아니라

삼성 노트북 화면 분할법. [내부링크]

사실 그런 건 없고, 윈도우면 키보드에서 윈도우 버튼 누르고 창 누른다음 윈도우 + 방향키 누르면 그 방향에 화면이 분할 된다. Visual Studio 코드는 왼쪽으로 분할했고, 웹은 오른쪽에 분할했다. 이렇게 하면 라이브 익스텐션을 활용한 보람이 있다. 참고로 난 삼성 노트북 5년째 쓰면서 화면 분할 되는지 처음 알았다. 난 바보다. 한 줄 요약 : 화면 분할을 원할 때는 윈도우키 + 방향키

개발 블로그 velog로 이주 계획... 블로그 이원화 [내부링크]

난 네이버 블로그가 좋다. 그래서 아예 접을 생각은 아닌데 개발 관련해서는 아예 velog라는 걸 할 생각이다. 한마디로 블로그 이원화를 하겠다는 것이다. 선택권이 네이버 블로그, 티스토리, velog였는데 나는 셋 중에 velog로 이주하기로 마음을 먹고, 당장은 아니지만 준비가 되면 새롭게 velog를 시작할 생각이다. 티스토리도 찾아봤는데, 구글 검색이 원활하지 않다는 게 좀 걸리고, 네이버는 키자드라는 사이트를 통해 등록도 해봤는데 검색 연결이 안 되더라. 그래서 전체적인 걸 고려해서 velog 쪽으로 생각을 정했다. 네이버 블로그는 나의 일상, 독서 일기, 소소한 푸념, 공상 그리고 두서없이 쓴 내가 보려고 남겨놓은 개발 공부들로 채울 것이고 Velog는 시작하게 되면 조금 더 전문적으로 개발 분야만 잡고 해보려고 한다.

[인문] 지루하면 죽는다 를 읽고 [내부링크]

작가... 죽는다? 지루하면 죽는다니? 제목이 호기심을 자아내서 읽게 되었다. 읽어보니, 작가들을 위한 책이라는 느낌이 들어서 "어..? 이거 잘못 골랐나..? " 싶었는데 막상 읽어보니 작가가 아니어도 그냥 인간의 심리에 대해 다루고 있어서 심리학 저서라고 봐도 무방할 것 같다. 실제로 저자인 조나 레러가 신경과학 + 문학을 전공한 사람이라고 한다. 무튼 책을 읽으면서 제목이 지루하면 죽는다인데 이 책이 지루하면 어쩌지? 걱정했는데 책이 지루하지는 않았다. 다행이라고 해야 할까..? 간단히 이 책의 핵심을 생각해보면, " 우리는 불확실성에 끌린다. " 이다. 실제로 그렇느냐고 생각하면 실제로 그렇다. 책에 나온 내용을 바탕으로 설명해보자면, 결과가 불확실한 스포츠가 결과가 확실한 스포츠보다 더 재밌다. 이를 테면, 한 팀이 독주하는 스포츠는 상대적으로 인기가 떨어질 수 밖에 없다. 예측이 가능하기 때문이다. 더 정확히 말하면 " 경기를 보기 전에 이미 결과가 예상이 가는 경우이다.

공부 시간 측정 어플안녕.. ( feat. 아이폰 버그 ) [내부링크]

자꾸 앱 충돌이 나서 기록이 안 되고 휴대폰이 튕기고 하길래 이제 어플을 지우기로 한다. 그리고 공부 시간 재는 건 허상같다는 생각이 든다. 앞으로는 그냥 얼마나 했느냐만 체크하고 컴퓨터 타이머 어플만 잘 써가면서 속도만 높이자

내일배움카드 발급받다. [내부링크]

그렇게 발급받아야지, 발급받아야지 생각만 하고 아직 발급을 받지 않았던 내일배움카드를 발급받았다. 언제 어떤 일이 생길 지 모르니 학원 다니기 전에 발급받아야지 생각만 했는데 이제서야 발급을 받으니 속이 후련하다. 나는 HRD-NET을 통해서 미리 발급신청을 했었고, 사실 발급 신청은 6개월 전에 했는데 이제서야 찾으러 갔다는 표현이 맞겠다. 무튼 나는 휴면계좌를 풀어서 그 계좌를 연동시킨 내일배움카드를 발급받았다. 발급 지점도 HRD-NET에서 검색 가능하고 난 가장 가까운 신한은행 지점을 찾았고 발급까지는 한 20~30분 정도 소요된 것 같다. 뭐 여러가지로 생각해 둔 건 있지만, 하반기에는 국비학원을 다니든 부트캠프를 다니든 둘 중 하나는 다녀야겠다는 생각이 명확하므로 일단은 둘 다 염두에 두고 준비해야하지 않나 싶다. 뭐 하루하루 일단은 열심히 살아야지.

6월 30일까지 스스로 평가 후, 개발을 포기하겠다. [내부링크]

독학러로서 목표의식이나 위기감 없이 현실에 안주하며 공부하는 건 최악 중의 최악이다. 이 글은 내가 남겨두고 2024년 6월 30일에 확인하고 리뷰할 것이다. 결론부터 말하자면, 앞으로 6월 30일까지 독학으로 공부해보고, 내가 생각한 기준에 도달하지 못하면 그냥 개발을 포기하고 다른 살 길을 찾아 떠나려고 한다. 길은 개발에만 있는 건 아니니까 개발자에게 필요한 건 적성과 재능이라고 생각한다. 뭐, 세상에 재능없이 이루어지는 분야는 없으니 너무 당연한 말이기도 하다. 그만두면 뭘 할지는 아직 잘은 못 정했는데, 공장을 다니면서 전기기사 공부를 하면서 돈을 일단 모을 생각이다. 세상에 돈 없이 할 수 있는 건 없으니깐 만약 6월 30일까지 목표를 달성한다면 집 근처 국비학원 얌전히 다닐 생각이지만, 못하면 그냥 개발 그만두고 공장 들어가서 돈 벌면서 전기기사 자격증 준비하련다. 수도권 취업하는 게 목표이기도 하고, 좋은 국비학원이 수도권에 다 몰려있다고 해서 현실적으로 수도권이나 서

[소설] 히가시노 게이고 - 허상의 어릿광대를 읽고 [내부링크]

이번 작품은 내가 알기로는 한국에 출판된 갈릴레오 시리즈의 마지막 편인 허상의 어릿광대였다. 허상의 어릿광대는 단편 7장으로 이루어진 작품이었다. 이상하게 단편 7개라 그런가..? 이상하게 다 읽고나면 내용이 기억이 안 난다. 분명 재미있었고, 킬링타임용으로는 충분하다는 생각은 들지만 뭐랄까 단편들이 모여서 이루어진 만큼 각 장마다 연결이 없어서 서사라든가 트릭이라든가를 표현하기에는 아무래도 조금 짧지 않나 하는 생각이 든다. 내용을 간단히 말하면 각 장마다 사건이 벌어지고, 그 사건을 추리하면서 전개된다는 점에서 이전 작들과 같다. 다만, 단편이다보니 편마다 과학적인 접근이 많이 들어가는 장이 있고 적게 들어가는 장이 있는데 앞쪽 장들은 과학적인 내용인 염력 트릭, 환청 트릭, 투시 트릭을 과학적으로 설명하려는 내용이었다면 뒤의 장들은 과학보다는 인간의 감정에 대한 내용을 다룬다. 책 내용인 허상의 어릿광대는 7장에 나오는 사건을 보며, 인간들은 허상을 쫓으니 그걸 허상의 어릿광대

비바튜브의 2023년 연말결산, 2023년을 돌아보며... [내부링크]

안녕하세요, 비바튜브입니다. 어느덧 2023년 12월 31일, 바야흐로 2023년의 마지막 날이 되었네요. 2023년 잘 가. 이리저리 파란만장한 한해였던 것 같습니다. 대학을 졸업하고 과연 내가 뭘 해야 하지? 고민과 고뇌로 가득차있던 그 시기에, 문득 지금처럼 백수에다가 아무 것도 잃을 게 없을 때 떠나지 못하면, 나중에 잃을 게 많아지면 도전을 아예 못할 거라는 생각이 문득 들어서 행복해지고 싶다는 생각 하나만으로 배낭 하나 들쳐메고, 제가 열심히 알바해서 모아둔 돈을 다 쓸 생각으로 유럽행 비행기에 올랐습니다. 떠나기 전, 했던 수많은 고뇌들이 무색하게 비행기에서 땅을 내려다 볼 때 잘 떠나왔구나.. 라는 생각을 불현듯 했던 것 같아요. 장거리 비행으로 지쳐서 잠에 들었다 우연히 깨어서 바라본 창 밖에 매료되어 바로 사진을 찍을 수 밖에 없었어요. 결과적으로 유럽 여행과 워홀 기간 동안 블로그에 지금의 제가 바라본 기억을 남기고 싶어서 하나하나 블로그에 글을 적어왔던 게, 세

자바의 정석 7장 - 추상클래스 [내부링크]

클래스는 객체를 생성하기 위한 설계도임을 배웠다. 그렇다면 추상 클래스라는 게 정확히 어떤 것이고, 왜 필요한지, 또 어느 상황에 사용되는지에 대해 알아보자. 추상 클래스 : 미완성 설계도. 정확히 말하자면 추상 메서드를 포함한 클래스를 말한다. 추상 메서드 : 몸통인 {}, 즉 구현부가 없는 메서드를 말한다. Q1. 추상 클래스로 인스턴스를 생성할 수 있을까? 미완성 설계도로 부품을 만들 수 없듯이 추상 클래스로는 인스턴스 생성이 불가능하다. Q2. 그렇다면 추상 클래스를 왜 사용하는 걸까? 추상 클래스의 궁극적인 목적은 " 다른 클래스 작성에 도움을 주기 위해서이다. " Q3. 추상 메서드는 왜 사용하는 것일까? 꼭 필요하지만 "자손마다 다르게 구현될 것으로 예상되는 경우에는" 추상 메서드를 사용한다. Q4. 추상 클래스를 완성하고 싶다면? 반드시 "상속"을 통해서 "자손클래스"에서만 완성될 수 있다. 추상 클래스, 추상 메세드 앞에 붙는 제어자 : abstract 간단한 추상

자바의 정석 7장 - 인터페이스(1) - 개념,규칙,상속,구현,다형성 [내부링크]

앞에서는 추상 클래스에 대해 배웠다면, 이번에는 인터페이스에 대해 배워보자. 인터페이스 : 추상 메서드의 집합이다. 추상 클래스를 부분적으로만 완성된 '미완성 설계도'라 한다면, 인터페이스는 완성된 게 하나도 없는 ' 기본 설계도 ' 가 되는 것이다. 인터페이스를 배우면서는 추상 클래스와 비교하면서 인터페이스의 특징에 대해 알아보도록 하겠다. interface 인터페이스이름{ public static final 타입 상수이름 = 값; // 상수 public abstract 메서드이름(매개변수목록); // 추상 메서드 } 위와 같은 꼴이 인터페이스의 기본적인 형태라고 할 수 있겠다. " 추상 메서드의 집합이라면서..? 왜 상수가 있는 거지? " 생각이 들 수도 있지만 추상 메서드의 집합이라는 게 인터페이스의 "핵심 개념"이지, 추상 메서드밖에 없다는 소리는 아니다. 헷갈려서는 안 된다. 위의 코드에는 인터페이스의 멤버들에 대한 제약사항이 다 드러나있다고 볼 수 있다. 인터페이스의 멤버

공부 방법 수정하기. ( 블로깅에 집착 x, 본질에 집중하기. ) [내부링크]

anki 학습 시 적으면서 하지 말고, 머릿속으로 돌리기. [ 시간이 2배 정도 차이나는데, 효율의 유의미한 차이는 없음 ] 2. 블로그에 공부 내용 적는 건 좋은데, 전체적인 진도 빠르게 다 나간 후 기록하기. [ 너무 보여주기 위한 느낌이 강하고, 주객이 전도된 느낌. 분명 이해도에 도움은 되지만, 그만큼 시간이 더 소요되니 무의미하다고 느낌 ]

내가 보려고 만든 인터페이스의 장점과 이해의 코드 분석. [내부링크]

class RepairableTest { public static void main(String[] args) { Tank tank = new Tank(); // 최대 체력 150, 현재 체력 150 Dropship dropship = new Dropship(); // 최대 체력 125, 현재 체력 125 Marine marine = new Marine(); // 최대 체력 40, 현재 체력 40 SCV scv = new SCV(); // 최대 체력 60, 현재 체력 60 // 코드를 짜는 입장에서, 각 유닛의 최대 체력은 변경되면 안되지만, 객체 종류마다 달라야 한다. // 그렇기 때문에 최대 체력을 객체마다 생성자를 통해 초기화하도록 했다. ( 초기화 된 이후는 변경 불가, final 이니 ) // 반면 현재 체력은 상수가 아닌 변수이므로 추후에 변경이 가능하게 했다. scv.repair(tank); scv.repair(dropship); // scv.repair(marine);

내가 보려고 만든 디폴트 메서드와 static 메서드 - 코드 분석 [내부링크]

interface MyInterface{ // method()와 newMethod()는 추상메서드 void method(); void newMethod(); } interface MyInterface{ // method()는 추상메서드지만 newMethod()는 디폴트 메서드. void method(); default void newMethod() {} } 디폴트 메서드는 인터페이스에 추가되더라도, 인터페이스를 구현한 클래스를 수정할 필요가 없음. 반면, 인터페이스에 추상 메서드를 추가하면, 인터페이스를 구현한 클래스에서 추가한 추상 메서드도 구현해줘야 함. 예제 실험 코드 결과 class DefaultMethodTest { public static void main(String[] args) { Child c = new Child(); c.method1(); c.method2(); MyInterface.staticMethod(); MyInterface2.staticMethod();

내가 보려고 만든 내부 클래스, 익명 클래스 - 코드 분석 [내부링크]

case1) 두 클래스가 분리되어 있음. class A{ ... } class B{ ... } case2) 한 클래스가 다른 클래스의 "내부"에 들어가 있음. class A{ ... class B{ ... } ... } case2에서 클래스 A : 클래스 B의 외부 클래스 클래스 B : 클래스 A의 내부 클래스 장점: 클래스 B에서 클래스 A의 멤버를 가져다 쓰기 편함. 클래스 B를 외부로부터 캡슐화. ( B에 접근하려면 A를 거쳐야 함 ) 내부 클래스의 종류: 1) 인스턴스 내부 클래스 2) 스태틱 내부 클래스 3) 지역 내부 클래스 4) 익명 내부 클래스 class Outer{ class InstanceInner{} // 클래스 영역내에 선언되고 static이 안붙었으니 인스턴스 내부 클래스 static class StaticInner{} // 클래스 영역 내에 선언되고 static이 붙었으니 스태틱 내부 클래스 void myMethod() { class LocalInner{}

[소설] 히가시노 게이고 - 한여름의 방정식을 읽고 [내부링크]

이번에는 히가시노 게이고의 한여름의 방정식이라는 책을 읽었다. 페이지수가 다른 책보다 많은 느낌이라 좀 오래 걸렸다. 이번 한여름의 방정식이라는 책에는 과학적인 내용보다는, 이전 시리즈와 다르게 유가와의 인간적인 면이 더 드러나는 책이다. 간단한 줄거리는 다음과 같다. 여관을 운영하는 고모네 집에서 잠깐 머무르기 위해 작은 섬으로 기차를 타고 가던 초등학생 교헤이는 객실에서 휴대전화로 통화를 하다가, 객실에 타고 있던 할아버지에게 객실에서는 전원을 끄라는 지적을 받는다. 하지만, 교헤이는 어린이용 휴대전화로 끄는 기능이 없다고 하고 자리에서 일어나서 다른 칸으로 가려고 하는데 맞은편에 앉아있던 과학 잡지를 읽던 남자가 다른 칸으로 갈 필요가 없다고 하고 가지고 있던 알루미늄 호일로 휴대전화를 감싸 버린다. 그 남자의 도움으로 객실을 옮길 필요가 없던 소년은 기차에서 내리면서 그 남자가 자기와 같은 역에 도착했다는 것을 알게 된다. 그 남자는 교헤이에게 혹시 고모네 여관이 어디냐고 묻

자바의 정석 7장 연습문제 1회차 풀기 후기 [내부링크]

음.. 안풀리는데? 이론적인 문제는 헷갈리는 게 있어도 큰 틀은 잡히는데, 막상 설계하려고 하니깐 하나하나 다 헷갈리네. 계속 반복해서 풀어야 할 듯? 어차피 객체지향은 계속 반복해서 보라고 했으니깐 앞으로 계속 진도나가면서 반복해서 봐야 할 듯. 아, 그리고 모르는 건 과감하게 시간 재놓고 답지 보기.

패스트캠퍼스 새해맞이 페이백 이벤트 ~1/7 ( 고민이 된다.. 어떡하지 ) ( 스프링 강의 뭐듣지? ) [내부링크]

자바의 정석 객체지향 개념이 이제 막 끝났고, 사실 자바를 다 끝낸 이후에 스프링을 들어갈 수 있어서 아직 고민할 때는 아니지만 보통 할인은 새해나 연말에나 국한 되니 이벤트 할 때 강의를 사야 할까 고민이 된다. 이런 고민을 하는 이유는 생각보다 들어야 하는 강의는 많은데 금전적으로 여유는 없는 게 바로 취준생이기 때문일것이다... 인프런 30% 할인하던 시기를 놓쳐버려서, 고민하던 찰나에 패스트캠퍼스에 이벤트를 한다는 소식에 나처럼 개발자를 독학으로 준비하는 사람들에게 인강과 금전 고민이 많을테니 공유하고 싶어 가져왔다. 만약에 듣고싶은 강의가 있으면 이 때 들으면 좋을 것 같아서. 200% 페이백이라니 내 시선을 사로잡는다. 쿠폰의 사용 가능 기간은 1월 27일부터 ~ 1월 31일로 굉장히 짧다. 그래서 더 신중해야겠다. 자세한 설명을 보니 일단 1월 7일까지 구매하는 강의는 전부 돈을 풀로 내고 구매하고, 이후에 1월 27일에 발급된 쿠폰 중 하나는 100% 페이백으로 내가

내가 작성한 코드는 어떻게 돌아갈까?- 이클립스 브레이크 모드 사용법 [ 내가 궁금해서 알아옴 ] [내부링크]

객체 지향을 거쳐 예외처리로 오면서 코드가 길어지면서 코드 논리를 따라가다보니 코드가 길어지면서 간혹가다 실행 순서가 헷갈리는 경우가 생겨서 헷갈리는 게 많은데 확인할 방법이 없어서 찾던 중 디버그 모드라는 게 있다는 걸 알게되었다. 스스로 공부하다 한계에 부딪힐 때 독학러로서 유튜브, 구글링이 있는 건 엄청난 도움이 된다. 구글링을 아무리 해봐도 내가 프로그램 설정을 이상하게 한 건지, 디버그 모드 창이 이상하게 뜨고 저 왼쪽 창밖에 안 떠서 방법을 찾다가 도저히 모르겠어서 일단은 perspective를 reset하니 겨우겨우 남들이랑 비슷한 형태로는 뜨는 듯..? 근데 난 이상하게 Degug as를 눌러도 Confirm Perspective Switch가 안 뜬다. ㅠ 뭐 나중에도 안 되면 아예 이클립스를 갈아엎어야 할듯. 무튼 이게 breakPoint 지정 없이 그냥 실행할 때, 디버그 모드로 해도 똑같이 처음부터 끝까지 다 실행이 된다. 브레이크 포인트 지정 없을 때는 , 디

공부방법을 꾸준히 고민하자. ( 절대 만족하지 말것 ) [내부링크]

공부 시간을 확보하는 건 정말 기본중의 기본이다. 공부를 오래 한다고 이 정도면 충분하겠지? 절대로 생각하지 말고 그런 생각이 들 때 남은 해야할 일을 생각하자. 오늘 공부 많이해도 언젠가 못할 날을 대비해서 더 많이 하자 하루하루 충실히 사는 건 중요하지만, 결국 취업시장에서 내가 판단 받는 건 하루하루 열심히 살았느냐가 아닌 그렇게 열심히 산 하루하루가 모여 이루어진 결과물이다. 이게 공부를 계획적으로 또 효율적으로 해야하는 이유이다. 그리고 무엇보다 항상 겸손하게 공부해야 하되, 자기 비하에 빠지면 안된다. 자기 비하에 빠지면 될 공부도 안 되고, 풀릴 문제도 안 풀린다. 그리고 1회독을 느리고 진득하게 할 지 vs 대충 보는 느낌이라도 빠르게 회독을 반복할지 고민해봤는데 지금은 무조건 빠르게 회독하는 게 낫다는 입장이다. 이해도는 어차피 1회 때 아무리 열심히 봐도 100%까지 절대 못 채우고 반복해서 볼 때 점점 올라간다고 생각하자.

개발 공부 접고 공무원 준비.. 방황하는 곧 29살 백수 [내부링크]

요새 개발자가 500:1이라는 말도 들리고, 취업난이라는 말이 들린다. 이미 개발자의 길로 발을 들여놨는데 어떻게 헤쳐나가야 할까 요새는 좀 울적하다. 사실 그래서 오늘 공무원 시험 관련 책도 주문하고, 강의도 신청했었다. 강의는 환불했고, 책은 환불도 안 되고 그냥 가지고 있을 예정이다. 나는 응시하게 되면 전산직으로 응시하려 했는데, 당장은 국가직은 3개월 지방직은 6개월 남았다고 해서 현실적으로 노베이스인 내가 안정적 합격권에 들긴 힘들다는 생각이 들어서 그냥 쭉 개발자 공부를 하기로 마음을 다시 다잡았다. 게다가 난 자격증이 없어서 가산점 5%면 총점 25점이 마이너스 된 상태로 경쟁이니깐... 6개월만에 1년 넘게 공부한 공시생들을 총점 25점 이상 앞서는 건 말도 안된다는 걸 깨달아서 그냥 얌전히 개발공부 해야겠다. 1년의 기간이 남았으면 전산직 공무원 준비를 해 볼 텐데 2025년부터는 유형도 바뀐다고 하니, 6개월 준비해서 떨어지면 정말 남는 게 없어서 힘들어도 개발해

방황하는 곧 29살 백수의 일탈일기. 세상에 쉬운 일이 없구나. [내부링크]

안녕하세요, 비바튜브입니다. 최근에는 공부를 해도 제대로 집중도 안 되고 다른 길로 가야하나 고민만 되고 정신적으로 좀 힘들고 개인적으로 슬럼프가 벌써 찾아온 것 같습니다. 개발자 취업시장도 얼어붙었다는 말밖에 없고, 앞으로는 더 레드오션이라고 해서 진지하게 요 며칠간 주로 고민만 하면서 시간을 보냈던 것 같아요. 그래서 요 며칠간 정말 비전공자 백수가 할 수 있는 직업이 뭐가 있을까 정말 정말 다 찾아봤던 것 같아요. 안정적인 직업을 갖는 게 중요하지 않을까 싶어서 공무원 시험에 대해서도 많이 찾아봤는데, 다양한 직렬이 나오는데, 그 중에 가장 적성에 잘 맞을 것 같은 건 전산 직렬이더라고요... 근데 지금이 벌써 23년 12월 말이고, 국가직은 당장 3개월 뒤, 지방직은 6개월 남은 상황인데다가 2025년부터는 영어, 국어가 ncs식으로 바뀐다는 얘기를 들어서 과연 내가 할 수 있을까 생각을 많이 해봤어요. 그래서 유튜브로 전산직 공무원 관련된 글들, 블로그 글들, 전산직 뿐만

곧 29살이 되는데 아직도 백수인 나의 솔직한 인생 일지 ( 우울증, 히키코모리 ) [내부링크]

곧 2024년이 된다. ( 세상에나.... 시간이 나이 먹을 수록 빨라지는 것 같다. ) 안 사요..... 만 나이가 도입되었다고는 하지만, 그래도 모두가 아직은 한국식 나이를 쓰고 있다. 나는 어렸을 때부터 25살이 되고 싶었다. 왠지 모르게 어릴 때는 막연하게 20살은 좀 어린 것 같고, 25살이 되면 완전히 성숙한 어른이 되어 취업은 아니더라도 멋진 어른이 되어 있을 것 같았다. 근데 현실은.... 그냥 나이만 먹은 백수가 되었다. 이럴수가.... 아니지, 엄밀히 말하면 네이버 애드포스트를 통해 월평균 무려 3000원의 수익을 올리고 있는 블로거이다. 하하하하 하하하... 하하.... ㅎ.. ㅠ 어쩌다 이렇게 됐지? 나도 잘 모르겠다. 그냥 흘러가는대로 살다보니 이렇게 됐는걸? 하하.... 인생은 선택의 연속이라는데, 나의 선택이 문제가 아니었을까 싶다. 2번째 수능을 끝낸 후, 정신적으로도 육체적으로도 이미 한계에 부딪힌 나는 어느 대학 어느 과를 갈 지 정해야했다. 당시 정

[소설] 히가시노 게이고 - 탐정 갈릴레오를 읽고 [내부링크]

[ 대략적인 줄거리 ] 출처 : https://namu.wiki/w/%EA%B0%88%EB%A6%B4%EB%A0%88%EC%98%A4%EC%9D%98%20%EA%B3%A0%EB%87%8C 1. 떨어지다 독신 여성이 아파트 7층에서 "추락"사하는 사건이 발생한다. 현장을 둘러본 경시청 수사 1과의 여형사 우쓰미 가오루는 피해자의 연인이 범인이라고 직감하지만, 사건 당시 범인이 빠져나갈 수 있는 유일한 통로인 아파트 현관 앞에 있었던 사람들이 아무도 지나가지 않았다고 증언함으로써 사건은 미궁에 빠진다. 범인이 물리적인 장치를 이용해 피해자의 사체를 아파트 베란다에서 떨어뜨렸다고 생각한 우쓰미는 구사나기의 소개장을 들고 유가와 교수를 찾아가 도움을 청하지만 유가와는 한사코 협조를 거절한다. 그러나 가오루가 한가지 가능성을 제시하자 호기심이 동한 유가와는 단순한 트릭설계라며 가오루와 함께 시한 추락장치를 만들어 경찰에 제출하는데.... 2. 조준하다 데이도 대학 이공학부 조교수로 재직할 당

비상.. 비상... 비상!! 토익 어떡하지?( 토익 고득점 방법, 토익 공부법, 토익 꿀팁 ) [내부링크]

제목은 함정이었습니다..!! 전 토익 700도 안 나오는 걸요???? 하하하하 백수 탈출을 목표로 하고, 코딩 공부를 하면서 어차피 개발자라면 구글링을 하려면 영어 문서도 많이 봐야하기도 하고, 영어를 잘하면 개발 공부를 하는 데 있어서 길게 봤을 때 큰 자산이 되지 않을까 싶어서 그리고 무엇보다... 영어만 잘해도 나중에 굶어죽지는 않겠다는 막연한 생각이 들어 토익 공부를 시작하기로 했다. 물론 스피킹이 더 중요하지만.. 난 당장 영어 문서를 읽거나 영어로 개발 관련 유튜브를 보고 싶은데 그게 잘 안되니깐 답답한 게 좀 커서 일단 토익으로 리딩이랑 리스닝부터 시작하기로 했다. 아니 근데 오랜만에 영어 듣기랑 리딩을 시작하려니까... 이거 보면서 웃었던 게 엊그제 같은데, 더 이상 웃을 수 없는 기분이 든다. 그래도 내가 스피킹은 한국말도 잘 못하지만, 리딩이랑 리스닝은 나름 좀 했었는데.... 지금 와서 생각해보니 그냥 수능 특강이랑 수능 완성을 다 외워서 그냥 운 좋게 성적이 나

메리 크리스마스! ( 산타 비바튜브, 기부하는 이유, 해피빈 기부, 100% 전달하는 기부 ) [내부링크]

나는 어릴 때 집이 가난해서 나라에서 주는 복지쿠폰으로 김밥천국 같은 데서 방학 때 종이 쿠폰을 들고 가서 밥을 얻어먹으며 자랐다. 이번 크리스마스 때 꼭 기부하고 싶었다. 백수라서 안하면 앞으로도 영원히 안할 거 같아서 난 어릴 때 크리스마스 때 뭘 받아본 기억이 없는데 그래도 이런 기부가 모여서 지금은 조금 어려운 사람들도 행복하게 따뜻하게 보내면 좋겠다. 그럼 이만 p.s. 네이버 해피빈에 100% 기부 있으니 관심있으신 분들은 찾아서 해보시길 아 그리고 자꾸 기부단체에서 횡령 하지 맙시다 인간적으로....

[사회] 고통 구경하는 사회를 읽고 [내부링크]

나는 독서를 하기로 결심하면서 정한 대원칙이 있다. 최대한 다양한 책을 읽어보는 것이다. 이번에 읽은 고통 구경하는 사회라는 책은 기자분이 쓴 책이다. 나 같은 경우는 사실 기사를 자주 보는 편은 아니다. 작가님이 글에서 쓰신 말처럼 나 역시도 기자에 대한 이미지가 솔직히 좋은 편은 아니기 때문이다. 기자라는 직업이기 이전에, 결국은 한 인간으로서 수익을 얻고 직업 활동을 해야 하니 어쩔 수 없이 기사를 자극적으로 쓸 수 밖에 없을 테고, 또 사람이다 보니 완전히 중립을 지켜서 글을 쓰기는 어려울 거라는 건 알지만 말이다. 이 책은 저널리즘에 대해 기자로 일하는 작가님이 직접 스스로 성찰하고 고뇌한 흔적이 느껴지는 책이다. 기자라면 사회에 메시지를 던지기 위해 조금 더 자극적인 자료를 쓰는 것이 맞을까 혹은 메시지 전달력이 떨어지더라도 자극적인 내용을 감추는 것이 맞을까 기자라는 직업도 결국은 해당 신문이나 언론 매체를 봐 주는 사람들이 있어야 광고 수익으로 직업을 유지할 수 있기

[소설] 마지막 마음이 들리는 공중전화를 읽고 [내부링크]

이번에 읽은 책은 마지막 마음이 들리는 공중전화라는 소설이다. 다소 판타지적인 느낌이 드는 제목이어서 흥미가 동해서 읽게 되었다. 책의 간단한 내용은 다음과 같다. 지안은 자살 후 남은 유가족들을 상담해주고, 또 자살한 사람의 심리부검을 진행하는 상담사이다. 지안이 그러한 상담사일을 시작하게 된 데는, 자신의 아버지가 사고로 예기치못하게 세상을 떠난 데에 있었다. 지안과는 함께 일하는 상우가 있는데, 상우 역시 갑작스러운 아버지의 사망을 겪고, 스스로 자살 시도를 하다 정신병동에 입원한 적이 있지만 지안을 만나서 서로 의지하면서 살아가는 상담 센터의 직원이다. 이 책은 지안과 상우의 상담센터로 유가족들이 도움을 요청하면서 진행된다. 이 심리부검센터에는 다양한 사람들이 찾아온다. 그럴 때마다 지안은 큰 감정 동요 없이 적당한 정도로 그들의 얘기를 들어주고, 그저 들어준다. 특이한 점이 있다면 소설의 제목처럼 자살한 시간에 공중전화로 전화를 걸면 자살자가 남긴 마지막 마음을 들을 수 있

비바튜브의 [ 비전공자가 개발자가 되기 위한 현실적인 목표수립. ][ 개발자가 되고 싶은 사람이 보면 도움이 될지도..? ] [내부링크]

지금 나는 슬럼프 상태에 있다. 슬럼프라는 건 반드시 찾아올 수 밖에 없는 과정이라고 생각한다. 열심히 하지 않으면 슬럼프도 안 온다. 그건 그냥 무기력한거다. 내가 그 누구보다 무기력하게 살았기에 잘 안다. 잠시 숨을 고르고 현재 나의 문제가 무엇인지, 왜 슬럼프에 빠졌는지, 어떻게 이 상황을 타개할 지 바라봐야 한다. 핵심은 언제부턴가 모르게 슬럼프가 일상생활 내내 계속 이어지고 있다는 것이다. 지금의 나에게 있어 슬럼프라는 건 열심히 하지 않는 상태가 아니다. " 심리적 불안으로 인해 쓸데 없는 걸 이것저것 찔러보기를 열심히 하기 시작한 상태 " 라고 하면 정확할 것 같다. 슬럼프 더 이상은 NAVER인데.... 내가 왜 슬럼프라고 느끼느냐.. 그것은 토익 공부나, 공무원 시험 준비, 전기기사, 기타 등등 취업만 할 수 있다면 온갖 다양한 곳으로 눈을 돌리고 있다는 걸 자각하기 시작했기 때문이다. 정신을 차려보니 토익 책을 이미 주문한 상태였고, 야무지게 컴활이랑 한국사까지 딸

자바의 정석 7장 - 제어자, 접근제어자 [ 캡슐화 전까지 ] [내부링크]

이번에는 제어자에 대해 학습해보자. 제어자 : 클래스, 변수 또는 메서드의 선언부에 함께 사용되어 부가적인 의미를 부여한다. 제어자의 종류는 크게 접근 제어자와 그 외의 제어자로 나눌 수 있다. 접근 제어자 : private, protected, default, public 그 외 제어자 : static, final, abstract, ... ( 기타 다른 제어자는 추후에 다룬다고 한다. ) 제어자는 순서 상관 없이, 하나의 대상에 대해 여러 제어자를 조합해서 사용하는 것이 가능하다고 한다. 단, 제어자 중 접근 제어자는 네 가지 중 하나만 선택해서 사용할 수 있다. [ 보통 제어자들의 순서는 관계없지만 접근 제어자를 제일 왼쪽에 놓는 게 관례상 보통은 그러하다 . ] 그 외 제어자 중 3가지 static, final, abstract에 대해 알아보자. static 제어자 : static은 클래스의, 공통적인 이라는 의미를 가지고 있다. static이 사용될 수 있는 곳 - 멤버변수

[과학] - 어느 칠레 선생님의 물리학 산책을 읽고 [내부링크]

나는 물리학을 좋아하거나 물리학에 지식이 있는 것도 아니지만, 어쩌다보니 이번에는 어느 칠레 선생님의 물리학 산책이라는 책을 읽게 되었다. 페이지로는 아이패드 기준으로 500 페이지로 나오는데, 아무래도 장르가 물리학이고 어려운 물리학 내용을 아무리 쉽게 풀어써줘도 이게 눈으로는 들어오는 데 뇌에서 저장하는 작용까지는 이루어지지 않는 건지 읽어도 과학적인 내용들이 거의 기억이 나지 않는다. 아마 내 무의식 어딘가에 차차 쌓이지 않을까 생각한다. 이렇게 쌓여있는 지식들은 언젠가 내가 물리에 대해 공부할 때가 되면, 왠지 모르게 익숙하고 어디서 본 거 같아서 학습하기 수월해졌으면 좋겠다. 이 책의 칠레의 물리학 선생님이 물리학에 대한 대중들의 두려움을 없애기 위해서 썼다고 했는데, 나는 이과생이었는데도 불구하고 물리에 대한 두려움이 생길 거 같은 책이었다. 분명히 쉽게 설명하려고 노력하신 건 알겠지만 아무래도 일상생활에서 접할 수 있는 주제가 아니어서 어쩔 수 없나보다. 일상에서 우리가

자바의 정석 7장 - 캡슐화 + 접근 제어자의 조합 정리. [내부링크]

이번에는 접근 제어자의 조합에 대해서 다시 한 번 정리하고, 캡슐화에 대해 간략하게 알아보고 넘어가자. 접근 제어자를 사용하는 이유 : 외부로부터의 데이터를 보호하기 위해서 + 외부에는 불필요한 내부적인 내용을 감추기 위해서 캡슐화 : 접근 제어자를 통해 외부로부터의 접근을 막는 것을 우리는 캡슐화라고 한다. 접근 제어자의 범위는 최소화일수록, 디버깅에도 또 메서드 변경 후 테스트에도 용이하다. ( 이는 public이면 전부 다 살펴보아야 하고, default라면 패키지 내부만, private이면 클래스 하나만 살펴봐도 되기 때문이다. ) 예제 코드를 통해 알아보자. public class Time { // public 클래스에 public 변수인 경우 public int hour; // 시간이니까 0 ~ 23 public int minute; // 분이니까 0~59 public int second; // 초니까 0~59 // 이는 24시 60분 60초라고 안하는 이유와 같다. }

자바의 정석 7장 - 다형성과 참조변수의 형변환 [내부링크]

드디어 다형성이라는 개념의 시작점에 도달했다. 먼저 개념을 알아보자. 다형성 : 조상 클래스 타입의 참조변수로 자손 클래스의 인스턴스를 참조할 수 있도록 하는 것. 코드를 통해 알아보자. // 다형성에 대해 알아보자. class Tv { boolean power; // 전원상태 on off int channel; // 채널 void power() { power = !power; } void channelUp() { ++channel; } void channelDown() { --channel; } } class CaptionTv extends Tv { String text; // 캡션을 보여주기 위한 문자열 void caption() { /* 내용 생략 */ } } 그림으로 그린다면 이런 그림이 나올 것이다. Tv 클래스는 조상 클래스, CaptionTv 클래스는 자손 클래스가 된다. 그렇다면 객체를 생성하고 참조변수를 만들면 어떻게 될 지에 대해서도 생각해보자. Tv t = new

자바의 정석 7장 - instanceof 연산자에 대한 내 생각 ( feat. 수학의 함수 ) [내부링크]

앞서서는 참조변수의 형변환에 대해서 배워봤었다. 이번에는 instanceof 연산자에 대해서 알아보자. instanceof 연산자 : 참조변수가 참조하고 있는 인스턴스의 실제 타입을 알아보기 위해 사용한다. 주로 조건식에 사용하며, instanceof의 왼쪽에는 참조변수, 오른쪽에는 타입(클래스명)이 피연산자로 위치한다. 연산의 결과로는 boolean 값인 true와 false중의 하나를 반환한다. 결과 해석은 instanceof를 이용한 연산결과로 true를 얻을 경우 참조변수가 검사한 타입으로 형 변환이 가능함을 의미한다. [참고] 값이 null인 참조변수에 대해 instanceof 연산을 수행하면 false를 결과로 얻는다. 값이 null인 참조변수에 대한 instanceof 연산의 결과가 false인 이유에 대해 찾아봤는데, null은 어떤 클래스나 인터페이스의 인스턴스가 아니기 때문이라고 한다. 아직 인터페이스를 안 배웠으니 너무 깊이 파고들지는 말고, null은 그냥 결과

[소설] 히가시노 게이고 - 성녀의 구제를 읽고 [내부링크]

탐정 갈릴레오, 예지몽, 용의자 x의 헌신에 이은 탐정 갈릴레오 시리즈 4권 성녀의 구제를 완독했다. 저번 용의자 x의 헌신에서는 유가와 교수의 친구 천재 수학자 이시가미가 사랑하는 사람을 지키기 위해서 모든 죄를 다 자기탓으로 돌리고, 보호해주기 위해서 자신의 손까지 더럽혔다면 이번 성녀의 구제에서는 유가와의 친구이자, 갈릴레오 시리즈의 주인공 중 한 명인 형사 구사나기의 사랑에 대한 이야기가 나온다. 줄거리는 간단히 이렇다. 아이만을 원하는 남편과 결혼한 아야네는 결혼 후 1년 간 아이가 생기지 않으면 헤어지자고 말하는 남편이었지만, 혹시 아이가 생기지 않아도 자신과 계속 결혼 생활을 유지하지 않을까 하는 일말의 기대감을 품고 결혼 생활을 했다. 그러던 어느 날, 남편이 자신의 제자인 히로미와 불륜 관계에 있다는 걸 눈치채고, 이내 자신에게 아이가 생기지 않았으니 약속대로 헤어져줬으면 좋겠다는 말을 듣는다. 그 말을 듣는 순간, 자신이 1년 동안 계획해 온 범행을 실행에 옮기기로

자바의 정석 7장 -참조변수와 인스턴스의 연결 ( 강의없는 걸 보니... 보너스 느낌인가? ) [내부링크]

이번에는 참조변수와 인스턴스의 연결에 대해 가볍게 훑고 넘어가자. 강의에 참조변수와 인스턴스의 연결에 대한 설명은 없는 걸 보니, 그다지 중요하지 않은 부분이거나.. 어렵거나... 쭉 읽어봤는데, 3페이지 동안 핵심 내용은 다음과 같다. 멤버 변수가 조상 클래스와 자손 클래스에 중복으로 정의된 경우에, 조상 타입의 참조변수를 사용했을 때는, 조상 클래스에 선언된 멤버변수가 사용되고 자손 타입의 참조변수를 사용했을 때는, 자손 클래스에 선언된 멤버변수가 사용된다. ( 그렇지만 중복 정의되지 않은 경우에는 차이는 없다. why? 어차피 하나밖에 없잖아... ) 메서드의 경우에는 조상 클래스의 메서드를 자손 클래스에서 오버라이딩 한 경우에, 참조 변수의 타입과 관계없이 항상 실제 인스턴스의 메서드( 오버라이딩된 메서드) 가 호출된다. class BindingTest { public static void main(String[] args) { Parent p = new Child(); Ch

자바의 정석 7장 - 매개변수의 다형성 [내부링크]

이번에는 매개변수의 다형성에 대해서 알아보자. 매개변수의 다형성 앞에서 다형성이라는 것은 " 조상 타입의 참조 변수로 자손 타입의 객체를 다루는 것 " 이라고 배웠다. 다형성의 장점 2가지 중 한 가지가 바로 다형적 매개변수를 이용하는 것이라고 한다. 이게 무슨 소리일까...? 하나만 알고 넘어가자. " 참조형 매개변수는 메서드 호출 시, 자신과 같은 타입 또는 자손 타입의 인스턴스를 넘겨줄 수 있다. " 코드를 통해 알아보자. class Product { // Product 클래스 int price; // 제품의 가격 int bonusPoint; // 제품 구매 시 제공하는 보너스 점수 } class Tv extends Product {} // Tv 클래스는 Product 클래스를 상속받는다. class Computer extends Product {} // Computer 클래스는 Product 클래스를 상속받는다. class Audio extends Product {} // A

자바의 정석 7장 - 여러 종류의 객체를 배열로 다루기 [내부링크]

저번에는 다형성의 장점 중 한 가지인 매개변수의 다형성에 대해서 배웠었다. 이번에는 다형성의 장점 2번째, 여러 종류의 객체를 배열로 다루기에 대해 배워보자. 여러 종류의 객체를 배열로 다룬다는 게 무슨 소리일까? " 하나의 배열에다가 여러 종류의 객체를 저장하겠다는 소리다 " 물론, 엄밀히 말하면 여러 종류의 객체를 참조하는 참조변수들을 배열에다가 심겠다는 얘기겠지만... 항상 말로만 설명하고 이해하는 것보다는 실제 코드로 또 그림으로 이해하는 게 이해도에 큰 도움이 되니깐 코드로 또 그림으로 체험해보자. Product p1 = new Tv(); Product p2 = new Computer(); Product p3 = new Audio(); 전에 배웠던 예제이다. 근데, 같은 Product 타입이라면? 참조변수들을 배열로 만들어도 되잖아? 그리고 참조변수들을 배열로 만든 걸 객체배열이라고 배웠었다. 자 그럼 객체 배열을 만들어보자. Product p[] = new Product[

Chat gpt와의 사투... [내부링크]

하... 챗지피티 참 손이 많이 가는 녀석이다. 챗지피티가 분명 똑똑하긴 한데, 사용하는 사람이 어르고 달래야 한다. 그리고 사전 지식 없이 챗지피티 쓰면 잘못된 정보를 습득하게 될 가능성이 높다. 이 녀석은 오답을 그 누구보다 당당하게 알려준다. 그래서 개인적으로 챗지피티가 물론 큰 틀에서는 도움이 되지만, 결국 구글링으로 확인하고 검토하려면 사전 지식이 어느정도 있어야 하는 것 같다. 나의 결론 챗지피티는 거짓말쟁이

자바의 정석 7장 - 단일 상속과 Object 클래스 [내부링크]

다중 상속 : 또 다른 객체 지향 언어인 C++에서의 여러 조상 클래스로부터 상속받는 것이 가능한 방식. 단일 상속 : 둘 이상의 클래스로부터 상속을 받을 수 없고, 하나의 조상 클래스로부터만 상속받기가 가능한 방식. 자바에서는 ' 단일 상속 ' 만 허용되는 것이 특징이다. class TVCR extends TV, VCR { // 컴파일 에러. 둘 이상의 조상 클래스는 불가능하다. // 자바에서는 오직 단일 상속만을 허용하기 때문 //... } 그렇다면 다중 상속 시 발생하는 문제점에 대해서도 알아볼 필요가 있다. C++ 보다 이후에 등장한 언어가 자바라는 언어이기 때문이다. 문제점이 없었다면, 굳이 다중 상속을 단일 상속으로 바꾸지 않았을 거라는 점은 자명하다. class TV { power() { power = !power; } } class VCR { power() { vcr = !vcr; } } 만일 다중 상속이 가능하다고 가정해보자. class TVCR extends TV,

자바의 정석 7장 - 오버라이딩 [내부링크]

이번에는 오버로딩에 이어서 오버라이딩에 대해서 학습하겠다. 오버라이딩 : 메서드 오버라이딩이라고도 하는데, 조상 클래스로부터 상속받은 메서드의 내용을 자신에 맞게 변경하는 것을 오버라이딩이라고 한다. 표현할 때는 조상의 메서드를 오버라이딩한다고 한다. 바로 코드를 통해 알아보자. class Point { // Point 클래스는 2차원 점의 좌표 int x; int y; String getLocation() { // Point 클래스의 getLocation 메서드, 반환값은 String return "x :" + x + ", y : " + y; } } class Point 3D extends Point { // Point 3D 클래스는 Point 클래스의 자손 클래스, Point 클래스는 Point 3D의 조상 클래스 int z; String getLocation() { return "x :" + x + ", y :" + y + ", z :" + z; // 오버라이딩 } } 위와 같

중대 결심 - 코테랑 알고리즘도 자바로 가겠다. [내부링크]

어제 모기들의 무수한 습격을 받고, 잠을 제대로 못 잔 상태에서 공부를 하려니 집중도 잘 안되고, 그래서 조금 일찍 집에 가서 부족한 수면을 보충해야겠다고 생각하며, 수많은 생각을 해봤는데 알고리즘을 위해 C++을 새로 배우는 게 코테에는 물론 도움이 될 거라는 건 확실하지만, 당장 자바개발자를 꿈꾸는 사람인데 자바 대신 새롭게 C++ 문법을 배우고 C++를 기반으로 알고리즘을 배우고 백준이나 프로그래머스 문제를 푸는 게 백엔드 개발자, 특히 자바 개발자를 꿈꾸는 나에게 옳은 길인가 생각이 들었다. 실제로 하루동안 공부에 투자할 수 있는 시간은 인간이다 보니 모두 최대 24시간, 그 와중에도 인간은 보통 최소 6시간 이상은 수면을 취해야 하고 나 같은 경우에는 최소 7시간은 수면을 취해야 커피 1잔에 함유된 카페인의 양으로도 하루를 통으로 버틸 수 있다는 걸 신체적으로 확인했기 때문에 주 마다 공부를 이어나기 위한 체력 유지에 필요한 운동을 하는 시간과 인간으로서 생존을 이어나가기

자바의 정석 7장 - super와 super() [내부링크]

이번에는 super 와 super()에 대해 알아보자. super : 객체 자신을 가리키는 참조변수이자, 인스턴스 메서드 내에만 존재한다. ( this와 같은 특성 ) 단, super는 자손 클래스에서 조상 클래스로부터 상속받은 멤버를 참조하는 데 사용된다. super는 결국 조상 클래스로부터 상속받은 멤버변수와 자손 클래스의 멤버를 구별할 때 쓰인다고 생각해도 무관하다. super의 간결한 개념은 이렇다. this에 대해 복기하고 넘어가면 this는 인스턴스 메서드 내에 존재하고, 인스턴스 변수 자기 자신을 가리키는 참조변수였다. this를 사용하는 이유는 인스턴스 변수와 지역변수의 이름이 같을 때 구분하기 위해서였다. 코드를 통해 super라는 참조변수에 대해서도 알아보자. class SuperTest { // SuperTest 클래스 public static void main(String[] args) { // 메인 메서드 실행 Child c = new Child(); // C

자바의 정석 7장 - package와 import [내부링크]

이번에는 패키지와 import에 대해 알아보자. 패키지 : 클래스의 묶음, 즉 물리적으로 하나의 폴더이자 디렉토리가 된다. 클래스의 실제이름은 사실 패키지명을 포함한 것이다. 예 : String 클래스라면 실제 이름은 java.lang.String이 된다. 즉, java.lang.String클래스는 물리적으로 java라는 디렉토리의 서브디렉토리인 lang에 속한 String.class 파일이 된다. 마찬가지로 자주 사용하는 System 클래스 역시 java.lang 패키지에 속하므로 lang 디렉토리에 포함되어 있다. 실제로 그런지 확인해보도록 하자. 참고로 클래스 파일들을 압축한 것이 jar파일(*.jar)라고 한다. 근데 JAVA 9부터 없어졌다고 하니깐 그냥 그렇게만 알고 확인해보자. 보면 java라는 패키지안에 lang이라는 패키지가 있다. lang이라는 패키지에 들어가보면 수많은 클래스 중 String이라는 클래스를 볼 수 있다. 그렇다면 이런 패키지의 규칙과 선언법은 무엇

자바의 정석 - 7장 part1 [내부링크]

자바의 정석 6장에서 객체지향 개념을 공부한 건 사실 맛보기 느낌이었다고 생각한다. 왜냐하면 상속, 추상화, 다형성, 캡슐이라는 4가지 개념은 구경도 못했기 때문이다. 7장을 펼치자마자 있는 첫 페이지가 상속에 대한 개념이다 상속이란 뭘까? 상속: 기존의 클래스를 재사용해서 새로운 클래스를 작성하는 것. 상속을 구현하는 법 : 새로 작성하려는 클래스 이름 뒤에 상속받고자 하는 클래스의 이름을 키워드 extends와 함께 써준다. 상속을 해 주는 클래스를 '조상 클래스'라고 하고, 상속을 받는 클래스를 '자손 클래스'라고 한다. 참고 : 조상 클래스의 다른 이름은 기반 클래스, 부모 클래스, 상위 클래스 자손 클래스의 다른 이름은 파생 클래스, 하위 클래스, 자식 클래스 상속 관계에 있는 두 클래스를 그림으로 그리면 Parent ↑ Child 이런 그림이 된다. 자손 클래스는 조상 클래스의 모든 멤버를 상속받는다.( 이 때, 생성자와 초기화 블럭은 제외하고 ) 이렇게가 상속의 개념이라

C언어를 이제 접어야겠다.. 안녕... [내부링크]

프로그래밍 공부를 처음 시작한 언어인 C언어인데, 동적 할당, 구조체, 파일 입출력, 매크로, 형 재정의, 열거형 등등 미진한 부분이 많지만 목표가 자바 개발자이자 백엔드 개발자인데 동적 할당을 풀면서 조금 한계도 느끼고, 결정적으로 현타가 와서 C 개발자를 할 게 아니니깐 C를 이제 접어두려고 한다. 애초에 처음부터 C를 입문할 때 1달간 개념만 익히고 넘어가기로 했는데 모르는 부분이 있는 거에 스스로 발목이 잡혀서 계속 C만 붙잡고 있었는데 결국 코딩 테스트를 하려고 하면 C++이나 파이썬 언어를 선택할 것이고, 백엔드의 메인 언어는 자바인데 내가 지금 C를 하고 있는 게 맞나 현타가 오고 머리로는 지금 C를 하는 건 시간 낭비라고 말해주고 있는데, 가슴이 시켜서 C를 계속 하고 있었던 것 같다는 생각이 딱 들어서 이제 C는 그만 접어두기로 했다. 자바는 지금도 계속 하고 있고, 앞으로도 백엔드 개발자를 꿈꾸니깐 막혀도 절대 포기하지 않고 무한 반복할 거지만 C는 이제 나에게 프

배우고 싶은 게 너무나도 많다..!! 하루가 너무짧다 [내부링크]

나중에 프로젝트할때를 대비해서 사놓은 Html css 자바스크립트 맛보기 할 책이랑 파이썬도 배워보고 싶어서 파이썬 책도 샀는데... 자바랑 스프링...하기 전까지는 꿈도 꾸지 말아야 하는 건 아는데.. 궁금하다. 공부를 해도 해도 해야할 게 또 있다... 세상에나.. 일단 자바랑 스프링.. 그리고 알고리즘부터.. 배우고 싶어도 좀 참자

[소설] 히가시노 게이고 - 용의자 X의 헌신을 읽고 [내부링크]

드디어 탐정 갈릴레오 시리즈의 3편에 도달했다. 이번에는 용의자 x의 헌신이다. 이 소설에는 탐정 갈릴레오라고 불리는 물리학자 유가와 마나부와 그의 친구인 형사 구사나기도 나오지만, 이 책의 진정한 주인공은 천재 수학자이자 현재는 고등학교 교사로 살아가고 있는 이시가미이다. 소설의 내용을 말하자면, ---- 스포 주의 ----- 이시가미의 옆 집에 사는 야스코라는 여자가 전 남편을 우연히 살해하게 된다. 스토커처럼 따라오고 협박을 하는 전 남편을 딸과 함께 어쩔 수 없이 살해하게 되면서, 자수를 해야겠다고 마음을 먹었지만 갑자기 옆 집에 사는 이시가미가 찾아온다. 이시가미에게 거짓말로 둘러대지만, 어쩐지 이시가미는 대충 그 상황만 보고도 사건이 벌어졌음을 눈치챈다. 바퀴벌레였다고 말하는 야스코에게 그래서 죽였는지를 묻는다. 잠시 고민하던 이시가미는 야스코의 범행을 은폐하는 걸 도와주기로 하고 진술을 어떻게 할지, 알리바이를 어떻게 할지를 다 알려주고 떠난다. 이후 형사들이 찾아와서

자바의 정석 - 6장 객체지향개념 part 8 [내부링크]

이번에는 변수의 초기화에 대해 배워보겠다. 아,참 그리고 이제는 가르치면서 공부하는 게 효율이 좋다해서 나도 뭔가 강의하는 느낌으로 내가 배운 걸 정리하도록 할 것이다. 변수에는 크게 지역변수와 멤버변수 두 가지로 분류할 수 있다. 멤버 변수에는 인스턴스 변수와 클래스 변수 2가지가 있다. 멤버 변수는 자동 초기화가 이루어진다. 반면 지역 변수는 자동 초기화가 이루어지지 않으므로 반드시 수동 초기화를 해줘야 한다. // 지역 변수와 멤버 변수의 자동 초기화에 대해 알아보자, class InitTest{ // 먼저, 클래스 내에 선언되는 변수로는 인스턴스 변수와 클래스 변수가 있다고 배웠다..!! int x; // 얘는 클래스 영역에 선언되었고, static이 안 붙으니 인스턴스 변수이다. int y = x; // 앞서 말했듯 인스턴스 변수는 자동 초기화 되기 때문에 인스턴스 변수 x의 값을 y에 대입하는 것이 가능하다.!! void method1() { // 여기 블럭부터는 메서드

자바의 정석 - 6장 객체지향개념 ( 강의에 안 나온 재귀호출, 가변인자와 오버로딩 학습하기. ) [내부링크]

강의에서는 6장 중 재귀호출 , 가변인자와 오버로딩 부분을 그냥 스킵하셔서 이 부분은 혼자 책을 보며 실습과 이론 공부를 진행해보겠다. 재귀호출이란 무엇일까? 메서드의 내부에서 자기 메서드 자신을 다시 호출하는 것을 재귀호출이라고 한다. 그렇다면 재귀 메서드란? 재귀 호출을 하는 메서드를 말한다. 호출된 메서드는 값에 의한 호출을 하기 때문에, 원래 값이 아닌 복사된 값으로 작업을 해서 호출한 메서드와 무관한 독립적인 작업 수행이 가능하다. 메서드 내부에 재귀호출만을 코드로 가지면, 무한 반복이 되므로 재귀호출도 조건문을 필수로 사용해주어야 한다. // 재귀호출 메서드 void method (int n){ if ( n == 0 ) return; // n의 값이 0일 때 메서드를 종료한다. System.out.println(n); method(--n); // 재귀 호출. method(int n)을 호출한다. } // 위와 같은 재귀호출문은 매개변수 n을 1씩 감소시키면서 재귀호출을 한

자바의 정석 6장 객체지향개념 - 복습하기. ( 1부 ) [내부링크]

자바의 정석 6장은 페이지로만 80페이지에 육박하는 분량에 객체지향 언어의 규칙에 대한 내용도 많아서 꾸준히 요약하고 암기하느라 시간이 좀 오래걸렸다. 무언가를 까먹는 건 인간인 이상 아주 소수의 선택받은 인간을 제외하고는 당연한 일이다. 까먹지 않기 위해, 또 이해도를 높이기 위해 매 챕터 끝나면 복습을 한 번 하고 연습문제로 예열을 한 다음 다음 장으로 넘어가고 있다. 특히 객체지향에서는 더 신경써서 해야겠다. 객체지향 언어는 프로그램의 규모가 커져감에 따라 기존의 절차지향언어에서의 한계를 극복하기 위해서 등장한 언어이다. ( 절차적이라는 건 순서대로 실행한다는 것을 의미한다. ) 객체 지향 언어가 가지는 장저에는 대표적으로 3가지가 있다. 재사용성이 높다, 유지보수하기 편하다, 중복된 코드의 제거 객체 지향언어의 4가지 특징은 상속, 추상화, 다형성, 캡슐이라고 했는데 6장에서 단 한 차례도 나오지 않을 걸 보니 7장의 100페이지가 넘는 괴랄한 페이지수가 두려워진다. 아무튼

JAVA의 정석 - 6장 객체지향개념 복습하기 ( 2부 ) [내부링크]

바로 쉼없이 2부로 들어가겠다. 2부의 첫 파트는 JVM의 메모리 구조이다. JVM의 핵심 주요 영역이 3가지가 있다. Method area : 클래스 데이터(클래스에 대한 정보) + 클래스 변수가 저장되는 영역 Call Stack : 메서드의 작업에 필요한 메모리 공간이 제공되는 영역, 지역변수들과 연산의 중간 결과등이 저장됨. Heap : 인스턴스가 생성되는 공간, 생성되는 인스턴스들이 모두 여기 저장된다. ( 추가로 배열까지.. 구글링으로 알아냈었지... ) 대충 이 정도만 알면 충분할 것 같다. 아 그리고 호출 스택은 그냥 상자 쌓기다. 상자는 차곡차곡 밑에서부터 쌓고, 밑에 쌓은 상자는 위의 상자를 뺄 때 까지 못 뺀다. 젠가 마냥 옆에서 돌려빼고 이런 건 불가능하다. 이 정도 정리해두고 넘어가면 충분할 것 같다는 게 개인적인 생각이다. 실제 예제로 알아보자. class CallStackTest{ public static void main(String[] args){ fir

자바의 정석 - 6장 연습문제 풀이 [내부링크]

다음과 같은 멤버변수를 갖는 SutdaCard 클래스를 정의하시오. class SutdaCard{ // class 명이 SutdaCard int num; boolena isKwang; } // 인스턴스 변수니깐 둘 다 자동초기화가 기본값으로 된다. num은 0으로 , boolena은 false로 정의 자체는 그냥 이렇게 해주면 된다. 다음 문제가 이제 실질적인 코드 구현이 된다. 2. 문제 6-1에서 정의한 SutdaCard클래스에 두 개의 생성자와 info()를 추가해서 실행 결과와 같은 결과를 얻도록 하시오. 실행 결과 : 3 1K가 줄 바꿈으로 출력된다. 6-1에서 정의한 SutdaCard 클래스의 설명 : num은 1에서 10 사이의 정수, isKwang은 광이면 true 아니면 false class Exercise6_2 { public static void main(String[] args) { SutdaCard card1 = new SutdaCard(3,false); Su

자바의 정석 - 5장 배열 연습문제 풀이 [내부링크]

다음은 배열을 선언하거나 초기화한 것이다. 잘못된 것을 고르고 그 이유를 설명하시오. a. int[] arr[] b. int[] arr = {1,2,3,}; c. int[] arr = new int[5]; d. in[] arr = new int[5]{1,2,3,4,5}; e. int arr[5]; f. int[] arr[] = new int[3][]; 이런 문제가 제일 어렵다 개인적으로 뭐니뭐니해도 직접 해보는 게 제일 낫지. 안 되는 2개의 이유를 알아보자. d가 안 되는 이유는 배열의 크기를 직접 지정했기 때문이다. 자바의 배열은 생성시 중괄호 안의 데이터 개수에 따라 크기가 자동으로 결정된다고 한다. e가 안 되는 이유는 배열을 선언할 때 크기를 지정했기 때문이라고 한다. 정확히 말하면 참조 변수 선언 시 크기 지정이 안된다는 것 같다. 2. 다음과 같은 배열이 있을 때, arr[3].length의 값은 얼마인가? int[][] arr = { {5,5,5,5}, {10,10,1

한 주를 마무리하며 [내부링크]

원래 매주 일요일 오후 8시부터는 쉬어야지 정하고 매주 일요일 오후 8시부터는 쉬었는데 지금은 감기에 걸린 상태이기도 하고 어제 양자역학을 다룬 책을 읽고 뇌가 이상해진건지 쉬고 싶은 게 내 자유의지인지 도파민에 무릎꿇어서인지 아니면 매주 일요일 쉰 관성때문인지에 대해 스스로 생각해봤고 관성 때문이라는 결론은 내 뇌에서 내려서 일단 이번주는 그냥 공부를 좀 더 하다가 왔다. 이제 곧 자바에서 객체지향이라는 개념이 펼쳐지는데 C에서 포인터를 만날 때와 마찬가지로 긴장이 된다. 요즈음 관성을 생각하며 살아가고 있다. 아무래도 뇌가 이상해진 게 틀림없다. 일단 대충 야식먹으면서 책 읽다가 자야지.

[과학] - 사소해서 물어보지 못했지만 궁금했던 이야기 ( 사물궁이 ) 1권을 읽고 [내부링크]

양자역학과 물리학에 대한 책을 읽고, 그 내용이 좀 어려웠어서 조금 더 일상 생활과 친숙하고 쉬운 책이 없을까 싶어서 사물궁이 책 1권을 봤다. 사물궁이님은 유튜브로 애니메이션을 통해 과학적 내용을 다루는 유튜버신데, 내 기억상 구독자가 엄청 많았던 걸로 기억한다. 거기의 내용을 책으로 옮긴 느낌이라고 생각하면 될 것 같다. 총 5부로 나누어 책은 진행된다. 1부는 사소해서 물어보지 못했던 몸에 관한 이야기 2부는 엉뚱하고 흥미진진한 궁이 실험실 3부는 알아두면 쓸데 있는 생활 궁금증 4부는 신기하지만 물어본 적 없는 동물에 관한 이야기 5부는 몰라도 되지만 어쩐지 알고 싶은 잡학 상식 이렇게 진행되는데 모든 에피소드들이 다 흥미롭다. 그 중 간략하게 몇 개만 추려서 가져와보면 다음과 같다. 감기에 걸리면 왜 한 쪽 코만 주로 막힐까에서 나오는 내용으로, 놀랍게도 우리 코는 한쪽씩 번갈아가면서 일정한 시간 주기로 숨을 쉰다고 한다. 즉 다시 말해서 오른쪽 콧구멍으로 숨을 쉬는 시간이

자바의 정석 - 6장 객체지향언어 - part1 [내부링크]

자바의 정석 2~5장은 C언어에서 배웠던 문법과 유사성이 있어서, 조금 빠르게 나갈 수 있었고 한 번에 나갈 수 있었다. 근데, 6장~7장 객체지향 내용은 개념도 많고, 외울 것도 많아서 자바의 정석 유튜브 강의로 40개 분량이 넘어서 짧게 짧게 끊어가며 학습하기로 했다. 객체지향 개념부터는 단순히 코드만 짜는 게 아니라 메모리를 내가 직접 따라 그려보면서 어떤 식으로 진행이 되는지에 관해 생각해보면서 진행할 것이다. 객체지향언어란 기존의 순서대로 실행되는 절차지향적 언어에서 느끼는 한계를 극복하기 위해 만들어졌다고 한다. 절차지향적 언어는 무엇일까에 대해 내가 배웠던 C를 생각해보았다. C에서는 소스코드를 쓰면 정말 말 그대로 순서대로 진행된다. 절차지향 언어는 컴퓨터의 처리 방식과 유사하기 때문에 속도가 빠르다는 장점이 있었다. 근데 왜 객체지향언어라는 게 등장해야 했을까? 절차지향언어는 모든 구성요소가 유기적으로 연결되어 있다고 한다. https://m.blog.naver.co

자바의 정석 - 6장 객체지향개념 part2 [내부링크]

많은 수의 객체를 다뤄야 할 때, 배열로 다루면 편리할 것이다. 실제로 객체 역시 배열로 다루는 게 가능하며 이를 '객체 배열'이라고 한다. 객체 배열은 객체의 주소를 저장하는 배열이며, 참조변수들을 하나로 묶은 참조 변수 배열과 같다. class TvTest4 { public static void main(String[] args) { // 메인 '메소드' Tv[] tvArr = new Tv[3]; // 길이가 3인 Tv객체 배열 생성. // # 아직 Tv라는 객체가 생성되지 않았고, 참조변수 배열, 즉 객체배열만 생성되었다. //실제 Tv 객체를 생성하고 Tv객체 배열의 각 요소에 저장해보자. for(int i=0;i<tvArr.length;i++) { tvArr[i] = new Tv(); // 생성하는 Tv객체를 각각 연결하자. tvArr[i].channel = i+10; // 각각의 채널에 10, 11, 12를 저장. } for (int i=0;i<tvArr.length;i+

자바의 정석 - 6장 객체지향개념 part3 [내부링크]

메서드(method)란 특정한 작업을 수행하는 일련의 문장들을 하나로 묶은 것이다. C에서 함수를 배웠는데, 메서드와는 무슨 차이가 있냐면 메서드는 객체지향 프로그래밍에서의 함수를 일컫는 말이며, 메서드는 클래스 내에 선언되어야 하는 특징이 있지만 함수는 클래스에 독립적이라는 점에서 다르다고 할 수 있다. (단, 몰라도 됨 ) 메서드를 사용하는 이유에는 높은 재사용성 - 다른 프로그램에서도 가져다 쓸 수 있음. 중복된 코드의 제거 - 메서드를 사용하면 코드 중복을 줄일 수 있다. 프로그램의 구조화 - 프로그램을 구조화함으로써, 나중에 오류발생 시 해결하기 편하다. 메서드의 장점이 객체지향 프로그래밍의 장점과 정확히 연결되는 걸로 봐서, 메서드라는 게 객체지향 프로그래밍의 본질을 담고 있지 않나 생각이 든다. 메서드에는 선언부와 구현부가 있다. 메서드 선언부에는 메서드의 이름, 매개변수 선언, 반환 타입으로 구성된다. ( 함수와 동일함 ) 매개변수는 메서드가 작업을 수행하는 데 필요한

자바의 정석 - 6장 객체지향개념 part4 [내부링크]

이번에는 JVM의 메모리 구조와 호출 스택에 대해 알아본다. 말로만 하면 어려우니 그림으로 그려서 알아보겠다. 그림이 좀 이상하긴 한데, 알아볼 수 있으면 됐지... 자바는 자바 버츄얼 머신에 의해 실행된다고 배웠다. ( 아마 1장이었던 거 같은데, 잘 기억은 안 나네. ) 기존의 C언어가 운영체제에 의해 실행된 것과는 다르다. 버츄얼 머신에 의해 실행되기 때문에 운영체제에 독립적인 것이다. 무튼 JVM의 주된 메모리 영역 중 3가지 영역을 그리면 위와 같다. 메소드 영역에는 클래스 데이터와 클래스 변수가 생성된다. 호출 스택에는 메서드를 위한 작업 공간들이 순차적으로 쌓이면서 생성된다. ( 메서드 영역에 지역변수들와 실행문들이 있으니 지역변수와 실행 결과, 중간 결과는 호출 스택의 메서드를 위한 작업 공간에 저장된다고 한다. 힙 영역에는 인스턴스와 인스턴스 변수들이 생성된다. 이 중 제일 중요한 게 호출 스택이라고 한다. 호출 스택은 마치 상자 쌓기와도 같은 것 같다. ( 여기서부

할 게 너무 많은 독학 개발자 준비 백수.. [내부링크]

C언어 겨우 하나 문법끝내고 자바 진도 나가고 있는데 나중에 프로젝트 하려면 html css js도 알아야하고.. 코딩테스트 때문에 알고리즘 공부도 해야하고... 스프링 데이터베이스 등등... 당연히 기본적인 건 해야하고 비전공자니까 cs지식도 공부해야하고..... 나는 나름 길게 잡는다고 1년을 취준기간으로 잡았고, 6개월이면 그래도 기본적인 건 할 수 있을거라 생각했는데 시간이 해도해도 부족한 느낌인데 뭔가 계속 혼자서 독학하고 경쟁자가 당장 없으니까 가상의 경쟁자라도 만들어야겠다는 생각이 요즘 든다. C를 프로그래밍 연습문제까지 다 풀고 나면 일단 c를 놓고, 파이썬을 해볼지 Html css js를 찍먹 해볼지 아니면 그 시간을 자바에 더 쏟는 게 맞을지.... 아무래도 계속 독학은 힘들 거 같아서 학원이나 부트캠프를 다니더라도 최소 6개월은 더 기본을 쌓아야 할 거 같다. 요즘 가끔 시간 날때마다 유튜브로 개발자 전망 이런 거 보는데 사실 봐도 달라질 거 없는데 뭔가 마음이

자바의 정석 - 객체지향개념 part 5 ( 저장안해서 날라갔다 ;; ) [내부링크]

저장안해서 날라갔다.... 예제 6-9, 6-10, 6-11, 6-12는 직접 그려도 보고 실습도 했었으니 패스하겠다. 예제 6-13부터 하겠다. class ReturnTest { public static void main(String[] args) { ReturnTest r = new ReturnTest(); int result = r.add(3,5); System.out.println(result); int[] result2 = {0}; // 배열을 생성 후 result2[0] 의 값을 0으로 초기화 r.add(3,5,result2); // 배열을 add메서드의 매개변수로 전달 System.out.println(result2[0]); } int add(int a, int b) { return a+b; } void add(int a, int b, int[] result) { result[0] = a+b; // 매개변수로 넘겨받은 배열에 연산결과를 저장. } } 메모리 구조를 그려보

자바의 정석 6장 객체지향개념 - Part6 [내부링크]

이번에는 클래스 메서드(static) 메서드와 인스턴스 메서드에 대해 알아본다. 둘의 차이는 인스턴스 변수를 사용하는지 사용하지 않는지이다. 인스턴스 변수를 사용하면 인스턴스 메서드 인스턴스 변수를 사용하지 않으면 static 메서드이다. 다시 한 번 상기하자면, 객체는 인스턴스 변수의 묶음이다. 멤버변수란 앞으로 자주 나올 말인데, 클래스 영역에 선언된 변수를 멤버변수라 한다. 멤버 변수 중 static이 붙은 걸 클래스 변수(static 변수) , static이 안 붙은 걸 인스턴스 변수라고 한다. static을 붙이는 규칙 2가지만 알고 바로 예제로 넘어간다. 멤버변수 중 모든 인스턴스에 공통된 값을 유지해야 하면 sttic을 붙인다. 메서드 중 인스턴스 변수나 인스턴스 메서드를 사용하지 않는 메서드라면 static을 붙이는 걸 고려한다. 예제 6-19를 통해 이해해보자. class MyMath2 { long a,b; // 클래스 안에 선언된 인스턴스 변수. // 인스턴스 변수

자바의 정석 - 6장 객체지향개념 Part 7 [내부링크]

이번에는 오버로딩을 배워보자. 오버로딩이란 하나의 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것을 말한다. 오버로딩을 하기 위해서는 조건이 있어야 하는데 다음 3가지 조건을 지켜가며 오버로딩을 하자. 메서드의 이름이 서로 같아야 한다. 매개변수의 타입 또는 개수가 달라야 한다. 반환타입은 상관없다. 이렇게만 하면 이해가 하나도 안 가고 머리에 1도 안 들어오니깐 ( 실제로 외우려고 해보니 1도 안 외워진다 . ) 실제 코드를 통해 알아보자. 먼저 오버로딩을 사용한 대표적인 예시로는 prinln메서드가 있다. // 간략히 PrintStream 클래스를 나타내보았다. ( 실제와 다름 ) // 단순히 이해를 돕기 위한 코드. class PrintStream{ // 하나의 클래스 내에 // 모든 메서드의 이름이 println으로 서로 같다. ( 오버로딩의 조건 1 만족) void println() void println(boolean x) void println(char x) vo

혼자 공부하는 C언어 카페 - 16장 추가 연습문제 풀이 [내부링크]

이제부터는 나에게 고통을 안겨 준 동적할당과 구조체와 다시 맞서싸우는 시간이다. 차근차근 배운 내용을 떠올려보면서 풀어보자. 먼저 동적할당이 어떤 느낌인지 알아보자. #include<stdio.h> #include<stdlib.h> // malloc, free int main(void) { int* p[3]; // 포인터 배열 // 포인터 변수 3개 int i, j; // 동적 메모리 할당. for (i = 0; i < 3; i++) { p[i] = (int*)malloc(sizeof(int) * 4); } for (i = 0; i < 3; i++) { for (j = 0; j < 4; j++) { p[i][j] = (4*i) +(j+1); printf("%5d", p[i][j]); } puts(""); } // 동적 메모리 제거 for (i = 0; i < 3; i++) { free(p[i]); } return 0; } https://www.youtube.com/@withhoney

자바의 정석 - 4장 조건문과 반복문 - 손코딩하며 복습하기. [내부링크]

문자열 비교시 str.equals나 str.equalsIgnoreCase라는 메서드를 사용한다는 점 상기하면서 시작. public class FlowEx1 { public static void main(String[] args) { int x = 0; System.out.printf("x=%d 일 때, 참인 것은 %n ", x); if(x==0) System.out.println("x==0"); // x가 0이므로 실행문 실행 if(x!=0) System.out.println("x!=0"); // x가 0이 아니면 실행문 실행x if(!(x==0)) System.out.println("!(x==0)"); // x가 0이 아니면 실행문 실행x if(!(x!=0)) System.out.println("!(x!=0)"); // x가 0이면 실행문 실행 x=1; System.out.printf("x=%d 일 때, 참인 것은 %n", x); if(x==0) System.out.println(

자바의 정석 4장 연습문제 풀이 [내부링크]

4-1 문장들을 조건식으로 표현하라. 1) int형 변수 x가 10보다 크고 20보다 작을 때 true인 조건식 : ( x >10 && x< 20) 2) char형 변수 ch가 공백이나 탭이 아닐 때 true인 조건식 : ( ch != ' ' && ch != '\t' ) 3) char형 변수 ch가 'x' 또는 'X'일 때 true인 조건식 : ( ch == 'x' || ch == 'X' ) 4) char형 변수 ch가 숫자 ('0'~'9')일 때 true인 조건식 : ( ch >= '0' && ch <= '9' ) 5. char형 변수 ch가 영문자(대문자 또는 소문자)일 때 true인 조건식 : ( (ch>='A'&&ch<='Z')||(ch>='a'&&ch<='z')) 6. int형 변수 year가 400으로 나눠떨어지거나 또는 4로 나눠떨어지고 100으로 나눠떨어지지 않을 때 true인 조건식: ( year % 400 == 0 || year % 4 == 0 && year % 1

자바의 정석 - 커맨드 라인을 통해 입력받기. [내부링크]

매개변수의 개수가 최초에는 넘겨준 게 없으니 0이 나온다. Eclipse 에서 실행시 커맨드라인을 통해 넘겨준 것처럼 하려면 Run - Run configurations를 통해 입력하면 된다고 한다. Run configurations로 들어가면 Arguments 창이 뜨는데 저걸 클릭해서 값을 입력해보자. 여기서 공백으로 구분지어진 것들을 Run을 누르면 입력한 값들이 문자열 값으로 바뀌어서 메인으로 넘겨진다. 그러면 args라는 메인 메서드 배열에 문자열 4개가 저장되어서 출력되게 된다. 윈도우 커맨드 창을 통해서도 입력하는 방법이 있다고 한다. 먼저 윈도우 + r키를 누르면 실행창이 뜬다. 거기서 cmd를 입력하면 cmd 창이 뜬다. 실행 파일이 있는 곳으로 가려면 어떻게 해야할까..? 이클립스 창으로 돌아가보자. 이클립스 창에서 alt + enter를 치면 소스파일의 경로가 나온다. 실행을 하려면 클래스 파일이 있는 곳으로 가서 실행을 해야하므로 show in system ex

자바의 정석 5장 - 배열 손코딩하며 복습하기. [내부링크]

배열은 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것을 말한다. C에서도 배열은 존재했지만, 자바에서는 선언부부터 다르다. 자바에서 배열을 선언하는 방법 : 타입[] 변수이름 int[] score; String[] name; 같은 식이다. C에서는 주로 int score[]처럼 썼던 것과는 다른 방식으로 주로 사용한다. ( 물론 int score[]도 가능하긴 하지만.. ) 배열을 선언한다고 실제 저장공간이 생성되는 것은 아니다. 배열의 선언은 단지 생성된 배열을 다루기 위해 사용하는 참조변수를 위한 저장공간이 만들어질 뿐이다. 실제 배열의 생성은 변수이름 = new 타입[길이]; 로 해야 실제 배열이 생성된다. 이렇게 하면 잘 와닿지 않는다. 실제 코드를 보며 감을 익혀보자. int[] score; // int 타입의 배열을 다루기 위한 참조 변수 score 선언 score = new int[5]; // int 타입 5개를 저장할 수 있는 배열의 생성. ( 실제 저장공간의 생

[과학] - 김상욱의 과학공부를 읽고 [내부링크]

사실 나는 이과출신이면서도 과학에 대해 잘 모른다. 정확히 말하면 물리에 대해 잘 모른다고 해야 할 것 같다. 독서를 시작하면서, 목표로 세운 건 최대한 다양한 장르의 책을 읽어보자였고, 그래서 선택한 분야가 이번에는 과학 분야이다. 이 책을 선택한 이유는 밀리의 서재에서 추천 도서로 떠있었기 때문이고, 과학에 대해 문외한인 사람이지만 김상욱이라는 이 저자를 우연히 유튜브에서 본 기억이 있기 때문이다. 책의 내용은 최대한 쉽게 풀어서 설명했음에도 역시나 어렵다. 어렵다기보다는 책의 저자의 말을 빌려, 받아들이기가 편안하지 않다고 해야할 것 같다. 양자역학에 대한 부분을 읽을 때는 신기함 반, 머리가 터질 것 같은 기분 반이었다. 양자역학의 핵심 이론은 ' 전자의 위치와 운동량을 동시에 측정하는 것은 불가능하며, 확률적으로 존재한다 ' 라는 개념이라고 한다. 이게 무슨 소리인지 와닿는가? 이 책을 읽는다고 양자역학의 0.0001%라도 알 수는 없다. 천재 물리학자라고 불리는 파인만도

혼자 공부하는 C언어 카페 - 15장 추가 연습문제 풀이 [내부링크]

출처 : https://cafe.naver.com/thisisc 혼자 공부하는 C언어 : 네이버 카페 '혼자 공부하는 C언어', '이것이 C언어다, 서현우의 c 프로그래밍 정복' 관련 컨텐츠 공유 카페입니다. cafe.naver.com #include<stdio.h> int count_num(int(*pa1)[4], int(*pa2)[4], int(*ps)[2]); // count_num 함수의 인수로 2차원 배열의 배열명 = 1차원 부분배열의 시작 주소가 넘어오므로 // 1차원 부분배열에 대한 정보를 줘야 함. // 각각 int[4]형, int[4]형, int[2]형이니 표기해주고 // 배열 포인터는 선언시에 포인터 앞뒤로 정보 표기 + 괄호까지 해야함. ( 안 그러면 포인터 배열과 구분 x ) int main(void) { int ary1[3][4] = { {15,3,9,11},{23,7,10,12}, {0,17,55,24} }; int ary2[3][4] = { {13,8,9,

혼자 공부하는 C언어 카페 - 14장 추가 연습문제 풀이 [내부링크]

#include<stdio.h> int main(void) { int num[4][5]; // 4행 5열의 2차원 배열 선언 int i, j; // 행과 열을 저장 및 출력하기 위한 반복 제어 변수 int start = 1; // 1부터 20까지 더하기 위한 변수 start for (i = 0; i < 4; i++) { for (j = 0; j < 5; j++) { num[i][j] = start; start++; } } for (i = 0; i < 4; i++) { for (j = 0; j < 5; j++) { printf("%5d", num[i][j]); // 5칸씩 띄워가며 숫자 출력하고 } printf("\n"); // 한 행 출력 이후 줄바꿈 } return 0; } 당연하게도 상수를 증감하는 건 불가능하니 변수를 통해 증가시켜가며 대입하거나, 아님 반복문의 인덱스에서 규칙을 찾아서 하는 방법을 사용하면 된다. #include<stdio.h> int main(void) {

2023년 11월 - 프로그래밍 공부 2개월차 결산 [내부링크]

현재 시각 2023년 11월 30일 오후 7시 42분... 매일 찬물로 샤워를 한 게 원인인지, 아니면 전기장판이 고장난 게 원인인지 몹시 차가운 생활을 하던 와중에 드디어 감기에 걸렸습니다... 정확히 말하면 목감기 + 몸살이 정통으로 와서... 몸에 힘이 안 들어가네요. 피파 게임으로 치면 컨디션 6시입니다. 2023년 11월은 참 파란만장한 달이었습니다. 라고 쓰고 사실 공부다운 공부를 제대로 못했.... 왜냐하면... 싸피 11기를 준비하면서 마음도 붕붕 뜨고, 결과 발표를 기다리는 동안 또 멘탈이 조금 흔들려서 쉽지만은 않았습니다. 게다가 한국에서 롤드컵을 한다는 데 참을 수가 있어야지... 틈틈히 롤드컵도 보고... 뭔가 집중을 못한 한 달을 보냈네요. 백준은 매일 하나씩 푸는 걸 목표로 했는데, 알고리즘을 안 배워서 더 이상 풀기 힘든 단계에 진입했습니다. 현재 티어는 실버 3인데, C언어로 풀고 있는데다가 알고리즘에도 아예 문외한이라 자바나 C++ 개념을 통으로 한 바

[탐정 갈릴레오 시리즈] - 히가시노 게이고의 예지몽을 읽고 [내부링크]

탐정 갈릴레오 시리즈는 중 탐정 갈릴레오를 읽고 그 다음인 예지몽이라는 소설을 읽었다. 예지몽은 각각의 사건에 대해서 특이한 목격자가 나온다. 그들이 하는 말은 하나같이 비과학적인 얘기 뿐이다. '도깨비불을 봤다' '예지몽을 꿨다' '어릴 때 이미 예견되어 있었다' 라는 식의 사실 어떻게 보면 다소 뜬구름 잡는 얘기일 뿐이다. 그렇지만, 주인공인 유가와는 그런 비과학적인 얘기를 과학적인 얘기로 바꾸고 결국 과학을 통해서 단서를 발견한다는 점에서 전작인 갈릴레오 시리즈와 과학 + 추리 소설이라는 맥락에서는 같다. 전작과 다른 느낌은 아무래도 전작은 조금 더 과학에 치중되어 있는 느낌이었다면 이번 예지몽이라는 소설은 과학보다는 추리에 조금 더 치중되어 있는 느낌을 개인적으로 받았다. 탐정 갈릴레오는 이미 범인이 드러난 상태에서 그들의 트릭을 과학적으로 밝혀내는 느낌이라면 예지몽은 반대로 드러난 단서를 과학적으로 추측해서 범인을 밝혀내는 느낌이라고나 할까 탐정 갈릴레오라는 추리 소설을 한

스터디카페 유목민 스터디카페 옮기다 [내부링크]

이전부터 여러가지 이유로 옮겨야지 옮겨야지 생각만 하다가 이전에 2달 등록한 스터디카페 계약(?)이 만료되어서 새로운 스터디카페로 왔습니다. 있을 건 다 있습니다..!! 집에서는 아주 살짝 멀어지긴 했지만 그래봤자 한 5분 밖에 차이 안 나서 고민만 하다 옮겼습니다. 싸피도 떨어져서 탈출도 불가능하니 그냥 등록했습니다. 떨어진 건 떨어진 거고 할 건 해야지 과자도 있고 커피머신도 있고 정수기도 있고 뭐 있을 건 다 있습니다. 한 가지 아쉬운 건 남자 화장실이 층이 달라서 화장실 가려면 외출 찍고 가야한다는 거... 새로운 기분으로 다시 달려봅니다.

혼자 공부하는 C언어 카페 - 13장 추가 연습문제 풀이 [내부링크]

출처 : https://cafe.naver.com/thisisc 혼자 공부하는 C언어 : 네이버 카페 '혼자 공부하는 C언어', '이것이 C언어다, 서현우의 c 프로그래밍 정복' 관련 컨텐츠 공유 카페입니다. cafe.naver.com #include<stdio.h> int a; // 전역 변수 a 선언, 전역 변수는 선언과 동시에 0으로 자동 초기화 int main(void) { int b = 10; // 지역 변수 b에 10을 대입한다. { static int a = 20; // static 예약어를 앞에 붙였다. a는 정적 지역변수 // 정적 지역 변수는 프로그램이 실행부터 종료시 까지 메모리 공간을 유지함. // 대신 사용 범위는 블럭 내부로 제한됨. b = a; // b에 정적 지역변수의 값인 20을 대입함. } // 블럭을 빠져나오면서 정적 지역 변수 a는 더 이상 사용 불가. 저장공간은 유지됨. a += b; // 전역 변수 a에 b의 값인 20을 더함. a = 20 p

싸피 비전공자 11기 1차 탈락.... ( 느낀 점 및 싸피 비전공자 팁 ) [내부링크]

오늘 저번에 봤던 싸피 결과가 나왔다. 혹시나 했는데 역시나 불합격이다. 사실 예상은 했는데 막상 불합격하니깐 좋지는 않다. 근데 뭐 싸피든 뭐든 최종 목표는 취업이니까 취업하려면 수도 없이 떨어져야 할 텐데 떨어진 거..? 오히려 좋아. 는 뻥이고 떨어진 거 자체는 사실 별 생각 없는데 싸피 비전공자 적성진단 공부한 시간이 아깝다. 그 시간에 책이라도 읽을걸.... 먹고 죽어야겠다. 는 아니고 그냥 피자 먹으면서 기분 전환이나 해야지. 싸피 떨어뜨려봐~ 어차피 나중에 취업하는 자가 승자야. 뭐 첫 번째 플랜인 싸피 11기가 물거품으로 돌아갔으니 지금처럼 독학으로 계속 공부하면서 다음 플랜을 짜야겠다. 떨어진 사람은 글 안 올리겠지만 사실 경쟁률이 높아서 떨어지는 게 정배니까 떨어진분들 다들 낙담하지 마시고 붙은 분들은 꼭 면접까지 패스해서 최종 합격하시길!! 그리고 미래에 싸피를 준비할 비전공자들을 위해 이 책은 정말 비추한다... 책을 만든 분에게는 죄송하지만 그래도 소신 발언하