study 973

Rancher kubernetes 소개.

Rancher는 kubernetes를 gui로 쉽게 컨트롤할수 있는 orchestration툴이다.(https://rancher.com/docs/rancher/v2.x/en/installation/ha/) 랜쳐라는걸 회사 와서 처음 들었는데 계속 쓰다보니 엄청 편하다. 랜쳐 1에서는 단순하게 도커 이미지를 가져와서 서비스 해주는 수준이면, 랜쳐 2.0부터는 쿠버네티스가 들어가서 더 좋아졌다. 쿠버네티스를 공부하려고 튜토리얼이나 책을 보면 cui에서 yml을 만들어서 진행하는데.... 처음 배우기에 러닝 커브가 너무 높다. 이경우 랜쳐를 이용해서 gui로 전반적인 돌아가는 형태를 파악한 후 cui로 가게되면 아 이게 gui에서 뭐 하는 명령어구나. 하는걸 더 머리속으로 매핑하기 쉽다. 물론 gui형태라도 ..

data engineering 2020.01.03

elastic kibana 깨달은점. (data visualization)

키바나는 엘라스틱서치 내의 데이터를 가져와서 시각화를 해주는 도구이다. elk, efk스택 등등이라고 부르는 것들중 하나이고.. 무슨 내용을 적을까 하다가 보면서 깨달은 점을 간단하게 적기로 했다. 키바나의 경우에는 처음에 한번 데이터 넘기고 그 데이터로 그래프 그리면서 개념 이해하는게 너무 어려워서.. 보고 잘 동작하는 코드와 간단한 설명을 적음. (키바나는 얼마 안해봐서 틀린 개념등이 있으면 댓글로 알려주시면 감사하겠습니다.) 우선 엘라스틱 서치가 기본으로 설치되어 있다고 가정한다. 설치는 찾아보면 있으니 따로 안적음. 이후로 엘라스틱 서치로 데이터를 주기적으로 쏠 프로그램을 짠다. 키바나는 엘라스틱 서치의 데이터를 가져와서 시각화하기때문에 엘라스틱 서치로 데이터를 쏴주고, 키바나에서 가져와야 한다...

data engineering 2019.12.26

intellij, pycharm git 단축키 설정.

파이참을 쓰는데 인텔리제이도 똑같을테니 제목을 저리 지음. 내용은 단축키 설정에 관한건데 굳이 git 단축키라고 제목을 적은 이유는 딱히 깃 단축키말고는 다른 단축키를 지정해서 효과를 못봤기에 깃 단축키 지정이라고 적었다. 티켓 시스템 + 깃으로 버전관리하는 회사들 대부분이 버전 관리를 할 때에 아래와 같은 프로세스로 진행한다. git pull -> git make new branches from master -> 작업 -> commit -> push -> merge 물론 순서가 바뀌거나 조금 다를수도 있지만 이게 일반적인데, 파이참에서 깃 풀을 하려면 마우스로 아래와 같은 과정을 거쳐야 한다.깃 풀 말고도 새 브랜치를 따거나, 커밋을 할때도 마찬가지이다. 근데 맨날 똑같은 작업을 하다 보니 매번 반복되..

selenium cron to text

cron포맷을 영어 텍스트로 변환해야 할 일이 생겼다. 그러니까 예로 * * * * * 같은 경우 every minute 같은거로. 구글링을 하니 아예 파이썬 전용 pip라이브러리가 있다. 한 3개정도 찾았는데 ex) https://pypi.org/project/cron-descriptor/ 크론 구문이 복잡해지면 얘가 잘 파싱하지를 못한다.(얘말고도 다른것들도 한가지씩 문제가 있었다.) 문제되는 케이스 예시.(에러 발생) # -*- coding: utf-8 -*- from cron_descriptor import get_description, ExpressionDescriptor print(get_description("3 0-3,7-23/3 * * *")) 실제로 크론탭 작업시에는 https://cr..

Python/2.7 for fun. 2019.12.05

json.loads 에러시 위치 찾는 방법 꿀팁

https://stackoverflow.com/questions/19519409/how-to-get-error-location-from-json-loads-in-python 의 내용을 가져옴. 정규식으로 소스 코드 안의 api의 결과값으로 보이는 json을 파싱하는 프로그램을 만들었다고 가정해보자. api의 결과값을 잘 가져온것 같은데 json.loads로 파싱해보면 에러가 나는 경우가 많다. 예로.. import json s = r'[{"prodNo":374834551334,"prodNm":"나주곰탕 600g x 8인분","saleStatus":"A","salePrice":12500,"discountYn":"N","discountPrice":0,"optUseYn":"N","optTextList":[],..

