본문 바로가기

Portpolio218

객체지향의 사실과 오해 1장 : 협력하는 객체들의 공동체 동기: 인프런 강의 중 스프링 기본편에서 김영한 강사님의 추천으로 "객체지향의 사실과 오해" 라는 책을 추천받음 기간: 2023.11.13 ~ 2023.11.17(1일 1장, 1장부터 5장까지 공유) 구성 방법: 요약, 중요하다고 생각하는 부분만 공유하고 코드로 구현해보기 http://aladin.kr/p/aGexE 객체지향의 사실과 오해 위키북스 IT Leaders 시리즈 23권. 객체지향이란 무엇인가? 이 책은 이 질문에 대한 답을 찾기 위해 노력하고 있는 모든 개발자를 위한 책이다. www.aladin.co.kr 01. 역할, 책임, 협력 객체는 마치 시민 사회에서 자신의 역할을 하며 다른 객체와도 협력한다. 역할은 관련성 높은 책임의 집합이며 대체 가능성을 의미한다. 하나의 객체가 여러 역할을 수.. 2023. 11. 15.
백엔드 개발자 신입 면접 예상 질문 1. 스핀락 락 차이 2. gpu에서 프로세스 동작 원리 3. faiss동작원리 4. 트리 최대길이 구하는거 5. http이란? 6. http 구성요소 7. udp vs tcp 8. 선형대수학이 필요한 이유 9. 동기 비동기 차이 10. 비선형 함수 사용 이유 #질문의 선정 기준은 없음. CS 전공과목과 몇 가지 기술 면접에 자주 나오는 내용 정리해서 게시함. 2023. 11. 15.
eclipse 한꺼번에 주석처리하는 방법 예시를 위해 무척 길고 비효율적인 코드를 하나 가져왔다. 이 긴 코드를 한꺼번에 주석 처리하고 싶은데, 시간이 많이 걸린다. 그럴 때는 ctrl + / 단축키를 사용하자 2023. 11. 15.
리눅스 백그라운드 프로세스 & 리눅스 터미널에서 백그라운드 프로세스는 터미널과 독립적인 상황에서 실행중인 프로세스를 의미한다. 일반적으로 리눅스이 터미널 아니어도 데스크탑에서 키를 입력하는 과정이나 네트워크 연결, 데이터 송수신 등의 인프라적 과정이나 프로그램의 빠른 실행 등을 위해서 자체적으로 내부에서 작은 프로세스를 실행시키는 백그라운드 프로세스를 실행하기도 한다. 이러한 백그라운드 프로세스가 과도하게 설치되었을 경우에 컴퓨터가 느려지는 원인이기도 하다. 다시 본론으로 돌아와서 프로세스를 실행시키고 그 프로세스가 실행시키는 동안 bg라는 명령어를 실행시켜서 그 명령어가 터미널의 상태와 상관없이 계속 실행되도록 해보자. gzip largefile.txt 이 명령어는 gzip이라는 명령어를 사용해서 주어진 텍스트 파일을 압축하는 명령.. 2023. 11. 8.
백준 2338 : c++에서의 int의 크기와 python의 big integer형 알고리즘 문제를 풀다보면 언뜻 쉬워보이는데 정작 틀렸다는 글들이 많다. 이번 2338번 문제도 그것과 관련이 깊다. 코드 제출만 놓고 보면 그냥 별거 아닌 브론즈5 티어 문제인데 그 속에 담겨있는 컴퓨터 구조적 지식이 중요하다고 생각한다. 우선 내가 그걸 모르고 무심코 쓴 c++ 코드를 보면, #include int main(void) { int a, b; std::cin >> a; std::cin >> b; std::cout 2023. 11. 1.
ubuntu에서 c 헤더파일 여는 법 운영체제를 공부 중인 상황에서 시스템 프로그래밍을 하게 될 일이 많은데 아무래도 버추얼박스를 깔아서 가상으로 우분투 리눅스를 설치하는 방법을 사용한다. 기본적으로 리눅스는 c언어를 컴파일함에 있어서 gcc 컴파일러를 사용하는데, 기본적으로 헤더 파일이 윈도우에서 없는 것들이 매우 많고 차이가 많아서 헤더 파일을 열어 볼일이 많다. 윈도우에서 비주얼 스튜디오를 통해 c언어 프로그래밍을 할 때는 ctrl을 누른 상태에서 좌클릭을 하면 헤더 내용이 나오는데 리눅스에서는 어떻게 찾아서 확인할 수 있는지 알아보자. 우선 터미널을 열어서 cd usr/include 를 친다. 그리고 ls를 치자. 그러면 해당 디렉토리에 있는 파일을 쫙 나열해준다. 나는 지금 스레드 주소 공간을 확인하는 코드를 짜고 있다고 가정하자... 2023. 10. 27.
vi 편집기를 알아야 하는 이유 요즘의 편집기를 보면 굳이 vi에 대해 알아야 하는지라는 생각이 들 수도 있다. 사용법도 익숙치 않고 무엇보다 자주 쓸 일이 없는 경우가 대다수이다. 그러나 이 vi 에디터는 중요한 툴이다. 우선, 운영체제와 같은 시스템에서 코딩을 해야 할 때 확실한 툴이 되어준다. 아무리 웹개발을 한다고 하더라도 일정 수준 이상으로 성장하여 중급 개발자가 되기 위해서는 본인 그리고 본인의 팀이 개발하는 서비스가 운영체제와 같은 시스템에서 어떻게 영향을 주는지를 고려하고 판단할 줄 알아야 한다. 그 때 vi와 같은 툴을 익숙하게 만드는 것은 분명한 무기가 된다. 그리고 익숙해지면 속도가 빨라지고 불필요하게 마우스 동작을 할 필요성이 급감한다 직관적인 디스플레이가 부족해서 인지하며 신경쓸 부분이 많지만 그 말을 돌려서 생.. 2023. 10. 22.
리눅스의 폴더 구조 리눅스를 사용하다 보면 터미널 상에서 리눅스의 폴더 이름에 대해 알아볼 일이 많은 데 이번 기회에 정리해 놓는다. 정식 명칭으로는 파일 계층 구조(FHS)라고 한다. 1. root(/) 전체 파일 시스템의 기본 계층이자 최상층이다. 2. bin(/bin) 필수 명령이 포함된 바이너리 형식의 파일이다. (ls, ping, grep....) 3. boot(/boot) 부트 로더 파일이 들어있다. 4. dev(/dev) 필수 장치 파일, 터미널이나 그러한 것이 해당된다. 5. etc(/etc) 모든 프로그램에 필요한 구성 파일이 포함되어 있다. 6. home(/home) 개인 파일을 저장하는 홈 디렉토리 의미한다. 7. lib(/lib) /bin/이나 /sbin/의 바이너리에 필수적인 라이브러리이다. 8. m.. 2023. 10. 20.
웹개발자가 컴퓨터구조를 알아야 할까? 웹개발자를 지망하는 전공자 혹은 비전공자 중에서 컴퓨터 구조와 같은 하드웨어 관련 과목에 대한 필요성을 묻는 질문글들이 꽤 많이 보였다. 프론트엔드 개발자보다 백엔드 개발자 지망생 중에 그런 글들이 꽤 많은 것 같다. 사실 초급 개발자 수준에서는 글쎄라는 의문점이 들 수 밖에 없다. 그러나, 기본적으로 프로젝트를 진행하는 과정에서 컴퓨터의 물리적인 구조를 모르면 어느 시점에서는 성장하기 어렵다는 의견들이 대다수이다. 더 나은 프로그램을 만들기 위해서. 웹페이지 상에서 자바스크립트 코드는 스스로 실행하지 않는다. 크롬을 예로 들면, V8이라는 엔진이 JIT컴파일을 수행한다. 이러한 과정은 기본적으로 컴퓨터의 구조 더 나아가 메모리와 cpu에 대한 깊은 이해를 요구한다. 이러한 이해 없이 더 나은 프로그램을.. 2023. 10. 18.
추천강의) 혼자 공부하는 컴구조/OS https://youtube.com/playlist?list=PLVsNizTWUw7FCS83JhC1vflK8OcLRG0Hl&si=ebHfBC1hedKKP1Bz [컴퓨터 공학 기초 강의] 혼자 공부하는 컴퓨터 구조+운영체제 강민철 저자님과 함께하는 『혼자 공부하는 컴퓨터 구조+운영체제』 강의입니다. 다른 입문서에서는 알려주지 않았던 진짜 컴퓨터 공학 지식을 만나보세요! 👨‍🏫 누구를 위한 강의인가요? - www.youtube.com IT업계에서 소프트웨어 개발자를 한다고 해도 결국 어느 정도 단계 이상으로 올라가려면 결국 하드웨어 단계에 지식이 필요할 수 밖에 없다 비전공자는 따로 복수전공을 하지 않는 한 학부 시절 이런 지식을 공부하는 것이 쉽지 않고, 전공자라도 제끼고 안들은 사람들은 배웠어도 기억이 .. 2023. 9. 29.