일상/🏢 2022-23 실무경험

[5주차] 여의도 증권사 실무

letzgorats 2023. 1. 16. 08:40

01.16 (월)

- 오늘 새벽 아스날과 토트넘의 북런던 더비를 시청하느라, 잠을 2시간 30분 밖에 못잤다. 어제 아스날이 토트넘으로 원정을 떠났는데도 이겨버려서 피곤하지만, 힘이 나는 아침이었다.

- 하지만, 아침에 도착할 때만 해도 괜찮았는데, 나중에는 정말 너무너무 졸렸다.ㅠㅠ 아마 이 곳에서 일한 이후로 가장 졸린 날은 오늘이 아니었을까 싶을정도로 몽롱했다. 북런던 더비를 포기했어야 헀는데,,ㅠ 구너로서 포기할 순 없지 않나?

- 오전에는 디폴트 매수의 update count와 관련한 로그를 세심하게 살펴봤다. paramMap에 update key라는 키값이 없는데, 어떻게 뽑아오는지가 잘 이해가 안됐다.

- 그러다가, 사수인 진교형이 프론트 쪽에서 두 가입자를 서로 연결해달라는 메시지를 받아서 내가 update 쿼리를 짜라고 하셨다. 암호화주민번호를 업데이트 치면 되는 문제였다. 가입자정보 테이블에서 A가입자의 암호화 주민번호를 B의 암호화 주민번호로 update 치고 프론트 쪽에 완료했다고 말했는데, 기존 연결된 것 까지 사라진 것 같다면서 다시 확인해달라는 답신을 받았다. A의 암호화 주민번호를 B의 암호화 주민번호로 바꿔야 하므로, B가입자의 암호화 주민번호를 A의 암호화주민번호로 바꿨어야 했다. 바로 처리를 하고 다시 수정했다고 답신해드렸다.

- 점심은 진교형이랑 사내식당에서 먹었다. 점심을 먹고 쉬는 도중에 메일을 확인하는데, 어제 지원했던 현대자동차의 코딩테스트 일정이 바로 내일로 잡혔다는 메일을 받았다. 요즘 실무에 집중했어서 사실 따로 코딩테스트를 공부하지 못하였는데, 어차피 겪었어야 할 관문이었다. 

- 내일 이런 일정이 잡혔다고, 사수인 진교형한테 말하고, 차장님과 부장님께도 말씀드려서 내일 오전에는 방에 들어가 코테를 보고자 양해를 구했다. 흔쾌히 그러라고 하셔서 맘편히 볼 수 있었다.

- 업무 이외에도, 학자금 대출 2022년도에 남은 잔금을 다 갚고, 내일 코테를 위해 소프티어에서 문제 몇개를 살펴봤다. 그 외에도, 국민취업지원제도 3회차에 첨부할 증빙자료들을 올리고 퇴근하고 카페가서 알고리즘 문제를 좀 풀었다.

- 내일은 알고리즘 감을 찾는 기회라고 생각하고 편하게 보자! 


01.17 (화)

- 오늘은 사수인 진교형이 휴가를 쓰셔서 사수 없이 하루를 보냈다. 부장님도 휴가였어서 비교적 조용한 하루처럼 느껴졌다. 오전에 현대자동차 코딩테스트를 준비하면서 회의실 안에서 노트북을 세팅하고 알고리즘을 좀 살펴봤다. 10시부터 시험이라서 9시부터 들어가서 조금 준비를 했다. 시험시간은 10시부터 12시 30분 까지 2시간 30분이어서 점심시간 때도 회의실 안에서 계속 시험을 봤다. 코딩테스트 후기는 끝나자마자 따로 정리를 했다. 잘 보진 못한 것 같았다. 확실히 감의 차이를 실감했다. 일을 하더라도 코딩테스트에 대한 최소한의 공부는 끊임없이 해야할 것 같다.

- 오후에도 코테를 복기하고 다시 업무를 살펴봤다. 여전히 MTS 디폴트옵션 매수 등록에 계속 막혀서 제자리 걸음을 하는 듯 했다.ㅠㅠ 계속해서 제자리 걸음인 것 같아, 깃허브를 둘러보면서, 내가 올해 안에 하고 싶은 프로젝트라도 다이어리에 적어봤다. 예전에도 생각해 놓은 것 부터 적어봤는데, 꽤나 많았다. 특히, 깃헙에 올린 소스를 그대로 배포하는 방법에 대한 글들을 보고 배포에 대한 의지가 좀 불타올랐다. netlify로도 가능하고, 앱 배포는 Web2App으로도 가능하니까, AWS로 직접 서버를 개설하지 않아도 우선 결과물을 만드는 것이 중요하다고 생각했다.


