제가 자주 쓰는 단축키입니다.

파일 찾기: Ctrl + P, CMD + P(mac)

기능 찾기: Ctrl + Shift + P, CMD + Shift + P

터미널 열기 닫기: Ctrl + `

단어 검색하기: Ctrl + Shift + F, CMD + Shift + F

설정: Ctrl + ,(comma), CMD + ,

 

그리고, 설정에서 Auto Save는 afterDelay로 꼭 챙깁니다.

Auto Save

VS Code Cheet sheet 

https://code.visualstudio.com/shortcuts/keyboard-shortcuts-windows.pdf

파일입니다.

1. 언어, 프레임워크로 원하는 기능의 코드를 요청

2. 현재 있는 코드를 붙여 놓고, 취약점 또는 리팩터링 요청

3. 쉽지 않지만, 현재 코드에 대한 테스트 케이스 요청

engine

image from: https://civitai.com/images/1078270?modelVersionId=92021&prioritizedUserIds=1340464&period=AllTime&sort=Most+Reactions&limit=20 

 

제가 쫌 거시기 하는 O* 데이터베이스의 HR을 보면서 재밌는 장면이 나왔습니다.

Employees 테이블은 Departments 를 참조하고 있고, Departments 테이블은 Employees의 Manager_id를 Foreign Key로 잡고 있습니다.

툴을 통한 DDL을 보면 이렇게 나옵니다.

  CREATE TABLE "DEPARTMENTS" 
   (        "DEPARTMENT_ID" NUMBER(4,0), 
        "DEPARTMENT_NAME" VARCHAR2(30) CONSTRAINT "DEPT_NAME_NN" NOT NULL ENABLE, 
        "MANAGER_ID" NUMBER(6,0), 
        "LOCATION_ID" NUMBER(4,0), 
         CONSTRAINT "DEPT_ID_PK" PRIMARY KEY ("DEPARTMENT_ID") ENABLE, 
         CONSTRAINT "DEPT_LOC_FK" FOREIGN KEY ("LOCATION_ID")
          REFERENCES "LOCATIONS" ("LOCATION_ID") ENABLE,
         CONSTRAINT "DEPT_MGR_FK" FOREIGN KEY ("MANAGER_ID")
          REFERENCES "EMPLOYEES" ("MANAGER_ID") ENABLE
   );
  
  
  CREATE TABLE "EMPLOYEES" 
   (        "EMPLOYEE_ID" NUMBER(6,0), 
        "FIRST_NAME" VARCHAR2(20), 
        "LAST_NAME" VARCHAR2(25) CONSTRAINT "EMP_LAST_NAME_NN" NOT NULL ENABLE, 
        "EMAIL" VARCHAR2(25) CONSTRAINT "EMP_EMAIL_NN" NOT NULL ENABLE, 
        "PHONE_NUMBER" VARCHAR2(20), 
        "HIRE_DATE" DATE CONSTRAINT "EMP_HIRE_DATE_NN" NOT NULL ENABLE, 
        "JOB_ID" VARCHAR2(10) CONSTRAINT "EMP_JOB_NN" NOT NULL ENABLE, 
        "SALARY" NUMBER(8,2), 
        "COMMISSION_PCT" NUMBER(2,2), 
        "MANAGER_ID" NUMBER(6,0), 
        "DEPARTMENT_ID" NUMBER(4,0), 
         CONSTRAINT "EMP_SALARY_MIN" CHECK (salary > 0) ENABLE, 
         CONSTRAINT "EMP_EMAIL_UK" UNIQUE ("EMAIL") ENABLE, 
         CONSTRAINT "EMP_EMP_ID_PK" PRIMARY KEY ("EMPLOYEE_ID") ENABLE, 
         CONSTRAINT "EMP_DEPT_FK" FOREIGN KEY ("DEPARTMENT_ID")
          REFERENCES "DEPARTMENTS" ("DEPARTMENT_ID") ENABLE,
         CONSTRAINT "EMP_MANAGER_FK" FOREIGN KEY ("MANAGER_ID")
          REFERENCES "EMPLOYEES" ("EMPLOYEE_ID") ENABLE
   );

이럴 때는 Departments의 Employees 참조를 빼고, 생성한 다음, Alter로 Foreign Key를 연결하면 가능합니다.

  CREATE TABLE "DEPARTMENTS" 
   (        "DEPARTMENT_ID" NUMBER(4,0), 
        "DEPARTMENT_NAME" VARCHAR2(30) CONSTRAINT "DEPT_NAME_NN" NOT NULL ENABLE, 
        "MANAGER_ID" NUMBER(6,0), 
        "LOCATION_ID" NUMBER(4,0), 
         CONSTRAINT "DEPT_ID_PK" PRIMARY KEY ("DEPARTMENT_ID") ENABLE, 
         CONSTRAINT "DEPT_LOC_FK" FOREIGN KEY ("LOCATION_ID")
          REFERENCES "LOCATIONS" ("LOCATION_ID") ENABLE
   );
  
  
  CREATE TABLE "EMPLOYEES" 
   (        "EMPLOYEE_ID" NUMBER(6,0), 
...   );
   
  ALTER TABLE "DEPARTMENTS" ADD CONSTRAINT "DEPT_MGR_FK" FOREIGN KEY ("MANAGER_ID") REFERENCES "EMPLOYEES" ("EMPLOYEE_ID") ENABLE;

고마워요. 동인 아저씨 😀👍

배움이란 해당 주제에 대해 내가 모르는 게 얼마나 많은 지 알게 될 때, 배움의 가치가 있다고 들었습니다.

아는 것: 그런 존재가 있다고 아는 상태입니다. 내 삶과 연관이 없어서 경험이 쉽지 않은 존재입니다.

경험해 본 것: 회사일 또는 동호회, 스터디 때문에 어쩔 수 없이 경험해 본 기술입니다. 물론 회사를 바꾸거나, 그 일을 떠나면 5년 뒤에는 아는 것으로 수렴할 것입니다.

손에 붙은 것: 지겨울 정도로 10년정도 했었기 때문에, 머리는 가만 있어도 손(꾸락)이 기억하는 그런 일입니다. `인이 배겼다` 라고 표현하기도 합니다. SES, 핑클이 98년도에 아이돌로 활동했는데, 20년이 넘게 지난 뒤에도 안무를 몸이 기억하는 수준입니다.

 

코딩은 머리로 하는 게 아니라고 생각합니다. 그냥 부단한 연습, 실습, 도닦는 것과 같은 일이 코딩이라고 개인적으로 여깁니다. 손(꾸락) 근육에 자리가 잡혀야 퀄리티가 좋은 코드가 만들어진다는 위험한 생각도 해봅니다.

구글링과 AI로 코딩하는 시대이지만, 그걸 자신의 것으로 만드는 것은 다른 얘기일 것입니다. 마치 유튜브에서 근육 키우는 영상을 보고, 방법을 아는 것과 그것을 단련해서 자신의 근육으로 만드는 게 다른 얘기인 것처럼 말이죠.

근육

image from: https://www.hidoc.co.kr/healthstory/news/C0000472307

AL2003이 나오면서 또 리눅스의 세대가 바뀌고 있다고 느껴졌습니다.

MariaDB 설치가 이렇게 바뀌었습니다.

before:

 

 

after:

 

여튼 코드는 짧을수록 좋습니다.

저는 전자공학과를 나왔지만, OSI 7계층은 정말 힘든 7겹입니다.
저는 5겹살까지는 먹어봤습니다. 😅

OSI가 뭐의 약자인지도 모르고 그냥 OSI 7 Layer 단어만 얘기했거든요. 물론 7층의 맨 위는 Application Layer 는 정확히 기억하고 있습니다.

OSI (Open Systems Interconnection) 이라고 검색이 되서 다행입니다. `열린 시스템들의 상호연결`이라고 해석됩니다. 랜선을 통한 컴퓨터의 연결로 이해하셔도 될 것입니다.

그럼 오늘 공유하고 싶은 것을 소개합니다. 아침에 메일 받고 너무 인상적으로 잘 표현했기 때문입니다.

OSI 7 Layer APSTNDP

그리고, 물리적(Physical)으로 표현한 것입니다.

여기서 MAC는 애플의 맥이 아니고 Media Access Control address (MAC address)를 의미합니다.

`애플리케이션 계층Application Layer

