[TIL] 1124 LikeLion๐Ÿฆ FES 18

์ด์ถ˜๊ตฌยท2021๋…„ 11์›” 24์ผ
0
  • unzip z.zip
    ์••์ถ•ํŒŒ์ผ z.zip์„ ์••์ถ•ํ•ด์ œํ•œ๋‹ค.

  • zip -r a.zip ./d
    ๊ฒฝ๋กœ d์— ์žˆ๋Š” ํŒŒ์ผ๋“ค์„ ์••์ถ•ํ•ด์„œ a.zip์ด๋ผ๊ณ  ํ•œ๋‹ค.

  • alias
    ํ˜„์žฌ ๊ฐ€๋ช…๋“ค์˜ ๋ชฉ๋ก์„ ์ถœ๋ ฅํ•œ๋‹ค.

  • alias ls='ls -a'
    ls -a๋ผ๋Š” ๋ช…๋ น์–ด๋ฅผ ls๋ผ๋Š” ๊ฐ€๋ช…์œผ๋กœ ํ•œ๋‹ค

  • unalias ls
    ls๋ผ๋Š” ๊ฐ€๋ช…์„ ์‚ญ์ œํ•œ๋‹ค.

  • apt-get install dnsutils
    - nslookup www.naver.com
    www.naver.com์ด๋ผ๋Š” ๋„๋ฉ”์ธ์˜ IP์ฃผ์†Œ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

  • apt-get install iputils-ping
    - ping www.github.com
    www.github.com์ด๋ผ๋Š” ๋„๋ฉ”์ธ์˜ ํ•‘์„ ๊ณ„์† ๋ณด๋‚ธ๋‹ค. ctrl + c๋กœ ์ค‘์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค.

    ๋„ค์ด๋ฒ„๋Š” ๊ณต๊ฒฉ์— ๋Œ€๋น„ํ•ด ๋ง‰์•„๋†“์•˜๋‹ค.

  • apt-get install traceroute
    - traceroute www.github.com
    www.github.com์ด๋ผ๋Š” ๋„๋ฉ”์ธ๊นŒ์ง€ ๊ฐ€๋Š” ๊ฒฝ๋กœ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
    *๋Š” ์ˆจ๊น€์ฒ˜๋ฆฌ์ด๋‹ค.

  • curl -o index.html www.paullab.com
    www.paullab.com์ด๋ผ๋Š” ๋„๋ฉ”์ธ์—์„œ ๋ฐ›์•„์˜จ ๋ฐ์ดํ„ฐ๋ฅผ index.html๋ผ๋Š” ํŒŒ์ผ๋กœ ์ €์žฅํ•œ๋‹ค.

  • chmod 700 text.txt
    chmod(Change Mode), ํŒŒ์ผ์˜ ์‚ฌ์šฉ์ž ๊ถŒํ•œ์„ ๋ณ€๊ฒฝํ•œ๋‹ค.
    ll๋กœ ํด๋” ๋‚ด๋ถ€์˜ ํŒŒ์ผ๋“ค์˜ ์ž์„ธํ•œ ์ •๋ณด๋ฅผ ์ถœ๋ ฅํ•˜๋ฉด, ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
    ๋นจ๊ฐ„ ์ค„๋กœ ํ‘œ์‹œํ•œ ๋ถ€๋ถ„์€ ๋‹ค์Œ์„ ์˜๋ฏธํ•œ๋‹ค.
    ํŒŒ์ผ์˜ ์ข…๋ฅ˜ / ์†Œ์œ ์ž ๊ถŒํ•œ / ๊ทธ๋ฃน ์‚ฌ์šฉ์ž ๊ถŒํ•œ / ๊ธฐํƒ€ ์‚ฌ์šฉ์ž ๊ถŒํ•œ
    ๊ถŒํ•œ์€ r, w, x๊ฐ€ ์žˆ์œผ๋ฉฐ ๊ฐ๊ฐ ์ฝ๊ธฐ(4), ์“ฐ๊ธฐ(2), ์‹คํ–‰(1)์„ ๋œปํ•œ๋‹ค.
    ๊ด„ํ˜ธ ์•ˆ์˜ ์ˆซ์ž๋Š” ์ ์ˆ˜์ธ๋ฐ ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐ–๋Š” ๊ถŒํ•œ๋“ค์— ํ•ด๋‹นํ•˜๋Š” ์ˆซ์ž๋ฅผ ๋”ํ•ด์„œ ๋‚˜ํƒ€๋‚ธ๋‹ค.
    1(์‹คํ–‰), 2(์“ฐ๊ธฐ), 3(์“ฐ๊ธฐ+์‹คํ–‰), 4(์ฝ๊ธฐ), 5(์ฝ๊ธฐ+์‹คํ–‰), 6(์ฝ๊ธฐ+์“ฐ๊ธฐ), 7(์ฝ๊ธฐ+์“ฐ๊ธฐ+์‹คํ–‰)
    ์˜ˆ๋ฅผ ๋“ค์–ด, 700์˜ ๊ฒฝ์šฐ, ์†Œ์œ ์ž(7), ๊ทธ๋ฃน ์‚ฌ์šฉ์ž(0), ๊ธฐํƒ€ ์‚ฌ์šฉ์ž(0)์œผ๋กœ ์†Œ์œ ์ž๋Š” rwx๋ฅผ ์ „๋ถ€ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ  ๊ทธ๋ฃน ์‚ฌ์šฉ์ž์™€ ๊ธฐํƒ€ ์‚ฌ์šฉ์ž๋Š” ์•„๋ฌด ๊ถŒํ•œ๋„ ๋ชป ๊ฐ–๋Š” ๊ฒƒ์ด๋‹ค.

