Due to the low concurrency query execution limit of Athena, the usability of the stored in S3 is very low compared to the huge effort to maintain. Replacing the query engine with another, such as Snowflake and Google Big Query, is an option but takes huge time and effort to migrate. While they’re being migrated, it’d be great to provide an alternative method to replace the query engine, Athena, more flexibly. The idea comes from the base product of Athena, Apache Presto.

 

Goal

This document demonstrates the following features:

  • Running SQL query to AWS S3 bucket on Presto using AWS Glue catalog as a Hive Metastore
  • Presto Client REST API
    • Query submission
    • Query status check
    • Query result retrieval
  • UI support to visualize the data using Apache Superset

Every component is running on docker containers orchestrated by docker-compose.

 

IAM Role and Policy Requirements

The same permissions to run Athena query are required:

  • S3 bucket permissions
  • AWS Glue catalog permission

If running on an EC2 instance, add an IAM role, attach the policy to the role, and attach the role to the instance.

 

Installing Apache Presto

Installing Apache Presto is pretty simple. This guide document from prestodb describes the Dockerfile to launch a presto container. Presto requires the metastore, and presto supports many types of datastore for metastore. To utilize the AWS Glue catalog as a Hive metastore, simply add the following lines in etc/catalog/hive.properties file

connector.name=hive-hadoop2
hive.metastore=glue
hive.metastore.glue.region=ap-northeast-1
hive.parquet.use-column-names=true

 

  • This configuration assumes that the AWS Glue catalog resides on ap-northeast-1.hive
  • parquet.use-column-names=true is a remedy for the errors when mismatching column types were found during the query execution.

In this demo, ahanaio/prestodb-sandbox:latest docker image is used to launch the container

 

Executing a sample test query using presto-cli

Download presto-cli executable and add it to bin/ directory. When executing the binary, it allows executing Presto query. To test if AWS Glue catalog is properly connected as a hive metastore, simple execute the following query:

 

presto> SHOW CATALOGS;
 Catalog
---------
 hive
 jmx
 memory
 system
 tpcds
 tpch
(6 rows)

Query 20210501_100326_00063_6ksa5, FINISHED, 1 node
Splits: 19 total, 19 done (100.00%)
0:00 [0 rows, 0B] [0 rows/s, 0B/s]

presto>

 

 

hive catalog holds the databases from AWS Glue catalog. To list up the databases:

presto> SHOW SCHEMAS FROM hive;
 Schema
--------------------
 my_table
 default
 information_schema
 sampledb
(4 rows)

Query 20210501_100434_00066_6ksa5, FINISHED, 1 node
Splits: 19 total, 19 done (100.00%)
0:00 [4 rows, 55B] [12 rows/s, 168B/s]

presto>

 

 

To list up the tables in the database:

presto> SHOW SCHEMAS FROM hive;
 Schema
--------------------
 aa
 default
 information_schema
 sampledb
(4 rows)

Query 20210501_100434_00066_6ksa5, FINISHED, 1 node
Splits: 19 total, 19 done (100.00%)
0:00 [4 rows, 55B] [12 rows/s, 168B/s]

presto> SHOW TABLES FROM hive.aa;
 Table
-----------------
 staging_channel
 staging_message
(2 rows)

Query 20210501_100505_00067_6ksa5, FINISHED, 1 node
Splits: 19 total, 19 done (100.00%)
0:01 [2 rows, 54B] [3 rows/s, 89B/s]

presto>

 

 

USE expression works on CATALOG and SCHEMA as well.

presto> use hive.aa;
USE
presto:aa> use hive;
USE
presto:hive>

 

Submitting the Presto query using Presto API

Presto supports Client REST API. To submit the query string:

curl -X POST http://presto:8080/v1/statement -d "SELECT * FROM my_table.user LIMIT 10"
{
 "id": "20210501_094004_00061_6ksa5",
 "infoUri": "http://ec2-15-165-33-20.ap-northeast-2.compute.amazonaws.com:8080/ui/query.html?20210501_094004_00061_6ksa5",
 "nextUri": "http://ec2-15-165-33-20.ap-northeast-2.compute.amazonaws.com:8080/v1/statement/queued/20210501_094004_00061_6ksa5/1?slug=x1d121af12afd45eca1687e968b671bd5",
 "stats": {
 "state": "QUEUED",
 "queued": true,
 "scheduled": false,
 "nodes": 0,
 "totalSplits": 0,
 "queuedSplits": 0,
 "runningSplits": 0,
 "completedSplits": 0,
 "cpuTimeMillis": 0,
 "wallTimeMillis": 0,
 "queuedTimeMillis": 0,
 "elapsedTimeMillis": 0,
 "processedRows": 0,
 "processedBytes": 0,
 "peakMemoryBytes": 0,
 "peakTotalMemoryBytes": 0,
 "peakTaskTotalMemoryBytes": 0,
 "spilledBytes": 0
 },
 "warnings": []
}

 

The value of ”nextUri” holds the endpoint for checking the query execution status. If the query execution is not complete, the response of the ”nextUri” will remain the same except for the status value in either “QUEUED” or “RUNNING”. When the query execution is complete, it’ll show the result as follows:

앞의 글에서, Nginx Proxy Manager(이하 npm)의 설치 및 초기 설정에 대해서 다루었다. 여기서는 뒷단 서버로 연결하는 설정을 다룬다.

 

Proxy Host 설정

상단의 Dashboard 탭 > Proxy Hosts를 누르거나, 상단의 Hosts 탭 > Proxy Hosts를 누르면, 도메인별 proxy 설정을 할 수 있다. Add Proxy 버튼을 눌러 다음과 같이 채워준다.

static.example.com를 minio 9000/tcp에 연결하는 예제

  • Domain Names: 사용하고자 하는 domain 이름을 적는다. 도메인 이름을 입력하고 엔터(혹은 탭키)를 입력하여 그림과 같이 전체 이름이 회색 블럭으로 입력되도록 한다.
  • Scheme: SSL termination은 npm이 담당하고, npm과 upstream 간에는 HTTP 통신으로 단순화하려고 하니, http로 유지한다.
  • Forward Hostname / IP: 연결시키고자 하는 호스트이름 혹은 IP주소를 입력한다. 다른 docker container 호스트명(hostname 설정을 별도로 하지 않은 경우, container_name)을 직접 입력해도 된다.
    • 공유기(라우터)의 DHCP가 고정으로 할당하는 IP가 있거나 docker network 내의 IP를 입력해도 좋으나, 공유기 설정이 바뀌거나 docker network가 바뀌는 경우 IP도 같이 바뀔 수 있다. 가급적이면 호스트명을 입력하고, 호스트명으로 해당 container 혹은 서버에 접속할 수 있도록 유지하는 것이 좋다.
  • Forward Port: 연결시키고자 하는 호스트에 접속할 수 있는 포트를 입력한다. 같은 docker network에 있는 다른 container에 접속시키는 경우, 굳이 expose로 container의 포트를 docker host에 노출시키지 않아도 된다. 다만, Forward Hostname / IP 부분에 docker host의 IP를 적었을 경우: docker container의 포트를 expose로 host에 노출시키고, 해당 포트를 적어주어야 한다.
  • Block Common Exploits: 활성화하게 되면, SQL injection, file injection, spam block, 몇몇 crawler를 차단, 그리고 몇가지 공격으로부터 차단하는 기능을 제공한다.
  • 위의 세가지 예제(nginx/apache, minio, notebook)에 맞게 적어보면
    • nginx/apache
      • Domain Names: example.com
      • Scheme: http
      • Forward Hostname / IP: nginx (혹은 apache)
      • Forward Port: 80
    • minio
      • Domain Names: static.example.com
      • Scheme: http
      • Forward Hostname / IP: minio
      • Forward Port: 9000
    • notebook
      • Domain Names: nb.example.com
      • Scheme: http
      • Forward Hostname / IP: notebook
      • Forward Port: 8080

