728x90
728x90
  1. 코드를 좌우로 정렬해준다
<html>
    <head>
        <meta charset = "utf-8">
        <title>Document</title>
        <link href = "css/main.css" rel = "stylesheet">
    </head>
    <body class="backgroundimagesea">
        <div class= "container">
            <div class="header"> </div>
            <div class="left-menu"></div><div class="right"></div>
            <div class="footer"></div>
        </div>
    </body>
</html>
  1. css에서 Inline block 설정을 해준다
.left-menu {
    width:20%;
    height:400px;
    background-color: rgba(12, 50, 242, 0.5);
    display: inline-block;

    
}

.right {
    width:80%;
    height:400px;
    background-color: rgba(40, 112, 242, 0.5);
    display: inline-block;
}

.footer {
    width: 100%;
    height: 50px;
    background-color: rgba(12, 112, 242, 0.7);

}

위의 코드는 박스를 만들어 왼쪽으로 정렬시키는 코드다.

display 속성만 inline-block 으로 조정하면 가로로 배치가 가능하다.

inline-block은 “내 폭과 높이만큼 자리차지하게 해주세요” 라는 뜻이다.

간편하지만 태그 사이에 스페이스바 공백이 있다면 그대로 보여준다

→ 가로로 정렬하려면 태그 사이의 공백도 제거해줘야 함

  • 공백제거하는 방법
  1. 주석처리 기호 사용하기
  2. 부모의 폰트사이즈를 0으로 만들기

정상적으로 된다

 

💡 부모 태그로부터 inherit되는 속성은 중요도가 가장 낮다

 

<html>
    <head>
        <meta charset = "utf-8">
        <title>Document</title>
        <link href = "css/main.css" rel = "stylesheet">
    </head>
    <body class="backgroundimagesea">
        <div class= "container">
            <div class="header"> </div>
            <div class="left-menu"></div><div class="right"></div>
            <div class="footer">
                <P>찬란한 미래를 위하여 </P.>
            </div>
           
        </div>
    </body>
</html>

이렇게 글자를 쓰면 이상하게 나온다. 해결책은 Vertical-allign을 사용해야 한다.

중앙 정렬을 하는 역할.

inline을 사용하면 Baseline을 따르게 되기 때문이다.

  1. 코드를 좌우로 정렬해준다
<html>
    <head>
        <meta charset = "utf-8">
        <title>Document</title>
        <link href = "css/main.css" rel = "stylesheet">
    </head>
    <body class="backgroundimagesea">
        <div class= "container">
            <div class="header"> </div>
            <div class="left-menu"></div><div class="right"></div>
            <div class="footer"></div>
        </div>
    </body>
</html>
  1. css에서 Inline block 설정을 해준다
.left-menu {
    width:20%;
    height:400px;
    background-color: rgba(12, 50, 242, 0.5);
    display: inline-block;

    
}

.right {
    width:80%;
    height:400px;
    background-color: rgba(40, 112, 242, 0.5);
    display: inline-block;
}

.footer {
    width: 100%;
    height: 50px;
    background-color: rgba(12, 112, 242, 0.7);

}

위의 코드는 박스를 만들어 왼쪽으로 정렬시키는 코드다.

display 속성만 inline-block 으로 조정하면 가로로 배치가 가능하다.

inline-block은 “내 폭과 높이만큼 자리차지하게 해주세요” 라는 뜻이다.

간편하지만 태그 사이에 스페이스바 공백이 있다면 그대로 보여준다

→ 가로로 정렬하려면 태그 사이의 공백도 제거해줘야 함

  • 공백제거하는 방법
  1. 주석처리 기호 사용하기
  2. 부모의 폰트사이즈를 0으로 만들기

정상적으로 된다

<aside> 💡 부모 태그로부터 inherit되는 속성은 중요도가 가장 낮다

</aside>

