์ด๋ถ„ ํƒ์ƒ‰๊ณผ Python์˜ bisect_left
IT/์ปดํ“จํŒ…์  ์‚ฌ๊ณ 2025. 3. 27. 20:31์ด๋ถ„ ํƒ์ƒ‰๊ณผ Python์˜ bisect_left

์ด๋ถ„ ํƒ์ƒ‰(binary search)๋ž€, ์–ด๋–ค ๋ฐฐ์—ด๊ณผ ์ฐพ๊ณ ์ž ํ•˜๋Š” ์ˆ˜๊ฐ€ ์žˆ์„ ๋•Œ, ์ฐพ๊ณ ์ž ํ•˜๋Š” ๋ฒ”์œ„๋ฅผ ์ ˆ๋ฐ˜์”ฉ ์ขํ˜€๊ฐ€๋ฉฐ ๋น ๋ฅด๊ฒŒ ํ•ด๋‹น ๊ฐ’์˜ ์œ„์น˜๋ฅผ ์ฐพ์•„๋‚ด๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค. ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ์—์„œ ์ž์ฃผ ๋“ฑ์žฅํ•˜๋Š” ๋Œ€ํ‘œ์ ์ธ ํƒ์ƒ‰ ๊ธฐ๋ฒ•์œผ๋กœ, ๋‹จ์ˆœํ•œ ์ •๋ ฌ ๋ฐฐ์—ด ํƒ์ƒ‰๋ถ€ํ„ฐ, ๊ฒฝ๊ณ„๊ฐ’ ์ฐพ๊ธฐ, ์‘์šฉ ๋ฌธ์ œ๊นŒ์ง€ ๋งค์šฐ ๋‹ค์–‘ํ•œ ํ˜•ํƒœ๋กœ ์ถœ์ œ๋ฉ๋‹ˆ๋‹ค. ๋งค ๋ฐ˜๋ณต๋งˆ๋‹ค ๊ฒ€์ƒ‰ ๋ฒ”์œ„๋ฅผ ์ ˆ๋ฐ˜์œผ๋กœ ์ค„์ด๊ธฐ์— O(log n)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ๋‹ค๋งŒ, ๊ฐ’์˜ ๋Œ€์†Œ๋ฅผ ๋น„๊ตํ•˜๋ฉฐ ๋ฒ”์œ„๋ฅผ ์žก๊ธฐ์— ๋ฐฐ์—ด์ด ๋ฐ˜๋“œ์‹œ ์ •๋ ฌ๋จ์„ ์ „์ œ๋กœ ํ•ฉ๋‹ˆ๋‹ค.๊ตฌํ˜„: ๋ฐ˜๋ณต vs. ์žฌ๊ท€์ด๋ถ„ ํƒ์ƒ‰์€ ๋จผ์ € ์‹œ์ž‘ ์ธ๋ฑ์Šค์™€ ๋ ์ธ๋ฑ์Šค๋ฅผ ์žก๊ณ , ๊ทธ ๋‘˜์˜ ์ค‘๊ฐ„ (๋˜๋Š” ์•ˆ ๋‚˜๋ˆ ๋–จ์–ด์งˆ ๊ฒฝ์šฐ ํ•œ ์นธ ์™ผ์ชฝ) ์ธ๋ฑ์Šค๋ฅผ ์žก๋Š” ๊ฒƒ์œผ๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ •ํ™•ํ•œ ๊ฐ’์˜ ์ธ๋ฑ์Šค๋ฅผ ์ฐพ์„ ๋•Œ๊นŒ์ง€ ์‹œ์ž‘, ์ค‘๊ฐ„, ๋ ์ธ๋ฑ์Šค๋ฅผ..

Python ์ปดํ”„๋ฆฌํ—จ์…˜ ๋ฐ ํ‘œํ˜„์‹ ์ •๋ฆฌ
IT/์ปดํ“จํŒ…์  ์‚ฌ๊ณ 2025. 3. 27. 17:14Python ์ปดํ”„๋ฆฌํ—จ์…˜ ๋ฐ ํ‘œํ˜„์‹ ์ •๋ฆฌ

