전체 글 65

[우아한테크캠프 Pro] 1주차 미션 후기 (로또 - TDD)

우아한테크캠프 Pro 1주차 TDD 미션을 진행한 내용과 후기를 정리해보았습니다. 미션 저장소 https://github.com/Gyeom/java-lotto-pro GitHub - Gyeom/java-lotto-pro: NEXTSTEP 엔터프라이즈 Pro 과정을 위한 저장소 NEXTSTEP 엔터프라이즈 Pro 과정을 위한 저장소. Contribute to Gyeom/java-lotto-pro development by creating an account on GitHub. github.com 학습 내용 TDD 기반으로 프로그래밍하는 경험 메소드 분리 + 클래스를 분리하는 리팩토링 경험 점진적으로 리팩토링하는 경험 요구 사항 규칙 1: 한 메서드에 오직 한 단계의 들여쓰기만 한다. 규칙 2: else 예..

우아한테크캠프 Pro 5기 지원하다.

이번에 우아한테크캠프 Pro 5기에 신청하여 2주 동안 프리코스를 참여했습니다. 프리코스를 진행하는데 제약사항이 생각보다 많아서 상당히 어려웠습니다. 제약사항은 다음과 같습니다. 위 제약사항들을 지키다보니 자연스럽게 객체지향 및 클린코드에 대해 계속 고민하는 시간을 갖게되었고 미션에 몰입하게 되었습니다. 2주 간 힘들기도 했지만 미션을 완주하고 나니 뿌듯하네요. 미션이 어렵기도하고 회사를 다니면서 진행하다보니 시간이 촉박해서 구현한 것에 만족하지 못했고 기대는 하지 않았는데,, 정말 운이 좋게도 우테캠 Pro 5기에 선발되었습니다! 미션을 수행하면서 포기할까도 생각했지만 이왕 하는거 끝까지 해보자는 마음으로 최선을 다했는데 좋은 결과가 생겨서 행복합니다. 여러분도 미션 수행하는 것이 힘들어도 끝까지 포기..

IntelliJ Platform Plugin SDK 공식문서 읽기 - Listeners

Listeners Listeners는 플러그인이 메시지 버스를 통해 전달된 이벤트에 선언적으로 가입할 수 있도록 허용합니다(자세한 내용은 Messaging infrastructure). Listeners 구현은 stateless이어야 하며 lifecycle(예: Disposable)를 구현할 수 없다. Listeners는 application 과 project-level로 정의할 수 있습니다. 사용 가능한 모든 listeners/topics 는 수신기 섹션의 Extension Point and Listener List에 나열됩니다. IntelliJ Platform Explorer를 통해 오픈 소스 IntelliJ Platform 플러그인의 기존 구현 내에서 사용법을 탐색합니다. Defining Appli..

IntelliJ Platform Plugin SDK 공식문서 읽기 - Services

Services 서비스는 플러그인이 해당 ComponentManager 인스턴스의 getService() 메소드를 호출할 때 필요에 따라 로드되는 플러그인 구성 요소입니다. IntelliJ 플랫폼은 여러 번 호출 되더라도 서비스의 인스턴스 하나만 로드 되도록 합니다. 서비스에는 서비스 인스턴스화에 사용되는 구현 클래스가 있어야 합니다. 서비스에는 서비스 인스턴스를 얻고 서비스의 API를 제공하는 데 사용되는 인터페이스 클래스가 있을 수도 있습니다. 종료 hook/cleanup routine이 필요한 서비스는 Disposable을 구현하고 dispose()에서 필요한 작업을 수행 할 수 있습니다 (Automatically Disposed Objects 참조) Disposer and Disposable | ..

IntelliJ Platform Plugin SDK 공식문서 읽기 - Extensions

Extensions Extension 기능은 플러그인에서 menu나 toolbar에 작업을 추가하는 것만큼 간단하지 않은 방식으로 IntelliJ 플랫폼의 기능을 확장하는 가장 일반적인 방법입니다. Extension을 사용하여 수행하는 가장 일반적인 태스크는 다음과 같습니다. The com.intellij.toolWindow extension point allows plugins to add tool windows (panels displayed at the sides of the IDE user interface); The com.intellij.applicationConfigurable and com.intellij.projectConfigurable extension points allow plug..

