분류 전체보기 (108)

 

 

 

이 글은 MacOS를 기준으로 작성되었습니다.

 

 

 

○ 패키지와 패키지 매니저

 

리눅스에서 패키지는 포장된 상품 패키지 매니저는 온라인 쇼핑몰

여러 파일을 담고있는 하나의 파일이 패키지

패키지의 구성

  • 프로그램 파일
  • 프로그램 설치 파일
  • 프로그램 설치 설명서
  • 프로그램에 대한 정보를 담은 파일

 

패키지에는 프로그램을 설치하기 위한 다른 프로그램 설치 파일 정보도 포함

 

 

 

MAC 패키지 매니저 : Homebrew

 

https://brew.sh/

 

Homebrew

The Missing Package Manager for macOS (or Linux).

brew.sh

 

 

 

 

애플 실리콘(M1) 사용 시 주의사항

기존 인텔 칩과 다른 ARM 아키텍처 사용하므로 인텔 칩 기준으로 만들어진 프로그램은 호환하지 않을 수 있음

→ 해결: 에뮬레이션 환경 Rosetta 설치

 

softwareupdate --install-rosetta

 

※ 현재 사용중인 프로세서(칩셋) 확인 명령어

uname -p

☞ arm : M1 칩셋

brew 명령어 전에 arch -x86_64 붙여줘야 함

arch -x86_64 brew install 설치할프로그램

 

 

 

 

 Read, Write, Execute 권한

 

 

drwxrwxrwx

 

프롬프트에  ls -l  입력했을 때

 

 ▷  -rw-r--r-- : -는 not directory라는 의미, 파일

 ▷  drwxr-xr-x : d는 directory라는 의미, 폴더

 ▷ 첫글자 뒤에 이어지는 r, w, x는  각각 읽기 권한(read permission), 쓰기 권한(write permission), 실행 권한(excute permission)

 ▷ 3번에 걸쳐 나타나는 이유? 순서대로 사용자와 그룹, 나머지에 대한 권한 표시

 

 

 

user, group, other

 

 ▷ user : 파일의 소유자, 파일을 만든 사람이 소유자가 됨

 ▷ group : 여러 명의 user 포함 가능, 그룹에 속한 모든 유저는 파일에 대한 동일한 권한 가짐, 많은 사람이 파일에 엑세스 해야 하는 프로젝트에서 여러명을 그룹에 추가하여 권한 한번에 할당

 ▷ other : 파일에 대한 엑세스 권한이 있는 다른 user, 파일을 만들지 않은 모든 유저, global 권한 설정

 

 

 

 

chmod 명령어

 

  • 읽기, 쓰기, 실행 권한을 변경하는 명령어
  • 로그인한 사용자와 소유자가 같을 경우에 chmod로 권한을 변경할 수 있음
  • 소유자가 다를 경우엔 sudo 명령어를 통해 권한 변경

 

변경하는 방법 (Symbolic method, Absolute form)

 

- Symbolic method

 

u/g/o +(add access)/-(remove access)/ =(set exact acess) r/w/x

a: all

 

Access class Operator Access Type
u (user) + (권한 주기) r (읽기)
g (group) - (권한 뺏기) w (쓰기)
o (other) = (권한 지정) x (실행)
a (all: u, g, o)    

 

ex)

chmod g-w filename

☞ group 의 write 권한 뺏기

 

 

 

- Absolute form

 

  • 숫자 7까지 나타내는 3bits 의 합으로 표기
  • r : 4, w : 2, x : 1
  • 만약에 user는 rwx 를 group는 rw-, other는 r--x 로  권한 변경
  • 숫자의 합을 user, group, other 순으로 입력
  • chmod 765 hello.java

ex)

chmod 751 filename

user : 4+2+1 ( 모든 권한 부여 ), group : 4 ( 읽기, 실행 권한 부여 ), other ( 실행 권한만 부여 )

 

 

 

 

 환경변수

 

프로그램 동작에 영향을 미치는 동적인 값들의 모임

스마트폰에서 환경설정으로 시스템을 세팅하는 것과 마찬가지로 환경변수를 설정해서 프로그램이 동작하는 환경을 설정함

 

 

 

지역 환경변수와 전역 환경변수

 

지역 환경변수: 생성한 특정 사용자만 사용할 수 있음

전역 환경변수: 모든 사용자가 사용할 수 있는 환경변수, 명령어 export 사용해서 새로운 환경변수 추가

[환경 변수 이름]='변수값'

등호  앞뒤에 공백이 없어야함

저장하고자 하는 변수에 공백 존재할 시 값 전체를 따옴표로 감싸주어야함

 

▶ 환경변수의 값 확인하기

echo 명령어로 확인

echo $환경변수

환경변수 앞에 달러표시($) -> 터미널에 뒤의 문자열이 환경변수라고 전달

 

 

 

환경변수 영구 적용하기

 

영구히 적용하면 터미널을 닫거나 재부팅해도 환경변수가 저장되어 있음

 

 

- 지역 환경변수 영구 적용하기

nano .zshrc 입력하여 편집창 열기

→ ^V (next page)로 마지막 페이지로 이동한 다음 설정하고자 하는 환경변수 작성하고 저장

ex) export LOCAL_EXPERIMENTAL_VARIABLE="This is local experimental variable"

→ source .zshrc 입력하여 변경 내용 저장

→ 출력: echo $LOCAL_EXPERIMENTAL_VARIABLE