다른 패키지 없이, 공인 IP를 알아낼 필요가 생겼다. 요구사항은 다음과 같다.

  • 다른 패키지를 사용하지 말고 python3의 기본 built-in 패키지만 사용할 것 (python3.11)
  • crontab에 등록하여 사용할 것
  • 여러 네트워크 인터페이스(랜카드)가 사용 가능한 상황에서 특정 네트워크 인터페이스를 사용하도록 할 것
    • 두 개의 랜카드가 eth0, eth1로 인터넷에 접속 가능한 시스템에서, 특정 네트워크 인터페이스를 지정하여 public IP를 받아오는 것

 

 

하나의 서버에서 여러개의 도메인에 대한 요청을 처리하기 위해서는 nginx나 apache등의 도메인별 설정을 이용해서 구현이 가능하다. 최근 보안 이슈로 HTTP만으로 웹서비스를 제공하는 경우는 거의 없기에 HTTPS를 위한 인증서를 같이 제공해야하는데, 이는 Let's encrypt 등의 인증기관을 이용하면 무료로 쉽고 빠르게 설정할 수 있다.

다만, 도메인별 설정과 인증서 설정을 웹UI를 통해 쉽게 설정할 수 있는 패키지가 있으니, Nginx Proxy Manager(이하 npm)가 그것이다.

 

Npm은 Nginx의 Reverse Proxy 기능을 이용해서 뒷단(upstream)에서 제공할 다양한 웹 기반의 서비스들의 첫 출입구를 담당해준다. 특징을 몇가지 적어보면:

  • 여러 도메인들에 대한 설정을 UI를 기반으로 쉽게 설정할 수 있다.
  • SSL termination을 제공하여 뒷단 서버와의 소통을 HTTP만 하게 함으로 뒷단 서버의 설정을 간단하게 할 수 있다.
  • HTTP/2, HSTS를 지원하지 않는 웹서버라도, proxy 단에서 지원한다. 또한, websocket를 지원하는 뒷단 서버에게 websocket을 연결한다.
  • nginx의 server, location 등에 추가해야하는 설정들(proxy_pass, proxy_set_header 등)을 추가로 설정할 수 있다.
  • 설정을 저장할 때마다 nginx reload를 실행하고 online/offline 등 상태를 보여주어 설정을 즉시 적용하고 상태를 확인할 수 있다.
    • 다만, 이것은 단점이 되기도 하는데, 잘못된 설정이 저장되었을 때 그 설정이 바로 적용되어 서비스에 문제가 될 수 있다.
  • Docker로 쉽게 사용할 수 있도록 Dockerfiledocker-compose 예제파일을 제공하며, dockerhub에서도 이미지를 제공(2024/04 기준 167M docker pulls)하고 있다.
    • Docker 이미지는 64비트 아키텍쳐(arm64) 뿐 아니라 M1, M2, M3등 Apple silicon(arm64)을 위한 아키텍쳐도 지원한다.
  • 2024년에 들어서는 버젼 release가 빠른 편은 아니지만, 코드는 자주 업데이트 되는 편이다.

여기서는 집에서 소규모로 작게 운영하는 웹사이트들을 가정하고 설명하기로 한다. 실제 production 환경에서 사용하기 위해서는 더 나은 솔루션(AWS의 경우, WAF + ALB SSL termination 등)이 있기 때문에, 높은 트래픽과 높은 가용성이 필요로 하는 환경보다는 낮은 트래픽에 조금 더 쉽게 사용할 수 있는 운영환경에 초점을 맞추고 있다. 또한, 개인적으로 사용하는 homelab에는 서비스들을 docker container로 운영하고 있지 때문에, 여기서도 docker-compose를 이용하여 docker container로 운영하는 방식을 기준으로 설명한다. Docker container들끼리는 docker network로 통신하면 되므로, 개별 서비스에 직접 접근해야하지 않는 이상 각 서비스의 포트를 호스트에 직접 노출시키지 않아도 된다.

 

네트워크 설정

가정집에서 사용 중인 인터넷 환경을 고려해보면, 대개 다음과 같다.

 

공유기에서 서버로 TCP 80/443 포트가 모두 서버로 향하게 설정하는 것이 필요하다. 또한, 서버에서도 npm이 직접 80과 443번 포트를 점유할 수 있도록 설정해야한다. (사용하는 OS환경에 따라 80/443 포트를 이용하기 위해서는 root 권한이 필요할 수 있다.)

 

서버에서는 HTTP로 통신하는 여러 서비스들이 docker container 위에서 운영 중인 것으로 가정한다.

  • npm과 별개로 웹서비스를 제공하기 위한 nginx 혹은 apache (example.com 80 포트)
  • S3와 호환되는 고성능 스토리지 서비스인 MinIO (static.example.com, 9000 포트)
  • jupyter notebook (nb.example.com, 8080 포트)

 

Docker compose

# docker-compose.yml
version: '3.8'

services:
  npm:
    container_name: npm
    image: jc21/nginx-proxy-manager:2.11.1
    restart: unless-stopped
    ports:
      - '80:80'
      - '81:81'
      - '443:443'
    # MySQL/Maria DB가 준비되어 있지 않다면, 아래 environment항목을 삭제 혹은 comment out
    environment:
      DB_MYSQL_HOST: ${NPM_DB_MYSQL_HOST}
      DB_MYSQL_PORT: ${NPM_DB_MYSQL_PORT}
      DB_MYSQL_USER: ${NPM_DB_MYSQL_USER}
      DB_MYSQL_PASSWORD: ${NPM_DB_MYSQL_PASSWORD}
      DB_MYSQL_NAME: ${NPM_DB_MYSQL_NAME}
    volumes:
      - ./nginx-proxy-manager/data:/data
      - ./nginx-proxy-manager/letsencrypt:/etc/letsencrypt
    healthcheck:
      test: ["CMD", "/bin/check-health"]
      interval: 10s
      timeout: 3s
    networks:
      - default
      # 마찬가지로, MySQL 혹은 Maria DB가 준비되어 있지 않다면, 아래 db-network 부분을 삭제
      - db-network

networks:
  default:
    name: ${NETWORK_NAME}
  # 마찬가지로, MySQL/Maria DB가 준비되어 있지 않다면, 아래 db-network 부분을 삭제
  # MySQL/Maria DB를 사용하고, 해당 서비스가 docker container에서 특성 network를 사용 중인 것을 가정
  db-network:
    name: ${NETWORK_NAME_STORAGE}
    external: true
# .env 파일 - docker-compose.yml에서 사용될 변수들을 정의한다.
NPM_DB_MYSQL_HOST=
NPM_DB_MYSQL_PORT=
NPM_DB_MYSQL_USER=
NPM_DB_MYSQL_PASSWORD=
NPM_DB_MYSQL_NAME=

