728x90

전체 글 169

Go 기초 - 1) Go 의 모듈구조 및 변수

Go Lang 폴더 생성 goproject/hello/extra위와 같은 폴더구조를 지니게 됬다면, hello 폴더 아래있는 모든 .go 파일들은 hello package 에 포함됩니다. 그리고 만약 extra package 에 포함되어 있는 .go 파일들은 extra package 에 포함되게 됩니다. 즉, go 에서는 폴더가 달라지면 package 도 달라집니다. Kotlin 과 Java 와는 약간 다른 구조다. create Go module go mod init goproject/hello go module 에는 NPM 진영의 package.json 과 같이 모듈명과 go-version 및 필요한 정보가 담겨있습니다. Go build go build 위 명령어를 입력하면 go file 들이 buil..

Go 2022.06.19

코드스피츠 코틀린 3강 정리

Week3 Kotlin OOP Constructor Kotlin 에서는 기존 Java 나 다른 언어처럼 아래와 같이 Constructor 를 선언하는 것이 가능하다. class TestUser { private val user: String, private val pw: String, constructor(user: String, pw: String) { // SubConstructor this.user = user this.pw = pw } constructor(user: String) { // SubConstructor Overloading this.user = user this.pw = pw } } 하지만 주 생성자에 한해서는 좀 더 다른 방법으로 선언이 가능하다. 코틀린에서 이렇게 선언되는 Con..

Kotlin 2022.06.18

OSI 7 계층과 TCP / IP

OSI 7 계층은 네트워크 지식을 공부하게 되면 한번쯤은 듣게 되는 용어중 하나이다. 오늘은 OSI 7 Layer 가 무엇이고, 왜 만들어졌는지를 공부해보려고 한다. 과거 과거에는 통신에 대한 규약이 정확하게 존재하지 않았다. 그래서 벤더사마다 통신규약을 다르게 정의했고, 이는 상호간의 통신규약을 통일하는데 무척 힘들게 하는 요인 중 하나였다. 그래서 이를 통일하기 위해 OSI 7 Layer 라는 표준이 등장했다. OSI 7 Layer? 계층 영어 표기 한국어 표기 주요 프로토콜 7계층 Application Layer 애플리케이션 계층 HTTP, FRP, SMTP L7 6계층 Presentation Layer 프리젠테이션 계층 TLS, AFP, SSH L6 5계층 Session Layer 세션 계층 L2..

카테고리 없음 2022.06.14

코드스피츠 코틀린 2강 정리

KClass KClass - 코틀린 클래스를 얻는 방법? 클래스::class 인스턴스::class KClass.members Collection KCallable 모든 호출가능한 요소 KProperty 속성 여기서 의문은 왜 Class Property 는 호출 가능한 요소인가? 라고 하면 Kotlin 에서는 값을 만들면 getter 또는 setter 를 자동으로 만들어준다. 물론 이건 변수가 val / var 냐의 차이도 있지만, kotlin delegate 를 공부해보면 kotlin property 는 호출 가능한 요소임을 좀 더 와닿게 알 수 있다. 예시가 허접하지만 대충 이렇게 된다 class Person { var name: String by PersonNameDelegator() } class ..

Kotlin 2022.06.14

코드스피츠 1강 정리

머릿글 들어가기에 앞서, 좋은 강의 영상을 제공해주신 코드스피츠에 감사합니다. 이 글은 코드스피츠 - 코틀린 강좌 영상을 주관적으로 정리한 글입니다. 그래서 영상의 내용도 많은데, 제가 오버랩되서 떠오른 내용도 많습니다 ㅎㅎ. 틀린 부분이 있다면 피드백 부탁드립니다. 영상 링크 코틀린에 대한 이해 코틀린은 독립된 언어로 여러 플랫폼에서 번역되는 가운데서도 고유의 철학을 유지 다만 JVM 에는 호환성이 높으나, 다른 언어는 Reflection 이나 GC가 없는 언어에서는 호환성이 그다지 높지 않음 안드로이드, IOS 를 코틀린으로 대체하면 사실상 공통로직 한벌짜는데는 좋은데, 플러터 처럼 공통 UI 를 지원하지는 않아서 인력이 증강될 확률이 높음. 언어 시스템의 형 원시형 (Primitive) 대입이나 함..

Kotlin 2022.06.12

HAR File 로 HTTP Request 추적하기

최근에 AWS ELB 쪽 버그를 제보하면서 AWS 에서 버그를 제보하는 방법에 대해서 가이드를 받았었다. 가이드를 받던 도중 .har 파일이라는 것에 대해 알게되었는데, 이게 참 기획자 분이나 QA 분에게 알려드리면 좋을것 같아서 사내 위키에 올리고 팀원에게 공유했다. Har file 이란? HTTP Archive format 의 약자로 Json 형태의 파일로 네트워크 기록을 Debug 하기 위해 사용한다. Viewer 를 통해 파일을 열어보면 아래 사진으로 확인할 수 있듯이 해당 유저가 Network Tab 의 기록동안 어떤 일을 했는지 파악할 수 있다. 하는 방법 1. Chrome Tab 에서 개발자 도구를 연다 2. Network 기록 제거를 실행한다. (반드시 해주어야함!!!) 3. 기록을 다 지..

일일회고 2022.06.10

MySQL 미사용 인덱스 조회 하는 방법

최근 팀에 SlowQuery 개선으로 인덱스를 추가하면서 쓸모없는 인덱스가 겹치는 인덱스들이 있겠다는 생각이 들었다. 그래서 팀원들과 같이 얘기해보고 DBA 분과도 얘기해봤지만 마땅한 방법을 찾지 못했었다. 그래서 처음에는 General log 떨어지는 것들을 조사해보는 프로그램 이런걸 만들어볼까? 하다가 이건 미친짓이다 싶어서 분명히 방법이 있을거야 하고 검색을 해보게 됬다. MySQL 을 공부하다보면 알게 되는것이 성능 분석을 위해서는 performance_schema 를 확인하는 것이 가장 좋다. 일단 MySQL 공식문서에도 나와 있듯이, performance_schema 테이블은 information_schema 보다 좀 더 low 한 level 에서의 측정을 기반으로 성능측정을 하게 된다. 성능..

DB 2022.06.08

어떻게 Service Layer 간 Transaction Session 을 공유할 수 있을까?

Spring 의 Transaction 을 사용하다 보면 이런 생각이 든적이 있을 것이다. 어떻게 Propagation 정책이 동작하는거지? Code 가 Generate 될때 Inline 함수처럼 해당 함수로 들어가는건 아닐 것 같은데? 어떻게 같은 Session 을 공유하는 걸까? 라는 생각이 들 것이다. 아래의 코드를 한번 보자. 김영한님의 스프링 DB 1편 강좌의 예시 코드 중 하나이다. public void updateMoney(Connection conn, String memberId, int money) throws SQLException { String sql = "update member set money = ? where member_id = ?"; PreparedStatement pstm..

Spring 2022.06.06

AWS Target Group Health Check 경로 설정

최근 AWS 무중단 배포를 회사 AWS 연습장에서 계속 혼자서 해보고 있는데, HealthCheck 부분 때문에 꽤 골머리를 앓았다. 나는 /health 에 요청을 보내서 확인하고 있는 줄 알았는데 / 쪽으로 요청을 보내서 확인하고 있었다. 지금은 내가 /acturator/health 로 바꿔 놓았지만 원래는 '/' 로 되어 있었다. 하도 예전에 한번 했어서 '/acturator/health' 에 보냈었지? 이러고 배포를 해서 오늘 삽질을 제대로 했다. 일단 바꾸는 법은 아래와 같다. Target Group 에 들어가서 내가 선택한것과 똑같이 Health Checks 메뉴를 클릭한 뒤 Edit 버튼을 누르면 된다. 그러면 아래처럼 설정할 수 있는 창들이 나온다. 나는 Interval 을 좀 빠르게 보기 ..

AWS 2022.06.05

INSERTION-SORT

INSERTION-SORT 삽입 정렬은 배열의 크기가 작을 수록 유리한 알고리즘 이며 단순하다. 책에 카드 예시가 하나 이해하기 쉽게 나오는데 같이 한번 봐보도록 하자. 책상에 카드더미들이 놓여져 있고, 왼손으로 하나씩 집어서 옮긴다고 해보자. 카드 더미들을 옮긴 뒤에 하나씩 비교하며 Ascending 방식으로 정렬을 해야 한다. 삽입 정렬의 경우는 가장 오른쪽 부터 하나하나 씩 확인하여 적당한 위치에 옮기면 된다. 책에서 나오는 INSERTION-SORT 알고리즘의 수도 코드는 아래와 같다. A = [5, 2, 4, 6, 1, 3] // Index Starting from 1 not zero for j = 2 to A.length key = A[j] i = j - 1 while i > 0 && A[i]..

자료구조 2022.06.05
728x90