분류 전체보기 146

[산문] 파란 밤.

매일 밤 우리의 입술은 파랬다. 처음 동거를 시작했을 때 우리는 작은 주방에 서서 냉동 블루베리를 나눠 먹었다.입에 넣었을 땐 딱딱하지만 이내 부드럽게 녹아내리는 차가운 감촉. 그 중 크기가 큰 블루베리는 숟가락에 담아 서로 먹여주기도 했다.그즈음 행복은 아마 블루베리같은 게 아닐까 생각하곤 했다.어느새 우리 입술은 자주 파랗게 물들었고 그것이 우리만의 작은 습관이 되었다. 낮에는 각자의 일상으로 바빴지만 저녁이면 함께 동네 골목을 걸으며 하루를 마무리했다.그는 낮에 겪은 일들을 사소한 것까지 모두 내게 이야기했고, 그때마다 나는 피곤한 몸을 이끌고 웃음으로 답해주었다. 주말이면 소소한 데이트를 즐겼다.작은 카페에서 "라떼가 맛있네", "아메리카노가 맛있네" 실랑이를 벌이고, 오래된 서점에서 자신이 선택..

[산문] 무제1.

"그때 왜 그랬을까"문득 이 문장이 떠오르면 그 즉시 심장 언저리가 아려온다. 마음이 아픈 게 어떻게 이토록 생생하게 몸으로 느껴지는 건지 신기하다는 생각과 동시에 "아 너무 속상하다"를 입밖으로 조용히 내뱉는다."속상해. 정말 속상하다. 마음이 아파."소리 내어 말하다보면 조금은 괜찮아지는 것도 같다."어쩔 수 없지" 일부러 더 크게 말해본다.벌써 2년이 다 되어가는데, 내 마음은 비에 젖은 신발처럼 여전히 눅눅하다. 처음 통화했을 때가 떠오른다. 내가 첫 눈에 반했던 건 너의 얼굴이었나, 아니면 목소리였던가.내 말 한마디 한마디를 귀담아 듣던 네 모습이이제는 비오는 창 밖 풍경처럼 흐리게 그리고 또 멀게만 느껴진다. 우린 거의 매일 저녁을 함께 먹었다.양배추와 달걀, 숙주를 후라이팬에 찌듯이 요리한 ..

[인문학] 중력과 은총 - 시몬 베유 (Simone Weil)

■ 글을 쓰는 이유 나는 원래 독서를 하면 99.9%는 소설이고, 또 그 소설의 독후감은 직접 노트에 쓰지만 이건 요즘 개발을 하면서 input -> output 으로 생각이 굳어져가고 있는 나를 위해일부러 검색까지 해서 선택한 "철학"적 사고를 위한 책이기 때문에특별히 좀 더 신경써서 정리해보려고 글을 쓰게 되었다. 일단 맨 앞의 두어장만 읽어도 내용이 어렵다. 가볍게 술술 읽히는 소설과는 다르다. 프랑스 철학자 구스타프 티본이프랑스 철학자 시몬 베유 사후에, 그가 적어둔 노트의 내용에 각각 제목을 달아서 출간한 것이라고 한다. 와 검색하다 알게 된 나의 놀라운 편견.시몬 베유가 당연히 남자일 거라고 생각했는데 여자였다. 어쨌든. 기록을 시작해보겠다.총 서른 아홉 개의 챕터가 있다. 1. 중력과 은..

[Vue, React] 뷰와 리액트의 간단한 비교 예제 (v-if, v-for)

1. v-if2. v-for3. 숫자 증가4. html 요소 하나에 여러 이벤트 걸 때 - Vue와 React 비교 - JSP와 Vue와 React 비교 - Vue와 React의 화면, 로직 작성 1. v-if // vue3 로그인 상태 로그아웃 상태 Vue3는 템플릿 문법으로 조건 처리 // Reactfunction App() { const isLogin = true; return ( {isLogin ? 로그인 상태 : 로그아웃 상태} );} React에서는 JSX 안에서 JavaScript 조건식을 사용한다. 2. v-for // vue3 {{ item }} 핵심 : v-for="item in ..

기타 2026.03.09

[Sort] Bubble Sort, Selection Sort, Insertion Sort (C언어)

