MySQL(MariaDB) 접속

> mysql -u root -p

데이터베이스(Database) 확인

mysql> show databases;

데이터베이스(Database) 생성

mysql> create database 데이터베이스이름;

 

technology

iCalendar 란?

2024. 4. 8. 10:47

 

iCalendar 란?
아이캘린더(iCalendar)는 인터넷 사용자들이 다른 인터넷 사용자들에게 전자 메일을 이용하여 미팅 요청과 할 일을 보내거나 .ics 확장자로 파일들을 공유할 수 있게 해 주는 컴퓨터 파일 형식이다. 아이캘린더 데이터 파일을 받은 사람들은 이메일 클라이언트나 캘린더 프로그램 따위를 이용하여 보낸이에게 쉽게 응답할 수 있고 다른 미팅 일정을 역제안할 수 있다.
[출처] - 위키백과-아이캘린더


Python의 vobject를 이용하여 iCalendar를 만들수 있다. vobject를 이용하여 vCard 역시 파싱할 수 있다.


 

 

연구 개발은 오래 걸리는 일인데
투자자 입장에서는 비전을 확실히 보이지 않으면 기다리기 힘들다
우리나라는 연구개발이 좀 약한 거 같다. 미국처럼 빅 테크 기업이 있는 것도 아니고, 요즘 유행하는 인공지능을 가지고 있는 것도 없고

연구개발의 투자는 짧게는 3, 4년 길면 10년 이상 걸리는 것도 많다. 하지만 우리나라 기업의 임원들은 그 기간을 기다리기 너무 어렵다. 임기도 짧고 바로바로 실적을 보여야 하기 때문일거다.


가상환경 필요한 이유

파이썬에서 간단한 수준으로 연습한다면 가상환경의 필요성을 크게 느끼지는 못한다. 하지만 다음과 같은 이유 때문에 가상환경은 유용하다.

1. 프로젝트를 하고 나서 배포해야할때 이 프로젝트를 위해서 추가로 설치된 패키지들이 무엇인지 구별할 필요가 있다. 여러 개의 프로젝트를 한다면 패키지들이 썩여서 구별하는 것은 여간 어려운 일이 아니다.

2. 시간이 지나면 설치된 패키지들이 업데이트 되는데 패키지들간의 의존하는 것도 있어서 버전을 잘 맞추는 건 불가능 할 수도 았다.

3. 파이썬 자체의 버전도 다르게 사용해야 할때가 있다.

가상환경 사용법

파이썬 3.4부터 기본으로 포함된 venv 패키지를 사용해서 가상환경을 만들 수 있다.
먼저, 가상환경을 만들려면 다음 명령어를 사용한다.
c:/project> python -m venv project_env

가상환경을 활성화 시키기 위해서 다음 명령어를 사용한다. (윈도우즈 기준으로)
C:\project>project_env\scripts\activate
(project_env) C:\project>


가상환경에서 패키지 관리

가상환경에서 설치한 패키지들과 버전을 파일로 저장해 두면 배포할때 유용하다. 명령어는 다음과 같다.
> pip freeze > requirements.txt

저장해둔 파일로 아래 명령어와 같이 실행하면 필요한 패키지와 버전을 한번에 설치할 수 있다.
> pip install -r requirements.txt

 

블록체인이 제대로 작동하기 위해서는 기본적으로 네트워크가 반드시 필요합니다.

블록체인은 피투피 네트워크를 사용합니다. 그 피투피 네트워크의 방식과 개념을 알아보도록 하겠습니다.

우선, 피투피 네트워크를 설명하기 전에, 일반적인 네트워크를 먼저 설명하겠습니다.

인터넷으로 검색하고 메일을 보내고 하는 것을 서비스라고 합니다.

이런 서비스를 제공해 주는 컴퓨터들이 있는 데, 이런 컴퓨터를 써버라고 합니다. 

그리고, 이런 서비스를 요청하기 위해서는 스마트폰이나 노트북 같은 컴퓨터를 사용하게 됩니다.

인터넷 검색을 위해서 검색어를 입력하고, 메일을 써서 보내고 하는 컴퓨터나 스마트폰을 클라이언트하고 합니다.

예를 들어, 인터넷에서 검색을 하는 것은, 클라이언트에 설치되어 있는 크롬 같은 웹브라우저에서 검색어를 입력해서 써버로 보내는 것입니다.

그러면 써버에 설치되어 있는 웹서버가 그 검색어를 받아서 검색한 결과를 클라이언트 쪽으로 보내주게 됩니다.

그러면 클라이언트에서 검색결과를 볼 수 있는 것입니다.

일반적으로, 하나의 서버에 여러대의 클라이언트가 연결됩니다. 수 많은 클라이언트에서 서비스 요청이 들어오게 됩니다.