애플리케이션 계층은 최종 사용자에게 가장 가깝습니다. 대부분의 응용 프로그램은 이 계층에 상주합니다. 데이터 전송 세부 사항을 이해할 필요 없이 백엔드 서버에서 데이터를 요청합니다. 이 계층의 프로토콜에는 HTTP, SMTP, FTP, DNS 등이 포함됩니다. 나중에 다룰 것입니다.The application layer is the closest to the end users. Most applications reside in this layer. We request data from a backend server without needing to understand data transmission specifics. Protocols in this layer include HTTP, SMTP, FTP, DNS, etc. We will cover them later.

프레젠테이션 계층Presentation Layer

이 계층은 데이터 인코딩, 암호화 및 압축을 처리하여 애플리케이션 계층을 위한 데이터를 준비합니다. 예를 들어 HTTPS는 클라이언트와 서버 간의 보안 통신을 위해 TLS(Transport Layer Security)를 활용합니다. This layer handles data encoding, encryption, and compression, preparing data for the application layer. For example, HTTPS leverages TLS (Transport Layer Security) for secure communications between clients and servers. 

세션 계층Session Layer

이 계층은 두 장치 간의 통신을 열고 닫습니다. 데이터 크기가 크면 처음부터 다시 보내지 않도록 세션 계층에서 체크포인트를 설정합니다.This layer opens and closes the communications between two devices. If the data size is large, the session layer sets a checkpoint to avoid resending from the beginning.

