[Front-end๐Ÿˆโ€โฌ›] #39 ์‹œ๊ฐํ™”, git, Github

๋˜์ƒยท2021๋…„ 12์›” 22์ผ
0

front-end

๋ชฉ๋ก ๋ณด๊ธฐ
54/58
post-thumbnail

1. ์ •๊ทœํ‘œํ˜„์‹

๋ฌธ์ œ๋ฅผ ๋ช‡ ๊ฐœ ํ’€์—ˆ๋Š”๋ฐ, #38 ์— ์ด์–ด์„œ ์ •๋ฆฌํ–ˆ๋‹ค.


2. ์‹œ๊ฐํ™”

1. Chart.js

https://www.chartjs.org

chart.js, bootstrap ์„ ์ด์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ ์‹œ๊ฐํ™”๋ฅผ ํ•ด๋ณด์•˜๋‹ค. cdn ์œผ๋กœ script๋ฅผ ๊ฐ€์ ธ์™€์„œ label, data, config ์˜ ๋ฐ์ดํ„ฐ์™€ ์˜ต์…˜๋“ค์„ ์ˆ˜์ •ํ•ด์„œ ์‰ฝ๊ฒŒ ํ‘œ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์—ˆ๋‹ค.

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>chartjs</title>

    <!-- chartjs cdn -->
    <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>

    <!-- bootstrap css -->
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
    <div class="container">
        <div class="row">
            <div class="col-md-6">
                <canvas id="myChartOne"></canvas>
            </div>
        </div>
    </div>
    <script>
        const labels = [
            '1์›”',
            '2์›”',
            '3์›”',
            '4์›”',
            '5์›”',
            '6์›”',
        ];
      
        const data = {
        labels: labels,
        datasets: [{
            label: '๋งค์ถœ์•ก ํ˜„ํ™ฉ(์–ต)',
            backgroundColor: ['gold', 'pink', 'skyblue'], // rgba(255, 0, 0, 0.5), #ff0000
            borderColor: 'black',
            borderWidth: 5,
            hoverBorderWidth: 7,
            data: [1, 2, 5, 2, 2, 3, 4],
        }]
        };
      
        const config = {
            type: 'bar', // pie, bar, line, doughnut, polarArea
            data: data3,
            options: {
                plugins:{
                    title:{
                        display: true,
                        text: '๋งค์ถœ์•ก!!!!',
                        color: 'red',
                        position: 'bottom',
                        padding: {
                            top: 10,
                            bottom: 10
                        }
                    },
                    legend: {
                        display: true,
                        position:'right',
                        labels:{
                            color:'blue'
                        }
                    }
                }
            }
        };
    </script>
    <script>
        const myChartOne = new Chart(
            document.getElementById('myChartOne'),
            config
        );
    </script>
</body>
</html>

๊ณต๊ณต ๋ฐ์ดํ„ฐ ํฌํ„ธ์—์„œ ์—‘์…€ ํŒŒ์ผ์„ csv๋กœ ๋ฝ‘๊ณ  ๊ทธ๊ฑธ ๋‹ค์‹œ json์œผ๋กœ ๋ณ€ํ™˜ํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ๋„ ์žˆ๋‹ค.

๊ณต๊ณต ๋ฐ์ดํ„ฐ ํฌํ„ธ - https://www.data.go.kr
csv to json - https://curryyou.tistory.com/252


2. Canvas

๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ดํŽด๋ณด์•˜๋‹ค!! iOS์—์„œ ํ™”๋ฉด ์žก๋Š”๊ฒŒ ์•ฝ๊ฐ„ ์ด๋Ÿฐ ํ˜•ํƒœ์ธ๋ฐ html์—๋„ ์žˆ๋Š” ๊ฒƒ์ด์—ˆ๋‹ค.

