일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- github api
- System.err
- 제네릭 타입
- Switch Expressions
- 자바스터디
- 함수형 인터페이스
- junit 5
- System.out
- docker
- 합병 정렬
- auto.create.topics.enable
- Study Halle
- 항해99
- 자바할래
- 상속
- annotation processor
- System.in
- 람다식
- 바운디드 타입
- 익명 클래스
- 제네릭 와일드 카드
- throwable
- 스파르타코딩클럽
- 브릿지 메소드
- raw 타입
- yield
- 로컬 클래스
- 프리미티브 타입
- 접근지시자
- 정렬
- Today
- Total
코딩하는 털보
21.09.24 TIL 본문
새로운 게시글 포스팅 어플리케이션을 개발했다.
오늘의 이슈
예전에 flask 앱을 실행시켜놨던 클라우드서버라서 80->5000 포트 포워딩이 설정되어 있었다.
덕분에 iptables 포트 설정을 확인하고 포트 포워딩을 해제하는 방법을 배워간다.
확인 sudo iptables -t nat -L
해제 sudo iptables -t nat -D PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 5000
(해제는 설정했을때의 옵션에서 -A를 -D로만 바꿔서 했다.)
자 드디어 jar로 말아서 aws에 올려 실행했다. (Executable jar!)
무난하게 잘 돌아가는것 처럼 보였으나!
왠걸 데이터의 시간이 이상했다. 현재시간보다 9시간 전으로 보이고 있었다.
분명 local에서 같은 DB에 붙어서 확인했을때는 올바른 시간으로 가져왔는데...
datasource.url 뒷 부분에 serverTimezone=Asia/Seoul 추가하는건 이미 해둔 상태였다.
뭐가 문제인지 꽤 오랜시간 찾다가 @SpringBootApplication에(@Configuration도 가능할지도?) 아래 코드를 넣어서 해본결과 제대로된 시간을 확인할 수 있었다.
@PostConstruct
void started() {
TimeZone.setDefault(TimeZone.getTimeZone("Asia/Seoul"));
}
분명히 time zone 문제는 맞는데 명쾌하게 답을 찾은건 아니라서 찝찝하다.
토비의 스프링
이 책을 1장부터 천천히 읽어나가도 될까 의심될 정도로 두껍다. 게다가 이 두꺼운게 두 권으로 구성된다. 다른 기술 서적을 펼 때는 별다른 느낌이 없었는데 이 책은 쫄리기도하고 긴장된다. 그래도 반가운 백기선님의 추천사가 걱정을 덜어주었다.
나는 최근에 탐구력이 개발자에게있어서 얼마나 중요한 덕목인지를 느낀다. 그러나 지식에 강박은 정말정말 피곤한 일이다.
좋은 개발자라면 탐구력 뿐만 아니라 자신이 가진 지식을 최대한 활용할 줄 알아야 한다고 생각한다.
https://www.youtube.com/watch?v=gDqC9JLrntQ&list=PLuHgQVnccGMA8iwZwrGyNXCGy2LAAsTXk&index=26
"공부가 어느순간 지루해지고 뜬구름잡는 느낌이 든다면 그것은 우리의 뇌가 의식에게 이제 공부는 그만하고 공부한 것을 시도해보라는 신호이다. 배움과 사용을 최대한 자주 반복하자." 이 영상을 좀 더 일찍 봤다면 좋았을텐데...
너무 욕심내지 말고 차근차근 읽어보자. 잘못된 학습 습관은 사람을 매우 지치게 한다는 것을 깨닳았으니 좀 더 차분해지자.
스프링?
자바 엔터프라이즈 어플리케이션 개발에 사용되는 프레임워크.
책의 첫 내용 첫 문장에는 아주 간결하고 정확하게 스프링이 무엇인지를 알려주었다.
지금까지 스프링이 무엇인지 검색도 해보고 물어도 보고 반대로 질문을 받아도 보고 대답도 해봤지만
그 모든 것들 중에서 제일 간결하면서 이해하기 쉽다. 이제부터 면접에서 나의 대답은 이것으로 시작하고 그 다음에는 스프링이 어떻게 사용되는지를 말하겠다.
개발을 빠르고 효율적으로 할 수 있도록 어플리케이션의 기본 틀과 공통 프로그래밍 모델, 기술 API를 제공한다.
첫 페이지는 내가 알고 있는 스프링에 대한 핵심을 말하고 있다.
어플리케이션의 기본 틀은 어플리케이션 컨텍스트,
공통 프로그래밍 모델은 IoC/DI, 추상화, AOP,
기술 API는 예로 들지는 않지만 Spring JPA나 Spring Security 같은 API일 것으로 예상한다.
이 세가지 요소를 적극적으로 활용하는 것이 스프링의 어플리케이션 개발 방식이다.
스프링이 주장하는 것
단순함 : 스프링은 가장 단순한 객체지향적 개발 모델인 POJO 프로그래밍을 주장한다.
POJO
"우리는 사람들이 자기네 시스템에 보통의 객체를 사용하는 것을 왜 그렇게 반대하는지 궁금하였는데, 간단한 객체는 폼 나는 명칭이 없기 때문에 그랬던 것이라고 결론지었다. 그래서 적당한 이름을 하나 만들어 붙였더니, 아 글쎄, 다들 좋아하더라고." - 마틴 파울러
유연성 : 개발자들이 스프링을 확장해서 사용하길 권장하며 스프링을 제대로 사용하려면 필요에 맞게 확장해서 자신만의 프레임워크를 만들어 사용해야 한다.
! todo, 중간에 OSI (Open System Interconnection) 7계층 관련 얘기가 나왔다. 이건 맨날 본다고 하고 재미없을 것 같아서 미뤘는데 일단은 또 미루자.
오늘은 서론만 읽었을 뿐인데도 불구하고 꽤나 재미있게 읽은 것 같다. 1장이 벌써 기대된다.