LINUX.ORG.RU

Сообщения KennyMinigun

 

LLVM почти закончил переход на Git

Хорошая новость такова, что LLVM уже закончил техническую часть миграции на Git. Если не будет «last minute objections», то формально тоже скоро закончат. Еще один гвоздь…

Плохая новость такова, что они мигрируют на GitHub.

Проект будет находиться тут: https://github.com/llvm/

Официальная статья на LLVM.org
Новость на Phoronix

 , , , ,

KennyMinigun ()

«Елочки» не отрисовываются при ответе на голосование

Steps to reproduce:

  1. https://www.linux.org.ru/vote-vote.jsp?msgid=14576180
  2. PROFIT!111

Вестимо, где-то лишний escape.

 , ,

KennyMinigun ()

C++ codestyle: когда использовать `struct`

Касательно code style. Не холивара (struct vs class) ради.

Веду парочку pet-проектов, придерживаюсь одинакового code style в них. Причем, сам code style в процессе разработки изменяется (как я считаю нужным). Сейчас вот задумался над такими пунктами:

  1. struct keyword should be used for types which do not have access specifiers (i.e. all members are public)
  2. struct keyword can also be used for data straightforward objects that provide merely getters and setters
  3. Implicit private section of class should not be used. I.e. the private access specifier should be used explicitly

А почему создал данную тему – я не уверен что написать в ‘‘rationale’’ для данных правил. Т.е. выгдядит, как вкусовщина.

Помогите придать смысла или отказаться от них.

 , ,

KennyMinigun ()

Можно создать голосование на меньше чем 2 пункта

Сабж: www.linux.org.ru/polls/polls/14670374

Баг? Фича?

 , , ,

KennyMinigun ()

Для std::vector, полезен ли .reserve() перед std::move в конец оного?

Вопрос о std::move для range: https://en.cppreference.com/w/cpp/algorithm/move

Полезно ли делать .reserve перед тем, как добавлять элементы в конец контейнера с помощью вышеупомянутой функции и std::back_inserter? Или STL сам это уже делает?

std::vector<T> result;
while (someCondition) {
  // ...
  std::vector<T> part = process();
  result.reserve(result.size() + part.size()); // <-- сабж, полезно ли?
  std::move(part.begin(), part.end(), std::back_inserter(result));
}

 

KennyMinigun ()

Всем Disco Dingo, леди и джентельмены

Сабж, название следующего выпуска Ubuntu будет Disco Dingo. Танцуем, что ли.

https://www.omgubuntu.co.uk/2018/10/ubuntu-19-04-name-revealed

 , , ,

KennyMinigun ()

Палец Линуса^W Мартина

Так вот, NVIDIA начали работу над поддержкой EGL Streams в KDE: https://www.phoronix.com/scan.php?page=news_item&px=NVIDIA-KDE-KWin-EGLSt...

 , , ,

KennyMinigun ()

Qt Creator научился распознавать перегруженные операторы

Компильнул пару часов назад 4.8 (beta2) с git master. Перегруженные операторы неожиданно подсветились. Правда «Follow Symbol Under Cursor» (aka F2) работает только для многосимвольных операторов (напр. ==, +=, <<, ->). По односимвольным не переходит (или мне не удалось найти способ). Надеюсь к официальному выходу 4.8 сделают.

 , ,

KennyMinigun ()

Выбираем Nokia 6.1

Ищу андроидофон по критериям:

  • До $350
  • Минимум bloatware по дефолту
  • Небольшой размер (около 5.2")
  • Хорошее время жизни от батареи

Мое внимание привлек сабжевый телефон (хотя 5.1 тоже вроди ок). Порадовало, что там Android One. Но он немного больше, чем хотелось.

Есть тут владельцы оного? Android 9 Pie уже прилетел? Или стоит дорлатить за 7.1? Что посоветуете?

 , ,

KennyMinigun ()

Я не понимаю git gc

/tmp/test $ git init
Initialized empty Git repository in /tmp/test/.git/

/tmp/test master # $ git commit --allow-empty -m 'Commit #1'
[master (root-commit) 1dc2d41] Commit #1

/tmp/test master $ git co -b feature
Switched to a new branch 'feature'

/tmp/test feature $ git commit --allow-empty -m 'Commit #2'
[feature f35f72b] Commit #2

/tmp/test feature $ SHA=$(git rev-parse HEAD)

/tmp/test feature $ git co master
Switched to branch 'master'

/tmp/test master $ git show --pretty=oneline $SHA
f35f72b78586ca394dc9cccb33c7fab18d2aa373 Commit #2

sg302447 /tmp/test master $ git branch -D feature
Deleted branch feature (was f35f72b).

/tmp/test master $ git gc --aggressive
Enumerating objects: 3, done.
Counting objects: 100% (3/3), done.
Delta compression using up to 4 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), done.
Total 3 (delta 1), reused 2 (delta 0)

/tmp/test master $ git show --pretty=oneline $SHA
f35f72b78586ca394dc9cccb33c7fab18d2aa373 Commit #2

Почему Commit #2 все еще существует?

 , ,

KennyMinigun ()

В неподтверждённых можно голосовать

Сабж: www.linux.org.ru/view-all.jsp?section=5

Можно ткнуть любую опцию и нажать «голосовать». Только не видно куда результат идет и считается ли он

Баг или фича?

 , ,

KennyMinigun ()

Линус теперь няшка

https://www.phoronix.com/scan.php?page=news_item&px=Linus-Torvalds-New-Po...

Ответ к коммиту, который добавляет драйвер для контроллера BigBen в ядро и включает его по умолчанию:

We do *not* enable new random drivers by default. And we most *definitely* don't do it when they are odd-ball ones that most people have never heard of.

