• Background Changer

 HEX Color Code란 RGB 방식의 '색상 코드' 표기법이다. #뒤에 여섯 자리의 글자가 오는데, 이는 0~9까지의 숫자 4개와 A~F까지의 알파벳 2개로 이루어져 있다. 예를 들면, #75E9A3, #F0C433 이런 것이다. 한 자리에  16가지가 들어갈 수 있으므로 16진수라고 보면 되겠다. 그렇다면 이런 헥스 코드로 만들 수 있는 색상의 수는 총 16^6으로 16,777,216개이다.

 

 1. 요구 사항

 - 위와 같은 UI를 만든다.

 - CLICK ME 버튼을 클릭 시 #3474FF(헥스 코드)가 랜덤하게 바뀐다.

 - CLICK ME 버튼을 클릭 시 헥스 코드가 바뀜과 동시에, 바뀐 헥스 코드에 일치하는 배경색으로 바뀐다.

 

 2. 나의 풀이

3시간 정도 걸린 것 같다.

 

 - HTML + CSS

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <title>Background Changer</title>
    <style>
      .wrap {
        height: 100vh;
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
      }

      p {
        font-size: xx-large;
      }

      button {
        font-size: xx-large;
        padding: 20px;
        border-radius: 5px;
        background-color: gray;
        color: white;
        border: black;
      }
    </style>
    <script defer src="js_vanilla_BackgroundChanger.js"></script>
  </head>
  <body>
    <div class="wrap">
      <p>
        HEX COLOR :
        <span>#0021FQ</span>
      </p>
      <button>CLICK ME</button>
    </div>
  </body>
</html>

 display: flex과 flex-direction: Column을 통해 HEX COLOR 문단과 CLICK ME 버튼을 열로 나열했다.

 align-items: center와 justify-content: center를 통해 HEX COLOR 문단과 CLICK ME 버튼을 정중앙에 배치시켰다.

 defer src를 통해 JavaScript 파일을 불러왔다.

 

 - JavaScript

 

var arr = [
  "0",
  "1",
  "2",
  "3",
  "4",
  "5",
  "6",
  "7",
  "8",
  "9",
  "A",
  "B",
  "C",
  "D",
  "E",
  "F",
];

var button = document.querySelector("button");
var body = document.querySelector("body");
var span = document.querySelector("span");

button.addEventListener("click", function hexCode() {
  let result = "#";

  for (var i = 0; i < 6; i++) {
    var randomNumber = Math.floor(Math.random() * arr.length);
    var randomIndex = arr[randomNumber];
    result += randomIndex;
  }

  body.setAttribute("style", "background-color: " + result);
  span.textContent = result;
});

 일단 헥스 코드를 구성하는 16가지의 글자로 이루어진 배열부터 만들었다. 이부분은 힌트를 참조했다...

 

 CLICK ME라는 버튼을 "click"하면 function hexCode()가 실행되도록 이벤트를 추가했다.

 

 - function hexCode() 

1. 일단 헥스 코드가 #부터 시작할 수 있게, 또한 계속해서 변수가 재할당 될 수 있도록 let result = "#"을 선언했다.

2. 헥스 코드는 #을 제외한 6개의 글자로 이루어지므로 6번 반복되는 for문을 만들었다.

3. 0부터 1미만의 난수를 추출하는 Math.random과 뒤의 소수를 없애는, 내림시키는 Math.floor를 사용하면 무작위의 정수를 출력시킬 수 있다.

 

 Math.random() 실행 시 0.336288..., 0.749572..., 0.182934과 같은 0과 1사이의 난수가 추출된다. 여기에 10을 곱하면, 즉 Math.random() * 10을 실행하면 3.36288..., 7.49572..., 1.82934...와 같은 숫자가 출력된다. 여기에 Math.floor까지 실행하면, 즉 Math.floor(Math.random() * 10) 실행 시 숫자가 내림되므로 3, 7, 1과 같은 0부터 10미만의 정수가 랜덤하게 출력되는 것이다.

 

 중간에 10이 아니라 16을 곱했다면 0부터 16미만의 정수가 랜덤하게 출력된다. 이를 통해서 배열의 Index가 랜덤하게 추출되는 코드를 짤 수 있는데, 그대로 짠 것이 var randomNumber이다. 이러한 0부터 16미만의 랜덤한 정수를 arr 배열의 Index로 넣으면, arr 배열의 value들을 랜덤하게 추출할 수 있다.

 

 그리고 result += randomIndex를 통해, for문 안에서 6번 실행될 때마다 문자열이 계속해서 더해질 수 있도록 했다.

