๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ

ยท Python
JavaScript const string = 'dcba' console.log(string.split('').sort().join('')) //'abcd' ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์ •๋ ฌ์„ ํ•˜๊ณ  ์‹ถ์œผ๋ฉด `sort()`๋ฅผ ํ™œ์šฉํ•œ๋‹ค. ํ•˜์ง€๋งŒ, `sort()` ๋ฉ”์„œ๋“œ๋Š” `๋ฐฐ์—ด ์ž๋ฃŒํ˜•๋งŒ ์ •๋ ฌ์ด ๊ฐ€๋Šฅ`ํ•˜๋‹ค. ๋”ฐ๋ผ์„œ, ๋ฌธ์ž์—ด์„ ์ •๋ ฌํ•˜๊ณ  ์‹ถ์œผ๋ฉด ์šฐ์„  ๊ทธ ๋ฌธ์ž์—ด์„ ๋ฐฐ์—ด๋กœ ๋ณ€๊ฒฝํ•ด์ค˜์•ผ ํ•œ๋‹ค. 1. `split()` ๋ฉ”์„œ๋“œ๋กœ ๋จผ์ € ๋ฌธ์ž์—ด์„ ๋ฐฐ์—ด๋กœ ๋งŒ๋“ค์–ด์ค€๋‹ค. split์˜ ๊ธฐ๋ณธ ๋ฌธ๋ฒ•์€ `split(separator)`์œผ๋กœ, separator ๊ธฐ์ค€์œผ๋กœ ์–ด๋–ป๊ฒŒ ๋ฐฐ์—ด์„ ๋‚˜๋ˆŒ๊ฑด์ง€ ์ •ํ•ด์ค„ ์ˆ˜ ์žˆ๋Š”๋ฐ, `string.split('')`์œผ๋กœ ์ ์–ด์ค€๋‹ค๋ฉด string์ธ 'dcba'๋ฅผ ' ํ•œ ์ž ํ•œ ์ž ๋ถ„๋ฆฌํ•œ๋‹ค, ์ชผ๊ฐ ๋‹ค๋Š” ์˜๋ฏธ๊ฐ€ ๋œ๋‹ค. 2. ์ด์ œ ๋ฐฐ์—ด..
ยท Python
python์—์„œ ์ •๋ ฌํ•˜๊ณ  ์‹ถ์„ ๋•Œ ํŒŒ์ด์ฌ ๋‚ด์žฅ ๋ฉ”์„œ๋“œ์˜ `sort()`์™€ `sorted()`๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ํŒŒ์ด์ฌ ์ •๋ ฌ ๋ฉ”์„œ๋“œ`sort()`๋Š” listํ˜• ์ž๋ฃŒ๊ตฌ์กฐ์—๋งŒ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด, `sorted()`๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ๋ฆฌ์ŠคํŠธํ˜•, ๋ฌธ์žํ˜•, ํŠœํ”Œํ˜•๊ณผ ๊ฐ™์€ ์ดํ„ฐ๋Ÿฌ๋ธ”ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ์— ๋ชจ๋‘ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค. ๋ฆฌ์ŠคํŠธ sort() ๋ฉ”์„œ๋“œmy_numbers = [2,5,6,1,8,3]my_numbers.sort()print(my_numbers) #[1, 2, 3, 5, 6, 8] sorted() ํ•จ์ˆ˜์ •๋ ฌํ•˜๊ณ ์žํ•˜๋Š” iterable์„ ์ฒซ๋ฒˆ์งธ ์ธ์ˆ˜๋กœ ์ ์–ด์ค€๋‹คlist = [5, 4, 3, 2, 1]print(sorted(list)) #[1, 2, 3, 4, 5]string = 'abcd'print(sorted(string)) ..
ยท React
Form์„ ์ €์žฅํ•  ๋•Œ ํ•„์š”ํ•œ input ์ƒํƒœ๊ฐ’์„ object ํƒ€์ž…์œผ๋กœ ํ•œ๋ฒˆ์— ๊ด€๋ฆฌํ•˜๊ณ , ๊ฐ input ๊ฐ’์ด ๋ณ€๋™๋  ๋•Œ๋งˆ๋‹ค ์ƒ์œ„ ๋ถ€๋ชจ์—์„œ handleChange ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ form ์ƒํƒœ๊ฐ’์„ ์ผ๊ด„์ ์œผ๋กœ ๊ด€๋ฆฌํ•œ๋‹ค. ์ƒ์œ„ ๋ถ€๋ชจ๋Š” ์ƒํƒœ๊ฐ’ ๊ด€๋ฆฌ ๋ฐ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๋‹ด๋‹นํ•˜๊ณ , ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ๋Š” ์ƒ์œ„์—์„œ ์ƒํƒœ๊ฐ’์„ ๋ฐ›์•„ ui ๋งŒ ๊ทธ๋ฆด ์ˆ˜ ์žˆ๋„๋ก ๊ด€์‹ฌ์‚ฌ๋ฅผ ๋ถ„๋ฆฌํ•˜์˜€๋‹ค. ๊ธฐ๋ณธ์ ์ธ ์„ค๊ณ„๋Š” ์œ„์˜ ์„ค๋ช…๊ณผ ๊ฐ™์ด ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ตฌํ˜„ํ•˜๋ ค๊ณ  ์ฝ”๋“œ๋ฅผ ๋ฆฌํŒฉํ† ๋งํ•˜๋Š”๋ฐ ์ดˆ์ ์„ ๋งž์ถ”์—ˆ๋Š”๋ฐ, ๋ญ”๊ฐ€ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค. ์ƒ์œ„ ๋ถ€๋ชจ ์ปดํฌ๋„ŒํŠธ export const Form = () => { const initialFormValue: Info = { name: '', location: { address: '', detailAddress: '', zipCode..
ยท React
์‹ค์‹œ๊ฐ„ ๊ฒ€์ƒ‰์–ด ์ž๋™์™„์„ฑ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ตฌํ˜„ํ–ˆ๋Š”๋ฐ, ๊ธฐ์กด์˜ ์ฝ”๋“œ๋Š” ๊ฒ€์ƒ‰์–ด input ๊ฐ’์ด ๋ฐ”๋€”๋•Œ๋งˆ๋‹ค ์„œ๋ฒ„์— api๋ฅผ ํ˜ธ์ถœํ–ˆ๋‹ค. ์„ฑ๋Šฅ ๊ฐœ์„ ์„ ์œ„ํ•ด debounce๋ผ๋Š” ๊ฐœ๋…์„ ์ฝ”๋“œ์— ์ƒˆ๋กœ ์ ์šฉํ•ด๋ณด์•˜๋‹ค. debounce๊ฐ€ ์–ด๋–ค ๊ฐœ๋…์ด๋ฉฐ ์ด๊ฑธ react ์ฝ”๋“œ๋กœ ์–ด๋–ป๊ฒŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ์•„๋ณธ๋‹ค. ๊ธฐ์กด ๊ฒ€์ƒ‰ ์ปดํฌ๋„ŒํŠธ useEffect(() => { getLazySearchList(); //api ํ˜ธ์ถœ }, [searchInputValue]); setSearchInputValue(e.target.value) } /> ์œ„ ์ฝ”๋“œ์—์„œ๋Š” useState hook์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ๋Š” searchInputValue๊ฐ€ ๋ฐ”๋€”๋•Œ๋งˆ๋‹ค ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ธ๋‹ค. ์ง€๊ธˆ ์˜ˆ์ œ ์‚ฌ์ง„์—์„œ ๋ณด๋“ฏ์ด ๊ฒ€์ƒ‰์ฐฝ์— ์œ ์ €๊ฐ€ ์•„๋ž˜ ์ฒ˜๋Ÿผ ์ž…๋ ฅํ•˜๋ฉด ใ„ฑ > ๊ทธ > ๊ธ€ >..
ยท React
์„œ๋ก ๊ธฐ๋ณธ์ ์ธ Form ์ปดํฌ๋„ŒํŠธ๊ฐ€ ์žˆ๋Š”๋ฐ, ์ด๋ฆ„, ์ฃผ์†Œ, ํ•ธ๋“œํฐ ๋ฒˆํ˜ธ๋ฅผ input์œผ๋กœ ๋ฐ›์„ ์ˆ˜ ์žˆ๊ณ , ์ €์žฅ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด input ์ •๋ณด๊ฐ€ ์ €์žฅ๋œ๋‹ค. ์ด Form ์ปดํฌ๋„ŒํŠธ๋Š” ์ƒ์„ฑ์‹œ, ์ˆ˜์ •์‹œ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ปดํฌ๋„ŒํŠธ์ด๋‹ค. ์ƒ์„ฑ์‹œ๊ธฐ๋ณธ input ์ดˆ๊ธฐ ์ƒํƒœ๊ฐ’์ด ๋นˆ string์„ ๊ฐ€์ง„๋‹ค.์ €์žฅ ์ด๋ฒคํŠธ ๋ฐœ์ƒ์‹œ input ๋ฐ์ดํ„ฐ ๊ฐ’์„ ๋ชจ์•„์„œ ์ƒ์„ฑ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” ํ•จ์ˆ˜์ธ onCreateInfo๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค. ์ˆ˜์ •์‹œ์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ์—์„œ ์ „๋‹ฌ ๋ฐ›์€ ๋ฐ์ดํ„ฐ value๊ฐ’์„ ์ดˆ๊ธฐ๊ฐ’์œผ๋กœ ๊ฐ€์ง„๋‹ค.  ์ €์žฅ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด input ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„์— ์ˆ˜์ • ์š”์ฒญ์„ ๋ณด๋‚ด๋Š” onEditInfo๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.   interface Props { data?: Data; //์ˆ˜์ •์‹œ์—๋งŒ ์กด์žฌ onCreateInfo?: (inputs: ..
ยท React
๋ชจ๋…ธ๋ ˆํฌ ๋„์ž…์ง€๊ธˆ ํšŒ์‚ฌ ํ”„๋ŸฐํŠธ ํŒ€์˜ ํ”„๋กœ์ ํŠธ๋Š” ์›๋ž˜๋Š” ๋„๋ฉ”์ธ ๋ฉ”๋‰ด๋ณ„๋กœ ๋‚˜๋ˆ„์–ด์„œ ๋ฉ€ํ‹ฐ๋ ˆํฌ Multi repo ๋ฐฉ์‹์œผ๋กœ ๊ฐœ๋ฐœ์„ ํ–ˆ์—ˆ๋‹ค. ์ฆ‰ ๊ฐœ๋ฐœ์ž๋งˆ๋‹ค ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋ฅผ ํ•˜๋‚˜ํ•˜๋‚˜ ๋”ฐ๋กœ ๊ด€๋ฆฌํ•ด์„œ ๊ฐœ๋ฐœํ–ˆ์—ˆ๊ณ , ํŒ€์›๋ผ๋ฆฌ ๋˜‘๊ฐ™์€ ui๋ฅผ ๊ฐœ๋ฐœํ•œ๋‹ค๊ณ  ํ•˜์—ฌ๋„ ์ €์žฅ์†Œ๊ฐ„์— ์ปจํ…์ŠคํŠธ ๊ณต์œ ๊ฐ€ ์–ด๋ ค์›Œ์„œ ๊ฐœ๊ฐœ์ธ ๊ฐ์ž๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ๋ ˆํฌ์ง€ํ† ๋ฆฌ ๋‚ด๋ถ€์—์„œ ๋˜‘๊ฐ™์€ ui๋ฅผ ์ค‘๋ณตํ•ด์„œ ๊ฐœ๋ฐœํ•˜๊ธฐ๋„ ํ–ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ด์ œ ์—ฌ๋Ÿฌ๊ณณ์—์„œ ์ค‘๋ณต์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๊ณต์œ ํ•ด์„œ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์ด๊ณ  ํ•˜๋‚˜์˜ ์ฝ”๋“œ๋ฒ ์ด์Šค์—์„œ ๋ชจ๋“  ํ”„๋กœ์ ํŠธ์˜ ์ฝ”๋“œ์™€ ์ž์›์„ ๊ด€๋ฆฌํ•˜์—ฌ ์„œ๋กœ์˜ ๊ด€๊ณ„์™€ ์˜์กด์„ฑ์„ ์‰ฝ๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ชจ๋…ธ๋ ˆํฌ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ–ˆ๋‹ค. ๋ชจ๋…ธ๋ ˆํฌ ํ™˜๊ฒฝ์—์„œ ์ฒ˜์Œ ๊ฐœ๋ฐœํ•˜๋ฉด์„œ ํ”„๋กœ์ ํŠธ ์‹คํ–‰์ด ์•ˆ๋ ๋•Œ๊ฐ€ ์žˆ์—ˆ๋Š”๋ฐ ์ด๋•Œ ๋งˆ์ฃผํ•œ ์—๋Ÿฌ๋ฅผ ์ •๋ฆฌํ•œ๋‹ค.  Monorepo ๋นŒ๋“œ ๋„๊ตฌ Turborepo  ..
ยท React
๋ฌธ์ œ ํŠธ๋ฆฌ๊ตฌ์กฐ ๋ฐ์ดํ„ฐ interface Data { id: string; children: Data[]; } export const data: Data = { id: "์ƒ์œ„1", children: [ { id: "ํ•˜์œ„1", children: [ { id: "ํ•˜์œ„1-1", children: [{ id: "ํ•˜์œ„1-1-1", children: [] }] }, { id: "ํ•˜์œ„1-2", children: [] }, ], }, { id: "ํ•˜์œ„2", children: [] }, ], }; ํ˜„์žฌ ํด๋ฆญํ•˜๋Š” ์•„์ดํ…œ์˜ id๋Š” ์ƒํƒœ๊ฐ’์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ๋‹ค. ํ•ด๋‹น ์•„์ดํ…œ์„ ๋ˆ„๋ฅด๋ฉด id ์ƒํƒœ๊ฐ’์ด ๋ฐ”๋กœ ๋ณ€๊ฒฝ๋œ๋‹ค. const [currentId, setCurrentId] = useState(data.id); ๊ทธ ๋ณ€๊ฒฝ๋œ id๋ฅผ ๊ฐ€์ง€๊ณ ..
ํšŒ์‚ฌ 1์ฐจ ํ”„๋กœ์ ํŠธ ๊ฐœ๋ฐœ ๋งˆ๊ฐ์—, ๋ฐฉํ†ต๋Œ€ ๊ธฐ๋ง๊ณ ์‚ฌ์— ~ ๊ฝค๋‚˜ ๋ฐ”์œ 12์›”์„ ๋ณด๋ƒˆ๋‹ค. ์‹œํ—˜์€ 12์›” 10์ผ์— ๋๋‚ฌ๋Š”๋ฐ.. ์‹œ์—ฐ์ด ๊ฑฐ์˜ ์—ฐ๋ง ๊ฐ€๊นŒ์ด์ธ 12์›” 20์ผ์— ์žกํ˜€์žˆ์–ด ๊ทธ๋•Œ๊นŒ์ง€ ์กฐ๊ธˆ ํž˜๋“ค์—ˆ๋˜ ๋А๋‚Œ์ด ์žˆ์—ˆ๋‹ค. ์‹œํ—˜ ๋ฐ ์‹œ์—ฐ์ด ๋๋‚˜๊ณ ๋Š” ์ข€ ๋„๋„ํ•˜๊ฒŒ ๊ฐœ๋ฐœํ–ˆ๋Š”๋ฐ, ์—ฐ๋ง๊นŒ์ง€ ๋งจ๋‚  ํšŒ์‚ฌ๋ฅผ ๊ฐ€์„œ์ธ์ง€ ๋ชฉ/์–ด๊นจ ํ†ต์ฆ์ด ์ง€์†๋˜์–ด์„œ ๊ทธ๋žฌ๋Š”์ง€ ์—๋„ˆ์ง€๊ฐ€ ์—†๋˜ ๋‚˜๋Š”... ๋‚ด ๊ฐœ์ธ์‹œ๊ฐ„์—๋Š” ๊ฐœ๋ฐœ๊ณต๋ถ€๋Š” ํ•˜์ง€ ์•Š๊ณ  ๊ฑฐ์˜ ์‰ฌ๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์กŒ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ๊ทผ๋ฐ๋„ ํšŒ์‚ฌ๋ฅผ ๋งจ๋‚  ๋‚˜๊ฐ€๋‹ˆ ๋ญ”๊ฐ€ ์ถฉ๋ถ„ํžˆ ์‰ฌ์ง€ ๋ชปํ•œ ๋А๋‚Œ์ด ๊ณ„์† ๋“ค์—ˆ๋‹ค.ใ…  ์งง๊ฒŒ ํœด๊ฐ€๋ฅผ ๋‚ด๊ณ  12์›” ํšŒ๊ณ ๋ฅผ 1์›” ์ค‘์ˆœ์ด ๋˜์–ด์„œ ์ด์ œ์„œ์•ผ ์ œ๋Œ€๋กœ ๋ฐœํ–‰ํ•œ๋‹ค~ ํšŒ์‚ฌ ์—…๋ฌด - ํšŒ์›๊ฐ€์ž…, ๋งˆ์ดํŽ˜์ด์ง€ ๊ฐœ๋ฐœ ๊ณตํ†ต์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ํšŒ์›๊ฐ€์ž…, ๋งˆ์ดํŽ˜์ด์ง€ ์ธ์ฆ ๊ด€๋ จ ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค. ํšŒ์‚ฌ์˜ ์„œ๋น„์Šค๊ฐ€ 3๊ฐœ๋กœ ..
ยท React
์ด์Šˆ์‚ฌํ•ญ postTokenQuery(token) .then((res) => { console.log(res, '์ฟผ๋ฆฌ res'); if (res.data) { setTokenInStorage(token); } }) .catch(() => toast.error('ํ† ํฐ ์—๋Ÿฌ ๋ฐœ์ƒ')); //์„œ๋ฒ„ ์‘๋‹ต ์‹คํŒจ์‹œ ์‹คํ–‰ ์•ˆ๋จ rtk query ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ™œ์šฉํ•ด์„œ ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•˜๋Š”๋ฐ ์„œ๋ฒ„์—์„œ ๋ณด๋‚ด์ฃผ๋Š” ์‘๋‹ต์— ๋”ฐ๋ผ ์„ฑ๊ณตํ•˜๋ฉด? .then ์œผ๋กœ ํŠน์ • ๋กœ์ง์„ ์‹คํ–‰ํ•˜๊ณ  ์‹คํŒจํ•˜๋ฉด? .catch ๋กœ ํ† ์ŠคํŠธ๋ฅผ ๋„์šฐ๋Š” ๋กœ์ง์ด๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์„œ๋ฒ„์˜ ์‘๋‹ต์— ์‹คํŒจํ•ด๋„, catch ๋ฌธ์œผ๋กœ ๋„˜์–ด๊ฐ€์ง€ ์•Š๊ณ , then์—์„œ ๊ฑธ๋ ค res ์‘๋‹ต์„ ์ฝ˜์†”์— ๋„์šฐ๋Š” ์ด์ƒํ•œ ์ ์ด ๋ฐœ๊ฒฌ๋˜์—ˆ๋‹ค. ์„ฑ๊ณต์‹œ {data: {โ€ฆ}} ๊ฐ€ ์ฝ˜์†”์— ์ฐํžˆ๊ณ , ์‹คํŒจ์‹œ {error: ..
ยท React
ํด๋ผ์ด์–ธํŠธ ๋‹จ์—์„œ http ๋น„๋™๊ธฐ ํ†ต์‹  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ axios๋ฅผ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ, ์„œ๋ฒ„์— ์š”์ฒญํ•˜๋Š”๋ฐ ์ž๊พธ ์„œ๋ฒ„์—์„œ ์—๋Ÿฌ๊ฐ€ ๋‚ฌ๋‹ค. API ์š”์ฒญ ํ˜•์‹์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค. ์š”์ฒญ ๋ฉ”์†Œ๋“œ๋Š” POST ์š”์ฒญ ๋ฐ”๋””๋Š” ์•„๋ฌด๋Ÿฐ ๋ฐ์ดํ„ฐ๋„ ๋„ฃ์ง€ ์•Š์•„์•ผํ•จ ์š”์ฒญ ํ—ค๋”์™€ ์š”์ฒญ ํŒŒ๋ผ๋ฉ”ํ„ฐ ๊ฐ’์œผ๋กœ๋งŒ ์„œ๋ฒ„์— ์š”์ฒญ ๋„คํŠธ์›Œํฌ ํƒญ์—์„œ ํ™•์ธํ•ด๋ณด๋‹ˆ, ํ—ค๋”์™€ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ž˜ ์š”์ฒญ์ด๊ฐ€์ง€ ์•Š๊ณ , payload ๋ฐ”๋””์— ํ—ค๋”์™€ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ ์–ด์ค€ ๊ฐ์ฒด๊ฐ€ ์š”์ฒญ ๋ฐ”๋””๋กœ ๋ณด๋‚ด์ ธ์„œ ์˜ค๋ฅ˜๊ฐ€ ๋‚˜๋Š” ๊ฒƒ์œผ๋กœ ํ™•์ธ์ด ๋˜์—ˆ๋‹ค. ๊ธฐ์กด ์ฝ”๋“œ axios.post( 'url', { headers: { 'Content-Type': 'application/x-www-form-urlencoded', }, params: { transactionId, email, pageUri: 'http://192..