전체 글
Observability : Logs vs Traces vs Metrics!
IBM Instana 학습 중 Log, Trace, Metric이 각각 어떻게 다른지를 정리합니다.https://www.ibm.com/docs/ko/instana-observability/1.0.303?topic=overview 본 글은 아래 원문을 참고합니다.https://medium.com/@surfd1001/things-to-know-about-observability-mechanisms-a52876e421c7 Observability : Logs vs Traces vs Metrics!Software systems have become the integral part of any organisation. As the organisation evolve the software systems also ..
Intellij에서 실행안되는 문제
1. 'main' 실행 버튼이 죽어있는 문제 발생2. 소스루트가 잘못 설정되어 있었음. src/main/kotlin 을 소스루트로 다시 설정함. (kotlin 폴더에서 오른쪽키 > 디렉터리를 다음으로 표시 > 소스루트)3. 구성편집 > 메인클래스를 racingcar.ApplicationKt로 설정.4. 실행후 camp.nextstep.edu.missionutils.* 가 임포트되지 않는 문제 발견5. 파일 > 프로젝트 구조 > 모듈 로 이동해 확인한 결과 소스루트가 두개임. 이전의 소스루트가 남아있었던 것. 제거하고 하나만 남기니 해결됨.
[Pre-course] 1주차 후기
리팩토링도 마무리했고 우선 PR하여 제출완료한 상태이다. 어떤 구조로 작성해야 아름다워지는지는 어느정도 감을 잡았다. 다만 코틀린이 아직 익숙하지않은 관계로 문법적인 관점에서 정리를 해두려한다. 1. PR 내역https://github.com/herotechcourse/kotlin-racingcar-precourse/pull/33 [Assignment Submission] Byeonghyeok Kwak's Racingcar Pre-course by Aiden-Kwak · Pull Request #33 · herotechcourse/kotlin-racinThis is my submission for the Racing Car game project. 1. Key Features Implemented a ..
[Pre-course] 빠른 검토 위한 몇개 Kotlin 문법 정리
Kotlin 기초 문법 안내목차클래스 선언1.1. class1.2. data class1.3. enum class1.4. object1.5. interface 속성과 접근자2.1. val vs var2.2. abstract val & override val2.3. override2.4. 커스텀 get() 표준 함수3.1. require() 자료형4.1. Any4.2. Map 주요 컬렉션과 자료구조1. 클래스 선언1.1. class일반 클래스 선언 class Person(val name: String, var age: Int) { fun introduce() = "안녕하세요, 저는 \$name 입니다. 나이는 \$age 살이에요." } 1.2. data classequals(), ha..
NIPA 고성능 컴퓨팅 지원 사업 사용자 교육(kt cloud)
AI Train 상품은 컨테이너 환경으로 제공되는 GPU 기반의 학습 전용 인프라 서비스.* 이거 VM이 아님. 컨테이너 기반이라 세션 종료되면 날아갈거임. 마운트된 저장공간에 보존해야될 파일 저장해야하는거 유의. # 사용자 가이드(GUI) # 시작하기- project: 할당받은 상품에 맞는 프로젝트 명이 설정됨. 하나씩 가능함.- 리소스그룹도 하나만 선택이 가능함.- Invitation: 다른 동료와 폴더(데이터셋) 공유하고 싶을때 이용. # 자원관리프로젝트는 하드웨어 리소스를 관리하는 단위 그룹.자원그룹은 하드웨어 리소스를 관리하는 단위 그룹.자원정책: 한사람당 최대 3개 세션과 5개 폴더 생성 가능.# 저장공간- 2TB가 용량 제한임. 데이터 폴더(NAS)에 저장된 크기가 쿼터로 할당된 2TB 만 ..
코틀린 시작 기록(3)
과거 해커톤 때 팀원들 교육용으로 만들었던 투표 API를 코프링으로 옮겨보려한다.https://github.com/Aiden-Kwak/NextJsDemo GitHub - Aiden-Kwak/NextJsDemo: 팀원 교육용으로 제작팀원 교육용으로 제작. Contribute to Aiden-Kwak/NextJsDemo development by creating an account on GitHub.github.com 원하는 응답GET /api/get-vote{"id":1,"bidenCount":0,"trumpCount":0}POST /api/post-vote with {"vote": "Biden"}{"id":1,"bidenCount":1,"trumpCount":0}POST /api/post-vote wi..
코틀린 시작 기록(2)
1. JSON으로 던지기DTO (Data Transfer Object) 라고 표현하면서 사용을 하는듯?demo/dto/HelloResponse.kt 를 만들어 사용하기로 했다.package com.example.demo.dtodata class HelloResponse( val message: String) 주의: ()로 묶어야한다. {}로 묶으면 안돼 package com.example.demoimport org.springframework.web.bind.annotation.GetMappingimport org.springframework.web.bind.annotation.RestControllerimport com.example.demo.dto.HelloResponse@RestControll..
코틀린 시작 기록 (1)
갑자기 코틀린이 필요해졌다. GPT와 함께 공부하며 기록을 좀 해두려한다. 1. 구성하기- 코틀린 + Spring 구성으로 연습해본다.- JDK 17로 진행한다.brew install openjdk@17brew install kotlin#심볼릭링크 생성sudo ln -sfn $(brew --prefix openjdk@17)/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-17.jdk# ~/.zshrc에 설정export JAVA_HOME=$(/usr/libexec/java_home -v17)export PATH="$JAVA_HOME/bin:$PATH"# 실행source ~/.zshrc 2. 새프로젝트 생성Type: Gradle-KotlinPac..
심볼릭 링크로 파이썬 커맨드 만들기
1. 먼저 파일 상단에 다음줄을 추가한다.#!/usr/bin/env python3python3로 실행하겠다는 선언을 미리 해준다. 2. 실행 권한chmod +x file.py 3. 심볼릭 링크 생성sudo ln -s /usr/local/bin/
효율적인 Django 사용을 위한 몇가지 (분산트랜잭션 처리와 ACID)
박살난 디비성적과는 별개로 ACID에 대한 기억은 남아있다. 다시 정리해보면,Atomic: 원자성의 보장이다. 트랜잭션 내의 모든 작업이 성공적으로 완료되거나, 하나라도 실패하면 전체가 롤백돼야한다.Consistency: 트랜잭션이 완료되면 데이터베이스는 항상 일관된 상태를 유지해야한다.Isolation: 하나의 트랜잭션이 완료될 때까지 다른 트랜잭션이 영향을 받지 않도록 해야한다.Durability: 트랜잭션이 성공적으로 완료되면, 시스템 장애가 발생해도 변경 사항이 유지돼야한다. 분산트랜잭션 처리에 대한 예시들을 찾아보던 중 적절하게 문제가 있는 한가지 예시를 발견하여 가져와 정리해보려한다.from django.db import transaction @transaction.atomic def tr..
효율적인 Django 사용을 위한 몇가지(쿼리 최적화 적용편)
1. N+1문제와 최적화(1)N개의 추가 쿼리가 발생하며 데이터 개수에 따라 성능이 급감하는 문제를 말한다. 비효율적 접근을 살펴보자.transactions = PaymentTransaction.objects.filter(user=request.user) for txn in transactions: print(txn.user.profile.name) # N+1 문제 발생 첫번째로 PaymentTransaction 테이블에서 request.user의 모든 거래내역을 가져온다.그리고 루프를 실행하며 txn.user.profile.name에 접근할 때마다 user와 profile을 개별조회하는 SQL query가 실행되며 transaction에 N개의 결과가 있으면 추가로 N개의 쿼리가 실행된다...
효율적인 Django 사용을 위한 몇가지(정규화 설계 적용편)
1. 정규화 설계 적용을 통한 데이터 중복 개선과 무결성 유지1정규화(1NF)각 칼럼이 원자값을 가져야한다. 즉 칼럼에 리스트나 중첩된 JSON등을 저장해서는 안된다.class User(models.Model): name = models.CharField(max_length=100) email = models.EmailField(unique=True)emails=["x.com", "y.com"] 같은 저장은 1정규화를 만족하지 않는다. 2정규화(2NF)1NF를 만족하면서 부분적 함수종속을 제거해야한다. 즉, pk의 일부만 가지고 결정되는 속성이 있다면 그걸 별도의 테이블로 분리해야한다.class StudentCourse(models.Model): student = models.Foreig..