반응형

공부 624

📺 전설적인 프로그래머들의 조언

📺 전설적인 프로그래머들의 조언 1️⃣ 지식을 습득하는 것보다 가치 있는 제품을 만드는 것이 중요하다 - John Carmack 2️⃣ 윤리적인 선택을 통해 더 나은 미래를 만들어라 - James Gosling 3️⃣ 개발자라면 적어도 다섯가지 언어를 사용할 줄 알아야 한다 - Bjorn Strawstrop 4️⃣ 프로그래밍은 문제를 해결하는 과정에서 배우게 되는 것이다 - George Hots 5️⃣ 훌륭한 개발자가 되기 위해선 호기심, 배우고자 하는 자세가 중요하다 - Travis Oliphan 출처 : 커리어리 '하조은'님 https://careerly.co.kr/comments/72647?utm_campaign=user-share 하조은 / 전설적인 프로그래머들의 조언 | 커리어리 1️⃣ 지식을 ..

공부/자기계발 2023.01.31

인터페이스(interface)의 개념

1. 인터페이스란? 인터페이스는 특정 기능을 구현할 것을 약속한 추상 형식을 말합니다. Java나 C# 등의 다른 객체 지향 언어에서는 인터페이스 형식을 제공하지만, C++언어에서는 인터페이스 형식을 제공하지는 않지만 순수 가상 메서드를 이용하여 정의할 수 있습니다. 인터페이스는 멤버 필드나 구체적으로 구현한 메서드를 갖지 않고 특정 기능을 약속한 메서드만 갖습니다. 그리고 모든 멤버는 사용하는 개발자와의 약속으로 모든 멤버를 public으로 접근 지정합니다. C++ 언어에서는 구조체(struct)의 기본 값이 public 이여서 구조체를 이용하여 인터페이스를 정의하는 이들도 많습니다. 물론 클래스(class)를 통해서 인터페이스를 만들 수 있습니다. 아래 예제는 구조체와 클래스를 이용하여 인터페이스의 ..

공부/C++ 2023.01.25

학습력 강화하려면 손으로 받아 쓰세요

학습력 강화하려면 손으로 받아 쓰세요 자기 계발을 효과적으로 하려면 학습을 효과적으로 해야 합니다. 학습할 때 노트를 받아 적는데, 손으로 받아써야 습득력이 강하다고 하네요. 관련 아티클 정리해서 올립니다. 1️⃣ 손으로 받아쓰기는 독해력을 강화한다 인간은 시각적으로 학습한다. 글쓰기에도 똑같이 적용된다. 시각적 학습을 생각하면 사람들을 주로 이미지나 동영상을 떠올리지만, 문자와 단어도 사회적 의사소통 형태인 시각적 표현이다. 손글씨는 글을 배우는 사람들의 개성을 드러낸다. 글과 단어를 그들만의 형식으로 인식하고 손글씨로 받아쓴다. 한 연구에 의하면 반복적이고 창의적인 필체가 독해력과 언어 인식 능력을 강화하는 것을 보여준다고 한다. 2️⃣ 손으로 받아 쓰면 촉각적인 정보 기억을 만들어낸다 학습의 가장 ..

공부/자기계발 2023.01.24

추상 클래스(abstract class)의 개념

C++에서는 하나 이상의 순수 가상 함수(Virtual Function)를 포함하는 클래스를 추상 클래스(abstract class)라고 합니다.이러한 추상 클래스는 객체 지향 프로그래밍에서 중요한 특징인 다형성을 가진 함수의 집합을 정의할 수 있게 해줍니다. 즉, 반드시 사용되어야 하는 멤버 함수를 추상 클래스에 순수 가상 함수로 선언해 놓으면, 이 클래스로부터 파생된 모든 클래스에서는 이 가상 함수를 반드시 재정의해야 합니다. 추상 클래스는 동작이 정의되지 않은 순수 가상 함수를 포함하고 있으므로, 인스턴스를 생성할 수 없습니다. 따라서 추상 클래스는 먼저 상속을 통해 파생 클래스를 만들고, 만든 파생 클래스에서 순수 가상 함수를 모두 오버라이딩하고 나서야 비로소 파생 클래스의 인스턴스를 생성할 수 ..

공부/C++ 2023.01.24

