컨텐츠로 건너뛰기

댓글 데이터를 활용한 분석

소셜 미디어 댓글에는 컨텐츠에 대한 구독자들의 반응을 찾아볼 수 있는 구체적인 정보들이 숨어있다. 댓글 분석 기술의 연구 분야로 Short Text Analysis는 최근 많은 연구가 진행되는 연구 분야 중 하나 이다. 최근 웹에서 생성되는 텍스트 중 높은 비율로 댓글과 같은 Short Text가 차지하고 있기 때문이며, 실제 서비스에 적용되는 사례가 많기 때문이다.

Short Text 분석은 기존에 사용하던 단어 빈도수 기반의 분석 기술로는 깊은 인사이트를 찾기 힘들다.

검색엔진 기반의 분석 기술들은 단어의 발생 빈도와 문서 간의 유사성을 활용해 키워드의 중요성 및 연관성을 추론한 후 해당 텍스트를 시각화 하거나 검색 어플리케이션을 활용해 결과값을 출력한다. 이 방법을 사용하기 위해서는 다음과 같은 가정이 필요하다

  • 문서 간의 연관성을 구할 수 있으며 연관성이 충분히 Reliable 해야 한다.
  • 중요한 키워드는 텍스트상에 반복적으로 많이 발생해야 한다.
  • 문맥과 고려하지 않고 분석을 하더라도 충분해야 한다.

만일 비교사학습(Unstructured Machine Learning) 방법을 사용한 클러스터링 기술을 사용한다 하더라도 유사한 문제가 발생할 수 있다. 결국 클러스터링 기법을 사용하기 위해서도 데이터의 양이 매우 중요해지기 때문이다.

Short Text의 특징을 정리하면 다음과 같다.

  • 단어들의 발생 빈도가 Sparcity 하다.
    • Sparcity함은 짧은 텍스트간의 연관도를 추론하기 어렵게 한다.
  • 분석 텍스트의 문맥을 파악하기 힘들다.
    • Short Text 자체적으로 문맥을 유추할 수 없다.
  • 분석 타겟 데이터만으로 텍스트를 이해하기 어렵다.
    • Short Text에 포함된 텍스트는 해당 도메인과 연결된 의미로 사용되는 단어들이 많아 그 자체적으로 의미성을 부여하기 어렵다.

Short Text를 분석하는 최신 연구

  • 지식베이스 활용
    • 짧은 텍스트에 관한 정보를 잘 만들어진 기존 지식기반의 데이터를 학습해 미리 이해할 수 있도록 한다.
  • Distributed Representation
    • 문서 빅데이터를 활용해 단어의 의미(Sematic)를 보유한 벡터로 표현할 수 있도록 학습한다.

Short Text 분석 관련 어플리케이션과 어플리케이션의 해결방법

  • 챗봇 – 사용자의 짧은 요청을 이해하는 솔루션
    • 사용자의 지난 요청을 함께 분석해 문맥을 유추한다.
    • 사용자에게 요청방법을 가이드한다.
  • 분류기
    • 사용자의 텍스트를 사전 학습한 데이터를 활용해, 분류 결과를 출력한다.
    • 도메인 별로 별도의 학습데이터를 활용한다.

 

그렇다면 댓글을 분석하기 위해서는 다음과 같은 부분이 필요하다.

  • 도메인에 대한 이해
  • 사전 학습데이터 구축
  • 어플리케이션에 적합한 기술의 조합

결국 댓글 분석은 분석 기법의 문제라기 보다 도메인별 데이터, 그리고 어플리케이션에 적합한 학습 모델 구축이 중요한 시사점이 되는 것이다.

파이썬 서버 셋업하기(Python Server Setup) feat. CentOS7, Anaconda2, Supervisor, Nginx