ex)

i = 0, result = "#" + "A" = "#A"

i = 1, result = "#A" + "6" = "#A6"

i = 2, result = "#A6" + "B" = "#A6B"

...

 

4. 마지막으로 setAttribute를 통하여 body에 style 속성을 추가하고 background-color가 result 값(for문을 마치면 최종적으로는 헥스 코드가 되어있다)에 맞게 설정되도록 했다. 또한 textContent를 통해 UI에 나타나는 헥스 코드 또한 result 값이 나타나도록 했다. 

  • HTML이란

Hypertext Markup Language의 줄임말로, 프로그래밍 언어가 아니며 '웹사이트'를 만드는 가장 기초가 되는 'Mark Up'언어이다. 특별한 기호나 표기를 사용해 글의 서식과 스타일을 정해주는 언어를 뜻한다.

 

마크업 언어가 무엇인지 사실 감이 잘 잡히지 않았었다. 몇 번 반복하다보니 감이 오는데, 함축적인 단어 표현을 통해 글의 구조, 내용, 스타일 등을 꾸밀 수 있게 해주는 언어를 말하는 것 같다.

 

바닐라코딩 사이트의 HTML 코드

생활코딩에서 HTML, CSS, Javascript도 들어보고 SW사관학교 정글 자료를 보면서 공부도 했었지만, 잘 만들어진 페이지의 코드를 보면 여전히 모르는 것이 많다.

 

  • 태그, Tag

태그란 '<'와 '>' 사이에 어떤 단어(태그)를 적는 것이다.

<br> br 태그는 줄바꿈을 실행시킨다.
<p> p 태그는 paragraph의 약자이다. 말 그대로 단락을 표현할 때 사용되는 태그이며 자동으로 줄바꿈이 실행된다.</p>

HTML Tag의 특징으로는 여는 태그와 닫는 태그가 있다는 것이다. 한 예시로, 제목을 나타낼 때 자주 쓰는 h1 태그가 있다.

<h1>바닐라코딩</h1>
개발자 도전기
<br>
hello world

이와 같이 <h1> 다음 </h1>을 적어 '바닐라코딩'부분만이 제목으로 사용되게 할 수 있다. 닫는 태그에는 '/'가 추가된다. 태그의 종류는 무수히 많다. 이걸 하나하나 공부해가며 외울 필요는 없고, 필요할 때 검색을 통하여 알아내면 된다. 혹은 https://developer.mozilla.org/ko/docs/Web/HTML/Element 모질라 사이트에서 검색하면 빠르게 찾아낼 수 있다.

 

  • 문서의 구조
<!DOCTYPE html>
<html lang="ko">
<head>
   <meta charset="UTF-8">
</head>
<body>
   <h1 id="profile">프로필</h1>
   안녕하세요
   <br>
   바닐라코딩을 준비하고 있는 사람입니다.
   <p>
   현재는 설비엔지니어로 일하고 있고, 개발자가 되기를 희망하고 있습니다.
   </p>
</body>
</html>

HTML의 구조는 대부분 위와 같이 html 태그 안에서 head와 body로 이루어진다.

 

   - html : 웹 브라우저에게 HTML 코드가 해당 태그 내부에 존재한다고 알려준다.

   - head : 외부 소스를 참조할 때 사용한다. 예로 jQuery나 Bootstrap, 구글 폰트를 따오는 코드가 head 태그 안으로 들어가게 된다. style 태그로 CSS가 들어가기도 하고 script 태그로 JavaScripr가 들어가기도 한다.

   - body : 웹 브라우저는 이 태그에 포함되어 있는 내용들을 화면에 보여준다. 페이지의 내용을 구성하는 부분이라고 보면 된다.

 

  • HTML에서 이미지 추가하기
<img src="https://techbullion.com/wp-content/uploads/2021/06/Hire-Web-Developer.jpg" alt="developer">

HTML에서 이미지는 말그대로 img 태그를 통해 구현할 수 있다. 이 때 src는 source의 약자이고 여기에 이미지의 주소나 파일 이름을 기입하면 된다. 여기서 src는 속성, attribute이다. 포함하고자 하는 이미지로의 경로를 지정할 때 사용된다. 그러므로 img 태그를 사용할 때 src는 필수이다.

 