NETWORK_NAME=
NETWORK_NAME_STORAGE=
  • jc21/nginx-proxy-manager 이미지를 사용한다. (2024년 4월 기준으로 2.11.1이 최신)
  • 80/443 포트는 reverse proxy 자체를 위해서, 81번 포트는 reverse proxy 설정을 위한 관리페이지의 접근을 위해서 열어둔다.
    • 80번 포트를 열기 위해서 root 권한이 필요할 수 있다.
  • volumes 항목에서 nginx-proxy-manager가 사용할 data 디렉토리와 인증서 디렉토리(letsencrypt)를 호스트의 특정 디렉토리를 사용하도록 하고 있다.
  • environment 항목에서는 npm이 여러 도메인에 대한 설정을 MySQL에 저장하도록 하고 있다. 만약 MySQL 등이 준비되어 있지 않다면 아래 항목들을 삭제한다. MySQL를 따로 준비하지 않았다면, 이 docker compose 안에 추가해도 되지만, 없어도 sqlite를 사용해서 잘 동작한다
    • environment 항목 전체를 삭제
    • services > npm > networks > db-network 항목을 삭제
    • networks > db-network 항목 전체를 삭제

준비가 되면, docker compose 명령을 이용해서 서비스를 실행시킨다.

docker compose up -d
# docker 버젼에 따라서는
# docker-compose up -d

 

관리도구 설정

도메인별 proxy 설정을 추가하기 위해서는 81번 관리포트로 접근한다. 80/443, 그리고 81번 포트를 열어두었기 때문에 웹브라우져로 http://<서버 주소>:81 를 통해 접속한다. Mac이나 리눅스 개발 환경에서 직접 설정했을 경우, http://localhost:81 혹은 http://127.0.0.1:81 로 접속한다.

 

처음 로그인 시에는 이메일주소 admin@example.com / 비밀번호 changeme 로 접속한다. 첫 접속 후, 관리자 계정의 이름과 이메일 주소, 비밀번호를 설정한다.

 

다음 글에서는 실제로 proxy 설정하는 방법에 대해서 다루어본다.

첫 대학생활이 시작하기도 전, 지방에서 올라와 서울에서 자취하던 친구의 집에서 본 워크래프트3 베타는 문화컬쳐였다.



출처: http://www.hiveworkshop.com/forums/requests-341/warcraft-iii-beta-main-screen-98055/


3D 그래픽과 4개의 종족(결국 이 두가지가 워3의 패망 요인이 되었지만)도 대단했지만,

무엇보다 워크래프트1, 2의 스토리와는 비교할 수 없는 방대한 스토리가 매력적이었다.
블리자드가 본격적으로 시나리오에 집중하기 시작한게 워크래프트3가 아닌가 함
(배신이야 브루드워 때도 등장했지만, 패륜은..................)

확장팩이 나오고, 군입대라는 스트레스가 겹치면서 2003~4년은 이 게임만 주구장창 했던 것 같다.
AOS라는 장르가 탄생하면서 워크래프트3가 도타, 카오스의 클라이언트로 전락한 뒤에도 계속..
그래서 워크래프트3는 내 인생을 망친 3개 게임 중 하나로 자평..

(하지만 그 결과로 얻은 언데드 2천승 가까이 찍은 아이디는 구 베틀넷의 3개월 접속 안함으로 삭제되었음 ㅠㅠㅠ)



시대가 어느 땐데 3개월 접속 안한다고 아이디를 지우냐! 흥!

대략 2005년 5월 경으로 기억.. 일병때....



'영혼의 한타 중에 여친에게 문자 보내는 남자에게 시집가라'는 바로 그 게임인 LOL이 속한 AOS라는 장르를 탄생하게 해주었고,

블리자드의 배신 패륜 막장 스토리의 본격적인 서막을 알린 이 워크래프트 시리즈는

2004년 와우라는 게임으로 이어지게 되는데, 나는 이때 클베 하다가 군 입대를.. 하게 되었다 ㅠㅠㅠ (입대하니 오베 시작 ㅋㅋ)


워크래프트3 게임 중간에 나오는 영상에 등장하는 벨이 게임 지형물로 등장하고,

스타크래프트 같은 실시간전략(RTS) 게임의 대규모 전투에 참여하는 유닛 하나가 되어서 싸우는 컨셉이 당시로서는 가히 충격적이었다.


그때 주변에 친인척 중 한분이 피씨방 사장님을 하게 되었는데(인수), 당시 '뮤'라는 게임을 하던 사장님에게 와우 클베 보여주면서 '앞으로 피씨방에서 10년은 이 게임을 보게 될겁니다'했던 기억도 나고..

지금은 점유율이 많이 줄었지만, MMORPG 중에서는 세계적으로 사실상 독과점 상태
중국에서는 한국 서버에 접속해서 이걸로 알바해서 돈 벌기도 한다. (일명 작업장)

와우 안에 사회가 있고, 따라서 경제도 있다.


워크래프트3에서 시작된 스토리를 잇고 있지만, 정작 와우가 처음 나왔을 때는 직접 그 스토리를 잇지 않고,

이런 저런 떡밥들만 던지면서 스토리가 겉돌다가 출시된지 5년 뒤에야 그 바로 뒤의 스토리를 잇는 확장팩이 등장하는데, 그게 바로 '리치왕의 분노'

타락한 아들이 'succeeding you, father'라며 왕인 아버지를 죽이는 패륜이 2002년에 나오는데, 그 스토리의 끝이 2010년에 난 셈
25인이 몰려가서 리치왕을 때려잡는데, 거의다 잡으면 '여기까지는 테스트였다!'라는 기세로 플레이어들을 다 죽이고, 자기 편으로 만들려고 한다.

이때 얼음에 갖혀있던 대인배 영웅이 리치왕에게 달려들어 주 무기인 칼을 부러뜨림
타락의 근원이며, 아버지를 죽인 그 칼이 부러지자 그 칼에 묶여있던 아버지의 영혼이 나와서 플레이어들을 되살리고,

아들은 죄값을 치루게 되어 아버지의 품안에서 죽게 된다는 내용.

10년전에 보다 만 미드의 끝을 지금 보는 느낌이랄까..
베르세르크의 완결편을 보는 느낌..

리치왕에게 가는 던젼은 2010년 공부 시작하기 전에 조금씩 열리고 있었는데,

정작 리치왕이 열리고 잡혔다는 소식까지 들었지만 공부하느라 못 들어 가봐서 매우 아쉬웠다.
그래서 공부 끝나자마자 가서 딱 잡았는데, 매우 감동적이었음..

그런데, 한 두어번 잡고 나니, 그 뒤로는 재미가 없어져 아예 접속을 안했다.

사실은 그보다 리치왕이 자꾸 쓰러지는게 아쉬워서.. 스토리가 끝나는걸 계속 봐야되니까..

아래 동영상은 세계 최초로 리치왕을 잡은 사람들의 동영상
사람들이 음성채팅으로 주고 받는 내용과 본 영상에 대한 적절한 편집이 들어가있다.


http://youtu.be/RSeVCw3hVgQ?t=17m4s


막상 게임을 하면 정신 없지만, 이렇게 보니 이 씬에 대한 연출은 블리자드에서도 매우 신경쓴 티가 난다.
'아이러니'라며 플레이어들을 '언데드'로 부활시키려는 리치왕과 진작 나오지 인제서야 나오는 티리온,