참고) source 명령어 : 스크립트 파일을 수정한 후 수정된 값을 바로 적용하기 위해 사용하는 명령어

 

 

- 전역 환경변수 영구 적용하기

1. 변경하고자 하는 파일의 권한 수정(sudo chmod )
2. 파일 편집기로 들어가서 export [전역환경변수이름]=환경변수값 입력

3. source [파일이름] 입력하여 변경 내용 저장

4. 출력 (echo)

 

 

- 생성된 환경변수의 목록으로 확인하기

export 명령어

운영체제 내에 이미 설정되어있는 환경변수와 export 명령어로 설정한 환경변수를 목록으로 확인할 수 있음

 

- Windows 운영체제에서는 환경변수를 영구적으로만 설정할 수 있음

한번 설정해두면 사용자가 삭제하기 전까지 사라지지 않음

 

 

 

 

 

참고) 파일이 클 때 cat 명령어 대신 쓰는 명령어

 

cat 명령어는 항상 파일 안의 전체 내용을 출력하기 때문에 파일 용량이 크면 잘려서 나오는 등의 문제가 있음

cat 대신 부분만 보여주는 명령어 사용

 

 

1. head

파일의 지정한 만큼의 앞부분만 출력

텍스트 기반은 내용을 보여주지만 binary로 된 파일은 알 수 없는 문자로 출력됨

head [-n lines / -c bytes] [file]

head [파일명] : 앞에서 부터 10행만 보여줌

head -n 100  [파일명] : 앞에서 부터 100행(라인)까지 보여줌

head -100 [파일명 ]: 위와 동일

head -c 100 [파일명] : 앞에서 부터 100byte의 내용만 보요줌

head -100 [파일명] > 저장할파일명 : 출력되는 파일의 내용을 추출해서 저장

 

 

2. tail

head 와는 반대로 마지막 행을 기준으로 지정한 만큼 출력

리눅스에서 오류나 파일 로그를 실시간으로 확인할 때 매우 유용하게 사용됨

tail [옵션] [파일] : 지정한 행까지 출력할 때는 옵션 -n 사용 / 특정 행 부터 마지막 행ㄲ까지 출력하고 싶을 때는 +사용 / 바이트 기준으로 할 때는 -c / 실시간으로 모니터링 할 경우 -f

tail [파일] : 파일의 끝에서부터 10행만 보여줌

 

 

3. more

파일을 읽어 화면에 화면 단위로 출력

more [파일명]

왼쪽 하단에 출력한 내용이 전체의 몇 % 인지를 표시

엔터 키를 입력하면 한 줄씩 출력

스페이스 바를 입력하면 한 화면씩 출력

 

 

4. less

less는 한 번에 보여지는 만큼만 읽어서 출력

less [파일명]

엔터 키를 입력하면 한 줄씩 출력

스페이스 바를 입력하면 한 화면씩 출력

방향키로 페이지 이동 가능

 

 

 

 

 

 

 

 

이 글은 맥 OS를 기준으로 작성되었습니다.

 

 

 

 

○ CLI 와 GUI

 

 

명령줄 인터페이스(Command-Line-Interface, CLI)

 

  • 명령어로 컴퓨터를 제어하는 방식
  • 그래픽 작업을 안 거치기 때문에 빠르고 안정적
  • AWS(Amazon Web Service) 같은 서버는 CLI 사용
  • 터미널, 도스 등

 

 

그래픽 사용자 인터페이스(Graphic User Interface, GUI)

 

  • 사용자가 편리하도록 입출력 기능을 쉽게 그래픽으로 나타내어 클릭 등으로 쉽게 컴퓨터를 제어하는 방식
  • 그래픽에 컴퓨터 자원을 사용해서 CLI 보다는 느림
  • 윈도우, 맥 등

 

 

프롬프트(Prompt)

  • 터미널에서 키보드의 입력을 확인하고 편집할 수 있는 한 줄의 공간
  • CLI의 명령줄 대기모드

 

 

 

○ CLI 기본 명령어

 

 

 

※ CLI에서 명령어와 생성할 폴더 이름 사이 공백으로 구분

ex) mkdir wjcodding

 

pwd : 현재 위치 확인하기

print working directory의 약자

현재 작업중인 폴더 위치 출력

 

 

mkdir : 새로운 폴더 생성

make direcotries

 

 

ls : 특정 폴더에 포함된 파일, 폴더 확인하기

  • list의 약자
  • 자주 같이 사용하는 옵션(‘ - ‘를 이용해 옵션을 입력했다고 컴퓨터에 전달)
  • ls -l (파일의 포맷을 전부 표현)
  • ls -a (all, 숨어있는 폴더나 파일을 포함한 모든 항목 출력)
  • ls -al 또는 ls-la (옵션의 순서는 기능에 영향 미치지 않음)로 사용
  • -l 옵션에서 맨 앞에 d로 시작하는 건 폴더(directory), -로 시작하는 건 파일

 

 

open .

현재 위치를 GUI로 열음

 

 

cd

change directory의 약자

폴더로 진입

 

 

touch

파일을 생성

 

 

cat

  • 파일의 모든 내용을 터미널에 출력
  • 파일을 연달아 입력하면 순차적으로 출력
  • 크기가 큰 파일을 출력할 때는 비효율적

 

 