Python์œผ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ณต๋ถ€ํ•  ๋•Œ ๋†“์น  ์ˆ˜ ์—†๋Š” ๊ฐœ๋…๋“ค ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋ฐ”๋กœ ์ปดํ”„๋ฆฌํ—จ์…˜(comprehension)๊ณผ ํ‘œํ˜„์‹(expression)์ž…๋‹ˆ๋‹ค. Python์—์„œ๋Š” ๋ฐ˜๋ณต๋ฌธ๊ณผ ์กฐ๊ฑด๋ฌธ์„ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” list comprehension, generator expression, conditional expression(์‚ผํ•ญ ์—ฐ์‚ฐ์ž) ๋“ฑ์„ ์ œ๊ณตํ•˜์—ฌ, ์ ์ ˆํ•˜๊ฒŒ ์‚ฌ์šฉ ์‹œ ์„ฑ๋Šฅ(์‹คํ–‰์†๋„)๊ณผ ๊ฐ„๊ฒฐํ•จ์„ ๋‘˜ ๋‹ค ์žก์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” ๊ฐ์ข… ์ปดํ”„๋ฆฌํ—จ์…˜ ๋ฐ ํ‘œํ˜„์‹์˜ ๊ฐœ๋…๊ณผ ์‚ฌ์šฉ๋ฒ•์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.์•„์šธ๋Ÿฌ, ์ด๋“ค์— ๋žŒ๋‹ค(lambda)์‹๊นŒ์ง€ ์ ์šฉํ•œ ์˜ˆ์ œ๋„ ํ•œ๋ฒˆ ์‚ดํŽด๋ณด์‹œ๊ฒ ์Šต๋‹ˆ๋‹ค.๋ชฉ์ฐจ:1. List Comprehensions2. Set Comprehensions3. Dictionary Comprehensions4..

์œˆ๋„์šฐ 11 ๋…ธํŠธ๋ถ ์ฝ”ํŒŒ์ผ๋Ÿฟ ํ‚ค ๋น„ํ™œ์„ฑํ™”/๋Œ€์ฒดํ•˜๊ธฐ
IT/๊ธฐํƒ€2025. 2. 19. 16:06์œˆ๋„์šฐ 11 ๋…ธํŠธ๋ถ ์ฝ”ํŒŒ์ผ๋Ÿฟ ํ‚ค ๋น„ํ™œ์„ฑํ™”/๋Œ€์ฒดํ•˜๊ธฐ

์ด๋ฅธ๋ฐ” 'AI ์‹œ๋Œ€'๊ฐ€ ๋˜๋ฉด์„œ ์œˆ๋„์šฐ 11 ๋…ธํŠธ๋ถ๋“ค์— ์ƒˆ๋กœ์šด ํ‚ค๊ฐ€ ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์ฝ”ํŒŒ์ผ๋Ÿฟ ํ‚ค์ž…๋‹ˆ๋‹ค.์•„์‰ฌ์šด ์ ์ด ์žˆ๋‹ค๋ฉด, ํ‚ค๋ณด๋“œ์— ์•„์˜ˆ ์ƒˆ๋กœ์šด ํ‚ค๊ฐ€ ์ƒ๊ธด ๊ฒƒ์ด๋ผ๊ธฐ๋ณด๋‹ค๋Š”, ๊ธฐ์กด์˜ ์šฐCtrl / ํ•œ์ž / ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ‚ค๋ฅผ ๋Œ€์ฒดํ•˜๋Š” ํ˜•ํƒœ๋กœ ๋“ค์–ด์™”๋‹ค๋Š” ๊ฒƒ์ธ๋ฐ์š”, ์ด๋กœ ์ธํ•ด ๊ธฐ์กด์˜ ์†๋ฒ„๋ฆ‡๋Œ€๋กœ ํ‚ค๋ฅผ ๋ˆ„๋ฅด๋‹ค๊ฐ€ ๋ณธ์˜ ์•„๋‹ˆ๊ฒŒ ์ฝ”ํŒŒ์ผ๋Ÿฟ์ด ์ผœ์ง€๋Š” ๋ฒˆ๊ฑฐ๋กœ์šด ์ƒํ™ฉ์ด ์ƒ๊ธฐ๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ, ํ•œ์ž ํ‚ค๋ฅผ ๊ธฐ์กด์ฒ˜๋Ÿผ ๋ˆ„๋ฅด๋‹ค๊ฐ€ ์ฝ”ํŒŒ์ผ๋Ÿฟ์ด ์ผœ์ง€๋Š” ์ผ์ด ์žฆ์•„์กŒ์Šต๋‹ˆ๋‹ค..์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” Microsoft PowerToys๋ฅผ ์ด์šฉํ•˜์—ฌ ์ € ์ฝ”ํŒŒ์ผ๋Ÿฟ ํ‚ค๋ฅผ ๋„๊ฑฐ๋‚˜, ๋„๋กœ ์šฐCtrl / ํ•œ์ž / ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ‚ค๋กœ ์ž‘๋™ํ•˜๊ฒŒ๋” ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ธฐ์ข…/ํŠน์„ฑ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ํ‚ค๋กœ ๋Œ€์ฒด๊ฐ€ ์•ˆ๋˜๊ณ  ๋„๋Š” ๊ฒƒ๋งŒ ๊ฐ€๋Šฅํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. Microsof..