그리고 깨진 서리한에서 풀려나 '마침내 풀려났구나! 아들아, 다 끝이다. 응보의 시간이 왔다! (Free at last! It is over, my son. This is the moment of reckoning.)'라고 말하면서 플레이어들을 다시 '인간'으로 부활시키는 아버지까지..

묶였던 모든 스토리를 이런저런 반전을 넣어가며 잘 풀어낸 좋은 연출이다.



제주도 갈때마다 가본다 가본다 하고 못 가보다가 이제서야 가본 서연의 집!

영화 촬영 당시의 건물은 촬영용으로 지어져 안전하지 못 했던데다가 지난해 태풍으로 무너졌다고 한다.


다시 짓는다는 말은 그 전부터 있었는데, 2012년 9월 착공하여 올해 3월 27일에 새로 오픈하였다.




입구에서 맞아주는 까페 안내 문구!





평일이지만, 추석 연휴가 있는 주의 월요일이라 그런지 사람은 많았다.


까페 주변은 그냥 민가이기 때문에, 주변에 거주하시는 분들의 입장에서는 까페 오픈과 더불어 갑작스레 늘어난 유동인구로 정신없진 않을까 걱정되기도 했다.








입구를 지나면 바로

엄태웅과 한가인이 므.. 므흣했던!

아.. 아닙니다..







실외를 보면, 햇빛을 쬐며 바다를 볼 수 있는 비치체어가 마련되어 있다.

근데 아직 햇빛이 너무 강해서 사람들은 많이 없었고 ㅎㅎ





사진에 흰티 입으신 분이 이곳에서 일하시는 분들의 옷을 입고 계신데,

GEUSS......


까페 곳곳에 영화의 디테일을 보여주는 요소가 많이 있다. 예를들면,






입구를 지나면 나오는 우물가

발자국




영화 소품으로 사용된 CD플레이어와 전람회 CD



반사된 면이 있어 조금 아쉽긴 하지만, 승민이 서연에게 준 집 모형





영화를 본 이들에게 승민, 서연보다 더 많이 기억된 납득이





이 집의 매력은 단연 파노라마 창문인데, 역시나 사람들로 가득 차 있어 빈 창문을 찍을 수 없었다.




건물 전경에서도 볼 수 있듯 2층의 기와는 없어졌다.

하지만, 잔디밭은 그대로 있다.




2층 올라가는 계단 벽

(사실 2층에서 1층 내려가는 계단 벽)







2층에도 1층과 마찬가지로 넓은 파노라마 창문이 좋은 채광을 제공하고 있다.







지난 십년보다 앞으로의 십년이 더 빠르게 지나가겠지..









2층 야외 잔디에는 사람들이 들어가지 못하게 줄을 쳐놨다.

(그럼에도 불구하고 들어가서 사진 찍더라.. 제발 하지 말라는건 하지 말아주세요)




영화를 보고 가시는 걸 추천합니다!

곳곳에 마련된 깨알 같은 요소가 더욱 재밌을겁니다!


주차할 공간은 까페와 조금 떨어진 곳에 있습니다.

주차하시고 돌담길을 따라 걸어가시면서 제주 바다를 감상하시는 것도 좋을 것 같습니다!


가격은 일반 까페 수준이며, 바나나 쉐이크, 감귤 쉐이크(탠져린쉐이크?)와 같은 과일 음료 메뉴도 있습니다.


공간은 넓지 않은 편입니다.

여유롭게 쉬는 목적보다는 영화 촬영지를 방문하는 기분으로 가시는 것이 더 좋을 것 같습니다!


위치는 제주의 남쪽에 있는 서귀포(서귀포 이마트, 제주 월드컵경기장 부근)에서 약간 오른쪽에 있습니다.

여행 일정 짜실때 참고하세요~

























10월 1일 구리 한강 시민공원

 

지금은 고쳐서 스샷 찍는게 불가능한데, 윈도우7에서 원격데스크톱 설정이 없어질 때가 있다.

홈에디션의 경우 그 기능이 원래 없다. 그러면 패스.

하지만 나는 홈에디션 이상을 쓰고 있는데, 왜 원격데스크톱 설정이 없을까?

그건 인증을 안해서다.


인증을 하면, 적용된 설정을 위해서 재부팅해야한다고(강제는 안함) 알려준다.

그리고 재부팅하면 브라보! 원격데스크톱 설정이 돌아온다.

어디에도 없는 팁.

아마 윈도우 새로 설치 후 인증이 빠졌을 때 나타나는 증상인 것 같다.

시스템 정보에는 인증이 된거로 나오지만, SLIC 2.1 상에서 인증이고, 실제 인증 과정을 거치지 않으면(XRM-MS 등록 및 시리얼 등록) 이런 증상이 발생하는 것 같다.


테스트 한 PC는 윈7 64bit, 얼티메잇 OEM판. 
#!/bin/bash

A="abcd dcba"
B=A
C=${!B}
echo $C
0. 들어가며

2Byte 문자셋을 사용하는 민족의 서러움은 1Byte로 표시 가능한 문자를 사용하는 영어권 사람들이 개발한 컴퓨터를 사용할때 자주 나타난다. 리눅스에서 iconv와 같은 툴(경험상 100% 완벽하진 않은 것 같다.)이 이러한 문제를 많이 해결해주고 있지만, MP3 태그는 스크립트를 짜거나 파일별로 노가다를 해야할 정도이다.
이번 포스트에서는, 파일명이 트랙번호, 가수, 노래제목을 포함하고 있는 mp3 파일에 대해 태그를 적용하는, 윈도우의 TAG&RENAME과 같은 프로그램의 맥버젼을 소개한다.

1. TriTag

"MP3태그 맥 문자셋"이란 키워드로 검색하던 중, 애플포럼에서 비슷한 고민을 하시는 분의 게시물이 발견되었다.(출처: 애플포럼) 유료프로그램인 MP3 rage와 무료인 TriTag가 언급되었는데, 여기서는 무료프로그램인 TriTag를 사용한다. 위의 제목을 클릭해도 되고, 이곳을 클릭해도 된다. 혹은 http://durl.me/6dmrk

2. 사용법


보자마자 필이 딱 온다. TAG&RENAME과 비슷한 구조. 드랍다운 메뉴인 "MODE"를 클릭하면, 파일이름에서 ID3 태그를 추출할 것인지(Filename -> ID3 Tag), ID3태그를 바탕으로 파일이름을 작성할지(ID3 Tag -> Filename) 결정할 수 있다. 여기서는 파일이름에서 ID3 태그를 추출하여 저장하는 (Filename -> ID3 Tag)로 둔다.

다음 과정으로 파일명에서 어떤 식으로 ID3 태그의 구성요소인 Artist, Track Name, Track Number, Album Name 등을 추출할 것인지 규칙을 정해줘야 한다. Filename pattern 아래의 공란에 그것을 적어주면 되는데, 사용법은 그 아래에 되어 있다.
예를들어, "001 아이유 - 나만 몰랐던 이야기.mp3"와 같은 파일의 경우, "트랙번호 가수 - 노래제목.mp3"의 형태로 트랙번호와 가수, 노래제목을 파일명이 포함하고 있다. 이럴 경우 %n %a - %s와 같이 입력하면, TriTag가 알아서 추출해준다. 그리고, 한번 만든 Filename pattern은 여러 파일에 대해서 적용 가능하다.
이게 어렵다. 나는 예제를 통해 하고 싶다. 하는 사람이 있다면, Pattern Builder라는 것을 써보면 된다. 패턴빌더를 사용하기 전에 예제 파일을 추가해야한다. 


