2018년 10월 9일 화요일

[Mysql] 캐릭터셋 utf8 설정

데이터를 추출할 일이 있는데 한글이 ??? 으로 표시가 되었다.
노트패드 문제인 줄 알았지만 mysql 자체 캐릭터셋을 변경하고 문제를 해결했다.

테스트 환경 : OS : Winodws 2008 R2 
                  SQL : Mysql 5.5

별다른 것 없이 mysql 설정 파일을 변경 해주면된다.

1. mysql 설정 파일을 열어준다. 
  C:\program files\mysql\mysql server 5.5\ 내에 my.ini my.cnf 파일이 설정파일이다.

2. 해당 파일을 열어서 
  [client] 하단에 
  default-character-set=utf8
  이라고 해주면 된다.

3. 서비스 재시작

4. mysql에 접속해서
   show variables like 'char%';
   입력하면 설정이  utf8로 변경 되었음을 확인 할 수 있다.

[Mysql] Windows 에서 mysql 복원하기

Windows에서 Mysql *.dmp 파일을 이용한 복원하기

기본적으로 주기적으로 일어나는 작업은 배치 작업을 활용 한다.

하지만 가끔 데이터를 확인 하고 싶을 때 mysql cmd 클라이언트에서 복원을 하고 싶을 때 활용 할 수 있다.


OS : windows 2008 R2
mysql : 5.5 ver

1. Mysql 5.5 Command Line Client 를 관리자 권한으로 실행한다.
가끔 이유없이 (이유가 없지는 않겠지만 이유가 없이 안된다고 느껴진다...) 작업이 실행이 안된다.
애초에 관리자 권한으로 실행할 수 있다면 그 권한을 가지고 작업을 하자

2. 패스워드를 입력하여 mysql에 접속한다.

3. 복원할 DB를 선택한다. 없을 시에는 새로 만들어 준다.

4. mysql> source 파일경로;   
로 명령어를 입력한다. 이때 파일경로를 넣을 때 D:\에서 \로 입력하면 안된다. 에러를 확인 할 수 있다. 실제로 내가 경험함. 이유는 더 심도있게 공부해 봐야 겠지만.. D:// 이렇게 입력 해줘야 한다. 우선 드라이브 명 뒤에는 //를 넣어주고 다른 경로 사이의 \는 /로 변경해서 넣어주자. 

리눅스를 계속 공부하고 있고 주로  windows에서 mysql을 올려서 사용하다보니 부딪히는 부분이 많은 것 같다. 다른 점이 자꾸 발생하니 잘 적어 두어야 겠다. 

[Mysql] timestamp를 찾아서...

mysql을 하면서 timestamp로 기록된 서버의 시간을 변환하는 일이 생겼습니다.

함수만 쓰면 될 줄 알았더니 아니더라구요.

보통 타임 스탬프가 10자리 인데 13자리라서 갸우뚱.. 했는데...

ms(micro second)까지 기록하는 것이 있더라구요.

이런경우... 변환할 때 저는 이렇게 사용했습니다.

date_format(from_unixtime(time/1000), '%Y-%m-%d %H:%i:%s')

사소한 것이지만 from_unixtime에서 제대로 변환이 되지 않으면 엉뚱한 값으로 계산이 되니 주의하는 것이 좋을 것 같습니다.

[Mysql] 테이블과 컬럼명을 찾아보자

작업을 하다보면 특정 컬럼명이 존재하는지 
또는 해당 DB에 어떤 테이블들이 있는지를 쓰는 경우가 종종 있다

그럴 때 유용한 쿼리문

USE DBNAME
GO
 
select * from information_schema.tables
GO

위와 같은 쿼리를 통해 해당 DB에 속한 table 리스트들을 확인 할 수 있다.

USE DBNAME
GO
 
select * from information_schema.columns
where COLUMN_NAME='컬럼명'

찾고자 하는 컬럼명이 어떤 테이블에 있는지 확인할 수 있다.

information_schema를 통해 여러 정보들을 확인 할 수 있을 것 같으며 해당 내용에 대해서는 좀 더 공부 한 뒤에 정리 해 보려 한다.