rm

  • remove 폴더나 파일 삭제
  • 휴지통을 거치지 않고 삭제됨
  • 파일 삭제할 떄는 'rm [파일명]' 으로 사용
  • 폴더 삭제할 때 rm [폴더명]만 입력하면 오류 뜸
  • 폴더 삭제시에는 'rm -r [폴더명]'

 

 

<자주 사용하는 옵션>

-f : force, 강제로 파일이나 폴더를 삭제하고 대상이 없는 경우에는 메시지를 출력하지 않음

-r : recursive(재귀적), 폴더 지움

-d : 비어있는 폴더들만 제거

-i : 매번 삭제할때마다 사용자에게 삭제할것인지 물어봄

-l : 3개의 이상의 파일을 삭제하거나 폴더 내부가 비어있지 않을때만 삭제할것인지 물어봄

-v : 삭제되는 대상의 정보를 출력

 

 

mv

  • move의 약자
  • 폴더나 파일의 이름 변경, 또는 위치 옮기기
  • 위치 옮기기: mv [옮길 폴더나 파일의 이름] [도착할 폴더 이름]
  • 이름 바꾸기: mv [바꿀 폴더나 파일 이름] [변경하고자 하는 이름]

 

cp

  • copy의 약자
  • 폴더나 파일 복사하기
  • 파일 복사하기: cp [원본 파일 이름] [복사할 파일 이름]
  • 폴더 복사하기: cp -rf [원본 폴더 이름] [복사할 폴더 이름]

 

 

clear

터미널 정리하기

 

 

history

이전에 사용한 명령어 확인하기

 

 

man

명령어 메뉴얼 확인하기

 

 

-h 또는 --help

명령어의 옵션 확인하기

명령어 이름만 입력해도 됨

 

 


 

 

○ 관리자 권한

 

절대 경로와 상대경로

 

절대경로

처음부터 시작하여 현재까지 절대적인 경로

기준점 : 루트 폴더(/,최상위)

' / '(root, 루트)는 Linux의 관리자 영역

Linux는 사용자와 관리자 명확히 분리

  • 사용자가 필요할 때마다 관리자권한(프로그램 변경, 설치, 삭제)만 부여받음
  • 루트폴더로 이동해서 mkdir로 폴더 생성하려하면 Read-only file system 에러(파일을 읽을 수만 있고 생성,변경,삭제는 할 수 없다는 뜻)

루트 폴더는 관리자의 영역임, 사용자 권한으로는 할 수 있는 일이 없음

현재 로그인된 사용자를 확인하는 명령어 : whoami

관리자는 사용자 폴더는 물론 시스템 자체에도 접근이 가능

관리자 권한으로 변경한 내용은 사용자 권한으로 해결 못함

 

 

상대경로

현재 위치를 기준으로 상대적인 경로

최상위(/)를 거치지 않고도 이동이 가능

 

 

사용자와 관리자

 

 

 

※ CLI 경로

.

현재폴더

 

..

현재 폴더보다 앞에 있는 폴더

 

/

경로 사이에 쓰는 슬래시는 폴더를 의미

폴더 대상일 땐 마지막 슬래시 생략 가능

~/helloWorld/hello/ 와 ~/helloWorld/hello 는 동일한 위치

 

~

현재 작업 폴더가 홈폴더라는 의미, 홈폴더로 이동하는 명령어

(Mac은 [사용자이름]@Macbook ~ %)

 

 

 

sudo

  • 사용자가 관리자 권한을 얻을 수 있는 명령어
  • 명령어 앞에 작성하면 관리자 권한으로 명령 실행
  • ex) sudo mkdir hello
  • 관리자(staff또는 root) 소유의 폴더
  • 관리자 권한으로 프로그램 설치,변경 또는 삭제하는 권한을 차단하여 시스템을 안전하게 보호
  • sudo를 사용한다고 사용자가 관리자가 되는 것은 아님!

 

 

 

 CLI 환경 에디터

 

  • vim(vi), emacs, nano 등
  • vim과 emacs는 진입장벽이 있음
  • nano는 리눅스, 맥에 기본으로 깔려있고 난이도가 쉬운 편

 

nano

실행: 'nano [파일명]' 또는 'nano' 명령어로 그냥 실행할 수 있다.

 

 

 

 

 

 

오늘 처음으로 페어 프로그래밍이란 것을 해보았다.

 

프로그래밍 목표는 Twittler Mockup 사이트 만들기 였다.

트위틀러는 트위터와 비슷한 클론 페이지를 만드는 예제이고

목업(Mockup)은 대부분의 산업에서 실물크기의 모형을 말하는데

웹, 앱 프로그래밍에서는 실제 페이지와 동일한 모양으로 구현하는 것이다.

 

페어 프로그래밍을 진행하는 방식은 두명 혹은 세명이 있으면 한명이 드라이버를 하고 나머지가 네비게이터를 하는 방식으로 진행한다. 드라이버는 화면을 공유하면서 직접 코드를 입력하면서 나무를 보는 역할이고 네비게이터는 드라이버에게 코딩 방향을 제시하고 전체적인 숲을 보는 역할이다.

 

프로그래밍을 코드샌드박스라는 플랫폼에서 진행했는데 중간에 자바스크립트에 있는 데이터가 연결이 안되서 하단 부분 데이터가 전부 날라가는 문제가 생겼었다.

게다가 실행 창이 반영이 잘 안되는 것 같아 VSCode로 옮겨가서 하려니까 이번엔 자바스크립트 파일에서 모듈 오류가 났었다.

해당 오류 때문에 데이터가 들어있는 자바스크립트와 연결이 제대로 되지 않아 데이터가 화면에 나오질 않았다...

 