위와 같이 패턴 빌더를 띄우면, 추가된 파일의 제일 위에 있는 파일명을 예제로 꺼내와서 띄워준다. 현재 위의 스크린샷은 "아이유"라는 글자가 있는 곳이 Artist로 채워야할 내용이 있는 곳임을 알려주기 위해 해당 위치를 블럭잡아둔 상황이다. 이제 저 위치가 어떤 값인지 알려주기 위해 아래 Available descriptions 아래 드랍다운 메뉴를 눌러보면,


위와 같이 Artist에 체크가 되어 있지만, 그래도 Artist에 다시 클릭을 해주면, 아이유라는 글자가 파란색으로 바뀐다. 이는 Filename 아래에 필드별로 어떤 색깔로 저장될지 나타내는 범례에도 표시되어 있다. 나머지도 마찬가지로 작업해주면, 아래와 같이 될 것이다.


"001"이 있는 위치는 Track number로 지정되었고, "아이유"라는 글자가 있는 위치, 즉, Track number에서 한칸 띄고, 아이유라는 글자 다음인 '-' 앞까지의 글자는 Artist로 지정되었다. 그리고 '-'에서 한칸 띄고 "나만 몰랐던 이야기"는 Track title로 지정되었다. 여기서 '-' 글자는 아무것도 지정하지 않는다. 그냥 구분자의 역할을 한다.(사실 white space도.)
이제 Close dialog and adopt pattern을 클릭하면 된다. 그리고 메인 창에 돌아와 Apply를 클릭하면, 추가된 모든 파일에 대해 위에서 설정한 pattern 대로 파일명으로부터 ID3 태그를 추출하게 된다.


3. 결과 및 마치며

아주 잘된다. 매우 만족스럽다. 이런 프로그램 너무 필요했는데, 잘됐다. 윈도우판 TAG&RENAME에 버그가는, 게다가 공짜!

증상
전원 버튼을 눌러도 응답이 없고 가끔 전원 LED가 켜졌다가 꺼진다

해결책
참고 : http://support.apple.com/kb/HT3964?viewlocale=ko_KR

SMC 리셋
MC207KH/A의 경우 "사용자가 분리할 수 없는 배터리가 장착된 휴대용 컴퓨터에서 SMC 재설정"을 참고
0. 들어가며

  맥북을 구매한지 꽤 시간이 지났다. 딱히 MAC OSX(이하 OSX)를 사용하면서 불편함을 느낀적은 없으나,
if(BROSWER_NAME=="IE") 천국();
else 지옥();
인 국내 사정상 IE가 꼭 필요한 때가 있다. 물론 패러럴즈로 그 부분을 카바하면서 살았지만, 그래도 완전히 재부팅 하는 것이 나은 상황(예를들면 인강)을 대비해서 부트캠프를 이용하며 OSX와 저번에 학생판으로 구매해둔 윈도우7을 멀티부팅 할 수 있도록 시도했다.



1. 준비물 및 테스트 환경

  • 정품 윈도우CD
  • OSX 설치CD
  현재 필자가 가지고 있는 정품 윈도우CD는 윈도우7 프로페셔널 학생판으로, 윈도우XP나 윈도우비스타가 설치된 환경에서 업그레이드 용으로 사용 가능한 버젼이다. 설치 중간에 꼭 "업그레이드(U)"를 눌러 설치해야할 필요는 없고, "사용자 정의(C)"에서 위에 나열된 윈도우(XP or VISTA)가 설치된 파티션이 하나라도 보인다면 해당 파티션을 포맷하고 다시 설치도 가능하다.
  OSX 설치시디는 SNOW LEOPARD 10.6.1이고, MC207KH/A에 기본으로 포함된 설치CD이다.
  필자는 윈도우 3.1부터 사용했고, 95, 98을 거쳐 NT 기반의 2000시대에서부터 윈도우 간의 멀티부팅, GRUB를 통한 윈도우와 리눅스의 멀티부팅(당시 리눅스는 레드햇7.2) 등을 다수 시도했고, 성공시킨 전력이 있었다. 그럼에도 불구하고 간단하겠지 맥처럼 편하게 잘 해 놨겠지 라는 안일한 생각에 오랜 시간 삽질하였다.



2. 주의사항

  가장 중요한 것은 파티셔닝을 잘 해야 한다는 것이다. 파티션을 다시 잡기 위해서 가급적이면 OSX도 새로 설치하는 과정에 진행하는 것을 추천한다. 파티션을 조정하다가 자칫 잘못하다 OSX의 파티션도 날리게 되고, 그렇게 되면 중요한 자료도 같이 날아갈 수 있기 때문에 이제 막 사용을 시작하려는 새 OSX에 부트캠프를 성공한 뒤에 OSX와 윈도우 환경에 설정 등을 적용하는 것이 낫기 때문이다.



3. 파티션과 윈도우 설치

  키 포인트는 다음과 같다.
  1. OSX 상에서 "응용프로그램"  → "유틸리티"  → "부트캠프 지원"을 찾아 "부트캠프 지원"을 연다.
  2. "부트캠프 지원"으로 적당한 양만큼 윈도우 파티션을 잡는다. 상위 대부분의 용량은 OSX를 위해 남겨두고, 아래 영역을 윈도우 용으로 잡는다.
  3. "부트캠프 지원"에서는 윈도우 파티션을 FAT32로 잡는데, 32GByte를 최대 용량으로 인식하고 32GByte를 프리셋으로 지정해두었다. 검색하던 중에 32GByte까지만 인식한다는 글을 얼핏 스쳐 봤기 때문에 이번 시도에서는 윈도우 파티션을 32GByte만 잡았다. 사실 게임할 건 아니니까.
  4. 윈도우 설치CD를 넣고 재부팅하면 부팅 화면 중에 option(alt)키를 누를 것도 없이 바로 CD로 부팅이 되게 된다.
  5. 아주 중요한 키포인트 첫번째 : 절대로 무인설치나 자동설치를 쓰지 않는다. 설치 과정에서 손대야 할 것들이 몇가지 있기 때문이다.
  6. 윈도우 설치 과정에는 대부분 어느 파티션에 윈도우 설치할래? 라는 문구와 함께 디스크 유틸리티를 준다. 아주 중요한 키포인트 두번째 : "부트캠프 지원"에서 윈도우 용으로 잡았떤 아래쪽 32GByte에 바로 설치라고 누르면 안된다. 또한 볼륨을 삭제해서도 안된다.
  7. 이제 해당 볼륨을 잡고 NTFS나 FAT로 포맷을 해준다. 윈도우 설치 초반에 나오는 디스크 유틸리티에서 설치하고자 하는 파티션을 한번 더 포맷하라는 말이다.
  8. 그리고 나서 윈도우 설치 프로그램이 적절한 설치 파일들을 파티션에 복사하고 나면 재부팅을 하게 되는데, 이때 재부팅이 되지 않는다면 1의 과정을 다시 진행한다. 가끔 에러가 나서 아래쪽에는 이상한 진행바 같은 것이 있고, 위쪽에는 깜빡이는 프롬프트만 뜨는 이상한 상황에 갖히게 되는데, 이 경우 답이 없는 것 같다. 귀찮아서 이것에 대해 다시 찾아보진 않았다. "disk error.\n press any key to restart."에러가 발생할 수도 있다. 이럴 경우 1의 과정을 다시 진행하되, 2의 과정에서 기존에 "부트캠프 지원"에서 만들었던 파티션은 삭제하고 다시 만드는 것이 좋다. 한마디로 새로 하라는 뜻. re re re
  9. 윈도우 설치파일을 파티션에 복사하고 재부팅까지 성공하면 거의다 된거라고 봐도 무방하다.
  10. 잊지말고 윈도우 설치가 완료되자마자 OSX 설치CD를 윈도우 시스템에 넣고 부트캠프 지원 프로그램들(대부분 드라이버)을 설치하는 것이 좋다.
