본문 바로가기
반응형
[OOP] 상태 패턴 State Pattern 상태 패턴이란? 객체가 어떤 상태에 따라 다른 행위를 해야 할 때 사용합니다. 상태를 객체화해서, 상태객체가 행동을 대신하도록 위임하는 패턴을 말합니다. 자신이 직접 상태를 체크하여 상태에 따라 행위를 호출하지 않습니다. 스테이트 패턴은 코드내의 조건문들을 대체하려는 목적으로 사용됩니다. 상태 패턴을 사용하는 이유 패턴을 쓰지 않으면, 클래스에는 다음 요소들이 있을 것입니다. 상태를 담는 변수 상태를 결정하는 set 메소드 상태에 따라 행동하는 메소드 : switch문 또는 if else 체인 TV를 켜고 끄는 상황을 생각해봅니다. TV 전원이 켜진 상태에서 전원 버튼을 누르면, 전원을 끈다. TV 전원이 꺼진 상태에서 전원 버튼을 누르면, 전원을 켠다. 여기에 절전 상태가 추가되면 상태를 참조하는 메소.. 2022. 8. 19.
[OOP] 객체지향 기본 개념 요약 정리 1. Class 2. Object 3. 추상화 Abstraction 4. 캡슐화 Encapsulation 5. 상속 Inheritance 6. 다형성 Polymorphism 추상화 Abstraction 추상화란 구구절절한 내용들의 핵심만 추려내서 간단명료하게 만드는 것이다. 추상화를 통해 대상의 특성을 일반화하거나 세부사항을 제거하여 단순하게 만든다. 디테일을 제거 : 지하철 노선도 일반화 : 토끼, 개, 고양이는 동물 1. 데이터 추상화 & 제어 추상화 더보기 데이터 추상화 Data Abstraction 변수 : 메모리 위치를 우리가 지은 변수명으로 대신한다. 타입 : 자료 특성를 간단하게 표시한다. int, float, char 처럼. 배열 : 같은 타입의 연속된 변수들의 모음. int int int.. 2022. 8. 19.
[Unity] 유니티 동작 방식과 원리 본 포스팅은 유니티를 설명하기 위해 모노비헤이비어, 컴포넌트 패턴, 메시징 시스템을 다룹니다. 재사용은 곧 생산성 반복하지 말라는 DRY 원칙을 기억하시나요? 프로그래밍에서 코드의 재활용은 생산성에 큰 도움이 됩니다. 마찬가지로 유니티는 엔진에 내장된 방대한 코드 베이스를 제공하고 우리는 그것을 '재사용'합니다. 게임엔진을 사용하는 일은 곧 재사용을 의미합니다. 재사용은 게임 분야를 넘어 모든 개발에 널리 적용되는 개념입니다. 게임엔진은 재사용을 통해 생산성을 극대화합니다. 컴포넌트와 유니티 스크립팅 당신의 코드는 모노비헤이비어MonoBehaviour를 상속받음으로써 컴포넌트가 됩니다. 우리는 유니티가 제공하는 방식에 맞추어서 게임오브젝트를 제어해야만 합니다. 이러한 특성이 유니티 응용 프로그래밍을 "스.. 2022. 8. 19.
[Tips] 디버깅 탐구 2 - 코드를 읽는 방법 디버깅을 성공적으로 마치기 위해서는 코드를 잘 읽어야 합니다. 그래야만 엉뚱한 곳에 시간을 허비하지 않을 수 있습니다. 코드를 빠르게 이해하고 허점을 찾아내는 일은 종종 생각보다 쉽지 않습니다. 내가 쓴 오래된 코드를 보고 고칠 때 마치 남이 쓴 것처럼 낯설게 느껴집니다. 운이 나쁘다면 다른 사람이 일으킨 버그를 당신이 잡아야 할 수도 있습니다. 세 명의 실력있는 개발자들이 공유한 '코드를 이해하는 방법'―특히 디버깅에 있어서―을 소개합니다. 최종 결과를 내는 몇 줄의 코드를 찾아내어 역추적합니다. 원저자 : Alex Coleman 페이스북 엔지니어, 국제 대학생 프로그래밍 대회 결선진출 2회, 2018년도 북미 챔피언 예를 들어, 여러분이 봐야 하는 코드가 '영화 제목 목록'을 생성한다고 알고 있다고 .. 2022. 8. 17.
[Flutter] 기본 위젯 4 개 : 이미지, 텍스트, 아이콘, 박스 플러터 프로젝트를 켜고 첫 번째로 할 일 1. main 함수 빼고 다 지워줍니다. 2. stless를 입력해서 StatelessWidget 한 개를 커스텀으로 생성합니다. 3. Widget build 메소드 안에 있는 Container를 지웁니다. 4. 그 자리에 MaterialApp();을 작성합니다. import 'package:flutter/material.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { const MyApp({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return MaterialApp( title: .. 2022. 8. 17.
[Tips] 디버깅 탐구 1 - Interactive Debugging 좁은 의미에서 디버깅은 코드에서 어디에 문제가 있는지 정확히 찾아내서 고치는 것을 의미합니다. 잘못된 디버깅은 더 심각한 문제를 초래할 수 있습니다. 따라서 우리는 문제를 제대로 정의하고 절차에 따라 수정해야 합니다. 디버깅은 목적과 방식에 따라 분류할 수 있습니다. 디버깅의 종류 1. interactive debugging 2. integration testing 3. control flow analysis 4. log file analysis / print logs 5. unit testing 6. memory dumps 7. profiling Interactive Debugging 디버거를 이용한 디버깅 디버거를 활용하면 동적으로 값을 변경하면서 테스트해볼 수 있습니다. 제어 도구 사용법 1. St.. 2022. 8. 14.
[3ds Max] 용도에 따른 Vray 5 렌더 셋업 Vray를 기본 렌더러로 지정 결과물용 세팅 선택사항 : 저퀄 + 디노이저 vs 고퀄 Brute force는 첫 번째 광선 바운스를 계산합니다. Light cache는 첫 번째 바운스 이후 세 번째 바운스까지 계산을 담당합니다. Brute force는 빠르지만 노이즈가 생길 수 있습니다. 그러나 Brute force로 설정해야만 브이레이의 강력한 기능인 Vray Light Mix를 사용할 수 있습니다. Light Mix를 사용하면 장면을 "렌더링한 후에" 조명의 색상과 강도를 변경할 수 있습니다. Type을 바꿔가면서 원하는 느낌이 나올 때까지 렌더링해봅니다. Sub-pixel mapping은 대체로 유용합니다. 테스트 렌더링 세팅 성능 관련 세팅을 조정하여 빠르게 테스트합니다. 이와 반대로 설정하면 최.. 2022. 8. 12.
[Unity] NodeMCU와 유니티를 와이파이로 연결하기 (UDP) NodeMCU란? NodeMCU는 오픈소스 사물인터넷 플랫폼입니다. 와이파이 기능이 구현된 MCU 개발보드로 네트워크 기능을 사용할 수 있습니다. 아두이노와는 다르게 와이파이를 이용할 수 있으며 Micro5핀 케이블로 전원 및 데이터를 연결할 수 있어 편리합니다. NodeMCU의 핀을 아두이노 IDE에서 사용하기 위해서는 GPIO 번호를 참고해야 합니다. 보드에 있는 디지털 0번(D0)을 사용하고 싶다면 숫자 16을 사용하는 식입니다. 개발환경 준비 환경설정 하단의 Additional Boards Manager URLs: 에 다음의 텍스트를 붙여넣고 저장합니다. http://arduino.esp8266.com/stable/package_esp8266com_index.json 이제 보드 매니저를 통해 패키.. 2022. 8. 11.
[Unity] 유니티 아두이노 블루투스 연결하기 저는 블루투스모듈 ZS-040을 이용했습니다. 다른 모델도 방식은 동일합니다. 아두이노 블루투스 테스트 회로 연결 회로도와 같이 연결합니다. TX는 2번 핀, RX는 3번 핀 아두이노 코드 업로드 #include SoftwareSerial mySerial(2, 3); // RX, TX void setup() { Serial.begin(9600); mySerial.begin(9600); } void loop() { if (mySerial.available()) Serial.write(mySerial.read()); if (Serial.available()) mySerial.write(Serial.read()); } Bluetooth Terminal을 설치 먼저 연결할 대상(PC등)과 아두이노 블루투스 모듈.. 2022. 8. 6.
[Unity] 유니티와 아두이노 USB로 연결하기 Arduity는 아두이노 뿐만 아니라 COM포트를 통해 통신하는 모든 하드웨어와 소프트웨어에 사용할 수 있습니다.유니티 설치, 아두이노 설치는 되어 있다고 생각하고 넘어가겠습니다.유니티 버전은 2020.3.35f1입니다. Ardity 다운로드 https://ardity.dwilches.com/ Ardity: Arduino + Unity over COM ports Want to connect your Arduino to Unity over a COM port? Ardity allows bidirectional communication over COM ports from Unity®. (Previously known as: SerialCommUnity) ardity.dwilches.com Arduity 패키.. 2022. 8. 5.
[Flutter] VSCode에서 프로젝트 시작하기 프로젝트 생성 ctrl + shift + p > Flutter New Project 프로젝트 구조 pubspec.yaml : 프로젝트의 메타데이터 즉 사용환경을 정의 android / ios폴더 test 폴더 : 각종 Dart 파일을 테스트하는 곳 lib > main.dart : 핵심 작업 공간 기본 코드 runApp()은 플러터의 최상위 함수입니다. 이 메소드는 반드시 위젯을 받아야 합니다. MyApp 위젯은 뼈대이므로 변하지 않는 위젯, Stateless Widget이 됩니다. stl 약어를 이용해서 코드스니펫을 불러오고 클래스 명을 MyApp으로 합니다. Container는 MaterialApp으로 바꿔줍니다. 머티리얼 패키지의 모든 기능을 활용할 수 있게 됩니다. 2022. 8. 4.
[Flutter] Stateless Widget과 Stateful Widget 차이 (+LifeCycle) 차이점 StatelessWidget은 그려지고 나면 변화가 없는 요소 StatefulWidget은 다시 그려질 수 있는 요소 양쪽 모두 State를 생성합니다. (Mutable / Immutable State) 라이프 사이클 StatelessWidget은 한 번 그려지면 끝입니다 StatefulWidget의 라이프 사이클 주요 메소드 createState() 새로운 Stateful 위젯을 만들 때 생성되며 state 인스턴스를 반환합니다. class MyHomePage extends StatefulWidget { @override _MyHomePageState createState() => _MyHomePageState(); } mounted(true) State object를 생성하면, 프레임워크는 m.. 2022. 8. 4.
[Flutter] 맥에서 flutter doctor 실행 안 되는 문제 해결방법 맥 터미널에서 flutter doctor가 실행되지 않을 때 해결방법 터미널에서 홈 경로로 이동합니다. cd ~ ".bash_profile" 파일이 있는지 확인하고 없으면 생성합니다. 존재여부 확인 방법입니다. 만약 있으면 파일이 열립니다. ls -la .bash_profile 생성 touch .bash_profile ".bash_profile"을 열어줍니다. open .bash_profile 열린 ".bash_profile"에 path를 입력하고 저장합니다. * 아래처럼 입력하되 대괄호는 쓰지 않습니다 * export PATH=${PATH}:[~SDK위치~]/flutter/bin Cmd + S로 저장합니다. 터미널로 돌아와서 방금 변경한 .bash_profile 파일을 적용합니다. source .bas.. 2022. 8. 4.
[Flutter] 플러터 3.x 설치 및 환경설정 iOS, Android, Web Flutter 3.x 설치 및 환경설정 순서 시스템 최소 요구사항 확인 Flutter SDK 받기 환경변수 업데이트 Flutter Doctor 실행 플랫폼 설정 (Android / IOS) 추가 설정 플러터 3.x 버전의 설치 과정을 한 문서에서 볼 수 있도록 작성했습니다. 본 가이드를 따르면 Mac, Windows, IOS, Android, Web 개발을 위한 모든 환경설정을 마칠 수 있습니다. 시스템 최소 요구사항 확인 윈도우 : Windows 10 or later (64-bit), x86-64 based. 여유 공간 : 1.64 GB 설치 도구 : PowerShell 5.0+ 또는 Git for Windows 2.x+ 맥 : macOS 여유 공간 : 2.8 GB 설치 도구 : Xcode와 Git 플.. 2022. 8. 4.
반응형