개발자 도구에서 본 모듈 오류 화면

 

자바스크립트는 이미 코딩이 된 완성본을 받아서 한거고 나와 페어 모두 자바스크립트는 처음이라서 바로 해결하지 못하고 각자 찾아보기로 하였다. 알 수없는 오류에 좀 당황했지만 페어가 침착한 분이라 차분하게 생각할 수 있었다.

 

구글링을 해보니까 어느정도 자바스크립트에 대한 이해없이 바로 해결할 수 있는 문제는 아닌 것 같아 불편하더라도 코드샌드박스 홈페이지에서 할 수 밖에 없을 것 같았다. 코드를 복사해서 코드샌드박스를 새로 불러와서 붙여넣기하니까 다행히 정상적으로 작동했다. 페어는 flexbox 속성을 가진 태그에 자바스크립트를 불러오는 태그가 들어가서 그런 것 같다고 하였는데 정확하게 왜 그런진 모르겠다.

 

그래도 다시 정상적으로 코드가 돌아가서 시간안에 괜찮은 결과물을 완성할 수 있었다.

 

 

 

 

지금까지는 혼자 코딩하다가 다른 사람과 같이 프로젝트를 진행해보니까 내 약점과 강점이 보였다.

 

 

 

 

 

결과물을 자랑하는 시간도 가졌는데 우린 바로 당당하게 자랑할 수 있었다.

다 만들었을 때 그 보람과 뿌듯함은 굉장했고 페어에게 정말 감사했다 ! 😆

 

 

 

↓↓↓↓↓↓↓↓↓↓ 완성본 ↓↓↓↓↓↓↓↓↓↓↓↓

 

트위틀러 목업 페이지 전체 스크린샷

 

 

https://ic12jb.csb.app/

 

twittler

 

ic12jb.csb.app

 

'TIL(Today I Learned)' 카테고리의 다른 글

5/2 (월) Linux 기초2  (0) 2022.05.03
5/2 (월) Linux 기초  (0) 2022.05.02
4/28 (목) 페이지 레이아웃 / FlexBox  (0) 2022.04.28
4/27 (수) CSS 기초  (0) 2022.04.28
4/27 (수) HTML 기초  (0) 2022.04.27

 

 

※ 화면에 박스 위치를 (0,0)에서 시작하고 싶을 때 

브라우저에 따라 시작위치 다를 수 있음

 

* {

  box-sizing: border-box;

}
body {

  margin: 0;
  padding: 0;
  
}

 

 

▶ Flexbox

 

.example{

	display: flex

}

 

  • 부모 박스 요소에 'display: flex' 라는 속성을 적용
  • 자식 박스의 방향과 크기를 결정하는 레이아웃 구성 방법
  • 부모 요소에 속성을 지정하면 한번에 자식 요소의 속성을 넣을 수 있어 편리함

 

 

Flex 요소에 방향 지정(flex-direction)

 

.example
{
	display: flex;
	flex-direction: row;
{
  • flexbox의 자식 요소들의 방향 결정
  • row( 기본값 ) : 자식 박스 가로로 정렬 / column : 자식 박스 세로로 정렬
  • row-reverse : row 값에 오른쪽부터 정렬 / column-reverse : column 값에 아래쪽부터 정렬
  • display 속성에 flex 값은 부모 요소에 적용 (display: flex)

 

 

Flex 요소에 줄바꿈(flex-wrap)

 

.example {
	display: flex;
	flex-wrap: wrap;
}
  • flexbox의 자식 요소들이 강제로 한줄에 배치되게 할 것인지, 영역 내에서 줄바꿈 할 것인지를 결정
  • 속성값 : wrap(줄바꿈 허용), nowrap(줄바꾸지 않고 한줄에 배치), wrap-reverse(줄바꿈 반대로, 아래->위)

 

 

flex-flow

 

.example {
	display: flex;
  	flex-flow: column wrap;
}
  • flex-direction 속성과 flex-wrap 속성을 합쳐서 flex-flow 라는 속성으로 사용
  • 속성값은 차례대로 direction과 wrap

 

 

Flexbox 부모 요소에 적용하는 정렬 속성

  •  Main Axis 와 Cross Axis
    • Main Axis: flex-direction과 같은 방향 축
    • Cross Axis: flex-direction의 수직축

 

flex 방향(row 기준, column은 90도 돌린 방향)

  • justify-content : 자식 요소 main axis 선상 정렬
  • align-items : 자식 요소 cross axis 선상 정렬 
  • align-content : 자식 요소 cross axis 선상 정렬
    • wrap으로 설정된 경우에만 관련있음(줄바꿈이 있을때만)
    • 여러줄 있을 때 줄들 사이의 간격 지정

 

 

속성값

속성값 설명
flex-start flex 시작 부분으로 정렬
flex-end flex 끝 부분으로 정렬
center item들을 중앙으로 정렬
space-between item 사이의 일정하게 공간
space-around item 사이와 처음, 끝 부분에도 일정하게 공간

 

 

 

flex: grow shrink basis

 

문법 : flex: grow(팽창 지수) shrink(수축 지수) basis(기본 크기)

기본값 : 0 1 auto

자식요소에 각각 지정 가능

 

grow

  • 컨텐츠 크기만큼 자식박스 크기 자동으로 지정됨
  • grow 값은 전체 부모 박스 내에서 해당 자식 박스의 가로(또는 세로)의 비율
  • 값을 1로 지정하면 1/n , 2로 지정하면 2/n
  • 자식 박스의 전체 grow 값을 같게 지정하면 동일한 비율 차지
  • flex-grow 로 grow 속성만 변경 가능

shrink

설정한 비율만큼 박스가 줄어들음

grow 값과 basis 값을 지정하면 shrink 값은 계산하기 어려워지므로 grow 만 쓰는 것 추천

grow 값 지정하면 shrink 값은 지정 안하거나 1 로 지정

 

basis

자식 박스의 크기 최소 비율

 

 

☞  참고) CSS 아키텍쳐

 

1. BEM(Block-Element-Modifier)

 

  • CSS에서 구성요소를 블럭으로 나누어서 이름을 짓는 방법

 

 

  • 블럭안엔 블럭이 포함될 수 있음. 

 

ex) header block 안에는 Logo block, search block, navigation block 등이 들어갈 수 있음

  • ‘block__element--modifier’ 형식으로 분리