어디든 i386\WINNT.SIF 를 메모장을 열어

[UserData]
    ProductID=

부분에 적힌 씨디키를 받아 둔다.

예를들어, 학생판으로 구매한 윈도우7이 업그레이드 버젼이라 맥북에 부트캠프로 윈도우XP를 깔고 나서야 윈도우7이 깔린다면, 윈도우XP를 까는 와중에 맥북은 ODD를 내뱉지 않으므로 광미디어 표면에 적어둔 씨디키를 적을 수 없으니, 그걸 구웠던 메인 머쉰에서 ISO 이미지를 마운트 해서 해당 파일을 열고 씨디키를 적는다.

뭐 이런 상황이지. 아휴
0. 들어가며

 "고등학교 입학시험을 치른다."라는 말은 이제 오래된 말인 것 같다. 내가 현재 사는 지역이자 고등학교를 나온 지역인 경기도 광명시는 아직도 매년 중3 학생들을 대상으로 고입선발고사인 연합고사를 치고 있다. 고입 전형은 200문제인 연합고사를 100점 만점으로 환산하고, 내신을 200점 만점으로 계산한 뒤 합친 점수를 가지고 진행된다. 기타 자세한 전형방법은 신입생 입학전형 요항(출처: 광명북고)을 참고하면 되겠다.
 12년전 나도 연합고사를 쳤다. 말도 안되게도 광명시 중학교중 유일하게 우리 광남중학교(경기도 광명시 광명동 385-5 소재)는 중3때도 저녁 7시까지 야자를 했다. 학력 수준이 미달되는 중학교였기 때문이다. 그 덕에, '저주받은 이해찬 1세대', '단군이래 최저학력'에 속했던 나는 중3때도 했던 야자를 고1 고2때 안하는 기이한 학교 생활을 했다. 당시의 입시 스트레스는 여러 기사에서도 말했듯 대단했지만, 그래도 이 중학교를 벗어나 내가 저 고등학교에만 들어간다면, 비슷한 수준의 학생들을 만나서 '문제 학생들' 때문에 받는 스트레스 없이 학교를 즐겁게 다닐 수 있을 것 같았고, 실제로도 그랬다. 중학교때는 학기초 매번 진행되던 짐승들의 '풀리그' 스트레스가 있었는데, 고등학교 들어간 이후 주먹다짐 한번 한 적이 없었다.
 이제 이 지역에서도 옛말이 될, 올해 마지막 연합고사일에 고교 평준화에 대해서 몇가지 내 생각을 정리해보고자 한다.


1. 평준화를 찬성하는 입장들

  생각을 정리하기 전에 고교 평준화를 찬성하는 기사나 의견들을 몇가지 찾아봤다. 
  딱히 정치적인 성향을 따질 것 없이 전교조를 포함한 여러 사람들이 고교 평준화를 이야기하는 것 같다. 이유는 대개 비슷한데, 그것들을 몇가지 나열해보면,
  • 고입 스트레스
  • 평준화로 인한 학력저하는 없다.(오히려 상향되었다는 주장도)
  • 사교육비 절감
  • 평등한 교육 기회
등이 될 것 같다. 1974년 고교 평준화가 처음 도입된 이후 36년이 흘렀다. 이에 대해 많은 논란이 있었고 지금도 진행되고 있는 상태다.


2. 전국 900만의 아이들의 머리 속에 모두 똑같은 것만을 집어넣는 교육제도

  평준화를 반대하는 입장의 출발점으로 잡는 것은 학생들의 '수준차이'다. 모든 학생이 같은 수업을 듣는다 하더라도 알아듣는 바가 다르고, 그로 인해 수준차이가 발생하게 된다. '1+1=2'를 가르치면 어떤 학생들은 바로 알아듣고 '1+2=3'을 배울 수 있는가하면, 어떤 학생은 '1+1=2'를 계속해서 반복해줘야한다.
  이러한 분위기 속에서 손해보는 것은 누굴까. 수학능력이 좋은 학생, 뒤쳐지는 학생, 가르치는 선생 모두에게 손해다. 학생을 지도한다는 일에 손해라는 것이 있겠냐만은 효율적이지 못한 시간을 보낸다는 측면에서는 손해라고 불러도 무방하다.(여기에 또 교육에 어찌 효율성만을 따진다고 할 사람이 있을지 모르는데 그렇다면 교육제도는 왜이렇게 자주 바뀌는가. 학교 선생님 수는 왜 학생과 1:1로 맞지 않는가. 결국 효율성 문제)
  이러한 현실적인 문제를 짚고 넘어가지 않을 수 없는 것이 어떤 교육제도 하에서든 잘하는 학생과 뒤쳐지는 학생 사이에 수준차이는 발생하고, 그럼에도 불구하고 모든 학생들에게 똑같은 것을 가르친다는 것이다.


3. 비평준화. 진짜 문제인가?

  첫번째 링크 고입 연합고사 날, 다시 돌아본 고교평준화에 보면 글쓴이는 다음과 같은 논리를 전개한다.
