[week_06] MongoDB์™€ Mongoose

    1. MongoDB ๋Œ€ํ‘œ์ ์ธ NoSQL, Document DB RDB NoSQL - ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (Relational DataBase) - ์ž๋ฃŒ๋“ค์˜ ๊ด€๊ณ„๋ฅผ ์ฃผ์š”ํ•˜๊ฒŒ ๋‹ค๋ฃธ - SQL ์งˆ์˜์–ด ์‚ฌ์šฉ โžก ๋ฐ์ดํ„ฐ ๊ตฌ์กฐํ™” - ๊ตฌ์กฐํ™”๋œ ์งˆ์˜์–ด ์‚ฌ์šฉ X (Non SQL / Not Only SQL) - ์ž๋ฃŒ ๊ฐ„์˜ ๊ด€๊ณ„์— ์ดˆ์  X - ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ์กฐํ™” X โžก ์œ ์—ฐํ•˜๊ฒŒ ๋ฐ์ดํ„ฐ ์ €์žฅ DDL์ด๋‚˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐํ™” ๋“ฑ์˜ ์‚ฌ์ „์ž‘์—… ์—†์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉ ๊ฐ€๋Šฅ Database ํ•˜๋‚˜ ์ด์ƒ์˜ Collection์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์ €์žฅ์†Œ Collection ํ•˜๋‚˜ ์ด์ƒ์˜ Document๊ฐ€ ์ €์žฅ๋˜๋Š” ๊ณต๊ฐ„, SQL์˜ table๊ณผ ์œ ์‚ฌ Document ์ €์žฅ๋˜๋Š” ์ž๋ฃŒ, SQL์˜ row์™€ ์œ ์‚ฌ ObjectID document์˜ ์œ ์ผํ•œ ๊ธฐ ๊ฐ’, SQ..

    [week_06] Express.js์™€ REST API | Middleware, JSON, Postman

    1. Middleware 1-1. Express.js์˜ Middleware HTTP ์š”์ฒญ๊ณผ ์‘๋‹ต ์‚ฌ์ด์—์„œ ๋‹จ๊ณ„๋ณ„ ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•ด์ฃผ๋Š” ํ•จ์ˆ˜ HTTP ์š”์ฒญ๊ณผ ์‘๋‹ต ๊ฐ์ฒด๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ฑฐ๋‚˜, ๋‹ค์Œ ๋ฏธ๋“ค์›จ์–ด ์‹คํ–‰ HTTP ์š”์ฒญ์ด ๋“ค์–ด์˜จ ์ˆœ๊ฐ„ ์‹œ์ž‘ โžก HTTP ์‘๋‹ต ๋งˆ๋ฌด๋ฆฌ๋  ๋•Œ ๊นŒ์ง€ ๋ฏธ๋“ค์›จ์–ด ๋™์ž‘ ์‚ฌ์ดํด ์‹คํ–‰ 1-2. Middleware ์ž‘์„ฑ๋ฒ• req, res, next๋ฅผ ๊ฐ€์ง„ ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑ req: HTTP ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฐ์ฒด res: HTTP ์‘๋‹ต์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฐ์ฒด next: ๋‹ค์Œ ๋ฏธ๋“ค์›จ์–ด๋ฅผ ์‹คํ–‰ํ•˜๋Š” ํ•จ์ˆ˜ const logger = (req, res, next) => { console.log(`Request ${req.path}`); next(); } next() ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜์ง€ ์•Š์œผ๋ฉด ๋ฏธ๋“ค์›จ์–ด ์‚ฌ์ดํด์ด ๋ฉˆ์ถ”๊ธฐ ๋•Œ๋ฌธ์— ..

    [BE] ๋ผ์šฐํŒ…(Routing)

    1. ํŒจํ‚ท(Packet) ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์ „์†ก๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์ž‘์€ ์กฐ๊ฐ ์‹ค์ œ ํ†ต์‹ ์—์„œ ๋ฐ์ดํ„ฐ๋Š” ํŒจํ‚ท ๋‹จ์œ„๋กœ ์ชผ๊ฐœ์ ธ์„œ ์ „์†ก๋œ๋‹ค. ํฐ ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜์˜ ํšŒ์„ ์œผ๋กœ ์ „์†กํ•˜๊ฒŒ ๋˜๋ฉด ์‹œ๊ฐ„์ด ์˜ค๋ž˜๊ฑธ๋ฆฌ๊ณ , ์ค‘๊ฐ„์— ์ •๋ณด๊ฐ€ ์†์‹ค๋˜์—ˆ์„ ๋•Œ ์žฌ์ „์†กํ•˜๊ธฐ์—๋„ ๋น„ํšจ์œจ์ ์ด๊ธฐ ๋•Œ๋ฌธ์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. 2. ๋ผ์šฐํŒ…(Routing) ๊ฒฝ๋กœ ์ •๋ณด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ˜„์žฌ์˜ ๋„คํŠธ์›Œํฌ์—์„œ ๋‹ค๋ฅธ ๋„คํŠธ์›Œํฌ๋กœ ์ตœ์ ์˜ ๊ฒฝ๋กœ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š” ๊ธฐ๋ฒ• ํŒจํ‚ท์„ ์ „์†กํ•˜๊ธฐ ์œ„ํ•ด ์†ก์‹ ์ž์ธก์—์„œ ๋ชฉ์ ์ง€๊นŒ์ง€์˜ ๊ฒฝ๋กœ๋ฅผ ์ •ํ•˜๊ณ , ์ •ํ•ด์ง„ ๊ฒฝ๋กœ๋ฅผ ๋”ฐ๋ผ ํŒจํ‚ท์„ ์ „๋‹ฌํ•˜๋Š” ๊ณผ์ • IP๊ฐ€ ๋„คํŠธ์›Œํฌ ์žฅ์น˜๊ฐ€ ๊ฐ–๋Š” ๊ณ ์œ ์˜ ์ฃผ์†Œ๋ผ๊ณ  ํ•˜๋ฉด, ๋ผ์šฐํŒ…์€ ๊ทธ ์ฃผ์†Œ๋ฅผ ์ฐพ์•„๊ฐ€๋Š” ๊ณผ์ • ๋ผ์šฐํŒ…์—๋Š” ๋ชฉ์ ์ง€ ์ฃผ์†Œ, ํ† ํด๋กœ์ง€, ํŠธ๋ž˜ํ”ฝ ๋ถ€ํ•˜, ๋งํฌ ๋น„์šฉ(๋ผ์šฐํŒ… ๋งคํŠธ๋ฆญ) ๋“ฑ์˜ ์ •๋ณด๊ฐ€ ์‚ฌ์šฉ๋œ๋‹ค. 2-1. ๋ผ์šฐํ„ฐ(Router) ..

    [week_06] ์›น๊ณผ Express.js | ์›น์˜ ์ดํ•ด, ํ”„๋ ˆ์ž„์›Œํฌ, Express.js์˜ ๊ตฌ์กฐ, ๋™์ž‘๋ฐฉ์‹

    1. ์›น ์‚ฌ์ „์  ์˜๋ฏธ: World Wide Web, ์ธํ„ฐ๋„ท์ƒ์—์„œ ๋™์ž‘ํ•˜๋Š” ๋ชจ๋“  ์„œ๋น„์Šค ์ผ๋ฐ˜์  ์˜๋ฏธ: ์›น ๋ธŒ๋ผ์šฐ์ €๋กœ ์ ‘์†ํ•ด์„œ ์ด์šฉํ•˜๋Š” ์„œ๋น„์Šค, ์›น ์‚ฌ์ดํŠธ 1-1. ์›น ์„œ๋น„์Šค ๋™์ž‘ ๋ฐฉ์‹ HTTP ์š”์ฒญ๊ณผ ์‘๋‹ต์˜ ๋ฐ˜๋ณต HTTP ์š”์ฒญ ์‚ฌ์šฉ์ž๊ฐ€ ์–ด๋–ค ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•œ์ง€ ์„œ๋ฒ„์—๊ฒŒ ์•Œ๋ฆฌ๋Š” ์—ญํ•  ์–ด๋–ค ์‚ฌ์šฉ์ž๊ฐ€, ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ํ•„์š”๋กœ ํ•˜๋Š”์ง€ ๋“ฑ์„ ๋‹ด๊ณ  ์žˆ์Œ HTTP ์‘๋‹ต HTTP ์š”์ฒญ์— ํ•ด๋‹นํ•˜๋Š” ์ ์ ˆํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ์—ญํ•  ์š”์ฒญํ•œ ๋ฐ์ดํ„ฐ์™€, ์–ด๋–ค ๋ฐ์ดํ„ฐ๊ฐ€ ์ „์†ก๋˜๋Š”์ง€ ๋“ฑ์„ ๋‹ด๊ณ  ์žˆ์Œ 1-2. ๋ฐฑ์—”๋“œ์™€ ํ”„๋ก ํŠธ์—”๋“œ ํ”„๋ก ํŠธ์—”๋“œ ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋Š” ์›น ํŽ˜์ด์ง€๋ฅผ ์ฃผ๋กœ ๋‹ด๋‹น = ํด๋ผ์ด์–ธํŠธ ๋ฐฑ์—”๋“œ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์ด์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ ๊ฐ€๊ณต ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์ฃผ๋กœ ๋‹ด๋‹น = ์„œ๋ฒ„ 1-3. ์ •์  ์›น๊ณผ ๋™์  ์›น ์ •์  ์›น ์‚ฌ์šฉ์ž์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜์ง€ ์•Š๋Š”..

    [CS] ์‹œ๋งจํ‹ฑ ๋งˆํฌ์—…

    1. ์‹œ๋งจํ‹ฑ ๋งˆํฌ์—… ์‹œ๋งจํ‹ฑ(Semantic)์ด๋ž€ '์˜๋ฏธ๋ก ์ ์ธ'์˜ ๋œป์„ ๊ฐ€์ง€๋ฉฐ, ๋งˆํฌ์—…(Markup)์ด๋ž€ HTML ํƒœ๊ทธ๋กœ ๋ฌธ์„œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. ๋”ฐ๋ผ์„œ, ์‹œ๋งจํ‹ฑ ๋งˆํฌ์—…์ด๋ž€ ์˜๋ฏธ๋ฅผ ์ž˜ ์ „๋‹ฌํ•˜๋„๋ก ๋ฌธ์„œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. 2. ์ž‘์„ฑ ๋ฐฉ๋ฒ• ์‹œ๋งจํ‹ฑ ๋งˆํฌ์—…์„ ํ•˜๊ธฐ ์œ„ํ•ด์„  ๊ฐ ํƒœ๊ทธ๋ฅผ ์šฉ๋„์— ๋งž๊ฒŒ ์‚ฌ์šฉํ•˜์—ฌ์•ผ ํ•œ๋‹ค. ์ฆ‰, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ๋“ค์„ ๋งํ•œ๋‹ค. ํ—ค๋”/ํ‘ธํ„ฐ์— ์™€ ์‚ฌ์šฉ ๋ฉ”์ธ ์ปจํ…์ธ ์— ๊ณผ ์‚ฌ์šฉ ๋…๋ฆฝ์ ์ธ ์ปจํ…์ธ ์— ์‚ฌ์šฉ ์ตœ์ƒ์œ„ ์ œ๋ชฉ์œผ๋กœ ์‚ฌ์šฉ ์ˆœ์„œ๊ฐ€ ์—†๋Š” ๋ชฉ๋ก์œผ๋กœ ๊ณผ ์‚ฌ์šฉ ๋‚ด๋น„๊ฒŒ์ด์…˜์— ์‚ฌ์šฉ ์ด๋Ÿฐ ์‹์œผ๋กœ ํƒœ๊ทธ๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์˜๋ฏธ์— ๋งž๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋Ÿฐ ์  ์ด์™ธ์—๋„ CSS ์Šคํƒ€์ผ์„ ๋ช…์‹œํ•˜๋Š” ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๋˜ํ•œ ์‹œ๋งจํ‹ฑ ๋งˆํฌ์—…์˜ ํ•œ ์ข…๋ฅ˜์ด๋‹ค. ์ฆ‰, ํƒœ๊ทธ๊ฐ€ ๊ฐ€์ง€๋Š” ์˜๋ฏธ ์ž์ฒด๊ฐ€ ์Šคํƒ€์ผ์ด๋ผ๋ฉด ์ด๋Š” ๋งˆํฌ์—… ์ž..

    [CS] script, script async, script defer

    HTML ํŒŒ์‹ฑ์ด ์ค‘๋‹จ๋˜๊ณ  ์ฆ‰์‹œ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋กœ๋“œ๋˜๋ฉฐ, ๋กœ๋“œ๋œ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‹คํ–‰๋˜๊ณ  ํŒŒ์‹ฑ์ด ์žฌ๊ฐœ๋œ๋‹ค. HTML ํŒŒ์‹ฑ๊ณผ ๋ณ‘๋ ฌ์ ์œผ๋กœ ๋กœ๋“œ๊ฐ€ ๋˜๋Š”๋ฐ, ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ๋Š” ํŒŒ์‹ฑ์ด ์ค‘๋‹จ๋œ๋‹ค. ๊ตฌ๊ธ€ ์• ๋„๋ฆฌํ‹ฑ์Šค์™€ ๊ฐ™์ด ๋‹ค๋ฅธ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์˜์กดํ•˜์ง€ ์•Š๋Š” ๋…์ž์ ์ธ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋กœ๋“œํ•  ๋•Œ ์ ํ•ฉํ•˜๋‹ค. HTML ํŒŒ์‹ฑ๊ณผ ๋ณ‘๋ ฌ์ ์œผ๋กœ ๋กœ๋“œ๊ฐ€ ๋˜๋Š”๋ฐ, ํŒŒ์‹ฑ์ด ๋๋‚˜๊ณ  ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋กœ๋“œํ•œ๋‹ค. ๋ณดํ†ต ํƒœ๊ทธ ์ง์ „์— ๋ฅผ ์‚ฝ์ž…ํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ž‘์€ ๊ฐ™์ง€๋งŒ, ๋ธŒ๋ผ์šฐ์ € ํ˜ธํ™˜์„ฑ์—์„œ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ทธ๋ƒฅ ํƒœ๊ทธ ์ง์ „์— ์‚ฝ์ž…ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. โ— ์ฃผ์˜ํ•  ์ ์€, async์™€ defer์˜ ๊ฒฝ์šฐ src ์†์„ฑ์ด ์—†์œผ๋ฉด ์ ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค. ๋ณด๋‹ค ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์—ฌ๊ธฐ์—์„œ๋„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฐธ๊ณ  https://github.com/baeharam/Must-Know-About-Front..

    [week_06] Node.js ๊ธฐ์ดˆ | NPM์˜ ์ดํ•ด, NPX, Node.js์˜ ๋ชจ๋“ˆ, ES Module

    1. NPM์ด๋ž€ Node Package Manager Node.js ํ”„๋กœ์ ํŠธ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ํ•„์ˆ˜์ ์ธ ๋„๊ตฌ ๊ตฌ์„ฑ: ์˜จ๋ผ์ธ ์ €์žฅ์†Œ + ์ปค๋งจ๋“œ๋ผ์ธ ๋„๊ตฌ ์˜จ๋ผ์ธ ์ €์žฅ์†Œ: ์˜คํ”ˆ์†Œ์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๋„๊ตฌ๋“ค์ด ์—…๋กœ๋“œ๋˜๋Š” ์ €์žฅ์†Œ ์ปค๋งจ๋“œ๋ผ์ธ ๋„๊ตฌ: ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ๋ช…๋ น์–ด ์ œ๊ณต 2. NPM ์‚ฌ์šฉํ•ด ๋ณด๊ธฐ NPM์˜ ์‚ฌ์šฉ = NPM ์ปค๋งจ๋“œ๋ผ์ธ ๋„๊ตฌ์˜ ์‚ฌ์šฉ๋ฒ•์„ ์ตํžˆ๋Š” ๊ฒƒ ํ”„๋กœ์ ํŠธ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ํ•ด๋‹น ๋””๋ ‰ํ„ฐ๋ฆฌ ์•ˆ์—์„œ $npm init ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ช‡ ๋ฒˆ์˜ ์งˆ๋ฌธ์„ ํ†ตํ•ด package.json ์ด๋ผ๋Š” ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ์ฃผ๊ณ , ์ด ๋””๋ ‰ํ„ฐ๋ฆฌ๋Š” Node.js ํ”„๋กœ์ ํŠธ๊ฐ€ ๋œ๋‹ค. 2-1. package.json ํ”„๋กœ์ ํŠธ ๊ด€๋ จ ์ •๋ณด๋“ค์ด ์ €์žฅ๋˜๋Š” ํŒŒ์ผ, ์ด ํŒŒ์ผ์„ ์ง์ ‘ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜ npm ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ”„๋กœ์ ํŠธ ์ •๋ณด๋ฅผ ์ˆ˜์ •ํ•  ์ˆ˜ ..

    [week_06] Node.js ๊ธฐ์ดˆ | Node.js์˜ ์ดํ•ด, ํŠน์ง•, ES6, ๋น„๋™๊ธฐ ์ฝ”๋”ฉ, ์ด๋ฒคํŠธ ๋ฃจํ”„

    1. Node.js๋ž€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์–ด๋А ํ™˜๊ฒฝ์—์„œ๋‚˜ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ์‹คํ–‰๊ธฐ Browser์˜ JavaScript ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‹คํ–‰ ์›น ๋‚ด๋ถ€์˜ ์ œํ•œ๋œ ๋™์ž‘ ์›น ํ”„๋ก ํŠธ ๊ฐœ๋ฐœ์ž์˜ ์–ธ์–ด Node.js ํฌ๋กœ์Šค ํ”Œ๋žซํผ ์‹คํ–‰ (์–ด๋А ํ™˜๊ฒฝ์—์„œ๋“  ์‹คํ–‰ ๊ฐ€๋Šฅ) ์ œํ•œ ์—†๋Š” ๋™์ž‘ ๋‹ค์–‘ํ•œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ 2. Node.js์˜ ํŠน์ง• ์‹ฑ๊ธ€ ์“ฐ๋ ˆ๋“œ - ๋น„๋™๊ธฐ - ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ 2-1. ์‹ฑ๊ธ€ ์“ฐ๋ ˆ๋“œ ์“ฐ๋ ˆ๋“œ(Thread): ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋Š” ๋‹จ์œ„, ํ•œ ๊ฐœ์˜ ์“ฐ๋ ˆ๋“œ๋Š” ํ•œ ๋ฒˆ์— ํ•œ ๊ฐ€์ง€ ๋™์ž‘๋งŒ ์‹คํ–‰ ๊ฐ€๋Šฅ ์‹ฑ๊ธ€ ์“ฐ๋ ˆ๋“œ: ํ•œ ๋ฒˆ์— ํ•œ ๊ฐ€์ง€ ๋™์ž‘๋งŒ ์ˆ˜ํ–‰ํ•จ ๋ฉ€ํ‹ฐ ์“ฐ๋ ˆ๋“œ: ๋™์‹œ์— ์—ฌ๋Ÿฌ ๋™์ž‘ ์ˆ˜ํ–‰ ๊ฐ€๋Šฅ ์žฅ์  ์“ฐ๋ ˆ๋“œ ์ƒ์„ฑ ๋น„์šฉ์ด ์—†๋‹ค ์“ฐ๋ ˆ๋“œ๊ฐ€ ๋Š˜์–ด๋‚˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— CPU ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ์— ํšจ์œจ์  ๋‹จ์  ์“ฐ๋ ˆ๋“œ ๊ธฐ๋ฐ˜์˜ ์ž‘์—…๋“ค์˜ ํšจ์œจ์ด ๋–จ์–ด์ง ex) CPU..