반응형

전체 글 391

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)가 많은 서비스..

컴퓨터공학 비전공자라면 방송통신대학교 편입학 추천!

소프트웨어 개발 분야는 비전공자가 많다국비 지원 학원에서 배워서 취업하는 경우도 많고, 요즘에는 부트캠프라고도 불리는 유료 학원에서 3~6개월 배워서 취업하는 경우도 많다. 다른 공학과 달리 값비싼 실험 도구 없이 컴퓨터만 있으면 실습 및 학습이 가능하기 때문이다. 분야에 따라 기간이 다르지만, 리액트, 안드로이드, iOS 개발 등 특정 프레임워크만 배운다면 6개월 정도면 어느 정도 익숙해져서 현업에서 일할 수 있다. 비전공자란 꼬리표소프트웨어 개발 분야는 워낙 비전공자가 많고 비전공자지만 실력이 뛰어난 사람이 많기 때문에 비전공자란 이유로 차별이 많지는 않다. 하지만 괜한 자격지심이 생기기도 하고, 뭔가 꼬리표 같은 느낌이 들 때가 많다. 만약 전공자라면 의심 받지 않을 지식도, 의심 받는 상황에 처하..

반복되는 코드 리뷰를 코딩 가이드로 정리하면 어떨까?

코드 리뷰를 하다보면 같은 얘기를 반복해서 적게 된다. 리뷰어 입장같은 얘기를 약간씩 다른 코드에 적게 된다. 리뷰를 하는 리뷰어 입장에서는 처음에는 길게 친절히 적더라도 시간이 지날수록 간략하게 또는 대충 적게 된다. 이미 자신은 다 알고 있는 상황을 적는 것이고, 상대방도 같은 팀 구성원이라면 당연히 알아야 한다고 가정하고 적기 때문이다(참조: 지식의 저주). 예를 들면 "n+1 이슈 있는지 확인 부탁드려요."라는 리뷰가 있다. 리뷰어 입장에서는 꽤 친절하게 적었다고 생각할 수도 있다. 어느 부분이 문제인지 코드 영역을 표시했고, 핵심만 간단히 적었으며, 어떠한 감정도 실지 않았으니까. 하지만 코드 작성자가 n+1 이슈가 무엇인지 모른다면 어떻게 될까. 코드 작성자 입장코드 작성자는 당혹스러운 경우가..

dbdiagram.io를 활용해서 쉽고 간편하게 데이터베이스 모델링하기

dbdiagram.io란 DBML(Database Markup Language)이란 언어를 사용해서 관계형 데이터베이스 논리적 설계를 돕는 무료 툴이다. ORM(Object Relational Mapping) 또는 SQL DDL(Data Definition Language)을 활용한 물리적 설계 전에 미리 간편하게 설계해서 시간을 절약할 수 있다. DBML(Database Markup Language)이란? 아래 예처럼 SQL DDL을 좀 더 간소화한 것에 가깝다. 딱 설계에 필요한 정보만 남겨 DDL보다 훨씬 파악하기 쉽다. Table users { id integer username varchar role varchar created_at timestamp } Table posts { id integ..

지식의 저주와 의사소통의 어려움

지식의 저주지식의 저주(curse of knowledge)란 다른 사람들과 의사소통을 할 때 다른 사람도 내가 갖고 있는 배경 지식을 가지고 있다고 자신도 모르게 추측하여 발생하는 인식적 편견이다(출처: 위키백과). 쉽게 말하면 내가 알고 있는 것을 내 얘기를 듣는 상대방도 알고 있을 것으로 가정하는 것이다. 지식의 저주 예"GET은 POST에서 못 가져오는 거 알죠?" 내가 전에 팀장한테 들었던 이야기다. 무슨 이야기를 하시는 건가 생각했다. 'HTTP 요청 메소드 중 하나인 GET 메소드는 POST 메소드를 못 가져온다는 말일까? 무슨 말이지'라고 생각하고 있었다. 내가 못 알아듣자, 그것도 모르냐는 눈빛으로 바라보면서 한숨을 쉬었다. 그리고는 풀어서 설명하기 시작했다. 그때서야 이해할 수 있었다. ..

반응형