2018년 10월 7일 일요일

[영어원서 읽기 - 2] Magic Tree House #2 The Knight at Dawn

두 번째 영어원서 읽기는 Magic Tree House의 #2 The Knight at Dawn 입니다.
백악기 시대를 다녀온 Jack과 Annie가 중세시대로 시간여행을 떠난 이야기였습니다. 중세시대 이야기라서 생소했던 단어가 많았어요.


특히 em이나 thou는 옛날 글 투 같은 것도 공부할 수 있었습니다. 또 해자, 갑옷 및 무기류에 대한 단어들도 많이 배울 수 있었습니다.


이번에도 각 챕터별로 인덱스 스티커를 붙여두고, 읽은 날짜를 네임펜으로 적었습니다. 단어 하나하나 놓치지 않고 읽으려고 하다보니 정말 더디게 읽혔던 것 같아요. 그리고 중간에 추석도 있어서 띄엄띄엄 읽게 되었습니다. 그래도 9/30에 모두 읽었습니다.


천천히 읽다가 한 권씩 늘어가는 재미가 있습니다. Magic Tree House 시리즈가 세트로 있는데 세트로 사면 더 저렴합니다. 하지만 세트로는 사지 않으려고 합니다. 한 권씩 완성해가는 재미가 있더라구요. 하루에 1~3 장까지 천천히 읽어가며 목표를 달성해 보려고 합니다. 조금 씩 더디게 느껴지더라도 꾸준함으로 해내겠습니다.

The Knight at Dawn (Paperback) - 10점
메리 폽 어즈번 지음, 살 머도카 그림/Random House

2018년 10월 6일 토요일

[Mysql] 해당하는 DB의 table은 모두 몇 개일까?

Mysql -> MSSQL 로 데이터 마이그레이션 이슈가 있어서 이관 했습니다.

이관할 때 사용했던 툴은 SSMA(SQL Server Migration Assistant for Mysql)  이라는 툴을 이용해 진행 했습니다.

중간에 Null 조건이나 많은 테이블을 옮기는 것이 아니라면 괜찮은 툴이라고 생각합니다. 
저는 테이블을 133개를 옮겨야 해서 고생좀 했습니다만 데이터 타입이나 인덱스 등은 어느정도 잘 마이그레이션 해주는 것 같습니다.

다운로드는 https://www.microsoft.com/en-us/download/details.aspx?id=43690 에서 하시면 됩니다.

일단 테이블이 제대로 옮겨졌는지 확인을 하려면 각 DB의 테이블의 수량을 간단하게 확인하는 쿼리문을 확인 해 보겠습니다.

My SQL> SELECT COUNT(*) FROM information_schema.tables where table_schema = 'DB 명'

MSSQL: SELECT COUNT(*) FROM sys.tables

각각 DB의 시스템 파일에 대해서는 더 공부를 해야 하지만 간략하게나마 원하는 DB의 테이블 COUNT를 원할 때 다음 방법이 쉽고 간편할 것 같습니다.


[Mysql] my.ini 파일을 찾아내자

MySql 에 이벤트 스케줄러를 설정 해 뒀는데 
자꾸 환경변수가 off 로 변해서 내가 원하는 대로 이벤트가 실행이 안되는 것이다.

원인은 무엇일까 오늘도 열심히 구글링을 했다.
사람들이 자꾸 my.ini 파일을 찾아서 설정해주면 된다고 해서 변경 했지만 안된다.

내가 자꾸 헤맨 ini 파일의 위치는 

C:\Program Files\mysql\MySQL Server 5.6 디렉토리 내에서 my.ini를 수정해주고 
mysql 서비스를 재시작 해주면 자꾸 다시 off가 되는 것이다.


CMD 창을 열고 cd "C:\Program Files\MySQL\MySQL Server 5.6\bin" 폴더로 이동
mysqld --help --verbose | find "my.ini" 를 통해 my.ini 위치가 있을 만한 곳을 다 찾아봤지만 내가 검색한 위치 외에 my.ini 파일이 존재하지 않았다.