<html>
    <head>
        <meta charset = "utf-8">
        <title>Document</title>
        <link href = "css/main.css" rel = "stylesheet">
    </head>
    <body class="backgroundimagesea">
        <div class= "container">
            <div class="header"> </div>
            <div class="left-menu"></div><div class="right"></div>
            <div class="footer">
                <P>찬란한 미래를 위하여 </P.>
            </div>
           
        </div>
    </body>
</html>


이렇게 글자를 쓰면 이상하게 나온다. 해결책은 Vertical-allign을 사용해야 한다.

중앙 정렬을 하는 역할.

inline을 사용하면 Baseline을 따르게 되기 때문이다.

728x90
300x250
728x90
728x90

자바스크립트

→ Html, css와 함께 웹을 구성하는 요소 중 하나

→ 웹 브라우저에서 동작하는 유일한 프로그래밍 언어

  • 기존의 프로그래밍 언어에서 많은 영향을 받음
  • 기본 문법은 c, 자바와 유사
  • 셀프에서는 프로토타입 기반 상속
  • 스킴에서는 일급함수의 개념을 차용

인터프리터 언어

개발자가 별도의 컴파일 작업을 수행하지 않음

→ 대부분의 모던 자바스크립트 엔진은 인터프리터와 컴파일러의 장점을 결합

→인터프리터는 소스코드를 즉시 실행하고 컴파일러는 빠르게 동작하는 머신 코드를 생성하고 최적화

→컴파일 단계에서 추가적인 시간이 필요함에도 더욱 빠르게 코드를 실행할 수 있다.

컴파일러 언어 인터프리터 언어

코드가 실행되기 전 단계인 컴파일 타임에 소스코드 전체를 한번에 머신 코드로 변환한 후 실행 코드가 실행되는 단계인 런타임에 문 단위로 한 줄씩 중간 코드인 바이트코드로 변환한 후 실행한다
실행 파일을 생성한다 실행 파일을 생성하지 않는다
컴파일 단계와 실행 단계가 분리되어 있다. 명시적인 컴파일 단계를 거치고, 명시적으로 실행 파일을 실행한다 인터프리트 단계와 실행 단계가 분리되어 있지 않다. 인터프리터는 한 줄씩 바이트코드로 반환하고 즉시 실행한다
실행에 앞서 컴파일은 단 한번 수행한다 코드가 실행될 때마다 인터프리트 과정이 반복 수행된다
컴파일과 실행 단계가 분리되어 있으므로 코드 실행 속도가 빠르다 인터프리트 단계의 실행 단계가 분리되어 있지 않고 반복 수행되므로 코드 실행 속도가 비교적 느리다

💡 대부분의 모던 브라우저에서 사용되는 인터프리터는 전통적인 컴파일러 언어처럼 명시적인 컴파일 단계를 거치지는 않지만 복잡한 과정을 거치며 소스코드를 컴파일하고 실행한다

 

 💡 인터프리터 언어의 장점인 동적 기능 지원을 살리면서 실행 속도가 느리다는 단점을 극복한다. 따라서 컴파일러와 인터프리터의 기술적 구분이 점차 모호해져 가는 추세다. 하지만 자바스크립트는 런타임에 컴파일되며 실행 파일이 생성되지 않고 인터프리터의 도움 없이 실행할 수 없기 때문에 컴파일러 언어라고는 할 수 없다.

 

자바스크립트 : 명령형, 함수형 , 프로토타입 기반 객체지향 프로그램을 지원하는 멀티 패러다임 프로그래밍 언어

→ 강력한 객체지향 프로그래밍 능력을 지니고 있음

→ 상속, 정보 은닉을 위한 키워드가 없어서 객체지향 언어ㄹ가 아니라고 오해 하는 경우도 있지만, 자바스크립트는 클래스 기반 객체지향 언어보다 효율적이면서 강력한 프로토타입 기반의 객체지향 언어이다.

728x90
300x250
728x90
728x90

오전 회고


처리한 일

  • 프로그래머스 3일차 문제 풀기
  • 코딩애플 Html/css 5강 듣기/ 필기하기
  • 딥다이브 1장 공부하고 필기하기
  • 딥다이브 2장 공부하고 필기하기;

 