파이썬 서버를 간단하게 셋팅하는 방법을 공유합니다. 데이터 분석용 모듈을 다수 포함하고 있는 Anaconda2 버전의 파이썬을 사용하였고, 프로세스 관리를 위해 Supervisor를 사용 하였습니다. 그리고 웹서버로 Nginx를 사용하였습니다. 본 셋팅은 가장 기초적인 상태의 셋팅이지만, 향후 다양하게 운영할 수 있는 여지를 포함하고 있기 때문에 소규모의 상용 서비스에도 활용이 가능합니다.

  1. Build new VM
    1. AWS 기준으로 EC2 Market Place에서 CentOS 검색하시면 CentOS7이 가장 상위에 검색됩니다.
    2. 본 포스팅은 nano 사이즈(ssd 8GiB)로 테스트시 잘 동작하였습니다.
    3. 기본적인 AWS 셋팅은 생략하겠습니다. (ssh key, security group등)
    4. Connect to server
      chmod 500 key_filename.pem 
      ssh centos@00.00.00.00 -i key_filename.pem
  2. Install Anaconda2 (version 4.3.0 64bit)
    1. Install bzip2
      sudo yum install bzip2
    2. Download Anaconda2 Installer
      curl -O https://repo.continuum.io/archive/Anaconda2-4.3.0-Linux-x86_64.sh
    3. Install Anaconda
      bash Anaconda2-4.3.0-Linux-x86_64.sh
      1. 기본셋팅은 계속 Enter 치셔도 됩니다.
      2. 경로가 존재할 경우 설치되지 않습니다.
      3. 마지막에 경로설정 할때 yes 하셔야 정상적으로 경로가 지정됩니다. (엔터로 넘기시면 아나콘다버전으로 경로지정이 자동으로 되지 않습니다.)
    4. Reconnect to server for adopting PATH
      1. 파이썬 경로 설정 적용을 위해 재접속 합니다.
    5. Anaconda version update
      1. Anaconda 버전 최신화를 위해 업데이트 합니다.
        conda update anaconda
  3. Install Supervisor
    conda install -c anaconda supervisor
  4. Install Nginx
    1. Install Nginx
      sudo yum install epel-release
      sudo yum install nginx
    2. Registering proxy_pass on configuration file of Nginx
      1. Edit configuration file
        sudo vi /etc/nginx/nginx.conf
        location / {
            proxy_pass http://127.0.0.1:5000/;
        }
    3. Starting Nginx Server
      sudo systemctl start nginx.service
    4. Open the inner proxy network settings
      sudo setsebool -P httpd_can_network_connect true
  5. Install Git
    sudo yum install git
  6. Download python source code
    1. Git 으로 소스코드를 받아오기
      git clone "path of git repository"
    2. Install packages of python project
      python setup.py install
  7. Run python server using Supervisor
    1. Configuration
      1. Use sample configuration file
        1. Copy sample file
          cp anaconda2/lib/python2.7/site-packages/supervisor/skel/sample.conf \
          supervisord.conf
        2. edit file paths
          1. log, pid, etc..
    2. Supervisor에 서비스 등록하기
      1. Edit configuration file
        [program:sample]
        directory=/home/centos/sample
        command=python sample.py
        autostart=true
        autorestart=true
      2. Start supervisord daemon
        supervisord -c supervisord.conf
      3. Terminate supervisor for restart
        ps -ef | grep supervisord | grep -v grep \
        | awk '{print $2}' | xargs kill -9

 

cron scheduling format (cron 표현법) for spring @Schedule

@Scheduled(cron = "0 0 0 0 0 0")

위와 같은 방식으로 사용할 때 cron 표현법을 사용한다.

6개의 표현과 띄어쓰기로 이루어진 표현 – “0 0 0 0 0 0”

순서대로 설명해보자.

첫째 : 초를 표현한다. * – 매초, */5 – 5초마다, 0 – 0초에

둘째 : 분을 표현한다. * – 매분, */5 – 5분마다, 0 – 0분에

셋째 : 시를 표현한다. * – 매시, */5 – 5시간마다, 0 – 0시에

넷째 : 한달 중에 날짜를 표현한다. * – 매일, */5 – 5,10,15,20,25,30일에, 1 – 1일에, 1-10 1일에서 10일사이에

다섯째 : 달을 표현한다. * – 매달, */2 – 2월, 4월…12월(짝수달), 12 – 12월

여섯째 : 요일을 표현한다. * – 매일, MON-TUE – 월요일에서 화요일

 

이제 예시를 들어보자

5분마다 실행하기 : 0 */5 * * * *

업무일 (월 – 금) 의 점심시간 (12pm) 마다 실행하기 : 0 0 12 * * MON-FRI

