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;

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

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

 

왜 kotlin 이라고 랭귀지 이름을 지었을까요?

요즘은 java보다 kotlin

이런 얘기가 많아서요

kotlin logo

이런 이유라고 합니다.

"The name comes from Kotlin Island, near St. Petersburg. Andrey Breslav mentioned that the team decided to name it after an island, just like Java was named after the Indonesian island of Java (though the programming language Java was perhaps named after the coffee rather than the island)."

from: https://en.wikipedia.org/wiki/Kotlin_(programming_language) 

"이름은 St. Petersburg 근처의 Kotlin Island에서 유래되었습니다. Andrey Breslav는 Java가 인도네시아 Java 섬의 이름을 따서 명명된 것처럼 팀에서 섬의 이름을 따서 이름을 지정하기로 결정했다고 언급했습니다(프로그래밍 언어 Java는 아마도 섬이 아닌 커피 이름을 따서 명명되었을 것임)."

 

섬 이름이 Kopulin 이었으면 재밌었을 것 같습니다.

 

weB LOG, 웹에 기록하는 글이 블로그이기 때문에,

웹에 기록을 남기는 일이 블로깅입니다.

물론 자기만 볼 수도 있지만, 공개 일기에 가깝습니다.

이 블로그를 꾸준히 해서 책을 쓴 분들도 있습니다.

from: http://www.acornpub.co.kr/blog/66

20년 가까이 된 기술이지만, 아직도 유효합니다.

 

제가 좋아하는 블로그 링크 중 2개를 소개합니다.

* http://blog.outsider.ne.kr/

* https://jhrogue.blogspot.com/

 

컴퓨터 vs 책

"컴퓨터와 책에 대한 블로그입니다."

jhrogue.blogspot.com

 

+ Recent posts