์ „์ฒด ๊ธ€

์ „์ฒด ๊ธ€

    [ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ] ๊ฐ์ฒด์ง€ํ–ฅ์  ์ปคํ”ผ๋จธ์‹  ๋งŒ๋“ค๊ธฐ : encapsulation

    ์ด์ „ ํฌ์ŠคํŒ… ๋ง‰ํŒ์— ์บก์Аํ™”๋ฅผ ํ†ตํ•ด์„œ ์ปคํ”ผ๋จธ์‹  ๋‚ด๋ถ€ ๋ณ€์ˆ˜๊ฐ’์„ ์™ธ๋ถ€์—์„œ ์ƒˆ๋กœ ์“ฐ๋Š” ๊ฒƒ์„ ๋ง‰์•„์ฃผ์–ด์•ผ ํ•˜๋Š” ํ•„์š”์„ฑ์— ๋Œ€ํ•ด์„œ ๊ฐ•์กฐํ•˜์˜€๋‹ค. //public, //private, //protected ๋“ฑ์˜ ํ‚ค์›Œ๋“œ๋“ค์„ ์ด์šฉํ•ด์„œ ๋‹ค์–‘ํ•œ ๋ ˆ๋ฒจ์˜ ์ •๋ณด๋“ค์„ ์€๋‹‰ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค. ์บก์Аํ™”๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ๋งŒ ๊ฐ€์ ธ์•ผ ํ•˜๋Š” ๊ฐ’, ์™ธ๋ถ€์—์„œ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ์š”์†Œ๋“ค์„ ๋ถ„๋ณ„ํ•ด์ฃผ๋Š” ์ž‘์—…์ด๋‹ค. type CoffeeCup = { shots: number; hasMilk: boolean; }; class coffeeMachine { private static BEANS_GRAMM_PER_SHOT: number = 7; private coffeeBeans: number = 0; constructor(coffeeBeans: number) { this.coffe..

    [ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ] ์ ˆ์ฐจ์ง€ํ–ฅ์  ์ปคํ”ผ๋จธ์‹  vs ๊ฐ์ฒด์ง€ํ–ฅ์  ์ปคํ”ผ๋จธ์‹ 

    type CoffeeCup = { shots: number; hasMilk: boolean; }; const BEANS_GRAMM_PER_SHOT: number = 7; let coffeeBeans: number = 0; function makeCoffee(shots: number): CoffeeCup { if (coffeeBeans < shots * BEANS_GRAMM_PER_SHOT) { throw new Error("Not enough coffee beans!"); } coffeeBeans -= shots * BEANS_GRAMM_PER_SHOT; return { shots, hasMilk: false, }; } function addCoffeeBeans(shots: number) { coffee..

    ์˜ˆ์™ธ์ฒ˜๋ฆฌํ•˜๊ธฐ(4) try~catch์™€ finally

    try ๋ธ”๋ก์—์„œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋‹ค๊ฐ€ ์˜ˆ์™ธ๊ฐ€ ๋˜์ ธ์ง€๋ฉด ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰์ด catch ์ ˆ๋กœ ๋ฐ”๋กœ ๋›ฐ์–ด๋„˜์–ด์˜จ๋‹ค. ๋งŒ์•ฝ ์˜ˆ์™ธ ๋•Œ๋ฌธ์— try ๋ธ”๋ก์˜ ์ž์› ํ•ด์ œ ๊ฐ™์€ ์ค‘์š”ํ•œ ์ฝ”๋“œ๋ฅผ ๋ฏธ์ฒ˜ ์‹คํ–‰ํ•˜์ง€ ๋ชปํ•œ๋‹ค๋ฉด? ์ด๋Š” ๊ณง ๋ฒ„๊ทธ๋ฅผ ๋งŒ๋“œ๋Š” ์›์ธ์ด ๋  ๊ฒƒ์ด๋‹ค! ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ ์ฝ”๋“œ์™€ ๊ฐ™์ด try ๋ธ”๋ก ๋์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ปค๋„ฅ์…˜์„ ๋‹ซ๋Š” ์ฝ”๋“œ๊ฐ€ ์žˆ์—ˆ๋Š”๋ฐ ๊ฐ‘์ž๊ธฐ ๋ฐœ์ƒํ•œ ์˜ˆ์™ธ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ์‹คํ–‰ํ•˜์ง€ ๋ชปํ•œ๋‹ค๋ฉด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ปค๋„ฅ์…˜์ด ์ ์  ์ค„์–ด ๋‚˜์ค‘์—๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ „ํ˜€ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์—†๋Š” ์ƒํƒœ์— ์ด๋ฅผ ์ˆ˜ ์žˆ๋‹ค. try { dbconn.Open(); //dbconn์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ปค๋„ฅ์…˜ //... dbconn.Close(); //์ด๋Ÿฐ ์ฝ”๋“œ๋Š” ๋ฒ„๊ทธ๋ฅผ ์ผ์œผํ‚ฌ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค. } catch (xxxException e) { //... } ๊ทธ๋ ‡๋‹ค๊ณ ..

    ์˜ˆ์™ธ ์ฒ˜๋ฆฌํ•˜๊ธฐ(3) ์˜ˆ์™ธ ๋˜์ง€๊ธฐ

    ์˜ˆ์™ธ ์ฒ˜๋ฆฌํ•˜๊ธฐ(3) ์˜ˆ์™ธ ๋˜์ง€๊ธฐ

    https://youtu.be/Os_o-7eGu7Y try catch ๋ฌธ์œผ๋กœ ์˜ˆ์™ธ๋ฅผ ๋ฐ›๋Š”๋‹ค๋Š” ๊ฒƒ์€ ์–ด๋””์„ ๊ฐ€ ์˜ˆ์™ธ๋ฅผ ๋˜์ง„๋‹ค๋Š” ์ด์•ผ๊ธฐ์ด๋‹ค. ์˜ˆ์™ธ๋ฅผ ๋˜์ง€๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ์˜ˆ์™ธ๋Š” throw๋ฌธ์„ ์ด์šฉํ•ด์„œ ๋˜์ง„๋‹ค. try { //... throw new Exception("์˜ˆ์™ธ๋ฅผ ๋˜์ง‘๋‹ˆ๋‹ค."); } catch (Exception e) { WriteLine(e.Message); //throw ๋ฌธ์„ ํ†ตํ•ด ๋˜์ ธ์ง„ ์˜ˆ์™ธ ๊ฐ์ฒด๋Š” catch๋ฌธ์„ ํ†ตํ•ด ๋ฐ›๋Š”๋‹ค. } ๋ฉ”์†Œ๋“œ ์•ˆ์—์„œ ํŠน์ • ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋ฉด(๋˜๋Š” ๋งŒ์กฑํ•˜์ง€ ๋ชปํ•˜๋ฉด) ์˜ˆ์™ธ๋ฅผ ๋˜์ง€๊ณ , ์ด๋ ‡๊ฒŒ ๋˜์ ธ์ง„ ์˜ˆ์™ธ๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” try~catch๋ฌธ์—์„œ ๋ฐ›์•„๋‚ธ๋‹ค. using System; using System.Collections; using static System.Co..

    ์˜ˆ์™ธ ์ฒ˜๋ฆฌํ•˜๊ธฐ(2) System.Exception ํด๋ž˜์Šค

    ์˜ˆ์™ธ ์ฒ˜๋ฆฌํ•˜๊ธฐ(2) System.Exception ํด๋ž˜์Šค

    https://youtu.be/Os_o-7eGu7Y 12.3 System.Exception ํด๋ž˜์Šค System.Exception ํด๋ž˜์Šค๋Š” ๋ชจ๋“  ์˜ˆ์™ธ์˜ ์กฐ์ƒ์ด๋‹ค. C#์—์„œ ๋ชจ๋“  ์˜ˆ์™ธ ํด๋ž˜์Šค๋Š” ๋ฐ˜๋“œ์‹œ ์ด ํด๋ž˜์Šค๋กœ๋ถ€ํ„ฐ ์ƒ์†๋ฐ›์•„์•ผ ํ•œ๋‹ค. IndexOutOfRangeException ์˜ˆ์™ธ๋„ System.Exception ์œผ๋กœ๋ถ€ํ„ฐ ํŒŒ์ƒ๋˜์—ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์ƒ์† ๊ด€๊ณ„๋กœ ์ธํ•ด ๋ชจ๋“  ์˜ˆ์™ธ ํด๋ž˜์Šค๋Š” System.Exception ํ˜•์‹์œผ๋กœ ๊ฐ„์ค„ํ•  ์ˆ˜ ์žˆ๊ณ , System.Exception ํ˜•์‹์˜ ์˜ˆ์™ธ๋ฅผ ๋ฐ›๋Š” catch ์ ˆ ํ•˜๋‚˜๋ฉด ๋ชจ๋“  ์˜ˆ์™ธ๋ฅผ ๋‹ค ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๋œป์ด ๋œ๋‹ค. try { } catch(IndexOutOfRangeException e) { //... } catch(DivideByZeroException e) { //...

    [ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ์ „์šฉ ์˜ˆ์‹œ] ๊ฐ์ฒด์ง€ํ–ฅ 4๊ฐ€์ง€ ์›์น™

    ์ข‹์€ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ž€, ๊ฐ€. ์บก์Аํ™”๊ฐ€ ์ž˜ ๋˜์–ด ์žˆ์Œ ๋‚˜. ๋›ฐ์–ด๋‚œ ์ถ”์ƒ์„ฑ ๋‹ค. ์ƒ์†(์ฝ”๋“œ ์žฌ์‚ฌ์šฉ) ๊ฐ€,๋‚˜,๋‹ค๋ฅผ ํ†ตํ•ด์„œ ๋ผ. ๋‹คํ˜•์„ฑ์„ ์ถ”๊ตฌํ•œ๋‹ค. ์ ˆ์ฐจ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ๋Š” ๋ฐ์ดํ„ฐ์™€ ํ•จ์ˆ˜๊ฐ€ ๋‹ค ์„ž์—ฌ์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๊ด€๋ จ์ด ์žˆ๋Š” ๋ฐ์ดํ„ฐ์™€ ํ•จ์ˆ˜๋“ค์„ ๋ฌถ๋Š” ๊ฒƒ์„ '์บก์Аํ™”'๋ผ๊ณ  ํ•œ๋‹ค. ๋˜ํ•œ ์™ธ๋ถ€์— ๋…ธ์ถœํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ๋ฐ์ดํ„ฐ๋“ค์„ ์ž˜ ์ˆจ๊ธฐ๋Š” ๊ฒƒ์ด๊ธฐ๋„ ํ•˜๋‹ค. (์˜ˆ์‹œ1 : ๊ฐ๊ธฐ์•ฝ์˜ ์˜ˆ์‹œ, ํ™˜์ž๋“ค์€ ์˜์‚ฌ๊ฐ€ ๊ฑด๋„ค์ค€ ์บก์А ๊ฐ๊ธฐ์•ฝ ํ•˜๋‚˜๋งŒ ๋จน์œผ๋ฉด ๋œ๋‹ค. ๊ทธ ์บก์А์•ˆ์˜ ๊ฐ€๋ฃจ๊ฐ€ ์–ด๋–ค ์„ฑ๋ถ„๋“ค์ด ์„ž์—ฌ ์žˆ๋Š”์ง€๋Š” ๋ชฐ๋ผ๋„ ๋œ๋‹ค.) (์˜ˆ์‹œ2 : ๊ณ ์–‘์ด์˜ ์ƒํƒœ๋Š” ์™ธ๋ถ€์—์„œ ์ง์ ‘์ ์œผ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋‹ค.(์Šฌํ””, ์•„ํ””, ๊ธฐ์จ, ํ‰์˜จ ๋“ฑ...) ๋‹จ ์ฃผ์ธ์ด ๋†€์•„์ฃผ๊ณ  ๋จน์ด๋ฅผ ์ฃผ๋Š” ๋“ฑ์˜ ํ–‰์œ„(์™ธ๋ถ€ ํ•จ์ˆ˜)๋ฅผ ๊ฐ€ํ•จ์œผ๋กœ์จ ๊ณ ์–‘์ด์˜ ๋‚ด๋ถ€ ์ƒํƒœ์— ๋ณ€ํ™”๋ฅผ ์ฃผ์—ˆ๋‹ค๋ฉด incap..

    Amazon EC2 ์ธ์Šคํ„ด์Šค ์‹œ์ž‘

    [AWS]์•„๋งˆ์กด ์›น ์„œ๋น„์Šค_EC2 ์ธ์Šคํ„ด์Šค ์‹œ์ž‘ํ•˜๊ธฐ :: ๋‚˜๋งŒ์˜ ๊ธฐ๋ก๋“ค (tistory.com) [AWS]์•„๋งˆ์กด ์›น ์„œ๋น„์Šค_EC2 ์ธ์Šคํ„ด์Šค ์‹œ์ž‘ํ•˜๊ธฐ AWS์˜ EC2 ์ธ์Šคํ„ด์Šค๋ฅผ ์‹œ์ž‘ํ•ด๋ณด์ž ํšŒ์›๊ฐ€์ž…๊ณผ ๋กœ๊ทธ์ธ ์ ˆ์ฐจ๋Š” ์ด๋ฏธ ๋‹ค ํ•ด๋†จ๋‹ค๋Š” ๊ฐ€์ •ํ•˜์— ์ง„ํ–‰ํ•ด๋„๋ก ํ•œ๋‹ค. EC2๊ฐ€ ๋ฌด์—‡์ผ๊นŒ...? ๋ผ๋Š” ์„ค๋ช…์— ๋Œ€ํ•ด์„œ๋„ ๊ฐ์„คํ•œ๋‹ค. AWS Management Console ์œ„ URL๋กœ ๋“ค์–ด๊ฐ€ ๋กœ mine-it-record.tistory.com ํ—ฌ์Šคํ•˜๋Š” ๊ฐ์„ฑ ๊ฐœ๋ฐœ์ž :: [AWS] EC2 ์‹œ์ž‘ํ•˜๊ธฐ(PuTTY ๋‹ค์šด๋กœ๋“œ, SSH-Keyํ‚ค ์ƒ์„ฑ, ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ) (tistory.com)