오늘의 공부

1. 프로젝트 방명록 수정하기

문제점 확인

  • 기존의 댓글을 입력하면 객체를 만들어 바로 삽입하는 방식의 경우, 사이트를 새로고침할 경우 데이터가 날아간다!

  • 이러한 오류를 고치기 위해 API를 연동하기로 하였다!
    (팀 프로젝트이기에 팀원분의 FireBase 에 연동하게 되었다.)

실전 함수

데이터 불러오고 사용하기

// Firebase 서비스 패키지 가져오기!
import { initializeApp } from "https://www.gstatic.com/firebasejs/9.22.0/firebase-app js";
import { getFirestore, collection, addDoc, getDocs} from "https://www.gstatic.com/firebasejs/9.22.0/firebase-firestore.js";
import { getStorage, ref, uploadBytes, getDownloadURL} from "https://www.gstatic.com/firebasejs/9.22.0/firebase-storage.js";

// Firebase 구성 정보 설정
const firebaseConfig = {
      //API 키 설정
};

// 정보 가져와
const app = initializeApp(firebaseConfig);
// 데이터 베이스 내놔
const db = getFirestore(app);

// "Comments"에 있는 거 다 들고와바
let docs = await getDocs(collection(db, "Comments"));
  docs.forEach((doc) => {
// 데이터 쪼옥 가져와서 분배!
  let row = doc.data();
  let name = row['Nickname'];
  let text = row['Comment'];
  let Date = row['Date'];
});

데이터 올려버리기

// (인풋박스에서) 올릴 값 내놔
let name = document.getElementById("ip_name").value;
let text = document.getElementById("ip_text").value;
let today = new Date().toLocaleDateString();

// 너 닉네임 잘 썻냐?
if (!name) {
  const span = document.createElement("span");
  span.style.color = "#f26650";
  span.textContent = "닉네임을 입력해 주세요!";

  name_point.before(span);
} else if (text.length > 0) {

// 올릴 값 조리중..
  const doc = {
    Nickname: name,
    Comment: text,
    Date: today,
  };
// 슛 
  await addDoc(collection(db, "Comments"), doc)
  .then(() =>
// 잘 들어 갔나요..?
  alert('방명록이 성공적으로 추가되었습니다!')
  );

// 올린 글은 입력 칸에서 지워야지 음 
  document.querySelector("#ip_text").value = "";
  window.location.href = 'index.html';
}

2. 프로젝트 헤더 기능 구현하기

수정할 사항 찾아보기

헤더

  • 흠.. 우리 프로젝트가 아래로 기니까.. 스크롤을 해도 헤더는 위에 고정되야 겠네..?!

해결방법

<style>
  .headerBox {
    height: 70px;

    <!-- 핵심은 너닷! 너는 부모에 종속적이지 않은 불효자야.. -->
    position: fixed;

    <!-- 이제  머리에  붙어있어! -->
    top: 0;
    left: 0;
    right: 0;
    
    <!-- 헤더라면 다른애들보다 Layer가 "위"에 있어야 되자나 -->
    z-index: 1;
    
    <!-- 다른애들 안보이게 배경 그려서 가려야지 -->
    background-color: white;
  }
</style>

수정완

  • 아주 보기 좋네요 ^^

3. 멤버 소개페이지 프로젝트 피드백 사항

Code Convention (코드 규칙)을 통해 서로 이해하기 쉽게 만들어라!

=> 아래 사진으로 정해두었으나 계속해서 확인해봐가야함!

CodeConvention

같은 프로젝트를 하는데 서로 기능 구현만하고 공유를 하지 않는 것 같다.

=> 코드 설명회와 코드 리뷰 회의를 마지막 타임에 하기로 하였다!

branch 이름들이 일정하지 않게 ( 기능, feature/기능 ) 따로따로 되있는게 좋아보이지 않다.

수정완

