반응형

다시 시작 Tap to restart 395

Q. 파이썬Python 기본 반올림 함수인 round(0.5)의 결과는?

A. 0이다. 중고등학교 수학시간에 배운 반올림 방식으로 생각하면 1이어야 할 거 같은데 0이 나온다. 그 이유는 파이썬 round는 우리가 수학시간 때 배운 사사오입 방식 4이면 내리고 5이면 올리는 게 아니라 오사오입 방식이기 때문이다. (참고: 반올림 위키백과)오일 때 버리고 그 다음 오는 올린다. 그래서 round(0.5) -> 0, round(1.5) -> 2가 된다. 결과가 짝수로 나온다. round(0.5) -> 0 round(1.5) -> 2 round(2.5) -> 2 round(3.5) -> 4로 가까운 짝수값이 나온다. 소숫점 첫째 자리에서 반올림해봐도 특이하다. round(0.01, 1) -> 0.0 round(0.05, 1) -> 0.1 round(0.15, 1) -> 0.1 ro..

Q. 깃허브github에서 깃플로git-flow와 스쿼시와 병합Squash and merge을 함께 쓰면 안 되는 이유는?

A. release 브랜치에서 main 브랜치로 PR(Pull Request) 요청할 때마다 충돌이 발생한다. 스쿼시와 병합Squash and merge이란?여러 커밋을 하나의 커밋으로 밀어넣어서(squash) 병합(merge)해주는 기능이다. 예를 들어서 feature 브랜치에서 develop 브랜치로 PR을 만들었다고 하자. feature 브랜치에서 작업한 커밋이 10개다. 스쿼시와 병합 기능을 쓰면 단 1개의 커밋으로 10개의 커밋이 합쳐져서 develop에 병합된다. 그래서 커밋 이력이 깔끔해진다. 충돌 예시 add hello title, add hello text란 두 커밋을 하고 feature/add_hello 브랜치에서 develop으로 PR을 만든 경우다. Squash and merge한 ..

개발 Dev/깃 Git 2023.10.11

Q. JOSM에서 한 점을 움직였을 때 여러 선이 한꺼번에 움직이는 원리는?

A. 점node에 id가 부여되어 있기 때문에 가능하다. 아래 그림처럼 한 점을 움직였을 때 해당 점과 관련된 여러 선이 한꺼번에 움직인다. 다른 편집툴은 보통 한꺼번에 움직이지 않는다. OSM 파일을 보면 아래와 같다. 4개의 점node와 2개의 선way로 이루어져 있다. 선way 정보는 변경이 없고, 점node의 좌표값이 변경되는 것이다.

Q. OSM 파일을 GeoJSON으로 변환하면 어떻게 바뀔까?

A. GeoJSON 데이터가 Feature로 바뀐다. osm을 GeoJSON으로 바꿔주는 파이썬 팩키지 osm2geojson을 활용해서 바꿔보자. 코드는 아래와 같다. 예제 코드를 그대로 활용하고 결과인 json을 파일로 저장한 코드다. import codecs import json import osm2geojson with codecs.open('sample.osm', 'r', encoding='utf-8') as data: xml = data.read() geojson = osm2geojson.xml2geojson(xml, filter_used_refs=False, log_level='INFO') with open("result.json", "w") as f: json.dump(geojson, f) ..

JOSM을 데이터베이스에 저장한다면 어떻게 설계해야 할까?

JOSM 구조 그대로 설계할 수 있을 거 같다. 예제 JOSM의 출처는 https://learnosm.org/ko/josm/start-josm/ 다. node node는 위 예처럼 lat, lon 좌표값을 갖고 있고, 태그들을 갖고 있다. 또 태그는 id가 없다. 태그의 경우 shop, shoes를 하나 만들고 계속 쓰기보다는 node에 종속된 느낌이다. node : tag = 1 : n 관계로 표현할 수 있다. 위 내용을 통해서 node 테이블이 필요하고, tag 테이블이 필요하다는 것을 알 수 있다. 테이블 node { id int [pk] created_at timestamp coordinates geometry[Point] } 테이블 node_tag { node_id int [pk] k varch..

JOSM 주요 용어Terminology 살펴보기