전송 계층Transport Layer

이 계층은 두 장치 간의 종단 간 통신을 처리합니다. 발신자 측에서 데이터를 세그먼트로 나누고 수신자 측에서 재조립합니다. 혼잡을 방지하기 위해 이 계층에 흐름 제어가 있습니다. 이 계층의 주요 프로토콜은 TCP와 UDP이며 나중에 설명하겠습니다.This layer handles end-to-end communication between the two devices. It breaks data into segments at the sender’s side and reassembles them at the receiver’s. There is flow control in this layer to prevent congestion. Key protocols in this layer are TCP and UDP, which we’ll discuss later.

네트워크 계층Network Layer

이 계층은 서로 다른 네트워크 간의 데이터 전송을 가능하게 합니다. 또한 세그먼트 또는 데이터그램을 더 작은 패킷으로 분해하고 IP 주소를 사용하여 최종 목적지까지의 최적 경로를 찾습니다. 이 프로세스를 라우팅이라고 합니다.This layer enables data transfer between different networks. It further breaks down segments or datagrams into smaller packets and finds the optimal route to the final destination using IP addresses. This process is known as routing.

데이터 링크 계층Data Link Layer

이 계층은 동일한 네트워크에 있는 장치 간의 데이터 전송을 허용합니다. 패킷은 로컬 영역 네트워크에 국한된 프레임으로 나뉩니다. This layer allows data transfer between devices on the same network. Packets are broken down into frames, which are confined to a local area network. 

물리적 계층Physical Layer

이 계층은 케이블과 스위치를 통해 비트스트림을 전송하여 장치 간의 물리적 연결과 밀접하게 연결됩니다.This layer sends bitstreams over cables and switches, making it closely associated with the physical connection between devices.

OSI 모델에 비해 TCP/IP 모델은 4계층만 있습니다. 레이어를 논의할 때 컨텍스트를 지정하는 것이 중요합니다.Compared to the OSI model, the TCP/IP model only has 4 layers. When discussing layers, it’s important to specify the context.

이제 각 계층의 책임을 이해했으므로 다음 다이어그램을 사용하여 데이터 전송 프로세스를 요약해 보겠습니다. 이를 캡슐화 및 캡슐화 해제라고 합니다. 캡슐화에는 데이터가 목적지를 향해 이동할 때 데이터에 헤더를 추가하는 작업이 포함됩니다. 캡슐화 해제는 이러한 헤더를 제거하여 원본 데이터를 검색합니다.Now that we understand the responsibilities of each layer, let’s summarize the data transfer process using the following diagram. This is called encapsulation and decapsulation. Encapsulation involves adding headers to the data as it travels towards its destination. Decapsulation removes these headers to retrieve the original data.

