2017년 7월 24일 월요일

Hyper X Cloud II vs. Logitech G633 비교

페이스북에서 쓰기 시작하다가 내용이 길어져서 미디엄과 블로거로 옮김.
집에서는 HyberX Cloud II Gaming Headset을 쓰고 회사에서는 Logitech G633을 쓰고 있는데 나름 두개 다 게이밍 헤드셋 중에서는 가격이나 성능이 중급 이상은 되는 기기들이다. 혹시라도 게이밍 해드셋 고민중이신 분들께 도움을 드릴 겸 평을 써보자면…
헤드셋의 마이크 감도는 로지텍쪽이 월등한 듯 하다. 문제는 굳이 들리지 않아도 되는 주변 소음까지 너무 잘 잡는 듯한 느낌. 마이크의 성능이나 상대방이 듣는 음질 자체는 HyberX Cloud II가 나은 듯.
G633은 헤드셋 자체에 매크로 버튼이랑 볼륨 조절 버튼이 왼쪽 헤드셋 자체에 붙어 있어서 게임하거나 음악 듣다가 음량 조절이 무척 쉽다. 매크로 키는 거의 쓸데가 없고… HyberX Cloud 는 다른 헤드셋과 마찬가지로 헤드셋 줄에 붙어있는 컨트롤러를 통해서 조절가능. 다만 여기 마이크랑 헤드셋, 그리고 7.1채널 시뮬레이션을 해주는 버튼이 같이 붙어 있어서 마이크와 헤드셋 음량을 동시 조절하긴 이쪽이 편함.
G633은 USB와 3.5mm잭을 동시에 입력받을 수 있음. 이 말이 뭐냐면 만약에 PC와 맥을 동시에 가지고 있다면 PC에 G633의 USB 포트를 연결하고 맥에 3.5mm잭을 연결하면 PC로 게임이나 작업을 하면서 소리를 듣다가도 혹시라도 맥쪽에서 이벤트가 발생하거나 뭔가 소리가 시스템으로부터 발생하면 그 소리도 같이 들을 수 있음. 쓸데없다면 쓸데없지만 또 유용하게 쓸 수 있는 기능. (당연히 3.5mm용 컨트롤러도 붙어 있어서 볼륨조절이나 마이크 뮤트가 가능)
글을 쓰고 있는 현재 시점에 가격대는 둘 다 비슷비슷한 $100 USD근처. 다만 무선 버전을 원한다면 G633의 무선버전인 G933도 있다. G933은 유선기능은 G633과 동일하고 거기다가 무선 연결도 지원하는 버전. 가격은 현재 기준으로 대략 $140USD.
귀와 접촉하는 부분의 재질을 보자면, HyberX Cloud II는 두가지, 가죽과 천 모두를 지원한다. 근대 개인적으로 가죽 재질은 게임할때 정말 덥다. 특히나 게임하다 보면 몰입해서 얼굴이나 귀에 땀이 차기 쉬운데(나는 그럼 -_-;; 안그런 게임은 재미가 없으니까) HyperX Cloud II는 가죽과 천 재질 두가지를 제공하고 이걸 교체 가능하긴 한데.. 가죽은 덥고 땀 차이고.. 천 재질은 이상하게도 먼지가 잘 들러붙는다. 정전기가 잘 발생하는 재질인거 같기도. 반면에 G633은 천재질만 재공하긴 하는데 최소한 먼지가 들러붙진 않는다. 다만 G633은 약간 귀를 감싸는 부분이 사각형 비슷해서 귓볼이 좀 크거나 귀 모양이 많이 둥근 사람이라면 귀 일부분이 헤드셋 커버 부분과 접촉될 수 있어서 불편함을 느낄 수 있음. 반면 Hyper X Cloud II 는 거의 완벽하고 둥근 모양이라서 덜 그런 듯.
두가지 모두 6개월 이상 쓰고 있는 사용자로써의 리뷰는 여기까지.

2017년 3월 8일 수요일

Hackerrank Array Left Rotation test case failing at test case 6, 8, 9

I'm learning GoLang and decided to do some algorithm quiz at Hackerrank with Go instead of reading and just follow up the tutorial code.

The one I tried yesterday was https://www.hackerrank.com/challenges/ctci-array-left-rotation

Following was my initial solution. It's kind of brute-force algorithm for shift things left, but anyway...

package main
import (
    "fmt"
    "strings"
    "bufio"
    "os"
    "bytes"
)

func main() {
    var len, nToRotate int
    var input string
    var buffer bytes.Buffer
    
    fmt.Scanln(&len, &nToRotate)
    
    scanner := bufio.NewScanner(os.Stdin)
    for scanner.Scan() {
        buffer.WriteString(scanner.Text())
    }
    input = buffer.String()
    var items []string
    items = strings.Fields(input)
    
    //fmt.Printf("%d", len(items))
    
    for i := 0; i < nToRotate; i++ {
        items = append(items[1:], items[0])
    }
    
    fmt.Println(strings.Join(items[:]," "))
}

My code passed the test when I clicked "Run Code", but it's failing unit test 6, 8, 9 when submitting the code. Those 6, 8, and 9 is pretty long one line input string and I was wondering if it's some kind of timeout or library error due to input string size.

After hours of investigation and asking questions to other GoLang experts ( than me ), I was able to pass all the tests and submitted the solution. Here is my answer. I changed algorithm a bit to be more time/space efficient as well. Check the highlighted line which was the solution of Runtime Error in Hackerrank page.

package main
import (
 "fmt"
)


func main() {
 var (
  length, nToRotate int
 )

 fmt.Scanln(&length, &nToRotate)

 items := make([]string, length)
 for i := 0; i < length; i++ {
  fmt.Scan(&items[i])
 }

 items = ShiftLeft(items, nToRotate)

 for i := 0; i < len(items); i++ {
  fmt.Printf("%s ", items[i])
 }
}

func ShiftLeft(items []string, nToRotate int) []string {
 var (
  i, j, k int
  temp string
 )
 size := len(items)
 for i = 0; i < gcd(nToRotate, size); i++ {
  temp = items[i];
  j = i
  for {
   k = j + nToRotate
   if k >= size {
    k = k - size
   }
   if k == i {
    break
   }
   items[j] = items[k]
   j = k
  }
  items[j] = temp
 }
 return items
}

func gcd(x, y int) int {
 for y != 0 {
  x, y = y, x % y
 }
 return x
}


And I just found that someone already had same issue (of course) with Go, and opened issue at GoLang's GitHub page. Check those conversation if you want to understand more about the issue.

https://github.com/golang/go/issues/17910


가장 많이 본 글