=> 최대한 역할/기능 을 맞추어 feature/guestbook 같이 이름들을 수정하였다.
( 아.. 근데 공유를 제대로 안해드려서 원본 Branch들이 다시 태어났네..? 내일 다시 말씀드려야지..)

Script 파일과 Css 파일을 html과 분리하여 관리해라!

=> 그게 뭐에요..? (아래 삽질란 참고)

학습 과정 중 특이사항 / 삽질

1. 멤버 소개페이지 프로젝트 StyleSheet(css) / Script(Js) 분리하기

발단

어제 후반부에 결과물들을 겨우 이어 붙였다…

placeholder

(이딴게 결과물..? 너무 황천으로 깨졋는데요..?)

이러한 심각성을 인지하고 스타일들을 맞춰주기 위해 새로 폴더를 만들어 관리해보자!라는 생각을 했다.(물론 혼자 생각만해서 아무도 몰랐음)

=> 그러다 튜터님이 오셔서 팀프로젝트의 기본을 알려주시며 Css랑 JavaScript를 분리해서 관리하라는 충고를 해주셨다.

그렇게 방법을 찾는데.. 역시 블로그를 만들며 써봤던 Jekyll 빌드 명령어를 따라하면 금방 되는거 아냐? ㅋㅋ

=> 라고 생각 했던 때가 있엇죠..

전개

placeholder

  • 분명 왼쪽(GitHub 블로그 템플릿) / 오른쪽(메인 프로젝트) 폴더를 똑같이 맞추고.. 명령어도 갖다붙이고.. styles.scss 엔 @import 까지 연결 해뒀는데… 왜..?

절정 / 결말

placeholder

=> 주소를 못찾겠다네요..

  • 혹시 몰라 include 내부에 있는 html에서도 시도해보고.. 다른 유형의 Liquid Filter 주소입력도 써보고.. 했는데 안돼더라구요.. (참고로 _config.yml 에 sass 설정 코드도 넣어봤습니다..)

=> 다음 날 알게된 사실은 폴더 이름인 ‘_assets’에 있는 언더바로 인해 폴더 자체가 무시받고 있었단 사실이였다..

2. Self-Hosted Runner 로 빌드 해보기

발단

  • GitHub Action에서 GitHub Page를 빌드하기 때문에 GitHub Action쪽을 많이 확인해가며 여러번 시도하는데..
    어느 순간부터 Runner가 말 그대로 도망가며 일을 안하기 시작했다.. (나중에 알게된 사실은.. GitHub 탓이 맞다.)

전개

  • 그렇다면 내가 직접 달린다..
    => 그렇게 Self-Hosted-Runner가 되기위해 터미널에 GitHub에 있는 명령어들을 터미널 입력해서 설치하고 연결에 성공했다!

절정

  • 러너를 움직이게 하기 위해 프로젝트에 .github(폴더)/workflows(폴더)/jekyll-gh-pages.yml(jekyll 빌드 설정 파일)
    을 만들어 runs-on 라벨을 Windows로 바꿔 Self-Hosted-Runner를 호출해 보았다.

placeholder

=> 응 Linux 아니면 컨테이너 못 만들어~
=> ..예?

결말

  • 정신을 차려보니 이미 저녁이었고.. GitHub Action 의 Runner는 다시 잘 달리고 있었다..

3. 프로젝트 회의

  • 오늘은 다같이 피드백받은대로 설명회를 짧게 진행하면서 우리의 진도를 실감하게 되었다.
    (조금 마ㅏㅏ니ㅣㅣ 느린것 같기두…?)

=> 발표가 금요일이라 목요일에 준완성은 시키고 발표준비를 시작해야 했기에..

  • 회의를 해가며 Firebase API에 멤버 초대가 전부 되었고, 내일 할 일들을 중요도 위주로 계획했다.

placeholder

  • 내일은 많이 소통해가며 수정을 엄청나게 해나갈 “진짜” 의 날이다. 기대되!!
    (정신만 나가지 말자)