매일 아침 9시부터 9시30분까지 5분간격으로 실행하기 : 0 0-30/5 9 * * *

 

  • Tip: 스프링에서 CronSequenceGenerator 를 쓰면 더 쉬울 수 있다.

Tips for Class Connection Representation using PlantUML

Distinguishing connecting representation.

Extension <|-- extension symbol
Composition *-- composition symbol
Aggregation o-- aggregation symbol

Normaly developers used to 3 types of line such as Extension, Composition and Aggregation for representing connectivity of classes.

For detail, let me explain each ones.

Extension is most simple. If you extend class using some interface or some abstract class then use Extension line that directed to upper interface or class.

Composition and Aggregation is little bit similar but I can explain differencies few point. Composition is used when class was directly used inside of directed class, that means that class has the property of other class. Aggregation is used when class was used to arguments of some functions or constructors. Aggregation doesn’t used for declaring inside of targeted class.

Let me show with examples.

Extension

class A2 extends A {
}

A2 -|> A

Composition

class A {
    B b = new B();
    B get(){
        return this.b;
    }
}

B -* A

Aggregation

class A {
    void use(B b){
        b.use();
    }
}

B -o A

Three types of connectivity can be explanin most of case the class structure, but if we need to some extended explaination, use note representation. That will be more clear then use other type of connection representation.

AWS S3 를 활용한 데이터 파일 관리 with Java Source Code

Spring Configuration File

@Configuration
@EnableContextResourceLoader
@EnableContextCredentials(
        accessKey = "",
        secretKey = "",
        instanceProfile = true)
@EnableContextRegion(region = "us-east-1")
public class AWSConfig {
}

 

Upload using InputStream

TransferManager tm = new TransferManager(amazonS3);
ObjectMetadata metadata = new ObjectMetadata();
byte[] contentBytes = IOUtils.toByteArray(inputStream);
Long contentLength = Long.valueOf(contentBytes.length);
metadata.setContentLength(contentLength);
Upload upload = transferManager.upload(bucketName, filename,
        new ByteArrayInputStream(contentBytes), metadata);
return upload.waitForUploadResult();

 

비용

40GB 당 약 $1 – 여러 아마존 통합기능을 고려했을 때, 충분히 저장소로 고려해볼 만한 비용

Java Spring DDD (Domain Driven Design) 설계 방법론 (2) – Project Packaging

프로젝트를 페키징 하는 것은 향후 유지보수화 소수 가독성을 위해 잘 고려될 필요가 있다. 각 레이어별 기능을 정의하는데 Package 단위로 정의하게될 가능성이 높기 때문이다.

일반적으로 스프링 프레임워크를 사용해 자바 프로젝트의 프로젝트 패키지를 설계할 때, 도메인 레이어의 핵심 비즈니스 로직을 포함하는 domain, 핵심 서비스 기능을 구현하는 application, domain과 application 패키지의 백업 기능을 구현하는 infrastructure, API 등 핵심 서비스 인터페이스를 구현하는 interfaces 로 구분할 수 있다.

예제 1.

  • domain
    • model
    • service
  • infrastructure
    • config
    • service-name-on-domain
  • interfaces
    • controller
    • facade
  • application

domain 패키지 부터 보면, 크게 저장 데이터를 제어하는 model 패키지와 기능을 제어하는 service 패키지로 나누어 볼 수 있다. model 같은 경우 @Entity 와 같은 hibernate class를 직접 넣어주거나, Domain class를 넣어 domain 기능을 class에 넣어주고 실제 디비 데이터는 infrastructure에서 저장해주는 방법을 쓸 수 있다. service 패키지는 DDD 설계중 서비스 파트 Interface들이 들어갈 수 있다.

infrastructure 패키지에서는 spring의 @Configuration 파일들을 넣어주고, Spring의 Injection 기능을 사용해 domain layer나 application layer에 존재하는 Interface의 실제 구현체들을 넣어주고, 해당 구현체 기능을 구현한다. 이때 패키지명을 각 service나 application의 이름을 활용해 infrastructure에서 구현하는 interface가 어떤 것인지 패키지명으로 확인할 수 있도록 하면 좋다.

