Skip to content

Instantly share code, notes, and snippets.

View MinCha's full-sized avatar

Min Cha MinCha

  • GGtics
  • Gwanggyo
View GitHub Profile
@MinCha
MinCha / ggtics-bd-jd.md
Last active September 17, 2018 03:52
GGtics BD 채용

GGtics는 Esports 데이터 분석을 하는 회사입니다. 현재 B2C, B2B 사업 모두를 하고 있습니다. 저희 회사는 전 세계에 유일한 GG(x)라는 기술을 갖고 있는데 이는 롤 프로 선수의 승리 공헌도를 계산하는 기술입니다. 이를 활용해 선수의 연봉이 적합한지, 팀의 약점은 무엇인지, 특정 선수의 장 단점은 무엇인지 등 폭 넓게 응용 가능합니다. B2C에서는 GG(x)를 활용한 인분(승리 공헌도), 팀운 등이 사용자에게 좋은 반응을 얻어 GA 기준 MAU 약 50만, 월PV 약 800만 정도의 지표를 갖고 있습니다. B2B에서는 라이엇 코리아와 자문 계약을 맺었고, 게임 교육 업체에 데이터 제공을 하는 계약을 하기도 했습니다. 또한 국내 여러 프로팀과 연락하며 협력을 꾀하고 있기도 합니다. 현재 BD를 채용하고 있으며 자세한 내용은 아래와 같습니다.

책임

  • 감독, 스폰서, 선수 등 글로벌 Esports 관계자와 좋은 네트워크를 구축
  • GGtics 기술에 대한 깊은 이해로 잠재적 혹은 존재하는 고객에게 탁월한 솔루션 제공
  • 수익 모델 개발

요구사항

  • 5년 이상의 경력 혹은 2년 이상의 경력(+특별한 장점)
  • Esports 산업에 대한 깊은 이해
@MinCha
MinCha / ggtics-dev-jd.md
Last active December 28, 2022 09:10
GGtics 신입 및 경력 개발자 채용

회사

모집

  • 신입/경력 서버 개발자 (Java, Scala, Spring)
  • 신입/경력 FE 개발자 (React)
@MinCha
MinCha / ggtics-coding.md
Last active August 10, 2017 06:09
GGtics 개발자 코딩 테스트

GGtics

  • GGtics는 게임 데이터 분석 회사입니다.
  • 롤을 좋아하고 통계수학, ML에 익숙하거나 높은 관심이 있는 개발자를 환영합니다.
  • 문의사항이 있으면 help@loldoc.me로 메일 주세요.

테스트1) 웹 어플리케이션 개발 + 랭킹 알고리즘

  • "http://localhost/롤소환사명"과 같이 브라우저에서 접근했을 때 해당 롤소환사의 최근 게임 리스트가 보이는 것을 간단하게 만들어주시면 됩니다. 또한 랭킹 알고리즘을 개발하여 한 게임이 참여한 10명의 소환사의 점수와 랭킹을 보여주시면 됩니다.
  • 소환사의 점수와 랭킹을 산출하는 알고리즘(수식, 개념 등)에 대해 설명하는 간단한 문서를 제출해주세요.
  • 내부적으로 Riot API를 사용하셔야 합니다.
  • 언어/기술 등은 편한 것으로 사용하시면 됩니다만 현재 GGtics에서 사용하는 Scala/Spring으로 하시면 가산점이 있습니다.
@MinCha
MinCha / .scala
Last active September 4, 2016 12:30
아이템/아이템 Correlation 테스트케이스
class CounterItemCorrelationTest extends UnitTest {
@Test
def apToAntiAdHp() = {
val a = aSomeItem(magicalOffense = 70)
val b = aSomeItem(hp = 500, physicalDefense = 50)
assert(CounterItemCorrelation.compute(a, b) == 0.33)
}
@Test
@MinCha
MinCha / HibernateEntityGraph.scala
Last active August 11, 2016 05:43
Graph Eager Fetch
trait DiagnosisHistoryRepository extends PagingAndSortingRepository[DiagnosisHistory, java.lang.Long] {
def deleteBySummoner(summoner: Summoner): Int
def countBySummonerAndCreatedBetween(summoner: Summoner, start: DateTime, end: DateTime): Int
@org.springframework.data.jpa.repository.EntityGraph(value = "DiagnosisHistory.matchData", `type` = EntityGraphType.LOAD)
def findBySummonerAndMatchDataId(summoner: Summoner, matchDataId: Long): DiagnosisHistory
@org.springframework.data.jpa.repository.EntityGraph(value = "DiagnosisHistory.matchData", `type` = EntityGraphType.LOAD)
def findTop1ByMatchDataId(matchId: Long): DiagnosisHistory
@org.springframework.data.jpa.repository.EntityGraph(value = "DiagnosisHistory.matchData", `type` = EntityGraphType.LOAD)
def findBySummonerIdAndMatchDataId(summonerId: Long, matchDataId: Long): DiagnosisHistory
@org.springframework.data.jpa.repository.EntityGraph(value = "DiagnosisHistory.matchData", `type` = EntityGraphType.LOAD)
@MinCha
MinCha / match.json
Last active December 26, 2015 06:06
LoL Match Detail
{
matchId: 2221300395,
region: "KR",
platformId: "KR",
matchMode: "CLASSIC",
matchType: "MATCHED_GAME",
matchCreation: 1451059766803,
matchDuration: 2152,
queueType: "NORMAL_5x5_BLIND",
mapId: 11,
@MinCha
MinCha / unary.scala
Created September 11, 2015 06:59
Scala Unary
sealed abstract class AdviceGrade {
def unary_!(): AdviceGrade
}
case object VeryGood extends AdviceGrade {
override def unary_!(): AdviceGrade = Bad
}
case object Good extends AdviceGrade {
override def unary_!(): AdviceGrade = Good
}
case object Bad extends AdviceGrade {
package susu
import org.junit.Test
import org.scalatest.junit.JUnitSuite
import scala.annotation.tailrec
import scala.util.Random
class SusuPremium extends JUnitSuite {
@Test def elect() {
package susu
import org.junit.Test
import org.scalatest.junit.JUnitSuite
import scala.annotation.tailrec
import scala.util.Random
class SusuPremium extends JUnitSuite {
@Test def elect() {
# Examples
git merge --strategy-option theirs master