목록분류 전체보기 (113)
고코딩
[Spring Boot] when(), given(), any() 및 BDD 설명 패스트 캠퍼스 강의를 듣던 도중 테스트 구문 작성 코드에서 처음 보는 코드를 보았다. when(this.todoRepository.save(any(TodoEntity.class))) .then(AdditionalAnswers.returnsFirstArg()); //TodoRepository가 save()메소드를 호출해서 TodoEntity값을 받으면 받은 엔티티 값을 반환하도록 설정 원래 given-when-then 의 구조는 알고 있었지만 저렇게 스태틱 함수로 구현되어 있는 건 처음 봐서 이해가 되지 않았다. 여러가지 서치를 해보고 정리를 해본다. 용어 정리 TDD Test Driven Development의 약자로 테스..
Java의 직렬화(Serialize)란? Java를 공부하고 Spring을 쓰다보면 계속해서 Serialize를 상속받은 클래스들을 볼 수 있었다. 도대체 직렬화란 무엇일까? 공부를 해보자 직렬화(Serialize) 자바 시스템 내부에서 사용되는 Object 또는 Data를 외부의 자바 시스템에서도 사용할 수 있도록 byte 형태로 데이터를 변환하는 기술. JVM(Jaava Virtual Machine 이하 JVM)의 메모리에 상주(힙 또는 스택)되어 있는 객체 데이터를 바이트 형태로 변환하는 기술 역직렬화(Deserialize) byte로 변환된 Data를 원래대로 Object나 Data로 변환하는 기술을 역직렬화(Deserialize)라고 부릅니다. 직렬화된 바이트 형태의 데이터를 객체로 변환해서 J..
@Size, @Length, @Column 차이점 팀 프로젝트를 하면서 내가 JPA쪽 부분을 담당하게 되었다. Entity를 작성하던중 필드의 속성을 지정해줘야 했는데 필드의 사이즈를 무엇으로 주어야하나 고민을 했다. 구글링을 해보니 @Size, @Length, @Column 3개중 하나로 필드의 사이즈를 지정해주었느데 도대체 무슨 차이인지 궁금했다. 이곳저곳을 찾아보던중 잘 설명해 놓은곳이 있어서, 이 사이트의 설명을 번역해서 올린다. https://www.baeldung.com/jpa-size-length-column-differences 1. Overview JSR-330의 @Size, Hibernate의 @Length , 그리고 JPA의 @Column에 대해서 살펴보겠습니다. 언뜻 보기엔 비슷해 ..
개요 회사에서 프로젝트나, 에러를 해결하면 관련된 문서를 작성해야할 일이 많았다. 하지만 항상 글을 쓸때마다 첫 문장을 작성하는 것 부터가 힘들었다. 글을 다 쓰고 난 뒤에도 만족스러운 글이 나오지 않았고, 내 글쓰기에 문제가 많다는 것을 느꼈다. 또한 회사에 지정된 양식이 없어서 답답함이 많았다. 내가 못 찾는 것일 수도.. 마침 팀에내 한달에 한번 원하는 책을 읽고 독후감을 발표하는 일정이 생겨서 이 책을 읽었다. 그냥 읽어보면 좋은 책 책을 다 읽어본 후 든 내 생각은 "책 제목이 잘못되었는데?" 였다. "글쓰기 가이드"가 아니라 "글쓰기 꿀팁"이라고 바꿔야 한다고 생각이 든다. 책 내용이 글을 쓸때 유의해야할 단어나 문장, 어조, 쉽게 틀릴 수 있는 포인트들에 대해서 알려준다. 충분한 예시를 들면..
ElasticSearch관련 연구과제를 서치하던 도중 ELK의 개념이 잘 정리되어 있는 블로그가 있어서 정리해본다. ELK 란? ELK는 위 그림과 같이, 분석 및 저장 기능을 담당하는 ElasticSearch, 수집 기능을 하는 Logstash, 이를 시각화하는 도구인 Kibana의 앞글자만 딴 단어이다. ELK는 접근성과 용이성이 좋아 최근 가장 핫한 Log 및 데이터 분석 도구이다. 1. ElasticSearch ElasticSearch는 Lucene 기반으로 개발한 분산 검색엔지으로, Logstash를 통해 수신된 데이터를 저장소에 저장하는 역할을 담당한다. 데이터를 중심부에 저장하여 예상되는 항목을 검색하고 예상치 못한 항목을 밝혀낼 수 있다. 정형, 비정형, 위치정보, 메트릭 등 원하는 방법으..
html 태그 정리 meta태그의 속성을 변경해야 할 일이 있는 와중 의 종료가 다양하다는 것을 알았다. 이곳 저곳에서 구글링 하던 도중 잘 정리해놓은 블로그가 있어서 가져온다. https://front8062.tistory.com/2 문자 인코딩에 대한 meta 태그 입니다. charset는 보통 utf-8을 많이 사용합니다. 그 이유는 한글 때문입니다. 검색에 영향을 끼치는 태그입니다. 요즘에는 검색방식이 바뀌어서 그렇게 까지영향을 끼치지 않습니다. 페이지 설명을 입력하여 정보파악을 할수있게합니다. 최대 155자를 입력가능하다고 한다. 일정 시간이 지나면 페이지 새로고침이 됩니다. 아이폰때문에 사용하는 meta태그입니다. 전화번호와 같은 형식이면 문자열을 감지하고 전화를 걸 수 있는데, 위와 같은 태..
QA 후기 QA Quality Assurance(품질보증) 신입개발자로서 바둥바둥 코딩하던 중 회사에서 QA 테스트를 진행했었다. 처음에 QA라는 단어 자체도 생소했고, 무엇을 해야하는지도 몰랐다. 내가 아는 테스트는 단위테스트와 통합테스트 2개 뿐이였는데. 이틀동안 진행한 QA에 대한 후기와 느낌점을 적어보겠다. 지루하다... 매일 SQL, JAVA 코드로 여러가지 프로그램만 짜고 있다가 화면 테스트를 진행하니 느낌이 달랐다. 코딩은 요구된 상황에 맞춰 가장 효율적인 코드를 내 스스로 만들어내야하는데, QA 화면 테스트는 계속해서 반복적인 작업이 요구되었다. 가장 FM대로 진행해야하고 모든 화면에 대해 똑같은 테스트를 수십번 진행해야한다. 어느순가 기계적으로 일하고 있는 나를 발견했다. 이럴 바에 화면..
AUTONOMOUS TRANSACTION, 독립적인 트랜잭션 프로시저에서 프로시저를 호출하고 또 프로시저에서 프로시저를 호출하면서 점점 TRANSACTION의 위치가 애매해지기 시작했다. 그래서 프로시저마다 독립적인 트랜잭션을 할당해 줄수는 없을까 싶어서 찾아보다가 AUTONOMOUS TRANSACTION을 발견하였다. AUTONOMOUS TRANSACTION이란? 블록에서 자신의 작업을 수행하기 위해서 그 블록의 고유의 트랜잭션을 생성하는 경우에 해당하며 그 불록의 트랜잭션의 결과가 자신을 포함하거나 호출한 트랜잭션에의 상태에 의해 영향을 받지 않는 속정을 가지는 트랜잭션을 의미한다. 마스터 트랜잭션과는 lock, resource, commit에 관련된 의존성을 가지지 않는다. 테스트를 통해서 살펴보자..
CSV 파싱 클래스 만들기 회사에서 고도화 프로젝트를 하던 도중 csv파일을 파싱해야할 일이 생겼다. 당연히 csv파일을 파싱하는 라이브러리가 이미 만들어져있었고, 당연히 가져다 사용하려고 했다. 근데 왠걸... 최소 jdk 1.8이상에서만 작동하는 라이브러리였다. 근데 고객사 서버의 자바 버전은 jdk 1.6(아직 까지도 옛날 자바를 쓰는 회사가 많다고 들었지만 실제로 만날 줄 이야...) 결국 csv파일을 파싱하는 코드를 직접 짰다. 근데 짜놓고 나니 왠걸 생각보다 잘 짰었다. 일단 내가 받은 csv파일은 간단한 파일형식이 아니였다. 설명을 시작해보겠다. , 로 구분하면 되는 거 아니야...? Csv 파일은 형식이 정해져 있다. CSV(영어: comma-separated values)는 몇 가지 필드..
IT 용어 정리 교살자 패턴 - 스트랭글러 패턴 특정 기능을 새로운 애플리케이션 및 서비스로 점진적으로 교체한다. 그리고 레거시 시스템을 중단한다. Auto Injection 의존성 자동 주입, 스프링에서 주로 사용되는 기능 Code Inspection 개발팀에서 작성한 개발소스 코드를 분석하여 개발 표준에 위배되었거나 잘못 작성된 부분을 수정하는 작업을 말한다. 잘못된 부분이란, 코드가 중복되거나 작성규칙에 맞지 않거나 잘못 구현한 부분들을 말한다. Code Inspection을 통해 소프트웨어의 품질을 높일 수 있고 다른 사람이 구현한 코드를 통해 여러 가지를 배울 수도 있다. 어떻게 보면 시간이 많이 걸리는 작업이기도 하나 Code Inspcetion은 개발 단계에서 발생할 수 있는 여러 시행 착오..
Deployment의 변화 과정 쿠버네티스를 알아보다가 좋은 정리 글이 있어서 공부하기 위해서 글을 써봅니다. 전통적인 배포 시대 : 초기 조직은 애플리케이션을 물리 서버에서 실행했었다. 한 물리 서버에서 여러 애플리케이션의 리소스 한계를 정의할 방법이 없었기에, 리소스 할당의 문제가 발생했다. 예를 들어 물리 서버 하나에서 여러 애플리케이션을 실행하면, 리소스 전부를 차지하는 애플리케이션 인스턴스가 있을 수 있고, 결과적으로는 다른 애플리케이션의 성능이 저하될 수 있었다. 이에 대한 해결책은 서로 다른 여러 물리 서버에서 각 애플리케이션을 실행하는 것이 있다. 그러나 이는 리소스가 충분히 활용되지 않는다는 점에서 확장 가능하지 않았으므로, 물리 서버를 많이 유지하기 위해서 조직에게 많은 비용이 들었다...
RPA - 변화와 기회 이 글은 RedHat 블로그의 내용을 번역한 내용입니다. 보문은 2019-7-23 IT Toolbox의 내용에서 있습니다. RPA는 효율성 향상과 비용 절감을 실현하고자 하는 조직에게 놀라운 가능성을 제시합니다. 하지만 잠재력에 붕응하기 전에 몇가지 중요한 과제를 극복해야만 합니다. 이 기사는 그러한 과제들을 풀고 앞으로의 기회를 탐구합니다. 지금쯤, 당신은 RPA(로봇 프로세스 자동화)에 대해 들어봤을 것입니다. RPA는 기업이 디지털화되기 위해 노력하면서 갑자기 나타난 새로운 아이디어가 아닙니다. RPA는 소프트웨어 로봇과 인간 작업 자동화를 통해 빠르고 상당한 비용 절감 효과를 제공하고 있습니다. 실제로 PwC는 "작업 활동의 45%가 자동화될 수 있으며, 이 자동화를 통해 ..