interfaces 패키지에는 스프링의 controller와 각동 데이터 제어를 위한 facade를 패키지명으로 사용할 수 있다. controller의 기능인 validation 이나 view mapping, object converting 등을 interfaces 패키지에 넣어주자.

마지막으로 application 패키지의 구조는 각 기능에 맞게 다양한 형태로 설계 가능하다.

이렇게 크게 4가지 패키지로 나누었는데 이 포스트에서 제시한 방법은 수년간 DDD 설계로 서비스를 구현하면서, 복잡도 측면이나 기능측면에서 효율적인 형태라고 생각한 방법이다.

호그댁 공략 (4) – 클래시 로얄(Clash Royale)

  1. 왜 호그댁인가
  2. 호그댁의 공격 메커니즘
  3. 호그댁 조합법
  4. 상대 댁별 상대법

이 포스트에서는 대표적인 상대 댁별 호그댁 상대법을 설명한다. 주요 수비 및 공격 패턴을 알려줘 어떤점을 주의하고 할 때 승률이 올라가는지 이 포스트를 통해 확인할 수 있다.

이 포스트에서 설명할 상대 댁은 자이언트댁, 로자댁, 광부댁, 라바댁이다.

1. 자이언트 댁

자이언트 댁은 상성상 호그댁이 6:4 정도로 유리하다고 볼 수 있다. 기본적으로 타임어텍시 자이언트는 타워에 붙는 속도가 느리기 때문에 호그가 먼저 타워를 때릴 수 있기 때문이다.

자이언트댁을 상대하는 기본 매커니즘은 선공격 후수비 이다. 일단 자이언트를 들고 있다면 함께 들어갈 수 있는 프린스, 머스킷, 미니언 등을 함께 댁에 준비하고 있을 텐데, 방타가 없다면 호그찌르기를 막기 쉽지 않다. 일단 호그로 먼저 상대 타워에 딜을 넣어주면 상대가 유닛을 활용해 막고 자이언트를 앞세워 들어올 것이다. 이때 얼음골램등으로 맷집을 넣어주고 방타를 활용해 천천히 적 유닛을 잡으면 된다. 가장 효과적인 방타는 대포이며, 자이언트는 속도가 느리기 때문에 방타에 취약하다.

주의해야할 점은 마법을 섣불리 사용하지 말아야 한다는 점이다. 자이언트댁을 저코스트로 막을 수 있는 이유중에 하나가 마법을 사용해 함께 들어오는 유닛들을 처리할 수 있다는 점인데, 마법이 빠졌을때 상대의 한타를 막을 수 없어지는 상황이 올 수 있다.

팁 중 하나는 자이언트 댁에 속도가 비슷한 바바리안을 같이 쓰는 경우가 많은데, 이때 찌르기시 바바리안을 예측해 마법을 넣어줄 경우 상대에게 큰 피해를 줄 수도 있다.

2. 로자 댁

로자 댁은 기본적으로 자이언트 댁과 비슷하나, 방타 사용을 잘해야 한다. 로자는 먼곳에서 공격해 방타를 취약하게 만드는 경우가 많기 때문에, 로자라는 것을 인지했을 경우 모든 신경을 로자 막는데 써야한다.

로자댁을 상대하는 기본 매커니즘은 선 로자방어 후 역습이다. 로자를 잡으면서 남은 유닛과 호그를 함께 투입해 적 타워를 공략한다.

주의해야할 점은 항상 로자 뒤에 들어오는 미니언, 얼법등을 항상 고려해 맷집용 수비병력을 넣어주거나 마법으로 뒤에 들어오는 유닛을 끈어주는게 좋다는 점이다. 섣불리 미니페카같은 유닛을 내었는데, 미니언등에의해 정리되고 타워는 타워대로 공격당하고 하면 역습이 불가능해 진다.

3. 광부 댁

소개할 상대 댁 중에 가장 까다로운 댁이다. 저코스트인 광부로 타워를 공략하고 수비에 효율적인 카드를 사용해 호그를 막아주는 전략을 많이 사용하기 때문에 상대적으로 타워를 공략하기 힘들다.