์•„๋ž˜์˜ ์ด๋ฏธ์ง€์—์„œ ์›๋ž˜ text.txt๋Š” -rw-rw-r--์ธ๋ฐ chmod 700 test.txt ์ดํ›„์—

-rwx------์œผ๋กœ ๋ณ€๊ฒฝ๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.


SASS

Syntactically Awesome Style Sheet๋Š” CSS์˜ preprocessor(์ „์ฒ˜๋ฆฌ๊ธฐ)์ด๋‹ค.
ํ”„๋กœ์ ํŠธ์˜ ๊ทœ๋ชจ๊ฐ€ ์ปค์ง€๋ฉด์„œ ์Šคํƒ€์ผ์‹œํŠธ์˜ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ํž˜๋“ค์–ด์ง€๋Š” ๊ฑธ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ๋‚˜์™”๋‹ค.

ํŠน์ง•

  • CSS๋ณด๋‹ค ๊ฐ€๋…์„ฑ์ด ๋†’๊ณ  ์žฌ์‚ฌ์šฉ์—๋„ ์œ ๋ฆฌํ•˜๋‹ค.
  • ๋ธŒ๋ผ์šฐ์ €๊ฐ€ SASS ํŒŒ์ผ์„ ์ฝ์ง€ ๋ชปํ•˜๋ฏ€๋กœ CSS ํŒŒ์ผ๋กœ ๋ฒˆ์—ญํ•ด์ฃผ๋Š” ์ปดํŒŒ์ผ ๊ณผ์ •์ด ํ•„์š”ํ•˜๋‹ค.
  • SASS๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ์‹์—” .sass, .scss ๋‘๊ฐ€์ง€๊ฐ€ ์žˆ๋Š”๋ฐ .scss๊ฐ€ CSS์™€ ๋™์ผํ•˜๊ฒŒ ์ค‘๊ด„ํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ต์ˆ™ํ•˜๊ณ  ํŽธํ•˜๋‹ค.

ํŒŒ์ผ ๋ถ„๋ฆฌ

์ปดํฌ๋„ŒํŠธ, ์šฉ๋„ ๋ณ„๋กœ ํŒŒ์ผ๋“ค์„ ๋ถ„๋ฆฌํ•˜๊ณ  ์ด๋ฆ„ ์•ž์— _๋ฅผ ๋ถ™์ด๋ฉด ๊ฐ์ž ์ปดํŒŒ์ผ๋˜์–ด ๋‹ค๋ฅธ ํŒŒ์ผ๋กœ ๋ถ„๋ฆฌ๋˜๋Š” ๊ฑธ ๋ฐฉ์ง€ํ•˜๊ณ  import ํ•˜๊ณ  ์žˆ๋Š” ํ•˜๋‚˜์˜ ํŒŒ์ผ๋กœ ๋ณ‘ํ•ฉํ•  ์ˆ˜ ์žˆ๋‹ค.
_header.scss, _main.scss, _footer.scss, _variables.scss, _mixin.scss

style.scss
@import "header";
@import "main";
@import "footer";
@import "variables";
@import "mixin";

