전체 글 139

삼성 갤럭시북 NT750XDZ-A51A / 11번가 특가 구매

대학 때부터 쓰던 노트북을 보내주고 7년만에 새 노트북을 구매하게 되었다. 11번가에서 라이브방송 이벤트에 참여하여 저렴하게 구매할 수 있었다. 고려 조건은 15인치, 램 16기가 이상, SSD 슬롯 2개, 1.5kg 이하 였고, 이를 충족하는 삼성 갤럭시북 NT750XDZ-A51A을 구매하였다. 이틀만에 배송 완료!! 윈도우 설치는 전에 부팅 USB 만들어 둔 것으로 BIOS키 F2키 연타해서 부팅 순서 바꿔서 하면 금방 된다. 노트북 그래도 삼성인거 같다. 구매링크: https://www.11st.co.kr/products/3455812118

일상/리뷰 2021.09.18

키보드 구매기

레오폴드 저적을 사용해보고 나서 집에 있는 키보드도 바꾸고 싶은 뽐뿌가 왔다. 내가 원하는 사양은 다음과 같다. 저소음 / 블루투스 / 68keys 미니배열 / 10만원 내외 여기서 저소음으로 축들을 알아보니 몇 개로 좁혀졌다. 저소음 적축은 이미 사용중이므로 제외했다. 무접점 저소음 갈축 갈축 - 저소음은 아니지만 써보고 싶어서 다음을 만족하는 후보군이다. 1. 한무무라고도 불리는 한성 GK868B TICO 무접점 가격: 최저 149,000 + 배송비 2,500 키 개수: 68 keys 연결: 블루투스 4.0 / USB type-c / 2,500mAh / 최대 3대 동시 연결 LED: 핵구린 충전중, Caps Lock 표시 스위치: 정전용량 무접점 스위치 (35g, 50g) 키캡: 체리 프로파일 PBT..

일상/리뷰 2021.09.13

레오폴드 FC660M PD / 저소음 적축

첫 기계식 키보드 입문으로 레오폴드를 구매하였다. 6개월동안 사용해보고 지금 후기를 올린다. 레오폴드 FC660M PD 가격: 당시 최저가 11만원 대 컬러: 그레이 블루 인터페이스: 유선 USB. 21/02 월 당시에는 BT모델이 모두 품절이였다. 배열: 66개 keys. Fuction key 금방 적응된다. 책상을 넓게 사용할 수 있어 미니 배열이 아니면 이제 불편하다. 축: 체리 저소음 적축 키압: 적축 45g 키캡: PBT 이중사출 소음: 내가 세게 쳐서 그렇지 살살 치고 거기에 장판까지 깔면 매우 조용하여 사무실에서도 가능하다. 멤브레인만큼 조용하다. 서걱거리는 느낌이 너무 좋으며 리니어 방식으로 걸리는 것이 없다. 스페이스바에서 가끔 텅텅 소리가 나지만 크게 신경쓰일 정도는 아니다. 너무 너무..

일상/리뷰 2021.09.13

모니터암 구매기

