[Luvit ํ•œ๋‹ฌ ์Šคํ„ฐ๋””] ์ƒˆ๋กœ์šด ์›น ๊ฐœ๋ฐœ์˜ ์‹œ์ž‘ ์Šค๋ฒจํŠธ #4

2025. 7. 27. 07:38ยท๐Ÿ“šbook
Luvit ํ•œ๋‹ฌ ์Šคํ„ฐ๋””

 

๐ŸŽž๏ธ์ตœ์ข… ํ”„๋กœ์ ํŠธ: Moving

Svelte์˜ ๊ธฐ๋ณธ ๋ฌธ๋ฒ•๋ถ€ํ„ฐ, ๋ผ์šฐํŒ…, API ํ†ต์‹ , ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์—ฐ๋™๊นŒ์ง€, ๊ทธ๋™์•ˆ ํ•™์Šตํ•œ ๊ฒƒ๋“ค์„ ์ข…ํ•ฉํ•ด์„œ TMDB API๋ฅผ ํ™œ์šฉํ•œ OTT ์‚ฌ์ดํŠธ Moving ํด๋ก  ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ–ˆ๋‹ค. ๋ฐ์ดํ„ฐ ํ๋ฆ„๊ณผ ์ปดํฌ๋„ŒํŠธ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ณ ๋ฏผํ•˜๋ฉฐ ์‹ค์ œ ์„œ๋น„์Šค์™€ ์œ ์‚ฌํ•œ ๊ตฌ์กฐ๋ฅผ ๊ตฌํ˜„ํ•ด๋ณผ ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ์ ํŠธ ๊ฒฝํ—˜์ด์—ˆ๋‹ค.

 

ํ”„๋กœ์ ํŠธ ๊ฐœ์š”