์œ„ ํŒŒ์ผ๋“ค์€ ์ปดํŒŒ์ผ์„ ๊ฑฐ์น˜๋ฉด style.css๋ผ๋Š” ํ•˜๋‚˜์˜ ํŒŒ์ผ๋กœ ์ปดํŒŒ์ผ ๋œ๋‹ค.

์ฃผ์„

scss ํŒŒ์ผ์—์„œ // ํ•œ ์ค„ ์ฃผ์„์ด๋‚˜ /**/ ์—ฌ๋Ÿฌ์ค„ ์ฃผ์„ ๋ชจ๋‘ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜์ง€๋งŒ css ํŒŒ์ผ๋กœ ์ปดํŒŒ์ผํ•˜๋ฉด ์—ฌ๋Ÿฌ์ค„ ์ฃผ์„๋งŒ ๋‚จ๋Š”๋‹ค.

  • scss
// ํ•œ ์ค„ ์ฃผ์„
/* ์—ฌ๋Ÿฌ์ค„ ์ฃผ์„ */
  • css
/* ์—ฌ๋Ÿฌ์ค„ ์ฃผ์„ */

์ค‘์ฒฉ

scss๋Š” HTML์ฒ˜๋Ÿผ ์š”์†Œ๊ฐ„ ๊ณ„์ธต ๊ด€๊ณ„๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ๋ณด์—ฌ์ฃผ๋Š” ๋ฐฉ์‹์œผ๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์–ด์„œ ๊ฐ€๋…์„ฑ์ด ์ข‹๋‹ค.

  • scss
ul {
    list-style: none;
    li {
        color: red;
        font-size: 20px;
    }
}
  • css
ul {
  list-style: none;
}

ul li {
  color: red;
  font-size: 20px;
}

์„ ํƒ์ž ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์†์„ฑ๋„ ์ค‘์ฒฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

  • scss
.add-icon {
    background : {
        image: url("./assets/arrow-right-solid.svg");
        position: center center;
        repeat: no-repeat;
        size: 14px 14px;
    }
}
  • css
.add-icon {
  background-image: url("./assets/arrow-right-solid.svg");
  background-position: center center;
  background-repeat: no-repeat;
  background-size: 14px 14px;
}

&(ampersand)

&๋Š” ๋ถ€๋ชจ์š”์†Œ๋ฅผ ๋œปํ•œ๋‹ค. ๊ธฐ์กด CSS์—์„œ ๊ฐ€์ƒ์š”์†Œ๋‚˜ ๊ฐ€์ƒํด๋ž˜์Šค ๋“ฑ์„ ๋ถ™์ผ ๋•Œ ๊ผญ ๋ถ€๋ชจ์š”์†Œ๋ฅผ ๋ช…์‹œํ•ด์ค˜์•ผ ํ•˜๋Š” ๊ฒƒ๊ณผ ๋‹ค๋ฅด๊ฒŒ & ํ•˜๋‚˜๋งŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์–ด์„œ ๊ฐ„ํŽธํ•˜๋‹ค.

  • scss
.box {
    width: 100px;
    height: 100px;
    background-color: green;
    transition: all 1s;
    &:hover {
        background-color: pink;
    }
}

.box {
	&:focus{}
	&:hover{}
	&:active{}
	&:first-child{} 
	&:nth-child(2){}
	&::after{}
	&::before{} 
}
  • css
.box {
  width: 100px;
  height: 100px;
  background-color: green;
  -webkit-transition: all 1s;
  transition: all 1s;
}

.box:hover {
  background-color: pink;
}

.box:focus{}
.box:hover{}
.box:active{}
.box:frist-child{}
.box:nth-child(2){}
.box::after{}
.box::before{}

@at-root

๊ณ„์† ์ค‘์ฒฉ๋˜์–ด ๋“ค์–ด๊ฐ€๋‹ค๊ฐ€ ์ค‘์ฒฉ์—์„œ ๋ฒ—์–ด๋‚˜๊ณ  ์‹ถ์€ ์š”์†Œ ์•ž์— ๋ถ™์ด๋ฉด ์ค‘์ฒฉ์—์„œ ๋ฒ—์–ด๋‚œ๋‹ค.

  • scss
.article {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-top: 10px;
    .article-content {
        font-size: 14px;
        opacity: 0.7;
        @at-root i {
            opacity: 0.5;
        }
    }
}
  • css
.article {
    display: -webkit-box;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-pack: justify;
    -ms-flex-pack: justify;
    justify-content: space-between;
    -webkit-box-align: center;
    -ms-flex-align: center;
    align-items: center;
    margin-top: 10px;
}

