좋은 부분이 너무 많아서 책을 많이 옮겨왔는데 혹시 문제가 된다면 말씀해주세요-! 제가 조금 재구성한 부분이 있기때문에 꼭 책을 읽어보시는 것을 추천드립니다. [ 요약 ] 상속 주의사항 1. 상속은 코드 재사용이 아니라 타입 계층을 구현하기 위해 쓴다. (서브클래싱이 아니라 서브타이핑을 한다.) 2. is-a 관계가 언어적으로 맞다고 상속관계를 막 쓰면 안된다. 행동호환성을 고려해야한다. [1] 상속의 목적 상속을 사용하는 일차적인 목표는 코드 재사용이 아니라 타입 계층을 구현하는 것이여야한다. 상속은 코드를 쉽게 재사용할 수 있는 방법을 제공하지만 부모 클래스와 자식 클래스를 강하게 결합시키기 때문에 설계의 변경과 진화를 방해한다. 반면 타입 계층을 목표로 상속을 사용하면 다형적으로 동작하는 객체들의 ..
좋은 부분이 너무 많아서 책을 많이 옮겨왔는데 혹시 문제가 된다면 말씀해주세요-! 제가 조금 재구성한 부분이 있기때문에 꼭 책을 읽어보시는 것을 추천드립니다. [1] 캡슐화 [ 캡슐화에 대한 오해 ] 많은 사람들이 객체의 캡슐화에 관한 이야기를 들으면 데이터 은닉(data hiding)을 떠올린다. 데이터 은닉이란 클래스의 모든 인스턴스 변수는 private으로 선언해야하고 오직 해당 클래스의 메서드 만이 인스턴스 변수에 접근 할 수있어야하다는 것이다. 그러나 캡슐화는 데이터 은닉 이상이다. 캡슐화란 단순히 데이터를 감추는 것이 아니다. 소프트웨어에서 변할 수 있는 모든 개념을 감추는 것이다. 코드 수정으로 인한 파급효과를 제어할 수 있는 모든 기법이 캡슐화의 일종이다. [ 캡슐화의 여러 종류 ] - 데..
좋은 부분이 너무 많아서 책을 많이 옮겨왔는데 혹시 문제가 된다면 말씀해주세요-! 제가 조금 재구성한 부분이 있기때문에 꼭 책을 읽어보시는 것을 추천드립니다. [1] 클래스의 응집도를 판단하는 세가지 방법 1. 변경의 이유 서로 연관성이 없는 기능이나 데이터가 하나의 클래스안에 뭉쳐 있으면 응집도가 낮은 것이다. 클래스가 하나 이상의 이유로 변경돼야한다면 응집도가 낮은 것이다. 변경의 이유에 따라 클래스를 분리하라 2. 인스턴스 변수가 초기화되는 시점 클래스의 속성이 서로 다른 시점에 초기화되거나 일부만 초기화된다는 것은 응집도가 낮다는 증거다. 응집도가 높은 클래스는 인스턴스를 생성할 때 모든 속성을 함께 초기화한다. 반면 응집도가 낮은 클래스는 객체의 속성 중 일부만 초기화되고 일부는 초기화되지 않은..
정말 정말 정말 좋은 책이다,, 좋은 예제와 쉽고 재밌는 글로 객체지향을 제대로 이해시켜주신다. (🥺💜) 저의 개발도서 TOP1 🏆🏅입니다. 기억하고 싶은 것을 기록합니다 ✏️ 좋은 부분이 너무 많아서 책을 많이 옮겨왔는데 혹시 문제가 된다면 말씀해주세요-! (예제도 함께 있는 책을 꼭 읽어보시는 것을 추천드립니다!) [1] 좋은 설계란? 좋은 설계란 오늘의 기능을 수행하면서 내일의 변경을 수용할 수 있는 설계다. 좋은 설계란 오늘 요구하는 기능을 온전히 수행하면서 내일의 변경을 매끄럽게 수용할 수 있는 설계다. [2] 좋은 객체지향 설계란? 좋은 객체지향 설계는 협력하는 객체들 사이의 의존성을 적절하게 조절함으로써 변경에 용이한 설계를 만드는 것이다. 구체적으로 말하면.. 객체지향의 본질은 협력하는 객..
Understanding Xcode Build System 이라는 포스팅을 읽었는데 대학생때 배웠던 Compile Process (전처리기 -> 컴파일러 -> 어셈블러 -> 링커) 에 여기저기서 주워들은(?) llbuild, SIL, clang 등 Xcode Build 관련 용어들이 단계별로 들어가있었습니다. 신기해서 기록합니다 ✏️ 저의 번역말고 원글을 읽어보시는 것을 추천드립니다. 이렇게 다섯단계인데 한 단계씩 살펴보겠습니다. [1] 전처리기 Preprocessor 전처리 단계의 목적은 컴파일러에 제공할 수 있는 방식으로 프로그램을 변환하는 것입니다. 매크로(macro)를 정의로 대체하고 dependencies를 발견하며 전처리기 지시문(preprocessor directives)를 해결합니다. Sw..
[ 문제 ] 유니티에서는 게임 실행 중일 때 값을 변경하면서 실시간으로 동작을 확인 할 수 있습니다. 하지만!! 게임 실행 중 바꾼 값은 저장되지 않습니다. 게임 실행을 끝내면 실행 전으로 되돌아갑니다. 근데 게임을 실행 -> 종료할때 모두 플레이버튼을 눌러야하고 토글 상태에 따라 플레이 버튼의 UI나 아이콘이 변하지 않습니다. 그래서 게임 실행 -> 플레이 버튼 안눌렀으면서 "플레이 버튼을 눌러서 게임을 종료시켰구나~" 라고 착각하고 위치 등 값을 바꿈 -> 헉,,, 게임실행 중 바꿔버린 값이여서 소용없음 -> 게임종료하고 다시 처음부터 바꿔줌,, 이런 일이 많았습니다,, 하지만 초보자를 위한 유니티 입문 책을 읽다가 '게임 실행 중에 실수로 값을 변경하지 않기 위한 팁' 을 알게 되었어요 (감동,, ..
[ 목표 ] 간단한 공굴리기 게임을 만들면서 오브젝트의 컴포넌트 중 Collider, RigidBody를 살펴봅니다. 그리고 Physics Material, Material도 함께 살펴보겠습니다. [1] 프로젝트 만들기 HelloBall 이라는 이름의 프로젝트를 만들어줍니다. SampleScene을 Main으로 이름바꾸고 저장해줍니다. [2] 공이 굴러갈 경사면 + 공 추가 3D Object > Cube 를 이용해서 경사면을 만들어줍니다. 3D Object > Sphere를 이용해서 공을 만들어줍니다. Main Camera를 선택하면 아래 Game Preview가 보이는데 (실제 게임에서 보이는 화면) 이걸 참고해서 오브젝트들을 위치시켜줍니다. [3] 공의 Sphere Collider 컴포넌트 살펴보기 ..
1탄에서 이어지는 글입니다 ✏️ [1] 뷰포리아 데이터베이스 생성 + 타겟 추가하기 애플리케이션이 이미지를 인식하고, 인식한 이미지를 사용하여 게임플레이를 실행하고 그래픽스 또는 정보를 표시하도록 허용하려면 Target database 를 생성해야 합니다. 타겟 관리자 페이지에서 타겟 데이터베이스를 생성할 수 있습니다. Add Database 눌러줍니다. Database이름은 플젝이름으로 해줬습니다,, (연습용이니까..! 나중에 이름바꿀수 있다고 합니다!) 생성이 완료되면 Add Target을 해줍니다. Single Image를 선택하고 이미지를 업로드 시켜줍니다. 이미지는 집에 있는 멍멍쓰 포스트잇을 찍어서 올렸습니다 🐶 width는 스케일 값인데 일단 1로 해줬어요 (참고) 이렇게 추가하면 Ratin..
저의 Unity 버전은 2019.4.18f1 Personal 입니다. [1] 뷰포리아(Vuforia) 란? Vuforia 는 - 마커기반 추적 - 무마커 추적 이렇게 두가지 추적을 제공해준다고 합니다. 마커 기반 추적은 이미지, 큐브, 원통, 3D 오브젝트를 마커로 인식할 수 있고 이 마커 위에 가상 콘텐츠를 띄워주는 것이라고 하네요. 저는 가장 간단하고 일반적이라고 하는 이미지 마커로 한번 해보겠습니다! [2] 뷰포리아 하드웨어, 소프트 웨어 요구사항 제가 필요한 부분만 문서에서 캡쳐한 거라서 문서를 꼭 읽어주세요..! 참고로 뷰포리아는 모바일 기기 뿐만아니라 AR glass 기기도 지원합니다. [3] 프로젝트 만들기 이 순서대로 하면 됩니다..! 우선 플젝을 만들어볼게요 플젝이 열리면 File > B..
클린 애자일은 회사에서 스터디하면서 읽었고 카이젠 저니는 데뷰 세션 주먹구구 게 섯거라 K-Agile이 나가신다 (우리에게 딱 맞춘 애자일로 함께 팀을 개선한 이야기) 에서 발표자님이 추천해주셔서 읽게 되었습니다. (소설이라 엄청 재밌을 것이라고 기대를 많이 해서 그런지,,, 별로 재미 없어서 후루룩 읽었습니다,,) 두 책을 읽으면서 애자일에 대해서 배운 것들 중 기억하고 싶은 것을 기록합니다. ✏️ [1] 애자일 (Agile) 이란? Agile은 기민한, 민첩한 이라는 뜻을 가지고 있는 단어 입니다. '작게 시도하고, 실패하고, 학습하고, 개선함으로써' 기민함을 확보하는 것이 애자일의 지향점입니다. [2] 소프트웨어에서 애자일 과학적 관리법 - 철저하게 분석하고 그에 따라 상세한 계획을 만들기 전까지는..
- Total
- Today
- Yesterday
- 장고 Custom Management Command
- cocoapod
- flutter 앱 출시
- Flutter getter setter
- PencilKit
- 장고 URL querystring
- Python Type Hint
- flutter deep link
- Sketch 누끼
- Watch App for iOS App vs Watch App
- 플러터 싱글톤
- 구글 Geocoding API
- github actions
- DRF APIException
- flutter build mode
- drf custom error
- Django Heroku Scheduler
- flutter dynamic link
- Flutter 로딩
- Django Firebase Cloud Messaging
- ribs
- Flutter Text Gradient
- Django FCM
- SerializerMethodField
- Dart Factory
- Flutter Clipboard
- METAL
- 플러터 얼럿
- ipad multitasking
- Flutter Spacer
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 |