현재 집에서는 24인치 LG 모니터와 죽어가는 7년차 13.5인치 노트북을 사용하고 있다. 15.6인치 노트북을 새로 사게 되면서 모니터암에 노트북을 올려 책상을 넓게 사용하고자 한다. 모니터 암 nb h100 가격: 최저 25,000 원대 장점: 최대높이 550mm, 회전각도 360도 단점: 치명적인 노란색 NB 로고 nb f80a 가격: 최저 19,560 원대 - 최고 높이 420mm - 가스실린더 방식 카멜마운트 MA-2 (고급형 싱글 2단) 가격: 42,000 (복지몰 기준) 최대높이 600mm / 최대거리 590mm GMA-1 (프리미엄형 싱글 1단) 가격: 40,130원 (복지몰 기준) 최대높이 480mm / 최대거리 320mm 모니터 거치부 360도 회전가능 GMA-2 (프리미엄형 싱글 2단..

일상/리뷰 2021.09.11

GoF의 디자인 패턴. 생성패턴 5. 싱글턴

- 지난 글에 이어 생성패턴을 다뤄본다. 추상 팩토리 (Abstract Factory) 빌더 (Builder) 팩토리 메서드 (Factory Methods) 프로토타입 (Prototype) 싱글턴 (Singleton) 싱글턴 (Singleton) - 의도 단 한 개의 클래스 인스턴스를 갖도록 보장하고, 이에 대한 전역적인 접근점을 제공한다. - 동기 JDBC connection 관리하는 connection pool 등은 객체가 여러 개 생성되면 설정 값이 변경될 위험이 있다. 클래스 자신이 자기의 유일한 인스턴스로 접근하는 방법을 자체적으로 관리하도록 한다. - 활용성 클래스의 인스턴스가 단 하나임을 보장하고, 잘 정의된 접근점으로 모든 사용자가 접근할 수 있도록 해야 할 때 유일한 인스턴스가 서브클래싱..

GoF의 디자인 패턴. 생성패턴 4. 프로토타입

- 지난 글에 이어 생성패턴을 다뤄본다. 추상 팩토리 (Abstract Factory) 빌더 (Builder) 팩토리 메서드 (Factory Methods) 프로토타입 (Prototype) 싱글턴 (Singleton) 프로토타입 (Prototype) - 의도 생성할 객체의 원형(prototpye)을 만들고, 이렇게 만든 견본을 복사하여 새로운 객체 생성 - 동기 원형이 되는 클래스를 생성하고, 해당 클래스의 객체를 복제하여 새로운 객체를 만들어나가는 패턴이다. 클래스를 동일하게 유지하면서 내부의 값이나 구조를 바꿔가며 새로운 객체를 만들 수 있기 때문에 클래스의 개수를 줄일 수 있다. - 활용성 제품의 생성, 복합, 표현 방법에 독립적인 제품을 만들고자 할 때 쓰인다. 인스턴스화할 클래스를 런타임에 지정..

GoF의 디자인 패턴. 생성패턴 3. 팩토리 메서드

- 지난 글에 이어 생성패턴을 다뤄본다. 추상 팩토리 (Abstract Factory) 빌더 (Builder) 팩토리 메서드 (Factory Methods) 프로토타입 (Prototype) 싱글턴 (Singleton) 팩토리 메서드 (Factory Methods) - 의도 객체를 생성하기 위해 인터페이스를 정의하지만, 어떤 클래스의 인스턴스를 생성하지에 대한 결정은 서브클래스가 내리도록 한다. - 동기 객체를 "제조하는" 방법을 아는 연산을 분리한다. - 활용성 어떤 클래스가 자신이 생성해야 하는 객체의 클래스를 예측할 수 없을 때 생성할 객체를 기술하는 책임을 자신의 서브클래스가 지정했으면 할 때 객체 생성의 책임을 몇 개의 보조 서브클래스 중 하나에 위임, 어떤 서브클래스가 위임자인지에 대한 정보를 ..

GoF의 디자인 패턴. 생성패턴 2.빌더

- 지난 글에 이어 생성패턴을 다뤄본다. 추상 팩토리 (Abstract Factory) 빌더 (Builder) 팩토리 메서드 (Factory Methods) 프로토타입 (Prototype) 싱글턴 (Singleton) 빌더 (Builder) - 의도 복잡한 객체를 생성하는 클래스와 표현하는 클래스를 분리하여, 서로 다른 표현이라도 이를 생성할 수 있는 동일한 절차를 제공한다. - 동기 생성과 표현의 분리를 통한 책임 분리 - 활용성 복합 객체의 생성 알고리즘이 이른 합성하는 요소 객체들이 무엇인지 이들의 조립 방법에 독립적일 때 합성할 객체들의 표현이 서로 다르더라도 생성 절차에서 이를 지원해야 할 때 - 구조 - 참여자 Builder: Product 객체의 일부 요소를 생성하기 위한 추상 인터페이스 정..

GoF의 디자인 패턴. 생성패턴 1.추상 팩토리

생성패턴(creational pattern) 인스턴스를 만드는 절차를 추상화하는 패턴 특징 1) 생성패턴은 시스템이 어떤 구체 클래스를 사용하는지에 대한 정보를 캡슐화한다. 특징 2) 생성패턴은 이들 클래스의 인스턴스들이 어떻게 만들고 어떻게 서로 맞붙는지에 대한 부분을 완전히 가려준다. 예시) java toString() 메소드처럼 목적은 같지만 생성한 클래스에 따라 결과물이 다르게 생성되는 메소드가 있다. -> 결론적으로 생성에 대한 유연성을 확보할 수 있다. - 생성패턴은 5개이고, 추상 팩토리부터 다뤄보도록 한다. 추상 팩토리 (Abstract Factory) 빌더 (Builder) 팩토리 메서드 (Factory Methods) 프로토타입 (Prototype) 싱글턴 (Singleton) 추상 팩..

