1 minute read


blog

아래와 같은 스크립트로 특정 포트를 사용하는 프로그램을 강제종료할 수 있다. awk를 처음 찾아봤는데 상당히 유용한거 같다.

kill-process-on-port() {
  kill -9 $(lsof -i tcp:$1 | awk '$2 != "PID" { print $2 }')
}

pseudo

작업 예정:

  • 프로필 이미지/편집 추가

  • 프로필 sns 정보 추가

  • 라우트들 구조 변경 (get -> public, post\&delete -> 로그인 필요, 프로필 반영)

  • 작업:

    • 프로필 이미지 업로드 추가 완료
    • 로그인 기능 수정

sport

cf 987A

http://codeforces.com/problemset/problem/987/A

제목이 재밌어보여서 품.

러스트에서 생각보다 문자열 다루는 것이 복잡하다는 것을 깨달았다. 문제를 잘못 해석해서 문자열에서 첫 글자를 대문자로 만드는 것을 구현하려 했는데, String이 기본적으로 인덱싱이 되지 않는다고 한다. unicode이기 때문에 주소 기반으로 접근하면 빠르지만 문자의 중간 어딘가에 위치하게 되고, 문자 기반으로 접근하려면 unicode가 가변 길이이므로 O(n)만큼의 시간이 소요되기 때문이라는 것 같다. 확실히, 인덱싱이 지원된다면 당연히 O(1)이라고 생각할 것 같다.

rust solution

fn solve<R: io::BufRead, W: io::Write>(scan: &mut UnsafeScanner<R>, out: &mut W) {
    let n = ri32(scan);

    let mut map = HashMap::new();
    map.insert("red", "Reality");
    map.insert("blue", "Space");
    map.insert("purple", "Power");
    map.insert("green", "Time");
    map.insert("orange", "Soul");
    map.insert("yellow", "Mind");

    // iter n
    for i in 0..n {
        let color = &rstr(scan);
        map.remove(color as &str);
    }

    // extract values
    let mut keys = vec![];
    for key in map.keys() {
        keys.push(map[key]);
    }

    // print
    writeln!(out, "{}", keys.len());
    writeln!(out, "{}", keys.join("\n"));
}


Comments