alt는 alternative의 약자로, 이미지의 간단한 설명을 나타낼 때 사용된다. alt는 필수는 아니지만 네트워크 오류 혹은 콘텐츠 차단, 죽은 링크로 인해 이미지를 표현할 수 없을 때 alt 속성 값이 대신 나타나며 사용자에게 차단된 이미지가 어떤 것이었는지 암시해줄 수 있다.

 

  • HTML 링크
    <a href="https://www.vanillacoding.co"
      ><img
        src="https://techbullion.com/wp-content/uploads/2021/06/Hire-Web-Developer.jpg"
        alt="developer"
      />바닐라코딩 홈페이지</a
    >
    <br />

    <a href="mailto:tmdwns0570@naver.com">이메일 보내는 링크</a>
    <br />

    <a href="tel:114">전화를 거는 링크</a>
    <br />

    <a href="#profile">프로필로 가기</a>

링크는 우리가 원하는 공간(페이지)로 이동할 수 있게 해준다. a 태그를 이용하고 href 속성값에 따라 어떤 페이지로 갈지가 정해진다. a 태그는 '바닐라코딩 홈페이지'라는 글씨 뿐만 아니라 img 태그도 감쌀 수 있어, 사진에도 링크를 걸 수 있다.

 

또한, mailto: 혹은 tel:을 href에 기입해 클릭 시 이메일을 보내거나 전화를 걸 수 있다.

 

그리고 id 값을 기입하면 HTML 문서 내의 같은 id 값을 가진 곳으로 이동한다. 보통 id는 HTML 문서에서 1개만 지정되기 때문에 이동하는 곳이 중복되지 않는다. 예로, 내가 h1 태그에 id 값으로 profile을 부여했으면, 다른 태그에는 id 값으로 profile을 부여하지 않는 것이 원칙이다.

 

    <style>
      a[href^="https"]::before {
        content: "🔗 ";
      }

      a[href^="mailto"]::before {
        content: "📧 ";
      }

      a[href^="tel"]::before {
        content: "📞 ";
      }

      li {
        margin-bottom: 0.5rem;
      }
    </style>

위는 CSS인데, HTML 문서를 꾸며줄 때 사용되는 언어이다. a 태그의 href 속성값에 https, mailto, tel이 들어가면 각각에 해당되는 아이콘을 앞에 붙여줄 수 있다.

 

  • 절대경로와 상대경로

   - 절대경로 : 전체 인터넷을 기준으로 해당 자료의 위치 표현

   - 상대경로 : 같은 파일 시스템 구조 상의 위치 표현

 

사실 처음 듣는 개념이고 Prep Guide만으로는 이해가 안되어 검색을 해봤다.

 

절대경로란, 최초의 시작점으로 경유한 경로를 전부 기입하는 방식이다. 내가 만약 윈도우 OS의 바탕화면에 index.html 파일을 두었다고 가정하면, C:\Users\Administrator\Desktop\index.html이 절대경로가 되는 것이다. (이 때 Administrator는 UserID로, 각 사용자의 이름에 따라 달라질 것이다)

 

어떠한 OS든 이렇게 최상위의 경로, 즉 모든 경로를 기입한 절대경로로만 파일을 찾을 수 있다. 그렇다면 상대경로는 왜 생겼을 까.

 

상대경로는 이름처럼 상대적인 개념이 적용되는데, 항상 그 기준이 필요하다. C:\Users\Administrator\Desktop\index.html처럼 절대경로가 아니라, 만약 Desktop\index.html 혹은 index.html이라고 표현되어 있다면 해당 경로는 어디를 나타내는 것인가? 이는 기준 경로에 따라 결정된다. 만약 기준(비교 대상)이 C:\SSJ라면 두 경로는 C:\SSJ\Desktop\index.htmlC:\SSJ\index.html이 된다.

 

상대경로가 필요한 이유는, index.html의 경로가 항상 일정한 것이 아니고 바뀔 수도 있기 때문에, 절대경로만 존재한다면 매번 경로를 일일히 바꿔주어야 할 것이다. 크게 와닿진 않는다. 하지만 좀 더 학습하다가 절대경로와 상대경로를 쓰게 되는 시점이 오면 더 이해할 수 있을 것이다.

 