마지막으로 내 컴퓨터에서 my.ini 파일 검색을 했는데....

C:\ProgramData\Mysql\ 이라는 디렉토리 내에도 my.ini 파일이 있는 것이다.

그래서 해당 파일을 수정 -> mysql 서비스 재시작 -> 확인 -> 성공

my.ini 파일은 그렇게 숨겨져 있었다.

환경변수가 제대로 적용이 되지 않을 때는 꼭 my.ini 파일에서 찾아서 수정 후 서비스 재시작 해주자.

[Mysql] MariaDB cnf 파일

보통 리눅스 서버에 mysql이 설치가 되면 설정 파일을 설정 한다.


File NamePurpose
/etc/my.cnfGlobal options
/etc/mysql/my.cnfGlobal options
SYSCONFDIR/my.cnfGlobal options
$MYSQL_HOME/my.cnfServer-specific options (server only)
defaults-extra-fileThe file specified with --defaults-extra-file, if any
~/.my.cnfUser-specific options
~/.mylogin.cnfUser-specific login path options (clients only)

보통 다음과 같은 위치에 있다.

금일 작업 중에 설정 파일 내용과 실제 mysql에 적용된 내용이 달라서 한참 헤멨다. 
설정파일에 적용되지 않은 사항이 적용되어있었다.
이번 경우는 slow query log의 설정 여부였다.
내가 확인한 my.cnf 파일에는 slow query 부분이 주석처리 되어있었다.
혼돈의 카오스 시작... 도대체 어떻게 이런일이 가능한 것인지 미친 듯이 찾아본결과...
/ect/mysql/conf.d 디렉토리 내에 mariadb.cnf 라는 파일이 있었는데 해당 파일에 mysql 세팅이 모두 들어 있었다. 좀 더 찾아 봐야겠지만 my.cnf 설정이 실제 설정과 다르며  mariadb 에서 운영되고 있다면 다음을 의심해 볼 만 하다.

해당  mariadb 버전은 10.1.14 버전이었다.

[Mysql] MYSQL 외부 접속 (Remote Connect)

오늘 하루 종일 mysql 원격 접속으로 헤메었습니다.
기억 차원에서 기록!!
mysql 을 원격 접속 하기 위해서는 권한 부여를 통해서 진행을 하는데 권한 부여가 끝이 아니었습니다.
보통 권한 부여는 

mysql > GRANT ALL ON *.* TO '계정'@'ip address';

이런식으로 부여를 한다. 
아무리 최고 권한을 줘도 원격이 안된다.
미쳐버릴거 같았다.
열심히 찾아 본 결과...

/etc/my.cnf 에서 원격 설정을 활성 화 해야한다.

# keep secure by default!
#bind-address = 127.0.0.1

주석처리 해주니 접속이 아주 잘 된다.
오늘도 밥값을 한 것 같다.

[Mysql] Mysql Event 수행하기

현재 파워쉘을 활용하여 Mysql에 접근하여 프로시저를 실행하는 파일을 Windows 스케줄러로 매일 한 번 씩 실행 하고 있다.

다른 부분에서는 크게 문제가 되지 않는데 프로시저 내에 Repair Table 문이 들어있으니 제대로 수행이 되지 않는다.

Windows 스케줄러에서는 수행이 안되지만 수동으로 수행하면 실행이 된다.

처음에는 권한 문제 일까 여러 원인을 찾았지만 포기 했다.

단순히 Mysql 프로시저만 실행 해 주면 되기 때문에 Mysql 이벤트 라는 것을 찾게 되었다.

절차는 아래와 같다.

1. mysql information_schema 에서 수행되고 있는 이벤트가 있는지 확인 해보자

mysql> select * from information_schema.EVENTS;

2. 다음 이벤트가 enable 상태인지 확인한다.

mysql> show variables like 'event%';

event_scheduler ON 으로 되어있으면 값을 변경 해야한다.

3. 이벤트 ON으로 설정하기
SET GLOBAL event_scheduler = ON;
SET @@global.event_scheduler = ON;
SET GLOBAL event_scheduler = 1;
SET @@global.event_scheduler = 1;
다음과 같이 입력해준다.