.article .article-content {
    font-size: 14px;
    opacity: 0.7;
}

i {
    opacity: 0.5;
}

๋ณ€์ˆ˜

CSS์—์„œ var()์™€ ๋น„์Šทํ•œ ๊ธฐ๋Šฅ์ด๋‹ค.
๋‘ ๋ฒˆ ์ด์ƒ ๋ฐ˜๋ณต๋˜๋Š” ๋™์ผํ•œ ์†์„ฑ๊ฐ’์„ ๋ณ€์ˆ˜๋กœ ๋งŒ๋“ค๋ฉด, ์ˆ˜์ •ํ•  ์ผ์ด ์ƒ๊ฒผ์„ ๋•Œ ํ•˜๋‚˜ํ•˜๋‚˜ ์ˆ˜์ •ํ•  ํ•„์š”๊ฐ€ ์—†๊ฒŒ ๋œ๋‹ค.
์ƒ‰์ƒ, ํฐํŠธ, ์ด๋ฏธ์ง€ url๋“ฑ CSS ์ „์ฒด์— ๊ฑธ์ณ ๋ฐ˜๋ณต๋˜๋Š” ์†์„ฑ๊ฐ’๋“ค์„ ์ •์˜ํ•ด๋†“๋Š” ๊ฒŒ ํŽธํ•˜๋‹ค.

  • scss
$bg-color: #3e5e9e;
$font-p: 13px;
$base-font: "Noto Sans KR", sans-serif;

body {
    background-color: $bg-color;
    font-size: $font-p;
    font-family: $base-font;
}
  • css
body {
  background-color: #3e5e9e;
  font-size: 13px;
  font-family: "Noto Sans KR", sans-serif;
}

๋ณ€์ˆ˜ ํƒ€์ž…(์ž๋ฃŒํ˜•)

์ผ๋ฐ˜์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ๋ณ€์ˆ˜์— ์ž๋ฃŒํ˜•์ด ์žˆ๋“ฏ์ด SCSS์˜ ๋ณ€์ˆ˜์—๋„ ์ž๋ฃŒํ˜•์ด ์žˆ๋‹ค.
1. numbers : 1, .82, 20px, 2em ๋“ฑ
2. strings : "./images/a.png", bold, left, uppercase ๋“ฑ
3. colors : green, #FFF, rgba(255,0,0,.5) ๋“ฑ
4. booleans : true, false
5. null
6. lists

$font-size : 10px 12px 16px; //ํฐํŠธ์‚ฌ์ด์ฆˆ ๋ฆฌ์ŠคํŠธ
$image-file : photo_01, photo_02, photo_03 //์ด๋ฏธ์ง€ ํŒŒ์ผ๋ช… ๋ฆฌ์ŠคํŠธ
//์•„๋ž˜์™€ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ์‚ฌ์šฉ(์ˆœํšŒ๋„ ๊ฐ€๋Šฅ) - ruby sass
nth(10px 12px 16px, 2); // 12px
nth([line1, line2, line3], -1); // line3

lists ๊ด€๋ จ ๋‚ด์žฅํ•จ์ˆ˜
- append(list,value,[separator]) : lists์˜ ๊ฐ’์„ ์ถ”๊ฐ€ํ•˜๋Š” ํ•จ์ˆ˜
- index(list,value) : lists์˜ ๊ฐ’์— ๋Œ€ํ•œ ์ธ๋ฑ์Šค๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜
- nth(list, n) : lists์˜ ์ธ๋ฑ์Šค์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์„ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜

  • scss
$font-size: 10px 12px 16px; //ํฐํŠธ์‚ฌ์ด์ฆˆ ๋ฆฌ์ŠคํŠธ

.one {
    font-size: nth($font-size, 2);
}

.two {
    font-size: nth($font-size, -1);
}
  • css
.one {
  font-size: 12px;
}

.two {
  font-size: 16px;
}

7. maps

$font-weights: ("regular": 400, "medium": 500, "bold": 700); //๊ธ€์ž ๊ตต๊ธฐ ๋ฆฌ์ŠคํŠธ
//์•„๋ž˜์™€ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ์‚ฌ์šฉ - ruby sass
map-get($font-weights, "medium"); // 500
map-get($font-weights, "extra-bold"); // null