Moving ํ”„๋กœ์ ํŠธ๋Š” ๋ฉ”์ธ ํŽ˜์ด์ง€์˜ ์ž๋™ ์Šฌ๋ผ์ด๋“œ ๋ฐฐ๋„ˆ, ํ˜„์žฌ ์ƒ์˜์ž‘/์ธ๊ธฐ ์ƒ์˜์ž‘ ๋“ฑ ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ์˜ํ™” ๋ชฉ๋ก, ๊ทธ๋ฆฌ๊ณ  ๊ฐ ์˜ํ™”์˜ ์ƒ์„ธ ํŽ˜์ด์ง€๋กœ ๊ตฌ์„ฑ๋œ SPA์ด๋‹ค. ํ”„๋กœ์ ํŠธ ๊ตฌํ˜„์„ ์œ„ํ•ด svelte-routing์œผ๋กœ ํŽ˜์ด์ง€ ๊ตฌ์กฐ๋ฅผ ์„ค๊ณ„ํ•˜๊ณ , swiper.js๋กœ ๋™์ ์ธ UI๋ฅผ ๊ตฌํ˜„ํ–ˆ๋‹ค. ๋˜ Svelte์˜ {#await} ๋ธ”๋ก๊ณผ ์ปค์Šคํ…€ ์Šคํ† ์–ด๋ฅผ ์‚ฌ์šฉํ•ด TMDB API ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์—ฐ๋™ํ•ด ์‚ฌ์šฉํ–ˆ๋‹ค.

 

ํ•ต์‹ฌ ๊ธฐ๋Šฅ/ํ•™์Šต ๋‚ด์šฉ

1. ์ปจํ…Œ์ด๋„ˆ/ํ”„๋ ˆ์  ํ…Œ์ด์…”๋„ ํŒจํ„ด์„ ์ ์šฉํ•œ ์ปดํฌ๋„ŒํŠธ ์„ค๊ณ„

์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ์ฝ”๋“œ ๊ด€์‹ฌ์‚ฌ ๋ถ„๋ฆฌ๋ฅผ ์œ„ํ•ด ์ปจํ…Œ์ด๋„ˆ(Container)์™€ ํ”„๋ ˆ์  ํ…Œ์ด์…”๋„(Presentational) ํŒจํ„ด์„ ๋„์ž…ํ–ˆ๋‹ค.

  • ์ปจํ…Œ์ด๋„ˆ ์ปดํฌ๋„ŒํŠธ(/containers): API ํ˜ธ์ถœ, ์ƒํƒœ ๊ด€๋ฆฌ ๋“ฑ ๋ฐ์ดํ„ฐ์™€ ๋กœ์ง์„ ์ „๋‹ดํ•œ๋‹ค. {#await} ๋ธ”๋ก์„ ์‚ฌ์šฉํ•ด ๋น„๋™๊ธฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜จ ํ›„, ํ”„๋ ˆ์  ํ…Œ์ด์…”๋„ ์ปดํฌ๋„ŒํŠธ๋กœ ์ „๋‹ฌํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.
  • ํ”„๋ ˆ์  ํ…Œ์ด์…”๋„ ์ปดํฌ๋„ŒํŠธ(/components): ์ปจํ…Œ์ด๋„ˆ๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌ๋ฐ›์•„ ์ˆœ์ˆ˜ํ•˜๊ฒŒ UI๋ฅผ ๊ทธ๋ฆฌ๋Š” ์—ญํ• ์—๋งŒ ์ง‘์ค‘ํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ. ๋กœ๋”ฉ ์Šคํ”ผ๋„ˆ, ์—๋Ÿฌ ํŽ˜์ด์ง€, ์˜ํ™” ๋ชฉ๋ก ๋“ฑ์ด ํฌํ•จ๋œ๋‹ค.

components ํด๋”๋Š” 3๊ฐ€์ง€ ํ•˜์œ„ ํด๋”๋กœ ๋” ์„ธ๋ถ„ํ™”ํ•˜์˜€๋‹ค.

  • common: ๋ชจ๋“  ํŽ˜์ด์ง€์—์„œ ๊ณตํ†ต์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ปดํฌ๋„ŒํŠธ ๋ชจ์Œ 
  • main: ๋ฉ”์ธํŽ˜์ด์ง€์—๋งŒ ํ‘œ์‹œํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ ๋ชจ์Œ
  • sub: ์„œ๋ธŒ ํŽ˜์ด์ง€์—์„œ ํ‘œ์‹œํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ ๋ชจ์Œ

์ด๋ ‡๊ฒŒ ๋ฐ์ดํ„ฐ ๋กœ์ง๊ณผ UI ๋ Œ๋”๋ง ๋กœ์ง์„ ๋ช…ํ™•ํ•˜๊ฒŒ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ปดํฌ๋„ŒํŠธ ๊ตฌ์กฐ๋ฅผ ๊ตฌ์„ฑํ•˜์˜€๋‹ค.

<!-- /src/containers/MainListContainer.svelte (์ปจํ…Œ์ด๋„ˆ) -->
<script>
    import { mainPromise } from '../libs/store'; // Promise๋ฅผ ๋‹ด์€ ์Šคํ† ์–ด
    import MainList from '../components/main/MainList.svelte'; // UI ์ปดํฌ๋„ŒํŠธ
    import MainLoading from '../components/common/MainLoading.svelte';
    import Error from '../components/common/Error.svelte';
</script>

{#await $mainPromise}
    <MainLoading />
{:then res}
    <!-- ๋กœ์ง ์ฒ˜๋ฆฌ ํ›„ UI ์ปดํฌ๋„ŒํŠธ๋กœ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ -->
    <MainList movies={res.data.results} />
{:catch error}
    <Error {error} />
{/await}

 

2. svelte-routing์„ ๋ฆฌ์šฉํ•œ ๋‹ค์ค‘ ํŽ˜์ด์ง€ ๊ตฌ์„ฑ

๋ฉ”์ธ ํŽ˜์ด์ง€์™€ ๊ฐ ์˜ํ™”์˜ ์ƒ์„ธ ํŽ˜์ด์ง€ ๊ฐ„ ์ด๋™์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด svelte-routing์„ ์‚ฌ์šฉํ–ˆ๋‹ค. App.svelte์—์„œ ์ „์ฒด์ ์ธ ๋ผ์šฐํŒ… ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•˜๊ณ , ๋™์  ํŒŒ๋ผ๋ฏธํ„ฐ(:id)๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๊ฐ๊ธฐ ๋‹ค๋ฅธ ์˜ํ™” ์ƒ์„ธ ํŽ˜์ด์ง€๋ฅผ ๋ Œ๋”๋งํ•˜๋„๋ก ๊ตฌํ˜„ํ–ˆ๋‹ค.

<!-- /src/App.svelte -->
<script>
	import { Router, Route } from "svelte-routing";
	import Header from './components/common/Header.svelte';
	import MainPage from './pages/MainPage.svelte';
	import NowPage from './pages/NowPage.svelte';
	import NowSubPage from './pages/NowSubPage.svelte';
	// ...
</script>

<Header />
<main>
    <Router {url}>
        <Route path="/" component={MainPage} />
        <Route path="/now" component={NowPage} />
        <!-- ๋™์  ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•œ ์ƒ์„ธ ํŽ˜์ด์ง€ ๋ผ์šฐํŠธ -->
        <Route path="/now/:id" component={NowSubPage} />
        <!-- ... -->
    </Router>
</main>
<!-- ... -->

 

3. swiper.js๋กœ ๊ตฌํ˜„ํ•œ ์Šฌ๋ผ์ด๋“œ UI

๋ฉ”์ธ ํŽ˜์ด์ง€์˜ ์ƒ๋‹จ ๋ฐฐ๋„ˆ์™€ ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ์˜ํ™” ๋ชฉ๋ก์€ swiper.js ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์—ฐ๋™ํ•˜์—ฌ ๋™์ ์ธ ์บ๋Ÿฌ์…€ ํ˜•ํƒœ๋กœ ๊ตฌํ˜„ํ–ˆ๋‹ค. Svelte์šฉ Swiper ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋‹ˆ, ๋„ค์ดํ‹ฐ๋ธŒ Svelte ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋‹ค๋ฃจ๋“ฏ props๋กœ ์˜ต์…˜์„ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ ์ž๋™ ์žฌ์ƒ, ๋„ค๋น„๊ฒŒ์ด์…˜, ํŽ˜์ด์ง€๋„ค์ด์…˜ ๋“ฑ ๋ณต์žกํ•œ ๊ธฐ๋Šฅ์„ ์‰ฝ๊ฒŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

<!-- /src/components/main/MainList.svelte -->
<script>
    import { Swiper, SwiperSlide } from 'swiper/svelte';
    import { Navigation, Pagination, Autoplay } from 'swiper';
    import 'swiper/css';
    // ...
</script>

<Swiper
    modules={[Navigation, Pagination, Autoplay]}
    navigation
    pagination={{ clickable: true }}
    autoplay={{ delay: 2500, disableOnInteraction: false }}
    loop={true}
>
    {#each movies as movie}
    <SwiperSlide>
        <!-- ์Šฌ๋ผ์ด๋“œ ์•„์ดํ…œ -->
    </SwiperSlide>
    {/each}
</Swiper>

 

4. ์Šคํ† ์–ด์™€ {#await} ๋ธ”๋ก์„ ํ™œ์šฉํ•œ API ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ

store.js ํŒŒ์ผ ๋‚ด์— axios๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ TMDB API๋ฅผ ํ˜ธ์ถœํ•˜๊ณ , ๊ทธ ๊ฒฐ๊ณผ์ธ Promise ์ž์ฒด๋ฅผ writable ์Šคํ† ์–ด์— ๋‹ด์•„ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ปค์Šคํ…€ ์Šคํ† ์–ด ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ–ˆ๋‹ค.

// /src/libs/store.js
import { writable } from "svelte/store";
import axios from 'axios';

const setPromise = (url) => { 
    let promise;
    const { subscribe } = writable(promise);

    const getPromise = async () => {
        // ... API ํ˜ธ์ถœ ์„ค์ • ...
        try {
            const res = await axios.request(options);
            return res;
        } catch(error) {
            throw new Error(error);
        }
    };
    
    promise = getPromise();
    return { subscribe };
}

export const mainPromise = setPromise('now_playing');
// ...

์ปจํ…Œ์ด๋„ˆ ์ปดํฌ๋„ŒํŠธ์—์„œ๋Š” ์ด ์Šคํ† ์–ด๋ฅผ ๊ตฌ๋…($mainPromise)ํ•˜์—ฌ {#await} ๋ธ”๋ก์— ๋„˜๊ฒจ์ฃผ๊ธฐ๋งŒ ํ•˜๋ฉด, ๋กœ๋”ฉ ์ค‘, ์„ฑ๊ณต, ์‹คํŒจ ๊ฐ ์ƒํƒœ์— ๋งž๋Š” UI๋ฅผ ์„ ์–ธ์ ์œผ๋กœ ๋ Œ๋”๋งํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปดํฌ๋„ŒํŠธ์˜ script ์˜์—ญ์—์„œ ๋น„๋™๊ธฐ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์‚ฌ๋ผ์ ธ ๊น”๋”ํ•˜๊ณ  ์ง๊ด€์ ์ธ ๊ตฌ์กฐ๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

 

๋А๋‚€์ 

Moving ํ”„๋กœ์ ํŠธ๋Š” ์ง€๊ธˆ๊นŒ์ง€ ํ•™์Šตํ•œ Svelte ๊ธฐ๋Šฅ๋“ค์„ ํ•˜๋‚˜์˜ ํ”„๋กœ์ ํŠธ๋กœ ํ†ตํ•ฉํ•ด๋ณด๋Š” ์ตœ์ข… ๊ณผ์ œ์˜€๋‹ค. ์ปดํฌ๋„ŒํŠธ ์•„ํ‚คํ…์ณ ์„ค๊ณ„๋ถ€ํ„ฐ ๋ผ์šฐํŒ…์„ ํ†ตํ•œ ํŽ˜์ด์ง€ ํ๋ฆ„ ๊ตฌ์„ฑ, ์Šคํ† ์–ด๋ฅผ ํ™œ์šฉํ•œ ๋ฐ์ดํ„ฐ ์ƒํƒœ ๊ด€๋ฆฌ, ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋„์ž…์„ ํ†ตํ•œ UI ํ™•์žฅ๊นŒ์ง€ Svelte ๊ฐœ๋ฐœ์˜ ์ „๋ฐ˜์ ์ธ ๊ณผ์ •์„ ์ง์ ‘ ๊ฒฝํ—˜ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด Svelte๊ฐ€ ๊ฐ€์ง„ ๊ฐ„๊ฒฐํ•จ๊ณผ ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ๋“ค์ด ์‹ค์ œ ํ”„๋กœ์ ํŠธ์—์„œ ์–ด๋–ป๊ฒŒ ํšจ๊ณผ์ ์œผ๋กœ ์“ฐ์ผ ์ˆ˜ ์žˆ๋Š”์ง€ ์ฒด๊ฐํ•  ์ˆ˜ ์žˆ์—ˆ๊ณ , ์ „๋ฐ˜์ ์ธ ๊ฐœ๋ฐœ ์ˆ™๋ จ๋„ ์—ญ์‹œ ํ•œ ์ธต ๋†’์ผ ์ˆ˜ ์žˆ๋Š” ๊ฒฝํ—˜์ด์—ˆ๋‹ค.


๐Ÿฅณ์ƒˆ๋กœ์šด ์›น ๊ฐœ๋ฐœ์˜ ์‹œ์ž‘ ์Šค๋ฒจํŠธ Svelte ์™„๋… ํ›„๊ธฐ

ํ•œ ๋‹ฌ๊ฐ„์˜ Svelte ์Šคํ„ฐ๋””๊ฐ€ ๋๋‚ฌ๋‹ค. ์Šค๋ฒจํŠธ๋ฅผ ์ฒ˜์Œ ์ ‘ํ•˜๋Š” ์ž…์žฅ์—์„œ ๋งค์šฐ ๋งŒ์กฑ์Šค๋Ÿฌ์šด ํ•™์Šต ๊ฒฝํ—˜์ด์—ˆ๋‹ค.

๐Ÿงฉ๊ตฌ์กฐ์ ์ธ ํ•™์Šต ๋ฐฉ์‹

์ฑ•ํ„ฐ๋ณ„๋กœ ํ•™์Šต ๋‚ด์šฉ์„ ๋˜๋Œ์•„๋ณผ ์ˆ˜ ์žˆ๋Š” ๋Œ์•„๋ณด๊ธฐ์™€ ์ชฝ์ง€ ์‹œํ—˜ ์ฝ”๋„ˆ๊ฐ€ ์žˆ์–ด, ์ฑ•ํ„ฐ์˜ ํ•ต์‹ฌ ๊ฐœ๋…์„ ์ •๋ฆฌํ•˜๊ณ  ๋ณต์Šตํ•˜๋Š”๋ฐ ๋งŽ์€ ๋„์›€์ด ๋˜์—ˆ๋‹ค. ๋‚ด์šฉ ์—ญ์‹œ ์ฝ”๋“œ ์˜ˆ์ œ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์–ด, ๋”ฐ๋ผ์„œ ํƒ€์ดํ•‘ํ•ด๋ณด๋ฉด์„œ ๊ฐœ๋…์„ ์ฒดํšŒํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์„ฑ์ด์—ˆ๋‹ค.

 

๐ŸŽจ์‹ค์Šต ์œ„์ฃผ์˜ ๊ตฌ์„ฑ

์ด ์„ธ๊ฐ€์ง€ ํ”„๋กœ์ ํŠธ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋‹ค:

  • My Bucket List
  • Best Tour
  • Moving

์ด ํ”„๋กœ์ ํŠธ๋“ค์„ ํ†ตํ•ด ์Šคํ† ์–ด ์ƒํƒœ ๊ด€๋ฆฌ, ๋ผ์šฐํŒ… ๊ตฌ์„ฑ, ์™ธ๋ถ€ API ์—ฐ๋™, UI ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ ์šฉ ๋“ฑ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ๋“ค์„ ์ง์ ‘ ๊ตฌํ˜„ํ•ด๋ณผ ์ˆ˜ ์žˆ์—ˆ๋‹ค. Moving ํ”„๋กœ์ ํŠธ์˜ ๊ฒฝ์šฐ, ์ƒ˜ํ”Œ ์ฝ”๋“œ๋ฅผ ๋„˜์–ด ์‹ค์ „ ๊ฐœ๋ฐœ์— ๊ฐ€๊นŒ์šด ๊ฒฝํ—˜์„ ํ•  ์ˆ˜ ์žˆ์—ˆ๋˜ ์ ์ด ํŠนํžˆ ์ข‹์•˜๋‹ค. ๋•๋ถ„์— ์‹ค์ œ ์„œ๋น„์Šค์—์„œ ์Šค๋ฒจํŠธ๋ฅผ ์–ด๋–ป๊ฒŒ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์„์ง€ ๊ฐ์„ ์žก์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

๐Ÿˆ๋ฒ„์ „ ๊ณ ๋ฏผ x

์‹ค์Šต์€ sveltekit ์—†์ด ์ง„ํ–‰๋˜์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ฑ… ๋ถ€๋ก์—์„œ sveltekit ๊ด€๋ จ ๋‚ด์šฉ๋„ ๊ฐ„๋‹จํžˆ ๋‹ค๋ค„์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ์ตœ์‹  ๋ฒ„์ „์˜ ์Šค๋ฒจํŠธ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋„ ํฌ๊ฒŒ ๋ฌด๋ฆฌ๊ฐ€ ์—†์„ ๊ฒƒ์œผ๋กœ ๋ณด์ธ๋‹ค. ๋ฒ„์ „ ์ฐจ์ด๋กœ ์ธํ•œ ๋ฌธ์ œ๋„ ์—†์—ˆ๊ณ , ์‹ค์Šต ์ฝ”๋“œ๋ฅผ ๋ฐ”๋กœ ์ ์šฉํ•ด๋„ ์ž˜ ์ž‘๋™ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฒ„์ „์— ๋Œ€ํ•œ ๊ฑฑ์ • ์—†์ด ํ•™์Šตํ•  ์ˆ˜ ์žˆ๋Š” ์ฑ…์ด๋‹ค. 25๋…„ ์ถœ๊ฐ„๋œ ์ตœ์‹  ๋„์„œ์—ฌ์„œ, ์ง€๊ธˆ ์‹œ์ ์—์„œ Svelte๋ฅผ ํ•™์Šตํ•˜๋ ค๋Š” ์‚ฌ๋žŒ์—๊ฒŒ ์ ํ•ฉํ•˜๋‹ค.

์ฑ…์œผ๋กœ svelte๋ฅผ ํ•™์Šตํ•˜๊ณ ์ž ํ•œ๋‹ค๋ฉด Luvit...๊ฐ•์ถ”๐Ÿ’ฏ

 

๐Ÿšฉ๋ถ€๋‹ด์Šค๋Ÿฝ์ง€ ์•Š์€ ๋ถ„๋Ÿ‰

๋‚˜๋Š” 1-2๋ถ€, 3๋ถ€, 4-5๋ถ€, 6-7๋ถ€ ์ด๋ ‡๊ฒŒ 4๋ถ„ํ•  ํ•˜์—ฌ ํ•™์Šต์„ ์ง„ํ–‰ํ–ˆ๋‹ค.

์ผ์ฃผ์ผ์— ํ•˜๋ฃจ์ •๋„ ํˆฌ์žํ–ˆ๋Š”๋ฐ ์—ฌ์œ ๋กญ๊ฒŒ ์™„๋…ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์‰ฌ์šด ์„ค๋ช…๊ณผ ๋ถ€๋‹ด์Šค๋Ÿฝ์ง€ ์•Š์€ ๋ถ„๋Ÿ‰์œผ๋กœ, ์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ์Šค๋ฒจํŠธ๋ฅผ ์ตํž ์ˆ˜ ์žˆ๋Š” ๊ตฌ์„ฑ์ด์—ˆ๋‹ค.

ํ•œ ๋‹ฌ๋™์•ˆ ๊ฒฝํ—˜ํ•œ ์Šค๋ฒจํŠธ๋Š” ์ •๋ง ๊ฐ€๋ณ๊ณ  ์ง๊ด€์ ์ธ ํ”„๋ ˆ์ž„์›Œํฌ์˜€๋‹ค. ์ด ์ฑ…์€ ๊ทธ๋Ÿฐ Svelte์˜ ์ฒ ํ•™๊ณผ ๊ธฐ๋Šฅ์„ ๋น ๋ฅด๊ฒŒ ์ตํžˆ๊ณ  ์ง์ ‘ ์‚ฌ์šฉํ•ด๋ณผ ์ˆ˜ ์žˆ๋Š” ํ›Œ๋ฅญํ•œ ๊ฐ€์ด๋“œ์˜€๋‹ค. ์งง์€ ๊ธฐ๊ฐ„ ๋™์•ˆ ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์ „๋ฐ˜์ ์ธ ๊ตฌ์กฐ์™€ ์‹ค์ „ ์‚ฌ์šฉ๋ฒ•๊นŒ์ง€ ์ตํž ์ˆ˜ ์žˆ์—ˆ๋˜ ์•Œ์ฐฌ ๊ฒฝํ—˜์ด์—ˆ๊ณ , Svelte๋ฅผ ๋น ๋ฅด๊ฒŒ ๋ฐฐ์šฐ๊ณ  ์‹ถ์€ ์‚ฌ๋žŒ์ด๋ผ๋ฉด ์ด ์ฑ…์„ ์ ๊ทน ์ถ”์ฒœํ•˜๊ณ  ์‹ถ๋‹ค!

'๐Ÿ“šbook' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[ํ˜ผ๊ณตํ•™์Šต๋‹จ 14๊ธฐ] DenseNet, MobileNet, EfficientNet  (1) 2025.07.27
[npm deep dive] ์™„๋… ์ฑŒ๋ฆฐ์ง€-์™„๋… ๋ชปํ•œ ํ›„๊ธฐ  (12) 2025.07.23
[Luvit ํ•œ๋‹ฌ ์Šคํ„ฐ๋””] ์ƒˆ๋กœ์šด ์›น ๊ฐœ๋ฐœ์˜ ์‹œ์ž‘ ์Šค๋ฒจํŠธ #3  (1) 2025.07.20
[ํ˜ผ๊ณตํ•™์Šต๋‹จ 14๊ธฐ] ๊ฐ•์•„์ง€ ๊ณ ์–‘์ด ์‚ฌ์ง„ ๋ถ„๋ฅ˜ ์‹ค์Šต(AlexNet, VGGNet, ResNet)  (6) 2025.07.20
[ํ˜ผ๊ณตํ•™์Šต๋‹จ 14๊ธฐ] LeNet ์‹ค์Šต-Fashoin MNIST ๋ถ„๋ฅ˜ ์‹ค์Šต  (3) 2025.07.13
'๐Ÿ“šbook' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [ํ˜ผ๊ณตํ•™์Šต๋‹จ 14๊ธฐ] DenseNet, MobileNet, EfficientNet
  • [npm deep dive] ์™„๋… ์ฑŒ๋ฆฐ์ง€-์™„๋… ๋ชปํ•œ ํ›„๊ธฐ
  • [Luvit ํ•œ๋‹ฌ ์Šคํ„ฐ๋””] ์ƒˆ๋กœ์šด ์›น ๊ฐœ๋ฐœ์˜ ์‹œ์ž‘ ์Šค๋ฒจํŠธ #3
  • [ํ˜ผ๊ณตํ•™์Šต๋‹จ 14๊ธฐ] ๊ฐ•์•„์ง€ ๊ณ ์–‘์ด ์‚ฌ์ง„ ๋ถ„๋ฅ˜ ์‹ค์Šต(AlexNet, VGGNet, ResNet)
ํ‚ํ‚์ž‰
ํ‚ํ‚์ž‰
๋ฟŒ๋ก ํŠธ ๊ฐœ๋ฐœ์ž(์ง€๋ง์ƒ)์˜ ํ’€์Šคํƒ ๊ฐœ๋ฐœ์ž ๋„์ „๊ธฐ
  • ํ‚ํ‚์ž‰
    monicx.dev
    ํ‚ํ‚์ž‰
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (173)
      • ๐Ÿ–ฅ๏ธdevelop (2)
        • Github (2)
        • Frontend (4)
        • Backend (5)
        • Mobile (0)
        • CS (0)
        • Three.js (0)
        • Docker (2)
      • ๐Ÿ“šbook (9)
        • npm Deep Dive (4)
      • ๐Ÿ“•review (33)
        • ์ฑ… (24)
        • ํ–‰์‚ฌ (1)
        • ํšŒ๊ณ  (2)
      • โญproject (5)
        • petiary (2)
        • ๆšŽ่ฉ  (0)
        • ์ธํ„ด (2)
      • ๐Ÿ˜ถ‍๐ŸŒซ๏ธalgorithm (0)
      • ๐Ÿ’กtips (1)
      • ๐Ÿ˜Ždaily (10)
      • ๐Ÿ•น๏ธgame (0)
      • ๐Ÿ•Š๏ธํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฐ๋ธŒ์ฝ”์Šค (87)
        • TIL (61)
        • ํ”„๋กœ์ ํŠธ (18)
        • ํšŒ๊ณ  (8)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
  • ๋งํฌ

    • ๋ฒจ๋กœ๊ทธ
  • ์ธ๊ธฐ ๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
ํ‚ํ‚์ž‰
[Luvit ํ•œ๋‹ฌ ์Šคํ„ฐ๋””] ์ƒˆ๋กœ์šด ์›น ๊ฐœ๋ฐœ์˜ ์‹œ์ž‘ ์Šค๋ฒจํŠธ #4
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”