self-taught

View on GitHub

2021 / 12

부천문화재단

장르 세계를 떠도는 B의 탐사기

부천문화재단에서 2일간 3회 워크숍을 진행했습니다.

Open API를 이용해 데이터를 가져와 Supercollider에서 소리를 만들거나 p5.js로 그림을 그려보는 것이 큰 주제 였습니다.

Supercollider는 신기하고 재밌긴 하지만 참여자들이 체감하는 진입장벽이 높았던 것 같고요, p5.js는 코드에 따라 눈에 보이는 것들이 생기고 없어지기 때문인지 생소하지만 적극적으로 잘 참여해 주시는 분들이 많았던 것 같습니다. 처음에는 파이썬으로 기초적인 크롤링도 해보려고 했으나 여기까지 하기에는 시간이 부족했네요.

그리고 참여자분들이 예술 작업을 하시는 분들이어서인지, openprocessing의 스케치들의 라이센싱에 대해서도 궁금해 하시는 분도 계셨습니다.

최종 결과물로는 worldbank의 기후데이터를 p5.js로 그리는 그림에 반영해 보는 것을 주제로 삼았는데 예상과는 달리 밑바닥부터 코딩을 하는 것이 아니라 openprocessing에서 마음에 드는 코드를 가져와 수정하는 방식으로 작업을 진행하시는 분들이 많았습니다. 저도 처음 접하는 툴로 조금이라도 가시적인 것을 진행하려면, (그래서 워크숍에 흥미를 가질 수 있으려면) 오히려 그 편이 낫겠다는 생각이 들었습니다.

NASA에서 제공하는 화성의 날씨 데이터를 사용하셨던 분도 계셨는데, 그림 역시 뭔가 제가 할 수 없는 종류의 힙한 그래피티 느낌이어서 좋았고 뿌듯했습니다.

역시 p5.js는 코딩을 처음 접하시는 분들에게도 흥미롭게 다가올 수 있다는 점을 새삼 확인하면서 예쁘고 즐거운 예제들을 많이 알아둬야 겠다는 생각을 조금 했습니다.

그리고 특별한 툴을 다루는 방법에 대한 것은 아니지만, 데이터를 가져오는 Open API들에 대해 알아보는 것 역시 흥미로울 수 있다는 점을 느꼈고요 개인적으로는 데이터에 대해 여러 측면에서 생각해 볼 수 있는 좋은 기회였던것 같습니다.

다음에는 좀 더 적절한 분배와 준비를 해보고 싶네요.

참여해 주신 분들 모두 고생많으셨습니다. 언젠가 또 만나요.










2019 / 11

moduschool_game_coding_p5js

모두의학교

균형이 살아있는 슛팅게임 만들기

모두의 학교에서 5주 동안 p5js를 이용하여 간단한 게임 만들기 수업을 진행했습니다.

파이썬으로 진행한 기초 코딩 수업을 듣고 오신 분들과 함께 했어서 처음에는 어느 정도 수준으로 진행해야 할지 갈팡질팡 했네요. 결국 처음에는 6명의 참여자 분들과 시작했으나 마지막에는 두 분만 남게 되는 결과가… (마지막까지 함께 해주신 두 분 정말 감사합니다.)

게임코딩 커리큘럼

OOP의 개념을 활용하여 Player 객체도 만들고, Bullet 객체도 만들고, 주변을 떠다니는 Fog 객체도 만들고요. 세계관 구성하기, 게임성 부여하기, 효과 적용하기 등의 과정을 준비했지만 계획대로 차곡차곡 진행되지는 않았네요. 그렇지만 이전까지 모두의학교에서 진행했던 수업과는 달리, 모든 참여자가 모든 것을 똑같이 진행하는 것이 아니라, 역할을 나누어 진행해 보는 시도를 했다는 점에 의미를 두고 싶습니다.
멀티플레이로 구성하는 부분은 수업 계획에는 있었으나 실제 진행은 어렵겠다고 생각하고 있었는데, 참여자 중 한 분께서 밑바탕이 되는 부분을 구현해 오셔서 힘을 합쳐 만들었습니다. flask로 웹서버를 구성하고 p5.js 클라이언트와 socke.io 를 이용해 통신하게 하는 방식이었는데요, 클라이언트들의 행위를 동기화 시키는 구조가 처음 접해보는 난제였네요. 한 클라이언트의 행위를 서버로 보내어 기준으로 만들고 이른 다른 클라이언트에서 받아들이도록 하는 방식을 사용했는데요 고통스러웠지만 신선했습니다. 역시 제가 가장 많이 배우네요.
게임의 제목은 (제 맘대로) Messengers라고 붙여 보았구요, 서로 총알을 쏘면서 싸우는 것처럼 보이지만 실제로는 ‘이진수의 한 비트(bit)와 같은 신호를 누군가에게 전달하려고 애쓰고 있는 것은 아닐까’ 라는 식의 세계관에 기초하고 있습니다.
화려한 결과물을 만들어 낼 수는 없었지만 참여해 주신 분들에게 좋은 자극이 되는 시간이었다면 더 바랄 것이 없겠습니다. 만약 다음에도 기회가 된다면(이런 종류의 기회는 스스로 만들어야 하는 것 같지만!) 이번 수업에서의 여러 실수들을 밑거름 삼아 좀 더 유익하게 만들어 보겠습니다. 다시 한 번 참여해주신 분들께 감사드립니다.