map๊ด€๋ จ ๋‚ด์žฅํ•จ์ˆ˜
- map-get(map,key) : ํ‚ค์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์„ ๊ฐ’์„ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜
- map-keys(map) : map์— ๋“ค์–ด์žˆ๋Š” ํ‚ค(key) ์ „๋ถ€๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜
- map-values(map) : map์— ๋“ค์–ด์žˆ๋Š” ๊ฐ’(value) ์ „๋ถ€๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜

  • scss
$font-weights: (
    "regular": 400,
    "medium": 500,
    "bold": 700,
);

div {
    font-weight: map-get($font-weights, "medium");
}
  • css
div {
  font-weight: 500;
}

๋ณ€์ˆ˜ ์Šค์ฝ”ํ”„

๋ณ€์ˆ˜๋‹ต๊ฒŒ ์Šค์ฝ”ํ”„๋„ ์กด์žฌํ•œ๋‹ค. ์ „์—ญ๋ณ€์ˆ˜๋Š” ์–ด๋–ค ์„ ํƒ์ž์—์„œ๋‚˜ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๊ณ , ์ง€์—ญ๋ณ€์ˆ˜๋Š” ๋‹ค๋ฅธ ์„ ํƒ์ž ๋‚ด์—์„œ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•œ๋‹ค.

  • scss
$font-p : 15px; // ์ „์—ญ๋ณ€์ˆ˜ ์„ ์–ธ

.info {
    $line-normal: 1.34; // ์ง€์—ญ๋ณ€์ˆ˜ ์„ ์–ธ
    font-size: $font-p; // ์ „์—ญ๋ณ€์ˆ˜ ์‚ฌ์šฉ๊ฐ€๋Šฅ
    line-height: $line-normal;
    text-align: right;
    span {
        line-height: $line-normal;
    }
}

div {
    color: red;
    line-height: $line-normal; // ์ง€์—ญ๋ณ€์ˆ˜ ์‚ฌ์šฉ๋ถˆ๊ฐ€
}

์ง€์—ญ๋ณ€์ˆ˜๋ฅผ ์ „์—ญ๋ณ€์ˆ˜๋กœ ๊ฐ•์ œํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

  • scss
.info {
    $line-normal: 1.34 !global; // ์ง€์—ญ๋ณ€์ˆ˜๋ฅผ ์ „์—ญ์œผ๋กœ ๊ฐ•์ œํ•จ
    font-size: 15px;
    line-height: $line-normal;
    text-align: right;
    span {
        line-height: $line-normal;
    }
}

div {
    color: red;
    line-height: $line-normal; // ์‚ฌ์šฉ๊ฐ€๋Šฅํ•ด์ง
}

mixin

์„ ํƒ์ž๋“ค ์‚ฌ์ด์—์„œ ๋ฐ˜๋ณต๋˜๋Š” ์†์„ฑ๋“ค์„ mixin์œผ๋กœ ๋ฌถ์–ด์„œ ๋ฐ˜๋ณต์„ ์ค„์ธ๋‹ค.
์ค‘๋ณต๋˜๋Š” ์†์„ฑ์€ mixin์œผ๋กœ ๋งŒ๋“ค์–ด ๋†“๊ณ  ์›ํ•˜๋Š” ์„ ํƒ์ž ๋ธ”๋Ÿญ์— ํ•ด๋‹น mixin์„ includeํ•˜๋ฉด ๋œ๋‹ค.
์•„๋ž˜์˜ CSS ์ฝ”๋“œ์—์„œ .card์™€ .aside๋Š” background ์†์„ฑ๋งŒ ์ œ์™ธํ•˜๊ณ  ๊ฐ™์€ ์†์„ฑ์„ ๊ฐ–๊ณ ์žˆ๋‹ค.

.card {
	display: flex;
	justify-content: center;
	align-items: center;
	background: gray;
}

.aside {
	display: flex;
	justify-content: center;
	align-items: center;
	background: white;
}

์•„๋ž˜์ฒ˜๋Ÿผ @mixin์˜ ์ด๋ฆ„์„ ์ •ํ•ด์ฃผ๊ณ  { } ์•ˆ์— ๊ณตํ†ต๋œ ์†์„ฑ์„ ์ž‘์„ฑํ•œ ๋’ค,
@include๋กœ mixin์„ ๋ถˆ๋Ÿฌ์„œ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

@mixin center-xy{
	display: flex;
	justify-content : center;
	align-items : center;
}

.card{
	@include center-xy;
}

.aside{
	@include center-xy; 
}
profile
ํ”„๋ŸฐํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž

0๊ฐœ์˜ ๋Œ“๊ธ€