JOSM을 제대로 사용하려면 JOSM에서 사용하는 주요 전문 용어를 살펴볼 필요가 있다. JOSM Wiki 첫 소개에 전문 용어부터 나온다. 용어는 총 5가지다. Node, Way, Relation, Area, Tag. 하나씩 원문과 함께 살펴보자. Node A Node is a point. 노드는 하나의 점이다. Way A way is a line connecting multiple nodes. Way, therefore, is a general term for series of joined nodes, not just for roads or ways in reality. 길은 여러 노드들을 연결하는 하나의 선이다. 그래서 길의 실제의 도로나 경로만을 뜻하는 것이 아니라 연결된 노드의 연속을 일반적으로..

Q. JOSM이란?

A. 자바로 만들어진 OpenStreetMap(OSM) 무료 확장 가능한 에디터다. 공식 홈페이지 설명은 다음과 같다. JOSM is an extensible editor for ​OpenStreetMap (OSM) for ​Java 8+.It supports loading GPX tracks, background imagery, and OSM data from local sources as well as from online sources and allows to edit the OSM data (nodes, ways, and relations) and their metadata tags. 출처: josm.openstreetmap.de OSM 에디터 중에서 기능이 많고, 가장 좋은 거 같다. 아래는 오..

Q. GeoJSON이란? GeoJSON을 이루는 객체 종류는?

A. GeoJSON은 다양한 지리 데이터 구조를 인코딩하기 위한 형식이다. geojson.org 에 나온 영어 원문 정의는 아래와 같다. GeoJSON is a format for encoding a variety of geographic data structures. 출처: geojson.org 원문 설명을 보자. GeoJSON supports the following geometry types: Point, LineString, Polygon, MultiPoint, MultiLineString, and MultiPolygon. Geometric objects with additional properties are Feature objects. Sets of features are contained b..

깃모지gitmoji를 표로 한눈에 정리!

깃모지gitmoji란? Carlos Cuesta가 정리한 깃Git용 이모티콘이다. 커밋 메시지 맨 앞에 이모티콘을 사용한다. 아래 예를 보면 📄 Update LICENSE라고 커밋 메시지를 쓴 게 예이다. 깃모지 표 이모티콘 이모티콘 예약어 영어 뜻 한국어 번역 🎨 :art: Improve structure / format of the code. 구조 / 코드 포맷 개선 ⚡️ :zap: Improve performance. 성능 개선 🔥 :fire: Remove code or files. 코드나 파일 제거 🐛 :bug: Fix a bug. 버그 수정 🚑️ :ambulance: Critical hotfix. 긴급한 수정(핫픽스) ✨ :sparkles: Introduce new features. 새로운 기능..

개발 Dev/깃 Git 2023.10.03

PostgreSQL에 PostGIS 플러그인 설치해서 DBeaver로 간단히 실습해보기

설치 도커를 이용한 설치 postgis 플러그인까지 설치된 postgis 도커 이미지가 존재하므로 바로 사용해서 도커에서 실행할 수 있다. 물론 postgres 도커 이미지를 실행한 뒤 postgis 플러그인을 따로 설치할 수도 있다. 아래 예와 같은 도커 명령어로 도커 이미지 설치 및 실행할 수 있다. POSTGRES_PASSWORD=password로 비밀번호는 password가 된다. docker run --name postgis-container -e POSTGRES_PASSWORD=password -p 5432:5432 -d postgis/postgis DBeaver로 접속해보면 아래처럼 잘 접속이 된다. 아래 예처럼 postgis에 접속하면 테이블이 이미 존재한다. spatial_ref_sys ..

Q. 래빗엠큐RabbitMQ에서 큐Queue와 메시지Message 중 어떤 것이 메모리를 더 많이 차지할까?

A. 큐 1개가 메시지 1개보다 약 700배 정도 더 차지한다. RabbitMQ는 Docker로 설치 및 실행했다. 2 core, 메모리는 4GB 큐를 하나도 만들지 않았을 때 136 MiB, CPU 사용량도 1% 미만이었다. 큐를 30000개 추가했을 때 메모리 사용량 약 1400GiB 증가 이 상태에서 아래 코드로 큐를 30000개 추가했다. import time import requests from requests.auth import HTTPBasicAuth rabbitmq_server = 'http://localhost:15672' rabbitmq_user = 'guest' rabbitmq_password = 'guest' def create_queue(name): vhost_name = '%2..

Q. 주피터 노트북Jupyter Notebook에서도 sentry를 쓸 수 있을까?

