Clojurians
#clojure-russia
<
2016-03-26
>

This page is not created by, affiliated with, or supported by Slack Technologies, Inc.

rm06:03:19

> хм, интересно так-то, с кложурой где по сути синтаксиса то и нет может круто будет, никто не доходил до такого хардкора?:) я пишу без подсветки синтаксиса на руби, кложе, матлабе. Мне так лучше. Навязывать не буду, исследований на тему не проводил.

rm06:03:26

прочитал рубишный код ниже на одном дыхании :D

artemyarulin06:03:35

@rm: крутяк! в емаксе? тему какую юзаешь?

rm06:03:03

artemyarulin: нет, в виме (неовиме, но это неважно). Тема tomorrow. Вот скриншот с кложей https://farm2.staticflickr.com/1699/25947928122_bd8647d7bb_o.png

artemyarulin06:03:47

круто, но выглядит прям оч не привычно. А почему ты решил без подсветки кодить?

rm06:03:47

я уже не помню. Кажется, как раз из-за матлаба, там была неправильная подсветка, я ее выключил, а потом мне понравилось и не стал включать обратно

rm06:03:16

но как-то неправдоподобно звучит, я на матлабе от силы месяц писал постоянно, и я в это время работал на руби

artemyarulin06:03:23

ну попробую тоже ага

artemyarulin06:03:40

а кста - у кого какие мысли про ангуляр-2 (в частности с ТайпСкриптом)? Я когда-то делал проект на 1.1 и наплевался аж ужас, может кто уже трогал вторую?

rm06:03:00

меня отпугивает слово "фреймворк" :)

rmuslimov06:03:58

@rm давно в емаксе?

abtv06:03:00

@artemyarulin: может лучше сразу React? или ты хочешь сразу все из коробки?

artemyarulin06:03:51

@abtv: дада, я фанат реакта (особенно со всякими immutable, redux, relay прям почти ом-некст лол), но ангуляр оч популярен в энтерпрайзе - вот просто интересно, мож кто юзал уже вторую, чо как там Ну и кста react то тоже уже не просто мелкая либа так-то

rmuslimov06:03:55

@rm спрашиваю, потому что, деревья слева это такой атавизм в разработке в емаксе на мой взгляд

rmuslimov06:03:51

две вещи которые плохо в емаксе работают и принесены из других “молодых” IDE, деревья слева и фиксированные окна

artemyarulin06:03:08

@rmuslimov: А ты чего для project navigation используешь? projectile?

rmuslimov06:03:22

слово атавизм, я неправильно применил - скорее наоборот

rmuslimov06:03:04

@artemyarulin: нет, совсем не пользуюсь - для моих питон проектов он слишом медленный

rmuslimov06:03:25

а для кложи вроде все сидр умеет

artemyarulin06:03:40

ого, у тебя там миллионы файлов? там же можно поигнорить что не нужно + он может закешировать

artemyarulin06:03:52

оу, а чо сидер умеет для навигации?

razum2um06:03:16

@rmuslimov: neotree надо выключить интергицию с vc и будет летать

rmuslimov06:03:31

я когда разбирался с ним, и самом главном месте у projectile была пробежка по всем директориям

rmuslimov06:03:44

я посмотрел на нее и перестал

rmuslimov06:03:02

я давно пользуюсь rope для навигации

rmuslimov06:03:25

он быстрый и много чего умеет

artemyarulin06:03:36

а ну похоже на прожектайл ага

rm07:03:01

rmuslimov: я вообще не в емаксе. Деревья больше нужны в новых проектах. Если работаю давно, то больше использую ctrlP (у вас в емаксе тоже такая фигня есть, когда ищешь по имени файла или имени функции)

rmuslimov07:03:24

я честно говоря, не очень понимаю зачем нужен projectile, по-моему навигация по проекту сильно зависит от языка то есть ходит по питон-проекту должен питон бекенд, а по ноде нодовский и т.п. кложа кложевский

rmuslimov07:03:38

сложно представить чтобы искать файл по path

rmuslimov07:03:00

увидел метод, goto-definition, find-occurences и т.п

rmuslimov07:03:53

> Деревья больше нужны в новых проектах ну собственно было сомнение, что особо не нужны

rm07:03:12

ну я пишу скорее сверху вниз(сначала вызываю функцию где-то, потом пишу реализацию), так что мне нормально искать по пути. То есть, мне проще набрать ,f(тут открывается окно поиска)model/users, чем идти вверх страницы(gg), искать нужный модуль и тыкать gd(go to definition).

artemyarulin07:03:46