ex) .header__navigation--navi-text

 

2. Atomic CSS

 

  • 같은 속성을 지정해줄 요소끼리 같은 이름 지정하는 방식

ex) width 값을 70%로 지정 -> class=“w10”

      height 값을 100%로 지정 -> class=“h100”

 

 

 

 

 

 

https://developer.mozilla.org/ko/docs/Learn/CSS/CSS_layout/Flexbox

 

Flexbox - Web 개발 학습하기 | MDN

flexbox는 행과 열 형태로 항목 무리를 배치하는 일차원 레이아웃 메서드입니다. 항목은 부족한 공간에 맞추기 위해 축소되거나 여분의 공간을 채우기 위해 변형된다. 이 문서는 근간이 되는 내용

developer.mozilla.org

https://flexboxfroggy.com/#ko

 

Flexbox Froggy

A game for learning CSS flexbox

flexboxfroggy.com

↑ Flexbox 실습 페이지

 

○ CSS란?

 

  • Cascading Style Sheets
    • cascading ? css에서 작성하는 코드가 폭포같이 이어지기 때문
  • 웹페이지를 꾸미려고 작성하는 코드
  • 프로그래밍 언어도 마크업 언어도 아닌 Style Sheet 언어
  • HTML 요소들에 선택적으로 스타일을 적용할 수 있음

 

 

 

 

 

 HTML에 CSS 연결하기

 

  • html 문서 head에 <link rel="stylesheet" href="파일이름.css" /> 입력
  • html과 css를 같은 폴더에 저장한 경우 파일 이름만 작성, 경로가 다르면 경로 입력해야함
  • css 파일을 따로 작성하지 않고 html 문서에 속성 부여할 수도 있지만 관심사 분리 측면에서 권장되지 않음
  • 관심사 분리?
    • 관심사는 코드에 영향을 미치는 정보 집단
    • 코드에 조건이나 기능들이 추가되면 코드가 길어져서 가독성이 떨어짐
    • 관심사들은 따로 작성해서 분리하는 것이 좋은 코드

 

 

 

 CSS 기본 구조

 

CSS 기본 구조

 

셀렉터(selector) : html에서 스타일을 적용할 곳을 지정

선언(Declaration) : 1개의 스타일을 입력하고 세미콜론(;)

속성(Property) : 적용할 스타일 이름

속성값(Property Value) : 지정할 속성의 값을 입력

 

 

 

 

 


 

 

 셀렉터(selector)

 

- id

  • html 문서에 1개의 요소에만 적용할 수 있음
  • html에 <요소이름 속성1... 속성2... id=“id Name”>
  • CSS에서 해당 id에 적용할 때 ‘#id Name{ ... }

 

 

 

- class

  • html 문서에서 여러개의 요소에 한번에 적용할 때 사용
  • html에 <요소이름 속성1... 속성2... class=“class Name”>
  • CSS에서 해당 class에 적용할 때 ‘.class Name{ ... }
  • 하나의 요소에 띄어쓰기로 여러개의 class 적용 가능
<p class=“class1 class2 class3> </p>

 

 

- *

  • 전체 선택자
  • 페이지 전체 적용할 폰트(font-family) 또는 박스 사이즈를 border-line으로 셋팅할 때 사용
* {
	box-sizing: border-box;
}

 

 

- 유형 선택자

  • 해당 이름을 가진 모든 요소 선택
input {
	border: 1px solid red;
}

   ↑ 페이지 내 모든 input 요소 선택

 

 

- 선택자 목록

  • ' , ' 로 선택자 여러개 한번에 선택
input, button { }

 

 

- 자손 / 후손 결합자

  • '  '
  • 공백은 공백 앞 요소의 자손인 모든 공백 뒤 요소 선택
  • ex) div span { }  --> <div>의 자손인 모든 <span> 선택
  • 자손은 자식의 모든 하위 요소까지 포함 (자식의 자식, 자식의 자식의 자식, ...)

 

 

- 자식 결합자

  • ' > '
  • 첫번째 요소 바로 아래 자식인 요소들 선택
  • ex) div > span { } --> <div>의 자식인 모든 <span> 선택

 

 

- 일반 형제 결합자

  • ' ~ '
  • 첫 번째 요소와 같은 부모를 공유하는 두 번째 요소들 선택
  • ex) p ~ div { } --> <p>와 같은 부모를 공유하는 모든 <div> 선택

 

 