그래서, 써버는 용량이 크고 빠른 컴퓨터로 만들어야만 합니다.

다음은 피투피 네트워크에 대해서 설명하도록 하겠습니다.

피어라는 것은 써버와 클라이언트 역할을 모두 할 수 있습니다. 

그래서 피어는 서로가 요청을 보내기도 하고 답변을 보내기도 합니다. 

요청을 보낼 때는 클라이언트 역할을, 답변을 보낼 때는 써버 역할을 하는 것입니다.

 

이러한 피어로 구성된 네트워크를 피어 끼리 통신한다는 의미에서 피어 투 피어 네트워크라고 합니다.

피어 투 피어 네트워크를 줄여서 주로 피투피 네트워크라고 합니다. 

피투피 네트워크는 새로운 피어가 추가되는 방식으로 무한하게 네트워크를 확장해 갈 수 있습니다.

피어는 근처의 피어와 연결되고, 다시 그 피어는 다른 피어와 연결되어 전체 네트워크가 형성되는 방식입니다.

피어는 네트워크를 구성하는 요소라는 의미에서 노드라고도 합니다.

피투피 네트워크는 사람들 간의 연결된 모습과 닮았습니다. 

사람이 하나의 피어라고 할 수 있고, 사람들 간에 서로 대화하는 것이, 마치 피어 간에 요청과 답변이 오가는 모습과 비슷하다고 볼 수 있습니다. 

서버와 클라이언트 네트워크는 써버에 서비스가 집중되기 때문에 전체 네트워크를 설계하고 유지하기가 쉬운 편입니다.

그래서 새로운 기능을 추가하거나, 오류를 수정하는 것 같은 관리가 쉽습니다.

하지만 서버에 장애나 문제가 생기면, 네트워크 전체가 중단될 수 있다는 단점이 있습니다.

그에 반해서, 피투피 네트워크는 서버를 준비할 필요가 없습니다. 

각 노드들이 각각 서버 및 클라이언트 역할을 하기 때문에 네트워크 전체의 부담을 분산시켜 줍니다. 

새로운 노드가 추가되더라도 서비스를 유지하기가 쉬워서 확장성이 좋다고 할 수 있겠습니다.

하지만, 새로운 기능을 추가하거나 업데이트를 하려면 모든 노드를 수정해야 하므로 관리가 어려운 편이고, 

네트워크 전송 시간 차이 때문에 노드들 간의 정보가 일치하지 않을 수 있고, 또한 전체 네크워크 속도가 느려지는 현상이 발생할 수 있는 단점도 있습니다.

 

맨 앞에서, 블록체인은 피투피네트워크를 사용한다고 말씀드렸는데요.

 그것은 블록체인이 분산된 장부로 구성되기 때문입니다. 

그리고, 분산된 장부는 하나의 서버에 의존하지 않는 분산된 네트워크를 필요로 하고, 

분산된 네트워크에는 피투피 네트워크 방식이 좀더 보다 적합하다고 하겠습니다.

분산된 장부에 대해서는 다음 동영상에서 설명하도록 하겠습니다.

https://youtu.be/JC5_2gbnrU8 

 

암호화폐의 특징 중에 거래의 익명성이 있다. 이는 거래하는 당사자가 누구인지 알 수 없다는 점이다. 하지만, 일반적인 암호화폐가 완전히 '익명'을 보장하는 것은 아니다.  

암호화폐 거래를 위해서는 주소가 필요한데, 개인정보를 넣지 않더라도 언제든지 새로운 주소를 만들어 사용할 수 있다. 하지만 모든 거래들은 블록체인 탐색기를 통하여 추적이 가능하고, 계속해서 추적하다 보면, 그 주소가 누구의 것인지 추측할 수 있게 된다. 즉, 익명이지만 그 익명이 누구인지를 추측할 수는 있다는 것이다. 

이런 아쉬움을 해소해주는 암호화폐가 있고, 대표적으로 모네로(Monero)와 대쉬(Dash)를 꼽을 수 있다. 

암호화폐의 익명성을 강조하다 보면, 그 익명성을 이용해서, 불법거래에 사용될 수 있다는 우려를 피할 수는 없다. 하지만, 어떤 개인이 얼마나 많은 자산을 가지고 있는 지를 모두에게 알려줄 필요는 없다. 또한, 사업자라면 얼마나 많은 고객과 거래하는 지, 얼마나 수입이 있는 지와 같은 것들은 모두 민감한 내용들이다. 이 모든 것들이 공개되는 것은 개인정보 보호 차원에서 또 다른 우려가 될 것이다. 

암호화폐의 익명성으로, 중앙의 권력에 의해서 모든 개인의 프라이버시가 침해 당하지 않는 세상을 기대해 볼 수 있겠다.