9시부터 10시까지 : 노션에다가 오늘의 타임라인을 짜고, 딥다이브 책을 보기 시작했다

10시~12시: 딥다이브를 보고, 코딩애플을 html/css 5강을 수강햇다

12시부터 1시까지 프로그래머스랑 오전 회고록까지 다 끝내려고 했는데…

프로그래머스 포스팅 다 끝내보니 1시였다.

점심시간은 무조건 정해져 있는대로 습관을 들이는게 좋기도 하고

같이 공부하고 있는 남자친구랑도 정해진 약속이라 1시에 나갔다


프로그래머스 3일차 문제 풀기

https://insidepixce.tistory.com/124

https://insidepixce.tistory.com/125

https://insidepixce.tistory.com/127

https://insidepixce.tistory.com/126

https://insidepixce.tistory.com/123

https://insidepixce.tistory.com/122

https://insidepixce.tistory.com/122

코딩 테스트를 위해..서도 있지만 알고리즘이 너무 재밌다

하루에 다섯 문제 풀기 프로젝트 중인데 오늘은 6문제 풀었네

프로그래머스를 풀며 스프레드 문법에 좀 더 익숙해졌다.

이 부분도 포스팅 해볼 생각이다.


코딩애플 5강 듣기

https://insidepixce.tistory.com/128

 

[코딩애플 html/css] 5강 : div를 이용한 네모네모 디자인

5강 : div를 이용한 네모네모 디자인 future fullstack developer insidepixce 우리의 찬란한 일기(본문)이동하기 동서대학교 정보보안학과 1학년 코딩을 정복하고 말테야! 이 상황에서 div를 사용해서 네모네

insidepixce.tistory.com

노션에 전부 작성하고 글을 옮기는데, 왜인지 사진이 자꾸만 안옮겨지는 오류가 생긴다.

복사 붙여넣기 하기 힘들다…


딥다이브 1장 / 2장

https://insidepixce.tistory.com/115

https://insidepixce.tistory.com/116

https://insidepixce.tistory.com/117

https://insidepixce.tistory.com/121

https://insidepixce.tistory.com/120

https://insidepixce.tistory.com/119

https://insidepixce.tistory.com/118

https://insidepixce.tistory.com/121

오늘 배웠던 내용을 전부 노션에 정리하고 티스토리에도 다시 정리해주었다.

항상 공부를 할때 깊은 곳까지, 어떤 클래스가 어디로 상속되는지까지 다 이해해야 성에 차는데 딥다이브라는 책이 내 니즈를 어느정도 충족시켜준다는 느낌이 든다.

코딩애플도, 딥다이브도, 프로그래머스도 전부 초심부터 시작하자 ! 라는 다짐에서 진행하게 되었다.

얼마 전 내가 너무 자만했다는 사실을 알게 되었고 모르는 부분이 참 많다… 라는 생각이 들었는데 기초 강의를 들으면서 아는 부분은 후루룩 듣고 지나가고, 모르는 부분이 나오면 그거에 대해서 공부해보는거라 좋다.

물론 강의 내용에 내가 몰랐던 부분에 대한 날카로운 해석이 나오지는 않지만, 그래도 괜찮다. 내가 직접 공부하는게 더 재밌다.


오늘 오전에 시간 활용도는 참 높았다. 9시부터 시작하여 쉬는 시간이 20분이 채 안 되었으며, 내가 미리 정해둔 스케쥴대로 딱딱 맞춰 진행되었다.

그동안 계획이 틀어져서 밤샘을 할 때가 많았는데, 좀 더 효율적으로 시간을 관리하는 법을 찾은 것 같다.


 

728x90
300x250
728x90
728x90

5강 : div를 이용한 네모네모 디자인

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Document</title>
    <link href="css/main.css" rel="stylesheet">