Yet the new «BigBen Interactive» driver that was added this merge window did exactly that.

Just don't do it.

Yes, yes, every developer always thinks that _their_ driver is so special and so magically important that it should be enabled by default. But no. When we have thousands of drivers, we don't randomly pick one new driver to be enabled by default just because some developer thinks it is special. It's not.

So the

default !EXPERT

was completely wrong in commit 256a90ed9e46 («HID: hid-bigbenff: driver for BigBen Interactive PS3OFMINIPAD gamepad»). Please don't do things like this.

Linus

 , ,

KennyMinigun ()

Структура данных для набора одинаковых std::vector

Есть контейнер типа std::vector<std::vector<T>>. Обычно в нем хранится 3-5 векторов гарантированно одинакого размера (по 2-6 элементов). Хочу, чтоб контейнер находился в одном куске памяти, как какое проще всего сделать? (может уже есть такая структура?)

 , ,

KennyMinigun ()

Курица или яйцо

JS (Юникод) знает ответ:

["🥚", "🐔"].sort()

Источник (примечание: особо впечатлительным профиль не смотреть): https://twitter.com/aBagorn/status/1051286652663025664

 , ,

KennyMinigun ()

Constexpr if и числа в Clang

Есть такой код:

int main()
{
  constexpr int flags = 2;
  
  if constexpr (flags & 3) {
    return 0;
  }
  
  return 1;
}
GCC спокойно проглатывает и работает. Clang же противится:
prog.cc:5:17: error: constexpr if condition evaluates to 2, which cannot be narrowed to type 'bool' [-Wc++11-narrowing]
  if constexpr (flags & 3) {
                ^
https://wandbox.org/permlink/P4JWOgkWj8veamrf

Причем без -Werror. Если подать -Wno-c++11-narrowing то тоже работает (как надо).

Кто прав? Баг ли?

P.S. Наиболее похожее что удалось нагуглить вот: https://stackoverflow.com/questions/41253121/strange-behavior-of-narrowing-in...

 , , ,

KennyMinigun ()

Странное поведение поиска на некоторых символах

Если например поискать в комментариях какого-либо пользователя что-то вроди http:// то в результатах получим подсветку только http (т.е. :// вроди как игнорируется).

Самое веселье начинается если пробовать искать http://site в комметариях: в результатах пусто.

Вот например, возьмем такой запрос: www.linux.org.ru/search.jsp?q=http://esxi&range=COMMENTS&interval=ALL...

Результаты пусты, однако там должно быть хотя бы вот это: Krita убивает Gimp (комментарий)

Я подозреваю, что возможно на стороне сервера не вызывается urldecode (и поиск производится по строке как в GET http%3A%2F%2Fesxi)

 , ,

KennyMinigun ()

Посоветуйте минимальный Agile Board

Всяческие Agile борды на данный момент просто напичканы кнопками, категориями и настройками. Есть ли что-нибудь, чтоб можно было поднять сайтик с минимальным интерфейсом и минимум функций (aka GNOME) чтоб хоть как-то напоминало Agile Board? Т.е. чтоб порог вхождения был ниже плинтуса, и интерфейс не вызывал вопросов «а как тут создать задание?». Cамодельность в каком-нибудь online блокноте (как Google Keep) не подходит: там хоть и просто, но надо все делать самому и помнить кучу правил.

Пока что я осилил такой свой критериев:

  • Минимальное количество телодвижений на типичные действия
  • Отсутствие overengineered bullshit: неиспользуемых полей, непонятных связей, свистелок, перделок etc
  • Однозначность (т.е. как можно малый «просвет» для интерпретации сущностей неподготовленым умом)
  • Не требует обучения пользованию / помнить «howto».

 , ,

KennyMinigun ()

Bash Hackers Wiki

Наткнулся в сети на вику, которая открыла для меня новые глубины боли Bash. Да так, что «трюки» с арчвики показались мне цветочками...

Короче, сабж: http://wiki.bash-hackers.org

Для оценки ситуации с «белым пушистым зверьком» (aka «песец») в Bash, предлагаю взглянуть хотя б на две странички:

Может кому пригодится...

 , , ,

KennyMinigun ()

Пример, когда с std::launder действительно работает иначе

Вопрос чисто практический. Пытаюсь собрать примеры кода, которые работают по разному с std::launder и без него.

На cppreference подано 3 примера (в моем понимании):

  1. Подменяется обьект (struct X) с const member (const int X::n) в куче через placement new и доступ к его данным через старый указатель (p) есть UB
  2. Обьект (struct Y) создается в заранее алоцированном пространстве, но с другим типом (std::byte[] s). Использование созданного обьекта используя только reinterpret_cast есть UB.
  3. Метод обьекта подменяет *this, использование обьекта (struct A) по старой ссылке есть UB.

У меня получилось только для пункта 3 собрать пример, когда работа кода отличается: https://wandbox.org/permlink/qi5yoGmIPgeset9I

Для пункта 1 у меня не удается «обмануть» компилятор (я хочу, чтоб он закешировал значение root.next и код вошел в вечный цикл): https://wandbox.org/permlink/A1DDj7KInEKRP4uG

Для пункта 2 пока нет идей откуда может произойти UB.

Есть у кого идеи как увидеть UB из-за неиспользования std::launder? (UBSAN в планах тоже)

 , , ,

KennyMinigun ()

«Только для модераторов» в недавней новости

Линус Торвальдс временно уходит с поста координатора Linux

Странное ограничение (учитывая природу новости). Или обсуждение *только* в Talks? Может тогда закинуть ссылку в коментарии, чтоб меньше искать? (Линус извинился, Линус берёт паузу ). С пометкой «обсуждение в Talks».

Shaman007

 ,

KennyMinigun ()

RSS подписка на новые темы