- 인접 형제 결합자

  • ' + '
  • 첫 번째 요소 바로 뒤에 위치하면서 같은 부모를 공유하는 두 번째 요소 선택
  • ex) p + div { } --> <p> 바로 뒤에 위치하는 <div> 선택

 

 

- 속성 선택자

  • 요소[속성]
  • 요소에 특정 속성이 있는지에 따라 요소 선택
  • ex) input[type="text"] --> input 요소에 속성이 'type' 이고 속성값이 'text' 인 모든 요소 선택

 

 

-의사 클래스/요소(pseudo-classes / pseudo-elements)

  • ' : ' / ' :: '
  • 의사 클래스(가상 클래스) ' : ' 는 요소가 특정 상태일 때만 스타일링
  • 자주쓰는 의사 클래스
pseudo-class 설명
:hover 마우스 포인터를 요소에 가리킬 때만 스타일 적용
:first-child 형제 요소 중 제일 첫 요소가 해당 요소일 때 선택
:last-child 형제 요소 중 제일 마지막 요소가 해당 요소일 때 선택
:nth-child(4) 형제 요소 중 해당 요소가 (4) 번째일 때 선택
:nth-child(even) / :nth-child(2n) 형제 요소 중 짝수번째 요소가 해당 요소일 때 선택
:nth-child(odd) / :nth-child(2n-1) 형제 요소 중 홀수번째 요소가 해당 요소일 때 선택
:first-of-type nth-child 와는 다르게 형제 요소 중 같은 요소 중에서 첫 번째 요소 선택
:last-of-type 형제 요소의 같은 요소들 중 가장 마지막 요소 선택
:nth-of-type(3) 형제 요소의 같은 요소들 중 (3) 번째 요소 선택
:not(:first-of-type) 부정 셀렉터, 요소 중 괄호 안의 조건을 만족시키는 요소를 제외한 모든 요소 선택

 

 

  • 의사 요소(가상 요소) ' :: ' 는 요소의 특정 부분을 선택
  • 자주쓰는 의사 요소
pseudo-element 설명
::first-line 해당 요소의 첫번째 줄만 선택
::first-letter 해당 요소의 첫번째 글자만 선택
::before 특정 요소의 내용(content) 부분 바로 앞에 다른 요소 삽입할 때 사용
::after 특정 요소의 내용(content) 부분 바로 뒤에 다른 요소 삽입할 때 사용
::selection 해당 요소에서 사용자가 선택한 부분만을 선택

 

 

 

- 정합성 확인 셀렉터

  • ':valid' / ':invalid'
  • valid는 정합성 검증이 성공한 요소에만 적용 / invalid는 정합성 검증이 실패한 요소에만 적용
  • ex) input[type="text"]:invalid { } --> input 요소 중 속성이 type="text"가 아닌 요소만 선택

 

 

- 셀렉터의 우선순위

한 요소에 대해서 서로 다른 셀렉터가 같은 속성의 다른 속성값을 가질 경우 셀렉터 우선순위에 따라 상위 우선순위의 속성값을 갖게 됨

 

!important (속성값 뒤에 작성, 우선순위 0순위) -> inline style (태그에 직접 스타일 지정)

-> id 셀렉터 -> class 셀렉터 -> 속성 선택자 -> 의사(가상) 클래스 -> 의사(가상) 요소 -> 태그 선택자 -> 전체 선택자

 

 

 

 


 

 

 

 박스 모델

  • 모든 content는 각자의 영역을 가지고 하나의 content로 묶이는 요소들이 하나의 박스가 됨
  • 박스는 항상 직사각형 모양이고 너비(width)와 높이(height)를 가짐
  • html의 블럭 레벨 요소는 CSS에서 width, height 속성이 적용되지만 인라인 레벨 요소는 적용되지 않음
  • CSS에서 inline 요소 태그에 ‘display: inline-block’ 를 추가하면 inline-block 요소로 성질이 변함
  • 줄은 바뀌지 않지만 고유 크기 지정해줄 수 있음

 

 

 

○ 박스에서 많이 쓰는 속성(Property)

 

  • width: 너비 (단위는 주로 px, % 사용)
  • height: 높이 (단위는 주로 px, % 사용)
  • border: padding 바깥 테두리 (value 차례대로 두께, 스타일, 색깔)

 

border 스타일 선 모양

 

  • padding: 컨텐츠 주위의 여백 (border의 안쪽 여백)
  • margin: 요소의 바깥 여백 (border의 바깥 여백)

 

 

padding, margin 은 공통적으로 위, 아래, 오른쪽, 왼쪽의 여백을 따로 지정할 수 있다.

 

padding: 10px 20px 30px 40px;

순서대로 위, 오른쪽, 아래쪽, 왼쪽 값

한개의 값만 지정하면 네 방향 동시에 같은  값 지정됨

 

 

padding-top: 10px;
padding-right: 20px;
padding-bottom: 30px;
padding-left: 40px;

네 방향 각각 따로 지정할 수 있음

참고) padding, margin 의 속성값을 두 개만 지정했을 경우 차례대로 위아래, 양쪽에 적용됨

 

 

  • background-color: 요소의 콘텐츠와 padding 의 배경 색
  • color: 한 요소의 콘텐츠 색 (일반적으로 글자색)
  • text-shadow: 한 요소 안의 글자에 그림자를 적용
  • display: 요소의 표시 형식을 설정합니다 (flexbox로 만들 때 사용)
  • border-radius: 모서리의 굴곡 설정 (둥근 모서리 만들때 사용)
  • shadow

 

 

 

 