VM์˜ ๋กœ๊ทธ์ธ ์…ธ์ด `nologin`์ธ ๊ณ„์ •์— ๋‚ด public key๋ฅผ ์‹ฌ๊ธฐ
IT/Infra. & Arch. & Cloud2024. 8. 12. 13:41VM์˜ ๋กœ๊ทธ์ธ ์…ธ์ด `nologin`์ธ ๊ณ„์ •์— ๋‚ด public key๋ฅผ ์‹ฌ๊ธฐ

์ด ์ž‘์—…์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ssh-copy-id์™€ ์œ ์‚ฌํ•œ ์—ญํ• ์„ ํ•˜๋‚˜, ๋Œ€์ƒ VM์˜ ๊ณ„์ •์˜ ๋กœ๊ทธ์ธ ์…ธ์ด nologin์ด๋ผ์„œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†์„ ๋•Œ ์‹œ๋„ํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค.Public key๋ฅผ ์‹ฌ์„ ๋Œ€์ƒ์ด `zabbix@10.123.0.8`๋ผ ์น˜๊ณ , ํ•ด๋‹น ๊ณ„์ •์˜ ํ™ˆ ๊ฒฝ๋กœ๊ฐ€ ์ƒ์„ฑ๋˜์–ด์žˆ์ง€ ์•Š์„ ๊ฒฝ์šฐ, ์•„๋ž˜์™€ ๊ฐ™์ด ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.๋‹ค๋งŒ ์ด ์ž‘์—…์„ ์œ„ํ•ด ๋Œ€์ƒ VM์˜ root ๊ถŒํ•œ์ด ํ•„์š”ํ•˜๋‹ค.ssh root@10.123.0.8 \ "mkdir -p /var/lib/zabbix;chown zabbix:zabbix /var/lib/zabbix; sudo -u zabbix mkdir -p /var/lib/zabbix/.ssh"cat ~/.ssh/id_rsa.pub | \ ssh root@10.123.0.8 \ "sudo ..

PowerShell์—์„œ ์ผ์‹œ์ ์œผ๋กœ ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์ˆ˜์ •ํ•˜๊ธฐ
IT/Infra. & Arch. & Cloud2024. 4. 2. 15:55PowerShell์—์„œ ์ผ์‹œ์ ์œผ๋กœ ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์ˆ˜์ •ํ•˜๊ธฐ

์˜๊ตฌ์ ์œผ๋กœ ์ถ”๊ฐ€/์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ ๋ง๊ณ , ์˜ค์ง ํ˜„์žฌ Powershell ์„ธ์…˜์—์„œ๋งŒ ์ ์šฉํ•˜๋ ค๋ฉด, ์•„๋ž˜์™€ ๊ฐ™์ด ํ•  ์ˆ˜ ์žˆ๋‹ค.$env:Path # shows the actual content$env:Path = 'C:\foo;' + $env:Path # attach to the beginning$env:Path += ';C:\foo' # attach to the end ์˜ˆ๋ฅผ ๋“ค์–ด, ํ•ด๋‹น ์„ธ์…˜์—์„œ๋งŒ ํŠน์ • ๊ฒฝ๋กœ์˜ java๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ์•„๋ž˜์ฒ˜๋Ÿผ ์ž…๋ ฅํ•˜์—ฌ Path๋ผ๋Š” ํ™˜๊ฒฝ๋ณ€์ˆ˜์— ์›ํ•˜๋Š” ๊ฐ’์„ ์ผ์‹œ์ ์œผ๋กœ ๋ง๋ถ™์ธ๋‹ค.$env:Path += ';C:\pts\openjdk-17_windows-x64_bin\jdk-17\bin\'์ถ”๊ฐ€ํ•œ ๋’ค jav..