<body>
    <canvas id="canvas"></canvas>
    <script>
        const canvas = document.getElementById('canvas');
        // ์บ”๋ฒ„์Šค์—์„œ ์–ด๋–ป๊ฒŒ ๊ทธ๋ฆด์ง€ ๋ Œ๋”๋ง ์ปจํ…์ŠคํŠธ๋ฅผ ๋ฐ›์•„์˜จ๋‹ค.
        const ctx = canvas.getContext('2d'); 

        // ์‹ค์ œ๋กœ ๊ทธ๋ฆฌ๋Š” ํ•จ์ˆ˜
        function drawRect(ctx) {
            let x = 10,
            y = 10,
            w = 150,
            h = 100;
            ctx.fillStyle = 'green';
            ctx.fillRect(x, y, w, h);
        }

        function ์‚ผ๊ฐํ˜•(ctx) {
            ctx.beginPath();
            ctx.moveTo(75, 70);
            ctx.lineTo(100, 75);
            ctx.lineTo(100, 25);
            ctx.fillStyle = 'red';
            ctx.fill();
        }

        drawRect(ctx);
    </script>
</body>




3. D3

https://d3js.org
https://bl.ocks.org/mbostock/4063269

d3๋„ ๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ดํŽด๋ณด์•˜๋‹ค.

  • ๋™์ž‘๊ณผ์ •
    • Loading - ๋ฐ์ดํ„ฐ ๋กœ๋”ฉ
    • Selecting-Binding - ์ฝ”๋“œ ์—ฐ๋™
    • Transform - ๊ทธ๋ž˜ํ”„์˜ ์ƒ‰์ƒ, ์ถ• ๋“ฑ ์„ค์ •
    • Transition - ํด๋ฆญ ๋“ฑ์˜ ํšจ๊ณผ ์ง€์ •
  • ๊ธฐ๋ณธ๋ฉ”์„œ๋“œ
    • d3.select : ํƒœ๊ทธ ํ•˜๋‚˜ ์„ ํƒ
    • d3.selectAll : ํƒœ๊ทธ ์ „์ฒด ์„ ํƒ
    • .data : ๋ฐ์ดํ„ฐ ๋กœ๋”ฉ
    • .enter : ํƒœ๊ทธ๊ฐ€ ๋ฐ์ดํ„ฐ์— ๋น„ํ•ด ๋ถ€์กฑํ•˜๋ฉด ๋‚˜๋จธ์ง€ ๋ฐ˜ํ™˜
    • .append : ์ƒˆ๋กœ์šด ํƒœ๊ทธ ์ถ”๊ฐ€
    • .exit : ์ข…๋ฃŒ
    • .remove : ์„ ํƒ๋œ ํƒœ๊ทธ ์ œ๊ฑฐ
<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>D3</title>
    <script src="https://d3js.org/d3.v7.min.js"></script>
</head>
<body>
    <div class="canvas"></div>
    <script>
        const canvas = d3.select('.canvas');

        const svg = canvas.append('svg')
                .attr('height', 1000)
                .attr('width', 1000);

        // x y ๋Š” ์ขŒ์ธก ์ƒ๋‹จ ๊ธฐ์ค€ ์ขŒํ‘œ.
        svg.append('text')
            .attr('x', 200)
            .attr('y', 200)
            .attr('fill', 'black')
            .text('hello world')
            .style('font-weight', 'bold')
            .style('font-style', '34px')

        svg.append('rect')
            // .attr('x', 10)
            // .attr('y', 10)
            .attr('width', 200)
            .attr('height', 200)
            .attr('fill', 'hotpink')

        svg.append('circle')
            .attr('r', 50)
            // cx, cy ๋Š” ์›์˜ ์ค‘์‹ฌ
            .attr('cx', 200)
            .attr('cy', 200)
            .attr('fill', 'pink')
        
        svg.append('line')
            .attr()
    </script>
</body>
</html>




4. disqus

https://disqus.com

