[TIL_Carrotww] 19 - 22/09/26

์œ ํ˜•์„ยท2022๋…„ 9์›” 26์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
23/138
post-thumbnail

๐Ÿ“Carrotww์˜ ์ฝ”๋”ฉ ๊ธฐ๋ก์žฅ

๐Ÿงฒ Django

๐Ÿ” django๋ฅผ ์“ฐ๋Š” ์ค‘์ธ๋ฐ ์‰ฌ์šฐ๋ฉด์„œ ์–ด๋ ต๋‹ค.
๋ฌด์Šจ๋ง์ธ๊ฐ€ ํ•˜๊ฒ ์ง€๋งŒ ์–ด๋ ต๋‹ค๋Š”๊ฒŒ ์ดํ•ด๊ฐ€ ์•ˆ๋ผ์„œ ์–ด๋ ต๋‹ค๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ์‚ฌ์šฉ๋ฒ•์„ ์ตํžˆ๋Š”๊ฒŒ ์–ด๋ ต๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ ๋งŒํผ ๊ธฐ๋ณธ์ ์œผ๋กœ django ์ž์ฒด์—์„œ ์ œ๊ณตํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ๋“ค์ด ๋งŽ์•„ ์‚ฌ์šฉ๋ฒ•๋งŒ ์ตํžˆ๋ฉด ์ง„์งœ ์‰ฌ์šด๊ฒƒ ๊ฐ™๋‹ค.

์ถฉ๊ฒฉ ๋ฐ›์€๊ฒŒ ๊ด€๋ฆฌ์ž ํŽ˜์ด์ง€, ๊ธฐ๋ณธ user์˜ DB ๋ชจ๋ธ, sns์˜ ํƒœ๊ทธ ๊ธฐ๋Šฅ๋“ค
์›น ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ flask์™€ django ๋ฐ–์— ์‚ฌ์šฉํ•ด๋ณด์ง€ ์•Š์•˜์ง€๋งŒ, python์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ™œ์šฉ ๋Šฅ๋ ฅ, ์žฅ์ ์„ ๊ทธ๋Œ€๋กœ ๊ฐ€์ ธ๊ฐ„๊ฒŒ django ์ธ ๊ฒƒ ๊ฐ™๋‹ค.
์“ฐ๋ฉด ์“ธ ์ˆ˜๋ก ์‹ ๊ธฐํ•˜๊ณ  ์ต์ˆ™ํ•ด์ง„๋‹ค๋ฉด ์ƒ์‚ฐ์„ฑ์ด ์ง„์งœ ๋†’์„ ๊ฒƒ ๊ฐ™๋‹ค.
๊ฐœ์ธ์ ์œผ๋กœ ์›น ํ”„๋ ˆ์ž„ ์›Œํฌ๋ฅผ ๋‹ค๋ฃจ๋Š”๋ฐ ํฅ๋ฏธ๊ฐ€ ๋งŽ์ง€๋Š” ์•Š์•˜์ง€๋งŒ ๊ฐ•์˜๋ฅผ ๋“ค์œผ๋ฉฐ ์ง์ ‘ ์‚ฌ์šฉํ•ด๋ณด๋‹ˆ ํฅ๋ฏธ๊ฐ€ ์ƒ๊ธด๋‹ค.

django๋ฅผ ์ข€ ์ตํžŒ ํ›„ ๋” ์ƒ์‚ฐ์„ฑ์ด ๋†’๋‹ค๋Š” fastapi๋„ ๊ณต๋ถ€ํ•ด ๋ด์•ผ๊ฒ ๋‹ค.

๐Ÿงฒ ์•Œ๊ณ ๋ฆฌ์ฆ˜

๐Ÿ” ์‰ฝ์ง€๋งŒ ๊ธฐ์–ต๋‚˜๋Š” ๋ฌธ์ œ ํ•˜๋‚˜
programmers ์ด์ง„ ๋ณ€ํ™˜ ๋ฐ˜๋ณตํ•˜๊ธฐ

def fun1(s):
    if s == 0: return 0
    result = []
    while s >= 2:
        result.append(s % 2)
        s //= 2
    result.append(1)
    return ''.join(str(x) for x in reversed(result))
def solution(s):
    cnt, zero_cnt = 0, 0
    while len(s) != 1:
        temp_cnt = [0 for x in s if x == '1']
        cnt += len(s) - len(temp_cnt)
        s = fun1(len(temp_cnt))
        zero_cnt += 1
    return [zero_cnt, cnt]

