LINUX.ORG.RU

Сообщения KennyMinigun

 

Как изменить target по умолчанию в Clang?

Есть Clang на оффтопике:

C:\Users>clang++ --version
clang version 8.0.0 (tags/RELEASE_800/final)
Target: x86_64-pc-windows-msvc
Thread model: posix
InstalledDir: C:\Program Files\LLVM\bin

По умолчанию он хочет стандартную либу от M$:

C:\Users>clang++ hello.cpp -o hello-clang.exe
clang++: warning: unable to find a Visual Studio installation; try running Clang from a developer command prompt [-Wmsvc-not-found]
hello.cpp:1:10: fatal error: 'iostream' file not found
#include <iostream>
         ^~~~~~~~~~
1 error generated.

У меня есть MinGW, который я хочу чтоб Clang использовал. Однако надо явно подать аргумент --target:

C:\Users>clang++ --target=x86_64-pc-windows-gnu hello.cpp -o hello-clang.exe

C:\Users>hello-clang.exe
Hello, World!

Можно ли поменять конфигурацию Clang так, чтоб он по умолчанию выбирал target: x86_64-pc-windows-gnu? В интернетах нашел только как пересобрать Clang с таким конфигом. Не очень хочется пересобирать :/ Может есть какая-то переменная среды или текстовый конфиг чтоб поменять умолчания?

 ,

KennyMinigun ()

Установка GNU/Linux в Hyper-V

Пытаюсь завести Kubuntu 19.04 в мелкомягкой поделке (не спрашивайте почему). Перебираю опции, чтоб машина заработала.

Если устанавливаю как «Generation 1», то LiveDVD загружается до графической менюшки «Try Kubuntu/Use Kubuntu». Try Kubuntu зависает, Install Kubuntu устанавливает, но потом не запускается (тоже зависает).

В «Generation 2» они включают UEFI с проверкой сертификатов (о б-же проверка сертификата для VM (sic!)), и LiveDVD не проходит проверки. Соответственно, не запускается. Одако, для «Generation 2» они обащеют дополнительные фичи виртуализации. Да-да, тот самый Microsoft’овский EEE в действии.

Сейчас думаю, может под Generation 2 таки заработает. Только надо пройти проверку сертификата. Вроди ж LTS релизы должны проходить?

Сорри за нубский вопрос, но может кто-то уже сталвивался и не надо будет копать глубже?

 , ,

KennyMinigun ()

Firefox Premium. А вы готовы заплатить?

Согласно с материалом статьи https://www.omgubuntu.co.uk/2019/06/firefox-premium-would-you-pay Mozilla планирует платную Premium подписку на услуги связанные с повышением приватности в сети (напр. VPN). Базовый функционал как был останется безплатным.

Интересно, что такой жест даст Мозилле?

 , ,

KennyMinigun ()

Мультиуровневый bsearch, нужно ли?

Мои исходные данные – массив структур с географической информацией:

struct Geo {
  std::string airport;  // level: 1
  std::string city;     // level: 2
  std::string province; // level: 3
  std::string nation;   // level: 4
  std::uint8_t subarea; // level: 5 | values: 11, 12, 13, 14, 21, 22, 23, 31, 32, 33, 34
  std::uint8_t area;    // level: 6 | values: 1, 2, 3
};

Надо много (и желательно быстро) отвечать на запрос «принадлежит ли Needle к Haystack». Где Needle всегда более специфично нежели Haystack, например:

belongsTo(Needle=City{Munich}, Haystack=Subarea{21}) -> true

Я думаю посортировать данные иерархически:

std::vector<Geo> geos = allGeos();
std::sort(geos.begin(), geos.end(), 
  [](const Geo& lhs, const Geo& rhs) {
    int areaCmp = lhs.area - rhs.area;
    if (areaCmp != 0)
      return areaCmp < 0;

    int subareaCmp = lhs.subarea - rhs.subarea;
    if (subareaCmp != 0)
      return subareaCmp < 0;

    int countryCmp = lhs.nation.compare(rhs.nation);
    if (countryCmp != 0)
      return countryCmp < 0;

    int provinceCmp = lhs.province.compare(rhs.province);
    if (provinceCmp != 0)
      return provinceCmp < 0;

    int cityCmp = lhs.city.compare(rhs.city);
    if (cityCmp != 0)
      return cityCmp < 0;

    return lhs.airport.compare(rhs.airport) < 0;
  }
);

И потом использовать bsearch() по партициям типа Needle на пути от Haystack. Т.е (псевдокод):

int level = levelOf(Haystack);
std::vector stack{ Range{geos.begin(), geos.end()} };

while (!stack.empty()) {
  Range partition = stack.back();
  if (partition.empty()) {
    stack.pop_back();
    ++level;
  }

  // depth-first
  if (level > levelOf(Needle)) {
    iterator begin = partition.begin();
    iterator end = lower_bound(begin, partition.end(), valueOf(*begin, level));
    stack.push(Range{begin, end})
    level -= 1;
    continue;
  }

  // level == levelOf(Needle)
  if (bsearch(partition, Needle))
    return true;

  // trim parent's begin()
  stack.pop_back();
  stack.back().begin() = partition.end();
  ++level;
}