✍🏻 개발자로서 느꼈던 것들 - 희망편

✍🏻 개발자로서 느꼈던 것들 - 희망편 개발자로서 느꼈던 감정을 짧은 글로 담았습니다. 희망이 될진 모르겠지만 개발하면서 이런 재밌는 일, 뿌듯한 일도 종종 있다고 말해주고 싶었습니다. 1️⃣ 천재 새로운 카드 UI를 그려야 한다. 왼쪽에 이미지가 하나 있고 오른쪽에 텍스트 그리고 하단에 양쪽을 가로지르는 긴 버튼 하나. 오케이. 브라우저를 켜기 전에 간단하게 일단 대충 구조를 잡자. 스타일은 몇 가지만 주면 될 것 같은데...? 흠... flex를 써볼까 grid? 일단 flex로 해보고... 좋아. 이제 브라우저를 켜서 확인을... 어? 한 번에 됐네? 천잰가? 2️⃣ 진리 그럴 리가 없다. 코드에는 문제가 없어. 분명 잘 되던 코드란 말이지. 왜 계속 에러가 나는 거야. 패키지가 꼬였나? 싹 지우고..

공부/자기계발 2023.01.24

malloc과 new의 차이점, free와 delete의 차이점

1. malloc과 new의 차이점 malloc()은 힙에 메모리를 할당하는 C/C++ 표준 라이브러리의 함수입니다. new는 힙에 메모리를 할당하는 C++의 연산자이지만 객체 초기화하기 위해 생성자를 호출하기도 합니다. 둘 사이의 주요 차이점은 malloc()은 메모리만 할당하는 반면 new는 객체도 초기화한다는 것입니다. 또한 malloc()은 올바른 유형으로 캐스팅되어야 하는 무효 포인터를 반환하고, new는 올바른 유형에 대한 포인터를 반환합니다. malloc에 의해 할당된 메모리로 작업을 마치면 free()를 호출하여 메모리 할당을 해제해야 하는 반면 new의 경우 delete를 호출합니다. 2. free와 delete의 차이점 free()는 이전에 malloc()에 의해 할당된 메모리를 할당 ..

공부/C++ 2023.01.18

알아 두면 좋은 깃허브 오픈 소스 10가지

알아 두면 좋은 깃허브 오픈 소스 10가지 1️⃣ crsql https://github.com/vlcn-io/cr-sqlite crsql (Convergent, Replicated SQLite)는 SQLite에 대한 CRDT를 지원하는 multi-writer이다. 공통 스키마를 공유하는 데이터베이스를 병합할 수 있다. 2️⃣ GreptimeDB https://github.com/grepTimeTeam/greptimedb/ 그렙타임DB는 클라우드 네이티브 분산 시계열 데이터베이스다. 그렙타임DB는 시계열 데이터, 인덱스 옵션, 네이티브 SQL, Python 스크립팅 등을 처리하기 위해 최적화된 컬럼지향 레이아웃을 제공한다. 3️⃣ Openblocks https://github.com/openblocks-d..

공부/자기계발 2023.01.18

new와 delete의 개념 및 차이점

1. new와 delete의 개념 C++에서 "new"는 런타임에 개체 또는 개체 배열에 대한 메모리를 동적으로 할당하는 데 사용됩니다. 반면에 "delete"는 "new"를 사용하여 이전에 할당된 메모리 할당을 해제하는 데 사용됩니다. "new"는 생성되는 객체의 생성자를 호출하고, "delete"는 삭제되는 객체의 소멸자를 호출합니다. 메모리 누수를 방지하려면 "delete"를 사용하여 "new"를 사용하여 할당된 메모리를 할당 해제하는 것이 중요합니다. 2. new와 delete의 사용 예제 다음은 new와 delete를 사용한 C++ 예제입니다. 새로 할당된 메모리 블록의 시작 부분에 대한 포인터를 반환합니다. int* pInt = new int; new를 사용하여 객체 배열을 할당할 수도 있습니..

공부/C++ 2023.01.17

시니어 엔지니어의 5가지 습관