video, code

** 아, 수업 제목에 왜 ‘균형이 살아있는’ 이라는 표현이 들어가는지 궁금해 하신 분이 계셨습니다. 게임 상에서 총알을 맞으면 해당 플레이어의 몸집이 작아지고 빨라지기 때문에 상대방으로서는 맞추기가 점점 어려워 지고 총알 중 어떤 종류의 것은 맞으면 오히려 몸집이 커지게 됩니다. 한 번 맞기 시작하면 끝까지 계속 불리해 지는 방식이 아닌, 시작이 조금 삐끗했어도 다시 역전할 수 있는 요소들을 중요한 모티브로 삼아야지 생각하며 지은 이름입니다. 흔한말로 적자생존이나 승자독식은 이제 너무 낡은 사고방식이잖아요 :)










2019 / 10

seogyoartcenter_algorithmic_botany_p5js

서교예술실험센터

알고리즘 식물학

적도에서 진행했던 알고리즘 식물학 워크숍을 다시 한 번 진행했습니다. 원래 2시간 x 4회 였던 것을 5회로 1회 늘려 진행할 수 있었습니다.

마지막 수업 후에 참여자 분들과 수업에 대한 이야기를 나눌 수 있는 기회가 있었는데요, 가장 여러 번 들었던 이야기는 코드를 타이핑하는 것과 설명하는 것이 어느 순간에는 조금 빠르다는 의견이었습니다. 혹은 코드를 따라서 작성하는 동안 제가 다른 부분으로 스크롤을 넘겨 버려 따라 잡는데 어려움이 있었다는 의견도 있었구요. 그리고 내용은 이해하지만, 실습을 통해 소화까지 시키기에는 조금 벅찬 분량이라는 의견도 있었습니다.

물론 좋았던 점에 대해서 이야기를 해주신 분들도 많았고 그래서 기쁘고 보람을 느꼈습니다만, 지금 제가 더 신경써야 할 것은 부족했던 점에 대한 의견인것 같다는 생각을 합니다. 수업에 대해 생각할 때면 (기본적으로는 균형을 잘 잡아야 겠지만) 잘 따라오는 분들에게 초점을 맞출 것인가 반대로 익숙치 않은 분들을 좀 더 배려해야 할 것인가 하는 것이 주된 고민이 되곤 합니다. 늘 갈팡질팡 했었지만 오늘 이후에는 좀 더 분명하게 기준을 잡을 수 있을 것 같다는 생각이 드는데요, 그동안 저는 잘 따라오시는 분들이 습득하는 정도보다 반보 앞서 나가야 그분들에게도 배움이 의미가 있을 거라는 생각을 하고 있었던 듯 합니다. 이것이 전적으로 틀렸다고 생각하지는 않지만, 그러다보니 반대로 익숙치 않은 분들과는 너무 거리가 벌어지는 일이 생기곤 했던 것 같아요. 그런데 오늘 생각해보니 워크숍이나 수업이 상대적으로 좀 더 지향해야 할 방향은 오히려 새로운 것을 배우는 분들, 익숙치 않아서 헤매는 분들에게 차분히 시간을 드리고 친절하게 다가가는 쪽인것 같아요. 학교의 학생들처럼 배움에 배가고픈 분들 보다는 평생 교육의 과정으로, 새로운 취미를 위해, 시대적 기술과 새로운 분야에 대한 호기심으로 수업/워크숍을 시작하시는 분들에게는 더더욱 그런 방향이 적절할 것 같구요. 그래서 앞으로의 워크숍/수업에서는 난이도/속도의 기준점을 낯설어 하시는 분들 쪽으로 조금 변경하려고 합니다. 발빠른 분들은 제가 하지 않아도 더 많은 공부와 배움을 스스로 찾으실 수 있으실 것 같고, 또 수업을 진행해 나가며 개별적인 질의응답을 통해 어느 정도 부족한 부분을 보충할 수 있을 테니까요.