pycharm git line history

파이참에서 깃 히스토리를 종종 본다. 특정 라인을 고쳐야 하는데 이 라인이 왜 필요한지 모르겠어서(또는 이거 짠 사람 누구지? 하려고. 근데 그러면 다 내가짰었음.) 히스토리를 찾아보고자 한다. 다른 회사들도 그러겠지만 우리 팀도 커밋로그를 남길때 어떤 티켓과 관련된 정보인지, 왜 넣었는지가 써있다. 그런데 소스파일에 대한 히스토리는 복잡하다. 그리고 몇달 전에 수정된 경우 히스토리를 하나씩 클릭해가면서 찾아야하기 때문에 찾기가 불편하다. 이 경우.. 해당 라인에 커서를 갖다놓고 Show History for Selection을 눌러준다. 그러면 누가 언제 커밋메시지는 뭐로 수정했는지 다 뜬다. 인텔리제이도 동일한 회사니까 동일한 방법으로 될 거라 생각함. 이거 말고도 다른분은 플러그인?을 깔아서 아예 ..

dictionary 예쁘게 출력하기 + 한글 그대로 출력

특정 사이트에서 api를 사용해서 어떤 정보를 가져올 경우 요즘은 대부분 json의 형태로 결과가 나온다. 그 정보를 가져다가 써야 할 경우에 json.loads같은거로 딕셔너리로 가져와서 쓰는데, api결과값의 구조가 많이 복잡할 경우 분석해서 프로그래밍을 하기가 힘들다. (특정 값이 딕셔너리의 3,4단 안에 있을 경우 키를 찾아서 들어가기가 어렵다는 말. 또는 눈으로 볼수 없어 구조 분석이 힘들다는 말.) 예를 들면 혼자서 하는 프로젝트를 하려고 어떤 쇼핑몰 사이트에서 상품정보를 가지고와서 사용하려고 하는데 api의 결과값이 복잡한 경우가 있다. api의 결과값이 복잡할 경우 쇼핑몰의 상품정보를 가지고 오려고 하는데 그 상품정보가 딕셔너리의 어디의 어디를 찾아서 들어가야하는지도 복잡하고, json.l..

timezone 설정 모듈.

ec2로 구성된 k8s에서 데이터 파이프라인을 만들었다. 1시간마다 주기적으로 실행하면, 현재 시간 -1시간 0분 ~ 현재 시간 0분(그러니까 1시간 이전의 데이터)의 데이터를 가져와서 작업을 한다. 로컬에서 잘 동작하는걸 보고 서버에 올렸는데 잘 되지 않았다. 원인파악을 해보니 ec2의 timezone이 UTC로 되어있어서 한국시간기준으로 -9시간으로 돌아가고 있어서 그런거였다. 귀찮아서 그냥 현재시간 + 9시간 으로 계산하려다가.... 이렇게 해결하는건 뭔가 아닌것같아서 모듈을 찾았다. https://technote.kr/202 pytz라는 모듈인데 여기 아주 잘 설명되어있다. from datetime import datetime, timedelta from pytz import timezone t_..

python re search with newline

html에서re 모듈로 searching을 할때가 있다. 근데 html내부에 여러가지 js함수가 있고 그중에 특정 함수 안에있는 값을 찾으려고 한다. 예로 이런 경우. s = ''' def rara(): asldkfjawefjaiwef def function(): rara sdfjowefiowe~ var = 'value' sadflwjeo;fijwoefs def zozo(): 2wefoiawjofewf ''' 여기서 function이라는 함수 내부의 var값을 가져오려고 할때 중간에 rara sdf~이런것들은 다 무시하고자 한다. 단순히 var라는 변수가 하나뿐이면 "var\s+=\s+'(.*?)'"같은 정규식으로 써도 되지만 혹시 모르므로 def funtion():다음에 첫번째로 나오는 var = 이후..

git 초기 세팅.

