์ ์ฒด ๊ธ
[ํ์ ์คํฌ๋ฆฝํธ] ๊ฐ์ฒด์งํฅ์ ์ปคํผ๋จธ์ ๋ง๋ค๊ธฐ : 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) ์์ธ ๋์ง๊ธฐ
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 ํด๋์ค
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)