조금 천천히 걷는 연습을 해야 겠네요. 쉽지 않은 수업 함께 들어 주셔서 그리고 좋은 의견과 가르침 역시 감사합니다. 늘 제가 더 많이 배웁니다.

** 다른 이야기인데, 거의 완성된 코드를 공유하여 그것의 수치를 바꾸어 무언가를 만드는 과정을 먼저 진행하고, 그 후 코드에 대해 학습하는 순서로 워크숍을 진행해 보면 어떨까요?










2019 / 03

moduschool_drawing_and_sounding_with_p5js

모두의학교

예술코딩-컴퓨터로 만드는 그림과 소리

모두의 학교 봄학기가 시작되었습니다. 저는 지난 겨울 학기에 이어 p5js를 다루는 수업을 진행하게 되었구요. 이번 수업은 몬드리안의 그림 몇 가지를 따라그려보며 천천히 p5js 코딩에 익숙해질 수 있도록 진행될 예정입니다.

우선은 형태를 따라 그려보고 그 다음으로 몬드리안의 다른 그림을 통해 그림에 숨어있는 형태적 규칙을 발견해서 따라해 보려고 합니다. 원래의 그림과 완전히 같은 모양은 나올 수 없겠지만, 그림을 규칙의 결과물로 생각하는 방식에 대해 이야기 할 수 있는 기회가 될 것이라 생각합니다. 나아가서는 그림의 ‘원작’ 개념에 대한 관념들에 대해서도 함께 이야기해 보고 싶구요.규칙을 따라 그린 그림들은 규칙 자체에 임의성이 전제되어 있는 경우, 그릴 때마다 비슷하지만 다른 결과가 나오는데요, 이것들은 모두 원작이 아닌 걸까요, 혹은 그 모든 결과들이 원작인 걸까요, 아니면 원작이라는 것은 이런 상황에서는 필요하지 않은 개념이 되어 버리는 걸까요

수업의 후반부에는 p5js를 이용해 간단한 수준의 소리 합성(Sound Synthesis)을 하는 방법과 녹음된 소리를 제어하는 방법을 익히고, 그것을 참여자분들 각자가 그린 그림들과 어떻게 연동되게 할 수 있는지에 대해 이야기 나누어 보려고 합니다. 그림과 소리를 연결하는 방법, 소리와 그림을 연결하는 방법은 아주 다양하고 그만큼 작업 결과물에 있어서도 다양한 것들이 생겨날 수 있을텐데요, 우선은 소리에 반응하는 멋진 비주얼 작업(Audio-Visual)들을 함께 살펴 본 뒤에 각자 자신만의 ‘멋, 혹은 ‘아름다움’을 찾아 필요한 방식으로 소리와 그림, 그림과 소리의 연결을 실습해 보려고 합니다. 소리는 눈에 보이지 않는데, 더군다나 그것을 (GUI 방식에 비해) 직관성이 부족한 코딩으로 다루는 방식을 너무 낯설게 느끼시지 않을까 걱정이 되기는 합니다만, 그래도 나름의 신선한 경험이 될 수 있을 것이라고 기대하며!

잘 마무리 했습니다!

좌표의 위치로 몬드리안의 그림을 따라 그리기(이것)와 규칙을 파악해서 따라 그리기(이것)를 진행했습니다.