4. 이제 이벤트를 설정 해준다.
CREATE EVENT `이벤트 명` ON SCHEDULE EVERY 1 DAY STARTS 'YYYY-MM-DD HH:MM:SS' 
DO
BEGIN
    CALL DB스키마.프로시저명;
END

이때 시작 시간은 현재 이벤트를 설정하는 시점보다 미래여야 한다.

우선은 이렇게 수행했을 때 Mysql 내에서 실행 되는 것이므로 잘 되었음을 확인했다.
내일도 다시 확인은 해봐야 한다. 제대로 작동하는지 알기 위해...

내용 참고는 아래에서 확인 했다.







[Mysql] 테이블 Repair 에러 수정

Mysql 수행 시 table 'table_name' is marked as crashed and should be repaired 와 같은 에러가 발생했다.

해당 에러 수정 방법

우선 해당 DB를 백업 합니다.

mysql> check table 'table_name';

해당 테이블에 관련된 에러를 확인 할 수 있습니다.

mysql> repair table 'table_name';

해당 테이블의 에러를 수정한다.

repair status 'OK'로 완료가 되었다면 수정이 정상적으로 이루어 진것이다.

mysql> check table 'table_name';

다시 확인 하면 에러가 없음을 확인 할 수 있다.

[Mysql] Powershell에서 Mysql 연결 시 에러발생

Windows server에서 PowerShell을 이용하여 Mysql로 연결할 때 다음과 같은 구문을 사용한다.

우선 MYSQLConnector를 설치 해야 한다.

설치 파일 다운로드 링크 : http://dev.mysql.com/downloads/connector/net/5.1.html

설치 후 반드시 Connector 버전에 맞는 .Netframework를 설치 해주어야 합니다.


마지막으로 powershell_ise.exe.config 파일이 존재 해야 한다.

Create a file “powershell.exe.config” in the C:\Windows\System32\WindowsPowerShell\v1.0 and c:\Windows\SysWOW64\WindowsPowerShell\v1.0
Content:
<?xml version="1.0"?>
<configuration>
    <startup useLegacyV2RuntimeActivationPolicy="true">
        <supportedRuntime version="v4.0.30319"/>
        <supportedRuntime version="v2.0.50727"/>
    </startup>
</configuration>

저는 powershell.exe.config 파일을 두 경로에 모두 넣었습니다.
혹세 powershell_ise.exe를 실행시키려는 것이면 powershell_ise.exe.config 파일로 만드세요.

연결 테스트 구문

[void][System.Reflection.Assembly]::LoadWithPartialName("MySql.Data")
$ConnectionString = "server=127.0.0.1;port=포트 번호;uid=계정;pwd=패스워드;database=DB명"
$Connection = New-Object MySql.Data.MySqlClient.MySqlConnection $ConnectionString
$Connection.Open()

에러가 없다면 정상작동하는 것이라고 할 수 있습니다.


[Mysql] 슬로우 쿼리 로그 파일 분석 시 각 항목 설명

슬로우 쿼리 로그 분석 시 각 항목 설명


Time : 쿼리의 종료 시점 (시작 시점이 아님 헷갈리면 안됨)

User@Host : 쿼리를 실행한 사용자의 계정

Query Time :  쿼리가 실행되는데 소요된 시간

- 그러므로 쿼리의 시작 시점을 알고 싶다면 
쿼리의 시작 시간 = Time - Query Time
의 식으로 계산 하면 된다

Lock Time : 테이블 잠금 시간 너무 작은 수라면 무시해도 된다

Rows_examined : 쿼리가 처리 되기 위해 몇 건의 레코드에 접근 했는지 보여주는 수치

Rows_sent : 실제로 몇 건의 처리 결과를 클라이언트로 보냈는지 보여주는 수치

Rows_affected : 쿼리에 의해 영향을 받는 레코드들의 수

