320x100

전체 글 435

실용주의 프로그래머

1. 고양이가 내 소스코드를 삼켰어요 "가장 큰 약점은 약점을 보일 것에 대한 두려움이다." 실용주의 철학의 초석 중 하나는 경력 향상, 프로젝트, 일상 업무의 면에서 자신과 자신의 행동에 대해 책임을 지는 것이다. 다른 사람이나 다른 무언가를 비난하거나 변명을 만들어 내지 말라. 모든 문제가 벤더, 언어, 경영진 혹은 동료 때문이라고 떠넘기지 말라. 이들이 모두 한몫씩 했을 수 있겠지만 변명이 아닌 해결안을 제공하는 것은 여러분에게 달려 있다.소스코드가 날아갔는데 백업이 없다면 여러분의 잘못이다. '고양이가 내 소스코드를 삼켰어요'라고 상관에게 말하는 것은 별 도움이 안 될 것이다. "어설픈 변명을 만들지 말고 대안을 제시하라" 변명 대신에 대안을 제시하라. 안 된다고 하지 말고 상황을 개선하기 위해 ..

도서/IT 2022.02.14

백세코딩

이력서 작성시 1. 지원하는 회사 이름을 명확하게 써라. 더보기 '귀사'나 '당사' 같은 단어를 사용하면 지원한 회사에 대한 애정이 없거나 이력서 돌려막기 처럼 보인다. 매우 성의 부족이다. 2. 향후 포부는 너무 거창하게 제시하지 마라. 더보기 '회사에 입사해 충성하겠다'는 흉내는 기본적인 예의이다. 다른 회사들을 언급하지 않는다. 3. 사진은 전형적인 사진이 좋다. 4. 이모티콘을 사용하지 마라. 5. 적절한 연봉을 제시해라. 더보기 연봉 기준을 따르겠다는 이야기는 안 적는게 현명하다. 적정한 수준의 연봉을 제시하는 사람이 자신의 역할과 능력, 지원하는 자리에 대해 어느정도 고민한 사람으로 보인다. 6. 단점을 너무 나열하지 마라. 더보기 그것은 솔직한 것이 아니라 떨어뜨려 달라고 하는 것이다. 회사..

도서/IT 2022.01.30

벡터 정리

벡터: 벡터의 덧셈: 두 벡터를 더하려면 양쪽 벡터의 각 성분을 더해야 한다. 벡터의 뺄셈: 벡터에서 벡터를 빼려면 다음과 같이 두 벡터의 각 성분을 빼야 한다. 두 점을 잇는 벡터를 만들 수 있다는 뺄셈의 특징은 게임 내에서 빈번하게 쓰인다. 예를 들어 화살표로 방향을 지시하는 UI를 만들어야 할 때 화살표의 방향은 플레이어의 위치에서 목적지를 잇는 벡터의 방향과 같아야 하며 다음과 같이 계산할 수 있다. arrowVector = objective.position - player.position 벡터의 길이: 벡터의 길이를 계산하는 공식은 다음과 같다. 흔히 거리를 구하는 공식과 동일하며, 실제로 원점과 벡터가 가리키는 위치 사이의 거리를 계산하는 공식이다. 두 객체간 거리를 정확하게 구해야 한다면 공..

카테고리 없음 2022.01.23

IEnumerator 와 IEnumerable의 차이점

C#을 배워가며 정리하는 것이므로 틀린 내용이 존재할 수 있다. IEnumerable은 IEnumerator를 반환하는 것이고, IEnumerator는 요소 반복을 위한 실제적인 함수의 인터페이스를 제공한다. IEnumerable public interface IEnumerable { IEnumerator GetEnumerator(); } class Program { static IEnumerable GetNumber() { yield return 10; yield return 20; yield return 30; } static void Main(string[] args) { foreach (int num in GetNumber()) { Console.WriteLine(num); } } } IEnume..

프로그래밍/C# 2022.01.18

[생성 패턴] - 빌더(Builder)

구조 #pragma once #include #include class ISubject { public: virtual void Operation() = 0; virtual void SetName(std::string& name) = 0; }; class Subject : public ISubject { public: void Operation() override { std::cout SetName("SubjectA"); ISubject* subject = builder->GetSubject(); subject->Operation(); system("pause"); return 0; } 생성자를 통해 객체(Subject)를 직접 생성하는 대신에, 빌더 객체(Builder)가 객체의 생성을 대신 수행하게 ..

프로그래밍/GoF 2022.01.12

[생성 패턴] - 추상 팩토리(Abstract Factory)

구조 #pragma once #include class IProduct { public: virtual void Operation() = 0; }; class IAbstractFactory { public: virtual IProduct* CreateProduct() = 0; }; class ProductA : public IProduct { public: void Operation() override { std::cout Operation(); system("pause"); return 0; } 구조의 생성을 수행하는 팩토리 클래스(AbstractFactory)를 정의하여 클라이언트가 팩토리 클래스의 인터페이스(CreateProduct())를 통해 구조를 생성할 수 있게 한다. 추상 팩토리 구조의 생성..

프로그래밍/GoF 2022.01.12

[구조 패턴] - 프록시 (Proxy)

구조 #pragma once #include class Subject { public: virtual void request() = 0; }; class RealSubject : public Subject { void request() override { std::cout request(); return 0; } 프록시 객체는 웨이터와 같이 클라이언트와 객체 사이의 중개를 담당한다. 클라이언트로부터의 요청을 대신 받고, 이를 실제 객체에게 전달한다. 그러므로 프록시는 클라이언트에게 실제 객체와 동일한 인터페이스를 제공하나, 실제 객체에 대한 정보를 클라이언으로부터 은닉시킨다. 또한 프록시에 별도의 로직을 추가함으로써 실제 객체의 흐름을 제어할수도 있다.

프로그래밍/GoF 2022.01.12
320x100