01.18 (수)

- 역시 디폴트옵션 매수는 제자리 걸음이다,,오전에 너무 제자리 걸음이길래, 그냥 소프티어 알고리즘 문제 몇개를 폴었다. 

- 오늘도 사수인 진교형은 휴가였기 때문에, 점심은 권과장님이랑 정과장님이랑 같이 구내식당에서 먹었다. 오늘은 정과장님이 자기 카드로 찍고 먹으라고 해서 정말 감사했다.

- 점심에는 너무 피곤해서 바로 의자에서 눈 좀 붙였다.

- 오후에는 계속해서 보다가, 다른 개발자분에게 같이 좀 코드를 보자고 메시지를 드렸다. 개발자분께서 내 자리로 와서 어떤식으로 접근해야 되는지 말해줬는데, 이미 그렇게 해도 안되는데, 정말 어려웠다.

- 얘기를 나누다가 프론트 단으로부터 지난 번 했던 어떤 가입자를 같은 DC가입자가 포함된 계정으로 연결했던 작업을 다시 잠깐 해지해달라는 요청을 받아서 바로 update를 치고 커밋을 해줬다. 우선, 단순히 해제하는 방법을 다른 가입자와 암호화주민번호를 업데이트 쳐서 임시로 옮겼다. 이 문제에 대해서는 따로 기록을 해두었다. 단순히 가입자 연결을 해지하는 것은 어떤 것인지 나중에 물어봐야곘다. (그냥 임시의 암호화주민번호로 쳐도 상관없다고 한다.) 프론트단에서도 잘 된다고 다시 전달을 받고 아까 개발자분과 얘기를 나눴던 부분을 살짝 수정하였다. 하지만 역시 fail,,실패는 성공의 어머니라고 했던가..언젠가는 성공할끼다... 다른 개발자 분께서도 디폴트옵션 매수가 아닌 매도 부분을 곧 작업들어간다고 하셔서 그 코드를 좀 공유해주신다고 해서 적어도 이번주까지는 꼭 끝내도록 해야겠다.

