Pawel
Забавно, немного unsound, хотя можно понять почему так.
мотому что ацтой этот твой хаскиль
Pawel
Есть у меня функция которая худо бедно конвертит UTF8 строки в швиндовый 1251. На символах типа ₄ или ∑ она предсказуемо валится. Есть ли какой то способ понять что в строке символ не кастуемый в 1251 ?
Pawel
цикл по рунам, в нём каждую руну скармливать функции преобразования из UTF8 в 1251 и проверять ошибку преобразования?
Dmitry
Есть у меня функция которая худо бедно конвертит UTF8 строки в швиндовый 1251. На символах типа ₄ или ∑ она предсказуемо валится. Есть ли какой то способ понять что в строке символ не кастуемый в 1251 ?
а это не работает? sr := strings.NewReader("utf8 строка") tr := transform.NewReader(sr, charmap.Windows1251.NewEncoder()) buf, err := ioutil.ReadAll(tr) if err != nil { fmt.Print(err) } strWin := string(buf)
Pawel
я эту либу и юзаю примерно так. но мне надо находит невалидные руны и чем-то разумных их заменять, хоть знаком воароса , и возвращать строку сконверченную в любом случае
Dmitry
А вы смотрели в err ? там нету служебной инфы?
Pawel
там - encoding: rune not supported by encoding. и всё. Какая именно руна - сие не ведомо
Dmitry
Dmitry
я так полагаю что эта ошибка вываливается
Dmitry
и она содержит байт
Dmitry
err.(RepertoireError).Replacement()
L
Возник вопросик. У меня есть N запущенных гошных аппликух. Каждое работает с одним ядром. Я выставляю GOMAXPROC=1 и через taskset назначаю ядро проца. Вопрос в следующем, есть ли такая возможность, выделить каждой аппликухе по два ядра, но что бы первое у всех было свое, а второе общее для всех N? И горутины по этим ядрам раскидывать? Или я губу раскатал слишком сильно?
Daniel
нет, ничего такого сделать нельзя
Daniel
но - зачем это вам?
L
у меня в одном процессе есть горутина которая жрет много cpu, а есть которая работает с io. так вот горутины которые работают с io почему-то иногда тупят и по таймеру не вовремя запускаются.
L
ну условно воркер и координатор воркер - cpu, координатор io.
L
после каждой итераци??
Vadim
Угу
Vadim
Попробуйте
Vadim
Будет красота)
Daniel
а я бы cpu intensive вынес бы в отдельный сервис
L
Вот так? > runtime.Gosched()
Daniel
да
L
о действительно кул! Таким образом я даю гарантию, что горутина с ожиданием io будет чекать все вовремя.
L
спасибо
Vadim
👍
Aleksey
Чятик, подскажи либу для vk? А то чот их много и половина брошена, а полвина не умеет того, что надо. Собсно, нужно получить список постов на стене и получать/удалять/изменять посты.
Aleksandr
Любой клиент бери который голые запросы шлет
Aleksandr
Полноценных обвязок нет
Aleksey
Я ленив. И лучше я допишу, чем напишу с нуля
Aleksandr
Про то и говорю
Aleksandr
Не http клиент, а vk клиент
Aleksey
Ну дык. Есть чо не брошеное, чтоб pr замержили?
Aleksandr
Я искал, ничего не видел. Все очень низкого качества. Взял первый попавшийся, умеющий авторизовываться
Aleksandr
Не дописывал
Aleksey
Окей. Я тебя услышал. Хочу ещё мнений
Aleksandr
да и обсуждать нечего. vk в поиск на гитхабе, фильтр по языку, сортировка по звездочкам, открываем первые 10, убеждаемся что ничего в этом нет
L
уже сделал, там по большей части брошено всё
больше, по сути-то, не где искать
Aleksey
Эт понятно. Но вдруг тут есть автор одного из трупов и он готов принять pr, например. Или кто-то знает что-то, что не лежит на поверхности. Всяко тут профильный чят на 1.5к человеков, а социалка самая популярная в рф (и снг?), есть шанс
L
по своему опыту скажу, что брал для вк библиотеку, и допиливал под свои нужды, ломая обратную совместимость. Выкладывать нет смысла такое
L
напишите issue с вопросом прямо в репозиторий. мол, если допилю, смержите?
Aleksey
Да там почти у всех реп висит по пр уже больше года, тут и ишью не надо
Artem
делал сам для себя как раз что б дергать постики
Aleksey
Мех. Пойду писать парсер для официальной доки, пусть либа сама напишется. Опять жи, полезный опыт :)
Artem
там вроде сваггер, не?
Aleksandr
а сваггер покрывает кейсы, когда возвращается массив, первый элемент которого int (count), а последующие - объекты? [10, {...},{...}]
Aleksandr
апи вк проектировал не очень хороший человек
Aleksandr
не видел такого в основном апи, там count и value возвращаются
Все списки возвращаются в новом формате, в виде объекта с полями count и items. https://vk.com/dev/version5
Aleksandr
только в 5-й версии исправили
Aleksandr
а это совсем недавно
Artem
год назад?
Aleksandr
что-то около того
Aleksandr
можно в доке поиграться, версию 4.* выставить и посмотреть формат респонса
Artem
а есть возможность сбилдить валидный ast.File в рантайме и заиспользовать его там же (минуя запись в файл и вызов go build ...)?
Илья
https://github.com/novalagung/golpal
Artem
so we use temporary file to achieve that. ясно понятно
Artem
ну типо есть же плагины
Artem
pkg/plugin
Dk
Подскажите, пожалуйста, как сравнивать слайсы и можно мне немного критики по качеству кода? https://play.golang.org/p/lSl-3cc8vgz Это задание https://go-tour-ru-ru.appspot.com/concurrency/8
Илья
почему i < 10?
Илья
вы плохо прочитали задание, видимо
Dk
В задаче сказано, что вернёт дерево из 10 элементов🙈 Не придумал как break сделать (думал через close, но не додумался)
Илья
в main нужно читать канал, а не в same
Dk
А зачем тогда Same принимает два дерева и возвращает bool?
Илья
хем, вообще я не прав, в дереве этом всегда 10 элементов, но для реализации функции можно об этом не думать
Dk
Поэтому и попросил code review. tr1, tr2 - тоже режут глаз
Илья
причем тут code review что у вас в same происходит? почему канала 2, walk запущен 1 раз, и не из входящего дерева, а из заного созданого? зачем там слайсы?
V
не компилируется - чем не код ревью? 🙂