Rows_examined  의 수는 크지만 Rows_sent 에 표시된 레코드 건수가 상당히 적다면 이 쿼리는 좀 더 작은 레코드에 접근하도록 튜닝을 고려해 볼 수 있다. 단!(Group By, Count, Min, Max, Avg 와 같은 집합 함수의 경우는 제외한다.)

슬로우 쿼리 분석 사이트 : http://nk.gl/slow_queries/analyze

글 내용 참고 : http://rrhh234cm.tistory.com/233

2018년 10월 2일 화요일

[SQL Server] Change Table Column Name

DB에서 테이블을 생성했을 때 컬럼네임을 틀리는 경우가 종종 있다.

꼼꼼하게 본다고 해도 간혹 틀리는 경우가 있는데 바로 변경해보자.

GameName으로 해야 하는데 GaemName으로 해버렸다...

무의식적으로 GameName으로 하다가 낭패를 볼 것 같아서 바로 수정했다.

초반에는 이렇게 수정하는 것이 쉬울 수 있으나 나중에 연관된 프로시저, 만약 기본키나 외래키가 설정되어 있다면 모두 수정해야 할 수 있다. 결론은 처음부터 꼼꼼히 확인하고, 초반에 발견되었다면 바로 수정을 하자.

USE DBNAME
GO
EXEC sp_rename  '스키마.테이블이름.기존컬럼이름''새로운컬럼이름''COLUMN'
코드는 다음과 같다.
실행하면 성공 시 다음과 같은 주의 메시지가 나온다.

Caution: Changing any part of an object name could break scripts and stored procedures.

그렇다. 혹시 연관된 object가 있으면 반드시 수정하자.
작은 실수가 여러분의 소중한 시간을 빼앗아 갈 수 있다!!!


[SQL Server] DATE Type 정리

SQL 서버 작업을 하면서 많이 하는 작업 중의 하나인 DATE Convert 작업 입니다.

국내 블로거들은 주로 YYYY MM DD에 많이 정리 되어있지만 외국에서는 월을 문자로도 표현하는 경우가 많아 해당 내용에 대해서도 알고 있으면 좋을 것 같아서 공유 합니다.

참고해서 활용하시기 바랍니다.

아래 바로가기를 눌러서 확인합니다.

[SQL Server] SQL쿼리 실행기록 확인하기

누군가의 쿼리 실수로 테이블이나 데이터 베이스가 지워졌을 경우..
이런일이 발생하면 안되지만 어떻게 될 일일지 모르니...

언제 어떻게 실행이 되었는지를 알 수 있는 쿼리가 있다.

USE dbname
GO 
 
SELECT t.[text], s.last_execution_time
FROM sys.dm_exec_cached_plans AS p
INNER JOIN sys.dm_exec_query_stats AS s
   ON p.plan_handle = s.plan_handle