노트북을 바꿔서 깃랩 세팅을 하는데.. git pull로 풀을 받았는데 비밀번호를 입력하라는 메시지가 뜬다. 근데 계정이 회사 공용계정인데..?(내 계정이 아니라서 비밀번호를 따로 모른다는 말.) 하다가 찾아서 해결했다. https://dejavuqa.tistory.com/139 글이 없어질때를 대비한 요약. 맥북 기준.1. ssh-keygen 명령어로 key 생성한다.2. cat ~/.ssh/id_rsa.pub로 생성된 키를 출력한다.3. 출력한 키를 전부 복사해서 깃랩에 등록해준다.(이 과정이 회사 공용계정으로 접속하는게 아닌 내 계정으로 접속하게 만듬.)4. pull이나 push 테스트를 해본다. 2. git pull시 비밀번호 없이 pull하게 만들기. https://ourcodeworld.com..

kubernetes minio 1mb이상 파일 업로드 안되는 문제 해결 프로세스.

1. k8s에서 helm 기본 yml으로 minio를 설치하고 파일을 업로드했는데 작은 크기의 파일들은 업로드가 되었는데1mb이상의 파일들은 아래와 같이 413 에러가 나오면서 업로드가 되지 않았다.2. 구글링을 이리저리 해본 결과 나와 동일한 문제를 겪은 사람이 있다. https://github.com/minio/minio/issues/6255댓글을 보니 nginx를 사용하면 client_max_body_size라는 변수를 설정해주면 된다고 한다. 3. client_max_body_size라는 변수를 설정하는법을 검색하다가 https://github.com/gardener/gardener/issues/188 링크를 발견했다. 근데 client_max_body_size를 설정하려면 실제로 ingress에..

data engineering 2019.08.13

k8s 디버깅 프로세스 참조.

k8s에서 서비스를 하나 배포하면 에러가 날 경우 어디서부터 시작해야하는지 몰랐는데 아래 링크를 보며 따라가니 도움이 되었다. https://www.ibm.com/support/knowledgecenter/en/SSBS6K_3.1.2/troubleshoot/minio_pod_pending.html 예시는 minio를 배포한 경우 에러가 났는데, 어떤 에러가 났는지 어떻게 확인하고 차근차근 해결방안을 찾아가는게잘 정리되어있다... 나처럼 초보라서 뭐부터 건드려야할지 모르겠다면 저 글 하나만으로도 많은 도움이 된다.

data engineering 2019.08.08

파일 옮기는 꿀팁. (SimpleHTTPServer)

회사에서 특정 상황 때문에 repository에 접속이 안될 경우가 있다. 외부 네트워크가 갑자기 안된다거나..내가 원하는 파일을 다른 동료가 갖고 있을 수도 있는데 동료의 파일을 갖고 오려면 고전적인 usb같은거로 옮기던지.. 아니면 파일 보내는 프로그램을 사용한다던지.. 할수 있다. 하지만 usb등 이동식 디스크가 없거나 파일 보내는 프로그램을 깔기가 귀찮은 상황이면 python의 기본 모듈을 이용해서 보낼 수도 있다. 회사 안이니 같은 네트워크 안이라고 가정하고, 내가 보내야 하는 파일이 있는 디렉터리로 들어간다.그리고 python -m SimpleHTTPServer 명령어로 간단한 http server를 열 수 있다. 그러면 웹서버가 실행되는데.. 동료가 내 아이피를 알고있다면 웹서버 들어와서 파..

2019-07-16 화요일.

오늘 드디어 새 취미를 찾았다. 진짜 맨날 뭐해볼까? 하다가 안했는데 새 취미로 요리를 잡았다. 된장찌개.. 이런 생계형 요리보다는 어쩌다가 한번씩 해먹을 스테이크나 스파게티, 파스타 이런 서양식만 해먹기로 했다. 가장 간단해보이는 스테이크를 해보려고 했는데 자취방이라 조리기구나 양념이 1도 없었다.(자취방에서 요리 해먹을 일이 전혀 없음.) 취미활동에 쓰는 돈이라 생각하고 조리기구 + 양념 등을 다 사니 13만원정도 나갔다; 소금 후추 로즈마리 후라이팬 식기(스테이크용 칼이 없었음.) 도마 오일 두종류 고기집게 궁중팬 키친타올 버터 등등등... 한번 다 샀다고 생각하고도 오늘 스테이크용 고기를 사와서 굽다가 고기집게가 없다는걸 깨닫고 또 주문했다.(오늘은 포크로 뒤집었음.)처음 하는 스테이크라 계속 긴..

2019-07-03 수요일.

