본문 바로가기
반응형
[OOP] Encapsulation, 캡슐화란 무엇인가 캡슐화의 정의 캡슐화(Encapsulation)라는 이름은 두 가지 특성을 묘사하고 있습니다. 그 두 가지는 곧, 데이터와 기능을 '감추는 특성'과 '모으는 특성'을 말합니다. 접근지정자를 통해 데이터를 감춥니다. 속성(Data fields)과 행위(Methods)를 클래스로 모읍니다. 우리는 어떠한 클래스를 사용할 때, 그 클래스의 모든 측면을 이해하고 사용할 필요가 없습니다. 만약 그래야만 한다면 수많은 프로그래머들이 한 프로그램을 작성하기란 불가능한 일이 됩니다. 우리는 클래스 내부가 어떻게 되어 있는지 몰라도 됩니다. 다르게 말하면, 언제나 "몰라도 되게 끔 프로그래밍"해야만 합니다. 당신은 남이 만든 코드를 사용할 때, 코드의 작성자가 '당신이 볼 수 있도록 외부로 드러낸 것', '사용을 허가해.. 2022. 8. 26.
[Web] p5.js 스케치 성능 최적화 방법으로 프레임레이트 높이기 최적화 방법 리스트 p5.min.js 를 p5.js로 변경 코드에서 익명 함수를 쓰지 말 것 아래 코드 한 줄 추가 : 예기치 않은 인수 입력을 경고하지 않음 p5.disableFriendlyErrors = true; p5 메소드보다 빠른 자바스크립트 네이티브 코드를 활용 Chrome, running methods 10000000x times: p5.random took: 283.88ms Math.random took: 190.01ms p5.sin took: 481.14ms Math.sin took: 338.33ms p5.min took: 781.41ms Math.min took: 538.15ms p5 Editor, running methods 10000000x times: p5.random took: .. 2022. 8. 26.
[Web] GSAP 메소드 매개변수와 효과의 종류 Transform gsap 메소드의 매개변수로 var 변수를 받는다. 매개변수들 중 CSS Transform에 접근하는 방법을 표로 보여주고 있다. GSAP CSS Explanation x: 100 transform: translateX(100px) Move horizontally (px or SVG units) y: 100 transform: translateY(100px) Move vertically (px or SVG units) xPercent: -50 transform: translateX(-50%) Move horizontally (percentage of element's width) yPercent: -50 transform: translateY(-50%) Move vertically (p.. 2022. 8. 26.
[Web] GSAP 객체 기본 사용 방법 gsap 객체 GSAP는 모션 보간Tween을 하기 위해 gsap 메소드를 사용합니다. Tween은 그럼 어떤 변수를 조작할 수 있을까요? DOM요소가 가지고 있는 대부분의 속성을 조작할 수 있습니다. 우리는 투명도, 위치, 숫자, 문자처럼 변경될 가능한 값을 대부분 움직일 수 있습니다. 트윈을 만드는 세 가지 일반적인 방법을 알아보겠습니다. gsap.to() 가장 일반적인 유형으로 대상 값을 어딘가로 다가가게 하는 값입니다. 예제 코드는 box 클래스를 1초 동안 회전(+27도) 및 이동(x+100)시킵니다. gsap는 현재 값을 자동으로 파악합니다. 시작값이 필요하지 않습니다. gsap.to(".box", {rotation: 27, x: 100, duration: 1}); gsap.from() DOM.. 2022. 8. 26.
[Web] 자바스크립트 애니메이션 라이브러리 GSAP 세팅 방법 GSAP란? Professional-grade JavaScript animation for the modern web 위는 Greensock 팀 공식 사이트 대문에 있는 GSAP 소개문입니다. GSAP는 빠르고, 견고하고, 호환성 높은 코드 품질을 추구합니다. 브라우저나 기기 환경에 따른 오작동이 적어서 다른 라이브러리에 비해 신뢰성이 높습니디. 저는 아무래도 의심이 가서 모바일 환경에서 GSAP를 여러 번 테스트했지만 별다른 문제점을 발견하지 못했습니다. GSAP 코어와 플러그인을 조합하여 웹 상에 애니메이션을 표시할 수 있습니다. 설정을 마치고 여기서 Get Started 한글 요약본을 보고 빠르게 시작해보세요. GSAP 플러그인 기능 둘러보기 어떤 플러그인을 사용할지 결정하려면 어떤 효과가 있는지 .. 2022. 8. 25.
[Web] 부드러운 페이지 스크롤 구현 (모멘텀 스크롤) 데모 페이지 GitHub - idiotWu/smooth-scrollbar: Customizable, Pluginable, and High-Performance JavaScript-Based Scrollbar Solution. Customizable, Pluginable, and High-Performance JavaScript-Based Scrollbar Solution. - GitHub - idiotWu/smooth-scrollbar: Customizable, Pluginable, and High-Performance JavaScript-Based Scrollbar So... github.com Smooth Scrollbar는 크로스브라우징이 가능한 커스텀 스크롤(모멘텀 스크롤, 스무스 스크롤) Jav.. 2022. 8. 24.
[Git] Please make sure you have the correct access rightsand the repository exists. 문제 상황 PC에 새로운 폴더를 만들고 이미 존재하는 원격 레포지토리를 pull 해올 때 다음과 같은 에러가 발생합니다. 이 문제는 다양한 이유로 발생하는데요. 브랜치를 이동하려고 하는데 원격 저장소의 브랜치를 읽을 수 없거나 원격 저장소와 통신할 때 흔히 발생하는 에러입니다. fatal: 'origin' does not appear to be a git repository fatal: Could not read from remote repository. Please make sure you have the correct access rightsand the repository exists. 해결 방법 1 HTTPS 인증하기 git remote set-url origin https://github.com.. 2022. 8. 24.
[OOP] 언제, 왜 추상클래스와 인터페이스를 써야 할까? 들어가기에 앞서, 이 문서는 추상 클래스와 인터페이스의 기본적인 설명은 하지 않는다는 점을 알려드립니다. 제가 느끼기에 추상 클래스와 인터페이스는 문법적인 이해는 쉬운데 반해, 실무에서 직관적으로 적용하기 어려웠습니다. 따라서 문법을 설명하기보다는 실제 적용에 관해 이야기하는 편이 유익하다고 판단했습니다. "이걸 왜 쓰지?" 추상 클래스와 인터페이스의 사용법을 배운 다음 개발에 들어갔을 때 들었던 생각입니다. 쓸 일이 없다는 생각이 들었습니다. 클래스 A, 클래스 B, C, D, E ... 의존성 주입 Dependency Injection의 무한 반복. 비교적 작은 프로그램이었고, 복잡하지 않았습니다. 이것만으로도 제 개발은 충분했습니다. 그럼 프로그램이 크고 복잡해야만 인터페이스가 효율을 내는 걸까요?.. 2022. 8. 23.
[Flutter] 플러터 VSCode 안드로이드 개발환경 세팅 링크에서 플러터 설치 방법을 안내합니다. 위 글을 통해 여러분이 환경 변수를 잘 설정하고 flutter doctor를 실행하셨다면 다음과 같은 경고 메시지를 받으실 것입니다. 이제 안드로이드 스튜디오를 설치해야 합니다. https://developer.android.com/studio Download Android Studio & App Tools - Android Developers Android Studio provides app builders with an integrated development environment (IDE) optimized for Android apps. Download Android Studio today. developer.android.com 콘솔에서 안드로이드 권한 .. 2022. 8. 22.
[Flutter] Could not open settings generic class cache for settings file 이 문제로 오랜 시간 삽질을 하다가 방법을 찾아서 공유합니다. 빌드를 하다가 이 문제를 만나셨을 것입니다. 거두절미하고 플러터 안드로이드 빌드 시에 발생한 문제를 해결해보겠습니다. 위 이미지는 PowerShell 터미널에서 뜬 에러 로그입니다. 해결 방법 : Java 버전 변경 Java 11 등의 버전을 사용하는 경우 Java 8 버전으로 변경해주세요. Java 8을 사용하면 이 오류가 해결됩니다. 8 버전은 마지막 무료 라이센스 버전입니다. 변경이 불안하신 분들은 자바 8 버전과 11 버전의 차이점을 확인해보시기 바랍니다. 8버전은 다행히도 지속적으로 업데이트되고 있습니다. CMD에서 현재 사용 중인 자바 버전 확인 jdk-8 버전 설치하기 오라클 사이트에 가입하시면 다운받을 수 있습니다. 여기서 jd.. 2022. 8. 21.
[OOP] 디자인 패턴의 유형 디자인 패턴 디자인패턴이란 소프트웨어를 디자인하면서 반복적으로 발생하는 문제를 해결하는 재사용 가능한 해결책을 의미합니다. 논문 을 통해 제안되었습니다. 이후 23개의 패턴을 수록한 책 으로 인해 보편화되었습니다. GoF : 에리히 감마, 리차드 헬름, 랄프 존슨, 존 블리시디스 디자인 패턴을 사용하려면 알아야 합니다 컨텍스트 (context) 문제가 발생하는 여러 상황을 가리킵니다. 패턴이 적용될 수 있는 상황을 가리킵니다. 패턴이 유용하지 못한 상황도 존재합니다. 문제 (problem) 패턴이 적용되어 해결될 필요가 있는 여러 디자인 이슈입니다. 이때 여러 제약 사항과 영향력도 문제 해결을 위해 고려해야 합니다. 해결 (solution) 해결은 반드시 구체적인 구현 방법이나 언어에 의존적이지 않습니다.. 2022. 8. 20.
[OOP] 인터페이스로 다형성을 이끌어내기 참고 영상 두 클래스는 완벽하게 똑같은 데이터를 가지고 있습니다. 유일하게 다른 것은 서로의 이름입니다. 인스턴스화한 모습을 보면 데이터는 같은데 Type은 달라집니다. 위와 같은 메소드를 추가했다고 해봅시다. GetPoint 메소드는 CharacterPoint만 사용 가능합니다. 자료가 같은데도 동시에 사용할 수 없습니다. 그렇다고 해서 BulletPoint 전용 함수를 오버로딩해서 만드는 해결방법은 구조적으로 좋지 않습니다. 우리는 이때 클래스들의 공통 속성을 뽑아서 인터페이스를 만들 수 있습니다. public interface iPoint { int X { get; set; } int Y { get; set; } } public class CharacterPoint : iPoint { public .. 2022. 8. 20.
[Unity] UDP 통신과 TCP 통신의 차이점 통신은 서버와 클라이언트 사이에서 일어나는 정보 교환입니다. 클라이언트는 고객(갑)이고, 서버는 사업자(을)입니다. 요청하는 컴퓨터를 클라이언트 컴퓨터, 응답하는 컴퓨터를 서버 컴퓨터라고 부릅니다. 게임의 경우 사용자의 컴퓨터에 설치된 프로그램은 게임 클라이언트라고 합니다. 게임회사의 서버 컴퓨터에 설치된 프로그램은 게임 서버라고 부릅니다. TCP / UDP TCP와 UDP는 OSI 표준모델과 TCP/IP 모델의 전송계층에서 사용되는 프로토콜입니다. 공통점 1. 포트 번호로 서비스를 식별한다. TCP와 UDP는 ‘포트 번호’라는 숫자를 이용하여 컴퓨터 안의 어떤 서비스(애플리케이션)에게 데이터를 전달하면 좋은지를 식별합니다. 공통점 2. 데이터 오류 검사를 위한 체크섬 Checksum이 있다. UDP의 .. 2022. 8. 19.
[OOP] Interface 인터페이스를 이용하는 이유와 장점 부모 클래스는 세 가지 클래스로 만들 수 있습니다. 일반 클래스, 추상 클래스, 인터페이스 왜 세 가지나 있을까요? 어떻게 구분해서 사용해야 할까요? 이 글에서는 인터페이스를 중점적으로 다루어 보겠습니다. "그냥 일반 클래스를 쓰면 안 될까요?" A. 일반 클래스끼리 상속을 시키면 결합도가 높아집니다. 수정, 삭제가 양측에 영향을 줄 수 있습니다. 인터페이스는 구체적인 구현을 하지 않기 때문에 결합도가 낮습니다. 상속 관계와 다르게, 유연하게 확장하고 수정할 수 있어요. "추상 클래스만 쓰면 되지 않나요?" A. 추상 클래스는 일반 메서드와 추상 메서드를 모두 가질 수 있습니다. 인터페이스는 모든 메소드에 구현이 없음을 보장합니다. 추상 클래스를 의도에 맞게 사용한 예를 들면 아래와 같습니다. 부모가 '.. 2022. 8. 19.
[Unity] 유니티 오일러 각과 쿼터니언 Euler, Quaternion 개념 정리 오일러 각 Euler Angle 강체가 놓인 방향을 3차원 공간에 표시하기 위해 레온하르트 오일러가 도입한 세 개의 각도로 3개의 서로 수직인 X,Y,Z축 각도로 표현하는 일반적이고 직관적인 방법 중 하나입니다. 오일러 각도는 회전한 축을 기준으로 삼아 순차적으로 회전합니다. 같은 각도라도 축을 회전시키는 순서에 따라 모양이 달라집니다. 오일러 각도는 3차원 상의 물체 방향을 직관적으로 표현할 수 있지만 두 가지 한계점이 있습니다. 1. 짐벌락 Gimbal Lock 같은 방향으로 두 회전 축이 겹친 다음부터, 겹친 축이 서로 구분되지 않는 고정 상태가 됩니다. 오일러 각은 세 개의 축을 동시에 계산하지 않다보니 겹쳐버리는 현상이 발생합니다. HTML 삽입 미리보기할 수 없는 소스 2. 보간 문제 Inte.. 2022. 8. 19.
반응형