클린코드 3장 (함수), 4장 (주석)

JAVA/클린코드|2020. 6. 20. 23:04

 

함수


- 함수를 만드는 기본 규칙은 작게 만드는 것!

 

- 함수 내부에 if 문 등의 1단이나 2단 그 이상의 중첩 구조가 발생되면 안된다.

 

- 함수의 활동은 한가지 그 이상을 하지마라.

 

- switch문에 다음과 같이 한가지 작업만 해야한다는 SRP 이론과 코드의 변경이 있으면 안된다는 OCP 규칙을 위반한다. 이를 해결하기 위해서는 다형성을 이용해서 해결해야 한다.

// 문제 코드
public int calEmployeePay(Employee e) {
	switch (e.type) {
		case SALARIED:
			return calculateSalariedPay();
		case HOURLY:
			return calculateHourlyPay();
		case .....
	}
}

// 변경 내용
public interface Employee {
	int calPay();
}


public SalaryEmployee implements Employee {
		
		@Override
		public int calPay() {
				...
		}
}

public int calEmployeePay(Employee e) {
	return e.calPay();
}

- 함수 이름이 길어지더라도 서술적으로 한방에 이해가 가능한 이름이 오히려 더 깔끔하고 좋은 코드다.

  ex) includeSetupAndTeardownPages..

 

- 함수의 인수는 기본적으로 3개 까지가 사실 마지노선이라고 생각하고 그 이상은 절대 오지 않도록 해라. 인수가 있으면 함수 자체를 이해하는데 더 어려움을 겪게 된다.

 

- 인수가 늘어난다면 별도의 인수 객체를 만들어서 묶어서 보내는 게 더 낫다.

  ex) int x, int y ⇒ Point point

 

- 함수의 이름과 인자가 한꺼번에 이해가 가능한 이름에 가장 좋다.

  ex) write(name), assertExpectedEqualsActual(expected, actual)

 

- 함수의 이름과 다른 행위를 함수안에 실행 시키지 마라 ex) checkPassword() 함수내에서 사용자 세션을 초기화 한다거나 하는 행위는 자칫하면 엄청 큰 버그를 일으킬 가능성이 크다.

 

- 에러 코드를 사용하는 것보다는 try catch를 이용해서 에러 코드를 분리하는 것이 좋고, try catch블록은 모든 영역이 아닌 별도 함수내에서 처리하도록 하는 것이 좋다.

 

- 중복된 코드를 계속 양산하지 마라.

- 모든 함수와 함수 내 모든 블록에 입구와 출구는 하나만 존재해야 한다.

 

 

 

 

주석


- 잘 작성된 주석은 이해가 되지만 경솔하고 근거없는 주석은 코드를 더 이해하기 어렵게 만든다.

 

- 주석은 코드로 의도를 표현하지 못해서 실패를 만회하기 위해 적은 코드이다. 그러므로 주석을 달고 있다면 코드를 잘 못 작성한 건 아니지 잘 생각해봐라.

 

- 주석은 언제나 코드를 따라가지 못하기 때문에 언젠가 주석은 코드와 분리되어 고아가 되어버리는 순간이 오기 때문에 조심해야 한다.

 

- 저작권 등의 정보를 알리거나 외부 라이브러리 등의 사용이나 내부 규약으로 인해 어쩔수 없이 사용하는 인자 등의 부분에 대해서 명료한 설명을 위한 주석 또는 결과 값에 대한 결과에 대한 주석 정도는 괜찮다.

 

- 누군가의 공을 달거나 HTML 주석을 위해 사용하거나 근처 코드가 아닌 다른 코드에 대한 주석 등을 다는 이런 코드들은 코드 개선에 시간을 들이는 게 더 낫고 클래스 파일에 바이트나 낭비하지 말아라.

 

 

 

결론

함수

함수는 당연히 나도 의미가 있도록 사용하기 위해서 네이밍에 많은 고민을 하고 있고 같이 일하시는 분들이 잘 이해할 수 있도록 간결하게 만들려고 노력은 하고 있다. 근데 사실 프로젝트가 커지고 하다보면 쉽지 많은 않다. 흑

 

