logo
기술 블로그
logo
허깅페이스 트랜스포머 라이브러리 사용방법
다양한 트랜스포머 모델을 통일된 인터페이스로 사용할 수 있도록 지원하는 오픈소스 라이브러리허깅페이스가 없다면 새로운 트랜스포머 모델이 공개될 때마다 어떤 인터페이스를 사용하며, 어떤 함수를 써야 하는지 일일이 다 찾아봐야 할 것허깅페이스를 통해 우리는 사용하고자 하는 트랜스포머 모델을 불러오고, 학습시키고, 이를 통해 추론하기만 하면 된다.두가지 다른 모델을 사용했을 때의 코드 비교학습 모델을 탐색할 수 있는 모델 허브와 데이터셋을 가져올 수 있는 데이터셋 허브가 존재허깅페이스 라이브러리 사용법허깅페이스 모델은 바디와 헤드로 구분되어 있다. 같은 바디를 사용하면서 헤드만 바꾸어 사용할 수도 있기 때문에 모델 활용시 각 작업에 맞게 따로 분리해서 불러온다.위 예제중 두번째는 텍스트 시퀀스 분류를 위한 헤드가 포함된 모델을 불러올때 사용하는 코드이다.만약 여기서 model_id에 헤드가 없이 바디만 있는 모델 id를 넣는다면 warning이 뜨고 분류 헤드는 랜덤으로 초기화가 된다.토크나이저는 텍스트를 토큰 단위로 나누어 토큰을 id값으로 변환한다.token_type_ids는 첫번째 문장이면 0, 아니면 1을 나타내는 값이고 attention_mask값은 패딩 토큰인지 실제 토큰인지를 나타내는 값이다.decode를 통해서 토큰단위로 나눈 문장을 다시 합칠수 있고, CLS, SEP는 문장의 시작과 끝을 나타내는 특수 토큰이다.첫번째 처럼 두 문장을 각각 list에 넣을수도 있고, 두 문장을 합쳐서 하나로 토크나이징 할 수도 있다.
SK텔레콤
·
오늘
logo
패스키: 인증 기술의 미래, 비밀번호 없는 세상으로의 발걸음
안녕하세요, 오늘은 비밀번호 없는 세상을 위한 기술인 패스키에 대해 소개를 하려고 합니다.왜 비밀번호가 없어져야만 하는지, 이를 위해 등장한 기술인 패스키가 무엇인지, 그리고 SK텔레콤에서는 어떤 노력을 기울이고 있는지 전달드리도록 하겠습니다.비밀번호로 부터 발생하는 문제들우리는 아주 오래전부터 온라인 서비스를 이용할 때 비밀번호를 생성하고 입력하여 로그인, 인증을 해왔습니다.지금 이 글을 작성하는 저도, DEVOCEAN에 비밀번호 입력을 통해 로그인을 하였습니다.얼핏 생각해보면 비밀번호는 우리 곁에 오랫동안 함께 해왔고, 비밀번호에 대해 특별히 고민을 해본적이 없습니다.하지만 기술의 발전과 환경의 변화에 따라 비밀번호에 대한 고민은 깊어지고 있습니다.그럼 비밀번호로 발생하는 여러가지 문제, 제약 사항 등을 알아보도록 하겠습니다.• None 비밀번호는 말 그대로 나만 알고 있어야 하는 비밀값입니다. 하지만, 구조적으로 비밀번호를 이용하여 온라인 서비스에 인증을 할 때는, 비밀번호가 네트워크를 통해 전달되며, 온라인 서비스에 저장된 값과 비교하여 해당 로그인, 인증을 수행하려는 대상이 맞는지 확인을 합니다 (대칭성). 네트워크로 전달되는 정보는 환경에 따라 해당 값이 노출될 수 있으며, 온라인 서비스에 저장된 비밀번호 검증 값은 때로는 해커들의 좋은 먹이감이 되고 있습니다. 일방향 함수, 솔팅 (Salting) 등 비밀번호 등을 안전하게 저장하기 위한 방법들이 존재하나 컴퓨팅 파워의 발전에 따라 이러한 방법들도 점차 무력화되고 있는 상황입니다.• None 비밀번호는 추측 가능한 형태가되어서는 안되며, 되도록이면 무작위로 선택된 값이어야 합니다. 인간의 뇌는 기본적으로 패턴을 기반으로 동작하며, 인간은 무작위로 어떤 값을 선택하는데 능숙하지 않으며, 하물며 특정 길이 이상의 무작위 값을 생성하는 것은 더욱 능숙하지 않습니다. 이때문에, 우리는 비밀번호를 생성할 때 특정 규칙에 따라 생성을 하게 됩니다. 특정 규칙에 따라 생성된 비밀번호는 소셜엔지니어링 또는 비밀번호 크래킹 툴을 통해 손쉽게 알아낼 수 있습니다. (규칙성)• None 온라인 서비스 이용 시 앞서 설명 드린 것과 같이 우리는 임의의 비밀번호 생성을 어려워 합니다. 이로 인해, 인터넷 상의 많은 사용자들은 새로운 온라인 서비스 이용 시 기존에 다른 서비스에서 이용한 비밀번호를 그대로 사용합니다. 만약, 그러한 서비스 중 하나에서 비밀번호 유출 사고가 발생될 경우, 동일한 아이디 및 비밀번호를 사용하는 다른 서비스도 손쉽게 계정 탈취가 발생할 수 있습니다. 최근 들어, 이러한 유형의 보안 사고가 크게 증가하고 있으며, 외부에서 획득한 계정 정보로 타 서비스에 입력함으로써 계정을 탈취하고 있습니다. 이러한 공격 방식을 Credential Stuffing 이라고 부르며, 매우 낮은 비용으로 효과적인 공격을 수행할 수 있습니다. (재사용성)• None 생성형 AI의 발전에 따라, 고도화된 사이버 공격 등이 증가하고 있으며, 최근들어 피싱 (Phishing) 형태의 공격이 증가하고 있습니
SK텔레콤
·
오늘
logo
[UX개선 장기 로드맵] 수립기 - "VOC많은 순"으로만 일하지 않기 위하여
네이버 사내 기술 교류 행사인 NAVER ENGINEERING DAY 2024(10월)에서 발표되었던 세션을 공개합니다. 발표 내용프로덕트의 UX개선을 위해 무엇을 - 어디서부터 - 어떻게 해 나아가야 할 지 체계적으로 정리한 "사용자 분석" 및 "UX장기로드맵 수립"과정을 공유드립니다. 대상UX혹은 그 외 영역에 대한 장기적인 계획을 사용자 중심으로 설정하고 싶으신 분들 목차Motivation n3r소개장기 로드맵 수립 배경 소개 사용자 문제 정의 사용자 가설 수립 사용자 인터뷰(In-depth interview) 진행Affinity DiagramAARRR Frame work 개선 과제 정의 UX개선과제 도출과제 우선순위 설정 과제 우선순위 구조화 장기 로드맵 도출UX10계명 정의 ◎ NAVER ENGINEERING DAY란?NAVER에서는 사내 개발 경험과 기술 트렌드를 교류를 할 수 있는 프로그램이 많이 있습니다. 그중 매회 평균 70개 이상의 발표가 이루어지는 NAVER ENGINEERING DAY를 빼놓을 수 없는데요. 2016년부터 시작된 ENGINEERING DAY는 실무에서의 기술 개발 경험과 새로운 기술과 플랫폼 도입 시 유용하게 활용될 수 있는 팁 등을 공유하며 서로 배우고 성장하는 네이버의 대표적인 사내 개발자 행사입니다. 올해 진행된 NAVER ENGINEERING DAY 2024(10월)의 일부 세션을 공개합니다.
네이버
·
하루 전
logo
DevOps 효율성 극대화를 위한 데이터 시각화 전략
안녕하세요. 현재는 제품화개발팀에서 데이터 통계 사이트를 개발, 운영하는 12년 차 개발자 김수지입니다. 이전에는 Jira, Confluence, Gitlab, Jenkins 등 전반적인 개발 시스템 구축 및 운영을 진행하였습니다.각각의 시스템이 운영되면서 자동화 프로그램을 개발하게 되었습니다. 시스템 간의 연동을 하게 되면서 시스템 성능, 애플리케이션 배포, 인프라 상태 등을 한눈에 파악할 수 있도록 하는 우리의 개발 시스템에 맞는 사이트가 필요하다고 느껴졌습니다.DevOps는 개발(Development)과 운영(Operations)의 결합을 의미합니다. 코드의 품질, 제품의 생산성과 완성도를 위해서는 현재 우리의 상태를 파악하는 것이 가장 중요합니다. 데이터 시각화는 이러한 DevOps 프로세스의 효율성을 높이고 문제 해결을 더 신속하게 할 수 있게 합니다.DevOps 시각화에 필요한 요소는 크게 데이터 식별, 수집, 저장 및 관리, 시각화, 보완으로 나눌 수 있습니다. 각각의 요소는 DevOps 환경에서 데이터를 실시간으로 모니터링하고 분석하기 위해 필수적입니다. 아래에서 각 요소를 구체적으로 설명하겠습니다.DevOps 데이터 시각화에서 데이터 수집 단계는 전체 파이프라인의 핵심적인 기반을 형성하며, 개발 규칙, 방법론, 그리고 배포 흐름을 토대로 정량화할 수 있는 데이터를 API를 통해 수집하는 과정입니다. 이 과정에서는 로그 데이터, 메트릭, 배포 빈도와 같은 정량적 데이터를 다양한 시스템에서 가져와 분석과 시각화를 위한 원천 데이터로 사용합니다.각 단계에서 수집할 수 있는 다양한 데이터를 운영하는 규칙과 사이클을 토대로 기준을 세워 필요한 데이터를 정의합니다.1. 이슈 등록 : 기간별 등록된 이슈 수, 개발기간, 완료 여부, 등록부터 배포까지 소요 기간Jira에서 이슈 정보를 가져오거나, GitLab에서 프로젝트 정보를 가져오거나, Jenkins에서 빌드 상태에 대한 정보를 가져오려면 각 시스템에서 제공하는 REST API 호출을 통해 Raw 데이터를 가져옵니다. 이를 토대로 분석하려는 용도에 맞게 데이터를 가공합니다.REST API(Representational State Transfer Application Programming Interface)는 웹 기반의 서비스와 클라이언트 간의 통신을 위한 아키텍처 스타일입니다. REST는 리소스를 URI(Uniform Resource Identifier)를 통해 정의하고, 서버의 자원을 다양한 클라이언트에 구애받지 않고 사용할 수 있게 하는 설계 방식으로, HTTP 요청에 대한 응답으로 서버의 자원을 반환합니다.이때, 서버에서 보내는 응답이 특정 기기에 종속되지 않도록 모든 기기에 통용될 수 있는 데이터(JSON)를 반환하는데, 다양한 클라이언트의 요청에 일일이 View 페이지를 응답하는 것이 아니라, JSON 데이터를 응답하는 것입니다.우선, 데이터를 분석하고자 하는 개발, 빌드 시스템인 GitLab과 Jenkins REST API 기본적인 사용법에 설명하겠습니다.1. GitLa
한글과컴퓨터
·
하루 전
logo
Keycloak 활용한 SSO 구현 : #2 완벽한 HTTPS 보안: Ingress 컨트롤러와 Let's Encrypt으로 무료 인증서 설정하기
Ingress 컨트롤러와 Let's Encrypt으로 무료 인증서 설정하기Kubernetes 환경에서 Ingress 컨트롤러를 사용하여 웹 애플리케이션에 HTTPS 보안을 완벽하게 설정하는 방법에 대해 소개해드리려고 합니다.특히, 무료 인증서 제공 서비스인 Let's Encrypt을 활용하여 손쉽게 인증서를 발급받는 방법을 다뤄보겠습니다.Kubernetes에서 다양한 애플리케이션을 외부에서 접근할 수 있도록 하려면 보통 Ingress를 사용합니다.Ingress는 외부 Http(s) 요청을 내부의 적절한 서비스로 라우팅해주는 역할을 하는데요,이때 HTTPS를 지원하도록 설정하면 사용자와 서버 간의 통신이 암호화되어 보안을 강화할 수 있습니다.하지만 HTTPS를 적용하기 위해서는 인증서가 필요합니다.이때 인증서를 유료로 구매할 수도 있지만, Let's Encrypt라는 무료 인증서 발급 서비스를 이용하면 비용 부담 없이 HTTPS 보안을 구현할 수 있습니다.이를 Kubernetes 환경에서 손쉽게 적용할 수 있도록 Ingress 컨트롤러와 CertManager라는 도구를 함께 사용하겠습니다.• None 완벽한 HTTPS 보안: Ingress 컨트롤러와 Let's Encrypt으로 무료 인증서 설정하기• None Keycloak 설치부터 설정까지: SSO를 위한 첫걸음• None SSO 연동 샘플 애플리케이션 구성하기: 실전 가이드• None SSO 연동 테스트: Keycloak과 애플리케이션의 완벽한 통합Keycloak을 설정하기 위해서는 사용할 도메인이 필요합니다. 본 가이드에서는 예시로 cloudradar.kr 도메인을 사용합니다.실제 설정 시에는 회사 또는 프로젝트에 맞는 도메인을 사용해야 합니다.먼저 Kubernetes 클러스터에 Ingress 컨트롤러를 설치합니다. Nginx Ingress 컨트롤러는 Helm을 사용하면 쉽게 설치할 수 있습니다.이 명령어로 Nginx Ingress 컨트롤러가 K8s 클러스터에 설치되며, 외부 요청을 처리할 준비를 마치게 됩니다. 로드 밸런서가 생성된 것을 확인할 수 있습니다.다음으로 Let's Encrypt 인증서를 자동으로 발급받고 관리해주는 Cert-Manager를 설치합니다. 역시 Helm을 사용하여 설치할 수 있습니다.이제 Ingress 리소스에 HTTPS를 설정하고 Let's Encrypt을 통해 인증서를 발급받아봅시다. 먼저 ClusterIssuer를 생성하도록 하겠습니다.Kubernetes에서 SSL/TLS 인증서를 자동으로 발급하고 관리해주는 오픈소스 도구입니다.특정 네임스페이스 내에서 인증서를 발급하는 데 사용되는 리소스입니다.클러스터 전체에서 인증서를 발급하는 리소스입니다. 네임스페이스에 국한되지 않고 모든 네임스페이스에서 사용 가능하다는 점에서 Issuer와 차이가 있습니다.위에서 생성한 ClusterIssuer 를 클러스터에 적용합니다.사용자가 도메인 호스트로 접속할 때 Nginx Ingress 컨트롤러가 설정된 로드밸런서로 트래픽을 전달하기 위한 레코드를 생성합니다.Route
SK텔레콤
·
2일 전
logo
[SpringBatch 연재 08] CompositeItemProcessor 으로 여러단계에 걸쳐 데이터 Transform하기
• None CompositeItemProcessor는 Spring Batch에서 제공하는 ItemProcessor 인터페이스를 구현하는 클래스이다.• None 여러 개의 ItemProcessor를 하나의 Processor로 연결하여 여러 단계의 처리를 수행할 수 있도록 한다.• None Delegates: 처리를 수행할 ItemProcessor 목록이다.• None 단계별 처리: 여러 단계로 나누어 처리를 수행하여 코드를 명확하고 이해하기 쉽게 만들 수 있다.• None 재사용 가능성: 각 단계별 Processor를 재사용하여 다른 Job에서도 활용할 수 있다.• None 유연성: 다양한 ItemProcessor를 조합하여 원하는 처리 과정을 구현할 수 있다.• None 설정 복잡성: 여러 개의 Processor를 설정하고 관리해야 하기 때문에 설정이 복잡해질 수 있다.• None 성능 저하: 여러 단계의 처리 과정을 거치므로 성능이 저하될 수 있다.• None 샘플 코드는 기존 06.06.MyBatisItemReaderSample을 그대로 이용한다.• None ItemProcessor를 구현하고, process 메소드를 구현한다.• None 여기서는 이름과 성별을 소문자로 변경한다.• None 나이에 20년을 더하기 위한 ItemProcessor를 작성한다.• None 동일하게 ItemProcessor를 구현하고, process 메소드를 구현하였다.• None 단순히 나이에 20을 더했다.• None 이제 CompositeItemProcessorBuilder를 이용하여 delegates를 통해서 ItemProcessor가 수행할 순서대로 배열을 만들어 전달했다.• None 지금까지 ItemProcessor를 여러개 생성하고, 이를 순서대로 적용하는 샘플을 살펴보았다.• None CompositeItemProcessor를 통해서 리스트의 순서대로 ItemProcessor이 적용된 것을 알 수 있다.
SK텔레콤
·
2일 전
기술 블로그 더 보기
Copyright © 2024. Codenary All Rights Reserved.