All
270 posts
Node.js Error: Cannot find module /usr/src/app/nodemon 에러 해결

1. 배경 상황 최근 데모 실습을 위해 Codepipeline + CodeCommit + Codebuild로 CI/CD 파이프라인 구축을 하고있는데, Codebuild에서 에러가 어마무시하게 나서 하나씩 정리해두려 한다. 에러는 pkg 모듈로 Node.js(Express 프레임워크) 프로젝트를 빌드하고 도커 이미지로 만드는 과정에서 발생했던 에러였다. 정확한 에러 메시지는 아래와 같았다. 2. 에러 해결 기존 Dockerfile을 다시 살펴보니 서버를 가동시키는 명령어를 nodemon으로 해두었었다. 로컬로 접속 테스트를 했었을 당시에 서버 재부팅이 귀찮아서 모드로 nodemon을 설치해서 사용 중이었는데, 도커파일을 작성할 때에도 습관적으로 nodemon을 사용했었던 것. 해결 방법은 package.json에 nodemon을 포함해주거나, 서버 기동을 위한 명령어를 기본 명령어인 node로 바꿔주는 방법이 있는데, 나는 이미지를 최대한 가볍게 만들고 싶어서 명령어를 기본 명령…

December 16, 2022
devops
OpenAI, ChatGPT란? 간단한 사용후기

1. 배경 상황 아는 분이 한 번 써보라며 링크를 공유해주셔서 써보게 된 플랫폼인 OpenAI. 써보니 생각보다 괜찮아서 기록용으로 블로그에 업데이트 해둔다. 찾아보니 얼마 전 긱뉴스에서도 관련 내용을 업데이트 했었고, 댓글을 보니 다들 성능에 놀라신 눈치. 2. OpenAI, ChatGPT란? OpenAI는 Samuel H. Altman과 Elon Musk(몸이 몇개인걸까 이분은)가 공동 창업한 동명의 회사에서 만든 인공지능 플랫폼으로 딥러닝 시스템을 통해 자기 자신과의 셀프 트레이닝 방식을 채택해 학습되었다. 이 중 내가 사용해본 것은 ChatGPT라는 대화형으로 질의 응답을 할 수 있는 자연스러운 대화를 주고받을 수 있는 언어 모델. 연구 미리보기 기간에는 무료로 제공된다고 해서 바로 사용해 봄. 사용법은 아주 간단하다. https://chat.openai.com/chat 웹사이트에 접속해 로그인 후(Gmail 로그인 가능), 필용을 문장으로 질문을 남기면 된다. 개발 관련된…

December 15, 2022
etc
AWS CodeBuild “EEXIST: file already exists” 에러 해결

1. 배경 상황 node.js(Express.js)프로젝트의 EKS 배포를 위한 CodePipeline CI/CD 구성 중 노드 프로젝트를 불러와서 npm install로 패키지를 설치하는 도중 다음과 같은 경고 메시지가 발생했다. 2. 해결 방법 여기서 중요한 메시지는 라는 메시지. package-lock.json 파일 및 node_modules가 기존에 이미 존재하고 있기 때문에 npm install로 새로운 모듈을 받지 못한다는 메시지였는데, 로컬이었다면 수작업으로 파일과 라는 디렉터리를 삭제해줄 수도 있었겠지만, CodeBuild상에서 삭제하는 과정이 필요했기 때문에 아래와 같이 package.json 파일에서 해당 파일들을 삭제해주는 scripts를 추가해주고, CodeBuild위에서 실행할 명령어들을 정의하는 buildspec.yaml 파일에 커맨드를 추가했더니 위와 같은 에러가 해결되었다.

December 14, 2022
클라우드
리눅스(Linux) 다중 명령어(;, &&, ||)

1. 배경 상황 Node.js 프로젝트를 진행하다가 package.json에 npm 명령어를 정의해주고 있었는데, 초기에 빌드 아웃풋 폴더 내의 파일을 삭제한 뒤에 빌드를 실행하도록 명령어를 아래와 같이 지정해주었었다. 하지만 bin에 아무 파일이 없는 상태에서 실행하니 아래와 같은 에러가 발생해서 다중 명령어를 에서 로 고쳐주었다(뭔가 init쪽 명령어를 고쳐주는 게 좋을 것 같은데 나중에 더 찾아보기로). 2. 리눅스(Linux) 다중 명령어 차이 리눅스 쉘에서 다중 명령어를 사용하면 하나의 라인에서 여러 명령어를 실행할 수 가 있는데, 다중 명령어를 실행하는 , , 세 명령어 사이에 차이가 있어 정리해두려 한다. 세미콜론() 선행 명령어의 성공, 실패 여부와 관계 없이 모든 명령어를 실행한다. 명령 2이 실패하더라도 명령 3이후의 명령어가 실행된다. 엠퍼센트() 앞에서부터 순차적으로 실행 되고, 선행 명령어가 실패할 경우, 뒤의 명령어를 실행하지 않는다. 명령 2가 …

December 13, 2022
devops
Chrome 브라우저 창 전체 스크롤/특정 컴포넌트만 스크린샷하기(크롬 개발자도구 활용)

MacOS에서는 기본적으로 ⌘ + ⇧ + 4 등의 단축키를 이용해 캡처를 할 수 있지만, 스크롤이 있는 페이지의 경우에는 전체 스크롤을 캡처하기가 어렵다. 하지만 캡처 대상이 Chrome 브라우저일 경우에는 Chrome 브라우저에서 제공하는 스크린 샷 기능을 활용해 웹사이트의 전체 스크롤 혹은 특정 컴포넌트를 캡처할 수 있다. 해당하는 웹페이지로 이동 후 F12키를 누르거나, 해당 웹페이지 빈 곳 우클릭 후 검사(Inspect) 클릭( ⌥+⌘+I) 개발자 도구가 열리면 Console 탭으로 이동한 뒤, ⌘ + ⇧ + P 단축키를 눌러 명령 메뉴를 연다. 명령 메뉴에 screenshot을 검색해서 을 클릭하면 PNG파일로 저장된다. 웹페이지의 특정 컴포넌트만 캡처하고 싶은 경우, 해당하는 웹페이지로 이동 후 F12키를 누르거나, 해당 웹페이지 빈 곳 우클릭 후 검사(Inspect) 클릭( ⌥+⌘+I) Element 탭에서 캡처를 원하는 태그를 우클릭 후 을 클릭하면 PNG파일로…

December 12, 2022
etc
Node.js 프로젝트 pkg 모듈로 빌드하기

1. 배경 상황 회사 과제 진행하느라 급히(?) Node.js + express를 배워서 웹 앱을 작성하는 중인데, Node.js를 처음 다루다보니 빌드 & 배포 방법을 처음으로 알게되어 기록용으로 남겨둔다. 2. pkg 모듈 다운로드 & package.json 설정 이전 회사에서 진행했던 Java 프로젝트의 경우에는 빌드 도구로 Ant와 Maven으로 빌드를 했었는데(그런데 요즘에는 Gradle & Maven을 많이 쓰고 Ant는 거의 쓰지 않는다고 한다. 어쩐지 처음 프로젝트 시작할 때 Ant 빌드 방법을 아무리 구글링 해도 옛날 자료밖에 안나오더라….눈물), node프로젝트는 pkg 모듈로 빌드 & 실행파일 생성을 진행할 수 있다고 한다. 먼저 pkg 모듈을 사용하기 위해 npm으로 pkg 모듈을 설치한다. pkg는 빌드용 모듈이기 때문에 옵션을 주어 로 추가한다. 설치가 완료되면 package.json 파일에 아래와 같이 pkg모듈이 에 추가된다. 다음으로는 어떤 파일…

December 11, 2022
프로그래밍
MacOS에서 MySQL Workbench 설치 및 데이터베이스 생성하기

1. MySQL 설치 MacOS에서 MySQL을 설치하기 위해서는 홈브루(Homebrew)를 사용할 수 있다. 먼저 홈브루를 최신으로 업데이트 해준다. 다음으로는 홈브루를 통해 mysql을 설치해준다. 명령어를 통해 mysql이 정상적으로 설치 되었는지 확인해준다. mysql 서버를 아래와 같이 기동해 준다. 으로 상세 설정을 진행해준다. VALIDATE PASSWORD COMPONENT can be used to test passwords and improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD component? 비밀번호 설정 규칙 설정할 것인지 여부. 예를 선택할 경우 3단계 중에서 하나를 선택할 수있다. By default…

December 09, 2022
데이터베이스
Node.js 프로젝트에서 환경변수 관리하기(파일로 분리)

1. 배경상황 급하게 FE+BE가 간단하게 구성된 데모 사이트를 만들어야 할 일이 생겨서 Node.js + Express 프레임워크로 웹사이트를 작성하던 도중 환경 변수 파일 분리가 필요해서 기록용으로 남겨본다. 이전에 Django 의 SECRET_KEY를 별도 파일로 분리 저장하는 포스팅을 올린 적이 있는데, 이번에는 해당 포스팅의 Node.js 버전이라고 보면 될 듯. 2. Node.js 프로젝트에서 환경변수 관리하기(파일로 분리) server.js 코드 여기서 포트번호, DB접속 문자열은 환경에 따라 가변적인 변수, 즉 환경변수(environment variable) ⇒ 다른 개발 환경에서는 수정이 필요할 수 있음 = 한 곳에 모아서 관리하자! 다른 컴퓨터에서 다른 포트 사용 DB 이사가서 DB 접속 문자열 면경 내가 만든 코드를 팀원과 공유할 때 유출 위험 환경 변수 사용을 위한 라이브러리 설치 server.js 파일 상단에 아래 코드 추가 server.js와 같은 경로에 …

December 05, 2022
프로그래밍
Python Django(장고)란?

Python Django(장고)란? 1. 배경 상황 이전 회사 팀분들과 토이프로젝트를 진행하려 하는데, 나는 이번 프로젝트에서 다른 팀원분과 함께 백엔드를 맡게 되었다. 우연찮게도 백엔드를 담당하게 된 두 명 모두 제일 많이 다뤄 본 언어가 Python이라 자연스럽게(?) Django를 선택하게 되었다. 2. Django란? Django Official Website: https://www.djangoproject.com/ 보안이 우수하고 유지보수가 편리한 웹사이트를 신속하게 개발하는 하도록 도움을 주는 파이썬 웹 프레임워크 개발자의 보안 실수 방지 (SQL Injection, Cross-site scripting, Cross-site request forgery, Clickjaking 등) 일반적인 웹 개발 작업을 처리하는 데 필요한 추가 기능이 미리 포함 (User Authentication, Content Administration, Site Maps, RSS feeds 등)…

October 10, 2022
프로그래밍
데이터베이스(Database) 비교 - Oracle, MySQL, PostgreSQL, SQLite

데이터베이스(Database) 비교 - Oracle, MySQL, PostgreSQL, SQLite 1. 배경 상황 이전 회사 팀원분들과 토이 프로젝트를 준비하고 있는데, 데이터베이스를 선정하기 전 각 데이터베이스에 어떤 장단점이 있는지 살펴보았다. 데이터베이스는 필요에 따라 데이터를 일정한 형태로 저장해 놓는 것을 뜻하는데, 이 데이터베이스를 관리할 수 있는 시스템을 DBMS라고 한다. DBMS에는 관리형 데이터베이스 시스템(RDBMS: Relational Database System)과, NoSQL로 구분되는데, 이번에는 RDBMS의 대표격인 Oracle, MySQL, PostgreSQL, 그리고 Django 프레임워크에서 기본적인 연동이 제공되는 SQLite를 비교해보도록 하겠다. 2. Oracle 장점 고성능(빠른 속도) 여러 가지 기능 제공 백업 등 안정성 대기업에서 많이 사용 단점 라이선스 비용이 비쌈 유지보수 비용 비쌈 무료 버전의 용량 및 기간 제한 존재 3. MyS…

October 09, 2022
CS
Python Django No changes detected 해결

Python Django No changes detected 해결 1. 배경 상황 토이 프로젝트 시작 전 테스트 용으로 Django REST framework 사용 실습을 하고 있었는데, Model을 잘못 정의해서 한 번 날리고(…) 다시 명령어를 실행 하려고 하니 아래와 같이 No changes detected라는 메시지가 발생했다. 2. 해결 방법 프로젝트 내에 캐시 파일, migrations 폴더, db.sqlite3 파일을 모두 삭제해도 인식을 못하고 같은 메시지가 발생해서 구글링을 해보니, 명령어를 실행할 때 아래와 같이 앱 이름을 명시하면 해결이 된다고 한다. 아래와 같이 라고 앱 이름을 명시해주니 Migration이 잘 생성 되었다.

October 08, 2022
프로그래밍
M1 Mac에서 iTerm2 세팅하기

맥북을 아주 오래전에 산 뒤에 iTerm을 세팅해두었었는데, 어떻게 세팅했었는지 기억이 전혀 나지 않아 이번에 M1 Mac북을 사용하게 되면서 새로 iTerm2를 세팅하면서 방법을 정리해두려고 한다. M1 Mac에서 iTerm2 세팅하기 맥OS에서도 기본 터미널을 제공하지만, 기능이 더 많이 추가 되고 가독성도 좋은 iTerm2를 설치하면 생산성을 높을 수 있다. iTerm2 다운로드 iTerm을 다운로드 하기 위해서는 공식 사이트에서 다운로드 받거나, Homebrew를 설치한 경우 MacOS 패키지 관리자인 Homebrew를 사용해( 명령어 사용) 다운로드 받을 수도 있다. oh-my-zsh 설치 여러 편리한 기능을 제공하는 oh-my-zsh를 설치해보도록 하겠다. 참고로 최근 MacOS의 기본 쉘이 bash에서 zsh로 변경되어 터미널에서 zsh를 설치하는 작업은 별도로 필요 없어져서, 바로 아래 명령어를 입력하면 된다. iTerm2 테마 설정 자동완성 기능 추가 iTerm2 …

October 06, 2022
데브옵스
클라우드 및 AWS 서비스 소개

1. AWS 클라우드 개요 - 리전 및 AZ 1. AWS 클라우드의 역사 02년 내부에서부터 시작 03년 외부 시장에 참여 기획 04 SQS 서비스 런칭 06 S3, EC2 추가 07 유럽 리전 출시 Gartner Magic Quadrant ⇒ 1위 2. Use cases 섬세하며 확장가능한 애플리케이션 운용을 가능케 함 다양한 산업에 적용 가능 다음의 사용례를 포함 기업 IT, 백업 & 스토리지, 빅데이터 분석 웹사이트 호스팅, 모바일 & 소셜 앱 게임 3. 글로벌 인프라 AWS Regions AWS Availability Zones AWS Data Centers AWS Edge locations / Points of Presence https://infrastructure.aws 각 리전은 네트워크를 통해 연결(사설 네트워크) 파란 점: AZ 1. AWS Regions AWS는 전 세계에 Regions 을 갖고 있다. 이름 예시: us-east-1, eu-west-3, 등 리전…

October 04, 2022
클라우드
Linux Local Disk 관리: 디스크 추가 & 정보 보기

Linux Local Disk 관리: 디스크 추가 & 정보 보기 1. 디스크 정보 보기 1-1. 디스크 용량 단위 운영체제는 저장 장치의 단위로 바이트(Byte = 8 Bit)를 사용한다. 1bit = on/off 로 구분될 수 있는 가장 작은 단위 1 바이트 크기는 한 문자에 해당 $2^{10}$의 거듭제곱으로 계산 $2^{10}$=1024 1000바이트 단위: KB(kilobyte), MB, GB, TB, PB, EB, ZB로 표시 1000byte ⇒ 1KB, 1000KB ⇒ 1MB , 1000MB ⇒ 1GB 1024바이트 단위: KiB(kibibyte), MiB, GiB, TiB, PiB, EiB, ZiB로 표시 1024byte ⇒ 1KiB, 1024KiB ⇒ 1MiB 1-2. df 파티션 단위로 디스크 사용량 출력 리눅스 시스템의 디스크 사용량 확인 df -h ⇒ human-readable. 사람이 보기 좋게 메가(M), 기가(G)단위로 디스크 공간을 확인 df -a ⇒ a…

October 03, 2022
데브옵스
리눅스(Linux) 3-Tier Architecture

3-Tier Architecture 1. 3-Tier Architecture WEB - WAS(PHP) - DATABASE Apache, PHP, MariaDB 연동해서 게시판(그누보드) 만들기 편의를 위해 강의에서는 하나의 서버에 WEB-WAS-DB 모두 구축 (일반적으로는 각 서버를 분리) 1. MariaDB 설치 데이터베이스를 생성하고 관리하는 시스템 데이터베이스 관리 시스템(database management system, DBMS) 오픈소스 DBMS: MariaDB MariaDB를 설치하고 DB 관리자 패스워드를 설정한다. 2. Apache Web Server 설치 Web Server: NGINX, Apache Apache2를 설치하고 서비스 동작해보기. 3. PHP 설치 PHP 설치 후 Apache와 연동되었는지 확인 Apache → 동적(dynamic) 한 프로그램을 받아줄 수 없음 ⇒ PHP 필요 PHP는 Apache와 연동되어야 한다: libapache2-mod…

October 02, 2022
데브옵스
MacOS의 패키지 관리 툴 Homebrew 다운로드하기

MacOS의 패키지 관리 툴 Homebrew 다운로드하기 1. Homebrew란? Homebrew란 Ubuntu의 apt, CentOS의 yum과 같이 커맨드라인에서 사용가능한 패키지 관리자로, MacOS의 사실상 표준(De facto standard)이다. 맥스 호웰(Max Howell)이라는 개발자에 의해 개발되었으며, 루비(Ruby)기반으로 개발되었다. 2. Homebrew 다운로드 아래와 같은 명령어를 터미널에 입력해주면 간단하게 Homebrew를 설치할 수 있다. 다음으로는 다음 세 명령어를 사용해 환경변수를 설정 해준다. 3. Homebrew 사용법 Homebrew 버전 확인 먼저 명령어로 Homebrew가 잘 설치되어있는지 확인하자. 패키지 다운로드 패키지를 다운로드 받으려면 아래와 같이 명령어를 입력해주면 된다. 이번 예시에서는 을 다운로드 해볼 것이다. 패키지 파일 목록 확인 명령어로 패키지가 설치한 파일 목록을 확인할 수 있으며, 패키지 업그레이드 패키지를 …

October 01, 2022
데브옵스
리눅스(Linux) File Attribute

File Attribute 1. File attributes lsattr 리눅스 파일시스템의 파일 속성을 보는 명령어 chattr 명령어의 결과를 확인할 수 있음. chattr (Change attribute) 파일을 보호하는 명령어 파일 시스템의 파일 속성을 변경하여 파일 손상을 방지함. 속성 설정 + 속성 추가하기 - 속성 제거하기 = 원래 파일이 가지고 있는 속성 유지하기 속성 의미 A(no atime updates) Access가 발생하더라도 파일 시스템의 파일 정보에 저장되는 atime이 갱신되지 않음 a(append only) 해당 파일을 추가만 할 수 있음(파일 보안을 위해 주로 사용하는 속성) C(no copy on write) 기록 중 복사 업데이트가 적용되지 않음. c(compressed) 디스크에 자동적으로 압축된 상태로 저장됨 D(synchronous directory updates) 디렉터리의 변경사항을 동기화 시킴. d(no dump) dump 명령어로 백…

September 30, 2022
데브옵스
리눅스(Linux) SetUID, SetGID, and Sticky bit

SetUID, SetGID, and Sticky bit 10. SetUID, SetGID, and Sticky bit 1. Special Permissions on Files SetUID, SetGID, and Sticky bit | SetUID | SetUID가 설정된 프로그램이 실행될 때, 그 프로그램이 실행되는 동안에는 파일 소유자의 권한으로 권한이 변경되어 실행되는 퍼미션 user 퍼미션에 $가 설정되어있는 프로그램 ttabae$ lls -l /usr/bin/passwd -rwsr-xr-x 1 root root 68208 5월 28 2020 /usr/bin/passwd | | --- | --- | | SetGID | SetGID가 설정된 프로그램이 실해오딜 때 그 프로그램이 실행되는 동안에는 파일 소유 그룹 멤버로의 권한으로 권한이 변경되어 실행되는 퍼미션 ttabae$ ls -l /usr/bin/passwd -rwxrwsr-x 1 root root 68208 5월 28 2…

September 29, 2022
데브옵스
깃헙(Github) 액세스토큰 사용 시 refusing to allow a Personal Access Token to create or update workflow… 에러 해결

1. 배경 상황 CNCF 용어집 한글화 작업 중 기존에 올려 두었던 PR을 수정해야하는 일이 생겼는데, 수정 후 origin(원본 github repository를 fork해서 받아놓은 내 repository)에 변경사항을 push하려고 하니 아래와 같은 에러메시지가 발생했다. 에러 메시지를 읽어보면 로컬의 브랜치에서 origin의 브랜치로 push하던 중 에러가 발생했다고 한다. 에러 원인은 PAT(Personal Access Token)에 workflow scope이 포함되어있지 않아서, 라는 워크플로를 생성 혹은 업데이트가 거부되었다라는 메시지였다. 2. 해결 방법 먼저 본인 깃허브 계정에 접속해 페이지 가장 우측 상단의 프로필 아이콘을 클릭한 뒤 탭으로 접속한다. 좌측 메뉴리스트 가장 하단의 라는 버튼을 클릭한다. 그 다음 화면의 좌측 메뉴 리스트의 탭을 클릭한다. 참고로 PAT의 scope은 토큰 생성 후에도 변경이 가능하기 때문에, scope을 추가하기 …

September 28, 2022
데브옵스
리눅스(Linux) Default Permissions(umask)

Default Permissions(umask) 1. Default Permission 설정 파일과 디렉토리가 생성될 때 기본으로 적용되는 설정 예시 file1과 dir1이 생성된 직후 부여받는 permission 설정 → umask file directory default 0666 0777 umask 0002 0002 permission 0664 0775 default permission rw-rw-r— rwxrwxr-x default - umask = permission umask의 값을 변경해 기본 퍼미션을 변경할 수 있다. example

September 27, 2022
데브옵스
리눅스(Linux) Managing File Permissions

Managing File Permissions Authentication vs. Authorization https://learn.microsoft.com/ko-kr/azure/active-directory/develop/authentication-vs-authorization 1. Permission 정보 보기 permission, 허락, 권한을 뜻하는 말(나무위키) 리눅스 시스템에서는 파일이나 디렉토리에 사용자들이 접근할 수 있는 권한을 할당해서 운영 파일 소유자, 그룹 멤버들, 그 외 사용자들 read, write, execute file directory read(r) 파일의 내용을 읽기(cat, more, less…) 디렉토리 내용을 읽기(ls) write(w) 파일의 내용을 변경 디렉토리 내용을 변경 execute(x) 파일을 프로그램으로 실행 디렉토리 안에 저장된 파일의 세부 속성 확인 현재 작업 디렉토리로 설정 가능 파일의 permission 보기 d로 시작 → 디…

September 26, 2022
데브옵스
리눅스(Linux) Password Administration