학생의 본연은 공부이지만, 그것에만 충실하는 것은 문제가 된다.
비평준화 지역은 공부에만 충실하지만, 비평준화 지역 학생들은 학업에 대한 부담이 적어 공부 외에 여러가지를 할 수 있다.
그치만 성적은 평준화 이전에 비해 떨어지지 않는다.
뭔가 모순이 있다. 학업에 대한 부담도 적도 학생의 본업인 공부하는 시간이 적음에도 성적은 떨어지지 않는다? 게다가 학교에서 가르치는 내용은 평준화 전이나 후나 같을 것인데, 비평준화 시기에는 주입식 교육만이 강화된다? 심지어 평준화 이전에는 21세기 사회적 트렌드에 맞지 않는 수동적 학생만을 양산한다고 되어있다.
  글쎄.. 공부 잘하는 학생들끼리 모아서 학교를 운영하는 것이 어떻게 21세기 사회적 트렌드와 수동적 학생과 연관이 있는지 비약이 있는 것 같군. 아무래도 글쓴이는 '비평준화=주입식 교육'으로 생각하는 모양이다. 가르치는 내용에는 평준화 전이나 후나 큰 변화가 없는데도.
  또한, 평준화가 교육 기회를 균등하게 부여한다고 했는데, 그래서 강남과 목동, 노원구 등 교육열이 강한 지역과 그렇지 않은 지역이 나뉘게 되는 것인가? 그래서 자녀 교육 때문에 총리 예정자는 청문회에서 '맹부삼천지교'를 시인하게 되고 청와대도 그것을 인정 하는 것인가 말이다.
  물론 학력에 대한 부담감을 덜어주는 것은 사실이다. 왜냐면 딱히 공부 열심히 안해도 고등학교 잘 보내주거든. 하지만 그렇다고 그게 더 큰 스트레스인 대입 수능에 대한 부담감을 줄여주느냐? 그것은 아니다. 연합고사를 본다해도 대입 부담감이 줄어드는 것은 마찬가지로 안니다.

 세번째 링크 학벌철폐] 교복이 낙인이 되는 곳에 보면, 광명시의 이야기가 나와있는데, 광명시에 내 평생 중 첫 6개월과 군대 2년을 제외하고 나머지를 보낸 사람으로서 동네 사정을 잘 반영하지 못하고 현실적이지 못하다. 그저 고입을 까고 들어가는 색안경을 끼고 보기 때문에 그렇다. 게다가 광명시에 있는 학원에서 일도 해보니 더욱이 현실과 다름이 느껴진다.
 같은 글에서 평준화로 인한 학력 저하의 근거는 없다고 하면서, 단지 '좋은' 대학에 진학한 학생 숫자에만 근거한 상향평준화를 이야기하고 있다. 그러면서 사교육비 이야기를 하고 있는데, 그렇다면 저 '좋은' 대학에 진학한 학생들은 사교육을 안받았다는 것인가. 그렇다면 이건 정말 신문기사(<수능 세영역 만점 임수현 양 "학원 한번 안갔죠">)에나 날법한 학생들을 200명 정도 데리고있다는 이야기다. 실로 강남권 아줌마들에게 희소식이 아닐 수 없다.
  또한, 평준화 지역에서는 수능이나 논술을 대비하면서 폭넓게 공부한다고 하는데, 수능이나 논술이 어찌 폭넓은 공부가 된단 말인가. 난 또, 21세기형 트렌드에 맞춘 '봉사하는 학생', '글로벌 인재 육성 과정', '학업 외에 대학 과정의 공부하는 학생', '책을 읽고 독서토론회'등이 이루어진다면 모르겠다. 현실은 어떠한가. 어차피 평준화 지역의 고등학생들도 대입 앞에서는 어쩔수 없다. 앞서 이야기한대로 단지 1년 늦춰지는 것이다.
  고교 평준화를 외치는 부모님들, 그렇게 따지면 고교 평준화보다 중요한 것이 대학교 평준화입니다. 고교 입시보다 더한 스트레스는 대입 스트레스입니다.


4. 잘하는 학생은 더 잘할 수 있도록 면학분위기를 조성해야

  평준화를 반대하고 비평준화를 지향하는 가장 큰 이유는 공부하는 학생들에게 공부하는 면학 분위기를 조성해 주는 것이 교육의 기회를 균등하게 부여하는 것보다 더 중요하다고 생각하기 때문이다. 평준화의 모순은 '모든 학생에게 같은 공부를 시킨다.'에서 출발한다. 하지만 현실은 어떤가. 한 반에서도 같은 수업을 들어도 알아듣는게 다르고 학업 성취능력이 다르다. 그러한 개인차를 무시하고 '모든 학생에게 같은 공부를 시킨다'는 것 자체가 모순 아닌가.
  또한, 모든 학생이 고등학교 졸업 후에도 계속해서 공부를 한다는 착각을 가지고 있다. 요새 추세로는 대부분 대학을 가겠지만, 대학을 가는 과정에서 일부는 지속적인 공부를 하지 않고 다른 진로를 택할 수도 있다.
  만약 고등학교 교육이 대한민국 국민으로서 갖춰야할 기본 소양을 가르치는 교육이라고 한정한다면, 평준화 제도가 말하는 부분은 어느정도 맞을지도 모른다. 허나 현재 고등학교 입시 상황의 주된 목표가 기본 소양 뿐만 아니라 그것을 평가하는 '대학 수학 능력 시험'에 초점을 맞추고 있는 상황에서 모든 학생이 같은 공부를 해서 같은 학업 능력을 보인다면, 무엇으로 변별력을 갖춘단 말인가. 다른 아이들보다 내 자녀는 더 좋은 학업성취를 보이게 하려고 잘 사는 사람들은 더욱 더 사교육을 시키게 된다. 아무리 막아도 어차피 시킬 사람은 시키고, 그 사람들 보고 나머지 사람들도 따라가고, 잘사는 사람은 더 시키는 악순환이 반복되는게 현재 상황이다. 고교 평준화를 포함한 제도적 장치로 사교육비를 경감시킨다는 것은 눈가리고 아웅인게, 어차피 할 사람들은 다 한다. 오히려 진짜 돈 많은 사람만이 할 수 있는 분위기를 조성하게 되어 그로 인해 교육 격차가 나게 할 수도 있다.
  고교 서열화를 통해 위화감이 조성된다고 했는데, 마치 대학에서는 그렇지 않은양, 사회에서는 그렇지 않은양 말한다. 짧지만 30년 조금 부족한 삶을 살아보니 어차피 서열화 되고 위화감과 상대적 박탈감 속에 살아가는 것이 세상살이인 것 같다. 어차피 고등학교 다니면서 모의고사도 칠텐데 한반에 ±4~5등급 정도로 스펙트럼이 나뉠 것이 1~11등급까지 전구간 스펙트럼으로 나뉘게 되면 이 역시 위화감을 조성하는 것 아닌가. 성적에 신경쓰지 않는 학생들에겐 무의미한 숫자에 불과하겠지만, 그렇다면 이런 학생들에게도 1등급의 학생들과 같은 수업을 한다는게 말이 되는 소리냐는 앞의 논점으로 되돌아오게 된다.

  일반 고등학교에서도 특목고 못지 않게 학업 성취도가 높은 학생들이 많이 있다. 이러한 학생들에게도 특목고와 같이 잘하는 학생에게 더 많은 교육의 기회를 주고, 잘하는 학생들끼리 모여 같이 공부하고 열심히 공부하는 면학 분위기를 조성해주는 것이 어른들의 몫이 아닌가 싶다. 이러한 분위기가 한번 형성되고 잘 유지된다면 선생의 역할은 그야말로 대폭 축소될 수 있다. 시키지 않아도 알아서 하는 유토피아적 면학 분위기. 유토피아는 현실에서 존재할 수 없지만, 이러한 면학 분위기는 충분히 조성 가능하다. 실제로 목격도 했고.
  백년대계 교육의 핵심은 단순한 지식의 전달을 넘어, 면학분위기 조성, 그리고 더 나아가 이러한 분위기 속에서 학생이 졸업하고 사회에 나갔을 때, 어느 위치에 있든 자신의 본분에 최선을 다할 수 있는 능력을 키워주는 것이 아닐까. 수동적 학생, 21세기 트렌드에 맞지 않는 학생? 그런 것은 교육 내용 자체에서 문제점을 찾아야지 평준화 비평준화로 따질 문제는 아닌 것 같다.
보통 조리개 우선으로 찍고 가끔 매뉴얼, 야경시에는 벌브로 찍기 때문에 다이얼은 이 3가지만 사용해왔다.
C모드는 내가 알기로 설정값을 저장해놓고 쓸 수 있는 모드로 알고 있는데, 막상 C모드로 돌리면 P모드처럼 작동했다.

어딘가 C모드를 설정하는게 있을텐데..
5D 매뉴얼을 뒤지니 147쪽에(첨부파일 75쪽) 설명이 나와 있었다.

자세한건 아래 첨부파일을 참고!

