일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- kotlin
- ruby
- JPA
- 개인블로그 hugo
- 돌연변이 테스팅
- InnoDB
- 코틀린
- resize image with go
- https 서버 구현
- 코틀린 out
- 객체지향
- IntelliJ
- Mutation testing
- standard output
- https 실습
- 코틀린 in
- 공짜블로그
- https go
- Test
- Java
- resizer 구현
- MySQL
- output stream
- 자바
- cli 만들기
- Convariance
- Pitest
- standard input
- https implement
- image resizer with go
- Today
- Total
목록전체 글 (162)
Rlog
개요요즘 유행하는 Cursor editor 를 써볼겸 사이드에서 간단하게 코드짤때 많이 이용하는 Go 언어를 통해 Https 가 어떻게 동작하는지 가볍게 실습겸 정리하기 위해 직접 코드를 작성하며 정리해보았다. 막상 이런 자료들 볼때 실습으로 할수 있는 코드들은 많이 없고, 이론적인 자료만 너무 많아서 정말 아쉽다.Https 란?Https 는 Http 와 다른 프로토콜로 인터넷 통신간 TLS/SSL encryption 을 이용하여 더 안전하게 데이터를 주고 받기 위한 하나의 프로토콜이다. 쉽게 예시를 들기 위해 아래 그림을 한번 보자.HTTP 를 사용하게 되면 인터넷 통신간 전송되는 데이터를 평문(Plain-text) 형태로 보내게 된다. 이때 패킷을 가로채는 Packet Sniffers 이 있으면 그대..
문제파악 문제는 그래프 내에서 높이(height) 를 알수 있는 배열 `heights` 가 주어졌을때, 위 그림과 같이 주어진 그래프에서 가장 많은 물을 차지할수 있는 컨테이너를 찾는 것 이다. 일단 가장 간단하게 생각해보았을때, 물의 면적을 구하는 공식은 아래와 같이 구할수 있을 것 이다. Calculate Volume Using MathJax 컨테이너의 용량구하기 공식: \( \text{Volume} = \text{Width} \times \text{Height} \) ">HTML 삽입미리보기할 수 없는 소스생각해보면 우리는 이미 받은 height 배열을 통해 그래프내 막대들의 높이는 이미 알고 있는 상태이다.heights = [1,8,6,2..
발단 책 Effective testing 을 보다가 돌연변이 테스트(Mutation testing) 이라는 키워드를 발견했다. 돌연변이 테스트라는 키워드를 발견한 후 키워드가 궁금해서 찾아보게 되었고, 바이트 코드를 조작하여 기존 테스트 케이스들로 인해 "죽은 돌연변이" 들 혹은 "살아남은 돌연변이들", "실행조차 안된 돌연변이" 들 등의 수치들이 있었다. 이 모든 수치들을 보면서 이 수치가 무엇을 의미하는가에 대한 궁금함이 생겼고, 그렇다면 이 돌연변이들의 생사 지표가 어떻게 프로덕션 코드의 퀄리티를 측정할 수 있지? 라는 궁극적인 의문이 생겼다. 개념 기본적으로 Mutation testing 이 동작하는 방식을 설명하자면 기본적으로 바이트 코드를 조작하는 몇가지 동작(Operation) 들이 존재한다..
Go is the simplest language I've ever seen! Image Resizer 를 다른 언어가 아닌 Golang 으로 하는 이유는 Go lang 은 컴파일 빌드시 Executable File(실행 가능한 파일)이 바로 튀어나오므로, 사실상 위와같이 주로 실행시켜 만드는 Utilities 를 만들기에 상당히 심플합니다. 설계 대략적인 어플리케이션의 구상도는 아래와 같습니다. 사용자가 CLI 를 통해 우리가 Go lang 으로 만든 어플리케이션에게 요청을 보내면 Go lang 이 내부 Standard Library 를 이용해 맞는 Encoder / Decoder 를 찾아 요구하는 사양을 갖춘 새로운 이미지의 형태로 이미지를 생성하여 클라이언트에게 돌려주는 형식입니다. 일단 요구사항을..
운영체제에서의 리다이렉션은 무엇인가요? 운영체제에서의 리다이렉션에 대해 들어보신 적이 있나요? 듣지 못했다면 이 글이 도움이 될 것 입니다. 이 글에서는 운영체제에서의 리다이렉션에 대해 배워보겠습니다. 표준 입력, 출력 및 오류 소개 이 사진은 여기서 가져왔습니다 처음에는 I/O가 물리적으로 연결된 시스템 콘솔을 통해서만 발생했습니다(키보드를 통한 입력, 모니터를 통한 출력). 시간이 흘러감에 따라 I/O 장치(마우스를 통한 입력 또는 터치 패드 등)가 시스템에 추가되었습니다. 그래서 표준 입력, 출력 및 오류가 도입되었습니다. 표준 스트림은 프로그램의 입력과 출력을 사용자 정의하기 위한 측면을 추상화하여 이를 만족시키며, 프로그램이 실행을 시작할 때 컴퓨터 프로그램과 그 환경 간의 미리 연결된 입력 및..
Generic 코틀린에서 Generic 은 왜 있을까요? 왜 무공변, 공변, 반공변 등의 개념이 필요할까요? 이러한 질문을 코틀린을 공부하는 사람이나 저 역시도 코틀린을 공부했을때 많이 들어왔습니다. 그래서 오늘은 코틀린 'Generic' 에 관해 파헤쳐보도록 하겠습니다. Generic 에 대해 우리가 반드시 알아야 하는 몇가지 컨셉이 있습니다. 일단 우리가 들어가기전에 반드시 알아야 하는 개념들이 있는데요. Derived Type 입니다. Derived Type Derived Type 은 많은 의미가 있지만 여기서는 부모클래스 부터 속성들을 상속받는 클래스라고 이야기 하겠습니다. open class OriginalClass( val name: String, val age: Int, ) { open fu..
Hugo와 Github 페이지 통합하기 Hugo는 가장 인기 있는 오픈 소스 정적 사이트 생성기 중 하나입니다. 로컬에 hugo를 쉽게 설치하고 정적 사이트를 Github 페이지에 배포할 수 있습니다. 로컬에 Hugo 설치하기 설치로 바로 들어가기 전에 Mac OS에 설치하는 방법에 대해서만 다루겠습니다. Windows나 Linux에서 설치하는 방법은 공식 문서를 참조하세요. brew install hugo hugo 설치가 완료되었다면 다음 단계로 넘어갑니다. Github에 배포용 저장소 만들기 Github에는 두 개의 저장소를 만들어야 합니다. 하나는 블로그의 글과 스킨을 관리하는 ** 쪽 이고, 다른 하나는 **사이트 배포 용입니다. 그래서 두 저장소를 관리하기 위해 submodule을 사용해야 합니..
의존성 역전 원칙 (Dependency Inversion Principle) 의존성 역전 원칙(DIP)은 SOLID 원칙 중 하나입니다. SOLID는 객체 지향 디자인을 더욱 이해하기 쉽고 유연하며 유지보수 가능하게 만들기 위한 다섯 가지 디자인 패턴 집합입니다. 의존성 역전 원칙을 이해하기 위해서 우리는 반드시 제어의 역전과 의존성 주입 개념에 대해서 이해해야 합니다. Inversion of Control (제어의 역전) 제어란 무엇일까요? 그리고 역전은 무엇을 의미할까요? 이러한 질문에 답해보겠습니다. 먼저 제어와 역전을 알아봅시다. 제어란 코드의 실행 순서를 결정하는 흐름을 말합니다. 아래의 예시와 같이 코드를 작성하면 코드는 위에서부터 아래로 예측 가능한 방식으로 실행됩니다. a = 10 b = ..