CROSS APPLY sys.dm_exec_sql_text(p.plan_handle) AS t
WHERE t.[textLIKE N'%something unique about your query%'
ORDER BY s.last_execution_time DESC;
something unique about your query 부분에 검색하고자 하는 내용을 넣어서 실행 시키면 해당 쿼리가 실행 되었는지 그리고 언제 실행되었는지 등을 알 수 있다.

제발 이 쿼리를 실행하는 일이 없도록 항상 신중하고 또 신중하게 실행하자

아래 쿼리 출처는 다음과 같다.

[SQL Server] 랭킹 함수 알아보기

SQL 서버에서 랭킹 함수를 써야 하는 경우가 있다.

RANK, DENSE_RANK, ROWNUMBER, NTILE 등이 순위 함수로 되어있는데 각각의 차이점을 정리해본다.

SQL SERVER 2008부터 사용가능한 함수들이다.

사용법:  함수명() OVER ( [PARTITION 컬럼] ORDER BY 컬럼 혹은 식) 

ROWNUMBER의 경우 중복을 허용하지 않는다.

RANK와 DENSE_RANK의 경우 중복이 허용된다. 다만 둘의 랭킹 표기 방식이 조금 다르다. 
RANK의 경우 중복이 되면 그 다음 바로 수가 아니라 중복된 수 만큼 처리된 후 다음 순위가 나온다. 예를 들면 1,1,3,4 1이 두번 중복되므로 2순위가 없고 3순위가 나오는 것이다. 
DENSE_RANK의 경우 중복이 되면 중복된 수와 관계없이 +1을 한 값이 나온다. 예를 들면 1,1,2,3,4 와 같이 1이 중복 되었어도 다음 순위는 RANK와 달리 2가 나오는 것이다.
NTILE의 경우는 NTILE(n)과 같이 행들을 n개씩 묶음으로 보이도록 한다.

비슷한 함수들이지만 특성이 다르므로 잘 사용하면 좋을 것 같다.


아래 링크를 참조하자!!!

[SQL Server] Job에서 실행되는 프로시저 확인 방법

SQL Server 실행되는 Job들 중에서 해당 프로시저가 실행되고 있는지 확인할 때 유용한 구문이다.

msdb에는 SQL Server Agent 정보를 가지고 있으므로 Job에서 실행되는 command 부분에서 해당 프로시저를 검색하는 것이다.

쿼리문은 아래와 같다.
SELECT j.name 
  FROM msdb.dbo.sysjobs AS j
  WHERE EXISTS 
  (
    SELECT 1 FROM msdb.dbo.sysjobsteps AS s
      WHERE s.job_id = j.job_id
      AND s.command LIKE '%procedurename%'
  );

구글에서 검색해서 찾은 내용이다.

[SQL Server] sp_depends

SQL 버전: SQL SERVER 2008 ~ SQL SERVER 2017


사용하는 프로시저의 테이블 종속성을 확인할 수 있다.

프로시저를 보기 좋게 작성하면 참 좋겠지만...

그렇지 않다면 사용하면 좋을 것 같다.

사용방법

sp_depends '프로시저명' 

입력하면 name/type/updated/selected/column
이렇게 출력된다.

name: 테이블명
type: 오브젝트 타입
updated: 해당 칼럼의 값 업데이트 여부
selected: 해당 칼럼의 값 select 여부
column: 해당하는 컬럼

프로시저 열어보면서 일일이 사용되는 컬럼을 확인하지 않아도 되고, 실수할 일도 없어서 앞으로 활용을 많이 할것 같다. 다만 설명에도 나와 있듯이 없어질 기능이라고 하니 대체되는 기능을 다시 확인해 봐야함

참고 링크

[SQL Server] 튜닝을 위해 첫 번째로 진행할 사항

요즘 새로 만들고 있는 정산 프로세스에서 문제가 있는 부분을 찾기 위해 수행하는 작업이다.

튜닝이 필요하거나 장애가 발생했을 때 우선적으로 해야 하는 작업이다.

1) DBCC FreeProcCache 명령어로 프로시저 내의 프로시저 캐시 제거하기 

해당 작업을 하는 이유는 어떤 프로시저가 문제가 있는지를 찾기 위함이다.

이 명령어를 통해 이전에 계획된 프로시저 실행 계획이 새 계획으로 다시 세워지기 때문에 일시적인 성능의 저하를 가져올 수 있지만, 지금의 상황은 문제가 있는 부분을 찾기 위함이며, 장애가 발생했을 경우의 장애 포인트를 찾기 위함이다. 그러므로 해당 명령어를 통해 프로시저 캐시를 제거한 후 문제가 된 프로시저의 어떤 구문에서 문제가 있는지를 찾는 것이 중요하다.

참고 링크

[SQL Server] 과제 피봇을 사용하지 않고 원하는 결과 출력하기

실장님과 이야기 하다가 풀어보라고 하셔서 작성한 문제이다.




다음과 같은 결과를 출력 하는 것이 목적
SSMS를 사용하지 않고 머리 속에서 그려보고 답안 작성해보기
목적은 RDBMS에 대한 명확한 이해를 하기 위함이다.

오답도 함께 공유한다.

