오늘은 오후에 옮기려는 회사 사람들 만나서 앞으로 1년간 계획에 대해 들었다.


뭐 큰 덩어리만 설명 듣다가 URL 줄이는게 갑툭튀 함. 그거 해야 된다고. 내가 볼땐 별거 아닌건데 갑툭튀해서 약간 당황함.


돌아오는 길에 위키 검색 해서 개념 파악후 간단히 짜보니까 별거 아니드만 ㅇㅇ


(ns url-shortener.core)


(import 'clojure.lang.Murmur3)


(defonce n->ch-map

  (mapv char (concat (range (int \0) (inc (int \9)))

                     (range (int \A) (inc (int \Z)))

                     (range (int \a) (inc (int \z))))) )


(defn long->mod62s [^Long x]

  (assert (not (zero? x)))

  (loop [n x

         digits ()]

    (if (zero? n)

      digits

      (recur (quot n 62)

             (conj digits (mod n 62))))))


(defn shorten-str [^String s]

  (transduce (map n->ch-map)

             str

             (long->mod62s (Murmur3/hashUnencodedChars s))))