광부댁을 상대하는 기본 매커니즘은 광부에 타워공략을 당하지 않는 것이다. 최대한 광부의 도착위치를 예측해 타워 대미지를 최소화하면 게임을 용이하게 가져갈 수 있다. 공격 방법은 광부 수비 후  공격을 기본으로 생각하면 된다. 고려해야할 점은 상대가 광부를 사용했을 지라도, 코스트가 충분한 상황이기 때문에 수비할 병력 사용이 용이하다는 점을 고려해야한다. 조합을 갖춰 찌르는 것을 항상 고려하자.

주의해야할 점은 광부 짤짤이를 무시하면 안된다는 점이다. 마지막에 로켓등으로 마무리 되면 너무 안타가워진다.

4. 라바 댁

라바 댁은 상대하기 가장 단순한 댁중 하나이다. 호그와 상관없이 라바만 잘 막으면 된다. 일단 상대가 라바를 사용하는 순간 호그를 사용해 찌르자. 라바 막는 것은 얼음골램, 감전, 미니페카, 머스킷 등으로 쉽게 제압할 수 있다.

기본 매커니즘은 라바에 공략당하지 않는 것이다. 호그로 일단 찌르고, 라바를 최대한 효율적으로 막자. 이 과정의 반복이고, 어느순간 적 타워는 없고 내 타워는 멀쩡한 모습을 볼 수 있다.

주의해야할 점은 라바를 수비하기 위해 유닛을 몰아 넣었다가 번개나 파볼에 다 죽으면 타워도 함께 날아간다. 적 마법을 항상 함께 고려해 수비하자.

 

호그댁은 어느댁을 상대하든 불리하진 않다. 운영만 잘하면 비슷한 레벨은 어떤 댁이 와도 이길 수 있다. 포기하지 말고 상대댁 수비 방법을 잘 고민해 호그로 승리를 쟁취하자.

 

 

장기계획 수립을 위한 고찰

2011년 6월 28세 처음으로 스타트업 다운 회사를 시작하고 거의 동시에 결혼을 했다. 이 블로그를 작성하는 2017년 1월 그 이후 만으로 6년 가까이 지났다.

처음 회사 운영이라는 것이 뭔지 모르고 좋은 멘토 조차 없었고, 그래서 많은 시행착오를 겪었다. 결혼생활은 또 어떠랴. 누구든 결혼은 처음 겪겠지만, 회사 생활 만큼 몰랐고 역시 시행착오는 많았다. 3년간 바로풀기라는 서비스를 만들고 1년 반 연구실 생활을 하고 다시 1년 반 스위즐에서 데이터 분석 서비스를 만들었다. 어느 것 하나 완전히 실패하진 않았지만, 어느 것 하나 만족스럽도록 완성시키지 못했다. 결혼 후, 2015년 초 귀여운 주연이를 얻은 것 말고는 뭐 하나 잘한게 없기도 하다.

바람에 이리저리 흔들리는 갈대처럼 느껴졌다.

스스로 모토로 생각하는 한 가지 명언이 있다. “바뀌려면 변해야 한다.” 누구의 성공을 보고 누구의 실패를 보고 있자면, 성공하는 자는 스스로 변할 줄 알고 실패하는 자는 똑같은 행동을 반복한다고 오래도록 느꼈다. (무엇이 성공인가에 대해선 논외로 하자.) 나는 미래를 바꾸기 위해 어떻게 변해야 할까 고민했다. 그리고 여러 번 시도하고자 했지만 그럴듯한 시도조차 하지 못하고 또다시 실패했다. 그 중 가장 큰 실패는 규칙적인 삶과 끊임없는 자기 개발하는 것이다.

성공에 대해 갈망하며 꼭 필요한 덕목이라 생각했던 규칙적이고 끊임없는 자기개발을 지속적으로 달성하고자 했지만 번번히 실패했던 이유는 무엇일까. 요 최근 가장 크게 느낀 점은 장,단기 계획의 부재다. 개발 방법론 중, 프로덕트를 지속적으로 향상시키기 위해 많이 사용하는 방법이 스크럼이다. 스크럼은 매 반복 주기(스프런트)로 달성해야할 목표를 매일 정해진 목표를 완성단위(백로그)로 완성해야 한다. 그러기 위해선 철저하게 계획적인 장단기 업무 정리가 필요하고 매일같이 이 업무가 수정 및 반영 되어야 한다. 이 방법론은 개발분야에서 많은 성공사례를 만들어내며 지속적으로 발전 및 수정되도록 적용되어지고 있다.

