๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๋ฐ˜์‘ํ˜•

์ „์ฒด ๊ธ€

[Mysql] row_number() ๊ทธ๋ฃน๋ณ„ ํ–‰๋ฒˆํ˜ธ ์ถœ๋ ฅ ์ฟผ๋ฆฌ ๊ทธ๋ฃน๋ณ„ ์ˆœ์„œ ์ถœ๋ ฅ ์ฟผ๋ฆฌ Mysql row_number() mysql 8 ๋ฒ„์ „ ์ด์ƒ์—์„œ๋Š” row_number() ํ•จ์ˆ˜๋ฅผ ์ง€์›ํ•œ๋‹ค. ์™€.. ๊ฐœ์ฉ”์–ด. ์˜›๋‚  ์˜›์ ์—๋Š” row_number() ํ•จ์ˆ˜๊ฐ€ ์—†์–ด์„œ ์ฟผ๋ฆฌ ๊ธธ์ด๋Š” ๋ฌด์Ÿˆ๊ฒŒ ๊ธธ๊ณ , ์„ฑ๋Šฅ๋„ ๊ตฌ๋ ค์„œ ๊ฑ ์ฝ”๋“œ๋กœ ๋•Œ๋ ค ๋ฐ•์•˜๋˜.. ์˜ค๋ผํด ๋ณด๊ณ  ์นจ ํ˜๋ฆฌ๋˜ ์‹œ์ ˆ์ด ์žˆ์—ˆ๋Š”๋ฐ.. ใ…Ž ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•์€ ์š”๋กœ์ผ€ ์“ฐ๊ณ , ROW_NUMBER() OVER ( ) : PARTITION BY ,[{,}...] ์ด ๋ถ€๋ถ„์€ ํŠน์ • ์ปฌ๋Ÿผ์ด๋‚˜ ์กฐ๊ฑด์— ๋งž๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ๋ฃน์ง€์–ด ์ˆœ๋ฒˆ์„ ๋งค๊ฒจ์ค€๋‹ค. group_by์™€ ๊ฐ™๋‹ค๊ณ  ๋ณด๋ฉด ๋จ. ํ•˜๋‚˜๋งŒ ์“ธ ์ˆ˜ ์žˆ๋Š”๊ฑด ์•„๋‹ˆ๊ณ , ์ฝค๋งˆ(,)๋กœ ์—ฌ๋Ÿฌ๊ฐœ ์ง€์ •์ด ๊ฐ€๋Šฅ. ๊ตณ์ด ๋„ฃ์„ ํ•„์š” ์—†๋‹ค๋ฉด ์•ˆ๋„ฃ์–ด๋„ ์ƒ๊ด€์—†์Œ. : ORDER BY [ASC|DESC],[{,}...] ์ˆœ๋ฒˆ์„ ๋งค๊ธธ ๋•Œ,.. ๋”๋ณด๊ธฐ
Maria DB JSON Format ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ Json Format { "DATA":{ "PARAM1":"123123", "PARAM2":"TEST", "PARAM3":{ "PARAM4":"0", "PARAM5":6000 } } } Json data ์ค‘ PARAM1 ๊ฐ’ ์ถœ๋ ฅ SELECT JSON_EXTRACT(DATA.STR, '$.DATA.PARAM1') AS PARAM1 FROM ( SELECT '{ "DATA":{ "PARAM1":"123123", "PARAM2":"TEST", "PARAM3":{ "PARAM4":"0", "PARAM5":6000 } } }' AS STR FROM DUAL ) DATA Json data ์ค‘ PARAM3 ๊ฐ€์ ธ์˜ค๊ธฐ SELECT JSON_EXTRACT(DATA.STR, '$.DATA.PARAM3.PARAM4') AS.. ๋”๋ณด๊ธฐ
๊ตฌ๊ธ€ ์ธ์•ฑ ๊ฒฐ์ œ ๊ฒ€์ฆ API ๊ด€๋ จ ์ด์Šˆ.. Google_Service_AndroidPublisher ๊ตฌ๊ธ€ API์˜ AndroidPublisher๋ฅผ ํ†ตํ•ด ์•ˆ๋“œ๋กœ์ด๋“œ ์ธ์•ฑ ๊ฒฐ์ œํ•œ ๋‚ด์—ญ์˜ ๊ฒ€์ฆ ์ฝ”๋“œ ์งœ์„œ ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๋Š”๋ฐ ์ƒ๊ธด ๋ฌธ์ œ ๋ชจ๋“  ๊ถŒํ•œ์€ Perfect.. ๊ณ„์ • ๋‚ด ํ”„๋กœ์ ํŠธ๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ์ด์ง€๋งŒ, ํ•˜๋‚˜์˜ ํ”„๋กœ์ ํŠธ์— ์„œ๋น„์Šค ๊ณ„์ •์„ ์ถ”๊ฐ€ํ•ด "์†Œ์œ ์ž" ๊ถŒํ•œ์„ ์คฌ๊ณ , Json ํŒŒ์ผ์„ ๋ฐ›๊ณ  ์ฝ”๋“œ๋ฅผ ๋„ฃ์—ˆ๋Š”๋ฐ.. ์˜... ์•ˆ๋œ๋‹ค ใ…†ใ…‚ ์•„๋ž˜๋Š” ๊ฒ€์ฆ ๊ด€๋ จ ์ฝ”๋“œ. ๋กœ๊ทธ์ธ ๋ถ€ํ„ฐ, ๊ฒฐ์ œ ๋‚ด์šฉ ๊ฒ€์ฆ $this->client = new Google_Client(); $this->client->setAuthConfig(getenv('GOOGLE_SDK_FILE')); $this->service = new Google_Service_AndroidPublisher($this->client); $this->client->addScope('h.. ๋”๋ณด๊ธฐ
[summary] แ„‰แ…ณแ„‘แ…ณแ„…แ…ตแ†ผ แ„‹แ…ตแ†ธแ„†แ…ฎแ†ซ - แ„แ…ฉแ„ƒแ…ณแ„…แ…ฉ แ„‡แ…ขแ„‹แ…ฎแ„‚แ…ณแ†ซ แ„‰แ…ณแ„‘แ…ณแ„…แ…ตแ†ผ แ„‡แ…ฎแ„แ…ณ, แ„‹แ…ฐแ†ธ MVC, DB แ„Œแ…ฅแ†ธแ„€แ…ณแ†ซ แ„€แ…ตแ„‰แ…ฎแ†ฏ day 3 JPA - ์ž๋ฐ” ORM ํ‘œ์ค€, ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ชจ์Œ. Object Relational table Mapping - ๊ธฐ์กด์˜ sql ๋ฐ์ดํ„ฐ ์ค‘์‹ฌ ์„ค๊ณ„์—์„œ ๊ฐ์ฒด ์ค‘์‹ฌ ์„ค๊ณ„๋กœ์˜ ํŒจ๋Ÿฌ๋‹ค์ž„ ์ ์šฉ configuration - spring.jpa.hibernate.ddl-auto - DDL (๋ฐ์ดํ„ฐ ์ •์˜์–ด. create, alter, drop... ๋“ฑ๋“ฑ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ๊ด€๋ จ ๋ช…๋ น์–ด) Auto Generation ์˜ต์…˜ (DDL SQL ์Šคํฌ๋ฆฝํŠธ ์ž๋™ ์ƒ์„ฑ) https://docs.spring.io/spring-boot/docs/1.1.0.M1/reference/html/howto-database-initialization.html#howto-initialize-a-database-using-hibernate 59. Datab.. ๋”๋ณด๊ธฐ
[summary] แ„‰แ…ณแ„‘แ…ณแ„…แ…ตแ†ผ แ„‹แ…ตแ†ธแ„†แ…ฎแ†ซ - แ„แ…ฉแ„ƒแ…ณแ„…แ…ฉ แ„‡แ…ขแ„‹แ…ฎแ„‚แ…ณแ†ซ แ„‰แ…ณแ„‘แ…ณแ„…แ…ตแ†ผ แ„‡แ…ฎแ„แ…ณ, แ„‹แ…ฐแ†ธ MVC, DB แ„Œแ…ฅแ†ธแ„€แ…ณแ†ซ แ„€แ…ตแ„‰แ…ฎแ†ฏ day 2 ์Šคํ”„๋ง๋ถ€ํŠธ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์ž‘์„ฑ JUnit - main ๋ฉ”์„œ๋“œ ํ†ตํ•œ ์‹คํ–‰ - ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปจํŠธ๋กค๋Ÿฌ ํ†ตํ•œ ์‹คํ–‰ service ํŒจํ‚ค์ง€๋Š” ์ฃผ๋กœ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์‹คํ–‰ - ๋น„์ฆˆ๋‹ˆ์Šค์— ์˜์กด์  repository๋Š” ์ €์žฅ์†Œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๋Š” ์—ญํ• ์„ ํ•จ(findAll, findById) - ๋‹จ์ˆœ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ƒ์„ฑ ๋‹จ์ถ•ํ‚ค ์ปค๋งจ๋“œ ์‰ฌํ”„ํŠธ T Test ์ฝ”๋“œ ์ž‘์„ฑ์‹œ given, when, then ์ˆœ์œผ๋กœ ๊ฒ€์ฆ ์ฒ˜๋ฆฌ * ์™ธ๋ถ€ ์˜์กด์„ฑ ์ฃผ์ž… DI(Dependancy injection) ์Šคํ”„๋ง ๋นˆ์„ ๋“ฑ๋กํ•˜๋Š” 2๊ฐ€์ง€ ๋ฐฉ๋ฒ• - ์ปดํฌ๋„ŒํŠธ ์Šค์บ”๊ณผ ์ž๋™ ์˜์กด๊ด€๊ณ„ ์„ค์ • -> @Component (๋นˆ์œผ๋กœ ์ž๋™ ๋“ฑ๋ก), @Autowired, @Controller, @Service... etc ์–ด๋…ธํ…Œ์ด์…˜ ์„ค์ • - ์ž๋ฐ” ์ฝ”๋“œ๋กœ ์ง์ ‘ ์Šค.. ๋”๋ณด๊ธฐ
[summary] ์Šคํ”„๋ง ์ž…๋ฌธ - ์ฝ”๋“œ๋กœ ๋ฐฐ์šฐ๋Š” ์Šคํ”„๋ง ๋ถ€ํŠธ, ์›น MVC, DB ์ ‘๊ทผ ๊ธฐ์ˆ  day1 [์Šคํ”„๋ง ์›น ๊ฐœ๋ฐœ ๊ธฐ์ดˆ] ๊ธฐ์กด์˜ ๋ชจ๋ธ1 ๋ฐฉ์‹ - View ๋‹จ์—์„œ ๋ชจ๋“ ๊ฑธ ์ฒ˜๋ฆฌ, ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ๋“ฑ์„ jsp๋กœ ์ฒ˜๋ฆฌ MVC ํŒจํ„ด ๋ฐฉ์‹ - ๋ชจ๋ธ, ๋ทฐ, ์ปจํŠธ๋กค๋Ÿฌ๋กœ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•˜๊ณ , ๋ทฐ์—์„œ๋Š” ํ™”๋ฉด ์ถœ๋ ฅ, ๋ชจ๋ธ์—๋Š” ํ™”๋ฉด์—์„œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋“ค์„ ๋‹ด๋Š” ์—ญํ• ์„ ํ•จ ํƒ€์ž„๋ฆฌํ”„ Thymeleaf - Spring Boot์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ทฐ ํ…œํ”Œ๋ฆฟ ์ข…๋ฅ˜ ์ค‘ ํ•˜๋‚˜ - static(์ •์ ), templates(๋™์ ) ํ…œํ”Œ๋ฆฟ์„ ์ œ๊ณตํ•˜๋ฉฐ, ์—”๋“œํฌ์ธํŠธ๊ฐ€ (request mapping) ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์ •์  ํ…œํ”Œ๋ฆฟ์—์„œ ์ฐพ์•„ ๋ Œ๋”๋ง๋˜์ง€ ์•Š์€ html ํŒŒ์ผ์„ ๋ฆฌํ„ดํ•œ๋‹ค. Getter & Setter - ์ž๋ฐ” Bean ํ‘œ์ค€ ๊ทœ์•ฝ - ํ”„๋กœํผํ‹ฐ ์ ‘๊ทผ ๋ฐฉ์‹ - ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋“ฑ ์—์„œ ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์ ‘๊ทผ ๊ฐ€๋Šฅ @ResponseBody ์–ด๋…ธํ…Œ์ด์…˜ .. ๋”๋ณด๊ธฐ
intelli J์—์„œ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ์‹œ, Spring Initializr ์•ˆ๋ณด์ด๋Š” ๊ฒฝ์šฐ ์ธํ…”๋ฆฌ์ œ์ด์—์„œ ์Šคํ”„๋ง ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ ์‹œ, ์ปค๋ฎค๋‹ˆํ‹ฐ ๋ฒ„์ „์ด ์•„๋‹˜์—๋„ Spring Initializr๊ฐ€ ์•ˆ๋ณด์ž„.. ์œˆ๋„์šฐ์—์„œ ๋งฅ์œผ๋กœ ์ „ํ™˜ํ•˜๊ณ  intelli J๋กœ ์Šคํ”„๋ง ๋ถ€ํŠธ ํ”„๋กœ์ ํŠธ๋ฅผ ์ฒจ์œผ๋กœ ์ƒ์„ฑํ•˜๋ คํ•˜๋Š”๋ฐ ๊ท€์ฐฎ๊ฒŒ ๋ผ๋ฒ„๋ฆผ. spring.io์—์„œ ์ƒ์„ฑ๊ฐ€๋Šฅํ•˜๋‚˜, ์ด ์ข‹์€ IDE๋ฅผ ๋ˆ์ฃผ๊ณ  ์“ฐ๋Š”๋ฐ ์™œ..?ใ…Ž ๊ฒ€์ƒ‰ํ•ด๋ณด๋‹ˆ, ์ฃ„๋‹ค ์ปค๋ฎค๋‹ˆํ‹ฐ ๋ฒ„์ „์ด๋ผ์„œ ์–ด์ฉ”์ˆ˜์—†๋‹ค๋Š”๋ฐ.. ๋‚œ ๋ผ์ด์„ผ์Šค ๊ตฌ๋งค์ž๋ž€ ๋ง์ด์ง€. ์ƒ๋‹จ ๋ฉ”๋‰ด 'Preferences > plugins > Spring Assistant ๊ฒ€์ƒ‰ > install > restart' ์•„์˜ค ์‰ฌ์›Œ..... ์ฐพ๋Š”๋ฐ ์‹œ๊ฐ„์ด ์˜ค๋ž˜๊ฑธ๋ฆฌ์ง„ ์•Š์•˜์ง€๋งŒ ์ดˆ๊ธฐ ์„ค์ •์€ ์–ธ์ œํ•ด๋„ ๊ท€์ฐฎ๊ณ  ๊นŒ๋จน์œผ๋‹ˆ ๊ธฐ๋ก! ๋”๋ณด๊ธฐ
Mac Alias ์„ค์ • source ~/.zsh source ~/.bash_profile ํ•ด์ค˜๋„ ๊ทธ ๋•Œ ๋ฟ. ํ„ฐ๋ฏธ๋„ ์ฐฝ์ด ๋‹ค๋ฅด๊ฑฐ๋‚˜ ์ƒˆ๋กœ ์—ด ๋•Œ ๋งˆ๋‹ค ์ € ์ง€๋ž„ํ•ด์„œ ๊ฐœ๋นก ์•„๋ž˜ ๋งํฌ ์ฐธ์กฐ ํ•ด์„œ ์‹คํ–‰ํ•˜๋‹ˆ ์•„์ฃผ ์ž˜๋จ. + ์œˆ๋„์šฐ/๋ฆฌ๋ˆ…์Šค ์‰˜์—์„œ ์ž˜ ์“ฐ๋˜ ๋ช…๋ น์–ด๋งŒ ๋„ฃ์–ด๋„ ๋Œ vi ~/.bash_profile #.bash_profile if [ -f ~/.bashrc ]; then . ~/.bashrc fi #============================================================ # # ALIASES AND FUNCTIONS # Arguably, some functions defined here are quite big. # If you want to make this file smaller, these.. ๋”๋ณด๊ธฐ

๋ฐ˜์‘ํ˜•