본문 바로가기 메뉴 바로가기

How to be awesome

프로필사진
  • 글쓰기
  • 관리
  • 태그
  • 방명록
  • RSS

How to be awesome

검색하기 폼
  • 분류 전체보기 (145)
    • Java (32)
    • Algorithm (26)
    • JSP & Servlet (0)
    • Spring Framework (14)
    • Git & Github (6)
    • Database (11)
    • Linux (3)
    • Design Pattern (12)
    • JPA (7)
    • Project (14)
    • JavaScript (4)
    • Development (10)
    • HTML&CSS (1)
    • AWS (5)
  • 방명록

Closure(클로저)를 이용한 자바스크립트의 전역 변수 숨기기

왜 전역 변수를 사용하면 안 되나요? 1. 전역 변수(global variable)를 사용하게 되면 페이지에 포함된 모든 자바스크립트 변수들이 동일한 범위에서 실행됩니다. 같은 이름의 전역 변수나 전역 함수가 존재하는 경우 스크립트 뒤에 포함된 스크립트가 이전에 선언된 변수나 함수를 덮어 씌우게 됩니다. 이는 애플리케이션의 크기가 커지게 될수록 더 자주 발생될 것이며 연관되지 않은 코드들 간의 변수 오염을 발생시키게 되어 예상하기 힘든 버그를 발생시킵니다. 2. 하나의 단위 기능이 외부에 제공해야 하는 변수나 함수 이외에도, 내부적으로만 사용하는 변수와 함수가 노출되게 됩니다. 이는 단위 기능이 모듈로써 동작하기 힘들게 만들고 캡슐화(encapsultation)를 저해하는 행동입니다. 캡슐화가 되지 않은..

JavaScript 2021. 2. 21. 19:06
CSS로 고통받는 개발자가 알아야 할 CSS 키워드

개요 프론트엔드 전문이 아닌 개발자가 CSS로 고통받는 이유는 CSS의 요소들이 예상한 대로 동작하지 않기 때문이다. 이번 포스팅은 CSS에 대한 기본적인 개념이라기보다 CSS로 고통받는 순간에 확인해볼 만한 키워드들을 정리해보았다. 그리고 CSS를 공부한 지 오래된 백엔드 개발자라면, 특히 flexbox나 grid가 아직까지도 잘 사용되지 않는다고 믿는다면 다시 한번 공부하고 mdn 문서와 친해지는 것을 적극 권한다. 1. Margin Collapsing (margin 상쇄) margin-top, margin-bottom이 의도한 대로 동작하지 않는다면 Margin Collapsing(이하 margin 상쇄)을 의심해봐야 한다. margin 상쇄란 여러 개의 margin 중 제일 큰 margin만 사용..

HTML&CSS 2021. 1. 24. 14:18
순환참조는 뭐가 문제일까?

순환참조는 뭐가 문제일까? 개인 프로젝트는 혼자서 진행하기 때문에 내가 만든 설계가 제대로 된 설계인지 확인해보기 어렵다. 이를 확인하기 위해서 한 가지 기준을 두었는데 패키지간의 의존 방향을 단방향으로 하여 순환되지 않도록 하자는 것이었다. 다이어그램을 그려보고 의존성이 단방향을 나타낼 때는 제대로 된 설계를 했다는 성취감도 들었다. 그러다 문득 이런 생각이 들었다. '그래서 순환참조가 뭐가 문제일까?' 의존 먼저 의존에 대해서 다시 생각해보았다. A객체가 B객체에게 의존한다는 것은 A객체가 B객체를 사용한다는 것이다. 다이어그램으로 화살표를 나타내면 A→B라는 형태로 나타난다. 만약 '변경에 의한 영향' 이라는 기준에서 생각해보면 화살표의 방향은 반대로 나타내야 될 것이다. B가 변경될 때 A에게 영..

Design Pattern 2020. 12. 24. 09:23
왜 (x.compareTo(y) == 0) == (x.equals(y))를 만족해야 할까?

※ 이 포스팅은 주관적 해석을 포함하고 있습니다. compareTo() 구현 명세 자바 API 문서 Comparable compareTo() 구현 명세에 다음과 같은 지침이 있다. It is strongly recommended, but not strictly required that(x.compareTo(y)==0) == (x.equals(y)). compareTo()는 객체 간의 자연적 순서(natural order)를 정하기 위해서 주로 사용되고, equals()는 객체 간의 동치성을 비교하기 위해서 사용된다. 사용목적이 달라 보이는 두 메서드 간에 왜 위와 같은 구현 지침이 있는 걸까? 결론부터 말하자면 (일부) Set이나 Map 메서드의 동치성 확인은 equals()가 아닌 compreTo() ..