Где level обозначает поле из Geo, соответсвенно комментарию.

Вопрос такой: может есть алгоритм (или структура данных) лучше подходящая под цель?

 ,

KennyMinigun ()

Подскажите контейнер для const обьектов

Все прекрасно знают (или сейчас узнают), что std::vector не умеет в const T. Хотя, вполне себе можно представить как такой контейнер будет себя вести:

  • под капотом std::aligned_alloc
  • добавляем через emplace_back(Args&&), который делает placement new
  • operator[] отдает через std::launder (C++17)

У меня есть метод, что подтягивает данные с базы. Хочу возвращать контейнер с const обьектами. Чтоб означить, что их не следует менять. Конечно ничего не мешает возвращать не-const

Есть ли что-нибудь на замену std::vector, чтоб самому не писать? Может boost?

 ,

KennyMinigun ()

Просьба срочной публикации новости

Сабж: Конкурс обоев для KDE Plasma 5.16

Дедлайн конкурса очень даже скоро: 29 мая. Чем раньше опубликуется новость, тем больше у людей времени.

Благодарю!

cast @Shaman007 @jollheef @CYB3R

 , ,

KennyMinigun ()

Krita падает на Qt 5.12

Падает с приблизительно таким сообщением:

free(): double free detected in tcache 2

Предыдущие строчки лога чаще всего не повторяются, так что думаю, что к ошибке не относятся. Но на всякий случай пример лога: https://paste.ubuntu.com/p/Cd8VsRT28W/

Покопавшись в инетах, я нашел похожий по симптомам багрепорт: https://bugzilla.redhat.com/show_bug.cgi?id=1666197

Который, в свою очередь, отсылает к: https://bugreports.qt.io/browse/QTBUG-72488

На реддите пишут, что в мейнстриме Krita уже заворкераундили: https://www.reddit.com/r/krita/comments/aanv5s/krita_crashes_when_opening_new_file/

В связи с чем реквест к @Sunderland93. Можете залить свежую версию для Ubuntu Disco в Krita Lime PPA? Спасибо заранее.

 , ,

KennyMinigun ()

C++ обошел Python по популяности

Как сообщает https://www.technotification.com/2019/04/c-knocks-python-out-of-top-three.html

согласно индексу TIOBE C++ переместился на третье место по популяности. Взрастание популярности вероятно обусловлено изменениями в стандарте начиная с C++11 и поддержкой среди «главных» компиляторов: GCC, Clang и Visual Studio.

 , ,

KennyMinigun ()

is_assignable<int, int> == false

Сабж. Но почему?

#include <type_traits>
int main() { return std::is_assignable_v<int, int>; }
// --> 0

https://wandbox.org/permlink/59MyGGpqRz2q1zzq

 ,

KennyMinigun ()

Накладывает ли LGPLv3 ограничения на производимые результаты?

Вопрос таков: если использовать инструмент под LGPLv3, то можно ли считать произведенные им результаты «work based on»?

https://choosealicense.com/licenses/lgpl-3.0/

https://www.gnu.org/licenses/gpl-3.0.en.html

A “covered work” means either the unmodified Program or a work based on the Program.

To “convey” a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying.

Например, подпадает ли код (текст) написанный в Qt Creator (Community) под определение «covered work»? Причем, код не использует Qt.

 , , ,

KennyMinigun ()

Милота

Листал я тут lorquotes. Глядите, что нашел http://www.lorquotes.ru/quotes-autor.php?id=56

Вице президент компании, Джеймс Гослинг, аргументировал данное решение тем, что потенциал мобильных устройств вырос, и настало время, когда они могут справиться с полнофункциональной версией Java.

В телефоны стали ставить двухядерные процессоры с гигом оперативной памяти? Я что то пропустил?
JB (*) (24.10.2007 04:54:21) (Источник)

Если это не вызывает у вас умилительную улыбку на лице, тогда…

 , , ,

KennyMinigun ()

Такое вообще легально?

Есть шаблонная декларация с возвращаемым типом auto и без «trailing return type». GCC и Clang едят. Такое вообще легально?

Код:

foo.h

#pragma once

#include <string>
#include <utility>

class Foo {
public:
  explicit Foo(std::string name) : _name{std::move(name)} {}

  void bar() const;

private:
  template <typename Callback>
  auto wrap(Callback&& c) const; // <-- !!!
  
  const std::string _name;
};

foo.cpp

#include "foo.h"

#include <iostream>

template <typename Callback>
auto Foo::wrap(Callback&& c) const {
  return [&]() {
    std::cout << "das ist ein Wrapper aus " << _name << '\n';
    c();
  };
}