A. 그냥 사용하면 작동하지 않는다. 주피터 노트북 매직 명령어로 등록하면 사용할 수 있다. sentry 에러 모니터링 툴 사용법을 보고 프로젝트까지 모두 만들자. 예제 코드 실행 시 오류 모니터링 실패 예제 코드 그대로 주피터 노트북에서 실행해보자. 센트리 이슈에 에러가 추가되지 않는다. 매직 명령어 등록 매직 명령어 등록이 필요하다. jupyter notebook 파일이 있는 곳에 아래 코드로 sentry_magic.py 란 파일에 만들자. sentry_dns 에는 당연히 자신의 Project 것을 입력해야 한다. from IPython.core.magic import register_cell_magic import sentry_sdk sentry_dns = "https://61542d0d570096..

인공지능 AI 2023.09.02

sentry 에러 모니터링 툴 사용법

sentry란? 에러 모니터링 및 애플리케이션 성능 모니터링(Application Performance Monitoring, APM) 툴이다. 더 좋고 유명한 Datadog이 있지만 워낙 비싸기 때문에 많은 회사들이 sentry를 쓴다. 사용법 계정 생성 사용법은 아주 간단하다. 우선 sentry.io 가입한다. 구글 계정이나 깃허브 계정을 사용하는 것이 편하다. 가입 중에 Organization을 입력해야 한다. 적당한 것을 입력하자. 프로젝트 추가 다 끝났으면 이런 화면이 나온다. Create Project를 누르자. 프로젝트를 만들어야 사용할 수 있다. 필요한 플랫폼을 선택하면 된다. 예시로 파이썬을 골랐다. Create Project를 누르고 framework를 선택하면 끝. Skip 해도 된다...

백엔드 Back-end 2023.09.02

Visual Studio Code 원격 개발 기능으로 서버 접속해서 파이썬 파일 실행, 디버깅 하는 방법

Visual Studio Code 설치 https://code.visualstudio.com/ 여기서 내려받을 수 있다. 내려받아서 설치하자. 실행하면 아래와 같은 화면이 나타난다. 네모가 4개 있는 아이콘이 익스텐션 아이콘이다. 그것을 누른 뒤 검색창에 remote를 누르고 Remote Development를 설치하자. SSH 접속 설정 F1키를 누르자. 아래처럼 최상단에 Remote-SSH: Open SSH Configuration File... 을 클릭한다. 기본 값인 가장 맨 위의 /.ssh/config를 누른다. 아래처럼 파일이 생성된다. 입력 내용에 맞게 입력하면 된다. 내 로컬 AI 서버 접속 설정 정보 예는 다음과 같다. private key를 이용해서 접속하는 경우 아래 예처럼 Ident..

파이참 원격 개발 기능으로 서버 접속해서 파이썬 파일 실행과 디버깅 하는 방법

원격 개발Remote Development이 필요한 상황 백엔드 개발의 경우 개발할 때 로컬에서 주로 개발하므로 원격 개발이 그리 많이 필요하지 않다. 하지만 인공지능 개발을 하다보면 원격 개발 기능을 자주 사용하게 된다. 로컬 컴퓨터에 GPU 성능이 좋지 않아 딥러닝 코드를 실행시키는 것조차 어려운 경우가 많기 때문이다. 그래서 본인 노트북에서 고성능 GPU가 달린 컴퓨터로 접속해서 원격 개발하는 경우가 많다. 파이참PyCharm 원격 개발Remote Development 파이참PyCharm을 실행하면 아래와 같은 화면이 나온다. 아쉽지만 원격 개발은 PyCharm Pro만 지원이 된다. Remote Development를 누르고 SSH를 누르자. SSH 접속 화면이다. 접속 방법 로컬 서버 예 같은 ..

Q. git-flow란? git-flow 활용 방법은?

A. git-flow는 Vincent Driessen이 제안한 깃git 브랜치 활용 모델로 많은 기업들에서 활용하고 있다. Vincent Driessen의 블로그 글 A successful Git branching model에 자세한 설명이 나온다. 주 브랜치(the main branches) gitflow의 주 브랜치는 master와 develop 브랜치다. 원문을 살펴보자. The central repo holds two main branches with an infinite lifetime: master develop The master branch at origin should be familiar to every Git user. Parallel to the master branch, anoth..

개발 Dev/깃 Git 2023.07.31

