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
_whitelogger has joined #libreoffice-ru
<tagezi> mikekaganski: а посему в коде ЛО постояно используют преобразование типа?
<tagezi> например { return bool( nControlBits & EEControlBits::USECHARATTRIBS ); }
<tagezi> тут же и так логическое возвращается
<tagezi> или bool(m1.GetMetadataReference() == id1));
<tagezi> { return bool(nMode & ScRecalcMode::NORMAL); }
<tagezi> короче
<tagezi> grep -r " bool(" --exclude-dir="translations" --exclude-dir="workdir" --exclude-dir="instdir" --exclude-dir="helpcontent2" --exclude-dir="i18npool"
<tagezi> там много такого...
<tagezi> о, это ещё интереснее :))
<tagezi> bool operator < (const SunVersion& ver) const;
<tagezi> Санки используют нечеткую логику или только троичную? ))
<tagezi> всё, нашёл.. жесть то какая
JohnDoe_71Rus has joined #libreoffice-ru
_whitelogger has joined #libreoffice-ru
<mikekaganski> { return bool( nControlBits & EEControlBits::USECHARATTRIBS ); } - это не логической. & - это побитная операция, в отличие от &&
<mikekaganski> bool(m1.GetMetadataReference() == id1)) - это скорее всего пережиток, получившийся от автоматизированной замены sal_Bool на ищщд
<mikekaganski> bool
<JohnDoe_71Rus> ищщты
<JohnDoe_71Rus> :)
_whitelogger has joined #libreoffice-ru
<tagezi> mikekaganski: оператов bool используется для проверки версий
<tagezi> вообще, Ноел восхищает. чтобы так чистить код, нужно очень здорово понимать что делаешь и видеть перед собой весь код
<tagezi> он, блин, каждый день выбрасывает чистку на 8 простыней, такое ощущение что у него в мозгах компьютер
<mikekaganski> Ну да, у него прекрасная производительность.
<mikekaganski> Хотя, конечно, случаются и косяки - но работы без этого не бывает
<mikekaganski> а "для проверки версий" - это о чём? Там фактически проверяется валидность, а не версия
<tagezi> ну, там же сказано, что проверяют версию джавы.. и говорят, что не все разнозначные версии равнозначны для ЛО
<tagezi> и идет проверка
<mikekaganski> m_bValid инициализируется в init: http://opengrok.libreoffice.org/xref/core/jvmfwk/plugins/sunmajor/pluginlib/sunversion.cxx#42
<mikekaganski> А init возвращает false, если не смогла отпарсить строку, а не при непригодной версии
<tagezi> но идея платная
<tagezi> mikekaganski: слушай, а в с++ класс может быть публичным или защищенным?
<tagezi> приватным?
<tagezi> чото я как-то теряюсь.. у меня в голове всплывает только по отношению к свойствам и методам это
<mikekaganski> наследование может, а сам класс - нет
<mikekaganski> если ты объявляешь класс в составе определения другого класса, то видимость такого объявления тоже определяется тем, в какой секции объявление
<tagezi> ааа, я понял, спасибо
<tagezi> эта учеба блин.. вот не понятно почему у меня в дипломе 4.85 средний бал.. нихрена не помню уже
UNIm95 has joined #libreoffice-ru
<tagezi> mikekaganski: что находиться в папках inc?
<tagezi> что это за аголовочные файлы?
<tagezi> вот пример.. в basdoc есть инклюд iderid, но я не вижу чтобы этот класс использовался
kompi has joined #libreoffice-ru
<kompi> tagezi: а что дает чистка кода?
<tagezi> код чистит
<kompi> Цель?
<tagezi> чисты код
<kompi> А подробнее?
<kompi> mikekaganski: его тролль покусал?
<tagezi> блин, ну это абстракция, когда человек пытается его сделать более читаемым, более логичным, ну, и ускорить выполнение, убирая излишние элементы
<tagezi> хотя, если верить mikekaganski, то компиляторы теперь на столько умные, что даже если ты на брайнфаке будешь писать, он всеравно сделает очень качественный и быстрый бинарник из с++
<kompi> А есть реальное ускорение от чистки кода?
<tagezi> а что называется реальным?
<tagezi> Например сравниваем МСО и ЛО.. ЛО никогда не будет работать также быстро как МСО, потому что у МСО 2/3 библиотек выполняются внутри системы.. можно сказать он надстройка над системой
<tagezi> а у ЛО свои велосипеды, и всё что для МСО пашет внутри системы, для ЛО работает во вне
<tagezi> если про ускорение самого кода.. то многое зависит от количества использования операций и мощности компьютера, некоторые вещи просто не будут видны на мощных компах, так как им пофигу на 1,5 тысячи лишних тиков
<kompi> Если мсо надстройка над виндой, то как он работает в вайн?
<tagezi> хреново
<tagezi> kompi: если очень хочешь, сравни работу МСО в вайне и ЛО в линухе
<kompi> Я с этого блог начинал
<tagezi> и как?
<kompi> Мсо жрет столько же озу, как и либра, но даже в вайне гуи болееплавный и симпатичный
<tagezi> работает быстрее?
<kompi> Чем нативный либра в линксе
<kompi> На взгляд юзера да, работает быстрее
<JohnDoe_71Rus> mso2010 работает в reactOS
<kompi> РеактОС не нужна
<tagezi> мсо не нужно
<tagezi> а не на взгляд?
<tagezi> какая разница как это выглядит... ты про скорость говоришь, а не про выглядит
<kompi> Сделайте мне не мерцающий гуи в либре и мсо пойдет лесом
<tagezi> у меня не мерцает, так что ничем не могу помось
<kompi> Скорость набора текста от софта не зависит
<tagezi> тогда нафрен ты вообще спрашивал? [13:42:50] <kompi> А есть реальное ускорение от чистки кода?
<kompi> tagezi: открой math и поезди мышкой над панелью с операторами
* JohnDoe_71Rus не мерцает
<kompi> Я спрашивал из желания узнать
<tagezi> а потом начал тролить
<kompi> Ну а у мня мерцает, на работе вообще жутко, дома не так страшно, но все равно есть
<tagezi> не мерцает ничего, всё нормально пашет
<kompi> tagezi: не знаю зачем ты начал троллить
<kompi> Видяшка какая?
<kompi> JohnDoe_71Rus: какая у тебя?
<JohnDoe_71Rus> Card: Advanced Micro Devices [AMD/ATI] RS482M [Mobility Radeon Xpress 200]
<JohnDoe_71Rus> X.Org: 1.18.3 drivers: ati,radeon (unloaded: fbdev,vesa) Resolution: 1280x800@60.0hz
<JohnDoe_71Rus> GLX Renderer: Gallium 0.4 on ATI RS480 GLX Version: 2.1 Mesa 11.2.0
<kompi> А ос и де?
<JohnDoe_71Rus> lubuntu 14.04.5
<kompi> У меня амд 6450 и хубунтц 16.04
<kompi> А на работ4 интел хд4000 и винда
VVD has joined #libreoffice-ru
JohnDoe7 has joined #libreoffice-ru
JohnDoe7 has quit [Client Quit]
JohnDoe9 has joined #libreoffice-ru
JohnDoe_71Rus has quit [Ping timeout: 240 seconds]
<JohnDoe9> чё та у меня канал убунты отвалился
<JohnDoe9> а, ясно
JohnDoe9 has quit [Quit: KVIrc 4.9.2 Aria http://www.kvirc.net/]
JohnDoe_71Rus has joined #libreoffice-ru
kompi has quit [Ping timeout: 240 seconds]
kompi has joined #libreoffice-ru
kompi has quit [Quit: Bye]
<mikekaganski> Вот только отвернулся на минутку - а они тут успели настрочить!
<mikekaganski> Насчёт умных компиляторов - я говорил про вполне конкретную вещь. Вообще чистка кода обычно ускоряет работу, и иногда очень прилично
<mikekaganski> Но, кстати, как верно было замечено, очень важно не только быстродействие кода, но и его понятность, читаемость.
<mikekaganski> Если учесть степень документированности кода, его понятность - жизненно важна.
<tagezi> mikekaganski: а с пол второго? )
<mikekaganski> Ну, насчёт ненужных инклюдов - мы их тоже чистим, когда обнаруживаем
<mikekaganski> тут может быть побочный эффект от инклюда внутри инклюда, но тогда всё равно нужно "выправить" это и инклюдить не iderid.hxx, а tools/resid.hxx
<tagezi> mikekaganski: а разве инклюды наследуются?
<mikekaganski> Конечно
<tagezi> эм
<tagezi> а почему тогда нужно и в hxx и d cxx добавлять?
<mikekaganski> с чего это?
<tagezi> ну, вроде я так помню
<mikekaganski> если ты добавил в hxx, то уже в cxx, которые его используют, не нужно добавлять
<tagezi> эээммм
<mikekaganski> но не нужно всё добавлять в hxx, потому что это интерфейс и должен содержать только то, что нужно для использования заголовка
<mikekaganski> поэтому часть добавляют в заголовок, а часть - в cxx
<tagezi> понятно
<JohnDoe_71Rus> https://habrahabr.ru/post/330176/ во как
<tagezi> о чего?
<tagezi> он число сравнивает со строкой
<tagezi> и естественно сравнение происходит как заложено в языке программирования, и так как каждый язык реализовывался для своего, то и сравнения проходят по разному
<JohnDoe_71Rus> я краем уха слышал что придумали языки, типа "жемчужины" где не надо заморачиватся с типами. компутер сам все сделает
<mikekaganski> Да, точно. Там один оператор всего используется: MakeMeCool
<JohnDoe_71Rus> MyCoolProg
<tagezi> в бейсике не нужно заморачиваться с типами
<tagezi> но его ещё в 70 придумали )))
<mikekaganski> на самом деле, конечно, много языков помогают с типами, но даже в бейсике нужно заморачиваться, если задача нетривиальная
<JohnDoe_71Rus> не, int float басику вроде надо объяснять
<tagezi> нет, не нужно
<tagezi> даже строка в инт сама превлащается
<tagezi> другое дело что можно управлять типами, чтобы контролировать сравнение, но это другой вопрос
<tagezi> mikekaganski: о, ещё вопрос вспомнил, не понимаю этого
<tagezi> OutputDevice * чо
<tagezi> это такое
<tagezi> OutputDevice тип переменной (класс), * указатель на объект
<tagezi> а где сама переменная? )
<tagezi> здесь тоже самое
<tagezi> вообще, меня эти функции которые ничего не делают, убивают просто
<tagezi> они даже не функция разыменования
<mikekaganski> 1. Там, где нет имени переменной.
<mikekaganski> В данном случае это виртуальная функция, определённая в предке, и там заданы все её аргументы (с типами).
<mikekaganski> Теперь в потомке мы её определяем, и в данном конкретном потомке нам пофиг на значение одного из аргументов
<tagezi> потому что функция вообще ничего не делает ))
<JohnDoe_71Rus> значит ответ "потому что так заведено предками"
<mikekaganski> тогда мы всё равно обязаны указать, что здесь должен быть указатель на объект, но поскольку мы не будем ничего с ним делать, то его имя нам пофиг
<tagezi> но онаже протектед, тоесть доступна из потомка
<tagezi> хотя и виртуальная
<mikekaganski> больше того, если мы всё-таки укажем имя в *реализации* метода, у нас будет предупреждение компилятора о неиспользуемой переменной, а в дженкинсе все предупреждения - ошибки
<mikekaganski> и что, что протектед?
<mikekaganski> она переопределяемая, то есть встаёт строго вместо предковой
<mikekaganski> и обязана строго соответствовать сигнатуре предка
<tagezi> я просто не понимаю, зачем нам нужно наследовать виртуальную ничего не делающую функцию
<mikekaganski> (имена аргументов неважны, но типы и порядок - обязательно)
<mikekaganski> обрати внимание: в предке эта функция определена как =0
<mikekaganski> то есть "чисто виртуальная", нереализованная, и *обязанная быть реализованной в потомке*. Класс с такими функциями - *чисто виртуальный* класс, не может быть создан
<mikekaganski> чтобы создать класс, он обязан реализовать *все* чисто виртуальные функции предка, пусть даже пустышками
<mikekaganski> иначе будет ошибка компиляции
<tagezi> то есть клас потомок должен наследовать все виртуальные функции?
<tagezi> эм..
<mikekaganski> класс-потомок наследует всё, всегда. Он *может* переопределить виртуальные функции, если ему нужно. Но он *обязан* определить все чисто виртуальные функции, доставшиеся ему.
<mikekaganski> Ну, точнее тот потомок, который непосредственно будет создаваться
<tagezi> чото я не понимаю.. я всегда считал, что класс это абстрактная модель.. и я не обязан наследовать весь его
<tagezi> тоесть я наследую только то что нужно, а остальное оставляю не тронутым
<mikekaganski> обязан. На всякий случай - наследовать и (пере)определять - это разные вещи
<mikekaganski> погоди!
<tagezi> и таким образом. я могу делать абстракуии, которые будут более универсальны
<mikekaganski> именно: наследовать - это получить от предка, не обязательно это менять
<mikekaganski> а вот переопределять - это по желанию, *кроме чисто виртуального*, то есть функции, которые у предка =0
<mikekaganski> их определять *обязательно*ю
<tagezi> чую нужно на ночь читать страуструпа, а не конечные автоматы
<tagezi> mikekaganski: раскажи ещё про директорию inc. Что там за заголовочные файлы валяются? он есть в основной директории модуля и в поддиректории сырцов
<mikekaganski> эээээ....
<mikekaganski> ну, инклюды.... Я понимаю, что выгляжу, как дурак, но не знаю, что сказать
<tagezi> ))
<tagezi> почему часть инслюдов в инк, а часть рядам с cxx?
<tagezi> а это шаблон, он получается приватный?
JohnDoe_71Rus has quit [Quit: KVIrc 4.9.2 Aria http://www.kvirc.net/]
<mikekaganski> это не шаблон приватный, а член класса
<mikekaganski> который является объектом-умным указателем на принтер
<mikekaganski> а инклюды где попало - это пережитки...
<tagezi> ну, я пытаюсь построить uml IDE, буду проникать в код.. но ещё проблема, что я не понимаю как некоторые конструкции в uml перевести
<tagezi> про отношения классов я вообще молчу.. это кокое-то мозго вынимательство
UNIm95 has quit [Quit: Leaving.]
<tagezi> понятно чего хейко так не хочет в меню сервис добавлять пункты.. они опять всю концепуию переделывают
<mikekaganski> хм?
<tagezi> вот им немется с меню.. делать видимо нечего пожизни.. может им сайт парнухи найти?
<mikekaganski> :)
<tagezi> блин, установил принтер в системе, теперь в файл не хочет печатать
<mikekaganski> они где-то об этом написали? (я не про поиск порносайтов)
<tagezi> mikekaganski: не нужен там этот инклюд вообще
<mikekaganski> tagezi: тогда дропни его
<tagezi> да они в дро сделали меню правее сервиса
<tagezi> сервис теперь вообще пустой
<tagezi> файлы инклюда нужно проверять все, что откуда берется.. так сразу не понять..
<mikekaganski> так и есть. Многие не нужны, мы чистим, когда натыкаемся...
<tagezi> а что это вообще за класс?
<tagezi> нафиг он нужен
<tagezi> нашёл описание метода
<mikekaganski> спать пора уже! :)
<tagezi> да, в 6 вставать
<tagezi> а эо где искать? #include <memory>
<tagezi> и чего она тут делает? о_О
<mikekaganski> это стандартная библиотека; в ней всякие std::shared_ptr
<tagezi> ладно, пойду спать, завтра на учебу