반응형

전체 글 397

Q. AWS EC2에 Elastic IP 연결하는 방법은?

Elastic IP는 무엇인가? 고정 IP라고 생각하면 된다. Elastic IP는 왜 연결해야 하는가? 연결하지 않으면 IP주소가 변경될 수 있기 때문이다. 웹서버라면? 어느날 갑자기 IP 주소가 바뀌어서 접속이 안 되는 상황이 발생할 수 있다. Elastic IP 연결하기 연결방법은 어렵지 않다. 우선 EC2를 만들어야 한다. 이전 글 Q. AWS EC2란? EC2 만들고 .pem 파일로 접속하는 방법은?을 참고하자. EC2 Dashboard 대시보드를 보면 Elastic IPs가 보인다. 그걸 누르자. Allocate Elastic IP address란 버튼이 보인다. 그걸 누른다. Allocate을 누른다! 이제 할당 받았다. 할당 받으면 아래처럼 된다. 해당 주소가 Public IP주소다. 위에..

Q. AWS EC2에 MongoDB 설치하고 외부 접속 가능하게 만드는 방법은?

EC2에 MongoDB를 설치해보자. NoSQL로 유명한 MongoDB 연습삼아 무료로 쓰고 싶다면 일단 t2.micro EC2에 설치해서 써볼 수 있다. 사전 작업 아래 글을 보고 그대로 따라하자. 접속까지는 성공해야 한다. Q. AWS EC2란? EC2 만들고 .pem 파일로 접속하는 방법은? MongoDB 설치 잘 나온 튜토리얼이 있다. Install MongoDB Community Edition 일단 접속한 상태에서 아래 순서대로 실행하자. Ubuntu20.04 기준으로 다른 버전의 경우에는 위 튜토리얼을 보고 참고하자. $ wget -qO - https://www.mongodb.org/static/pgp/server-5.0.asc | sudo apt-key add - $ echo "deb [ a..

Q. AWS EC2란? EC2 만들고 .pem 파일로 접속하는 방법은?

EC2란? 보통 가상서버라고 부르는 그거다. 전체 명칭은 Elastic Compute Cloud이다. Elastic Compute Cloud를 줄여서 ECC -> C가 2개라서 EC2가 된 거 같다. 서울 리전에 인스턴스를 추가하자 서울 리전 EC2 홈으로 가자. instances를 누른다. ec2 인스턴스 새로 추가 launch instances를 누른다. name에 원하는대로 입력한다. 우분투로 설치할 거라 ubuntu-server로 입력했다. free-tier라고 적혀 있는 걸 고르자. 우분투 20.04 LTS를 골랐다. LTS는 Long Term Service의 줄임말이다. LTS가 붙어 있으면 길게 보안 업데이트 등을 해준다. 기존 security group이 없다면 Create security..

Q. 장고 ORM에서 OneToOneField와 ForeignKey에 unique=True를 한 경우 서로 어떤 차이가 있을까?

A. 데이터베이스 상으로는 차이가 없다. 예제 코드는 DRF CRUD 예제 프로젝트를 활용했다. 데이터베이스 설정만 MySQL로 변경했다. 변경한 예는 아래와 같다. DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'test', 'USER': 'root', 'PASSWORD': 'password', 'HOST': '127.0.0.1', 'PORT': '3306', } } 환경은 장고는 3.2.12 파이썬은 3.8 버전이다. ForeignKey 그냥 ForeignKey 모델이다. from django.db import models class Category(models.Model): name = models.CharField..

Q. Python에서 for문을 돌면서 실행하는 코드를 한 줄로 작성할 수 있을까?

