반응형

집에 있는 헤드셋이 이상하게 인식이 안되서 이어폰을 사게 되었다. 3만원 이하로 커널형, C타입 이어폰을 찾다가 이 제품을 선택했다.

브리츠 P900GX C타입 커널형 이어폰.

우선 제품을 꺼내보고 처음에는 당황했다. 이어폰이 사진에서 처럼 납짝했기 때문이다. 그런데 막상 귀에 껴보니 밖으로 튀어나오지도 않고 딱 맞게 들어가서 착용감이 좋았다. 좌, 우가 좀 헷갈리는것 빼고는 만족스러웠다. 약간 무게감도 있고 귀에 쏙 들어가고 음질도 괜찮았다. 이정도면 가격대비 만족스러운 퀄리티 인것 같다.

 

728x90
반응형

'P's Life' 카테고리의 다른 글

2022년에 돌아보는 2021년  (0) 2022.01.02
자전거를 구매하다!!  (0) 2021.04.10
2021년을 의미있게 보내기 위한 나의 자세  (0) 2021.01.11
2020년을 돌아보며  (0) 2020.12.31
microsoft sculpt ergonomic mouse 수리.  (0) 2020.03.15
반응형
  • 301(Permanently Moved)
    • 요청한 URL에 대한 HTTP 요청의 처리 책임이 영구적으로 Location 헤더에 반환된 URL 로 이전되었다는 응답.
    • 영구적으로 이전되었으므로 브라우저는 이 응답을 캐시한다.
    • 추후 같은 URL 로 요청시 브라우저는 캐시된 원래 URL 로 요청을 보낸다.
  • 302 (Found)
    • 요청한 URL 이 "일시적으로" Location 헤더가 지정하는 URL 에 의해 처리되어야 한다는 응답.
    • 클라이언트 요청은 항상 단축 URL 서버에 먼저 보내진 후 원래 URL 로 리다이렉션이 된다.

 

728x90
반응형
반응형
  • 컬랙션 객체임을 JPA 에 알려주는 Annotation.
    @Entity 
    public class Person { 
    	@Id 
        private Long id; 
        private String email; 
        
        @ElementCollection 
        @CollectionTable( name = "address", joinColumns = @JoinColumn(name = "person_id") ) 
        List<AddressInfo> addressInfoList = new ArrayList<>(); 
    }
  • Entity 와 라이프 싸이클을 같이 하며 독립적으로 사용 불가능 하다.
  • 부모 Entity가 삭제될 경우 같이 삭제된다. (실제 클래스에 cascade 를 설정하는 옵션이 없다.)
  • ElementCollection의 Fetch 전략은 기본이 Lazy 이다.
  • 실제 테이블은 FK 를 이용해서 생성된다.
    Hibernate: create table address (person_id bigint not null, address1 varchar(255), address2 varchar(255), zip_code varchar(255))
    Hibernate: create table person (id bigint not null, email varchar(255), primary key (id))
    Hibernate: alter table address add constraint FK81ihijcn1kdfwffke0c0sjqeb foreign key (person_id) references person
  • CollectionTable Annocation 을 사용하지 않을 경우에는 다음과 같이 테이블이 생성된다.
    Hibernate: create table person_address_info_list (person_id bigint not null, address1 varchar(255), address2 varchar(255), zip_code varchar(255))
728x90
반응형
반응형

JPA 가 엔티티 데이터에 접근하는 방식을 지정한다.

1. AccessType.FIELD : 필드에 직접 접근한다.

@Access(AccessType.FIELD)
private String address1;

2. AccessType.PROPERTY : 프로퍼트로 접근한다. 

@Access(AccessType.PROPERTY)
public String getAddress2() {
	return address1 + address2;
}

3. AccessType 이 지정되지 않은 경우는 @Id 위치에 따라 지정된다.

@Entity
public class OrderInfo {
    @Id
    private Long id;
    private String address1;
    @Transient
    private String address2;

    @Access(AccessType.PROPERTY)
    public String getAddress2() {
        return address1 + address2;
    }

    public void setAddress2(String address2) {
        this.address2 = address2;
    }
}

- @Id 위치가 필드에 있기때문에 기본적으로 AccessType.FIELD 가 적용된다. AccessType.PROPERTY를 같이 적용하기 위해서는 메소드 위에 AccessType.PROPERTY 를 넣어주면 된다.

4. 기타 설명들

@Access is used to specify how JPA must access (get and set) mapped properties of the entity. If access type is set to FIELD, the values will directly be read/set on the field, bypassing getters and setters. If set to PROPERTY, the getters and setters are used to access the field value.

