ChanServ changed the topic of #libreoffice-ru to: Канал поддержки русскоязычных пользователей LibreOffice | Wiki TDF http://tdf.io/wikiru | On-line документация http://tdf.io/helpru | Логи канала: http://goo.gl/gzwdwU
<mikekaganski> о, я пропустил. Сделай патч из 1 буквы
<mikekaganski> хотя он уже исправил
JohnDoe_71Rus has joined #libreoffice-ru
<mikekaganski> tagezi: sberg игнорирует эти соглашения; сам не использует префиксы, и не меняет, когда переделывает чужой код (например, при смене типа).
<mikekaganski> Но моё мнение, что код с правильными префиксами, во-первых, более читаем, а во-вторых, сам себя во многом документирует, и проще видеть ошибки.
<tagezi> я тоже использую префексы, я понимаю зачем они нужны
<tagezi> вопрос в том, зачем знать что это ссылка?
UNIm95 has joined #libreoffice-ru
<mikekaganski> чтобы понимать, что ты работаешь не с локальными для функции данными, а с переданным внешним объектом
<tagezi> mikekaganski: а если это не объект, а bool
<tagezi> ?
<tagezi> тоже r использовать?
<mikekaganski> а разве ты его по ссылке передаёшь?
<tagezi> есть в коде такие моменты
<tagezi> даже в этом файле, который правлю сейчас видел
<tagezi> mikekaganski: ты в бридж лазил?
<tagezi> почему?
<tagezi> linux_clang_dbgutil_64 Провалилось второй раз подряд
<tagezi> mikekaganski: /home/tdf/lode/jenkins/workspace/lo_gerrit/Config/linux_clang_dbgutil_64/sc/source/ui/view/output2.cxx:2791:26: error: VclReferenceBase subclass 'OutputDevice *' declared as a pointer member, should be wrapped in VclPtr [loplugin:vclwidgets]
<tagezi> mikekaganski: так, и как его обернуть? :)
bormant has joined #libreoffice-ru
<tagezi> так, понял
<tagezi> нет, не понял
<tagezi> mikekaganski: короче, нужно чтобы ты объяснил... я не вижу в коде VclPtr<OutputDevice> как указателя, но ты вчера говорил что тут должен быть указатель
<tagezi> и я не совсем понимаю эту часть
<mikekaganski> погоди 5 сек
<tagezi> я вообще никуда не спешу :)
<mikekaganski> дело в том, что в исходном объекте mpDev как раз VclPtr<OutputDevice>
<mikekaganski> ну, а я, чтобы упростить работу с указателем, решил в класс передавать и хранить просто указатель (для устранения накладных).
<mikekaganski> А анализатор (один из плагинов кланга) у нас контролирует. Я спрошу Ноэля, но вероятно, придётся подчиняться :)
<mikekaganski> даже нет, не буду спрашивать
<tagezi> просто подчинюсь :)
<tagezi> что за накладные?
<tagezi> и кстати, чт такое р в префексе?
<mikekaganski> Давай так: в конструктор передаём const VclPtr<OutputDevice>& pDev, и в классе VclPtr<OutputDevice> mpDev
<mikekaganski> В конструкторе убираем совсем инициализацию нулевым указателем (это произойдёт само для VclPtr), а присвоение в случае bCrop сделаем с помощью mpDev.reset(pDev)
<mikekaganski> Накладные связаны с тем, что VclPtr увеличивает счётчик использований объекта. Это немного, но я хотел и этого избежать
<tagezi> bCrop <- это где?
<mikekaganski> bClip, сорри
<tagezi> mikekaganski: https://paste.ubuntu.com/26026176/
<tagezi> вот так?
<tagezi> 28 строка
<mikekaganski> не
<tagezi> так, тогда не понимаю насчет bClip
<mikekaganski> заменить нужно не 28, а 22
<mikekaganski> там же у нас проверка bClip
<tagezi> а, присвоение
<tagezi> проверка ниже, а там, скорее инициализация её :)
<mikekaganski> в 28 может понадобиться mpDev.get() - я не помню, как работает приведение VclPtr к bool
<tagezi> mikekaganski: а где это можно посмотреть? грепается оно хреново
<mikekaganski> tagezi: что именно?
<tagezi> как преобразовывается
<mikekaganski> include/vcl/vclptr.hxx
<mikekaganski> ты просто попробуй собрать
<mikekaganski> если ругнётся, что нельзя привести к bool, заменишь if(mpDev) на if(mpDev.get())
<tagezi> вроде собирается
<tagezi> сейчас с тестами сделаю, чтобы точно понимать
<mikekaganski> вот и славно
<mikekaganski> давай
<tagezi> так.. а где тесты кланга лежат?
<mikekaganski> не знаю - я их не гоняю, доверяю Дженкинсу
<tagezi> они ле лежат где-то и их можно делать у себя
<mikekaganski> да
<mikekaganski> спроси в dev
<tagezi> я вообще подумал в первый раз, что просто нужно сделать ребейс и всё прокатит, как-то не ожидал ошибки
<mikekaganski> :)
<mikekaganski> ничего страшного
<tagezi> ещё, префикс для членов mp?
<tagezi> или p это что-то особеное?
<mikekaganski> m = member; p = pointer
<JohnDoe_71Rus> mp - член-указатель?
<tagezi> блин, как всё запущено
<mikekaganski> почему?
<tagezi> потому что я 5 лет в проекте, а только сейчас начал кодить.. в итоге не знаю проекта вообще
<tagezi> и понимаю, что минимум пол года не буду знать его
<mikekaganski> :) ну и ничего страшного
<tagezi> Clang хороший плагин, делает половину работы анализатора
<tagezi> нужно включить его в сборку будет
<tagezi> при создании классов будет полезен, я думаю
<tagezi> mikekaganski: я наверное спрашивал, но... как часто обновляется opengrok?
<mikekaganski> Ну, мне на днях сказали, что регулярно кроном, но не сказали, каков интервал. Но по моему опыту, не реже недели
<tagezi> сложно в нём уже отслеживать
<tagezi> когда работаешь с одним файлом, старый код начинает мешать, нужно помнить все изменения которые внёс
<tagezi> а если кто-то ещё сделал изменения, то наступает попа :)
<tagezi> долго тесты делает
<mikekaganski> можно смотреть github - там, оказывается, почти в реальном времени, и тоже есть удобные инструменты
<tagezi> так, стоп.. вызов то я не поменял
<mikekaganski> да, там нужно убрать .get()
<mikekaganski> хотя может сработать и так, но это не нужно и вредно
UNIm95 has quit [Ping timeout: 246 seconds]
<tagezi> блин, вот помнил что нужно в вызовах посмотреть... посмотрел для функции клип и успокоился :)
<tagezi> и как всегда после отправки коммита уже сообразил :)
<tagezi> когда я научусь делать чистые патчи?
<tagezi> ещё не разу не было с первого раза :(
<mikekaganski> и? :) Это не страшно.
<mikekaganski> Хотя для чсв нужно, согласен :)
<tagezi> да это показатель того, на сколько я вообще хорошо понимаю что я делаю
<tagezi> конечно, и с одним патчем это может показывать полное не понимание...
<mikekaganski> нужно больше маны - а для этого нужна экспа :)
<tagezi> mikekaganski: слушай, а можно аптимизировать хвост кейса?
<mikekaganski> как?
<mikekaganski> а, ты про повторы?
<tagezi> не представляю
<tagezi> можно наверное взять для кейса параметры и по их срабатыванию, вызывать функцию с другим кейсом
<mikekaganski> ну, технически можно было бы ввести переменную-ошибку, и её выставлять, а собственно вызов SetError унести вниз ... но это визуально ничего не изменит
<mikekaganski> с т.з. производительности тоже
<mikekaganski> разве что сгенерированный двоичный код может быть покомпактнее
<mikekaganski> в данном случае, на мой взгляд, не нужно
<tagezi> ну, ладно...
<tagezi> просто эти 40 строк повторены 4 раза
<mikekaganski> а ты с тем файлом закончил? или от него уже тошнит? :)
<tagezi> не, там ещё нужно ковырять
<tagezi> одно место точно.. я просто разбираю ложные срабатывания и смотрю, что можно сделать ещё
<tagezi> очень много повторов в бридже и vcl
<tagezi> но туда страшно лезть
<mikekaganski> ты не бойся туда лезть.
<mikekaganski> Отправим и пригласим спецов, пусть критикуют. Заодно узнаем что-то новое
<tagezi> ещё в формулах калька полно повторов
<tagezi> почему народ не строит примитивы?
<tagezi> это же логично... куча функций должна отрабатывать одни и теже штуки, может в разном порядке но всеравно
<mikekaganski> это вопрос не к "народу", а к конкретным людям. Кто-то строит. И ещё вопрос, какого времени те повторы...
<tagezi> созданее примитивов, может ускорить разработку новых вариантов
<tagezi> ну, оп_ были все сделаны уже в ЛО, настоколько я помню
<mikekaganski> оп_?
<tagezi> op_financial
<tagezi> у них разница только в самом хвосте, буквально пара строк
<tagezi> что с этим делать?
<mikekaganski> rebase
<tagezi> а чо он ругается на юнит тест?
<tagezi> я же его не правил вообще
<mikekaganski> потому что это несвязанная ошибка
VVD has quit [Read error: Connection reset by peer]
VVD has joined #libreoffice-ru
VVD has quit [Read error: Connection reset by peer]
VVD has joined #libreoffice-ru
VVD has quit [Read error: Connection reset by peer]
VVD has joined #libreoffice-ru
<tagezi> ты уверен что это не моя ошибка?
<tagezi> mikekaganski:
<mikekaganski> да
<mikekaganski> или ты проверял?
<mikekaganski> нет, не твоя
<mikekaganski> на всякий спроси в dev, с чем связан провалившийся билд
<tagezi> так, странно, у меня на машине он тоже показывает ошибку
<tagezi> если я делаю make JunitTest_sc_unoapi_3
<mikekaganski> если у тебя воспроизводится, попробуй дебаггером
* tagezi сломал LibreOffice o_O
<mikekaganski> Погоди!
<mikekaganski> блин
<mikekaganski> в конструкторе ты делаешь mpDev->Push(); и т.д. *до* того, как инициализируешь mpDev
<mikekaganski> там же должен был использоваться pDev
<mikekaganski> а у меня глаза где...
<mikekaganski> прошу прощения. И спасибо билдботу
<mikekaganski> И ведь блин зараза на других платформах всё нормально! Это как?!
<tagezi> а, ну да.. это я туплю
<tagezi> его нужно было переместить перед вложеным иф
<mikekaganski> или да
<tagezi> а как ещё?
<mikekaganski> pDev->Push(); ... mpDev.reset(pDev)
<tagezi> сделать иницыализацию nullptr?
<mikekaganski> pDev ведь нормальный
<mikekaganski> нет
<mikekaganski> инициализация nullptr и так делается в конструкторе VclPtr
<mikekaganski> без разницы - либо делай ресет перед вложенным условием, либо до инициализации используй аргумент функции, а не член класса... одинаково
<tagezi> если bClip тру, то mpDev.reset(pDev); делается
<mikekaganski> tagezi: всё верно. Просто использовать mpDev можно только после этого; до этого - можно использовать только pDev
<tagezi> mikekaganski: а что делает ресет?
<tagezi> он перезагружает объект новым?
<mikekaganski> да
<tagezi> это как равно, но умнее?
<mikekaganski> да :)
<mikekaganski> если там уже был указатель, он перед назначением нового освобождается
<tagezi> круто..
* tagezi не подумал что там может быть указатель
<mikekaganski> причём там счётчик использований, т.е. пока последний из владельцев его не освободит, объект будет жить
<tagezi> о, тест прошёл
<JohnDoe_71Rus> умная железяка, блин
<mikekaganski> а вы говорите - бездумно кодим. Ничего подобного! Мы кодим, а железяка думает!
<tagezi> так вы то всеравно бездумно кодите :)
<tagezi> особенно вы, который я
<mikekaganski> это называется разделение труда :)
<tagezi> что-то у меня не сраслось с инициализацией переменной никак это
<tagezi> странно
<tagezi> 7 сет пошёл
<mikekaganski> не сраслось что?
<tagezi> да вот как-то да.. я же убрал инициализацию, ты мне об этом сказал, но я забыл проверить последовательность использования переменной
<mikekaganski> погоди
<mikekaganski> ты проверил свой последний патчсет?
<mikekaganski> там ты взад заменяешь правки Eike
<tagezi> какие?
<tagezi> о_О
<mikekaganski> хотя, наверное, нет
<mikekaganski> это игры ребейсов. Ты же пока не ребейсил свою репу после того, как Eike евой прошлый патч подшаманил?
<tagezi> так, ты меня не путай.. тот патч был ещё вчера с утра, он уже с правками эрАк в опенглоке даже есть
<mikekaganski> Смотри, что меня смутило: https://gerrit.libreoffice.org/#/c/45106/6..7/sc/source/ui/view/output2.cxx
<tagezi> откуда это?
<mikekaganski> Но это просто потому, что твой шестой авриант был ребейс, а седьмой опять основан на твоей локальной репе, а не потому, что ты в патч всунул старый код
<mikekaganski> как откуда? из геррита, вестимо
JohnDoe_71Rus has quit [Quit: Miranda IM! Smaller, Faster, Easier. http://miranda-im.org]
<mikekaganski> открываешь там любой свой файл, а потом вверху выбираешь, между какой и какой версиями ты смотришь дифф
<tagezi> и как ты это получил?
<mikekaganski> см. Patch set Base 1 2 3 4 5 6 7 вверху каждой панели
<tagezi> так, нужно сразу ребейс делать?
<mikekaganski> нет
<mikekaganski> кстати, наверное, всё же придётся. Во всех трёх случаях, когда ты заливал предыдущие патчи, ошибка была не связана с твоим изменением; только после ребейса вылезала ошибка с твоим кодом.
<tagezi> ну, оно начало собираться
<tagezi> а правки эрАка не отменятся?
<tagezi> если без ребейса?
<tagezi> так, ладно, пойду погуляю, а то голова пухнет, вернусь будет видно
<tagezi> linux_gcc_release_64 уже собрался
kompi has joined #libreoffice-ru
<kompi> mikekaganski: а зачем идет сборка разными компиляторами? для проверки качества кода?
JohnDoe_71Rus has joined #libreoffice-ru
<mikekaganski> kompi: да, для максимального охвата разными компиляторами, проверками, режимами. И есть ведь специфичный для разных платформ код
<tagezi> там этих платформ просто дофига
<tagezi> шлянь в бридж :)
<tagezi> глянь*
<JohnDoe_71Rus> раньше был блек джек с куртизанками, теперь бридж
<tagezi> вообще bridge - это мост
<tagezi> щтука которая связывает два берега, в данном случае программу и платформу
<mikekaganski> tagezi: куда конкретно глядеть?
<tagezi> bridges/source/cpp_uno/
<tagezi> это только по линуху.. есть ещё где-то по винде
<mikekaganski> А... я подумал, это ты про очередные копипасты
<tagezi> там копипстов охренеть как много
<tagezi> 273 совпадения
<tagezi> и я тебе говорил, что мне страшновато как-то это трогать
<tagezi> а кто занимается ими?
<kompi> ты!
<mikekaganski> то есть после твоих правок, там останется 30 строк кода? ;)
<kompi> ахаха
<tagezi> ну, примерно да
<JohnDoe_71Rus> лера схлопывает ло в точку
<tagezi> да.. и переписываю его на брейнфак :)
<tagezi> mikekaganski: Stephan Bergmann это?
<mikekaganski> ага
<tagezi> а какой ник у стефана?
<mikekaganski> sberg
<tagezi> а..
<JohnDoe_71Rus> на go
<mikekaganski> tagezi: JSFuck
<tagezi> :)))
<kompi> да просто fuck, чо уж стесняться
<tagezi> mikekaganski: ура :)
bormant_ has joined #libreoffice-ru
tagezi has quit [Remote host closed the connection]
tagezi has joined #libreoffice-ru
<tagezi> bormant: ping
<tagezi> Оливье говорит, что эти ошибки из-за перевода..
<tagezi> bormant_: какой ник у тебя живой? :)
<bormant_> этот
<bormant_> всем добра
<tagezi> и тебе
<tagezi> кто лазил в перевод? :) вроде раньше не было этого
<bormant_> обновили каталоги, степень разрушений еще не смотрел
<bormant_> cloph вернулся из отпуска, наверное
<tagezi> о, ровно на 15 минут, и ушё опять до релиза? :)
UNIm95 has joined #libreoffice-ru
<tagezi> mikekaganski: так, вопрос назрел
<tagezi> я правильно понимаю что следующие строки это одно и тоже?
<tagezi> nEngineWidth = (long) rParam.mpEngine->CalcTextWidth();
<tagezi> nEngineWidth = static_cast<long>( rParam.mpEngine->CalcTextWidth() );
<bormant_> первое C-style cast, второе C++ static cast
<bormant_> но по сути -- одинаково, с тем отличием, что второе безопаснее
<tagezi> почему безопаснее?
<tagezi> он же проверяет тип только при компиляции
<bormant_> в том смысле, что при неправильном касте компилятор даст по рукам
<tagezi> ага, спасибо
<tagezi> понял
AndChat|474201 has joined #libreoffice-ru
<AndChat|474201> mikekaganski: этот Аркадий, он свободный писатель, надо его сюда позвать
<mikekaganski> ?
<AndChat|474201> Я вчера тебя спрашивал, знаешь ты его или нет
<AndChat|474201> Блин, чо за ник у меня
AndChat|474201 is now known as kompi2
* kompi2 с телефона
<mikekaganski> а, помню. Но так и не понял, насчёт чего (какой коммит)
<kompi2> Да без разницы какой коммит, новое лицо в логах
<kompi2> С русской рожей
<mikekaganski> :)
<kompi2> Буовджага сказал, что он свободный деятель
<tagezi> mikekaganski: ты пульнёшь комит или ещё думать будешь?
<tagezi> нужно попросить мне права коммитить
<kompi2> Не дадут
<tagezi> кто тебе сказал?
<kompi2> Я
<tagezi> :) тебя как-будто кто-то будет слушать
<kompi2> Если я им скажу, что у меня есть инфа о том, чтоты хочешь
<kompi2> Испортить код либры
<tagezi> все поржут
<kompi2> Так сто они никогда не поймут в чем дело
<tagezi> чтобы писать запутаный код, нужно быть ассом в программировании
<kompi2> Но они же не знают, что ты асс
<kompi2> Знаю только я
<kompi2> Ass in programming
<tagezi> позларадствуй :)
<tagezi> это фой который я сейчас чищу...
<tagezi> я удалил только порядка 150 строк.. осталось тысяча :)
<tagezi> 20% файла :)
bormant_ has quit [Quit: Leaving]
UNIm95 has quit [Ping timeout: 246 seconds]
jrj has joined #libreoffice-ru
jrj__ has quit [Ping timeout: 248 seconds]
UNIm95 has joined #libreoffice-ru
UNIm95 has quit [Ping timeout: 250 seconds]
JohnDoe_71Rus has quit [Quit: KVIrc 4.9.2 Aria http://www.kvirc.net/]