Ajax์—์„œ ํ•„์š”ํ•œ SOP(Same Origin Policy), CORS(Cross-Origin Resource Sharing) ์ •๋ฆฌ
์›น (WEB)/๊ณต๋ถ€ 2021. 2. 6. 23:07

SOP, COP Same Origin Policy document ๊ฐ์ฒด๋Š” ์ถœ์‹ ์ธ origin์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ , ์ด๋Š” js์—์„œ `document.location.origin`์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. document ๋‚ด์—์„œ ๋ฆฌ์†Œ์Šค๋“ค๊ณผ ์ƒํ˜ธ์ž‘์šฉํ•  ๋•Œ, origin์ด ๋‹ค๋ฅด๋‹ค๋ฉด ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์— ์žˆ์–ด์„œ ์ œํ•œ์„ ๋‘๊ฒ ๋‹ค๋Š” ๊ฒƒ์ด SOP(Same Origin Policy)์ด๋‹ค. Origin ํŒ๋‹จ Origin์ด ๊ฐ™์€ ์ง€๋Š” Protocol, Host, Port๋กœ ํŒ๋‹จํ•˜๋Š”๋ฐ url ๊ตฌ์กฐ๋ฅผ ๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. http://localhost:3000 Protocol://Host:Port ์„ธ ๊ฐ€์ง€๊ฐ€ ๋ชจ๋‘ ๊ฐ™์œผ๋ฉด ๊ฐ™์€ Origin์ด๋ผ๊ณ  ํŒ๋‹จ๋˜๋Š” ๊ฒƒ์ด๋‹ค. IE๋Š” ์–‘์ชฝ ๋„๋ฉ”์ธ ๋ชจ๋‘ ๋†’์Œ ๋‹จ๊ณ„์˜ ๋ณด์•ˆ ์ˆ˜์ค€์ผ ๊ฒฝ์šฐ Same Origin ..

Ajax(Asynchronous Javascript And Xml)
์›น (WEB)/๊ณต๋ถ€ 2021. 2. 6. 23:04

Ajax๋Š” js๋ฅผ ์ด์šฉํ•œ ๋น„๋™๊ธฐ ํ†ต์‹ ์œผ๋กœ, ํด๋ผ์ด์–ธํŠธ ์„œ๋ฒ„ ๊ฐ„์˜ xml(Extensible Markup Language)๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ๊ธฐ์ˆ ์ด๋‹ค. ์ „์ฒด ํŽ˜์ด์ง€๋ฅผ ๋ฆฌ๋กœ๋“œํ•˜์ง€ ์•Š๊ณ  ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค. Ajax ๋ฐฉ์‹์„ ์ด์šฉํ•œ ์›น API๋Š” XMLHttpRequest ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ fetch๋ฅผ ๊ฑฐ์ณ axios๊นŒ์ง€ ๋‹ค์–‘ํ•˜๋‹ค. XMLHttpRequest๋Š” ๋ณต์žกํ•˜๊ณ  ๊ฐ€๋…์„ฑ์ด ๋–จ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— fetch api๊ฐ€ ES6์—์„œ๋ถ€ํ„ฐ ํ‘œ์ค€์ด ๋˜์—ˆ๋Š”๋ฐ, ๋”ฐ๋ผ์„œ ํ˜„์žฌ fetch api๋Š” ๊ธฐ๋ณธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ๋”ฐ๋กœ ์„ค์น˜ํ•˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉํ•ด๋„ ๋œ๋‹ค. axios๋Š” Node.js์—์„œ XMLHttpRequests๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ข‹๊ฒŒ ๋งŒ๋“ค์–ด๋‘” api์ด๋ฉฐ ๋”ฐ๋กœ ์„ค์น˜ํ•ด์ฃผ์–ด์•ผ ๋™์ž‘ํ•œ๋‹ค. TOP Ajax API๋ฅผ ์ฐธ๊ณ ํ•˜๋ฉด ๋” ๋งŽ์€..

[์นด์นด์˜ค ๋ธ”๋ผ์ธ๋“œ 2021] ์‹ ๊ทœ์•„์ด๋”” ์ถ”์ฒœ :: string ์‚ฌ์šฉ ๋ฌธ์ œ
Algorithm ๋ฌธ์ œ/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค 2021. 2. 6. 01:12