스크럼의 심리적 성공요인은 성과에 대한 인지적 분석과 목표달성 세분화에 의한 동기부여라고 생각한다. 즉, 세분화된 작은 성공과 커뮤니케이션을 지속적으로 혹은 반 강제적으로 큰 업무에 주입함으로써, 매우 복잡한 달성과제를 일정한 속도로 최종적으로 달성하게 하는데 있다. 그리고 이 과정을 인지하기 쉬운 사람의 라이프사이클에 접목해 실제로 실행 가능하며 통제 가능하도록 한다.

개발은 현업에서 비용과 직접적인 연관이 있기에 이렇도록 발전되어저 왔지만, 개인의 삶에는 이러한 잘 완성된 방법론이 있기 어렵다. 성공을 결정하는 요인이 성향, 직업, 가족, 개인, 문화등 훨씬 다양하고 고려해야할 것이 많고, 그렇기에 개개인 별로 다르게 적용되어야 함은 부인할 수 없다.

평생의 장기계획 부터 매일같이 진행할 일일의 계획과 목표를 세부적으로 세우고 달성 방법까지 구체적으로 기술해 지치지 않고 2017년의 목표를 끝까지 달성해보자. 작게는 회사를 위해 크게는 나라를 위해 내가 해야할 일이 무엇인지 구체적으로 생각해보자.

호그댁 공략 (3) – 클래시 로얄(Clash Royale)

  1. 왜 호그댁인가
  2. 호그댁의 공격 메커니즘
  3. 호그댁 조합법
  4. 상대 댁별 상대법

이 포스트에서 제시할 조합은 몇가지 예시이며, 유사한 컨셉은 같이 설명한다.

첫번째 설명할 조합은 딜러 조합이다. 호그와 함께 딜러를 함께 조합해, 호그가 타워의 공격을 맞아주는 동안 싸고 공격력이 강한 카드를 활용해 타워에 데미지를 강력하게 넣는 조합이다.

  1. 호그 + 고블린 조합
  2. 호그 + 해골 조합
  3. 호그 + 미니언 조합

고블린과의 조합은 출시 초창기부터 매우 많이 사용해 오던 조합이나 현재(2017년 1월 1일)는 많이 쓰이진 않는다. 단일 딜러로 코스트 대비 가장 강력하다고 볼 수 있는 고블린을 사용해 딜을 넣는 조합이다. 해골과의 조합은 고블린 대신 사용할 수 있고 딜은 좀 적지만 벽타기가 가능하고 1코스트 적게 들어갈 수 있다. 미니언과 함께 할 경우는 코스트가 많이 들 수는 있지만 지상 수비병력만으로 막을 수 없기 때문에 막기위해 원거리 유닛을 사용해야 한다.

딜러 조합의 장점은 상대방보다 엘릭서가 유리할 때 타워에 강력한 데미지를 넣어 줄 수있다. 하지만 딜러가 체력이 약해 방어하는데 어렵지 않다.

들어가는 타이밍은 상대보다 엘릭서가 유리한 시점에 들어가야 하며 섣부르게 들어가다 역습맞을 수 있는 리스크가 있다.

 

두번째 설명할 조합은 어그로 조합이다. 호그에게 들어갈 데미지를 잠시 멈춰 호그가 더 많은 공격을 타워에 넣을 수 있도록 하는 조합이다.

  1. 호그 + 얼음골램
  2. 호그 + 얼음정령
  3. 호그 + 화염정령

이 조합은 순간적으로 적의 움직임을 멈추거나 느리게해 호그의 생존시간을 늘리는 조합이다. 얼음골램의 경우에는 호그가 밀고들어가 대신 탱킹을 해주면 가장 좋다. 얼음정령은 적 방어병력을 잠시 멈추게해 호그의 생존시간을 길게하며 화염정령은 적의 병력은 순간적으로 제거해 호그의 생존시간을 길게 할 수 있는 조합니다.

특히 호그 얼음골램, 얼음정령은 얼음골램,얼음정령 자체의 효능이 뛰어나 많이 사용되면서 호그와 조합으로 많이 사용되고 있다. 얼음골램이나 얼음정령은 감전과 함께 사용하면 미니언까지 처리가 가능해매우 강력한 조합이라고 볼 수 있다. 딜러 조합보다 방어하기 어렵기 때문에 방어하는 입장에서 방어타워 사용을 강제하기도 한다.

 