그 중 규칙을 파악해서 그리기는 재미있었지만 조금 어렵게 느끼셨던 것 같네요. 알고 보면 어렵지 않은 것인데 설명하는 과정에서 어려워지는 이유는, 전달해야 하는 분량을 적절히 나누어 시간을 배분하고, 그것들 사이의 순서를 잘 정하는 것이 제대로 되지 않아서 인것 같아요. 그리고 어떤 분들과 함께 하느냐에 대한 고려도 우선 되어야 할 것 같구요. 세 번째의 요소는 제 마음대로 할 수 없는 것이지만, 어쩌면 그것은 ‘참여자 분들에 대한 애정과 이해가 있어야 한다’로 바꾸어 말해 질 수 있는 것이기도 한 것 같네요. 다음 번에는 이 세 가지를 좀 더 잘 해보고 싶습니다.

* 마이크에 반응하는 그림입니다. 반응이 없는 경우 파이어폭스 브라우저를 이용하시거나 여기를 이용해 주세요. If this work not responds audio from mic, please try with Firefox browser or check here.

* 리로딩 될때마다 비슷하지만 다른 그림이 그려져요. You can see a similar but different work when you reload this page.










2019 / 02

p5js algorithmic botany

적도 예술코딩 워크숍(JDAC) 05

p5.js, 알고리즘 식물학

꾸준히 워크숍을 해야겠다고 다시 한 번 다짐하는 2019년 1월 입니다. 그 첫 번째로는 알고리즘을 이용해 유사 식물(?) 그림을 그려보는 워크숍을 준비하고 있습니다.

장미곡선이라고 불리는 극좌표계에서의 그래프, Algorithmic beauty of plants에 소개되는 해바라기 씨앗의 배열(100 p), 너무 유명해서 흔하기도 한 프랙탈 트리, 그리고 L-System 등에 대해 함께 공부하며 터틀 그래픽 방식으로 프랙탈을 그려 보아요. 그리고 여유가 된다면 OOP를 적용해 열매나 씨앗의 모양을 제멋대로 바꾸어 보도록 하죠.

앞서의 책 Algorithmic beauty of plants에 여러가지 규칙과 그 결과들이 소개되고 있는데 실제로 해보면 좀 놀랍기도 하고 재미있습니다. 그리고 왠지 영감을 받을 것 같은 느낌도 들고요.

워크숍에 대한 자세한 설명

신청 양식

잘 마무리 했습니다!

스스로 재미있는 주제라고 생각했던 것에 비해선 참여해 주신 분들이 적었지만, L-System 자체가 흥미로운 주제였던 덕분에 나름 재미있고 집중력 있는 시간이 되었던 것 같습니다. 2주간 주말 오후에 빠지지 않고 재미있었다고 얘기해주신, 그리고 여러가지로 연상되는 가능성 들에 대해서 함께 나누어 주신 참여자 분들께 진심으로 감사드립니다. 두 분 모두 p5.js를 이용해 하고자 하시는 작업들 잘 되면 좋겠습니다. 덤으로 다음 워크숍으로 생각하고 있는 것들에 대해서도 풀어 놓았는데, 이건 좀 더 뜸들였다가 공개하는 걸로. (아마 이 블로그를 보시는 분들은 거의 없을텐데 이런식으로, 청자가 있다고 가정하고 이야기 하는게 스스로 한심하고 웃기기도 하지만 또 나름 즐기고 있어요. 호) 그리고 저는 이제 마음속의 최소 수강인원 마지노선을 2명으로 내렸구요 ㅎㅎ

워크숍의 주 소비층을 작업을 하고 계신 예술가 분들로 하는 것이 좋을지, 아니면 그런 것과는 상관 없이 프로그래밍을 통해 일종의 예술작업을 하는 것에 관심이 있으신 분들 모두로 하는 것이 좋을지에 대한 고민도 하게 되었는데요 이것에 대해서 아직까지는 딱히 정한 바가 없습니다. 다만 이런 고민을 포함해서 제가 왜 지속적으로 워크숍을 하려고 하는지, 혹은 그래야겠다고 생각했었는지에 대해서 자꾸 환기하게 되네요. 최대한 부담 느끼지 않고 계속 고민해 볼게요.

그럼 앞으로도 계속될 JDAC 워크숍 시리즈 기대해 주세요! (적어도 누군가에게는) 흥미로운 주제로 다시 찾아뵙겠습니다.

(수업에 너무 집중하느라(?) 사진을 못찍었네요. 수업중에 stochastic(확률기반의) L-System을 이용해 그린 나무로 대체 합니다.)

* 리로딩 될때마다 다른 나무가 그려져요. You can see a different tree when you reload this page.










2018 / 12

supercollider musical typing