시니어 엔지니어의 5가지 습관 ❶ 메모하기 모든 톱엔지니어들은 노트를 적는 시스템이 있습니다. 노션부터 텍스트파일까지 다양합니다. 질문들, 배웠던 것들, 키 데이터, 대응해야하는 것들을 적습니다. 메모하는 것에 관심을 가지고 실천해보세요. ❷ 피드백 루프를 단축하기 소프트웨어 개발은 모두 피드백에 대한 것입니다. 1. 코드를 변경했다면, 테스트를 실행하세요. 2. 버그를 수정했다면 재현해보세요. 3. 마켓에 제품을 출시했다면, 출시한 제품을 실행해봐야합니다. 그리고 출시와 실행을 반복하세요. 최고의 엔지니어들은 피드백 시간을 줄이기 위해 최선인 사람들입니다. 무언가 잘못되었을 때 빠르게 우선순위를 세우고 빠른 피드백을 받기위해 테스트를 합니다. 자주 실행하고 테스트하고 커밋을 합니다. 디버깅을 위한 작은..

공부/자기계발 2023.01.17

malloc과 free의 개념 및 차이점

1. malloc() malloc은 런타임 중에 메모리를 할당하는 C 언어의 함수입니다. 이는 할당할 메모리의 바이트 수를 단일 인수로 사용합니다. 만약 할당에 성공할 경우, 할당된 메모리의 시작에 대한 포인터를 반환합니다. 만약 할당에 실패하면 NULL을 반환합니다. 2. free() free는 이전에 malloc과 같은 함수를 이용해 할당한 메모리를 해제하는 C 언어의 함수입니다. 포인터에서 free가 호출되면 포인터가 가리키는 메모리는 프로그램에서 재사용할 수 있습니다. 메모리 누수를 방지하기 위해 더 이상 사용하지 않은 메모리에 free() 함수를 이용하여 여유 공간을 확보하는 것이 중요합니다. 3. malloc() 함수와 free() 함수의 예제입니다. #include int main() { i..

공부/C 2023.01.16

🕊️ 주니어 개발자들의 8가지 일반적인 실수

🕊️ 주니어 개발자들의 8가지 일반적인 실수 레벨이 높아지면 좋을 것만 같은데, 의외로 시니어 엔지니어가 되는 것을 꺼리는 분들이 많습니다. 많은 이유 중에 한가지는, 주니어 때는 허용 가능하던 실수들이 시니어에겐 더이상 관대한 눈으로 바라 봐 주지 않기 때문입니다. 그들에게는 실수를 저지르는 수 많은 시간들이 있었고, 어쩌면 그들의 경험이 주니어에게 또 하나의 실수를 저지르는 상황을 피하는 데 도움이 되겠습니다. 이번에는 '주니어 개발자들의 8가지 일반적인 실수'를 가져왔습니다. 1️⃣ 도움을 요청하지 않는다. 프로그래밍은 어렵습니다. 다양한 기술과 패턴을 인식하고, 언제 어떤 기술을 사용할지 알 수 있어야 합니다. 처음 시작할 때, 당신을 올바른 방향으로 인도하고 잘못된 것을 알려줄 누군가가 필요합니..

공부/자기계발 2023.01.16

포인터(pointer)란?

포인터란? 포인터는 다른 변수의 메모리 주소를 보유하는 변수입니다. 포인터는 메모리를 직접 조작하는 데 사용되며 많은 프로그래밍 언어, 특히 C 및 C++와 같은 수동 메모리 관리 기능이 있는 프로그래밍 언어의 기본 개념입니다. 포인터 변수는 다른 변수의 메모리 주소를 보유하며 이 주소는 포인터를 통해 액세스하고 조작할 수 있습니다. 포인터 변수가 역참조되면(포인터 변수 앞에 별표(*)를 붙임) 보유하고 있는 메모리 주소에 저장된 값을 반환합니다. int x = 5; int* p = &x; int y = *p; 예를 들어 값이 "5"인 변수 "x"와, "x"의 메모리 주소를 보유하는 포인터 변수 "p"가 있는 경우, 다음 코드를 사용하여 포인터를 역참조하고 값을 가져올 수 있습니다. 여기서 변수 "p"는..

공부/C++ 2023.01.15

자신을 Java/Spring 개발자라고 소개하지 않기