GoF의 디자인 패턴. 서론

- 디자인 패턴 특정한 전후 관계에서 일반적 설계 문제를 해결하기 위해 상호교류하는 수정 가능한 객체와 클래스들에 대한 설명 "설계를 더 융통성있고, 모듈화하며, 재사용 가능하고, 이해하기 쉬운 것으로 만들 수 있는 통찰력" 이런 객체지향의 장점을 극대화 하는 것이 디자인 패턴이다. 각 디자인 패턴은 기존 환경 내에서 반복적으로 일어나는 문제들을 설명한 후, 그 문제들에 대한 해법의 핵심을 설명한다. 똑같은 방법으로 두 번 하지 않고, 이 해법을 100만 번 이상 재사용할 수 있다. - GoF(Gang of Fout) 에리히 감마(Erich Gamma), 리차드 헬름(Richard Helm), 랄프 존슨(Ralph Johnson), 존 블리시디스(John Vissides) 소프트웨어 개발 영역에서 디자인..

hackerrank/Data Structures/Arrays/Dynamic Array

https://www.hackerrank.com/challenges/dynamic-array/problem 식도 다 세워준 문제인데 지문 이해가 좀 어려웠다. input을 아래와 같이 이해하면 쉽게 해결된다. 2 5 // n q 1 0 5 // query_type x y 1 1 7 1 0 3 2 1 0 2 1 1 lastAnswer를 print하는데에 for문 안에서 그때그때 하는 것이 아니라 main 로직에서 return 된 result를 string으로 mapping 시킨 후 print 해주기에 나는 lastAnswer를 list에 담아 반환해주면 된다. 2차원 배열을 이해하는 문제이다. #!/bin/python3 import math import os import random import re im..

algorithm/python 2021.07.18

java 장애 hang up 걸렸을 때

jstack jdk 1.6 이상을 사용하고 있다면 Microsoft Windows에서도 jstack을 이용해 thread dump를 획득할 수 있다. 먼저 수행 중인 Java application process의 PID를 확인해야 한다. PID는 아래와 같이 jps로 확인 jps -v jps로 추출한 PID를 파라미터로 넣어 jstack을 실행하여 thread dump를 획득한다. jstack 2123 그 후, locked 라고 되어있는 printTrace를 확인한다. 출처: https://dzone.com/articles/how-analyze-java-thread-dumps https://d2.naver.com/helloworld/10963

language/java 2021.07.17

null pointer exception 예방하기

java.lang.NullPointerException (NPE) 발생원인: Runtime Exception으로 java말고도 대부분 개발언어에서 자주 발생한다. null 객체를 참조하였을 때 발생한다. 해당 주소를 찾아갔을 때 아무것도 없다는 의미이다. 방어코드: 1) return null 지양하기 null이 "데이터 없음"을 의미할 수 도 있지만 "failure"를 의미하는 경우도 있어 모호하므로 버그가 많이 발생하게 된다. 되도록이면 return null 은 사용하지 않기로 한다. 2) parameter로 null 넘기지 말기 1번과 같은 의미로 어떤 특별한 의미가 없다면 굳이 주지도 받지도 말자. 3) null check 하기 TestObject test = new TestObject(); Str..

algorithm/java 2021.07.11