본문 바로가기
반응형
[OOP] Abstraction, 추상화를 이해하고 활용하기 개요 추상화는 객체 지향 프로그래밍(OOP)의 네 가지 기본 개념 중 하나입니다. 소프트웨어에서 해당 엔터티를 모델링하고 조작하는 데 사용할 수 있는 복잡한 실제 엔터티의 단순화되고 일반화된 표현을 만드는 프로세스를 말합니다. OOP에서 추상화를 통해 프로그래머는 객체의 필수 기능에 집중하고 중요하지 않은 세부 정보는 무시할 수 있습니다. 이것은 소프트웨어의 복잡성을 줄이는 데 도움이 되므로 이해 및 유지 관리가 더 쉬워집니다. 추상화는 구체적인 클래스에 의해 구현되어야 하는 일련의 메서드를 정의하는 추상 클래스 및 인터페이스를 사용하여 달성됩니다. OOP에서 추상화의 이점에는 향상된 코드 품질, 더 나은 코드 재사용성 및 향상된 유연성이 포함됩니다. 추상 클래스와 인터페이스를 생성함으로써 프로그래머는 .. 2022. 9. 2.
[Web] APNG 투명도 있는 영상 / 애니메이션 만들기 APNG 만들기 투명도가 있는 애니메이션을 연구하다가 APNG 포맷을 선택하게 되었습니다. PNG를 기반으로 애니메이션 효과를 이용합니다. 구글이 WebM과 WebP를 제공하면서 투명도가 있는 영상을 도입하려고 했지만 APNG에 비해서는 호환성이 낮은 편입니다. APNG도 완벽하지는 않지만 모던 브라우저에서는 거의 돌아갑니다. APNG는 지원 불가능한 경우 첫 번째 이미지를 노출이라도 시켜줍니다. 현제 개인적으로 제작하고 있는 웹앱(web app)의 과정을 기반으로 APNG를 만드는 방법을 소개하고자 합니다. 포토샵을 이용해 APNG 만들기 애니메이션 타임라인을 작성하신 후 Render Video로 들어갑니다. 포맷은 PNG로 하시면 이미지 시퀀스가 출력됩니다. APNG Assembler 설치 https.. 2022. 9. 2.
[Tips] Live Server 비주얼 스튜디오 코드 라이브 서버 설정 비주얼 스튜디오 코드 라이브 서버 설정하는 과정을 순서대로 알려드리겠습니다. 라이브 서버란? 이 확장을 VSCode에 설치하면 웹사이트를 개발하면서 브라우저에서 바로 프리뷰를 확인할 수 있습니다. 정적 및 동적 페이지에 대한 실시간 리로드 기능으로 로컬 개발 서버를 열어줍니다. VSCode 준비 라이브 서버 확장 프로그램 설치 Go Live 눌러서 동작 확인 설치 방법 확장에 들어가서 라이브 서버를 설치합니다. 행 확인 하단에 생긴 Go Live 버튼을 눌러 서버를 열어줍니다. 기본 서버는 ip 127.0.0.1 포트 5500에서 열리는데, 설정에서 바꿀 수도 있습니다. 현재 사용중인 와이파이 망의 ip로 바꿔준 다음 서버를 실행하면 같은 와이파이를 이용하는 모든 기기에서 웹페이지 프리뷰를 볼 수 있습니다. 2022. 9. 1.
[Web] 미디어 쿼리 기기별 해상도 분기점 미디어 쿼리로 모바일 해상도에 대응할 때 어떤 기준을 적용할지 애매할 수 있습니다. 많은 개발자들이 크로스브라우징을 연구하면서 찾은 기기별 해상도 분기점을 참고하면 도움이 될 것입니다. 모바일부터 데스크탑까지 몇 개의 분기점으로, 어떤 해상도까지 대응할 수 있는지 알아겠습니다. (필수) 뷰포트 메타 태그 뷰포트가 있기만 하면 되니 편집해도 상관 없습니다. 미디어쿼리 템플릿 @media screen and (min-width:1024px) { /* Desktop */ } @media screen and (min-width:768px) and (max-width: 1023px) { /* Tablet */ } @media screen and (max-width:767px){ /* Mobile */ } 분기점에.. 2022. 9. 1.
[Web] 미디어 쿼리로 반응형 웹사이트 구현 미디어 쿼리는 접속자의 기기에 따라 웹사이트가 반응하도록 하는 역할을 가집니다. 기기의 특성이란 화면 해상도, 뷰포트의 너비 등이 있습니다. 웹브라우징을 지원하는 모바일 기기는 너무나 다양합니다. 따라서 뷰포트의 너비에 따라 컨텐츠를 유연히 배치할 필요가 생깁니다. 미디어 쿼리는 CSS로 구현할 수 있습니다. 미디어 쿼리의 문법 구조는 이렇습니다. 조건이 만족되면 스타일이 적용되는 식입니다. 가장 간단한 구문 @media (*조건*) { *스타일* } 조건문과 스타일 @media (min-width: 800px) { .something { color: red; } } 조건문의 종류 width : 화면 너비 height : 화면 높이 device-width : 출력장치 너비 device-height : 출.. 2022. 9. 1.
[Web] GSAP 스크롤하면 선을 따라가는 애니메이션 이번에는 GSAP 라이브러리에서 그래픽 소스가 선을 따라가도록 만들어주는 애니메이션 기능을 소개하겠습니다. 들어가기 전에 데모를 보고 어떤 애니메이션이 가능한지 체크해보세요. SVG란? SVG는 벡터 이미지 파일입니다. 위처럼 코드 형식으로도 표현할 수 있습니다. 여러분은 따라갈 패스를 만들거나 그려질 패스를 표현할 때 SVG를 이용하게 됩니다. 그 밖의 벡터 그래픽 소스도 물론 가능합니다. GSAP는 스크롤 양과 SVG 데이터를 연관지어줍니다. 우리는 GSAP의 몇 가지 플러그인을 이용해 다양한 효과를 구현할 수 있습니다. 이 포스팅에서는 스크롤하면 따라가는 애니메이션을 구현해 보겠습니다. GSAP 플러그인 불러오기 패스팔로잉 애니메이션을 구현하기 위해서 몇 개의 플러그인을 불러와야 합니다. 헤드 태그.. 2022. 8. 30.
[Web] 투명도가 있는 애니메이션 포맷 고르기 웹페이지에 투명도 있는 애니메이션/동영상 넣기. 가장 효과적인 방법은 무엇일까요? 투명도가 없는 동영상이라면 고민할 것도 없이 video 태그와 함께 mp4를 사용하면 됩니다. 하지만 움짤과 같은 영상이고 투명도가 있다면 고민이 시작됩니다. 크로스 브라우징이 가능해야 할 것이고, 성능과 압축률이 좋아야 합니다. 이 모든 필요 사항을 실제 기기에서 테스트해서, 무엇을 사용하면 된다고 결론을 내려주면 얼마나 좋을까요? 그래서 이 포스팅을 하기로 했습니다. 결론부터 말씀드리면 APNG가 가장 괜찮습니다 사실 투명도가 있는 애니메이션, 동영상 포맷을 결정하는 데 있어 정답은 없었습니다. 왜냐하면 최선이 없기 때문입니다. 알려진 방법으로는 WebM, WebP, APNG, GIF, PNG를 여러 장 돌리기 등이 있.. 2022. 8. 30.
[C#] Abstract(추상) vs Virtual(가상) vs Interface(인터페이스) 차이 Virtual virtual은 재정의(override)가 선택사항이다. virtual 키워드가 포함된 클래스는 인스턴스화가 가능하다. 상속할 때 어떻게 할 것인지의 문제와 결부되어 있으므로 상속을 염두에 둔 클래스에 적용한다. 일반 메소드는 new를 통해 재정의할 수 있지만 부모 클래스를 기반으로 자식을 인스턴스화하면 부모 메소드가 나온다. 일반 메소드와 달리 override를 통해 재정의하면 부모 클래스를 기반으로 자식을 인스턴스화하더라도 제대로 자식 메소드가 나온다. 버추얼 메소드와 일반 메소드의 상속 차이 // Online C# Editor for free // Write, Edit and Run your C# code using C# Online Compiler using System; publi.. 2022. 8. 30.
[C#] 메소드 재정의 다형성은 메서드 재정의 및 메서드 오버로딩을 포함하는 OOPS 원칙 중 하나입니다. Virtual 및 Override 키워드는 메서드 재정의에 사용되고 new 키워드는 메서드 숨김에 사용됩니다. 이 포스팅에서는 C# 코드를 사용하여 각 키워드에 대해 자세히 설명합니다. 단순한 클래스 상속 클래스 A, B, C가 있는 상속 관계를 생각해 봅시다. A는 상위/기본 클래스이고 B는 클래스 A에서 파생되며, C는 클래스 B에서 파생됩니다. Class A > Class B > Class C Test() 메서드가 기본 클래스 A에 선언되어 있습니다. 클래스 B와 C는 메서드가 없습니다. using System; namespace Polymorphism { class A { public void Test() { Co.. 2022. 8. 30.
[Tips] 맥 터미널에서 .NET 설치 확인이 안 될 때 (ARM 포함) 에러 내용 Mac용 NET Core 2.1 SDK를 다운로드하여 설치했습니다. 그러나 터미널에서 dotnet 명령을 실행하면 -bash: dotnet: command not found error. 과 같은 오류가 출력됩니다. 해결 방법 1. macOS 버전이 전제 조건을 충족하는지 확인합니다. https://docs.microsoft.com/en-us/dotnet/core/macos-prerequisites?tabs=netcore2x 2. 터미널에 입력하세요 ln -s /usr/local/share/dotnet/dotnet /usr/local/bin/ dotnet --version 환경에 따라 x64를 입력해줘야 할 수도 있습니다. ln -s /usr/local/share/dotnet/x64/dotnet.. 2022. 8. 30.
[Unity] 유니티 API 문서 활용 방법 처음 유니티 개발을 시작할 때 유니티 문서를 활용하는 방법을 잘 몰라서 시간을 낭비한 경험이 있습니다.핵심 정보만 취하고 싶은데 기다란 영상 튜토리얼을 보느라 시간을 허비했습니다.유니티 API 문서는 아주 잘 정리되어 있어서 활용만 잘 한다면 개발 시간을 상당히 단축시킬 수 있습니다.앞으로는 유니티 문서를 적절하게 활용해서 시간을 절약해 봅시다. 유니티 API 문서 들어가기 https://docs.unity3d.com/Manual/index.html Unity - Manual: Unity User Manual 2021.3 (LTS)Use the Unity Editor to create 2D and 3D games, apps and experiences. Download the Editor at unity.. 2022. 8. 29.
[Tips] 한국 게임 공모전 및 사업 목록 한국 게임 공모전 및 사업 목록 상황에 따라 개최 여부가 달라질 수 있습니다. 최근 몇 년간(22년 기준) 꾸준히 개최된 게임 공모전 및 사업들의 목록입니다. 게임을 제작하는 팀 혹은 개인은 자금을 마련하거나 홍보할 목적으로 공모전을 지원합니다. 출품 계획이 있으신 분들에게는 좋은 결과가 있기를 바랍니다. GIGDC Indie Craft 인디 크래프트 스마일게이트 인디게임 창작 공모전 한국콘텐츠진흥원 인디게임공모전 부산인디커넥트페스티벌 구글플레이 인디게임 페스티벌 G-Star 지스타 인디게임 기획개발공모 Play X4 플레이엑스포 Out Of Index (OOI) 아웃오브인덱스 e나라도움 : 국가 사업 검색 https://www.gosims.go.kr/hg/hg002/retrieveTaskReqstLis.. 2022. 8. 29.
[OOP] SOLID, 객체지향 설계의 원칙 SOLID, 객체지향 설계의 원칙 SRP(Single Responsibility Principle): 단일 책임 원칙 OCP(Open Closed Priciple): 개방 폐쇄 원칙 LSP(Listov Substitution Priciple): 리스코프 치환 원칙 ISP(Interface Segregation Principle): 인터페이스 분리 원칙 DIP(Dependency Inversion Principle): 의존 역전 원칙 2022. 8. 27.
[OOP] Inheritance, 상속이란 무엇인가 상속의 개념 부모 클래스로부터 메소드와 필드를 받아와 자식 클래스에 기능을 추가하거나 재정의합니다. 상속은 캡슐화, 추상화와 관련됩니다. 부모 클래스는 super class, base class라고 부릅니다. 자식 클래스는 child class, sub class, derived class라고 합니다. 상속의 장점 1. 클래스 재사용 2. 계층적 관계를 기반으로 다형성을 활용(좋은 설계의 출발점) 자식 클래스 다만 생성자는 상속되지 않습니다. 부모 클래스의 접근 제어자가 private이면 자식 클래스에서 상속은 받지만 사용은 불가합니다. C#에서는 단일 상속만 가능합니다. Object 클래스 Object 클래스는 모든 클래스가 내부적으로 상속받는 클래스입니다. c#에서 가장 상위의 class는 오브젝트 .. 2022. 8. 26.
[OOP] Abstraction, 추상화란 무엇인가 추상화의 정의 추상화는 공통점을 취하고 차이점을 제거하는 일반화를 사용합니다. 또 하나의 방법으로, 중요한 부분을 강조하기 위해 세부 사항을 제거합니다. 프로그래밍에 있어서 추상화는 불필요한 코드의 제거, 중요한 부분의 강조라고도 볼 수 있습니다. 위키피디아는 추상화를 다음과 같이 정의합니다. 컴퓨터 과학에서 추상화는 복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간추려 내는 것을 말한다. 컴퓨터 과학 및 소프트웨어 공학에서 추상화는 매우 중요합니다. 소프트웨어는 그 자체로 추상적이며 소프트웨어 생산 분야는 추상화 기술입니다. Keith Devlin은 추상화에 대한 자신의 견해를 이렇게 말합니다. ”컴퓨팅은 추상화를 구성하고 조작하고 추론하는 일이다. 정확한 방식으로 추상화해야 좋은 .. 2022. 8. 26.
반응형