disqus ๋ฅผ ์ด์šฉํ•ด์„œ ๋ธ”๋กœ๊ทธ์— ๋Œ“๊ธ€์ฐฝ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ๊ตฌํ˜„ํ•ด ๋ณด์•˜๋‹ค. github.io ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ ๋“ค์–ด๊ฐ€๋ฉด ๋งŽ์ด ๋ณด์ด๋˜ UI์ด๋˜๋ฐ ์ด๊ฑธ ์“ฐ์‹ ๊ฑฐ์˜€๋‹ค๋Š”๊ฑธ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. ๊นƒํ—™ ๋ธ”๋กœ๊ทธ์ฒ˜๋Ÿผ ํŽ˜์ด์ง€๋Š” ์ •์ ์ธ๋ฐ ๋Œ“๊ธ€์„ ๋‹ค๋Š” ๊ฒƒ๋งŒ ํ•„์š”ํ•  ๋•Œ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.

1. ํšŒ์›๊ฐ€์ž… ํ›„ Get Started!

2. I want to install Disqus on my site

์šฐ๋ฆฌ๋Š” html์„ ์ง์ ‘ ๋งŒ๋“ค์–ด์„œ ๋Œ“๊ธ€์ฐฝ์„ ๋„ฃ๊ณ  ์‹ถ์€๊ฑฐ๋‹ˆ๊นŒ@

3. Create my site

์›น์‚ฌ์ดํŠธ ์ด๋ฆ„๊ณผ ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ์ฑ„์šฐ๊ณ  ์ƒ์„ฑํ•œ๋‹ค.

4. ๋‹จ๊ณ„ ์ง„ํ–‰

์ด 4๋‹จ๊ณ„๋ฅผ ์ง„ํ–‰ํ•ด์•ผํ•˜๋Š”๋ฐ,

  1. Select Plan ์€ Basic์œผ๋กœ

  1. I don't see my platform listed, install manually with Universal Code

๋ˆ„๋ฅด๋ฉด ๋‚˜์˜ค๋Š” ์ฝ”๋“œ๋ฅผ ๋ณต์‚ฌํ•ด์„œ html ํ•˜๋‹จ์— ๋ถ™์—ฌ๋„ฃ๊ณ  ๋‚˜๋จธ์ง€ ๊ณผ์ •์„ ๋งˆ๋ฌด๋ฆฌํ•œ๋‹ค! ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•  ๋ ˆํฌ๋Š” ์•„๋‹ˆ์—ˆ์–ด์„œ ๋Œ“๊ธ€์ด ์จ์ง€๋Š” ๊ฒƒ๋งŒ ํ™•์ธํ•˜๊ณ  ๋‚˜๋จธ์ง€ ์„ค์ •์€ ์ง„ํ–‰ํ•˜์ง€ ์•Š์•˜๋‹ค.




3. Git / Github

1. Git

  • git : ๋กœ์ปฌ ์ €์žฅ์†Œ / ์›๊ฒฉ ์ €์žฅ์†Œ ๋กœ ๋‚˜๋‰œ๋‹ค. git ์ด๋ž‘ github ์€ ๋‹ค๋ฅธ ๊ฒƒ!
  • 4๊ฐ€์ง€ ํ•„์ˆ˜ ๋ช…๋ น์–ด : git pull / push / commit / add
git init
# ์ €์žฅ์†Œ๋กœ ์ด๋™ ํ›„
touch README.md

git add README.md
git add . # ์ „์ฒด add
git commit -m "first commit"

git ignore