< 참고 링크 >

 

https://developer.mozilla.org/ko/docs/Learn/Getting_started_with_the_web/CSS_basics

 

CSS 기초 - Web 개발 학습하기 | MDN

CSS (Cascading Style Sheets)는 웹페이지를 꾸미려고 작성하는 코드입니다. CSS 기초 에서 여러분이 처음 시작하며 필요한 내용을 익히도록 도와드립니다. 저희는 다음과 같은 질문에 관한 답을 드리겠

developer.mozilla.org

 

https://www.w3schools.com/

 

W3Schools Free Online Web Tutorials

W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.

www.w3schools.com

 

 

 

□ HTML이란?

 

- Hypertext Markup Language

- HTML은 프로그래밍 언어가 아닌 마크업(Markup) 언어

더보기

마크업 언어란? 태그 등을 이용하여 문서나 데이터의 구조를 명기하는 언어

- 웹페이지의 구조와 내용 기술

 

 

 

 

□ Visual Studio Code로 작성하기

 

- 새 파일 -> 언어선택 -> html -> 저장시 이름.html 형식으로 저장

- VSC에서 코드작성할 때 단락 자동 정렬해주는 extension

확장 탭에서 beauty 검색 -> 설치

정렬 원하는 코드 드래그 -> command+shift+b (Win: Ctrl+shift+b)

 

 

 

 

□ Element의 구조

 

  1. Opening tag(여는 태그): 요소 이름과 꺽쇠(<>)로 구성, 요소 시작
  2. Closing tag(닫는 태그): 여는 태그와 같은 모양 + 요소 이름 앞에 슬래시(/), 요소의 끝에 위치
  3. Contents(내용): 요소의 내용
  4. Element(요소): 여는 태그, 닫는 태그, 내용을 통틀여서 요소라고 함
  5. Attribute(속성): 요소에 추가적인 내용을 담고 싶을 때 사용, 속성 이름(Attribute name)과 속성 값(Attribute value)로 구성

 

 

Element의 구조

 

 

 

 

□ 요소의 중첩

 

- 요소안에 내포되게 중첩할 수 있음

- 어떤 요소의 여는 태그와 닫는 태그 사이에 새로운 요소 넣을 수 있음

- 안에 내포된 요소가 닫힌 후에 포함하고 있는 요소가 닫혀야 함

<head>
	<title>Test page</title>
</head>

 

 

 

 

□ 블럭 레벨 요소vs 인라인 요소(Inline level elements)

 

1. 블럭 레벨 요소(Block-level elements)
- 웹페이지에 블럭을 넣는 요소

- 블럭 레벨 요소 앞뒤에 새로운 Line 만들어서 블럭 레벨 요소 이전과 이후 요소 사이의 줄을 바꿈

- 페이지의 단락(Paragraph), 목록(list), 네비게이션 메뉴(Navigation Menu, 꼬리말(Footer) 등을 표현

- 인라인 요소에 중첩될 수 없음

- 블럭 레벨 요소는 다른 블럭 레벨 요소에 중첩될 수 있음

ex)<p> : 문단요소

 

 

2. 인라인 요소(Inline elements)

- 항상 블록 레벨 요소에 포함되어 있음

- 새로운 Line을 만들지 않음

- 인라인 요소에 블럭 레벨 요소를 넣을 수는 없음

ex) <a> : 하이퍼링크 정의

      <em> : 텍스트 이테릭체

      <strong> : 텍스트 볼드체

 

 

- 인라인과 블럭 레벨 요소의 특징이 섞인 Inline-Block 레벨 요소도 있음(

 

 

 

 

□ 빈 요소(Empty elements)

 

닫는 태그가 필요없이 단일 태그(Single tag)로 사용

닫는 태그를 사용해도 되지만 비효율적!

Ex) <img> : 이미지 삽입, <br> : 줄바꿈 요소, <hr> : 가로줄, <input> : 사용자에게서 데이터 받을 수 있는 요소, <link> : 외부 리소스의 관계 명시, <meta> : 해당 문서에 대한 정보인 메타데이터 정의

 

 

 

 

 속성(Attribute)의 규칙

 

  1. 요소 이름 다음에 오는 속성과 요소 사이엔 공백, 여러개의 속성 작성 할 땐 속성 사이에 공백
  2. 속성 이름 다음에 등호(=) 작성
  3. 속성 값은 따옴표(“”또는 ‘’)로 감싸야 함 (생략가능하지만 오류 발생할 수 있음)
<input type="text" placeholder="type here">

 

 

 

 요소에 속성 추가하기

 

<a href="https://naver.com" title="네이버" target="_blank">naver</a>

<a> : anchor 의미, 닻이 배를 항구로 연결하듯 텍스트를 감싸서 하이퍼링크를 만듦

href: 연결하고자 하는 웹 주소 지정

title: 링크에 대한 정보 추가, 마우스 옮겼을 때 나타남

target: 링크가 어떻게 열릴 것인지 지정, target=“_bland”는 새 탭에서 보여줌

 

 

 

 

 참과 거짓 속성(Boolean attributes)

 

값이 없는 속성

그 속성의 이름과 동일한 하나의 값만을 가짐

ex) disabled : 사용자가 데이터를 입력할 수 없도록 비활성화(회색으로 표시)

<input type="text" disabled>

 

 

 

 

 주석

 

<!- 주석내용 ->

사용자에게 보이지 않음