>я честно говоря, не очень понимаю зачем нужен projectile, по-моему навигация по проекту сильно зависит от языка >то есть ходит по питон-проекту должен питон бекенд, а по ноде нодовский и т.п. кложа кложевский >сложно представить чтобы искать файл по path ну кому как ага. Мне прожектайл нравиться что работает везде (ибо файлы) с любым языком ну и поиск не по path а по file-name, во многих языках это равно неймспейсу/модулю/классу, т.е. разницы нет. Ну и опять же - прыгнуть в ресурсы/ридми/прочее

rmuslimov07:03:18

да, оk projectile. деревья не могу пока понять, может к пенсии

artemyarulin07:03:41

ну привычка может и как бы логично когда приходишь с других редакторов, я когда на емакс перешел (год всего с ним), дак первым делом тоже потащил навигацию древовидную simple_smile Но тоже чота не взлетело и потом проникся духом емакса - что лучший UI это шорткат на 19 символов simple_smile

rmuslimov07:03:47

коллеги, научите меня пож-та с асинхронностью - как правильно баги ловить, какой-то асинхронный кусок кода где-то валится видимо с тривиальной ошибкой

rmuslimov07:03:28

а не ответа, не привета - приходится сидеть и вглядываться в код

az07:03:15

смотри лучше 😄

az07:03:32

подвинь монитор поближе

az07:03:42

так баги ищутся

az07:03:46

ну тогда логируй, с асинхронностью проблемы из-за непонимания что когда куда приходит

artemyarulin07:03:20

у меня всегда последним оружием выступает http sniffer, но это когда я уже нефига не понимаю. В остальных случаях репл+тесты+логи+глаза как обычно.

larhat08:03:39

rmuslimov: трейсинг с request-id (или аналогом, которые позволит различать отдельные логические нити)

andre08:03:08

а мне наоборот подсветка сильно помогает, допустим когда хочу найти определенный вызов, глаз цепляется только за вызовы, когда текст или кейворд, глаз цепляется только за кейворцы и игнорит все остальное, и кодю я в черной теме, как перешел, не понимаю как на светлой вообще работал, и днем и ночью одинаково хорошо

rmuslimov08:03:11

спасибо, за ответы, я ждал ответа о какой нибудь серебрянной пуле, с которым вся асинхронность обернулась бы в try…catch и приходила куда нибудь

rmuslimov08:03:33

буду видимо сам заворачивать аккуратно

artemyarulin08:03:34

ну можно обернуть в go очень даже серебряно будет trollface

rmuslimov08:03:57

у меня manifold.deferred, там есть свой d/catch

artemyarulin19:03:07

Оффтоп: оу, дропбокс во всю юзает ржавого в продакшене, вот Q&A нашел https://www.reddit.com/r/rust/comments/4adabk/the_epic_story_of_dropboxs_exodus_from_the_amazon/ Понравилось оттуда:

- The article mentioned you guys also investigated using Go and D (unless they were just being mentioned as an aside). The issue with Go was explained with regards to the memory footprint, but what made Rust the winner over D?
- Well, the small team working on the project was mostly C(++)-and-Haskell people, so Rust's safety philosophy resonated with us (especially for writing no-backup storage systems). No null, ADTs, no inheritance, etc. We'd seen that work well, but it seemed even better in a non-lazy language without a sophisticated runtime.

dottedmag20:03:15

@niwinz: У меня с buddy-hashers есть непонятка. Согласно https://en.wikipedia.org/wiki/PBKDF2 один из параметров PBKDF2 -- это размер ключа, а в derive-password :pbkdf2 он захардкожен как dsize (* 8 (.getDigestSize digest)). Это так по какой-то особой причине, или просто потому, что никому не нужно было по-другому?

dottedmag20:03:17

@niwinz: Я добавил в derive-password опцию размера ключа, но теперь не могу понять, где надо ещё поправить, чтобы больше ничего не сломалось.

dottedmag21:03:30

@niwinz: А ещё я не могу добиться воспроизведения тестовых векторов из https://tools.ietf.org/html/rfc6070

niwinz21:03:02

can you explain that are you trying to do?

niwinz21:03:19

the dsize is hardcoded becuase it depends on the size of the underlying digest

dottedmag21:03:24

@niwinz: Я пытаюсь получить PBKDF2 с размером выходного ключа 48 байт.

dottedmag21:03:00

Потому что у меня есть кусок криптографии (на C), который стретчит пароль именно таким образом, и это нужно для интероперабельности.

niwinz21:03:00

hmm, if you are trying to use buddy-hashers as KDF, is a wrong choice