요즘은 aws + kubernetes로 새로운 서버 구성을 하고 있다. 지난 몇주간 aws를 새로 구성하면서 배운게 좀 많이 있어서 글을 써보려고 했는데 막상 쓸거리가 없다. auto scaling에 load balancer붙이는 방법? 그냥 오른쪽클릭하고 붙이면 된다.. 아니면 aws nlb를 만든다음 auto scaling group을 target group으로 묶은후 붙이면 된다.. 막상 이런것들이 글로 쓰려면.. 그냥 aws화면만 캡쳐해서 붙이는게 될 것이므로 딱히 의미가 없어졌다. 굳이 내가 그림 캡쳐해서 붙이는것보다 aws docs에 더 잘 나와있을것이므로. 막상 알면 진짜 쓸거리가 없고 다 알것같은데 내가 왜 몰랐었지를 생각해보니 전체적인 개념이 모호한데에 그 원인이 있었다. 그래서 정리글로..

docker 동작 기본, 알아둘것

현재 도커에서 아래의 파일들만을 중점으로 사용하고 있다. 동작 방식으로 정리해놓음. 1. docker-compose.yml https://docs.docker.com/compose/overview/ 를 참조한다. yml파일이며 컨테이너적 환경을 정의하기 위해 사용한다. 도커 이미지는 어떤걸 사용할건지, logging은 어쩔건지, 배포는 어떻게 할건지 등등을 정의한다. 2. Dockerfile https://docs.docker.com/engine/reference/builder/ Dockerfile은 어떤 도커 이미지를 만들때(containerization) 기본 실행 환경에 대한 정의를 한다. 예로 FROM ubuntu:18.04 RUN mkdir /go RUN apt-get update && \ ap..

data engineering 2019.06.14

mysql partitioning, index

mysql에서 파티셔닝이과 인덱스는 둘다 querying속도를 빠르게 만들어줍니다. mysql 테이블을 튜닝? 할 일이 생겼는데 파티셔닝이나 인덱스를 걸어서 속도를 올려야 했습니다. 근데 사실 이 두개가 속도를 빠르게 한다는건 알고있었지만 어떤점이 다른지 궁금해서 이것저것 찾아보다 좋은 글을 가져와서 정리합니다.. 가장 유용했던 답변은 https://blog.naver.com/hykzephyr/221463212941 에서 찾을수 있었습니다.글 내용이 너무 좋아서 블로그에서 퍼왔습니다. 문제가 되거나 퍼온게 마음에 안드실 경우 댓글로 적어주시면 글 내리도록 하겠습니다. 파티션이란 MySQL 서버의 입장에서는 데이터를 별도의 테이블로 분리해서 저장하지만 사용자 입장에서는 여전히 하나의 테이블로 읽기와 쓰기를..

data engineering 2019.06.08

mysql join.

종종 헷갈려서 적어놓음. http://www.mysqltutorial.org/mysql-join/ 정리. INSERT INTO t1(id, pattern) VALUES(1,'Divot'), (2,'Brick'), (3,'Grid'); INSERT INTO t2(id, pattern) VALUES('A','Brick'), ('B','Grid'), ('C','Diamond'); 예시를 들 테이블은 이런 구조. 1. cross join. 두 모든 테이블의 결과를 cross로 가져옴. N * N의 컬럼 갯수가 나옴. SELECT t1.id, t2.id FROM t1 CROSS JOIN t2; 2. inner join. 두 모든 테이블의 결과중 교집합만 가져옴. SELECT t1.id, t2.id FROM t1 ..

data engineering 2019.06.01

ssh warning 무시하는 방법.(git pull, push등등이 WARNING뜨면서 안될때.)

회사에서 일을 하다 집에 와서 일하다보면 vpn으로 연결해서 하는데, 망이 달라서그런지 ssh접속시 아래와 같은 에러가 뜬다.Warning: the ECDSA host key for 'xxxxx.net' differs from the key for the IP address 'x.x.x.x' 그리고 접속하겠으면 yes를 누르라는게 추가로 뜬다.(회사에서 접속하면 안뜸.) 이것말고도 git pull을 받아오거나 push를 할 때 WARNING!!이 뜨면서 pull이나 push가 안된다고 종종 뜬다. 깃랩서버가 두개의 서버로 구성되어있을경우 원래의 키를 가지고 있는 서버에서 pull이나 push를 할때까지 계속 요청을 넣어봐야 한다. 근데 귀찮다. 이런 경우 어차피 회사의 도메인이라 믿을수 있으면.. sud..

Leetcode 890, 797(dfs), 856(스택)