A. 가능하다. 변수에 저장하지 않는 코드라면. 이렇게 두 줄인 코드를 for num in range(10): print(num) 아래처럼 한 줄로 적을 수 있다. [print(n) for n in range(10)] 딱히 리스트를 만들 것은 아니지만 [ ]로 감싸주면 실행가능하다! [ ]를 없애면? 당연히 구문syntax 에러가 난다. 함수를 선언해서 할 수도 있다. 아래처럼 하는 것도 가능하다. def print_num(num): print(num) [print_num(n) for n in range(10)] 변수에 할당하는 건 안 된다. 구문 에러가 발생한다. 아래처럼 하고 싶을 수도 있지만 안 된다. sum = 0 [sum += n for n in range(10)] 뭔가 할당하고 저장하기만 하고..

아마존웹서비스AWS와 구글 클라우드Google Cloud 무료 프로그램 비교

아마존웹서비스의 점유율이 높은 건 바로 이 무료 프로그램 덕분인 거 같다. 2022년 7월 3일 기준 아마존웹서비스 프리 티어 전체 보기 자세히 봐야 한다. 언제나 무료가 있고 12개월 무료가 있다. 가장 많이 쓰는 EC2, S3, RDS의 경우 12개월 무료다. EC2 750시간 하루 24시간 * 31일 = 744시간이므로 EC2 하나는 12개월동안 무료로 쓸 수 있다. 12개월 지나자마자 돈이 나가기 시작한다. 계정 만든 날을 꼭 일정관리에 포함시켜 놓을 것! 구글 클라우드는 300$ 90일 무료 체험이다. 구글 클라우드 무료 프로그램 소개 페이지 무료 프로그램 기준 AWS가 훨씬 좋았다. 일단 1년이나 무료로 테스트할 수 있으니. 구글 클라우드 경우 90일은 금방 다가고 300$ 다 쓰기 쉽지 않았..

클라우드 Cloud 2022.07.03

Q. 파이썬에서 객체에 새로운 속성이 임의로 추가되지 않도록 하고 싶다면?

A. pydantic을 사용하면 된다. from pydantic import BaseModel class Person(BaseModel): name: str = '' gender: str = '' if __name__ == '__main__': john = Person() john.age = 23 print(john.age) pydantic을 사용하면 아래처럼 에러가 난다. john.age = 23 File "pydantic/main.py", line 357, in pydantic.main.BaseModel.__setattr__ ValueError: "Person" object has no field "age" 같은 코드에서 pydantic BaseModel만 제거하면 잘 출력된다. 파이썬 객체의 경우 ..

Q. 파이썬으로 개발할 때 타입 힌트type hints를 쓰면 좋은 점은?

A. 개발자 실수로 인한 오류가 확 줄어든다! 파이썬은 동적 타입 언어Dynamically Typed Language 그때 그때 알아서 타입이 바뀌는 걸 동적 타입 언어라고 한다. 정적 타입 언어Statically Typed Language인 C나 자바는 변수를 선언할 때 타입부터 선언해야 한다. 하지만 파이썬은 동적 타입 언어니까 변수를 선언할 때 타입을 선언하지 않는다. message = "Hello World!" print(message) message = 7 print(message) 위처럼 그냥 변수 = 문자열 하면 해당 변수에는 문자열이 담긴다. 그 다음에 숫자를 변수에 저장해도 전혀 문제 없이 잘 작동한다. 웹 개발 때 많이 쓰는 자바스크립트도 동적 타입 언어다. 동적 타입 언어 문제 알아서..

Q. 우분투 서버에 비밀번호 없이 id_rsa 키로 ssh 접속하는 방법은?

A. id_rsa.pub 파일을 열어서 내용을 서버의 authorized_keys에 등록하면 된다. 먼저 id_rsa 키부터 만들자 macOS 맥 사용자거나 리눅스를 쓴다면 터미널을 실행한다. $ ssh-keygen 명령어를 실행한다. 실행하면 아래 이미지처럼 진행된다. passphrase 암호구문을 등록해도 되고 안 해도 된다. 보안을 한단계 더 강화하고 싶다면 암호구문을 등록하자. $ cd .ssh $ ls .ssh 디렉터리가 생겨 있다. 거기 들어가서 ls를 치면 id_rsa, id_rsa.pub 두 파일이 생긴다. id_rsa.pub이 공개키이고 그냥 id_rsa 비밀키이다. 이름 그대로 공개키 암호시스템 중 하나인 RSA 암호화 기법을 쓰고 있는 것이다. RSA 암호화 기법이 궁금하다면 위키를 ..