Ubuntu ๋จธ์‹  ๋ณต์ œ ์‹œ IP ์ฃผ์†Œ ๊ฒน์นจ ๋ฌธ์ œ ํ•ด๊ฒฐ
IT/Infra. & Arch. & Cloud2024. 3. 29. 19:53Ubuntu ๋จธ์‹  ๋ณต์ œ ์‹œ IP ์ฃผ์†Œ ๊ฒน์นจ ๋ฌธ์ œ ํ•ด๊ฒฐ

์˜ค๋žœ๋งŒ์— VirtualBox๋ฅผ ์“ธ ์ผ์ด ์žˆ์—ˆ๋Š”๋ฐ, ์•„๋ž˜์™€ ๊ฐ™์ด Ubuntu VM์„ ๋ณต์ œํ•˜๋‹ˆ IP ์ฃผ์†Œ๊ฐ€ ์ค‘๋ณต๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์˜€๋‹ค. ๋ฌธ์ œ๋Š” MAC ์ฃผ์†Œ๋ฅผ ๋ฐ”๊พธ๊ณ  ์žฌ๋ถ€ํŒ…ํ•ด๋„ IP ์ฃผ์†Œ๊ฐ€ ๊ทธ๋Œ€๋กœ ์ค‘๋ณต๋œ๋‹ค๋Š” ์ ์ด์—ˆ๋‹ค. ๋ณด๋‹ค์‹œํ”ผ VirtualBox VM๋“ค๊ฐ„ ํ†ต์‹ ์„ ์œ„ํ•œ ๋ณ„๋„์˜ NAT ๋„คํŠธ์›Œํฌ๋ฅผ ์ƒ์„ฑํ•ด๋†“์€ ์ƒํƒœ์ด๊ณ , ์—ฌ๊ธฐ์„œ MAC ์ฃผ์†Œ๋„ ์„œ๋กœ ๋‹ค๋ฅด๋‹ค. ๊ทธ๋Ÿผ์—๋„ ๋™์ผํ•œ `10.0.119.5`๋ผ๋Š” IP ์ฃผ์†Œ๋ฅผ ๋ณด์—ฌ์ฃผ๊ณ  ์žˆ๋‹ค. ์ด ์ƒํƒœ์—์„œ MAC ์ฃผ์†Œ๋ฅผ ๋ฐ”๊พธ๊ณ  ์žฌ๋ถ€ํŒ…ํ•ด๋„ IP ์ฃผ์†Œ๊ฐ€ ๋ฐ”๋€Œ์ง€ ์•Š๋Š”๋‹ค. ๊ทธ๋Ÿด ๋•Œ๋Š” `nano /etc/netplan/00-installer-config.yaml`์„ ์•„๋ž˜์™€ ๊ฐ™์ด ์ˆ˜์ •ํ•œ๋‹ค. ์ด๋•Œ IP ์ฃผ์†Œ๋ฅผ ์ƒˆ๋กœ ๋ฐ›๊ณ ์ž ํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋Š” `enp0s3`์ด๋ผ ๊ฐ€์ •ํ•œ๋‹ค. ํŠนํžˆ ์ € `dhcp-iden..

Ansible ์„ค์น˜ ๋ฐ Ansible๋กœ AWS EC2 ์ƒ์„ฑํ•˜๊ธฐ
IT/Infra. & Arch. & Cloud2024. 3. 11. 15:19Ansible ์„ค์น˜ ๋ฐ Ansible๋กœ AWS EC2 ์ƒ์„ฑํ•˜๊ธฐ

๊ธฐ์กด์˜ ๋ฌผ๋ฆฌ์  ์„œ๋ฒ„, ์Šคํ† ๋ฆฌ์ง€, ๋„คํŠธ์›Œํฌ ๋“ฑ์„ ์ „๋ถ€ ํด๋Ÿฌ์Šคํ„ฐ๋กœ ๋ฌถ๊ณ  ์ถ”์ƒํ™”ํ•˜์—ฌ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ ์š”๊ตฌ์‚ฌํ•ญ์— ๋งž๊ฒŒ ๊ฐ€์ƒํ™”๋œ ์ธํ”„๋ผ๋ฅผ ์ฝ”๋“œ๋กœ ์ƒ์„ฑ, ๊ด€๋ฆฌ, ํ๊ธฐํ•˜๋Š” ์ผ๋ จ์˜ ๊ณผ์ •์„ '์ฝ”๋“œํ˜• ์ธํ”„๋ผ์ŠคํŠธ๋Ÿญ์ฒ˜ (IaC; Infrastructrure as Code)'๋ผ๊ณ  ํ•œ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” ํ•ด๋‹น ๊ณผ์ •์˜ ์ผ๋ถ€์ธ ์ž๋™ํ™”๋ฅผ Ansible๋ฅผ, AWS EC2 ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฐ„๋‹จํ•œ ์˜ˆ์ œ๋ฅผ ํ†ตํ•˜์—ฌ ๋‹ค๋ฃจ์–ด๋ณด๊ณ ์ž ํ•œ๋‹ค. ์ด ํฌ์ŠคํŠธ์—์„œ๋Š” ์œ ์ €์˜ Windows PC๊ฐ€ ๊ด€๋ฆฌ ๋…ธ๋“œ๊ฐ€ ๋˜๋ฉฐ, ์œ ์ €์˜ PC ==> WSL (Windows Subsystem for Linux) Ubuntu 22.04 LTS + Ansible๋กœ ์ง์ ‘ AWS์— ์ ‘๊ทผํ•˜์—ฌ EC2 ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•  ๊ฒƒ์ด๋‹ค. ํ™˜๊ฒฝ ๊ตฌ์„ฑ Ansible์„ ์œ„ํ•œ ๊ฒฝ๋กœ ์ƒ์„ฑ ์ด์ œ EC..

Spring Boot MSA ๋ชจ๋‹ˆํ„ฐ๋ง: Spring Boot MSA + Prometheus + Grafana
IT/DevOps2024. 3. 8. 15:47Spring Boot MSA ๋ชจ๋‹ˆํ„ฐ๋ง: Spring Boot MSA + Prometheus + Grafana

Spring Boot๋กœ ๋ฐฑ์—”๋“œ๋ฅผ ์„œ๋น„์Šคํ•˜๋‹ค ๋ณด๋ฉด ๊ฐ ์„œ๋น„์Šค๋“ค์˜ ์ƒํƒœ๋ฅผ ํ•œ ๋ˆˆ์— ๋ณผ ์ˆ˜ ์žˆ๋Š” ์‹œ๊ฐํ™”๋œ ๋ชจ๋‹ˆํ„ฐ๋ง ์‹œ์Šคํ…œ์ด ํ•„์š”ํ•ด์ง„๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” Spring Boot MSA ํ”„๋กœ์ ํŠธ์— Prometheus๋ฅผ ์—ฐ๋™ ํ›„, Grafana๋กœ ์‹œ๊ฐํ™”๋œ ๋ชจ๋‹ˆํ„ฐ๋ง ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ ์ž ํ•œ๋‹ค. Prometheus๋ž€? Prometheus๋Š” ์›๋ž˜ Soundcloud์—์„œ ๋งŒ๋“  ์˜คํ”ˆ์†Œ์Šค ์‹œ์Šคํ…œ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ์•Œ๋ฆผ ํˆดํ‚ท์ž…๋‹ˆ๋‹ค. 2012๋…„ ์‹œ์ž‘ ์ด๋ž˜, ๋งŽ์€ ๊ธฐ์—…๊ณผ ์กฐ์ง์ด Prometheus๋ฅผ ์ฑ„ํƒํ–ˆ์œผ๋ฉฐ, ์ด ํ”„๋กœ์ ํŠธ๋Š” ๋งค์šฐ ํ™œ๋ฐœํ•œ ๊ฐœ๋ฐœ์ž ๋ฐ ์‚ฌ์šฉ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ๋ณด์œ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ๋Š” ๋…๋ฆฝํ˜• ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ์ ํŠธ๋กœ์„œ ์–ด๋–ค ํšŒ์‚ฌ๋กœ๋ถ€ํ„ฐ๋„ ๋…๋ฆฝ์ ์œผ๋กœ ์œ ์ง€ ๊ด€๋ฆฌ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ๊ฐ•์กฐํ•˜๊ณ  ํ”„๋กœ์ ํŠธ์˜ ๊ฑฐ๋ฒ„๋„Œ..

image