FIELD 로 정의하면 다이렉트로 field를 read/set 하고 PROPERTY로 설정하면 getter, setter 메소드를 통해서 접근한다.
https://stackoverflow.com/questions/19264871/what-is-the-use-of-the-access-annoation-in-jpa-means-at-the-entity-level

 

If you use field-based access, your JPA implementation uses reflection to read or write your entity attributes directly. It also expects that you place your mapping annotations on your entity attributes. If you use property-based access, you need to annotate the getter methods of your entity attributes with the required mapping annotations. Your JPA implementation then calls the getter and setter methods to access your entity attributes.

5 reasons why you should use field-based access
Better readability of your code
Omit getter or setter methods that shouldn’t be called by your application
Flexible implementation of getter and setter methods
No need to mark utility methods as *@Transient*
Avoid bugs when working with proxies

https://thorben-janssen.com/access-strategies-in-jpa-and-hibernate/

 

 

728x90
반응형
반응형

개발과 관련된 일을 하는 사람이라면 한번쯤은 구글에서 일하는 생각을 해봤을것이다. 나또한 그랬으며 항상 동경의 대상처럼 여겨졌다. 그들이 하는 일들은 항상 앞서 나가고 무엇인가 혁신적이고 세상을 바꿀것 같은. 그런 기본적은 생각들이 밑바탕에 깔려있었다. 이번에 읽게된 "구글 엔지니어는 이렇게 일한다" 는 그런 구글러들이 어떻게 일하는지, 무엇을 생각하는지에 대해 배워볼수 있는 책이다. 

- 이 책은 개발자들만을 위한 책이 아니다.

이 책은 소프트웨어 엔지니어링에 대한 내용을 많이 다룬다. 프로그래밍과 구분되게 소프트웨어 엔지니어링은 소프트웨어를 개발하기 위해 설계부터 시작하는 모든 라이프 사이클을 포함한다. 그게 개발관련된 일이 될수도 있고 그안의 구성원들인 사람이 될수도 있다. 따라서 이책의 제목에 있는 "구글 엔지니어"들이 일하는 것을 떠올리면 개발자들를 떠올리는게 당연하겠지만 내가 읽어본 이책은 개발자들만을 위한 책은 아니다. 개발자, 디자이너, 관리자등 모든 영역의 사람들이 읽는다면 큰 도움을 얻을 수 있는 책이다. 영역이 IT 관련된 일이 아니더래도 이 책은 많은 사람들에게 도움을 줄 수 있는 책이다. 

- 구글러들도 우리가 생각하는 것들을 동일하게 생각한다.

내 기준에서 구글을 생각하면 항상 특별할 거야 라는 생각이 전제되어있었다. 내가 겪고 있는 일들은 그들은 겪지 않을 거야 라는 생각을 했다. 하지만 그것은 잘못된 생각이었다. 그들도 나와 같은 고민을 하고 나와 같은 어려움을 부딪쳐왔다. 단지 차이점은 그들은 그것을 극복하기 위해 많은 시도와 노력을 해왔고 그 결과 지금의 모습을 만든 것이다. 현재의 모습이 하루아침에 만들어 지지는 않았다. 수도없이 반복되는 노하우들이 쌓이고 쌓여서 만들어낸 결과이다. 누가 시켜서 만든것도 있지만 그들 스스로 만들고 발전시켜나간 일들도 많다. 그게 바로 그들의 문화이고 가치인것이다. 

- 기술을 발전 시키려면 어떻게 해야하는지 그들은 알고 있다.

코드리뷰, 테스트는 개발자에게는 필수조건처럼 따라 다니는 단어이다. 하지만 이게 개발자들에게 익숙해지기 까지는 상당한 시간이 걸린다. 코드리뷰를 무시하거나, 단위 테스트를 무시하게 되면 후에 모든것들이 기술부채로 다가오게 된다. 작은 버그들이 점점 스노우볼 굴리듯 굴러가서 큰 오류를 발생시기고 만다. 그걸 방지하기 위한 행위들중 하나가 코드리뷰와 단위 테스트이다. 실제 구현되는 코드들보다 중요하게 생각해야 하는 부분이 테스트 코드이고, 내 코드가 잘못되어있는지 또는 실수는 하지 않았는지, 아니면 더 나은 방법은 없는지 찾아볼수 있는 방법이 코드리뷰이다. 그들은 그것이 중요하다는 것을 알았으며 지금도 꾸준히 실천하고 있다. 