# a comment - ์ด ์ค„์€ ๋ฌด์‹œํ•œ๋‹ค.
# ํ™•์žฅ์ž๊ฐ€ .a์ธ ํŒŒ์ผ ๋ฌด์‹œ
*.a
# ์œ— ์ค„์—์„œ ํ™•์žฅ์ž๊ฐ€ .a์ธ ํŒŒ์ผ์€ ๋ฌด์‹œํ•˜๊ฒŒ ํ–ˆ์ง€๋งŒ lib.a๋Š” ๋ฌด์‹œํ•˜์ง€ ์•Š๋Š”๋‹ค.
!lib.a
# ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ์— ์žˆ๋Š” TODOํŒŒ์ผ์€ ๋ฌด์‹œํ•˜๊ณ  subdir/TODO์ฒ˜๋Ÿผ ํ•˜์œ„๋””๋ ‰ํ† ๋ฆฌ์— ์žˆ๋Š” ํŒŒ์ผ์€ ๋ฌด์‹œํ•˜์ง€ ์•Š๋Š”๋‹ค.
/TODO
# build/ ๋””๋ ‰ํ† ๋ฆฌ์— ์žˆ๋Š” ๋ชจ๋“  ํŒŒ์ผ์€ ๋ฌด์‹œํ•œ๋‹ค.
build/
# `doc/notes.txt`๊ฐ™์€ ํŒŒ์ผ์€ ๋ฌด์‹œํ•˜๊ณ  doc/server/arch.txt๊ฐ™์€ ํŒŒ์ผ์€ ๋ฌด์‹œํ•˜์ง€ ์•Š๋Š”๋‹ค.
doc/*.txt
# `doc` ๋””๋ ‰ํ† ๋ฆฌ ์•„๋ž˜์˜ ๋ชจ๋“  .txt ํŒŒ์ผ์„ ๋ฌด์‹œํ•œ๋‹ค.
doc/**/*.txt
git log # ์ปค๋ฐ‹ ๊ธฐ๋ก ํ™•์ธ
git diff # ๋ณ€๊ฒฝ์‚ฌํ•ญ ํ™•์ธ

github

// push : ์ €์žฅ์†Œ์— ์˜ฌ๋ผ๊ฐ 
git remote add origin pushํ• ์ฃผ์†Œ
git push -u origin main
git push origin branchname
// clone : ์ €์žฅ์†Œ์— ์žˆ๋Š” ๊ฒƒ์„ ์ฒ˜์Œ ๋ฐ›์•„์˜ฌ ๋•Œ
git clone ๊ฐ€์ ธ์˜ฌ์ฃผ์†Œ . #.์„ ํ•ด์•ผ ์ œ์ผ ์ƒ์œ„ ํด๋”๊ฐ€ ์•ˆ์ƒ๊น€.
# clone ๋ฐ›๊ณ  ๊ถŒํ•œ๋„ ๋ฐ›์•„์•ผ ํ•œ๋‹ค. Manage access > Add people
// pull : ์ด๋ฏธ ํด๋ก ๋œ ์ €์žฅ์†Œ์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๋ฐ›์•„์˜ด
git pull origin main # github์— ์—…๋ฐ์ดํŠธ๋œ ๊ฒƒ์„ ๋ฐ›์•„์˜ฌ๋•Œ.

branch

// branch :  ๋ง ๊ทธ๋Œ€๋กœ ๊ฐ€์ง€๋ฅผ ๋ป—์Œ! ์ง€๊ธˆ ์ฝ”๋“œ์™€ ๊ฐ™์€ ๋ฒ ์ด์Šค์—์„œ ์ž‘์—…์„ ํ•˜์ง€๋งŒ ๋ธŒ๋žœ์น˜๋ผ๋ฆฌ ๋ฐ˜์˜์€ ์•ˆ๋จ.
git branch # branch ํ™•์ธ
git branch test # test branch ์ƒ์„ฑ
// switch : ๋ธŒ๋žœ์น˜ ๋ณ€๊ฒฝ 
git checkout test
git switch test # switch ๋ธŒ๋žœ์น˜๋ฅผ ์˜ฎ๊ธฐ๋Š” ๊ธฐ๋Šฅ๋งŒ ๋‹ด๋‹น.
git switch -c new-dev # ์ƒˆ ๋ธŒ๋žœ์น˜ ๋งŒ๋“ค์–ด์„œ ์˜ฎ๊น€
// restore : ํŒŒ์ผ ๋‚ด์šฉ ์ˆ˜์ • ๋ณต์› / addํ•ด์„œ ์Šคํ…Œ์ด์ง€์— ์˜ฌ๋ฆฐ ๊ฒƒ ๋บ„ ๋•Œ ์‚ฌ์šฉ.
git checkout -- README.md
git restore README.md
# reset ๋Œ€์‹  restore๋ฅผ ์ด์šฉํ•˜๋ฉด ์ˆ˜์ •์‚ฌํ•ญ ์กฐ์ž‘์ด ํŽธํ•˜๋‹ค.
git reset HEAD README.md
git restore --staged README.md
// merge : ๊ฐœ๋ฐœ์ด ๋๋‚˜์„œ ๋ธŒ๋žœ์น˜๋ฅผ ํ•ฉ์นจ.
git checkout main
git merge test # test๋ฅผ main์— merge.