1) 
SELECT 이름, SUM(영어) AS 영어, SUM(수학) AS 수학, (영어+수학)/2 AS 평균
FROM (SELECT 이름,
    CASE WHEN 영어 THEN 점수 ELSE 0 ELSE 0 END AS 영어,
    CASE WHEN 수학 THEN 점수 ELSE 0 ELSE 0 END AS 수학,
    FROM A) AS B
GROUP BY 이름

=> 답은 될 수 있지만 원하는 답은 아니다. 물건을 하나씩 들고 올라갈지 한 번에 들고 올라갈지 고민해야 한다.

2) 
SELECT 이름, 
    CASE WHEN 과목 = 영어 THEN SUM (점수) END AS 영어
    CASE WHEN 과목 = 수학 THEN SUM (점수) END AS 수학
    AVG(점수) AS 평균
FROM A
GROUP BY 이름

=> 오답이다. 에러가 발생 될 것 같다. GROUP BY가 과목까지 되어야 하며, 원하는 출력도 기대할 수 없다.
3) 
SELECT 이름,
    SUM(CASE WHEN 과목 = 영어 THEN 점수 ELSE 0 END) AS 영어,
    SUM(CASE WHEN 과목 = 수학 THEN 점수 ELSE 0 END) AS 수학,
    AVG(점수) AS 평균
FROM A
GROUP BY 이름

=> 정답. 이것 저것 생각해보다가 문득 excel의 sum if 함수를 생각해보며 풀었다. 2)과 유사하지만 결과는 명백히 다르다.

생각하고, 또 생각하자.
그래서 효율적인 쿼리를 만들어 내도록 연구해보자!!! 오늘의 교훈이다.

2018년 10월 1일 월요일

[미술-Drawing] 아트섬 아마도 성인 미술교육 수업 - 5

이 글은 저의 취미 생활 중 하나인 미술 Drawing 수업에 관한 후기 입니다. 어느 덧 아트섬 아마도의 마지막 수업이 되었습니다. 5번의 수업을 할 수 있을까 걱정이 많았지만 그 날이 왔어요. 또 등록할 꺼지만 그래도 뿌듯하면서 섭섭한 마음이 들었습니다. 지난 시간에 이어 마카와 색연필을 활용하여 제가 그린 그림을 색칠했습니다.

집에 가지고 가서 조금 해오겠다고 했지만,,, 마음 먹은 대로 안되는게 삶이죠. 그래도 열심히 원래 사진을 보며 색칠을 해나갔습니다.


이번 수업을 통해 느낀점이 있다면, '악마는 디테일에 있다.' 입니다. 그림이 정말 그런 것 같아요. 저 많은 물고기들을 칠하면서 마지막 물고기를 그릴 때 정말 어려웠습니다. 조금 귀찮은 마음을 먹으면 망치는 건 순간이죠. 이번에 정말 절실히 깨달았습니다. 그리고 이건 그림에만 적용되는 것이 아닙니다. 어느 분야에든 적용되는 사실이죠. 제가 하고 있는 일에서도 마찬가지이구요. 저는 그림과는 전혀 관련없는 일을 하고 있지만 결국 일을 하면서도 디테일은 정말 중요함을 항상 느끼기 때문이죠. 일에 있어서도 디테일을 챙겨야 겠다는 생각을 했습니다. 


이렇게 물고기들을 다 채색하고, 담장과 도로도 칠했습니다. 선생님과 의논해서 얼굴의 표정은 넣지 않기로 했어요. 왠지 화룡점정이 아닌 화룡점망이 될 것 같은 느낌이 들었거든요.


남편은 미국의 무슨 화가... 라고 했는데 그 화가의 작품을 모사했습니다. 지난 번에 그린 그림은 정이 가지 않아서 새로운 것을 했는데 역시 저보다 잘 합니다. 크으~

악마는 디테일에 있다. 이번 미술교실의 교훈입니다. 5주 동안 정말 즐거운 시간이었습니다. 다음주에 새로운 수업은 어떤 것을 시작할지 너무 기대됩니다. 힐링의 시간도 갖고, 많은 것을 느낄 수 있는 시간이었습니다. 


아트섬 아마도가 궁금하시면 아래 링크를 타고 가서 구경하시면 됩니다.