Q. 코파일럿copilot 쓰면 좋은 점은?

A. 모르는 것 검색할 시간을 아낄 수 있습니다! 코파일럿 신청하고 잊고 지내다가 이제 가능한 것을 알게 되었습니다. 그래서 설치하고 써보는데, 처음에는 자기 멋대로 추천해주니 거슬렸는데, 계속 쓰니 편하네요. 오늘 파이썬 코드를 짜다가 객체의 클래스명을 어떻게 얻지 찾게 되었습니다. 한참 찾다가, 이거 혹시 자동으로 되나 싶어서 한번 쳐봤습니다. 아래처럼 대충 영어로 함수명을 만들면 자동으로 코드를 찾아줍니다! 아래는 파이참에서 실행한 예이고, VSCode에서도 잘 됩니다. 탭 키만 누르면 끝! 주석도 적다보면 적당한 표현을 자동으로 만들어줍니다. AI 시대를 맞아서 자동 완성이 진일보한 느낌이 들더군요. 실제 검색해보면 저 자동 완성 코드와 똑같은 코드를 스택오버플로우에서 찾을 수 있었습니다. 이제 ..

frisby.js로 REST API 서버 테스트 하기

frisby.js란? "Frisby makes REST API testing easy, fast, and fun." - frisby.js 소개에서 "Frisby는 REST API 테스트를 쉽고, 빠르고 재미있게 만든다." REST API 테스트용 라이브러리다. 어떤 언어로 되어 있나? 자바스크립트 기반이고, 테스트를 실행하기 위해서 Jest를 사용한다. 테스트 코드 자체가 반복적이기 때문에 엄청 높은 수준의 자바스크립트 지식을 필요로 하지는 않는다. 자바 기반 스프링부트나 파이썬 기반 장고 등 다른 언어로 API 서버를 개발해도 쉽게 frisby.js로 테스트 코드를 짤 수 있다. 언제 사용하는가? API 서버를 테스트할 때 사용한다. Postman 같은 API 테스트 플랫폼과 같은 용도다. 장점은 코드..

PDF를 텍스트로 바꿔주는 pdfminer.six, pypdf2, pdfplumber 비교해보기

여기 2030년 자율주행 서비스 일상화, 미래 모빌리티 선도국가 도약란 국토교통부의 보도자료가 있다. 보도자료는 보통 PDF와 HWP 파일로 공개된다. 이 중 PDF를 텍스트로 변경해보고 싶다. 많이 쓰는 것 중심으로 테스트를 해봤다. pypdf2, pdfminer.six, pdfplumber 3개다. 위 pdf 중 두 번째 쪽은 아래와 같다. 아래 PDF를 텍스트로 변경해봤다. pypdf2 2쪽을 하고 싶었으니 아래처럼 index는 1이 된다. from PyPDF2 import PdfReader FILE_PATH = "220609(석간)_강남에서_자율주행_택시_달린다(첨단자동차과).pdf" INDEX_OF_PAGE = 1 def text_to_txt_file(text, file_name): with o..

"나무를 자를 여섯 시간을 준다면, ..." 당신은 어떻게 할 것인가?

당신은 어떻게 할 것인가? 여기서 주어진 도구는 도끼다. 1. 바로 도끼로 나무를 잘라본다. 2. 도끼로 나무를 어떻게 자르는지 유튜브를 검색한다. 3. 나무 잘 자르는 친구한테 물어본다. 등 방법이 있을 거 같다. 링컨은 이렇게 말했다고 한다. "나에게 나무를 자를 여섯 시간을 준다면, 나는 먼저 네 시간을 도끼를 날카롭게 하는 데에 쓰겠다." "Give me six hours to chop down a tree and I will spend the first four sharpening the axe." 출처: 위키인용집 링컨 링컨이 진짜로 말했는지 찾아보려고 했는데 찾아도 잘 나오지는 않는다. 링컨이 말했다고 믿자. 링컨은 나무 좀 잘라본 거 같다. 일단 친구를 찾거나 하지는 않았다. 일단 자르는 ..