Java 2020. 11. 8. 19:51
maven 저장소에 라이브러리 업로드하기

maven 저장소에 라이브러리를 올리는 방법에 대해서 알아보고 삽질내역을 공유하겠습니다. Java 프로젝트이며 빌드툴은 Gradle을 사용했고, 버전관리 사이트는 Github을 사용했습니다. Step 1. bintray 가입하기 - bintray는 라이브러리(jar파일) 파일들을 업로드 할 수 있는 저장소입니다. - 오픈소스소프트웨어(OSS)로 가입해야 무료로 이용가능합니다. (OSS이기 때문에 public 한 저장소만 사용가능) https://bintray.com/signup/oss (OSS 가입주소) Step 2. bintary에 Repository(저장소) 생성하기 - 삽질포인트 1. (bintray 웹사이트 주의사항~!) (20.09.12 현재) bintray가 페이지 레이아웃을 변경중이라, Ne..

Development 2020. 9. 13. 04:26
어댑터 패턴 (Adapter Pattern)은 언제 사용해야 할까?

요구사항 클라이언트가 서로 다른 2개의 클래스에 의존하고자 할 때, 하나의 추상화된 인터페이스로 의존되어야 한다. 클래스 다이어그램으로 나타내면 위와 같다. DoClass는 do()라는 퍼블릭 메서드를 갖고 있으며, RunClass는 run()이라는 퍼블릭 메서드를 갖고 있다. 메서드 명부터 다른 2개의 클래스를 하나의 추상화된 인터페이스로 의존하고자 한다면 어떻게 해야 할까? 방법 1 : 클래스를 수정한다. (전략 패턴) 간단하게 하는 방법은 클래스들의 코드를 수정하여서 인터페이스를 구현하도록 코드를 수정한다. 각기 다른 메서드 명도 통일시킨다면 클라이언트가 하나의 인터페이스를 통해 달라지는 (혹은 확장되는) 클래스들을 의존할 수 있게 된다. 추가 요구사항 만약 의존하는 클래스들의 코드를 수정할 수 없..

Design Pattern 2020. 8. 31. 21:57
IntelliJ로 JUnit4 테스트 JUnit5로 변환하기

IntelliJ IDE에서 JUnit4를 JUnit5 테스트로 변환하는 방법을 알아보겠습니다. 이 포스팅은 https://www.youtube.com/watch?v=F8UTTTDtbH0&t=468s 영상을 참고하였습니다. 1. JUnit5 의존성 주입하기 org.junit.jupiter junit-jupiter 5.6.2 (아직 JUni4 의존성 삭제는 하지 않습니다.) 2. 리팩토링 설정 추가하기 (Inspection) IntelliJ - Preferences - Editor - Inspections JUnit으로 검색하여 JUnit 4 test can be JUnit 5 항목 체크[v] 후 OK 3. JUnit4 테스트를 JUnit5로 변환하기 이제 JUnit4 테스트 클래스는 IntelliJ가 경고..

Java 2020. 7. 1. 23:31
자바스크립트의 중첩 함수(Nested functions)는 언제 사용해야 할까?

자바스크립트의 중첩 함수 자바스크립트는 함수 안쪽에 또 다른 함수를 선언하는 중첩(nested) 함수가 가능하다. 이는 자바스크립트가 함수(function)를 변수와 같이 값(value)처럼 다루기 때문인데 일례로 자바스크립트에서는 같은 이름의 변수와 함수를 선언하는 것이 불가능하다. 자바스크립트의 이런 독특한 문법인 중첩 함수를 어떤 경우에 어떤 관점에서 사용해야 하는지 혹은 지양해야 하는지 생각해보았다. 1. 클린 코드적 관점 함수가 반복된 코드의 재사용을 위해서 사용되는 경우가 많지만 함수는 클린코드적 관점에서 충분한 의미가 있다. // 유저가 무직자인지 확인한다. if(user.job == null) { ... } if(user.isUnemployed()) { ... } 두 개의 코드 예제는 같은..

JavaScript 2020. 6. 16. 22:31
이전 1 2 3 4 5 6 ··· 19 다음
이전 다음

Blog is powered by Tistory / Designed by Tistory

티스토리툴바