Preview 플라스크는 세션관리 및 암호화를 위해 app.secret_key가 필수적으로 필요하다. 프로젝트 진행 후 코드 공유를 위해 깃헙(github.com)에 코드를 올릴 때 민감정보 노출을 막기 위해 .gitignore 설정이 필요하다. 이를 위해 xml로 키를 관리하는 방법과 .gitignore 파일 설정 방법을 정리한다. keys.xml xml파일은 데이터를 키(key)와 값(value)로 구분하여 구조화하여 전달하기 위해 만들어진 문서 형식이다. 메모장으로 열 수 있고 쉽게 편집, 열람이 가능하다. 파일의 첫 줄에 xml 파일임을 알린다. 사용할 키와 값을 입력한다. 여기서는 플라스크의 secret_key와 SQL DB 접속 패스워드를 예시로 한다. PassWord Flask+Secret+..
Preview 많은 포스트들은 언박싱 후기나, 구매기를 많이 다루고 있다. 1년 동안 맥북프로 16인치를 사용해 보면서 Windows나 Unix환경과 비교하여 느낀점들을 정리해본다. 윈도우 환경에서 맥으로 넘어가기를 고민하고 있는 사용자가 있다면 내가 했던 고민과 지금의 사용기를 참고하면 좋을 것이다. 구매 맥북을 구매하기 전 300만원이 넘는 기기를 구매할 때의 망설임을 아직도 잊을 수 없다. 내가 이 기기를 사서 잘 활용할 수 있을까. 대답은 "잘 활용하면 되지" 뿐이었고 당시 다른 누구처럼 디자인을 해야하거나 업무상 꼭 필요해서 구입한 것은 아니었다. 애플은 매 신학기마다 학생할인과 더불어 사은품을 증정하는 이벤트를 한다. 그래서 헤드폰을 사은품으로 받을 수 있었고 중고장터에 잘 거래되어 맥북의 가..
Preview 플라스크는 파이썬에서 소규모 웹 서버를 구동할 수 있게 하는 웹 어플리케이션 프레임워크이다. 스케일에 상관없이 대규모 서버를 구성할 수도 있으며 Jinja와 Werkzeug를 포함한다. 갤러리 구현을 위해 사진 파일은 웹에서 크롤링한 데이터를 사용했으며 html, css, js, python을 사용했다. Flask 설치 #Flask 설치 pip install flask 시작하기 from flask import Flask, render_template, url_for app = Flask(__name__) app.config['IMG_FOLDER'] = os.path.join('static', 'images') #이미지 파일의 경로 지정 @app.route('/') def index(): r..
코로나가 심해지면서 사회적 거리두기 정책으로 카페에서 테이크 아웃을 제외한 모든 취식 행위가 금지되었다. 노트북 하나와 카페에서 공부를 즐겨했는데 이젠 그러지 못해서 아쉬워하던 중에 지난 9월 방문했던 카페의 사진들을 보면서 분위기를 추억해보고 싶었다. 이태원에 위치한 코지빌라커피 CozyBilla Coffee 카페를 소개한다. 당시 분위기 좋은 이태원 카페를 찾던 중 한 카페가 눈에 들어왔다. 카페를 찾아서 가진 않지만 분위기가 좋다고 이미 소문이 나있는 카페였고 실제로도 조용하고 아늑한 분위기의 카페이다. 위치는 서울특별시 용산구 이태원1동 이태원로20길 32 영업 시간은 수,목 정오 12시 - 오후 10시 금,토 정오 12시 - 오후 11시 일요일 정오 12시 - 오후 10시 휴무일 매주 월,화 연..
Preview 새로운 게시글 알림 봇, Open API를 이용한 업데이트 등 다양한 기능을 할 수 있는 텔레그램 봇을 여러 개 운영하고 있다. 봇을 더 사용자 친화적으로 사용할 수 있는 방법이 없을까 고민하던 중 메시지마다 경험치를 부여하여 채팅을 할수록 레벨업을 하는 기능을 구현해 보았다. 단체 채팅방에서 사용하면 재미있는 기능이며, 텔레그램 메시지 핸들러 사용을 위한 python과 서버 구축을 위한 MySQL을 통해 구현하였다. [동작환경] Raspberry pi 3+ python 3.8 pip install 일반 알림만을 제공하는 Cron데몬을 사용하는 텔레그램 봇과는 다르게 사용자와 상호 작용을 해야 하기 때문에 코드가 서버 상에서 24시간 동작해야 한다. 메시지 갱신여부, 종류 판단(텍스트인지,..
원격지에서 라즈베리파이의 서버 정보를 가져오기 위한 방법을 소개한다. python으로 작성하며, 원하는 곳으로 데이터를 전송할 수 있다. [동작환경] Raspberrypi 3B+ python 3.8 가져오는 정보는 라즈베리파이 CPU 정보, 메모리 사용량, CPU 온도, 업타임(Uptime)을 가져오도록 했다. import platform from collections import OrderedDict from datetime import timedelta import os class Sysinfo: def __init__(self): self.model_name = None self.result = '' #CPU Info def getinfo(self): cpu_core = 0 with open('/p..
EIGRP(강화 내부 경로 제어 통신) • Cisco사의 IGRP를 기반으로 한 개방형 거리 벡터 라우팅 프로토콜(RFC 7868) • 라우터가 경로 정보를 자동으로 공유하는 동적 라우팅 프로토콜 • 라우터 내 대역폭 및 처리능력의 이용 최적화 • 경로가 변경될 때, 전체 라우팅 테이블을 보내지 않고 토폴로지 변경을 보낸다. • 토폴로지가 변경된 뒤에 일어나는 불안정한 라우팅을 최소화하는데 최적화 • 대역폭, 로드, 지연, 신뢰성, MTU 총 5가지의 메트릭을 사용하여 경로 값 결정 • EIGRP는 라우팅 테이블 및 인접테이블, 토폴로지테이블 총 3개의 테이블을 사용하여 정보를 저장한다. • Unequal Cost 로드밸런싱 지원 RIP이나 OSPF는 메트릭 값이 동일한 최적 경로만 사용해 패킷 경로를 ..
RIP(Routing Information Protocol) 동적 라우팅 - IGP(내부라우팅) - Distance Vector 기반의 RIP 라우팅 프로토콜에 대해 알아본다. • 동적 라우팅 프로토콜 중 경로 결정 방식이 가장 단순함 • 간단한 설정, 모든 라우터에 사용가능 • Metric으로 hop-count 사용 (최대 hop-count 15) RIP v1 • IP주소를 설정할 때 서브넷 마스크 자동 설정 (서브넷팅 사용 불가능) • 라우팅 정보전달에 broadcast 주소 사용 RIP v2 • 같은 클래스안에 있는 네트워크를 서브넷 마스크를 이용하여 구별 • VLSM(Variable Length Subnet Mask) 지원 • 라우팅 정보전달에 Multicast 주소 사용 Distance Vect..
1. 머리말 시프트 레지스터(74HC595)와 7-segemts 모듈을 사용하여 시계를 만드는 과정과 회로, 코드를 소개한다. 2. 사전 연구 시프트 레지스터(shift register)는 데이터를 저장하거나 데이터를 옆으로 이동할 때 사용하는 회로이다. 디지털 시스템에서 시프트 레지스터와 같이 데이터 및 정보를 저장하고 이동하는 기능을 발전시켜 메모리라는 부품이 개발되고 프로세서와 CPU 등이 개발된다. 시프트 레지스터 중 실습에 사용한 74HC595에 대해 데이터 시트를 참고하여 핀번호와 기능에 대해서 알아본다. 1. 74HC595 그림 1은 74HC595의 핀 맵과 로직 다이어그램이다. 시프트 레지스터는 단방향 또는 양방향으로 매 클록마다 한 단씩 이진 정보를 이동시킬 수 있는 레지스터이다. 일련의..
라우팅 프로토콜 구성 1) 라우팅 테이블 패킷을 목적지로 라우팅할 때 참조하는 테이블 목적지 주소, Output I/F, Metric 값 2) Message 라우터 간 라우팅을 위해 교환하는 메시지 이웃 도달 메시지, 라우팅 정보 3) Metric 라우팅 테이블 생성 및 업데이트 시 최적의 경로를 결정 경로길이, 홉(Hop) 수, 대역폭, 비용, 신뢰성 라우팅 프로토콜 중 동적 라우팅 - IGP - Link State Vector - OSPF 프로토콜에 대해 알아보고, 실습해본다. OSPF(Open Shortest Path First) 라우터가 목적지 경로를 SPF(Shortest Path First) 알고리즘을 통해 모든 라우팅 테이블에 기록 “소요비용(Cost)”이 가장 작은 경로를 최적의 경로를 선..