https://leetcode.com/problems/find-and-replace-pattern/ 이 문제는 사실 별거없다. 단어들을 패턴화시킨후 그 패턴에 맞는 단어를 찾는 문제이다. 난 별생각없이 패턴화시키는 로직이 딱히 안떠올라서 'cee'같은 문자의 경우 첫번째 나오는 c는 a로, 두번째 나오는 단어 e는 b로.. 이런식으로 패턴화를 했다. 코드를 짜긴 했지만 별로 만족스럽진 못했다. 별로 좋은 답은 아니니 일단 접어둠.class Solution(object): def findAndReplacePattern(self, words, pattern): """ :type words: List[str] :type pattern: str :rtype: List[str] """ pattern_dict = ..

Leetcode. 1038(트리), 701(트리), 1008(트리), 814(트리), 105(트리)

https://leetcode.com/problems/binary-search-tree-to-greater-sum-tree/ inorder 로 탐색하는데 오른쪽 자식부터 탐색한다. class Solution(object): def bstToGst(self, root): """ :type root: TreeNode :rtype: TreeNode """ def inorder(node, val): if not node: return val node.val += inorder(node.right, val) return inorder(node.left, node.val) inorder(root, 0) return root https://leetcode.com/problems/insert-into-a-binary-..

2019-05-23 목요일.

직장생활에 슬슬 선택해야 하는 시기가 온것같다. 계속 남느냐 이직을 하느냐. 물론 만족하면 모르겠지만 일반적으로는 언제까지 한 회사에만 있을수는 없을것같다.(그리고 한 회사에서 10년씩 머무르면서 고인물이 되고 싶지는 않다.) 현재는 모든게 다 만족스러운데 내년에 어떻게 되느냐에 따라 마음이 결정될것같다. 예전에 https://qkqhxla1.tistory.com/959?category=557080 에 저장해놨던 글을 클릭해서 심심해서 하나 읽었는데https://jojoldu.tistory.com/277 이분이 쓰신 글을 읽었는데 진짜 너무재밌었다. 작년에 4년 6개월차에 3번째 직장을 가셨다고 했는데 비전공자 국비지원으로 시작해서 어떻게 3번째 직장(배민가셨다고 적으심)을 가셨는지에 관한 글이었다. 요..

leetcode bfs, dp에 대한 새로운 깨달음..

음 여태까지 코드를 이해하지 못하고 짰었는데 이번에 leetcode의 bfs를 공부하다가 조금 깨달음을 얻었다. 나혼자서 코드를 짤수 있을것같다는 깨달음이라 그래야하나. 지금까지 백준에서 '정형화된' bfs문제만을 풀다보니, bfs문제는 대충 나름의 그런 특징이 있었다. 예를 들면 'n x n 크기의 맵에서, 상하좌우로 뻗어나가는 설정' 이런게 있으면 bfs소스코드를 찾아서 이리저리 기워맞추면 문제가 어느정도 풀렸고, 실제로 이런 문제가 많았다.(아니면 다른 문제도 있는데 내가 실력이 낮아서 몰랐거나, 못 깨달았거나이다.)bfs코드를 짤 때는, 일반적으로 아래와 같은 포맷을 따랐다. def bfs(x): visited = [0 for 0 in range(n)] q = [(x, 0)] while q: ~~..

Leetcode Binary tree

https://leetcode.com/explore/learn/card/data-structure-tree/ 에서 푼 내용을 정리했습니다. 물론 go to dicuss가면 사람들이 솔루션을 다 써놨는데 몇몇 개념이나 방법론 등을 까먹지 않으려고 이 페이지에 정리해두려고 합니다. preorder, inorder, postorderdef preorderTraversal(self, root): """ :type root: TreeNode :rtype: List[int] """ ret = [] stack = [root] while stack: parent = stack.pop() if parent: ret.append(parent.val) stack.append(parent.right) stack.append(..

mongodb make index background, cancel making index