</head>  
<body style="background-image:url('source/backgroundsea.jpeg');">
    <img src="source/Myselfie.jpeg" class="profile">
    <h1 class="title">future fullstack developer</h1>
    <h3 class="ido"> insidepixce</h3>
    <p class="texty">우리의 찬란한 일기(본문)<a href="https://insidepixce.tistory.com/">이동하기</a></p>
    <p class="title"><strong>동서대학교 정보보안학과 1학년<br>코딩을 정복하고 말테야!</strong></p>
    
</body>
</html>

이 상황에서 div를 사용해서 네모네모 디자인을 만들어보자

<div></div>

<p> 태그들 밑에 <div>태그를 넣어주었다. 지금은 가로세로 길이가 없어서 아무것도 안 보인다.

<div class="box"></div>

먼저 div 태그 안에 class를 지정해주었다.

.box {
    width: 500x;
    height: 500px;
    background-color:#0C70F2 ;
    padding: 40px;
    border: 10px dotted white;
    border-radius: 25px;
    opacity:0.5;
    display: block;
    margin-left: auto;
    margin-right: auto;
}

디자인은 이렇게 해주었다.

제목란

잘 적용된 것을 알 수 있다.

  • 중앙 정렬 하는 3줄
margin-left: auto;
margin-right: auto;
display: block;

박스 안에 글자를 추가해보았다

<div class="box">
        <p>don't ever say it's over if i'm breathin</p>
  • Inherit


따로 뭔가를 지정하지는 않았는데 , 투명도까지 그대로 상속하게 된다. (일부 스타일만) 이를 inherit이라고 한다 .

.texty {
    text-align: center;
    color: black;
    font-weight: bolder;
    opacity: 1;
}
<p class= "texty"> don't ever say it's over if i'm breathin</p>

texty라는 클래스에 opacity(투명도) 값을 1로 줘봤지만 여전히 투명하게 떠서 , 이유를 알아본 결과

opacity 속성이 .box 클래스에 설정되어 있기 때문이라는 답변을 찾았다. opacity 속성은 요소 내의 모든 콘텐츠에 적용되며, 따라서 요소 내의 텍스트도 투명해지게 된다.

대안으로 RGBA 를 사용할 수 있다.

.box {
    width: 500px;
    height: 500px;
    background-color: rgba(12, 112, 242, 0.5); /* 반투명한 파란색 */
    padding: 40px;
    border: 10px dotted white;
    border-radius: 25px;
    display: block;
    margin-left: auto;
    margin-right: auto;
}

Rgba값으로 변경해주고, <p>태그에 opacity를 설정해 주었다(사실 설정 안 해줘도 불투명하게 잘 나온다)

이렇게 잘 나온걸 볼 수가 있다.

흠… 뭔가 딥웹에 있을법한 디자인이다 ;;

여기서 좀만 더 다크하게 하면

send your bitcoin 버튼 있을 것 같은 느낌

이런 느낌으로 바꾸어주었는데 사실 사진이 없는 게 더 예쁠 것 같단 생각이 들었다

.box {
    width: 500px;
    height: 500px;
    background-color: rgba(12, 112, 242, 0.5); /* 반투명한 파란색 */
    padding: 20px;
    box-shadow: 0 0 0 5px rgba(1, 1, 0, 0.5);
    border-radius: 25px;
    display: block;
    margin-left: auto;
    margin-right: auto;
    margin-top: 20px;
}

Css에서는 투명한 테두리를 지원하지 않는다고 해서 다른 방법을 찾다가 box-shadow 를 알게되어 사용해보았다.

좀 잘 어울리는것 같다.

사진은,,,뭐 빼야지

2030에 만들어진 웹사이트처럼 생겼다…

아직도 딥웹 비트코인 세탁소 느낌을 버리지 못한 나의 웹.

디자인만 할 때는 이런 고민 안 했는데 ㅠ

일단 이번 강의는 여기까지.

 

728x90
300x250
728x90
728x90

ECMAScript

  • 자바스크립트의 표준 사양인 ECMA-262를 말하며, 프로그래밍 언어의 값, 타입, 객체와 프로퍼티, 함수, 표준 빌트인 객체 등 핵심 문법을 규정
  • ㄷ사양을 준수해서 브라우저에 내장되는 자바스크립트의 엔진을 구현

