diff --git a/_config.yml b/_config.yml
index 0a280a671..482836c2a 100644
--- a/_config.yml
+++ b/_config.yml
@@ -1,15 +1,13 @@
-title: Moonwalk
-author: Abhinav Saxena
-url: https://www.abhinavsaxena.com/moonwalk # root address of the site
-description: > # description of the site (multiple lines allowed)
- Moonwalk is a fast and elegant Jekyll theme with a clean dark mode. It comes with horizontal list (for navbar and footer), card list (for portfolio), and a generic vertical list. It is very easy to modify in case you want to build over it - please see _layouts/home.html to do that.
+title: Cascal Pascal
+url: https://cascalpascal.github.io
+description: "Frankly, I'm too scared to ask about the frog."
permalink: /:slug
favicon: "./logo.png" # relative path to site's favicon
twitter:
- username: abhinav # update or delete this
+ username: pascal # update or delete this
card: summary_large_image
#theme: moonwalk # if you are using GitHub Pages, change it to remote_theme: abhinavs/moonwalk
@@ -33,13 +31,13 @@ theme_config:
show_tags: true # show tags in a blog posts
# options for "home" page
home:
- title_projects: Portfolio
+ title_projects: Course
title_misc_list: Details
title_blog: Blog
- title_old_projects: Old Projects
+ title_old_projects: Obsidian
soopr:
- publish_token: "" # sign up at https://www.soopr.co to get your publish token and personalize share and reaction options
+ publish_token: "https://cascalpascal.github.io/"
highlighter: rouge
diff --git a/_data/home.yml b/_data/home.yml
index 0ef30fc60..1dde1141b 100644
--- a/_data/home.yml
+++ b/_data/home.yml
@@ -5,66 +5,71 @@ navbar_entries:
- title: blog
url: blog
- - title: website
- url: https://www.abhinav.co
+# - title: website
+# url: https://www.abhinav.co
project_entries:
- - title: Project 1
- url: overview-post
- desc: This is an example project, configured in _data/home.yml
-
- - title: Project 2
- url: overview-post
- desc: Projects are shown in card layout
-
- - title: Project 3
- url: overview-post
- desc: You can control visibility from _config.yml file
-
- - title: Project 4
- url: overview-post
- desc: This project uses highlight markup, configured in _data/home.yml
+ - title: GPM
+ url: coursera-google-project-management-professional-certificate
+ desc: Google Project Management Professional Certificate
highlight: WIP
- - title: Project 5
- url: overview-post
- desc: Moonwalk also has horizontal list (used in header and footer)
+ - title: Full Stack
+ url: devroad-full-stack-developer
+ desc: Full Stack Developer Course
highlight: WIP
+
- - title: Project 6
- url: overview-post
- desc: It also has a scalable vertical list (in case you need it)
+ - title: Java
+ url: devroad-java-developer
+ desc: Java Developer Course
+ highlight: WIP
-old_project_entries:
- - title: Soopr
- url: https://www.soopr.co
- desc: Delight your readers - add beautiful share and like buttons easily to your websites
- highlight: NEW
+ - title: Python
+ url: devroad-python-developer
+ desc: Python Developer Course
+ highlight: WIP
- - title: Cookie
- url: https://github.com/abhinavs/cookie
- desc: An open source landing website with supporting pages and integrated blog
+ - title: Rust
+ url: devroad-rust-developer
+ desc: Rust Developer Course
+ highlight: WIP
- - title: Moonwalk
- url: https://github.com/abhinavs/moonwalk
- desc: A fast and minimalist Jekyll blog theme with clean dark mode
+ - title: Major
+ url: major-tech-interview
+ desc: Major knowledge Course
+ highlight: WIP
- - title: Humangous
- url: https://www.humangous.co
- desc: The better people know you, the better they collaborate
+#old_project_entries:
+# - title: Soopr
+# url: https://www.soopr.co
+# desc: Delight your readers - add beautiful share and like buttons easily to your websites
+# highlight: NEW
+#
+# - title: Cookie
+# url: https://github.com/abhinavs/cookie
+# desc: An open source landing website with supporting pages and integrated blog
+#
+# - title: Moonwalk
+# url: https://github.com/abhinavs/moonwalk
+# desc: A fast and minimalist Jekyll blog theme with clean dark mode
+#
+# - title: Humangous
+# url: https://www.humangous.co
+# desc: The better people know you, the better they collaborate
footer_entries:
- - title: abhinav's homepage
- url: https://www.abhinav.co
-
- - title: twitter
- url: https://twitter.com/abhinav
-
+# - title: abhinav's homepage
+# url: https://www.abhinav.co
+#
+# - title: twitter
+# url: https://twitter.com/abhinav
+#
- title: github
- url: https://github.com/abhinavs
-
- - title: feed
- url: feed.xml
+ url: https://github.com/cascalpascal
+#
+# - title: feed
+# url: feed.xml
misc_entries:
- title: this is an example vertical list
diff --git a/_posts/2020-07-08-language-tests.md b/_posts/2020-07-08-language-tests.md
deleted file mode 100644
index b7e5172be..000000000
--- a/_posts/2020-07-08-language-tests.md
+++ /dev/null
@@ -1,51 +0,0 @@
----
-layout: post
-title: "Language Tests"
----
-
-Note: Text is from [moving](https://github.com/huangyz0918/moving), which is another good Jekyll theme.
-
-### 1. 日本語テスト
-
-This is a Japanese test post to show you how japanese is displayed.
-
-私は昨日ついにその助力家というのの上よりするたなけれ。
-最も今をお話団はちょうどこの前後なかろでくらいに困りがいるたをは帰着考えたなかって、そうにもするでうたらない。
-がたを知っないはずも同時に九月をいよいよたありた。
-
-もっと槙さんにぼんやり金少し説明にえた自分大した人私か影響にというお関係たうませないが、この次第も私か兄具合に使うて、槙さんののに当人のあなたにさぞご意味と行くて私個人が小尊敬を聴いように同時に同反抗に集っだうて、いよいよまず相当へあっうからいだ事をしでなけれ。
-
-> それでそれでもご時日をしはずはたったいやと突き抜けるますて、その元がは行ったてという獄を尽すていけですた。
-
-この中道具の日その学校はあなたごろがすまなりかとネルソンさんの考えるですん、辺の事実ないというご盲従ありたですと、爺さんのためが薬缶が結果までの箸の当時してならて、多少の十月にためからそういう上からとにかくしましないと触れべきものたで、ないうですと多少お人達したのでたた。
-
-From [すぐ使えるダミーテキスト - 日本語 Lorem ipsum.](http://lipsum.sugutsukaeru.jp/index.cgi)
-
-
-### 2. 繁体中文测试
-
-This is a chinese test post to show you how chinese is displayed.
-
-善我王上魚、產生資西員合兒臉趣論。畫衣生這著爸毛親可時,安程幾?合學作。觀經而作建。都非子作這!法如言子你關!手師也。
-
-以也座論頭室業放。要車時地變此親不老高小是統習直麼調未,行年香一?
-
-就竟在,是我童示讓利分和異種百路關母信過明驗有個歷洋中前合著區亮風值新底車有正結,進快保的行戰從:弟除文辦條國備當來際年每小腳識世可的的外的廣下歌洲保輪市果底天影;全氣具些回童但倒影發狀在示,數上學大法很,如要我……月品大供這起服滿老?應學傳者國:山式排只不之然清同關;細車是!停屋常間又,資畫領生,相們制在?公別的人寫教資夠。資再我我!只臉夫藝量不路政吃息緊回力之;兒足灣電空時局我怎初安。意今一子區首者微陸現際安除發連由子由而走學體區園我車當會,經時取頭,嚴了新科同?很夫營動通打,出和導一樂,查旅他。坐是收外子發物北看蘭戰坐車身做可來。道就學務。
-
-國新故。
-
-> 工步他始能詩的,裝進分星海演意學值例道……於財型目古香亮自和這乎?化經溫詩。只賽嚴大一主價世哥受的沒有中年即病行金拉麼河。主小路了種就小為廣不?
-
-From [亂數假文產生器 - Chinese Lorem Ipsum.](http://www.richyli.com/tool/loremipsum/)
-
-
-
-### 3. 简体中文测试
-
-效育声去本义然空,各值太法心想,场强实地。 题铁习点儿表管少间千,只何政亲织文意部,千影画派证男须。 手反取长风治增非等直难群,连取及天他己事头级,影数弦适把气快目人。 专议以省通引而千个,格则口段度样水热马,地教少务改磨。 包思外心半院应她算斯,市外会快记路又火学,劳如肃它准众丧边。
-
- > 团算部住县单总边素格军所,合音府教看和广光采率位转,位用品根确针百。 证其标元角工方海接交他,论象切万世认一响义,治然身本风弦带题。 向我次路持加北,她不反心。 说总元军例市决,现始即算证养,规走还壳。
-
-因林可相儿应满军,热影省条律因资再,整肃赤心将届。 局广写两量备验还,南教事争工民的,备进研上布。 素身电活非直,速这区交示从,百层达。 资量那毛什京身,白这快。 半打容三手开常价或,手严量般象式效,名可重芽门适。 来设什一我么,光界美么或,住身式准。 造酸改表委验众办地百养,商物战众本列听度名院,制压录丽快与千机内。 住需当四议决得命南然照按民置,当住命形金决否矿单外。 气象理离开新集增际,三划方工义很年关,拉许准孝口。 构片出干计由备美打养,持育总指承入无己。
-
-From [假文生成器, lorem ipsum Chinese](http://www.cancms.com/content/dummytext)
\ No newline at end of file
diff --git a/_posts/2020-07-08-very-very-very-long-title-and-very-very-very-short-content.md b/_posts/2020-07-08-very-very-very-long-title-and-very-very-very-short-content.md
deleted file mode 100644
index 9d7b30159..000000000
--- a/_posts/2020-07-08-very-very-very-long-title-and-very-very-very-short-content.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-layout: post
----
-
-Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque vel lacinia neque. Praesent nulla quam, ullamcorper in sollicitudin ac, molestie sed justo. Cras aliquam, sapien id consectetur accumsan, augue magna faucibus ex, ut ultricies turpis tortor vel ante. In at rutrum tellus. Nullam vestibulum metus eu purus malesuada, volutpat mattis leo facilisis.
\ No newline at end of file
diff --git a/_posts/2020-07-09-post-example-with-headings-and-toc.md b/_posts/2020-07-09-post-example-with-headings-and-toc.md
deleted file mode 100644
index bd689f475..000000000
--- a/_posts/2020-07-09-post-example-with-headings-and-toc.md
+++ /dev/null
@@ -1,26 +0,0 @@
----
-layout: post
----
-
-Mauris viverra dictum ultricies. Vestibulum quis ipsum euismod, facilisis metus sed, varius ipsum. Donec scelerisque lacus libero, eu dignissim sem venenatis at. Nunc a egestas tortor, sed feugiat leo.
-
-## Table of contents
-- [Table of contents](#table-of-contents)
-- [The start](#the-start)
-- [The middle](#the-middle)
-- [The end](#the-end)
-
-Mauris viverra dictum ultricies. Vestibulum quis ipsum euismod, facilisis metus sed, varius ipsum. Donec scelerisque lacus libero, eu dignissim sem venenatis at. Nunc a egestas tortor, sed feugiat leo. Vestibulum porta tincidunt tellus, vitae ornare tortor. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Sed nunc neque, tempor in iaculis non, faucibus et metus. Etiam id nisl ut lorem gravida euismod.
-
-## [The start](#the-start)
-
-Fusce non velit cursus ligula mattis convallis vel at metus. Sed pharetra tellus massa, non elementum eros vulputate non. Suspendisse potenti. Quisque arcu felis, laoreet vel accumsan sit amet, fermentum at nunc. Sed massa quam, auctor in eros quis, porttitor tincidunt orci. Nulla convallis id sapien ornare viverra. Cras nec est lacinia ligula porta tincidunt. Nam a est eget ligula pellentesque posuere. Maecenas quis enim ac risus accumsan scelerisque. Aliquam vitae libero sapien. Etiam convallis, metus nec suscipit condimentum, quam massa congue velit, sit amet sollicitudin nisi tortor a lectus. Cras a arcu enim. Suspendisse hendrerit euismod est ac gravida. Donec vitae elit tristique, suscipit eros at, aliquam augue. In ac faucibus dui. Sed tempor lacus tristique elit sagittis, vitae tempor massa convallis.
-
-## [The middle](#the-middle)
-
-Proin quis velit et eros auctor laoreet. Aenean eget nibh odio. Suspendisse mollis enim pretium, fermentum urna vitae, egestas purus. Donec convallis tincidunt purus, scelerisque fermentum eros sagittis vel. Aliquam ac aliquet risus, tempus iaculis est. Fusce molestie mauris non interdum hendrerit. Curabitur ullamcorper, eros vitae interdum volutpat, lacus magna lacinia turpis, at accumsan dui tortor vel lectus. Aenean risus massa, semper non lectus rutrum, facilisis imperdiet mi. Praesent sed quam quis purus auctor ornare et sed augue. Vestibulum non quam quis ligula luctus placerat sed sit amet erat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Fusce auctor, sem eu volutpat dignissim, turpis nibh malesuada arcu, in consequat elit mauris quis sem. Nam tristique sit amet enim vel accumsan. Sed id nibh commodo, dictum sem id, semper quam.
-
-## The end
-
-Donec ex lectus, tempus non lacinia quis, pretium non ipsum. Praesent est nunc, rutrum vel tellus eu, tristique laoreet purus. In rutrum orci sit amet ex ornare, sit amet finibus lacus laoreet. Etiam ac facilisis purus, eget porttitor odio. Suspendisse tempus dolor nec risus sodales posuere. Proin dui dui, mollis a consectetur molestie, lobortis vitae tellus. Vivamus at purus sed urna sollicitudin mattis. Mauris lacinia libero in lobortis pulvinar. Nullam sit amet condimentum justo. Donec orci justo, pharetra ut dolor non, interdum finibus orci. Proin vitae ante a dui sodales commodo ac id elit. Nunc vel accumsan nunc, sit amet congue nunc. Aliquam in lacinia velit. Integer lobortis luctus eros, in fermentum metus aliquet a. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.
-
diff --git a/_posts/2021-03-04-soopr.md b/_posts/2021-03-04-soopr.md
deleted file mode 100644
index fe3ca6038..000000000
--- a/_posts/2021-03-04-soopr.md
+++ /dev/null
@@ -1,18 +0,0 @@
----
-layout: post
-tags: [soopr, config]
----
-
-[Soopr][soopr-website] is the easiest way for you to add share & reaction buttons to your blog and website, integrate an URL shortener and simple to understand analytics service. Soopr lets you manage all of these using a powerful dashboard.
-
-Moonwalk uses Soopr for share and like buttons and it is already integrated. By default, Moonwalk shows `circular` Twitter, Facebook and Copy buttons in `base` size. To add `like` button, please signup for free on [Soopr][soopr-website]
-
-Once you have signed up on Soopr, get a publish token for your website and edit `_config.yml` file and add it under `soopr` key and restart the server.
-```yml
-soopr:
- publish-token: "ADD_YOUR_PUBLISH_TOKEN_HERE"
-```
-
-Check out the [Soopr Website][soopr-website] for more info on how to get the most out of Soopr.
-
-[soopr-website]: https://www.soopr.co
diff --git a/_posts/2024-02-28-Install-&-Set-up-Ubuntu-22.04.md b/_posts/2024-02-28-Install-&-Set-up-Ubuntu-22.04.md
new file mode 100644
index 000000000..ee91771dd
--- /dev/null
+++ b/_posts/2024-02-28-Install-&-Set-up-Ubuntu-22.04.md
@@ -0,0 +1,211 @@
+---
+layout: post
+author: pascal
+tags: [tutorial, ubuntu]
+---
+
+# Ubuntu 초기 세팅
+
+
+
+## Ubuntu 설치
+
+
+
+### 1. 설치 USB 준비
+
+- 프로그램 사용해서 Ubuntu 22.04 LTS iso 이미지 다운
+
+| OS | Tool |
+|---|--------------------------|
+| Windows | Rufus |
+| Ubuntu| Startup Disk Creator |
+
+
+
+### 2. Ubuntu 설치
+
+- 바이오스 진입(msi: del 연타) 후 준비한 USB를 부팅 1순위로 변경
+
+- Try or install Ubuntu 선택
+
+- 설치 형식 -> 기타
+
+- Partition 설정
+
+ - swap: RAM의 2배 크기
+
+ - EFI: 512MB. 부팅에 사용
+
+ - root: ext4로 설정. 남은 공간 모두 할당.(/home 따로 안나눠도됨)
+
+
+#### 한국어 설정
+
+- Region & Language -> Language: '한국어'로 변경
+
+- 재시동
+
+- 키보드 -> 입력 소스: '한국어(Hangul)' 추가
+
+- Ubuntu 상단 bar 우측에서 'ko'를 '한국어'로 변경
+
+- 키보드 바로 가기 -> 바로 가기 보기 및 사용자 설정-> 입력 중-> '사용 않음'으로 변경
+
+- 다시 시작
+
+
+
+## Basic Setup
+
+- mirror 서버를 kakao로 변경
+
+- Compiler
+
+ - gcc
+
+ - clang, clangd
+
+- Build system
+
+ - CMake
+
+- CI/CD
+
+ - Git 설치 + 구성
+
+```
+$ git config --global user.name "your_username_example"
+$ git config --global user.email "your_useremail_example"
+```
+ - GitHub
+
+- vim, vim-gtk3
+
+- zsh, oh-my-zsh
+
+- tmux
+
+- VS Code
+
+- docker, docker-desktop
+
+- pyenv
+
+- nvm
+
+
+
+## Git-GitHub Repository 연동
+
+
+
+### Generate a new SSH key and add it to the ssh-agent
+
+- Generate a new SSH key
+
+```
+$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
+```
+
+- Start the ssh-agent
+
+```
+$ eval "$(ssh-agent -s)"
+```
+
+- Add your SSH private key to the ssh-agent
+
+```
+$ ssh-add ~/.ssh/id_rsa
+```
+
+- Copy your SSH public key
+
+```
+$ cat ~/.ssh/id_rsa.pub
+```
+
+- Add your SSH public key to the GitHub account
+
+
+
+### Git과 GitHub Repository 연동
+
+- 현재 디렉토리에서 Git 저장소 초기화
+
+```
+$ git init
+```
+
+- Github에서 Repository 생성
+
+- Git과 GitHub 원격 저장소를 연결
+
+```
+$ git remote add origin
+```
+
+- 작업 후 push
+
+```
+$ git add test.txt
+$ git commit -sm "Test commit"
+$ git push -u origin main
+```
+
+
+
+### GitHub 명령어
+
+- stage 할 파일 추가
+
+```
+$ git add .
+```
+
+- 다음 commit에 포함될 staged된 파일과 staged되지 않은 파일 확인
+
+```
+$ git status
+```
+
+- commit된 파일과 현재 상태 비교
+
+```
+$ git diff
+```
+
+- 히스토리 이름 지어주기
+
+```
+$ git commit -m "history_name_example"
+```
+
+- GitHub repository와 내 local project와 연결
+
+```
+$ git remote add origin repository_URL_example
+```
+
+- 잘 되었는지 확인
+
+```
+$ git remote -v
+```
+
+- GitHub로 올리기
+
+```
+$ git push origin master
+```
+
+
+
+### Install GitHub desktop on Ubuntu
+
+```
+$ wget -qO - https://apt.packages.shiftkey.dev/gpg.key | gpg --dearmor | sudo tee /usr/share/keyrings/shiftkey-packages.gpg > /dev/null
+$ sudo sh -c 'echo "deb [arch=amd64 signed-by=/usr/share/keyrings/shiftkey-packages.gpg] https://apt.packages.shiftkey.dev/ubuntu/ any main" > /etc/apt/sources.list.d/shiftkey-packages.list'
+$ sudo apt update && sudo apt install github-desktop
+```
diff --git a/_posts/2024-03-12-Coursera)-Google-Project-Management:-Professional-Certificate.md b/_posts/2024-03-12-Coursera)-Google-Project-Management:-Professional-Certificate.md
new file mode 100644
index 000000000..96834375d
--- /dev/null
+++ b/_posts/2024-03-12-Coursera)-Google-Project-Management:-Professional-Certificate.md
@@ -0,0 +1,97 @@
+---
+layout: post
+author: Cascal Pascal
+tags:
+ - coursera
+ - project management
+ - google
+ - certificate
+---
+
+# Course
+
+[Coursera)Google Project Management: Professional Certificate](https://www.coursera.org/professional-certificates/google-project-management)
+
+---
+
+
+
+## Foundations of Project Management
+
+[Module 1: What is project management?](https://cascalpascal.github.io/what-is-project-management)
+
+[Module 2: Exploring how a project manager adds value](https://cascalpascal.github.io/exploring-how-a-project-manager-adds-value)
+
+[Module 3: The project management life cycle and methodologies](https://cascalpascal.github.io/the-project-management-life-cycle-and-methodologies)
+
+[Module 4: Organizational structure and culture](https://cascalpascal.github.io/organizational-structure-and-culture)
+
+
+
+## Project Initiation: Starting a Successful Project
+
+[Module 1: Fundamentals of project initiation](https://cascalpascal.github.io/foundamentals-of-project-initiation)
+
+Module 2: Defining project goals, scope, and success criteria
+
+Module 3: Working effectively with stakeholders
+
+Module 4: Utilizing resources and tools for project success
+
+
+
+## Project Planning: Putting It All Together
+
+Module 1: Beginning the planning phase
+
+Module 2: Building a project plan
+
+Module 3: Managing budgeting and procurement
+
+Module 4: Managing risks effectively
+
+Module 5: Organizing communication and documentation
+
+
+
+## Project Execution: Running the Project
+
+Module 1: Introduction of execution
+
+Module 2: Quality management and continuous improvement
+
+Module 3: Data-informed decision-making
+
+Module 4: Leadership and influencing skills
+
+Module 5: Effective project communication
+
+Module 6: Closing a project
+
+
+
+## Agile Project Management
+
+Module 1: The fundamentals of Agile
+
+Module 2: Scrum 101
+
+Module 3: Implementing Scrum
+
+Module 4: Applying Agile in the organization
+
+
+
+## Capstone: Applying Project Management in the Real World
+
+Module 1: Initiating a project
+
+Module 2: Building out a project plan
+
+Module 3: Maintaining quality
+
+Module 4: Effective stakeholder communication
+
+
+
+
diff --git a/_posts/2024-03-12-What-is-project-management?.md b/_posts/2024-03-12-What-is-project-management?.md
new file mode 100644
index 000000000..21003cf25
--- /dev/null
+++ b/_posts/2024-03-12-What-is-project-management?.md
@@ -0,0 +1,77 @@
+---
+layout: post
+author: Cascal Pascal
+tags:
+ - coursera
+ - project management
+ - google
+ - certificate
+---
+
+>**Course**
+>
+>[[coursera] Google Project Management: Professional Certificate](https://cascalpascal.github.io/coursera-google-project-management-professional-certificate)
+
+
+---
+
+
+
+# Project
+
+프로젝트는 원하는 결과를 얻기 위해 완료해야 하는 일련의 작업이다.
+원하는 결과를 얻기 위해서는 협력과 신중한 계획이 필요하다.
+이는 프로젝트가 계획대로 순조롭게 진행되고 예산 내에서 수행될 수 있도록 한다.
+
+
+
+# Project Management
+
+지식, 기술, 도구 및 기법을 적용하여 프로젝트 요구 사항을 충족시키고 원하는 결과물을 달성하는 것이다.
+PM은 프로젝트가 기대되는 결과물을 예정대로 제때에 그리고 예산 내에서 전달할 수 있도록 도와준다[^1].
+넓은 의미에서 PM은 프로젝트 결과가 성공적인지, 회사에 value를 가져다 주는지 확인해야 한다.
+
+- **Planning and Organizing**
+
+PM의 일상 업무는 항상 planning과 organizing이 기본이다.
+예를 들어, 프로젝트의 목적을 세우기 위해 소비자나 팀원들의 요구사항을 조사하거나 프로젝트 계획을 세우기 위해 설문조사를 시행하거나 미팅을 잡을 수 있다.
+프로젝트 계획을 잘 세우는 것은 PM의 중요한 역할이다.
+이는 프로젝트의 전체적인 톤을 정하고 모든 인력의 순조롭게 작업을 진행하는 데 도움을 준다.
+
+- **Managing tasks**
+
+프로젝트가 진행되면 PM은 tasks를 관리하여 team members를 돕고 key milestones를 더 큰 팀이나 고객들에게 전달한다.
+이는 team members와 고객들에게 프로젝트 진행 상황을 업데이트하기 위함이다.
+
+- **Budgeting and controlling costs and other factors**
+
+예산 관리와 비용 통제는 프로젝트를 예산 범위 내에서 순조롭게 진행하기 위해 PM의 필수 책무이다.
+프로젝트를 진행하면서 예상치 못한 비용이 발생하는 경우가 빈번하게 일어난다.
+
+
+
+# Finding the perfect role
+
+분야에 따라 다르겠지만 Operation Manager, Program Manager, Operations Associate, Project Assistant 모두 타이틀은 Project Manager가 아니지만 내 skill에 맞을 수 있으니 타이틀에 제한을 두지 말아야 한다.
+Job description에 다음과 같이 명시된 업무들은 나의 PM skills에 매칭된다.
+
+- **Required skills**
+
+organizational management, strong planning, communication skills, budget preparation and monitoring
+
+- **Duties**
+
+creating monthly status reports, implement new and necessary technologies, tracking work plans and performance metrics, assisting other members of the operations team on given projects, and ensuring timely responses to requests for information
+
+---
+
+{: data-content="footnotes"}
+
+[^1]: PMI의 조사에 따르면, 프로젝트의 48%가 delivery dates를 놓치고, 43%가 예산 목표를 달성하지 못하며, 31%가 organization의 목표를 달성하지 못하고 있다고 한다.
+
+
+---
+
+### Reference
+
+[Coursera: Foundations of Project Management](https://www.coursera.org/learn/project-management-foundations)
\ No newline at end of file
diff --git a/_posts/2024-03-12-[DevRoad]-Full-Stack-Developer.md b/_posts/2024-03-12-[DevRoad]-Full-Stack-Developer.md
new file mode 100644
index 000000000..4c23a4674
--- /dev/null
+++ b/_posts/2024-03-12-[DevRoad]-Full-Stack-Developer.md
@@ -0,0 +1,70 @@
+---
+layout: post
+author: Cascal Pascal
+tags:
+ - devroad
+ - full stack
+---
+
+# Course
+
+[Full Stack Developer Roadmap](https://roadmap.sh/full-stack)
+
+
+---
+
+
+
+## Frontend
+
+[HTML](https://cascalpascal.github.io/scrimba-html)
+[CSS](https://cascalpascal.github.io/scrimba-css)
+**Checkpoint - Static Webpages**
+
+JavaScript
+**Checkpoint - Interactivity**
+
+npm
+**Checkpoint - External Packages**
+
+Git
+GitHub
+**Checkpoint - Collabrative Work**
+
+Tailwind, React
+**Checkpoint - Frontend Apps**
+
+
+
+## Backend
+
+Node.js
+**Checkpoint - CLI Apps**
+
+PostgreSQL
+**Checkpoint - Simple CRUD**
+
+RESTful APIs
+JWT Auth
+Redis
+**Checkpoint - Complete App**
+
+
+
+## DevOPs
+
+Linux Basics
+Basic AWS Services
+**Checkpoint - Deployment**
+
+Monit
+**Checkpoint - Monitoring**
+
+Github Actions
+**Checkpoint - CI/CD**
+
+Ansible
+**Checkpoint - Automation**
+
+Terraform
+**Checkpoint - Infrastructure**
diff --git a/_posts/2024-03-12-[DevRoad]-Python-Developer.md b/_posts/2024-03-12-[DevRoad]-Python-Developer.md
new file mode 100644
index 000000000..76d8e8c6f
--- /dev/null
+++ b/_posts/2024-03-12-[DevRoad]-Python-Developer.md
@@ -0,0 +1,54 @@
+---
+layout: post
+author: Cascal Pascal
+tags:
+ - devroad
+ - language
+ - python
+---
+
+# Course
+
+[Python Developer Roadmap](https://roadmap.sh/python)
+
+---
+
+
+
+# Basic
+
+## [Chobo-Python](https://wikidocs.net/book/2)
+
+[Ch 01: Starting Python](https://cascalpascal.github.io/chobo-python-starting-python)
+
+[Ch 02: Control Structures](https://cascalpascal.github.io/chobo-python-control-structures)
+
+Ch 03: Functions
+
+Ch 04: Data Types
+
+Ch 05: Modules
+
+Ch 06: Files
+
+Ch 07: Object-Oriented Programming
+
+Ch 08: Exceptions
+
+Ch 09: Testing and Performance
+
+Appendix
+
+
+
+# Intermediate
+
+
+
+# Advanced
+
+
+
+# Practical
+
+[Exercises](https://www.notion.so/andrea9292/Python-4fc1e3501e4847ee9d7210ca0f16ea71)
diff --git a/_posts/2024-03-12-chobo-python)-Starting-Python.md b/_posts/2024-03-12-chobo-python)-Starting-Python.md
new file mode 100644
index 000000000..025c2fb7d
--- /dev/null
+++ b/_posts/2024-03-12-chobo-python)-Starting-Python.md
@@ -0,0 +1,150 @@
+---
+layout: post
+author: Cascal Pascal
+tags:
+ - language
+ - python
+ - chobo python
+---
+
+>**Course**
+>
+>[[DevRoad] Python Developer: Chobo-Python](https://cascalpascal.github.io/devroad-python-developer)
+
+>**Bookmarks**
+>
+>- [사칙연산](#사칙연산)
+>
+>- [Variable](#variable)
+>
+>- [List](#list)
+>
+>- [Interpreter와 Compiler](#interpreter와-compiler)
+
+---
+
+
+
+
+# 사칙연산
+
+divmod() 함수를 써서 몫과 나머지를 한 번에 계산할 수 있다.
+
+```
+>>> divmod(50, 8)
+(6, 2)
+```
+
+### 1.1.2 연습문제
+
+Q) a = 550, b= 600일 때 c의 값은?
+
+
+
+A)
+
+```
+>>> import math
+>>> math.sqrt(550**2+600**2)
+813.9410298049853
+```
+
+
+
+# Variable
+
+- ```변수 = 변수 * 값``` 형식의 문장은 ```변수 * = 값```으로 줄여서 표현할 수 있다.
+
+```
+>>> price = 5000
+>>> price = price * 0.85
+>>> price
+4250.0
+```
+
+```
+>>> price = 5000
+>>> price *= 0.85
+>>> price
+4250.0
+```
+
+- 변수에 숫자가 아닌 문자열을 넣을 때는 따옴표를 붙여야 한다.
+
+```
+>>> a = 'flower'
+>>> b = 'dog'
+>>> a + b
+flowerdog
+```
+
+### 1.2.1 연습문제
+
+Q) 다운로드 속도가 초당 800kB이고 다운로드하는 데 걸린 시간이 110초라고 할 때, 다운로드한 파일의 크기는 몇 MB인가?
+
+A)
+
+```
+>>> r = 0.8
+>>> t = 110
+>>> r * t
+88.0
+```
+
+
+
+
+
+# List
+
+- len() 함수는 리스트에 element가 몇 개 들어 있는지 보여준다.
+
+```
+>>> nickname = ['Mr.Frog', 'Froggy', 'Caspal', 'Lizardus']
+>>> len(nickname)
+4
+```
+
+- 특정 위치의 element를 나타낼 수 있다.
+
+```
+>>> nickname[2]
+'Caspal'
+```
+
+- 리스트 안의 element를 지울 수 있다.
+
+```
+>>> nickname.remove('Caspal')
+>>> nickname
+['Mr.Frog', 'Froggy', 'Lizardus']
+```
+
+
+
+# Interpreter와 Compiler
+
+컴퓨터에선 스위치의 on/off를 1과 0으로 나타내고, 스위치 하나를 bit라고 한다. 컴퓨터에 일을 시키려면 컴퓨터가 알아들을 수 있는 말로 지시를 내려야 한다. 이럴 때 쓰이는 프로그래밍 언어를 low-level language라고 한다. 반면에 사람이 쓰는 언어를 쓰는 프로그래밍 언어는 high-level language라고 한다. 그런데 high-level language도 프로그램을 작성한 다음에 컴퓨터가 알아들을 수 있게 번역하는 방법에 두 종류가 있다. 한마디 할 때마다 동시통역해주는 방식을 **Interpret** 라고 하고, 말하는 것을 처음부터 끝까지 듣고 나서 한꺼번에 바꿔주는 것을 **Compile** 방식이라고 한다. 파이썬은 우리의 명령을 한 줄씩 해석해서 일하는 Interpreter 방식이다.
+
+### 1.6.1 연습문제
+
+Q) 사용자에게 정수를 입력받아, 그 수의 제곱을 계산해 출력하는 파이썬 스크립트를 작성하시오.
+
+A)
+
+```python
+print('제곱 계산하기 \n')
+leg = int(input('입력: '))
+value = (leg ** 2)
+print('출력:', value)
+```
+
+
+
+
+
+---
+
+## Reference
+
+[https://wikidocs.net/43](https://wikidocs.net/43)
diff --git a/_posts/2024-03-12-scrimba)-HTML.md b/_posts/2024-03-12-scrimba)-HTML.md
new file mode 100644
index 000000000..656fa38d0
--- /dev/null
+++ b/_posts/2024-03-12-scrimba)-HTML.md
@@ -0,0 +1,183 @@
+---
+layout: post
+author: Cascal Pascal
+tags:
+ - devroad
+ - full stack
+ - language
+ - HTML
+---
+
+>**Course**
+>
+>[[DevRoad] Full Stack Developer](https://cascalpascal.github.io/devroad-full-stack-developer)
+
+>**Bookmarks**
+>
+>- [Intro](#html-&-css-&-js)
+>
+>- [Build your website](#build-your-website)
+
+---
+
+
+# HTML & CSS & JS
+
+
+
+자동차 제작에 비유하면, HTML에서 부품을 제작해 자동차를 만들고 CSS에서 자동차를 색칠하고 JavaScript에서 자동차에 엔진을 넣는다고 볼 수 있다.
+이를 홈페이지 제작에 적용하면 다음과 같다.
+
+
+
+HTML로 버튼, 사진, 내용과 같이 홈페이지를 구성하는 요소를 작성하고 CSS로 홈페이지에 색을 입혀주고 JavaScript를 통해 데이터 베이스를 관리하거나 유저 간 거래를 생성하는 등의 기능을 입혀준다.
+
+
+
+# Build your website
+
+
+### 앞뒤 헤딩을 통해 글씨 크기 조정
+
+```html
+
Who are you?
+
Hi, my name is Pascal.
+
Nice to meet you.
+```
+
+
+
+
+
+### 같은 디렉토리 안에 있는 이미지 넣고 사이즈 스케일링 하기
+
+```html
+
+```
+
+
+
+
+
+### 코드를 편하게 관리하기 위해 문단 나누기 - div 사용
+
+```html
+
+
Who are you?
+
Hi, my name is Pascal.
+
Nice to meet you.
+
+
+
+
+```
+
+
+
+### button 생성
+
+```html
+
+```
+
+
+
+
+
+### Input 칸 추가
+
+```html
+
+```
+
+
+
+#### - input type의 종류
+- date
+- time
+- password
+- color
+- file: 파일 선택
+
+
+
+### Anchor tag 사용하여 링크 연결
+
+```html
+Allow me to provide more details about myself here.
+```
+
+
+
+- 만약 새 창으로 링크를 열게 하고 싶다면 target 추가
+
+```html
+here.
+```
+
+
+
+### Proper document structure
+
+```html
+
+
+
+
+
+
+
+
+
+```
+
+- !DOCTYPE: 어떤 파일을 작성할 것인지
+- html
+- head: 인터넷 창의 탭에 뜨는 요소를 작성
+- body: 인터넷 창의 페이지에 뜨는 요소를 작성
+
+
+
+
+
+### Lists
+
+- ol(ordered list)
+
+```html
+
Here are some of my favorite nicknames. Call me whatever you like!
Here are some of my favorite nicknames. Call me whatever you like!
+
+
Mr.Frog
+
Froggy
+
Caspal
+
Lizardus
+
+```
+
+
+
+
+
+
+
+---
+
+#### Reference
+
+- https://scrimba.com/learn/htmlandcss
diff --git a/_posts/2024-03-13-Exploring-how-a-project-manager-adds-value.md b/_posts/2024-03-13-Exploring-how-a-project-manager-adds-value.md
new file mode 100644
index 000000000..9c0d04aca
--- /dev/null
+++ b/_posts/2024-03-13-Exploring-how-a-project-manager-adds-value.md
@@ -0,0 +1,278 @@
+---
+layout: post
+author: Cascal Pascal
+tags:
+ - coursera
+ - google
+ - certificate
+ - project-management
+---
+
+>**Course**
+>
+>[[coursera] Google Project Management: Professional Certificate](https://cascalpascal.github.io/coursera-google-project-management-professional-certificate)
+
+>**Bookmarks**
+>
+>- [Project managers](#project-managers)
+>
+>- [Key project manager roles and responsibilities](#key-project-manager-roles-and-responsibilities)
+>
+>- [Responsibilities that utilize interpersonal skills](#responsibilities-that-utilize-interpersonal-skills)
+>
+>- [Working with cross-functional teams](#working-with-cross-functional-teams)
+>
+>- [The core skills of project manager](#the-core-skills-of-project-manager)
+
+---
+
+
+
+# Project managers
+
+ Project managers guide projects from start to finish using impeccable organizational and interpersonal skills at every stage. They add values for the team, employing prioritization, delegation, and effective communication to contribute to both the team and the organization.
+
+
+
+### - **Prioritization**
+
+ Effectively prioritizing tasks can lead to better project outcomes. Project managers assist the team and organization by efficiently prioritizing tasks required to complete the project. They are experts in helping team members identify large tasks and break them down into smaller steps. To determine the priority of tasks, project managers communicate with the team and stakeholders to gather information and develop plans by selecting the most critical factors for project success. **Stakeholders** are individuals who, like organizational leaders, are impacted by or have an interest in the completion and success of the project.
+
+
+
+### - **Delegation**
+
+ Project managers should be able to assign tasks to the individuals best suited to perform each task effectively.
+
+
+
+### - **Effective communication**
+
+ Project managers need to effectively communicate with the team and stakeholders, which involves presenting plans and ideas transparently and conveying information clearly. They should communicate regularly with the team about the progress of tasks and identify areas where team members need support. Additionally, they need to communicate with external individuals, such as company leaders investing in the project.
+
+
+
+# Key project manager roles and responsibilities
+
+
+
+### - **Planning and organizing**
+
+ - Making use of productivity tools and creating processes.
+ - Create plans, timelines, schedules, and other forms of documentation to track project completion
+
+
+
+### - **Budgeting and controlling costs, and other factors**
+
+ - Monitor and manage the budget
+ - Track issues and risks as they arise
+ - Manage quality by mitigating those issues and risks
+ - Removing unforeseen barriers that come up.
+
+
+
+### - **Managing task**
+
+ - Keeping track of tasks is a great way to help manage the team's workload and ensure that things are getting done.
+ - Also a great tool for demonstrating progress to people outside the immediate team, like your stakeholders.
+
+
+
+#### Example
+
+ Back when I was a program manager in Student Development here at Google, one of our goals was to create pathways for students who identify with communities that are underrepresented in the technology industry. A large part of my day-to-day responsibilities involved working with two separate engineering teams to create our technical curriculum. To manage the tasks associated with this project, I created separate project trackers for each team that outline the vision for the curriculum. These trackers kept both teams in the loop about the timeline for delivery, the categories and subcategories for work, and the team members assigned to each task, I also made sure to update our stakeholders every step of the way. By actively managing tasks throughout the project lifecycle, I was able to keep tabs on everyone's work and efficiently inform stakeholders, which allowed us to achieve our project goal with minimal issues.
+
+
+
+# Responsibilities that utilize interpersonal skills
+
+**Interpersonal skills** are the behaviors you use to interact with others, such as communication, active listening, and leadership.
+
+
+
+
+- **Teaching and mentoring**
+
+When you take the time to fully explain the expectations, you eliminate rework, confusion, and frustration. Mentoring and teaching others the lessons that you, as a project manager, have learned allows your team to make better choices and build on your experience. Mentoring also involves supporting each individual on your team in meeting expectations and helping them to exceed their own sense of personal potential.
+
+- **Building relationships**
+
+Getting to know your team members lets them know that you care about them as people, not just as employees. Taking the time to *build relationships* with your customers, clients, vendors, and other stakeholders is equally important. *Dedicate* time to check in with people. *Pay attention* to the insights they offer you about their work style since their actions can inform how to most effectively interact with them. *Ask* about their lives beyond the project, and then follow up on those discussions later on to show your interest. When you foster these relationships, you are all more invested in the success of your project.
+
+- **Controlling change**
+
+Projects change as you continue to understand the expectations and the needs of your stakeholders. As a project manager, you need to remain flexible and adjust to the stakeholders’ needs. However, it is also important to protect your team from constant change and rework. As the project manager, you are responsible for protecting your team.
+
+A good way to do this is by documenting the initial expectations of the project and clearly identifying the changes being requested. It is also helpful to understand the budget and schedule impact of the changes and make sure that the stakeholders understand those impacts.
+
+- **Empowering your team**
+
+Giving your team the ability to work directly with the stakeholders and their teams lets them know that you trust and believe in their skills! One of the best things about empowering your team is getting fresh ideas and passionate employees willing to help find solutions to problems. Another way you can empower your team is by delegating responsibilities to them, allowing them to make some decisions for the project, and using their input in the planning and execution of the project.
+
+- **Communicating status and concerns**
+
+With effective communication, you can work together with your team to find solutions to challenges. The project manager sets the tone for the project. Maintaining an open door policy and building trust within your team and among stakeholders—all while staying positive—will help the success of the project.
+
+
+
+## A project manager’s role within a team
+
+A project manager is not often the direct manager of the people working on a project team.
+With the help of your team, you can get a lot more done **together**.
+Each person will be an expert on their portion of the project, but no one will be an expert on every aspect of the project, and honestly, neither will you.
+As the project manager, you won't be an expert in every project role, and that's okay.
+As we said, your job isn't to be the expert on everything.
+Instead you're responsible for guiding your team and making sure that they have the support that they need in order to complete the project.
+
+> A project manager isn't always the direct manager of each member of the project team. Rather, they're responsible for guiding those people and ensuring they have the support they need to complete the project.
+
+- First, you'll need to hold all team members accountable for their assigned tasks. Managing tasks will help you hold your team members accountable by giving them ownership over specific pieces of the project.
+- Second, you'll need to ensure that issues and risks are tracked and visible, and be able to establish escalation paths. Now by escalation paths, I mean that you should know how you will communicate risks to the right people at the right time.
+- Third, you'll need to understand and help teammates adopt the right workflows and project management styles. As the project manager, you'll likely have the best idea of which style is best for the work. It's your job to ensure that the team adheres to that style and the other systems in place.
+- Fourth, you'll need to collaborate with other teams at the organization to meet the requirements based on project, scope, schedule, and budget. In other words, a project may affect not only your team, but other teams at an organization, as well as, say, the marketing or the finance team. So you'll need to work with those teams to ensure that everyone is happy with the project outcomes.
+
+
+
+# **Working with cross-functional teams**
+
+A **cross-functional team** includes team members who have different backgrounds, types of expertise, and job functions but they are all working towards a common goal: the successful completion of your project.
+Sometimes the members of a cross-functional team are referred to as “T-shaped professionals.”
+They are skilled in how to collaborate and innovate with those in different job functions and across different departments, but they also contribute their own specific areas of expertise.
+
+
+
+
+
+
+
+### - **Clarify goals**
+
+When working with cross-functional teams, it is important to ensure that each member of the team understands their role, how they support each other, and the common goals of the project.
+It is vital to set clear goals for the team and make sure that the team understands those goals.
+*Be direct and concise, avoiding extraneous details and explanations.*
+When communicating task or project goals, make sure you define key items, such as budget, deadlines, quality requirements, or important resources.
+Your project may be competing against other priorities, so communicating clearly and often with your team—and vice versa—helps you identify any potential issues or concerns before they arise.
+
+
+
+### - **Get team members with the right skills**
+
+Making sure you have team members with the correct skill sets for each of the project functions is critical.
+As the project manager, you must help ensure that your team has the right people with the right skill sets needed for the project to succeed.
+
+
+
+### - **Measure progress**
+
+Showing your team how much they have accomplished helps keep them motivated.
+This helps everyone see the full picture and recognize their impact on the project.
+You can measure progress in many ways, including meeting key milestones, completing project tasks, and meeting project goals on time and within budget.
+Regularly communicate with your team members to check on their progress.
+Ask them if they anticipate being finished on time.
+If not, ask how you can help them succeed.
+
+Keep track of the team’s progress throughout the project by *documenting* when tasks and goals are completed, and let your team members know if the project is on track or not.
+Make sure you communicate successes, delays, or issues, to the team so they know how the project is progressing.
+
+
+
+### - **Recognize efforts**
+
+As a project manager, it is your job to make sure that each member of your cross-functional team recognizes the value of their efforts each step of the way.
+Learning what makes your team members feel supported, giving and taking feedback, and being mindful of each individual's background, personal identifiers, and work style can help mediate some of the differences among team members.
+
+> Being able to communicate clearly with team members, clarify the goals of the project, get team members with the right skills, measure team progress, and recognize team members’ efforts is an important part of your role as the project manager, and is key to your project’s success.
+
+
+
+# **The core skills of project manager**
+
+
+
+### - **Enabling decision making**
+
+You can help team members feel empowered from the start of your project by making the decision-making process collaborative.
+Empowering your team to express their opinions and make their own decisions allows you to focus on the overarching management tasks and prioritize them in order of importance.
+Additionally, when you allow team members to have a voice in decisions, it helps foster an environment of responsibility, accountability, and team closeness.
+
+You'll ensure that projects stay on schedule by gathering information from teammates and using those insights to help the team make informed decisions.
+You'll also make sure that those decisions are communicated to the necessary coworkers, whether that's the immediate team or company leaders.
+
+
+
+### - **Communication and escalating**
+
+Project management requires clearly communicating project goals and expectations, team member roles and responsibilities, and constructive feedback.
+Knowing how to effectively communicate and when to escalate issues to management is key to keeping you, your team, and your organization on the path to success.
+When escalation is required, try to approach management with both the problem and the potential solution or suggestions.
+This will show that you’re taking initiative as a project manager.
+
+
+
+### - **Flexibility**
+
+As a project manager, knowing how to be flexible when changes are needed is key.
+
+
+
+#### **Flexibile planning**
+
+The flexible planning strategies can help you manage your project during times of unpredictability:
+
+- **Assess external constraints**. When planning your project, take external events into account, such as national holidays and team member vacations and sick leave. *Leaving extra time in the schedule* for these inevitable events up front can help minimize the impact to your project.
+- **Plan for risks and challenges**. If you consider the risks that may occur, you may be able to find solutions for them in advance. For example, list a roster of potential team members who can join if one of the team members becomes unavailable: whether we can hire replacements internally or employ independent contractors.
+- **Calculate “float” in your schedule**. Float, or slack, refers to the amount of time you can wait to begin a task before it impacts the project schedule and threatens the project outcome. *Identifying float in your schedule* can help with resource management, scheduling, and keeping your project on track.
+
+
+
+#### **Handling ambiguity**
+
+Project managers often face ambiguity in goals, requirements, schedules, vision, or other areas related to the project.
+Here are some different ways to help your team deal with ambiguity:
+
+- **Keep calm**. In uncertain times, handling ambiguity with grace and poise will help inspire the members of your team to do the same.
+- **Express empathy**. As a project manager, it is important to try to understand what your team is thinking and feeling, especially during times of ambiguity. Let your team members know that you care about the challenges they are facing and are there to support them.
+- **Communicate what you know clearly**. This helps your team get a better sense of what to expect, regardless of any aspects of the project that are still unknown or changing.
+- **Make decisions and stick to them**. *Try not to second-guess your decisions in front of your team* since this can lead to greater uncertainty. If you need to change course, clearly explain why you have chosen to do so to your team.
+- **Trust the expertise of your team**. Increase clarity by having everyone on your team discuss what they already know or believe to be true about components of your project, such as what is involved in specific tasks or resources needed, based on their areas of expertise.
+
+
+
+### - **Strong organizational skills**
+
+If you demonstrate that it is important for you, as a leader, to stay organized through efficient tracking and communications, your team will follow suit.
+One way to do this is by utilizing the abundance of organizational tools available, such as:
+
+- Planning and scheduling software (templates, workflows, calendars)
+- Collaboration tools (email, collaboration software, dashboards)
+- Documentation (files, plans, spreadsheets)
+- Quality assurance tools (evaluations, productivity trackers, reports)
+
+
+
+## Leadership and team dynamics
+
+
+
+### Influencing without authority
+
+A project manager's ability to guide teammates to complete their assigned work without acting as their direct managers.
+
+
+
+### Key interpersonal skills
+
+- **Communication**. In the context of leading a team, communication can include checking in with teammates to understand how they're progressing on a task and providing clear feedback on the quality of a teammate's work.
+- **Negotiation**. You'll need to use your negotiation skills often with your teammates and stakeholders to balance their needs and what is best for the project.
+- **Conflict mediation**. Conflict mediation is a great skill to practice and develop to ensure the project does not suffer as a result.
+- **Understanding motivations**. This means getting to know your teammates and figuring out what pushes them to do their best work. Understanding motivations might also include learning how your teammates prefer to receive feedback, and how they like to receive recognition for doing a great job.
+
+
+
+
+---
+
+### Reference
+
+[Coursera: Foundations of Project Management](https://www.coursera.org/learn/project-management-foundations)
\ No newline at end of file
diff --git a/_posts/2024-03-13-Jump-to-Java)-What-is-Java?.md b/_posts/2024-03-13-Jump-to-Java)-What-is-Java?.md
new file mode 100644
index 000000000..74fb4749a
--- /dev/null
+++ b/_posts/2024-03-13-Jump-to-Java)-What-is-Java?.md
@@ -0,0 +1,184 @@
+---
+layout: post
+author: Cascal Pascal
+tags:
+ - language
+ - java
+ - jump to java
+---
+
+>**Course**
+>
+>[[DevRoad]Java Developer: Jump to Java](https://cascalpascal.github.io/devroad-java-developer)
+
+>**Bookmarks**
+>
+>- [What is Java?](#what-is-java?)
+>
+>- [Setting Up Java Development Environment](#setting-up-java-development-environment)
+
+
+---
+
+
+# What is Java?
+처음에는 가전제품에 탑재해 동작하는 프로그램을 만들기 위해 탄생했으나 지금은 웹과 모바일 앱 개발에서 가장 많이 사용하는 객체 지향 프로그래밍 언어이다.
+
+
+
+## Things you can do with Java
+
+- Web programming
+
+ 인터넷 게시판이나 방명록을 바로 웹 프로그램이라 하며 자바는 이러한 웹 프로그램 개발에 널리 사용된다. 특히 서버 사이드(백엔드) 개발에 강점이 있다. Servlet, JSP, Spring Framework 등과 같은 기술들을 사용하여 웹 프로그램을 개발할 수 있다.
+
+- Android application
+
+- Game development
+
+ 게임 개발을 위한 대표적인 자바 라이브러리로는 Lightweight Java Game Library, 자바 프레임워크로는 libGDX가 있다.
+
+- Database processing
+
+ 자바는 데이터베이스 시스템에 연결하여 데이터를 관리하는 데 매우 적합한 언어이다.
+
+- Big data and distributed processing
+
+ 빅 데이터는 대규모의 복잡한 데이터를 의미하며, 전통적인 데이터 처리 방식으로는 분석이 어렵다. 이를 효과적으로 처리하기위해 분산 처리 기술이 사용된다. 자바는 Hadoop, Spark와 같은 빅 데이터 처리에 필요한 도구와 프레임워크를 제공한다.
+
+
+
+## Things you can't do with Java
+
+- System Programming
+
+- 높은 성능을 요구하는 프로젝트
+
+ 자바는 Garbage Collection과 just-in-time 컴파일러 같은 기능 때문에 실행 속도가 다소 느릴 수 있다. 따라서 고성능이 중요한 분야에서는 C, C++, 또는 Rust 같은 언어가 적합하다.
+
+> Garbage Collection은 프로그램에서 사용되지않는 메모리를 자동으로 회수하는 메모리 관리 기법이다.
+> Just-in-time compiler는 프로그램 실행 시점에 바이트 코드를 기계어로 변환하는 기술이다.
+
+- IOS application
+
+
+
+# Setting Up Java Development Environment
+
+
+
+## Installing JDK
+
+JDK(Java development kit)는 자바 코드를 작성하는 도구, 소스를 컴파일하는 컴파일러 등으로 이루어져 있다.
+
+```
+$ sudo apt-get update
+$ sudo apt-get upgrade
+
+# Java 17 설치
+$ sudo apt-get install openjdk-17-jdk
+```
+
+
+## Configuring Environment Variables
+
+```
+# 환경 변수 설정
+$ sudo gedit ~/.zshrc
+
+# 파일에 JAVA_HOME setting 추가
+export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
+export PATH=$JAVA_HOME/bin/:$PATH
+export CLASS_PATH=$JAVA_HOME/lib:$CLASS_PATH
+
+# .zshrc 업데이트
+$ source ~/.zshrc
+
+# 잘 적용되었는지 확인
+$ echo $JAVA_HOME
+```
+
+
+
+## Java files and compilation
+
+javac는 java vompiler의 줄임말이다.
+자바 프로그램은 확장자가 .java인 파일로 저장되는데, 이는 우리가 작성해야 할 자바 프로그램을 말한다.
+
+만약 MyProgram.java라는 자바 파일을 작성하였고 이를 실행하고 싶다면, 두 단계를 거쳐야 한다. .java 파일을 .class 파일로 바꿔주는 컴파일 단계와 이어서 .class 파일을 실행하는 단계이다. 컴파일을 통해 컴퓨터(그림에서 JavaVM)가 이해할 수 있는 binary file인 .class를 생성해야 프로그램을 실행할 수 있다.
+
+
+
+**Java는 compile하고 난 후 exe 파일이 아닌 class 파일이 생성된다**
+
+> compile을 통해 exe 파일이 생성되는 C나 C++ 같은 경우엔 JVM 같은 중간 단계를 거치지 않기 때문에 속도가 빠르다. 하지만 운영체제마다 실행 파일을 따로 작성해야 하는 단점이 있다.
+> 반면에 자바는 JVM이라는 중간 단계가 있으므로 C나 C++보다 느리지만 한 번 작성한 클래스 파일은 어떤 운영체제에도 사용할 수 있다는 장점이 있다.
+> *한 번 작성한 것을 여러 곳에 재활용 하는 것이 자바의 가장 큰 특징이자 장점이라고 할 수 있다.*
+
+
+
+## Writing a Simple Program
+
+- 다음과 같은 내용의 helloworld.java 파일을 생성
+
+```java
+// helloworld.java
+public class helloworld {
+ public static void main(String[] args) {
+ System.out.println("Hello World!");
+ }
+}
+```
+
+- .class 파일 생성 및 실행
+
+```
+# class 파일 생성
+$ javac helloworld.java
+
+# 생성되었는지 확인
+$ ls
+
+# 생성한 .class 파일 실행
+$ java helloworld
+```
+
+## main method
+
+어떤 프로그램이든지 시작과 끝이 있는데 이것을 관리하는 것이 main method이다. method는 함수와 동일한 개념이며 class 내의 함수를 보통 method라고 한다. 자바는 모든 것이 클래스 기반이므로 자바에서 사용하는 함수는 모두 method이다.
+
+## 자바의 8가지 특징
+
+1. Simple
+
+2. Object-oriented
+
+ 숫자(int, float. long 등)나 논릿값(true, false) 같은 원시 자료형을 제외하고 거의 모두 객체로 구성된다.
+
+3. Interpreted
+
+4. robust
+
+ 포인터 연산을 지원하지 않아 잘못된 주소를 가리킬 가능성을 사전에 없앴다. 모든 메모리 접근을 자바 시스템이 관리하고 제한하며 예외처리까지 하므로 시스템이 붕괴될 우려가 없다.
+
+5. Secured
+
+ 자바는 프로그램을 작성할 때 자료형 타입에 매우 민감하다. 그래서 자바는 일단 컴파일만 되면 실행할 때 오류 발생률이 현저히 낮다.
+
+6. Platform independent
+
+ 자바로 작성한 프로그램이라면 운영체제와 상관없이 어디서든 실행할 수 있다.
+
+7. Multithreaded
+
+ 멀티 프로세서 하드웨어를 지원하도록 설계되어 멀티 CPU 시스템에서 효율이 높다.
+
+8. Dynamic
+
+ 자바 인터페이스를 이용하면 모듈을 갱신할 때 다른 모듈까지 모두 갱신할 필요가 없다. 인터페이스가 인스턴스 변수와 도구의 실행문을 모두 배제한 채 객체 간의 상호 작용을 정의하기 때문이다.
+
+---
+
+## Reference
+
+https://wikidocs.net/190
diff --git a/_posts/2024-03-13-[DevRoad]-Java-Developer.md b/_posts/2024-03-13-[DevRoad]-Java-Developer.md
new file mode 100644
index 000000000..7b011e4eb
--- /dev/null
+++ b/_posts/2024-03-13-[DevRoad]-Java-Developer.md
@@ -0,0 +1,55 @@
+---
+layout: post
+author: Cascal Pascal
+tags:
+ - devroad
+ - language
+ - java
+---
+
+# Course
+
+[Java Developer Roadmap](https://roadmap.sh/java)
+
+---
+
+
+
+# Basic
+
+## [Jump to Java](https://wikidocs.net/book/31)
+
+[Ch 01: What is Java?](https://cascalpascal.github.io/jump-to-java-what-is-java)
+
+Ch 02: Starting Java
+
+Ch 03: Basics of Java - Data Types
+
+Ch 04: Understanding Control Statements
+
+Ch 05: Object-Oriented Programming
+
+Ch 06: Input and Output in Java
+
+Ch 07: Taking Java to the Next Level
+
+Ch 08: How to Start Java Programming?
+
+Ch 09: 15 Java Coding License Exam Questions
+
+
+
+# Intermediate
+
+
+
+# Advanced
+
+
+
+# Practical
+
+[초보자를 위한 Java 200제](http://www.infopub.co.kr/index.asp)
+
+
+
diff --git a/_posts/2024-03-14-The-project-management-life-cycle-and-methodologies.md b/_posts/2024-03-14-The-project-management-life-cycle-and-methodologies.md
new file mode 100644
index 000000000..e90e6acbd
--- /dev/null
+++ b/_posts/2024-03-14-The-project-management-life-cycle-and-methodologies.md
@@ -0,0 +1,407 @@
+---
+layout: post
+author: Cascal Pascal
+tags:
+ - coursera
+ - google
+ - certificate
+ - project-management
+---
+
+> **Course**
+>
+> [[coursera] Google Project Management: Professional Certificate](https://cascalpascal.github.io/coursera-google-project-management-professional-certificate)
+
+> **Bookmarks**
+>
+> - [Project life cycle](#project-life-cycle)
+> - [Project management methodologies](#project-management-methodologies)
+
+---
+
+
+
+# Project life cycle
+
+
+
+### - Initiate the project
+
+ You'll define project goals and deliverables, identify the budget and resources you'll need, the people involved in your project, and any other details that can impact the successful completion of your project. You'll document all this information in one place to showcase the project's value, and hopefully get approval to move forward with it.
+
+
+
+### - Make a plan
+
+ Once the project is approved, it's time to get rolling. You'll make a plan for how you will meet the goals of your project. There are all kinds of ways to plan your project, and we'll get into some different methods and techniques later on. Right now, the important thing to know is that for every single project, creating a plan of how you're going to meet your goals is absolutely 100 percent essential. To be effective, your plan needs to include a lot of things. For example, a budget, a breakdown of all the tasks that you need to be completed, ways to communicate team roles and responsibilities, a schedule, resources, and what to do in case your project encounters problems or needs to change.
+
+
+
+### - Execute & complete tasks
+
+ While you might be in charge of completing certain tasks in the project, your primary tasks as the project manager are to monitor progress and keep your team motivated. You also remove any obstacles that might come up so that the tasks are executed well and on time.
+
+
+
+### - Close the project
+
+ Why is it important to close? One big reason is so your team has a moment to celebrate all of their hard work. Closing the project is also a chance to evaluate how the project went. You can make note of what worked and what didn't so you can plan better for next time. Even if the project was a massive success, it's helpful to take time to reflect. Closing the project is also a great way to connect with anyone outside your team who may have had interest in the project's goal. You can let everyone know what was completed and what you accomplished.
+
+
+
+---
+
+
+
+## Case study: The significance of each project phase
+
+ It’s Friday night when Jason, a project manager at a company that specializes in virtual reality software, receives an urgent call from his manager, Mateo. Mateo tells Jason that he needs a cost and timeline for a virtual reality training program for Flight Simulators, Inc., a company that does aircraft maintenance, by the end of the weekend.
+
+- **The consequences of rushing through a project phase**
+
+ Jason spends the weekend working through a proposal for Flight Simulators, Inc. He quickly throws together a proposal estimating that it will cost $200,000 and take six weeks to develop the course. This is the standard cost and time frame for developing training on his company’s platform. He sends the proposal over to Flight Simulators, Inc. so that he can meet their deadline.
+
+ When Jason walks into the office on Monday morning, Mateo tells him that he got reprimanded for not following the company’s process for building out a proposal and including the engineers in the process. The engineers take a look at the information presented by Flight Simulators, Inc. and realize that the company’s software won’t work with their platform. It will take six months to develop their platform to meet the needs of the organization’s software and another six months to test the software and platform integration. The cost to develop and test this software will be over a million dollars.
+
+ This project has failed before it even started. There’s no way to complete the request from Flight Simulators, Inc. without impacting the budget, quality, and timeline.
+
+- **What should have happened**
+
+ When his manager calls, Jason tells him that while he understands that Mateo wants to make the customer happy by getting them a proposal promptly, he would like to take a little more time to get the proposal right. Jason tells Mateo that he will draft up an email to Flight Simulators, Inc. and request additional time to develop an accurate and reasonable proposal. Mateo is hesitant but agrees.
+
+ On Monday morning, Jason sees that Flight Simulators, Inc. has responded to his request. They appreciate the fact that he communicated his concerns about the quick turnaround on the proposal request. They say they will give him a week to work with his team to provide an estimate for the project.
+
+ Now Jason has the time to get all of the key players involved in estimating the effort it will take to complete the project, including the cost, schedule, and resources.
+
+
+
+## Apply the project life cycle
+
+
+#### 1. Initiating the project
+
+- Discusses project goals with Flight Simulators, Inc. to gain a *clear understanding of what they are asking for*.
+
+- Once Jason has defined the project goals, he can gather the stakeholders and project team members to define *what needs to be done* to successfully create this training for Flight Simulators, Inc.
+
+- Jason identifies the skill sets required, the timeline, and the cost to develop the training. He *identifies and documents the value that this project creates for the company*.
+
+- He presents all of the information he has put together to his company’s leadership team, who approves Jason’s proposal.
+
+- Jason then submits the proposal to Flight Simulators, Inc., and they accept it.
+
+
+#### 2. Making a plan
+
+- Having a plan in place ensures that all team members and stakeholders are prepared to complete their tasks.
+
+- Jason *outlines the important deadlines and tasks* for the project to be successful. He creates a schedule to account for all resources, materials, and tasks needed to complete the project.
+
+
+#### 3. Executing and completing tasks
+
+- Jason’s project team puts his plan in motion by executing the work.
+
+- Jason monitors his team as they complete project tasks. His role as the project manager is not to complete the individual tasks but to *help break down any barriers* that would slow or stop the team from completing their tasks.
+
+- It is also Jason’s responsibility to *communicate schedule and quality expectations*. Jason uses his communication skills to keep Flight Simulators, Inc. up to date on the project status and gather feedback from them.
+
+
+#### 4. Closing the project
+
+- Jason’s team has successfully completed the training, and he delivers it to Flight Simulators, Inc. They are very pleased with how it turned out!
+
+- Before he closes this chapter, Jason and his team *discuss and document the lessons learned from the project.* What worked well, and what could work better next time?
+
+> It is your job as the project manager to make sure that your leadership truly understands the risk of not properly preparing for a project. Making **assumptions** that are incorrect can put your company at risk. Instead, taking the time to carefully initiate, plan, execute, and close your project leads to project success and good working relationships with customers.
+
+
+
+---
+
+
+
+## Initiate the project
+
+- **Define project goals**. It makes the details of your project clear so that you and your team can successfully complete the project.
+
+- **Find out what resources are available**. Resources can include people, equipment, software programs, vendors, physical space or locations, and more. Anything you need to actually complete the project is considered a resource.
+
+- **Get project approval**. You'll record all of these details in your project proposal and then get them approved by a decision maker or group of decision makers at your company so that you can move ahead with your project plans.
+
+
+
+## Make a plan
+
+> Planning is key to reducing those risks.
+
+- **Create a budget**.
+
+- **Set the schedule**.
+
+- **Establish your team**.
+
+- **Determine roles and responsibilities**.
+
+- **Plan for risk and change**. Scheduling delays, budget changes, technology and software requirements, legal issues, quality control, and access to resources are just some of the more common types of risks and changes that a project manager needs to consider.
+
+ Once you have a plan, you'll communicate all of this information to your team. That way, each member will know which tasks they'll own and what to do if they have questions or if they run into problems. You'll also communicate your plan with others who have an interest in the project success, so that they are aware of your plans and your progress as the project continues to move forward.
+
+
+
+## Executing & complete tasks
+
+- **Manage the progress**. You'll oversee your team's efforts and make sure everyone understands what's expected of them, what tasks need to be done, and how and when to complete those tasks.
+
+- **Communicate**. It's also your job to help remove any obstacles and to alert the right people if it looks like there might be a delay to the project. You'll need to communicate with your team, and anyone else involved in your project through meetings, written communications like memos, emails or internal chat tools, and other working documents like task reports.
+
+> Pro tip, **if in doubt, err on the side of overcommunication**.
+
+- **Make adjustments**. As your project progresses you'll make adjustments to the schedule, budget, and allocation of resources, clearly communicating updates all along the way.
+
+
+
+## Close the project
+
+- **Ensure all tasks have been completed**. Including any work that was added along the way. Be sure any outstanding invoices have been paid, resources are returned and accounted for, and project documentation has been submitted.
+
+- **Confirm acceptance of the project outcome**. Get confirmation that the final outcome of your project is acceptable to the people you're delivering it to. It is crucial to your project's success that the person who asked you to manage the project is satisfied with the end result.
+
+- **Reflect on lessons learned**. Take some time to reflect on what went well and maybe what didn't go so well. This reflection is usually called a retrospective, and it's a chance to note best practices and learn how to manage your project more effectively next time, even if everything went great. The notes from your retrospective are also valuable to the people or organization receiving the end result of the project. That's because they can use that information to inform decisions about their business the next time they consider a project.
+
+- **Communicate results with stakeholders**. Collect all the project documentation that you created or collected along the way, including all of your plans and reflections, and share the final results of your project with your stakeholders.
+
+> Pro tip, **stakeholders play a huge role in the development, and success of your project**.
+
+- **Celebrate completing the project**. Celebrations help people feel good about the work they've done, and think of the work as uplifting and rewarding because it truly is.
+
+
+
+---
+
+
+
+## Summary of the project life cycle
+
+
+
+
+
+### Initiate the project
+
+ In this phase, ask questions to help set the foundation for the project, such as:
+
+- Who are the stakeholders?
+- What are the client’s or customer’s goals?
+- What is the purpose and mission of the project?
+- What are the measurable objectives for the team?
+- What is the project trying to improve?
+- When does this project need to be completed?
+- What skills and resources will the project require?
+- What will the project cost? What are the benefits?
+
+
+
+### Make a plan
+
+ In this phase, make a plan to get your project from start to finish.
+
+- Create a detailed project plan. What are the major milestones? What tasks or deliverables make up each milestone?
+- Build out the schedule so you can properly manage the resources, budget, materials, and timeline. Here, you will create an itemized budget.
+
+
+
+### Execute the project
+
+ In this phase, put all of your hard work from the first two phases into action.
+
+- Monitor your project team as they complete project tasks.
+- Break down any barriers that would slow or stop the team from completing tasks.
+- Help keep the team aware of schedule and deliverable expectations.
+- Address weaknesses in your process or examine places where your team may need additional training to meet the project’s goals.
+- Adapt to changes in the project as they arise.
+
+
+
+### Close the project
+
+In this phase, close out the project.
+
+- Identify that your team has completed all of the requested outcomes.
+- Release your team so they can support other projects within the company.
+- Take time with your team to celebrate your successes!
+- Pass off all remaining deliverables and get stakeholder approval.
+- Document the lessons you and your team learned during the project.
+- Reflect on ways to improve in the future.
+
+
+
+### Key takeaway
+
+ Each phase of the project life cycle has its own significance and reason for existing. By following the project life cycle, you’re ensuring that you are:
+
+- Capturing the expectations of your customer
+- Setting your project up for success with a plan
+- Executing project tasks and addressing any issues that arise
+- Closing out your project to capture any lessons learned
+
+
+
+---
+
+
+
+# Project management methodologies
+
+ A project management methodology is a set of guiding principles and processes for owning a project through its life cycle. Project management methodologies help guide project managers throughout a project with steps to take, tasks to complete, and principles for managing the project overall.
+
+
+
+### Linear
+
+ Linear means the previous phase or task has to be completed before the next can start. Using this type of linear project management approach, completing each step in order and sticking to the agreed upon specific results and being able to deliver just what the client ordered.
+
+ Linear projects don't require many changes during development and have a clear sequential process. If you stick to the plan, it's likely you'll finish your tasks within the time schedule and all other criteria.
+
+### Iterative
+
+ Iterative means some of the phases and tasks will overlap or happen at the same time that other tasks are being worked on. Plans remain flexible and you're able to make adjustments as you go along.
+
+ Iterative projects allow for more flexibility and anticipate changes. You're able to test out parts of the project to make sure they work before the final result is delivered, and you can deliver parts of the project as they are completed, rather than waiting for the entire project to be done.
+
+
+
+
+---
+
+
+
+## Introduction of Waterfall and Agile
+
+
+### Waterfall
+
+ Waterfall as a methodology was created in the 70s, and refers to the sequential ordering of phases. You complete one at a time down the line like a waterfall starting at the top of a mountain and traveling to the bottom. Waterfall has a *linear approach*.
+
+ At first, Waterfall was used in the physical engineering disciplines like manufacturing and construction, then software emerged as an important field of engineering and Waterfall was applied to those projects as well. It still used a lot in engineering fields including product feature design and application, also known as app design. Over time, other industries like event planning and retail have adapted Waterfall phases to fit their projects.
+
+> What they all have in common, though, is that they follow an ordered set of steps that are directly linked to clearly defined expectations, resources, and goals that are not likely to change.
+
+ The phases of a Waterfall project life cycle follow the same standard project life cycle flow that initiating, planning, executing, which includes managing and completing tasks, and closing. When would you want to use a Waterfall approach to project management? Well, when the phases of the project are clearly defined or when there are tasks to complete before another can begin, or when changes to the project are very expensive to implement once it's started.
+
+ A well-thought-out traditional approach to managing a project can help you reach your desired outcome with as little pain as possible during the project implementation.
+
+ Waterfall method has some risk management practices to help avoid and deal with project changes.
+
+
+
+### Agile
+
+ Projects that use an Agile approach often have many tasks being worked on at the same time, or in various stages of completion which makes it an iterative approach.
+
+ The concepts that shaped Agile methodology began to emerge in the 90s as a response to the growing demand for faster delivery of products, mainly software applications at that time. But it wasn't officially named Agile until 2001.
+
+ The phases of an Agile project also follow the project life cycle stages we described earlier, generally speaking. However, rather than having to always go in order or wait for one phase to end before starting the next, *Agile project phases overlap and tasks are completed in iterations, which in Scrum, are called sprints*. **Scrum** is a form of Agile. **Sprints** are short chunks of time usually one to four weeks where a team works together to focus on completing specific tasks.
+
+ Agile is more of a *mindset* than just a series of steps or phases. It's concerned with building an effective, collaborative team that seeks regular feedback from the client so that they can deliver the best value as quickly as possible and adjust as changes emerge.
+
+ Projects that are best suited for an Agile approach are those where the client has an idea of what they want but doesn't have a concrete picture in mind, or they have a set of qualities they'd like to see in the end result, but aren't as concerned with exactly what it looks like. Another indicator that a project may benefit from Agile is the level of high uncertainty and risk involved with the project.
+
+
+
+### Waterfall and Agile Comparison
+
+
+
+
+
+---
+
+
+
+## Introduction to Lean and Six Sigma
+
+ Lean Six Sigma is a combination of two parent methodologies, Lean and Six Sigma. The uses for Lean Six Sigma are common in projects that have goals to save money, improve quality, and move through processes quickly. It also focuses on team collaboration which promotes a positive work environment. The idea is that when your team feels valued, motivation and productivity increases and the whole process functions more smoothly.
+
+ There are five phases in the Lean Six Sigma approach. They are *define*, *measure*, *analyze*, *improve*, and *control*, commonly known as **DMAIC**. DMAIC is a strategy for process improvement, meaning you're trying to figure out where the problems are in the current process and fix them so that everything runs more smoothly. The goal of each step is to ensure the best possible results for your project. What's great about the DMAIC process is that it can be used to solve any business problem.
+
+- **DeFine**. The first phase is to define the project goal and what it will take to meet it. This first phase is very similar to the initiation phase of traditional project management.
+- **Measure**. In order to improve processes, DMAIC focuses on *data*. Here you want to map out the current process and locate exactly where the problems are and what kind of effect the problems have on the process.
+- **Analyze**.Once you have the data and measurements, you can move on to the next phase which is analyze. You'll begin to identify gaps and issues. Data analysis is important for project managers regardless of which method you choose. From your data, you'll have a strong understanding of causes and solutions to get to the next stage, improve.
+- **Improve**. This is the point where you present your findings and get ready to start making improvements.
+- **Control**. You've gotten the process and project to a good place, and now it's time to implement it and keep it there. Controlling is all about learning from the work you did up front to put new processes and documentation in place and continue to *monitor* so the company doesn't revert back to the old, inefficient way of doing things.
+
+ Lean Six Sigma and the DMAIC approach are ideal when the project goal includes improving the current process to fix complex or high risk problems like improving sales, conversions, or eliminating a bottleneck, which is when things get backed up during a process. Following the DMAIC process prevents the likelihood of skipping important steps and increases the chances of a successful project. As a way for your team to discover best practices that your client can use going forward, it uses data and focuses on the customer or end-user to solve problems in a way that builds on previous learning so that you can discover effective permanent solutions for difficult problems.
+
+
+
+### Lean
+
+ Lean methodology is often referred to as Lean Manufacturing because it originated in the manufacturing world. The main principle in Lean methodology is the removal of waste within an operation. By optimizing process steps and eliminating waste, only value is added at each phase of production.
+
+ In the manufacturing industry, these types of waste are often attributed to issues such as:
+
+- Lack of proper documentation
+- Lack of process standards
+- Not understanding the customers’ needs
+- Lack of effective communication
+- Lack of process control
+- Inefficient process design
+- Failures of management
+
+ These same issues create waste in project management.
+
+ Implement Lean project management when you want to use limited resources, reduce waste, and streamline processes to gain maximum benefits. You can achieve this by using the pillars of the Lean **5S** quality tool. Implementing the 5S method means cleaning up and organizing the workplace to achieve the smallest amount of wasted time and material.
+
+1. **Sort**. Remove all items not needed for current production operations and leave only the bare essentials.
+2. **Set in order**. Arrange needed items so that they are easy to use. Label items so that anyone can find them or put them away.
+3. **Shine**. Keep everything in the correct place. Clean your workspace every day.
+4. **Standardize**. Perform the process in the same way every time.
+5. **Sustain**. Make a habit of maintaining correct procedures and instill this discipline in your team.
+
+ The final concept of Lean uses a **Kanban** scheduling system to manage production. The Kanban scheduling system, or Kanban board, is a visualization tool that enables you to optimize the flow of your team’s work. It gives the team a visual display to identify what needs to be done and when. The Kanban board uses cards that are moved from left to right to show progress and help your team coordinate the work.
+
+
+
+
+
+### Six Sigma
+
+ Six Sigma is a methodology used to reduce variations by ensuring that quality processes are followed every time. The term “Six Sigma” originates from statistics and generally means that items or processes should have 99.9996% quality. Use this methodology to find aspects of the product or process that are _measurable_ like time, cost, or quantity. Then inspect that measurable item and reject any products that do not meet the Six Sigma standard.
+
+ The seven key principles of Six Sigma are:
+
+1. Always focus on the customer.
+2. Identify and understand how the work gets done. Understand how work really happens.
+3. Make your processes flow smoothly.
+4. Reduce waste and concentrate on value.
+5. Stop defects by removing variation.
+6. Involve and collaborate with your team.
+7. Approach improvement activity in a systematic way.
+
+> **Lean Six Sigma**
+>
+> After both Lean and Six Sigma were put into practice, it was discovered that the two methodologies could be combined to increase benefits. The tools used in Lean, such as *Kanban* boards and *5S*, build quality in processes from the beginning. Products developed using Lean methods are then inspected or tested using *Six Sigma standards*. The products that do not meet these standards are rejected.
+
+
+
+### Popular project management approaches
+
+- **Waterfall**. In Waterfall, the criteria used to measure quality is clearly defined at the beginning of the project. The project manager is responsible for prioritizing and assigning tasks to team members.
+- **Agile**. In Agile projects, teams share responsibility for managing their own work. Some phases and tasks happen at the same time as others.
+- **Scrum** is an Agile framework that focuses on developing, delivering, and sustaining complex projects and products through collaboration, accountability, and an iterative process. Work is completed by small, cross-functional teams led by a Scrum Master and is divided into short Sprints with a set list of deliverables.
+- **Kanban** is a tool used in both Agile and Lean approaches that provides visual feedback about the status of the work in progress through the use of Kanban boards or charts.
+- **Lean** uses the 5S quality tool to eliminate eight areas of waste, save money, improve quality, and streamline processes. Lean’s principles state that you can do more with less by addressing dysfunctions that create waste. Lean implements a Kanban scheduling system to manage production.
+- **Six Sigma** involves reducing variations by ensuring that quality processes are followed every time. The Six Sigma method follows a process-improvement approach called DMAIC, which stands for define, measure, analyze, improve, and control.
+- **Lean Six Sigma**. It is often used in projects that aim to save money, improve quality, and move through processes quickly. Lean Six Sigma is also ideal for solving complex or high-risk problems.
+
+
+
+
+
+
+---
+
+### Reference
+
+[Coursera: Foundations of Project Management](https://www.coursera.org/learn/project-management-foundations)
\ No newline at end of file
diff --git a/_posts/2024-03-15-The-Rust-Programming-Language)-Getting-Started.md b/_posts/2024-03-15-The-Rust-Programming-Language)-Getting-Started.md
new file mode 100644
index 000000000..ee327514b
--- /dev/null
+++ b/_posts/2024-03-15-The-Rust-Programming-Language)-Getting-Started.md
@@ -0,0 +1,235 @@
+---
+layout: post
+author: Cascal Pascal
+tags:
+ - language
+ - rust
+ - TRPL
+---
+
+>**Course**
+>
+>[[DevRoad] Rust Developer: The Rust Programming Language](https://cascalpascal.github.io/devroad-rust-developer)
+
+>**Bookmarks**
+>
+>- [Installing rustup](#installing-rustup-on-linux-or-macos)
+>
+>- [Hello World!](#hello-world)
+>
+>- [Anatomy of a Rust program](#anatomy-of-a-rust-program)
+>
+>- [Cargo를 사용하여 프로젝트 생성하기](#cargo를-사용하여-프로젝트-생성하기)
+
+
+---
+
+
+# Installing rustup on Linux or macOS
+
+```
+# rust 설치
+$ curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh
+
+Rust is installed now. Great!
+
+# Rust가 컴파일된 출력을 하나의 파일로 합치는 데 사용하는 linker 설치
+# 일반적으로 linker가 포함된 c 컴파일러 설치
+$ sudo apt update
+$ sudo apt install build-essential
+
+# 환경 변수 설정
+$ sudo gedit ~/.zshrc
+
+# 파일에 path 추가
+export PATH="$HOME/.cargo/bin:$PATH"
+
+# .zshrc 업데이트
+$ source ~/.zshrc
+
+# 잘 적용되었는지 확인
+$ echo $PATH
+
+# Rust 설치 확인
+$ rustc --version
+```
+
+
+
+# Hello World!
+
+## Create a project directory
+
+```
+$ mkdir ~/projects
+$ cd ~/projects
+$ mkdir hello_world
+$ cd hello_world
+```
+
+## Writing and running a Rust program
+
+```rust
+// main.rs
+fn main() {
+ println!("Hello, world!");
+}
+```
+
+- main.rs 저장하고 터미널에 다음 명령어 입력
+
+```
+# 컴파일
+$ rustc main.rs
+
+# 실행파일이 생성되었는지 확인
+# ls
+
+# 실행
+$ ./main
+Hello, world!
+```
+
+
+
+
+# Anatomy of a Rust program
+
+```rust
+fn main() {
+
+}
+```
+
+위 라인은 러스트의 function을 정의한다. main이라는 특별한 함수는 모든 실행가능한 러스트 프로그램 내에서 첫번째로 실행되는 코드이다. 첫 번째 라인은 parameter가 없고 아무것도 반환하지 않는 main이라는 이름의 함수를 정의한다. 만일 parameter가 있었다면, parameter들이 ()괄호 기호 안에 위치했을 것이다.
+함수의 본체가 중괄호 기호 {}로 감싸져 있다. 러스트는 모든 함수 본체들에 이 기호가 필요하다.
+*rustfmt는 자동 포맷팅 도구이다. 만일 여러분이 러스트 프로젝트에 표준 스타일을 고수하길 원한다면, rustfmt가 코드를 특정한 스타일로 포매팅해줄 수 있다.*
+
+main 함수 내부(body)에는 다음과 같은 코드가 있다. 작성한 프로그램은 '스크린에 텍스트를 출력' 역할을 한다.
+
+```rust
+ println!("Hello, world!");
+```
+
+첫째, 러스트 스타일은 탭이 아닌 네 개의 스페이스로 들여쓰기를 한다. 둘째, ```println!```는 러스트 **매크로(macro)** 이다. ```!``` 이 보통의 함수 대신 매크로를 호출하고 있음을 의미한다. ```!``` 없이 ```println```으로 입력되었다면 함수였을 것이다. 셋째, ```"Hello, world!"```는 string이다. 우리는 이 string을 ```println!```의 인자로 넘기고, 이를 화면에 출력한다. 넷째, 라인을 끝낼 때는 세미콜론 ```;```을 작성하는데, 이는 이 표현식이 끝났고 다음 것이 시작될 준비가 되었음을 나타낸다.
+
+
+
+## Hello, Cargo!
+
+Cargo는 러스트의 시스템 및 패키지 매니저이다. Cargo는 코드를 빌드하고, 코드가 의존하고 있는 라이브러리를 다운로드해주고, 그 라이브러리들을 빌드하는 등 많은 작업을 다룬다.
+
+```
+# Cargo가 설치되어 있는지 확인
+$ cargo --version
+```
+
+
+
+# Cargo를 사용하여 프로젝트 생성하기
+
+```
+# 이전에 생성했던 프로젝트 디렉토리로 이동하여 다음 실행
+$ cargo new hello_cargo --bin
+```
+
+첫 커맨드는 *hello_cargo*라고 명명된 새로운 디렉토리와 프로젝트를 생성한다. 그리고 Cargo는 디렉토리에 이 프로젝트의 파일들을 생성한다. ```cargo new``` 에게 넘겨지는 ```--bin``` 인자로 라이브러리가 아닌 실행 가능한 어플리케이션으로 만들었다.
+
+```
+# 생성된 hello_cargo 디렉토리로 가서 파일 리스트 보기
+$ cd hello_cargo
+$ ls
+Cargo.toml src
+```
+
+*hello_cargo* 디렉토리로 가서 파일 리스트를 보면 Cargo가 우리를 위해 *Cargo.toml* 파일과 안에 *main.rs*를 담고 있는 *src* 디렉토리를 생성한 것을 볼 수 있다. 그리고 *.gitignore*와 함게 새로운 Git 저장소도 초기화되어 있다.
+
+*Cargo.toml*을 텍스트 에디터로 열어보자.
+
+```
+[package]
+name = "hello_cargo"
+version = "0.1.0"
+edition = "2021"
+
+# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
+
+[dependencies]
+```
+
+이 파일은 Cargo의 환경설정 포맷을 나타내고 있으며, TOML(Tom's Obvious, Minimal Language) 포맷으로 작성되었다.
+
+첫 라인 ```[package]``` 는 패키지 환경설정 섹션의 시작지점이다. 우리는 이 파일에 더 많은 정보를 추가하기 위해, 다른 섹션들을 추가할 것이다. 그 다음 세 라인들은 Cargo가 당신의 프로그램을 컴파일하기 위해 필요로 하는 정보에 대한 설정을 합니다.: 이름, 버전, 에디션이다. Cargo는 당신의 환경으로부터 당신의 이름과 이메일 정보를 얻어내므로, 만일 정보가 정확하지 않다면, 지금 수정하고 파일을 저장해야 한다. ```[dependencies]``` 는 당신의 프로젝트의 의존성들의 리스트를 적을 수 있는 섹션의 시작점이다. 러스트에서는 코드의 패키지를 **크레이트(crate)** 라고 부른다. 여러 개의 크레이트들로 구성된 복잡한 프로젝트와 함께라면 그냥```rustc```를 이용하는 것보다 Cargo를 사용하는 것이 빌드를 조직화하도록 하는 것이 훨씬 쉽다.
+
+*src/main.rs*를 텍스트 에디터로 열어보자.
+
+```rust
+fn main() {
+ println!("Hello, world!");
+}
+```
+
+Cargo는 우리가 이전에 hello_world 디렉토리에 작성했던 것과 똑같이 "Hello, world!" 프로그램을 작성했다. 우리의 이전 프로젝트와 CArgo가 만든 프로젝트 간의 차이점은 Cargo가 코드를 src 디렉토리 안에 위치시킨다는 점, 최상위 디렉토리에 Cargo.toml 환경 파일을 가진다는 점이다.
+
+Cargo는 여러분의 소스 파일들이 src 디렉토리 안에 있을 것으로 예상한다. 최상위 프로젝트는 디렉토리는 그저 README 파일들, 라이센스 정보, 환경 파일들, 그리고 여러분의 코드와는 관련이 없는 다른 것들 뿐이다. Cargo를 이용하는 것은 여러분이 프로젝트를 조직화하는 데에 도움을 준다.
+> There’s a place for everything, and everything is in its place.
+
+만일 당신이 Hello, world! 프로젝트에서 했던 것처럼 Cargo를 사용하지 않은 프로젝트를 시작했다면, Cargo를 사용한 프로젝트로 이를 바꿀 수 있다.
+
+
+
+## Cargo 프로젝트를 빌드하고 실행하기
+
+이제 Cargo로 만든 "Hello, world!" 프로젝트를 빌드하고 실행할 때의 차이점을 살펴보자.
+
+```
+# hello_cargo 디렉토리에서 프로젝트를 빌드한다.
+$ cargo build
+ Compiling hello_cargo v0.1.0 (/home/pascal/profile/Golden/Course/Rust/The Rust Programming Language(2nd edit)/projects/hello_cargo)
+ Finished dev [unoptimized + debuginfo] target(s) in 0.13s
+```
+
+이 커맨드는 당신의 현재 디렉토리 대신 *target/debug/hello_cargo*에 실행 파일을 생성한다.
+
+```
+# 생성한 실행 파일 실행
+$ ./target/debug/hello_cargo
+Hello, world!
+```
+
+처음으로 cargo build를 실행하면 Cargo가 최상위 디렉토리에 *Cargo.lock*이라는 새로운 파일을 생성한다. 이 프로젝트는 어떠한 의존성도 가지고 있지 않으므로, 파일의 내용이 얼마 없다. 우리가 이 파일을 손수 변경할 필요는 없다, Cargo가 우리를 위해 이 파일의 내용을 관리한다.
+
+```
+# 한번의 커맨드로 코드를 컴파일하고 결과 실행파일을 실행 수 있다.
+$ cargo run
+ Finished dev [unoptimized + debuginfo] target(s) in 0.00s
+ Running `target/debug/hello_cargo`
+Hello, world!
+```
+
+```cargo check```는 코드가 컴파일 되는지 빠르게 확인해주지만 실행파일을 생성하지는 않는다.
+
+```
+$ cargo check
+ Checking hello_cargo v0.1.0
+ Finished dev [unoptimized + debuginfo] target(s) in 0.02s
+```
+
+실행파일을 생성하는 단계를 생략하기 때문에 ```cargo check```가 ```cargo build```에 비해 훨씬 빠르다. 만일 지속적으로 작업물을 검사한다면 ```cargo check```를 이용하여 검사 과정을 빠르게 마무리할 수 있다. 이후 실행 파일을 사용할 준비가 되었을 때 ```cargo build```를 실행한다.
+
+
+
+## 릴리즈 빌드
+
+```
+$ cargo build --release
+```
+
+당신의 프로젝트가 릴리즈를 위한 준비를 마쳤다면, 위의 커맨드를 사용하여 최적화와 함께 이를 컴파일할 수 있다. 이 커맨드는 *target/debug* 대신 *target/release*에 실행파일을 생성할 것이다. 최적화는 당신의 러스트 코드를 더 빠르게 만들어주지만, 최적화를 켜는 것은 당신의 프로그램을 컴파일하는데 드는 시간을 길게 할 것이다: 이것이 바로 두 개의 서로 다른 프로파일이 있는 이유이다. 하나는 당신이 빠르게, 자주 다시 빌드하기 위한 개발용, 그리고 다른 하나는 반복적으로 다시 빌드를 할 필요 없이 가능한 빠르게 실행되어 당신이 사용자들에게 제공할 최종 프로그램을 빌드하기 위한 용도이다. 만약 당신이 코드의 실행 시간을 벤치마킹 중이라면, ```cargo build --release```를 실행하고 *target/release*의 실행파일을 가지고 벤치마킹하고 있음을 상기해야 한다.
+
+
+
+---
+## Reference
+[https://doc.rust-lang.org/book/ch01-00-getting-started.html](https://doc.rust-lang.org/book/ch01-00-getting-started.html)
+[https://rinthel.github.io/rust-lang-book-ko/ch01-00-getting-started.html](https://rinthel.github.io/rust-lang-book-ko/ch01-00-getting-started.html)
diff --git a/_posts/2024-03-15-[DevRoad]-Rust-Developer.md b/_posts/2024-03-15-[DevRoad]-Rust-Developer.md
new file mode 100644
index 000000000..eaefed7b4
--- /dev/null
+++ b/_posts/2024-03-15-[DevRoad]-Rust-Developer.md
@@ -0,0 +1,61 @@
+---
+layout: post
+author: Cascal Pascal
+tags:
+ - devroad
+ - language
+ - rust
+---
+
+# Course
+
+[Rust Developer Roadmap](https://roadmap.sh/rust)
+
+---
+
+
+
+# Basic
+
+## [The Rust Programming Language](https://doc.rust-lang.org/book/title-page.html)
+
+[Ch 01. Getting Started](https://cascalpascal.github.io/the-rust-programming-language-getting-started)
+
+Ch 02. Programming a Guessing Game
+
+Ch 03. Common Programming Concepts
+
+Ch 04. Understanding Ownership
+
+Ch 05. Using Structs to Structure Related Data
+
+Ch 06. Enums and Pattern Matching
+
+Ch 07. Managing Growing Projects with Packages, Crates, and Modules
+
+Ch 08. Common Collections
+
+Ch 09. Error Handling
+
+Ch 10. Generic Types, Traits, and Lifetimes
+
+Ch 11. Writing Automated Tests
+
+Ch 12. An I/O Project: Building a Command Line Program
+
+Ch 13. Functional Language Features: Iterators and Closures
+
+Ch 14. More About Cargo and Crates.io
+
+Ch 15. Smart Pointers
+
+Ch 16. Fearless Concurrency
+
+Ch 17. Object-Oriented Programming Features of Rust
+
+Ch 18. Patterns and Matching
+
+Ch 19. Advanced Features
+
+Ch 20. Final Project: Building a Multithreaded Web Server
+
diff --git a/_posts/2024-03-20-chobo-python)-Control-Structures.md b/_posts/2024-03-20-chobo-python)-Control-Structures.md
new file mode 100644
index 000000000..c3e34163e
--- /dev/null
+++ b/_posts/2024-03-20-chobo-python)-Control-Structures.md
@@ -0,0 +1,593 @@
+---
+layout: post
+author: Cascal Pascal
+tags:
+ - language
+ - python
+ - chobo python
+---
+
+>**Course**
+>
+>[[DevRoad] Python Developer: Chobo-Python](https://cascalpascal.github.io/devroad-python-developer)
+
+>**Bookmarks**
+>
+>- [while 반복문](#while-반복문)
+>- [조건문](#조건문)
+>- [and/or 연산자](#and/or-연산자)
+>- [for 반복문](#for-반복문)
+>- [match-case](#match-case)
+>- [for-else와 while-else](#for-else와-while-else)
+
+---
+
+
+
+
+# while 반복문
+
+## while 문
+
+```1, 2, 3, …, 8, 9, 10```를 다음과 같이 while 반복문을 이용하여 출력할 수 있다.
+
+```python
+num=1
+while num<=10:
+ print(num)
+ num=num+1
+```
+
+
+### 2.1.1 연습문제
+
+Q) ```input()```으로 사용자로부터 정수 한 개를 입력 받고, 그 숫자를 숫자 크기만큼 반복해서 출력하는 while문을 사용한 파이썬 스크립트를 작성하시오.
+
+A)
+```python
+num = int(input())
+
+i = 0
+while i < num:
+ print('', num)
+ i += 1
+```
+
+### 2.2.2 연습문제
+
+Q) 정수 한 개를 입력 받아, 1부터 입력 받은 수까지 각각에 대해 제곱을 구해 프린트하는 while문을 사용한 프로그램을 작성하시오.
+
+A)
+```python
+num = int(input())
+
+i = 1
+while i <= num:
+ print('',i**2)
+ i += 1
+```
+
+### 2.2.3 연습문제
+
+Q) 고무 공을 100미터 높이에서 떨어뜨리는데, 이 공은 땅에 닿을 때마다 원래 높이의 3/5만큼 튀어오른다. 공이 열 번 튈 동안, 그때마다 공의 높이를 계산하시오.
+
+A1)
+
+```python
+num = 100
+jump = 3/5
+
+i = 1
+while i <= 10:
+ print(i, num*jump**i)
+ i = i + 1
+```
+
+출력:
+
+```
+1 60.0
+2 36.0
+3 21.599999999999998
+4 12.959999999999999
+5 7.775999999999998
+6 4.665599999999999
+7 2.799359999999999
+8 1.6796159999999993
+9 1.0077695999999996
+10 0.6046617599999997
+```
+
+다음과 같이 ```round()```함수를 사용하여 소수점 아래 3자리까지 출력할 수 있다.
+
+```python
+num = 100
+jump = 3/5
+
+i = 1
+
+while i <= 10:
+ answer = num*jump**i
+ print(i, round(answer, 3))
+ i = i + 1
+```
+
+출력:
+
+```
+1 60.0
+2 36.0
+3 21.6
+4 12.96
+5 7.776
+6 4.666
+7 2.799
+8 1.68
+9 1.008
+10 0.605
+```
+
+### 2.2.4 연습문제
+
+Q) 다음 코드의 출력값을 예상하시오.
+```python
+number = 358
+
+rem = rev = 0
+while number >= 1:
+ rem = number % 10
+ rev = rev * 10 + rem
+ number = number // 10
+
+print(rev)
+```
+
+A)
+
+while문 첫 번째 바퀴: rem = 8, rev = 8, number = 35
+
+while문 두 번째 바퀴: rem = 5, rev = 8x10+5 = 85, number = 3
+
+while문 세 번째 바퀴: rem = 3, rev = 853, number = 0
+
+while문 종료.
+
+따라서, 답은 853.
+
+
+
+---
+
+# 조건문
+
+## 파이썬의 if와 else
+
+```python
+a = 1234 * 4
+b = 13456 / 2
+
+if a > b: # 만약 a가 b보다 크면
+ print('a') # 'a'를 출력한다.
+else: # 그렇지 않으면
+ print('b') # 'b'를 출력한다.
+```
+
+## elif
+
+```elif```를 사용해 여러 개의 조건을 작성할 수 있다.
+
+```python
+c = 15 * 5
+d = 15 + 15 + 15 + 15 + 15
+
+if c > d:
+ print('c is greater than d')
+elif c == d:
+ print('c is equal to d')
+elif c < d:
+ print('c is less than d')
+else:
+ print('I don\'t know')
+```
+
+## 나머지 계산을 이용하는 if문
+
+```python
+a = 48
+b = 4
+
+if a % b == 0:
+ print(f'{a}는 {b}로 나누어 떨어집니다.')
+elif a % b != 0:
+ print(f'{a}는 {b}로 나누어 떨어지지 않습니다.')
+```
+
+## 조건에 따라 반복문 중단하기
+
+```break```를 사용하면 반복문에서 빠져나올 수 있다.
+
+```python
+max = 10
+
+while True:
+ num = int(input())
+ if num > max:
+ print(num, 'is too big!')
+ break
+```
+
+### 2.2.1 연습문제
+
+Q) ```input()```을 사용해 사용자로부터 입력 받은 값을 한글로 출력하는 프로그램을 작성하시오. 단, 사용자는 1 이상 3 이하의 정수 중 하나를 입력한다고 가정한다.
+
+A)
+```python
+num = int(input())
+
+if num == 1:
+ print('일')
+elif num == 2:
+ print('이')
+elif num == 3:
+ print('삼')
+else:
+ print('오류')
+```
+
+### 2.2.2 연습문제
+
+Q) 백만 이상의 숫자를 입력받았을 때 1~10만자리 숫자를 생략하고 ‘M’을 붙여서 출력하게 코드를 작성하시오
+
+A)
+
+```python
+num = int(input())
+result = str(num)
+
+if num >= 1000000:
+ result = str(num // 1000000) + 'M'
+elif num >= 0:
+ pass
+
+print(result)
+```
+
+
+### 2.2.3 연습문제
+
+Q) ```input()```으로 사용자로부터 입력 받은 정수를 계속 더해가다가, 음수가 입력되면 중단하고 그 전까지 계산한 값을 출력하는 스크립트를 작성하시오.
+
+A)
+```python
+value = 0
+
+while True:
+ num = int(input())
+ if num >= 0:
+ value = num + value
+ else:
+ print(value)
+ break
+```
+
+### 2.2.5 연습문제
+
+Q) 그레고리력의 윤년 규칙은 다음과 같다. 이 규칙에 따라, 연도를 입력 받아 윤년인지 아닌지 출력하는 스크립트를 작성하시오.
+
+
+
+A)
+
+```python
+year = int(input())
+leap = None
+
+if year % 4 == 0:
+ if year % 100 == 0:
+ if year % 400 == 0:
+ leap = True
+ else:
+ leap = False
+ else:
+ leap = True
+else:
+ leap = False
+
+if leap == True:
+ print(f'출력 연도 {year}년은 윤년입니다.')
+else:
+ print(f'출력 연도 {year}년은 평년입니다.')
+```
+
+
+
+
+# and/or 연산자
+## if 문에 and/or를 사용
+
+```python
+s = 'banana'
+
+if 'a' in s:
+ if 'b' in 'banana':
+ print('banana에는 a도 있고 b도 있어요!')
+```
+
+위의 스크립트를 and를 사용하여 다음과 같이 줄일 수 있다.
+
+```python
+if 'a' in s and 'b' in s:
+ print('banana에는 a도 있고 b도 있어요!')
+```
+
+## if 문 없이 and/or만 사용
+
+```
+>>> 'a' in s
+True
+>>> 'b' in s
+True
+>>> 'c' in s
+False
+```
+
+위의 bool 값을 다음과 같이 변수에 넣을 수 있다.
+
+```
+>>> a_in_s = 'a' in s
+>>> a_in_s
+True
+```
+
+## and/or 연산 순서
+
+파이썬에서는 and/or의 왼쪽 항을 먼저 계산하고, 오른쪽 항은 필요할 때만 계산한다.
+
+예를 들어, 아래 스크립트에선 0인 b 값을 분모로 하여 나눗셈을 시도하기 때문에 오류가 발생한다.
+
+```
+>>> a = 3
+>>> b = 0
+>>> a / b
+Traceback (most recent call last): File "", line 1, in ZeroDivisionError: division by zero
+```
+
+하지만 이 나눗셈을 아래처럼 and의 오른쪽 항에 넣으면 오류가 생기지 않는다. 이는 파이썬이 왼쪽 항에서 이미 결과가 나오므로 오른쪽 항은 계산하지 않고 넘어가기 때문이다.
+
+```
+>>> (a * b) > 0 and (a / b) > 0
+False
+```
+
+### 2.2.7 연습문제
+
+Q) 미국과 달리, 우리나라에서는 보통 1955~1963년생을 ‘베이비붐 세대’로 본다. 사용자가 한국인인지에 따라 세대를 구분할 수 있게 스크립트를 작성하여라. 베이비붐 세대는 1963년생까지는 미국인과 한국인 모두 베이비붐 세대이므로 국적을 묻지 않아도 되고, 1964년생이면서 미국인일 경우 베이비붐 세대이다.
+
+A)
+```python
+year = int(input('What year were you born? '))
+gen = None
+
+if year <= 1924:
+ gen = 'the Greatest Generation'
+elif year <= 1945:
+ gen = 'the Silent Generation'
+elif year <= 1963 or (year<= 1964 and input("Are you American?(y/n)").lower()[0] == 'y'):
+ gen = 'a baby boomer'
+
+print(f"You're {gen}.")
+```
+
+ > ```lower()```함수를 사용하여 영문 대문자를 소문자로 바꾼 값을 돌려준다.
+
+
+
+
+
+# for 반복문
+
+for문은 sequence를 이용해서 원하는 명령을 반복할 때 쓰인다. for문을 이용하여 list의 elements와 문자열 길이를 출력하는 스크립트를 아래와 같이 작성하였다.
+
+```
+>>> nickname = ['Mr.Frog', 'Froggy', 'Caspal', 'Lizardus']
+>>> for x in nickname:
+... print(x, len(x))
+```
+
+ 출력은 아래와 같다.
+
+```
+Mr.Frog 7
+Froggy 6
+Caspal 6
+Lizardus 8
+```
+
+## range()
+
+```range()```는 괄호 내의 인자의 범위 안의 정수들을 만들어준다.
+
+```
+>>> list(range(2,7))
+[2, 3, 4, 5, 6]
+```
+
+for문에 ```range()```를 다음과 같이 사용하면 코드를 줄일 수 있다.
+
+```
+>>> a = [4, 5, 6, 7]
+>>> for i in a:
+... print(i)
+...
+```
+
+위의 리스트를 사용한 예제는 아래의 ```range()```를 사용한 예제와 출력이 같다.
+
+```
+>>> for i in range(4, 8):
+... print(i)
+...
+```
+
+### 2.3.1 연습문제
+
+Q) 사용자로부터 정수를 한 개 입력 받아, 그 숫자의 크기만큼 그 숫자를 반복해서 출력하는 파이썬 스크립트를 작성하시오. for문을 사용하시오.
+
+A)
+```python
+num = int(input())
+
+for i in range(num):
+ print('',num)
+```
+
+### 2.3.2 연습문제
+
+Q) 사용자로부터 정수를 한 개 입력 받아 1부터 입력 받은 수까지 각각에 대한 제곱을 구해 출력하는 스크립트를 작성하시오.
+
+A)
+```python
+num = int(input())
+
+for i in range(1, num + 1):
+ print(i, i**2)
+```
+
+### 2.3.3 연습문제
+
+Q) 프로그램은 먼저 최소와 최대의 안전 온도를 나타내는 두 개의 정수를 읽는다. 그 다음에, 장치가 제공하는 온도(정수)를 계속 읽는다. 화학 반응이 완료되면 장치는 끝을 알리는 `-999`를 보낸다. 기록된 온도가 올바른 범위에 있을 경우(최솟값 또는 최댓값과 같아도 된다) `Nothing to report`를 표시해야 한다. 하지만 온도가 위험 수준에 도달하면 `Alert!`를 표시하고 온도 측정을 중단한다(장치가 온도값을 계속 보내더라도).
+
+A)
+```split()```을 사용하여 문자열을 분할한 리스트를 얻을 수 있다. ```input()```로 문자열을 입력받을 때에도, 문자열을 분할했을 때 리스트 원소가 몇 개가 될지 미리 정해져 있다면 ```split()```으로 얻은 결과를 바로 변수에 할당할 수 있다. 원소 개수를 미리 알 수 없다면 for문을 이용해야 한다.
+
+```python
+temp = input().split()
+
+min = int(temp[0])
+max = int(temp[1])
+
+rec = int(input())
+
+while rec != -999:
+ if rec in range(min, max):
+ print('Nothing to report')
+ rec = int(input())
+ else:
+ print('Alert!')
+ break
+```
+
+출력:
+```
+30 60
+31
+Nothing to report
+32
+Nothing to report
+33
+Nothing to report
+65
+Alert!
+```
+
+
+
+
+
+# match-case
+
+## 홀수, 짝수 판별
+
+```python
+for n in range(1, 6):
+ match n % 2:
+ case 0:
+ print(f"{n} is even.")
+ case 1:
+ print(f"{n} is odd.")
+```
+
+위의 코드는 1부터 6까지 정수에 대하여, 각각이 홀수인지 짝수인지 출력하는 스크립트이다. ```n```을 2로 나눈 나머지가 0이면 짝수, 1이면 홀수라고 출력한다.
+
+```
+1 is odd.
+2 is even.
+3 is odd.
+4 is even.
+5 is odd.
+```
+
+## FizzBuzz
+
+피즈 버즈 플레이어는 자기 차례가 되면 숫자를 증가시키되, 3으로 나누어 떨어지는 숫자는 ‘피즈(Fizz)’로, 5로 나누어 떨어지는 숫자는 ‘버즈(Buzz)’로 바꾼다.
+
+```python
+for n in range(1, 16):
+ match (n % 3, n % 5):
+ case (0, 0):
+ print("FizzBuzz")
+ case (0, _):
+ print("Fizz")
+ case (_, 0):
+ print("Buzz")
+ case _:
+ print(n)
+```
+
+```match()```안에 ```n % 3```과 ```n % 5```는 두 개의 식이 있고, 그 아래의 ```case```에서 각각을 평가한다. ```case(0, 0)```은 3으로 나눈 나머지도 0이고, 5로 나눈 나머지도 0인 경우를 가리킨다. 따라서 'FizzBuzz'를 출력한다. ```case_```에서 밑줄(```_```)은 아무 값이나 상관없다는 뜻이므로, 3으로도, 5로도 나누어 떨어지지 않는 경우를 가리킨다. ```case(0, _)```은 3으로 나눈 나머지가 0인 경우를 말하며 'Fizz'를 출력한다. ```case(_, 0)```은 5으로 나눈 나머지가 0인 경우를 말하며 'Buzz'를 출력한다. 출력 결과는 다음과 같다.
+
+```
+1
+2
+Fizz
+4
+Buzz
+Fizz
+7
+8
+Fizz
+Buzz
+11
+Fizz
+13
+14
+FizzBuzz
+```
+
+
+
+
+
+# for-else와 while-else
+
+## for-else
+
+```python
+for x in [1, 2, 3]:
+ print(x)
+ if input() == 'stop':
+ break
+else:
+ print("리스트의 원소를 모두 출력했어요")
+```
+
+## while-else
+
+```python
+countdown = 5
+
+while countdown > 0:
+ print(countdown)
+ countdown -= 1
+ if input() == '중단':
+ break
+else:
+ print('발사!')
+```
+
+
+
+---
+
+## Reference
+[https://wikidocs.net/55](https://wikidocs.net/55)
diff --git a/_posts/2024-03-26-scrimba)-CSS.md b/_posts/2024-03-26-scrimba)-CSS.md
new file mode 100644
index 000000000..1cc1c28db
--- /dev/null
+++ b/_posts/2024-03-26-scrimba)-CSS.md
@@ -0,0 +1,638 @@
+---
+layout: post
+author: Cascal Pascal
+tags:
+ - devroad
+ - language
+ - css
+---
+
+>**Course**
+>
+>[[DevRoad] Full Stack Developer](https://cascalpascal.github.io/devroad-full-stack-developer)
+
+>**Bookmarks**
+>
+>- [CSS syntax](#css-syntax)
+>- [CSS classes](#css-classes)
+>- [Margins](#margins)
+>- [Padding](#padding)
+>- [Border](#border)
+>- [Flexbox](#flexbox)
+
+---
+
+
+
+# CSS syntax
+
+CSS 는 page의 특정 element(HTML의 특정 element)를 선택하여 스타일링한다.
+
+![[Pasted image 20240326101409.png]]
+
+
+
+```css
+/* styles.css*/
+
+body {
+ background: green; /* red, blue, yellow, hexcode etc. */
+ color: white; /* red, blue, yellow, etc */
+ font-size: 20px; /* 0px - 100px and beyond */
+ font-weight: normal; /* lighter, normal, bold */
+ text-align: center; /* left, center or right */
+ margin-top: 8px; /* From 0px and upwards */
+}
+```
+
+![[Pasted image 20240326101933.png]](https://github.com/cascalpascal/cascalpascal.github.io/blob/master/assets/images/Course/Pasted%20image%2020240326101933.png?raw=true)
+
+
+## Link to the CSS file
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+```
+
+![[Pasted image 20240326103239.png]](https://github.com/cascalpascal/cascalpascal.github.io/blob/master/assets/images/Course/Pasted%20image%2020240326103239.png?raw=true)
+
+
+
+```css
+/* styles.css*/
+
+img {
+ width: 300px;
+}
+
+input {
+ width: 400px;
+}
+```
+
+![[Pasted image 20240326103558.png]](https://github.com/cascalpascal/cascalpascal.github.io/blob/master/assets/images/Course/Pasted%20image%2020240326103558.png?raw=true)
+
+
+
+## Inline & block elements
+
+Elements를 가로로 나열하고 싶으면 inline 사용.
+
+![[Pasted image 20240326103957.png]](https://github.com/cascalpascal/cascalpascal.github.io/blob/master/assets/images/Course/Pasted%20image%2020240326103957.png?raw=true)
+
+Elements를 세로로 나열하고 싶으면 block 사용.
+
+![[Pasted image 20240326104118.png]](https://github.com/cascalpascal/cascalpascal.github.io/blob/master/assets/images/Course/Pasted%20image%2020240326104118.png?raw=true)
+
+
+
+![[Pasted image 20240326103844.png]](https://github.com/cascalpascal/cascalpascal.github.io/blob/master/assets/images/Course/Pasted%20image%2020240326103844.png?raw=true)
+
+```css
+/* styles.css*/
+
+img {
+ display: block;
+ width: 300px;
+}
+
+input {
+ display: block;
+ width: 400px;
+}
+```
+
+![[Pasted image 20240326104747.png]](https://github.com/cascalpascal/cascalpascal.github.io/blob/master/assets/images/Course/Pasted%20image%2020240326104747.png?raw=true)
+
+
+
+## Margin top
+
+```css
+/* styles.css*/
+
+img {
+ margin-top: 100px;
+ display: block;
+ width: 300px;
+}
+
+input {
+ display: block;
+ width: 400px;
+}
+```
+
+![[Pasted image 20240326105019.png]](https://github.com/cascalpascal/cascalpascal.github.io/blob/master/assets/images/Course/Pasted%20image%2020240326105019.png?raw=true)
+
+
+
+# CSS classes
+
+### div에 class 속성을 주고 변수 할당하기
+
+```html
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+```
+
+```css
+/* styles.css*/
+
+.main {
+ margin-top: 100px;
+}
+
+.logo-img {
+ display: block;
+ width: 300px;
+}
+
+.search-input {
+ display: block;
+ width: 400px;
+}
+```
+
+![[Pasted image 20240326105019.png]](https://github.com/cascalpascal/cascalpascal.github.io/blob/master/assets/images/Course/Pasted%20image%2020240326105019.png?raw=true)
+
+
+
+# Margins
+
+margin-top, margin-left, margin-right, margin-bottom 에 값을 지정해서 공백 크기를 조절할 수 있다. 단, 위아래 연속적인 a, b element가 있다고 가정할 때, a element의 margin-bottom과 b element의 margin-top은 충돌하여 둘 중 더 큰 margin만 적용된다.
+
+```css
+/* styles.css*/
+
+.main {
+ margin-top: 100px;
+}
+
+.logo-img {
+ display: block;
+ width: 300px;
+ margin-bottom: 20px;
+}
+
+.search-input {
+ display: block;
+ width: 400px;
+}
+```
+
+![[Pasted image 20240326112043.png]](https://github.com/cascalpascal/cascalpascal.github.io/blob/master/assets/images/Course/Pasted%20image%2020240326112043.png?raw=true)
+
+
+## Centering elements
+
+Element를 중앙 정렬 시키기 위해선 ```display: block```으로 수평의 공간을 모두 차지하고 ```width```를 가지고 있어야 한다. 그리고 ```margin left/right: auto``` 로 하여 왼쪽, 오른쪽의 모든 available한 공간을 공백으로 두어 element를 중앙에 정렬할 수 있다.
+
+```css
+/* styles.css*/
+
+.main {
+ margin-top: 100px;
+}
+
+.logo-img {
+ display: block;
+ width: 300px;
+ margin-bottom: 20px;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+.search-input {
+ display: block;
+ width: 400px;
+ margin-left: auto;
+ margin-right: auto;
+}
+```
+
+![[Pasted image 20240326112917.png]](https://github.com/cascalpascal/cascalpascal.github.io/blob/master/assets/images/Course/Pasted%20image%2020240326112917.png?raw=true)
+
+
+
+# Padding
+
+padding을 통해 element 내에 작성한 글자에 상하좌우 공백을 줄 수 있다. margin과 비슷하지만 margin은 전체 페이지와 element간의 공백을 다루고 padding은 element 내에서 다룬다.
+
+### Padding example
+
+```css
+.card {
+ color: #222222;
+ background: lightgray;
+ width: 300px;
+ margin-top: 50px;
+ margin-left: auto;
+ margin-right: auto;
+
+ padding-top: 100px;
+ padding-right: 100px;
+}
+```
+
+![[Pasted image 20240326113648.png]](https://github.com/cascalpascal/cascalpascal.github.io/blob/master/assets/images/Course/Pasted%20image%2020240326113648.png?raw=true)
+
+
+
+# Border
+
+```css
+.card {
+ color: #222222;
+ background: lightgray;
+ width: 300px;
+ margin-top: 50px;
+ margin-left: auto;
+ margin-right: auto;
+
+ border: 8px solid blue;
+
+ padding-top: 20px;
+ padding-right: 20px;
+ padding-bottom: 20px;
+ padding-left: 20px;
+}
+```
+
+![[Pasted image 20240326113952.png]](https://github.com/cascalpascal/cascalpascal.github.io/blob/master/assets/images/Course/Pasted%20image%2020240326113952.png?raw=true)
+
+border 모서리를 둥글게 하고 싶다면 다음을 추가한다.
+
+```css
+border-radius: 30px;
+```
+
+![[Pasted image 20240326114116.png]](https://github.com/cascalpascal/cascalpascal.github.io/blob/master/assets/images/Course/Pasted%20image%2020240326114116.png?raw=true)
+
+
+
+### button 꾸미기
+
+```css
+button {
+ color: #0f1419;
+ border: 1px solid #cfd9de;
+ border-radius: 20px;
+ background: white;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ padding-left: 20px;
+ padding-right: 20px;
+ font-weight: bold;
+}
+```
+
+![[Pasted image 20240326114956.png]](https://github.com/cascalpascal/cascalpascal.github.io/blob/master/assets/images/Course/Pasted%20image%2020240326114956.png?raw=true)
+
+
+
+### Google 따라하기
+
+```css
+/* styles.css*/
+
+.main {
+ margin-top: 100px;
+}
+
+.logo-img {
+ display: block;
+ width: 300px;
+ margin-bottom: 20px;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+.search-input {
+ display: block;
+ width: 400px;
+ margin-left: auto;
+ margin-right: auto;
+ line-height: 24px;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ padding-left: 30px;
+ padding-right: 30px;
+ border: 1px solid #dfe1e5;
+ border-radius: 24px;
+}
+```
+
+![[Pasted image 20240326115551.png]](https://github.com/cascalpascal/cascalpascal.github.io/blob/master/assets/images/Course/Pasted%20image%2020240326115551.png?raw=true)
+
+
+
+**button 추가**
+
+```html
+
+
+
+
+
+
+
+
Allow me to provide more details about myself here.
+
+
+
Here are some of my favorite nicknames. Call me whatever you like!
+
+
Mr.Frog
+
Froggy
+
Caspal
+
Lizardus
+
+
+
+
+
+```
+
+```css
+/*style.css*/
+
+.main{
+ margin-top: 30px;
+}
+
+.intro{
+ display: block;
+ width: 550px;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+.selfie{
+ display: block;
+ width: 550px;
+ margin-bottom: 10px;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+.btn-wrapper{
+ display: block;
+ width: 550px;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+.btn{
+ color: #0f1419;
+ font-weight: bold;
+ background-color: white;
+ border: 1px solid #0f1419;
+ border-radius: 8px;
+
+ padding-top: 2px;
+ padding-bottom: 2px;
+ padding-left: 6px;
+ padding-right: 6px;
+
+}
+
+.profile{
+ color: green;
+ display: block;
+ width: 550px;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+.nicknamelist{
+ display: block;
+ margin-left: auto;
+ margin-right: auto;
+
+ background: palegreen;
+ width: 550px;
+ padding-top: 10px;
+ padding-bottom: 10px;
+ padding-left: 10px;
+ padding-right: 10px;
+
+ border: 5px solid green;
+ border-radius: 20px;
+}
+```
+
+![[Pasted image 20240402113339.png]](https://github.com/cascalpascal/cascalpascal.github.io/blob/master/assets/images/Course/Pasted%20image%2020240402113339.png?raw=true)
+
+
+
+
+
+---
+
+### Reference
+
+[Scrimba: Build a Google.com clone](https://scrimba.com/playlist/p5aGYHD)
\ No newline at end of file
diff --git a/_posts/2024-03-28-Computer-Components.md b/_posts/2024-03-28-Computer-Components.md
new file mode 100644
index 000000000..8d8144561
--- /dev/null
+++ b/_posts/2024-03-28-Computer-Components.md
@@ -0,0 +1,98 @@
+---
+layout: post
+author: Cascal Pascal
+tags:
+ - major
+ - computer-architecture
+ - tech-interview
+
+---
+
+>**Course**
+>
+>[[Major] Computer Architecture](https://cascalpascal.github.io/major-tech-interview)
+
+>**Bookmarks**
+>
+>- [Computer Components](#computer-components)
+>
+>- [Hardware](#hardware)
+>
+>- [Software](#software)
+
+
+---
+
+
+
+# Computer Components
+- Hardware: Mechanical devices that make up a computer
+- Software: A set of instructions that directs and controls the operation of hardware
+
+A computer basically consists of **reading**, **processing**, and then **writing**.
+
+(READ → PROCESS → WRITE)
+
+During this process, it constantly communicates with main memory (RAM). At this time, if the operating system is 64 bit, the CPU reads data from RAM 64 bits at a time.
+
+
+
+## Hardware
+- Center Processing Unit
+- Memory device: RAM, HDD
+- Input/Output device: mouse, printer
+
+![[Pasted image 20240328090429.png]](https://github.com/cascalpascal/cascalpascal.github.io/blob/master/assets/images/Course/Pasted%20image%2020240328090429.png?raw=true)
+
+Hardware consists of a CPU, memory, and input/output devices. They are connected by a **system bus**, which carries data and command control signals to each device.
+
+
+
+### Center Processing Unit
+In humans, this is the part of the brain. It reads and processes program insructions and data from main memory and controls the execution order of instructions.
+
+It consists of an **arithmatic logic unit(ALU)** that is responsible for comparision and calculation, a **control unit** that is responsible for interpreting and executing instructions, and a **resgister** that is a fast data storage location.
+
+In small computers such as personal computers, the cpu is also called a **microprocessor**.
+
+
+
+### Memory Device
+Storage device for storing intermediate results of programs, data, and operations.
+
+It is divided into main memory and secondary memory, and includes both RAM and ROM. It temporarily stores data needed for programs such as running programs.
+
+Secondary memory refers to devices like hard disks, and although it is slower than main memory, it has the advantage of permanently storing a lot of data.
+
+
+
+### Input/Output device
+An input device is a device that inputs data into the computer (keyboard, mouse, etc.).
+
+An output device is a device that expresses externally from a computer (printer, moniter, speaker, etc.).
+
+
+
+### System bus
+Wires that physically connect hardware components. They serve as channels through which each component can send data to other components. They are devided into data bus, address bus, and control bus.
+
+- Data bus: A bus that transfers data between the central processing unit and other devices. It is a **bidirectional** bus that sends commands and data from memory and input/output devices to the CPU, or sends the results of operations from the CPU to memory and input/output devices.
+- Address bus: In order to accurately transport data, a memory 'address' must be determined. The address bus is a one-way bus because it is a passage through which the central processing unit transfers memory addresses to main memory or input/output devices.
+- Control bus: Since the address bus and the data bus are shared by all devices, there is a need for a means to control them. The control bus serves as a channel through which the central processing unit communicates control signals to memory and input/output devices. The control bus is a **bidirectional** bus because it performs both read and write operations. Type of control signals include: memory read and write, bus request and grant, interrupt request and acknowledge, clock, reset, etc.
+
+
+
+## Software
+- System software: operating system, compiler
+- Application software: word processor, spread sheet
+
+
+
+
+
+
+---
+
+## Reference
+
+https://gyoogle.dev/blog/computer-science/computer-architecture/%EC%BB%B4%ED%93%A8%ED%84%B0%EC%9D%98%20%EA%B5%AC%EC%84%B1.html
\ No newline at end of file
diff --git a/_posts/2024-03-28-Operation-Principle-of-Central-Processing-Unit(CPU).md b/_posts/2024-03-28-Operation-Principle-of-Central-Processing-Unit(CPU).md
new file mode 100644
index 000000000..dc0ab5be1
--- /dev/null
+++ b/_posts/2024-03-28-Operation-Principle-of-Central-Processing-Unit(CPU).md
@@ -0,0 +1,121 @@
+---
+layout: post
+author: Cascal Pascal
+tags:
+ - major
+ - computer-architecture
+ - tech-interview
+---
+
+>**Course**
+>
+>[[Major] Computer Architecture](https://cascalpascal.github.io/major-tech-interview)
+
+>**Bookmarks**
+>
+>- [Operation Principle of CPU](#operation-principle-of-central-processing-unitcpu)
+>
+>- [CPU operation process](#cpu-operation-process)
+
+
+---
+
+
+
+# Operation Principle of Central Processing Unit(CPU)
+The CPU plays the most critical role in a computer sustem, often referred to as the "brain". It consists of three main components: the Arithmetic Logic Unit, the Control Unit, and registers.
+
+
+
+## - Arithmetic Logic Unit(ALU)
+Performs arithmetic and logical operations. It retrieves data required for operations from registers and sends the operation results back to registers.
+
+
+
+## - Control Unit
+Coordinates the execution of instructions in sequence. It retrieves program instructions from the main memory, interprets them, and based on the results, sends control signals required for instruction execution to the main memory, ALU, and input/output devices. Additionally, it receives signals sent by these devices to determine the next operation to be performed.
+
+
+
+## - Registers
+High-speed memory units that temporarily store various types of data, including instruction addresses, codes, data required for operations, and operation results. The number and size of registers available vary depending on the type of CPU.
+
+Registers are classified into two types:
+
+- General-purpose registers: Temporarily store data required for operations or operation results.
+- Special-purpose registers: Used for specific purposes.
+
+Some of the important special-purpose registers include:
+
+1. **Memory Address Register (MAR)**: Stores the address of the main memory location to perform read and write operations.
+
+2. **Program Counter (PC)**: Stores the address of the next instruction to be fetched and executed.
+
+3. **Instruction Register (IR)**: Stores the currently executing instruction.
+
+4. **Memory Buffer Register (MBR)**: Temporarily stores data read from or to be written to the main memory.
+
+5. **Accumulator (AC)**: Temporarily stores the results of arithmetic and logical operations.
+
+
+
+---
+
+# CPU operation process
+1. The main memory fetches data or programs stored in secondary memory or received from input devices.
+2. The CPU retrieves program instructions and data stored in main memory to execute the program. It processes the data and instructions and stores the results back in main memory.
+3. The main memory stores the processed results in secondary memory or sends them to output devices.
+4. The control unit ensures that the instructions are executed sequentially in steps 1 to 3.
+
+
+
+## Instruction Set
+An instruction set is a collection of instructions that the CPU can execute. It consists of an operation code (opcode) and operands.
+
+> opcode: 실행할 연산
+> operands: 필요한 데이터 or 저장 위치
+
+- Opcode: Specifies the operation to be performed. Include operations related to arithmetic, control, data transfer, and input/output functions.
+- Operands: Provide data or storage locations needed for the operation. Store addresses, numbers/characters, logical data, etc.
+
+The CPU repeatedly performs the following steps to execute a program stored in main memory:
+
+- *Fetches* one instruction at a time from main memory.
+- Decodes and *executes* the instruction during the execution cycle.
+- Once the execution of one instruction is complete, the next instruction fetch cycle begins from the specified address in main memory.
+
+This sequence of activities required for fetching and executing one instruction is called an "*instruction cycle*," which is divided into fetch/execution/indirect/interrupt cycles.
+
+
+
+## The process of fetch and execution cycle
+
+> In the fetch cycle, the most critical aspect is the increment of the Program Counter(PC) value.
+
+### Fetch Cycle
+- ```T0```: The address stored in the PC is transmitted to the Memory Address Register (MAR). Based on the stored address, the instruction is fetched from the corresponding memory location in the main memory.
+- ```T1```: The fetched instruction is stored in the Memory Buffer Register (MBR). The PC value is incremented to fetch the next instruction.
+- ```T2```: The content stored in the Memory Buffer Register (MBR) is transferred to the Instruction Register (IR).
+
+```
+T0 : MAR ← PC
+T1 : MBR ← M[MAR], PC ← PC + 1
+T2: IR ← MBR
+```
+
+### Execution Cycle
+
+```
+T0 : MAR ← IR(Addr)
+T1 : MBR ← M[MAR]
+T2 : AC ← AC + MBR
+```
+
+
+
+
+
+---
+
+## Reference
+https://gyoogle.dev/blog/computer-science/computer-architecture/%EC%A4%91%EC%95%99%EC%B2%98%EB%A6%AC%EC%9E%A5%EC%B9%98%20%EC%9E%91%EB%8F%99%20%EC%9B%90%EB%A6%AC.html
\ No newline at end of file
diff --git a/_posts/2024-03-28-[Major]-Tech-Interview.md b/_posts/2024-03-28-[Major]-Tech-Interview.md
new file mode 100644
index 000000000..ad5750ac0
--- /dev/null
+++ b/_posts/2024-03-28-[Major]-Tech-Interview.md
@@ -0,0 +1,138 @@
+---
+layout: post
+author: Cascal Pascal
+tags:
+ - major
+ - tech-interview
+
+---
+
+# Course
+
+[tech-interview-for-developer](https://github.com/gyoogle/tech-interview-for-developer)
+
+---
+
+
+
+## Algorithm
+
+[Bubble Sort](https://cascalpascal.github.io/bubble-sort)
+[Selection Sort](https://cascalpascal.github.io/selection-sort)
+[Insertion Sort](https://cascalpascal.github.io/insertion-sort)
+Quick Sort
+Merge Sort
+Heap Sort
+Radix Sort
+Count Sort
+Binary Search
+Hash Table
+DFS & BFS
+Longest Increasing Sequence(LIS)
+Lowest Common Ancestor(LCA)
+Dynamic Programming(DP)
+Dijkstra Algorithm
+BitMask
+
+
+
+
+## Computer Architecture
+
+[Computer Components](https://cascalpascal.github.io/foundamentals-of-project-initiation)
+[Operation Principle of Central Processing Unit(CPU)](https://cascalpascal.github.io/operation-principle-of-central-processing-unit-cpu)
+Cache Memory
+Fixed Point & Floating Point
+Parity Bit & Hamming Code
+ARM Processor
+
+
+
+
+## Data Structure
+
+Array
+LinkedList
+Array & ArrayList & LinkedList
+Stack & Queue
+Heap
+Tree
+Binary Search Tree
+Hash
+Trie
+B-Tree & B+Tree
+
+
+
+
+
+## Operating System
+
+Operating System
+Processes vs Threads
+Process Address Space
+Interrupts
+System Calls
+Process Control Block (PCB) and Context Switching
+Interprocess Communication (IPC)
+CPU Scheduling
+Deadlock
+Race Condition
+Semaphore & Mutex
+Paging & Segmentation
+Page Replacement Algorithms
+Memory
+File Systems
+
+
+
+
+## Database
+
+Key
+JOIN Operation
+SQL Injection
+SQL vs NoSQL
+Anomaly
+Index
+Normalization
+Transaction
+Transaction Isolation Levels
+Redis
+Stored Procedure
+
+
+
+
+## Network
+
+OSI 7 layer
+TCP 3 & 4 way handshake
+TCP/IP Flow Control & Congestion Control
+UDP
+Symmetric Key & Public Key
+HTTP & HTTPS
+TLS/SSL handshake
+Load Balancing
+Blocking/Non-blocking & Synchronous/Asynchronous
+Blocking & Non-Blocking I/O
+
+
+
+
+## Software Engineering
+
+Clean Code & Refactoring
+Clean Code & Secure Coding
+TDD (Test Driven Development)
+Agile
+Object-Oriented Programming (OOP)
+Functional Programming
+DevOps
+3rd party
+Microservices Architecture (MSA)
+
+
+
+
+
diff --git a/_posts/2024-04-02-Organizational-structure-and-culture.md b/_posts/2024-04-02-Organizational-structure-and-culture.md
new file mode 100644
index 000000000..243eb3a6c
--- /dev/null
+++ b/_posts/2024-04-02-Organizational-structure-and-culture.md
@@ -0,0 +1,304 @@
+---
+layout: post
+author: Cascal Pascal
+tags:
+ - coursera
+ - google
+ - certificate
+ - project-management
+---
+
+> **Course**
+>
+> [[coursera] Google Project Management: Professional Certificate](https://cascalpascal.github.io/coursera-google-project-management-professional-certificate)
+
+> **Bookmarks**
+>
+> - [Organizational structure](#organizational-structure )
+> - [Organizational Culture](#organizational-culture)
+> - [Introduction to change management](#introduction-to-change-management)
+
+---
+
+
+
+# Organizational structure
+
+>The way a company or organization is arranged or structured.
+
+This structure also tells you how job tasks are divided and coordinated and how all the different members of the organization relate to one another. In other words, organizational structure gives you a sense of who reports to who.
+
+Understanding the different types of organizational structures can serve as a map to help you determine where you fit in, who you should communicate with, and how frequently to communicate with them.
+
+An organization's structure is most commonly mapped out using a reporting chart or "org chart," which is short for "organizational chart." Reporting charts show the relationship between people and groups within the organization, and details who each person or group reports to.
+
+![[Pasted image 20240322142012.png]](https://github.com/cascalpascal/cascalpascal.github.io/blob/master/assets/images/Course/Pasted%20image%2020240322142012.png?raw=true)
+
+In both Classic and Matrix organizations, project managers must clearly define roles and responsibilities in order to work effectively. However, within most Matrix organizations, some project managers or department leads may have the same level of authority as the functional managers and operate more directly.
+
+
+
+## Classic structure
+
+>Traditional top-down system of reporting
+
+The Classic grouping includes what are usually called "functional" or "top-down" structures. The department manager has direct authority over several other sections of employees. This system requires communication both up and down the ladder. In a Classic structure, authority comes from the top and filters to the bottom. Each department is led by a functional manager, and employees are grouped according to the functions of their role.
+
+If your organization works in this structure, as the project manager, you might communicate regularly with your manager, *the person directly above you*, and also with *your peers* who work on the same types of projects as you.
+
+
+
+## Matrix structure
+
+>Direct higher-ups and stakeholders from other departments or programs
+
+The Matrix structure differs from the Classic structure in that the employees have two or more managers. In Matrix structures, you still have people above you, but you also have people in *adjacent* departments with whom you will need to communicate on your work progress. Functional areas tend to cross paths more frequently, and depending on the nature of the work, the responsible manager for each area has the most authority. You can think of the project manager as being a temporary manager while assigned to the team.
+
+[The Matix Organization](https://www.pmi.org/learning/library/matrix-organization-structure-reason-evolution-1837)
+
+
+
+## Delineation of Responsibilities
+
+### Project manager's responsibilities
+
+1. What is to be done?
+2. When will the task be done?
+3. Why will the task be done?
+4. How much money is available to do the task?
+5. How well has the total project been done?
+
+### Functional manager's responsibilities
+
+1. How will the task be done?
+2. Where will the task be done?
+3. Who will do the task?
+4. How well has the functional input been integrated into the project?
+
+
+
+## How organizational structure impacts project management
+
+An organization's structure provides the framework for accountability and communication. As the project manager, it's vital that you understand who you're reporting to on each project, and just as importantly, who the members of your team report to. Knowing the organizational structure also tells you how and where to get the resources you'll need so you can get the project done efficiently. When you understand the organization's structure, you'll be able to identify how it impacts the way you manage the project.
+
+- **Authority**
+Authority has to do with your ability to make decisions for the project that impact the organization.
+
+- **Resource availability**
+Knowing how to access the people, equipment, and budget that you need for a project.
+
+### Classic structure
+You might find yourself with less authority and a tighter scope. You may need to rely on getting approval from the appropriate managers, directors, and department heads in order to move forward and complete certain tasks. As a project manager working in a Classic structure, you may depend on the managers in your organization to approve resources.
+
+### Matrix structure
+Matrix structures emphasize a strong project focus from the team and the organization. You as the project manager, generally have more autonomy to make decisions and gather resources as needed.
+
+Your team members will have their functional manager and you, the project manager. Because there isn't always a clear chain of command in a Matrix structure, you need to make sure you have identified and communicated with anyone you might need to report to and get approval from well before the project begins.
+
+
+
+## The role of a Project Management Office
+
+A Project Management Office, or PMO, is a group within an organization that defines, sets, and helps maintain project management standards and processes throughout that organization.
+
+The key purposes of a PMO include: strategic planning and governance, implementing project management best practices, establishing common project culture, resource management, and creating project documentation, archives, and tools.
+
+PMOs support their organizations in managing large numbers of projects and help keep all employees working in the same direction towards the organization’s goals.
+
+### What are the functions of a PMO?
+PMOs offer guidance and support to their organization’s project managers. They share best practices, project statuses, and direction for all of the organization’s projects while often taking on strategic projects themselves.
+
+- **Strategic planning and governance**
+This involves defining project criteria, selecting projects according to the organization’s business goals, and then providing a business case for those projects to management.
+
+- **Best practices**
+PMOs help implement best practices and processes within their organization. They also share lessons learned from previous successful projects. They help ensure consistency among their organization’s projects by providing guidance about processes, tools, and metrics.
+
+- **Common project culture**
+PMOs help set common project culture practices by training employees about optimal approaches and best practices. This helps keep project management practices consistent and efficient across the entire organization.
+
+- **Resource management**
+PMOs are often responsible for managing and allocating resources—such as people and equipment—across projects throughout the organization based on budget, priorities, schedules, and more. They also help define the roles and responsibilities needed on any given project. PMOs provide training, mentoring, and coaching to all employees, but project managers in particular.
+
+- **Creation of project documentation, archives, and tools**
+PMOs invest in and provide templates, tools, and software to help manage projects. They also play an important role in maintaining their organization’s project history. Once a project closes, they archive all of the documents created during the project for future reference and to capture lessons learned.
+
+
+
+
+# Organizational Culture
+
+The values employees share, as well as the organization's, values, mission, and history. In other words, organizational culture can be thought of as the company's personality. Understanding an organization's culture will help you navigate your team more effectively toward achieving the project's goal. It also impacts the way you plan your project. You'll need to be familiar with an organization's culture, so that you can minimize conflict and complete the project with as much support and harmony as possible.
+
+If you're ever stuck in your project and need guidance about making a certain decision, or are unsure how to communicate with someone in the organization, reviewing the mission and values may help direct you toward the right way to handle that situation.
+
+Consider the following questions:
+- How do people prefer to communicate? Is it primarily through scheduled meetings, via email, over the phone?
+- How are decisions made, majority vote or top down approvals?
+- What kinds of rituals are in place when someone new comes to the office? Are they taken out to lunch, given a tour of the building or introduced to the staff?
+- How are projects typically run? Do they prefer a Classic, do they prefer Matrix, or some other style of project management?
+- What kinds of practices, behaviors, and values are reflected by the people in the organization? Is overtime or weekend work an expectation? Are there company sanctioned social events?
+
+Finding out what the company values, will tell you a lot about the culture. And how to handle communication, manage expectations, and identify potential conflicts as you work through your project.
+
+
+**Navigating Culture**
+Make sure to *ask questions*. As you observe the culture, try asking your peers what they think is going well and what they would change. It's also a good idea to *make observations*. It's important to understand how things work, and what people like and respect about the company's culture. Lastly, it's important to *understand your impact*. Be aware of your role as a change agent. A **change agent** is someone who helps the organization transform by focusing on improving organizational effectiveness and development.
+
+
+
+# Learning about an organization's culture
+Organizational culture is important because it has a direct impact on you as a project manager, and learning how to navigate organizational culture gives you a great advantage when you are executing projects. Being able to navigate departmental interactions, communicate effectively, and plan your project in line with the organization’s culture will help set you up for success in your project management career path.
+
+
+> "Culture eats strategy for breakfast." - Peter Drucker
+
+
+**The importance of organizational culture**
+
+- **Identity**: An organization’s identity essentially describes the way the company conducts business, both internally and externally. A company’s values and organizational culture go hand-in-hand; its values are part of its identity.
+- **People**: Strong, positive organizational culture helps retain a company’s best employees. People who feel valued, engaged, and challenged are more likely to give their best and want to drive for success. One way to find out more about an organization's culture is to talk to the people who work there.
+- **Processes**: Organizational culture can have direct impacts on a company's processes, and ultimately, its productivity. The organization’s culture is instilled throughout the company—from its employees to how its employees do their job.
+
+
+
+## Understanding an organization's culture
+Some aspects of an organization’s culture that are directly related to how you will manage projects are communication, decision-making, rituals, previous management styles, and values.
+
+### Ask questions
+You can learn about an organization's culture by asking questions of management and peers.
+
+### Listen to people’s stories
+Listening to what current employees have to say and how they portray the company will give you great insight.
+
+### Take note of company rituals
+Rituals can be powerful drivers of culture. They engage people and help instill a sense of shared purpose and experience.
+
+### Understand your impact
+As a project manager, you become a **change agent**. Remember: a change agent is a person from inside an organization who helps the organization transform by focusing on improving organizational effectiveness and development. When you begin a new role, sit down with management to better understand what is expected of you and how you can make the most of the opportunity.
+
+### Shrapen your communication skills
+Interpersonal communication skills are a major part of project management. How a company communicates is directly tied to its organizational culture.
+
+To communicate effectively, you will need to understand how to navigate the different channels in your company. Ask questions about communication practices when you start a new role such as: Is it customary to sign emails from the team rather than from you individually? Should presentations include team members or be solely presented by the project manager?
+
+Approaching projects differently from how similar projects were managed in the past may be met with some resistance. Although some projects may call for you to break the status quo, when you show an appreciation of your organization’s culture, you may help your team members accept any improvements you are implementing.
+
+
+
+## Case study
+The Family Java coffeehouse has over 2,000 stores worldwide. The Family Java’s culture is closely linked to their strategy and capabilities—this is what they feel sets them apart from other coffee shops. The company has invested in a relationship-driven, employees-first approach. Their culture establishes that the employees are what makes the company unique.
+
+The Family Java believes in expressing their employees-first value by spending more on employee healthcare than on coffee beans! Each employee is crucial to the success of the company and their ability to fulfill their mission and adhere to their values. In turn, the company makes their employees feel valued by offering substantial training, education scholarships, assistance with daycare, and growth within the company.
+
+
+
+### **A project manager’s relationship to organizational culture**
+
+**Learning the company’s values**
+Avi was excited to begin his role as a project manager at The Family Java. He had asked questions about the organization’s culture during his job interview and was told about the company’s people-first approach.
+
+**Clarifying the company’s expectations**
+Avi’s manager at The Family Java said that his role would involve a substantial emphasis on team building and keeping morale high. When he began, Avi asked his manager to *clarify* the time investment expected by the company in order to accomplish team- and morale-building goals. He also asked for *suggestions* and *guidance* based on what had been done at the company in the past.
+
+**Applying organizational culture to a project**
+Before beginning his first project, Avi planned a team lunch to get to know everyone at The Family Java. Then, he scheduled one-on-one meetings with each of his team members to learn more about their working style and professional goals. He also asked *how he could help support and remove any barriers for them*.
+
+One of Avi’s team members, Miguel, said that he needed to start his workday early because he picked his children up from school at 3:00. After hearing this, Avi avoided scheduling team meetings in the late afternoon.
+
+Another team member, Elisa, told Avi that she preferred face-to-face or phone conversations to email since she felt like she communicated better verbally. When Avi needed to discuss something with Elisa, he made sure that he talked with her in person as much as possible.
+
+Avi continued to check in with all of his team members regularly as the project progressed. He also scheduled weekly “Coffee Chats” with his team, since he had learned that this was company tradition.
+
+Avi’s efforts to align his project management style to The Family Java’s organizational culture were noticed by executives and stakeholders, and he was given a lot of support in getting the resources he needed.
+
+
+
+# Introduction to change management
+ In project management, the process of delivering your completed project and getting people to adopt it is called change management. Understanding change management can ensure that a project is completed successfully and that the organization accepts and adopts the recommendations from the project. *Adoption* is often the first step to your project having the desired impact once it goes live.
+
+It's important to recognize that it's the people in an organization who are directly impacted by any changes in the workplace. Implementing a new project can mean changes to processes, budgets, schedules, and employee roles and responsibilities.
+
+When you consider the success of your project, it's important to keep in mind the changes that people will need to implement as a result. Thinking through these changes will set you up for success in getting your project accepted and adopted.
+
+**Core concepts**
+
+- Creating a sense of **ownership** and **urgency** around the project. Ownership means getting others to feel they are empowered to take responsibility for the successful completion of their tasks. Urgency means getting them to understand that the project is important and to identify what actions need to be taken to move the project along. When team members feel a sense of ownership and urgency around a project, it increases interest, motivation, and engagement with the project outcome.
+- *Figure out the right combination of skills and personalities* when selecting the people who will work on your team. Find people whose knowledge and skills complement one another. If your team is selected for you, see if you're able to choose who gets assigned which tasks. If that's not possible, then it's extra important for you to find ways to connect with your team. This will get them excited about the project so then they can be advocates for change when it's needed. One effective way of motivating your team is *to communicate clearly your vision and approach for the project.* Then you can share how you see everyone working together as a team to make it happen. Communicating this idea clearly allows others to share in your vision and take ownership in bringing it to life.
+- Communication is key. Having *effective communication with your team* means being transparent and up front with your plans and ideas and making information available. Make sure your team, along with the rest of the organization, is kept up-to-date on your progress. This will allow everyone to feel like they're included and part of the project.
+
+
+
+## A project manager's role in change management
+Your project’s success depends on the adoption and acceptance of your project—whether that entails the launch of a new external tool or a process that will change operations at a production facility. In both cases, the greatest impact of the change will be on the people who use and interact with the product or process that is changing.
+
+You can help ensure your project’s success by embracing changes as they come and by convincing the wider audience, whether that is the end user or members of the organization, to embrace changes, too. When you implement a careful approach to change management, you can address issues that might occur in the later stages of your project.
+
+### Integrating projcet management and change management
+As a project manager, you can think of change management as necessary for the successful outcome of your project. They also incorporate tools and processes to accomplish that goal. The most effective way to achieve a project goal is to integrate project management and change management, and it is your responsibility as a project manager to do so.
+
+Begin by asking yourself the following questions:
+- How will the organization react to change?
+- Which influencers can affect change?
+- What are the best means of communication?
+- What change management practices will lead to the successful implementation of my project?
+
+The answers to these questions will help you prepare for a variety of possible scenarios and allow you to craft solutions to effectively support the adoption of your project.
+
+
+
+**Best Paractice**
+
+- **Be proactive.** Proactive and inclusive change management planning can help keep any potentially impacted stakeholders aware of the upcoming changes. You can also plan steps towards the end of your project to introduce the deliverable to stakeholders in the form of demonstrations, question and answer forums, or marketing videos.
+- **Communicate about upcoming changes.** Communication should occur regularly among impacted stakeholders, the change management team, and the project team. Check in and communicate throughout the project about how the changes will provide a better experience for end users of the project deliverables.
+- **Follow a consistent process.** Following a clear change management process helps maintain consistency each time there is a change. The change management process should be established and documented early on in your project to guide how the project will handle change.
+- **Practice empathy.** Changes are inevitable, but we are often resistant to them. By being empathetic to the challenges and anxiety change can bring, you can support the process in subtle ways.
+- **Use tools.** Incorporating tools to assist in the adoption of a change can be very helpful.
+ - *Feedback mechanisms*, such as surveys, can capture input from stakeholders.
+ - *Flowcharts* can visualize the project's development process.
+ - *Culture mapping* can illustrate the company's culture and how the company's values, norms, and employees behavior may be affected by the change.
+
+
+
+## Participation in change management
+Being empathetic to the challenges of change management can help you support the process in subtle ways. In this case, participating in change management might mean communicating with employees throughout the project about how the system will provide a better experience for their customers.
+
+
+
+## Corporate and project governance
+
+**Governance** in business is the management framework within which decisions are made and accountability and responsibility are determined.
+
+### Corporate governance
+Each organization is governed by its own set of standards and practices that direct and control its actions. Those standards and practices are called **corporate governance**, and they will influence your projects. Corporate governance is the framework by which an organization achieves its goals and objectives. Corporate governance is also a way to balance the requirements of the various corporate entities, such as stakeholders, management, and customers. Corporate governance affects every part of an organization, including action plans, internal and external controls, and performance measurements.
+
+Governance and change management go hand-in-hand. To successfully implement change management, it is essential that you understand the structure and culture of the organization. Effective governance in change management provides clearly defined roles and responsibilities during change.
+
+Another example of governance within an organization is the creation and use of *steering committees*. Steering committees decide on the priorities of an organization and manage the general course of its operations. The steering committee essentially acts as an advisory board or council to help the project manager and the company make and approve strategic decisions that affect both the company and the project.
+
+
+
+### Project governance
+As a project manager, you will be responsible for **project governance**. Project governance is the framework for how project decisions are made. Project governance helps keep projects running smoothly, on time, and within budget. Project governance involves all the key elements that make a project successful. It tells you what activities an organization does and who is responsible for those activities. Project governance covers policies, regulations, functions, processes, procedures, and responsibilities.
+
+
+
+### How project and corporate governace intersect
+Project governance needs to be tailored to your organization's specific needs. These needs will influence how you implement and monitor the governance framework on your project. Project governance concerns those areas of corporate governance that are specifically related to project activities. Effective project governance ensures that an organization’s projects are aligned to the organization’s larger objectives, are delivered efficiently, and are sustainable.
+- Considering the long- and short-term interests of your organization
+- Making thoughtful decisions about which projects to take on and avoiding projects if you do not have sufficient resources
+- Providing timely, relevant, and reliable information to the board of directors and other major stakeholders
+- Eliciting the input and buy-in of senior managers since they are the decision-makers
+- During the initiation phase, prioritizing clear, reachable, and sustainable goals in order to reduce confusion and conflict
+- During the planning phase, assigning ownership and accountability to an experienced team to deliver, monitor, and control the process
+- During the execution phase, learning from mistakes and adapting to new or improved knowledge
+Corporate governance can involve clearing many hurdles before making decisions. At the same time, corporate governance can help support project governance, as it provides oversight on compliance and mitigating risk and offers guidance and direction for project managers. Good corporate governance can also help project managers secure resources, get issues addressed, avoid delays in decision-making, get buy-in from stakeholders, and achieve visibility for projects on the executive level.
+
+
+
+
+---
+
+### Reference
+
+[Coursera: Foundations of Project Management](https://www.coursera.org/learn/project-management-foundations)
diff --git a/_posts/2024-04-03-Bubble-Sort.md b/_posts/2024-04-03-Bubble-Sort.md
new file mode 100644
index 000000000..969d4cdce
--- /dev/null
+++ b/_posts/2024-04-03-Bubble-Sort.md
@@ -0,0 +1,152 @@
+---
+layout: post
+author: Cascal Pascal
+tags:
+ - algorithm
+ - tech-interview
+---
+
+>**Course**
+>
+>[[Major] Algorithm](https://cascalpascal.github.io/major-tech-interview)
+
+>**Bookmarks**
+>
+>- [Process](#process)
+>
+>- [Time Complexity](#time-complexity:-on^2)
+>
+>- [Space Complexity](#space-complexity:-on)
+>
+>- [Pros and Cons](#pros)
+>
+>- [Code](#code)
+
+
+---
+Bubble Sort is an algorithm similar to Selection Sort. This algorithm traverses the list, comparing adjacent pairs of elements and swapping their positions if necessary to eventually sort the list. It is one of the *simplest* but *inefficient* sorting algorithms.
+
+
+
+## Process
+1. Traverse the list and compare adjacent pairs of elements. If the current element is greater than the next element, swap their positions. Repeat this comparison and swapping process until reaching the end of the list.
+2. After one iteration, the largest (or the smallest) element is moved to the end. Therefore, in the second iteration, the last element is excluded from the sorting process, and after the second iteration, the last two elements are excluded from the sorting process. This way, with each iteration of the sorting process, one more element is excluded from consideration.
+
+
+
+## Time Complexity: O(n2)
+`(n-1) + (n-2) + (n-3) + .... + 2 + 1 => n(n-1)/2`
+Since Bubble Sort compares two elements, whether sorted or not, the time complexity is the same in the best, average, and worst cases as **O(n2)**.
+
+
+
+## Space Complexity: O(n)
+Bubble Sort is an in-place sorting algorithm, meaning it sorts the elements within the input array itself without requiring additional memory space. Therefore, the space complexity of Bubble Sort is **O(n)**, which indicates that it uses constant space regardless of the input size.
+
+
+
+## Pros
+- Simple and easy to understand.
+- *In-place sorting*. It doesn't require additional memory space.
+- *Stable Sort*.
+
+
+
+## Cons
+- *Inefficient*. Time complexity is O(n2).
+- To reach their sorted positions from unsorted ones, there are numerous swap operations involved.
+- It performs poorly especially for large datasets or nearly sorted lists.
+
+
+
+## Code
+
+```python
+# BubbleSort.py
+
+def BubbleSort(arr):
+ n = len(arr)
+
+ # 리스트를 순회하면서 비교-교환 과정을 반복
+ for i in range(n):
+ # 각 순회마다 리스트 끝까지 비교-교환을 진행하며 가장 큰 원소를 찾음
+ for j in range(0, n-i-1):
+ # 현재 원소가 다음 원소보다 크다면 위치를 교환
+ if arr[j] > arr[j+1]:
+ arr[j], arr[j+1] = arr[j+1], arr[j]
+
+# 테스트를 위한 리스트
+test_list = [58, 66, 50, 28, 8, 27, 91]
+
+# Bubble Sort를 이용하여 리스트를 정렬
+BubbleSort(test_list)
+
+print("Sorted list: ")
+print(test_list)
+```
+
+```java
+// BubbleSort.java
+
+public class BubbleSort {
+ // Bubble Sort 알고리즘 구현
+ public static void bubbleSort(int[] arr) {
+ int temp = 0;
+
+ // 제외될 원소의 갯수를 의미.
+ // 1회전이 끝나면 배열의 끝에는 가장 큰 원소가 있으므로 하나씩 증가시킴.
+ for(int i = 0; i < arr.length; i++) {
+ // 원소를 비교할 index를 뽑을 반복문.
+ // j는 현재 원소를 가리키고, j-1은 이전 원소를 가리키므로, j는 1부터 시작함.
+ for(int j= 1 ; j < arr.length-i; j++) {
+
+ // 현재 가르키고 있는 두 원소의 대소를 비교.
+ if(arr[j-1] > arr[j]) {
+
+ // swap(arr[j-1], arr[j])
+ temp = arr[j-1];
+ arr[j-1] = arr[j];
+ arr[j] = temp;
+ }
+ }
+ }
+ }
+
+
+ // Bubble Sort 결과 출력
+ public static void printArray(int[] arr) {
+ int n = arr.length;
+ for (int i = 0; i < n; ++i) {
+ System.out.print(arr[i] + " ");
+ }
+ System.out.println();
+ }
+
+ // 테스트를 위한 메인 메소드
+ public static void main(String[] args) {
+ int[] testArray = {58, 66, 50, 28, 8, 27, 91};
+ System.out.println("Test Array:");
+ printArray(testArray);
+
+ // Bubble Sort를 이용하여 배열 정렬
+ bubbleSort(testArray);
+
+ System.out.println("Sorted Array:");
+ printArray(testArray);
+ }
+}
+```
+
+
+
+
+
+
+
+
+---
+
+## Reference
+
+- https://gyoogle.dev/blog/algorithm/Bubble%20Sort.html
+- ChatGPT, "Tell me about Bubble Sort"
\ No newline at end of file
diff --git a/_posts/2024-04-03-Foundamentals-of-project-initiation.md b/_posts/2024-04-03-Foundamentals-of-project-initiation.md
new file mode 100644
index 000000000..97461ba48
--- /dev/null
+++ b/_posts/2024-04-03-Foundamentals-of-project-initiation.md
@@ -0,0 +1,127 @@
+---
+layout: post
+author: Cascal Pascal
+tags:
+ - coursera
+ - google
+ - certificate
+ - project-management
+---
+
+> **Course**
+>
+> [[coursera] Google Project Management: Professional Certificate](https://cascalpascal.github.io/coursera-google-project-management-professional-certificate)
+
+> **Bookmarks**
+>
+> - [Initiation is the first phase within the project life cycle](#initiation-is-the-first-phase-within-the-project-life-cycle)
+>
+> - [Performing a cost-benefit analysis](#performing-a-cost-benefit-analysis)
+>
+> - [Calculating costs and benefits](#calculating-costs-and-benefits)
+>
+> - [Key components of project initation](#key-components-of-project-initation)
+
+---
+
+
+
+# Initiation is the first phase within the project life cycle
+Because initiation is the first phase of the project, it's really important to get it right. A well-planned initiation results in a strong foundation for your project, and sets it up for success.
+
+It's project manager's responsibility to help identify the project goals, resources, and other details based on initial discussions with the project stakeholders. Even though someone else might come up with an idea for the project, it's still your job to figure out all the important pieces that need to come together in order to get the work done.
+
+The initiation phase is a crucial time for asking stakeholders the *right questions*, *performing research*, *determining resources*, and *clearly documenting the key components* of a project. Doing this will help you solidify the scope, or the boundary, of the project.
+
+Getting on the same page and gaining clarity during the initiation phase can save a lot of time and extra work for everyone throughout the project. Proper initiation also helps ensure that the benefits of the project outcomes will outweigh the costs of the project. To determine this, you'll do what's called a **cost benefit analysis**, which is the process of adding up the expected value of a project (the benefits) and comparing them to the dollar costs. The benefits of a project should always outweigh the costs, so it's really important that you consider these questions early on.
+
+
+
+
+## Performing a cost-benefit analysis
+A cost-benefit analysis can minimize risks and maximize gains for projects and organizations. It can help you communicate clearly with stakeholders and executives and keep your project on track.
+
+When you’re pursuing a project, *the benefits should outweigh the costs*. It’s important for you and your stakeholders to consider questions like the ones that follow early on, while you prepare the proposal.
+
+To determine the **benefits** of a project, you might ask:
+
+- What value will this project create?
+- How much money could this project save our organization?
+- How much money will it bring in from existing customers?
+- How much time will be saved?
+- How will the user experience be improved?
+
+And to determine the **costs** of a project, consider questions such as:
+
+- How much time will people have to spend on this project?
+- What will be the one-time costs?
+- Are there any ongoing costs?
+- What about long-term costs?
+
+You might also consider questions about **intangible benefits**. These are gains that are not quantifiable, such as:
+
+- **Customer satisfaction**. Will the project increase customer retention, causing them to spend more on the company’s products or services?
+
+- **Employee satisfaction**. Is the project likely to improve employee morale, reducing turnover?
+
+- **Employee productivity**. Will the project reduce employee’s overtime hours, saving the company money?
+
+- **Brand perception**. Is the project likely to improve the company’s brand perception and recognition, attracting more customers or providing a competitive advantage?
+
+You can also flip these questions to consider **intangible costs**. These are costs that are not quantifiable. For example, might the project put customer retention, employee satisfaction, or brand perception at risk?
+
+
+
+
+## Calculating costs and benefits
+The process of calculating costs and benefits is also called calculating **return on investment**, or **ROI**. There are many ways to determine a project’s ROI, but the easiest way is to compare the upfront and ongoing costs to its benefits over time.
+
+One common ROI formula is:
+
+
+$ (G-C)/C=ROI $
+
+
+- **G** : the financial gains you expect from the project
+- **C** : the upfront and ongoing costs of your investment in the project.
+
+ROI is typically expressed as a percentage, with a positive value indicating profit from the investment and a negative value indicating loss. A strong ROI is typically considered to be anything above *10%*, and the higher the ROI, the more successful the investment is considered.
+
+
+
+
+# Key components of project initation
+
+- **Goals**
+ The goal is what you've been asked to do and what you're trying to achieve. All projects should have clear goals and often those will be determined by senior company leaders, with your help.
+
+- **Scope**
+ This is the process to define the work that needs to happen to complete the project.
+
+- **Deliverables**
+ They're the products and services that you will create for your customer, client or project sponsor. Deliverables can be anything from product features and functionalities to documentation, processes and more, anything that enables the goal of your project to be achieved. Deliverables are submitted to help you reach your project goals. Also, it's important to keep in mind that the deliverables can be tangible or intangible.
+
+- **Success criteria**
+ Success criteria are the standards by which you measure how successful a project was in reaching its goals.
+
+- **Stakeholders**
+ Stakeholders are key to making informed decisions at every step of the project, including the initiation phase. As you move through the initiation phase, it's your job to ensure that you *understand the needs* of the project stakeholders early on. It's also your role to ensure that *all stakeholders are in agreement on the goals and overall mission* of the project before moving on to the next phase.
+
+- **Resources**
+ Resources generally refer to the budget, people, materials, and other items that you will have at your disposal. It's super important to think carefully about these pieces early on.
+
+
+
+
+## Project charter
+A project charter is a document that contains all the details of the project. Project charters clearly define the project and its goals and outline what is needed to accomplish them. A project charter allows you to get organized, set up a framework for what needs to be done and communicate those details to others. Once you've drafted the charter, you would then review the document with key stakeholders to get their approval to move into the planning stage.
+
+![[Pasted image 20240403160625.png]](https://github.com/cascalpascal/cascalpascal.github.io/blob/master/assets/images/Course/Pasted%20image%2020240403160625.png?raw=true)
+
+
+
+---
+
+### Reference
+
+[Project Initiation: Starting a Successful Project](https://www.coursera.org/learn/project-initiation-google?)
\ No newline at end of file
diff --git a/_posts/2024-04-03-Insertion-Sort.md b/_posts/2024-04-03-Insertion-Sort.md
new file mode 100644
index 000000000..c1413729f
--- /dev/null
+++ b/_posts/2024-04-03-Insertion-Sort.md
@@ -0,0 +1,159 @@
+---
+layout: post
+author: Cascal Pascal
+tags:
+ - algorithm
+ - tech-interview
+---
+
+>**Course**
+>
+>[[Major] Algorithm](https://cascalpascal.github.io/major-tech-interview)
+
+>**Bookmarks**
+>
+>- [Process](#process)
+>
+>- [Time Complexity](#time-complexity:-on,-on^2)
+>
+>- [Space Complexity](#space-complexity:-on)
+>
+>- [Pros and Cons](#pros)
+>
+>- [Code](#code)
+
+
+---
+
+Insertion Sort is one of the *simplest* yet *efficient* sorting algorithms. It is an algorithm that starts from the second element, specifies the position to insert by comparing it to the elements in front (left), then moves the element to the back and inserts the data in the designated position to sort it.
+
+It has an incredibly fast efficiency of **O(n)** in the best case, making it a good sorting algorithm that can be used as part of other sorting algorithms.
+
+
+
+## Process
+1. The algorithm starts by traversing from the second element, save the value of the second element (index) in temp.
+2. It is inserted by comparing temp with previous elements.
+3. Repeat this process until all elements are inserted into the sorted part.
+
+
+
+## Time Complexity: O(n), O(n2)
+In the case where everything is sorted (Optimal), the comparison is performed only once, so the time complexity is **O(n)**.
+In the average and worst case (if sorted in reverse) **O(n2)**, `(n-1) + (n-2) + (n-3) + .... + 2 + 1 => n(n-1)/2`
+
+Additionally, when inserting/removing data one by one from an already sorted array, it is realistically the best sorting algorithm because the overhead excluding search is very low.
+
+
+
+## Space Complexity: O(n)
+It sorts the elements within the input array itself without requiring additional memory space, except for a few variables for temporary storage and loop indices.
+
+Therefore, the space complexity of Insertion Sort is **O(n)**, which indicates that it uses constant space regardless of the input size.
+
+
+
+## Pros
+- Simple and easy to understand.
+- *In-place sorting*. It doesn't require additional memory space.
+- *Efficient* for nearly sorted lists or small-sized lists.
+- *Stable Sort.*
+
+
+
+## Cons
+- In the average and worst case, the time complexity is O(n2), which is *inefficient*.
+- It becomes more inefficient as the length of the array increases.
+
+
+
+## Code
+
+```python
+# insertion_sort.py
+
+def insertion_sort(arr):
+ # 배열의 길이를 저장
+ n = len(arr)
+
+ # 배열의 각 요소를 정렬된 부분에 삽입
+ for i in range(1, n):
+ key = arr[i] # 현재 삽입할 값을 임시로 저장
+ j = i - 1
+
+ # key보다 큰 값을 찾아서 오른쪽으로 이동시킴
+ while j >= 0 and arr[j] > key:
+ arr[j + 1] = arr[j]
+ j -= 1
+
+ # key를 적절한 위치에 삽입
+ arr[j + 1] = key
+
+# 테스트를 위한 리스트
+test_list = [58, 66, 50, 28, 8, 27, 91]
+
+# Insertion Sort를 이용하여 리스트를 정렬
+insertion_sort(test_list)
+
+print("정렬된 리스트:")
+print(test_list)
+```
+
+```java
+// InsertionSort.java
+
+public class InsertionSort {
+ public static void insertionSort(int[] arr) {
+
+ // 첫 번째 원소 앞에는 어떤 원소도 존재하지 않기 때문에, 두 번째 index부터 탐색함함
+ // temp에 임시로 해당 index 값을 저장하고, prev에는 해당 index의 이전 위치를 저장함
+ for(int index = 1 ; index < arr.length ; index++){
+ int temp = arr[index];
+ int prev = index - 1;
+
+ // 이전 index를 가리키는 prev가 음수가 아니고, 이전 index의 값이 위에서 선택한 값보다 크다면,
+ // 서로 값을 교환하고 prev를 더 이전 index를 가리키도록 함
+ while( (prev >= 0) && (arr[prev] > temp) ) {
+ arr[prev+1] = arr[prev];
+ prev--;
+ }
+
+ // prev에는 현재 temp 값보다 작은 값들 중 제일 큰 값의 위치를 가리킴
+ // 따라서, prev+1에 temp값을 넣어줌
+ arr[prev + 1] = temp;
+ }
+ }
+
+ // Insertion Sort 결과 출력
+ public static void printArray(int[] arr) {
+ int n = arr.length;
+ for (int i = 0; i < n; ++i) {
+ System.out.print(arr[i] + " ");
+ }
+ System.out.println();
+ }
+
+ //텍스트를 위한 메인 메소드
+ public static void main(String[] args) {
+ int[] arr = {58, 66, 50, 28, 8, 27, 91};
+ System.out.println("Test array:");
+ printArray(arr);
+
+ // Insertion Sort를 이용하여 배열 정렬
+ insertionSort(arr);
+
+ System.out.println("Sorted array:");
+ printArray(arr);
+ }
+}
+```
+
+
+
+
+---
+
+## Reference
+
+- https://github.com/GimunLee/tech-refrigerator/blob/master/Algorithm/%EC%82%BD%EC%9E%85%20%EC%A0%95%EB%A0%AC%20(Insertion%20Sort).md#%EC%82%BD%EC%9E%85-%EC%A0%95%EB%A0%AC-insertion-sort
+- ChatGPT, "Tell me about Insertion Sort"
\ No newline at end of file
diff --git a/_posts/2024-04-03-Selection-Sort.md b/_posts/2024-04-03-Selection-Sort.md
new file mode 100644
index 000000000..b84b27c02
--- /dev/null
+++ b/_posts/2024-04-03-Selection-Sort.md
@@ -0,0 +1,166 @@
+---
+layout: post
+author: Cascal Pascal
+tags:
+ - algorithm
+ - tech-interview
+---
+
+>**Course**
+>
+>[[Major] Algorithm](https://cascalpascal.github.io/major-tech-interview)
+
+>**Bookmarks**
+>
+>- [Process](#process)
+>
+>- [Time Complexity](#time-complexity:-on^2)
+>
+>- [Space Complexity](#space-complexity:-on)
+>
+>- [Pros and Cons](#pros)
+>
+>- [Code](#code)
+
+
+---
+Selection Sort is an algorithm similar to Bubble Sort. In this algorithm, the location to insert elements in each cycle is already determined, and it selects which elements to insert.
+
+You may be confused about Selection Sort and Insertion Sort, but it is convenient to think of Selection Sort as selecting a position in an array and finding the value at that position.
+
+It is good to know as this is an algorithm that often appears in technical interviews or exams (*sorted state on the nth cycle*).
+
+
+
+## Process
+1. The algorithm iterates through the unsorted subarray to find the smallest element.
+2. Once the smallest element is found, it is swapped with the first element of the unsorted subarray, effectively adding it to the end of the sorted subarray.
+3. The algorithm then moves the boundary of the sorted subarray one position to the right, considering the element just added to be part of the sorted subarray.
+4. Steps 1-3 are repeated until the entire array is sorted.
+
+![[selection-sort-001.gif]](https://github.com/cascalpascal/cascalpascal.github.io/blob/master/assets/images/Course/selection-sort-001.gif?raw=true)
+
+
+
+## Time Complexity: O(n2)
+If there are n elements in the array, the number of comparisons in the first cycle is n-1(1 through (n-1)). In the second cycle, n-2(2 through n-1).
+
+`(n-1) + (n-2) + (n-3) + .... + 2 + 1 => n(n-1)/2`
+
+Sorting a given array of n elements takes **O(n2)** time, assuming that the comparison is done in constant time. The time complexity for the best, average, and worst cases is the same as O(n2).
+
+
+
+## Space Complexity: O(n)
+Selection Sort is an in-place sorting algorithm, meaning it sorts the elements within the input array itself without requiring additional memory space except for a few variables for temporary storage and loop indices.
+Therefore, the space complexity of Selection Sort is **O(n)**, which indicates that it uses constant space regardless of the input size.
+
+
+
+## Pros
+- Simple and easy to understand.
+- *In-place sorting*. It doesn't require additional memory space.
+- The number of comparison is large, however, compared to Bubble Sort, the actual number of swaps is relatively low, making it relatively efficient for datasets requiring numerous exchanges.
+
+
+
+## Cons
+- *Inefficient*. Time complexity is O(n2).
+- *Unstable Sort.*
+
+
+
+
+## Code
+
+```python
+# selection_sort.py
+
+def selection_sort(arr):
+ n = len(arr)
+
+ # 배열을 하나씩 순회하면서 정렬되지 않은 부분 배열에서 최소값을 찾아서 정렬된 부분 배열로 이동시킴
+ for i in range(n - 1):
+ # 정렬되지 않은 부분 배열에서 최소값의 인덱스를 찾음
+ min_index = i
+ for j in range(i + 1, n):
+ if arr[j] < arr[min_index]:
+ min_index = j
+
+ # 최소값과 현재 위치를 교환
+ arr[i], arr[min_index] = arr[min_index], arr[i]
+
+# 테스트를 위한 리스트
+test_list = [58, 66, 50, 28, 8, 27, 91]
+
+# Selection Sort를 이용하여 리스트를 정렬
+selection_sort(test_list)
+
+print("Sorted list:")
+print(test_list)
+
+```
+
+
+```java
+// SelectionSort.java
+
+public class SelectionSort {
+ public static void selectionSort(int[] arr) {
+ int indexMin, temp;
+ // 위치(index)를 선택해줌
+ for (int i = 0; i < arr.length-1; i++) {
+ indexMin = i;
+ // i+1번째 원소부터 선택한 위치의 값과 비교를 시작함
+ for (int j = i + 1; j < arr.length; j++) {
+ // 현재 선택한 자리에 있는 값보다 순회하고 있는 값이 작다면, 위치를 갱신함.
+ if (arr[j] < arr[indexMin]) {
+ indexMin = j;
+ }
+ }
+ // swap(arr[indexMin], arr[i])
+ // indexMin과 처음 선택한 위치에 들어가야 하는 값의 위치를 서로 swap 함.
+ temp = arr[indexMin];
+ arr[indexMin] = arr[i];
+ arr[i] = temp;
+ }
+ }
+
+ // Selection Sort 결과 출력
+ public static void printArray(int[] arr) {
+ int n = arr.length;
+ for (int i = 0; i < n; ++i) {
+ System.out.print(arr[i] + " ");
+ }
+ System.out.println();
+ }
+
+ //텍스트를 위한 메인 메소드
+ public static void main(String[] args) {
+ int[] testArray = {58, 66, 50, 28, 8, 27, 91};
+ System.out.println("Test array:");
+ printArray(testArray);
+
+ // Selection Sort를 이용하여 배열 정렬
+ selectionSort(testArray);
+
+ System.out.println("Sorted array:");
+ printArray(testArray);
+ }
+}
+
+```
+
+
+
+
+
+
+
+
+
+---
+## Reference
+- https://gyoogle.dev/blog/algorithm/Selection%20Sort.html
+- https://github.com/GimunLee/tech-refrigerator/blob/master/Algorithm/resources/selection-sort-001.gif
+- ChatGPT, "Tell me about Bubble Sort"
\ No newline at end of file
diff --git a/about.md b/about.md
index dafcbe23f..c983782b5 100644
--- a/about.md
+++ b/about.md
@@ -3,6 +3,9 @@ layout: post
title: About
---
-This is an example page!
+My name is Pascal.
+I'm having a marvelous time.
-Actually, it has the same layout of a post...
\ No newline at end of file
+> "Your ability to tolerate uncertainty in life determines your potential for growth.
+> So, take the unfamiliar path.
+> When you reach the end of the path, you will be a better person."
diff --git a/assets/images/Course/Pasted image 20240322142012.png b/assets/images/Course/Pasted image 20240322142012.png
new file mode 100644
index 000000000..704aaed4e
Binary files /dev/null and b/assets/images/Course/Pasted image 20240322142012.png differ
diff --git a/assets/images/Course/Pasted image 20240326101409.png b/assets/images/Course/Pasted image 20240326101409.png
new file mode 100644
index 000000000..64cabc962
Binary files /dev/null and b/assets/images/Course/Pasted image 20240326101409.png differ
diff --git a/assets/images/Course/Pasted image 20240326101933.png b/assets/images/Course/Pasted image 20240326101933.png
new file mode 100644
index 000000000..6c7b6733c
Binary files /dev/null and b/assets/images/Course/Pasted image 20240326101933.png differ
diff --git a/assets/images/Course/Pasted image 20240326103239.png b/assets/images/Course/Pasted image 20240326103239.png
new file mode 100644
index 000000000..2aaefab5e
Binary files /dev/null and b/assets/images/Course/Pasted image 20240326103239.png differ
diff --git a/assets/images/Course/Pasted image 20240326103558.png b/assets/images/Course/Pasted image 20240326103558.png
new file mode 100644
index 000000000..bcb7d881e
Binary files /dev/null and b/assets/images/Course/Pasted image 20240326103558.png differ
diff --git a/assets/images/Course/Pasted image 20240326103844.png b/assets/images/Course/Pasted image 20240326103844.png
new file mode 100644
index 000000000..276f75d03
Binary files /dev/null and b/assets/images/Course/Pasted image 20240326103844.png differ
diff --git a/assets/images/Course/Pasted image 20240326103957.png b/assets/images/Course/Pasted image 20240326103957.png
new file mode 100644
index 000000000..328958df5
Binary files /dev/null and b/assets/images/Course/Pasted image 20240326103957.png differ
diff --git a/assets/images/Course/Pasted image 20240326104118.png b/assets/images/Course/Pasted image 20240326104118.png
new file mode 100644
index 000000000..5892a1b99
Binary files /dev/null and b/assets/images/Course/Pasted image 20240326104118.png differ
diff --git a/assets/images/Course/Pasted image 20240326104747.png b/assets/images/Course/Pasted image 20240326104747.png
new file mode 100644
index 000000000..f3636a0bf
Binary files /dev/null and b/assets/images/Course/Pasted image 20240326104747.png differ
diff --git a/assets/images/Course/Pasted image 20240326105019.png b/assets/images/Course/Pasted image 20240326105019.png
new file mode 100644
index 000000000..8b4d0c2f8
Binary files /dev/null and b/assets/images/Course/Pasted image 20240326105019.png differ
diff --git a/assets/images/Course/Pasted image 20240326112043.png b/assets/images/Course/Pasted image 20240326112043.png
new file mode 100644
index 000000000..e80e44f8a
Binary files /dev/null and b/assets/images/Course/Pasted image 20240326112043.png differ
diff --git a/assets/images/Course/Pasted image 20240326112917.png b/assets/images/Course/Pasted image 20240326112917.png
new file mode 100644
index 000000000..166a8b4d6
Binary files /dev/null and b/assets/images/Course/Pasted image 20240326112917.png differ
diff --git a/assets/images/Course/Pasted image 20240326113648.png b/assets/images/Course/Pasted image 20240326113648.png
new file mode 100644
index 000000000..2a7352589
Binary files /dev/null and b/assets/images/Course/Pasted image 20240326113648.png differ
diff --git a/assets/images/Course/Pasted image 20240326113952.png b/assets/images/Course/Pasted image 20240326113952.png
new file mode 100644
index 000000000..618da3da2
Binary files /dev/null and b/assets/images/Course/Pasted image 20240326113952.png differ
diff --git a/assets/images/Course/Pasted image 20240326114116.png b/assets/images/Course/Pasted image 20240326114116.png
new file mode 100644
index 000000000..5ce01416f
Binary files /dev/null and b/assets/images/Course/Pasted image 20240326114116.png differ
diff --git a/assets/images/Course/Pasted image 20240326114956.png b/assets/images/Course/Pasted image 20240326114956.png
new file mode 100644
index 000000000..d19281fa7
Binary files /dev/null and b/assets/images/Course/Pasted image 20240326114956.png differ
diff --git a/assets/images/Course/Pasted image 20240326115551.png b/assets/images/Course/Pasted image 20240326115551.png
new file mode 100644
index 000000000..22df73cd2
Binary files /dev/null and b/assets/images/Course/Pasted image 20240326115551.png differ
diff --git a/assets/images/Course/Pasted image 20240326120714.png b/assets/images/Course/Pasted image 20240326120714.png
new file mode 100644
index 000000000..62372fbeb
Binary files /dev/null and b/assets/images/Course/Pasted image 20240326120714.png differ
diff --git a/assets/images/Course/Pasted image 20240328090429.png b/assets/images/Course/Pasted image 20240328090429.png
new file mode 100644
index 000000000..c0e576aae
Binary files /dev/null and b/assets/images/Course/Pasted image 20240328090429.png differ
diff --git a/assets/images/Course/Pasted image 20240402091953.png b/assets/images/Course/Pasted image 20240402091953.png
new file mode 100644
index 000000000..65f610e90
Binary files /dev/null and b/assets/images/Course/Pasted image 20240402091953.png differ
diff --git a/assets/images/Course/Pasted image 20240402092946.png b/assets/images/Course/Pasted image 20240402092946.png
new file mode 100644
index 000000000..ef69ac45a
Binary files /dev/null and b/assets/images/Course/Pasted image 20240402092946.png differ
diff --git a/assets/images/Course/Pasted image 20240402113339.png b/assets/images/Course/Pasted image 20240402113339.png
new file mode 100644
index 000000000..056a7fe2a
Binary files /dev/null and b/assets/images/Course/Pasted image 20240402113339.png differ
diff --git a/assets/images/Course/Pasted image 20240403160625.png b/assets/images/Course/Pasted image 20240403160625.png
new file mode 100644
index 000000000..c995e785a
Binary files /dev/null and b/assets/images/Course/Pasted image 20240403160625.png differ
diff --git a/assets/images/Course/pascal03120.jpeg b/assets/images/Course/pascal03120.jpeg
new file mode 100644
index 000000000..0c5f3ef4e
Binary files /dev/null and b/assets/images/Course/pascal03120.jpeg differ
diff --git a/assets/images/Course/pascal03121.png b/assets/images/Course/pascal03121.png
new file mode 100644
index 000000000..972b52865
Binary files /dev/null and b/assets/images/Course/pascal03121.png differ
diff --git a/assets/images/Course/selection-sort-001.gif b/assets/images/Course/selection-sort-001.gif
new file mode 100644
index 000000000..e5cb3dc28
Binary files /dev/null and b/assets/images/Course/selection-sort-001.gif differ
diff --git a/assets/images/favicon/Pasted image 20240312144718.png b/assets/images/favicon/Pasted image 20240312144718.png
new file mode 100644
index 000000000..fca8d410e
Binary files /dev/null and b/assets/images/favicon/Pasted image 20240312144718.png differ
diff --git a/assets/images/favicon/Pasted image 20240312144905.png b/assets/images/favicon/Pasted image 20240312144905.png
new file mode 100644
index 000000000..723444b5b
Binary files /dev/null and b/assets/images/favicon/Pasted image 20240312144905.png differ
diff --git a/assets/images/favicon/Pasted image 20240312163336.png b/assets/images/favicon/Pasted image 20240312163336.png
new file mode 100644
index 000000000..e4c165677
Binary files /dev/null and b/assets/images/favicon/Pasted image 20240312163336.png differ
diff --git a/assets/images/favicon/Pasted image 20240312163434.png b/assets/images/favicon/Pasted image 20240312163434.png
new file mode 100644
index 000000000..10adb12a1
Binary files /dev/null and b/assets/images/favicon/Pasted image 20240312163434.png differ
diff --git a/assets/images/favicon/Pasted image 20240312163500.png b/assets/images/favicon/Pasted image 20240312163500.png
new file mode 100644
index 000000000..00fbbf3cf
Binary files /dev/null and b/assets/images/favicon/Pasted image 20240312163500.png differ
diff --git a/assets/images/favicon/Pasted image 20240312163529.png b/assets/images/favicon/Pasted image 20240312163529.png
new file mode 100644
index 000000000..d039325f3
Binary files /dev/null and b/assets/images/favicon/Pasted image 20240312163529.png differ
diff --git a/assets/images/favicon/Pasted image 20240312165717.png b/assets/images/favicon/Pasted image 20240312165717.png
new file mode 100644
index 000000000..cc5e96d3e
Binary files /dev/null and b/assets/images/favicon/Pasted image 20240312165717.png differ
diff --git a/assets/images/favicon/Pasted image 20240312171428.png b/assets/images/favicon/Pasted image 20240312171428.png
new file mode 100644
index 000000000..ccde5b221
Binary files /dev/null and b/assets/images/favicon/Pasted image 20240312171428.png differ
diff --git a/assets/images/favicon/Pasted image 20240312174234.png b/assets/images/favicon/Pasted image 20240312174234.png
new file mode 100644
index 000000000..01d2a13b6
Binary files /dev/null and b/assets/images/favicon/Pasted image 20240312174234.png differ
diff --git a/assets/images/favicon/Pasted image 20240312174500.png b/assets/images/favicon/Pasted image 20240312174500.png
new file mode 100644
index 000000000..d23c3bf10
Binary files /dev/null and b/assets/images/favicon/Pasted image 20240312174500.png differ
diff --git a/assets/images/favicon/Pasted image 20240312230104.png b/assets/images/favicon/Pasted image 20240312230104.png
new file mode 100644
index 000000000..1fd45ec85
Binary files /dev/null and b/assets/images/favicon/Pasted image 20240312230104.png differ
diff --git a/assets/images/favicon/Pasted image 20240313102632.png b/assets/images/favicon/Pasted image 20240313102632.png
new file mode 100644
index 000000000..1064f9e35
Binary files /dev/null and b/assets/images/favicon/Pasted image 20240313102632.png differ
diff --git a/assets/images/favicon/Pasted image 20240315094800.png b/assets/images/favicon/Pasted image 20240315094800.png
new file mode 100644
index 000000000..c25958cb4
Binary files /dev/null and b/assets/images/favicon/Pasted image 20240315094800.png differ
diff --git a/assets/images/favicon/Pasted image 20240315102202.png b/assets/images/favicon/Pasted image 20240315102202.png
new file mode 100644
index 000000000..7f8248cab
Binary files /dev/null and b/assets/images/favicon/Pasted image 20240315102202.png differ
diff --git a/assets/images/favicon/Pasted image 20240317152855.png b/assets/images/favicon/Pasted image 20240317152855.png
new file mode 100644
index 000000000..69f6c189b
Binary files /dev/null and b/assets/images/favicon/Pasted image 20240317152855.png differ
diff --git a/assets/images/favicon/Pasted image 20240317161326.png b/assets/images/favicon/Pasted image 20240317161326.png
new file mode 100644
index 000000000..c90f94b31
Binary files /dev/null and b/assets/images/favicon/Pasted image 20240317161326.png differ
diff --git a/assets/images/favicon/Pasted image 20240317165437.png b/assets/images/favicon/Pasted image 20240317165437.png
new file mode 100644
index 000000000..54a87063e
Binary files /dev/null and b/assets/images/favicon/Pasted image 20240317165437.png differ
diff --git a/assets/images/favicon/Pasted image 20240317171032.png b/assets/images/favicon/Pasted image 20240317171032.png
new file mode 100644
index 000000000..414a14717
Binary files /dev/null and b/assets/images/favicon/Pasted image 20240317171032.png differ
diff --git a/assets/images/favicon/Pasted image 20240320225008.png b/assets/images/favicon/Pasted image 20240320225008.png
new file mode 100644
index 000000000..b365907b9
Binary files /dev/null and b/assets/images/favicon/Pasted image 20240320225008.png differ