이 책은 마치 백과사전처럼 읽으면 읽을 수록 배울것이 많은 책이다. 하지만 그들이 했던 방법들이 모두다 내게 맞는 방법은 아닐수도 있다. 하지만 최소한 그들이 해왔던 방법들을 알고 있다면 비슷한 문제를 마주했을때 좀더 현명하게 풀어갈수 있을것이다. 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

728x90
반응형
반응형
  • Image 를 export 하는 방법

docker save [option] [tar filename] [image name]

REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
nginx        latest    fa5269854a5e   2 weeks ago   142MB

docker save -o test.tar fa5269854a5e

 

  • 실행중인 컨테이너를 export 하는 방법

docker export [container name or containter ID] > [tar filename]

CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS                NAMES
791601bf0587   nginx:latest   "/docker-entrypoint.…"   33 minutes ago   Up 33 minutes   0.0.0.0:80->80/tcp   mystifying_benz

docker export 791601bf0587 > test.tar

 

 

728x90
반응형
반응형

지난달 CKA 자격증 취득에 이어서 CKAD 자격증도 따게 되었다. 이것도 작년에 사놓은 바우처가 올해 12월 까지 였는데 CKA 자격증 준비하면서 공부했으니 잊어버리기 전에 같이 해보는게 좋을것 같다는 생각을 했다. CKAD 를 먼저 본 분들의 후기를 보면 최근에 본 글들이 많이 없었다. 거의다 작년에 변경되기 전에 시험을 보신분들이 많았다. 일단 변경된 시험 범위는 아래 와 같다. 

출처 :&nbsp;https://github.com/cncf/curriculum/blob/master/CKAD_Curriculum_v1.23.pdf

  • CKA 와 CKAD 문제 구성의 차이점

- docker, heml

CKA 준비할때에는 k8s 의 리소스를 생성하고 수정하는 것은 많이 연습을 해봤는데 docker 나 helm 까지는 많이 해보지는 않았다. 그래서 부랴부랴 udemy 강의에서 변경된 부분에 대한 강의만 다시 들어보았다. 강의와 연결된 실습도 크게 어려움없이 풀었다. 문제에서는 이미지를 build 하고 이미지를 export 하는 문제가 나왔었다. 

- job, cronjob

job 을 생성하는 문제, cronjob 을 생성하는 문제들이 다양하게 섞어서 나왔다. 특히 job 에 대한 옵션들을 많이 주어지는데 그런 부분들을 다 반영해서 만들어야 한다. 

- probe

job 만큼이나 많이 나온 문제이다. probe 를 생성하는 문제, probe 때문에 pod 가 기동이 안되고 있는데 수정하라는 문제등의 문제가 나왔었다. 

- securtyContext

이부분은 serviceAccount와 연계해서 나온 문제들이었는데 sa를 생성해서 pod 에 정의해주라는 문제와 pod 로그를 보고 문제점을 해결하라는 문제였는데 그건 sa 이름이 실제와 이름이 달라서 생긴 문제였었다. 

  • 문제를 잘 읽자

CKA 시험과 마찮가지로 문제의 요구사항이 한가지가 아닌경우가 많다. 문제를 끝까지 읽어야 하고 주어진 조건을 반드시 모두 반영을 해야 한다. 그리고 문제에 Pod 를 수정하거나 삭제하지 말고 진행하라는 요구사항들도 주의깊게 봐야 한다. 영어를 번역하는데 헷갈린다면 구글 번역기 크롬 플러그인을 깔아서 확인해보는것도 방법이다. 이것은 문제 삼지 않는다.

  • 결과

총 16문제였는데 문제 하나하나 마다 대부분 배점이 높아서 정말 난감했다. 4점짜리는 많이 못본것 같다. 그리고 진짜 시간이 부족했다. 내가 몰라서 찾아본것이 있어서 그런것도 있겠지만 CKA 시험보다는 시간이 정말 빠듯했다. 그래서 마지막에 내가 완벽히 못푼 문제들의 배점을 세어봤다. 그랬더니 34점 점도가 됐었다. ㅡ,.ㅡ;;; 통과 점수는 66점인데 34점이면 완벽히 못푼 문제들을 제외하고 나머지는 다 맞아야 한다는 결론이었다. 이 34점 중에 8점자리 하나는 "맞겠거니" 라고 생각했던 문제가 있었는데 74점인거 보면 아마도 그게 맞지 않았나 싶다. 실제 결과는 알수가 없지만..

그래서 예상을 하기에 66점으로 딱 pass하거나 떨어지면 근소한 차이로 또 떨어지겠거니 했는데 다행스럽게도 pass를 했다. 물론 만족할 만한 점수는 아니지만 그래도 붙어서 다행이다.

