클로저에 대한 내용을 람다식을 활용하여 설명한다. * 람다식에 대한 설명 자바에서 클로저는 람다식이나 내부 클래스 같은 영역 안에서 외부에서 정의된 변수를 사용하는 방식을 의미한다. 즉, 람다식을 만들 때 람다식 안에서 정의한 변수나 매개 변수로 받지 않는 변수가 사용될 경우 클로저가 사용됐다고 볼 수 있다. 예시 int a = 3; (i) -> i + a; // 클로저 이렇게 클로저에서 사용된 변수를 자유 변수(free variables)라고 하며, 자유 변수는 코드 블록 안에서 정의되거나 매개 변수가 아닌데 사용되는 변수를 뜻한다. 예제 class CodeRunner { public static void main(String args[]) { int a = 3; // 자유 변수 InterfaceRam..
문자열을 비교할 수 있는 여러 방법이 있는데 이 중에서 == 연산자와 equals 메서드를 활용하는 방법 비교한다. 비교하는 내용을 작성하기에 앞서 문자열 생성 방식에 대한 설명이 필요하여 먼저 작성한다. 문자열을 생성할 수 있는 방법은 리터럴 방식과 생성자를 사용하는 방식이 있다. String str1 = "string" // 리터럴 방식 String str2 = new String("string") // 생성자 활용 방식 여기서 리터럴 방식으로 문자열을 만들 경우 같은 별도의 String Contant Pool이라는 영역에 배치되기 때문에 동일한 문자열을 생성하면 같은 주솟값을 가지게 된다. String str1 = "a"; String str2 = "a"; System.out.println(str1..
크롬에서는 font size에 최소 크기가 정해져 있다. 현재 최소 크기는 10px이며 font-size 속성만 변경해서는 절대로 10px 미만의 크기로는 변경할 수 없다. 즉 font-size 속성에 1~10px 사이의 값이 들어가도 10px로 변경되어 표시된다. 예전 글들을 보다 보면 -webkit-font-size-adjust 속성을 사용하여 해결했다는 내용이 있는데, 현재 크롬은 해당 속성을 제공하지 않고 있다. 여기서 텍스트의 크기를 10px 보다 작게 보이도록 우회할 수 있는 편법이 있다. transform 속성을 사용하는 것이다. transform: translate(-22%, -50%) scale(0.5); display: inline-block; 편법이라고 말한 이유는 폰트의 크기를 조정..
* 아래 내용에서 테스트하여 작성한 px 값들은 크롬에서 테스트하여 작성했다. * 크롬에는 폰트 크기에 최소 크기가 정해져있다. 참고 : font size 최소 크기 폰트 크기의 단위 별 차이를 알아보기 전에 폰트 크기의 기본 값을 알아둘 필요가 있는데, 보통 브라우저의 기본 값은 16px이며, 크롬의 기본 값 또한 16px이다. 기본 값을 확인하는 방법으로는 medium, 1rem, 1em이 있는데 아래 내용을 참고하여 구해야 한다. * 1em의 경우 부모 요소의 폰트 크기에 영향을 받는다. * 1rem의 경우에는 HTML 태그의 폰트 크기에 영향을 받는다. px 폰트의 크기를 나타낼 때 가장 기본적인 단위이며, font-size 속성에 어떤 단위를 사용하던 이렇게 저렇게 계산된 후 마지막에 브라우저가..
fetch와 pull의 차이점은 로컬 저장소에 바로 반영하냐 하지 않냐의 차이가 있다. 조금 더 자세히는 fetch가 원격 저장소에서 커밋, 파일 등을 가져와서 볼 수 있는 것이라면 pull은 커밋 등을 가지고 온 후 로컬 저장소에 병합까지 되는 것이다. 즉 pull은 fetch를 한 후 merge나 rebase를 통해 병합까지 진행하게 된다.(기본적으로는 merge가 동작하도록 되어있다.) pull의 장점은 원격 저장소의 변경된 부분을 확실하게 알고 있다면 조금 편하게 작업할 수 있다는 것이다. fetch의 장점은 변경된 부분을 미리 파악할 수 있고 이후의 작업 방향을 결정할 수 있다는 것이다.(충돌이 발생하거나 하는 상황을 미리 방지할 수 있게 된다.) fetch : 원격 저장소에 변경된 내용이 있는..
객체 지향 프로그래밍(Object-Oriented Programming, OOP)은 프로그래밍의 패러다임 중 하나로써 만들고자 하는 현실을 추상화하여 독립된 상태와 행위를 가지는 객체를 만들고 각 객체가 상호 작용할 수 있도록 개발하는 것이다. 객체 지향 프로그래밍은 독립적인 여러 객체를 가지고 개발하는 것이기 때문에 코드의 재사용이 쉽고 모듈화하기 용이하기 때문에 기존에 만들어 둔 코드나 오픈 소스 등을 활용하기 좋고 더 좋은 코드를 찾으면 대체하는 것 또한 쉽기에 대규모 프로젝트를 만드는 데 사용하기 좋고 유지 보수하는 데도 좋다. 다만 추상화하는 과정이 어렵고 추상화하는 과정 중에 문제가 있으면 구현할 때 어려움이 발생할 가능성이 높다. 객체 지향 프로그래밍의 기본 구성 요소와 특징은 아래와 같다...
원격 저장소에서 Clone 명령어로 프로젝트를 가져온 후 git 명령어를 사용할 때 fatal: not a git repository (or any of the parent directories) 라는 에러가 발생했다. 이 에러는 git 명령어를 실행하려는 디렉터리가 git의 관리하지 않는 디렉터리이기 때문이다. 이러한 경우 git init 명령어를 실행하여 해결할 수 있다.
Git에서 푸시를 사용할 때 명령어는 보통 다음과 같다. git push [원격 저장소 이름] [로컬 저장소의 브랜치] 여기에서 강제로 푸시를 하는 방법은 다음과 같은 방법들이 있다. git push [원격 저장소 이름] [로컬 저장소의 브랜치] -f 또는 git push [원격 저장소 이름] [로컬 저장소의 브랜치] --force 또는 git push [원격 저장소의 이름] +[로컬 저장소의 브랜치] 기본적으로 강제로 푸시하는 경우는 푸시가 안되기 때문일 것인데, 잘못된 푸시로 원격 저장소 자체에 문제가 발생할 수 있으니 조심해서 사용해야할 필요가 있다. * 주의 푸시할 때 --force 또는 -f 옵션을 사용할 경우 push.default 속성 값이 matching이거나 remote.*.push 로 ..
Git이란 간단하게 말하면 형상 관리 서비스이다. 그러니까 소프트웨어의 변경사항을 체계적으로 추적하고 통제하는 서비스이다. 이런 Git을 사용하여 여러 사람들과 협업하기 쉽게 만들어진 사이트로 Github, Gitlab, Bitbucket 등이 있다. Git의 가장 기본적인 내용은 원격 저장소, 로컬 저장소, Staging Area, Clone, Add, Commit, Push, Pull이 있다. 원격 저장소는 Github 등에서 만들 수 있고 코드의 형상 관리를 원격에서 관리하기 위한 저장소이다. * 반드시 원격 저장소가 있어야지만 Git을 사용할 수 있는 것은 아니다. 하지만 원격 저장소를 사용하지 않으면 Git을 사용하는 의미가 매우 많이 퇴색된다. 로컬 저장소는 개발자의 컴퓨터에서 만들어 개발자의..
티스토리에서 글을 작성하다 보면 역슬래시를 사용하고 싶을 때가 있다. 이때 두 가지 방법을 사용할 수 있는데 키보드에서 ₩를 입력했을 때 \로 보이는 것을 활용하는 방법과 ㄱ입력 후 한자 키를 눌러 특수문자를 활용하는 방법이 있다. (현재 티스토리에서 제공하는 특수문자에는 역슬래시가 없다.) 여기서 각각 문제 점이 있었는데 첫 번째 방법에서는 에디터에서 ₩를 입력했을 때 에디터에서는 \로 보이는데 미리보기나 저장하여 실제 글에서 볼 때는 ₩로 보이는 문제가 있고 두 번째 방법에서는 역슬래시의 모양이 ₩를 입력했을 때의 모양과 다르고 역슬래시의 기울기(생김새)가 마음에 들지 않는 개인적인 문제가 있다. 때문에 미리보기나 실제 글에서도 ₩가 \로 보이도록 수정하는 방법을 고민했고 에디터와 미리보기에서 보여지..