`

너무 잘 정리된 내용인데, 더 깊이 보려면 유료구독이 필요합니다. 저는 무료 구독자이지만, 너무 괜찮아서 공유합니다.

https://blog.bytebytego.com/p/network-protocols-run-the-internet

 

Network Protocols Run the Internet

In distributed systems, data is sent over the network using various network protocols. As an application developer, this often seems like a block box until an issue arises. In this issue, we’ll explain how common network protocols work, where they are us

blog.bytebytego.com

 

좋은 주말 되시길 바랍니다.

all image captured from: https://www.draw.io 

 

Flowchart Maker & Online Diagram Software

Flowchart Maker and Online Diagram Software draw.io is free online diagram software. You can use it as a flowchart maker, network diagram software, to create UML online, as an ER diagram tool, to design database schema, to build BPMN online, as a circuit d

app.diagrams.net

Untitled Relation
Mandatory Participation (0:1)
Mandatory Participation (0:N)
Mandatory Participation (M:N)
Optional Participation (0:1)
Optional Participation (0:N)
Optional Participation (M:N)
Recursive Relationship (0:1)
Recursive Relationship (0:N)
Recursive Relationship (M:N)
0 to Many Optional
1 to Many
1 to 1
1
0 to 1
Many
Many to Many
1 Optional to Many Optional
1 Mandatory to Many Optional
1 Mandatory to 1 Optional
1 Mandatory to Many Mandatory
1 Optional to Many Mandatory
Many Mandatory to Many Mandatory
Many Optional to Many Mandatory
Many Optional to Many Optional

 

example: https://app.diagrams.net/#G1X_L7ekPnlbn-eyTuAA86J2DoSuhPz1Aj

오픈 소스에 대한 오해와 진실은 다음과 같습니다:

  1. 오해: 오픈 소스 소프트웨어는 무료로만 이용할 수 있다. 진실: 오픈 소스 소프트웨어는 주로 무료로 이용할 수 있지만, 이는 "무료"라는 개념을 가진 것은 아닙니다. 오픈 소스 소프트웨어의 라이선스는 대부분 자유롭고 수정 가능하며 재배포 가능한 조건을 가지고 있지만, 상업적 이용이나 수정한 버전의 판매에 대해서는 추가 요구사항이 있을 수 있습니다.
  2. 오해: 오픈 소스 소프트웨어는 품질이 낮다. 진실: 오픈 소스 소프트웨어는 수많은 개발자 및 사용자의 협력과 검토를 거쳐 개발되기 때문에 품질이 매우 높을 수 있습니다. 많은 오픈 소스 프로젝트는 전 세계적으로 대규모로 개발되고 유지보수되며, 많은 사용자가 버그를 찾아내고 수정하거나 보안 취약점을 보완합니다. 오픈 소스 소프트웨어는 공동체의 지원과 풍부한 테스트를 통해 안정성과 신뢰성을 확보할 수 있습니다.
  3. 오해: 오픈 소스 소프트웨어는 보안에 취약하다. 진실: 오픈 소스 소프트웨어는 일반적으로 많은 개발자와 보안 전문가들에 의해 검토되기 때문에 보안 취약점이 빠르게 발견되고 수정될 수 있습니다. 또한, 오픈 소스 소프트웨어는 투명성을 가지고 있어 누구나 코드를 검토하고 보완할 수 있으므로, 악의적인 코드나 보안 취약점이 숨겨진 경우가 적습니다. 그러나, 오픈 소스 소프트웨어 역시 보안 취약점이 있을 수 있으며, 이를 해결하기 위해서는 업데이트와 보안 패치를 지속적으로 적용해야 합니다.
  4. 오해: 오픈 소스 소프트웨어는 개발자에게 이익이 없다. 진실: 오픈 소스 소프트웨어를 개발하는 개발자들은 자신의 기술력을 향상시키고 다른 사람과의 협력을 통해 더 좋은 소프트웨어를 만들기 위해 기여합니다. 또한, 오픈 소스 소프트웨어는 개발자에게 다양한 경제적 이익을 제공할 수 있습니다. 예를 들어, 개발자는 오픈 소스 소프트웨어에 기여하여 자신의 프로젝트에 대한 노출을 얻을 수 있고, 상업적인 지원, 컨설팅, 서비스 제공 등의 비즈니스 모델을 구축할 수 있습니다.
  5. 오해: 오픈 소스 소프트웨어는 모든 종류의 소프트웨어에 적합하다. 진실: 오픈 소스 소프트웨어는 모든 종류의 소프트웨어에 적합하지는 않을 수 있습니다. 일부 상용 소프트웨어는 공개되지 않은 알고리즘, 특정 기능, 또는 소유권 보호 등의 이유로 오픈 소스로 제공되지 않을 수 있습니다. 또한, 기업이 자체적으로 개발한 소프트웨어의 경우에는 오픈 소스로 공개하지 않을 수 있습니다.

이러한 오해와 진실을 고려하여, 오픈 소스 소프트웨어는 현대 소프트웨어 개발과 사용에 있어서 중요한 역할을 수행하고 있으며, 다양한 장단점을 가지고 있습니다.

느낌 아시는 분들은 아시겠지만, 위에는 ai.com 이 답변한 것입니다. 오픈 소스에 대한 생각을 AI가 잘 정리해 놓아서 저도 놀랐습니다.

그리고, 오픈 소스에 참여하는 방법은 어렵지 않습니다.

자기가 짠 코드를 무.조.건. 오픈하라는 것은 아닙니다. 개인적인 의견은 `오픈 소스 프로젝트`에 참여를 권장합니다. 좋은 오픈 소스를 사용하고 피드백하는 것은 매우 도움이 되기 때문입니다.

hadoop (https://hadoop.apache.org) 이전에는 or*cle 세상이었는데, 오픈 소스 hadoop이 RDBMS의 전횡을 바꿀 수 있었다고 생각합니다.

M$도 스티브 발머 이후 사티아 나델라 이후에 오픈 소스로 완전히 돌아서기도 했고, 지금도 계속되고 있습니다.

물론 국가기밀이나 회사의 영업 비밀은 오픈하면 안 됩니다. 인터넷에 오픈할 게 있고, 하지 말아야 하는 것은 존재합니다.

 

오픈 소스에 관한 퀴즈 하나입니다.

오늘 발표한 자료 공개합니다.

https://bit.ly/egovcontrib

 

인프런 CI/CD 강의 관련한 내용입니다.

우선 급하게 공유합니다.

올해 2023/03/15에Amazon Linux 2023 (AL2023)이 나온 이후로 nginx와 HTTPS 설정의 명령이 바뀌었습니다.

Amazon Linux 2 (AL2)에 있던amazon-linux-extras명령은 삭제되었기 때문에 nginx 설치는 다음과 같이 바뀝니다.

# sudo amazon-linux-extras install nginx1 #AL2
sudo yum install nginx

그리고 가장 변화가 많은 부분은 다음입니다.

04. 도메인 등록과 HTTPS 설정일부

pip기준으로 certbot 설치가 가능합니다.

# Amazon Linux 2023
sudo su -
dnf install python3 augeas-libs
dnf remove certbot
python3 -m venv /opt/certbot/
/opt/certbot/bin/pip install --upgrade pip
/opt/certbot/bin/pip install certbot certbot-nginx
ln -s /opt/certbot/bin/certbot /usr/bin/certbot

certbot --nginx
systemctl restart nginx

 

기존Amazon Linux 2 (AL2)는 다음과 같습니다.

# Amazon Linux 2
sudo su -
yum -y install yum-utils
yum-config-manager --enable rhui-REGION-rhel-server-extras rhui-REGION-rhel-server-optional
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum install certbot python2-certbot-nginx

certbot --nginx
systemctl restart nginx

도움이 되기를 바랍니다. 🙏

참고

 

Amazon Linux 2023이 GA되었습니다! | DevelopersIO

2023/03/15에 GA된 Amazon Linux 2023에 대한 소개와 기존의 Amazon Linux 2와 차이점에 대한 블로그입니다.

dev.classmethod.jp

* https://www.omglinux.com/amazon-linux-2023-released/

 

Amazon Linux 2023 is a Cloud-Optimized Linux Distro - OMG! Linux

Amazon this week announced the release of Amazon Linux 2023, the latest version of its homegrown Linux distribution for cloud workloads. Amazon Linux is a

www.omglinux.com

 

+ Recent posts