dottedmag21:03:13

Окей, а в buddy-core нет PBKDF2.

niwinz21:03:24

it seems to be missing but we can implement it 😉

dottedmag21:03:28

По крайней мере, согласно доке.

dottedmag21:03:34

Хорошо, тогда я его туда добавлю.

niwinz21:03:53

nice! Looking forward for the change

niwinz21:03:24

buddy-hashers is designed to be used as password hashers

niwinz21:03:50

and that does not need any special tuning for special output size

dottedmag21:03:04

Окей, я понял.

dottedmag21:03:34

Меня смутило то, что эта библиотека руками ходит в bouncycastle, а не в core за KDF.

niwinz21:03:23

I understad but I didn't needed pbkdf as KDF and this is becuase it is done directly in buddy-hashers

niwinz21:03:52

but if you implement that in core, we can change buddy-hashers to use that new impl

dottedmag21:03:57

@niwinz: Как жизнь в Испании нынче? В Осло куча испанцев понаехала, говорят, работы совсем нет.

niwinz21:03:14

It depends, If you are good software engineer, it there a lot of work...

niwinz21:03:40

I'm currently living in Bulgaria for some time

niwinz21:03:54

But I have plans for return to Spain sooner

niwinz21:03:45

Do you have some problem with that I'm writing in English?

niwinz21:03:19

It is a little bit difficult for me use transliteration based keyboard...

niwinz21:03:54

I have noticed that encrypt is not a good name for password hashing main API and I agree with that, but I don't know any better alternative, any suggestions?

dottedmag21:03:10

@niwinz: Nah, English is fine.

dottedmag21:03:54

No idea about encrypt replacement name. derive is too generic. Maybe stretch?

andmed21:03:00

Yes, really good

niwinz21:03:53

I had thought on derive as a replacement... stretch is very uncommon i think..

dottedmag21:03:18

@niwinz: Well, the technique is named "key stretching".

niwinz21:03:25

I think that derive is better alternative

dottedmag21:03:01

@niwinz: What would be the best way to set a default number of iterations for pbkdf2?

dottedmag21:03:43

There's +iterations+ var in hashers.clj, but I don't see anything similar in kdf.clj.

niwinz21:03:28

As it is only applies to pbkdf2, maybe a simple constant

niwinz21:03:39

+pbkdf2-iterations+

dottedmag21:03:09

@niwinz: You've got a pull request.

dottedmag21:03:06

Let me add some doc too

niwinz21:03:44

Thank you!

dottedmag22:03:18

@niwinz: Pull request updated, now with docs.

dottedmag22:03:28

Обычная проблема с немейнстримными языками: половину времени пишешь свой код, половину времени - патчишь библиотеки, в которых твой use-case не обработан :)

dottedmag22:03:09

В случае с Clojure хотя бы не приходится дописывать настоящую функциональность, только обёртку поправить.

dottedmag22:03:14

@niwinz: Я тоже собираюсь пересекать Европу, но не в направлении запад-восток, а в направлении север-юг :) Из Норвегии - на Мальту.

niwinz22:03:34

Sure, I found me in the same situation, but I like write software and have some time for that 😉, in case of buddy, I writing it for my needs and I make it public. I do it completly on my free time.

niwinz22:03:26

Malta, not bad! 😄

dottedmag22:03:50

После Болгарии и Испании - вроде то же самое по климату, плюс-минус лапоть.

niwinz22:03:00

I have lived in belgium also, but bg and spain the difference is notable...

niwinz22:03:23

in madrid the minimum are 0 C on winter, and here in BG -20

dottedmag22:03:36

А, ну да, это другое дело.

niwinz22:03:38

I'm coming from siberia

dottedmag22:03:47

Я тоже.

dottedmag22:03:49

Откуда?

niwinz22:03:53

Novosibirsk

dottedmag22:03:01

Гм, я тоже.

niwinz22:03:24

I have left it at year 2000

dottedmag22:03:43

А, в 2000 я только в универ пошёл, уехал в 2011.

niwinz22:03:00

oh, I'm out of russia for 16 years

niwinz22:03:16

My entire family lives around europe xD

niwinz22:03:50

but curious coincidence! If you found yourself in spain, let me know and maybe we can meet (and I practice some russian)

dottedmag22:03:14

Обязательно. Либо на Мальте.

niwinz22:03:05

maybe 😄 I like traveling

niwinz22:03:37

btw, I just have published the 0.11.0-SNAPSHOT with your change

dottedmag22:03:47

Спасибо.

niwinz22:03:12

and now, I go away

niwinz22:03:15

it is time to rest