๊ธฐํƒ€

// amend : ์ตœ์‹  ์ปค๋ฐ‹์— ์ƒˆ๋กœ์šด ์ปค๋ฐ‹ ์ถ”๊ฐ€
# ํ˜ผ์ž ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ์•„๋‹Œ ๋ธŒ๋žœ์น˜๋Š” ๊ผฌ์ผ ์ˆ˜ ์žˆ์œผ๋‹ˆ ์ฃผ์˜!
git commit --amend
// stash : ์ปค๋ฐ‹ ๋ชปํ•œ ํŒŒ์ผ์ด ์žˆ๋Š”๋ฐ ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜์— ์ฒดํฌ์•„์›ƒํ•  ๋•Œ ์ž ์‹œ ํŒŒ์ผ๋“ค์„ ์น˜์›Œ๋‘๋Š” ๊ธฐ๋Šฅ
git stash 
git stash --all # ์ €์žฅ์†Œ์—์„œ ๊ด€๋ฆฌํ•˜์ง€ ์•Š๋Š” ํŒŒ์ผ๊นŒ์ง€ ๋ชจ๋‘ ์น˜์›€
git stash pop # ๋‹ค์‹œ ๋ธŒ๋žœ์น˜์— ๋Œ์•„์™€์„œ ์ˆ˜ํ–‰.
// reset : ์˜›๋‚  ์ปค๋ฐ‹์œผ๋กœ ๋ธŒ๋žœ์น˜๋ฅผ ๋˜๋Œ๋ฆด ๋•Œ
git reset [mode] # hard, mixed, soft ๋ฅผ ๋งŽ์ด ์‚ฌ์šฉ.
git reset --hard commit-id # ๋ชจ๋“  ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๋ฒ„๋ฆฌ๊ณ  commit id ์‹œ์ ์œผ๋กœ ํšŒ๊ท€
# mixed : ๋ณ€๊ฒฝ ์‚ฌํ•ญ์€ ๋กœ์ปฌ์— ์ €์žฅํ•˜๊ณ  ์ปค๋ฐ‹์€ ๋ฆฌ์…‹, ๋ณ€๊ฒฝ๋‚ด์—ญ์ด unstage์— ๋‚จ์Œ
# soft : ์ปค๋ฐ‹์„ ์‚ญ์ œํ•˜๊ณ  ๋ชจ๋“  ๋กœ์ปฌ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์œ ์ง€, ๋ณ€๊ฒฝ๋‚ด์—ญ์ด stage์— ๋‚จ์Œ.
// revert : ์ด๋ ฅ์„ ๋‚จ๊ฒจ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๋˜๋Œ๋ฆฌ๊ณ  ์ปค๋ฐ‹์„ ์ƒ์„ฑ
# reset๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ํ•˜๋‚˜, reset์€ ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ์ดˆ๊ธฐํ™”ํ•ด์„œ ๋‹ค๋ฅธ์‚ฌ๋žŒ ํžˆ์Šคํ† ๋ฆฌ์—๊นŒ์ง€ ์˜ํ–ฅ์„ ์ฃผ๋‹ˆ revert๋ฅผ ์‚ฌ์šฉํ•ด ์ปค๋ฐ‹์„ ์ƒˆ๋กœ ๋งŒ๋“ ๋‹ค.
git revert commit-id
// cherry-pick : ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜์—์„œ ๊ฐ€์ ธ์˜ค๊ณ  ์‹ถ์€ ์ปค๋ฐ‹๋งŒ ๊ฐ€์ ธ์˜ด.
git cherry-pick commit-id

