전체 글 227

[도서] 이게 무슨 일이야!

우아한형제들에서 생각하는 일과 문화에 대한 이야기를 엮은 책이다. 송파구에서 일을 더 잘하는 11가지 방법에서 소개한 일에 대한 생각 등을 구성원들 인터뷰 형식으로 엮은 책이다. 다음은 책에서 인상적이었던 구절들 라는 책에서 이나모리 가즈오 회장은 "일은 한 사람의 인격을 높이는 훌륭한 도구다"라고 정의했다. 서양 사상에서는 일을 단순히 돈을 벌기 위한 수단이고, 안하면서 사는게 훨씬 좋은 것이라는 느낌을 주지만, 일은 한편으로 생각해보면 계속 자신을 다듬고 수련하는 과정이라 생각할 수 있다. 일을 하면서 자신이 어떤 것에서 성취감을 느끼는지 알게 되고, 그것을 더 잘하기 위해 연마하고 연구하면서 일이 더 재밌어 질수 있다. 다니기 좋은 회사보다는 일하기 좋은 회사를 지향해야 하며, 이를 위해서는 좋은 ..

책 이야기 2022.09.18

spring boot DB테스트, jdbcTemplate

spring boot에서 JdbcTemplate 사용 implementation 'org.springframework.boot:spring-boot-starter-jdbc' 위와 같이 jdbc 를 추가하고, @Configuration에 Bean을 추가하면 된다. private final DataSource dataSource; @Bean public ItemRepository itemRepository() { return new JdbcTemplateItemRepository(dataSource); } 실제 사용은 아래와 같이 public class JdbcTemplateItemRepositoryV1 implements ItemRepository { private final JdbcTemplate tem..

자바/Spring 2022.09.16

정적 컨텐츠(css, js, 이미지) 튜닝

서비스를 올리니 css, js 등의 로딩이 느려서 화면이 로딩시 깨지는 현상이 발생했다. 이를 해결하기 위해 정적 컨텐츠를 AWS의 cloud Front 등의 CDN으로 url을 변경해 보았으나, 현상은 크게 나아지지 않았다. CDN보다 캐쉬 적용이 더 중요한 부분이었음. Cache Control : 스프링부트는 설정파일에 추가만으로 정적 컨텐츠의 cache Control 설정이 가능했다. spring: web: resources: cache: cachecontrol: max-age: 3600 ETag : http응답값에 파일의 해쉬값을 내려보내준다. 클라이언트는 요청시에 If-None-Match로 해쉬값을 다시 보내고, 파일이 변경되지 않았을 경우에는 파일을 다시 보내는 것이 아니라, 304 Not-M..

Front 관련 기술 2022.08.21

EC2 성능 튜닝1

EC2에 직접 설치한 Mysql 의 성능튜닝 이야기 EC2 t2.medium 장비에 Mysql 8.0.30 설치 후 배치 등 여러 쿼리를 실행했더니, 아래와 같이 IO에서 병목이 발생했다. IOPS는 최대값이 100에서 더 올라가지 못하고 있고, 유휴시간은 0에 가깝다. 장비에서 iostat을 해보면 idle이 거의 없는 상황 장비의 CPU도 25%정도 사용률을 보이나, IO에서 병목으로 CPU는 풀로 활용하지 못하는 상황 조치사항 : Mysql장비에 할당된 볼륨을 디폴트 볼륨인 gp2에서 gp3로 변경했다. 변경하게 되면 IOPS가 100에서 3000으로 올라간다. IOPS를 더 올려도 되지만, 3000이면 충분할 듯 하여 우선 gp3로만 변경함 변경후 아래와 같이 IOPS는 읽기, 쓰기 합쳐서 150..

bootstrap 활용하면서 알게된 사항

반응형 디자인(모바일, 태블릿, PC 등 사이즈가 다양한 단말에 맞게 화면 반응) 12분할을 하여 col-sm-4, col-sm-8과 같이 화면을 2분활 할 수 있다. sm으로 지정하면 sm이상 크기 단말에서는 2분활하고, 그 보다 작은 단말에서는 분활하지 않는다. None (auto) 540px 720px 960px 1140px .col- .col-sm- .col-md- .col-lg- .col-xl- 12분할 위와 같이 작성하면, 540px이상에서는 4개로 나뉘고, 그 이하에서는 3개로 나뉜다. flex 개념 flex박스 하위의 요소들(예를들어 div 등)을 flex박스 안에 배치한다. d-flex-row하면 가로로 여러개, d-flex-column하면 세로로 여러개 배치하는 형태. flex의 정렬 ..

Front 관련 기술 2022.08.06

thymeleaf 폼 관련 처리

input박스 구현 : 폼 구현시 th:value를 써도 되고, 수정등 화면에서는 th:filed 활용가능 아래와 같이 form action에 th:object 정의후 th:field 사용하면 id, name, value 등 자동으로 설정해줌 measuringScreenAreaX : 해당 Controller마다 반복적으로 필드값을 model에 넣어야 할 경우 : 아래처럼 @ModelAttribue로 구현하면 regions, itemTypes가 항상 내려간다. 체크박스나 라이오박스 구현시 th:each 등으로 사용 @ModelAttribute("regions") public Map regions() { Map regions = new LinkedHashMap(); regions.put("SEOUL", "서..

Front 관련 기술 2022.07.16

클린코드 17장 - 냄새와 휴리스틱

마틴파울러의 리팩토링 책에서도 언급하는 것처럼, 우리가 소스를 보다보면 리팩토링이 필요한 나쁜 냄새나는 부분들을 찾을 수 있다. 주석 C1. 부적절한 정보 : 변경이력, 작성자, 최종수정일 등은 다른시스템(소스관리, 버그추적, 이슈추적 등)에 저장할 정보이다. 주석은 코드와 설계에 기술적인 설명을 부연하는 수단이다. C2. 쓸모 없는 주석 : 오래되거나 엉뚱하고 잘못된 주석은 더이상 쓸모다 없다. 코드와 무관하게 혼자서 따로 놀며 코드를 그릇된 방향으로 이끈다. C3. 중복된 주석 : 코드에 이미 있는 내용을 구구절절 반복할 필요는 없다. /** * @param sellRequest * @return * @throws ManagedComponentException */ public SellResponse..

[영화] 탑건 매버릭

어제 1896년에 개봉한 탑건의 후속작인 '탑건 매버릭'을 보고 왔다. 최근 본 마블시리즈 등에서 느껴보지 못했던 진한 감동을 받을 수 있었다. 매버릭은 최고의 전투기 조정능력을 보유하고 있으나, 여전히 해군 대령의 지위에 있다. 그와 경쟁했던 아이스맨 등 다른 사람들이 모두 제독(별)인데 반해, 아직 캡틴이냐고 동네 소녀가 놀라는 장면이 나올 정도로.. 그러나, 매버릭은 여전히 직접 전투기에 타고 싶어하고, 권위보다는 실리를 추구하는 성격이다 보니, 전략등을 관장하는 윗 사람들(제독들)은 좋아하지 않는다. 그러다보니, 사사건건 윗사람들과 마찰이 있긴한데, 그의 실력을 알고 있다보니 필요할때는 그를 쓸 수 밖에 없다. 정해진 프로세스와 지침을 지키면, 작전 실패와 인명피해가 뻔한 상황에서 자신의 몸을 던..

sourceTree를 활용한 git 사용

새로운 브랜치 생성 아래와 같이 repactoring 브랜치를 만들어서 commit 하고 push를 하면 로컬에 repactoring, 원격에 origin/repactoring 브랜치가 생성된다. 별도 다른 경로에 새로운 브랜치 code-test 를 하나 더 따서, commit & push를 해서 원격지에 origin/code-test가 생긴 모습 브랜치 병합하기 repactoring 브랜치를 master로 병합하기를 해보자. 우선 master 브랜치로 다시 체크아웃을 해서 돌아간다. master브랜치로 이동 후 repectoring 브랜치로 병합하기를 누른다. 병합하기를 누르면 로컬에 master가 병합되었다. 원격지에는 아직 이전 버전인 상태이므로 push를 눌러, master에만 체크를 해준다. o..

IntelliJ 2022.06.25

클린코드 14장 - 점진적인 개선

리팩토링은 루빅 큐브 맞추기와 비슷하다. 리팩토링을 하다 보면 코드를 넣었다 뺐다 하는 사례가 아주 흔하다. 좀전에 넣은 예외코드를 다른 로직을 수정하면서 바로 빼 버리기도 한다. 큰 목표 하나를 이루기 위해 자잘한 단계를 수없이 거친다. 각 단계를 거쳐야 다음 단계가 가능하다. https://github.com/seaking7/cleancode-args GitHub - seaking7/cleancode-args Contribute to seaking7/cleancode-args development by creating an account on GitHub. github.com 결론 단순히 돌아가는 코드에 만족하는 프로그래머는 전문가 정신이 부족하다. 나쁜 코드보다 더 오랫동안 더심각하게 개발 프로젝트..

반응형