플랫폼에이 워크숍

슈퍼콜라이더, 아무 소리나 내면서 배우는 음악타이핑

12월 21 ~ 22일 이틀 간, 오후 2시부터 4시까지 각 2시간 동안 플랫폼에이에서 슈퍼콜라이더로 마구(?) 소리를 내보는 워크숍을 진행합니다.

슈퍼콜라이더(이하 ‘슈콜’) 워크숍을 몇 번 진행해보니 여유있는 커리큘럼으로 천천히 진행하지 않으면 초반의 진입장벽을 넘기 쉽지 않다는 느낌이 들었습니다. 그리고 그래서 뭔가를 꽉꽉 채워서 진행하려다 보니 제가 처음 슈콜을 배울 때 느꼈던, 새로운 방식으로 소리를 만들어 본다는 신선한 감각이나 재미(혹은 숨겨진 가능성)도 잘 전달할 수 없었던 것 같아 안타까웠구요. 그래서 마침 슈콜 워크숍을 제안 받은 김에 부담없이 아무 소리나 내보는 것으로 시작해서(그리고 저는 아무 소리나 내는 것을 돕는) 더 하고 싶은 것이나 알고 싶은 것이 생기면 그때그때 그 방향으로 좀 더 나아가 보는 형식으로 해볼까 합니다. SuperCollider는 CERN의 입자가속기가 아니라(!) 프로그래밍을 통해 소리를 만들고(Synthesize) 다양한 방식으로 다루는 것이 가능한 오픈소스 프로그래밍 언어입니다.

그럼 신청은 여기를 참고해 주세요.

잘 마무리 했습니다.

마무리 포스트

감상

관심과 질문이 있어서 좋았습니다. 처음부터 이론적인 것을 모두 설명하고 실습하는 방식이 아닌, 코드를 먼저 보고 간단히 설명을 더한 후, 같은 형식을 함께 다시 작성해 보는 방식을 시도했는데 캐쥬얼한 느낌, 부담 없는 느낌이라서 좋았던 것 같습니다. 이런 경우에는 함께 작성해 보는 중간 중간 참여자분들이 어느 정도 따라오고 있는지 확인 하는 시간이 필요할 듯 하구요.

2시간 씩 2회를 진행 했는데 만약 1 ~ 2회를 더 진행 할 수 있었다면 어떤 내용이 적절할까 하는 질문도 스스로 하게 되었는데, 앞선 2회차 동안 기본적인 UGen이나 SynthDef를 만드는 형식에 대해 공부한 것이라면, 이후에는 그 형식들을 채울 내용에 대한 것을 좀 더 진행하면 좋을 것 같네요. 예를 들면 피아노 소리(와 유사한) SynthDef 만들기, kick drum 소리 SynthDef 만들기 등등. 그리고 그 과정에서 AM, FM, Granular Synthesis 등의 전통적인 소리 합성법에 대한 내용을 끌어오거나 연결하여 학습하구요.

그리고 슈콜의 Pattern, Pbind에 대해 설명할 때는 GUI로 이루어진 기존의 시퀀싱 프로그램의 미디노트나 타임라인을 보면서 설명을 진행하는 것이 더 효과적일 것 같다는 생각도 했구요.

낯선 것들에 관심 가져주시고 함께 공부해 주신 분들과 그런 자리를 만들어 주신 분들께 감사드립니다.










2018 / 12

p5js drawing on the web for coding basic

적도 예술코딩 워크숍(JDAC) 04

p5.js, 웹에 그림을 그리며 배우는 코딩의 기초

12월 17 ~ 19일 3일 동안, 저녁 8시 ~ 10시 각 2시간 동안 적도에서 p5.js 워크숍을 진행합니다.

실은 지난 10월부터 준비하던 것인데 그간 이런저런 일들로 조금씩 미뤄지다 드디어 진행하게 되었네요. 앞서 몇 번의 예술관련 코딩 워크숍을 진행하면서 코딩에 대한 기초를 실습하며 익숙해지는 과정이 있으면 좋겠다는 생각으로 준비하게 되었습니다. p5.js는 프로그래밍을 통해 시각적 결과물을 다루는 프로세싱(Processing)이라는 툴의 자바스크립트 버전이라고 생각하시면 되는데요, 자바스크립트라는 언어의 웹 친화적 특성으로 인해 웹과 관련된 여러 방향으로의 쓰임과 확장의 가능성이 있다고 생각됩니다. 그럼 자세한 소개및 신청은 아래 링크를 참고해 주세요.