어떤 디비든간에 특정 컬럼에 대해서 검색이 잦을 경우 그 컬럼에 인덱스를 걸어놓는다. 인덱스를 걸어놓으면 해당 컬럼에 대한 작업시 속도가 상당히 빨라진다. 나도 개발자로 일하기 전에는 속도에 이슈가 생길만큼.. 큰 디비를 다뤄본적이 없는지라 회사에서 중요한 인덱스 개념을 처음 습득했다.(인덱스 안걸면 진짜 죽음이다.) 어쨋든 현재 5억건의 데이터를 가지고 있는 몽고 디비가 있는데, 어떤 컬럼이 추가되면서 그 컬럼에 인덱스를 걸어야 할 일이 생겼다. 평소라면 그냥 인덱스를 걸었겠지만 문제는 이 몽고디비가 계속 사용중인 production이라는것과, 5억건의 데이터에 인덱스를 걸려면 경험상 3~4시간이 필요했다.(서버 성능에 따라 다르긴하지만) 몽고디비를 거의 나만 쓰고 있어서 모든 컬렉션들을 컨트롤하고있다..

data engineering 2019.04.19

2019-04-07 일요일.

어제 초밥을 먹었는데 초밥하나가 상했는지 아니면 몸과 안맞는 성분이 있었는지 느낌상 살짝 식중독에 걸린것 같다. 오랫만에 알고리즘 공부를 하려고 앉았는데.. 우연찮게 공부가 잘 안된 핑계가 되었다. 알고리즘을 입사하고 나서 완전 손 놨었는데 이러면 슬슬 안될것같은 생각이 들어서 알고리즘 공부를 다시 시작했다. 공무원 같은 경우여서 한회사 평생 다닐것도 아니고.. 만약 연봉 등이 불만족스러워서 이직을 한다해도 준비기간이라는게 있길 마련이어서, 지금부터 조금씩 다시 하기로 했다. 취준생때는 백준 유형 여러개 풀고, 그 유형을 기억해뒀다가 해당 유형이 나오면 조금 소스를 고쳐서 풀곤 했다. DP같은 분야 말고는 많은 분야에서 이 방법이 통했는데 이제는 정말로 공부하는 느낌으로 하고자 한다.사실 알고리즘 공부 ..

apache airflow tutorial.

기본적으로 https://airflow.apache.org/start.htmlhttps://aldente0630.github.io/data-engineering/2018/06/17/developing-workflows-with-apache-airflow.htmlhttps://bcho.tistory.com/1184 에서 많은 정보를 얻은 후 필요한 내용 정리와, 그리고 저 링크들에 없는, 얻은부분을 더해서 적었습니다. 위의 글을 보면서 삽질했던점도 추가했습니다. airflow란 작업흐름을 자동화해주는 도구입니다. 일반적으로 crontab으로 실행시키고.. 이쯤이면 끝났겠지? 싶었을때 다음 작업을 돌리곤 하는데, 이것보다 더 정교한 처리가 필요한 경우에 씁니다. (더 자세한 내용은 위 블로그에 잘 나와있으니..

data engineering 2019.03.24

python으로 hive의 쿼리 자동화하기.

이전에 지금 쓸 글과 비슷한 https://qkqhxla1.tistory.com/958 를 썼었다. 현재 회사에서는 단순 조회용으로 presto를 쓰고,(조회용으로는 presto가 더 빠르고 좋다는 설명을 들었다.) create alter 같은 ddl은 hive에서 쿼리를 돌린다. 1. impyla 모듈사용.(추천하는 방법..)다시 보는데 impyla를 사용하는게 가장 안정적이고 좋다. 이거를 쓰자. 아래는 예제 코드. # pip install thrift==0.9.3 # 안정적인 thrift버전임. from impala.dbapi import connect from impala.error import ProgrammingError ~~~~~ def get_hive_results(self, hql): p..

data engineering 2019.03.13

2019-02-27 수요일.

지나가다 요즘 개발자의 수요가 많이 부족하다는 소리를 주위에서 많이 들었다. 물론 일정 이상의 실력이 있는 개발자다. 한국의 s급 개발자들을 해외의 유명 기업들이 데려가고 있다는 기사도 나오고 있는데, 내가 언급한 개발자는 꼭 s급이 아니라 a,b++급정도만 되어도 현재 본인의 가치보다 더 높게 취급받을수 있는 시대인것 같다. 우리 회사뿐만이 아니라 다른회사에 있는 지인들도 동일한 소리를 한다고 한다. 근데 뭐.. 나같은 s급이 아닌 저년차 주니어들은 그냥 회사에서 내 가치를 잘 알아주기만을 기다리는 수밖에 없는것같다. 이직 선택권이 없는 저연차엔 애초에 좋은 리더를 만나서 가치를 인정받는것도 엄청나게 행운인것중의 하나인것같다.생각하기에 이러한 현상이 몇년정도는 더 갈것같으니 이럴때 더 열심히 해둬야 몸..