Kirill
пробуй
Kirill
тем более, это под коробкой не копирует данные
Artem
@schors вообщем, исходный код твоей функции sha1.Sum()
https://golang.org/src/crypto/sha1/sha1.go L125
125 func Sum(data []byte) [Size]byte {
126 var d digest
127 d.Reset()
128 d.Write(data)
129 return d.checkSum()
130 }
Artem
@schors делай вывод и не делай лишние аллокации по чужим советам )))
Kirill
🏳️ Phil
Artem
@schors sha1.Sum() это лишь функция хелпер
Kirill
Artem
лучше делать один инстанс дайджестера и ресетить/переиспользовать его
Artem
более того, hash.Hash.Sum([]byte) может результат записать в заранее подготовленный слайс, что еще раз экономит на аллокациях
Artem
sha1.New() возвращает hash.Hash
🏳️ Phil
уменя там дайджесты на выбор
Artem
ну так и hash.Hash интерфейс )
Kirill
Andrew
привет
Kirill
привет
Aleksey
привет
Roman
привет
Kirill
Судзумия
привет
Slava
Привет!
Kirill
Nikita
Kirill
Мерль
Боже, это прекрасно
https://github.com/meshbird/meshbird/blob/master/README.md
Мерль
Однако доброе утро
Kirill
вот это прекрасно:
https://twitter.com/Nickro666/status/797387528299024384
ドドドド
Мерль
🏳️ Phil
То ради чего вечером сыр-бор затевался https://play.golang.org/p/fWebcLKSFQ
Но как бы мне ещё упростить функцию? Смысл - чтобы была проще и нагляднее. Проверки по боку
Artem
вот так можно упростить например https://play.golang.org/p/JuwpkyAs5M
Artem
плюс внутрь calc_ds можно передавать саму структуру Dnskey
Artem
@schors или так https://play.golang.org/p/jX78Md0V4M
🏳️ Phil
а, ну кстати да, я ничего не экономлю не делая промежуточных переменных. структуру не надо. она исключительно для наглядности теста. я просио код в презентацию хочу вставить. если кому интересно - это рассчет DS записи из DNSKEY.
🏳️ Phil
нужен как пример кода для презентации по DNSSEC
Artem
если функция нужна для прода, то готовые буферы нужно передавать внутрь функции, а не аллоцировать внутри
Artem
или сделать структуру и ее внутренний метод, который будет переиспользовать буферы из структуры
Artem
в том числе переиспользовать хешеры
🏳️ Phil
а поясни вот именно на конкретном коде где я сильно чтото теряю? не очень понимаю выигрыша. все равно ктото будет алоцировать. код на одно бизнес-действие скорее всего даже повтлряться не будет
Artem
очень просто, у тебя есть горутина, которая молотит эти данные. в ней создаешь структуру для подписи DS. и вызываешь функцию в цикле с вновь поступающими данными. буфера живут вместе с жизнью горутины. понятно, что это грубый пример, горутина может и другой полезной работой заниматься
Artem
или делаешь пул таких структур с помощью sync.Pool, и тогда переиспользуешь их из разных горутин
🏳️ Phil
ну вот разве что так. но в кокретном случае это будет крайне редко используемая одгоразовая функция. а вот для ресолвера это имело бы смысл
🏳️ Phil
я туда сейчас еще ГОСТ вкорячивать буду
Мерль
🏳️ Phil
хэш, который 34.11-94 с параметрами Крипто Про
🏳️ Phil
с gogost никто не работал? он всю малину портит - дайджест кверхногами выдаёт
🏳️ Phil
Короче, наваял на всё чем знал, кроме Фокала, Паскаля, Бейсика, Macro-11 и Си. https://github.com/diphost/ds-calc
🏳️ Phil
Код DNS который я в либах видел - гавно страшное. Ужас какой
🏳️ Phil
Слушайте, а у нас есть java-программисты тут?
Yehor
Yehor
а чего нет )
Yehor
отправь сюда, если не сложно будет, то думаю помогут
🏳️ Phil
а сылка-то?
Мерль
🏳️ Phil
Круто
А зачем?
чтобы эта часть в DNSSEC не вызывала у внедряющих затруднений
Slava
скажите, а кто-нибудь знает что с драйвером для монги mgo будет? последний релиз был как-то уж очень давно, это слегка настораживает
Sergey
Парни, а можно ещё нубский вопрос?
Sergey
Go у нас получается языком широкого профиля, на котором можно много всего писать, но есть ли класс приложений для которых Go - это прям таки идеальный выбор
Sergey
Типа, как например, php - отличный язык для web
Yehor
Он хорош для написания APIшек и других утилит работающих с сетью
Sergey
Я просто думаю применить его многопоточность для написания консольного импорта.
Yehor
Импорта чего?
Sergey
Есть коннект к ms sql и оттуда надо брать данные. Много данных, миллионы строк
Sergey
А потом запихивать в my sql
Sergey
Сейчас это деоает скрипт на php
Sergey
Около 4 часов
Eugene
го отлично подойдет для этого если вы не против некоторой verbosity. впрочем если существующий скрипт написан на php то это не должно быть проблемой )
Sergey
Решением было бы запускать несколько инстансов php приложения для распараллеливания но попахивает костылизмом
Sergey
А почитав про горутины, кажется, это то, что мне нужно.
Sergey
Но пока я разбираюсь с разного уровня хелоу ворлдами :-)
Sergey
Язык приятный, довольно легко привыкать после си и php )
Yehor
Да, вполне подойдет. Начните, если не начали еще, с сайта golang-book.ru
Sergey
Спасибо, обязательно посмотрю. Сейчас я книжку кенригана читаю
Eugene
for the record, есть еще куча имплементаций actor в разных языках и по идее все они вам подойдут
Yehor
Она слишком большая для знакомства с языком, по-моему. Книга Калеба за вечер читается
Sergey
Yehor
После Калеба отлично прочитать статью про 50 оттенков Го, чтобы сразу отбросить дефолтные ошибки, а потом, если язык не оттолкнет, то двигаться дальше
Yehor