자격증을 땄다고 해서 그걸 잘 아는것은 아니기 때문에 앞으로도 더 공부를 해야 하겠지만 지난번 시험이후에 또 한가지 무언가를 했냈다는데에 큰 기쁨을 얻었다. 

728x90
반응형
반응형

아디다스 홈페이지를 로그인 하려다가 비번을 까먹어서 비밀번호 리셋을 시도했다.

위와같이 팝업이 뜨고 이메일을 입력하면 리셋 링크를 포함한 내용의 이메일을 보냈다는 내용을 볼수 있다. 

그런데 아무리 기다려도 이메일은 오지 않고 몇번을 해봐도 동일하다.

결국 고객센터에 전화를 해봤더니 아디다스 홈페이지를 외국과 통합해서 홈페이지 관련 문의를 외국 본사에 요청해야 한다고 한다.  외국 본사에 요청을 해야 한다고 하니 알았다고 하고 통화를 완료했다. 역시나 예상대로 한 2주 지나도 아무런 조치가 없어서 다시 전화를 해봤으나 똑같은 말만 되풀이 했다.

그래서 홈페이지가 통합 됐다고 하니.. 혹시나 국적을 바꿔서 해보면 될까?? 라고 생각을 하고 지역을 바꿔보았다.

홈페이지 하단에 있는 나라를 Americas 로 변경을 했다. 대한민국 클릭하면 국가 변경 페이지가 나오는데 아래처럼 정말 빈 페이지에 링크만 나온다. -_-;;

어찌됐든 Americas 로 변경하고 패스워드 변경절차를 진행해봤다. 그랬더니.. 어? 이메일이 오네?

ㅋㅋㅋㅋ. 정말 어처구니가 없었다. 멤버쉽 할일이 된다고 매번 알람이 와서 뭔가 살게 있나 보기 위해서 로그인을 하고 싶었던거였는데. 이렇게 홈페이지 관리하고도 장사는 잘되는거 보니 참 아이러니 하다. 

그냥 적어놓을 의도는 없었지만 혹시나 나와 같은 일을 겪고 로그인을 못하는 분들이 있을까봐 적어놔봤다.

 

728x90
반응형
반응형

도메인 주도 개발은 회사에서 항상 적용해보고 싶었는데 내가 가진 지식이 많지도 않고 실제 경험도 없다보니 쉽게 해볼수는 없던 영역이었다. 책도 읽어볼 엄두가 나질 않아서 책도 많이 안읽은 주제중에 하나 였다. 그런데 이번에 새롭게 나온 이책을 읽어볼 기회가 생겨서 도메인 주도 개발을 다시 접해볼 수 있었다. 

저자가 책에 써넣은대로 이 책은 초중급을 대상으로 쓰여진 책이다. 말 그대로 도메인 주도 개발에 대해서 알고 싶고 각각의 의미가 무엇인지 개념을 알고 싶고 어떻게 적용하는지 알고 싶은 분들을 위한 책이다. 그리고 책에 나오는 예제 코드들은 java, spring boot, jpa 등을 기반으로 설명을 해주고 있다. 따라서 책을 좀더 잘 이해하고 싶다면 앞에 말한 것들에 대한 사용경험이 있는것이 좋다. 특히 초반에는 개념에 대한 내용이 많다면 후반으로 갈수록 코드로 구현해 나가는 형식으로 설명을 하는 부분이 많기 때문에 spring boot, jpa 에 대한 경험은 필수적이라고 할 수있다.

내가 이 책을 읽으면서 가장 좋았던 부분들은 각각의 개념에 대한 설명들이었다. 도메인 주도 개발을 위한 필수적인 개념이지만 좀처럼 이해하기가 쉽지 않은 내용이었다. 그리고 개발과 연관해서 생각을 하다보니 헷갈리는 개념들도 많았다. 그런데 그런 부분들을 잘 설명을 해줬다. 

특히 도메인 주도 개발에서 내가 가장 중요하다고 생각했던 바운더리 컨텍스트와 애그리거트 에 대한 개념을 잘 이해할 수 있었다. 개념적으로 이해를 하더라고 실제 코드로 적용을 해보기에는 내가 부족한 부분이 많긴 하지만 이론을 바탕으로 잘 적용을 해볼수 있을것 같다는 생각이 들었다. 

도메인 주도 개발에 관심이 있고 이걸 적용해보고 싶은 분들은 한번쯤 읽어보기를 권하고 싶다. 

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

728x90
반응형

+ Recent posts