왜 성장한 기업에 초창기 멤버는 안 남아 있을까?

가장 큰 원인은 기업의 성장 속도를 초창기 멤버가 쫓아가지 못하기 때문이다. 초기 스타트업 상황 초기 스타트업은 사람 구하기가 어렵다. 워낙 사람 구하기가 어렵다보니 대표가 원하는 수준의 인재를 구할 수 없다. 그래서 좀 미흡하더라도 채용을 하게 된다. 당신이 구직 중일 때 직원 5명도 안 되는 회사에 가고 싶은지 생각해보라. 이제 갓 대학을 졸업한 신입 입장에서는 배울 게 없는 곳, 체계가 안 잡힌 곳으로 느껴질 것이고, 경력직 입장에서는 내가 모든 걸 다 책임져야 하는 곳으로 느껴질 것이다. 그렇게 작은 회사임에도 미래가 밝지도 않은데 입사를 결정한 경우에는 거기 말고 다른데가 모두 떨어졌거나 당장 돈이 급하거나 등 사정이 있기 때문일 것이다. 성장, 투자 초창기 멤버들이 의기투합하고 시장 상황이 나..

나보다 더 개발을 잘 하는 친구가 입사했다면 어떻게 대할까?

나보다 더 개발을 잘 하는 친구의 의미 내가 다니고 있는 기업이 성장하고 있다는 뜻이다. 능력 있는 친구들은 미래가 밝지 않은 기업에 굳이 지원하지 않는다. 잠시 들어왔다가 금방 나간다. 능력 있는 친구를 원하는 기업은 많으니까. 나보다 잘 하는 친구는 나한테 좋은 일일까? 안 좋은 일일까? 기존에 사내에서 대우와 인정을 받았다면 안 좋은 일일 수도 있다. 이제 그 자리를 넘겨 줘야 하니까. 사람의 능력은 숨기기 어렵다. 특히 개발은 더더욱. 개발 능력의 차이는 너무나 쉽게 드러난다. 여기서 선택의 기로에 서게 된다. 선택1. 나보다 잘 하는 친구를 돕지 않기 그 친구한테 정보를 안 알려주는 거다. 알려줘서 쉽게 할 수 있는 것도 일부러 돌아가게 만드는 거다. 그럼 그 친구는 개발 능력은 뛰어 나지만 상..

잡담은 권장할만한 일일까? 권장할만하다면 그 이유는?

내 느낌인지 모르겠지만 보통 CEO, CTO, COO 등 C레벨은 기업 내 구성원인 직원들의 잡담을 그렇게 좋아하지 않는 거 같다. 하라는 일은 안 하고 쓸데없는 이야기나 한다고 생각하기 쉬운 거 같다. 잡담은 권장할만한 일일까? 권장하는 수준을 넘어서 꼭 필요한 일이다. 잡담이 없는 회사라면? 정말 일만 하는 회사라면 역설적으로 일이 잘 안 되는 현상이 발생한다. 잡담은 윤활유 기업을 자동차라고 친다면 잡담은 윤활유 같은 기능을 한다. 각 부속(서로 다른 팀)끼리 마찰을 줄여주고 더 부드럽게 나갈 수 있게 해준다. 밥도 먹고, 별 거 아닌 얘기도 잡담 시간에 한다면 서로 오해할 일도 줄어든다. 자주 안 만날수록 오해가 생기기 쉽다. 또 서로에 대해서 어느 정도 알고 친해져야 서로 쉽게 의견도 낼 수 있..

Q. 아나콘다 설치 없이 주피터 노트북 실행시키는 방법은?