IntelliJ Platform Plugin SDK 공식문서 읽기 - Actions

IntelliJ 플랫폼은 Action의 개념을 제공합니다. Action은 AnAction에서 파생된 클래스로, menu item 또는 toolbar 버튼을 선택하면 actionPerformed() 메서드가 호출됩니다. Action은 사용자가 플러그인의 기능을 호출하는 가장 일반적인 방법입니다. menu 또는 toolbar button에서 keyboard shortcut 또는 Help | Find Action... 조회를 사용하여 작업을 호출할 수 있습니다. Action은 그룹으로 구성되며, 그룹에는 다른 그룹이 포함될 수 있습니다. 작업 그룹은 toolbar 또는 menu를 구성할 수 있습니다. 그룹의 하위 그룹은 메뉴의 하위 메뉴를 구성할 수 있습니다. 사용자는 Menus and Toolbars을 통해..

IntelliJ Platform Plugin SDK 공식문서 읽기 - Class Loaders

Class Loaders 별도의 클래스 로더를 사용하여 각 플러그인의 클래스를 로드합니다. 이를 통해 IDE 자체 또는 다른 플러그인에서 동일한 라이브러리를 사용하더라도 각 플러그인은 다른 라이브러리 버전을 사용할 수 있습니다. Bundled Libraries Third-Party Software and Licenses는 각 제품의 모든 번들 라이브러리와 해당 버전을 나열합니다. Overriding IDE Dependencies Gradle 7은 compile scope를 대체하여 implementation scope를 도입했습니다. 이 설정의 경우 번들 IDE 버전 대신 dependency를 사용하려면 Gradle 빌드 스크립트에 다음 snippet을 추가하십시오. configurations.all {..

IntelliJ Platform Plugin SDK 공식문서 읽기 - Bundling Plugin API Sources

Bundling Plugin API Sources 플러그인이 다른 플러그인이 사용하도록 되어 있는 자체 API를 노출한다면 ZIP 배포에서 플러그인의 API 소스를 번들링하는 것을 고려할 가치가 있습니다. 타사 플러그인이 Gradle IntelliJ Plugin을 사용하고 ZIP 배포의 소스를 번들하는 플러그인에 종속성을 추가하는 경우 소스는 플러그인 라이브러리에 자동으로 연결되고 개발자가 API 클래스로 이동할 때 IDE에 표시됩니다. API 소스를 볼 수 있게 되면 개발 경험이 획기적으로 향상되므로 번들링하는 것이 좋습니다. (Gradle IntelliJ Plugin 1.7.0부터 IDE에 번들 플러그인 소스를 연결할 수 있습니다.) API sources location API 소스 JAR은 플러그인..

IntelliJ Platform Plugin SDK 공식문서 읽기 - Plugin Content

플러그인 배포는 Gradle 또는 Plugin DevKit를 사용하여 구축됩니다. 플러그인 jar 파일에는 다음이 포함되어야 합니다. the configuration file (META-INF/plugin.xml) (Plugin Configuration File) the classes that implement the plugin functionality recommended: plugin logo file(s) (META-INF/pluginIcon*.svg) (Plugin Logo) Plugin Without Dependencies 단일 .jar 파일로 구성된 플러그인이 /plugins 디렉토리에 배치됩니다. Plugin With Dependencies 플러그인 .jar 파일은 필요한 모든 번들 라이브..

DI & IoC의 개념정리

제어의 역전 IoC(Inversion of Control) 프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것을 제어의 역전(IoC)이라 한다. 프레임워크 vs 라이브러리 프레임워크가 내가 작성한 코드를 제어하고, 대신 실행하면 그것은 프레임워크가 맞다. (JUnit) 반면에 내가 작성한 코드가 직접 제어의 흐름을 담당한다면 그것은 프레임워크가 아니라 라이브러리다. 의존관계 주입 DI(Dependency Injection) 의존관계는 정적인 클래스 의존 관계와, 실행 시점에 결정되는 동적인 객체(인스턴스) 의존 관계 둘을 분리해서 생각해야 한다. OrderServiceImpl 은 DiscountPolicy 인터페이스에 의존한다. 실제 어떤 구현 객체가 사용될지는 모른다. (아래 클래스..

Spring Framework. 2022.09.14