์‹ ๊ทœ ์•„์ด๋”” ์ถ”์ฒœ ๋‚œ์ด๋„ : โ˜…โ˜†โ˜†โ˜†โ˜† ๊ฑธ๋ฆฐ ์‹œ๊ฐ„ : 30๋ถ„ => ๋ฐ˜์„ฑ! ๋ฌธ์ œ ์‹ ๊ทœ ์•„์ด๋”” ์ถ”์ฒœ ๋ฌธ์ œ ๋ฐ”๋กœ๊ฐ€๊ธฐ ๋ฌธ์ œ ์„ค๋ช… ์นด์นด์˜ค์— ์ž…์‚ฌํ•œ ์‹ ์ž… ๊ฐœ๋ฐœ์ž ๋„ค์˜ค๋Š” ์นด์นด์˜ค๊ณ„์ •๊ฐœ๋ฐœํŒ€์— ๋ฐฐ์น˜๋˜์–ด, ์นด์นด์˜ค ์„œ๋น„์Šค์— ๊ฐ€์ž…ํ•˜๋Š” ์œ ์ €๋“ค์˜ ์•„์ด๋””๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์—…๋ฌด๋ฅผ ๋‹ด๋‹นํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋„ค์˜ค์—๊ฒŒ ์ฃผ์–ด์ง„ ์ฒซ ์—…๋ฌด๋Š” ์ƒˆ๋กœ ๊ฐ€์ž…ํ•˜๋Š” ์œ ์ €๋“ค์ด ์นด์นด์˜ค ์•„์ด๋”” ๊ทœ์น™์— ๋งž์ง€ ์•Š๋Š” ์•„์ด๋””๋ฅผ ์ž…๋ ฅํ–ˆ์„ ๋•Œ, ์ž…๋ ฅ๋œ ์•„์ด๋””์™€ ์œ ์‚ฌํ•˜๋ฉด์„œ ๊ทœ์น™์— ๋งž๋Š” ์•„์ด๋””๋ฅผ ์ถ”์ฒœํ•ด์ฃผ๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ์นด์นด์˜ค ์•„์ด๋””์˜ ๊ทœ์น™์ž…๋‹ˆ๋‹ค. ์•„์ด๋””์˜ ๊ธธ์ด๋Š” 3์ž ์ด์ƒ 15์ž ์ดํ•˜์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์•„์ด๋””๋Š” ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž, ์ˆซ์ž, ๋นผ๊ธฐ(-), ๋ฐ‘์ค„(_), ๋งˆ์นจํ‘œ(.) ๋ฌธ์ž๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹จ, ๋งˆ์นจํ‘œ(.)๋Š” ์ฒ˜์Œ๊ณผ ๋์— ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ๋˜ํ•œ ์—ฐ์†์œผ๋กœ ..

[ECMAScript] ES5, ES6 ๋ฌธ๋ฒ• ์ •๋ฆฌ
์›น (WEB)/๊ณต๋ถ€ 2021. 2. 3. 21:57