void Foo::bar() const {
  auto f = wrap([]() { std::cout << "das is ein Lambda\n"; });
  f();
}

main.cpp

#include "foo.h"

int main() {
  Foo foo{"Foo #1"};
  foo.bar();
}

Выводит (как и задумывалось):

das ist ein Wrapper aus Foo #1
das is ein Lambda

GCC: https://wandbox.org/permlink/jXIrkG0U13I9ZRnP
Clang: https://wandbox.org/permlink/6hs2OoxNpzhnu9iX

 ,

KennyMinigun ()

Симулятор трусов

Разыскиваются поигрульки c более-менее внятным графонием по типу Nier Automata или Tomb Raider. Чтоб главная героиня (или со-героиня) постоянно была в кадре. Жанр не важен. Дискач

 ,

KennyMinigun ()

Не уверен баг ли в GCC или нет

Есть код с C++Weekly от Jason Turner (только немного изменены имена): https://wandbox.org/permlink/EWlifMBMhvBhSn5B

Info: http://eel.is/c++draft/temp.variadic#5

template <typename... Functors>
struct CompositeVisitor : public Functors...
{
#if 1
  template <typename... Args>
  CompositeVisitor(Args&&... args) : Functors{std::forward<Args>(args)}...
  {
  }
#endif

  using Functors::operator()...;
};

template <typename... Functors>
CompositeVisitor(Functors...) -> CompositeVisitor<std::decay_t<Functors>...>;

struct Foo {};
struct Bar {};
struct Baz {};

int main() {
  CompositeVisitor visitor{
    [](const auto&) { std::puts("got some part"); return true; },
    [](const Bar&) { std::puts("got Bar"); return false; }
  };
  
  Foo foo;
  Bar bar;
  Baz baz;
  
  visitor(foo);
  visitor(bar);
  visitor(baz);
}

Clang собирает и работает, GCC не хочет:

prog.cc: In instantiation of 'CompositeVisitor<Functors>::CompositeVisitor(Args&& ...) [with Args = {main()::<lambda(const auto:1&)>, main()::<lambda(const Bar&)>}; Functors = {}]':
prog.cc:30:3:   required from here
prog.cc:11:72: error: mismatched argument pack lengths while expanding 'Functors'
   11 |   CompositeVisitor(Args&&... args) : Functors{std::forward<Args>(args)}...
      |                                                                        ^~~

Если подать типы Functors explicit, то собирается. Только с лямбдами немного накладно сделать.

Баг ли?

 , , ,

KennyMinigun ()

Unlegacy AOSP 9.0 + OpenGapps на Nexus 5

Накатил тут на Nexus 5 сборку от Unlegacy: https://forum.xda-developers.com/showpost.php?p=74514638&postcount=3

Однако GApps отказывается ставиться:

Open GApps micro 9.0 - 20190303
 
- Mounting  /persist /system
 
- Gathering device & ROM information
 
*** Incompatible Android ROM detected ***
 
This GApps pkg is for Android 9.0.x ONLY
Please download the correct version for
your ROM: 5.1.1 (SDK 22)

Прикол в том, что даже factory image для девайса не 5.1 (a 6.0)

На форуме и в интернетах ответа не нашел. Может есть кто подскажет чего?

cast @DATRAT

 , , ,

KennyMinigun ()

LLVM 8.0 почти вытужили

На официальном http://llvm.org по графику:

  • 8.0.0:
    • Jan 16: Branch point, rc1
    • Feb 6: rc2
    • Feb 27: final

Но релиза все еще нет: https://prereleases.llvm.org/8.0.0/

На форониксе уже 26-го зафигачили новость: https://www.phoronix.com/scan.php?page=news_item&px=LLVM-Clang-8.0-Features

Кому там скор надо? Расчехляйте машину времени и вперед новость писать!

 , , , ,

KennyMinigun ()

Разочарованным в BMTH - amo

Речь о последнем альбоме Bring Me The Horizon под названием amo. Кто в теме, знает насколько «другой» данный альбом.

Так вот, тут недавно одна неплохая группа из Deutchland сделала из nihilist blues нечто: https://www.youtube.com/watch?v=VLGRymyT-mM

Enjoy!

А линукс тут при том, что смотри теги.

 , ,

KennyMinigun ()

Гномеры нашли повод выпилить очередную фичу

Из GNOME Shell убирают прозрачность панели когда прииложения не развенуты на полную. Поводом стала «нечитабельность текста и значков» при светлых обоях.

Рапорт проблемы был создан 2 года назад и было прежложено три варианта решения:

  1. Удалить фичу
  2. Использовать размытие (blur) фона
  3. Сделать фон текста темнее и с градиентом

Но в течении двух лет никто ничего так и не сделал, потому была выбрана опция 1.

Источник: https://www.omgubuntu.co.uk/2019/02/gnome-shell-translucent-top-panel-effect-removed

 , ,

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 ()

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