다시는 유리로 둘러쳐진 건물 따위는 거들떠도 안보겠다고 다짐했는데.. 정자역 가까이에 위치한 NHN 그린팩토리


  길고 긴 NHN의 면접 단계들이 끝나가고 있다. 전공시험, 1차 인성/기술면접에 이어 각자 인터넷을 통해 수행하는 인성 테스트, 그리고 2차 임원면접까지 시험이 많아서인지 유난히 길게 느껴진다. 임원면접이라고는 하지만, 대개 다른 기업들도 부장급이나 팀장급이 면접관으로 나오고, 
NHN 자체가 나이가 많은 기업은 아니기 때문에 큰 부담은 없었다. 사실 부담이 없었다기 보다 부담없이 가는게 좋을 것 같아서 일부러 그러려고 노력한 것도 없지 않고.



최근 We connect you to the world를 잘 하고 있는가에 대해 심각한 도전을 받고 있는 NHN



  NHN하면 네이버라는, 전 세계에서 구글이 유일하게(?) 정복하지 못한 가장 강력한 박힌돌을 운영하는 회사이다. 한게임을 인수해서 게임 사업도 진행하고, 미투데이나 네이버 포탈을 이용해서 많은 다양한 사업을 진행중인 것으로 안다. 태생이 검색엔진이었기 때문에 주요 사업은 검색엔진이라고 할 수 있겠으나, 최근 네이버 검색의 폐쇄성 때문에(관련글: 한국 인터넷에서 잘못 끼워진 첫 단추, 그 이름은 네이버 (NAVER) - 조성문선배님의 블로그, 네이버 검색창의 폐쇄성, 지나치다 못 해 황당깜신의 작은 진료소) 포풍처럼 까이고 있다.
  사실 나부터도 전산실 관리자를 시작하던 2007년 여름부터는 메인 검색엔진이 구글로 정해졌다. 서버 삽질은 대개 영문 검색이 지원되야 하는데, 네이버의 영문검색은 매우 빈약하다. 위의 링크에 달린 글들도 비슷한 내용을 담고 있지만, 네이버 검색 결과는 대부분 자체 컨텐츠인 블로그, 까페, 지식인을 기반으로 한 검색결과를 보여준다. 안에서만 내용이 돌고 돌다보니 잘못된 내용이 수정될 기회를 잃게 되고, 정말 필요한 정보는 광고에 묻혀 뒤로 밀려나게 되는 경우가 많다. 아예 안 띄워주는 경우도 많고.
  문제는 면접 보러 가는 아침에도 그런 트윗을 많이 보면서 갔다는 것이다. 이걸 면접관들한테 해? 말어? 구직자 입장에서 그런 위험한 생각은 큰일이다. 안들어가면 장땡이라고 생각할 수 있지만, 사람이란건 언제 어디서 만날지 모른다. 후에 다시 그분들을 뵈었을 때, '아 당신 저번에 면접보러 와서 앞뒤 안가리고 막 말하던 그 사람이구만?'이라고 한번에 기억해낸다면? 정말 괴로울지도 모른다.



컴퓨터 그래픽으로 렌더링된 것 같은 디자인의 설치조형물!? 저거 다 진짜 책인 것 같았다.


  어쨌든 NHN 사옥 자체는 매우 매력적이었다. 앞서 가본 SKT의 T타워는 새벽같이 도착한지라 1층도 제대로 둘러보지 못해서 아쉬웠는데, 이번에는 그래도 방문증을 가지고 내부를 조금이나마 둘러볼 수 있었다. 내부 사람들에게만 공개되는 공간에서 사진을 찍는 것은 실례가 되는 것 같아 1층에서 안내하시는 분의 동의를 구하고 몇컷 담아왔다. 아쉬운게 있다면 면접을 보는 4층에조차 샤워실이 있다는 거랄까........ 학부때 후배들에게 '대학원 선택할 때, 절대로 샤워 시설이 있는 랩은 가지 마라'고 해놓고 나는 샤워실 있는 연구실도 가고, 샤워실을 잘 갖춘 NHN도 쓰는구나.....



  2차 면접은 3대 3으로 진행됐다. HR에서 한분, 현업 임원 두분과 피면접자 3명이 대면하는 방식이다. 그간의 면접들이 너무 평이해서였을까. 이번 면접은 비교적 압박면접이었다. 피면접자의 답변을 더 뚫고 들어가는 질문이야 예상했지만, 면접관으로부터 질문이 되돌아오는 시간이나 질문의 속도, 그리고 일관성에 관한 질문들이 날카롭게 느껴졌다.  또한 쌩뚱맞는 질문들도 있었는데, 같이 면접실에 들어간 분이 잘 대답해주셔서 무난히 넘어갈 수 있었다. 사실 면접보는데 자기자신의 준비도 중요하겠지만, 누가 같이 들어가느냐는 더 중요한 것 같다. 아무리 준비를 잘해도 앙칼진 목소리로 상대를 까는, 기가 센 피면접자와 같이 면접을 보게 되는 상황에서 자기가 준비한 것을 십분 발휘하기란 정말 어렵기 때문이다. 다행히 3:3에서 피면접자 한명은 참석하지 않았고, 같이 본 분은 무난하게 이끌어가는 능력이 있어 정말 다행이었다.

  생각나는 질문을 몇가지 적어보면,
0. [공통]자기소개를 간단히 해보세요.
1. [나에게]왜 대학원 휴학했는가: 연구가 맞지 않아서, 너무 무난한 것 같아서, 친구들과 무언가 준비하는 것이 있어서 그런 것도 해보고 싶었다.
2. [나에게]무난하고 평탄한 것을 버리고 나왔는데 취직하겠다고 하는 것은 모순된 것 아닌가(시작부터 이런 질문을 받아서 약간 난감했지만): 더 큰 것을 배우고 싶다고 친구들과도 시작할 때 이야기한 상태다. 대학원은 돌아가지 않을 것이다.
3. [또다른 피면접자에게]어학연수를 뉴질랜드로 갔는데 뉴질랜드를 택한 이유는?
4. [또다른 피면접자에게]뉴질랜드에서 추천할만한 여행 장소는?
5. [또다른 피면접자에게]학교를 오래 다녔는데 그 이유는?
6. [공통]NHN에서 필요로하는 인재상은 무엇이라고 생각하며 자신이 그에 얼마나 적합하다고 생각하는지 어필해보세요.
7. [공통]오늘 아침 여기까지 오면서 든 생각을 말해보세요.
8. [공통]타인에게 비쳐지는 자신의 장점과 단점을 말해보세요.
9. [공통]둘 중 한명만 합격시킨다면 누가 됐으면 좋겠는가: [두명이 같이 대답]둘 다 같이 됐으면 좋겠다.
10. [공통]서로 옆을 보면서 서로의 장점과 단점을 하나씩 이야기해보세요.
11. [나에게]집단 내에서 자기 주장을 하는 편인가 아니면 주장을 따르는 편인가: 서로 다른 주장을 잘 융합하려고 노력하는 편이다.

  기타 등등 여러가지 있었지만, 이번에도 마찬가지로 40분이라는 면접 시간이 짧게 느껴질 정도로 후딱 지나가버렸다. 면접비는 많은 편은 아니지만 차비 하기엔 충분하고도 넘쳤다. 정자역이나 서현역이나 모두 공영 환승 주차장이 있어서 주차 문제는 없다고 봐도 무방했다.



  아래는 보너스. 1층에 있는 NHN스토어에서 산 달력.
012

+ Recent posts