자신을 Java/Spring 개발자라고 소개하지 않기 최근에 많이 줄어들기는 했지만, 여전히 자신을 Java/Spring 개발자라고 소개하는 사람을 종종 만난다. 나는 그 소개가 자신의 전문성을 제대로 드러내지 못하는 표현이라고 생각한다. 📣 전문 분야가 모호한 표현 개발자는 웹 애플리케이션, 데스크톱 애플리케이션, 모바일 애플리케이션, 게임, 로봇, 운영 체제, 네트워크 시스템 등과 같은 다양한 분야의 애플리케이션을 개발한다. 그 과정에서 적합한 프로그래밍 언어나 프레임워크부터 사용자 인터페이스, 데이터베이스, 메시징 솔루션 등 여러 가지 도구와 기술을 사용한다. 복잡한 현대 애플리케이션을 개발하기 위해서는 애플리케이션별로 전문화된 지식과 풍부한 경험을 갖춘 개발자가 필요하다. 그래서 개발하는 분야의 ..

공부/자기계발 2023.01.15

디자인 패턴(Design pattern)이란?

디자인 패턴이란? 디자인 패턴은 소프트웨어 개발에서 발생하는 일반적인 디자인 문제에 대한 솔루션입니다. 개발자가 반복되는 문제를 일관되고 효율적인 방식으로 해결할 수 있는 방법을 제공합니다. 디자인 패턴에는 다양한 패턴들이 존재합니다. 여기서는 크게 생성 패턴, 구조 패턴, 동작 패턴 등에 대해서만 알아보겠습니다. 1. 생성 패턴 이 패턴은 개체 및 클래스 생성에 중점을 둡니다. 생성 패턴의 예로는 생성될 객체의 정확한 클래스를 지정하지 않고 객체를 생성하는 방법을 제공하는 팩터리 패턴과 클래스에 인스턴스가 하나만 있음을 보장하는 싱글톤 패턴이 있습니다. 2. 구조 패턴 이 패턴은 객체와 클래스의 구성에 중점을 둡니다. 구조적 패턴의 예로는 호환되지 않는 인터페이스가 있는 클래스가 함께 작동하도록 허용하..

공부/기타 2023.01.15

<🌱 주니어 개발자가 알았으면 하는 10가지>

주니어 개발자가 다음 단계로 도약하기 위해서는 어떤 것들을 알아야 할까요? 제가 주니어였을 때를 생각해보면, 일을 잘하고 싶은 마음은 큰데 모르는 게 많아 막막했던 기억이 납니다. 그런 분들을 위해 Kamran Ahmed님이 적어 주신 주니어 개발자를 위한 조언 중 꼭 필요하다고 생각되는 10가지를 선정해 보았습니다! 1. 몰라도 괜찮습니다. 모른다는 것을 부끄러워하지 마세요. ‘이런 건 바보 같은 질문일까?’라고 고민할 시간에 하나라도 더 질문해야 일의 효율성을 높일 수 있습니다 (물론 물어보기 전에 검색해 보는 건 기본이지만요). 2. 코드를 많이 읽어보세요. 업무에서 사용하는 코드 외에도 오픈소스 코드, 라이브러리/프레임워크 코드 등 잘 쓰여진 코드를 읽고 배우세요. 3. 업무 외 사이드 프로젝트를..

공부/자기계발 2023.01.15

인스턴스(instance)란?

인스턴스란? 객체 지향 프로그래밍에서 클래스의 특정 발생 또는 구현을 말합니다. 클래스는 객체 생성을 위한 템플릿이며 인스턴스는 해당 클래스에서 생성된 특정 객체입니다. 예를 들어, 제조사, 모델, 색상 및 바퀴 수와 같은 자동차의 속성과 메서드를 정의하는 "Car"라는 클래스가 있다고 가정해 보겠습니다. "Car" 클래스의 인스턴스는 네 바퀴가 달린 빨간색 Ford Mustang과 같은 특정 자동차입니다. 클래스의 인스턴스를 만들면 고유한 상태와 동작이 있는 새 개체를 만드는 것입니다. 객체의 상태는 속성으로 표현되고 객체의 동작은 메서드로 표현됩니다. 클래스의 인스턴스를 생성하는 것을 인스턴스화라고도 합니다. 대부분의 프로그래밍 언어에서는 객체를 인스턴스화하기 위해 키워드 "new" 다음에 클래스 이..

공부/OOP 2023.01.15

🕊️ 코딩테스트 습관을 들이는 4가지 방법