- 오후에는 안되는 작업에 계속 매달리는 것이 싫어서 소프티어 알고리즘 문제를 하나 풀고 SQL 을 공부하기 위해 구글 빅쿼리 콘솔에서 공공데이터에 대한 쿼리 실습을 좀 진행했다. 이렇게 좋은 SQL 공부 방법이 있었다니,,한 며칠간은 (https://www.slideshare.net/zzsza/bigquery-147073606) 여기에 공유된 슬라이드를 보고 실습을 계속 해야겠다.

- 이번주는 사수인 진교형이 없어서 조금 제대로 일을 많이 안 한 것 같지만, 개발 일정까지는 개인적으로는 여유가 있는 것 같아서 따로 공부를 하면서 업무는 내일 마저 또 집중해야겠다. 무엇보다 요즘 너무 피곤한 상태로 잠을 많이 안 잤다. 오늘은 내일을 위해 일찍 자서 정신 맑게 또 허슬해보자.

더보기
- 1️⃣ 그룹화한 테이블에 대해 또 서브쿼리로 원하는 데이터를 찾아도 되지만, HAVING 구문을 통해 그룹화한 이후 컬럼에 대해 조건을 추가할 수 있다. HAVING은 GROUP BY와 반드시 같이 써야 하는 구문이다. 
- 2️⃣ COUNT나 SUM 같은 집계함수 전의 컬럼은 GROUP BY 뒤에 꼭 있어야 한다! (그래야 그 앞의 값으로 COUNT를 해주니까) 이건 실습하다가도 알았던 내용이었는데, SELECT 칼럼개수와 GROUP BY 칼럼개수는 같아야 하고 자료형도 같아야 한다.

( Google 빅쿼리 실습)
-- FROM bigquery-public-data.austin_bikeshare.bikeshare_trips

-- 1. 총 trip의 개수를 구해주세요
-- SELECT count(trip_id) as trip
-- FROM bigquery-public-data.austin_bikeshare.bikeshare_trips

-- 2. 일자별 trip의 개수를 구해주세요( hint : DATE()함수)
-- SELECT DATE(start_time) AS date, COUNT(trip_id) as count
-- FROM bigquery-public-data.austin_bikeshare.bikeshare_trips
-- GROUP BY date
-- ORDER BY date

-- 3. subscriber_type별 trip 개수를 구해주세요
-- SELECT subscriber_type, COUNT(trip_id) as counts
-- FROM bigquery-public-data.austin_bikeshare.bikeshare_trips
-- --WHERE subscriber_type IS NULL
-- GROUP BY subscriber_type
-- ORDER BY counts DESC

-- 4. 시작 station과 도착 station별 개수를 구해주세요(제일많은 구간은?)
-- SELECT start_station_id, end_station_id, COUNT(trip_id) as trip_cnt
-- FROM bigquery-public-data.austin_bikeshare.bikeshare_trips
-- GROUP BY start_station_id, end_station_id
-- ORDER BY trip_cnt DESC​

https://stricky.tistory.com/497이번주에 봐야지 ( 빅쿼리에 엑셀 추가하는 방법)


01.19 (목)

- 오전에 저번에 디폴트 재매수 운용방법에 대해 한 것에서 오류가 나서 수정작업을 했다. decode 구문으로 쿼리를 짰었는데, 이미 그전에 구분에 대한 '코드값'을 미리 지정했어서 쿼리에 decode를 통해 구분짓는 것보다 그냥 해당 키값을 select절에서 불러오고 jsp 파일에서 getBean만 해주면 됐었다. 이 문제는 바로 해결됐는데, 엑셀이 문제였다. 플랜 번호 별로 조회를 하면 만기일자가 빠른 순으로 제대로 정보가 불려지는데, 이를 엑셀로 저장했을 때, 일부 정보가 빠져있거나, 원하지 않는 정보가 들어가는 경우가 있었다. 

- 로그를 찍어봤을 때 쿼리는 제대로 똑같이 나오는데, 이유를 도통 모르겠어서 조금 괴로웠지만, 진짜 하나하나 의심을 했다. 문득 드는 생각이 로그를 찍어봤는데, 전체 조회를 했을 때가 아닌 특정 구분값에 대해 조회를 했을 때는 날짜데이터가 "/" 가 들어간 채로 로그가 찍혀있었다. 그래서 

1. "/" 가 포함된 가입일자와 만기일자를 ParamMap에서 꺼낸 후 "/"를 없애주고 다시 ParamMap에 넣어줬더니겨우 해결

되었고

2. order by 만기일자 로 쿼리를 짜보니니까 홈페이지에서 조회는 계속 잘됐는데, 엑셀에 틈틈히 튀는 값이 들어가는 현상도 제거해줘 문제를 해결하였다.

- 해당 문제를 해결한 다음에는 진교형이 보내준 쿼리를 추가해서 jsp에 추가하는 작업을 진행했다.

1. 쿼리에 있는 필요한 값들 jsp에 추가 그리고  Dao 자바 파일 수정
2. acroedit 줄에다가 sql append 추가하는 거 진짜 애먹었다. (alt+c, alt, shift, pgdn 등등 이용)
3. 오류가 계속 나서 멤버 넘버 쪽이 오류가 난 것을 로그로 확인했는데도 안돼서 결국 진교형한테 잠깐 물어봤다. 
4. 아니 멤버 넘버 오류나서 계속 했는데, 무슨 분명히 안됐는데, 진교형 오니까 됐다ㅠ 와 뭐지 ㅠㅠㅠㅋㅋ

- 이제 내일은 디폴트 옵션 매수에 좀 집중할 수 있겠다!


01.20 (금)

- 오늘은 최악이다. 알람이 안 울려서 휴대폰을 보니 6시 30분에 맞춰져야 할 알람이 7시 35분으로 되어있었다. 최악의 지각이다. 진짜 반성해야겠다...이유가 어찌됐든 사람은 결국 결과로 판단되곤 한다..진짜 지각하지말자..오늘은 금요일이라 팀끼리 8시부터 9시까지 아침밥을 먹으면서 잡담을 나누는 요일인데, 히필 이 때 늦어서 눈치가 더 보였다.

- 진짜 편해졌냐고 왜 지각하냐 ㅠㅠ 진짜 긴장하자!! 오전에는 고개를 들 수 없을 정도로 죄송했다. 차장님이랑 과장님 눈치는 물론이고 사수인 진교형께도 너무 죄송했다. 다들 이미 컵밥을 드셨고 나는 내 컵밥을 먹으면서 이런저런 얘기를 나눴다. 주식얘기가 화두였는데, 듣다보니 정말 재밌었다. 차장님이랑 과장님은 정말 아는게 많으시고 주식도 나이가 깡패라고 한번 공부해보라는 말씀도 해주셨다. 안 그래도 이틀전에 주식을 좀 넣었다..하하..물론 시드는 없어도 월에 얼마씩이라도 투자공부를 좀 해야겠다.

- 9시까지 잡담을 나누고 업무를 시작하는데, 오전 업무를 시작하자마자 mts단에서 내가 했던 디폴트옵션 취소 조회 테스트를 위해서 어떤 플랜가입자의 데이터를 넣어달라고 요청하셔서 데이터를 넣고 말씀드렸다. 또, 취소 처리에 대한 TR 에 대한 정보를 말씀드려서 디폴트옵션 취소 처리에 대한 로직도 테스트 할 수 있도록 전달했다.

- 해당 작업을 하면서 진교형이 수정하라는 운용관리-마감관리-업무개시/마감 페이지에서 기준가 미수신  항목을 추가하였다. 우선 dao 자바 파일에 해당 쿼리를 추가하고 jsp에도 필요한 변수나 코드들을 추가했다. 원하는 페이지가 잘 나오는 것을 확인하고 점심을 먹으러 구내식당으로 갔다. 오늘도 진교형은 점심약속이 있으셔서 점심은 차장님과 권과장님과 같이 먹었다. 명절이야기와 강원도 강릉과 덕구온천 여행을 추천 해주셨다. 권과장님은 맛집 잘알이신 것 같다. 강원도 출신으로 앞으로 많이 물어보려고 한다.ㅎㅎ

- 점심 먹고 한 30분 자다가 진교형이 깨워줘서 오후업무를 시작했다. 오후에는 진교형이 요청하신 홈페이지에서 추가적으로 항목을 2개 더 추가하였다. 한가지는 잘 됐는데, 하나가 문제였다. 잔고 불일치에 관한 커리였는데, count는 행의 개수를 세는 것인데, 기존에 돌렸던 쿼리를 통해 나온 테이블이 1개의 행으로 구성된 테이블이었다. 여기서 특정 값이 mismatch인 값을 세는 그런 쿼리를 짜고 항목번호로 별명지어 그 값을 또 다른 테이블에 넣어야 하는 것이었다.

- 여러가지를 찾아봤는데, pivot unpivot partition 등등 너무 많았는데, 내가 원하는 기능을 하고자 하는 역할은 없었다. 그래서 나증에 진교형이 도와줬는데, 모든  decode구문을 테이블에서 select 하고 17개를 다  union all로 때려 넣으라고 하셨다. 사실 그 생각을 하긴했는데, 너무 코드가 길어지고, 컬럼 이름에 대해 어떻게 처리를 해야할지 몰라서 다른 방법을 찾아봤는데, 우선 그렇게 하니까 다행히 값이 추출되었다. 쿼리를 dao java파일에 팔요한 함수안에 넣고, jsp도 수정해서 해당 작업을 완료하였다. 그리고 서브쿼리를 구하는 구문에서 union all을 한 바깥 테이블로부터 where조건을 걸 때, 서브 쿼리 내의 처음 가장 맨 위의 select절의 별명 컬럼을 따르는 것을 알게됐다. ( kkk )  

- 또 오라클에서 더미테이블을 만들때 FROM DUAL 이라는 빈 테이블에 서브쿼리를 추가하는 기능이 있는 것도 알게됐다.

- 그러다가, 어떤 개발자분이 연락와서 갑자기 헷갈린다고 mts를 만들 때 필요한 절차에 대해 물어보셨다. 과정을 다 거쳤는데, 페이지가 안나와서 이상하다고 했다, 다행히 메모를 해놔서, 혹시 mts_menu.jsp 에 해당 jsp 페이지가 있는지 확인해보시라고 해서 다행히 그게 문제였다고 말씀해주셨다. 다행이다! 나도 도움이 됐다니! ㅎ ㅎ

- 디폴트옵션 매수 에 대해서는 다른 개발자분과 또 얘기를 하기로 했다. 파라메터 입력값에 대해서 계속 문제가 나 TR 처리가 쉽게 완료되지 않아서 명절이 끝나고 같이 협업하기로 했다.

- 오늘도 일 끝나고 역시 알바를 간다. 급구알바를 구했는데 오늘은 홍대 술집으로 향한다. 이것도 겨우 구했다. 오늘은 또 어떤 일을 하고 어떤 인연을 만날지 기대가 된다... 그리고 다시 한번 말하는데, 지각에 변수를 만들지말자, 다 핑계다 알람이 안울린것도 내 잘못이다. 언제나 반성하고 다음에 잘해야지 하지말고 잘해야한다. 잘하자.. 17시 36분에 퇴근하고 계속 뛰었다. 결국 홍대 알바하는 곳에 17시 59분에 도착했다. 엄청 뛰었다. 지각은 면했다. 항상 사람들에게 좋은 인상을 주도록 내 자신이 긴장하고 행동하자. 지각은 최악의 인상을 준다는 것을 명심하자..!

 

-  연휴를 앞두고 너무 들떠서 그런지 이번주는 내 자신을 돌아봤을 때, 그렇게 좋지 못했다. 조금 더 집중하고 긴장하면서 생활해보자. 화이팅!

 

반응형