내가 기획하고, 설계한 프로세스의 최종 수정본이 어제 밤 최종 배포가 완료됐다.
월,화,수 3일 배포를 해가지고 너무 죄송할따름(...)
리더 : 일일배포라니 이게 무슨 소리요 으사양반
그리고 오늘!!!!!
맞다! 드디어 자유라는 것을 획득했다!
프로세스를 개선하면서 매니저분들이 개발자에게 요청하는 일이 아예 사라졌다.
사실 이 문제가...거의 6월부터? 계속 있었던 것으로 내딴에는 확인했는데
아마 쉽사리 바꾸지 못하고 피쳐개발이 끝없이 있다보니 건드리지 못한게 아닌가 싶더라
뭐, 그래도 이제 출고에 있어서는 어지간해서는 문의가 들어오지 않을 것 같아서 너무 기뻤다 :>
wow 지금 1스탭이 완료됐다!
현재 우리가 대량으로 받을 때는, 우편번호를 받지 않고 있다. (도대체 왜인가요 주소는 주시는데 우편번호를 왜 흑흑)
그래서 재고검증과 우편번호 획득을 위해 2단계의 검증을 하고 있다보니 많은 양을 해결 할 수 없었다.
이 문제는 뒷단, 운송장 출력에서도 있었는데 이것은 내가 프로세스 개선을 하면서 1분에 1000장으로 해결을 했지만
입력단에서 아직 문제가 있어서 개선을 해야했다.
막 찾다보니 우체국에서 전국 주소를 1달단위로 갱신해서 데이터를 준다는 것을 포착했다.
어...이거로 검색엔진처럼 쓰면 외부 API에 의존하지 않아도 되는게 아닌가?
그래서 어제 일기에도 적혀있지만, 제안을 했다.
이거 데이터 엄청 많을거고, 유사도 검색을 이용하면 정확하게 원하는 우편번호를 뽑을 수 있지 않을까요?
어제 이야기를 하고, 오늘 오전 업무와 오후 업무 때 짬짬히 진행을 해봤다.
(기존 추가한 코드도 다 고치는데 외부 API 서버가 마침 죽어있더라...)
지금 완료된 상태는 요정도고, 진행을 해야하는 것은 이정도이다!
1번을 하는데 정말 큰 고생을 많이 했다 -_-
여러가지가 있었는데 뭐가 있었냐면
인코딩을 utf8로 바꿔서 데이터베이스에 넣어야하는데, 이게 묘하게 검색을 해도 되질 않더라. 다깨짐
계속 고민하다가 회사 슬랙채널에 물어봤는데 CTO님이 한개 줘보라더니 파일 주시곤 해보랜다
돼!
어떻게 했냐고 물어봤더니 VSC에서 파일 켜가지고 왼쪽 하단보면 저장 타입있는데 그것으로 수정해서 고쳤단다.
IDE가 이렇게 좋구나
분명, 리눅스상에서 지원하는 스크립트가 있을텐데... 잘 안되서 좀 답답했다(...)
아무튼 그렇게 데이터를 넣으려고 했.으.나 지랄맞게 당연히 내 마음처럼 안들어갔다.
그리고 에러가 계속 떴는데, 무슨 에러였냐면
여기서 바로 두번째녀석이 나를 괴롭게 했따...
하지만 나는 해결할 수 있었지! 그러니까 블로그에 쓰는거다!
파일을 맨 처음 열어보면 정의가 되어있는데, 그것을 기반으로 누군가 만들어주신 것을 응용했다.
# 경기도 #
CREATE TABLE gyeonggi_do (
`ZIP_NO` VARCHAR(5) NULL COMMENT '우편번호',
`SIDO` VARCHAR(20) NULL COMMENT '시도',
`SIDO_ENG` VARCHAR(40) NULL COMMENT '시도(영문)',
`SIGUNGU` VARCHAR(20) NULL COMMENT '시군구',
`SIGUNGU_ENG` VARCHAR(40) NULL COMMENT '시군구(영문)',
`EUPMYUN` VARCHAR(20) NULL COMMENT '읍면',
`EUPMYUN_ENG` VARCHAR(40) NULL COMMENT '읍면(영문)',
`DORO_CD` VARCHAR(12) NULL COMMENT '도로명코드',
`DORO` VARCHAR(80) NULL COMMENT '도로명',
`DORO_ENG` VARCHAR(80) NULL COMMENT '도로명(영문)',
`UNDERGROUND_YN` CHAR(1) NULL COMMENT '지하여부',
`BUILD_NO1` DECIMAL(5,0) NULL COMMENT '건물번호본번',
`BUILD_NO2` DECIMAL(5,0) NULL COMMENT '건물번호부번',
`BUILD_NO_MANAGE_NO` VARCHAR(25) NULL COMMENT '건물관리번호',
`DARYANG_NM` VARCHAR(40) NULL COMMENT '다량배달처명',
`BUILD_NM` VARCHAR(200) NULL COMMENT '시군구용건물명',
`DONG_CD` VARCHAR(10) NULL COMMENT '법정동코드',
`DONG_NM` VARCHAR(20) NULL COMMENT '법정동명',
`RI` VARCHAR(20) NULL COMMENT '리명',
`H_DONG_NM` VARCHAR(40) NULL COMMENT '행정동명',
`SAN_YN` VARCHAR(1) NULL COMMENT '산여부',
`ZIBUN1` DECIMAL(4,0) NULL COMMENT '지번본번',
`EUPMYUN_DONG_SN` VARCHAR(2) NULL COMMENT '읍면동일련번호',
`ZIBUN2` DECIMAL(4,0) NULL COMMENT '지번부번' ,
`ZIP_NO_OLD` VARCHAR(4) NULL COMMENT '구우편번호' ,
`ZIP_SN` VARCHAR(2) NULL COMMENT '우편일련번호',
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY )
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 AUTO_INCREMENT=1;
이것은 진짜.. 에러문구가 보기 너무 싫었고, 에러 문구가 뜨는 것을 보고 신뢰가 안가서 자료를 다 뒤져가면서 짠 쿼리다.
LOAD DATA LOCAL INFILE "/zipcode_DB/경기도.txt" INTO TABLE gyeonggi_do CHARACTER SET 'UTF8MB4'
FIELDS TERMINATED BY '|' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 LINES
(@ZIP_NO, @SIDO, @SIDO_ENG, @SIGUNGU, @SIGUNGU_ENG,
@EUPMYUN, @EUPMYUN_ENG,
@DORO_CD, @DORO, @DORO_ENG,
@UNDERGROUND_YN, @BUILD_NO1, @BUILD_NO2,
@BUILD_NO_MANAGE_NO, @DARYANG_NM,@BUILD_NM,
@DONG_CD, @DONG_NM,@RI, @H_DONG_NM, @SAN_YN,
@ZIBUN1, @EUPMYUN_DONG_SN, @ZIBUN2, @ZIP_NO_OLD, @ZIP_SN)
SET
ZIP_NO = NULLIF(@ZIP_NO,'0'),
SIDO = NULLIF(@SIDO,'0'),
SIDO_ENG = NULLIF(@SIDO_ENG,'0'),
SIGUNGU = NULLIF(@SIGUNGU,'0'),
SIGUNGU_ENG = NULLIF(@SIGUNGU_ENG,'0'),
EUPMYUN = NULLIF(@EUPMYUN,'0'),
EUPMYUN_ENG = NULLIF(@EUPMYUN_ENG,'0'),
DORO_CD = NULLIF(@DORO_CD,'0'),
DORO = NULLIF(@DORO,'0'),
DORO_ENG = NULLIF(@DORO_ENG,'0'),
UNDERGROUND_YN = NULLIF(@UNDERGROUND_YN,'0'),
BUILD_NO1 = NULLIF(@BUILD_NO1,'0'),
BUILD_NO2 = NULLIF(@BUILD_NO2,'0'),
BUILD_NO_MANAGE_NO = NULLIF(@BUILD_NO_MANAGE_NO,'0'),
DARYANG_NM = NULLIF(@DARYANG_NM,'0'),
BUILD_NM = NULLIF(@BUILD_NM,'0'),
DONG_CD = NULLIF(@DONG_CD,'0'),
DONG_NM = NULLIF(@DONG_NM,'0'),
RI = NULLIF(@RI,'0'),
H_DONG_NM = NULLIF(@H_DONG_NM,'0'),
SAN_YN = NULLIF(@SAN_YN,'0'),
ZIBUN1 = NULLIF(@ZIBUN1,'0'),
EUPMYUN_DONG_SN = NULLIF(@EUPMYUN_DONG_SN,'0'),
ZIBUN2 = NULLIF(@ZIBUN2,'0'),
ZIP_NO_OLD = NULLIF(@ZIP_NO_OLD,'0'),
ZIP_SN = NULLIF(@ZIP_SN,'0');
한줄한줄보면 어느정도 이해가 갈 수 있다! 처음엔 나도 이게 뭔 외계언가 했는데 계속 보니까 이해가 가더라.
사실 '0'으로 넣었더니 이상하게 바차타입인데도 그냥 자연스럽게 널로 들어가서
음! 이상하네! 하지만 안들어가도 상관없구, 에러로그만 안보이면 난 만족이야! 라는 느낌으로 넘어갔다 :>
그래서 대략 610만개의(....) 주소정보가 현재 내 로컬 DB에 존재한다.
개수보고 와...... 610만개........
이 많은 정보를 기반으로 검색엔진을 만들 수 있다고...?
너.무.짜.릿.해
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=mariapang&logNo=221512818793
https://myinfrabox.tistory.com/18
https://stackoverflow.com/questions/49622789/load-null-values-int
아무튼 생각보다 많은 작업들이 마무리가 되어가고 있는 것 같아서 너무 좋다.
일이 없으면 만들어서 하는 타입인데, 일이 뭔가 모자르다고 생각을 했는지 알아서 만든것도 참 대단하고(...)
또 말한지 하루만에 제일 큰 문제였던 것을 해결해서? 그것도 나 자신에게 매우 만족스럽다!
다음주부터 신규택배사를 이용할 준비가 상당히 되는 것 같아서..... 최대한 테스트를 확인하고, 넘어갈 수 있게끔 더더욱 작업에 속도를 붙여야겠다.
아, 검색엔진은 주말에 짬짬히 해서 일요일에 완성할 수 있으면 좋겠어!