COMPUTER SCIENCE 6

오픈소스에 기여하는 법/ Github, Pull Request? Fork?

오픈소스에 기여하는 방법 중 하나는 GitHub를 통해 Pull Request를 보내는 것이다. 이를 위해서는 다음과 같은 절차를 따른다. 절차 1. 해당 오픈소스 프로젝트의 GitHub 저장소를 Fork. 이를 통해 자신의 GitHub 계정으로 해당 프로젝트의 코드를 가져올 수 있다. 2. Fork한 저장소를 로컬 컴퓨터로 Clone. 3. 로컬에서 코드를 수정하고, 변경사항을 Commit. 4. Fork한 원래 저장소와 동기화하기 위해 원래 저장소를 Remote로 추가. git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git 5. Fork한 원래 저장소의 변경사항을 가져오고, 자신의 Fork 저장소와 Merge..

COMPUTER SCIENCE 2023.05.01

CS / 정규표현식 정리

정규표현식 : REGEX (REGular EXpression) 거의 대부분의 프로그래밍 언어에서 지원하는 정규표현식은 custom하게 원하는 string의 정보를 추출하는 데 탁월한 능력을 보입니다. 정규 표현식에서 사용하는 Meta characters에는 다음과 같은 것들이 있습니다. . ^ $ * + ? { } [ ] \ | ( ) 정규표현식은 이런저런 정리를 보는 것보다 Cheatsheet를 보고 직접 예제를 작성해가며 배우는 것이 효과적이라고 생각합니다. (일단 복잡해지면 뭔 소린지 이해가 어려움, 사람마다 문제를 접근하는 방식이 다 다르기 때문) 정규표현식을 직접 실험해 볼 수 있는 사이트가 있습니다. Expression Flag를 지정할 수 있으며, References도 잘 나와있기 때문에 해..

COMPUTER SCIENCE 2022.09.02

Container 개념 및 Docker

Container(컨테이너) : 어떤 환경에서나 실행하기 위해 필요한 모든 요소를 포함하는 소프트웨어 패키지 컨테이너는 운영체제를 가상화하여 프라이빗 데이터 센터에서 퍼블릭 클라우드 또는 개발자 로컬 환경에 이르기 까지 어디서나 실행됩니다. 컨테이너화를 통해 신속한 작업, 효율적인 소프트웨어 배포가 가능합니다. 좀 더 깊게 개념적으로 접근하면, 컨테이너는 운영체제 수준에서 CPU, 메모리, 스토리지, 네트워크 리소스를 쉽게 공유할 수 있게 해주며 컨테이너가 실제로 실행되는 환경에서 애플리케이션을 추상화할 수 있는 논리 패키징 메커니즘을 제공합니다. 이점 책임 분리 개발자는 로직과 항목 종속에만 집중할 수 있고, 운영팀은 특정 소프트웨어 세부 요소 대신 배포 및 관리에에 집중할 수 있습니다. 워크로드 이동..

COMPUTER SCIENCE 2022.08.08

CS / 객체지향(Object Oriented)의 특징 4가지

객체지향언어 : Object Oriented Language (OOL) 객체 지향 프로그래밍은 컴퓨터 프로그래밍의 패러다임 중 하나입니다. "객체" 들의 모임으로 프로그램을 파악하고자 하는 관점인데, 이 때 각각의 객체는 메세지를 주고받고 데이터를 처리합니다. 객체 지향 프로그래밍의 특징으로는 프로그램을 유연하게 만들 수 있다. 변경을 쉽게 만들 수 있다. 개발과 보수가 간편하다 직관적인 코드 분석이 가능하다 등이 있습니다. 소프트웨어 공학의 관점에서 볼 때 소프트웨어의 질을 향상하기 위해선 강한 응집력(Strong Cohesion)과 약한 결합력(Weak Coupling)을 지향해야합니다. 객체 지향 프로그래밍(OOP)의 경우 하나의 문제 해결을 위한 데이터를 클래스에 모아 놓은 데이터형을 사용함으로써..

COMPUTER SCIENCE 2022.08.07

GITHUB License / open source repository 라이센스 차이

오픈소스의 사용 목적 및 용도에 따라 라이센스를 확인하고 사용할 필요가 있습니다. 오픈소스에 해당하는 라이센스의 최소한의 정의를 위해 OSD(Open Source Definition)을 정해두고 이에 따라 인증, 관리를 하고 있다고 합니다. 우리가 주로 접하게 될 라이센스의 종류에는 무엇이 있고 어떤 특징과 차이점이 있는지 알아보겠습니다. GNU General Public License(GPL) 2.0 GPL 이라고 불리는 해당 라이센스는 가장 많은 오픈소스가 채택하고 있는 라이센스입니다. 지켜야 할 의무사항이 다른 라이센스와 비교했을 때 비교적 엄격한 편에 속합니다. 소프트웨어를 해당 라이센스를 사용해서 배포할 경우 GPL에 의해 배포된다고 명시해야합니다. 소프트웨어를 수정하거나 새로운 소프트웨어를 병..

COMPUTER SCIENCE 2022.08.07

Network / HTTP vs HTTPS 개념 차이

HTTP : Hyper Text Transfer Protocol - 서버 / 클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜 인터넷에서 Hyper Text 를 서로 주고 받기 위한 통신 규약으로 80번 포트를 사용하고 있다. (default port:80) application 레벨의 프로토콜로 TCP/IP 위에서 작동한다. 또한 Stateless 프로토콜이며 Method, Path, Version, Headers, Body 등으로 구성된다. HTTP 는 암호화 되지 않은 평문 데이터를 전송하는 프로토콜인데, 개인정보나 암호 등을 주고 받는 과정에서 leak 문제가 생길 수 있다는 점이 대두되며 이를 해결하기 위해 암호화-복호화 기능이 추가된 HTTPS가 등장하게 되었다. HTTPS : Hype..