전체 글171 [취준] 2022 신한카드 하반기 B2사원 채용 ICT개발 후기 서류에 붙고 AI 인적성 + 코딩테스트 AI 인적성은 잡다 라는 플랫폼에서 시행하는 역량 검사를 보았는데, 이전에 뉴스에서 보던 AI 역량검사를 보니 기분이 뭔가 싱숭생숭했다. 게임이 처음하면 생각보다 어렵기 때문에 연습이 조금은 필요할 수 있겠다 싶었다. 별개로 별거 안하는 것 같지만 검사를 다 마치는데 보통 1~2시간이 소요되며 집중력을 많이 요하기 때문에 진이 쭉 빠졌다. ( 이후에 많은 기업에서 AI 역량검사를 요구하여 응시하다보니 안 것은 게임의 구성이나 설문, 면접 영상등의 구성이 기업마다 다르게 구성하는 것을 알 수 있었다. 기본적으로 목록이 있고 거기서 얼마나 할지 어떤 것을 할지 인사팀 쪽에서 고르는 느낌) ICT 개발로 지원하였기 때문에 코딩테스트를 응시하였는데 오프라인 코딩테스트를 시.. 주저리주저리/취준 2022. 11. 6. [Lambda] 람다를 활용한 image resize 람다를 활용한 image resize 에 관한 내용은 많다 AWS 에서 자체 자습서 자료를 만들었을 정도로 대표적인 활용 방식인 것 같다. 근데 이제 내가 이를 구현하면서 마주했던 에러를 이야기 해보자한다. 문제 상황 1. 그냥 안됨 => 코드상의 문제이다, 파일 경로와 문법 실수를 유의하자 2. 무한 재귀 => 람다 트리거를 잘못 설정한 경우 s3 버킷을 하나로 사용하는데 조건을 이미지가 업로드 시로 통으로 걸어버리면 이미지 리사이징한 것을 올릴 때에도 트리거가 발동되어 무한으로 이미지 리사이징을 즐길 수 있다 내가 진짜 골치 아팠던것은 3. 이미지 리사이징이 진짜 가끔식 되고 대부분의 케이스에서는 제대로 동작하지 않는 경우였다. 코드는 아무리 뜯어봐도 문제가 없고 계속 테스트 해보다 보면 간간히 한 .. TIL/삽질 기록소 2022. 11. 2. [디자인패턴] 헤드퍼스트 디자인패턴 Chap.10 (Feat. 상태 패턴) 패턴이 나오게 된 문제 상황 각 상태에 따라 행동을 다르게 하고 싶은 경우 이를 상태 변수를 통해 해결하고자 함 => 우리가 정의하는 행동마다 어떤 상태인지를 구별하고(조건문) 이에 따라 어떤 작업을 수행할지 정의해야 함 public class GumballMachine { // 상태 변수로 표현 final static int SOLD_OUT = 0; final static int NO_QUARTER = 1; final static int HAS_QUARTER = 2; final static int SOLD = 3; int state = SOLD_OUT; int count = 0; public GumballMachine(int count) { this.count = count; if (count > 0).. 독서 기록/디자인패턴 2022. 11. 1. [디자인패턴] 헤드퍼스트 디자인패턴 Chap.3 (Feat. 데코레이터 패턴) 패턴이 나오게 된 문제 상황 예를 들어 카페에서 판매하는 음료를 표현하고자 할 때, 커피1, 커피2, 커피3, 커피4 이렇게 종류가 있고, 들어갈 추가 요소가 우유, 두유, 모카, 휘핑크림 등이 있다고 하였을 때 위에 말한 요소들의 조합을 모두 서브 클래스로 만든다면 4*2^4 = 64개의 서브 클래스가 생길 것이다. 만약 우유나 두유 등 추가 요소를 한번만 넣거나 마는 것이 아닌 2번 이상 넣을 수 있다고 가정하면 더욱 경우의 수가 늘어날 것이다. Adding Boolean Variables 로 해결한 경우 앞서 말한 예시에서의 추가 요소에 대한 boolean 변수를 만들어 해결하는 방식이다 이러한 경우 음료 클래스에서의 cost() 구현하고 하위 클래스는 cost()를 오버라이드하여 사용한다. => .. 독서 기록/디자인패턴 2022. 11. 1. [Debug]crontab으로 python 파일 실행 문제 상황 내가 원하는 것은 cron을 활용하여 매일 특정 시간에 추천 주제를 쌓아둔 DB에 접근하여 랜덤으로 값을 뽑아 다른 DB에 값을 써주는 작업을 하고 싶었다. 1. 앞서 말한 내가 원하는 작업을 python 파일로 작성 2. 이것을 crontab을 활용하여 실행 이렇게 진행하였는데 이제 1번은 완성되어 python3 main.py 이런식으로 동작시키면 원하는대로 동작하는 상황에서 crontab으로 main.py 를 동작시키면서 마주했던 에러들에 대해 작성해보자 한다. 해결 과정 내가 사용했던 ubuntu 기준으로 /var/log 의 syslog 파일에 cron관련 로그가 쌓였다. # CRON 관련 로그만 볼 수 있음 grep CRON syslog No MTA installed, discardin.. TIL/삽질 기록소 2022. 10. 27. [디자인 패턴] Composite Pattern Composite Pattern의 특징 트리와 같은 계층적인 정보에서 하위에 정보가 없는 리프노드, 자식이 있는 논 리프노드 가 있을 때, 이런 서로 다른 노드를 같은 인터페이스를 통하여 일관된 방식으로 프로그래밍할 수 있게 함 public class MenuItem extends MenuComponent { String name; String description; boolean vegetarian; double price; public MenuItem(String name, String description, boolean vegetarian, double price) { ... } public String getName() { return name; } public String getDescript.. 독서 기록/디자인패턴 2022. 10. 24. [디자인패턴] Iterator 패턴 Iterator 패턴의 목적 aggregate object의 내부 구현이나 구조를 보여주지 않으면서 aggregate object의 요소들에 접근할 수 있게 하는 것 aggregate object란 다른 object들을 모아두기 위한 객체 == (container, collection), ex) LinkedList, Hash Table... Iterator 패턴을 사용하지 않는 경우 for(int i=0;i< breakfastItems.size();i++){ MenuItem menuItem = (menuItem) breakfastItems.get(i); } for(int i=0;i< lunchItems.length;i++){ MenuItem menuItem = lunchItems[i]; } Iterato.. 독서 기록/디자인패턴 2022. 10. 24. [디자인 패턴] SOLID 원칙 The Single-Responsibility Principle (SRP) The Open-Closed Principle (OCP) The Liskov Substitution Principle (LSP) The Interface Segregation Principle (ISP) The Dependency Inversion Principle (DIP) The Single-Responsibility Principle (SRP) 클래스는 변경될 단 하나의 이유가 있어야 함 하나의 이유는 책임에서 비롯되기에 결국 단 하나의 책임을 지어야 한다 라는 의미 클래스가 지는 책임이란 의무 혹은 계약이다 클래스가 지는 책임이 많아질수록 자주 변경될 것이고 클래스가 자주 변경될수록 버그를 야기시키고 다른 이들에게 영향을 .. 독서 기록/디자인패턴 2022. 10. 18. [디자인 패턴] 중재자 패턴 vs 옵저버 패턴 중재자 패턴(Mediate Pattern)이란? 중재자 패턴(Mediate Pattern)은 서로 상호작용하는 객체들을 느슨한 결합(Loose coupling)을 통해 상호작용하는 작업을 캡슐화하는 것 장점 시스템과 객체를 분리함으로써 재사용성 향상 제어 로직을 한 군데로 분리했기에 관리하기 쉬움 객체들 사이에 오가는 메세지 줄이고 단순화할 수 있음 단점 중재자 객체가 너무 복잡해질 수 있음 서로 연관된 GUI 구성 요소를 관리하는데 많이 사용됨 vs Observer Pattern 중재자 패턴은 객체간의 상호작용을 한군데에 모음, 반대로 옵저버 패턴은 분리시킨다 중재자 객체를 재사용하기 어려움, 반대로 옵저버랑 주제는 재사용하기 쉬움 상호작용의 흐름 이해하기 쉬움, 반면 옵저버 패턴은 흐름 알기 어려움 독서 기록/디자인패턴 2022. 10. 17. [디자인패턴] 헤드퍼스트 디자인패턴 Chap.5 (Feat. 싱글톤 패턴) 인스턴스 1개만 있어도 되는 객체가 많음 예를들어 스레드 풀, 캐시, 대화상자, 디바이스 드라이버 등등 이런 경우 오히려 2개 이상이면 오작동, 일관성이 깨짐 혹은 자원 낭비 등의 문제가 발생할 수 있음 싱글톤 패턴: 클래스 인스턴스를 하나만 만들고, 그 인스턴스로의 전역 접근을 제공한다. 즉, 객체 인스턴스를 전역 변수처럼 어디서든 엑세스할 수 있게 함 또한 사용하지 않으면 자원이 낭비되는 전역 변수의 단점을 감수하지 않는다. 게으른 인스턴스 생성을 통해 필요할 때 인스턴스 생성하여 자원 낭비 막음 싱글톤 패턴을 제대로 구현하면 new를 써서 만들면 안됨 public class Singleton{ private static Singleton uniqueInstance; private Singleton(.. 독서 기록/디자인패턴 2022. 10. 17. [디자인패턴] 헤드퍼스트 디자인패턴 Chap.7 (Feat.어댑터, 퍼사드 패턴) 어댑터 패턴(Adapter Pattern) 기존의 시스템과 연결된 시스템의 클래스가 서로 다르다면 중간에서 이를 변환해줄 어댑터가 필요함 public class TurkeyAdapter implements Duck{ Turkey turkey; public TurkeyAdapter(Turkey turkey){ this.turkey = turkey; } public void quack(){ turkey.gobble(); } public void fly(){ turkey.fly(); } } 클라이언트(Turkey)를 타깃 인터페이스(Duck)로 변환해주는 어댑터 클래스이다. public static void main(String[] args){ Turkey turkey = new Turkey(); Duck t.. 독서 기록/디자인패턴 2022. 10. 10. [디자인패턴] 헤드퍼스트 디자인패턴 Chap.4 (Feat.팩토리) new를 사용하지 않을 수는 없음 디자인 원칙 OCP(Open-Closed Principle): 클래스는 확장에는 열려있어야 하지만 변경에는 닫혀 있어야 한다. 인터페이스 기반이면 어떤 클래스든 인터페이스를 구현하면 사용할 수 있음 (다형성) 구상 클래스를 사용하면 구상 클래스가 추가될 때마다 코드 수정 필요 => 변경에 닫혀있게 됨 => 새로운 구상 형식을 써서 확장할 때는 다시 변경에 열릴 수 있게 하자 Phone getPhone(String model){ Phone phone; // 폰 종류가 늘어날 때마다 코드가 바뀌어야 하는 부분 if(model.equals("galaxy s10"){ phone = new GalaxyS10(); }else if(model.equals("iphone 14"){ p.. 독서 기록/디자인패턴 2022. 10. 10. 이전 1 2 3 4 5 6 7 ··· 15 다음 반응형