phinx db migration tool setting

phinx.yml 에서 host를 localhost로 할 때엔 unix_socket을 정해줘야 한다. host가 localhost인데 unix_socket이 설정되어 있지 않으면, 다음과 같은 에러를 보게 된다. [InvalidArgumentException] There was a problem connecting to the database: SQLSTATE[HY000] [2002] No such file or directory unix_socket을 사용하지 않으려면 host를 127.0.0.1로 하면 된다. 참고자료: https://stackoverflow.com/questions/22188026/sqlstatehy000-2002-no-such-file-or-directory/25782795#25782795

Database migration with alembic or phinx

어떤 언어로 개발하든 데이터베이스를 수정할 일이 생기는 경우가 발생한다. 개발자의 개발 머신과 테스트 서버 그리고 상용 서버에 이르기까지 모두 적용해 주어야 한다. 때로는 어떤 상황으로 되돌아가야 하는 경우도 생긴다. 이와 같은 DB 변경 사항 적용을 마이그레이션이라 부르며, CodeIgniter나 Laravel 그리고 Django에서는 마이그레이션 기능을 내장하고 있다. 프레임워크와 별도로 작동하는 패키지가 있는지 찾아보다가 두 가지를 발견하였다. alembic은 … Read more

Android build setting

Andriod 앱을 빌드하기 위해서는 당연히 android sdk가 있어야 한다. 예전엔 android sdk를 다운받을 수 있었는데, 지금은 sdk tools를 별도로 제공하고 있다. 사용하려면 명령줄에서 실행해야 한다. 필자는 jenkins를 docker로 띄워 놓은 상태였고 git repository로부터 webhook이 걸리면 gradlew명령어를 사용해서 apk를 자동으로 빌드하려는 상황이었다. jenkins 컨테이너 내에 jenkins 사용자의 홈디렉토리는 기본으로 /var/jenkins_home에 세팅된 것을 기준으로 정리하였다. 이후에 tools/bin에 … Read more

Gitlab with docker and setup ssl using letsencrypt on macOS

Docker image를 생성하고 실행한다. 컨테이너의 443, 80, 22 포트는 각각 Mac의 8443, 8080, 8022로 매핑해준다. 동일한 포트로 사용하기 원하면 443:443과 같이 써주면 된다. sudo docker run –detach \ –hostname gitlab.example.com \ –publish 8443:443 –publish 8080:80 –publish 8022:22 \ –name gitlab \ –restart always \ –volume /Users/[username]/apps/gitlab/config:/etc/gitlab \ –volume /Users/[username]/apps/gitlab/logs:/var/log/gitlab \ –volume /Users/[username]/apps/gitlab/data:/var/opt/gitlab \  gitlab/gitlab-ce:latest Letsencrypt 인증서 … Read more

Bitbucket 저장소와 Jenkins Webhook 연동하기

Jenkins의 소스코드 관리에서 Bitbucket 저장소와 연동하여 사용할 수가 있다. 그런데, Webhook을 걸면 브랜치를 가리지 않고 항상 실행된다. 필자는 저장소에서 Webhook을 걸 때마다 개발용 앱과 상용 앱을 모두 빌드하게 하고 싶지 않았다. pull request가 개발 브랜치로 머지될 때에는 테스트 서버에 붙는 테스트용 앱을 빌드하고, 상용 브랜치로 머지될 때에는 실 서버에 붙는 상용 앱을 빌드하고 싶었다. 하지만 … Read more

똑부 상사에 대한 오해

사람들이 상사와 부하의 조합에 대해, 혹은 어떤 상사가 좋은 상사라고 생각하는가에 대한 질문에 똑똑함/멍청함, 게으름/부지런함의 네 가지 형용사를 조합하여 4가지로 표현하곤 한다. 사람들은 대체로 똑똑하고 게으른 상사를 원하는 경우가 많았다. 일에 대한 전략과 전술에는 똑똑하기를 바라고 있으며, 부하 직원에 대한 감시나 일에 대한 간섭 등 부하직원의 자율성을 침해하는 행동의 측면에서 게으른 상사를 원하고 있었다. 똑부를 … Read more

데이터베이스 구현을 뒤로 미루는 일

엉클 밥은 소프트웨어 개발의 지혜 3절의 “급여 관리 사례 연구”에서 데이터베이스 구현을 뒤로 미루겠다고 하였다. 이를 통해, 요구사항을 더 분명히 알게 되며, 필요이상의 기반구조를 막음으로써 필요한 것만 데이터베이스로 구현할 수 있다고 하였다. 그래서 오늘부터 시작한 프로젝트는 데이터베이스로 구현하는 것을 미루고, 코드로 필수적인 부분들을 먼저 구현해 보았다. 그러다보니 자연스레 데이터베이스 설계에 공을 들이는 것보다도 사용자가 어떤 … Read more

Python BeautifulSoup4 사용방법

Python beautifulsoup4 사용법으로 문서의 제목을 가져오고 표의 값을 가져와 보도록 하겠습니다. Python BeautifulSoup4 개요 BeautifulSoup4는 Python에서 HTML 문서나 XML 문서를 파싱하는데 사용할 수 있습니다. PyPi에서 제공되는 현재 최신 버전은 4.12.3입니다. beautifulsoup3는 2020년도에 drop 되었다고 하니 bs4를 이용하시기 바랍니다. 문서의 제목 읽어오기 문서의 제목을 읽어오도록 하겠습니다. HTML에서 문서의 제목은 head 태그 아래의 title 태그 내에 표현합니다. … Read more

무엇이 필요한 지 아는 것

열심히 한다고 다 잘되는 게 아니다. 전략과 전술이 있어야 조금 더 발전하는 자리로 갈 수 있다. 때로는 도구를 사용할 줄 몰라서 더디게 갈 때도 있다. 그 때엔 도구의 사용을 장려하고 숙달되게 할 필요가 있다. 지금은 건강을 챙겨야 할 때, 집으로 칼같이 달려간다~*

DRY~*

오늘은 “Do not Repeat Yourself.” 이 말을 강렬하게 느끼는 하루… 이게 코드 얘기면 차라리 낫겠다. 답답해 죽갔다.