세번째 설명할 조합은 위 조합에 마법을 함께 섞은 조합이다.

일단 호그가 혼자 들어가거나 위에 먼저 언급한 카드와 조합되어 들어갈때 같이 사용할 수 있는 마법 들이다.

  1. 호그 + 파이어볼
  2. 호그 + 독
  3. 호그 + 감전
  4. 호그 + 통나무
  5. 호그 + 번개
  6. 호그 + 얼음
  7. 호그 + 분노

사실 호그의 강력함은 마법과 함께할 때 빛을 발한다. 호그를 막기위해 방어병력을 배치하는 시점이 가장 좋은 마법 사용 시점이라 볼 수 있다. 호그를 막기위해 자주사용하는 바바리안의 경우 파이어볼을 사용하면 순간적으로 분산되어 호그가 공격할 수 있는 상황을 만들어준다. 번개의 경우는 적의 방어타워를 무력화 시키며 일방적인 타워 공격이 가능하게끔 해줄 수 있다.

마법은 상대 방어를 예측해 사용할 때 가장 효과적이며, 이 부분이 호그댁을 잘 사용하는지 아닌지 판가름나는 부분이라 볼 수 있다.

호그댁 공략 (2) – 클래시 로얄(Clash Royale)

  1. 왜 호그댁인가
  2. 호그댁의 공격 메커니즘
  3. 호그댁 조합법
  4. 상대 댁별 상대법

호그댁의 공격 메커니즘의 기본은 호그의 사용 타이밍이다. 호그는 다양한 상황에서 사용이 가능한데, 모든 카드의 사용 타이밍과 위치는 호그의 사용 타이밍을 고려해 사용한다.

예를 들면 호그가 오른쪽으로 들어갈 타이밍을 노리고 있을때, 상대방이 인페르노 타워를 가지고 있다면, 미리 오른쪽 중간 방향으로 메가 미니언을 넣어 호그가 들어갈때 어그로를 끌 수 있도록 해주는 방법이 있다.

호그의 사용 타이밍을 분류해 보면 다음과 같다.

  1. 초반 찌르기
  2. 저 코스트로 방어 성공 후 사용
  3. 비슷한 코스트일 때 조합을 갖춰 사용 (벽타기 이용)
  4. 어그로 끌기 및 역습용으로 사용

크게 네가지 정도로 나눌 수 있다.

1. 초반 찌르기의 경우 게임이 시작하자마자 첫카드로 호그를 사용하는 것이다. 이 방법은 첫카드로 사용하는 다른 카드에 비해 장점이 많은데, 그 이유는 타워에 데미지를 입지 않기 위해서 상대방이 방어타워를 쓰거나 호그와 비슷한 코스트를 사용해 수비 병력을 빼야 하기 때문이다.

방어타워의 경우 가장 효율적으로 막을 수 있는 카드는 대포이지만, 대포를 사용해 막는다 해도, 1코스트 손해밖게 입지 않고 또한 방타로 역습을 올 수는 없기 때문에 큰 손해는 아니다. 만일 다른 방타의 경우에는 호그와 코스트가 같거나 높기 때문에 상대의 코스트 손해를 가져온다. 만일 수비 병력으로 막을 경우 가장 효율적인 것은 해골군대 정도일 것이다. 만일 막기위해 바바리안을 사용한다면 바바리안으로 상대에게 역습을 가하기 어렵기 때문에 방어 측면에서 막기 어렵지 않다. 그 외 메가 미니언이나 아처를 뺀다 해도, 크게 손해가 아니며 막기 어렵지 않다.

2. 저 코스트로 방어 성공 후 사용의 경우 상대가 빅댁일 때 효과적이다. 예를 들어 상대가 라바로 들어올 경우 라바댁은 메가미니언 만으로 적은 코스트 방어가 가능하다. 이 때 순간적으로 상대보다 코스트가 유리해지는 시점이 있는데, 이때 적의 코스트 부족 타이밍을 노려 사용하는 것이다. 상대 조합을 적은 코스트로 방어하는 방법은 따로 정리해 보겠다.