주석

주석은 15년도에 일을 시작했을 때만해도 선배들이나 주변 개발 컨벤션에서 보면 항상 주석을 달라고 되어 있었고 오픈소스로 나와있는 라이브러리들에도 자세한 설명이 기재되어 있었다. 그래서 따라하는 습관을 들였는데 주석이 말한 그대로 코드를 따라가기 어려웠고 어느순간부터는 주석이 도움이 되는게 아니라 오히려 방해가 된다는 생각을 나 또한 들게 되어 지금은 주석대신 코드를 더 명확하게 짜기 위해서 노력하고 있다.

 

 

댓글()

[토이프로젝트] TimeLine 개선

IT 지식/IT 지식|2020. 6. 14. 19:58

한동안 잠시 멈췄다가 다시 열면서 내용을 추가 하고 싶었다.

 

타임라인의 목적은 개발에 관련 블로그 내용들과 채용 뉴스등을 한번에 보기 위해서 만든 서비스이다.

사실 내가 한번에 보고 싶은 욕구가 있어서 만들게 되었다.

 

그런데 채용이나 회사 블로그 뉴스등은 넣었는데 

개인 블로그를 볼 수 있는 기능이 없어서 불편했는데 추가했다.

 

개인블로그 추가

 

 

그리고 메인 화면이 없어서 첫 화면을 설정하기가 애매했다.

그래서 메인화면도 summary해서 볼 수 있도록 추가했다.

 

메인화면

 

 

추가하면서 잘못된 @Transaction 어노테이션 사용으로 문제가 많았었다.

에러내용은 아래와 같다.

 

 