2. Pull request

๋‹ค๋ฅธ repository ๋ฅผ fork ํ•ด์™€์„œ ๊ฐœ๋ฐœํ•˜๊ณ  pull request๋ฅผ ๋‚ ๋ฆฌ๋ฉด ๋œ๋‹ค.

  • ์ปค๋ฐ‹์€ ์ฝ”๋“œ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ๋Š”๋ฐ ์ถ”๊ฐ€๊ฐ€ ๊ธฐ๋Šฅ ๋‹จ์œ„์ผ๋•Œ
  • add ๋ช…๋ น์–ด๋ฅผ ์•Œ๊ณ ๋Š” ์žˆ์—ˆ๋Š”๋ฐ, ์†Œ์ŠคํŠธ๋ฆฌ๋‚˜ ํŒŒ์ด์ฐธ ์“ฐ๋ฉด์„œ add ์•ˆํ•ด๋„ ๋œจ๊ณ , ํŒŒ์ด์ฐธ์—์„œ๋Š” ํŒŒ์ผ ์ƒ์„ฑํ•  ๋•Œ add ํ•˜๋ƒ๊ณ  ๋ฌผ์–ด๋ด์ค˜์„œ ๋ณ„๋กœ ์‹ ๊ฒฝ ์•ˆ์ผ๋Š”๋ฐ add์™€ commit์˜ ์ ํ™•ํ•œ ์ฐจ์ด๋ฅผ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค.




4. threejs (ํŠน๊ฐ•)

threejs์˜ ๋™์ž‘ ์›๋ฆฌ๋Š” renderer๊ฐ€ ๋ฐฐ๊ฒฝ์„ ๋งŒ๋“ค์–ด์„œ ๋ณด์—ฌ์ฃผ๊ณ , Scene ์ด๋ผ๋Š” ์žฅํŒ์— Geometry๋ฅผ ๋ฐฐ์น˜ํ•ด ๋†“๋Š” ๋ฐฉ์‹์ด๋‹ค. ๋น›์€ ๊ณ ์ •๋˜์–ด ์žˆ๊ณ  ์นด๋ฉ”๋ผ๋ฅผ ์›€์ง์—ฌ์„œ ๋ณธ๋‹ค. ์˜ท, ๋ˆˆ, ์ฝ”, ์ž… ๊ฐ™์€๊ฒƒ์€ Geometry์— Material ๋กœ ๋ถ™์ธ๋‹ค. ๊ทธ๋ž˜์„œ ๊ฐ๊ฐ์˜ ์š”์†Œ๋ฅผ ๋งŒ๋“ค์–ด์„œ ์ œ์–ดํ•ด์ฃผ๋ฉด ๋œ๋‹ค.


์‚ฌ์ง„ ์ถœ์ฒ˜ - ์œ ์ค€๋ชจ ๋Œ€ํ‘œ๋‹˜์˜ ํ•„๊ธฐ

์—„์ฒญ ์ƒ์„ธํ•˜๊ฒŒ!! ๊ฐ€์ด๋“œ๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์…จ๋Š”๋ฐ npm start ํ•˜๋ฉด

์ด์ƒํ•˜๊ฒŒ ์—ฌ๊ธฐ์„œ ๋” ์ง„ํ–‰์ด ์•ˆ๋ผ์„œ ๋Œ€ํ‘œ๋‹˜์˜ ํ™”๋ฉด๋งŒ ์ง€์ผœ๋ณด์•˜๋‹ค.. ๊ทธ๋ž˜๋„ ์„ค๋ช…์„ ์ž˜ํ•ด์ฃผ์…”์„œ ์žฌ๋ฐŒ์—ˆ๋‹ค! ๋‹น์žฅ ์“ธ ์ผ์€ ์—†์„ ๊ฒƒ ๊ฐ™๊ธฐ๋Š” ํ•˜๋‹ค...




profile
0๋…„์ฐจ iOS ๊ฐœ๋ฐœ์ž์ž…๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€