3. 비슷한 코스트일 때 조합을 갖춰 사용의 경우 호그를 사용해, 고블린, 해골, 얼음정령이 벽타기 조합을 이루기 좋은 카드들이며 얼음골램은 밀고 올라가기 좋은 카드이다. 고블린과 해골의 경우 놔두면 상당히 타워가 피해를 많이 당할 것이며 얼음정령, 얼음 골램 또한 호그가 공격할 시간을 더 벌어 상대 타워에 많은 피해를 줄 수 있다.

벽타기를 사용해야 하는 이유는 방타의 위치를 중간에 사용하지 못하도록 하기 위함이다. 방타의 위치가 중간일 경우 크라운 타워 두개에 동시에 공격 당하기 때문에 호그가 좀더 빨리 죽기 때문이다.

4. 어그로 끌기  및 역습용으로 사용의 경우 많이 숙달 되었을 때 사용하기 좋은데, 가장 어그로가 잘 끌리는 카드들이 있다. 예를 들언 미니 페카의 경우 호그의 점프를 통해 페카가 호그를 때리지 못하고 계속 따라가게 만들 수 있다. 그동한 타워가 미니페카를 쳐서 적은 코스트로 수비가 가능해지며, 호그로 역습까지 가능해지는 것이다. 단 이속이 느린 적 카드의 경우 조금 따라가다가 다시 공격으로 전환할 수 있으니 여러번 연습을 통해 상대 조합에 맞게 사용해야 할 것이다. 물론 상황이 자주 발생하지는 않는다.

 

호그댁의 공격 메커니즘 중 중요한 것은 방어 이다. 호그는 기본적으로 적 카드를 공격할 수 없기 때문에 방어시에 활용하기 어렵다. 따라서 적은 코스트로 효율적인 수비가 가능한 카드들과 함께 조합해 방어를 항상 고려해야 한다. 공격은 약하지만 방어에 효율적인 아처, 얼음법사, 프린세스, 미니언, 메가미니언 등 적은 코스트지만 조합을 통해 상대 공격을 무마할 수 있는 카드가 필요하며, 통나무, 감전과 같이 저코스트로 방어를 해낼 수 있는 카드들도 함께 조합을 하는 것이 좋다.

아처의 경우 3코스트이지만, 원거리 유닛으로써 공격력이 상당하기 때문에 상대의 느린 유닛을 잡는데 효율적이다. 얼음법사는 공격력은 높지 않지만 상대방을 느리게 만들어 공격을 무마시키며, 체력도 높은 편이다. 프린세스는 반대편에 소환함으로써 피가 적은 카드를 효율적으로 방어하며 이후 상대방의 코스트 낭비도 불러올 수 있다. 미니언, 메가 미니언 등은 높은 공격력으로 공중 공격이 불가한 근거리 유닛을 막는데 효율적이다. 또한 해골, 고블린, 창고블린, 가드등은 상대가 높은 코스트로 단일 공격 유닛을 막는데 효과적이다.

구체적인 방어 방법은 상대 댁별 상대법에서 다시 정리해 보겠다.

 

마지막으로 호그댁의 공격 메커니즘 중 중요한 것이 공격용 마법 사용이다. 호그댁은 파이어볼, 번개, 독 등과 함께 조합되어 상대방의 방어타워를 무마시키거나 상대 수비병력을 무력화해 타워에 대미지를 주는 방법이 많이 사용된다. 호그를 막기위해 상대방이 사용할 카드를 예측해 미리 마법을 쓸 수 있다면 큰 피해를 상대방에게 줄 수 있을 것이다.

파이어볼은 상대방의 방타를 미리 예측해 쓰거나, 방어를 위해 사용한 바바리안에게 피해를 주기위해 사용할 수 있으며, 또한 생산기지나 앨릭서 정제소 견제용으로 사용가능하다. 번개는 상대방이 머스킷, 메가미니언, 방어타워 등 적은 유닛수로 방어할 경우 매우 효율적으로 사용할 수 있다.단 상대가 해골군대, 메가미니언 등을 사용할 수 있기 때문에 이러한 유닛을 견제할 수 있는 마법이나 유닛도 함께 준비해야 할 것이다.