워크숍에 대한 소개 그리고 신청링크!

잘 마무리 했습니다!

각자의 이유로 충분한 동기를 가지신 분들이 참여해 주셔서 마음 편하고 또 즐거운 시간이었습니다.

총 3회로 진행된 워크숍이었는데요 두 번째 시간을 끝낸 후의 피드백을 바탕으로, 원래 OOP(Object Oriented Programming)에 대한 내용을 하기로 했던 세 번째 시간을 프로그래밍의 체계(?)를 학습하는데에 사용했습니다. 이번 워크숍의 중요한 목표 였던 코딩의 기초 를 익히는 데에는 OOP를 맛보는 것보다 프로그래밍 언어의 자료형(Type)에 대한 개념, 함수의 오버로딩(Overloading)등에 대한 지식을 바탕으로 p5.js의 도움말 문서(Reference)를 읽고 이해할 수 있는 능력을 갖추는 것이 더 중요하다고 생각 했기 때문입니다. 첫 시간에도 이러한 내용이 포함되어 있긴 했지만, 제가 생각 했던 것보다 조금 더 구체적이고 반복적인 실습을 포함한 학습 과정이 필요했던 것 같아요.

또 p5.js가 가진 DOM을 다룰 수 있는 강점, 웹 서버와 연동하면 가질 수 있는 확장성에 대해서도 살펴 보았구요.







추운 날씨에도 늦은 저녁시간 먼 곳까지 찾아와 주시고 열심히 참여해 주신 분들께 진심으로 감사드립니다. 아직 방한 준비가 덜 된 공간이라 두 번째 시간에는 난로를 켤 수 없는 비상 사태까지 있었음에도, 동고동락 해주셨네요.

그럼 그리 멀지 않은 때에, OOP + 웹서버와의 연동을 통한 확장 을 주제로 하는 다음 워크숍으로 찾아 뵙겠습니다.










2018 / 11

p5js algorithmic art drawing by weather data

하자센터 코딩 워크숍

알고리즘 아트, 날씨로 그리는 그림

날씨로 그림을 그리는, 날씨 데이터를 가져와서 그 상태를 그림으로 표현하는 워크숍을 진행했습니다.
p5.js에서는 loadJSON()이라는 메소드를 사용해서 날씨 혹은 지진 등 web API를 제공하는 데이터들을 JSON 타입으로 가져올 수 있습니다. 그 중 필요한 데이터를 추출(Parsing)하여 원하는 그림의 요소로 사용하는 것이죠. 이미 빅데이터 라는 개념은 유행이 지났다고 해도 될만큼 익숙하고 흔한 것이 되어버린것 같지만, 실제로 데이터를 가져와 그 요소를 그림으로 옮겨 보는 경험은 어떤 개념을 이해하는 것과는 또다른 의미가 있을 거라는 생각이 들었습니다.
2시간씩 3번으로 계획되어 있던 일정을 첫 시간 후에 3시간씩 2번을 더 하는 것으로 변경했는데요, p5.js도 코딩도 처음 접하는 분들이 많았던 터라 원래 계획했던 시간으로는 충분치 않다고 느꼈기 때문이었습니다. 그렇지만 참가자분들 중에는 이미 코딩이나 Processing을 알고 계셨던 분도 있어서 마음속에서는 어느 쪽에 맞는 속도로 진행을 해야 하나 하는 고민이 생겼었구요.
OOP에 대한 부분 역시 제한된 시간 안에 진행을 위해 필요한 부분만 짚고 넘어가려다보니 OOP적인 사고가 줄 수 있는 발상의 전환 같은, 제가 중요하게 생각하는 부분에 대해 차근히 이야기 하지 못했던 것 같아 아쉬웠습니다.
그러나 날씨 데이터라는 매력적인 소재를 다루어 볼 수 있었던 점은 제게도 신선하고 좋은 경험이었습니다.

참여해 주신 분들과, 자리를 만들어 주신 하자센터의 관계자 분들께 진심으로 감사드립니다.

* 그림을 클릭하면 다른 도시의 날씨로 그린 그림을 볼 수 있습니다. Click image to change the city.



















Contact

giy.hands@gmail.com
Instagram: @giy.eyear