일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- nodejs
- 스프링
- Spring
- 백준알고리즘
- eof
- bufferdreader
- 스프링부트
- TCP
- 자바
- java11
- Docker
- mongodb
- Apollo
- Mongoose
- 조건문
- java
- mysql
- 서버
- redis
- Android
- graphql
- 프로그래머스
- Scanner
- puppeteer
- ai
- HTTP
- k8s
- LangChain
- MapReduce
- restapi
- Today
- Total
목록전체 글 (69)
자라나라 개발머리
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bnmWcq/btsHa2v7dRE/FzymlbSUpC8QFrT7u3TrMk/img.png)
http://www.aiexpo.co.kr/home/ AI EXPO KOREA 2024 국제인공지능대전AI EXPO KOREA 2024 국제인공지능대전hn.micen.kr 지난 5.1(수)~5.3(금)에 걸쳐, 코엑스에서 AI 엑스포가 개최 되었습니다!회사의 배려(우리 회사 최공,,🥰)로 금요일에 듣고 싶었던 세미나 참석+엑스포 구경을 다녀왔는데요, 세미나를 듣고 느낀 점, 각 부스를 돌며 느꼈던 점을 기록해보려합니다.시이ㅏㅈ ㅏㄱ~! End to End AI 개발 환경 구축(휴렛팩커드 엔터프라이즈-엠키스코어) 후기 회사에서 저의 역할이 몇 개 있지만 제 주 역할을 말씀드리면, 개발자들이 개발에만 집중할 수 있도록 개발 환경을 조성하고 개선하는 역할을 맡고 있습니다.그러다보니 '개발 환경' 이라는 단..
맵리듀스(MapReduce)는 데이터 분산 처리에 활용되는 프로그래밍 모델로서, 대량의 데이터를 세분화해서 각 머신에서 로직을 처리하고, 다시 합쳐 효율적으로 데이터 처리를 할 수 있도록하는 모델입니다. 맵 리듀스는 총 4가지 기능으로 구성되어있습니다. 1. Mapper: 입력 데이터를 받아서 세분화, key-value 쌍으로 변환, 필요한 로직을 적용하여 중간 결과를 생성2. Reducer: 중간 결과를 받아서 동일한 키를 기준으로 그룹화하고 데이터를 합침3. Partitioners: 맵 단계에서 생성된 중간(key, value) 쌍을 리듀스 태스크로 분배4. Combiners: 최적화 도구. output을 로컬에서 미리 집계하여 네트워크 상으로 전송되는 데이터 양을 줄이는 역할 전체적인 흐름은, M..
오늘은 네트워크 통신의 기본적인 지식인 TCP와 HTTP의 특징과 차이에 대해 알아보려고 합니다. TCP 통신 특징 우선 TCP의 기본적인 특징에 대해서 간단히 알아보면, 1. 연결지향: 3way handshake (syn-> syn+ack -> ack) 2. 데이터 전달 보증 (전송 후 잘받았다고 신호) 3. 순서 보장 (순서 안 맞으면 다시 보냄) 이 있습니다. TCP와 HTTP의 차이 그럼 HTTP 통신은 TCP 통신과 어떤 차이가 있을까요? 1. 계층 위치 차이 OSI 7계층에서, TCP는 4계층인 전송계층, HTTP는 7계층인 응용계층에 있습니다. HTTP 통신은 HTTP는 TCP/IP 스택에 의존하여 통신합니다. 따라서, TCP통신이 가지고 있는 연결지향, 데이터 전달 보증, 순서 보장 특징을..
k8s에는 service라는 리소스가 있습니다. service는 여러개의 pod를 하나의 Ip로 접근할 수 있도록 하는 역할을 합니다. 그럼 service는 요청들을 어떤 방식으로 로드 밸런싱할까요? 저는 당연히 round-robin 방식으로, 균등하게 각 pod에 전달할 줄 알았습니다. 하지만 k8s는 round-robin 방식으로 트래픽을 전달하지 않고 있었습니다! 이에 대해 리서치하다가 자세하고 친절하게 적은 외국 블로그 글을 발견했습니다. 그래서 오늘은, 그 블로그 글을 정리하여 service의 로드 밸런싱 전략에 대해 설명해보겠습니다. service의 로드 밸런싱 전략 service로 만든 ip 주소들은, kube-proxy에서 사용됩니다. kube-proxy는 모든 service의 IP 주소 ..
동료 개발자분이 entity 사용에 대한 질문을 주셨는데, 어영부영 대답을 드리긴 했으나 성에 차지 않았습니다. 이유는 reference resolver에 대한 개념이 제 머릿속에서 명확하지 않아서 였습니다. (사실 잘 몰랐습니다) 그런 기념으로 apollo federation의 reference resolver에 대해 정리해보고자 합니다. 🧐 reference resolver 란? reference resolver는 entity를 사용할 때 꼭 구현해주어야 하는 resolver입니다. 그럼 entity는 무엇인가요? entity는 여러 subgql에서 사용할 수 있는 객체 type을 말합니다. 예시로, 자사 제품의 정보를 제공해주는 product subgraph에서 Product type을 정의 했습니..
https://tv.naver.com/v/33860107 NAVER D2 GraphQL 잘 쓰고 계신가요? tv.naver.com DEVIEW 2023의 GraphQL 잘 쓰고 계신가요? 영상을 시청했다. 요즘들어 기초 탄탄에 유독 꽂혀있는 나에게 금 같은 영상이었다. 해당 세미나는 강의자가 실무에서 겪었던 문제들을 GraphQL의 다양한 기능을 활용해 해결하는 흐름으로 진행된다. 강의를 들으며 '이런 기능이 있구나'에서 그치는게 아니라, 사고를 확장할 수 있는 양질의 강의라고 느꼈다. 나는 특히 interface를 활용한 에러 핸들링 부분이 인상 깊었다. 몇 개월 전 실무를 진행하며 graphql의 에러 핸들링 방법에 대해 리서치한 적이 있다. graphql에서는 에러를 일반적인 http 상태코드로 처..
X-Forwarded-For 헤더는 비표준 헤더이다. 하지만 사실상 표준 헤더(?)이다. 관례적으로, 사용자 정의 헤더는 맨 앞에 X- 를 적어서 사용자가 임의로 정의한 헤더라는 표시를 했다. 그 중 몇몇 헤더는 대중적으로 쓰이게 되었고 그게 거의 표준으로 굳어진 사례가 있다. 오늘 알아볼 X-Forwarded-For 도 그런 경우에 속한다. 우리 회사는 AWS에서 제공하는 로드 밸런서(ALB)를 사용하고 있는데, ALB는 X-Forwarded 헤더를 지원한다. 오늘은 그 중에서도 X-Forwarded-For(XFF)에 대해서 알아볼 것이다. X-Forwarded-For가 무엇? X-Forwarded-For는, client의 ip를 식별하기 위한 용도의 헤더이다. 그러면 General Header의 Re..
node:16-slim puppeteer 13.5.0 k8s 에러 상황 내가 원했던 동작은 특정 페이지에서 스크롤을 내리는 동작이었다. 스크롤을 내리면 새로운 정보가 로딩되는 페이지인데, 특정 조건에 걸릴 때 까지 스크롤을 반복하는 동작을 구현했다. 로컬에선 잘 실행되는 코드가 k8s에 띄워서 실행하면 중간에 동작이 멈추고 무한 대기에 빠진다. 동작이 멈추는 시점은 동작할 때 마다 다른 시점에 발생한다. 로컬에서와 달리 페이지 동작 상태를 눈으로 확인할 수도 없으니, 현재 상태를 파악하기가 어려워 원인을 찾기도 어려웠다. 퍼펫티어가 문제인건지, 네트워크 상태가 문제인건지, 페이지가 문제인건지 무수한 경우의 수가 있으니 정말 갖가지 시도를 해본 것 같다. 에러 파악 과정 에러 원인 가정 짐작할 수 있는 에..
node:16-alpine 환경에서 puppeteer를 사용하고자 한다. 로컬에선 잘 동작하나 도커 동작 시도 시 이미지 빌드부터 제대로 빌드 되지 않는 상황이다. 이를 해결하기 위한 시도와 결과를 기록한다. 1. puppeteer troubleshooting 참고하여 시도 (참고 : https://github.com/puppeteer/puppeteer/blob/main/docs/troubleshooting.md#running-on-alpine ) 작성 코드 FROM alpine # Installs latest Chromium (100) package. RUN apk add --no-cache \\ chromium \\ nss \\ freetype \\ harfbuzz \\ ca-certificates ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ZfbZG/btsiM9yirag/NR3HK2dHkLYQDKRNb1mdW0/img.png)
환경변수 세팅 github에 해당 코드를 올려야 하는 상황인데, 데이터베이스 아이디 비밀번호가 코드 상에 노출되어 있어 그대로 올리기가 위험했다. 구글링해보니, 이를 환경변수로 세팅하는 방법이 있길래 이를 시도했다. 나처럼 민감한 정보를 환경변수 파일에 숨기기도 하고, 협업 시 서로 다른 컴퓨터에서 같은 환경을 유지하기 위해 환경변수 세팅을 한다고 한다. dotenv 프레임워크를 사용했다. npm i dotenv 프로젝트 최상위 폴더에 .env파일을 만들어주고 안에 환경변수를 작성해주면 된다. 파일에 작성한 환경 변수는 process.env.변수명으로 사용하면된다. 아래는 사용 전, 사용 후 코드이다. 사용 전 mongoose .connect( 'mongodb+srv://{id}:@exchangerate..