이번엔 클로저에 대해 포스팅을 하려한다. 내가 다룰줄 아는 언어중에(자바스크립트, 자바) 클로저를 완벽하게 지원하는 언어는 자바스크립트 뿐이므로 주로 자바스크립트 예제로 설명할 것이며, 자바의 클로저도 설명하면서 마칠 예정이다. 자바스크립트로 코드를 짜다보면 의도치않은 클로저로 인해 원하는 것과 다른 결과를 얻는 경우가 종종 있다. var arr = []; for(var i = 0; i < 10; i++){ arr.push(function(){ console.log(i); }); } arr.forEach(function(func){ func(); }); arr에 10개의 함수를 담아놓고 아래 라인에서 배열을 순회하며 함수를 호출한다. 보통은 0~9 까지가 출력되길 바란다. 단순 예제지만 DOM(Docum..
정규표현식은 나에게있어 암호같은 존재였다. 봐도 뭘 의미하는지도 잘 모르겠고... 당장 필요할때만 검색해서 패턴을 갖다쓰는 그런 존재였는데 이번에 정규표현식에 대해 알아봤다.잘 쓰진못해도 내가 갖다쓰는 표현이 무엇을 의미하는지는 해석할 수 있을정도로는 알아야할것 같아서... 참고로 여기서 소개할 의미있는 표현들을 메타표현이라고 일컫는데 이 메타표현을 의미대로 사용하지않고 순수 문자 그 자체로 사용하기위해선 이스케이프(escape)해야한다. 앞에 역슬래쉬(\)를 붙여주면 된다.또한 예제의 System.out.println();에 들어있는 문자열은 해당 패턴에 true임을 보장하는 문자열이다. . : 문자 하나를 의미public static void main(String[] arg) { String patt..
이전 포스팅에서 깃과 깃헙을 이용해 첫 저장소를 생성해보았다.이번엔 좀더 진보한 사용법을 익혀보자. 앞선포스팅에서는 커맨드라인을 이용해 status를 확인하고 commit, push 했지만 깃을 좀 더 편하게 GUI에서 사용할수있도록 지원하는 툴들이 있다.개인적으로는 회사에서 처음 사용해본 source tree 라는 툴을 사용하고있는데 이 툴을 중점으로 포스팅하겠다. 일단 소스트리를 설치하자.https://www.sourcetreeapp.com 설치가 완료됐으면 실행하자. 다음과 같은 화면을 볼수있다. 윈도우는 살짝 다른걸로 알고있는데 진행에는 큰 무리가 없을것이다(나도 회사에선 윈도우로 사용중이다.). 로컬저장소는 존재하지않고 원격저장소만 존재할경우(기 진행중인 프로젝트를 다운받는경우가 이에 해당할 것..
개발자라면 git을 이용하든, 이용하지않은 얘기는 여기저기서 참 많이 들을것이다.깃헙에 소스를 올려두라는둥 오픈소스에 참여하라면 깃헙을 가라는 둥... 사용법도 어렵지않다고하는데 쌩초보입장에서는 쉽지않은게 사실이다. 형상관리는 넘어가고 초간단 깃헙 사용법에 대해 포스팅을 하고자한다. 먼저 깃을 설치하자.https://git-scm.com/book/ko/v1/시작하기-Git-설치한글로 자세히 설명되어있다. 설치를 마쳤으면 terminal 혹은 cmd 창을 열어 깃이 설치됐는지 확인하자. 버전을 확인하는 커맨드명령어는 다음과 같다. git --version 숫자로 이루어진 버전이 뜨면 정상적으로 설치된것이다. 형상관리를 해주는 기술의 이름이 git이고 깃을 이용해 서비스를 해주는 업체가 github다. 기본..
Test Driven Development 의 약자로 테스트 주도 개발이라는 뜻이다.기존에는 폭포수방식이라고해서 설계가 진행되면 구현, 구현 후 테스트, 테스트 후 인수 이런 방식으로 일단 설계한대로 모든 개발이 끝나고나면 테스트를 진행하는 방식이었는데 이런식으로 하다보니 에러가 발생했을때 해당 에러를 찾고, 수정하는데 있어 소모되는 시간과 비용이 너무 커져 이를 바꿔보고자하고 나온것이다. 개발이 완료되면 테스트를 하는것이 아니라 구현의 가장 아랫부분인 메서드 구현단계부터 지속적인 테스트를 통해 개발을 함으로서 지속적인 테스트를 하게되고 문제점을 보다 빨리 찾아내어 적은 비용으로 에러를 처리하고 완성도높은 소프트웨어를 개발하고자 하는것이다. '주도'라는 단어에 좀 더 집중을 해야하는데 메서드를 구현한 후..
TDD라는 개발론이 있다. Test Driven Development 의 줄임말인데 우리말로는 테스트 주도 개발 이라고 한다.절차를 밟아가며 차례차례 진행 후 제품을 모두 개발한 후에 테스트를 진행하는 기존 폭포수방식에서 벗어나 모듈, 함수별로 즉각즉각 테스트를 진행하며 개발을 하자는 것이다.뼈대를 다 만든후 테스트를 진행하는 기존 폭포수 모델의 경우 에러 혹은 의도치 않은 값이 나올경우 디버깅을 하는것도 힘들뿐더러 비용도 많이 소모된다. 하지만 함수, 메서드 하나를 만드는 와중에도 테스트를 진행하기때문에 에러를 보다 빨리 발견할수있고 수정에 소모되는 비용도 줄어든다. 또한 그만큼 제품의 완성도도 올라가게된다. TDD에서 직접적으로 제안하는건 일단 실패코드를 작성하는 것이다. 최종적으로 원하는 함수를 먼..
1. SRP - 단일책임원칙클래스나 메서드는 하나의 역할만을 하며 한가지 책임만을 진다.A 클래스가 존재하고 해당 A클래스는 B 클래스와 C 클래스에서 사용된다. 예)class B{ main(){ A a = new A(); a.getName(); }} class C{ main(){ A a = new A(); a.getId(); }} A 클래스는 B와 C에서 사용되지만 각각 다른 메서드를 호출하며 '다른 역할'을 하고있다.이경우 A클래스는 B에서 사용되는 역할때문에 수정될 수도 있고 C에서 사용되는 역할때문에 수정될 수도 있다.이런경우에는 A클래스를 나눠 한가지 역할만을 행하게 해야한다.메서드도 소스를 보다보면 if문같은 분기문으로 나뉘어서 완전히 다른 로직으로 진행되는 경우를 흔히 볼 수 있다.이런 경우..
자바스크립트 변수에 php변수 저장하기 php에서 request 변수 저장하기(java 에서 getParameter()) 배워본적도 없고 앞으로 배울생각도 없는 php를 어쩌다가 쓰게됨.(was에서 jsp를 지원안해서....) 사실 썼다고 하기도 민망한 수준의 매우 간단한 작업이었지만 여튼 아무것도 모르는 상태에서 하려니 꽤나 힘들었다. 그리고 원래 구글링을 할때 우리나라 검색자료만해도 충분하다는 애국심(?)과 함께 영어로 된 페이지는 거의 안보고 stackoverflow도 이름만 듣고 잘 보진않았는데.. 이걸 찾으면서 stackoverflow의 위대함을 알게됨... 사실 저거 매우 간단한건데 한글검색으로는 딱 원하는 자료가 너무 안나왔다. 그러다가 영어로 해보자 해서 영어로 검색했더니 제일 위에 뙇! ..
자바쪽에 넣어야할지 고민이 됐는데 물론 설명에 대한 기반 베이스는 자바이지만 객체지향의 특성에 대한것이니 기타프로그래밍쪽에 넣게됐음. 캡슐화 -객체의 속성에 함부로 직접접근을 하지못하게 한다. -자바에선 주로 private 접근제어자를 이용해 외부에서 접근하지못하게 선언하고 setter, getter를 이용해 수정, 조회를 한다. 그냥 형식적인 setter, getter를 사실 직접 접근해서 값을 바꾸고 가져오는것과 큰 차이가 없지만 setter, getter에는 값 제한이나 타입 변경같은 로직이 추가될수도있기때문에 그걸 염두해서 생각해야한다. -보통 private public 을 많이 사용하지만 default나 proteced도 잘 숙지하고 필요할땐 사용할 수 있어야한다. 상속 -상속이라고 말하지만 아..
- Total
- Today
- Yesterday
- TEST
- servlet
- toby
- Git
- backend개발환경
- Design Pattern
- java
- db
- 정규표현식
- generics
- OOP
- Kotlin
- http
- DesignPattern
- javascript
- Jackson
- JavaScript Core
- go-core
- clean code
- JPA
- spring cloud
- MySQL
- Spring
- programming
- mariadb
- code
- frontcode
- java8
- frontend개발환경
- EffectiveJava
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |