๊ณต๋ถ€ ์—ฐ์Šต์žฅ :-)

TIL_20171218 ~ 20171224

|

2017.12.18

TIL
  • ์ •๊ทœ์‹ ์—ฐ์Šต - ์†์— ์žกํžˆ๋Š” ์ •๊ทœํ‘œํ˜„์‹, regexOne์—์„œ ์—ฐ์Šต
  • lazy ์ง€์—ฐ ์ €์žฅํ˜• ํ”„๋กœํผํ‹ฐ
  • JSON step2 ํ”ผ๋“œ๋ฐฑ ์ฒ˜๋ฆฌ
    • extension์— protocol์ ์šฉ : Array์™€ Dictionary๋ฅผ ConvertTarget ํ”„๋กœํ† ์ฝœ๋กœ ์ถ”์ƒํ™”ํ•˜๊ณ , convertValues() ํ•จ์ˆ˜๋ฅผ ์ œ๊ฑฐ : ํ•˜๋Š” ์ผ์€ ๋˜‘๊ฐ™๊ณ , ๋ฆฌํ„ด๊ฐ’์„ ์ดํ›„์— ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฉ”์†Œ๋“œ๋„ ๋˜‘๊ฐ™์€ ๋‘ ํ•จ์ˆ˜๊ฐ€ ์žˆ๋Š”๋ฐ, ๋ฆฌํ„ดํƒ€์ž…์ด ๋‹ฌ๋ž๋‹ค. ์ด๋ฅผ ํ•˜๋‚˜์˜ ํ”„๋กœํ† ์ฝœ๋กœ ์ถ”์ƒํ™”ํ•˜๊ธฐ์œ„ํ•ด์„œ ์›๋ž˜์žˆ๋˜ swift์˜ ํƒ€์ž…์— extension์„ ์ ์šฉํ•ด์„œ ํ”„๋กœํ† ์ฝœ๋กœ ์ถ”์ƒํ™”ํ–ˆ๋‹ค. > ์ถ”์ƒํ™”๋กœ ์ธํ•ด์„œ ์ค‘๋ณต๋˜๋Š” ๋ฉ”์†Œ๋“œ๋„ ์ค„์ด๊ฑฐ๋‚˜ private์œผ๋กœ ๊ฐ์ถœ ์ˆ˜ ์žˆ์—ˆ๊ณ , ๊ณผ๋„ํ•˜๊ฒŒ ์“ฐ์ธ switch-case๋ฌธ์„ ์ค„์ผ ์ˆ˜ ์žˆ์—ˆ๋‹ค.
    • extension์˜ ์‚ฌ์šฉ (pragma mark ์‚ฌ์šฉ) : ํ•œ ๊ฐ์ฒด์˜ ์ฝ”๋“œ๊ฐ€ ๋„ˆ๋ฌด ๊ธธ์–ด์ง€๋ฉด ๊ฐ€๋…์„ฑ์„ ์œ„ํ•ด์„œ extension์„ ์‚ฌ์šฉํ–ˆ์—ˆ๋Š”๋ฐ, extension์€ ์ด๋ ‡๊ฒŒ ์˜๋ฏธ์—†์ด ์‚ฌ์šฉํ•˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ๊ณ  ํ•จ. ์˜๋ฏธ์—†์ด ์‚ฌ์šฉ๋œ extension์€ ์ œ๊ฑฐํ•˜๊ณ  // MARK: ์ฃผ์„์„ ์‚ฌ์šฉํ–ˆ๋‹ค. ์Šค์œ„ํ”„ํŠธ์—๋Š” MARK๋ง๊ณ ๋„ ํŠน๋ณ„ํ•œ ์ฃผ์„์ด ์žˆ๋‹ค. pragma mark๋Š” Objective-C์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ตฌ๋ฌธ์ด๋‹ค. (์Šค์œ„ํ”„ํŠธ์—์„œ๋Š”// MARK:, // TODO: , // FIXME: ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.) ์ด๋Ÿฐ ํ‚ค์›Œ๋“œ๋“ค์„ ์‚ฌ์šฉํ•ด์„œ ์ฃผ์„์„ ๋‹ฌ๋ฉด Quick jump bar์—์„œ ์ฑ…๊ฐˆํ”ผ์ฒ˜๋Ÿผ ์ฃผ์„๋‚ด์šฉ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค! ์ฐธ๊ณ ์‚ฌ์ดํŠธ1 ์ฐธ๊ณ ์‚ฌ์ดํŠธ2

2017.12.19

TODO
  • JSON step2 ํ”ผ๋“œ๋ฐฑ ์ฒ˜๋ฆฌ
  • JSON step3 ์‹œ์ž‘
  • ์ •๊ทœํ‘œํ˜„์‹ ๊ณต๋ถ€
    • regexOne์—์„œ ์—ฐ์Šต
    • InputView - GrammarChecker - ParseTargetFactory ์„ค๊ณ„
      • GrammarChecker๋ฅผ InputView์™€ ParseTargetFactory์‚ฌ์ด ํ๋ฆ„์— ์œ„์น˜
      • GrammarChecker์— ์ •๊ทœํ‘œํ˜„์‹ ์ ์šฉ
      • (GrammarChecker์— ์—๋Ÿฌ์ฒ˜๋ฆฌ ์ ์šฉ) - ์˜ค๋Š˜ ์•ˆ๋ ์ง€๋„

2017.12.21

TODO
  • git ์ €์žฅ์†Œ originํ™•์ธ - ๋ฆฌ๋ชจํŠธ์— ์Šคํ…๋ธŒ๋žœ์น˜๋งŒ ํ‘ธ์‹œ๋˜์–ด์žˆ๊ณ  ์•„์ด๋”” ๋ธŒ๋žœ์น˜๋Š” ์ตœ์‹  ์ƒํƒœ๊ฐ€ ์•„๋‹˜ใ… ใ… 
  • ์ •๊ทœ์‹ ์ ์šฉํ•œ step3 ์ง„ํ–‰
    • ์ •๊ทœ์‹์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์†Œ๋“œ ์ฐพ๊ณ  ๊ธฐ์กด ๋กœ์ง์ด๋ž‘ ์—ฐ๊ฒฐ์‹œํ‚ค๊ธฐ
    • object์•ˆ์— ์žˆ๋Š” Array๋ฅผ ๊ฒ€์‚ฌํ•˜๊ณ  ํ˜•๋ณ€ํ™˜ํ•˜๋Š”๊ฒƒ ์ถ”๊ฐ€
    • []์ด๋ฉด์„œ ๋ฐธ๋ฅ˜๊ฐ€ ๋”•์…”๋„ˆ๋ฆฌ ํ˜•ํƒœ๋กœ ์žˆ๋Š” ๊ฒƒ ๊ฑธ๋Ÿฌ๋‚ด๊ธฐ 1. git json์ €์žฅ์†Œ youth๋ธŒ๋žœ์น˜ํ™•์ธํ•˜๊ธฐ. ์˜ค๋ฆฌ์ง„์ด ์–ด๋””๋กœ ๋๋Š”์ง€, ์ง€๊ธˆ ์Šคํ…๋ธŒ๋žœ์น˜๋งŒ ๋‚˜๋ˆ ์ ธ์žˆ๊ณค ๋ฆฌ๋ชจํŠธ์˜ ๋‚ด ์•„์ด๋”” ๋ธŒ๋žœ์น˜์— ํ•˜๋‚˜๋„ ํ‘ธ์‹œ๊ฐ€ ์•ˆ๋ผ์–ด์žˆ์Œ 2. ์ •๊ทœ์‹ ์ ์šฉํ•œ json step3 ๋นจ๋ฆฌ ์ง„ํ–‰. ์ •๊ทœ์‹ ํด๋ž˜์Šค ์ด์šฉํ•ด์„œ ๋งž๋Š” ํŒจํ„ด ์ฐพ์•„๋‚ด๊ณ  ๊ธฐ์กด ๋กœ์ง์ด๋ž‘ ์—ฐ๊ฒฐ์‹œํ‚ค๊ธฐ. ์˜ค๋ธŒ์ ํŠธ์ผ๋•Œ ๋ฐฐ์—ด ์š”์†Œ ๊ฒ€์‚ฌํ•˜๊ณ  ํ˜•๋ณ€ํ™˜ํ•˜๋Š”๊ฑฐ ์ถ”๊ฐ€ํ•˜๊ธฐ. ์˜ค๋ธŒ์ ํŠธ๊ด„ํ˜ธ์ด๋ฉด์„œ ๋”•์…”๋„ˆ๋ฆฌ ํ˜•ํƒœ๋กœ ๋“ค์–ด์žˆ๋Š”๊ฑฐ ์ธ๊ฑฐ ๊ฑธ๋Ÿฌ๋‚ด๊ธฐ
TIL
  • git: ์Šคํ…๋ธŒ๋žœ์น˜๋งŒ ๋‚˜๋ˆ ์ ธ์žˆ๊ณ , ๋ฆฌ๋ชจํŠธ ์ €์žฅ์†Œ์— ํ•˜๋‚˜๋„ ํ‘ธ์‹œ๊ฐ€ ์•ˆ๋˜์–ด์žˆ์—ˆ๋‹ค.
    • ๋จผ์ € ๋กœ์ปฌ youth27๋ธŒ๋žœ์น˜์—์„œ status๋ฅผ ํ™•์ธ > upstream์œผ๋กœ๋ถ€ํ„ฐ pull์„ ํ–ˆ๋”๋‹ˆ ํ”„๋กœ์ ํŠธ ๋ฆฌ๋ชจํŠธ(์ฝ”๋“œ์Šค์ฟผ๋“œ) ์ €์žฅ์†Œ์™€ ๋‚˜์˜ ๋กœ์ปฌ๋ธŒ๋žœ์น˜์™€ ์‹ฑํฌ๊ฐ€ ๋งž์•˜๊ณ , ๊ทธ ์ƒํƒœ์—์„œ ๋ฆฌ๋ชจํŠธ์ €์žฅ์†Œ๋กœ pushํ•˜๋‹ˆ ์‹ฑํฌ๊ฐ€ ๋งž์•˜๋‹ค. (ํ˜„์žฌ ์ฝ”๋“œ์Šค์ฟผ๋“œ์™€ youth27์ €์žฅ์†Œ ๋ชจ๋‘ step2๊นŒ์ง€ ์—…๋ฐ์ดํŠธ๋œ ์ƒํ™ฉ) ๊ทธ ์ดํ›„๋กœ ๋˜‘๊ฐ™์ด step3 ๋ธŒ๋žœ์น˜ ๋”ฐ์„œ ์ž‘์—…ํ•˜๋‹ˆ ๋ฌธ์ œ ์—†์—ˆ๋‹ค. ์ƒ๊ฐ๋ณด๋‹ค ์—„์ฒญ ์‰ฝ๊ฒŒ ํ•ด๊ฒฐ!
    • git์ด ๊ผฌ์˜€๋‹ค๊ณ  ์ƒ๊ฐ์ด ๋“ค์—ˆ์„๋• ์–ด๋””๋ถ€ํ„ฐ ์‹ฑํฌ๊ฐ€ ์•ˆ๋งž์•˜๋Š”์ง€๋ฅผ ํ™•์ธํ•˜๊ณ  ์ฐจ๊ทผ์ฐจ๊ทผ ํ•ด๊ฒฐํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค!(์ž์‹ ๊ฐ ์–ป์Œ)
  • ์ •๊ทœ์‹ ํ™œ์šฉ matchesํ•จ์ˆ˜ : ์ •๊ทœ์‹์„์„ ์–ธํ•œ ์ดํ›„์— ๊ทธ ํด๋ž˜์Šค์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ชฐ๋ž์—ˆ๋Š”๋ฐ, ๊ฒ€์ƒ‰์œผ๋กœ ์œ ์ถ”ํ•ด์„œ ํŒจํ„ด๊ณผ ์ผ์น˜ํ•œ ๋ฌธ์ž์—ด๋“ค์„ [String]์œผ๋กœ ๋ฆฌํ„ดํ•ด์ฃผ๋Š” matchesํ•จ์ˆ˜๊ฐ€ ์žˆ์—ˆ๋‹ค. matches์—์„œ ๋ฆฌํ„ดํ•œ ๊ฐ’์„ value๋งˆ๋‹ค ํ•˜๋‚˜์”ฉ ๊ฒ€์‚ฌํ•ด์„œ ๋งž๋Š” ํ˜•์‹์ธ์ง€ ์•„๋‹Œ์ง€ ๊ฒ€์‚ฌ, ์—๋Ÿฌ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํ•ด๊ฒฐํ–ˆ๋‹ค.
  • ์ •๊ทœ์‹ ์„ ์–ธ ์ดํ›„์— Parser๊ฐ€ ๊ฐ„๋‹จํ•ด์กŒ๋‹ค.
  • ์นด์šดํŒ…ํ•˜๋Š” ๊ฐ์ฒด, Data Convertingํ•˜๋Š” ๊ฐ์ฒด์— Array ์ผ€์ด์Šค๋ฅผ ์ถ”๊ฐ€ํ•ด์„œ ํ•ด๊ฒฐ!

/*
 ์ค‘๊ด„ํ˜ธ ํ•œ ์„ธํŠธ ์•ˆ์˜ ๋ฌธ์ž : \{(.*?)\}
 ๋”ฐ์˜ดํ‘œ ํ•œ ์„ธํŠธ ์•ˆ์˜ ๋ฌธ์ž : \"(.+?)\"

 Array : true|false|\".+?\"|\d+|\{.+?\}
 Object : (\".+?\")\:(true|false|\".+?\"|\d+|\[.+?\])
 ์ด ์˜ค๋ธŒ์ ํŠธ์—์„œ 1 depth ์ •๋„ ๋” ๋“ค์–ด๊ฐ€์„œ ex) object์˜ ์š”์†Œ๋ฅผใ…ก"dee":234 ์ด๋ ‡๊ฒŒ ๋–ผ์–ด๋†จ์œผ๋ฉด, ์—ฌ๊ธฐ์„œ "ใ…‡ใ…‡ใ…‡":ใ…ใ…ใ… ์ธ์ง€ ๊ฒ€์‚ฌ๋ฅผ ํ•ด์•ผํ•˜๋Š” ๊ฒƒ. ์ •๊ทœ์‹ ํ•œ ์ค„๋กœ ์˜ค๋ธŒ์ ํŠธ ํ˜•ํƒœ ์ฒดํฌ๋ž‘, ๊ทธ ์•ˆ์˜ ๊ฐ๊ฐ ์š”์†Œ๊ฐ€ "key":value ํ˜•ํƒœ๋กœ ์ž˜ ๋“ค์–ด์™”๋Š”์ง€ ์ฒดํฌํ•˜๊ธฐ๊ฐ€ ํž˜๋“œ๋‹ˆ๊นŒ. ์ฐจ๋ผ๋ฆฌ ์ „์ฒด์—์„œ ์ž˜๋ผ์ง„ ์ž‘์€ ๋ฉ์–ด๋ฆฌ๋ฅผ ๊ฒ€์‚ฌํ•˜๋Š” ๋‹ค๋ฅธ ์ •๊ทœ์‹์„ ํ•˜๋‚˜ ๋” ๋งŒ๋“ค๋“ ๊ฐ€, ๋กœ์ง์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋“ ๊ฐ€ ํ•ด์„œ ๋”•์…”๋„ˆ๋ฆฌ ํ˜•ํƒœ๊ฐ€ ๋งž๋Š”์ง€ ๊ฒ€์‚ฌํ•˜๋Š”๊ฒŒ ๋” ํŽธํ•œ ๋ฐฉ๋ฒ•์ผ๋“ฏ.

 [true,"sdfe",false,123,{"dee":234,"ss":false,"er":"wert"},"rr"]
 {"dee":234,"ss":false,"er":"wert"}
 {"dee":234,"ss":false,"er":["hana","hayul","haun"]}
 ["dee":234,"ss":false]
{"d":"e","t":12,"rr":false,"array":[12,true]}


 GrammarChecker์—์„œ
 1. ์ „์ฒด format ๊ฒ€์‚ฌํ•˜๊ณ  ๋‚ด๋ถ€ ๊ฐ’ String๋ฐฐ์—ด๋กœ ๋งŒ๋“ค๊ธฐ
 2. String๋ฐฐ์—ด์˜ ๊ฐ value๋ฅผ ํ•˜๋‚˜์”ฉ ๊ฒ€์‚ฌํ•˜๋Š” ๊ฒƒ ๋งŒ๋“ค๊ธฐ (Arrayํ˜•ํƒœ์ผ๋•Œ ๋”•์…”๋„ˆ๋ฆฌ๊ฐ€ ๋“ค์–ด์˜ค๋ฉด ์•ˆ๋˜๋Š”๊ฒƒ")
*/

    func matches(for regex: String, in text: String) -> [String] {

        do {
            let regex = try NSRegularExpression(pattern: regex)
            let nsString = text as NSString
            let results = regex.matches(in: text, range: NSRange(location: 0, length: nsString.length))
            return results.map { nsString.substring(with: $0.range)}
        } catch let error {
            print("invalid regex: \(error.localizedDescription)")
            return []
        }
    }
    let testString = "[true,false,123,\"esdf\",{\"dee\":234,\"ss\":false,\"er\":\"wert\"},\"rr\"]"
    let arrayformat = "true|false|[0-9]+|\\{.+?\\}"
    let result = matches(for: arrayformat, in: testString)
    print(result)


2017.12.22

TIL
  • JSON step3 ํ”ผ๋“œ๋ฐฑ์ฒ˜๋ฆฌ
  • ์—๋Ÿฌ์ฒ˜๋ฆฌ
    • ํ•„์š”ํ•œ๊ณณ์—์„œ๋งŒ ์ปจํŠธ๋กคํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ๋”ฐ๋กœ ๋งŒ๋“ค์–ด์„œ ์ œ์–ด (main๊นŒ์ง€ ๊ฐ€์„œ catch์•ˆํ•˜๋„๋ก)
    • ์ •๊ทœํ‘œํ˜„์‹์œผ๋กœ ๊ฑฐ๋ฅด๊ณ  ๊ฐ๊ฐ ๋ฐธ๋ฅ˜๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋” ์ •ํ™•ํžˆ (value ํ•˜๋‚˜ ๊ฒ€์‚ฌํ• ๋•Œ๋„ ์ •๊ทœํ‘œํ˜„์‹ ํ‹€์— ๋”ฐ๋ผ์„œ ๋งž๋Š”์ง€ ์ฒดํฌํ•˜๋„๋ก ๋ณ€๊ฒฝ)
    • ๋กœ์ง ์ค‘๊ฐ„์—์„œ ํ๋ฆ„์ œ์–ดํ•˜๋Š”๊ฒŒ ์žˆ์–ด๋ดค์žโ€ฆํ•˜๋Š”๊ฑฐ๋ž‘ ์•ˆํ•˜๋Š”๊ฑฐ๋ž‘ rethrow, throw ๋“ค์–ด๊ฐ€๋Š” ํ•จ์ˆ˜์˜ ์ˆ˜๋Š” ๋˜‘๊ฐ™์„๊ฑฐ๊ฐ™์•„์„œ rethrow/throw๋กœ ํ•ด๊ฒฐํ•˜๊ธฐ

2017.12.24

TIL

JSON ๋กœ์ง์„ ๋‹ค์‹œ ๊ทธ๋ ค๋ณด๊ณ  ๊ฐœ์„ ๊ณผ ์ถ”๊ฐ€ ๋ฏธ์…˜ ์ ์šฉ์„ ์œ„ํ•ด ํ•„์š”ํ•œ ๊ฒƒ๋“ค์„ ์ •๋ฆฌํ–ˆ๋‹ค.


  • Input - GrammarChecker - Parser > [String] - Convert (๋งž๋Š” ๊ฐ’์œผ๋กœ๋งŒ converting์„ ํ•˜๋‹ˆ๊นŒ parser ๋’ค ๋ถ€ํ„ฐ๋Š” ๊ฒ€์‚ฌํ•  ํ•„์š” ์—†์Œ)
  • GrammarChecker์—์„œ typecheck๋ฅผ ํ•˜๊ณ  ์ •๊ทœํ‘œํ˜„์‹์œผ๋กœ value ํ•˜๋‚˜์”ฉ ์ฒดํฌ (2 depth๋ถˆ๊ฐ€ํ•˜๋‹ˆ๊นŒ)
    • ์ •๊ทœํ‘œํ˜„์‹์œผ๋กœ value ๊ฒ€์‚ฌํ•˜๋Š” ๊ฒƒ ๋„ฃ๊ธฐ (ํ•œ๋ฒˆ์— ๊ฒ€์‚ฌ ๋ชปํ•˜๊ฒ ์Œใ… ใ… )
  • GrammarChecker์— Manager๋ฉ”์†Œ๋“œ
    • manager๋ฉ”์†Œ๋“œ๋Š” arrayformat / arrayvalue / objectformat /objectvalue๋ฅผ ๋ฉ”์ธ๋ฉ”์†Œ๋“œ์ฒ˜๋Ÿผ ์‹คํ–‰ํ•จ (if array์ธ์ง€ bool์ธ์ง€ ํ•ด์„œ)
    • input์ด array์ธ์ง€ object์ธ์ง€ ์ฒดํฌ
    • array์ด๋ฉด arrayformat๊ฒ€์‚ฌ/value๊ฒ€์‚ฌ object์ด๋ฉด format value ๊ฒ€์‚ฌ
    • ๊ฐ format๊ณผ value๋ฉ”์†Œ๋“œ๋Š” ๊ฒ€์‚ฌํ•ด์„œ ์ •๊ทœ์‹์— ๋งž์ง€ ์•Š๋Š” ํ‘œํ˜„์ด๋ฉด false๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ๋ฆฌํ„ดํƒ€์ž… Bool์˜ ๋ฉ”์†Œ๋“œ
    • ๊ทธ๋Ÿผ ๊ทธ ๋งค๋‹ˆ์ €๋Š” false๋ฅผ ๋ฆฌํ„ด๋ฐ›๊ณ , ํ˜ธ์ถœํ•œ ๋ฉ”์†Œ๋“œ์—์„œ false๋ฅผ ๋ฆฌํ„ด๋ฐ›์œผ๋ฉด error๋ฅผ throwํ•œ๋‹ค.
    • ๋งค๋‹ˆ์ € ๋ฉ”์†Œ๋“œ๊ฐ€ ๋ฆฌํ„ด๋ฐ›์€ bool๊ฐ’์ด true์ด๋ฉด ๊ทธ ํฌ๋งท์— ๋งž๋„๋ก value๋ฅผ ๋ถ„๋ฆฌํ•ด์„œ [String]์„ ๋ฆฌํ„ดํ•˜๊ณ , ๊ทธ [String]์€ Parser๋กœ ๋ณด๋‚ด์ ธ์„œ ๋‚˜๋จธ์ง€ ๋กœ์ง ์ฒ˜๋ฆฌ.
    • GrammarChecker์•ˆ์—์„œ๋งŒ ์—๋Ÿฌ๊ฐ€ ํ•ธ๋“ค๋ง๋˜๋„๋ก ์„ค๊ณ„. ๊ฒฐ๊ตญ Manager๋งŒ public func์ด๋ฉด ๋ ๊ฒƒ๊ฐ™๋‹ค.
    • ์ตœ๋Œ€ํ•œ ๋‹ค๋ฅธ ํ›„๋ฐ˜๋ถ€ ๋กœ์ง์—๋Š” ์—๋Ÿฌ์ฒ˜๋ฆฌ๊ฐ€ ์˜ํ–ฅ์ด ์—†๋„๋ก ์•ž๋‹จ์—์„œ ๋ชจ๋“ ๊ฒŒ ๋‹ค ์ฒดํฌ๋˜๊ฒŒ ๋งŒ๋“ค์—ˆ์Œ

    ํ•„์š”ํ•œ ๊ฒƒ๋“ค

    1. Array Value์™€ object value๋ฅผ ์ฒดํฌํ• ๋•Œ (2depth๋กœ ๋‚˜๋ˆ”)ํ•„์š”ํ•œ ์ •๊ทœ์‹. contains๋ฅผ ์“ฐ๋ฉด ์ค‘๊ฐ„์— ,๋‚˜ :์ด ๋“ค์–ด๊ฐ„ ๊ฒฝ์šฐ ๋ถ€์ •ํ™•ํ•˜๊ฒŒ ๊ฑธ๋Ÿฌ์งˆ ์ˆ˜ ์žˆ์Œ
    2. value ์ฒดํฌํ•˜๋Š” ์ •๊ทœํ‘œํ˜„์‹ ๋งŒ๋“ค๊ธฐ
    3. manager๋ฉ”์†Œ๋“œ ๋งŒ๋“ค๊ณ  checking๋ฉ”์†Œ๋“œ๋Š” ๋‹ค private์œผ๋กœ ๊ฐ์ถ”๊ธฐ- ๋งค๋‹ˆ์ €์—์„œ ์ฒดํ‚น ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ
    4. ๋งค๋‹ˆ์ € ๋ฉ”์„œ๋“œ ๋งŒ๋“ค๊ธฐ
    5. ์ฒดํ‚น ๋ฉ”์„œ๋“œ๋ฅผ Boolํƒ€์ž… ๋ฆฌํ„ด์œผ๋กœ ๋งŒ๋“ค๊ธฐ
    6. ๊ฐ๊ฐ์˜ ์ฒดํฌ ๋ฉ”์„œ๋“œ๋ฅผ boolํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜
    7. manager๊ฐ€ true๋ฅผ ๋ฆฌํ„ด๋ฐ›์•˜์„๋•Œ ๋งž๋Š” [String]์œผ๋กœ ์ž๋ฅด๋Š” ๋กœ์ง์ด ํ•„์š”ํ•œ๋ฐ ๊ทธ๊ฒŒ checker์—์„œ๋Š” ์•ˆ๋˜๋Š”์ง€๊ผญ ๋”ฐ๋กœ๋งŒ๋“ค์–ด์•ผ๋˜๋Š”์ง€ ์ƒ๊ฐํ•˜๊ธฐ..? checker๋Š” Bool๋ฆฌํ„ด์ด๋‹ค ใ… ใ… 
    8. ํŒŒ์„œ์—์„œ ์ž๋ฅด๋ฉด๋˜์ง€์•Š์„๊นŒ!? ํŒŒ์„œ์—์„œ ์ž๋ฅด๊ณ  dataconverter๋กœ ํ•˜๋‚˜์”ฉ ๋ณด๋‚ด๊ธฐ!??!!?!?!
    9. Parser๋กœ ๋„˜์–ด๊ฐ€๋Š” ์ŠคํŠธ๋ง์€ ์ด์ œ ๋ฌธ๋ฒ•์ฒดํฌ๋„ ์•„์˜ˆ ํ•  ํ•„์š”๊ฐ€ ์—†๋Š” String์ด์–ด์•ผ๋˜๋Š”๋ฐ ์ง€๊ธˆ ์ง  ๋กœ์ง์œผ๋กœ ํ•˜๋ฉด ๊ทธ๊ฒŒ ๋˜๋Š”๊ฒŒ ๋งž๋Š”์ง€ ํ•œ๋ฒˆ๋” ์ƒ๊ฐํ•ด๋ณด๊ธฐ

Comments