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

๐Ÿ–ฅ๏ธ135

[Linux] ์šฐ๋ถ„ํˆฌ Tomcat ์„ค์น˜ + ๊ฐ€์ƒํ˜ธ์ŠคํŒ… ์„ค์ • 1. ์ €์žฅ์†Œ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ ์ƒˆ๋กœ์šด ํ”„๋กœ๊ทธ๋žจ์„ ๊น”๊ธฐ ์ „์— $sudo apt update && apt upgrade ๋กœ ํ•ญ์ƒ ์ €์žฅ์†Œ๋ฅผ ์—…๋ฐ์ดํŠธ ๋ฐ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ํ•˜๋Š” ์Šต๊ด€์„ ๋“ค์ด์ž. 2. Apache Tomcat ์„ค์น˜ํ•˜๊ธฐ $sudo apt install tomcat9 tomcat์˜ ๊ตฌ์„ฑ ํŒŒ์ผ๋“ค์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. /etc/tomcat9 --> ํ™˜๊ฒฝ ์„ค์ • ๋””๋ ‰ํ† ๋ฆฌ /var/lib/tomcat9/webapps --> ๋ฌธ์„œ ๋””๋ ‰ํ† ๋ฆฌ /var/log/tomcat9 --> ๋กœ๊ทธ ํŒŒ์ผ ๋””๋ ‰ํ† ๋ฆฌ /usr/share/tomcat9/lib --> ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋””๋ ‰ํ† ๋ฆฌ /usr/share/tomcat9/bin --> ์‹คํ–‰ํŒŒ์ผ ๋””๋ ‰ํ† ๋ฆฌ $sudo /usr/share/tomcat9/bin/version.sh --> ๋ฒ„์ „ ํ™•์ธ 3. man.. 2023. 3. 31.
[Linux] ์šฐ๋ถ„ํˆฌ Apache ์„ค์น˜ 1. ์ €์žฅ์†Œ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ ์ƒˆ๋กœ์šด ํ”„๋กœ๊ทธ๋žจ์„ ๊น”๊ธฐ ์ „์— $sudo apt update && apt upgrade ๋กœ ํ•ญ์ƒ ์ €์žฅ์†Œ๋ฅผ ์—…๋ฐ์ดํŠธ ๋ฐ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ํ•˜๋Š” ์Šต๊ด€์„ ๋“ค์ด์ž. 2. Apache Webserver ์„ค์น˜ํ•˜๊ธฐ $sudo apt -y install apache2 ๋กœ Apache๋ฅผ ์„ค์น˜ํ•ด์ค€๋‹ค. Apache Webserver์˜ ๊ตฌ์„ฑํŒŒ์ผ๋“ค์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. /etc/apache2 --> ํ™˜๊ฒฝ ์„ค์ • ํŒŒ์ผ๋“ค์ด ์žˆ๋Š” ๋””๋ ‰ํ† ๋ฆฌ /var/www --> ๋ฌธ์„œ๋“ค์ด ์žˆ๋Š” ๋””๋ ‰ํ† ๋ฆฌ /var/log/apache2 --> ๋กœ๊ทธ ํŒŒ์ผ๋“ค์ด ์žˆ๋Š” ๋””๋ ‰ํ† ๋ฆฌ /usr/sbin/apache2 --> ์‹คํ–‰ ํŒŒ์ผ $apache2 -version --> ๋ฒ„์ „ ํ™•์ธ 3. ๋ฌธ์„œ ์œ„์น˜ ๋ณ€๊ฒฝํ•˜๊ธฐ $sudo vi /etc/apache2/sites.. 2023. 3. 31.
[Linux] ์šฐ๋ถ„ํˆฌ์— ์ž๋ฐ” ์„ค์น˜ํ•˜๊ธฐ 1. ์ €์žฅ์†Œ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ ์ƒˆ๋กœ์šด ํ”„๋กœ๊ทธ๋žจ์„ ๊น”๊ธฐ ์ „์— $sudo apt update && apt upgrade ๋กœ ํ•ญ์ƒ ์ €์žฅ์†Œ๋ฅผ ์—…๋ฐ์ดํŠธ ๋ฐ ์—…๊ทธ๋ ˆ์ด๋“œ๋ฅผ ํ•˜๋Š” ์Šต๊ด€์„ ๋“ค์ด์ž. 2. ์ž๋ฐ” Open JDK 17๋ฒ„์ „ ์„ค์น˜ํ•˜๊ธฐ $sudo apt –y install openjdk-17-jdk ๋กœ ์ž๋ฐ” Open JDK 17 ๋ฒ„์ „์„ ์„ค์น˜๋ฅผ ํ•œ๋‹ค. ์„ค์น˜๊ฐ€ ๋๋‚˜๋ฉด, ์„ค์น˜๊ฐ€ ์ œ๋Œ€๋กœ ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ์„ ํ•ด๋ณด์ž. $java –version ์€ ์ž๋ฐ” ๊ฐ€์ƒ๋จธ์‹  ์„ค์น˜ ๋ฒ„์ „์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ณ , $javac –version ์€ ์ž๋ฐ” ์ปดํŒŒ์ผ๋Ÿฌ ์„ค์น˜ ๋ฒ„์ „์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿผ ์ž๋ฐ”๊ฐ€ ์–ด๋””์— ์„ค์น˜๋œ ๊ฒƒ์ผ๊นŒ? ์ž๋ฐ” ์‹คํ–‰ํŒŒ์ผ์ด ์„ค์น˜๋œ ์œ„์น˜๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด $which java ๋ฅผ ์ณ๋ณด๋ฉด /usr/bin/java ๋ผ๋Š” ๊ฒฝ๋กœ๊ฐ€ ๋‚˜์˜จ๋‹ค. ํ•˜์ง€๋งŒ ์ด ๊ฒฝ.. 2023. 3. 30.
[Linux] ์šฐ๋ถ„ํˆฌ ์„ค์น˜ํ•˜๊ณ  ํ•ด์•ผ ํ•  ๊ธฐ๋ณธ ์„ค์ •๋“ค ์ฒ˜์Œ์— ์šฐ๋ถ„ํˆฌ๋ผ๋Š” ๊ฑธ ๋“ฃ๊ณ  ์ œ์ผ ๋จผ์ € ๊ถ๊ธˆํ–ˆ๋˜ ๊ฑด ๋œป์ด์—ˆ๋‹ค. ์˜์–ด๋„ ์•„๋‹Œ ๊ฒƒ ๊ฐ™๊ณ  ์ด๋ฆ„๋„ ์•„๋‹Œ ๊ฒƒ ๊ฐ™๊ณ .. ์šฐ๋ถ„ํˆฌ(ubuntu)๋Š” '๋‚จ์•„ํ”„๋ฆฌ์นด ๋ฐ˜ํˆฌ์–ด๋กœ '๋„ค๊ฐ€ ์žˆ์œผ๋‹ˆ ๋‚ด๊ฐ€ ์žˆ๋‹ค'๋ผ๋Š” ์œค๋ฆฌ ์‚ฌ์ƒ์„ ์ผ์ปซ๋Š” ๋ง๋กœ ๊ณต๋™์ฒด ์ •์‹ , ์ธ๋ฅ˜์• ๋ฅผ ๋œปํ•˜๋Š” ๋‹จ์–ด๋ผ๊ณ  ํ•œ๋‹ค. ์‹ค์ œ๋กœ ์šฐ๋ถ„ํˆฌ ๋ฆฌ๋ˆ…์Šค๋ฅผ ๋ฐฐํฌํ•˜๋Š” ์šฐ๋ถ„ํˆฌ ์žฌ๋‹จ์€ ๋‚จ์•„ํ”„๋ฆฌ์นด ์‚ฌ๋žŒ์ด ์„ค๋ฆฝํ•˜์˜€๊ณ , ์šฐ๋ถ„ํˆฌ ์ •์‹ ์„ ๋ฐ›์•„ ์šฐ๋ถ„ํˆฌ ๋ฆฌ๋ˆ…์Šค๋ฅผ ๋ฌด๋ฃŒ๋กœ ๋ฐฐํฌํ•˜๊ณ  ์žฅ๊ธฐ์ ์œผ๋กœ ์ง€์›ํ•œ๋‹ค๊ณ  ํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ์‚ฌ์ƒ์„ ์‹ค์ฒœํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ์žˆ์–ด์„œ ์„ธ์ƒ์€ ๋” ๋ฐœ์ „ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ์šฐ๋ถ„ํˆฌ๋ฅผ ์ฒ˜์Œ ๊น”๊ณ  ๋‚˜๋ผ ์„ค์ •, ์–ธ์–ด ์„ค์ •(Korean ์„ ์„ ํƒํ•œ๋‹ค๋ฉด, Korean-Korean(101 ์–ด์ฉŒ๊ณ ..)๊ฐ€ ์•„๋‹Œ ๊ทธ๋ƒฅ Korean์„ ์„ ํƒํ•ด์•ผ ํ•œ๋‹ค), ๊ทธ๋ฆฌ๊ณ  ์‹œ์Šคํ…œ ์„ค์ •(๊ณ„์ • ์•„์ด๋””์™€ ์•”ํ˜ธ)์„ ๋‹ค ํ•ด์ฃผ๊ณ  ๋‚œ ๋’ค ํ•ด.. 2023. 3. 30.
[MariaDB] ํ…Œ์ด๋ธ” ๋งŒ๋“ค๊ธฐ, CRUD๋ž€? ๋งˆ๋ฆฌ์•„DB๋Š” MySQL๊ณผ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๊ฐ™์ด ํ•˜๋ฏ€๋กœ ์‚ฌ์šฉ๋ฐฉ๋ฒ•๊ณผ ๊ตฌ์กฐ๊ฐ€ MySQL๊ณผ ๋™์ผํ•˜๋‹ค. ์ด๋ฆ„๋งŒ ๋‹ค๋ฅด์ง€ ๋ช…๋ น์–ด๋‚˜ ์‚ฌ์šฉ๋ฐฉ๋ฒ• (5.5๊นŒ์ง€) ๋ชจ๋‘ MySQL๊ณผ ๋™์ผํ•˜๋‹ค. ํŽธ์˜๋ฅผ ์œ„ํ•ด ๋งˆ๋ฆฌ์•„DB๋Š” ๋™์ผํ•œ MySQL ๋ฒ„์ „๊ณผ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋“œ๋กญ์ธ ๊ต์ฒด๋ฅผ ์ง€์›ํ•œ๋‹ค. MariaDB 1. ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค๋ฅผ ๋งŒ๋“ฆ 2. ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•  ๊ณ„์ •์„ ๋งŒ๋“ฆ 3. ๊ณ„์ •์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ ์„ค์ • 4. ๊ณ„์ •์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ๋“ค์–ด์™€์„œ (๋กœ๊ทธ์ธํ•ด์„œ) ํ…Œ์ด๋ธ” ์ƒ์„ฑ >> ์ปฌ๋Ÿผ ์ƒ์„ฑ >> row ์ƒ์„ฑ 5. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ(DBA: Database Administrator - ๋ฐ์ดํ„ฐ ์ „๋ฐ˜์„ ๊ด€๋ฆฌํ•จ) ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด์˜ ํ…Œ์ด๋ธ” ๋“ฑ์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” language๋ฅผ SQL(Structure Query Langua.. 2023. 3. 23.
DB(Database)์™€ DBMS (Database Management System)์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ์„ค๋ช… ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์กด์žฌํ•˜๊ธฐ ์ด์ „์—๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ์ด์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜์˜€๋‹ค. ํ•˜์ง€๋งŒ ํŒŒ์ผ์˜ ๊ตฌ์กฐ๊ฐ€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์— ๋ฐ˜์˜๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๋‚˜ ํ”„๋กœ๊ทธ๋žจ ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋ฐ”๋€Œ๋ฉด ๋‹ค๋ฅธ ํ•˜๋‚˜๋„ ์ˆ˜์ •ํ•ด์•ผ ํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€์ด ์žˆ์—ˆ๋‹ค. ๋˜ ํ”„๋กœ๊ทธ๋žจ๋งˆ๋‹ค ๋ณ„๋„์˜ ํŒŒ์ผ๋กœ ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์ค‘๋ณต๋˜๊ฑฐ๋‚˜, ํ•˜๋‚˜์˜ ํŒŒ์ผ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์‘์šฉํ”„๋กœ๊ทธ๋žจ์ด ์ ‘๊ทผํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜๊ฐ€ ์—†์—ˆ๋‹ค. ์ด๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•˜๊ฑฐ๋‚˜ ์œ ์ง€๋ณด์ˆ˜๋ฅผ ํ•  ๋•Œ ๋ฌธ์ œ๊ฐ€ ๋˜์—ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‹ค๊ฐ€ ์ €์žฅํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œ, ์ˆ˜์ •, ๊ด€๋ฆฌํ•˜๊ธฐ ํŽธํ•˜๊ฒŒ ํ•˜๊ณ , ํ—ˆ๊ฐ€๋œ ์‚ฌ์šฉ์ž๋Š” ๋™์‹œ์— ์ ‘์†๋„ ๊ฐ€๋Šฅํ•˜๊ณ , ๋ฌด์—‡๋ณด๋‹ค๋„ ๋ฐ์ดํ„ฐ๊ฐ€ ํ”„๋กœ๊ทธ๋žจ์— ์ข…์†์ ์ด์ง€ ์•Š๊ณ  ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋˜๋”๋ผ๋„ ์‚ฌ๋ผ์ง€์ง€ ์•Š๊ฒŒ ํ•  ์ˆ˜๋Š” ์—†์„๊นŒ ํ•ด์„œ ๋งŒ๋“ค์–ด์ง„ ๊ฒƒ์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ด๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(Database)๋Š” ์—ฌ๋Ÿฌ .. 2023. 3. 23.
[Java] ๋™๊ธฐ ์ฒ˜๋ฆฌ(Synchronization) / ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ(Asynchronization) ๋™๊ธฐํ™”(Synchronization) : SW์ชฝ์—์„œ๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์ˆœ์„œ๋Œ€๋กœ ์ฐจ๋ก€์ฐจ๋ก€ ์‹คํ–‰๋˜๋Š” ๊ฒƒ ๋™๊ธฐํ™”๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ž‘์—…๋“ค์ด ์„œ๋กœ์˜ ์ƒํƒœ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ณ  ์ˆœ์„œ๋Œ€๋กœ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ณ , ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋™๊ธฐํ™”๋Š” ์ž‘์—…์˜ ์™„๋ฃŒ๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋™์•ˆ ๋‹ค๋ฅธ ์ž‘์—…์„ ์ค‘๋‹จ์‹œํ‚ค๊ฑฐ๋‚˜ ๋Œ€๊ธฐ์‹œํ‚ค๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. ๋น„๋™๊ธฐํ™”(Asynchronization) : SW์ชฝ์—์„œ๋Š” ๊ฐ๊ฐ์˜ ํ”„๋กœ๊ทธ๋žจ์ด ์ˆœ์„œ์— ์ƒ๊ด€์—†์ด ์‹คํ–‰๋˜๋Š” ๊ฒƒ ๋น„๋™๊ธฐํ™”๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ž‘์—…๋“ค์ด ๋…๋ฆฝ์ ์œผ๋กœ ์‹คํ–‰๋˜๋ฉฐ, ํ•œ ์ž‘์—…์˜ ์™„๋ฃŒ ์—ฌ๋ถ€๋ฅผ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ๋‹ค์Œ ์ž‘์—…์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ž‘์—…๋“ค์˜ ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ์™€ ๋™์‹œ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค. ๋น„๋™๊ธฐํ™”๋Š” ์ž‘์—…์˜ ์™„๋ฃŒ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์ฝœ๋ฐฑ(Callback)์ด๋‚˜ .. 2023. 3. 22.
[Java] Generic ๊ธฐ๋ฒ• Generic์€ ๋ชจ๋“  ์ข…๋ฅ˜์˜ ํƒ€์ž…์„ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋„๋ก ํด๋ž˜์Šค๋‚˜ ๋ฉ”์†Œ๋“œ๋ฅผ ์ œ๋„ค๋ฆญ ํƒ€์ž… ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ ์„ ์–ธํ•˜๋Š” ๊ธฐ๋ฒ•์ด๋‹ค. ์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด, ์ œ๋„ค๋ฆญ์€ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ๋ณ€์ˆ˜์ฒ˜๋Ÿผ ์„ ์–ธํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ œ๋„ค๋ฆญ์„ ์‚ฌ์šฉํ•จ์œผ๋กœ์„œ ์–ป๋Š” ์žฅ์ ์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค. 1. ํƒ€์ž… ์•ˆ์ •์„ฑ(Type Safety): ์ œ๋„ค๋ฆญ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ฝ”๋“œ์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ํƒ€์ž… ๊ด€๋ จ ์˜ค๋ฅ˜๋ฅผ ๋ฏธ๋ฆฌ ๊ฒ€์ถœํ•  ์ˆ˜ ์žˆ๋‹ค. 2. ์ฝ”๋“œ ์žฌ์‚ฌ์šฉ์„ฑ: ๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ ํด๋ž˜์Šค๋‚˜ ๋ฉ”์„œ๋“œ๋ฅผ ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ ํƒ€์ž…์— ๋Œ€ํ•ด ๋‹ค์‹œ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ  ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. 3. ์„ค๊ณ„์˜ ์ผ๋ฐ˜ํ™”: ์ œ๋„ค๋ฆญ์„ ์‚ฌ์šฉํ•˜๋ฉด ํŠน์ • ํƒ€์ž…์— ์˜์กดํ•˜์ง€ ์•Š๋Š” ์ผ๋ฐ˜์ ์ธ ๋””์ž์ธ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. 4. ์„ฑ๋Šฅ ๊ฐœ์„ : ์ œ๋„ค๋ฆญ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ปดํŒŒ์ผ ์‹œ๊ฐ„์— ํƒ€์ž… ๋ณ€ํ™˜ ์ฝ”๋“œ๊ฐ€ ์ƒ์„ฑ๋˜๋ฏ€๋กœ ์‹คํ–‰ ์‹œ๊ฐ„์— ๋ถˆํ•„์š”ํ•œ ํƒ€์ž… ๊ฒ€์‚ฌ๋‚˜ ํ˜• ๋ณ€.. 2023. 3. 22.
728x90

"); wcs_do();