<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>서환수</title>
  <link rel="alternate" type="text/html" href="https://brunch.co.kr/@@Czw" />
  <author>
    <name>hwansoo</name>
  </author>
  <subtitle>서환수의 브런치입니다.</subtitle>
  <id>https://brunch.co.kr/@@Czw</id>
  <updated>2015-10-06T18:11:33Z</updated>
  <entry>
    <title>GitLab CI에서 환경변수 주입</title>
    <link rel="alternate" type="text/html" href="https://brunch.co.kr/@@Czw/32" />
    <id>https://brunch.co.kr/@@Czw/32</id>
    <updated>2024-01-28T04:40:32Z</updated>
    <published>2024-01-28T00:09:29Z</published>
    <summary type="html">코드 저장소에 올릴 수 없는 정보는 보통 환경변수를 이용하여 지정합니다. 예를 들어 Vue.js로 개발하는 경우에 (vite를 이용하여 빌드한다고 할 때) 사용할 백엔드 서버 주소를 환경변수로 저장하고 싶으면 프로젝트 루트에 .env 파일을 만들고, 그 파일에서 VITE_ 로 시작하는 환경변수를 정의하면 됩니다. VITE_SERVER_ADDRESS=http</summary>
  </entry>
  <entry>
    <title>MySQL varchar 길이 기준</title>
    <link rel="alternate" type="text/html" href="https://brunch.co.kr/@@Czw/31" />
    <id>https://brunch.co.kr/@@Czw/31</id>
    <updated>2024-01-23T12:26:40Z</updated>
    <published>2024-01-23T10:17:18Z</published>
    <summary type="html">Oracle용으로 만들어진 테이블 스키마를 받아서 MySQL용 테이블 스키마를 만들어야 한다고 해 봅시다. 이 때 VARCHAR2는 MySQL에서 varchar로 변환해야 하는데, VARCHAR2(100 BYTE) 이렇게 적어놓았으면 MySQL varchar에서는 길이를 어떻게 지정해야 할까요?  MySQL의 varchar에서는 길이를 문자 개수로 지정합니</summary>
  </entry>
  <entry>
    <title>GitLab 저장소 미러링</title>
    <link rel="alternate" type="text/html" href="https://brunch.co.kr/@@Czw/30" />
    <id>https://brunch.co.kr/@@Czw/30</id>
    <updated>2024-01-22T10:22:17Z</updated>
    <published>2024-01-22T10:22:17Z</published>
    <summary type="html">작업을 하다 보면 모종의 이유로 깃랩 저장소에 있는 코드를 다른 깃 저장소로 복제해야 할 수 있습니다. 예를 들어 팀에서 CI/CD 플랫폼으로 GitLab을 연동해서 쓰고 있는데 전사 기준으로 코드를 공유할 때는&amp;nbsp;Github를 쓰게 돼 있다든가 하는 경우를 생각할 수 있습니다. 이 때 쓸 수 있는 방법이 미러링(mirroring)입니다. GitHub으로 옮</summary>
  </entry>
  <entry>
    <title>MySQL 행 INSERT/UPDATE 시각 기록</title>
    <link rel="alternate" type="text/html" href="https://brunch.co.kr/@@Czw/29" />
    <id>https://brunch.co.kr/@@Czw/29</id>
    <updated>2024-01-21T08:57:33Z</updated>
    <published>2024-01-21T08:57:33Z</published>
    <summary type="html">MySQL에서 행이 새로 추가되거나 갱신되었을 때의 시각을 자동으로 기록하고 싶은 경우가 있을 겁니다. 이런 경우에는 TIMESTAMP나 DATETIME을 이용하면 됩니다.  예를 들어 행 추가 시각을 지정하기 위한 created_at이라는 열과 행 갱신 시각을 지정하기 위한 updated_at이라는 열을 추가하고 싶다면 다음과 같이 하면 됩니다. CREA</summary>
  </entry>
  <entry>
    <title>FastAPI에서 엔드포인트 숨기기</title>
    <link rel="alternate" type="text/html" href="https://brunch.co.kr/@@Czw/28" />
    <id>https://brunch.co.kr/@@Czw/28</id>
    <updated>2024-01-19T15:02:44Z</updated>
    <published>2024-01-19T15:02:44Z</published>
    <summary type="html">FastAPI에서는 매우 손쉽게 Swagger UI를 생성할 수 있습니다. 그런데 자동으로 생성되는 Swagger UI에 노출시키고 싶지 않은 엔드포인트가 있을 수 있습니다.  이런 경우에는 include_in_schema라는 매개변수를 쓰면 됩니다.  from fastapi import FastAPIapp = FastAPI()@app.get(&amp;quot;/visib</summary>
  </entry>
  <entry>
    <title>v-data-table 페이지 유지 방법</title>
    <link rel="alternate" type="text/html" href="https://brunch.co.kr/@@Czw/27" />
    <id>https://brunch.co.kr/@@Czw/27</id>
    <updated>2024-01-15T14:01:10Z</updated>
    <published>2024-01-15T14:01:10Z</published>
    <summary type="html">Vue.js로 개발을 하는데 디자인 역량이 부족하다 싶으면 적당한 UI 라이브러리를 잘 써야 그나마 볼 만한 인터페이스를 만들 수 있습니다. 그 때 쓸 수 있는 툴 가운데 하나가 Vuetify입니다.  Vuetify에서 표를 표현하고 싶을 때 많이 사용하는 게 v-data-table 컴포넌트인데요, 이 컴포넌트를 쓰다 보면 컴포넌트의 특정 행을 클릭해서 다</summary>
  </entry>
  <entry>
    <title>코딩 문제 입출력 성능 개선 팁 (C++) - sync_with_stdio, cin.tie, '\n'</title>
    <link rel="alternate" type="text/html" href="https://brunch.co.kr/@@Czw/26" />
    <id>https://brunch.co.kr/@@Czw/26</id>
    <updated>2024-01-13T03:31:18Z</updated>
    <published>2024-01-13T01:38:14Z</published>
    <summary type="html">코딩 문제를 풀다 보면 알고리즘도 빠른 거 잘 썼고 특별히 느릴 이유가 없어 보이는데 채점 결과를 보면 누군가는 막 10 ms 미만인데 내 코드는 수십 ms가 나오는데 이유를 모르겠다며 고통을 호소하는 분들이 가끔 있습니다. 혹시 C++를 쓰신다면 가장 먼저 의심해야 하는 건 스트림 관련된 문제입니다. 프로그램과 환경(운영체제) 사이에는 입출력 통신을 위한</summary>
  </entry>
  <entry>
    <title>MySQL 데이터 변경 내역 추적 방법</title>
    <link rel="alternate" type="text/html" href="https://brunch.co.kr/@@Czw/25" />
    <id>https://brunch.co.kr/@@Czw/25</id>
    <updated>2024-01-12T12:26:47Z</updated>
    <published>2024-01-12T10:19:17Z</published>
    <summary type="html">직접 관리하는 서비스를 통해서 데이터에 액세스하는 경우라면 서비스 로그를 통해서 데이터 변경 내역을 확인할 수 있지만 외부로부터 DB에 직접 액세스해서 작업을 처리할 수 있는 경우라면 그게 불가능합니다. 이런 경우에도 데이터 변동 내역을 파악하고 있어야 하는 경우라면 어떤 방법을 쓸 수 있을지 찾아봤습니다. (MySQL 기준)  바이너리 로그(Binary</summary>
  </entry>
  <entry>
    <title>Alembic 활용 - Python에서 SQLAlchemy로 개발하기</title>
    <link rel="alternate" type="text/html" href="https://brunch.co.kr/@@Czw/24" />
    <id>https://brunch.co.kr/@@Czw/24</id>
    <updated>2024-01-12T04:28:35Z</updated>
    <published>2024-01-11T12:15:30Z</published>
    <summary type="html">Python에서 DB를 사용할 때는 SQLAlchemy + Pydantic을 많이들 사용합니다. FastAPI + SQLAlchemy + Pydantic으로 REST API를 만드는 작업을 하는데, DB 구조를 변경하는 일이 종종 있다면 Alembic을 쓰는 게 좋습니다. Alembic은 SQLAlchemy와 함께 사용하는 용도로 만들어진 데이터베이스 이전</summary>
  </entry>
  <entry>
    <title>프론트엔드 공부하기 3</title>
    <link rel="alternate" type="text/html" href="https://brunch.co.kr/@@Czw/23" />
    <id>https://brunch.co.kr/@@Czw/23</id>
    <updated>2024-01-06T15:51:40Z</updated>
    <published>2024-01-06T12:02:25Z</published>
    <summary type="html">CH03-04 - 끝  점점 복잡도를 올리면서 완성도를 올리는 과정.  일부 템플릿 기능을 생 javascript로 구현하는 과정이 여전히 흥미롭다.  템플릿 라이브러리 관련하여 handlebars라는 템플릿 라이브러리를 소개하기도 한다.  예쁘게 만들기 위해 tailwindcss, FontAwesome의 아이콘 등을 활용한다. CDNJS에 들어가서 fon</summary>
  </entry>
  <entry>
    <title>프론트엔드 공부하기 2</title>
    <link rel="alternate" type="text/html" href="https://brunch.co.kr/@@Czw/22" />
    <id>https://brunch.co.kr/@@Czw/22</id>
    <updated>2024-01-06T15:46:01Z</updated>
    <published>2024-01-06T11:31:26Z</published>
    <summary type="html">김민태의 프론트엔드 아카데미 1강, CH03 CH03_02 12줄의 코드로 시작하기 브라우저에서 제공되는 개발자 기능 중 검사 메뉴에서 콘솔을 통해&amp;nbsp;DOM을 액세스해서 HTML을 바꾸는 것부터 시작한다. document.getElementById('root').innerHTML = '&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;하나&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;둘&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;셋&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;'</summary>
  </entry>
  <entry>
    <title>프론트엔드 공부하기 2</title>
    <link rel="alternate" type="text/html" href="https://brunch.co.kr/@@Czw/21" />
    <id>https://brunch.co.kr/@@Czw/21</id>
    <updated>2024-01-03T20:10:51Z</updated>
    <published>2024-01-03T13:49:59Z</published>
    <summary type="html">김민태의 프론트엔드 아카데미 1강, CH03 CH03_02 12줄의 코드로 시작하기 브라우저에서 제공되는 개발자 기능 중 검사 메뉴에서 콘솔을 통해&amp;nbsp;DOM을 액세스해서 HTML을 바꾸는 것부터 시작한다. document.getElementById('root').innerHTML = '&amp;lt;ul&amp;gt;&amp;lt;li&amp;gt;하나&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;둘&amp;lt;/li&amp;gt;&amp;lt;li&amp;gt;셋&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;'</summary>
  </entry>
  <entry>
    <title>프론트엔드 공부하기 - 2024년 1월 1일</title>
    <link rel="alternate" type="text/html" href="https://brunch.co.kr/@@Czw/20" />
    <id>https://brunch.co.kr/@@Czw/20</id>
    <updated>2024-01-01T12:21:19Z</updated>
    <published>2024-01-01T06:57:57Z</published>
    <summary type="html">공부하면서 까먹지 않게 적어둘까 한다.  너무 체계 없이 그 때 그 때 필요한 것만 찾아서 코드만 베껴 쓰는 식으로 했더니 영 기초가 부실한 것 같아서 제대로 공부를 해 볼까 한다. 패스트캠퍼스에서 김민태의 프론트엔드 아카데미를 듣기 시작했다.  추천 도서 자바스크립트 완벽 가이드 한국어판은 번역이 영 안 좋다는 후기가 있어서 일단 영문판으로 보기 시작했다</summary>
  </entry>
  <entry>
    <title>자전거 헬멧 의무화 - 헬멧은 꼭 써야 한다고 생각하지만 법으로 강요하는 건 사양합니다.</title>
    <link rel="alternate" type="text/html" href="https://brunch.co.kr/@@Czw/18" />
    <id>https://brunch.co.kr/@@Czw/18</id>
    <updated>2022-08-06T06:42:47Z</updated>
    <published>2018-10-02T13:37:25Z</published>
    <summary type="html">요약 나는 자전거 헬멧을 의무화하는 도로교통법 개정안에 반대한다. 그 이유는 다음과 같다. 헬멧을 착용하면 사고시 사망률을 현저하게 줄일 수 있다는 것은 의심의 여지가 없는 사실이다. 하지만 우리나라에서 자전거 사고 사망자가 많은 더 중요한 요인은&amp;nbsp;환경과 제도 등 도로 제반 여건이 자전거 타기에 좋지 않다는 점이다. 자전거를 타는 사람이 많아질수록 자전거 &lt;img src= "https://img1.kakaocdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2FCzw%2Fimage%2F8gHe3CVuJ_oRxwTyo_YTEc_5gUM.jpg" width="500" /&gt;</summary>
  </entry>
  <entry>
    <title>데상트 듀애슬론 레이스 사전 거치</title>
    <link rel="alternate" type="text/html" href="https://brunch.co.kr/@@Czw/17" />
    <id>https://brunch.co.kr/@@Czw/17</id>
    <updated>2018-06-22T12:50:15Z</updated>
    <published>2018-06-22T12:40:31Z</published>
    <summary type="html">며칠 전, 택배가 왔다. 6월 17일에 있을 데상트 듀애슬론 레이스 준비물이 택배로 배달 온 것. 택배 상자 안에는 운동화(흰색 데상트 블레이즈 라이트)와 대회 공식 운동복 윗도리, 반장갑, 종아리 압박 토시, 배번호 세 개(윗도리용, 자전거용, 헬멧용)와 대회 안내문, 운동화 교환권, 칩 반송용 봉투 등이 들어 있었다. 운동화는 발에 잘 맞았다. 윗도리는&lt;img src= "https://img1.kakaocdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2FCzw%2Fimage%2FfZFqKficdv_xaRhv9oVTYevfvTA.jpg" width="500" /&gt;</summary>
  </entry>
  <entry>
    <title>화천DMZ랠리 후기 - 인생 라이딩!</title>
    <link rel="alternate" type="text/html" href="https://brunch.co.kr/@@Czw/15" />
    <id>https://brunch.co.kr/@@Czw/15</id>
    <updated>2022-09-21T14:46:34Z</updated>
    <published>2018-05-23T11:40:35Z</published>
    <summary type="html">지난 2월, 브런치에도 글을 하나 올렸던 것처럼 화천DMZ랠리 대회에 참가 신청을 했다. 신청을 하기 전에&amp;nbsp;오르막에 약한 내 비루한 자전거 실력으로 완주할 수 있을까 고민도 많았다. 하지만 올해가 이미 11회째로 나름 역사와 전통을 자랑하는 대회이기도 하고, 과거에 화천DMZ 대회에 참가해본 사람들의 후기들을 봐도 초보자도 즐겁게 타고 올 수 있는 대회라는&lt;img src= "https://img1.kakaocdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2FCzw%2Fimage%2FQZLi-Ta4BqWTezv5CkTJkqAVmys.jpg" width="500" /&gt;</summary>
  </entry>
  <entry>
    <title>자전거 업힐과 파워 - 자전거의 물리학</title>
    <link rel="alternate" type="text/html" href="https://brunch.co.kr/@@Czw/13" />
    <id>https://brunch.co.kr/@@Czw/13</id>
    <updated>2021-07-05T00:19:40Z</updated>
    <published>2018-04-26T12:03:51Z</published>
    <summary type="html">자전거를 타다 보면 오르막길을 오를 일이 자주 생긴다. 평지에서도 속도 차이가 많이 나지만, 평지에서 비슷한 속도로 탈 수 있는 사람들 사이에서도 오르막 속도 차이가 크게 나는 걸 흔히 본다. 평지에서 더 잘 타는 사람이 오르막에서는 한참 뒤처지는 일도 적지 않다. 거리로는 작은 부분에 불과한 오르막 기록이 전체 기록에서 큰 비중을 차지하기 때문에, 동호인&lt;img src= "https://img1.kakaocdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2FCzw%2Fimage%2Fx3pGBNOI-2Nj_2lg0rRtASQNyQw.png" width="500" /&gt;</summary>
  </entry>
  <entry>
    <title>천안(서) 200 km 브레베 - 2018년 4월 21일, 천안 에이플러스 출발/도착</title>
    <link rel="alternate" type="text/html" href="https://brunch.co.kr/@@Czw/12" />
    <id>https://brunch.co.kr/@@Czw/12</id>
    <updated>2018-04-25T07:49:28Z</updated>
    <published>2018-04-25T07:46:26Z</published>
    <summary type="html">작년 5월에 참가했던 천안(남) 200 km 브레베에 이어 두 번째로 참가한 브레베였다. 원래 혼자 타려고 신청해 뒀는데 선배님 한 분께서 같이 타자고 신청을 하셔서 같이 탔다. 여러 모로 파란만장한 경험을 했던 브레베였다. 아마도 선배님 아니었으면 중간에 DNF 했을 거다.   지난번에는 천안으로 차를 몰고 갔는데, 끝나고 운전해서 올라오는 것도 은근히 &lt;img src= "https://img1.kakaocdn.net/thumb/R1280x0.fjpg/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2FCzw%2Fimage%2Fde1LLLWyI2_Ux19bibRnGE6R2ss.jpeg" width="500" /&gt;</summary>
  </entry>
  <entry>
    <title>집에서 햄버거 만들기 - 안생햄버거를 찾아서</title>
    <link rel="alternate" type="text/html" href="https://brunch.co.kr/@@Czw/11" />
    <id>https://brunch.co.kr/@@Czw/11</id>
    <updated>2020-07-02T12:33:26Z</updated>
    <published>2018-04-18T07:43:39Z</published>
    <summary type="html">미국에서 호기심에 햄버거를 직접 만들었다가 인생 햄버거를 경험해 본 후로, 한국에서는 적당한 고기를 사기 어렵다는 생각에 도전도 해 보지 않은 햄버거 만들기. 찾아보니 미국산 냉장육을 갈아서 파는 데가 좀 있어서 직접 도전해 보기로 했다. 안타깝게도 살코기/지방 비율을 적어서 파는 데는 찾지 못해서 그냥 블랙 앵거스 냉장 목심(chuck)을 갈아서 파는 걸&lt;img src= "https://img1.kakaocdn.net/thumb/R1280x0/?fname=http%3A%2F%2Ft1.daumcdn.net%2Fbrunch%2Fservice%2Fuser%2FCzw%2Fimage%2FlwTMbyNDdTUaxR6sxJSq4eipaWk.jpg" width="500" /&gt;</summary>
  </entry>
  <entry>
    <title>왜? - &amp;ldquo;중력은 왜 있을까?&amp;rdquo; 묻는 이를 위한 답</title>
    <link rel="alternate" type="text/html" href="https://brunch.co.kr/@@Czw/10" />
    <id>https://brunch.co.kr/@@Czw/10</id>
    <updated>2018-04-13T07:53:00Z</updated>
    <published>2018-04-13T07:53:00Z</published>
    <summary type="html">왜는 육하원칙의 다른 요소들과 비교하면 조금 불분명한 면이 있다. 예를 들어 &amp;ldquo;너 이 공을 왜 바닥에 떨어뜨렸니?&amp;rdquo;라고 묻는다면 그 때의 왜는 의도, 정황, 사유, 배경 등을 묻는 것이다. 하지만 &amp;rdquo;하늘이 왜 파랗니?&amp;rdquo;라는 질문에서는, 누가 그림에서 하늘을 파란 색으로 칠한 이유를 묻는다든가 하는 게 아닌 이상, 어떤 원리로 하늘이 파란지를 묻는 의도로 왜</summary>
  </entry>
</feed>
