Google 태그 관리자 아이콘
반응형

전체 글 177

.ref(말그대로 나만의 기획 밑그림 그려보기 sketch)

www.sketch.com/downloads/mac/ Download Sketch Sketch is a design toolkit built to help you create your best work — from your earliest ideas, through to final artwork. www.sketch.com 위의 사이트에서 다운로드 받으면 무료로 사용할 수 있는 기능이 있다. 사실 관련된 이해는 전무하고 파워포인트 정도만 다룰 줄 아는 수준의 이런 툴 사용능력이 있는데도 굉장히 직관적으로 되어있어 그 사용이 아주 편리하다. 파워포인트처럼 쓰되 이런거 가능할까하는 기능은 다 구현되어 있다. 예를들어 간격조절 부터 컴포넌트의 편리한 선택까지 그리고 클라우드 동기화가 가능해서 어디서든지 편집이..

참고할만한 곳 2021.01.01

.leetcode(136. Single Number)

문제 leetcode.com/problems/single-number/ 문제 풀기 전 정렬을 사용해서 2개씩 확인해서 다른것이 있으면 그게 하나만 있는거라고 생각했다. 직접 푼 풀이 소요시간: 22분(11:37 ~ 11:59) class Solution { public int singleNumber(int[] nums) { //정렬 Arrays.sort(nums); //n,n+1 다르면 n이 정답 int answer = 0; for (int i=0;;i+=2) { if (i == nums.length-1) { answer = nums[nums.length-1]; break; } if (nums[i] != nums[i+1]) { answer = nums[i]; break; } } return answer;..

알고리즘 풀이 2021.01.01

.leetcode(22. Generate Parentheses)

문제 leetcode.com/problems/generate-parentheses/ Generate Parentheses - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 문제 풀기 전 stack이 필요할거같았다. 전역변수를 쓰면 편할거 같았다. end조건만 챙기고 다 돌면 풀 수 있겠다라는 생각이 들었다. 요소가 2개로 한정되어있어서 재귀를 쓸때 2번호출하는걸 로직에 넣으면 해결되겠다는 생각도 하였다. 직접 푼 풀이 class Solution { private..

알고리즘 풀이 2020.12.31

.summary(05.스파크로 빅데이터 다루기:빅데이터 분석을 위한 스칼라와 스파크)

빅데이터 분석을 위한 스칼라와 스파크 스파크를 이용해 데이터 분석 방법을 배우려는 사람에게 매우 유용한 책이다. 가장 먼저 스칼라를 소개하고, 스칼라 애플리케이션 개발에 필요한 객체지향 개념과 함수형 프로그래밍 개념을 설 www.yes24.com 요약: 05.스파크로 빅데이터 다루기 하둡과 맵리듀스 프레임워크의 발전 과정과 개념 하둡 프레임워크는 크게 스토리지와 프롸세싱을 제공한다. 스토리지는 hdfs로 데이터를 block으로 분할해서 관리한다. 이때 메타데이터를 관리하는 네임노드와 실제 분할된 데이터를 관리하는 데이터노드라는 개념으로 전체 파일을 관리한다. 프로세싱에는 맵리듀스 프레임워크가 있는데 입력데이터를 분할하고 분할된 데이터를 복사해서 처리된다. 이때 자원관리자와 여러 노드관리자로 구성되어 작업..

책 요약정리 2020.12.27

.case(삭제 테이블 설계 고려사항)

고민 테이블의 특성마다 다르겠지만 삭제를 어떻게 다룰지가 참 늘 고민이다. 결론 raw데이터 테이블이 아닌데 삭제가 필요하다 > 2번 방식: 바로 삭제하기 삭제된 데이터만 따로 관리가 필요하다. > 3번 방식: 삭제전용 테이블로 이동하기 삭제된 데이터를 따로 보진 않지만 복구가능한 컨텐츠다. > 1번 방식: 상태값으로 삭제(노출) 관리하기 접근방법 첫번째로는 상태값을 두고 삭제여부를 표시하는것이다. 이는 리스트 표시할때 신경써야하지만 정말 삭제하지 않고 데이터를 남길 수 있다는 장점이 있다. 복구시에도 기존 리스트와 순서를 맞추어 유지되기도 한다. 두번쨰는 상태값을 저장하지않고 바로 delete해버리고 새로 다시 들어오면 Insert하는것이다. 이런 경우 복구시에 순서를 유지하려면 사실 ai 필드에 의존..

.case(금액차감시 로직 설계 고려사항)

고민 유저가 가진 돈에서 특정 금액을 투입하여 응모를 하는 경우 고려 사항 결론 아래 사항들을 기본으로 고려해보고 추가로 더 필요한게 없을지 생각해본다. 접근방법 주의사항 트랜잭션을 고려, exception고려 유효성 대상에 대한 확인 로그인된 유저인지 ban과 같은 자격을 상실한 유저가 아닌지 대상 국가인지 자신의 돈이 응모액보다 많은지 응모를 할 수 있는 상황인지 응모권이 남아있는지 응모기간인지 대상 유저가 응모할 수 있는지(당첨자 이거나 이미 응모한 경우를 제외하는 경우) 프로세스 금액 차감 로그 남기기 해당 응모권의 수량 변화

.findout(java와 mysql에서 emoji 길이 통일시키기)

고민 서버(spring, java)와 mysql에서 emoji길이 인식의 차이가 있다. 같은 이모지인데 왜 길이 값을 다르게 인식하는지 이해가 안되었다. 또한 글자 길이 제한로직을 처리하기위해서는 이들의 일관된 기준이 필요하였다. 결론 db의 collataion을 utf8mb4임을 확인하고 서버(java)에서 String을 아래처럼 분해하여 같은 글자길이로 인식하도록 설정해서 해결하였다. 접근방법 mysql 확인 mysql에서는 emoji가 제대로 잘 보였고 어떻게 그런지 확인해보았다. 흔히 글자수를 제한한 필드를 선언할때 varchar(20)과 같이 선언하고 있는데 여기서 varchar의 20이 어떤 collataion으로 선언되어있는지가 중요하다. 다음 명령어로 확인이 가능하였다. SHOW VARIA..

.use(collection객체 로그남기기: list, set, map)

고민 collection객체에 대해 데이터가 잘 들어가있는지 종종 로그로 남기고 싶다. 그때마다 for문을 돌려서 만들기는 거창한데 간단한 방법이 있으면 좋겠다고 생각했다. 결론 list, setStringUtils.join(hashKeyCollections, ",") mapStringUtils.join(hashKeyMap.entrySet().stream().collect(Collectors.toList()), ",")Arrays.toString 대신에 더 안전 접근방법 기존에는 Arrays.toString을 이용하기도 했는데 StringUtils로 하면 좀 더 편했다. map은 사실 좀 더 편한방법이 있으면 좋겠다고 생각했으나 현재는 저렇게 표현하는게 최선이었다. Joiner.on(",").withKe..

카테고리 없음 2020.12.22

.use(@Nullable의 재발견)

고민 가끔 spring이나 여타 라이브러리코드를 보면 심심치 않게 @Nullable같은걸 쓴걸 본적이 있으나 거추장스러울뿐 왜 쓰는지 몰랐다. 이번에 개발을 하면서 여러개 복잡한 코딩을 하다보니 해당 리턴값이 null에 대한 두려움이 생겼는데 이걸 처리하다보니 코드가 null가드로 지저분해지는게 싫었다. 결론 @Nullable을 명시적으로 메소드상에 표시해줌으로써 해당 코드가 null이 넘어올 수 있는지 없는지를 구분하니 가독성도 커지고 보일러플레이트한 널가드도 코드를 더이상 안써도 되겠다는 생각이 들었다. 접근방법 @Nullable 리턴코드에 써놓아 해당 메소드를 호출하는 곳에서 null처리를 하도록 표시해준다. 반대로 @NotNull 코드를 이용해서 리턴 null을 안보낸다는 표현도 해줄 수 있다. ..

.findout(Redis를 이용해 CyclicBarrier만들어보기)

고민 물리적/논리적으로 분리되어 있는 서버에서 특정 request가 몇번 들어올걸 체크하고 그 이후에 로직이 실행되었으면 좋겠다고 생각했다. 프로세스를 진행을 특정 request수가 총족될때까지 대기하는 시스템을 만들고 싶었다. 처음에는 이런건 메세징시스템에서 가능할거라 생각했지만 잘 아이디어가 안떠올랐고 지식이 없었다. 그래서 익숙한 redis를 사용해보기로 했다. 결론 자바에서는 스레드를 제어하는 방식이 여러개 있는데(CountDownLatch, CyclicBarrier, Phaser 등) 여기서 아이디어를 얻어서 Redis로 구현을 성공하였다. CyclicBarrier가 각 스레드에서 대기했다가 특정시점에 다시 시작되도록 하는 로직이어서 그렇게 구현했다. 접근방법 기본적으로 대기할 request 숫..

반응형