A. pip install notebook으로 설치, jupyter notebook 실행하면 된다. 주피터 노트북만 필요하다면 굳이 아나콘다까지 설치할 필요가 없다. 맥의 경우에는 아래처럼 하면 된다. $ mkdir notebook $ cd notebook $ python3 -m venv venv $ source ./venv/bin/activate $ pip install notebook $ jupyter notebook 위 예시는 가상환경 만드는 것부터 적어본 것이고, 그냥 pip install notebook부터 해도 된다. 주피터 노트북이 잘 실행되는 걸 볼 수 있다. 노트북 화면이 보인다. 실행해보자. 정상적으로 뜨는 것을 볼 수 있다. 이렇게 했을 때 장점은 각 프로젝트마다 팩키지 관리를 할 수..

Q. 파이썬에서 데이터를 객체로 맵핑하는 방법은?

A. 여러가지 방법으로 가능하다. 기본 __init__을 활용할 수도 있고, dataclasses, pydantic 등을 활용해서 할 수도 있다. 데이터를 받아서 데이터 모델 클래스의 객체object로 맵핑mapping하는 경우는 정말 많이 필요하다. 그렇지 않으면 일일이 변수로 만들거나 딕셔너리로 접근해야 하는데 너무 번거롭기 때문이다. 데이터를 객체로 만들어주는 팩키지나 라이브러리를 보통 객체 맵퍼 Object Mapper라고 부른다. 예를 들면 자바의 Jackson 같은 경우다. 파이썬에서는 어떻게 객체 맵핑을 할 수 있을까. 1. 가장 기본적인 방법 __init__ 을 활용하는 방법이다. class User: def __init__(self, name, phone, birthday): self.n..

손흥민존, 나에게는 OOO존이 있을까?

축구선수 손흥민한테는 손흥민존이 있다. 그 존은 손흥민이 아버지 손웅정과 훈련을 통해서 만들어낸 존이다. 손흥민 존은 바로 여기다. 페널티 박스 양쪽 코너 지역. 손흥민존은 어떤 영역일까수비수 입장에서 굉장히 애매한 위치다. 골대와 가깝지 않으니 슛을 하라고 놔둬도 실점 가능성이 낮은 지역이다. 달려가서 막을 경우 상대 공격수가 자신을 제칠 경우 바로 실점 가능성이 굉장히 높아지는 지역이다. 적극적으로 다가가서 압박 수비를 하기에는 애매하다. 따라서 수비수와 공격수 사이에는 공간이 생긴다. 다른 지역보다는 공간이 꽤 생기니 공격수 입장에서는 자신의 리듬대로 슛을 하기 좋다. 하지만 골대까지 멀어 득점 가능성이 굉장히 낮다. 골키퍼 입장에서는 애매한 구역일 수 있다. 공격수가 슛을 하지만 골대 안까지 정확..

SI(System Integration)란? SI업체란?

SI란? SI를 찾아보면 시스템 통합이라고 나온다. 아래는 위키백과 설명이다. "시스템 통합(system integration)은 사용자들의 요구에 따라 하드웨어·소프트웨어·네트워크 등 유형의 제품과 컨설팅·시스템 설계 및 유지보수 등 무형 서비스 기술을 통합, 의뢰자의 전산 및 경영환경에 맞는 종합전산해결책을 제공하는 전문정보처리 시스템 사업을 말한다." SI업체란? 그렇다면 SI업체는 무엇을 뜻할까? 기업체의 요구에 따라 소프트웨어 제품을 납품하는 업체라고 보면 된다. 잡코리아에 나온 SI 설명을 살펴보자. "SI는 요약하자면 ‘시스템을 구축하는 업무’라고 정리할 수 있습니다. 과거에는 전산시스템을 구축할 때 기업에서 자체적으로 시스템을 구축했습니다. 하지만 전산시스템이 복잡해지고 전문성이 필요해짐에..

기타 Etcs 2022.06.01
반응형