결론적으로 절대경로란 최상위 경로(디렉토리)가 반드시 포함된 경로이고, 상대경로는 현재 기준(현재 디렉토리, 비교대상)으로 작성된 경로를 의미한다.

 

 

절대경고와 상대경로 참고 출처 : https://mommoo.tistory.com/82

HTML 링크 관련 참고할만한 자료 : https://developer.mozilla.org/ko/docs/Web/HTML/Element/a

'프로그래밍 > 바닐라코딩_Prep Guide' 카테고리의 다른 글

Step 2. JavaScript(1)  (0) 2021.11.24
Step 1. Google Clone  (0) 2021.11.14
Step 1. CSS  (0) 2021.11.02
준비를 위한 준비  (0) 2021.10.28
또다른 입구  (0) 2021.10.27
  • 스터디 로그

바닐라코딩 프렙 코스의 신청서에는 사전학습 가이드 혹은 다른 자료를 이용해 공부했던 흔적이 담긴 자료를 첨부해야 한다. 그 자료는 다음과 같이 준비해야 한다.

 

   - 본인이 공부하며 혼자 작성해본 코드 : Github 등등

   - 공부하며 배운 것을 기록했던 자료 : 개인 블로그 등등

 

어찌 보면 개인 블로그로는 네이버, velog, Notion, Github 등등의 플랫폼에서 많이 고민해보았는데 아무래도 익숙하면서 내 삶도 담을 수 있고, 코딩 첨부 기능 또한 있는 네이버가 아닌 티스토리!를 선택했다.(네이버는 좀 가벼워질 것 같고 구글 검색 시 노출 또한 잘 안되니까 ^.^)

 

하지만 넘어야 할 언덕이 바로 코드 저장소인데, Github는 생활코딩 HTML 강의에서 한 번 해보고 버전 관리?에 좋다는 것만 알 뿐 잘 모르는 영역이다. 겁부터 나지만, 어떤 일이든 알고 나면 별거 아니지 않는가?

 

그래서 준비한 것은 Github 강의이다. Inflearn에서 찾아보니 Github 강의가 있다! 그것도 무료로!

Git과 GitHub 시작하기 : https://www.inflearn.com/course/git-and-github

 

[무료] Git과 GitHub 시작하기 - 인프런 | 강의

배우기 어려운 Git의 사용법을 쉬운 Gui 프로그램인 SourceTree를 통해 익혀봅시다., [임베딩 영상] git과 github git 은 형상 관리 시스템(Verson Control System) 의 한 종류입니다. 주로 개발자들이 프로그램

www.inflearn.com

아직 듣진 않았지만 평이 아주 좋다. 2시간 23분으로 길지 않고 간단하다. Github는 개발자로서 입사 후 실무에서도 자주 사용된다고 한다. Github는 이 강의로 시작해봐야겠다.

 

  3. 꾸준함

 

바닐라코딩 Prep Guide에는 꾸준함이 적혀져 있지 않지만, 작심삼일이 되지 않기 위해 꾸준함도 추가해보았다. 하루 3시간, 5시간, 주말에는 10시간 등 얼마나 공부하느냐도 중요하지만 단 몇 십분이라도 꾸준히 해야한다고 생각한다. 마음 먹은 김에, 1 Day 1 Commit을 실천하도록 하겠다!

 


 

  • 코드 에디터

바닐라코딩 Prep Guide에서는 Visual Studio Code 뿐만 아니라 확장 프로그램까지 설치하길 추천해준다.

 

   - Trailing Spaces

   - Prettier

 

찾아보니 Trailing Spaces는 공백에 색감을 줘서 불필요한 공간을 없애게 해주는 것이고(공백 또한 코드를 읽는 시간을 잡아먹을 수 있는 것인가?), Prettier는 말그대로 코드를 더 이쁘게 만들어주나보다.

'프로그래밍 > 바닐라코딩_Prep Guide' 카테고리의 다른 글