ECMAScript ๊ณต๋ถ€ ES5 ์ด์ „ ES3 (1999) : ์ •๊ทœํ‘œํ˜„์‹, try/catch๋ฌธ string string.length : ๊ธธ์ด ์†์„ฑ string.indexOf(string, [start]) : ํ•ด๋‹น ๊ธ€์ž์˜ ์‹œ์ž‘ index ์œ„์น˜ ๋ฐ˜ํ™˜ string.lastIndexOf(string, [start]) : ํ•ด๋‹น ๊ธ€์ž์˜ ๋งˆ์ง€๋ง‰ ์‹œ์ž‘ index ์œ„์น˜ ๋ฐ˜ํ™˜ string.search(string) : indexOf์™€ ๋น„์Šทํ•˜์ง€๋งŒ ์ •๊ทœํ‘œํ˜„์‹ ์‚ฌ์šฉ x string.slice(index, index2) : index๋ถ€ํ„ฐ index2-1๊นŒ์ง€ ์ž๋ฅด๊ธฐ ์Œ์ˆ˜ index๋Š” ๋’ค์—์„œ๋ถ€ํ„ฐ ์…ˆ string.substring(index, index2) : slice์™€ ๋น„์Šทํ•˜์ง€๋งŒ, ์Œ์ˆ˜ ๋ถˆ๊ฐ€ string.substr(index, l..

[go lang] api ๋™์‹œ ํ˜ธ์ถœ ์•ˆ๋˜๋Š” ์˜ค๋ฅ˜ ๊ฐœ์„ ํ•˜๊ธฐ :: No database selected error
์›น (WEB)/์—๋Ÿฌํ•ด๊ฒฐ 2021. 2. 3. 18:55

ํ”„๋ก ํŠธ์—์„œ 2๊ฐ€์ง€ ํ˜ธ์ถœ api๋ฅผ ๊ฐ™์€ ํ•จ์ˆ˜์— ๋‘๊ณ  ๋™์‹œ์— ํ˜ธ์ถœํ•˜์˜€๋”๋‹ˆ, ์„œ๋ฒ„์—์„œ ๋’ท ์ˆœ์„œ๋กœ ํ˜ธ์ถœ๋œ api ์‹คํ–‰ ์‹œ No database selecte error ๊ฐ€ ๋‚œ๋‹ค. ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• : gorm.DB์— ์žˆ๋Š” sql.DB์˜ SetMaxOpenConns ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ, ๋™์‹œ์— ํ—ˆ์šฉ ๊ฐ€๋Šฅํ•œ ์ตœ๋Œ€ ์ปค๋„ฅ์…˜ ๊ฐœ์ˆ˜๋ฅผ ์ œํ•œํ•ด์ฃผ์–ด์•ผํ•œ๋‹ค. Config.DB, err = gorm.Open(mysql.Open(Config.DBURL(Config.BuildDBConfig())), &gorm.Config{}) if err != nil { fmt.Println("Status: ", err) return } // ์•„๋ž˜์˜ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค. db, err := Config.DB.DB() if err != nil { fmt.Print..

You can not change the default `anchorOrigin.vertical` value ์˜ค๋ฅ˜
์›น (WEB)/์—๋Ÿฌํ•ด๊ฒฐ 2021. 2. 3. 18:50

์‚ฌ์šฉํ•œ ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. { colorArr.map(...) } ํ•ด๋‹น ์ฝ”๋“œ๋Š” ์ •์ƒ๋™์ž‘ํ•˜์ง€๋งŒ, ํ‘œ์‹œ๋œ getContentAnchorEl์„ ์†์„ฑ์œผ๋กœ ์„ค์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋œฌ๋‹ค. Material-UI: You can not change the default `anchorOrigin.vertical` value when also providing the `getContentAnchorEl` prop to the popover component. Only use one of the two props. Set `getContentAnchorEl` to `null | undefined` or leave `anchorOrigin.vertical` unchanged. material-ui์˜ popove..

[React hook] html ์š”์†Œ๋ฅผ ์ด๋ฏธ์ง€๋กœ ์ €์žฅํ•˜๊ณ , ์ด๋ฏธ์ง€ ํ˜ธ์ŠคํŒ…ํ•˜์—ฌ ์นด์นด์˜คํ†ก api๋กœ ๊ณต์œ ํ•˜๊ธฐ :: html2canvas, imgur, kakao api
์›น (WEB)/๊ณต๋ถ€ 2021. 1. 30. 00:27

html2canvas + ์ด๋ฏธ์ง€ ํ˜ธ์ŠคํŒ… *์˜ˆ์ œ๋Š” React Hook ํ™˜๊ฒฝ์—์„œ ์ง„ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ table์„ ์ด๋ฏธ์ง€๋กœ ๋งŒ๋“ค์–ด ๊ณต์œ ํ•ด์•ผํ•˜๋Š” ์š”๊ตฌ์‚ฌํ•ญ์ด ์žˆ์—ˆ๋‹ค. ์š”๊ตฌ์‚ฌํ•ญ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณผ์ œ๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ํ•ด๋‚ด์•ผํ•œ๋‹ค. html table์„ ์ด๋ฏธ์ง€๋กœ ๋งŒ๋“ค๊ธฐ ๋งŒ๋“ค์–ด์ง„ ์ด๋ฏธ์ง€๋ฅผ ํ˜ธ์ŠคํŒ…ํ•˜๊ธฐ ํ˜ธ์ŠคํŒ…๋œ ์ด๋ฏธ์ง€๋ฅผ ์นด์นด์˜คํ†ก api๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ณต์œ ํ•˜๊ธฐ ์ฐจ๋ก€๋Œ€๋กœ ํ•ด๋ณด์ž. html table์„ ์ด๋ฏธ์ง€๋กœ ๋งŒ๋“ค๊ธฐ DOM์š”์†Œ๋ฅผ ์ด๋ฏธ์ง€๋กœ ๋งŒ๋“ค ๋•Œ, html2canvas๋ผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ฃผ๋กœ ์“ฐ์ธ๋‹ค. import html2canvas from 'html2canvas'; const copyDOM = async () => { window.scrollTo(0, 0); let url = ""; await html2canvas(..

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋งค์นญ์ ์ˆ˜ :: c++, 8๋ฒˆ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค, ํ’€์ด, ์ฝ”๋“œ
Algorithm ๋ฌธ์ œ/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค 2021. 1. 29. 11:09

๋งค์นญ ์ ์ˆ˜ ๊ฑธ๋ฆฐ ์‹œ๊ฐ„ : 3์‹œ๊ฐ„ ์ด์ƒ ๋ฌธ์ œ ๋‚œ์ด๋„ โ˜…โ˜…โ˜…โ˜†โ˜† ๋ฌธ์ œ ์„ค๋ช… ํ”„๋ Œ์ฆˆ ๋Œ€ํ•™๊ต ์กฐ๊ต์˜€๋˜ ์ œ์ด์ง€๋Š” ํ—ˆ๋“œ๋ ›์ผ๋งŒ ์‹œํ‚ค๋Š” ๋„ค์˜ค ํ•™๊ณผ์žฅ๋‹˜์˜ ๋งˆ์ˆ˜์—์„œ ๋ฒ—์–ด๋‚˜, ์นด์นด์˜ค์— ์ž…์‚ฌํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ํ‰์†Œ์— ๊ด€์‹ฌ์žˆ์–ดํ•˜๋˜ ๊ฒ€์ƒ‰์— ๋งˆ์นจ ๊ฒฐ์›์ด ๋ฐœ์ƒํ•˜์—ฌ, ๊ฒ€์ƒ‰๊ฐœ๋ฐœํŒ€์— ํŽธ์ž…๋  ์ˆ˜ ์žˆ์—ˆ๊ณ , ๋Œ€๋ง์˜ ์ฒซ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งก๊ฒŒ ๋˜์—ˆ๋‹ค. ๊ทธ ํ”„๋กœ์ ํŠธ๋Š” ๊ฒ€์ƒ‰์–ด์— ๊ฐ€์žฅ ์ž˜ ๋งž๋Š” ์›นํŽ˜์ด์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด ์•„๋ž˜์™€ ๊ฐ™์€ ๊ทœ์น™์œผ๋กœ ๊ฒ€์ƒ‰์–ด์— ๋Œ€ํ•œ ์›นํŽ˜์ด์ง€์˜ ๋งค์นญ์ ์ˆ˜๋ฅผ ๊ณ„์‚ฐ ํ•˜๋Š” ๊ฒƒ์ด์—ˆ๋‹ค. ํ•œ ์›นํŽ˜์ด์ง€์— ๋Œ€ํ•ด์„œ ๊ธฐ๋ณธ์ ์ˆ˜, ์™ธ๋ถ€ ๋งํฌ ์ˆ˜, ๋งํฌ์ ์ˆ˜, ๊ทธ๋ฆฌ๊ณ  ๋งค์นญ์ ์ˆ˜๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•œ ์›นํŽ˜์ด์ง€์˜ ๊ธฐ๋ณธ์ ์ˆ˜๋Š” ํ•ด๋‹น ์›นํŽ˜์ด์ง€์˜ ํ…์ŠคํŠธ ์ค‘, ๊ฒ€์ƒ‰์–ด๊ฐ€ ๋“ฑ์žฅํ•˜๋Š” ํšŸ์ˆ˜์ด๋‹ค. (๋Œ€์†Œ๋ฌธ์ž ๋ฌด์‹œ) ํ•œ ์›นํŽ˜์ด์ง€์˜ ์™ธ๋ถ€ ๋งํฌ ์ˆ˜๋Š” ํ•ด๋‹น ์›นํŽ˜์ด์ง€์—์„œ ๋‹ค๋ฅธ ์™ธ๋ถ€ ํŽ˜์ด์ง€๋กœ ์—ฐ๊ฒฐ๋œ ๋ง..