자바스크립트는

→ 기본 뼈대를 이루는 ECMAScript와

→ 브라우저가 별도 지원하는 클라이언트 사이드 Web API

  • DOM, BOM, Canvas, XMLttpRequest, fetch, requestAnimationFrame, SVG, Web storage 등

→ 이들을 아우르는 개념

💡 클라이언트 사이드 web api는 ECMAScript와는 별도로 월드 와이드 웹 콘소시엄에서 별도의 사양으로 관리하고 있다. 클라이언트 사이드 Web API 의 자세한 내용은 MDM Web docs 의 web api 를 다룰때 또 살펴보도록 하자

 

728x90
300x250
728x90
728x90

02-3 자바스크립트 성장의 역사

초창기 자바스크립트: 웹페이지의 보조적인 기능을 수행하기 위해 한정적인 용도로 사용됨

  • 대부분의 로직은 웹 서버에서 실행
  • 브라우저는 서버로부터 전달받은 html과 css를 단순히 렌더링하는 수준

02-3.1 Ajax

Ajax란?

→서버와 브라우저가 ‘비동기’ 방식으로 데이터를 교환하는 통신 기능

→XMLHttpRequest라고 함

 

이전의 웹페이지

→ Html 태그로 시작해 Html 태그로 끝나는 완전한 Html 코드를 서버로부터 전송받아 웹페이지 전체를 렌더링하는 방식으로 동작

→ 화면이 전환되면 서버로부터 새로운 html 코드를 서버로부터 전송받아 웹페이지 전체를 처음부터 다시 렌더링함

→변경이 필요없는 부분까지 포함한 html 코드를 서버로부터 다시 전송받음

→불필요한 데이터 통신/ 성능 면에서 불리

→ 화면이 전환되면 화면이 순간적으로 깜박이는 현상이 발생하고, 이는 웹페이지의 어쩔 수 없는 한계였음

 

Ajax의 등장 후

→ 웹페이지에서 변경할 필요가 없는 부분은 다시 렌더링하지 않고, 서버로부터 필요한 데이터만 전송받아 변경

→ 한정적으로 렌더링하는 방식이 가능해짐

02-3.2 jquery

jQuery의 등장

  • 웹페이지에서 자주 사용되는 기능들을 간편하게 구현 가능
  • 다양한 브라우저에서 동일한 동작 보장
  • Ajax 통신을 쉽게 구현 가능

jQuery의 인기

  • 많은 웹 개발자들이 사용하여 생산성 향상
  • 많은 플러그인 제공으로 다양한 기능 구현 가능
  • jQuery를 기반으로 한 다양한 JavaScript 라이브러리와 프레임워크 등장

02-3.3 V8 자바스크립트 엔진

V8 자바스크립트 엔진의 등장

  • 구글 크롬 웹 브라우저의 등장과 함께 발표
  • 빠른 속도로 자바스크립트 코드를 실행할 수 있게 됨
  • 자바스크립트의 서버 사이드 프로그래밍이 가능해짐

엔진으로 촉발된 자바스크립트의 발전으로 과거 웹 서버에서 수행되던 로직들이 대거 클라이언트로 이동했고,

웹 애플리케이션 개발에서 프론트엔드 영역이 주목받는 계기가 됨

02-3.4 Node.js

: 구글 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임 환경

  • 브라우저의 자바스크립트 엔진에서만 동작하던 자바스크립트를 브라우저 이외의 환경에서도 동작할 수 있게 함. (실행환경)
  • 서버 사이드 애플리케이션 개발에 자주 사용됨