Password Administration 1. Password 관련 설정파일 1-1. Password 관련 설정 파일 /etc/passwd: 계정정보 파일 login name optional encrypted password x 라는 문자를 가질 경우 실제 encrypted password는 /etc/shadow에 저장 → 이 경우 /etc/passwd에 계정정보가 생성된다. man 명령어로 매뉴얼을 확인해보자. /etc/shadow login name encrypted password: 암호화된 패스워드 man으로 파일 설명 확인 예시 혹은 !가 들어있는 경우 로그인 금지(system account(*), password lock(!)) 로그인 할 수 없는 계정의 비밀번호에 * / ! 가 쓰인 이유 암호화 알고리즘에서 절대 쓸 수 없는 문자이기 때문 date of last password change: 비밀번호 바꾼 날짜 패스워드 수정일(1970.1.1을 기준으로 카운트한 날짜…

September 25, 2022
데브옵스
리눅스(Linux) Account management

Account Management 1. User & Group 관련 betabase file들 1-1. 계정 관련 파일 /etc/passwd 시스템의 모든 계정에 대한 정보를 담고 있는 설정 파일 7개 필드로 구분. 구분자 colon() login name encrypted password: (x) → numerical user ID: root (0), system account(1999: app들이 사용), local user(100059999), system account(60000~65535) numerical group ID: root (0) User Private Group: 개인 그룹 (user가 저마다 개인 그룹을 가지고 있음) user name or comment field: user home directory(login directory): root(root), local user: user (/home/user), ttabae(/home/ttabae) login…

September 24, 2022
데브옵스
리눅스(Linux) Archiving and Compression

05. Archiving and Compression archive: 파일을 보관. 원본의 속성을 그대로 보존 및 여러개 파일/디렉토리 묶어 보존 compression: 파일을 압축. 큰 사이즈의 파일을 작은 사이즈로 압축해 보존 gzip, bzips, xz → 파일 단위로만 압축됨 파일을 전달 할 때: archive(파일을 하나로 묶어줌) → compress (압축) → 전달 & 보존이 용이 1. Archives with tar 명령어: tar, cpio 등 파일 보관 백업 여러 파일을 하나로 묶어 보존 / 전달 tar 여러 파일 혹은 디렉터리를 하나의 아카이브 파일로 모으거나 복원하기 위해 사용하는 명령어 원본의 속성을 유지한 상태로 여러 파일을 묶거나 묶은 파일을 원본으로 되돌림 GNU ‘tar’ saves many files together into a single tape or disk archive, and can restore individual files from t…

September 23, 2022
데브옵스
리눅스(Linux) 파일 퍼미션(File Permission) 및 ACL 차이

리눅스(Linux) 파일 퍼미션(File Permission) 및 ACL 차이 파일 퍼미션 vs ACL link 를 이용해 권한을 결정하는 기존 파일 퍼미션의 경우 사용자 하나와 그룹 하나만 읽기, 쓰기, 실행 권한을 가질 수 있습니다. ACL을 이용하면 추가적으로 여러 명의 사용자와 그룹도 읽기, 쓰기, 실행 권한을 가질 수 있습니다. ACL은 ‘기본값 ACL’이라는 기능을 통해 마치 를 폴더 별로 적용하는 듯한 효과를 만들 수 있습니다. 파일 퍼미션 ACL 관련 명령어 chmod, umask getfacl, setfacl 권한 지정 대상 사용자 하나, 그룹 하나(chmod) 사용자 여렷, 그룹 여럿 기본값 권한 계정 로그인 시 적용(umask) 폴더 별로 적용

September 22, 2022
데브옵스
AS번호(AS number)란? AS번호 소유자 확인 방법

1. 배경 상황 이전 프로젝트에서 AWS DX(Direct Connect) 구축 중 연결 정보를 받은대로 넣었음에도 불구하고 Link가 계속 Up 되지 않는 이슈가 있었는데, 알고보니 AS 번호가 잘못 전달이 되어 발생한 이슈였다. 관련해서 검색해보니 내가 이전 직장에서 근무했을 당시 사용했던 사이트 외의 다른 사이트도 찾을 수 있어서 AS번호에 대한 개념을 정리 할 겸 포스팅 하려 한다. 2. AS number(망 식별 번호)란? AS Number(Autonomous System Number, ASN)는 한국어로는 망식별번호라고도 한다. 동일한 라우팅 정책으로 하나의 관리자에 의해 운영되는 네트워크를 자율 시스템(AS, Autonomous System)이라고 부르며, 각 자율 시스템을 식별하기 위해 만든 고유한 숫자를 망 식별 번호라고 한다. 간단하게 설명하면, 여러 IP 대역들을 묶어서 편리하게 통신할 수 있도록 만든 것이라고 생각하면 되며, 작은 기업에서는 조직 자체에 할당되…

September 21, 2022
CS
그림으로 배우는 알고리즘 제 7장: 알고리즘의 계산량(2)

제 7장: 알고리즘의 계산량(3) 74. 알고리즘의 계산량 → O(빅-오) 표기법 알고리즘 계산량의 일반적 표기법 → O(빅-오) 표기법 측정 대상 알고리즘의 계산량을 처리하는 데이터 개수 n을 기준으로 표기 예시: n개 데이터 계산량이 n에 비례 → 으로 표기 예시 2: 1~N까지의 합을 하나하나 더해 계산 → N이 무한대일 경우 N의 계수 3과 +3 영향이 거의 사라짐 → 계산량: 예시 3: 1~N까지의 합을 N(N+1)/2 로 계산 → 데이터 개수에 의존하지 않고 계산량 항상 3 → N에 의존하지 않는 계산량 = 예시 4: 버블 정렬 → N 값이 커짐에 따라 N 값에 의존하는 이중루프(반복 안 반복) 처리 → N * N 번 작업 → 계산량 = $$ 예시 5: 이진 검색(바이너리 서치) → 1번째 탐색 범위가 N일경우 1번 조작 시 검색범위 1/2로 좁혀짐 → 반복 횟수가 k일 경우 $N*\frac{1}{2}^k=1$ → 해당 식 변형 시 $2^k$ = N → k = $l…

September 20, 2022
알고리즘
각종 언어 및 프레임워크의 수명(End of Life) 확인하기

1. 배경 상황 이전 프로젝트에서 Open JDK 특정 버전에 대한 수명을 찾아보려고 자료를 찾다가 유용한 사이트를 발견하여 기록해 두려 한다. 제품 수명의 만료에는 EOL(End of Life)과 EOS(End of Service/End of Sales)크게 두 가지 종류가 있으며, 보통 EOS 을 선언 한 뒤 일정 기간 뒤 EOL을 선언하게 된다. EOS(End of Service/End of Sales) 제조사에서 공식적으로 해당 서비스 / 소프트웨어에 대한 생산 및 판매를 중단한다는 뜻이다. 제품에 대한 신규 판매가 중단된다는 뜻으로 기존 판매된 제품에 대한 버그 수정, 업데이트 혹은 지원 등은 계속해서 제공 될 수 있다. EOL(End of Life) 제조사에서 공식적으로 지원을 중단한다는 뜻이다. 이 시점 이후 신규 기능 추가, 성능 개선, 보안 취약점 대응 등의 지원이 불가하다. 2. 각종 언어 및 프레임 워크의 수명 확인하기 이러한 각종 소프트웨어 서비스에 대한 EO…

September 19, 2022
데브옵스
쿠버네티스(Kubernetes) 리소스 아이콘 모음

1. 배경 상황 이전 회사에서 내부 세미나를 위해 쿠버네티스 컴포넌트를 가지고 아키텍처를 그려야할 일이 생겨서 쿠버네티스 리소스 아이콘이 있는지에 대해 찾아보았다. 2. 리소스 아이콘 링크 쿠버네티스는 오픈소스 프로젝트인 만큼 리소스 아이콘에 대해서도 무료로 개방하고 있는데, 쿠버네티스 깃헙 조직 하위의 community 저장소에 들어가면 확인할 수 있다. 아래 링크를 참조하자. 링크: https://github.com/kubernetes/community/tree/master/icons 참고로 쿠버네티스 아이콘은 PNG, SVG 두가지 형태로 제공되며, 리소스 이름이 영문으로 적힌 아이콘과 그림만 표시된 아이콘 두 가지 버전을 제공하고있다(하지만 개인적으로는 리소스 도형만 보고는 어떤 리소스인지 유추하기 어려워서 이름 레이블이 달린 아이콘을 사용했었다). 자세한 사용법은 위 링크의 README 파일을 참고하면 된다(Visio용 아이콘 파일도 제공하니 참고하자).

September 18, 2022
데브옵스
오픈소스 컨트리뷰션 아카데미(쿠버네티스 한글화) - 쿠버네티스 조직 멤버 신청하기 & 승인 받기

쿠버네티스 공식문서 한글화 작업 등 쿠버네티스 조직의 하위 프로젝트에 대해 기여를 하다보면 쿠버네티스 조직의 정식 멤버십을 신청할 수 있다. 2022년 9월 현재 기준으로는 아래 기준을 충족할 경우 멤버로 등록 요청을 할 수 있다. 5개의 실질적인 풀 리퀘스트 깃헙 계정에 2-Factor authentication 활성화 dev@kubernetes.io 메일리스트 구독 기여자 가이드 정독 2명 이상의 리뷰어의 스폰서십 1. 쿠버네티스 공식 저장소 멤버 신청 1. 멤버 신청 조건 충족하기 먼저 위에서 언급한 신청 조건들에 대해 보다 자세히 설명하겠다. 1. 5개의 실직적인 풀 리퀘스트 쿠버네티스 공식문서 저장소의 가이드라인에서는 5개의 실질적인 풀 리퀘스트를 최소한의 기준으로 삼고 있다. 여기서 말하는 이라는 것은 단순한 오타 수정과 같이 아주 사소한 수정을 제외함을 뜻한다. 실질적인 풀 리퀘스트에 해당하는 예로는 아래와 같은 것들이 있다. 한글화 되지 않은 마크다운 문서 하나를 …

September 17, 2022
OSSCA
그림으로 배우는 알고리즘 제 7장: 알고리즘의 계산량(1)

제 7장: 알고리즘의 계산량(1) 72. 알고리즘의 계산량: 시간 계산량, 영역 계산량 알고리즘의 성능(얼마나 효율적인가)을 평가: 시간 계산량과 영역 계산량이 기준 시간계산량 해당 알고리즘 실행 시 소요시간 연산, 조건 비교, 변수 대입 등의 조작(단계)들을 하나의 단위로 삼아 각 실행횟수로 측정(프로그램 실행 및 종료시간까지의 시간 측정의 경우 컴퓨터 성능 혹은 주변기기 / 데이터 입출력 소요시간에 영향을 받기 때문에 적절하지 않음) 영역 계산량 해당 알고리즘 실행 시 사용되는 공간적 자원의 크기 상수 영역, 변수 영역, 배열 영역, 스택 등 작업 영역 등의 총 합계(=메모리 영역) 73. 시간 계산량 → 연산, 조건 비교, 대입 등 조작 횟수로 측정 1~N의 합계를 구하는 계산 예시 방법1: 하나하나 더해 합을 계산 1단계: 합계 저장 변수 SUM을 0으로 초기화 2단계: 더할 값을 저장하는 변수 VALUE에 1 대입 3단계: 변수 VALUE가 N보다 작거나 판정 결과가 참이…

September 16, 2022
알고리즘
Notion에서 수식 사용하는 방법(Latex)

알고리즘 책 내용 정리 포스팅을 하다가 수식을 사용할 일이 있어 찾아보니 Notion에서의 수식을 입력하는 방법이 달라 정리해보았다. 참고로 Notion에서 입력한 값을 Ctrl + C & Ctrl + V로 마크다운 파일에 붙여넣기 하니 마크다운 형식으로 변경되어 입력이 되어, 노션에서 모든 내용을 작성해 복붙으로 깃헙블로그에 포스팅 하는 분의 경우에는 마크다운에서의 수식 입력 방식까지는 몰라도 될 듯. 먼저 수식을 삽입하기 위해서는 Notion에서 를 입력해 equation 입력 탭을 활성화 한 뒤, 아래 예시를 참조해 수식을 입력해야 한다. 참고로 Notion에서는 수식 입력 도구로 $\LaTeX$(**레이텍/라텍)**을 차용하고 있다. 1. 윗 첨자 혹은 아랫첨자 삽입 아래첨자 방법 1: 문자 앞에 삽입 예시: 출력: $x_0$ 방법2: 첨자로 만들고 싶은 문자열이 2개 이상인 경우 → 로 묶어준다. 예시 출력: $2_{x0}$ 윗첨자 방법1: 문자 앞에 삽입 예시:…

September 15, 2022
etc
오픈소스 컨트리뷰션 아카데미(쿠버네티스 한글화) - 쿠버네티스 공식문서 한글화에 기여하는 방법(4)리뷰 내용 반영 & 승인 완료

이 포스팅은 유투브에 올라온 Kubernetes 오픈소스 컨트리뷰션 방법 소개 (한글화 기여를 통해 쿠버네티스에 참여하기, CNCG2020 발표) 및 [Youtube]초간단 쿠버네티스 문서 한글화 시작 가이드 영상, Kubernetes Contributor Cheatsheat, 쿠버네티스 문서 한글화 가이드 문서를 참조하여 직접PR을 올린 경험을 토대로 작성 된 자료입니다. 혹시 잘못된 부분이 있을 경우에는 메일(jinnypark9393@gmail.com)로 알려주시면 반영하도록 하겠습니다 😊 쿠버네티스 공식문서 한글화에 기여하는 방법 시리즈 쿠버네티스 공식문서 한글화에 기여하는 방법(1)사전준비 & 이슈 생성하기 쿠버네티스 공식문서 한글화에 기여하는 방법(2)소스코드 복사 & 번역하기 쿠버네티스 공식문서 한글화에 기여하는 방법(3)PR(Pull Request)생성 & CLA 서명 쿠버네티스 공식문서 한글화에 기여하는 방법(4)리뷰 내용 반영 & 승인 완료 1. 쿠버네티스 공식문서…

September 14, 2022
OSSCA
오픈소스 컨트리뷰션 아카데미(쿠버네티스 한글화) - 쿠버네티스 공식문서 한글화에 기여하는 방법(3)PR(Pull Request)생성 & CLA 서명

이 포스팅은 유투브에 올라온 Kubernetes 오픈소스 컨트리뷰션 방법 소개 (한글화 기여를 통해 쿠버네티스에 참여하기, CNCG2020 발표) 및 [Youtube]초간단 쿠버네티스 문서 한글화 시작 가이드 영상, Kubernetes Contributor Cheatsheat, 쿠버네티스 문서 한글화 가이드 문서를 참조하여 직접PR을 올린 경험을 토대로 작성 된 자료입니다. 혹시 잘못된 부분이 있을 경우에는 메일(jinnypark9393@gmail.com)로 알려주시면 반영하도록 하겠습니다 😊  쿠버네티스 공식문서 한글화에 기여하는 방법 시리즈 쿠버네티스 공식문서 한글화에 기여하는 방법(1)사전준비 & 이슈 생성하기 쿠버네티스 공식문서 한글화에 기여하는 방법(2)소스코드 복사 & 번역하기 쿠버네티스 공식문서 한글화에 기여하는 방법(3)PR(Pull Request)생성 & CLA 서명 쿠버네티스 공식문서 한글화에 기여하는 방법(4)리뷰 내용 반영 & 승인 완료 1. 쿠버네티스 공식문…

September 14, 2022
OSSCA
그림으로 배우는 알고리즘 제 6장: 그 외의 알고리즘들(4)

제 6장: 그 외의 알고리즘들(4) 71. 재귀 호출을 이용해 N의 팩토리얼 구하기 재귀호출: 함수에서 값을 구하기 위해 자기자신을 호출하는 표현이 포함된 상황 재귀 호출에서 자기 자신을 다시 호출하기만 하는 경우에는 무한 루프에 빠질 수 있으므로 아래 등을 적용해 무한루프를 막아야한다. 자기자신을 다시 호출하는 경우와 단순하게 결과값만 반환하는 경우를 분리 n의 팩토리얼(n!)을 구하는 알고리즘을 이용해보자. n! = 1 * 2 * 3 * … * (n-1) * n 이 때 (n-1)을 미리 구했다면 (n-1)! * n 으로 구할 수 있다. 즉, n!을 구하는 함수를 fact(n)이라고 했을 경우 fact(n) = fact(n-1)! * n과 같이 함수가 스스로를 호출하도록 표현할 수 있다. n = 1 → 1! = 1 n ≥ 2 일 경우 fact(n-1)! * n을 반환 칼럼: 알고리즘과 플로우 차트(순서도) 플로우차트: 알고리즘의 처리 흐름(해결 방법)을 시각적으로 명확화 미리 약…

September 14, 2022
알고리즘
그림으로 배우는 알고리즘 제 6장: 그 외의 알고리즘들(3)

제 6장: 그 외의 알고리즘들(3) 69. 그래프에서 최적 경로를 구하는 데이크스트라 알고리즘 최단 거리 및 최저 운임 이동경로 등의 최적경로를 구할 경우 그래프를 이용하는 데이크스트라 알고리즘이 유용 그래프로 아래 3 요소를 표현 한 뒤 최적 경로 구함 꼭짓점: 출발점, 종착점 및 경유 지점 변: 꼭짓점과 꼭짓점을 연결하는 경로 변의 가중치: 경로를 통과하는 비용(시간 혹은 운임) 최적 경로 구하는 절차 1단계: 출발점의 [검색된 플래그]를 켠다. 그 외 모든 꼭짓점의 [검색됨 플래그]를 끈다. 2단계: [검색된 플래그]가 켜진 모든 꼭짓점과 변으로 연결된 [검색됨 플래그]가 켜진 꼭짓점 목록을 구한다. 3단계: [검색된 플래그]가 켜져있는 꼭짓점으로 향하는 경로의 ‘가중치’합계와 2단계에서 구한 꼭짓점으로 향하는 ‘변의 가중치’합계가 가장 적은 꼭짓점을 새롭계 선택한다. 4단계: 3단계에서 선택한 새 꼭짓점이 종착점일 경우 해당 꼭짓점까지의 경로를 최적경로로 삼는다. 종착점이 …

September 13, 2022
알고리즘
그림으로 배우는 알고리즘 제 6장: 그 외의 알고리즘들(2)

제 6장: 그 외의 알고리즘들(2) 67. 연립방정식의 해를 구하는 ‘가우스 소거법’ 가우스 소거법: 미지수를 하나씩 줄여 나가는 작업을 통해 연립 방정식을 푸는 알고리즘 왼쪽의 n차 연립 방정식을 행렬로 표현한 결과는 아래와 같다. $$ a_{11}x_1+a_{12}x_2+…+a_{1n}x_n=b_1\ a_{21}x_1+a_{22}x_2+…+a_{3n}x_n=b_2\ …\ a_{n1}x_1+a_{n2}x_2+…+a_{nn}x_n=b_n\ $$ $$ A = \begin{pmatrix} a_{11} & a_{12} & … & a_{1n} \ a_{21} & a_{22} & … & a_{2n} \ … & … & … &… \ a_{n1} & a_{n2} & … & a_{nn} \end{pmatrix} \begin{pmatrix} x_1 \ x_2 \ … \ x_n \end{pmatrix} = \begin{pmatrix} b_1 \ b_2 \ … \ b_n\end{pmatrix} $$…

September 12, 2022
알고리즘
220908 링글(Ringle) 13회차 수업 후기

1. 기본정보 일정 2022년 9월 8일 20:00 (40분) 튜터 정보 튜터 이름: Jaspreet 튜터 대학 / 전공: University of California, San Diego / Communication 2. 사전 준비 1. Article: Practice Office Small Talk With Your Tutor 2. Key Expressions hold your tongue 잠자코 있다, 참다 to not say something when you would otherwise like to lighten up the mood 분위기를 띄우다 to make the tone or emotions of a conversation more positive benign 상냥한, 양성의 irrelevant, unimportant, not harmful, generic 3. Questions Q14. Where did you work before you started ther…

September 11, 2022
english
Github Blog / Gatsby 구글 서치콘솔(Google Search Console) 등록하기

1. 배경상황 한두달 전 쯤 깃헙 블로그의 테마를 Jekyll의 Minimal mistakes에서 Gatsby의 Zoomkoding님 테마로 변경 했다. 테마 변경 직후에 Jekyll에서 수집이 되지 않던 사이트맵이 Zoomkoding님 테마로 전환 이후에 잘 수집되는 것을 확인하고는 이후에 서치콘솔에 들어가 확인하지 않았는데, 오랜만에 들어가보니 아예 사이트 소유권 증명이 풀려있었다;; (당연함.. 소유권 증명을 HTML 태그로 했었는데 새로운 코드를 덮어 씌웠으니 소유권 증명이 될 리가..) 그래서 다시 소유권 등록을 진행해주었다. 2. 구글 서치콘솔 등록 방법 구글 서치콘솔은 구글에 내 사이트를 등록해 구글에서 키워드를 검색했을 때 검색결과에 내 블로그를 노출시켜준다(반대로 말하면, 깃헙 블로그의 경우 네이버 블로그와는 달리 블로그를 생성한 뒤 구글 서치콘솔을 비롯한 각종 서치콘솔에 등록해주지 않으면 직접 블로그 URL을 타고 들어오지 않는 한 어디에서도 내 블로그를 찾을 수…

September 10, 2022
BLOG
NGINX 도메인경로에 www를 자동으로 추가/삭제하는 방법

1. 배경 상황 신규로 담당하게 되었던 시스템이 특정 환경에서만 접속이 되지 않아 팀원분들과 함께 원인을 찾아보던 중 ingress의 annotation 중 특이하게 설정되어있는 부분이 있어 해당 어노테이션에 대해 찾아보게 되었다. 내가 눈여겨 보았던 어노테이션은 도메인 경로에서 라는 하위 도메인을 자동으로 추가하는 설정이었는데, 테스트를 위해 해당 시스템의 도메인 정보를 사전에 받았을 때, 하위 도메인이 포함되어있지 않았었다. 따라서 www라는 하위 도메인으로 redirect하는 설정때문에 시스템 접속에 문제가 생긴 것이 아닐까 하고 추측했었다. 하지만 이 설정은 다른 분이 시스템 접속 이슈를 해결하고자 이것 저것 시도해보시다가 들어가게 된 설정이었고, 해당 설정을 하기 전에도 시스템 접속에 문제가 있었던 상황이었다(그리고 해당 이슈의 원인도 결국은 도메인 주소의 문제가 아니라 mime-type 설정의 문제로 밝혀졌다). 2. 설정 방법 NGINX Ingress control…

September 09, 2022
데브옵스
Git / Github 변경사항 없이 커밋 다시 푸시하기(git commit --amend --no-edit)

1. 배경 상황 OSSCA 쿠버네티스 한글화팀에서 기여작업을 진행하게 되면, netlify의 알 수 없는 실패 등의 이유로 이미 올린 PR에 커밋을 다시 푸시할 일이 생긴다. 한글화팀 지난 미팅에서 다른 멘티님들이 이 때 사용할 수 있는 유용한 깃 명령어를 알려주셨었는데, 이번에 CNCF Glossary 한글화 작업을 하다 마침 해당 명령어를 사용해야 해서 내용을 정리해보았다. 참고로 CNCF Glossary프로젝트의 dev-ko 브랜치(한글화 작업용 브랜치) 관리 작업 중에, upstream/dev-ko에 특정 커밋의 hash가 변경되는 상황이 발생해 내가 올린 PR에 해당 hash가 변경되기 이전 커밋이 자동으로 추가 된 상황으로, upstream에 대한 업데이트 & rebase를 진행해 다시 푸시를 해야하는 상황이었다. 참고로 아래 내용들은 상황을 설명하기 위한 것으로 이번 포스팅의 주제인 git 변경사항 없이 커밋을 다시 푸시하는 방법을 바로 보고싶다면 2번 항목으로 바로 …

September 08, 2022
데브옵스
220907 링글(Ringle) 12회차 수업 후기

1. 기본정보 일정 2022년 9월 7일 06:00 (40분) 튜터 정보 튜터 이름: Hope 튜터 대학 / 전공: Harvard University / Computer Science 2. 사전 준비 1. Article: Lean In And Out 2. Key Expressions pundit 전문가 an expert in a particular field inflection point 변곡점 a point at which the curvature of a curve changes its sign Tip: An inflection point is a point at which a curve changes its curvature from convex to concave. But figuratively, “inflection point” is used to refer to a point or moment that leads to a significant change. concavi…

September 07, 2022
english
220906 링글(Ringle) 11회차 수업 후기

1. 기본정보 일정 2022년 9월 6일 22:00 (40분) 튜터 정보 튜터 이름: Mia 튜터 대학 / 전공: Williams University / Art History 2. 사전 준비 1. Article: A Blank Canvas Was Sold for $15 M 2. Key Expressions Intrinsic 고유한, 본질적인 being a part of a thing by its very nature Pretentious 허세 부리는, 가식적인 exaggerating importance or dignity, especially when it is not deserved 3. Questions Q1. Are you interested in modern and contemporary art? If not, why did you choose this material for today’s discussion? Q2. Do you think the art market is …

September 06, 2022
english
220905 링글(Ringle) 10회차 수업 후기

1. 기본정보 일정 2022년 9월 5일 11:00 (40분) 튜터 정보 튜터 이름: Jae Won 튜터 대학 / 전공: Princeton University / Computer Science & Electronic Engineering 2. 사전 준비 1. Article: Work and Life 2. Key Expressions N/A 3. Questions Q2. Do you feel like you prioritize work or prioritize life? Explain. Q6. When do you feel most satisfied with your life? What about with work? Explain. Q7. Do you think having a support system outside of work can benefit your career? 3. 복습 1. Fluency Because this means big tech company admit m…

September 05, 2022
english
Oracle JDBC drive(ojdbc)란 및 호환 JDK버전

1. 배경 상황 진행하고 있던 프로젝트에서 Oracle DB 버전 업데이트로 인해 ojdbc 라이브러리 파일을 교체했는데, JDBC 자체의 개념에 대해 어렴풋이 이해하기만 하고 깊게 생각해 본 적이 없는 듯해 정리해두려 한다. 2. JDBC란? JDBC란 Java Database Connectivity의 약자로, 자바(Java)에서 데이터베이스에 접근할 수 있게 해주는 API이다. Java는 DBMS(Oracle, MySQL 등)의 종류에 관계 없이 하나의 JDBC 인터페이스I를 이용해 데이터 베이스 작업을 처리하게 된다. 각 데이터베이스 벤터 혹은 서드파티에서 이러한 JDBC 인터페이스를 구현한 드라이버를 제공하고 있다. JDBC는 아래와 같은 역할을 수행한다. Java 코드에서 데이터베이스 서버 접속 SQL문을 구성하고 데이터베이스 서버에서 실행 데이터베이스에서 처리한 결과를 가져옴 데이터베이스 정보 가져옴 3. Oracle JDBC와 JDK 버전 호환성 먼저, ojdbc의 버…

September 04, 2022
데브옵스
220902 링글(Ringle) 9회차 수업 후기

1. 기본정보 일정 2022년 9월 3일 05:30 (40분) 튜터 정보 튜터 이름: Jesse 튜터 대학 / 전공: University of Virginia / Computer Science 2. 사전 준비 1. Article: The Tiara Syndrome 2. Key Expressions manifest (감정, 태도, 특질을 분명히) 나타내다, 드러내 보이다 display or show by one’s acts or appearance; demonstrate incompetence 무능; 기술부족 inability to do something; ineptitude 3. Questions Q1. Are you familiar with imposter syndrome? Q4. How would you advise your colleague to help them promote themself? Q5. What are the skills that you are most con…

September 03, 2022
english
220901 링글(Ringle) 8회차 수업 후기

1. 기본정보 일정 2022년 9월 1일 20:00 (40분) 튜터 정보 튜터 이름: Kimberly 튜터 대학 / 전공: Vanderbilt University / Computer Science 2. 사전 준비 1. Article: Amazon’s Work Culture 2. Key Expressions cull 고르다, 도태시키다, 감축하다 to select from a large quantity or to reduce a population by way of slaughtering qualm 불안감, 두려움 a sense of fear, uneasiness, and doubt about one’s one decision or conduct 3. Questions Q1. Share your English learning goals for 2022. Q3. What are your study plans to achieve these goals? Q9. Why are you int…

September 02, 2022
english
220831 링글(Ringle) 7회차 수업 후기

1. 기본정보 일정 2022년 8월 31일 05:00 (40분) 튜터 정보 튜터 이름: Ryan 튜터 대학 / 전공: Emory University / Computer Science 2. 사전 준비 1. Article: 2022 English Study Plans 2. Key Expressions out of school 학교를 안다니는, 학교를 떠난 if you are out of school, you don’t attend school and therefore free to work willpower 의지 the determination to do something or restrain impulses 3. Questions Q1. Share your English learning goals for 2022. Q3. What are your study plans to achieve these goals? Q9. Why are you interested in studying or…

September 01, 2022
english
220830 링글(Ringle) 6회차 수업 후기

1. 기본정보 일정 2022년 8월 30일 20:00 (40분) 튜터 정보 튜터 이름: Bilal 튜터 대학 / 전공: University of Miami / Computer Science 2. 사전 준비 1. Article: Goodbye Internet Explorer 2. Key Expressions bundle 함께 가다, 함께 묶다 to come with or as part of other things iteration 반복을 통한 업그레이드 작업, 소프트웨어 등의 새로운 버전 the repetition of a process or utterance with the intention of improving it, or the result of such repetition revitalization 새로운 활력; 경기 부양화 the process of making something grow, develop, or become successful again 3. Questi…

August 31, 2022
english
220829 링글(Ringle) 5회차 수업 후기

1. 기본정보 일정 2022년 8월 28일 20:00 (40분) 튜터 정보 튜터 이름: Clare 튜터 대학 / 전공: Stanford University / Computer Science 2. 사전 준비 1. Article: Career Prospect 2. Key Expressions pursue a career 직장을 구하다 to seek or find a job alignment 일치 (방향성의) arrangement in a straight line, a position of agreement 3. Questions Q1. Which subjects did you enjoy the most in school? Why? Q2. What did (or do) you study in college? Why did you choose that major? Q3. Why do you think majors and careers don’t always align? 3. 복습 Q1. …

August 30, 2022
english
220828 링글(Ringle) 4회차 수업 후기

1. 기본정보 일정 2022년 8월 28일 19:30 (40분) 튜터 정보 튜터 이름: Rushd 튜터 대학 / 전공: The State University of New Jersey / Computer Science 2. 사전 준비 1. Article: Notion’s Growth Notion has captured the attention of millennials and Gen Zers and its explosive growth tells us that it got it right with the market, both aesthetically and functionally. 2. Key Expressions intuitive 직관적인 based on what one feels to be true That said 그렇긴 하지만 even so 3. Questions Have you used Notion before? Do you prefer digital note-takin…

August 29, 2022
english
그림으로 배우는 알고리즘 제 6장: 그 외의 알고리즘들(1)

제 6장: 그 외의 알고리즘들(1) Column: 관계형 데이터베이스를 이용한 정렬과 검색 관계형 데이터베이스: 대량의 데이터를 효율적으로 처리(개발과 유지보수 용이) 프로그램을 두개의 역할로 나눠 분담하게 할 수 있기 때문 프로그램을 실행하는 코드 데이터 관리 데이터베이스를 활용해 특정 데이터를 정렬하거나 검색 → SQL 언어 사용 SQL문의 지식과 질 좋은 알고리즘의 학습으로 데이터를 효율적으로 검색하거나 정렬할 수 있다. 66. 미분을 활용해 고차 방정식의 해를 구하는 ‘뉴턴법’ 뉴턴법: 함수 f(x)가 x축과 만날 때, f(x)와 도함수 f’(x)를 이용해 f(x)=0의 해 x를 구하는 알고리즘 예시: $x^2=k$ 일때, $x=±\sqrt{k}$ 이므로, $f(x)=x^2-k$의 올바른 해는 $k$이다. 위의 예시에서 $k$를 구하는 방법 함수 그래프의 임의의 점 $P_0(x_0, f(x_0))$ 에서의 점선의 기울기 → $f(x)=x^2-k$의 도함수 $f’(x)=2x$…

August 27, 2022
알고리즘
220826 링글(Ringle) 3회차 수업 후기

1. 기본정보 일정 2022년 8월 26일 21:00 (40분) 튜터 정보 튜터 이름: Yunji 튜터 대학 / 전공: Yale University / Computer Science & Economics 2. 사전 준비 1. Article: Is STEM the Only Path to Success 2. Key Expressions career 사회생활, 경력 a person’s job for a significant period of time foundation 토대, 기반 the lowest support; underlying basis 3. Questions What should one consider when choosing their major or career path? If you work in STEM, do you have a job that didn’t exist a century ago? If you don’t work in STEM, do you feel t…

August 27, 2022
english
220825 링글(Ringle) 2회차 수업 후기

1. 기본정보 일정 2022년 8월 25일 22:00 (40분) 튜터 정보 튜터 이름: Liz 튜터 대학 / 전공: Princeton University / Computer Science 2. 사전 준비 1. Article: Collaboration Software and Start-ups 2. Key Expressions go-to (도움을 얻기 위해) 찾는 사람[곳] a default or regular choice conglomerate 대기업 large enterprises or corporations in multiple industries necessary evil 필요악 something bad or malicious that is still important or required 3. Questions Have you ever used team collaboration tools such as Notion and Slack? What was your experien…

August 26, 2022
english
220824 링글(Ringle) 1회차 수업 후기

다음 달부터 미국계 CSP 사로 출근을 하게 되었는데, 영어를 사용한지 꽤 오래되어 그런지 많이 녹슨 듯 해 영어회화 앱을 통해 실력을 향상해보고자 한다. 링글(Ringle)이라는 플랫폼을 선택한 이유에 대해서는 별도 포스팅을 할 예정이지만, 입사 전에 덜컥 거금(?)의 강의를 신청한 이유는 링글의 “실리콘 밸리 챌린지” 때문. 나는 실리콘 밸리 챌린지 거의 끝물에 시작해서 참가자격을 얻으려면 어마어마하게 자주 수업을 들어야하지만, 최근 “IT회사에 간 문과 여자”라는 책을 읽고 나도 실리콘밸리에 가고싶다! 라는 생각이 들어 헐레벌떡 신청했다. 1. 기본정보 일정 2022년 8월 24일 20:00 (40분) 튜터 정보 튜터 이름: Rushd 튜터 전공: Computer Science 2. 사전 준비 1. Article: SaaS를 사용하는 것의 득과 실 SaaS stands for “Software as a Service” ↔ traditional software Pros and…

August 25, 2022
english
그림으로 배우는 알고리즘 제 5장 - 정렬과 검색 (9)

제 5장: 정렬과 검색(9) 64. 비교할 필요가 없는 문자열은 건너 뛰고 고속으로 검색하는 ‘KMP 알고리즘’ KMP(Knuth, Morris, Pratt) 알고리즘: 문자열 안에서 부분 문자열을 검색할 때, 부분 문자열로 검색에 실패한 위치를 바탕으로 다음번 검색 위치를 효율적으로 결정하는 알고리즘 실패함수에 다음과 같은 정보를 넘겨 각 조건에 따라 다음 번에 문자 비교를 시작해야 할 가장 효율적 위치를 구한다. 부분 문자열이 불일치된 문자의 위치 나열된 부분 문자열의 문자 데이터 예시: 문자열 STR “ABCABCDA’안에서 문자열 SUB “ABCD”를 찾을 경우 STR[0]~[2] 3문자와 SUB의 1문자부터 문자 3개가 일치하나 STR[3]의 ‘A’와 SUB 4번째 문자(’D’)가 불일치 여기서 문자열 SUB의 문자가 모두 다르므로, STR[1]~[2]의 (’BC’)와 SUB[2]의 ‘C’는 부분 문자열의 1번째 문자와 일치할 수 없다. 다음에는 STR[3]~과 SUB[…

August 24, 2022
알고리즘
그림으로 배우는 알고리즘 제 5장 - 정렬과 검색 (8)

제 5장: 정렬과 검색(8) 62. 정렬된 데이터 안에서 고속 검색하는 이진 검색(바이너리 서치) 바이너리 서치: 검색할 데이터 열이 오름차/내림차 순으로 이미 정렬되었다면 빠르게 검색할 수 있음 검색할 데이터 열의 중앙값 M1을 기준점으로 만든다. M1의 값이 찾고자하는 Mt와 일치할 때까지 검색 범위를 좁혀간다. 중앙 값 M2, 그 중앙의 중앙의 중앙 값 M3 등을 T와 비교해 일치할때까지 검색 범위를 좁혀간다. 예시: 배열 DATA에 오름차순으로 저장된 N개의 데이터 중 원하는 데이터 T를 찾아내기 1단계: 중앙위치 M ⇒ N/2로 만듬 2단계: 검색범위 안 데이터 개수가 1개 이상일 경우 3~4단계 반복 3단계 T = DATA[M]일 때 → 데이터를 찾아냈으므로 반복 중단. T < DATA[M]일 때 → DATA[M] 및 DATA[M]의 오른쪽(큰 값)에 데이터 T는 절대 없으므로, 검색 범위를 M보다 왼쪽(작은값)으로 한다. T > DATA[M]일 때 → DATA[M] 및…

August 23, 2022
알고리즘
그림으로 배우는 알고리즘 제 5장 - 정렬과 검색 (7)

제 5장: 정렬과 검색(7) 60. 검색이란 여러 개의 데이터 안에서 원하는 데이터를 찾아내는 것 검색: 여러 개의 데이터 안에서 원하는 데이터를 찾아내는 알고리즘. 정렬만큼 빈번히 사용되는 중요 요소 예시 카드번호로 사용자 정보를 검색해 사용자가 쇼핑을 할 수 있는 지 여부를 판별 진찰권의 환자 ID로 전자 의료 기록을 찾아냄 키워드가 적힌 사이트들을 전세계 웹사이트 중에서 찾아내 목록을 표시 검색 알고리즘의 종류 순차 검색(리니어 서치) 이진 검색(바이너리 서치) 간단한 문자열 검색 KMP 알고리즘을 사용한 문자열 검색 BM 알고리즘을 사용한 문자열 검색 61. 처음부터 끝까지 샅샅이 데이터를 비교하는 순차 검색(리니어 서치) 순차 검색(리니어 서치: Linear search): 랜덤으로 나열된 데이터 열 안에서 원하는 데이터를 찾기 위해 원하는 데이터와 일치하는지 여부를 1번째 데이터부터 조사하는 방법 N개의 데이터 중 원하는 데이터를 찾기까지 평균적으로 N/2 번 비교해야하…

August 22, 2022
알고리즘
오픈소스 컨트리뷰션 아카데미(쿠버네티스 한글화) - CNCF Glossary 슬랙 가입하기

1. 배경 상황 2022년도 오픈소스 컨트리뷰션 아카데미에서 쿠버네티스 한글화 프로젝트의 Challengers 프로그램을 수료하고, Masters 프로그램을 시작하게 되었다. Masters 프로그램의 첫 스타트는 쿠버네티스의 관리주체인 CNCF(Cloud Native Computing Foundation)의 또 다른 하위프로젝트, Glossary(용어집) 프로젝트에 기여해보는 것이다. 그리고 Glossary 프로젝트 참여의 첫 번째 단계는 바로 슬랙에 참여하는 것. 사실 CNCF나 쿠버네티스 프로젝트에 참여하기 위해 슬랙과 같은 소통 채널에 가입하는 것이 필수는 아니지만, 해당 프로젝트를 관리하는 멤버분들이 운영 방식에 대한 논의나 공지를 올릴 때가 있어 프로젝트에 대한 이해도를 높일 수 있다. 또한, PR을 빠르게 머지하기 위해 리뷰를 요청하거나, 멤버십 가입을 위해 voting을 요청할 경우 등 내가 필요한 사항을 요청할 때에도 사용할 수 있는 소통 채널이니 만약 해당 오픈소스…

August 21, 2022
OSSCA
그림으로 배우는 알고리즘 제 5장 - 정렬과 검색 (6)

제 5장: 정렬과 검색(6) 58. 기존 데이터와 크기를 비교해 데이터를 2등분하는 퀵정렬 퀵 정렬: 정렬에 소요되는 시간이 매우 짧은 고속 알고리즘(정렬할 데이터 수가 많을 경우 단순 교환 정렬, 단순 삽입 정렬보다 처리속도가 빠름) 데이터 열 중 임의의 데이터 P(기준값)을 선택 P보다 작은값을 하나, 큰 값을 하나로 묶어 새로운 데이터열 생성 데이터 P의 위치를 고정시키는 작업이 중요 예시: 11개의 데이터열을 퀵정렬을 통해 오름차순 정렬 임의의 데이터를 하나 골라 P라는 이름을 붙인다 나머지 데이터 중 P보다 작은 데이터 → S열 P보다 큰 데이터 → L열 예를 들어 P보다 작은 데이터가 3개, 큰 데이터가 7개일 경우 정렬순서는 아래와 같다. ([S1] [S2] [S3]) [P] ([L1] [L2] [L3] [L4] [L5] [L6] [L7]) 이 때 P의 위치를 4번째로 고정 시키는 것이 중요하다. 동일한 작업을 S열, L열에 적용한다(임의의 값 Ps, Pl을 골라 정렬…

August 20, 2022
알고리즘
오픈소스 컨트리뷰션 아카데미(쿠버네티스 한글화) - 쿠버네티스 오래된(outdated) 문서 업데이트하기

2022년도 오픈소스 컨트리뷰션 아카데미의 쿠버네티스 한글화팀에서 한글화 프로젝트 진행 중, 번역이 되지 않은 문서의 한글화 뿐만 아니라 이미 번역이 된 한글 문서에 대해서도 원문의 변경사항에 대해 업데이트를 진행해야한 다는 것을 알게되어 진행 방법을 정리해 포스팅으로 올려보았다. 1. 쿠버네티스 한글 문서 중 오래된(Outdated) 문서 관리 방식 현재 쿠버네티스 공식문서 한글화 팀(Kubernetes SIG Docs localization - Korean)에서는 diff_l10n_branches.py라는 스크립트를 이용해 이전 브랜치와 현재 브랜치의 차이점을 리포트 형식으로 뽑아낸 뒤, 해당 내용을 이슈(예시)로 올려 태스크를 할당하는 방식으로 업데이트를 진행하고있다. 위의 스크립트 출력결과의 제일 하단을 보면 원문 문서(영문)의 업데이트 내용을 반영할 때 활용할 수 있는 git 명령어에 대해 안내가 나와있다. 2. 쿠버네티스 한글 문서 중 오래된(Outdated) 문서 업데…

August 19, 2022
OSSCA
Git/Github - upstream이란? upstream 원격 저장소 추가하는 방법

1. 배경 상황 최근 쿠버네티스 한글화 프로젝트를 비롯한 오픈소스 프로젝트에 기여를 진행하고 있는데, 필요할 때 매번 관련 명령어를 찾기 귀찮아서(?) 블로그에 기록해놓으려고 한다. 2. upstream이란? 쿠버네티스 공식문서와 같은 오픈소스 프로젝트의 경우에는 작업자가 로컬에서 바로 원본 저장소로 코드를 push하는 형태가 아니라 개인 원격 저장소(ex. 깃허브)에 fork(소스코드를 복사하는 개념과 유사하다고 생각하면 된다) 한다. 그리고 로컬에서 작업한 내용을 먼저 개인 원격 저장소에 push한 뒤, 원본 저장소에 pull request(repository 측에서 내 수정사항을 당겨받아(pull)달라는 요청)를 올려 관리자의 승인을 받아 반영을 하게 된다. 이 때, 원본 브랜치를 , 내 개인 원격 저장소를 이라고 한다. 이렇듯, 은 일반적으로 fork한 원본 저장소를 뜻하고, 은 fork한 저장소를 뜻하게 된다(다만 fork를 하지 않고, 원본 저장소에 작업자가 바로 pus…

August 18, 2022
데브옵스
MacOS/Linux - CLI환경에서 디렉터리 구조 한눈에 보는 방법(tree 명령어 다운로드)

최근 Django 튜토리얼에 따라 실습을 진행하고 있는데, IDE외에 CLI도 꽤 사용하고 있어서 CLI환경에서 디렉터리 구조를 한 눈에 보고 싶어 를 다운받았다. 는 CLI 환경에서 디렉터리 구조를 표시해주는 패키지로 MacOS나 Ubuntu의 경우 기본설치가 되어있지 않아 별도로 다운받아야 한다. 1. 설치 방법 macOS의 경우 패키지 매니저인 로 간단하게 를 다운로드 받을 수 있다. 리눅스의 경우 마찬가지로 혹은 과 같은 패키지 매니저를 이용해 다운로드 받을 수 있다. 2. 사용 예시 디렉터리 구조를 파악하고 싶은 디렉터리로 이동해 tree 명령어를 사용하면 된다.

August 17, 2022
데브옵스
GCP - Cloud Study Jam Korea GKE 중급

이번에 Google Cloud Platform 클라우드 스터디잼 GKE 중급을 신청하게 되었는데, 강의를 들으며 정리한 내용을 올려보려 한다. 1. 클라우드 컴퓨팅과 구글 클라우드 클라우드 컴퓨팅의 특성 온디맨드 & 셀프서비스: 필요한 처리능력, 스토리지, 네트워크를 사람의 노력 없이 확보 수 있다. 넓은 네트워크 액세스: 어디서나 네트워크를 통해 리소스에 접근 리소스 풀링: 제공업체에서 대규모 풀의 리소스를 고객에게 할당(규모의 경제) 리소스 탄력적 공급: 리소스가 추가로 필요하면 신속히 확보할 수 있고 적게 필요하면 축소 측정된 서비스: 서비스를 사용하거나 예약하는 만큼만 지불 Google Cloud Platform(GCP) 구글 클라우드는 다양한 서비스를 제공한다. 예를들어 코드를 클라우드에서 실행하고 싶을 경우, 아래와 같은 컴퓨팅 리소스 옵션을 제공한다. Compute Engine: 주문형 가상 머신을 실행하게 해 주는 Google Cloud Infrastructure-…

August 16, 2022
클라우드
그림으로 배우는 알고리즘 제 5장 - 정렬과 검색 (5)

제 5장: 정렬과 검색(5) 56. 정렬된 여러 개의 데이터 열을 합체시키는 병합(merge) 병합(Merge)알고리즘을 활용한 정렬 알고리즘 → 병합 정렬 병합 알고리즘이란? 정렬된 여러 개 데이터 열들을 정렬된 하나의 데이터 열로 만드는 알고리즘. 예시 데이터 열 A, …, A1, A2, A3, …, Aj 데이터 열 B, …, B1, B2, B3, …, Bk 데이터 열 C, …, C1, C2, C3, …, Cm → 위 세개 열을 병합해 하나의 정렬된 데이터 열 P(P1, P2, P3, … Pn)을 생성 이 때 P의 1번째 데이터, 즉 데이터 열 A, B, C 에서의 최소값은 각 데이터열이 오름차 순으로 정렬되어있으므로 반드시 A1, B1, C1중 하나이다. 따라서 P1 = A1, B1, C1의 크고 작음만 따지면 구할 수 있다 B1이 최소값이라면 b1을 꺼내 P1에 넣는다. B2 가 데이터 열 B의 첫번째 데이터가 된다 P2의 값은 A1, B2, C1 중 하나이다. 데이터가 없…

August 15, 2022
알고리즘
그림으로 배우는 알고리즘 제 5장 - 정렬과 검색 (4)

제 5장: 정렬과 검색(4) 54. 정렬된 데이터를 비교해 올바른위치에 삽입하는 단순 삽입 정렬 단순 삽입 정렬: 데이터열 안의 특정 데이털르 기준으로 해당 데이터보다 앞에 위치하는 데이터들과 차례로 비교해 해당 데이터를 열 안에서의 정렬조건과 일치하는 위치에 삽입해 데이터를 정렬하는 알고리즘 정렬 순서 가정: 단순 삽입 정렬 오름차순 정렬. 배열응ㄹ 정렬된 부분(앞) 및 정렬되지 않은 부분(뒤)로 나누어 처리 시작 시 정렬된 부분은 1번째 데이터 1개, 정렬되지 않은 부분은 2번째 이후의 모든 데이터. 데이터 열(D0, D1, …, Dn)에서 정렬 부분은 D0~Di-1이며, 정렬되지 앙ㄴㅎ은 부분의 1번째 데이터를 Di(1 ≤ i ≤n) 1단계; k=0으로 만든다 2단계: k < i 일동안 3~4 단계를 반복 3단계: Dk > Di일때 반복처리 종료 4단계: k를 1 증가(다음 데이터와 비교 위함) 5단계: W에 Di를 임시 저장(6단계에서 Di 값을 덮어쓰므로 임시저장) 6단계…

August 14, 2022
알고리즘
그림으로 배우는 알고리즘 제 5장 - 정렬과 검색 (3)

제 5장: 정렬과 검색(3) 52. 최소 값(최대 값)을 골라 이미 정렬된 마지막 요소와 교환하는 단순 선택 정렬 1~100 숫자가 적힌 카드를 오름차순으로 정렬할 때의 작업 순서 카드 중 가장 숫자가 작은 카드를 찾는다 1번의 카드를 오름차 순으로 나열하는 곳 왼쪽으로 옮긴다. 남은 카드 중 가장 숫자가 작은 카드를 찾는다 3번 카드를 오름차 순으로 정렬하는 카드의 끝에 둔다. 정렬할 데이터가 저장된 배열 DATA를 오름차순으로 정렬할 때의 순서 1단계; 정렬되지 않은 부분 안에서 최소 값을 찾는다 2단계: 최소값을 선택해 정렬되지 않은 부분의 1번째 요소와 교환한다(이 작업으로 최소 값을 정렬된 부분의 마지막 요소로 만든다) 3단계: 정렬되지 않은 부분의 시작 위치를 1칸 뒤로 옮긴다(이 작업으로 정렬되지 않은 부분의 범위를 하나씩 줄인다) 4단계: 정렬되지 않은 부분의 요소 수가 1일 될 때까지 1~3단계를 반복한다. 53. 이웃한 데이터들을 교환해 나가는 단순 교환 정렬(버…

August 13, 2022
알고리즘
그림으로 배우는 알고리즘 제 5장 - 정렬과 검색 (2)

제 5장: 정렬과 검색(2) 50. 다른 배열(bucket)에 데이터를 저장하고 정렬하는 버킷 정렬 버킷 정렬: 가장 간단한 정렬 알고리즘이나 장소적 자원(배열의 크기)를 많이 소모한다. 정렬 순서 정렬할 데이터 중 가져올 수 있는 값의 범위만큼 버킷을 준비 정렬할 데이터를 버킷 번호에 맞춰 저장 모든 데이터를 버킷에 넣은 후, 1번째 버킷부터 차례대로 버킷 데이터를 가져옴 정렬 순서 1단계; 버킷 역햘을 할 배열 BUCKET을 준비하고 전체 내용을 Empty 값으로 초기화 2단계: 정렬할 배열(N개)의 첨자를 저장하는 저장하는 변수 I를 0으로 초기화 3단계: I가 N미만일 경우 아래의 4~6단계 반복 4단계: VALUE에 DATA[I]를 ㄷ입 5단계: BUCKET[VALUE]에 VALUE를 대입 6단계 I의 값을 1 증가 7단계: BUCKET의 처음 요소부터 차례대로 값이 저장되어있을 경우 데이터를 꺼냄 Empty 값 → 데이터가 비어 있음을 나타내는 값으로 취급하는 데이터 외…

August 12, 2022
알고리즘
그림으로 배우는 알고리즘 제 5장 - 정렬과 검색 (1)

제 5장: 정렬과 검색(1) 48. 정렬(sort)이란 대상을 특정한 규칙에 따라 정렬하는 것 데이터 → 사물(객체)에 부여한 특성 예: 학생 객체의 특성 → 이름, 키, 기말고사 성적 등 정렬(sort): 특정한 사물이 가진 특성을 데이터 삼아 여러 개의 사물을 정렬 시키는 처리 정렬 순서의 종류 오름차순: 작은 순서대로 나열하기 내림차순: 큰 순서대로 나열하기 49. 정렬 알고리즘에는 다양한 종류가 있다 [정렬 알고리즘의 종류] 버킷 정렬 최 대 값의 개수만큼 버킷을 준비한 다음, 그 곳에 데이터를 저장 및 정렬 기수 정렬 숫자의 각 자리를 기준으로 차례대로 데이터 정렬 단순 선택 정렬 데이터 중에서 최소 값(또는 최대 값)을 찾아 1번째 요소 (도는 마지막 요소)의 데이터와 교환 단순 교환 정렬(버블 정렬) 이웃한 데이터끼리 크고 작음을 비교해 올바른 위치로 데이터 이동 단순 삽입 정렬 정렬할 데이터를 이미 정렬된 데이터들 사이의 올바른 위치에 삽입한다. 셸 정렬 정렬할 데이…

August 11, 2022
알고리즘
그림으로 배우는 알고리즘 제 4장 - 기본적인 알고리즘(6)

제 4장: 기본적인 알고리즘(6) 46. 두 변수의 값을 교환할 때는 임시 변수를 사용한다. 변수 X와 Y의 값을 교환 하려면, 아래 순서대로 하면 교환할 수 없다. 변수 Y에 변수 X 값 대입 변수 X에 변수 Y 값 대입(이미 변수 X의 값은 Y값으로 덮어씌워짐) 임시변수를 이용해 값을 임시로 저장해야한다. 1단계: 변수 W에 변수 Y 값 대입 2단계: 변수 Y에 변수 X 값 대입 3단계: 변수 X에 변수 W 값 대입 47. 두 수의 최대공약수는 유클리드 호제법으로 구한다 최대공약수: 0이 아닌 정수들의 공통된 약수 중 가장 큰 수 유클리드 호제법으로 구하면 된다. 호제법: 2개의 수가 서로 나누는 것 정수 X와 Y(X ≥ Y)가 주어졌을 때 X를 Y로 나눈 나머지를 R이라고 하면, X와 Y의 최대공양수는 Y와 R의 최대공약수와 같다. 그러나 X와 0이 남았을 경우 최대공약수는 X로 한다. 정수 X와 Y(X ≥ Y)의 최대공약수를 변수 GCD에 구하는 알고리즘 1단계: 변수 R에…

August 10, 2022
알고리즘
그림으로 배우는 알고리즘 제 4장 - 기본적인 알고리즘(5)

제 4장: 기본적인 알고리즘(5) 44. 시간의 크고 작음을 비교하려면 단위를 초 단위로 통일한다 시간의 크고작음을 계산할 때에는 시간, 분, 초 순서대로 비교하는 알고리즘으로 구할 수도 있지만 초 단위로 시간을 통일시켜 비교하는 것이 더 좋다(컴퓨터는 연산에 특화 되었기 때문) 시 분 초를 초단위로 변환하는 계산식 H시 M분 S초 = H3600 + M60 + S 예: 6시 32분 12초(A) 7 7시 10분 52초(B) 63600 + 3260 + 12 = 32532 (A) 73600 + 1060 + 52 =25832 (B) 45. 시간차를 구할 때에는 초 단위로 바꾸어 뺄셈하고, 다시 시간으로 바꾼다 시간을 초단위로 바꾸는 식 H시 M분 s초 = H3600 + M60 + S 초 단위 값인 TIME을 H시 M분 S초로 변환 1단계: TIME을 3600으로 나눈 몫의 정수 부분 =H 2단계: TIME을 3600으로 나눈 나머지 값이 R 3단계: R을 60으로 나눈 몫이 M 4단계: …

August 09, 2022
알고리즘
Java의 static(정적)이란?

1. 배경상황 현재 프로젝트가 Java로 구성되어있어 자바 메모리 구조에 대해서는 이전에 개인적으로 공부한 적이 있다. 하지만 최근 새로 착수한 프로젝트가 static의 과도한 사용으로 메모리 이슈가 발생하고 있는 프로젝트라 static의 개념을 새로 학습하고, Java 메모리 구조에 대해 다시 정리해보려 한다. 2. Static(정적)이란? 영문을 그대로 직역하면 고정된이라는 뜻을 가지고 있는데, 실제로 static은 프로그램 시작 시 메모리에 고정적으로 할당되어, 프로그램이 종료될 때 해제된다. 이라는 키워드를 사용해 정적 변수(static variable) 과 정적 메서드(static method) 를 생성할 수 있다. 이 둘을 합쳐 정적 멤버(static member), 혹은 클래스 멤버(class member) 라고 부른다. 이렇게 생성된 정적 변수, 정적 메서드의 경우 클래스가 메모리에 올라갈 때 자동으로 생성된다. 즉, 인스턴스(객체) 생성 없이 바로 사용이 가능하다…

August 08, 2022
프로그래밍
블로그 리뉴얼(jekyll 에서 gatsby로)

gatsby(정적 웹사이트 생성기)에서 맘에 드는 테마를 발견해 gatsby로 이관하였다. 기존 포스팅은 아직 이관중.

August 08, 2022
etc
그림으로 배우는 알고리즘 제 4장 - 기본적인 알고리즘(4)

제 4장: 기본적인 알고리즘(4) 42. 배열 데이터의 최소 값을 구하려면 최소 값을 저장할 변수를 준비한다 최소값을 구하는 알고리즘은 최대값을 구하는 알고리즘과 유사하나 두 가지가 다르다 최소 값을 저장하는 변수의 초기 값 배열 요소의 비교 논리 최소 값을 구하는 순서 1단계: 최소 값을 저장하는 변수 MIN을 대상 데이터들의 최대 값보다 큰 값으로 초기화한다. 2단계: 첨자를 저장하는 변수 I를 0으로 초기화한다. 3단계: I가 N 미만이라면 4~5단계를 반복한다. 4단계: JUM[I] < MIN이라면, MIN에 JUM[I]를 대입한다. 5단계: I를 1 증가시킨다. 43. 배열 데이터에 등수를 매기려면 순위를 저장할 또 다른 배열을 준비한다. 등수를 구하는 방법 1단계: 배열 RANK의 모든 요소를 1로 초기화한다. 2단계: 첨자를 저장하는 변수 I에 0을 저장한다. 3단계: I이 N미만이라면 4~8단계를 반복한다. 4단계: 첨자를 저장하는 변수 J를 0으로 초기화한다. 5…

August 07, 2022
알고리즘
그림으로 배우는 알고리즘 제 4장 - 기본적인 알고리즘(3)

제 4장: 기본적인 알고리즘(3) 40. 배열 데이터의 평균 값은 반복 처리를 통해 합계와 개수를 구한 후 계산한다 배열의 끝에 저장된 보초 값으로 배열 데이터 개수를 관리하는 배열의 평균값 계산 배열의 합계와 배열의 개수를 구한 뒤 평균 계산 예시: 어떤 학급의 기말점수 (0~100)가 저장된 배열 JUM(배열 끝 보초값 —1)의 평균값은? 평균 = 총점 / 학급 인원 수 학급 인원 수 = COUNT (유효한 요소의 개수를 세는 변수) 총점 = SUM (배열 요소의 합계 값을 저장하는 변수) 1단계: 변수 COUNT와 합계를 저장하는 변수 SUM을 0으로 초기화한다. 2단계: 배열 JUM의 첨자를 저장하는 변수 I를 0으로 초기화한다. 3단계: JUM[I]이 보초 값(-1)을 가리키지 않는 동안, 다음의 4~5 단계를 반복한다. 4단계: Count에 1을 더하고 SUM에 SUM + JUM[I]를 저장한다. 5단계: I에 1을 더한다. 6단계: 평균 값을 저장하는 변수 AVE에 S…

August 06, 2022
알고리즘
그림으로 배우는 알고리즘 제 4장 - 기본적인 알고리즘(2)

제 4장: 기본적인 알고리즘(2) 38. 배열 데이터의 합을 계산하려면 더한 값을 저장할 변수를 준비한다 여러 데이터의 합을 구하는 처리 ⇒ 배열 합계 알고리즘 예시 시험점수의 총 합 계산 일일 입장객의 수를 통해 해당 월 전체 입장객 수 구하기 각 지점의 매출액을 합해 전 지점 매출액 구하기 데이터 N개의 합을 구하는 계산식 DATA[0] + DATA[1] + … + DATA[N-1] 다음과 같은 반복처리를 통해 구할 수 있다. 1단계: 합계를 저장하는 변수 SUM 을 0으로 초기화 2단계: 합계에 더하는 배열 요소를 가리키는 첨자를 저장하는 변수 I를 0으로 초기화 3단계: I가 N 미만이라면 다음 4~5단계를 반복한다 4단계: SUM + DATA[I]를 계산하여 그 값을 SUM에 대입한다 5단계: I의 값에 1을 더한다 39. 배열 안 요소의 개수를 구하려면 카운터를 준비한다 배열 데이터의 요소 개수 미리 고정 값으로 정함 다른 변수로 관리 배열 마지막 요소의 끝에 보초 값…

August 05, 2022
알고리즘
그림으로 배우는 알고리즘 제 4장 - 기본적인 알고리즘(1)

36. 1~N의 합을 구하려면 반복 처리한다. 1~N의 합은 다음 계산식으로 구할 수 있다. 1 + 2 + 3 + … + (N-1) + N 다음과 같이 반복처리를 통해 구할 수 있다. 1단계: 합계를 저장하는 변수 SUM을 0으로 초기화한다. 2단계: 합계에 더할 값을 저장하는 변수 VALUE에 1을 저장한다. 3단계: VALUE에 N 이하인 동안에 다음 4~5단계를 반복한다. 4단계: SUM + VALUE를 계산해 그 값을 SUM에 대입한다. 5단계: VALUE값을 1 증가시킨다. 37. 수열의 값을 유지하려면 배열을 사용한다 다양한 수열의 값을 유지하려면 배열을 사용하는 것이 가장 간단하다. 예: 피보나치 수열을 배열에 저장하고 유지하자 피보나치 수열: n번째(n ≥ 0)의 값을 Fn이라고 했을 때, 아래 조건을 만족하는 수열. F0=0 F1=1 Fn+2 = Fn + Fn+1 (n≥0) 1번째 요소부터 N개(n ≥ 2)의 피보나치 수열을 배열 F에 저장하는 알고리즘은 아래와 같…

August 04, 2022
알고리즘
그림으로 배우는 알고리즘 제 4장 - 자료구조 (7)

1. 그림으로 배우는 알고리즘 제 3장: 자료구조 (7) 35. 정점과 간선으로 항목들의 관계를 그림으로 표현한 것이 그래프 그래프: 2개 이상의 항목이 어떤 관계를 맺고 있는지 주목하고 그 관계를 그림으로 표현한 것. 정점(노드): 표현하는 항목 간선(Edge): 각 항목들의 관계를 표현하는 선 그래프의 간선에는 방향성이라는 특성을 부여할 수 있다 ⇒ 방향있는 그래프 (ex. 일방통행) 방향성이 없는 간선 ⇒ 방향없는 그래프 간선에 가중치(비용)이 있는 그래프. ⇒ 가중 그래프 칼럼. BASE를 0으로? BASE를 1로? 1번째 요소 번호를 1로 정한 프로그래밍 언어 컴퓨터 개발 초창기의 프로그래밍에 자주 사용되던 언어들: Fortran, Pascal, Basic(초기형) 1번째 요소를 0으로 정한 프로그래밍 언어 현재 주류 언어들 C, C++, Java, C#, VisualBasic(BASIC)

August 03, 2022
알고리즘
쿠버네티스(Kubernetes) Pod to Local 파일 복사하는 방법

1. 배경 상황 쿠버네티스 기반 컨테이너 마이그레이션 프로젝트에서 Pod 내의 파일을 local로 다운받아달라는 요청이 들어왔다. 이전 담당 시스템에서도 비슷한 요청(로그 파일을 다운받아달라는 요청)이 있었으나 그 때 당시 알아보았을 때에는 다운로드가 되지 않아 다른 방법을 취했었는데, 이번에 요청을 받고 알아보니 당시와는 환경이 달라 아주 간단하게 파드(Pod)에서 로컬(local)로 파일을 다운로드 받을 수 있었다. 참고로 이전 담당시스템에서 local 복사가 불가했던 이유는 시스템에서 내가 kubectl을 사용할 수 없었기 떄문(kubectl을 사용할 수 있는 권한이 없었기 때문)이었다. 이 때에는 로컬 다운로드 대신 해당 파일을 파드에 마운트해 둔 NAS로 옮겨 운영팀에서 직접 NAS에 접속해 확인 및 다운로드를 하실 수 있도록 처리 했었다. 2. 쿠버네티스 Pod - Local 환경간 파일 복사 쿠버네티스 파드에서 local로 파일을 복사하려면 명령어를 사용해주면 된다(…

August 02, 2022
데브옵스
깃헙(github) 중간 커밋 삭제하기(git rebase -i / git drop)

1. 배경 상황 오픈소스 컨트리뷰션 아카데미에서 쿠버네티스 한글화 프로젝트를 진행중인데, 커밋들이 섞여 올라가서 중간 커밋을 삭제해야하는 상황이 발생했다. 조금 더 구체적으로 설명하자면, 내가 한글화 작업을 진행할 때에는 task별로 이슈를 생성하고(혹은 이미 생성된 이슈에 코멘트를 달아 task를 할당 받고), 이슈별로 PR을 생성해 올리고 있다. 그리고 이슈별로 로컬 브랜치를 생성해 작업 내역들을 분리해 관리하고 있는데… 작업 도중에 외출하고 다녀와서 다른 브랜치로 전환해 작업하다보니 다른 이슈에 대한 작업 커밋을 같이 섞어 올려버렸다🤦 (PR을 생성하기 전에는 항상 git log와 git status를 생활화 하도록 하자…) 2. 해결 방법 순간 PR을 얼른 삭제하고 git reset으로 커밋내역을 싹 감아올린 다음에 새로 작업해서 올릴까 했지만 아무리 생각해도 너무 비효율적인 방법인 듯 해 구글링을 해보니 중간 커밋 내역만 삭제하는 방법이 있었다. 먼저 로 interac…

August 01, 2022
데브옵스
그림으로 배우는 알고리즘 제 3장 - 자료구조 (6)

1. 그림으로 배우는 알고리즘 제 3장: 자료구조 (6) 33. 부모 노드의 값이 자식 노드의 값보다 항상 적은 이진 트리는 힙(Heap) 힙(Heap): 각 노드의 값이 다음 조건을 충족하도록 관리되는 이진트리 부모 노드의 값은 항상 하위 노드 값보다 작다(또는 부모 노드의 값은 항상 하위 노드 값보다 크다) 첫번째 경우 자식 노드의 값은 둘 중 어느쪽이 크더라도 상관 없음. 위 조건에 따라 관리되는 힙은 뿌리 부분에 모든 값 중 가장 작은 값(또는 가장 큰 값)이 배치됨. 최소 값(또는 최대 값)을 효율적으로 구하는 용도에 적합. 힙을 구현할 때 일반적으로 배열을 사용. 배열 요소 번호 1번 = 힙의 뿌리요소. 깊이가 작은 쪽 → 큰 쪽 노드의 왼쪽 → 오른쪽 34. 해시 테이블은 배열과 리스트를 조합한 자료 구조 해시 테이블(Hash Table): 아래 2개 자료구조가 조합된 것 N개의 요소를 가진 루트 배열이라는 이름의 배열 루트 배열의 각 요소가 가리키는 리스트 먼저 …

July 31, 2022
알고리즘
그림으로 배우는 알고리즘 제 3장 - 자료구조 (5)

1. 그림으로 배우는 알고리즘 제 3장: 자료구조 (5) 31. 마지막 요소까지 이동하면 1번째 요소로 되돌아오는 링 버퍼 1차원 배열의 요소들ㅇ르 처음부터 마지막까지 순서대로 조회하려면 배열 요소를 조회할 때 첨자를 1씩 더해나가면 된다. 링 버퍼: 1차원 배열의 1번째 요소와 마지막 요소를 합쳐 배열 마지막 요소의 다음에도 요소가 존재한다고 만드는 자료구조 예 요소가 10개인 BUFFER라는 1차원 배열 ⇒ BUFFER[9]의 다음 요소를 BUFFER[0]으로 설정 32. 부모 하나에 자식 둘이 딸린 구조는 이진트리 이진트리: 다음 요소를 가리키는 포인터를 2개 가진 단방향 리스트 노드: 이진트리의 구성요소 부모 노드: 자식 노드를 2개 이상 가질 수 없다. 자식 노드: 하위에 자식노드가 있을 경우 부모노드가 된다. 뿌리/루트 노드: 부모노드가 없는 노드 잎/리프 노드: 자식 노드가 없는 노드 깊이: 뿌리에서 특정 노드로 도달하기까지 경로의 길이(루트 노드 = 0 기준)

July 30, 2022
알고리즘
오픈소스 컨트리뷰션 아카데미(쿠버네티스 한글화) - diff_l10n_branches.py 스크립트 실행해보기

오픈소스 컨트리뷰션 아카데미 쿠버네티스 한글화 프로젝트 3주차 Action Item 중 하나인 diff_l10n_branches.py 스크립트 실행해보기를 진행하고 기록으로 남겨보려 한다. diff_l10n_branches.py 스크립트는 쿠버네티스 한글화 프로젝트에서 마일스톤(약 3주 주기로 한글화 전용 개발 브랜치에서 k8s 메인 브랜치로 병합하는 주기)별로 기존에 번역된 문서 중 업데이트가 필요한 문서를 리포트형식으로 뽑아주는 스크립트이다. 따라서 마일스톤이 바뀔때마다 이 스크립트를 사용해 리포트를 뽑은 뒤, 이슈를 생성하여 컨트리뷰터들이 자율적으로 일감을 맡아 업데이트를 진행하게 된다. 1. 사전 준비 저장소를 개인 저장소로 fork한 뒤, fork한 저장소를 로컬에 clone해 놓는다(참고 링크). python3를 설치(macOS의 경우 brew로 다운로드)한다. 스크립트 실행에 필요한 모듈을 다운로드한다(참고 링크). website > scripts 하위에 위치한 …

July 29, 2022
OSSCA
아마존(Amazon)의 문서 작업 방식, 6 Pager란?

1. 왜 아마존은 파워포인트를 사용하지 않는가? 이전 제프 베조스가 컨설턴트를 고용한 뒤 프레젠테이션을 들었을 때, 복잡한 그림이 시선을 어지럽히기만 할 뿐 구체적 내용과 무엇을 제안하려는지는 명확히 알 수 없었던 경험에서 유래 되었다. 파워포인트로 만든 자료는 내용의 요점을 불렛 포인트로 나열했을 뿐으로, 발표자에 질문을 던져야 비로소 상세 내용을 구두로 설명하는 경우가 많다. 따라서 때로는 시간이 지난 후 자료를 읽었을 때 내용을 기억해 내기 어려울 때도 많기 때문에 아마존에서는 업무 문서를 작성할 때 A4용지 한 장 분량의 “1 Pager”와 “6 Pager”로 정리한다. 또한 문서를 이용해 새로운 아이디어를 제안하는 자리에서는 참석한 사람들 모두 15~20분 정도 읽는 시간을 가진다. 또한 문서를 읽은 후에는 페이지별 궁금한 점을 묻고 답하며 논의를 발전시킨다. 2. 업무 문서를 작성하는 5개 원칙 업무의 효율화 필요 정보를 참석자 전원에 미리 제공해 회의 시간을 단축하고…

July 28, 2022
etc
Python Django 튜토리얼(3)관리자 및 관리자 사이트 생성

1. Django 관리자 소개 💡Django 철학 직원 혹은 고객이 컨텐츠를 수정하기 위한 관리자 사이트를 생성하는 것은 지루한 작업이다. 따라서 Django에서는 모델에 대한 관리용 인터페이스를 자동으로 생성한다. Django는 Lawrence Journal-World 신문사의 프로그래머가 처음 개발했다. 이런 태생적 이유로 “컨텐츠 게시자”와 “공개” 사이트의 구분이 명확하다. 사이트 관리자는 뉴스 기사, 사건, 스포츠 경기 결과 등을 시스템에 추가한다. 이렇게 추가한 컨텐츠는 “공개”사이트에 노출된다. Django는 사이트 관리자가 컨텐츠를 편집하는 통합 인터페이스를 생성하는 문제를 해결한다. 관리자 사이트는 사이트 방문자가 아닌 사이트 관리자를 위한 것이다. 1. 관리자 생성하기 관리자 사이트에 로그인 할 수 있는 사용자를 생성한다. 2. 개발 서버 시작 관리자 사이트는 기본으로 활성화 되어 있다. 서버가 동작하고 있지 않다면 다음 명령으로 실행해준다. 웹 브라우저를 열…

July 27, 2022
프로그래밍
Python Django 튜토리얼(2)데이터베이스 설치, API 실습

1. 데이터베이스 설치 settings.py를 열어보자. settings.py는 Django 설정을 모듈 변수로 표현한 보통의 Python 모듈이다. Django에서는 기본적으로 SQLite를 사용하도록 구성되어있으며(Python에서 기본으로 제공되어 별도 설치 불필요), 이번 실습에서는 SQLite를 활용하여 데이터베이스를 구성하도록 한다. 만약 다른 데이터베이스를 사용하고 싶은 경우 DATABASES의 키 값을 적절히 변경해준다(상세 설명은 공식문서를 참고한다). 1. settings.py설정 settings.py의 TIME_ZONE 설정값을 수정해 현재 작업하고 있는 시간대를 맞춰준다. settings.py의 INSTALLED_APPS는 현재 Django 인스턴스에서 활성화된 모든 Django 어플리케이션들의 이름이 들어있다. 앱들은 다수의 프로젝트에서 사용될 수 있고, 다른 프로젝트에서 쉽게 사용될 수 있도록 패키징하여 배포할 수 있다. INSTALLED_APPS에 기본적…

July 26, 2022
프로그래밍
Python Django settings.py의 SECRET_KEY 변경 및 분리하기

1. 배경 상황 Django 실습 내용을 Github 저장소에 업로드해서 소스코드를 관리하려고 새롭게 깃허브 저장소를 생성하고 코드를 올렸었다. 그런데 올리자마자 메일 알람이 울리는 것;;; 내용을 확인했더니 GitGuardian이라는 곳에서 온 “Django Secret Key exposed on GitHub”이라는 보안 알람 메일이었다. 깜짝 놀라서 소스코드를 뜯어봤더니 settings.py에 SECRET_KEY가 대놓고 들어있어서 얼른 github에 생성했던 저장소를 삭제했다(실습 시작한지 진짜 얼마 안되어서 다행이었음). 이 SECRET_KEY는 Django의 보안 관련 기능에 사용하는 값으로, 다음과 같은 경우에 사용된다. 가 아닌 다른 세션 백엔드를 사용하는 경우 혹은 기본 get_session_auth_hash()를 사용하는 모든 sessions. CookieStorage 혹은 FallbackStorage를 사용하는 모든 messages. 모든 PasswordReset…

July 25, 2022
프로그래밍
Python Django 튜토리얼(1)프로젝트/앱 생성하고 view 작성하기

“한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 강의의 Django 파트를 수강하고 있는데, 생각보다 설명이 생략된 부분이 많아 코드 따라치기만 하게 되는듯해 Django 공식문서의 튜토리얼을 따라해 이해도를 높인 다음 다시 들으려한다. 이 글은 Django 문서의 첫 번째 장고 앱 작성하기 튜토리얼을 참고해 실습한 내용을 정리한 것이다. 1. 산출물 Polls라는 이름의 간단한 설문조사 애플리케이션을 제작 Public: 사람들이 설문 내용을 보고 직접 투표할 수 있는 개방된 사이트 Private: 관리자가 설문을 추가, 변경, 삭제할 수 있는 관리용 사이트 2. 사전 작업 를 설치한다(Django 4.0버전 기준. Python 3.8이상 버전 설치 권장). Django가 설치가 잘 되었는지 확인하기 위해 아래의 명령어를 실행한다. 설치가 되지 않았다면 “No module named django”와 같은 에러가 발생한다. 3. 프로젝트 생성 프로젝트를 저장할 …

July 24, 2022
프로그래밍
Git에서 .gitignore가 적용이 되지 않는 에러 해결 방법

1. 배경 상황 며칠 전 에 대해 알아보는 포스팅을 올린 적이 있는데, 관련해서 를 적용했음에도 불구하고 커밋 내역에 해당 파일이 계속 남아잇는 문제가 발생해 해결 방법을 적어두려 한다. 2. 해결 방법 에 파일을 추가했음에도 불구하고 파일이 계속해서 커밋 목록에 남아 있는 것은 에 파일을 추가하기 전 stage에 올라갔던 파일들이 캐시가 남아있어 커밋 목록에 뜨게 되는 것이라고 한다. 따라서 해당 파일이 들어 있는 디렉터리로 이동한 후, 아래와 같이 캐시를 삭제해주는 명령어를 입력해주면 된다. ; 현재 디렉터리를 지정 이렇게 캐시를 지운 뒤, git add와 git commit으로 다시 커밋을 생성해주면 이제 가 제대로 적용되는 것을 확인할 수 있다.

July 23, 2022
데브옵스
Python 패스트캠퍼스 챌린지 71일차

오늘도 셀프 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 강의 1일 1강 포스팅 챌린지 :) 1. UserData 추가 Django는 프로젝트 생성시에 user 데이터베이스를 생성하기때문에 User 데이터베이스를 수정하기는 쉽지 않다. AbstractUser: 현재 사용하고 있는 유저를 추상화해서 PayPlan을 넣겠다라는 것. 두 가지 방법이 있음 class Users → 한 테이블에 쌓임 class UserDetail → 두 테이블에 쌓임 AbstrctUser로 유저에 추가정보를 넣게 될 경우 settings.py에서 파일 내용을 아래와 같이 수정해야한다. 위에 을 추가해 shortener의 Users 클래스를 사용할 것을 명시해주어야 한다(인증을 위해서 어떤 데이터/테이블을 사용할 것인지를 지정해주는 것). 패스트캠퍼스 강의 등록하기: https://bit.ly/3L3avNW #패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #캐시…

July 22, 2022
프로그래밍
Python 패스트캠퍼스 챌린지 70일차

오늘도 셀프 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 강의 1일 1강 포스팅 챌린지 :) 04. Django Database Modeling (2) 1. Database Modeling 지난 시간에 이어 PayPlan에 대해 모델링을 진행할 것 class로 models라는 모듈의 Model을 상속받아온다. 컬럼 이름 및 데이터 타입 정의(예: name → 컬럼 이름, CharField → 데이터 타입) price의 경우 미국 등의 경우 integer를 사용할 수 없으나 한국 원화의 경우 integer를 사용해도 무방. 실제로 코드에 적용해보자. SHRINKERS > shortner > models.py 파일을 아래와 같이 수정해준다. class를 추가해 준 뒤에는 잠시 주석처리 해둔다. Terminal > New Terminal로 새 터미널 창을 연 다음 아래 명령어를 실행해준다. 위 명령어를 통해 Django 프레임워크가 필요로 하는 데이터 베이스를 생성한…

July 21, 2022
프로그래밍
Python 패스트캠퍼스 챌린지 69일차

오늘도 셀프 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 강의 1일 1강 포스팅 챌린지 :) 03. Django Database Modeling(1) 1. DB 모델링이란? 어떤 Item에 속성데이터(의 포맷)를 사전에 정의하는 것 예: Jobs 이라는 Table에 각 Job의 정보를 정의 산업 연봉 근무지 수정일 생성일 2. Django Modeling Django에서 id는 기본 값(Primary Key: PK) 정의하지 않아도 자동 정의 (Django의 특수 기능) id외의 다른 컬럼을 PK로 사용하고 싶다면 primary key = true 해서 컬럼을 생성 & id 컬럼 생성되지 않음 외래 키(Foreign Key)를 사용하면 뒤에 xxxx_id를 자동 생성 예: Job에 위치를 추가하고 싶은데 위치가 다른 테이블에 있는 경우, location으로 정의해주면 location_id로 데이터 컬럼이 생성됨 3. Django DB 컬럼 타입 Django 3.…

July 20, 2022
프로그래밍
Git의 .gitignore란? (+사용방법)

는 지금까지 업무에서 종종 사용하고 있었는데, 집에서 Django 실습 진행하다가 를 사용할 일이 생겨 다시금 개념과 사용 방법을 정리해두려 한다. 1. .gitignore란? 프로젝트 내에 remote 저장소에 올리고 싶지 않은 파일이 있을 경우 Git에서 제외할 수 있는 설정 파일이다. 일반적으로 IDE tool과 관련된 설정파일(예를 들면 이클립스의 나 파일), 백업파일이나 로그, 컴파일/빌드가 완료된 파일, 시크릿 정보(AWS root 계정 접속 key나 Django secret key 등)을 제외할 때 사용한다. 2. .gitignore 사용법 .gitignore 파일은 항상 최상위 디렉터리에 존재해야 한다고 한다. .gitignore 파일을 생성 후, 제외할 파일명을 지정해주면 되는데, 여러 옵션을 사용할 수 있다. 위와 같이 제외할 파일을 지정한 뒤에는 GitHub과 같은 원격 저장소에 소스코드와 함께 를 push 해주면 적용된다.

July 20, 2022
데브옵스
Python 패스트캠퍼스 챌린지 68일차

오늘도 셀프 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 강의 1일 1강 포스팅 챌린지 :) 02. Django 프로젝트 시작 1. PEP8 Coding Convention (1) Coding Convention 여러 사람이 협업을 해도 모두가 읽기 편한 코드를 작성하기 위한 기본 규칙 한 줄의 문자열은 79자 DocString은 72자 snake_case(소문자_소문자) 사용 모듈 레벨 상수는 모두 대문자 ClassName은 Caplitalized Word(단어의 앞 철자만 대문자) 한줄로 된 if, try … except, for, while 구문은 사용하지 않는다. 하지만 Local Rule이 더 중요하다. (2) Django 에서의 Coding Convention 한 줄의 문자열은 119자 추천 DocString 은 72자 2. Zen of Python (1) PEP20 - Zen of Python Beautiful is better than ugly. …

July 19, 2022
프로그래밍
Python Django makemigrations No changes detected & No installed app with label 원인 및 해결

1. 배경 상황 패스트캠퍼스의 한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online 강의 중 Django 파트의 데이터베이스 모델 생성 실습을 따라하다가 아래와 같은 에러가 발생했다. 2. ‘No changes detected’ 에러 해결 방법 구글링을 해보니 뒤에 앱 이름을 명시해주면 해결 된다고 한다. 강의에서는 따로 앱 이름이 명시되지 않아 다른 사람들이 위 명령어를 성공했을 때 터미널에 발생하는 메시지와, 강의에서 보이는 명령어 성공 메시지를 대조해서 아래와 같이 앱 이름을 추측하여 명령어를 다시 실행해보았다. 이제는 라는 에러가 발생한다. 3. ‘No installed app with label’ 에러 해결 방법 에러메시지의 뜻을 풀이하면, ‘설치된 앱 중에 ‘shortener’라는 레이블을 달고 있는 앱이 없다’ 라는 뜻이다. 그렇다면 설치된 앱에 대한 정보는 어디에 저장되어있을까? 디렉터리의 섹션을 참고하면 된다. 내 프로젝트에서 해당 섹션에 적혀져있는…

July 19, 2022
프로그래밍
Python 패스트캠퍼스 챌린지 67일차

지난 달 말 쯤 패스트캠퍼스에서 진행하던 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 캐시백 챌린지가 끝났다. 하지만 강의는 아직 들을 것들이 많이 남아서…^^ 캐시백 리워드는 없지만 셀프(?)로 1일 1포스팅 챌린지를 재개해보려 한다. 01. Django 웹 프레임워크의 이해 1. Why Django? 파이썬 웹 프레임워크 순위 2위(1위 Flask, 3위 FastAPI) Django의 철학 Batteries Included: 필요한 것이 무엇이건 Django안에, 커뮤니티 안에 있다는 뜻 다양한 사용이 가능: 문서, SNS, 뉴스, 블로그 등 안전하다: ID/PW, 세션 관리, XSS, SQL Injection, Click Hijacking Shared-nothing Architecture: 확장성(의존성이 없음) ex. Very Maintainable - DRY(Don’t Repeat Yourself) - 불필요한 중복 코드 제거 2. Referenc…

July 18, 2022
프로그래밍
오픈소스 컨트리뷰션 아카데미(쿠버네티스 한글화) - 쿠버네티스 공식문서 한글화에 기여하는 방법(2)소스코드 복사 & 번역하기

참고: 이 포스팅은 유투브에 올라온 Kubernetes 오픈소스 컨트리뷰션 방법 소개 (한글화 기여를 통해 쿠버네티스에 참여하기, CNCG2020 발표) 및 [Youtube]초간단 쿠버네티스 문서 한글화 시작 가이드 영상, Kubernetes Contributor Cheatsheat, 쿠버네티스 문서 한글화 가이드 문서를 참조하여 직접PR을 올린 경험을 토대로 작성 된 자료입니다. 혹시 잘못된 부분이 있을 경우에는 메일(jinnypark9393@gmail.com)로 알려주시면 반영하도록 하겠습니다 😊 쿠버네티스 공식문서 한글화에 기여하는 방법 시리즈 쿠버네티스 공식문서 한글화에 기여하는 방법(1)사전준비 & 이슈 생성하기 쿠버네티스 공식문서 한글화에 기여하는 방법(2)소스코드 복사 & 번역하기 쿠버네티스 공식문서 한글화에 기여하는 방법(3)PR(Pull Request)생성 & CLA 서명 쿠버네티스 공식문서 한글화에 기여하는 방법(4)리뷰 내용 반영 & 승인 완료 1. 쿠버네티스…

July 17, 2022
OSSCA
그림으로 배우는 알고리즘 제 3장 - 기본적인 알고리즘(4)

그림으로 배우는 알고리즘 제 3장: 자료구조 (4) 29. N번째 요소의 참조가 빠른 것은 배열, 느린 것은 리스트 구조 N번째 요소 조회 예: 나열된 데이터에서 5번째 요소를 조회 배열 요소 번호를 사용해 바로 찾아낼 수 있다. ARRAY[5] 어떠한 요소를 조회하더라도 모든 시간적 비용은 동일하다. 리스트: 1번째 데이터부터 차례대로 끄능ㄹ 따라가야한다. 1번째 요소를 조회한다. 1번째 요소의 끈을 따라 2번째 요소를 조회한다. 2번째 요소의 끈을 따라 3번째 요소를 조회한다. 3번째 요소의 끈을 따라 4번째 요소를 조회한다. 4번째 요소의 끈을 따라 5번째 요소를 조회한다. ⇒ 요소의 수가 많을 수록 느려진다. 30. 데이터의 삽입/삭제가 빠른 것은 리스트, 느린 것은 배열 데이터 삽입 새로운 데이터를 순서대로 나열된 데이터 열의 특정 위치에 삽입 배열: 삽입 위치 다음에 존재하는 모든 데이터를 뒤로 이동시켜야 한다(예: 삽입 데이터 뒤에 1,000개 데이터 존재 시 데이터 …

July 16, 2022
알고리즘
그림으로 배우는 알고리즘 제 3장 - 기본적인 알고리즘(3)

제 4장: 기본적인 알고리즘(3) 40. 배열 데이터의 평균 값은 반복 처리를 통해 합계와 개수를 구한 후 계산한다 배열의 끝에 저장된 보초 값으로 배열 데이터 개수를 관리하는 배열의 평균값 계산 배열의 합계와 배열의 개수를 구한 뒤 평균 계산 예시: 어떤 학급의 기말점수 (0~100)가 저장된 배열 JUM(배열 끝 보초값 —1)의 평균값은? 평균 = 총점 / 학급 인원 수 학급 인원 수 = COUNT (유효한 요소의 개수를 세는 변수) 총점 = SUM (배열 요소의 합계 값을 저장하는 변수) 1단계: 변수 COUNT와 합계를 저장하는 변수 SUM을 0으로 초기화한다. 2단계: 배열 JUM의 첨자를 저장하는 변수 I를 0으로 초기화한다. 3단계: JUM[I]이 보초 값(-1)을 가리키지 않는 동안, 다음의 4~5 단계를 반복한다. 4단계: Count에 1을 더하고 SUM에 SUM + JUM[I]를 저장한다. 5단계: I에 1을 더한다. 6단계: 평균 값을 저장하는 변수 AVE에 S…

July 15, 2022
알고리즘
그림으로 배우는 알고리즘 제 3장 - 기본적인 알고리즘(2)

제 4장: 기본적인 알고리즘(2) 38. 배열 데이터의 합을 계산하려면 더한 값을 저장할 변수를 준비한다 여러 데이터의 합을 구하는 처리 ⇒ 배열 합계 알고리즘 예시 시험점수의 총 합 계산 일일 입장객의 수를 통해 해당 월 전체 입장객 수 구하기 각 지점의 매출액을 합해 전 지점 매출액 구하기 데이터 N개의 합을 구하는 계산식 DATA[0] + DATA[1] + … + DATA[N-1] 다음과 같은 반복처리를 통해 구할 수 있다. 1단계: 합계를 저장하는 변수 SUM 을 0으로 초기화 2단계: 합계에 더하는 배열 요소를 가리키는 첨자를 저장하는 변수 I를 0으로 초기화 3단계: I가 N 미만이라면 다음 4~5단계를 반복한다 4단계: SUM + DATA[I]를 계산하여 그 값을 SUM에 대입한다 5단계: I의 값에 1을 더한다 39. 배열 안 요소의 개수를 구하려면 카운터를 준비한다 배열 데이터의 요소 개수 미리 고정 값으로 정함 다른 변수로 관리 배열 마지막 요소의 끝에 보초 값 …

July 14, 2022
알고리즘
그림으로 배우는 알고리즘 제 3장 - 기본적인 알고리즘(1)

제 4장: 기본적인 알고리즘(1) 36. 1~N의 합을 구하려면 반복 처리한다. 1~N의 합은 다음 계산식으로 구할 수 있다. 1 + 2 + 3 + … + (N-1) + N 다음과 같이 반복처리를 통해 구할 수 있다. 1단계: 합계를 저장하는 변수 SUM을 0으로 초기화한다. 2단계: 합계에 더할 값을 저장하는 변수 VALUE에 1을 저장한다. 3단계: VALUE에 N 이하인 동안에 다음 4~5단계를 반복한다. 4단계: SUM + VALUE를 계산해 그 값을 SUM에 대입한다. 5단계: VALUE값을 1 증가시킨다. 37. 수열의 값을 유지하려면 배열을 사용한다 다양한 수열의 값을 유지하려면 배열을 사용하는 것이 가장 간단하다. 예: 피보나치 수열을 배열에 저장하고 유지하자 피보나치 수열: n번째(n ≥ 0)의 값을 Fn이라고 했을 때, 아래 조건을 만족하는 수열. F0=0 F1=1 Fn+2 = Fn + Fn+1 (n≥0) 1번째 요소부터 N개(n ≥ 2)의 피보나치 수열을 배열 …

July 13, 2022
알고리즘
IP(Internet Protocol)주소란?

1. IP주소란? IP(Internet Protocol)주소: 글로벌 단위에서 장치간의 통신이 가능하도록 도와주는 논리적 주소이다. 때때로 변할 수 있는 값이다. 소프트웨어 설정을 통해 장치에 할당된다. 비신뢰성과 비연결성이 특징으로, 전송 과정에서 패킷이 손상되거나 순서가 섞일 수 있으므로 TCP와 같은 상위 프로토콜을 이용해야한다. 2. MAC 주소란? MAC(Media Access Control) 주소: 기기(Device)마다 할당된 물리적인 주소이다. MAC주소는 이더넷 통신을 하기위해 사용되며, 다른 MAC주소와 겹치지 않는다. 변하지 않는 값이다. ARP(Address Resolution Protocol) 프로토콜을 이용해 IP주소를 MAC주소와 매칭한다. 총 48비트로 구성되며 :로 구분한다. 3. IP주소가 필요한 이유 현재는 세계에 장비가 매우 많기 때문에 MAC 주소로만 통신하기가 어렵다. 예를 들어, 한국의 A컴퓨터에서 미국에 있는 B컴퓨터로 가기 위해서 나…

July 12, 2022
CS
쿠키(Cookie), 세션(Session), 캐시(Cache)란?

기술면접에서 접했던 질문 중 ‘캐시에 대해 설명해달라’는 내용이 있었는데, 너무 짧게 대답한 듯 하여 다시 공부하고자 포스팅을 작성하게 되었다. 참고로 캐시 개념은 쿠키, 세션과 많이 연관지어 설명이 되어있어서 캐시 뿐만 아니라 HTTP의 특성과, 쿠키, 세션도 캐시와 함께 알아보도록 하겠다. 1. HTTP의 특징 HTTP 프로토콜은 Stateless와 Connectionless라는 두 가지 특성을 가졌다. (1) Stateless 클라이언트의 상태 정보를 가지지 않는 처리 방식이다. 클라이언트와 첫번째 통신에서 데이터를 주고 받았다 해도, 두번째 통신에서 이전 데이터를 유지하지 않는다. (2) Connectionless 클라이언트가 서버에 요청(request)을 했을 때, 그 요청에 맞는 응답(Response)를 보낸 후 연결을 끊는 처리 방식이다. 다만, HTTP/1.1 버전에서 연결을 유지하고, 재활용하는 기능이 Default로 추가되었다(keep-alive 값으로 변경 가…

July 11, 2022
CS
쿠키(Cookie), 세션(Session), 캐시(Cache)란?

기술면접에서 접했던 질문 중 ‘캐시에 대해 설명해달라’는 내용이 있었는데, 너무 짧게 대답한 듯 하여 다시 공부하고자 포스팅을 작성하게 되었다. 참고로 캐시 개념은 쿠키, 세션과 많이 연관지어 설명이 되어있어서 캐시 뿐만 아니라 HTTP의 특성과, 쿠키, 세션도 캐시와 함께 알아보도록 하겠다. 1. HTTP의 특징 HTTP 프로토콜은 Stateless와 Connectionless라는 두 가지 특성을 가졌다. (1) Stateless 클라이언트의 상태 정보를 가지지 않는 처리 방식이다. 클라이언트와 첫번째 통신에서 데이터를 주고 받았다 해도, 두번째 통신에서 이전 데이터를 유지하지 않는다. (2) Connectionless 클라이언트가 서버에 요청(request)을 했을 때, 그 요청에 맞는 응답(Response)를 보낸 후 연결을 끊는 처리 방식이다. 다만, HTTP/1.1 버전에서 연결을 유지하고, 재활용하는 기능이 Default로 추가되었다(keep-alive 값으로 변경 가…

July 11, 2022
CS
오픈소스 컨트리뷰션 아카데미(쿠버네티스 한글화) - 쿠버네티스 공식문서 한글화에 기여하는 방법(1)사전준비 & 이슈 생성하기

참고: 이 포스팅은 유투브에 올라온 Kubernetes 오픈소스 컨트리뷰션 방법 소개 (한글화 기여를 통해 쿠버네티스에 참여하기, CNCG2020 발표) 및 [Youtube]초간단 쿠버네티스 문서 한글화 시작 가이드 영상, Kubernetes Contributor Cheatsheat, 쿠버네티스 문서 한글화 가이드 문서를 참조하여 직접PR을 올린 경험을 토대로 작성 된 자료입니다. 혹시 잘못된 부분이 있을 경우에는 메일(jinnypark9393@gmail.com)로 알려주시면 반영하도록 하겠습니다 😊 참고로 쿠버네티스 공식 문서에 공헌하는 방법은 한글화가 되지 않은 영문 페이지를 한국어로 번역 한국어 페이지에서 오타 또는 틀린 내용의 수정 영문 페이지에서 오타 또는 틀린 내용의 수정 등 여러 방법이 있지만, 나는 첫 번째 방법인 한글화가 되지 않은 영문 페이지를 한국어로 번역하는 방법에 대해 설명하도록 하겠다. 쿠버네티스 공식문서 한글화에 기여하는 방법 시리즈 쿠버네티스 공식문서 …

July 10, 2022
OSSCA
오픈소스 컨트리뷰션 아카데미(쿠버네티스 한글화) - Hugo를 사용하여 로컬에서 웹사이트 실행하기(MacOS)

올해 7월 9일(토)부터 2022년도 오픈소스 컨트리뷰션 아카데미 중 “Kubernetes 한글화 컨트리뷰션 및 커뮤니티 참여” 프로젝트에 참가하게 되었다. 그 중 첫번째 과제는 kubernetes.slack.com 가입한 뒤 쿠버네티스 한글화 프로젝트와 관련된 , , 세 채널에 참여하는 것, 그리고 두 번째 과제가 README를 읽고 를 빌드해보는 것이다. 위의 Readme 문서를 살펴보면 로컬/컨테이너 환경에서 빌드하는 방법에 대해 설명되어있는데, 나는 로컬 빌드로 진행해보았다. 1. Hugo란? 쿠버네티스의 공식문서는 Hugo(확장 버전)라는 정적 사이트 생성기(Static Site Generator)를 이용해 만들어졌다. Hugo는 Jekyll, Hexo등과 마찬가지로 정적 웹사이트를 쉽게 만들 수 있게 해주는 생성기로, Go로 쓰여졌다(깃허브 블로그에 가장 많이 사용되는 Jekyll은 Ruby로 쓰여). 찾아보니 Hugo는 다른 정적 사이트 생성기에 비해 반응속도가…

July 09, 2022
OSSCA
마이크로서비스(Microservice)란?

1. 모놀리틱 아키텍처 vs 마이크로서비스 아키텍처 (1) 모놀리틱 아키텍처(Monolithic Architecture) 애플리케이션의 모든 구성 요소가 한 프로젝트에 통합되어있다. 기능별로 독립적이지 않다(예: 한 프로젝트 내에 기능을 폴더로 구분) (2) 마이크로서비스 아키텍처(Microservice Architecture) 하나의 큰 애플리케이션을 작은 애플리케이션으로 쪼개 변경과 조합이 가능하도록 만든 것. 기능별로 독립적인 서비스를 구성한다(예: 기능별 도커 컨테이너 생성) 마틴 파울러와 제임스 루이스에 의하면 마이크로 서비스는 아래와 같다. In short, the microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with light…

July 08, 2022
데브옵스
데이터베이스(Database) 인덱스(Index) 자료구조

1. 데이터베이스 인덱스(Database Index)란? 데이터베이스 테이블에 대한 검색 성능의 속도를 높여주는 자료구조 책에 있는 목차와 같은 개념으로, 인덱스에서 내가 원하는 데이터를 먼저 찾고 저장되어있는 물리적 주소로 찾아가게 된다. 👍 인덱스를 사용하는 이유 조건검색 Where 절의 효율성 향상 테이블 레코드는 순서 없이 저장되어 Where 절의 조건에 맞는 데이터를 찾을 때 처음부터 끝까지 다 읽게 된다(Full Table Scan) 인덱스 테이블은 데이터가 정렬되어 저장되어있어 Where 조건에 맞는 데이터를 빠르게 찾을 수 있다. 정렬 Order by 절의 효율성 향상 Order by는 부하가 많이 걸리는 작업(1차적으로 메모리에서 정렬 발생 & 메모리보다 작업이 큰 경우 디스크 I/O발생) 인덱스를 사용하면 이미 정렬이 되어있어 Order by에 의한 sort과정을 피할 수 있다. Min / Max의 효율적 처리 레코드의 시작값 & 끝 값 한 건만 가져오면 되기 때…

July 08, 2022
CS
API란? (정의, 종류, 장단점)

1. API란? API(Application Programming Interface): 요청과 응답을 사용하여 두 애플리케이션이 서로 통신하는 방법을 정의한 것이다. API 아키텍처는 클라이언트와 서버로 설명된다. 클라이언트: 요청을 보내는 애플리케이션 서버: 요청을 받는 애플리케이션 예를 들어, 기상청의 시스템에는 일일 기상 데이터가 들어있는데, 휴대폰의 날씨 앱은 API를 이용해 이 시스템과 커뮤니케이션하고 휴대폰에 매일 최신 날씨 정보를 표시한다. API 문서에는 개발자가 요청과 응답을 어떻게 구성하는지에 대한 방법이 들어있다. 2. API의 종류 (1) SOAP API 단순 객체 접근 프로토콜을 사용 XML을 사용하여 메시지를 교환 과거에 많이 사용되었던 API 유연성이 떨어진다. (2) RPC API 원격 프로시저 호출 API이다. 클라이언트가 서버에서 함수/프로시저를 완료하면 서버가 출력을 클라이언트로 다시 전송한다. (3) Websocket API JSON 객체를 사용…

July 08, 2022
CS
DAS, NAS, SAN이란? (정의, 차이점)

DAS, NAS, SAN은 모두 대표적인 스토리지의 종류이며, 각 스토리지는 연결 방식에 차이가 있다. 이번 포스팅에서는 DAS, NAS, SAN의 개념과 차이점에 대해 알아보자. 0. 스토리지(Storage)란? 컴퓨터의 데이터를 저장하는 역할을 수행한다. 컴퓨터 내부의 하드디스크와 유사한 역할을 수행한다고 생각하면 된다. 1. DAS(Data Attached Storage) 서버와 스토리지가 물리적으로 직접 연결되는 방식. 네트워크상의 다른 서버는 저장된 데이터에 액세스가 불가하다. 컴퓨터에 연결하는 외장 하드와 비슷한 개념이라고 생각하면 된다. 2022-07-06-Storage-DAS-NAS-SAN1 서버와 스토리지가 FC(Fiber Channel) cable로 직접 연결된다. 장점 속도가 빠르다(서버에 물리적으로 직접 연결하기 때문). 확장이 쉽다(구축이 쉽다). 단점 연결 수에 한계가 있다. 2. NAS(Network Attached Storage) DAS가 직접 연결…

July 06, 2022
CS
Python zsh: command not found: pip / zsh: command not found: virtualenv 에러 해결

1. “zsh: command not found: virtualenv” 에러 배경 상황 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 강의의 Django 환경 세팅 부분을 따라하다가 가상환경 설정 부분에서 에러가 발생했다. 찾아보니 가장 간단한 방법으로는 virtualenv를 삭제했다가 다시 깔아보라는 내용이 있어 시도해보았다. 2. “zsh: command not found: pip” 그런데 pip 명령어도 찾을 수 없다는 에러가 발생했다. 2. “zsh: command not found: pip” 해결 방법 1분 전에 pip로 Django를 깔았는데 이럴 수가 있나? 싶어서 Django 설치 때와 동일하게 pip 뒤에 버전명을 붙여 실행하니 해결되었다. 실행결과를 보니 virtualenv 자체가 설치가 안 된 모양. virtualenv가 실행이 되지 않은 게 당연했다. 2. “zsh: command not found: virtualenv” 해결 방법 를 이용해…

July 05, 2022
프로그래밍
그림으로 배우는 알고리즘 제3장 - 자료구조(7)

1. 그림으로 배우는 알고리즘 제 3장: 자료구조 (7) 35. 정점과 간선으로 항목들의 관계를 그림으로 표현한 것이 그래프 그래프: 2개 이상의 항목이 어떤 관계를 맺고 있는지 주목하고 그 관계를 그림으로 표현한 것. 정점(노드): 표현하는 항목 간선(Edge): 각 항목들의 관계를 표현하는 선 그래프의 간선에는 방향성이라는 특성을 부여할 수 있다 ⇒ 방향있는 그래프 (ex. 일방통행) 방향성이 없는 간선 ⇒ 방향없는 그래프 간선에 가중치(비용)이 있는 그래프. ⇒ 가중 그래프 칼럼. BASE를 0으로? BASE를 1로? 1번째 요소 번호를 1로 정한 프로그래밍 언어 컴퓨터 개발 초창기의 프로그래밍에 자주 사용되던 언어들: Fortran, Pascal, Basic(초기형) 1번째 요소를 0으로 정한 프로그래밍 언어 현재 주류 언어들 C, C++, Java, C#, VisualBasic(BASIC)

July 04, 2022
알고리즘
그림으로 배우는 알고리즘 제3장 - 자료구조(6)

1. 그림으로 배우는 알고리즘 제 3장: 자료구조 (6) 33. 부모 노드의 값이 자식 노드의 값보다 항상 적은 이진 트리는 힙(Heap) 힙(Heap): 각 노드의 값이 다음 조건을 충족하도록 관리되는 이진트리 부모 노드의 값은 항상 하위 노드 값보다 작다(또는 부모 노드의 값은 항상 하위 노드 값보다 크다) 첫번째 경우 자식 노드의 값은 둘 중 어느쪽이 크더라도 상관 없음. 위 조건에 따라 관리되는 힙은 뿌리 부분에 모든 값 중 가장 작은 값(또는 가장 큰 값)이 배치됨. 최소 값(또는 최대 값)을 효율적으로 구하는 용도에 적합. 힙을 구현할 때 일반적으로 배열을 사용. 배열 요소 번호 1번 = 힙의 뿌리요소. 깊이가 작은 쪽 → 큰 쪽 노드의 왼쪽 → 오른쪽 34. 해시 테이블은 배열과 리스트를 조합한 자료 구조 해시 테이블(Hash Table): 아래 2개 자료구조가 조합된 것 N개의 요소를 가진 루트 배열이라는 이름의 배열 루트 배열의 각 요소가 가리키는 리스트 먼저 …

July 03, 2022
알고리즘
그림으로 배우는 알고리즘 제3장 - 자료구조(5)

[Algorithm]그림으로 배우는 알고리즘 제 3장: 자료구조 (5) 1. 그림으로 배우는 알고리즘 제 3장: 자료구조 (5) 31. 마지막 요소까지 이동하면 1번째 요소로 되돌아오는 링 버퍼 1차원 배열의 요소들ㅇ르 처음부터 마지막까지 순서대로 조회하려면 배열 요소를 조회할 때 첨자를 1씩 더해나가면 된다. 링 버퍼: 1차원 배열의 1번째 요소와 마지막 요소를 합쳐 배열 마지막 요소의 다음에도 요소가 존재한다고 만드는 자료구조 예 요소가 10개인 BUFFER라는 1차원 배열 ⇒ BUFFER[9]의 다음 요소를 BUFFER[0]으로 설정 32. 부모 하나에 자식 둘이 딸린 구조는 이진트리 이진트리: 다음 요소를 가리키는 포인터를 2개 가진 단방향 리스트 노드: 이진트리의 구성요소 부모 노드: 자식 노드를 2개 이상 가질 수 없다. 자식 노드: 하위에 자식노드가 있을 경우 부모노드가 된다. 뿌리/루트 노드: 부모노드가 없는 노드 잎/리프 노드: 자식 노드가 없는 노드 깊이: 뿌리에…

July 02, 2022
알고리즘
RAID란? (정의 및 종류)

1. RAID란? RAID(Redundant Array of Independent Disks): 여러 물리 디스크를 하나로 모아 논리적 유닛으로 만든 것(=하나의 논리적인 드라이브) 사용하는 이유? 원래는 값싼 디스크 여러 개를 묶어 용량을 증가시키는 데에 사용 현재는 내고장성, 고가용성, 성능, 또는 이 세 가지를 조합해 기업 내 데이터가 손실되지 않도록 하는 데에 사용 2. RAID의 종류 RAID의 구성 방식은 RAID 0, 1, 01, 2, 3, 4, 5 등 다수 존재하나 가장 많이 사용하는 구성 방식은 아래 다섯 가지이다. 1. RAID 0 (Stripping) 데이터를 두 개 이상의 디스크에 동일하게 분할해 저장 각 디스크 용량의 합만큼 전체로 용량을 사용 가능 장애 발생 시 해당 부분의 디스크 복구 불가 ⇒ 기업 사용에 권장하지 않음 2. RAID 1 (Mirroring) 데이터를 2개 디스크에 동시 저장하는 방식이다. 성능이 느린 편이다. 가용성 측면에서 안정적으로…

July 01, 2022
CS
OSI 7 Layer, TCP/IP란?

1. OSI 7 Layer란? Open System Interconnection Reference Model의 약어이다. ISO(국제 표준화 기구)에서 개발한 모델로, 컴퓨터 네트워크 프로토콜 디자인과 통신 계층을 나누어 설명한다. 통신 장치를 구분하고 계층이라는 형태로 독립시킨다. 각 계층에서의 변경은 다른 계층에 영향을 주지 않는다. 2. OSI 7 Layer 계층별 설명 계층 이름 프로토콜 예시 7 응용 계층(Application Layer) HTTP, FTP, DNS, SNMP, Telnet 6 표현 계층(Presentation Layer) SSL, TLS 5 세션 계층(Session Layer) NetBIOS, PPTP 4 전송 계층(Transport Layer) TCP, UDP 3 네트워크 계층(Network Layer) IP, ARP, ICMP, IPSec 2 데이터 링크 계층(Data Link Layer) PPP, ARP, Ethernet 1 물리 계층(Physica…

June 30, 2022
CS
Python - 패스트캠퍼스 캐시백 챌린지 최종미션(및 주니어 데브옵스 엔지니어의 22년 상반기 회고)

오늘은 패스트캠퍼스에서 진행하는 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 강의 듣기 챌린지 최종 미션의 날. 중간미션을 한지 정말 얼마 되지 않은 느낌인데 벌써 66일을 마무리하게 되었다(지난 중간 미션에서도 같은 말 한거같은데…ㅋㅋㅋ). 이번 최종 미션에서는 공백을 제외하고 총 4000자라는 긴 분량을(학부때도 보통 레포트 2000자 분량인데 4000자라니… 논문인가요^^;;) 작성하라고 하기도 했고, 마침 상반기를 마무리하는 시기이기도 해서 2022년도 상반기 회고록도 겸사겸사 같이 써보기로. 📚 챌린지를 하며 배운 것들 오늘까지 들은 강의를 확인해보니 Part 1은 완강, Part 2는 Ch06의 6강 정규표현식 실습문제까지 수강했었고, 2022-06-29-Python-Photo1 그리고 Part 3은 Ch03의 02까지 수강했다. 2022-06-29-Python-Photo1 사실 Part 3은 이전에 제로베이스 프론트엔드 강의를 들을 때 다뤘던 내용들…

June 29, 2022
프로그래밍
데이터베이스 트랜잭션(Database Transaction)과 ACID란?

1. 데이터베이스 트랜잭션(Database transaction)이란? 데이터베이스 트랜잭션(Database Transaction): 데이터베이스의 여러 작업들을 하나로 묶은 단위이다. All-or-Nothing: 한 덩어리의 작업(트랜잭션)은 모두 실행되거나, 실행되지 않는다. 🤔 트랜잭션이 필요한 이유 예를 들어 은행 A에서 은행 B로 돈을 보낸다고 가정한다. 이 때 A에서 출금 후, B로 송금하려할 때 시스템에 장애가 발생해 시스템이 멈추게 된다면 어떻게 될까? A에서 돈은 출금되었지만, B로 송금되지 않고 증발하는 큰 문제가 발생할 수 있다. 트랜잭션은 이런 문제가 발생하지 않도록 해주는 역할을 한다. 대부분은 데이터베이스에서는 송금이 되다가 마는 상황이 발생하지 않도록 여러 방법을 제공하지만, 공통으로 제공하는 가장 기본적인 방법은 트랜잭션을 통해 데이터의 유효성을 보장하는 것이다. 2. ACID란? 데이터베이스 트랜잭션들이 안정적으로 수행되는 것을 보장하기 위한 네 …

June 28, 2022
CS
AWS S3(Simple Storage Service) 및 S3 Glacier란? (Block Storage, Object Storage, File Storage의 차이점)

1. S3(Simple Storage Service)란? Amazon S3(Simple Storage Service)란?: 업계 최고의 확장성, 데이터 가용성, 보안 및 성능을 제공하는 객체(object) 스토리지 서비스 사용 예시: 데이터 레이크, 웹 사이트, 모바일 애플리케이션, 백업 및 복원, 아카이브, 엔터프라이즈 애플리케이션, IoT 디바이스, 빅 데이터 분석 등 원하는 양의 데이터를 저장하고 보호할 수 있다. S3 오브젝트는 key로 접근하게 된다. key: prefix + filename (예: /abc.jpg) delimeter(/)로 file system을 흉내낸다. (예: /photos/2022/Jul/abc.jpg) Prefix당 요청 제한이 있다(3,500 PUT, COPY, POST, DELETE, 5,500 GET/HEAD). 사용 패턴에 따라 다양한 스토리지 클래스를 제공한다. 스토리지 클래스 목적 내구성(설계상) 가용성(설계상) 가용영역 최소 스토리지 …

June 27, 2022
클라우드
AWS의 CI/CD 툴: AWS CodeCommit, CodeBuild, CodeDeploy, CodePipeline

1. AWS CodeCommit GIt 기반의 repository를 클라우드 기반으로 제공하는 서비스 애플리케이션을 개발하면서 관리할 소스코드를 안전하게 저장, 제어할 수 있는 기능을 제공 완전 관리형 서비스로 사용자가 자체 소스코드 제어 시스템을 운영하거나 인프라 규모 조정을 걱정할 필요 없이 코드부터 바이너리까지 모든 사항을 저장 비용은 최초 5명의 활성 사용자의 경우 프리티어, 이상일 경우 사용자당 과금 최초 5명의 활성사용자 비용: 0.00 USD 계정당 리포지토리 1,000개, 요청 시 최대 25,000개 매달 50GB의 스토리지 매달 10,000건의 Git 요청 최초 5명 이후 추가되는 활성 사 계정당 리포지토리 1,000개, 요청 시 최대 25,000개 활성 사용자당 50GB의 스토리지 활성 사용자당 10,000건의 Git 요청 CodeCommit에 해당하는 외부 툴로는 Github, Gitlab 등이 존재 2. AWS CodeBuild 애플리케이션 개발에 필요한 …

June 26, 2022
클라우드
그림으로 배우는 알고리즘 제3장 - 자료구조(4)

[Algorithm]그림으로 배우는 알고리즘 제 3장: 자료구조 (4) 그림으로 배우는 알고리즘 제 3장: 자료구조 (4) 29. N번째 요소의 참조가 빠른 것은 배열, 느린 것은 리스트 구조 N번째 요소 조회 예: 나열된 데이터에서 5번째 요소를 조회 배열 요소 번호를 사용해 바로 찾아낼 수 있다. ARRAY[5] 어떠한 요소를 조회하더라도 모든 시간적 비용은 동일하다. 리스트: 1번째 데이터부터 차례대로 끄능ㄹ 따라가야한다. 1번째 요소를 조회한다. 1번째 요소의 끈을 따라 2번째 요소를 조회한다. 2번째 요소의 끈을 따라 3번째 요소를 조회한다. 3번째 요소의 끈을 따라 4번째 요소를 조회한다. 4번째 요소의 끈을 따라 5번째 요소를 조회한다. ⇒ 요소의 수가 많을 수록 느려진다. 30. 데이터의 삽입/삭제가 빠른 것은 리스트, 느린 것은 배열 데이터 삽입 새로운 데이터를 순서대로 나열된 데이터 열의 특정 위치에 삽입 배열: 삽입 위치 다음에 존재하는 모든 데이터를 뒤로 이동…

June 25, 2022
알고리즘
AWS의 Well-Architected Framework란?

1. AWS의 Well-Architected Framework란? AWS서비스를 사용해 구성한 아키텍처들을 평가하는 프레임워크로, AWS에서 시스템 구축을 진행하며 쌓아온 노하우를 살려 AWS의 고객 혹은 파트너사에서 아키텍처를 평가할 수 있는 모범 사례(Best Practice), 그리고 아키텍처가 모범사례에 얼마나 잘 맞는지 평가할 수 있도록 만들었다. 이 Well-Architected Framework를 이용하면 시스템을 구축하면서 내리게 되는 결정의 단점을 이해할 수 있다. 참고로 AWS에서 주관하는 시험 문제들도 이 Well-Architected Framework에 따라 답이 결정되므로 자격증 시험을 준비하는 사람들도 꼭 알아야 한다. Well-architected에서 평가되는 항목은 운영 우수성, 보안, 안정성, 성능 효율성, 비용 최적화로 총 5가지의 기둥(Pillar)로 구성되며, 최신 Well-Architected Framework 자료를 보려면 이 링크를 참조하자…

June 24, 2022
클라우드
Amazon Leadership Principle(LP)이란?

아마존의 기업문화로 유명한 Leadership Principle(줄여서 LP). 면접 과정에서도 4명의 면접관이 각 1시간씩 연달아 진행하기로 악명높은(?) Loop면접에서도 이 LP와 지원자가 얼마나 일치하는지를 본다고 한다. 이전까지는 14개의 원칙이었으나 최근 기업들에게도 환경을 포함한 사회적 책임의 중요성이 대두되어 그런지 관련 항목이 추가되어 총 16개의 원칙으로 변경되었다. 참고로 LP는 원문과 국문을 병기하였는데, 둘 모두 공식 사이트에 정의된 내용 그대로 가져왔다. 1. Amazon Leadership Principle(아마존 리더십 원칙)이란? 01. Customer Obsession(고객 집착) Leaders start with the customer and work backwards. They work vigorously to earn and keep customer trust. Although leaders pay attention to competitors…

June 23, 2022
etc
Python - 패스트캠퍼스 캐시백 챌린지 66일차

오늘은 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 파트 2의 파이썬 re 모듈 사용 방법(2)를 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-06-22-Python-Photo1 2022-06-22-Python-Photo2 05. 파이썬 re 모듈 사용 방법(2) 실습: 전화번호 형식을 검사하는 정규표현식 1. group(index) 로 전화번호 형식을 표현할 수 있다. 하지만 마지막 행의 경우 마지막 번호가 다섯자리(전화번호가 아님)임에도 불구하고 매칭이되었다. 로 걸러낼 수 있다. 파이썬에 적용하면 아래와 같다. 실행 결과 마지막 번호를 그룹으로 묶어준다. 실행 결과 group으로 묶지 않거나 group(0)으로 지정한 경우 전체 매칭 값이 나온다. 2. 그룹으로 만든 매칭 결과 가져오기 ⇒ ,를 제외한 번호값들 가져오는 정규표현식 …

June 22, 2022
프로그래밍
Python - 패스트캠퍼스 캐시백 챌린지 65일차

오늘은 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 파트 2의 파이썬에서의 re모듈 사용방법(1)을 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-06-21-Python-Photo1 2022-06-21-Python-Photo2 04. 파이썬 re 모듈 사용 방법(1) 1. re 모듈의 메서드 종류 기능 찾는 경우 없는 경우 match 문자열 처음부터 검색 match object 1개 None search 문자열 전체를 검색 match object 1개 None (regex, 문자열) 형태로 표현 종류 기능 찾는 경우 없는 경우 findall 문자열 전체를 검색 문자열 리스트 빈 리스트 finditer 문자열 전체를 검색 match object iterator None findall ⇒ (’a’, ‘a’) 형태로 표현 finditer ⇒ iterato…

June 21, 2022
프로그래밍
Python - 패스트캠퍼스 캐시백 챌린지 64일차

오늘은 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 파트 2의 파이썬에서의 정규표현식 사용방법(2)을 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-06-20-Python-Photo1 2022-06-20-Python-Photo2 01. 정규표현식 소개 정규표현식: 문자열에서 특정 패턴을 찾고 싶을 때 조건문, 반복문 들을 복잡하게 사용해야할 때 사용 유효성 검사: if문을 사용하면 여러 줄에 걸쳐 작업해야하나 정규표현식은 아주 빠르게 할 수 있다.정 정규 표현식의 장점 문자열 추출, 유효성 검사에서 유용하게 쓰일 수 있다. 거의 모든 언어에서 지원(범용성이 높다) 정규 표현식의 단점 가독성이 좋지 못하다. 유지보수가 힘들다(내가 짠 코드를 남이 이해하기 어렵고, 남이 짠 코드를 내가 이해하기 어렵다). 예: 03. 정규표현식 사용방법(2) 1. …

June 20, 2022
프로그래밍
Github/Git 여러 개의 커밋을 한개로 합치기(git rebase -i HEAD~3/git squash)

1. 배경 상황 올해 2022년 오픈소스 컨트리뷰션 아카데미에 쿠버네티스 한글화 프로젝트가 추가되었다는 소식을 듣고 헐레벌떡 신청했다. 신청하고나니 될지 안될지는 모르지만 컨트리뷰션 아카데미 가이드에 기재된 내용을 보고 예습 겸 PR을 올려보면 좋을 듯 해 쿠버네티스 공식문서의 한글화 가이드와 유투브 영상을 보고 따라서 PR을 올려보았다(두근두근). 하지만… 2022-06-19-Github_Git_Rebase_Squash1.png 내가 번역한 문서에 링크되어있는 YAML파일들이 한국어 버전에 존재하지 않아 빌드에러가 발생했다. 다행히 리뷰어님께서 친절히 해결 방법을 알려주셔서 검색해보니, git squash라는 명령어가 따로 존재하는 건 아니고, interactive rebase의 옵션 중 하나가 squash였다. 2. git rebase -i로 여러 개의 커밋을 한개로 합치는 방법 위에서도 말했듯, 여러 개의 커밋 내역을 한개로 합치려면 (여기서 i는 interactive의 …

June 19, 2022
데브옵스
Python - 패스트캠퍼스 캐시백 챌린지 63일차

오늘은 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 파트 2의 파이썬에서의 정규표현식 사용방법(1)을 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-06-19-Python-Photo1 2022-06-19-Python-Photo2 01. 정규표현식 소개 정규표현식: 문자열에서 특정 패턴을 찾고 싶을 때 조건문, 반복문 들을 복잡하게 사용해야할 때 사용 유효성 검사: if문을 사용하면 여러 줄에 걸쳐 작업해야하나 정규표현식은 아주 빠르게 할 수 있다.정 정규 표현식의 장점 문자열 추출, 유효성 검사에서 유용하게 쓰일 수 있다. 거의 모든 언어에서 지원(범용성이 높다) 정규 표현식의 단점 가독성이 좋지 못하다. 유지보수가 힘들다(내가 짠 코드를 남이 이해하기 어렵고, 남이 짠 코드를 내가 이해하기 어렵다). 예: 02. 정규표현식 사용방법(1) 1. …

June 19, 2022
프로그래밍
서비스 아이콘 모음 및 아키텍처/다이어그램 작성에 유용한 자료

최근 AWS 서비스 아키텍처를 그려야 할 일이 생겨 노션에 간단하게 정리하다 AWS 아이콘 모음과 아키텍처를 그릴 때 유용한 사이트, 정보 포스팅을 작성해보았다. 1. AWS 서비스 아이콘 이미지 모음 AWS는 아키텍처 다이어그램을 그리기 위한 아이콘 이미지 모음을 공식 웹사이트에서 제공한다(아래 웹사이트 링크에서 서드파티 툴들도 소개하고 있는데 대부분 AWS에서 제공하는 아이콘 이미지로 아키텍처를 그리는 듯). AWS Architecture Icons: https://aws.amazon.com/ko/architecture/icons/ AWS는 서비스가 수시로 업데이트되고 추가되는 만큼, 아이콘들도 주기적으로 업데이트 되기 때문에 기존에 다운로드 받아놓았다 하더라도 그릴 때마다 새로 받아서 그리는 것을 추천한다. 참고로 아이콘들은 다크모드/일반모드 배경 및 pptx,ppt,svg,png 등 다양한 포맷으로 제공되고 있으니 본인이 원하는 스타일의 파일을 다운로드 받으면 된다. 참고로…

June 19, 2022
클라우드
Python - 패스트캠퍼스 캐시백 챌린지 62일차

오늘은 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 파트 2의 파이썬에서의 SQLite 사용법을 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-06-18-Python-Photo1 2022-06-18-Python-Photo2 06. SQL 파이썬에서 SQLite3 사용방법 1. 파이썬 SQLite3 사용 순서 Database 파일 열기 커서(Cursor) 생성 커서(Cursor)란? 사용자와 DBMS(SQLite)를 연결하는 역할. 사용자의 SQL문을 DBMS에 전송해주고, DBMS에서의 data 결과값을 저장해두었다 사용자가 필요할 때 제공. SQL 명령 실행 커밋(Commit) 또는 롤백(Rollback) 커밋(Commit): 변경사항/SQL명령문에 대한 승인 롤백(Rollback): 변경사항/SQL명령문에 대한 취소 데이터베이스 닫기 2. 실습…

June 18, 2022
프로그래밍
Python - 패스트캠퍼스 캐시백 챌린지 61일차

오늘은 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 파트 2의 SQL GROUP BY, JOIN을 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-06-17-Python-Photo1 2022-06-17-Python-Photo2 04. SQL GROUP BY, JOIN 1. user 테이블 수정 이전 실습에서 생성한 테이블을 아래와 같이 변경해보자. email passwd gender age appple@naver.com apple123 female 20 grape@naver.com grape123 male 41 peach@naver.com peach123 female 27 startcoding@naver.com startcoding123 male 30 내 풀이 강의 풀이 DROP으로 테이블 삭제 UI를 통해 테이블 수정(Browse Data에서 수정할…

June 17, 2022
프로그래밍
Python - 패스트캠퍼스 캐시백 챌린지 60일차

오늘은 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 파트 2의 데이터베이스 소개, SQL DML을 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-06-16-Python-Photo1 2022-06-16-Python-Photo2 03. SQL DML(INSERT, SELECT, UPDATE, DELETE) CRUD(크루드) 1. SQL INSERT 데이터(행) 추가 명령 (중요!) 2. SQL SELECT 데이터 조회 명령 (제일 중요!!!!) 특히 마지막 쿼리문은 자주 사용하니 알아둘 것. 조건 추가: WHERE 추가하기(조회 조건) like로 상세조건 설정 가능: 는 startcoding으로 시작하는 항목만 검색 id가 1~10 사이인 것만 가져올 것. user테이블에서 address가 seoul, busan, daegu가 들어간 것만 출력 오름…

June 16, 2022
프로그래밍
쿠버네티스(Kubernetes) HPA “failed to get memory utilization: missing request for memory” / Pod의 current metric = Unknown 에러 해결

1. 배경 상황 컨테이너 전환 프로젝트 진행 중 운영 파드들에는 리소스 사용량이 증가하면 스케일아웃(scale-out)을 하도록 HPA를 설정해두었었는데, HPA에서 일부 파드의 현재 메트릭을 수집하지 못해 상태로 떠있게 되었다. 이렇게 될 경우 실제 사용 HPA에서 설정해 둔 리소스의 임계값을 넘게 되어도 오토 스케일링이 작동하지 않게되는 문제가 발생한다. HPA(Horizontal Pod Autoscaler): 리소스 사용량에 따라 쿠버네티스의 워크로드 리소스(디플로이먼트 혹은 스테이트풀셋)를 스케일 아웃(scale-out)하는 오브젝트. 참고로 daemonset은 HPA설정이 불가하다. 2. 해결 방법 경험 상 HPA의 현재 메트릭이 상태로 빠지는 건 아래의 두 가지 경우 중 하나였다. 1. Deployment, ReplicationController, Statefulset의 replica가 0인 경우 HPA는 쿠버네티스의 metrics-server로부터 받은 현재 리소…

June 16, 2022
데브옵스
쿠버네티스 공식문서 번역 - 파드 디버그(Debug Pods)

참고: 쿠버네티스 한글화에 참여하려고 번역했던 문서이나 중복으로 업로드 하지 않음. [Kubernetes]번역 - 파드 디버그 원문: https://kubernetes.io/docs/tasks/debug/debug-application/debug-pods/ 이 가이드는 쿠버네티스에 배포되었으나 제대로 동작하지 않는 애플리케이션을 디버깅하는 유저들을 돕기 위한 것이다. 이 문서는 클러스터를 디버깅하고 싶어하는 사람들을 위한 가이드가 아니다. 클러스터 디버깅을 위해서는 이 가이드를 확인하자. 문제를 진단 트러블슈팅의 첫 단계는 분류이다. 무엇이 문제일까? 파드일까? 레플리케이션 컨트롤러일까? 아니면 서비스일까? 파드 디버그 레플리케이션 컨트롤러 디버그 서비스 디버그 파드 디버그 파드를 디버깅할 떄의 첫 단계는 파드를 살펴보는 것이다. 파드의 현재 상태와 최근 이벤트들을 다음 명령어로 확인하자. 파드 내 컨테이너들의 상태를 확인한다. 모두 인가? 최근에 재시작이 있었는가? 파드의 상태에…

June 15, 2022
데브옵스
Python - 패스트캠퍼스 캐시백 챌린지 59일차

오늘은 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 파트 2의 데이터베이스 소개, SQL DDL을 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-06-15-Python-Photo1 2022-06-15-Python-Photo2 01. 데이터베이스 소개 1. 데이터베이스 개념 데이터베이스(database): 구조화 된 데이터의 집합(예: 엑셀) 데이터베이스의 기능 데이터 삽입 데이터 조회 데이터 수정 데이터 삭제 2. 데이터베이스의 구성요소 데이터베이스(database): 테이블(table)의 집합 테이블(table): 행(row)의 집합 행(row): 한 단위의 데이터 기록(record) 열(column): 데이터의 항목(field) 3. DBMS(Database Management System) 데이터를 관리해주는 시스템 대표 예: MySQL, …

June 15, 2022
프로그래밍
Python - 패스트캠퍼스 캐시백 챌린지 58일차

오늘은 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 파트 2의 클래스 실습문제를 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-06-14-Python-Photo1 2022-06-14-Python-Photo2 05. 클래스 실습문제 실습문제 4.5.1 Player 클래스를 구현해 보자. 속성: 닉네임, 미네랄, 가스, 유닛리스트 예시 유닛 리스트의 프로브, 질럿은 Unit 클래스로 만든 객체. 위와 같은 클래스간의 관계를 has-a 라고 한다. has-a: Player has-a Unit (클래스가 다른 객체를 가지고 있는 형태) Player가 여러 Unit을 갖고있음 ⇒ 1 : N 관계 is-a: Weapon is-a Item (서로 상속 시 발생: Weapon < Item) 유닛 정보 메서드: 생산하기 강의 해설 이번 포스팅에서는 강의의 파트 2…

June 14, 2022
프로그래밍
Python - 패스트캠퍼스 캐시백 챌린지 57일차

오늘은 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 파트 2의 상속을 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-06-13-Python-Photo1 2022-06-13-Python-Photo2 04. 상속 1. 상속의 개념 클래스들의 공통된 속성과 메서드를 뽑아내 부모 클래스를 만든다. 이를 자식 클래스에서 상속받아 사용한다. 2022-06-13-Python-Photo3 2. 상속의 장점 코드의 중복을 제거할 수 있다. 유지보수가 편리해진다. 공통 구현 ⇒ 부모클래스만 수정하면 된다. 상세 구현 ⇒ 자식클래스만 수정하면 된다. 3. 상속 구현하기 Weapon 클래스 구현 2022-06-13-Python-Photo4 Item 클래스로부터 속성, , 메서드를 상속받았다. Weapon 클래스에는 속성, 메서드가 추가되었다. HealingI…

June 13, 2022
프로그래밍
Python - 패스트캠퍼스 캐시백 챌린지 56일차

오늘은 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 파트 2의 여러가지 메서드를 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-06-12-Python-Photo1 2022-06-12-Python-Photo2 03. 여러가지 메서드 1. 인스턴스 메서드 인스턴스 속성에 접근할 수 있는 메서드 항상 첫번째 파라미터로 self를 갖는다. hit 메서드 구현하기 데미지를 받으면 체력과 방어막이 깎이는 hit 메서드를 구현해 보자. 데미지가 방어막보다 작거나 같으면 방어막만 깎인다. 데미지가 방어막보다 크고 체력보다 작으면 체력과 방어막이 깎인다. 데미지가 체력보다 크면 체력을 0으로 만든다. 내 풀이 출력 결과 제대로 동작하지 않음 강의 해설 방어막과 체력을 분리해서 생각해보자. 실행 결과 2. 클래스 메서드 클래스 속성에 접근하기 위해 사용한다. 클래스를…

June 12, 2022
프로그래밍
Python - 패스트캠퍼스 캐시백 챌린지 55일차

오늘은 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 파트 2의 여러가지 속성을 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-06-11-Python-Photo1 2022-06-11-Python-Photo2 02. 여러가지 속성 1. 인스턴스 속성 객체마다 다르게 가지는 속성 라고 되어있는 부분이 인스턴스 속성을 가리키는 부분 인스턴스 속성 사용법 클래스 안: 클래스 밖: 2. 클래스 속성 모든 객체가 공유하는 속성 생성된 유닛 개수를 세는 속성을 생성해보자 ⇒ 클래스 속성 생성자 바깥에 속성 정의 + 생성자 마지막 속성 뒤에 Unit.count 작성 클래스 속성 사용법: 클래스 안: 클래스 밖: 3. 비공개 속성 클래스 안에서만 접근 가능한 속성 hp라는 속성을 클래스 외부에서 접근할 수 없도록 만들 때 사용 로 변경 불가 4. 실습…

June 11, 2022
프로그래밍
Github Pages/Blog 마크다운에서 토글(Toggle) 버튼 / Expander control(접기/펼치기 기능) 만들기

💡 마크다운에서 토글(Toggle) 버튼 / Expander control(접기/펼치기 기능)을 만드려면 HTML의 Details 태그를 활용하자. 최근 기술 면접 관련한 자료를 깃헙 코드 저장소에 하나씩 업로드 하고 있는데, 다른 레포지토리를 보니 예상 질문/답변을 작성할 때 토글버튼을 이용하면 깔끔하게 정리할 수 있어 내 레포지토리에도 적용하기위해 찾아보았다. 결론적으로는, 마크다운(Markdown) 문법 자체를 이용해 토글(Toggle) 버튼 / Expander Control(접기/펼치기) 기능을 만드는 건 불가능하고, 그 대신 html의 details 태그를 이용해 만들 수 있다고 한다. 1. 를 이용한 Toggle/Expander Control 예시 : jekyll에서 html사이에 있는 markdown 문법을 인식시키기 위한 코드 2. 출력 예시 펼쳤을 때 보이는 내용입니다. 펼쳤을 때 보이는 내용입니다.

June 11, 2022
데브옵스
Python - 패스트캠퍼스 캐시백 챌린지 54일차

오늘은 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 파트 2의 클래스와 객체를 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-06-10-Python-Photo1 2022-06-10-Python-Photo2 01. 클래스와 객체 1. 절차 지향 vs 객체 지향 1. 절차 지향 프로그래밍 기능들을 어떤 순서로 처리할 것인가에 초점을 맞춘다. 프로그래밍 규모가 작은 경우 유용 2. 객체 지향 프로그래밍 객체가 중심, 객체를 정의하고 객체간 상호작용에 초점을 맞춘다. 프로그래밍 규모가 큰 경우 유용 2. 클래스와 객체 개념 1. 클래스 객체를 만들기 위한 설계도 2. 객체 설계도로부터 만들어낸 제품 3. 클래스 만들기 2022-06-10-Python-Photo3 클래스: ‘Unit’ 속성: 이름, 체력, 공격력, 방어막 메서드: 위치로 이동하기, 공격…

June 10, 2022
프로그래밍
NGINX/Contour에서 HTTP ⇒ HTTPS 자동 리다이렉션 옵션 끄기(auto-redirect)

💡 NGINX에서 HTTPS 자동 리다이렉션 설정은 annotation에서(기본값=off), Contour에서 HTTPS 자동 리다이렉션 설정은 spec 하위에서(기본값=on) 설정한다 1. 발생 상황 현재 컨테이너 이관 프로젝트를 진행 중인데, 프로젝트 초기에 http 기반으로 되어있는 담당 시스템이 이관 후에는 http로 접속해도 https로 리다이렉션 되는 현상이 발생했다. http로 보낸 요청이 https로 변경되어 전송되어 컨테이너에서 요청을 제대로 인식하지 못해 http를 https로 변경하는 옵션을 찾아서 disable 시켜야하는 상황이었다. 현재 프로젝트가 VMware의 Tanzu Kubernetes Cluster라는 솔루션 기반에서 동작하고 있어 같은 VMware에서 시작한 오픈소스들을 많이 사용하고 있었는데, 그래서 Ingress Controller도 일반적으로 사용하는 NGINX가 아닌 Contour라는 솔루션을 사용하고 있었다. 2. 설정 방법 - Cont…

June 10, 2022
데브옵스
Python - 패스트캠퍼스 캐시백 챌린지 53일차

오늘은 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 파트 2의 map, filter 실습을 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-06-09-Python-Photo1 2022-06-09-Python-Photo2 05. map, filter 함수 실습 1. map 함수 map 함수를 사용해보자. 실행 결과: map 객체가 생성되었다. 다시 리스트로 만드려면 list()로 map을 감싸주면 된다. 실행 결과 1. 예제: 리스트 모든 요소의 공백 제거 먼저 for문을 이용해서 구현해보자. 참고: 데이터에 앞뒤 공백이 붙는 경우는 크롤링을 할 때 자주 만날 수 있다. 실행 결과 map 함수를 사용해 구현해보자. 실행 결과 마지막으로 lambda 함수를 이용해 구현해보자. 실행 결과 2. filter 함수 filter 함수의 사용법을 알아보자. 실…

June 09, 2022
프로그래밍
Python - 패스트캠퍼스 캐시백 챌린지 52일차

오늘은 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 파트 2의 map, filter함수를 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-06-08-Python-Photo1 2022-06-08-Python-Photo2 04. map, filter 함수 1. map 함수 map 함수 사용 방법 순서가 있는 자료형: 리스트(), 튜플(), 딕셔너리(), range 객체 함수 = int (데이터를 정수형으로 바꿔주는 함수) 2022-06-08-Python-Photo3 리스트의 각각의 데이터가 int 함수를 거쳐 그 결과를 map 오브젝트로 만들어낸다. map 함수를 리스트로 감싸주면 리스트로 결과를 받을 수 있다. Map 함수를 이용한 간단한 예제: 리스트 모든 요소의 공백 제거 for문 사용했을 때 map 사용했을 때 (1) strip_all 이라는 함수…

June 08, 2022
프로그래밍
Python - 패스트캠퍼스 캐시백 챌린지 51일차

오늘은 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 파트 2의 람다함수를 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-06-07-Python-Photo1 2022-06-07-Python-Photo2 03. 람다 함수(lamda) 1. 람다 함수란? 이름을 지을 필요도 없을 간단한 형태의 함수 다른 함수의 인자(argument)로 넣을 수 있다. 코드가 간결해지고, 메모리가 절약된다. 2. 람다 함수 사용 방법 기존 함수와 람다 함수의 정의 방법을 살펴보자. 기존 함수와 람다 함수의 호출 방법을 살펴보자. 람다 함수 자체를 괄호로 감싸서 사용 변수에 람다함수를 할당해 사용 기존 함수와 람다 함수에서 if문을 사용하는 방식을 비교해보자. if문을 적용한 함수를 호출해보자. 3. 실습 실행 결과 람다 함수 안에서 if문을 사용해보자. 실행 결과 이번…

June 07, 2022
프로그래밍
NAS/CIFS/NFS 개념

1. 배경 현재 컨테이너 전환을 진행하고 있는 담당 시스템이 Microsoft Azure에서 운영되고있는데, 인프라팀에서 쿠버네티스 파드(Pod)와 연결된 NAS(쿠버네티스 리소스로 말하면 Persistent Volume과 Persistent Volume Claim) 정보를 변경해달라는 요청을 받았다. NAS를 기존 CIFS타입에서 NFS 타입으로 변경하셨다고 하는데, 둘 다 처음 듣는 용어라 생소해서 정리해보았다. 참고로 NAS 타입으로 스토리지를 바꾼 건 기존 Azure files(AWS의 EFS에 해당)에서 대/소문자 구분이 되지 않아 NetApp Files(NFS type)으로 변경한 것이라고 한다. Azure files에서 디렉토리/파일명의 대/소문자 구분이 되지 않아(case-insensitive) 윈도우 기반으로만 구동되는 것인 줄 알았는데 NFS/SMB로 윈도우/리눅스 시스템에 모두 마운트할 수 있는 것을 보면 그렇지는 않은 듯(자세한 것은 다시 조사 할 것). 2.…

June 07, 2022
CS
Python - 패스트캠퍼스 캐시백 챌린지 50일차

오늘은 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 파트 2의 다양한 매개변수(1),(2)를 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-06-06-Python-Photo1 2022-06-06-Python-Photo2 01. 다양한 매개변수 (1) 1. 위치 매개변수(positional parameter) 가장 기본적인 매개변수 함수 호출 시 순서대로 데이터(인자)를 넘겨줘야 한다. 다른 매개변수와 함께 쓸때는 항상 맨 앞에(중요!) 써야 한다. 2. 기본 매개변수(default parameter) 매개변수의 기본적인(default) 값 함수를 정의할 때 매개변수의 기본 값을 지정할 수 있다. title: 위치 매개변수 content: 기본 매개변수(내용이 없는 경우에는 내용없음이 기본 값으로 들어간다.) 3. 키워드 매개변수(keyword par…

June 06, 2022
프로그래밍
Python - 패스트캠퍼스 캐시백 챌린지 49일차

오늘은 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 파트 2의 리스트 내포, 실습문제, 할당과 복사, 문자열 실습문제를 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-06-05-Python-Photo1 2022-06-05-Python-Photo2 04. 리스트 내포 1. 리스트 내포란? for문, if문 등을 지정하여 리스트를 간편하게 만드는 것. 1. 리스트 내포 - for 문 사용하기 예시 1 range(5) 로 0~4까지의 값이 들어가는데, []로 감쌌기 때문에 리스트 형태로 결과가 생성된다. 예시 2 nums에 리스트가 할당되어있다. nums의 값들을 2배하라는 리스트 내포문을 작성 후 double_nums에 할당한다. 각 값에 2가 곱해진 리스트가 반환된다. 2. 리스트 내포 - if 문 사용하기 보는 순서: for 문 ⇒ if 문 ⇒ …

June 05, 2022
프로그래밍
Python - 패스트캠퍼스 캐시백 챌린지 48일차

오늘은 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 파트 2의 리스트 다루기를 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-06-04-Python-Photo1 2022-06-04-Python-Photo2 03. 리스트 다루기 1. 리스트 메서드 1. 리스트에 데이터 추가하는 방법 를 사용해 리스트에 데이터를 추가할 수 있다. grape라는 새로운 데이터가 리스트에 추가된 것을 알 수 있다. 2. 리스트에 리스트 추가하는 방법 마찬가지로 를 사용해 리스트에 리스트를 추가할 수 있다. fruits 리스트 안에 라는 리스트가 추가 된 것을 알 수 있다(중첩). 3. 리스트 데이터 삭제 방법 메서드를 사용하면 마지막 데이터를 삭제할 수 있다. 위의 예시에서는 ‘mango’라는 데이터가 삭제된 것을 알 수 있다. 4. 리스트 데이터 삭제 방법(…

June 04, 2022
프로그래밍
Python - 패스트캠퍼스 캐시백 챌린지 47일차

오늘은 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 파트 2의 강의 소개, 문자열 다루기를 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-06-03-Python-Photo1 2022-06-03-Python-Photo2 02. 문자열 포매팅 문자열 포매팅: 문자열을 편리하게 만드는 방법. 문자열을 여러 데이터를 조합해 만드는 방법 1. 문자열 포매팅이 없다면? 사용하기 불편하다(형변환도 필요함). 실행 결과 2. 문자열 포매팅 사용시 실행 결과 형변환도 필요 없음. 3. format 메서드 데이터가 인덱스에서 지정한 자리에 들어가게 된다. 값을 여러 개 넣으려면? 인덱스를 생략하려면? 인덱스를 생략하면 순서대로 들어가게 된다. 4. f-string 5. 실습 실행 결과 인덱스 값을 바꾸면 바꾼대로 출력된다. 실행결과 인덱스값을 비워두면 차례대로 …

June 03, 2022
프로그래밍
Python - 패스트캠퍼스 캐시백 챌린지 46일차

오늘은 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 파트 2의 강의 소개, 문자열 다루기를 듣고 정리해보았다(파트 3의 CSS 챕터는 파트 2 수강 후에 다시 들을 것. 현재 병행해서 듣고 있는 DevOps강의가 Django 베이스라서 문법 + Django 프레임워크 기준으로 빠르게 진도를 나가야 할 듯 해서 수강 순서를 다시 바꾸었다). 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-06-02-Python-Photo1 2022-06-02-Python-Photo2 1. 강의 소개 환경설정(MacOS) 챕터 01의 1,2강은 강의소개/Windows의 환경설정 내용이므로 생략하였다. 파이썬 기본 챕터와 마찬가지로 가상환경을 만들어준다(MacOS기준). 1. 프로젝트 폴더 생성 Documents 폴더 하위에 python_advanced라는 폴더를 새로 생성한다. VScode…

June 02, 2022
프로그래밍
Python - 패스트캠퍼스 캐시백 챌린지 45일차

오늘도 어제에 이어서 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 파트 3의 CSS 기본 문법을 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-06-01-Python-Photo1 2022-06-01-Python-Photo2 06. 주요 요소 정리 - 구조 태그 : 블록(상자) 요소. 특별한 의미가 없는 구분을 위한 요소. (Division) : 블록(상자) 요소. 제목을 의미하는 요소. (Heading) h1~h6번까지 값을 가질 수 있다. 숫자가 작을수록 더 중요한 제목을 정의 : 블록(상자) 요소. 문장을 의미하는 요소. (Paragraph) : 인라인(글자) 요소. 이미지를 삽입하는 요소(Image) ⇒ 삽입할 이미지의 경로 (필수 속성) ⇒ 삽입할 이미지의 이름 (필수 속성). 대체 텍스트(이미지가 정상 출력되지 않았을 때 출력된다…

June 01, 2022
프로그래밍
Python - 패스트캠퍼스 캐시백 챌린지 44일차

오늘도 어제에 이어서 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 파트 3의 구조 태그. 주석과 전역속성을 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-05-31-Python-Photo1 2022-05-31-Python-Photo2 06. 주요 요소 정리 - 구조 태그 : 블록(상자) 요소. 특별한 의미가 없는 구분을 위한 요소. (Division) : 블록(상자) 요소. 제목을 의미하는 요소. (Heading) h1~h6번까지 값을 가질 수 있다. 숫자가 작을수록 더 중요한 제목을 정의 : 블록(상자) 요소. 문장을 의미하는 요소. (Paragraph) : 인라인(글자) 요소. 이미지를 삽입하는 요소(Image) ⇒ 삽입할 이미지의 경로 (필수 속성) ⇒ 삽입할 이미지의 이름 (필수 속성). 대체 텍스트(이미지가 정상 출력되지 않았을 …

May 31, 2022
프로그래밍
그림으로 배우는 알고리즘 제3장 - 자료구조(3)

제 3장: 자료구조 25. 계산대 앞에 줄을 서듯 대기하는 자료구조가 대기 행렬(큐) 큐(queue)/대기행렬: 먼저 입력한 데이터가 먼저 출력되는 특징을 가진 자료구조. 예: 슈퍼에서 계산하기 위해 기다리는 대기자, ATM기에 줄 서서 기다리는 사람들 대기열의 1번째 사람부터 용무를 보게 된다. 중간에 끼어들거나 & 순서를 어기고 새치기 (X) 먼저 입력한 데이터가 먼저 출력되는 데이터 관리 방법: FIFO(First In, First Out), LILO(Last In, Last Out) 26. 끈으로 엮어 데이터를 관리하는 것이 리스트 1차원 배열 데이터들은 차례대로 빈틈없이 나열된다. 데이터의 순서가 고정되어있다. 데이터 개수 관리: 다른 변수 사용 리스트 데이터들은 모두 떨어져 있지만, 끈으로 묶여 있다. 데이터의 순서가 고정되어있지 않아 데이터의 위치에 구애받지 않는다. 데이터 개수 관리: 다음 데이터에 연결된 끈이 있는지 여부 27. 한쪽 방향에서 데이터를 찾아가는 단방…

May 30, 2022
알고리즘
Python - 패스트캠퍼스 캐시백 챌린지 43일차

오늘도 어제에 이어서 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 파트 3의 주요 요소, 정보 태그를 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-05-30-Python-Photo1 2022-05-30-Python-Photo2 04. 주요 요소 ‘html’이라는 폴더를 생성해 vscode에서 실습을 해보자. Tip: 폴더명을 작성할때는 가능하면 영문/숫자로만 작성하자 파일을 생성하자. index ⇒ 브라우저에서 사이트에 접속할 때 최우선으로 오픈하는 파일 느낌표 키 + 탭 키 ⇒ 기본적은 html 양식이 입력됨 html이라는 요소 하위에 head, body라는 자식요소가 들어있다. head라는 요소에는 meta, title이라는 요소로 구성되어있다. meta ⇒ 빈태그 head, body요소 안에 내용을 작성해 html파일을 완성해보자. 05…

May 30, 2022
프로그래밍
그림으로 배우는 알고리즘 제3장 - 자료구조(2)

제 3장: 자료구조 22. 다양한 구조의 자료구조들 다섯 가지 배열: 데이터를 빈틈없이 나열한 자료구조(일차원, 이차원, 삼차원 배열 등이 있다) 리스트: 데이터를 순서대로 나열한 자료구조. 데이터들이 화살표로 서로 연결되어있어 떨어진 장소에 위치해도 된다(배열과의 차이점) 스택: 책을 쌓아 올리듯 데이터를 관리하는 구조. 데이터를 넣는 순서와 반대 순서로 데이터를 꺼낸다. 큐(대기 행렬): 계산대에 줄을 서는 것과 비슷하다. 데이터를 넣은 순서대로 데이터를 꺼낸다. 트리: 나무가지가 두개, 세개로 갈라지고 갈라진 끝에서 또 두개 세개로 갈라지듯 퍼져나가는 자료구조 24. 책처럼 쌓이는 자료구조가 스택 스택(Stack): ‘쌓다’ 라는 뜻. 데이터를 쌓아 관리하는 방식. 예: 책상위에 책을 쌓아놓았을 때, 중간에 있는 책을 빼기 위해서는 위에 쌓인 책을 한권 한구너 차례로 뺀 뒤에 원하는 책을 빼야한다. 푸시 데이터를 넣는(쌓는) 작업 팝 데이터를 꺼내는 작업 LIFO(Last I…

May 29, 2022
알고리즘
Python - 패스트캠퍼스 캐시백 챌린지 42일차

오늘도 어제에 이어서 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 파트 3의 글자와 상자를 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-05-29-Python-Photo1 2022-05-29-Python-Photo2 03. 글자와 상자 글자와 상자: 요소가 화면에 출력되는 특정. 크게 2가지로 구분된다. 인라인(Inline) 요소: 글자를 만들기 위한 요소들 블록(Block) 요소: 상자(레이아웃)를 만들기 위한 요소들 참고: 글자를 제외한 모든 요소들을 **레이아웃(layout)**이라고 부른다. 1. 인라인(Inline) 요소 : 대표적인 인라인 요소. 본질적으로 아무것도 나타내지 않는, 콘텐츠 영역을 설정하는 용도. 출력 결과 요소가 수평으로 쌓이게 된다. 인라인 요소는 포함한 콘텐츠 크기만큼 자동으로 줄어들게 된다(가로세로 상관없이). …

May 29, 2022
프로그래밍
Python - 패스트캠퍼스 캐시백 챌린지 41일차

오늘도 어제에 이어서 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 파트 3의 HTML 기본문법, 요소의 관계 이해를 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-05-28-Python-Photo1 2022-05-28-Python-Photo2 01. HTML 기본 문법 HTML의 요소, 태그에 대해 알아보자. 위의 HTML 을 풀어 쓰면 아래와 같다. 위의 내용전체를 **요소(element)**라고 부른다. : 시작(열린) 태그(Tag) : 종료(닫힌) 태그(Tag) : 요소의 내용(Contents) 이번에는 HTML요소의 다른 예시를 살펴보자. : Attribute : Value : HTML 기능의 확장 HTML에서 종료태그가 없는 태그를 볼 수도 있다. 빈(Empty) 태그라고 부른다. 빈(Empty) 태그는 아래 두 가지 방식으로 입…

May 28, 2022
프로그래밍
Python - 패스트캠퍼스 캐시백 챌린지 40일차

오늘도 어제에 이어서 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 파트 3의 챕터 1. 강의 개요를 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-05-27-Python-Photo1 2022-05-27-Python-Photo2 1. HTML, CSS 그리고 JS HTML(Hyper Text Markup Language): 페이지의 제목, 문단, 표, 이미지, 동영상 등 웹의 구조를 담당. CSS(Cascading Style Sheets): 실제 화면에 표시되는 방법(색상, 크기, 폰트, 레이아웃 등)을 지정해 콘텐츠를 꾸며주는 시각적인 표현(정적) 담당 JS(JavaScript): 콘텐츠를 바꾸고 움직이는 등 페이지를 동작시키는 동적 처리를 담당 (프로그래밍 언어) 2. 웹앱의 동작 원리 웹앱(Web Application) = 웹사이트(Website…

May 27, 2022
프로그래밍
Python - 패스트캠퍼스 캐시백 챌린지 39일차

오늘도 어제에 이어서 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 챕터 12-6. 블로그 게시글 수정, 삭제, 저장하기 기능 구현을 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-05-26-Python-Photo1 2022-05-26-Python-Photo2 06. 게시글 수정, 삭제, 저장하기 게시글 로딩하기 (완료) 메뉴 출력하기 (완료) 게시글 쓰기 (완료) 게시글 목록 확인하기 (완료) 게시글 상세 확인하기 (완료) 게시글 수정하기 게시글 삭제하기 게시글 저장하기 2. 게시글 수정, 삭제, 저장하기 1. 게시글 수정 사용자가 새로 제목, 본문을 입력한다. set_post 메서드로 Post 객체를 수정해준다. 2. 게시글 삭제 post_list 에서 해당 Post 객체를 삭제해준다. 3. 게시글 저장하기 post_list에 저장된 내용을 …

May 26, 2022
프로그래밍
Python - 패스트캠퍼스 캐시백 챌린지 38일차

오늘도 어제에 이어서 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 챕터 12-5. 블로그 게시글 목록, 상세 구현을 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-05-25-Python-Photo1 2022-05-25-Python-Photo2 5. 블로그 게시글 목록, 상세 1. 프로그램 기능 구현하기 게시글 목록 구현 결과 예시 post_list 객체를 get 메서드로 가져와 출력하면 된다. 글 번호를 선택하는 기능 글 번호 선택 없는 글 번호 ⇒ 무한 반복 -1 입력 시 ⇒ 메뉴로 복귀(break) 올바른 글 번호 ⇒ 게시글 상세(난이도 있음) 2. 코드 구현 1. 게시글 목록 구현하기 게시글 목록을 구현해보자. 실행 결과 게시글 목록 보기를 구현한다. 글 번호를 설정하면 게시글 상세보기를 할 수 있도록 구현한다. 글 번호 선택 시 해당 번호가…

May 25, 2022
프로그래밍
Python - 패스트캠퍼스 캐시백 챌린지 37일차

오늘도 어제에 이어서 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 챕터 12-4. 메뉴 출력하기, 글쓰기를 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-05-24-Python-Photo1 2022-05-24-Python-Photo2 4-1. 블로그 메뉴 출력하기 1. 프로젝트 설계 프로그램 기능 설계 게시글 로딩하기 (완료) 메뉴 출력하기 (이번 강의에서 다룰 내용) 게시글 쓰기 (이번 강의에서 다룰 내용) 게시글 목록 확인하기 게시글 상세 확인하기 게시글 수정하기 게시글 삭제하기 게시글 저장하기 2. 메뉴 출력하기 결과물 예시 메뉴를 출력하기 까지만 진행할 것(메뉴별 기능 구현은 뒤의 강의에서 다룰 예정) 숫자 1,2,3외의 숫자를 입력할 경우 ⇒ 다시 메뉴 출력 문자 입력 시 ⇒ 예외처리가 필요 해당 기능 구현은 실습문제 5.3.2와 유사하다…

May 24, 2022
프로그래밍
쿠버네티스(Kubernetes) Certified Kubernetes Administrator(CKA) 시험 합격 후기: 공부 방법, 문제 유형, 시험 개요 등

2022년 5월 22일에 봤던 Certified Kubernetes Administrator(이하 CKA)자격증 시험 결과가 나와 바로 올리는 따끈따끈한 후기. CKA(Certified Kubernetes Administrator)는 작년 10월 말 새로운 회사에서 데브옵스 엔지니어로 근무하기 시작하면서부터 계속 따려고 생각했던 자격증. 사실 다른 자격증 준비과 기타 공부에 밀려 미루고 있다가 회사에서 자격증 챌린지(!)를 한다는 소식에 이제 더는 미룰 수 없겠다 싶어 취득하게 되었다(그리고 사내 자격증 챌린지는 무사히 1등을 따냈다는 후문😉). CKA 시험 개요 CKA 자격증 시험은 쿠버네티스(Kubernetes) 오픈소스 프로젝트를 관리하는 Linux Foundation 산하의 Cloud Native Computing Foundation(CNCF)라는 단체에서 주관하는 시험이다. CNCF에서 제공하는 쿠버네티스 관련 자격시험은 CKA, CKAD, CKS 총 3가지로, 그 중 …

May 24, 2022
데브옵스
그림으로 배우는 알고리즘 제 2장 - 변수와 배열(8), 제3장 - 자료구조(1)

제 2장 변수와 배열 21. 문자열의 길이는 문자길이 변수 또는 ‘보초 값’이 관리한다 문자열은 1번째 요소부터 차례로 문자가 저장된 문자 타입의 배열 ⇒ 문자열이 끝날 때 배열이 끝났음을 알려주어야한다. 문자열이 끝남을 알려주는 방법 문자 열 길이 변수를 준비 : 배열 속 문자열 길이를 정수 타입 변수에 저장해 참조한다. 문자 열 끝에 보초 값을 저장 문자열의 구성 문자로 절대로 표시되지 않는 문자 코드(보초 값)를 배열 끝 부분에 저장 일반적으로 숫자 0(문자 ‘0’ 아님)을 사용 Column: 관용적으로 사용되는 변수명 반복문의 반복 횟수를 저장하는 변수 : 반복 처리 알고리즘에서 반복 횟수를 유지하는 정수 타입 변수명은 i, j, k를 자주 사용 배열 첨자로 사용되는 변수 : index, idx 수를 세는 데 사용되는 변수 : count, counter, cnt 문자열을 다루는 변수(배열) : str, string 제 3장: 자료구조 22. 대량 데이터를 효율적으로 관리하기…

May 24, 2022
알고리즘
그림으로 배우는 알고리즘 제 2장 - 변수와 배열(7)

제 2장 변수와 배열 19. 2차원 배열의 각 요소는 2개의 첨자로 구별한다 2차원 배열에서는 행과 열에 대해 각각 ‘0’(또는 ‘1’)로 시작하는 요소번호를 붙여 교차점에 있는 배열요소를 가리킨다. 예시 배열명[행 요소번호][열 요소번호] ⇒ ARRAY[2][6] 배열명(행 요소번호)(열 요소번호) ⇒ ARRAY(2)(6) 배열명[행 요소번호, 열 요소번호] ⇒ ARRAY[2, 6] 배열명(행 요소번호, 열 요소번호) ⇒ ARRAY(2, 6) 20. 문자열은 문자 데이터의 배열이다 문자열은 각 요소에 문자가 저장된 문자 타입 배열이다. 예: 문자열 ‘ABC’: 문자타입 데이터를 저장할 수 있는 배열의 1번째 요소에 문자 ‘A’, 2번째 요소에 문자 ‘B’, 3번째 요소에 문자 ‘C’가 저장된 것이다.

May 23, 2022
알고리즘
Python - 패스트캠퍼스 캐시백 챌린지 36일차

오늘도 어제에 이어서 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 챕터 12-3. 블로그 프로젝트 - 게시물 로딩 기능 구현을 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-05-23-Python-Photo1 2022-05-23-Python-Photo2 03. 블로그 게시글 로딩하기 1. 프로그램 기능 구현하기 게시글 로딩하기 기능의 의사 코드(Pseudo Code)를 작성해보자. **의사코드(Pseudo Code)**란? 직역하면 가짜(Pseudo) 코드라는 뜻으로, 프로그램 코드를 작성하기위해 프로그램의 진행 과정을 단계별로 기록해 놓은 것. 게시글 로딩 예시 2. 코드 구현 위에서 의사코드로 작성한 내용을 실제 코드로 구현해보자. 파일유무를 체크하기 위해 os.path.exists 모듈을 활용한다: os 모듈을 import한 뒤 사용할 수 있음…

May 23, 2022
프로그래밍
Python - 패스트캠퍼스 캐시백 챌린지 35일차

오늘도 어제에 이어서 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 챕터 12-2. 블로그 프로젝트 - 게시물 클래스 구현을 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-05-22-Python-Photo1 2022-05-22-Python-Photo2 01. 클래스 구현 1. 프로젝트 설계하기 클래스 설계하기: 어떤 것을 클래스로 만들 지 생각해보자. 프로그램 기능 게시글 로딩 메뉴 출력 게시글 쓰기 게시글 목록 확인: 게시글 상세 확인: 글번호, 제목, 본문 내용, 조회수 등의 데이터가 필요 게시글 수정 게시글 삭제 게시글 저장 ⇒ 공통적으로 게시글을 가지고 있다. 게시글의 요소 글 번호 제목 본문 내용 조회수 ⇒ 게시글 내에 여러 데이터들이 포함되어있다: 클래스로 만들면 편리 [클래스 설계] 게시글을 어떻게 클래스로 만들까? 게시물 클래스: “Po…

May 22, 2022
프로그래밍
쿠버네티스(Kubernetes) CKA - KillerKoda Q11. Scheduling Priority

Q11. 스케줄링 우선순위(Priority) 네임스페이스에서 가장 높은 우선순위를 가진 파드를 찾아 지우자. 팁 우선순위(Priority)는 파드 정의에 있는 속성(attribute)이다. 해결 방법

May 21, 2022
데브옵스
Python - 패스트캠퍼스 캐시백 챌린지 34일차

오늘도 어제에 이어서 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 챕터 12-1. 블로그 프로젝트 소개, 설계를 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-05-21-Python-Photo1 2022-05-21-Python-Photo2 클래스, 파일 입출력, 모듈, 예외처리, 함수, 반복문, 조건문, 리스트를 활용해 프로젝트를 완성해보자. 01. FASTCAMPUS BLOG 소개, 설계 1. 프로젝트 기획의도 CRUD 기능이 있는 프로그램을 실습하기 위해 CLI 버전의 블로그를 만들어보자. CRUD란? C: Create (쓰기) R: Read(읽기) U: Update(수정) D: Delete(삭제) 2. 프로젝트 결과물 확인 프로젝트 내용: 콘솔형 블로그 만들기 기능 살펴보기: 완성된 main.py 파일을 살펴보자. data.csv 파일에 위의…

May 21, 2022
프로그래밍
쿠버네티스(Kubernetes) CKA - KillerKoda Q10. RBAC User Permissions

1. RBAC 사용자 권한 라는 기본 네임스페이스가 존재한다. 사용자는 application 네임스페이스에서 파드, 디플로이먼트, 스테이트풀셋의 생성, 삭제를 할 수 있어야 한다. 사용자는 을 제외한 모든 네임스페이스의 권한을 가지고 있어야 한다. 를 통해 검증하자. RBAC 정보 RBAC 리소스에 대해 얘기해보자. Clusterrole/Role은 전체클러스터 혹은 단일 네임스페이스에서의 사용 가능한 권한들의 집합이다. ClusterRoleBinding/RoleBinding 은 전체 클러스터 혹은 단일 네임스페이스에서의 권한 범위를 계정과 연결한다. 따라서 4가지의 RBAC 조합이 있으며, 이 중 3개만 유효하다. Role + RoleBinding (단일 네임스페이스에서 사용가능하며, 단일 네임스페이스에 적용) Clusterrole + ClusterRoleBinding (전체 클러스터 범위에서 사용가능하며, 전체 클러스터 범위에 적용) Clusterrole + RoleB…

May 21, 2022
데브옵스
쿠버네티스(Kubernetes) CKA - KillerKoda Q9. RBAC Service Account Permission

Q9. 서비스 어카운트 권한(Service Account Permission) 기존 네임스페이스 , 가 존재하는데, 이라는 서비스 어카운트를 두 네임스페이스에 생성하자. 이 서비스 어카운트는 전체 클러스터의 거의 모든 것을 볼 수 있도록 허용해야하며, 기본 Clusterrole인 를 이용할 수 있다. 이 서비스 어카운트는 , 네임스페이스에서 디플로이먼트를 생성하고 삭제할 수 있어야 한다. 를 사용해 검증하자. RBAC 정보 RBAC 리소스에 대해 얘기해보자. Clusterrole/Role은 전체클러스터 혹은 단일 네임스페이스에서의 사용 가능한 권한들의 집합이다. ClusterRoleBinding/RoleBinding 은 전체 클러스터 혹은 단일 네임스페이스에서의 권한 범위를계정과 연결한다. 따라서 4가지의 RBAC 조합이 있으며, 이 중 3개만 유효하다. Role + RoleBinding (단일 네임스페이스에서 사용가능하며, 단일 네임스페이스에 적용) Clusterrol…

May 21, 2022
데브옵스
쿠버네티스(Kubernetes) CKA - KillerKoda Q6. ConfigMap Access in Pods

Q6. 파드(POD)에서의 컨피그맵(ConfigMap) 접근 라는 내용을 갖고있는 라는 이름의 ConfigMap 을 생성하자 로 ConfigMap을 생성하자 팁 해결 방법

May 21, 2022
데브옵스
쿠버네티스(Kubernetes) CKA - KillerKoda Q8. NetworkPolicy

Q8. 네트워크 폴리시의 네임스페이스 선택 네임스페이스 & 에 기존 파드들이 존재한다. 네임스페이스 에 있는 모드 파드들이 네임스페이스 의 파드들로만 외부로 향하는 트래픽을 보낼 수 있도록 제한하는 라는 이름의 네트워크 폴리시가 필요하다. 또한 라는 이름으로 네임스페이스 의 파드들이 의 파드로부터 들어오는 트래픽만 받도록 설정해야한다. 네트워크 폴리시는 53포트의 DNS 트래픽과 TCP, UDP 트래픽을 허용해야 한다. 팁 학습을 위해 네트워크 폴리시 에디터를 확인해보자. 네트워크 폴리시의 는 네임스페이스 레이블로 작동한다. 따라서 네임스페이스들의 기존 레이블을 확인하자. 해결 방법 파트 1 첫번째 네트워크 폴리시를 생성하자. 해결 방법 파트 2 두번째 NP를 생성해보자. 검증

May 21, 2022
데브옵스
쿠버네티스(Kubernetes) CKA - KillerKoda Q7. Ingress Create

(참고: 문제가 생성되다 중단된 듯 하다. 문제에서는 서비스 까지만 생성하도록 안내되어있다.) Q7. 인그레스(Ingress) 생성 네임스페이스에 기존 두 개 디플로이먼트(deployment)가 존재하는데, Ingress를 통해 접근 가능해야한다. 먼저 두 개의 디플로이먼트를 위해 포트 80을 사용하는 서비스(Service)들을 생성한다. 각 서비스는 디플로이먼트와 동일한 이름이어야한다. 팁 해결 방법

May 21, 2022
데브옵스
쿠버네티스(Kubernetes) CKA - KillerKoda Q5. Application Multi Container Issue

Q5. 애플리케이션 멀티 컨테이너 이슈 네임스페이스에 멀티 컨테이너 디플로이먼트(Deployment)가 있으나 이슈가 있어 ready상태가 되지 않은 듯 하다. 파일에 모든 컨테이너의 로그를 기록하자. 장애의 원인이 보이는가? 팁 해결 방법 이슈는 두 컨테이너가 모두 80번 포트에서 리스닝하려는 프로세스를 갖고있기 때문으로 보인다. 컨테이너 순서와 속도에 따라서 처음 컨테이너가 성공하면 다른 쪽 컨테이너가 실패하게 된다.

May 21, 2022
데브옵스
쿠버네티스(Kubernetes) CKA - KillerKoda Q4. Application Misconfigured

Q4. 애플리케이션 설정 오류 네임스페이스에 디플로이먼트가 있으나, 이슈가 있어 준비(Ready)상태가 되지 않은 듯하다. 다른 리소스가 아닌 디플로이먼트(Deployment)만을 수정해 이슈를 해결하자. 팁 해결 방법 명령어로 장애가 발생한 디플로이먼트를 살펴보자. ConfigMap 에서 문제가 발생한 듯 하다. configmap 정보를 살펴보자. 틀린 ConfigMap 이름을 사용한 듯 하다. 설정을 바꿔주자. 조금 기다리면 모든 레플리카가 ready상태인 것을 볼 수 있다.

May 21, 2022
데브옵스
쿠버네티스(Kubernetes) CKA - KillerKoda Q3. Apiserver Misconfigured

Q3. API서버 설정 오류 먼저, API서버 장애 실습을 풀지 않았다면 풀고 오도록 하자. API 서버가 올라오지 않는 상황이다. 매니페스트 파일의 3곳이 잘못 설정되어있다. 에러를 수정하자. 로그 경로 확인해야할 로그 경로는 아래와 같다. + + (도커가 사용될 경우) kubelet 로그: 혹은 이슈 변경사항을 적용하기 위해 다음의 작업을 해야할 수 있다. 파일을 manifests 디렉토리에서 뺀다 API 서버 컨테이너가 사라질때까지 기다린다 ( ) 매니페스트 파일을 다시 돌려놓은 뒤 api서버가 돌아올 때까지 기다린다. 일부 유저들이 kubelet을 재시작해야했다고 보고 했으나() 이론상으로는 필요없다. 해결 방법 1 Kubelet이 파드/컨테이너를 시작도 생성하지도 못하고 있다. Kubelet로그를 syslog로 확인해보자. manifest파일의 metadata 부분에 오타가 있다 를 로 수정해준다. 해결 방법 2 잘못된 YAML을 수정한 뒤에도 …

May 21, 2022
데브옵스
쿠버네티스(Kubernetes) CKA - KillerKoda Q1. Vim Setup

1. KillerKoda란? CKA(Certified Kubernetes Administrator) 시험을 신청하게 되면 Killer.sh 이라는 모의 시험 환경이 제공되는데, 이번에 시험을 신청해보니 Killer.sh 외에도 Killer.sh을 만든 팀에서 KillerKoda라는 실습환경도 제공하고 있어 한 번 풀어보았다. Killer.sh 과 KillerKoda의 차이점은 아래와 같다. [Killer.sh] 시험환경과 유사한 인터페이스를 제공하는 모의고사 CKA 시험을 신청했을 때 접속할 수 있다 동일한 문제가 들어있는 두 개의 시뮬레이터를 제공 각 시뮬레이터는 활성화 한 뒤 36시간동안만 접속할 수 있다 채점 및 해설 제공 난이도: 높은 편(개인적으로 유데미의 CKA 바이블 뭄샤드님의 강의에서 제공하는 모의고사보다 훨씬 어려웠다) [KillerKoda] CKA 실제 시험과는 다소 다른 인터페이스 시간 제한 없이 누구나 무료로 이용할 수 있다 일부 채점 및 해설 제공 난이도: …

May 21, 2022
데브옵스
쿠버네티스(Kubernetes) CKA - KillerKoda Q2. Apiserver Crash

Q2. API서버 장애 이 실습에서는 API서버가 여러 방식으로 망가지도록 잘못 설정한 뒤, 에러를 확인할 수 있는 로그 경로를 확인한다. 당신은 API서버가 올라오지 않는 상황에 익숙해져야 한다. API서버 매니페스트 파일에 이라는 신규 인자(argument)를 설정하자. 파드가 다시 올라오는지 확인하고, 이 설정이 어떤 로그를 발생시키는지 확인하자. 로그 경로 아래는 확인해야할 로그 경로이다. + + (컨테이너 런타임으로 도커를 사용할 경우) Kubelet 로그: 혹은 해결 방법 API 서버가 돌아오지 않는다. 변경사항을 취소하고 다음 실습으로 넘어가자.

May 21, 2022
데브옵스
Python - 패스트캠퍼스 캐시백 챌린지 33일차

오늘도 어제에 이어서 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 챕터 11-2. 에러 만들기 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-05-20-Python-Photo1 2022-05-20-Python-Photo2 1. raise 구문 에러를 강제로 발생시키기 위한 구문 2. 예외 계층 구조 예외 계층 구조 예시 3. 에러 만들기 4. 실습 1. 에러 발생시키기 실행 결과 try except 구문을 사용해보자. 실행 결과 에러를 Exception이 아닌 기타 내장된 에러로 변경할 수 있다. 2. 에러 만들기 실행 결과 이번 포스팅에서는 에러와 예외처리에 대해 알아보았다. 다음 포스팅에서는 에러와 에러를 만들어보도록 하자. 본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다. 패스트캠퍼스 강의 등록하기: https://bit.ly…

May 20, 2022
프로그래밍
그림으로 배우는 알고리즘 제 2장 - 변수와 배열(6)

제 2장 변수와 배열 16. 배열의 각 요소는 요소 번호라는 번호로 구분한다 배열 요소: 배열을 구성하는 ‘상자’ 요소 번호: 첫 번째 배열 요소부터 마지막 배열 요소까지 일련번호를 붙여 어떤 배열요소에 데이터를 넣을지 선택하거나, 어떤 배열 요소의 데이터를 참조할 지 지정. 요소 번호의 시스템은 2가지 존재 BASE 0 : 1번째 요소 번호 0, 마지막 요소 번호 N-1 BASE 1 : 1번째 요소 번호 1, 마지막 요소 번호 N 첨자: 배열의 특정 요소에 접근하기 위해 배열명과 요소 번호를 조합해 가리키는 것 배열명[요소 번호] 배열명(요소 번호) 예: ARRAY[0] ⇒ ARRAY라는 배열의 첫번째 요소를 가리키는 것 15. 배열은 관련된 값을 효율적으로 저장하기 위한 사물함이다 적은 양의 데이터는 변수로 관리 가능하지만 많은 양의 데이터를 생성하려면 그 수만큼의 변수를 생성해야 하므로 비효율적 ⇒ 배열로 관리 배열로 데이터를 관리하면 데이터의 양이 증가하더라도 배열 요소수를…

May 20, 2022
알고리즘
Python - 패스트캠퍼스 캐시백 챌린지 32일차

오늘도 어제에 이어서 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 챕터 11-1. 에러와 예외처리를 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-05-19-Python-Photo1 2022-05-19-Python-Photo2 01. 에러와 예외처리 1. 예외처리가 필요한 이유 사용자가 개발자 예측대로만 프로그램을 사용하지는 않는다. 예: 숫자를 입력하라고 프로그램이 요청했지만 사용자가 빈칸으로 놔두거나, 문자열을 입력 프로그램 실행 중 발생하는 에러를 미연에 방지 2. try-except 구문 else: 자주 사용하지 않음 finally: 어떠한 자원을 반환할 때 사용 3. 실습 프로그램 실행 후, 정상적으로 숫자를 입력한 결과 프로그램 실행 후, 문자열을 입력한 결과 프로그램 실행 후, 숫자를 0으로 나눈 결과 try except 문으로 예외처…

May 19, 2022
프로그래밍
쿠버네티스(Kubernetes) CKA 모의고사 3.9 - 디플로이먼트(Deployment) 트러블슈팅

1. 모의고사 3.9 - 디플로이먼트(Deployment) 트러블슈팅 1. 문제 요건 We have created a new deployment called . scale the deployment to 3 replicas. Has the replica’s increased? Troubleshoot the issue and fix it. deployment has 3 replicas 2. 내 풀이 1. 사전 작업 kubectl 자동완성 설정을 미리 진행한다(이미 진행한 경우 불필요). 2. 디플로이먼트(Deployment) 트러블슈팅 명령형 커맨드로 디플로이먼트를 3으로 증가시킨다 nginx-deploy의 상세정보를 살펴본다. 특별한 에러 메시지는 보이지 않는다. kube-system 네임스페이스의 kube-controller-manager가 제대로 동작하지 않는다(). kube-controller-manager 파드의 상세 설정을 확인한다. Image: k8s.…

May 19, 2022
데브옵스
쿠버네티스(Kubernetes) CKA 모의고사 3.7 - 레이블(Label)이 여러 개인 파드 생성하기

모의고사 3.7 - 레이블(Label)이 여러 개인 파드 생성하기 1. 문제 요건 Create a pod called  in  namespace belonging to the   and   .image:  Use appropriate labels and create all the required objects if it does not exist in the system already. hr-pod labeled with ? hr-pod labeled with ? 2. 내 풀이 1. 사전 작업 kubectl 자동완성 설정을 미리 진행한다(이미 진행한 경우 불필요). 2. 레이블(Label)이 여러 개인 파드 생성 명령형 커맨드로 파드 생성하기 네임스페이스가 없다는 에러 발생 네임스페이스를 생성한다. 다시 명령형 커맨드로 파드를 생성한다. 명령어로 파드가 잘 생성되었는지 확인한다. 3. 참고 URL kubectl 치트 시트: https://kubernetes.io/ko/d…

May 19, 2022
데브옵스
쿠버네티스(Kubernetes) CKA 모의고사 3.6 - 테인트(Taint) & 톨러레이션(Toleration) 적용하기

1. 모의고사 3.6 - 테인트(Taint) & 톨러레이션(Toleration) 적용하기 1. 문제 요건 Taint the worker node  to be Unschedulable. Once done, create a pod called , image , to ensure workloads are not scheduled to this worker node. Finally, create a new pod called  and image:  with toleration to be scheduled on . key: , value: , operator:  and effect:  Key = env_type Value = production Effect = NoSchedule pod ‘dev-redis’ (no tolerations) is not scheduled on node01? Create a pod ‘prod-redis’ to run on node01 2. 내 풀이 1. 사전 …

May 19, 2022
데브옵스
쿠버네티스(Kubernetes) CKA 모의고사 3.4 - 시큐리티 폴리시(Security Policy)가 적용된 파드(POD) 생성하기

1. 모의고사 3.4 - 시큐리티 폴리시(Security Policy)가 적용된 파드(POD) 생성하기 1. 문제 요건 Create a Pod called  , image: runAsUser: 1000 fsGroup: 2000 Pod non-root-pod fsGroup configured Pod non-root-pod runAsUser configured 2. 내 풀이 1. 사전 작업 kubectl 자동완성 설정을 미리 진행한다(이미 진행한 경우 불필요). 2. 시큐리티 폴리시(Security Policy)가 적용된 파드(POD) 생성 명령형 커맨드로 파드의 매니페스트 파일을 만들어 저장한다. 생성한 매니페스트 파일을 문제 요건에 맞게 수정한다. 명령어로 파드를 생성한다. 명령어로 컨테이너가 잘 생성되었는지 확인한다. 3. 참고 URL kubectl cheat sheet: https://kubernetes.io/ko/docs/reference/kubectl/cheatshe…

May 19, 2022
데브옵스
쿠버네티스(Kubernetes) CKA 모의고사 3.8 - kubeconfig 파일 트러블슈팅

1. 모의고사 3.8 - kubeconfig 파일 트러블슈팅 1. 문제 요건 A kubeconfig file called  has been created under . There is something wrong with the configuration. Troubleshoot and fix it. Fix /root/CKA/super.kubeconfig 2. 내 풀이 1. 사전 작업 kubectl 자동완성 설정을 미리 진행한다(이미 진행한 경우 불필요). 2. kubeconfig 파일 트러블슈팅 명령어로 해당 kubeconfig 내용을 확인한다. control plane과 통신하는 포트번호가 9999 쿠버네티스 클러스터와 통신하려면 kube-apiserver를 통해 통신해야하는데, kube-apiserver의 기본 포트는 6443이다. 포트번호를 6443으로 고친다. 3. 참고 URL Ports and Protocols: https://kubernetes.io/docs/re…

May 19, 2022
데브옵스
쿠버네티스(Kubernetes) CKA 모의고사 3.3 - 멀티컨테이터 파드(Multi-Container POD) 생성하기 및 파드(POD)연결

3.3 - 멀티컨테이터 파드(Multi-Container POD) 생성하기 1. 문제 요건 Create a pod called  with two containers.Container 1, name: , image: Container 2: name: , image: , command: Environment Variables:container 1:Container 2: Pod Name: multi-pod Container 1: alpha Container 2: beta Container beta commands set correctly? Container 1 Environment Value Set Container 2 Environment Value Set 2. 내 풀이 1. 사전 작업 kubectl 자동완성 설정을 미리 진행한다(이미 진행한 경우 불필요). 2. 멀티컨테이터 파드(Multi-Container POD) 생성 명령형 커맨드로 컨테이너가 하나 있는 파드의 매니페스트 파…

May 19, 2022
데브옵스
쿠버네티스(Kubernetes) CKA 모의고사 3.5 - 네트워크 폴리시(Security Policy) 적용하기

1. 모의고사 3.5 - 네트워크 폴리시(Network Policy) 적용하기 1. 문제 요건 We have deployed a new pod called  and a service called . Incoming connections to this service are not working. Troubleshoot and fix it.Create NetworkPolicy, by the name  that allows incoming connections to the service over port . Important: Don’t delete any current objects deployed. Important: Don’t Alter Existing Objects! NetworkPolicy: Applied to All sources (Incoming traffic from all pods)? NetWorkPolicy: Correct Port? NetWorkPolicy: Appl…

May 19, 2022
데브옵스
쿠버네티스(Kubernetes) CKA 모의고사 3.2 - JSON PATH로 노드 Internal IP 출력하기 및 파드(POD) 연결하기

모의고사 3.2 - JSON PATH로 노드 Internal IP 출력하기 1. 문제 요건 List the  of all nodes of the cluster. Save the result to a file . Answer should be in the format:  (in a single line) Task Completed 2. 내 풀이 1. 사전 작업 kubectl 자동완성 설정을 미리 진행한다(이미 진행한 경우 불필요). 2. JSON PATH로 노드 Internal IP 출력 및 파드(POD) 연결 쿠버네티스 치트시트에서 가장 유사한 명령어를 찾아 복사한 뒤 수정한다. 문제에서 지정한 경로에 저장한다. 명령어로 잘 저장되었는지 확인한다. 3. 참고 URL kubectl cheat sheet: https://kubernetes.io/ko/docs/reference/kubectl/cheatsheet/

May 19, 2022
데브옵스
그림으로 배우는 알고리즘 제 2장 - 변수와 배열(5)

제 2장 변수와 배열 14. 동일한 데이터 타입이 연속되면 배열이다 배열: 많은 양의 데이터를 저장하고 유지하기 위해 사용 예시 전교생의 시험 결과(점수) 1년간의 일일 입장객 수 배열에 담을 각각의 데이터들은 반드시 같은 종류여야 한다. 배열에 담을 각 데이터는 반드시 데이터타입이 동일해야한다. 15. 배열은 배열명이라는 이름으로 구별한다. 배열명: 다른 변수, 배열과 구분되는 고유의 이름 배열명의 철칙 배열명은 고유해야한다. 숫자이름과 숫자로 시작하는 이름은 배열명으로 사용할 수 없다. 일반적으로 배열명을 정할때에는 배열 속 데이터 내용을 대표하는 이름을 붙인다. 예시 전교생의 시험 결과(점수): SCORE 1년간의 일일 입장객 수: PEOPLE

May 19, 2022
알고리즘
쿠버네티스(Kubernetes) CKA 모의고사 3.1 - 서비스 어카운트(Service Account) 생성 및 파드(POD)연결

모의고사 3.1 - 서비스 어카운트(Service Account) 생성 및 파드(POD)연결 1. 문제 요건 Create a new service account with the name . Grant this Service account access to  all PersistentVolumes in the cluster by creating an appropriate cluster role called  and ClusterRoleBinding called .Next, create a pod called  with the image:  and serviceAccount:  in the default namespace. ServiceAccount: pvviewer ClusterRole: pvviewer-role ClusterRoleBinding: pvviewer-role-binding Pod: pvviewer Pod configured to use ServiceAccount pvv…

May 19, 2022
데브옵스
쿠버네티스(Kubernetes) CKA 모의고사 2.8 - 스태틱 파드(Static Pod) 생성하기

모의고사 2.8 - 스태틱 파드(Static Pod) 생성하기 1. 문제 요건 Create a static pod on  called  with image  and make sure that it is recreated/restarted automatically in case of a failure. Use  as the Static Pod path for example. static pod configured under /etc/kubernetes/manifests ? Pod nginx-critical-node01 is up and running 2. 내 풀이 1. 사전 작업 kubectl 자동완성 설정을 미리 진행한다(이미 진행한 경우 불필요). 2. 스태틱 파드(Static Pod) 생성 명령문으로 파드 매니페스트 파일을 생성한 뒤, 매니페스트 파일을 이용해 파드를 생성한ㄷ. 3. 참고 URL kubectl cheat sheet: https://kubernetes.io/ko/…

May 18, 2022
데브옵스
Python - 패스트캠퍼스 캐시백 챌린지 31일차

오늘도 어제에 이어서 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 챕터 10-3. 파일입출력 실습문제 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-05-18-Python-Photo1 2022-05-18-Python-Photo2 1. 실습문제 10.1.1 보유한 주식이 목표가에 도달했을 때의 종목별 수익금과 수익률을 출력해주는 프로그램을 작성해보자. mystock.csv 파일로부터 종목, 매입가, 수량, 목표가 정보를 가져온다. 수익금 = (목표가 - 매입가) * 수량 수익률 = (목표가 / 매입가 - 1) *100 mystock.csv 표준 출력 [내 풀이] - 못풀었음 csv 파일 생성까지는 성공 행별로 값을 추출해서 계산식에 넣으려고 했으나 문자열로 되어있는 첫번째 줄을 제거하지 못함 [강의 해설] 오류 해결 과정 중심으로 실습문제 풀이 파…

May 18, 2022
프로그래밍
쿠버네티스(Kubernetes) CKA 모의고사 2.7 - 파드(POD)와 서비스 생성 및 DNS Lookup

모의고사 2.7 - 파드(POD)와 서비스 생성 및 DNS Lookup 1. 문제 요건 Create a nginx pod called  using image , expose it internally with a service called . Test that you are able to look up the service and pod names from within the cluster. Use the image  to create a pod for dns lookup. Record results in  and  for service and pod name resolutions respectively Pod: nginx-resolver created Service DNS Resolution recorded correctly Pod DNS resolution recorded correctly 2. 내 풀이 1. 사전 작업 kubectl 자동완성 설정을 미리 진행한다(이미 진행한 경…

May 18, 2022
데브옵스
쿠버네티스(Kubernetes) CKA 모의고사 2.6 - 유저 생성 및 권한 부여하기

모의고사 2.6 - 유저 생성 및 권한 부여하기 1. 문제 요건 Create a new user called . Grant him access to the cluster. John should have permission to  in the  namespace . The private key exists in the location:  and csr at . : As of kubernetes 1.19, the CertificateSigningRequest object expects a .Please refer the documentation to see an example. The documentation tab is available at the top right of terminal. CSR: ; Status: Approved Role Name: ; namespace: ; Resource:  Access: User ‘john’ has appropriate permissions …

May 18, 2022
데브옵스
쿠버네티스(Kubernetes) CKA 모의고사 2.5 - 디플로이먼트(Deployment) 이미지 업그레이드하기

모의고사 2.5 - 디플로이먼트(Deployment) 이미지 업그레이드하기 1. 문제 요건 Create a new deployment called , with image  and  replica. Next upgrade the deployment to version  using rolling update. Deployment : nginx-deploy. Image: nginx:1.16 Image: nginx:1.16 Task: Upgrade the version of the deployment to 1:17 Task: Record the changes for the image upgrade 2. 내 풀이 1. 사전 작업 kubectl 자동완성 설정을 미리 진행한다(이미 진행한 경우 불필요). 2. 디플로이먼트(Deployment) 이미지 업그레이드 명령문으로 디플로이먼트(Deployment) 매니페스트 파일을 생성한다. 파드 매니페스트 파일로 디플로이먼트를 생성한다. 디플로이먼…

May 18, 2022
데브옵스
쿠버네티스(Kubernetes) CKA 모의고사 2.4 - 퍼시스턴트 볼륨(Persistent Volume)을 마운트한 파드(POD) 생성하기

모의고사 2.4 - 퍼시스턴트 볼륨(Persistent Volume)을 마운트한 파드(POD) 생성하기 1. 문제 요건 A pod definition file is created at . Make use of this manifest file and mount the persistent volume called . Ensure the pod is running and the PV is bound. mountPath:  persistentVolumeClaim Name:  persistentVolume Claim configured correctly pod using the correct mountPath pod using the persistent volume claim? 2. 내 풀이 1. 사전 작업 kubectl 자동완성 설정을 미리 진행한다(이미 진행한 경우 불필요). 2. 퍼시스턴트 볼륨(Persistent Volume)을 마운트한 파드(POD) 생성 문제에서 제공한 파드 …

May 18, 2022
데브옵스
쿠버네티스(Kubernetes) CKA 모의고사 2.3 - Security Context를 지정한 파드(POD) 생성하기

모의고사 2.3 - 커맨드를 지정한 파드(POD) 생성하기 1. 문제 요건 Create a new pod called  with image . Allow the pod to be able to set . The container should sleep for 4800 seconds. Pod: super-user-pod Container Image: busybox:1.28 SYS_TIME capabilities for the conatiner? 2. 내 풀이 1. 사전 작업 kubectl 자동완성 설정을 미리 진행한다(이미 진행한 경우 불필요). 2. 커맨드를 지정한 파드(POD) 생성 명령문으로 파드 매니페스트 파일을 생성한다. 파드 매니페스트 파일에 수정할 부분이 없는지 확인한다. Command sleep, “4800” 추가 을 추가해야한다: 쿠버네티스 공식문서에서 Security Context 검색 > Set capabilities for a Container 탭으로 이동 …

May 18, 2022
데브옵스
쿠버네티스(Kubernetes) CKA 모의고사 2.2 - emptyDir 타입의 볼륨이 마운트 된 파드(POD) 생성하기

모의고사 2.2 - emptyDir 타입의 볼륨이 마운트 된 파드(POD) 생성하기 1. 문제 요건 Create a Pod called  with image:  with a Volume of type  that lasts for the life of the Pod. Specs on the below. Pod named ‘redis-storage’ created Pod ‘redis-storage’ uses Volume type of emptyDir Pod ‘redis-storage’ uses volumeMount with mountPath = /data/redis 2. 내 풀이 1. 사전 작업 kubectl 자동완성 설정을 미리 진행한다(이미 진행한 경우 불필요). 2. emptyDir 볼륨이 마운트 된 파드(POD) 생성 쿠버네티스 공식문서에서 키워드로 검색해 생성 예시를 복사해둔다. vi 에디터로 파일 생성 후 문제 요건에 맞게 수정한다. 작성한 매니페스트 파일을 이용해 파드를…

May 18, 2022
데브옵스
쿠버네티스(Kubernetes) CKA 모의고사 2.1 - ETCD 백업 파일 생성하기

모의고사 2.1 - ETCD 백업 파일 생성하기 1. 문제 요건 Take a backup of the etcd cluster and save it to . Backup Completed 2. 내 풀이 1. 사전 작업 kubectl 자동완성 설정을 미리 진행한다(이미 진행했다면 불필요). 2. ETCD 백업파일 생성 get 명령어로 etcd 파드 이름을 찾는다. describe 명령어로 etcd 백업에 필요한 내용들을 확인한다. etcdctl 실행 시 필요한 파라미터값들을 확인하며 메모로 남겨 놓은 뒤 알맞은 정보를 채워넣는다. ETCD 백업 파일이 잘 생성되었는지 확인한다. 3. 참고 URL ETCD backup: https://kubernetes.io/docs/tasks/administer-cluster/configure-upgrade-etcd/#backing-up-an-etcd-cluster

May 18, 2022
데브옵스
그림으로 배우는 알고리즘 제 2장 - 변수와 배열(3)

제 2장 변수와 배열 10. 변수는 변수명이라는 이름으로 구별한다 변수명: 변수의 용도가 무엇인지 표시하고 다른 변수들과 구분하기 위한 수당. 변수에는 반드시 변수명을 붙여야 한다. 변수명을 붙일 때의 규칙 변수명은 고유해야한다: 변수명을 사용해 원하는 변수를 반드시 구별할 수 있어야하기 때문 숫자만 사용한 이름, 숫자로 시작하는 이름은 사용할 수 없다: 숫자 데이터(값)과 변수를 구별해야 하기 때문 11. 대입문에는 변수에 값을 대입하는 기능이 있다 변수에 값을 대입할 때에는 왼쪽에 변수명을, 오른쪽에 대입하는 값을 적는 것이 일반적이다. 대입문: 변수에 값을 대입하는 구문 예 1: 변수명 ← 값 예 2: 변수명 = 값 예 3: STR ← “ABC” 예 4: STR = “ABC” 대입문 오른쪽에는 연산자(+, -, *, /)를 사용해 계산식을 작성할 수 있다. 예 1: X ← 10 + 5 (15가 변수 X에 대입된다) 예 2: X = 10 + 5 (15가 변수 X에 대입된다)

May 18, 2022
알고리즘
그림으로 배우는 알고리즘 제 2장 - 변수와 배열(4)

제 2장 변수와 배열 12. 변수를 변수에 대입하면 변수에 저장된 값이 다른 변수에 복사된다 변수명에 다른 변수명을 대입할 수 있다. 예: A = 10 일때, Y = A 로 A를 Y에 대입할 수 있다. 변수명을 변수명에 대입했을 경우, 변수 자체가 들어가는 것이 아니라 변수의 값이 대입된다. 예: Y = A로 대입했을 때, 실제로는 Y = 10 처럼 A의 값인 10이 대입된다. 변수를 포함한 계산식도 변수에 대입할 수 있다. 예: Y = A + 4 (Y = 14가 된다) 13. 변수에도 데이터 타입이 있다. 변수를 정의할때 변수명과 ‘어떤 데이터 타입의 값을 담을 수 있을지’를 함께 정의하게 된다. 변수의 데이터 타입과 일치하는 데이터만 변수에 대입할 수 있다. 예시 정수 타입: 정수타입 데이터만 대입할 수 있다. 실수 타입: 실수 타입 데이터만 대입할 수 있다. 문자 타입: 문자 타입 데이터만 대입할 수 있다. 문자열 타입: 문자열 타입 데이터만 대입할 수 있다. 논리 타입: 논…

May 18, 2022
알고리즘
그림으로 배우는 알고리즘 제 2장 - 변수와 배열(2)

제 2장 변수와 배열 8. 값은 숫자와 문자의 구체적인 표현 값: 데이터를 구체적으로 표현한 것 알고리즘에서 값을 표현할 때에는 숫자나 기호로 표기한다. 정수 값, 실수 값의 표현 ⇒ 0, 1234, -1, 1.23 문자값의 표현 ⇒ ‘A’ 문자열 값의 표현 ⇒ “KOREA”, “알고리즘” ⇒ 문자, 문자열 값을 기호로 묶어 표현하는 것은 숫자 10과 문자열 “10”을 구별하기 위해서이다. 9. 변수는 값을 담는 상자이다. 변수: 데이터(값)을 넣어두는 상자이다. 변수에 데이터(값)을 넣는 작업을 ‘대입한다/할당한다’라고 한다. 변수에는 반드시 하나의 데이터만 담을 수 있다.

May 18, 2022
알고리즘
쿠버네티스(Kubernetes) CKA 모의고사 1.12 - 퍼시스턴트 볼륨(Persistent Volume: PV) 생성하기

모의고사 1.12 - 퍼시스턴트 볼륨(Persistent Volume: PV) 생성하기 1. 문제 요건 Create a  with the given specification. Volume Name: pv-analytics Storage: 100Mi Access modes: ReadWriteMany Host Path: /pv/data-analytics 2. 내 풀이 1. 사전 작업 kubectl 자동완성 설정을 미리 진행한다(이미 진행한 경우 불필요). 2. YAML을 이용해 hostpath타입 퍼시스턴트 볼륨(Persistent Volume)생성 hostpath 타입 퍼시스턴트 볼륨 매니페스트 파일의 예시를 복사해둔다. vi 에디터로 파일 생성 후 문제 요건에 맞게 수정한다. 작성한 매니페스트 파일을 이용해 PV를 생성한다. PV가 잘 생성되었는지 확인한다. 3. 참고 URL 퍼시스턴트 볼륨(Persistent Volume): https://kubernetes.io/ko/d…

May 17, 2022
데브옵스
Python - 패스트캠퍼스 캐시백 챌린지 중간미션, 한 번에 끝내는 파이썬 웹개발 초격차 패키지 Online 강의 후기

파이썬 챌린지를 시작한지 정말 얼마 되지 않은 것 같은데 벌써 중간 미션을 하라는 공지가 왔다. 출퇴근 + cka 자격증 강의와 함께 병행해야 해서 진도를 많이는 못나가지만 하루에 그래도 1~2강은 꾸준히 들으려고 노력했었는데, 그러다보니 파이썬 기본 문법까지는 거의 다 수강하게 되었다. 사실 아직 기초적인 문법을 배우는 단계이고 무언가를 만들어본 게 아니라서 Before & After를 논하기에는 아직 이른 듯 해 강의 후기, 챌린지 회고, 앞으로의 계획 세 파트로 나눠서 포스팅을 해보려 한다. 1. 강의 수강 & 챌린지 신청 계기 2022-05-17-Python-Mid-Review1 내가 수강했던 강의는 “파이썬 웹개발 초격차 패키지 Online”이라는 강의이다. 사실 나는 이 이전에 백엔드 & 프론트 엔드 둘 다 사용가능해 범용성이 높다고 생각해 자바스크립트를 배우려고 했었다. 그래서 패스트캠퍼스의 자회사인 제로베이스(Zero-base)에서 자바스크립트 강의를 먼저 수강했었…

May 17, 2022
프로그래밍
Python - 패스트캠퍼스 캐시백 챌린지 30일차

오늘도 어제에 이어서 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 챕터 10-2. csv파일입출력을 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-05-17-Python-Photo1 2022-05-17-Python-Photo2 1. 파일 입출력 기본(이어서) 1. pickle 모듈 파일에 파이썬 객체를 저장한다. wb: write binary 모드. 컴퓨터가 바로 읽을 수 있는 데이터 형식 “data.pickle” 의 pickle은 .p 혹은 .pc 로 변경해도 된다. 파일로부터 파이썬 객체를 읽어보자. rb: read binary 모드. data = pickle.load(file): 파일에서 데이터가 하나하나 로드되어 data 객체에 저장 2. With 구문 With 구문을 사용해보자. with 구문을 사용하는 이유: file.close 를 매번…

May 17, 2022
프로그래밍
쿠버네티스(Kubernetes) CKA 모의고사 1.11 - JSON PATH로 Node의 osImage 정보 출력

모의고사 1.11 - JSON PATH로 Node의 osImage 정보 출력 1. 문제 요건 Use JSON PATH query to retrieve the s of all the nodes and store it in a file . The  are under the  section under  of each node. Task Completed 2. 내 풀이 1. 사전 작업 kubectl 자동완성 설정을 미리 진행한다(이미 진행한 경우 불필요). 2. JSON PATH를 이용해 리소스의 특정 데이터 출력 kubectl cheat sheet에서 최대한 비슷한 jsonpath 명령어를 복사해둔다. 문제의 제시 정보를 참고해 쿼리문을 작성한다(단계별로 테스트해가며 경로가 맞는지 확인한다). 문제에서 제시한 경로로 쿼리 결과를 저장한다. 쿼리 결과가 잘 저장되었는지 확인한다. 3. 참고 URL kubectl cheat sheet: https://kubernetes.io/ko/do…

May 17, 2022
데브옵스
쿠버네티스(Kubernetes) CKA 모의고사 1.10 - 노드포트(NodePort)타입 서비스(Service) 생성

모의고사 1.10 - 노드포트(NodePort)타입 서비스(Service) 생성 1. 문제 요건 Expose the  as service  application on port  on the nodes on the cluster. The web application listens on port . Name: hr-web-app-service Type: NodePort Endpoints: 2 Port: 8080 NodePort: 30082 2. 내 풀이 1. 사전 작업 kubectl 자동완성 설정을 미리 진행한다(이미 진행한 경우 불필요). 2. 노드포트(NodePort) 타입의 서비스(Service) 생성 노출 대상 애플리케이션이 파드인지 디플로이먼트인지 확인한다. 명령문으로 서비스의 매니페스트 파일을 생성한다. 매니페스트 파일에 잘못된 부분이 없는지 확인하고, NodePort 부분을 추가한다. 서비스가 잘 생성되었는지 확인한다. 3. 참고 URL kubectl cheat sh…

May 17, 2022
데브옵스
쿠버네티스(Kubernetes) CKA 모의고사 1.9 - 파드(POD) 트러블 슈팅

모의고사 1.9 - 파드(POD) 트러블 슈팅 1. 문제 요건 A new application  is deployed. There is something wrong with it. Identify and fix the issue. Issue fixed 2. 내 풀이 1. 사전 작업 kubectl 자동완성 설정을 미리 진행한다(이미 진행한 경우 불필요). 2. 파드(POD) 트러블 슈팅 문제가 되는 리소스를 확인한다. 문제 리소스의 상세 정보를 확인한다. Event 를 살펴보았을 때 init 컨테이너에서 문제가 발생한 것을 알 수 있다. orange 파드의 매니페스트 파일을 저장한다. 문제가 있는 부분을 찾아서 고친다. sleeeeep 2 ⇒ sleep 2로 수정한다. 기존에 생성되었던 파드를 지운다. 수정한 매니페스트 파일을 이용해 파드를 재생성한다. 파드가 잘 동작하는지 확인한다. 3. 참고 URL kubectl cheat sheet: https://kubernetes.io…

May 17, 2022
데브옵스
쿠버네티스(Kubernetes) CKA 모의고사 1.8 - 파드(POD) 특정 네임스페이스에 생성하기

모의고사 1.8 - 파드(POD) 특정 네임스페이스에 생성하기 1. 문제 요건 Create a POD in the  namespace named  with the image . Name: temp-bus Image Name: redis:alpine 2. 내 풀이 1. 사전 작업 kubectl 자동완성 설정을 미리 진행한다(이미 진행한 경우 불필요). 2. 특정 네임스페이스(Namespace)에 파드(POD)생성 명령문으로 파드의 매니페스트 파일을 생성한다. 매니페스트 파일이 잘 생성되었는지 확인한다. 매니페스트 파일을 이용해 파드를 생성한다. 파드가 잘 생성되었는지 확인한다. 3. 참고 URL kubectl cheat sheet: https://kubernetes.io/ko/docs/reference/kubectl/cheatsheet/

May 17, 2022
데브옵스
쿠버네티스(Kubernetes) CKA 모의고사 1.5 - 서비스(Service) 노출하기

모의고사 1.5 - 서비스(Service) 노출하기 1. 문제 요건 Create a service  to expose the  application within the cluster on port . Use imperative commands. Service: messaging-service Port: 6379 Type: ClusterIp Use the right labels 2. 내 풀이 1. 사전 작업 kubectl 자동완성 설정을 미리 진행한다(이미 진행한 경우 불필요). 2. 명령형 커맨드를 이용해 서비스(Service) 생성 명령문으로 서비스의 매니페스트 파일을 생성한 뒤 저장한다. 매니페스트 파일이 제대로 생성되었는지 확인한다. 매니페스트 파일을 이용해 서비스를 생성한다. 서비스가 잘 생성되었는지 확인한다. 3. 참고 URL kubectl cheat sheet: https://kubernetes.io/ko/docs/reference/kubectl/cheatsheet/

May 17, 2022
데브옵스
쿠버네티스(Kubernetes) CKA 모의고사 1.6 - 디플로이먼트(Deployment) 생성하기

모의고사 1.6 - 디플로이먼트(Deployment) 생성하기 1. 문제 요건 Create a deployment named  using the image  with  replicas. Name: hr-web-app Image: kodekloud/webapp-color Replicas: 2 2. 내 풀이 1. 사전 작업 kubectl 자동완성 설정을 미리 진행한다(이미 진행한 경우 불필요). 2. 명령문으로 디플로이먼트(Deployment) 생성 명령문으로 디플로이먼트의 매니페스트 파일을 생성한 뒤 저장한다. 매니페스트 파일이 제대로 생성되었는지 확인한다. 매니페스트 파일을 이용해 디플로이먼트를 생성한다. 디플로이먼트가 잘 생성되었는지 확인한다. 3. 참고 URL kubectl cheat sheet: https://kubernetes.io/ko/docs/reference/kubectl/cheatsheet/

May 17, 2022
데브옵스
쿠버네티스(Kubernetes) CKA 모의고사 1.7 - 스태틱 파드(Static Pod) 생성하기

모의고사 1.7 - 스태틱 파드(Static Pod) 생성하기 1. 문제 요건 Create a static pod named  on the controlplane node that uses the  image and the command . Name: static-busybox Image: busybox 2. 내 풀이 1. 사전 작업 kubectl 자동완성 설정을 미리 진행한다(이미 진행한 경우 불필요). 2. YAML 파일을 선언형으로 생성해 스태틱 파드(Static Pod) 생성 스태틱 파드가 생성되는 경로를 찾는다. 매니페스트 파일을 저장한다. 매니페스트 파일이 잘 생성되었는지 확인한다. 스태틱 파드(Static Pod)가 잘 생성되었는지 확인한다. 3. 참고 URL 스태틱 파드 생성하기: https://kubernetes.io/ko/docs/tasks/configure-pod-container/static-pod/

May 17, 2022
데브옵스
쿠버네티스(Kubernetes) CKA 모의고사 1.4 - 리소스 JSON 형태로 출력하기

모의고사 1.4 - 리소스 JSON 형태로 출력하기 1. 문제 요건 Get the list of nodes in JSON format and store it in a file at . Task completed 2. 내 풀이 1. 사전 작업 kubectl 자동완성 설정을 미리 진행한다(이미 진행한 경우 불필요). 2. 리소스 JSON 형태로 출력하기 리소스 조회 명령어에 옵션을 더해 노드를 JSON 형태로 출력한다. 명령문을 실행해 결과값이 올바르게 뜨는지 확인 후, 파일에 저장한다. 저장이 잘 되었는지 확인한다. 3. 참고 URL kubectl cheat sheet: https://kubernetes.io/ko/docs/reference/kubectl/cheatsheet/ 노드: https://kubernetes.io/ko/docs/concepts/architecture/nodes/

May 17, 2022
데브옵스
쿠버네티스(Kubernetes) CKA 모의고사 1.1 - 기본적인 파드(POD) 생성하기

모의고사 1.1 - 기본적인 파드(POD) 생성하기 1. 문제 요건 Deploy a pod named  using the  image. Once done, click on the  button in the top right corner of this panel. You may navigate back and forth freely between all questions. Once done with all questions, click on . Your work will be validated at the end and score shown. Good Luck! Name: nginx-pod Image: nginx:alpine 2. 내 풀이 1. 사전 작업 kubectl 자동완성 설정을 미리 진행한다. 2. 명령문으로 파드(POD)생성 명령문을 사용해 Pod 매니페스트 파일을 생성한다. 생성된 매니페스트 파일 내용이 맞는지 확인한다. 매니페스트 파일을 이용해 파드를 생성한다. 파드…

May 17, 2022
데브옵스
쿠버네티스(Kubernetes) CKA 모의고사 1.3 - 네임스페이스(Namespace) 생성하기

모의고사 1.3 - 네임스페이스(Namespace) 생성하기 1. 문제 요건 Create a namespace named . Namespace: apx-x9984574 2. 내 풀이 1. 사전 작업 kubectl 자동완성 설정을 미리 진행한다(이미 설정해놓은 경우 불필요). 2. 명령문을 사용해 네임스페이스(Namespace) 생성 명령문을 사용해 네임스페이스(namespace)를 생성한다. 네임스페이스가 제대로 생성되었는지 확인한다. 3. 참고 URL kubectl cheat sheet: https://kubernetes.io/ko/docs/reference/kubectl/cheatsheet/

May 17, 2022
데브옵스
쿠버네티스(Kubernetes) CKA 모의고사 1.2 - 레이블(Label)을 지정한 파드(POD) 생성하기

모의고사 1.2 - 레이블(Label)을 지정한 파드(POD) 생성하기 1. 문제 요건 Deploy a  pod using the  image with the labels set to . Pod Name: messaging Image: redis:alpine Labels: tier=msg 2. 내 풀이 1. 사전 작업 kubectl 자동완성 설정을 미리 진행한다(이미 설정했으면 중복 설정 불필요). 2. 명령문으로 파드(POD) 생성 명령문을 사용해 Pod 매니페스트 파일을 생성한다. 생성된 매니페스트 파일 내용이 맞는지 확인한다. 매니페스트 파일을 이용해 파드를 생성한다. 파드가 제대로 생성되었는지 확인한다. 3. 참고 URL kubectl cheat sheet: https://kubernetes.io/ko/docs/reference/kubectl/cheatsheet/

May 17, 2022
데브옵스
Python - 패스트캠퍼스 캐시백 챌린지 29일차

오늘도 어제에 이어서 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 챕터 10-1. 파일입출력 기본을 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-05-16-Python-Photo1 2022-05-16-Python-Photo2 01. 파일입출력 기본 1. 파일 입출력을 사용하는 이유 앞선 수업에서 사용자로부터 데이터를 입력 받을 때 사용하는 함수: 데이터를 표시: 프로그램 외부파일에 있는 데이터를 가져와야하거나 프로그램에서 만든 유의미한 데이터를 저장해야할 때에는 ⇒ 파일형태로 데이터를 읽고 저장해야함 [파일 입출력을 사용하는 이유] 파일로부터 데이터를 읽어와서 프로그램에 사용하기 위해 프로그램에서 만든 데이터를 파일 형태로 저장하기 위해 2. 파일 열기 모드 w: 쓰기 모드 (write) a: 추가 모드 (append) r: 읽기 모드 (re…

May 16, 2022
프로그래밍
쿠버네티스(Kubernetes) CKA Lightning Lab 7 - Secret이 마운트된 Pod 생성하기

7. Secret이 마운트된 Pod 생성하기 [문제 요건] 네임스페이스에 이미지를 가지고 라는 파드를 생성 파드 내 컨테이너명은 반드시 여야함 초동안 sleep하는 명령어 실행 컨테이너에 마운트 되는 시크릿 볼륨은 여야 하며, 컨테이너는 경로에 시크릿 볼륨을 마운트해야한다. 시크릿 이름은 채점 기준: 파드가 올바르게 생성되었는가? [내 풀이] kubectl 명령어로 pod의 yaml 파일을 생성해준다. Tip: 옵션을 사용해 파드를 생성하지 않고 매니페스트 파일만 생성한다. 생성한 매니페스트 파일(yaml)을 편집한다. 문제 요건에 맞게 pod의 yaml 파일을 수정한다. 파드의 컨테이너명을 으로 수정한다. 쿠버네티스 공식 문서의 Secret 문서를 참고하여 Secret Volume과 VolumeMounts 구문을 추가한다. 명령어를 사용해 파드를 생성한 뒤, 잘 생성되었는지 확인한다. [참고 URL] kubectl reference: https://kuberne…

May 15, 2022
데브옵스
Python - 패스트캠퍼스 캐시백 챌린지 28일차

오늘도 어제에 이어서 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 챕터 9-3. 패키지를 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-05-15-Python-Photo1 2022-05-15-Python-Photo2 03. 패키지 1. 패키지의 개념 관련있는 모듈을 하나의 폴더로 구성해 놓은 것. 2. 패키지 만들고, 사용하기 디렉토리(=폴더) 구조 VScode로 이동해 Chapter9 폴더 밑에 startcoding, startcoding 하위에 unit 폴더를 생성 및 위 디렉토리 구조대로 파일생성 Tip: unit 폴더 생성 시 이라는 컴팩트폴더 형식으로 폴더가 표시되는데, 이를 해제하려면 (MacOS의 경우 ) 에 들어가 라고 검색한 뒤, 라는 항목의 체크박스를 해제해주면 폴더가 트리형식으로 표시된다. 디렉토리 및 파일 생성이 완료…

May 15, 2022
프로그래밍
쿠버네티스(Kubernetes) CKA Lightning Lab 6 - ETCD 백업파일 생성하기

6. ETCD 백업파일 생성하기 [문제 요건] ETCD 백업을 의 에 생성한다. 채점기준: 트러블 슈팅으로 이슈 해결 [내 풀이] 명령어를 사용해 etcd 파드 정보를 확인한다. 위의 etcd 파드(POD)의 정보를 참조하여 백업 명령어를 작성한다. : listen-client-urls 참조 : trusted-ca-file 참조 : cert-file 참조 : key-file 참조 백업파일이 잘 생성되었는지 확인한다. [참고 URL] etcd backup: https://kubernetes.io/docs/tasks/administer-cluster/configure-upgrade-etcd/#backing-up-an-etcd-cluster

May 15, 2022
데브옵스
쿠버네티스(Kubernetes) CKA Lightning Lab 4 - 디플로이먼트(Deployment) 생성 및 이미지 업데이트

4. 디플로이먼트(Deployment) 생성 및 이미지 업데이트 [문제 요건] 네임스페이스에 이미지를 사용하는 신규 디플로이먼트 를 생성해야한다. 레플리카 수는 1. 그 뒤, 디플로이먼트의 버전을 롤링 업데이트(Rolling Update)로 로 업데이트 채점기준 이미지: nginx:1.16 작업: 디플로이먼트의 버전을 1.17로 업그레이드 [내 풀이] 쿠버네티스 공식 문서의 kubectl cheatsheet 페이지 참조해 디플로이먼트 리소스 생성 같은 페이지의 리소스 업데이트 탭을 참조해 이미지 업데이트 Tip: 이미지를 업데이트할 때에는 명령어를 사용하면 이미지가 롤링업데이트 된다. [참고 URL] 이미지 업데이트: https://kubernetes.io/ko/docs/reference/kubectl/cheatsheet/#리소스-업데이트

May 15, 2022
데브옵스
쿠버네티스(Kubernetes) CKA Lightning Lab 5 - 디플로이먼트 관련 이슈 트러블슈팅

5. 디플로이먼트 관련 이슈 트러블슈팅 [문제 요건] 네임스페이스의 디플로이먼트(Deployment)가 배포되었으나, 파드(POD)가 동작하지 않는 이슈를 해결해야 한다. 해당 디플로이먼트는 경로에 마운트 된 퍼시스턴트 볼륨(Persistent Volume)을 사용해야하며, root 비밀번호를 공백으로 만들기 위해 환경변수를 설정해야한다. 중요: 퍼시스턴트 볼륨을 교체하지 말 것 채점 기준: 트러블 슈팅하여 이슈 해결 [내 풀이]

May 15, 2022
데브옵스
쿠버네티스(Kubernetes) CKA Lightning Lab 3 - KubeConfig 관련 이슈 트러블 슈팅

3. KubeConfig 트러블 슈팅 [문제 요건] 경로에 kubeconfig 파일이 생성되었으나 무언가 잘못되었다. 트러블 슈팅 후 고칠 것 채점 기준 /root/CKA/admin.kubeconfig 고치기 [내 풀이] kubeconfig 파일을 살펴보자.

May 15, 2022
데브옵스
쿠버네티스(Kubernetes) CKA Lightning Lab 2 - JSON PATH 사용하기

2. JSON PATH 사용하기 [문제 요건] 다음 포맷에 맞춰 네임스페이스의 모든 디플로이먼트를 출력 . 예시: 데이터들은 을 기준으로 오름차순으로 정렬 채점 기준: 제시된 작업이 완료되었는가? [내 풀이] 으로 대상 디플로이먼트들을 확인한다. 으로 JSON 파일 구조를 확인한다. custom-column을 이용한 간단한 쿼리문을 작성한 뒤 잘 작동하는지 테스트해본다. 위에서 출력했던 json 포맷을 잘 참고하여 나머지 열에 대한 쿼리도 작성해준다. Tip: 열과 열을 구분하기 위해서는 (콤마)를 사용한다. Tip: 각 항목이 잘 출력되었는지 확인하기 위해 kubectl get deployment 명령어를 잘 활용한다(예: CONTAINER_IMAGE가 잘 출력되었는지 확인 ) Tip: 요소가 딕셔너리가 아닌 리스트 형태일 경우(예: containers) 반드시 출력할 리스트 요소를 지정해주어야한다(예: containers ⇒ (X), containers[0] ⇒ (O)…

May 15, 2022
데브옵스
쿠버네티스(Kubernetes) CKA Lightning Lab 1 - kubeadm으로 클러스터 업그레이드

유데미(Udemy) 에서 구입한 CKA 강의 수강을 완료하고 마지막 연습문제를 풀고 있는데, 챕터별 연습문제와는 다르게 답안이 제공되지 않아 기록을 위해 문제 풀이 과정을 블로그에 올려두려 한다. 참고로 아래의 문제 요건은 편의를 위해 한국어로 번역한 것이고, 강의에서 제공하는 시험 및 실제 시험은 100% 영어로 출제된다. 1. Kubeadm 으로 클러스터 업그레이드 하기 [문제 요건] 쿠버네티스 버전을 현재  버전에서  로 업그레이드( 툴을 이용) 업그레이드는 마스터 노드부터 한번에 한 노드씩 이루어져야 한다. 다운타임(downtime)을 최소화하기위해, 각 노드를 업그레이드 하기 전 디플로이먼트가 대체 노드로 스케줄링 되어야한다. 노드를 먼저 업그레이드 노드를 업그레이드 전 드레인(drain)  디플로이먼트들의 파드는 에 스케줄링 되어야한다. 채점 포인트 클러스터가 업그레이드 되었는가? ‘gold-nginx’의 파드들이 컨트롤플레인에 스케줄링 되었는가? [내 풀이] …

May 15, 2022
데브옵스
그림으로 배우는 알고리즘 제 2장 - 변수와 배열(1)

6. 데이터는 다양한 정보이다 알고리즘 = 데이터 + 처리 데이터: 다양한 정보 예시 1: 고기감자 요리 데이터: 고기감자 재료 처리: 요리 방법 예시 2: 최대공약수 구하기 데이터(필요한 정보) 최대 공약수를 구하는 2개의 정수 값 구한 최대 공약수(정수 값) 처리: 최대공약수를 구하는 방법 순서 예시 3: 정보의 순서 정하기 데이터(필요한 정보) 정렬할 값이 담긴 열 정렬 값의 개수 정렬된 결과가 담긴 열 처리: 정보의 순서를 정하는 방법/순서 7. 모든 데이터에는 타입이 있다 데이터 타입: 다양한 정보(데이터)를 그룹화한 것 많이 사용되는 기본 데이터 타입(5가지) 정수 타입(int): 정수(소수점이 없는 값)를 처리하기 위한 데이터 타입 실수 타입(float): 실수(소수점을 포함한 값)를 처리하기 위한 데이터 타입 문자 타입: 문자를 처리하기 위한 데이터 타입 문자열 타입(string): 문자열을 처리하기 위한 데이터 타입 논리 타입(boolean): ‘참’, ‘거짓’을 …

May 14, 2022
알고리즘
Python - 패스트캠퍼스 캐시백 챌린지 27일차

오늘도 어제에 이어서 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 챕터 9-2. 모듈 만들기를 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-05-14-Python-Photo1 2022-05-14-Python-Photo2 02. 모듈 만들기 pay_module이라는 모듈을 생성해보자. pay_module.py라는 파일을 생성한 뒤, 아래를 입력 후 저장한다. 02.모듈만들기.py라는 파일을 생성한 뒤, pay_module을 import한다. Import “pay_module” could not be resolved Pylance(reportMissingImports) 라는 에러가 발생한다. 해당 모듈이 root 폴더에 있을 경우에만 찾을 수 있기 때문. File > Preferences > Settings(MacOS의 경우: VSCode > Pref…

May 14, 2022
프로그래밍
Python - 패스트캠퍼스 캐시백 챌린지 26일차

오늘도 어제에 이어서 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 챕터 9-1. 모듈을 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-05-13-Python-Photo1 2022-05-13-Python-Photo2 01. 모듈 1. 모듈을 사용하는 이유 프로그램을 기능별로 파일을 나누어 유지보수 등 관리를 편하게 할 수 있기 때문 2. 모듈의 개념 한 개의 완성된 프로그램 파일 3. 파이썬 기본 모듈 사용방법 파이썬의 기본 모듈을 사용해보자. 4. 파이썬 외부 모듈 사용방법 파이썬 외부의 모듈을 사용해보자. 5. 모듈 만들기 실습 1. 내장모듈 내장모듈: 파이썬 설치 시 자동으로 설치되는 모듈 파이썬 내장 모듈을 사용해보자. from math import pi를 쓰면 math.pi라고 쓰지 않고 pi만 써도 모듈이 실행된다. 모듈을 간단한 이…

May 13, 2022
프로그래밍
그림으로 배우는 알고리즘 제 1장 - 알고리즘이란

최근 파이썬 공부를 하면서 개발자 유투브 영상 등을 틈날때마다 보고있는데 다들 입을모아 알고리즘을 꼭 공부해야한다, 코딩테스트를 위해서 뿐만 아니라 개발자로써 커리어를 쌓기 위해 꼭 필요하다라는 얘기를 들어 매일 조금씩이라도 공부하기 위해 책을 읽으며 기록하려고 한다. 내가 아직 프로그래밍 언어에 대한 이해도가 깊지 않기 때문에, 특정 언어에 얽매이지 않고, 또한 아침 출근 직후 시간에 짬내서 읽기 괜찮은 분량의 책을 찾았는데 이 책이 딱 그 조건에 부합해서 선택해보았다. 앞으로 평일에는 하루에 4페이지 정도 읽고 내용을 간단하게 요약해서 블로그에 올리려고 한다. 제 1장. 알고리즘이란 1. 음식 요리법은 알고리즘 알고리즘(Algorithm); 컴퓨터를 이용해 주어진 과제를 해결하기 위한 처리 절차 과제의 예 최대 공약수를 구한다 정보의 순서를 정해 나열 원하는 정보 검색 현실세게의 다양한 과제의 해결에도 알고리즘의 개념이 사용된다 예: 음식 요리법 치킨카레 만들기 ⇒ 과제 알고…

May 13, 2022
알고리즘
Python - 패스트캠퍼스 캐시백 챌린지 25일차

오늘도 어제에 이어서 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 챕터 8-5. 클래스 실습문제를 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-05-12-Python-Photo1 2022-05-12-Python-Photo2 05. 클래스 실습문제 1. 실습문제 8.1.1 영철은 스타트게임즈 회사에 개발자로 취직을 하게 되었다. 지난 주 회의 결과로 신작 MMORPG 게임의 아이템 구성안을 만들었다. 아이템 공통: 이름, 가격, 무게, 판매하기, 버리기 장비 아이템: 착용효과, 착용하기 소모품 아이템: 사용효과, 사용하기 (단, 버리기는 버릴 수 있는 아이템만 가능하가) 구성안을 토대로 클래스 다이어그램을 설계하였다. 2022-05-12-Python-Photo3 구성안과 설계도를 보고 클래스를 코드로 완성해보자. (메서드 구현은 자유롭게 한다) […

May 12, 2022
프로그래밍
쿠버네티스(Kubernetes) Pod의 /etc/hosts 파일에 DNS 추가하는 방법(HostAlias)

💡Pod의 /etc/hosts 파일에 DNS를 추가하기 위해서는 Deployment의 hostalias 옵션을 사용한다. 1. 배경 상황 프로젝트 진행 중 인프라팀에서 NAS의 연결 주소를 내부 private IP로 변경하기위해서 파드 내 컨테이너의 /etc/hosts 파일을 변경해달라는 요청을 받았다. 2. 설정 방법 Pod의 /etc/hosts 파일을 변경하기 위해서는 Pod(Pod가 Deployment에 의해 생성되었을 경우에는 Deployment) YAML 파일의 hostAlias 항목에 도메인, 그리고 도메인과 맵핑할 ip를 기입해주면 된다. ※ 컨테이너 내부의 호스트 파일을 수동으로 변경하면 안된다. 컨테이너는 휘발성이기 때문에, 컨테이너 종료 시 변경사항이 손실된다. Deployment에 등록할 경우 spec.template.hostAliases.ip ⇒ /etc/hosts 파일에 등록할 ip spec.template.hostAliases.hostnames ⇒ /etc…

May 11, 2022
데브옵스
Python - 패스트캠퍼스 캐시백 챌린지 24일차

오늘도 어제에 이어서 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 챕터 8-4. 오버라이딩, 클래스변수를 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-05-11-Python-Photo1 2022-05-11-Python-Photo2 01. 오버라이딩, 클래스 변수 1. RPG 게임 업데이트(예시) 1. 생성자 오버라이딩 요건 드래곤 클래스에 인스턴스 속성으로 3개의 스킬을 추가 드래곤이 스킬을 사용하면 속성 중 하나가 무작위로 사용 어떻게 속성을 추가할까? Monster class에 속성 추가 ⇒ 다른 자식클래스에도 해당 속성이 추가됨 (X) 생성자 자체를 오버라이딩하자! 부모 클래스의 함수를 그대로 복사 붙여넣기 해도 되지만, 매번 붙여넣기 하기는 너무 번거롭다 super 함수를 사용하자. super().init(): 부모클래스의 함수를 불러온다…

May 11, 2022
프로그래밍
Python - 패스트캠퍼스 캐시백 챌린지 23일차

오늘도 어제에 이어서 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 챕터 8-3. 상속을 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-05-10-Python-Photo1 2022-05-10-Python-Photo2 03. 상속 1. 상속의 개념 자식클래스는 부모클래스의 속성과 메서드를 그대로 가져올 수 있다. 2022-05-10-Python-Photo3 상속이 필요한 이유: 클래스를 하나하나 설정하게 될 경우 관리포인트가 너무 많아진다. 예시 2022-05-10-Python-Photo3 ‘몬스터’ 관련코드가 중복으로 발생 ⇒ 중복을 없애 효율적으로 만드는 방법은? 세 클래스의 공통된 부분을 합쳐 ‘몬스터’라는 클래스를 생성한 뒤 상속하여 중복을 없애 코드를 간결하게 작성할 수 있다. 2022-05-10-Python-Photo3 2. 상속 사용 방법…

May 10, 2022
프로그래밍
Python - 패스트캠퍼스 캐시백 챌린지 22일차

오늘도 어제에 이어서 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 챕터 8-2. 생성자를 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-05-09-Python-Photo1 2022-05-09-Python-Photo2 1. 생성자 1. 클래스와 객체의 개념 클래스 = 속성 + 메서드(method) 2022-05-09-Python-Photo3 속성: 특징들을 나타낸 것 메서드: 동작들을 나타낸 것 2. 속성 추가하기 Monster 클래스에 속성을 추가해보자. : 인스턴스를 만들 때 반드시, 가장먼저 호출되는 메서드 goblin 인스턴스를 생성할때, 800, 120, 300는 메서드의 인자(argument)로 들어가게 된다. : 인스턴스 자기자신을 뜻함. 매개변수 아님. 3. 메서드 추가하기 Monster 클래스에 메서드를 추가해보자. 체력 감소하…

May 09, 2022
프로그래밍
Python - 패스트캠퍼스 캐시백 챌린지 21일차

오늘도 어제에 이어서 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 챕터 7-2. 딕셔너리를 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-05-08-Python-Photo1 2022-05-08-Python-Photo2 1. 클래스와 객체 1. 클래스와 객체의 개념 클래스: 객체를 만들기 위한 설계도 객체: 설계도로부터 만들어낸 제품 실습 출력 결과 위의 프로그램을 클래스로 만들어보자 챔피언을 하나 더 추가해야하는 경우: 클래스 미사용 챔피언을 하나 더 추가해야하는 경우: 클래스 사용 클래스를 사용하면 단 두줄만 수정하면 된다 ⇒ 객체를 많이 생산해내야 할 수 록 클래스 사용이 효율적 클래스 = 속성 + 메서드(method) 2022-05-08-Python-Photo3 속성: 특징들을 나타낸 것 메서드: 동작들을 나타낸 것 2. 클래스 만들기 만든 …

May 08, 2022
프로그래밍
Python - Syntax Error stdin 에러 해결

💡 파이썬에서 Syntax Error : stdin 에러가 났을 경우, exit() 혹은 Ctrl + Z을 입력하여 해결할 수 있다. 1. 에러 상황 패스트캠퍼스 챌린지 강의 실습 중, 파이썬 코드를 실행하니 아래와 같은 Syntax 에러가 발생했다. 2. 해결 방법 찾아보니 vscode를 껐다가 다시 켜면 해결된다는 얘기도 있는데, 구글링을 조금 더 해보니 해당 에러는 파이썬 코드를 파이썬 인터프리터 내에서 실행하고자 할 때 발생하는 에러였다. 따라서 파이썬 인터프리터 밖에서 코드를 실행할 수 있도록 에러 마지막 부분의 다음 부분에 를 입력하고 엔터 를 누른 뒤 엔터 둘 중 하나를 해주면 파이썬 코드가 정상적으로 실행된다고 한다. 이 안내를 따라서 exit()을 입력하고 엔터를 누른 뒤, 파이썬 코드를 다시 실행해주니 아래와 같이 파이썬 코드가 정상적으로 실행되었다.

May 07, 2022
프로그래밍
Python - 패스트캠퍼스 캐시백 챌린지 20일차

오늘도 어제에 이어서 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 챕터 7-2. 딕셔너리를 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-05-07-Python-Photo1 2022-05-07-Python-Photo2 02. 딕셔너리 1. 딕셔너리의 특징 시퀀스 자료형 키와 데이터를 가지고 있는 사전형 자료형 사전형태의 자료를 만들 때 편리 2. 딕셔너리 만들기 딕셔너리를 만들어보자. 3. 딕셔너리 접근하기 결과로는 85000이 출력된다. 4. 딕셔너리 할당하기, 삭제하기 딕셔너리를 할당, 삭제해보자. 5. 딕셔너리 함수 딕셔너리 함수를 사용해보자. 6. 실습 위에서 배운 내용들을 vscode로 실습해보자. Tip: alt + shift + 방향키를 이용해 한 줄을 쉽게 복사할 수 있다. 출력 결과 딕셔너리 접근/할당/삭제하기 출력 결과 딕…

May 07, 2022
프로그래밍
Python - 패스트캠퍼스 캐시백 챌린지 19일차

오늘도 어제에 이어서 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 챕터 7-1. 튜플을 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-05-06-Python-Photo1 2022-05-06-Python-Photo2 01. 튜플 1. 튜플의 특징 시퀀스 자료형(순서가 있는 자료형) 수정, 추가, 삭제가 불가능한 리스트(읽기 전용 리스트) 메모리 사용이 효율적 읽기만 가능하기 때문에 데이터 손실 염려가 없다 2. 튜플 만들기 참고: 괄호의 용도(Python 문법) : 함수, 튜플 : 리스트 : fstring 3. 튜플을 리스트로 만들기 4. 패킹과 언패킹(Python 특징) 패킹: 여러 개의 데이터를 하나의 변수에 할당하는 것 언패킹: 컬렉션(튜플, 딕셔너리, 리스트 등)의 각 데이터를 각각의 변수에 할당하는 것 5. 튜플 함수 특정 값의 인…

May 06, 2022
프로그래밍
루프백 주소(Loopback IP address)란?

업무 중 테스트를 위해 시스템 도메인주소에 을 한 뒤, DNS 쿼리 결과를 공유해달라는 요청을 받았었는데, nslookup으로 나온 DNS 쿼리 결과값이 흔히 보는 127.0.0.1 이 아닌 127.0.0.11 로 리턴되어 문득 loopback 으로 사용할 수 있는 IP 주소 대역이 궁금해져 관련 내용을 찾아서 정리해보았다. 1. Loopback 주소란? IPv4 혹은 IPv6 에서 자기자신을 가리키기 위한 목적으로 쓰기 위해 예약된 IP주소이다. 2. Loopback 주소로 사용하는 IP대역 루프백 주소로는 아래의 대역을 이용하게 된다. IPv4: 127.0.0.0/24 (127.0.0.0 ~ 127.255.255.255 사이의 주소 사용) IPv6: ::1/128 (단 1개 주소만 사용) 3. Localhost 주소 확인 및 수정 이 중 IPv4의 기본 localhost값은 127.0.0.1, IPv6의 기본 localhost값은 ::1/128 이다. 만일 Localho…

May 06, 2022
CS
Python - 패스트캠퍼스 캐시백 챌린지 18일차

오늘도 어제에 이어서 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 챕터 6-2. 함수 실습문제(2)를 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-05-05-Python-Photo1 2022-05-05-Python-Photo2 03. 함수실습문제(2) 1. 실습문제 6.1.3 로또에 당첨 되어 퇴사를 하고 싶었던 김로또는 로또 예상번호 추출 프로그램을 파이썬으로 작성하려고 한다. 다음 조건에 따라 김로또의 프로그램을 완성해보자. 로또 번호 6개를 생성한다. 로또 번호는 1 ~ 45까지의 랜덤한 번호다. 6개의 숫자 모두 달라야 한다. getRandomNumber() 함수를 사용해서 구현한다. (random 모듈의 sample함수는 사용하지 않는다) Hint: 반복문, 조건문, 리스트, 함수(getRandomNumber)를 이용 [내 풀이] 로또 …

May 05, 2022
프로그래밍
Python - 패스트캠퍼스 캐시백 챌린지 17일차

오늘도 어제에 이어서 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 챕터 6-2. 함수 실습문제(1)를 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-05-04-Python-Photo1 2022-05-04-Python-Photo2 02. 함수실습문제(1) 1. 실습문제 6.1.1 다음은 두 수의 곱셈을 반환하는 multiply 함수이다. multiply 함수를 호출하는 방법으로 옳은 것을 고르세요. [내 풀이] 정답은 3. multiply(3, 4) 출력 결과 [강의 해설] 1.multiply() 실행결과 x, y 매개변수에 해당하는 인자가 필요하다는 에러 메시지 발생 2.multiply(1) 실행결과 1번과 동일한 에러 발생 3.multiply(3, 4) 실행결과 에러 발생하지 않음(Print를 입력하지 않아 연산 결과는 화면에 표시되지 않음) …

May 04, 2022
프로그래밍
Python - 패스트캠퍼스 캐시백 챌린지 16일차

오늘도 어제에 이어서 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 챕터 6-1. 함수개념을 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-05-03-Python-Photo1 2022-05-03-Python-Photo2 1. 함수 개념 재사용성이 좋아지고 유지보수가 편리해지고 가독성이 좋아진다 1. 함수 개념 함수를 사용하지 않은 경우 함수를 사용한 경우: printMessage라는 함수를 정의 1. 재사용성: 코드를 다시 사용할 때 얼마나 간편한가 함수를 사용하지 않은 경우 함수를 복사 붙여넣기 한 뒤 직접 타이핑해 이름과 남은 일자를 적어준다. 함수를 사용한 경우 함수 호출 부분만 적어주고 이름과 남은 기간만 넘겨주면 된다. 2. 유지보수성: 코드를 수정할 때 얼마나 간편한가 함수를 사용하지 않은 경우 모든 부분을 하나하나 찾아 직접 바꿔주어야 …

May 03, 2022
프로그래밍
쿠버네티스(Kubernetes) 네트워킹(4) - Container Networking

💡 쿠버네티스 네트워킹을 알아보기에 앞서 컨테이너 네트워킹에 대해 알아보자. 1. Container Networking 도커 컨테이너를 띄운 호스트 호스트 eth0: 192.168.1.10 도커 컨테이너 네트워킹 옵션 3가지 None network: 컨테이너 외부 접속 불가 & 외부에서 컨테이너 접속 불가 Host network: 호스트와 컨테이너의 네트워크가 격리되지 않음 추가 포트 매핑 불필요 포트 80에 어플리케이션을 배포 ⇒ http://192.168.1.10:80 에서 애플리케이션 접속 가능 단, 다른 컨테이너에서 동일 포트로 애플리케이션을 배포할 경우 작동하지 않음 Bridge network 1. Bridge network 내부 사설망이 형성됨 (Bridge network: 172.0.0 - container a 172.17.0.2, container b 172.12.0.3) Docker가 호스트에 설치 기본적으로 Bridge 라는 내부 사설 네트워크 생성 ( 커맨드…

May 03, 2022
데브옵스
쿠버네티스(Kubernetes) 네트워킹(3) - Linux Namespaces

💡 쿠버네티스 네트워킹을 알아보기에 앞서 리눅스의 네임스페이스에 대해 알아보자. 1. Linux Namespaces 1. 네임스페이스 호스트 안의 격리된 공간(집 안에 방이 있는 것과 같음): 컨테이너를 생성할 때 컨테이너를 격리해 다른 컨테이너가 표시되지 않도록 하고 싶은 경우 네임스페이스 안의 컨테이너 ⇒ 자기자신만 볼 수 있음 Underlying (기본) 호스트: 모든 프로세스를 볼 수 있음 로 확인할 수 있음 ⇒ 네임스페이스 내부/외부에서 같은 프로세스지만 PID가 상이하게 됨 호스트 LAN에 연결하는 인터페이스 존재 라우팅 테이블 ARP 테이블: IP - MAC 주소 일대일 대응한 테이블 ⇒ 컨테이너에서 위 세부사항을 보이지 않게 하고 싶다면? 네임스페이스 내에 컨테이너 생성 시 호스트에 대한 네트워크 정보에 대한 가시성 없어짐 네임스페이스는 자체 가상 인터페이스(veth) 및 라우팅 테이블/ARP 테이블을 가질 수 있음 2. 네트워크 네임스페이스 생성 : h…

May 03, 2022
데브옵스
Python - 패스트캠퍼스 캐시백 챌린지 15일차

오늘도 어제에 이어서 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 챕터 5-6. 반복문 실습문제(2)을 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-05-02-Python-Photo1 2022-05-02-Python-Photo2 9. 반복문 실습문제(2) 1. 실습문제 5.3.3 성민은 패스트대학교에 Lily 라는 이름의 교환학생과 친해지게 되었다. 영어를 잘 하지 못했던 성민은, Lily에게 한국어를 가르쳐주기 위해 한국어 연습 프로그램을 만들게 되었다. Learning Korean - 연습할 한국어가 담긴 리스트를 만든다. 리스트에서 순서대로 단어를 가져와 화면에 출력한다. 프로그램 사용자는 단어를 그대로 입력하고 맞추면 다음 단어를 가져온다. 틀리면 프로그램 종료. 결과 화면 [내 풀이] - 실패 리스트를 만들어 준 뒤, while 구문으로…

May 02, 2022
프로그래밍
쿠버네티스(Kubernetes) 네트워킹(2) - DNS & CoreDNS

1. DNS(Domain Name System) 1. DNS란? 지난 포스팅에서 들었던 시스템 A, B의 예시를 다시 살펴보자. 만약 시스템 A에서 시스템 B에 접속할 때, 라는 IP 대신 라는 이름/별칭을 사용하고 싶다면 어떻게 해야할까? 1.png 시스템 A 에 를 등록하면 된다. 단 주의할 사항은, 시스템 B의 실제 호스팅명(시스템 B에서 명령어로 확인할 수 있다)이 실제로 db가 아니라 host-2와 같이 다른 이름일 경우에도 로 접속이 된다는 점이다. 이처럼 DNS는 IP주소를 사람이 읽을 수 있는 도메인명으로 바꿔주는 시스템을 뜻한다. 2. Name Resolution 위의 예와 같이, 호스트에서 파일 내에 DNS명과 IP명을 읽고 변환하는 작업을 Name Resolution 이라고 한다. 오늘날에는 환경이 커지고 너무 많은 항목이 생겨서 파일을 관리하기가 어렵기 때문에, 해당 정보를 한개의 단일 서버로 관리하게 되는데, 이 서버를 DNS 서버이다. 그렇다면…

May 02, 2022
데브옵스
쿠버네티스(Kubernetes) 네트워킹(1) - 스위칭 & 라우팅

💡 쿠버네티스 네트워킹을 알아보기에 앞서 리눅스 머신에서의 스위칭 & 라우팅에 대해 알아보자. 1. 스위칭 2022-05-01-Kubernetes-Networking-Swtiching-Routing1 컴퓨터 A와 B가 통신하기 위해서는 각 컴퓨터(호스트)에 물리, 혹은 가상 인터페이스가 필요하다. 각 리눅스 머신(=컴퓨터), 스위치에 IP 주소를 할당하자. A, B는 같은 네트워크 안에 있으므로, 스위치를 통해 서로 통신할 수 있다. 컴퓨터 A(192.168.1.10)에서 컴퓨터 B(192.168.1.11)로 통신 가능 컴퓨터 B(192.168.1.11)에서 컴퓨터 A(192.168.1.10)로 통신 가능 2. 라우팅 1. 다른 네트워크에 존재하는 머신과 통신 컴퓨터 A & B와 다른 네트워크에 컴퓨터 C & D 가 존재할 때, 컴퓨터 A, B에서 어떻게 시스템 C, D로 도달하게 될까? 2022-05-01-Kubernetes-Networking-Swtiching-Routin…

May 01, 2022
데브옵스
Python - 패스트캠퍼스 캐시백 챌린지 14일차

오늘도 어제에 이어서 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 챕터 5-6. 반복문 실습문제(1)을 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-05-01-Python-Photo1 2022-05-01-Python-Photo2 8. 반복문 실습문제(1) 1. 실습문제 5.3.1 구구단 출력 프로그램을 만들어보자. 프로그램 사용자로부터 출력할 단을 입력 받고, 해당 구구단을 출력하는 프로그램이다. 표준입력: 표준출력 5 * 1 = 5 5 * 2 = 10 … 5 * 9 =45 [내 풀이] 출력 결과 [강의 해설] for ~ in 구문과 range를 이용해 함수를 작성해보자. 출력 확인 0 ~ 9 까지가 출력된다. Range의 시작값(=1) 을 넣어준다. 출력 확인 1 ~ 9 까지가 출력된다. 구구단 모양으로 출력해주자. 출력 확인 2. 실습문제 …

May 01, 2022
프로그래밍
Github Pages/Blog - 포스팅 게시 안됨 이슈 해결

1.[Github Pages/Blog]포스팅 게시 안됨 이슈 해결 💡 Github Pages에 포스팅이 게시가 안될 경우, 올바른 포스팅 파일 이름규칙, future=true, published=true 옵션을 적용해보자. 1. 에러 상황 패스트캠퍼스 챌린지 Day3 포스팅을 작성한 뒤, 깃헙 블로그 레파지토리에 push 를 했음에도 불구하고 github 블로그에 해당 페이지가 올라오지 않는 이슈가 있었다. 원래 Github에 코드를 push한 뒤, 실제 페이지에 반영되기까지 빠르면 1~2분, 길게는 30분까지도 걸린다고는 하지만 내 포스팅은 1시간이 넘도록 올라오지 않았다. 참고로 내 환경은 다음과 같다. MacOS Monterey 12.3.1 VMware Fusion 12.1.2 Ubuntu 20.04 Git 2.25.1 2. 해결 방법 ‘깃허브 블로그 포스팅 안됨 에러’ 키워드로 구글링 하다가 세 가지 방법을 시도해봤는데, 나에게는 그 중 마지막 방법인 설정이 유효했다…

May 01, 2022
BLOG
Python - 패스트캠퍼스 캐시백 챌린지 13일차

오늘도 어제에 이어서 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 챕터 5-6. 반복문 개념(2)를 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-04-30-Python-Photo1 2022-04-30-Python-Photo2 7. 반복문 개념(2) 1. while 사용법 for와의 차이점은? for문 : 반복할 횟수가 정해져 있을 때 while문: 반복할 횟수가 정해져있지 않을 때 while 사용법 : 반복문에 사용되는 변수의 값을 지정 : 반복에 대한 조건 체크. 이 식이 false가 될 때까지 반복. : 반복하는 작업을 위해 변수값 증가. 2. 무한루프와 break 조건식 대신 불리언(Boolean) 값을 불러온다. 참일 경우 break를 만나기 전까지 명령을 계속 반복한다. (가장 가까운 반복문만 빠져나오게 됨) 3. 실습 출력 결과…

April 30, 2022
프로그래밍
Python - 패스트캠퍼스 캐시백 챌린지 12일차

오늘도 어제에 이어서 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 챕터 5-6. 반복문 개념(1)을 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-04-29-Python-Photo1 2022-04-29-Python-Photo2 6. 반복문 개념(1) 1. 반복문을 사용하는 이유 반복적인 작업을 코드로 작성하기 위해 사용. 위의 코드를 반복문으로 축약해보자. 2. 시퀀스 자료형(Sequence Data Type) 순서가 있는 자료형 리스트 문자열 range 객체 튜플, 딕셔너리 3. for 사용법 동작 방식 리스트 자료 안에 있는 첫번째 값인 1이 a에 저장 명령문을 실행: print(a) ⇒ print(1) ⇒ 1 이 출력 두번째 값인 2를 a에 저장 명령문을 실행: print(a) ⇒ print(2) ⇒ 2 가 출력 리스트에 더 이상 데이터가 …

April 29, 2022
프로그래밍
Python - 패스트캠퍼스 캐시백 챌린지 11일차

오늘도 어제에 이어서 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 챕터 5-5. 리스트 자료형 실습문제를 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-04-28-Python-Photo1 2022-04-28-Python-Photo2 5. 리스트 자료형 실습문제 1. 실습문제 5.2.1 다음은 패스트 고등학교 2학년 3반 1번부터 5번까지의 1분간 팔굽혀펴기 개수이다. 데이터는 각 리스트에 저장되어있다. 각 문항을 실행한 결과를 출력해보자. result = [33, 40, 12, 63, 52] [내 풀이] 문항 1. 6번의 팔굽혀펴기 개수는 9개이다. 리스트의 마지막에 추가하자. 출력결과 문항 2. 2번은 재측정하여 50개를 하였다. 2번의 데이터를 변경해보자. 출력 결과 문항 3. 3번부터 6번까지 데이터를 슬라이싱하자. 출력 결과 문항 4. 모든 …

April 28, 2022
프로그래밍
AWS Cloud Practitioner 자격증 합격 후기 (비전공자, 독학)

[AWS]AWS Practitioner 자격증 합격 후기 (비전공자, 독학) 22년 1월 15일 CSP 중 가장 규모가 큰 AWS의 첫 단계 자격증인  자격증을 취득했다. 787점으로 높은 점수로 통과한 건 아니라 약간 머쓱하지만(ㅎㅎ) 공부방법과 시험 팁들을 공유해보려 한다. 2022-04-28-AWS-Cloud-Practitioner-Photo1.png 1. AWS 시험 개요 AWS 자격증 시험 단계는 총 세가지로 크게 세 단계로 분류할 수 있다. Untitled 공식 사이트의 그림을 살펴보면  세 단계로 분류되어있다. 이 세 단계의 자격증 외에도 각 전문 분야에 해당하는 자격증도 별도로 존재하는데, 내가 이번에 취득하게 된 건 가장 기초가 되는 Cloud Practitioner 자격증. 기본 개념을 망라하는 시험이고 시험 난이도가 크게 높지 않아 클라우드 엔지니어를 희망하는 사람 뿐만 아니라, 클라우드 관련 업계 종사자들도 충분히 볼만한 시험이라고 생각된다. 2. AWS Cl…

April 28, 2022
클라우드
Python - 패스트캠퍼스 캐시백 챌린지 10일차

오늘도 어제에 이어서 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 챕터 5-4. 리스트 자료형 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-04-27-Python-Photo1 2022-04-27-Python-Photo2 4. 리스트 자료형 1. 리스트를 사용하는 이유 10개의 동물 이름 데이터를 저장해야 할 때 animal1 = “사자” animal2 = “호랑이” … animal10 = “강아지” 리스트를 사용하면 한줄의 코드로 작성할 수 있다. animal = [”사자”, “호랑이”, … “강아지”] 2. 리스트를 만드는 방법 리스트명 = [데이터, 데이터, … , 데이터] 빈 리스트도 만들 수 있다: 리스트명 = [] 3. 데이터 접근하기 인덱스를 이용해 몇 번째 데이터인지 알려줄 수 있다. 인덱스는 0부터 시작한다. animals[n] …

April 27, 2022
프로그래밍
리눅스(Linux)/우분투(Ubuntu) 시간을 한국 표준시(KST)로 변경하기

💡 리눅스의 기본 Timezone은 PDT/UST 이므로 KST로 재설정해주어야 한다. 1. 리눅스(Linux) 시간을 한국 표준시(KST)로 변경 깃허브 블로그(Github Pages)용으로 VMware Fusion에서 우분투(Ubuntu)를 설치하고 난 뒤, Jekyll과 Git으로 블로그에 포스팅을 진행했다. 하지만 Github에서 표시되는 commit 일시와 실제 commit 일시가 다른 현상이 발생했는데, 확인해보니 Timezone이 한국표준시가 아닌 다른 시간대로 설정되어 생긴 현상이었다. 구글링으로 찾아보니 리눅스를 설치할 때 Timezone을 설정하지 않으면 PDT/UST 등이 기본으로 설정된다고 한다. 시스템 자체에 문제가 생긴 부분은 아니지만 패스트캠퍼스에서 매일 포스팅 업로드 챌린지를 하고 있는데, 나중에 업로드 일자가 문제가 될까 싶어서 아래와 같은 방법으로 Timezone을 KST로 변경해주었다. 참고로 현재 내 환경은 아래와 같다. MacOS Montere…

April 27, 2022
데브옵스
Python - 패스트캠퍼스 캐시백 챌린지 9일차

오늘도 어제에 이어서 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 챕터 5-3. 조건문 실습문제(2)을 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-04-26-Python-Photo1 2022-04-27-Python-Photo2 3. 조건문 실습문제(2) 1. 실습문제 5.1.3 현동이는 강의를 8시간 동안 들으니, 배가 너무 고파 저녁을 먹기로 하였다. 현동이가 현재 가진 금액을 통해 최대로 먹을 수 있는 음식을 출력해 주는 프로그램을 작성해 보자. [조건] 20000원 이상 = 치킨, 10000원 이상 = 떡볶이, 2000원 이상: 편의점 김밥 표준 입력 1: 표준 출력 1: 표준 입력 2: 표준 출력 2: 표준 입력 3: 표준 출력 3: [내 풀이] 결과 출력 [강의 해설] if 문 사용예 if if - else if - eli…

April 26, 2022
프로그래밍
Python - 패스트캠퍼스 캐시백 챌린지 8일차

오늘도 어제에 이어서 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 챕터 5-2. 조건문 실습문제(1)을 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-04-25-Python-Photo1 2022-04-25-Python-Photo2 2. 조건문 실습문제(1) 1. 실습문제 5.1.1 회사를 그만두게 된 유진이는 유투브를 시작하게 되었다. 그리고 유투브를 통해 수익창출을 하려고 한다. 프로그램 사용자로부터 현재 구독자 수를 입력 받으면, 수익 창출이 가능한지 불가능한지 알려주는 프로그램을 작성해보자. (단, 수익창출은 구독자가 1000명 이상일 경우 가능하다) 표준 입력: 표준 출력: 표준 입력: 표준 출력: [내 풀이] [강의 해설] 구독자 수 입력값을 받는 함수를 작성한다. 작성한 뒤 print 함수로 제대로 출력 되는지 확인한다. Tip: …

April 25, 2022
프로그래밍
Python/VScode - MacOS zsh: no matches found 에러 해결

오늘도 어제에 이어서 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 챕터 5-2. 조건문 실습문제(1)을 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-04-25-Python-Photo1 2022-04-25-Python-Photo2 2. 조건문 실습문제(1) 1. 실습문제 5.1.1 회사를 그만두게 된 유진이는 유투브를 시작하게 되었다. 그리고 유투브를 통해 수익창출을 하려고 한다. 프로그램 사용자로부터 현재 구독자 수를 입력 받으면, 수익 창출이 가능한지 불가능한지 알려주는 프로그램을 작성해보자. (단, 수익창출은 구독자가 1000명 이상일 경우 가능하다) 표준 입력: 표준 출력: 표준 입력: 표준 출력: [내 풀이] [강의 해설] 구독자 수 입력값을 받는 함수를 작성한다. 작성한 뒤 print 함수로 제대로 출력 되는지 확인한다. Tip: …

April 24, 2022
프로그래밍
Python - 패스트캠퍼스 캐시백 챌린지 7일차

오늘도 어제에 이어서 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 챕터 5-1. 조건문 개념 강의를 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-04-24-Python-Photo1 2022-04-24-Python-Photo2 Ch05. 제어문 1. 조건문 개념 1. 제어문 사용 이유 프로그램은 기본적으로 위에서 아래로 순차적으로 실행 명령 A,B 중 한 개를 선택해 실행하고 싶거나 - 조건문 명령들을 반복해 실행하고 싶을 때 - 반복문 제어문 = 조건문 + 반복문 예시1: 치킨 or 피자? - 조건문 예시2: 유투브 영상보기 - 반복문 2. 조건문의 개념 예시: 술집이나 클럽에 입장할 때 입장 가능 여부를 출력하는 조건문 2022-04-24-Python-Photo3.png : 시작 = 20: age에 20이라는 값을 저장 : 조건문 : age가…

April 24, 2022
프로그래밍
Python - 패스트캠퍼스 캐시백 챌린지 6일차

오늘도 어제에 이어서 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 챕터 4-3. 입력과 자료형 변환 강의를 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 아래는 공부 인증 사진. 2022-04-23-Python-Photo1 2022-04-23-Python-Photo2 3. 입력과 자료형 변환 1. 데이터 입력 받기 입력 함수: 사용자로부터 데이터를 입력 받는 함수 예시 1 아래 코드를 파이썬 인터프리터가 어떻게 해석하고 실행할까? 파이썬 인터프리터: 파이썬 소스코드를 해석 & 실행 [파이썬 코드 실행 순서] 할당연산자 (=) 오른쪽부터 실행 input 함수 실행 시, 입력을 기다린다 사용자가 데이터를 입력하고 엔터를 치면 input 함수 자리에 데이터가 들어간다. x에 데이터가 할당된다. 예시 2 : 입력을 유도하게끔 하는 안내문 [파이썬 코드 실행 순서] 할당연산자 (=) …

April 23, 2022
프로그래밍
Kubernetes NGINX Ingress의 Sticky Session 설정이 되지 않는 이슈 해결

💡 NGINX Ingress Controller 사용 시 nginx.ingress.kubernetes.io 어노테이션을 사용해야 Sticky session 등의 설정값이 적용된다(일반 ingress.kubernetes.io 설정 적용시 설정 적용 안됨) 1. 에러 상황 컨테이너 전환 프로젝트 진행 도중 Ingress Controller를 Contour에서 NGINX-Ingress Controller로 변경 후, 시스템에 간헐적으로 접속이 되지 않는 현상이 발생했다(구체적으로는 브라우저에서 관리자에게 문의하라는 페이지가 뜨며 접속이 되지 않다가 새로고침 시 접속이 되는 현상). 해당 시스템은 Multi Pod로 구성되어있었는데(replicas = 2), 각 Pod로그를 보니 아래와 같은 SQL 에러가 발생하고 있었다. 로그를 추가적으로 살펴보니 user 정보를 SELECT하는 데에서 오류가 나고 있었고, 각 파드에서 로그인 아이디 정보를 찍어주는 로그에 아래와 같은 로그가 발생하고…

April 23, 2022
데브옵스
Python - 패스트캠퍼스 캐시백 챌린지 5일차

오늘도 어제에 이어서 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 챕터 4-2. 연산자 강의를 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 2022-04-22-Python-Photo1 2022-04-22-Python-Photo2 2. 연산(2) 1. 비교연산 연산자(연산기호) 설명(왼쪽이 오른쪽보다) > 크다 < 작다 >= 크거나 같다 <= 작거나 같다 == 같다 != 다르다 조건문을 이해하기 위해 꼭 필요한 내용 예: 1 > 2 ⇒ False(거짓), 1 < 2 ⇒ True(참) VScode로 비교연산자를 활용해보자. 2. 논리연산 연산자 설명 A and B A,B 모두 참이라면 True A or B A,B 중 하나라도 참이라면 True not A A가 참이라면 False 논리 연산은 두 개의 비교연산을 합칠 때 자주 사용 예: 1 < 2 and 1 == 1 ⇒ , 모두 참일 …

April 22, 2022
프로그래밍
Python - 패스트캠퍼스 캐시백 챌린지 4일차

오늘도 어제에 이어서 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의챕터 3-2. 변수 강의를 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 2022-04-21-Python-Photo1 2022-04-21-Python-Photo2 Ch04. 연산과 연산자 1. 연산(1) 1. 연산이란? 수나 식을 일정한 규칙에 따라 계산하는 것 2. 연산의 종류 가장 많이 쓰이는 연산은 아래 네 가지. 대입연산 산술연산 비교연산 논리연산 3. 대입연산 ‘변수이름 = 데이터’ 오른쪽의 데이터를 왼쪽의 변수이름에 할당한다(: 할당연산자) 4. 산술연산 연산자(연산기호) 설명 + 더하기 - 빼기 * 곱하기 / 나누기 // 몫 % 나머지 ** 제곱 5. 실습 대입 연산은 지난 시간 실습을 진행해 이번에는 생략하도록 한다. 산술연산 예시 결과값은 아래와 같다. 숫자 뿐만 아니라 문자열도 서로 더할 수 있다. 연산 …

April 21, 2022
프로그래밍
Python - 패스트캠퍼스 캐시백 챌린지 3일차

오늘도 어제에 이어서 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의챕터 3-2. 변수 강의를 듣고 정리해보았다. 참고로 이 포스팅은 공부용으로 강의 내용을 요약한 것으로 자세한 강의 내용은 위 링크를 참조 할 것. 2022-04-20-Python-Photo1 2022-04-20-Python-Photo1 2. 변수 1. 변수란? 데이터를 저장할 공간 저장한 데이터를 언제든지 변경할 수 있다. 2. 변수를 만드는 방법 변수이름 = 데이터 는 할당 연산자: 오른쪽의 데이터를 왼쪽의 변수에 저장 3. 변수 이름 규칙 데이터를 표현할 수 있는 이름으로 짓는다(중요). 문자부터 시작해야 한다. 대소문자는 구분한다. _로 시작할 수 있다. 미리 예약된 키워드는 사용할 수 없다. 4. 실습 변수이름에 데이터를 저장한 뒤 출력해보자. 변수에 저장된 데이터를 변경하기 실행버튼을 눌러 결과를 확인한다. 기존에 저장되었던 데이터가 변경되어 있는 것을 확인할 수 있다. 연산자를 이용…

April 20, 2022
프로그래밍
Python - 패스트캠퍼스 캐시백 챌린지 2일차

오늘은 패스트캠퍼스(Fastcampus) 캐시백 챌린지 2일차 포스팅. 어제에 이어서 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online” 의 챕터 3-1. 숫자, 문자, 불린형, 자료형을 듣고 강의 내용을 정리해 보았다. 이 포스팅은 공부용으로 요약한 것으로, 자세한 강의 내용은 위 링크를 참조할 것. Ch03.자료형과 변수 220419_Python 1. 자료형이란? 자료(Data)란? 많은 자료를 분류하기 위해서 자료의 형태(종류)를 나눠주는 것. 1. 숫자형 숫자 데이터를 뜻한다. 정수형(Integer: int): 1, 2, 3, 0, -1, -10 (소수점이 없다) 실수형(Float): 1.5, 0, -3, 1.4 (소수점이 있다) 2. 문자열 문자를 나열한 것을 뜻한다. 로 문자열의 시작과 끝을 나타낸다. 예 1: “123” (문자열), 123 (숫자열) 예 2: 따옴표 속의 따옴표 표현 ⇒ ‘”개 짖는 소리좀 안 나게 해라!”라고 말했다.’ 3. 불린형(Bo…

April 19, 2022
프로그래밍
Python - 패스트캠퍼스 캐시백 챌린지 2일차

회사분의 추천을 받고 또 충동적으로 구매해버린 패스트캠퍼스 강의… 이번에야말로 꼭 완강을 해보겠다는 의지로 캐시백 챌린지를 신청해보았다. 이번에 내가 신청한 강의는 “한 번에 끝내는 파이썬 웹 개발 초격차 패키지 Online”. 파이썬 기초 언어 뿐만 아니라 배포, 관련 라이브러리 등을 한꺼번에 습득할 수 있는 커리큘럼인데다 이미 강의를 듣고 계신 회사분이 설명도 나쁘지 않다고 해주셔서 12개월 할부로 긁었다. 캐시백 챌린지는 기본적으로 매일 최소 1강 이상씩 듣고 공부기록을 블로그에 올리면 강의료를 환급해주는 형식인데, 중간과제가 있긴 하나 코딩 관련이 아닌 리뷰 개념이라 부담없이 성공할 수 있을 듯 한 느낌. (하지만 이러고 실패하면 정말 노간지인데…^^ 열심히 해야겠다) 220418_Python_Day1(01).jpeg 강의를 미리 결제해놓았어서 1일차는 그동안 미리 들어두었던 공부 내용을 전체적으로 정리해보았다. Part 1. 파이썬 필수 문법 Ch01. 강의소개 1. 파이…

April 19, 2022
프로그래밍
VMware Fusion에서 Ubuntu 20.04 설치하기

💡 MacOS 환경에서 VMware로 Ubuntu를 설치하려면 “VMware Fusion”을 설치해야 한다. 이번 포스팅에서는 VMware Fusion에서 Ubuntu 20.04 버전을 설치해보도록 하겠다. 코딩 강의를 수강하거나 스터디 할 때 실습 환경을 맞춰주기 위해서 우분투를 설치했었는데, 이번에는 Jekyll을 설치하기 위해 우분투 환경을 만들어주게 되었다. 만약 나와 같이 MacOS(Catalina 이상 버전)에서 Jekyll 설치에 실패했던 사람은 Ubuntu 20.04 버전에서 설치 해보는 걸 추천한다. (참고로 Ubuntu 18.04 버전에서는 Jekyll 설치는 가능했었으나 테마 적용에서 버전 이슈가 발생했다.) 그럼 VMware Fusion과 Ubuntu가 무엇인지에 대해 간단하게 살펴본 뒤 두 소프트웨어를 설치해보도록 하자. 1. VMware Fusion이란? VMware Fusion은 VMware사에서 제공하는 MacOS 컴퓨터용 가상머신 소프트웨어이다. 무료…

April 16, 2022
데브옵스
티스토리에서 깃허브로

깃허브 블로그 첫 글 우여곡절 끝에 깃허브 블로그를 생성했다. MacOS 와 Jekyll(이라기보다는 ruby 버전 호환 문제) 설치 문제 때문에 임시로 티스토리를 사용했었는데, Ubuntu 20.04 버전 환경에서 설치하니 이렇게 금방 설치 될 수가 없더라…(허무) 기존 티스토리 블로그에 있던 포스팅은 조만간 전부 이관할 예정. 이제 깃허브 블로그도 생성했겠다 1일 1커밋을 생활화 해야지.

April 14, 2022
etc