rabbit97 님의 블로그
8일 일지 본문
오늘은 4주차로 시작해서 5주차 숙제까지 쭉 나갔다!
그런데 5주차 숙제만 4시간째 건드려도 잘 안돼서 일단 여기까지 하고 내일 마무리 하는걸로.....
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta
name="viewport"
content="width=device-width, initial-scale=1, shrink-to-fit=no"
/>
<title>나만의 추억앨범</title>
<link
rel="stylesheet"
integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC"
crossorigin="anonymous"
/>
<style>
.mytitle {
color: white;
height: 250px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
background-image: url("https://images.unsplash.com/photo-1511992243105-2992b3fd0410?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D&auto=format&fit=crop&w=1470&q=80");
background-position: center;
background-size: cover;
}
.mytitle > button {
width: 150px;
height: 50px;
background-color: transparent;
border: none;
color: white;
font-size: 18px;
font-weight: bold;
border-radius: 5px;
border: 1px solid white;
margin-top: 20px;
}
.mycards {
margin: 20px auto 20px auto;
width: 1200px;
}
.mypostingbox {
width: 500px;
margin: 20px auto 20px auto;
padding: 20px 20px 20px 20px;
border-radius: 5px;
box-shadow: 0px 0px 3px 0px orangered;
}
.mybtn {
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
margin-top: 10px;
}
.mybtn > button {
margin-right: 10px;
}
</style>
<script type="module">
// Firebase SDK 라이브러리 가져오기
import {
collection,
addDoc,
const firebaseConfig = {
apiKey: "AIzaSyD1So78REEFVV2h0s6vyoDLyQFwPefQt5s",
authDomain: "sparta-a8d79.firebaseapp.com",
projectId: "sparta-a8d79",
storageBucket: "sparta-a8d79.appspot.com",
messagingSenderId: "40126519475",
appId: "1:40126519475:web:b86500499f00990234b8c6",
measurementId: "G-5V3C8EN91M",
};
// Firebase 인스턴스 초기화
const app = initializeApp(firebaseConfig);
const db = getFirestore(app);
$("#postingbtn").click(async function () {
let image = $("#image").val();
let title = $("#title").val();
let content = $("#content").val();
let date = $("#date").val();
let doc = {
image: image,
title: title,
content: content,
date: date,
};
await addDoc(collection(db, "albums"), doc);
alert("저장 완료");
window.location.reload();
});
$("#savebun").click(async function () {
$("#postingbox").toggle();
});
fetch(url)
.then((res) => res.json())
.then((data) => {
let mise = data["RealtimeCityAir"]["row"][0]["IDEX_NM"];
$("#msg").text(mise);
});
let docs = await getDocs(collection(db, "albums"));
docs.forEach((doc) => {
let row = doc.data();
console.log(row);
let image = row["image"];
let title = row["title"];
let content = row["content"];
let date = row["date"];
let temp_html = `
<div class="col">
<div class="card h-100">
<img src="${image}"
class="card-img-top" alt="...">
<div class="card-body">
<h5 class="card-title">${title}</h5>
<p class="card-text">${content}</p>
</div>
<div class="card-footer">
<small class="text-muted">${date}</small>
</div>
</div>
</div>`;
$("#card").append(temp_html);
});
</script>
</head>
<body>
<div class="mytitle">
<h1>나만의 추억 앨범</h1>
<p>현재 서울의 미세먼지 : <span id="msg">나쁨</span></p>
<button id="savrbun">추억 저장하기</button>
</div>
<div class="mypostingbox" id="postingbox">
<div class="form-floating mb-3">
<input
type="email"
class="form-control"
id="image"
placeholder="name@example.com"
/>
<label for="floatingInput">앨범 이미지</label>
</div>
<div class="form-floating mb-3">
<input
type="email"
class="form-control"
id="title"
placeholder="name@example.com"
/>
<label for="floatingInput">앨범 제목</label>
</div>
<div class="form-floating">
<input
type="email"
class="form-control"
id="content"
placeholder="name@example.com"
/>
<label for="floatingTextarea">앨범 내용</label>
</div>
<div class="form-floating mb-3">
<input
type="email"
class="form-control"
id="date"
placeholder="name@example.com"
/>
<label for="floatingInput">앨범 날짜</label>
</div>
<div class="mybtn">
<button id="postingbtn" type="button" class="btn btn-warning">
기록하기
</button>
<button type="button" class="btn btn-outline-dark">닫기</button>
</div>
</div>
<div class="mycards">
<div id="card" class="row row-cols-1 row-cols-md-4 g-4">
<div class="col">
<div class="card h-100">
<img
class="card-img-top"
alt="..."
/>
<div class="card-body">
<h5 class="card-title">앨범 제목</h5>
<p class="card-text">앨범 내용</p>
</div>
<div class="card-footer">
<small class="text-muted">앨범 날짜</small>
</div>
</div>
</div>
<div class="col">
<div class="card h-100">
<img
class="card-img-top"
alt="..."
/>
<div class="card-body">
<h5 class="card-title">앨범 제목</h5>
<p class="card-text">앨범 내용</p>
</div>
<div class="card-footer">
<small class="text-muted">앨범 날짜</small>
</div>
</div>
</div>
<div class="col">
<div class="card h-100">
<img
class="card-img-top"
alt="..."
/>
<div class="card-body">
<h5 class="card-title">앨범 제목</h5>
<p class="card-text">앨범 내용</p>
</div>
<div class="card-footer">
<small class="text-muted">앨범 날짜</small>
</div>
</div>
</div>
<div class="col">
<div class="card h-100">
<img
class="card-img-top"
alt="..."
/>
<div class="card-body">
<h5 class="card-title">앨범 제목</h5>
<p class="card-text">앨범 내용</p>
</div>
<div class="card-footer">
<small class="text-muted">앨범 날짜</small>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
파이어베이스 연동하고 깃허브에 잘 올렸다! 저 5번째 카드 기욤은 여자친구가 링크타고 들어와서 적고 도망갔다.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>스파르타플릭스</title>
<link
rel="stylesheet"
integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC"
crossorigin="anonymous"
/>
<style>
* {
font-family: "Gowun Dodum", sans-serif;
}
.main {
background-color: green;
color: white;
background-image: url("https://occ-0-1123-1217.1.nflxso.net/dnm/api/v6/6AYY37jfdO6hpXcMjf9Yu5cnmO0/AAAABeIfo7VL_VDyKnljV66IkR-4XLb6xpZqhpLSo3JUtbivnEW4s60PD27muH1mdaANM_8rGpgbm6L2oDgA_iELHZLZ2IQjG5lvp5d2.jpg?r=e6e.jpg");
background-position: center;
background-size: cover;
}
body {
background-color: black;
}
.mycards {
width: 1200px;
margin: 20px auto 20px auto;
}
.mypostingbox {
width: 500px;
margin: 20px auto 20px auto;
border: 1px solid white;
padding: 20px;
border-radius: 5px;
}
.form-floating > input {
background-color: transparent;
color: white;
}
.form-floating > label {
color: white;
}
.input-group > label {
background-color: transparent;
color: white;
}
.mypostingbox > button {
width: 100%;
}
</style>
<script type="module">
// Firebase SDK 라이브러리 가져오기
import {
collection,
addDoc,
const firebaseConfig = {
apiKey: "AIzaSyD1So78REEFVV2h0s6vyoDLyQFwPefQt5s",
authDomain: "sparta-a8d79.firebaseapp.com",
projectId: "sparta-a8d79",
storageBucket: "sparta-a8d79.appspot.com",
messagingSenderId: "40126519475",
appId: "1:40126519475:web:b86500499f00990234b8c6",
measurementId: "G-5V3C8EN91M",
};
// Firebase 인스턴스 초기화
const app = initializeApp(firebaseConfig);
const db = getFirestore(app);
let docs = await getDocs(collection(db, "movies"));
docs.forEach((doc) => {
let row = doc.data();
let image = row["image"];
let title = row["title"];
let comment = row["comment"];
let star = row["star"];
let temp_html = `
<div class="col">
<div class="card">
<img src="${image}"
class="card-img-top" alt="...">
<div class="card-body">
<h5 class="card-title">${title}</h5>
<p class="card-text">${star}</p>
<p class="card-text">${comment}</p>
</div>
</div>
</div>`;
$("#card").append(temp_html);
});
$("#postingbtn").click(async function () {
let image = $("#image").val();
let title = $("#title").val();
let star = $("#star").val();
let comment = $("#comment").val();
let doc = {
image: image,
title: title,
star: star,
comment: comment,
};
await addDoc(collection(db, "movies"), doc);
alert("저장 완료");
window.location.reload();
});
$(document).ready(function () {
fetch(url)
.then((res) => res.json())
.then((data) => {
let temp = data["temp"];
$("#tem").text(temp);
});
});
$("#savebun").click(async function () {
$("#postingbox").toggle();
});
</script>
</head>
<body>
<header class="p-3 text-bg-dark">
<div class="container">
<div
class="d-flex flex-wrap align-items-center justify-content-center justify-content-lg-start"
>
<a
href="/"
class="d-flex align-items-center mb-2 mb-lg-0 text-white text-decoration-none"
>
<svg
class="bi me-2"
width="40"
height="32"
role="img"
aria-label="Bootstrap"
>
<use xlink:href="#bootstrap"></use>
</svg>
</a>
<ul
class="nav col-12 col-lg-auto me-lg-auto mb-2 justify-content-center mb-md-0"
>
<li>
<a href="#" class="nav-link px-2 text-danger">spartaflix</a>
</li>
<li><a href="#" class="nav-link px-2 text-white">홈</a></li>
<li><a href="#" class="nav-link px-2 text-white">시리즈</a></li>
<li><a href="#" class="nav-link px-2 text-white">영화</a></li>
<li>
<a href="#" class="nav-link px-2 text-white">내가 찜한 콘텐츠</a>
</li>
<li>
<a href="#" class="nav-link px-2 text-white"
>현재 기온 <span id="tem">20.00</span>도</a
>
</li>
</ul>
<form class="col-12 col-lg-auto mb-3 mb-lg-0 me-lg-3" role="search">
<input
type="search"
class="form-control form-control-dark text-bg-dark"
placeholder="Search..."
aria-label="Search"
/>
</form>
<div class="text-end">
<button type="button" class="btn btn-outline-light me-2">
Login
</button>
<button type="button" class="btn btn-danger">Sign-up</button>
</div>
</div>
</div>
</header>
<div class="main">
<div class="p-5 mb-4 bg-body-tertiary rounded-3">
<div class="container-fluid py-5">
<h1 class="display-5 fw-bold">킹덤</h1>
<p class="col-md-8 fs-4">
병든 왕을 둘러싸고 흉흉한 소문이 떠돈다. 어둠에 뒤덮인 조선, 기이한
역병에 신음하는 산하. 정체 모를 악에 맞서 백성을 구원할 희망은 오직
세자뿐이다.
</p>
<button id="savebtn" type="button" class="btn btn-outline-light">
영화 기록하기
</button>
<button type="button" class="btn btn-outline-light">상세정보</button>
</div>
</div>
</div>
<div class="mypostingbox" id="postingbox">
<div class="form-floating mb-3">
<input
type="email"
class="form-control"
id="image"
placeholder="영화 이미지 주소"
/>
<label for="floatingInput">영화 이미지 주소</label>
</div>
<div class="form-floating mb-3">
<input
type="email"
class="form-control"
id="title"
placeholder="영화 제목"
/>
<label for="floatingInput">영화 제목</label>
</div>
<div class="input-group mb-3">
<label class="input-group-text" for="inputGroupSelect01">별점</label>
<select class="form-select" id="star">
<option selected>별점선택</option>
<option value="⭐">⭐</option>
<option value="⭐⭐">⭐⭐</option>
<option value="⭐⭐⭐">⭐⭐⭐</option>
<option value="⭐⭐⭐⭐">⭐⭐⭐⭐</option>
<option value="⭐⭐⭐⭐⭐">⭐⭐⭐⭐⭐</option>
</select>
</div>
<div class="form-floating mb-3">
<input
type="email"
class="form-control"
id="comment"
placeholder="추천 이유"
/>
<label for="floatingInput">추천 이유</label>
</div>
<button id="postingbtn" type="button" class="btn btn-danger">
기록하기
</button>
</div>
<div class="mycards">
<div id="card" class="row row-cols-1 row-cols-md-4 g-4">
<div class="col">
<div class="card">
<img
class="card-img-top"
alt="..."
/>
<div class="card-body">
<h5 class="card-title">영화 제목</h5>
<p class="card-text">⭐⭐⭐</p>
<p class="card-text">영화 코멘트</p>
</div>
</div>
</div>
<div class="col">
<div class="card">
<img
class="card-img-top"
alt="..."
/>
<div class="card-body">
<h5 class="card-title">영화 제목</h5>
<p class="card-text">⭐⭐⭐</p>
<p class="card-text">영화 코멘트</p>
</div>
</div>
</div>
<div class="col">
<div class="card">
<img
class="card-img-top"
alt="..."
/>
<div class="card-body">
<h5 class="card-title">영화 제목</h5>
<p class="card-text">⭐⭐⭐</p>
<p class="card-text">영화 코멘트</p>
</div>
</div>
</div>
<div class="col">
<div class="card">
<img
class="card-img-top"
alt="..."
/>
<div class="card-body">
<h5 class="card-title">영화 제목</h5>
<p class="card-text">⭐⭐⭐</p>
<p class="card-text">영화 코멘트</p>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
스파르타 플릭스도 마무리 하고 최종으로 숙제!!
는 아직 실패.... 기록하기를 누르면 파이어베이스로 기록이 되기는 하는데 내용도 똑바로 안오고 불러오기도 안된다.
고민만 4시간째 하고있는데 잘 안돼서 내일도 아침에 잘 안되면 튜터님 강의 들으면서 해봐야겠다.
내일 마저 하고! html 마무리 하고 알고리즘으로 넘어가야지
----------------------------------------------------------------------------------------------------------------------
오늘의 학습 요약
오늘은 서버와 관련돼서 많은 공부를 했다. 파이어베이스부터 깃허브까지 체험하기방식으로 했는데 깃허브로 링크 만들어서 다른 사람도 같이 기록하는거에 엄청 신기했다. 내일은 마무리 하고 알고리즘으로 다시 넘어가야겠다.