서버사이드 애플리케이션은 서버에서 실행되는 애플리케이션으로, 클라이언트에서 요청한 데이터를 받아 처리하고 결과를 반환한다. 이를 통해 웹사이트나 모바일 앱 등에서 서버와 데이터를 주고받을 수 있다.

  • 아예 필요한 모듈, 파일 시스템, Http 등 빌트인 api를 제공한다
  • 자바스크립트 엔진을 기반으로 함으로 노드 환경에서 동작하는 애플리케이션은 자바스크립트를 사용해 개발
  • 비동기 I/o 지원
  • 단일 스레드 이벤트 루프 기반으로 동작 → 요청 처리 성능이 좋다
  • cpu사용량이 많은 어플리케이션엔 추천하지 않는다

💡 Node.js는 대규모 애플리케이션에 적합하지 않은 경우가 있음

  • 대규모 트래픽 처리 및 CPU 집약적인 작업 처리와 같은 경우에는 다른 기술과 조합해 사용하는 것이 좋음
  • 대표적으로는 멀티 프로세싱을 지원하는 PM2 등이 있음 

02-3.5 SPA 프레임워크

Single Page Application(SPA)는 페이지가 하나인 애플리케이션으로, 필요한 부분만 동적으로 변경되는 방식으로 동작

  • 브라우저에서 필요한 부분만 데이터를 요청하고, 받아서 화면을 갱신하는 방식으로 동작
  • 초기 구동 시간이 길고 검색 엔진 최적화(SEO)에 취약하다는 문제점이 있었으나, 이러한 문제점을 해결하기 위한 다양한 방법이 등장
  • 대표적인 SPA 프레임워크로 Angular, React, Vue.js 등이 있음
728x90
300x250
728x90
728x90

1999.6, 마이크로소프트 jscript를 인터넷 익스플로러에 탑재함

→ 그 자바스크립트와 jscrip가 표준화되지를 못하고 적당히 호환되었다

→ 그 둘은 점유율을 높이기 위해 자사 브라우저에서만 동작하는 기능을 경쟁적으로 추가하기 시작함

→ 호환성이 떨어지며 크로스 브라우징 이슈가 생기기 시작

→ 표준화된 자바스크립트의 필요성이 대두되시작함

→ ECMA에서 자바스크립트의 표준화를 요청함

버전 출시연도

es1 1997 초판  
es2 1998 ISO/IEC 16262 국제 표준과 동일한 규격을 사용  
es3 1999 정규 표현식 try…catch  
es4 2009 html1 5와 함께 출현한 표준안. 중간은 생략했다. 지금 우리가 쓰는게 기본적인 것들이 es6에 다 나와잇다.
es6 2015 let/const 클래스 화살표 함수 템플릿 리터럴 디스트럭쳐링 할당 스프레드 문법 Rest파라미터, 심벌, 프로미스,. 이터러블 , for…of , 제너레이터 . Proxy모듈, Import/export  
728x90
300x250

'2023 공부한것들' 카테고리의 다른 글

[02-4] 자바스크립트와 ECMAScript  (0) 2023.06.26
[02-3] 자바스크립트 성장의 역사  (0) 2023.06.26
[02-1] 자바스크립트의 탄생  (0) 2023.06.26
[01-3] 구문과 의미  (0) 2023.06.26
[01-2] 프로그래밍 언어  (0) 2023.06.26
728x90
728x90

02-1 자바스크립트의 탄생

1995년, 약 90%의 시장을 점유하고 있던 넷스케이프 커뮤니케이션은 웹페이지의 보조적인 기능을 수행하기 위해 브라우저에서 동작하는 경량 프로그래밍 언어를 도입하기로 결정한다.

→브랜던 아이크의 자바스크립트

연혁

→ 1996. 넷스케이프 내비게이터2 탑재 (당시 모카로 명명)

→ 1996. 9 라이브스크립트로 개명

→ 1996.12 자바스크립트로 개명

728x90
300x250

'2023 공부한것들' 카테고리의 다른 글

[02-3] 자바스크립트 성장의 역사  (0) 2023.06.26
[02-2] 자바스크립트의 표준화  (0) 2023.06.26
[01-3] 구문과 의미  (0) 2023.06.26
[01-2] 프로그래밍 언어  (0) 2023.06.26
[01-1] 프로그래밍이란?  (0) 2023.06.26

+ Recent posts