🕊️ 코딩테스트 습관을 들이는 4가지 방법 사실 단시간 안에 코딩테스트를 준비하기란 어려운 일입니다. 코딩테스트는 알고리즘과 문제 해결 능력 그리고 많은 풀이 경험을 필요로 하는데, 많은 개발자들은 일상적인 업무에서 이를 접하지 못합니다. 그러나 언제 어디에서 기회가 올 지 모르기 때문에, 본인이 목표하는 회사가 코딩테스트를 필요로 한다면 항상 준비해 두어야 하겠죠. 이번에는 '리트코드 습관을 들이는 방법'을 요약해 보았습니다. 비단 코딩테스트 뿐만 아니라 습관을 들이고 싶은 모든 것에 해당하는 것 같습니다. 1️⃣ 명백하게 만들어라 습관의 가장 일반적인 2가지 신호는 '시간'과 '장소' 입니다. [현재 습관] 이후에, [새로운 습관] 공식을 따르세요. '나는 헬스장에 가기 전에, 카페에 가서 코딩테스트..

공부/자기계발 2023.01.15

객체지향의 5대 원칙

1. 객체 지향의 5대 원칙의 개념 SOLID 원칙이라고 알려진 이 원칙은 로버트 마틴(Robert Martin)이 라는 책에서 객체 지향 프로그래밍 및 설계의 다섯 가지 원칙을 SOLID라는 약어로 소개한 것입니다. 2. 객체 지향의 5대 원칙 객체 지향 설계의 다섯 가지 기본 원칙은 다음과 같습니다. 1. S (SRP : Single Responsibility Principle) 클래스는 변경할 이유가 하나만 있어야 합니다. 즉, 하나의 책임만 있어야 합니다. 2. O (개방/폐쇄 원칙(Open/Closed Principle)) 클래스는 확장에는 열려 있어야 하지만 수정에는 닫혀 있어야 합니다. 즉, 기존 코드를 수정하지 않고도 새로운 기능을 포함하도록 확장할 수 있어야 합니다. 3. L (Lisko..

공부/OOP 2023.01.15

<👩🏻‍💻 개발자 직급 별 차이점>

연차가 높아지면서 사람들이 스스로에게 하는 질문이 있습니다. "나는 내 직급에 맞는 실력과 역량을 갖추고 있을까?" 그런데 이 '직급에 맞는 실력과 역량'이라는 게 정확히 무엇일까요? 회사에서 직급에 따라 기대하는 바가 정확히 정의되어 있으면 그나마 낫겠지만, 그렇지 않은 경우 스스로 이를 파악해야 합니다. 오늘 글에서는 Kamran Ahmed님이 정의한 주니어, 미드 레벨, 시니어 개발자의 차이를 소개드립니다! 🌱 주니어 개발자 - 코드를 작동하게 하는 것에만 주로 집중함. ‘작동하는 코드 = 좋은 코드’라고 생각함. - 업무를 받을 때 구체적이고 잘 정리된 요구사항을 받아야 진행 가능. - 일을 하다 막히면 직접 해결하기보다는 시니어의 도움을 필요로 함. - 문제가 있을 때 그 문제의 근본 원인을 파..

공부/자기계발 2023.01.15

객체지향의 개념과 객체지향의 4대 특징

객체 지향이란 프로그래밍이란? 객체와 상호 작용을 사용하여 응용 프로그램과 컴퓨터 프로그램을 설계하는 프로그래밍 패러다임입니다. 데이터와 해당 데이터를 조작하는 코드를 포함할 수 있는 "객체" 개념을 기반으로 합니다. 객체는 객체를 만들기 위한 청사진 또는 템플릿인 클래스의 인스턴스입니다. 클래스는 해당 클래스의 개체가 가질 속성(데이터 멤버) 및 메서드(함수)를 정의합니다. 예를 들어 "Car" 클래스는 "make", "model" 및 "year"와 같은 속성과 "start()" 및 "drive()"와 같은 메서드를 가질 수 있습니다. 객체지향의 4대 특징은 다음과 같습니다. 1. 상속 상속은 클래스가 다른 클래스의 속성과 메서드를 상속할 수 있도록 하는 OOP의 기본 개념 중 하나입니다. 다른 클래스..

공부/OOP 2023.01.14
반응형