org.hibernate.AssertionFailure: null id in entry (don't flush the Session after an exception occurs)

애를 해결하기 위해서 구글링을 했고 구글링 결과 AssertionFailure가 발생하기 전에 세션 예외가 발생했었다는걸 알 수 있었다. 그래서 잘못 사용한 트랜잭션 애노테이션을 제거하고 중간에 exception이 발생하는 부분을 찾아냈다. 

 

참고 사이트

https://stackoverflow.com/questions/10855542/org-hibernate-assertionfailure-null-id-in-entry-dont-flush-the-session-after

 

org.hibernate.AssertionFailure: null id in entry (don't flush the Session after an exception occurs)

I have a hibernate and JSF2 application going to the deployment server and suddenly throwing an org.hibernate.AssertionFailure: null id in exception. I will provide the stack trace and code immedia...

stackoverflow.com

 

회사에서 주 업무가 Elasticsearch 위주로 하다보니 rdb에 대한 경험이 많이 부족해지고 있어서 사실 아쉽다. 

그 아쉬움을 달래고 싶어 개인 프로젝트를 통해 경험해 보고 있는데 아직 아쉬움이 크긴 하다.

 

 

더 좋은 방안이 있겠지? ㅋㅋ

 

개선된 내용이 보고싶다면 http://wedul.space에서 확인 가능하다.

 

Timeline

취업, 기술, 뉴스 일간지 Timeline

wedul.space

 

댓글()

[토이프로젝트] TimeLine 2.0 개선 오픈

IT 지식/기타지식|2020. 1. 27. 21:41

설계, 운영 모든면에서 실패

토이프로젝트 TimeLine을 만들어서 오픈했었다. 

개발의 목표는 단순하게 개발 블로그, 채용등에 대해 한번에 볼 수 있는 개발자를 위한 통합 페이지를 만드는 것이었다.

https://wedul.site/626

[토이 프로젝트 소개] 개발자 채용, 기술 블로그 정보를 모아주는 TimeLine

혼자 공부를 집에서 어떻게 하면 효율적일까 고민을 많이했다. 집에서 주구장창 책을 읽고 해보면 스킬이 늘까? 그렇게 해봤지만 그게 정답은 아니었다. 남들에게는 모르겠으나 나에게는 아니었다. 회사에서 하는..

wedul.site

하지만 사용하는데 생각보다 불편한 부분이 많았고 설계부분에도 현재 시스템을 고려하지 않고 만들었던게 운영에 걸림돌이 되어버렸다. 그래서 서비스를 잠정적 중단하고 2.0을 만들어서 오픈하기로 했다.

 

 

설계 실패 요인

실패 요인 1.

- 젠킨스를 실행시키면 별도의 관리포인트가 생길것으로 우려해 batch application을 계속 실행시켰던 부분이 큰 문제였다. 내 서버는 배치, db, api모두 하나의 서버에서 돌아가는데 4기가라는 부족한 메모리 상황에서 불필요한 batch application을 실행시켜서 다른 애플리케이션에서 메모리가 많이 부족하게 만들었다. 그래서 젠킨스를 작은 메모리를 할당하여 실행시키고 batch job을 세분화하여 batch application이 계속 실행되지 않게 하였다.

 

 

 

각 모듈을 build하는 jenkins job
rss, 스크래핑 등을 진행하는 indexing job
현재 api를 교체하는 job

 

 

 

실패요인 2.

실패요인1과 같이 시스템의 리소스가 많이 부족한 상황에서 api에 호출이 늘어나면 부하가 걸렸다. 그래서 이를 조금이라도 줄여보기 위해서 api에 비동기를 붙이기로 했다. 하지만 사용하고 있는 rdb에서는 비동기가 지원을 하고 있지 않은 상황에서 어떻게 해야하지 고민했는데 마침 r2dbc mysql이 정식 release했다. 굿굿 그래서 이를 사용해서 적용했다. 실제로 드라마틱하게 api 성능이 오른건 아니지만 그래도 확실히 속도가 더 빨라졌다.

 

실패요인 3.

욕심이 생겨 batch에서 긁은 데이터를 writer를 통해 업데이트 하는게 아니라 별도 kafka에 메시지를 보내서 별도 모듈에서 업데이트를 했다. ㅋㅋ 결국 그 욕심이 적은 리소스에 또 문제를 일으켰고 애플케이션이 메모리부족으로 많이 죽었다 에휴 작은 환경에서 무리한 오버스펙은 오히려 문제를 야기한다는걸 더욱 느끼게 되었다. (심지어 필요없는 레디스도 실행시켰다.)

 

실패요인 4.

UI구성을 router, component 구분없이 하나의 컴포넌트에 구분없이 추가하여 확장성 고려도 path구분도 되지 않는 상황이었다. 이를 해결하지 못해서 결국 기능추가도 공유하기도 어려웠다. 그래서 router를 추가하고 페이지를 만들고 각 page에서 사용할 공통 component를 만들어서 편하게 가져다 쓸 수 있도록 구성했다. 그 결과 이제 페이지 하나 늘려서 컴포넌트를 추가하고 빼는건 일도 아니게 되었다. 그리고 하단의 footer를 없애고 vue-sidebar-menu 라이브러리를 사용하여 보는 페이지 뷰를 늘려주었다. 

 

 

변경된 UI

기존의 UI에는 몇 가지 문제가 있었다. 

 

UI 문제 1.

데이터를 보여주는 영역은 가지고 온 제목, 로고, 데이터등을 다 보여주는데 데이터 유형이 모두 달라서 같은 유형으로 보여주기 어려웠다. 채용의 경우 큰 문제가 되지 않았지만 개발 블로그 경우에는 컨텐츠 표시 형식이 모두 달라서 보여주는 영역마다 다 깨졌다. 그래서 채용은 기존틀을 유지하고 테크는 타이틀과 컨텐츠 대표 이미지를 사용해서 리스트를 모여줬다.

좌, 테크 (기술블로그) 영역 리스팅

 

UI 문제 2.

결국 모든 데이터를 아웃링크로 보내다보니 트래픽이 많이 빠졌다. 이를 해결하려면 내부에서 화면을 보여주는게 좋다고 생각했다. 그래서 iframe을 사용해서 화면을 보여주도록 변경했다. 하지만 iframe을 막은 사이트에 경우에는 아웃링크로 가서 볼 수 있도록 아웃링크로 가는 링크를 만들어주었다.

 

 

 

 

 

UI 문제 3.

보고 싶은 업체만 보고 싶은 경우에 볼 수 있는 방법이 없었다. 그래서 이를 해결하기 위해서 상단의 리스트 바를 만들어서 자유롭게 골라서 볼 수 있도록 구성했다.

 

 

업체 리스팅

 

 

 

 

회고

2.0을 만들겠다고 생각했을 때 나 혼자서 만들기는 어렵다고 판단해서 같이 전직장에서 일했던 친구에게 부탁했다. 친구(https://lelecoder.com/)가 마침 이직을 하기 전이라 놀고 있어서 업무를 많이 진행해줬고 그래서 더 많은 컨텐츠를 가져올 수 있었고 수집된 컨텐츠 정보와 에러 정보를 slack으로 받는 기능등을 추가 받을 수 있었다. 함께하니 더 재밌고 좋았다. 나중에 같이 일할 수 있는 기회가 또 왔으면 좋겠다.

 

 

수집한 컨텐츠 정보를 알려주는 slack과 에러 발생시 알려주는 slack

 

 

 

추가된 정보와 변경된 구조 그리고 ui가 모두 맘에 든다 많은 분들이 구경와서 더 좋은 컨텐츠를 모아서 보여줄 수 있는 서비스가 되었으면 좋겠다.

해당 프로젝트는 비영리적 목적으로 해당 코드를 가지고 수정하거나 상업적 용도로 사용하는 것을 금지한다.

http://wedul.space

 

 

새로워진 TimeLine 2.0

 

 

 

댓글()
  1. jayden 2020.01.27 23:23 댓글주소  수정/삭제  댓글쓰기

    좋은 정보네요. 타임라인 사이트 자주 찾아갈게요.

  2. byrage 2020.01.28 23:36 댓글주소  수정/삭제  댓글쓰기

    좋은서비스에 쿨한회고 조합 멋지네요. 고생하셨습니다~

  3. Favicon of https://lelecoder.com BlogIcon jayden-lee 2020.01.29 16:43 신고 댓글주소  수정/삭제  댓글쓰기

    wedul은 무슨 뜻인가요?

  4. 감자아빠 2020.01.30 14:54 댓글주소  수정/삭제  댓글쓰기

    해당 채용 정보를 다시 RSS로 제공해도 좋을것 같습니다.

[토이 프로젝트 소개] 개발자 채용, 기술 블로그 정보를 모아주는 TimeLine

IT 지식/기타지식|2019. 8. 18. 21:46

혼자 공부를 집에서 어떻게 하면 효율적일까 고민을 많이했다.

집에서 주구장창 책을 읽고 해보면 스킬이 늘까? 그렇게 해봤지만 그게 정답은 아니었다. 남들에게는 모르겠으나 나에게는 아니었다. 

 

회사에서 하는 업무는 한정적이니 내가 회사에서 하지 못하지만 알고 싶고 잊고 싶지 않은 내용에 대해서 프로그램을 직접 만들면서 공부할 내용을 정리하고 싶었다.

그래서 만들게 된게 타임라인인데, 개발자 채용정보나 기술 블로그를 rss등을 사용해서 모아볼 수는 있으나 별도의 관리 툴이나 브라우저에서 확인해야해서 좀 불편했다. 그래서 그것을 한번에 볼수 있게 하는 사이트가 있으면 좋을 것 같아서 만들어봤다.

우선 주소는 http://wedul.space이다. aws에 도입하고 싶었으나 비용도 걱정되니해서 집에있는 간이 서버에 도입하였다.

화면은 잘 그릴지 몰라서 vue.js 책을 사서 간단하게 읽고 구성했다.

 

홈 / JOB / TECH로 페이지는 구성되어 있고 앞으로 로그인하여 본인이 구독하고 싶은 회사만 보는 기능을 추가할 예정이다. 그리고 자세히보기 누르면 현재는 해당 페이지로 이동하지만 timeline 내부에서 볼 수 있는 페이지를 추가할 예정이다.

 

원래는 혼자 저 정도 까지 구성하다가 크롤링 사이트를 확장하는데 혼자하기에는 조금 역부족이고 함께하고 하고자 하는 친구가 있어서 요청했다. 그래서 테크쪽과 프론트는 그 친구가 담당해주고 있다. 

저장소는 공개 되어있고 참여하고 싶으신 분들은 pull-request 보내주셔도 좋다.

https://github.com/weggdul/timeline

 

 

백엔드 구성


아무래도 나는 백엔드 개발자이다 보니 백엔드에만 사실 집중했다. 크롤링 양이 많지 않아서 별도 배치를 만들거나 큐에 쌓거나 할 필요는 없었으나 공부를 위해서 모두 구성해봤다.

우선 java8, spring-boot2.1.5로 구성되어 있고 멀티모듈로 관리하고 있다. (https://github.com/weggdul/timeline)

api 서버는 spring-batch를 통해 긁어온 데이터가 쌓여있는 mariadb에서 정보를 가져와 보여주며 중간에 redis가 위치해 있어 데이터를 캐시하고 있다.

 

batch 서버는 spring-batch에서 하루 두번 모든 JOB, tech사이트에 들러 크롤링해오고 그 정보를 kafka로 전송한다. kafka를 리스닝 하고 있다가 kafka에 데이터가 들어오면 읽어서 mariadb로 적재시키고 있다.

 

아직 미완 단계지만 다 만들어지고 나면 배포 자동 구성도 하고 seo도 달고 광고도 한번 달아봐야겠다.

공부도 확실히 되는거 같고.. 연말까지는 하고자 했던거 다 붙여보자.

댓글()
  1. 지나가는개발자 2019.08.19 14:19 댓글주소  수정/삭제  댓글쓰기

    토이프로젝트 깃 주소도 그렇고 서비스주소도 없다고뜨네요?

    • Favicon of https://wedul.site BlogIcon 위들 wedul 2019.08.19 14:26 신고 댓글주소  수정/삭제

      안녕하세요. 주소 정보는 아래와 같구요. 다시한번 확인해주세요!

      서비스 사이트 : http://wedul.space
      github : https://github.com/weggdul/timeline

  2. Favicon of https://wedul.site BlogIcon 위들 wedul 2019.10.30 15:01 신고 댓글주소  수정/삭제  댓글쓰기

    잠시 서비스 중단합니다.

  3. 나그네 2020.01.30 14:19 댓글주소  수정/삭제  댓글쓰기

    작업하시는데 얼마나 걸리셧나요

[책프협] 2019 책쓰는 개발자 책노리 방문 후기

세미나|2019. 3. 31. 17:33

작년에 어떤 출판사에서 블로그 글을 보고 책을 내보는건 어떻냐고 연락이 왔었다.

겁도 나고 내가 부족하다 생각해서 답장을 하지 못했다. ㅜㅜ 조금 후회 된다. 답장이라도 한번 해볼껄.

지금까지 공부한 내용을 남들에게 설명하고 정리하면 책도 내보고 공부도 할 수 있을것 같은데 아쉽다. 나중에 또 오면 연락을 해봐야겠다.

 

우선 그래서 개발자들이 책을 어떻게 쓰게되고 작성하는지 알아보기 위해 책쓰는 개발자 협회에서 하는 강연에 참석했다.

참석 기념품으로 교보문고에서 제공하는 달력을 받았다. 크게 기능이 있는 달력은 아닌거 같다.

 

책을 작성한 개발자분들의 대다수는 처음 책을 작성할 때 내가 부족한데 가능할까? 이런 의문을 가지고 겁도 냈다고 했다. 

그래도 하고나니 자신감도 붙고 그렇게 어렵지는 않다고했다. 단, 엄청 노가다 작업과 긴 시간이 필요하다고 했다. 

그래도 한번 해보면 재밌을 것 같다 ㅋㅋ

 

조금 더 책을 작성하고 싶은 개발자는 어떻게 해야하는지 어떻게 접촉하고 준비해야하는지에 대한 내용이 있었으면 좋겠는데 너무 전략적으로 책을 홍보하고 글쓰기를 잘하는 방법에 대해서만 알려줘서 아쉬웠다.

시간이 없어 마지막 뒤풀이는 가지 못해서 아쉬웠지만 그래도 어느정도 도움이 된 것 같다. 

언제든 책 작성 관련해서 연락이 오게 되면 작성할 수 있도록 공부 열심히 해놓자!

'세미나' 카테고리의 다른 글

[책프협] 2019 책쓰는 개발자 책노리 방문 후기  (0) 2019.03.31

댓글()

synology ds118에서 redis 설치하기 (패키지 센터가 아닌 직접 설치)

상품리뷰|2019. 2. 23. 23:18

synology에서 docker나 redis 등을 패키지 센터에서 설치하여 사용할 수 있다.


하지만 이상하게 저렴하게 나온 NAS, 그 중에서 x86 cpu를 사용하는 경우에는 패키지 센터에서 직접 redis를 설치할 수가 없다 ㅜㅜ


그래서 방법을 찾았다. 그 방법을 까먹지 않기 위해서 정리해보자.


1. DSM에서 SSH 허용

이 부분은 아주 간단하게 DSM > 설정 > 네트워크에서 SSH 허용하여 접속을 킬 수 있다. 보안상 포트는 22가 아닌 다른 번호로 바꾸고 방화벽을 설정하는 것을 추천한다. 자세한건 검색하면 엄청 나오고 간단하다.


2. redis 다운로드

redis 설치하여 운용하기 위해서 공식홈페이지에서 다운로드한다. 그리고 SFTP나 FTP 또는 단순하게 DSM에 드래그 해서 파일을 NAS에 옮겨준다. (wget으로 직접 콘솔로 받아도 무관)

https://redis.io/


3. redis 컴파일

다운 받은 redis 설치은 tar로 압축되어있다. 압축된 파일을 "tar xvfz 파일명"으로 해제한다. 그리고 이를 컴파일 해야하는데 make 명령어를 쳐도 먹질 않는다 ㅜㅜ make command not found가 발생한다 ㅜㅜ 이를 해결하기 위해서 ipkg를 설치해야 한다.


4. ipkg 설치

ipkg 설치를 위해서 패키지 센터에 설정에 들어가서 패키지 소스를 누르고 해당 주소를 추가한다.

https://www.cphub.net/

그리고 Easy Bootstrap Installer를 설치하고 ipkg gui를 설치한다. ipkg gui는 설치된 유틸리티를 유아이로 자세히 보기 위해서 사용된다. 굳이 필요없으면 안 깔아도 되고 깔게 될 경우 perl이 필요하다.



5. 필요한 명령 유틸리티 설치

1
2
3
4
/opt/bin/ipkg install autoconf
/opt/bin/ipkg install make
/opt/bin/ipkg install gcc
cs

redis 설치에 필요한 몇 개의 유틸리티를 설치한다. 


6. redis 컴파일 및 설치

다시 압축을 해제한 폴더 내부로 이동하여 make 명령어를 쳐서 컴파일을 수행한다.

컴파일이 완료되면 sudo make install 명령어를 통해 설치를 진행한다.


7. 실행

설치가 완료되면 redis-server 명령어를 입력하여 실행한다. background에서 실행시키기 위해서 &를 함께 사용한다. 실행이 되면 redis-cli를 쳐서 정상적으로 동작하는지 확인해보자.


NAS를 사용해서 개인적으로 서버를 가지고 놀아보는것도 좋다. 

기존에는 aws로 자주 놀았지만 아무래도 비용도 비싸고 실수로 비용청구가 될 가능성이 많으니 nas로 잘 놀아보자.

댓글()
  1. Favicon of https://wedul.site BlogIcon 위들 wedul 2019.02.24 01:02 신고 댓글주소  수정/삭제  댓글쓰기

    https://xpenology.com/forum/topic/4320-공유-각종-유틸리티-사용을-위한-ipkg-설치-과정

  2. Favicon of https://wedul.site BlogIcon 위들 wedul 2019.02.25 08:29 신고 댓글주소  수정/삭제  댓글쓰기

    export PATH=/opt/sbin:/opt/bin:$PATH

  3. Favicon of https://wedul.site BlogIcon 위들 wedul 2019.02.25 08:42 신고 댓글주소  수정/삭제  댓글쓰기

    https://dzone.com/articles/building-redis-from-source-on-ubuntu-server-1804

  4. 손상진 2019.07.25 00:47 댓글주소  수정/삭제  댓글쓰기

    글 도움 많이 받았습니다
    저같은 경우는 컴파일시에 libfl.so 파일을 못찾아서.. 추가적으로
    /opt/bin/ipkg install flex
    를 해서 해당 라이브러리를 설치하고 진행하니 잘 되더라고요~!

2018년을 마무리하고 2019년 시작하는 순간

생각|2018. 12. 24. 23:07

2018년이 마무리되는 시점이 오니 회사에서 다이어리와 캘린더 세트를 제공했다.


이전 직장에서도 이와 비슷한 상품들을 많이 받았어서 크게 기대감은 없었지만 그래도 박스도 세련되고 다이어리도 고급져서 좋았다.


내가 좋아하는 딱딱한 디자인에 커버 다이어리 두개와 펜 그리고 달력이 있었다.

다이어리는 마음에 든다.


2018년에 회사를 옮기고 생각하고 기대했던 부분과는 조금 다른 부분이 많아 아쉽다.

그래도 나름대로 새로운 프로젝트도 경험을 계속하고 있고 책임감도 완성도도 높아지는 것 같아서 만족스러운 부분도 있다.

내가 마음에 든 다이어리와 펜을 빼고 나머지는 책장에 꼽아두었다. 2019년이 시작되기 바로전인 지금 다이어리를 받으면서 여러 생각이 들었다.

너무 많은 생각을 앞서가며 걱정하니 머리만 아팠다. 크게 생각하지 말고 우선 내가 하는일에 집중하고 더 나은 사람이 되기 위해서 더 노력하고 공부 해야겠다.


내가 내 자신에 부끄럼없고 당당하고 자신감이 있으면 걱정도 없어질 것 같다. 

환경과 남을 탓하지말고 나부터 잘하자.


결혼이 있는 2019년에는 더 재밌는 한해를 보내보자. 아즈아

'생각' 카테고리의 다른 글

2018년을 마무리하고 2019년 시작하는 순간  (2) 2018.12.24
첫 프로젝트 오픈  (0) 2018.11.19
피아노 독학 시작  (0) 2018.10.04

댓글()
  1. 대니 2018.12.24 23:27 댓글주소  수정/삭제  댓글쓰기

    지금도 충분히 멋져

로지텍 mx master 2s 잠실 롯데월드 타워 하이마트에서 구매 후기

상품리뷰|2018. 12. 22. 20:14

회사에서 사용중인 매직 마우스2가 너무 높이가 낮아서 마우스가 하나 필요했다.


집에서 사용중인 로지텍 마우스가 있지만 그건 집에서 사용해야 하니 한 사기 위해서 하이마트로 향했다.

로지텍 마우스중 내 눈에 들어온건 mx master 2s와 mx anywhere 2s 인데 anywhere는 너무 높이가 낮았다. 그렇지만 가격은 mx master 2s가 너무 비쌌다. 129,000원 ㅎㄷㄷ


너무 비싸서 마다 하려 했지만 요새 야근이 많이 손목도 아프고 야근 수당이 나오니 야근수당으로 산다고 생각하고 구매했다.


제품박스는 되게 컸다.

앞에 뚜껑을 열면 자석으로 붙어있고 제품 상세를 확인 할 수 있다.

아주 심플하다 ㅋㅋ 

유니파잉 수신기와 마우스 그리고 충전 케이블이 있다.


이 마우스는 기존에 사용중이던 마우스들과 다르게 충전해서 사용한다.

그래서 당장은 건전지를 사지 않아도 되는 장점이 있지만 나중에 배터리 수명이 다하면 문제가 발생할 수 있다.

물론 그전에 망가지겠지만 ㅎㅎ


제품의 밑바닥은 수신장치를 바꾸는 버튼과 충전 단자 그리고 ON/OFF 스위치가 있다.


그립감도 좋고 다 괜찮다.

가격이 너무 비싸다 ㅜㅜ 그래서 아마존에서 직구하고 싶었으나 직구하면 국내에서 수리가 안되기 때문에 그냥 비싸도 국내에서 샀다.

댓글()