본문 바로가기
반응형

전체 글1065

[코딩 스터디 2기] : 12주차 오늘 스터디도 정상적으로 진행했다. 한 쌤이 바쁘셔서 못 나오셔서 3명에서 진행을 했는데 리뷰, 발표 모두 잘 마무리 했다. 발표 @GetMapping("/touchCheck") public String touchCheck(Model model) throws Exception { List carDTOList = iCarListService.getFullCarList(); model.addAttribute(carDTOList); model.addAttribute("checkDTO", new CheckDTO()); return "carCheck/touchCheck"; } 컨트롤러에서 Model 객체에 담아 차량 정보가 담긴 carDTOList와 같이 View로 넘겨준다. 이름 연락처 차량번호 주소 구분 주차.. 2022. 5. 21.
[TIL] : 206 일일 배움을 위한 Today I Learned ! 소경관 View에서 checkbox의 값을 true, false로 받아서 List에 담아 Controller로 넘기는 것을 하고 있다. 지금 애매하게 성공해서 다시 다듬고 로직 정리해 보는 게 좋을 것 같다. 일단, 소스 코드는 깃 허브에 올려뒀다. 2022. 5. 20.
[TIL] : 205 일일 배움을 위한 Today I Learned ! hadoop 시퀀스 파일 압축과 시퀀스 파일 별로 단어별 빈도수를 체크하는 로직을 다시 검토하고 적용했다. 2022.05.19 - [Data Base/Hadoop] - [Hadoop] : 시퀀스 파일별로 단어별 빈도수 세기 2022.05.19 - [Data Base/Hadoop] - [Hadoop] : 시퀀스 파일 압축 소경관 어제 thymeleaf를 마무리 하는 중이다. 잘 안 되서 일단 오늘 까지 해결을 해 보고 어렵다 싶으면 내일 학교에서 선배한테 조언을 좀 얻을 생각이다. 2022. 5. 19.
[Hadoop] : 시퀀스 파일 압축 하둡분산파일시스템에 저장된 데이터는 압축하여 저장이 가능하다. 맵리듀스 처리를 효율적으로 하기 위해 시퀀스 파일로 생성한다. 분석 및 처리의 빈도수 높지 않는 파일은 압축하여 저장하면, 하둡분산파일시스템의 저장소 양은 확보된다. 압축에 사용되는 압축 알고리즘은 SnappyCodec를 활용 SnappyCodec 맵리듀스 분석 대상 및 결과에 대한 압축을 위해 개발된 압축 방식 하둡에서만 사용 가능 Gzip과 유사한 압축 알고리즘 사용 다른 압축 알고리즘에 비해 상당히 빠른 압축 및 해제 시간을 가짐 블럭 단위 압축을 위해 사용 블럭 단위 압축을 하는 이유 압축 방법은 라인별 압축을 수행하는 ‘레코드단위 방식’일정 레코드를 묶어 ‘블록별 압축하는 블록단위’로 구분된다. 압축 효율성은 블록단위에 비해 레코드단.. 2022. 5. 19.
[Hadoop] : 시퀀스 파일별로 단어별 빈도수 세기 시퀀스 파일은 RecordReader 객체가 읽기 쉽게 만든 구조로 기존 맵리듀스 잡을 통해 실행이 가능하다. 이전 실습에서 수행한 ‘단어별 빈도수 세기’ 잡을 통해 실행이 가능하다. (아래 링크 참고) 2022.04.26 - [Data Base/Hadoop] - [Hadoop] : 맵리듀스를 활용해서 단어별 빈도수 분석, 단어 세기 hadoop jar mr.jar hadoop.MapReduce.wc.WordCount /result20/part-m-00000 /result21 정상적으로 실행된 맵리듀스 잡과 단어 빈도수 결과이다. 2022. 5. 19.
[TIL] : 204 일일 배움을 위한 Today I Learned ! 소경관 오늘 프로젝트를 하루 종일 잡고 있었는데 발전이 없었다. 한 부분에서 막혔는데 어려운건 아닌데 뭔가 뇌가 꼬여서 생각이 잘 안 되는지 이상하게 해결이 잘 안 된다. 카페에서 5시간 정도 앉아서 해결 방법을 찾아보다 해결을 못 하겠어서 커뮤니티에 질문 글을 올려뒀다. https://okky.kr/article/1230288 OKKY | thymeleaf에서 입력 값을 list로 Controller에 보내는 방법에 대한 힌트 좀 부탁드립니다. View에서 목록을 불러오고 목록 옆에 체크 버튼 하나 넣어서 true,false로 값을 받아 list로 Controller로 넘겨주려고 하는데 실패하네요. Data public class CheckDTO { p.. 2022. 5. 18.
[TIL] : 203 일일 배움을 위한 Today I Learned ! Hadoop 맵과 시퀀스 프로그래밍을 진행했다. 압축이나 시퀀스 파일별로 단어 빈도수 체크하는 로직도 완성했지만 아직 정리가덜 되어서 우선 공부한 내용만 올려본다. 2022.05.17 - [Data Base/Hadoop] - [Hadoop] : Map 프로그래밍 2022.05.17 - [Data Base/Hadoop] - [Hadoop] : SequenceFile 프로그래밍 Redis ZSet을 사용하여 CRUD를 간단하게 진행하고 있다. 이것을 다 마치면 MongoDB와 연동해서 사용하는 것에 대해서도 공부할 예정이다. 2022.05.17 - [Data Base/Redis] - [Redis] : Zset 타입에 JSON 구조 저장 및 값 저장한 값 가져.. 2022. 5. 17.
[Hadoop] : SequenceFile 프로그래밍 RecordReader 객체가 생성될 때 Map을 나눈다. RecordReader를 더 엄밀히 말 하면 LineRecordReader로 라인별로 Key와 Value를 나누고 Mapper를 호출한다. 아래 세 가지가 가장 많이 사용되는 InputFormat이다. FileInputFormat KeyValueTextInputFormat SequenceFileInputFormat 시퀸스 파일이란? 효율적인 맵리듀스 수행을 위해 생성된 파일 형태 맵리듀스는 64mb 단위로 블록을 나눠서 하둡분산파일시스템에 저장한다. 저장되는 파일의 블록단위가 64mb보다 작은 경우 하둡분산파일시스템에 낭비되는 데이터 공간 및 맵리듀스 실행시 성능 저하가 발생한다. 파일 구조는 key,value 형태로 구현된다. 맵 형태 시퀀스 .. 2022. 5. 17.
[Hadoop] : Map 프로그래밍 맵 프로그래밍은 맵리듀스에서 리듀스를 사용하지 않고 맵만 사용할 때 사용되는 프로그래밍 방식이다. 이미지 프로세싱, 파일 포멧 변경, 분석 대상 샘플링, ETL(Extract, Transform, Load) : 추출, 변환, 로드(저장) 등에 사용한다. 맵 프로그래밍은 리듀서를 사용하지 않기 때문에 생성되는 리듀서 객체는 존재하지 않는다. 맵리듀스의 카운터를 이용한다. 카운터는 맵리듀스에 정보 표현을 위해 사용하는 객체이다. package hadoop.MapReduce.maponly; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.mapreduce.Job; impor.. 2022. 5. 17.
[Redis] : Redis 데이터 수정을 위한 데이터 삭제 RedisDB의 수정은 데이터를 수정하는 것 보다 데이터를 삭제하고 다시 저장하는 것이 효율적이다. @GetMapping(value = "redis/deleteDataJSON") public boolean deleteDataJSON() throws Exception { boolean res = iMyRedisService.deleteDataJSON(); return res; } MyRedisController.java boolean deleteDataJSON() throws Exception; IMyRedisService.java @Override public boolean deleteDataJSON() throws Exception { String redisKey = "myRedis_Zset_JSON".. 2022. 5. 17.
[Redis] : Zset 타입에 JSON 구조 저장 및 값 저장한 값 가져오기 Redis는 Sorrted Set 데이터구조를 Zset으로 부른다. 이 Zset은 Redis에서 권장하는 데이터 구조이다. Zset과 Set의 차이점 Zset은 Set의 순서에 상관없이 저장되는 문제를 해결하기 위해 저장 순서를 지정할 수 있는 데이터 구조이다. 저장 @GetMapping(value = "redis/saveRedisZSetJSON") public String saveREdisZSetJSON() throws Exception { // 수집 결과 출력 String msg; int res = iMyRedisService.saveRedisZSetJSON(); if (res == 1) { msg = "success"; } else { msg = "fail"; } return msg; } MyRed.. 2022. 5. 17.
[TIL] : 202 일일 배움을 위한 Today I Learned ! 소경관 오늘 여러 기능을 코딩하고 있는데 많은 설계 미스가 발견되고 있는 중이다. 아직 코딩한 내용을 정리하지 못 해서 블로그에 포스팅을 못 하지만 간단한 로직 하나 적어본다. package project.SPM.util; import java.text.SimpleDateFormat; import java.util.Date; public class DateUtil { /** * 날짜, 시간 출력 * @param fm 날짜 출력 형식 */ public static String getDateTime(String fm) { Date today = new Date(); SimpleDateFormat date = new SimpleDateFormat(fm); re.. 2022. 5. 16.
[TIL] : 201 일일 배움을 위한 Today I Learned ! 소경관 MongoDB 공통 로직을 짜봤다. package project.SPM.mapper; import com.mongodb.client.model.Indexes; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.data.mongodb.core.MongoTemplate; @Slf4j @RequiredArgsConstructor public abstract class AbstractMongoDBComon { protected MongoTemplate mongodb; /** * 컬렉션 생성하기 * @param colNm 생성할 .. 2022. 5. 15.
[TIL] : 200 🎉 일일 배움을 위한 Today I Learned ! 소경관 MongoDB에서 조건을 주어 조회를 하는 로직을 완성시켰다. 2022.05.14 - [Project/소경관] - [소경관] : 주민(방문자, 블랙리스트) 차량 조회 로직 스터디 코딩 스터디 11주차 진행을 완료했다. 2022.05.14 - [발전소/동아리 및 스터디] - [코딩 스터디 2기] : 11주차 2022. 5. 14.
[소경관] : 주민(방문자, 블랙리스트) 차량 조회 로직 MongoDB에 등록한 차량 정보 중 주민 차량만 가져오는 로직을 구현한다. 이름 연락처 차량번호 주소 구분 View에서는 carDTOList를 받아서 th:each로 반복시켜 리스트를 쭉 뽑아준다. package project.SPM.mapper; import project.SPM.dto.CarDTO; import java.util.List; public interface ICarListMapper { List getResidentList() throws Exception; } 주민 차량 조회를 위한 메서드와 리턴 타입을 정의해 준다. // 주민 차량 조회 @Override public List getResidentList() throws Exception { // 조회 결과를 전달하기 위한 객체 생성.. 2022. 5. 14.
[코딩 스터디 2기] : 11주차 11주차 스터디도 잘 마무리 했다. 오늘도 모든 쌤들이 다 나오셨고 각자 하고 있는 공부를 발표하고 시작했다. 나는 지금 프로젝트 하고 있는 것 중 로직 한 부분을 뗴어내서 발표했고 여러 피드백을 들었다. 항상 피드백을 듣고 바로 수정이 가능하면 바로 수정하고 찾아봐야 하는 내용이 있다면 찾아보는데 도움이 많이 된다. 스터디 시간에도 프로젝트 코딩을 했고 설계 미스가 난 부분을 발견해서 중간에 머리가 아팠다. 마무리 발표로는 스터디 시간에 코딩한 로직을 정리하여 설명하고 마무리했고 다른 쌤들이 공부한 부분도 경청했다. 다들 너무 열심히 하셔서 나도 분발해야겠다는 마음이 들었고 오늘 스터디는 이렇게 마무리했다. 2022. 5. 14.
[TIL] : 199 일일 배움을 위한 Today I Learned ! 소경관 주민 차량 리스트 가져오는 로직을 만들고 있다. 추가로 차량 체크 기능을 구현하기 위해 어떻게 하면 좋을지 떠올리는 중이다. 구현하기 전에 잘 체크하고 꼼꼼하게 봤어야 하는데 설계 중 깜빡한 부분이다. 이력서 이력서 작성 중에 있다. 자기 소개서를 작성하고 있는 중이다. 2022. 5. 13.
[TIL] : 198 일일 배움을 위한 Today I Learned ! 소경관 mongodb에 저장되어 있는 차량 정보를 가져와 View에 뿌려주는 작업을 했다. 아직 수정해야 하는 것도 있고 추가해야 하는 것도 있지만 일단 돌아가게 만들어 둔 다음에 나중에 한 번 리팩토링을 다시 싹 할 예정이다. 2022.05.12 - [Project/소경관] - [소경관] : mongoDB 정보를 가져와 조회하기, 차량 정보 조회 2022. 5. 12.
[소경관] : mongoDB 정보를 가져와 조회하기, 차량 정보 조회 엑셀과 직접 등록으로 등록한 주민 데이터를 조회하기 위한 로직을 구현한다. 이름 연락처 차량번호 주소 구분 carDTOList에 담겨진 주민 정보를 뿌려준다. 페이징 처리는 아직 안 해주었다. 넘버링도 넣긴 해야 하는데 고민 중이다. public interface ICarListMapper { // 전체 차량 조회 로직 List getFullCarList() throws Exception; } 인터페이스에서 먼저 getFullCarList()를 정의한다. MongoDB에 저장되어 있는 차량 정보를 list에 담아 Controller까지 전달해 줄 거기 때문에 리턴 타입은 List로 설정해 주었다. package project.SPM.mapper.impl; import com.mongodb.client.F.. 2022. 5. 12.
[TIL] : 197 일일 배움을 위한 Today I Learned ! 소경관 프로젝트 View를 다듬고 몇 가지 수정 사항을 체크했다. 깃 허브에서 확인할 수 있다. 2022. 5. 11.
[TIL] : 196 2022.05.10 - [Data Base/Hadoop] - [Hadoop] : Combiner, 컴바이너 일일 배움을 위한 Today I Learned ! Hadoop 컴바이너 이론을 체크해 보고 컴바이너를 활용한 IP 분석과 사용 전, 후 속도 비교하는 로직을 만들어 체크해 봤다. 코드는 깃 허브에 있다. Redis 레디스에 Set 형식의 값을 JSON으로 넣는 코드 등 여러 활용을 해서 값을 넣어봤다. 마찬가지로 아직 따로 정리는 하지 않아 포스팅은 없으나 깃허브에서 확인이 가능하다. 2022. 5. 10.
반응형