메모, 코딩 설명

 

 

 

 

 

  자주 쓰는 요소들

 

<!DOCTYPE html>: 초창기부터 쓰던 문법, 현재는 제대로 작동하기 위해 포함되어야하는 역사적 유물

<html></html> : html 요소, 전체 페이지의 콘텐츠 포함, 기본요소

<head></head> : 페이지에 보여지지 않지만 검색 결과에 노출될 키워드, 설명, CSS 스타일 등 페이지의 모든 내용 담음

<meta charset="UTF-8"> : 문서의 문자 인코딩을 UTF-8로 지정

 UTF-8이란 전세계 대부분의 문자를 포함한 유니코드 인코딩 방식, 가장 많이 사용됨

<title></title> : 브라우저 탭에 표시되는 이름

<body></body> : 텍스트, 이미지, 링크, 비디오, 오디오 등 페이지에 표시되는 모든 콘텐츠 포함

<ul></ul> : Unordered list 순서없는 리스트

<ol></ol> : Ordered list 순서있는 리스트

<ls></ls> : list 목록

<p></p> : paragraph 문단

<div></div> : division 앞뒤로 줄 바꿈됨

<span></span> : 인라인, 줄 바꿈 x, 문단내에서 일부에만 속성 적용할 때 주로 사용

<a></a> : 하이퍼링크

<img src="경로"> : 이미지 삽입

<input type="text" placeholder="입력 전 메세지"> : 사용자가 입력할 수 있는 박스, type의 기본값은 text

<button>버튼 안의 텍스트</button> : 클릭할 수 있는 버튼 박스

<link rel="stylesheet" href="경로"> : 외부 리소스 연결 요소, 주로 head에 작성, CSS 파일이나 웹 폰트 연결할 때 사용

 

 

 

 

 참고 링크

 

W3 School : https://www.w3schools.com/html/default.asp

 

HTML Tutorial

W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.

www.w3schools.com

HTML

 

 

 

튜토리얼: https://developer.mozilla.org/ko/docs/Learn/HTML/Introduction_to_HTML/Getting_started

 

HTML 시작하기 - Web 개발 학습하기 | MDN

HTML 기본 사항을 둘러 보셨기를 바랍니다.

developer.mozilla.org

 

<컴퓨터의 구성요소>

 

-소프트웨어

 

System Software

응용소프트웨어 실행 환경

하드웨어와 직접 소통, 동작 관리

커널과 OS를 포함

 

Application Software

응용소프트웨어

 

 

-하드웨어

 

CPU(중앙처리장치, 프로세서)

제어장치: 데이터의 흐름 제어, 컴퓨터의 자원 관리

연산장치: 프로그램의 코드에 따라 계산

레지스터: 작고 빠른 기억장치, 연산에 필요한 데이터를 임시 보관

 

보조기억장치

넓은 데이터 저장 공간

느린 속도

컴퓨터 내의 모든 메모리가 저장

ex) HDD(Hard disk drive), SSD(Solid State Drive)

CPU와 바로 통신하기에는 처리속도가 너무 느림

 

주기억장치

보조기억장치보다 훨씬 적은 공간

빠른 속도

CPU와 직접 통신

RAM(Random Access Memory), ROM(Read Only Memory)

 

캐시 메모리(cache memory)

주기억장치보다 빠르지만 CPU보단 느린 속도

자주쓰는 데이터를 저장

 

입력장치

마우스, 키보드

 

출력장치

스피커, 모니터

 

시스템 버스(system bus)

컴퓨터내에 존재하는 데이터가 이동하는 통로

데이터 버스, 주소 버스, 제어 버스

 

 

 

 

<프로그래밍 용어>

 

프로그래밍: 알고리즘을 컴퓨터가 알아들을 수 있는 언어로 작성하는 행위

프로그램: 프로그래밍으로 작성된 결과

프로그래밍 언어: 컴퓨터 언어(이진법)과 사람의 언어를 매개해주는 언어

                          컴퓨터 언어에 가까울 수록 Low Level(Assembly) <-> 사람의 언어에 가까울 수록 High Level(Java,C++,,)

컴파일: 작성한 코드를 컴퓨터가 이해할 수 있는 언어로 바꾸는 과정(빌드에 포함)

빌드: 프로그램을 실행할 수 있는 파일로 만드는 것(exe, msi 등)

통합개발환경(Integrated Development Environment, IDE): 코드를 작성하고 디버깅, 빌드 등을 모두 할 수 있는 개발 환경

 

 

 

 

<웹 클라이언트와 웹 서버>

 

클라이언트: 사용자에게 보여지는 부분

서버: 클라이언트에게 데이터를 보내는 부분

2-Tier architecture : 클라이언트와 서버로 분리, '클라이언트-서버 아키텍쳐'라고도 함

3-Tier architecture : 2티어 아키텍쳐 + 데이터베이스(데이터 보관)

자바 버전 확인

java -version

 

 

자바 버전 변경

export JAVA_HOME=$(/usr/libexec/java_home -v 11)

-v 뒤에 원하는 버전 입력

 

 

mac 잠자기 방지(컴퓨터에 카페인주기)

caffeinate

해제 : Ctrl + c

- 지속 시간 설정

caffeinate -t 원하는 시간 초단위 입력

- 디스플레이 꺼짐 방지

caffeinate -d 

 

사용중인 프로세서 확인

uname -p

 

 

 

 

 

1 ··· 8 9 10 11