Step 2. JavaScript(1)  (0) 2021.11.24
Step 1. Google Clone  (0) 2021.11.14
Step 1. CSS  (0) 2021.11.02
Step 1. HTML  (0) 2021.10.29
또다른 입구  (0) 2021.10.27

 개발자가 되기로 마음 먹었다. 생활코딩을 통해 찬찬히 발을 들여놓을 놓고 여러 부트캠프를 탐색하던 도중 'SW 사관학교 정글'과 '바닐라코딩'의 후기가 유독 눈에 들어왔다. 그리고 유망한 스타트업에서 HR을 맡고 있는 친구가 나에게 정글을 정말 적극 추천해주었다.

 

 'SW 사관학교 정글'로 크래프톤의 장병규 의장님이 수장이 되어 운영되어지는 부트캠프이다. 간단한 자기소개서와 1분 동영상, 코딩 시험, 면접을 거쳐 선발되는데 합격 시 대전의 카이스트에서 폐관 수련을 하게 된다.

 

SW 사관학교 정글 : https://swjungle.net/

 

SW사관학교 정글

5개월 간의 합숙 과정을 거쳐 5~10년에도 성장하는 개발자로 거듭나세요

swjungle.net

 

 응시료와 자기소개서/1분 동영상만 제출하면 시험을 누구나 볼 수 있다. 친구가 추천해주기 전에도 한번 제출한 적이 있는데 본래의 직무가 바쁘다는 핑계로 시험을 치루지 않았다. 3개월 뒤 다시 모집 공고를 보게 되었고, 3개월 전보다 훨씬 간절해진 나는 무조건 통과하겠다는 마인드로 도전했다.

 

하지만 결과는 좋지 못했다. 기능을 완전히 구현하지 못했기도 했고 자기소개서에 나의 절실함이 담기지 않았나보다. 실패는 너무나도 쓰라렸다... 1차에 탈락이라니... 그 수많은 부트캠프 중 1곳을 탈락했을 뿐인데 취준 때 우두두두두 떨어지는 서류보다 아팠다.

 


 

 그래도 멘탈 회복력은 좋다. 겨우 지금의 실력으로는 들어가서 따라가지 못하겠구나, 오히려 더 노력할 수 있는 발판이 생겼을 뿐이다라고 생각했다.

 

 하고 싶은 일을 할 수 있게 되는데 1000~1500만원 정도의 지불은 감당할 수 있다고 여겼다. 사회초년생이라 모아둔 돈은 거의 없지만 개발자로서 벌게 될 미래를 생각한다면 초반의 큰 지불이 오히려 눈덩이처럼 불어나게 될 수 있다. 그래서 국비지원보다는 확실하게 기초를 다질 수 있는 부트캠프를 가고자 마음 먹었다.

 

 정글 탈락 이후 바닐라코딩으로 눈을 돌렸다. 바닐라코딩 '본' 부트캠프는 코딩테스트가 필요한만큼 입성하기 전에 어느 정도의 실력이 요구된다. 동시에, 본 부트캠프에 걸맞는 실력을 키울 수 있는 'Prep' 부트캠프가 사전에 운영되며, 또 Prep 부트캠프에 걸맞는 실력을 키울 수 있는 '바닐라코딩 사전학습 가이드'가 존재한다. 

 

 천천히 바닥부터 다지고 가는 것을 좋아하는 나에게 마음에 드는 과정이었다. 본 부트캠프가 오프라인으로 운영된다는 점도 나를 기쁘게 했다. 오프라인이 확실히 의사소통도 자유롭고 더 많은 것을 배워갈 수 있기 때문이라고 생각이 들어서이다. 그리고 퇴사한 뒤에 부트캠프에 참여할 것인데 집에서 온라인으로만 듣고 있으면 잉여로울 것 같다...

 

출처 : KoreanZombie Youtube 채널 '파이트클럽'

 

'지는 건 괜찮아요, 자랑스러웠어요. 나도 한번 해봤다.'

 

 바닐라코딩에 들어가는 또한 실패할 수 있다. 오히려 정글보다 더 어려울 수도 있다. 하지만 어렵다고 안하는 것만큼 멍청한 짓은 없을 것이다. 실패하더라도 깨닫고 얻어가는 것이 있을 것이고 정글에 실패하고 바닐라코딩이 보였던 것처럼 다른 입구가 보일 수도 있다!

 

'프로그래밍 > 바닐라코딩_Prep Guide' 카테고리의 다른 글

Step 2. JavaScript(1)  (0) 2021.11.24
Step 1. Google Clone  (0) 2021.11.14
Step 1. CSS  (0) 2021.11.02
Step 1. HTML  (0) 2021.10.29
준비를 위한 준비  (0) 2021.10.28

+ Recent posts