Size: a a a

Clojure — русскоговорящее сообщество

2020 May 30

PP

Pavel Peganov in Clojure — русскоговорящее сообщество
Получается практически Java, если честно ¯\_(ツ)_/¯
источник

KR

Kostyantin Randomnam... in Clojure — русскоговорящее сообщество
я вот решил настроить shadow cljs и у меня инит функция не отрабатывает почему-то. при редактировании происходит хотрелоад и все нормально. Есть какие-то типичные проблемы?
источник

Г

Григорий in Clojure — русскоговорящее сообщество
Sergey Trofimov
делаешь read, указатель сдвигается, делаешь следующий read
сам сдвигается? или skip?
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Григорий
Это из видеокурса по криптографии задача. Нужно вычислить хэш от файла, который зависит от хеша каждого чанка последовательно.
loop
 read n
 calc hash
 accumulate

нет?
источник

PP

Pavel Peganov in Clojure — русскоговорящее сообщество
Григорий
сам сдвигается? или skip?
Сам. skip просто не возвращает данные, а так он по сути делает то же самое.
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Григорий
сам сдвигается? или skip?
думаю, что сам
щас проверю
источник

Г

Григорий in Clojure — русскоговорящее сообщество
У меня не сдвигается. Или ошибка в коде.
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
сдвигается
источник

PP

Pavel Peganov in Clojure — русскоговорящее сообщество
Не сдвигаться он может либо если некуда, либо если он всё-таки сдвинулся, но на следующей итерации делается новый поток на начале.
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Sergey Trofimov
сдвигается
(defn read-bytes
 [filename, n-bytes]
 (let [file (io/file filename)
       cbuf (char-array n-bytes)
       cbuf2 (char-array n-bytes)]
   (with-open [r (io/reader file)]
     (.read r cbuf)
     (.read r cbuf2)
     [(seq cbuf)
      (seq cbuf2)])))
=> #'dev.playground/read-bytes
(read-bytes "package.json" 10)
=> [(\{ \newline \space \space \" \n \a \m \e \") (\: \space \" \l \u \c \k \y \- \w)]
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
read возвращает The number of characters read, or -1 if the end of the stream has been reached
источник

Г

Григорий in Clojure — русскоговорящее сообщество
Спасибо. Я подустал и уже туплю сильно. Позже разберусь.
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Григорий
У меня не сдвигается. Или ошибка в коде.
у input-stream read без offset всегда читает с нуля, не так как у ридера
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Sergey Trofimov
у input-stream read без offset всегда читает с нуля, не так как у ридера
ой, у ридера также, фигню говорю
источник

Г

Григорий in Clojure — русскоговорящее сообщество
Да я уже понял. Нужно было внуть loop перенести tmp (byte-array n)
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Григорий
Да я уже понял. Нужно было внуть loop перенести tmp (byte-array n)
(defn calc-file-hash
 [filename, n-bytes]
 (let [file (io/file filename)
       buf (byte-array n-bytes)
       md (MessageDigest/getInstance "MD5")]
   (with-open [r (io/input-stream file)]
     (loop [acc []]
       (if (pos? (.read r buf))
         (recur (conj acc (.digest md)))
         acc)))))
=> #'dev.playground/calc-file-hash
(calc-file-hash "package.json" 100)
=>
[#object["[B" 0x284ee57 "[B@284ee57"]
#object["[B" 0x1e2c5a65 "[B@1e2c5a65"]
#object["[B" 0xa5b8f09 "[B@a5b8f09"]
#object["[B" 0x26851364 "[B@26851364"]
#object["[B" 0x3d6b7b5 "[B@3d6b7b5"]
#object["[B" 0x7fd52ad8 "[B@7fd52ad8"]]
источник

Г

Григорий in Clojure — русскоговорящее сообщество
Спс.
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Sergey Trofimov
(defn calc-file-hash
 [filename, n-bytes]
 (let [file (io/file filename)
       buf (byte-array n-bytes)
       md (MessageDigest/getInstance "MD5")]
   (with-open [r (io/input-stream file)]
     (loop [acc []]
       (if (pos? (.read r buf))
         (recur (conj acc (.digest md)))
         acc)))))
=> #'dev.playground/calc-file-hash
(calc-file-hash "package.json" 100)
=>
[#object["[B" 0x284ee57 "[B@284ee57"]
#object["[B" 0x1e2c5a65 "[B@1e2c5a65"]
#object["[B" 0xa5b8f09 "[B@a5b8f09"]
#object["[B" 0x26851364 "[B@26851364"]
#object["[B" 0x3d6b7b5 "[B@3d6b7b5"]
#object["[B" 0x7fd52ad8 "[B@7fd52ad8"]]
надо только уточнить, что в буфере на последнем неполном кусочке, нет ли там мусора
источник

Г

Григорий in Clojure — русскоговорящее сообщество
Да я понял. Это оговорено в задании.
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
хм, md5 не считается для кусочков короче 16
источник