코딩테스트 문제 풀다가 정렬에 대해 정리해본다. 참고로 C언어로 작성한다. 1. 버블 정렬2. 선택 정렬3. 삽입 정렬 성능은 버블, 선택, 삽입 세 가지 다 동일하다. 시간복잡도 O(n²) 1. 버블 정렬 : 매 반복마다 가장 큰 값이 뒤로 이동 // 버블 정렬 (Bubble Sort)void bubbleSort(int array[], int n) { for (int i = 0; i array[j + 1]) { int temp = array[j]; array[j] = array[j + 1]; array[j + 1] = temp; } } }} array[]: 정렬할..

[SQL] INDEX

인덱스는 자주 조회하는 컬럼에 적용해서 조회 시간을 단축시키는 데에 쓰인다. 다만 데이터가 긴 경우 (ex. url)에는 인덱스를 사용하지 않고데이터를 해시로 만들어서 인덱스를 짧게 만들어 사용하는 게 좋다. Index 에는 종류가 여러 가지 있다. - PRIMARY KEY : 기본키 : 중복되지 않는 유일한 키 : 테이블 당 기본키 하나 지정 가능 : where 문에서 데이터 가져올 때 가장 빠르게 조회할 수 있다. - NORMAL KEY : 중복을 허용하는 인덱스 : 조회 시 primary, unique 보다 속도가 느린 편 (인덱스 걸지 않은 컬럼보다 빠르게 조회) : 한 테이블에 여러 개 지정할 수 다. - UNIQUE KEY : 유니크 : 중복을 허용하지 않는 유일한 키 : 한 테이블에..

웹 개발/DB 2026.03.05

[AI] 인공지능, 머신러닝, 딥러닝 차이

이제 단순 코딩만 하는 시대는 끝났고 머신러닝, 딥러닝을 알아야한다고 하는데도대체 그게 뭘까? 싶어서 자료를 찾아보게 되었다. 일단 Learning 이란 '학습' 이라는 뜻을 가지고 있다. 가장 상위 개념이 인공지능이고그 안에 머신러닝과 딥러닝이 포함되어 있다고 생각하면 된다. [딥 러닝]어떤 문제를 풀기 위한 특징(feature)을 찾기 위해 굉장히 딥(deep)하게 쌓여있는 신경망을 이용해서 (Deep Neural Network)특징을 추출하고, 복잡한 패턴을 학습하는 방식이 딥 러닝.딥 러닝은 머신 러닝의 기법이다. 사람이 직접 특징을 설계하지 않아도 자동으로 학습할 수 있다. [머신 러닝]그리고문제를 풀기 위한 알고리즘을 데이터 기반으로 학습하는 방법이 머신 러닝.종류는 선형회귀, 의사결..

기타 2026.03.04

[Kotlin] 코틀린 기본 5 (class, 다형성(상속), 생성자)

코틀린은 자바와 다르게 클래스명을 파일명과 똑같이 지을 필요가 없다.그리고 클래스를 한 파일 안에 여러 개 생성할 수도 있다. class Human { val name = "chacha" fun eatingCake() { println("This is so YUMMY~~") }}fun main() { val human = Human() human.eatintCake() println("This human's name is ${human.name}")}// 출력 This is so YUMMY~~This human's name is chacha 자바에서는 new 키워드를 작성해서 클래스 객체를 생성했었는데Human human = new Human(); 코틀린은 그냥 써주면 된다.val..

앱 개발/Kotlin 2026.02.26

[Kotlin] 코틀린 기본 4 (Nullable, NonNull, 엘비스연산자, !! , let 함수, it)

NPE : Null pointer Exception자바에서는 컴파일에선 잡을 수 없고 런타임에서만 알 수 있다. 그래서 코틀린에서는 컴파일 시점에 알 수 있도록 했다. fun nullcheck() { var name : String = "cha" var nullName : String = null // 에러 var nullName : String? = null} null 을 대입하고 싶으면 ?를 붙여주면 된다.만약 변수 선언할 때 타입을 생략하면 기본적으로 nonnull 타입이 된다.따라서 ? 붙이려면 타입을 생략하면 안된다. fun nullcheck() { var name = "cha" var nullName :String? = null var nameInUpperCase :Stri..

앱 개발/Kotlin 2026.02.26