์ด์ง„ ์ฒ˜๋ฆฌ๋Š” ์‚ฌ์‹ค bin() ํ•จ์ˆ˜๋กœ ์ฒ˜๋ฆฌํ•ด์ฃผ๋ฉด ๋œ๋‹ค
python ์—์„œ ์ง„์ˆ˜ ํ‘œํ˜„์œผ๋กœ ์•ž์— 0b, oct() = 0o, hex() = 0x ์ด๋ ‡๊ฒŒ ๋ถ™์–ด a = bin(8)[2:] ์ด๋Ÿฐ์‹์œผ๋กœ ์ฒ˜๋ฆฌํ•ด ์ฃผ๋ฉด ๋œ๋‹ค
ํ˜น์€ format() ํ•จ์ˆ˜๋กœ format(a, 'b') ์š”๋กœ์ฝค ์ฒ˜๋ฆฌํ•œ๋‹ค.
ํ•˜์ง€๋งŒ ๋ฌธ์ œํ‘ธ๋Š” ๋„์ค‘ bin() ํ•จ์ˆ˜๊ฐ€ ๋– ์˜ค๋ฅด์ง€ ์•Š์•„ 2์ง„ ๋ณ€ํ™˜์€ ๊ฐ„๋‹จํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ตฌํ˜„ํ•˜์—ฌ ํ’€์—ˆ๊ณ ,
ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•˜์—ฌ ํ‘ผ ๊ฒƒ๊ณผ bin() ๋‚ด์žฅ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒƒ ์ค‘ ํ•จ์ˆ˜๋ฅผ ์ง์ ‘ ๊ตฌํ˜„ํ•˜์—ฌ ํ‘ผ ๊ฒƒ์ด ๋นจ๋ž๋‹ค.
์›๋ž˜๊ฐ™์œผ๋ฉด ๊ตฌ๊ธ€๋งํ•˜์—ฌ bin() ํ•จ์ˆ˜๋ฅผ ์ฐพ์•„์„œ ์‚ฌ์šฉํ–ˆ๊ฒ ์ง€๋งŒ ๊ทธ์ œ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ๋ฅผ ๋ณด๋ฉฐ ๋‚˜์˜ ๋ถ€์กฑํ•จ์„ ๋งŽ์ด ๋Š๊ปด ์ตœ๋Œ€ํ•œ ์•ˆ ์ฐพ์•„๋ณด๋Š” ์„ ์—์„œ ํ•ด๊ฒฐํ•ด ๋ณด๋ ค๊ณ  ๋…ธ๋ ฅ์ค‘์ด๋‹ค.

๐Ÿงฒ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณ„ํš

๐Ÿ” WIL ์—์„œ ์ž‘์„ฑํ–ˆ์ง€๋งŒ, ๊ธฐ๋ณธ๊ธฐ๋Š” ์˜ˆ์ „ ๋ณด๋‹ค๋Š” ๋Š˜์—ˆ์–ด๋„ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ์—์„œ ์‹œ๊ฐ„์•ˆ์— ๋ฌธ์ œ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ํ‘ธ๋Š”๋ฐ๋Š” ์•„์ง ๋ถ€์กฑํ•œ ๊ฒƒ ๊ฐ™๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค python ๊ธฐ์ค€์œผ๋กœ 10ํŽ˜์ด์ง€ ๊นŒ์ง€ ํ’€ ์˜ˆ์ •์ด๋ฉฐ ์ด ๋ฌธ์ œ๋Š” ํŽ˜์ด์ง€๋‹น 20๋ฌธ์ œ, total 200๋ฌธ์ œ ์ด๋‹ค.
์•„๋งˆ 4~5 ํŽ˜์ด์ง€ ๊นŒ์ง€๋Š” ๋‚˜๋ฆ„ ์ˆ˜์›”ํ•˜๊ฒŒ ํ’€์–ด๋‚ผ ๋“ฏ ์‹ถ์œผ๋‚˜ ๋‚œ์ด๋„ ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜์˜€๊ธฐ ๋•Œ๋ฌธ์— 6ํŽ˜์ด์ง€ ๋ถ€ํ„ฐ๋Š” ์ •๋‹ต๋ฅ ์ด 50ํ”„๋กœ ๋ฏธ๋งŒ์ด๋‹ค.

6ํŽ˜์ด์ง€ ๋ถ€ํ„ฐ๋Š” ์—„์ฒญ ์˜ค๋ž˜ ๊ฑธ๋ฆด ๊ฒƒ์ด๊ธฐ์— 6ํŽ˜์ด์ง€ ํ•œ๋ฌธ์ œ, ์•ž์— 2~3๋ฌธ์ œ ํ’€ ์˜ˆ์ •์ด๋‹ค.

์ถ”๊ฐ€๋กœ ๋งค์ฃผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ฐ™์ดํ‘ธ๋Š” ์นœ๊ตฌ๋“ค๊ณผ์˜ ์Šคํ„ฐ๋””๊ฐ€ ์žˆ์œผ๋‹ˆ 8ํŽ˜์ด์ง€ ๊นŒ์ง€๋Š” 12์›” ์•ˆ์— ํ’€์–ด๋‚ด๊ณ  ์‹ถ๋‹ค.
์ •๋‹ต๋ฅ  ๋‚ฎ์€ ๋ฌธ์ œ์ผ์ˆ˜๋ก ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋‚ธ๋‹ค๊ณ  ์ค‘์š”ํ•œ๊ฒŒ ์•„๋‹ˆ๋ผ ์ดํ•ดํ•˜๊ณ , ๋‚ด ๊ฒƒ์œผ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์—...ใ…Žใ…Ž

๐Ÿงฒ Migration tool...

๐Ÿ” ๋˜ ํ•œ์ฃผ๊ฐ€ ๋ฐ€๋ ธ๋‹ค...
์ด๋ฒˆ์ฃผ์— juniper -> fortinet migration ํˆด์— ์„œ๋น„์Šค ํ•ญ๋ชฉ์„ ์ถ”๊ฐ€ํ•˜๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ ใ…  ๋‹ค์Œ์ฃผ๊นŒ์ง€๋Š” ๊ผญ ํ•ด์•ผ์ง€...

๐Ÿงฒ ์žก์„ค

๐Ÿ” ์˜ค๋Š˜์€ django ๊ฐ•์˜๋ฅผ ๋งŽ์ด ๋“ค์—ˆ์œผ๋‚˜ ์„ธ์„ธํ•˜๊ฒŒ ์ •๋ฆฌํ•˜๊ธฐ๊ฐ€ ์–ด๋ ค์›Œ ๋‚ด ๊ฒƒ์œผ๋กœ ์™„์ „ํžˆ ๋งŒ๋“ค๋ฉด ์ƒ๊ฐ๋‚˜๋Š”๋Œ€๋กœ ์กฐ๊ธˆ์”ฉ ๊ธฐ๋กํ•˜๋ ค๊ณ  ํ•œ๋‹ค.
์˜ค๋Š˜ ๋!

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