왕초보를 위한 구글 스프레드시트 사용법 무료 온라인책

초보자를 위한 구글 스프레드시트 Google Spreadsheet 사용법을 위키독스에 작성 중입니다. 여기 Restart! 구글 스프레드시트에서 무료로 볼 수 있습니다. 대상스프레드시트에 대해서 아무 것도 모르는 분, 스프레드시트가 어려워서 포기했던 분들을 위한 책입니다. 내용정말 기초적인 부분부터 다룹니다. 이 책을 보고 그대로 따라하다보면 어느새 실력이 늘어서 책을 읽기 전과 다른 사람이 되어 있을 것입니다. 읽기 순서순서대로 읽지 않으셔도 좋습니다. 필요한 부분만 찾아서 보셔도 됩니다. 학습 방법먼저 따라 해보시고 친구들, 가족들, 직장 동료들에게 가르쳐 주세요. 주변 사람들한테 설명하고 가르친 내용은 잊혀지지 않습니다. 여러분들 뇌에 깊이 새겨질 것입니다.

입사 지원 등 중요한 용도로 쓰는 이메일 주소 관리의 중요성

이메일의 중요성전화, 문자 등 다양한 연락 매체가 있지만 여전히 이메일은 중요하다. 이메일은 글이라 공식적인 기록이 남기 때문이다. 보통 오퍼레터Offer Letter라고 부르는 입사 제안도 당연히 메일로 온다. 메일로 연락을 주면서, 메일을 확인하라고 문자로도 연락을 주면 좋겠지만 문자 연락은 없이 메일로만 보내주는 경우가 많다. 메일 확인을 못한다면?기회가 날라간다. 내 경우 메일 확인을 못해서 서류 합격하고도 코딩 테스트를 못 봤다. 아쉽지만 할 수 없다. 입사 제안 메일도 이틀 지나서야 확인했다. 메일이나 연락이 올 때가 된 거 같은데 하고 메일함을 뒤지다가 겨우 확인했다. 인사팀 담당자도 메일 혹시 못 받았냐고 연락을 주셨다. 천만다행이었다. 원인은?여러 메일링 리스트에 등록하고 링크드인 같은 ..

회사 생활에서 낙인烙印과 스탬프Stamp

낙인낙인烙印. 쇠붙이를 불로 달구어 찍는 도장을 낙인이라고 한다. 소나 돼지 같은 가축에 주로 찍고 과거 큰 범죄를 저지른 사람한테 찍기도 했다. 당연히 현대 사회에서 사람한테 직접 도장을 찍지는 않는다. '너 찍혔어', '나 찍혔나봐'흔히 말하는 찍혔다는 표현이 바로 낙인이다. 학창 생활 때 주변 친구들이든 본인이든 듣게 되는 말, "너 선생님한테 찍힌 거 같아"처럼 말이다. 선생님이 '문제 학생', '떠드는 학생' 등이라고 도장을 찍은 상황일 때 쓰게 된다. 낙인과 브랜드, 강화 효과나이키 등 유명 브랜드 옷은 로고가 크게 박혀 있어 멀리서도 잘 보인다. 낙인도 비슷하다. 선생님은 멀리서 보기만 해도 바로 '문제 학생'을 떠올리고 A와 B가 같은 행동을 해도 반응이 다르다. 같은 행동을 했는데 공부 ..

큰 개발 조직에서 경험과 시도

큰 개발 조직 백엔드만 10명이 넘고, 프런트, 앱(안드로이드, iOS) 개발자, DBA, 데이터 관련 개발자, 시스템 엔지니어, QA 등까지 합치면 50명이 넘는 큰 개발 조직에서 백엔드 개발자로 1년 좀 넘게 일했다. 내가 일했던 곳 중 가장 큰 개발 조직을 갖고 있는 기업에서 퇴사하게 되어 이곳에서 경험과 시도를 적어본다. 경험 분업과 깊이 조직이 크니 당연하겠지만 각자 전문 분야가 있고, 그 해당 업무만 담당한다. 예를 들면 내 경우 백엔드 개발자로서 주로 서비스에 필요한 데이터베이스 테이블 모델을 설계하고 API를 개발하고 운영 이슈 등을 처리했다. 데이터베이스와 API 개발에 대해서 이전보다 깊이 있게 살펴볼 수 있었다. 일일 활성 사용자Daily Active Users(DAU)가 많은 서비스..

반응형