LINUX.ORG.RU

Сообщения eagleivg

 

Общение с анонимусами

При общении в треде с числом анонимусов более 2-х, становится трудно отслеживать, кому же ты отвечаешь. Прошу добавить нумерацию анонимусов.

 

eagleivg
()

Линуксокапец

https://www.dsogaming.com/news/tim-sweeney-founder-of-epic-games-comments-cur...

Есть интересное высказывание Tim Sweeney, основателя Epic Games:
«... Я понимаю, что вам могут не нравиться эксклюзивы магазинов, но это другой вопрос, который не связан с проблемой закрытия платформ вроде Windows с целью монополизировать дистрибуцию, как это происходит на iOS. Microsoft пыталась создать закрытые версии Windows с помощью UWP, но ничего не получилось. Причём сторонники этой идей ушли, а их места заняли замечательные лидеры вроде Сатья Наделлы и Фила Спенсера, которые ведут Windows вперёд как открытую платформу», - сказал Суини.

Это что же получается, Стим для линукса сделал свое дело?

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

Но вот нужен ли он будет теперь? Не дропнут ли краны его поддержку, ибо мавр свое сделал?

 ,

eagleivg
()

Не было печалей - апдейтов накачали

https://www.theverge.com/2019/1/31/18205774/nio-ota-update-traffic-china-es8
Для не умеющих в англицкий - клиенты на тест-драйве китайского электромобиля Nio ES8 тыркнули на экране установку обновлений, машина на оживленной магистрали отрубилась полностью на час, ни дверей открыть, ни даже стекол опустить.

 ,

eagleivg
()

S.T.A.L.K.E.R. Зов припяти завезли в линукс

Свершилось, теперь ЗП запускается под линуксом. Собирать отсюда:
https://github.com/OpenXRay/xray-16
Инструкция по сборке там же, инстукция по запуску в вики.

Нужны тестеры и баг-репорты.

Сразу предупреждаю, с лицензией есть засада, сорцы несвободны, но открыты для некоммерческого использования.

 ,

eagleivg
()

C++ и аллокаторы std::vector

Нужен направляющий пинок. Имеется вектор, с переопределенным аллокатором tbb::tbb_allocator. Переопределены операторы new и delete на использование scalable_malloc/free из того же tbb. И со всем этим добром творится непонятная хрень: push_back в этот вектор приводит к сегфолту, но не всегда, и каждый раз в разных местах. Подозреваю, что есть некая гонка в разных потоках, но понять где именно, не могу. Минимальный пример для воспроизведения тоже не смог сделать - 1М элементов в 8 потоков прекрасно добавились и ни разу не упали. Подскажите, куда еще можно копать, у меня идеи кончились вообще, а понимание происходящего кончилось еще раньше.

 ,

eagleivg
()

Чудесный код С++

Хотите поржать?

BOOL ShaderElement::equal(ShaderElement* S)
{
    if (nullptr == S && nullptr == this)
        return TRUE;
    if (nullptr == S || nullptr == this)
        return FALSE;
    return equal(*S);
}
Как вы думаете, для чего оно?

( читать дальше... )

 

eagleivg
()

использование using и возвращаемые типы

Есть 2 класса: B.h:

#pragma once

class B
{
public:
	B();
	virtual ~B();
};
и A.h, в котором класс B используется как поле.
#pragma once

#include "B.h"

class A
{
public:
	using bns = B; // И вот если мы обявим его через using, то начинаются чудеса
private:
	bns* m_Bclass;
public:
	A();
	virtual ~A();

	bns* get_b();
	void set_b(bns* b);
};
И собственно A.cpp
#include "A.h"

A::A()
{
	m_Bclass = nullptr;
}

A::~A()
{
}

void A::set_b(bns* b) // тут всё нормально
{
	m_Bclass = b;
}

bns* A::get_b() // а тут error: ‘bns’ does not name a type
{
	return m_Bclass;
}
Я понимаю, что чего-то не понимаю. Почему публично обявленный через using тип можно принимать, но нельзя возвращать?

 

eagleivg
()

Будь проклят тот день #3 [С++ template hell]

Снова MSVC против g++ :

template <typename TIndex>
struct CVertexManagerFixed
{
    template <typename TPathBuilder, typename TCompoundVertex>
    class CDataStorage : public TPathBuilder::template CDataStorage<TCompoundVertex>
    {
    public:
        using CDataStorageBase = typename TPathBuilder::template CDataStorage<TCompoundVertex>;
        using Vertex = TCompoundVertex;
        using Index = TIndex;

    public:
        inline CDataStorage(const u32 vertex_count);
        inline virtual ~CDataStorage();
        inline Vertex& get_node(const Index& vertex_id) const;
    };
};


#define TEMPLATE_SPECIALIZATION                           \
    template <typename TIndex> \
    template <typename TPathBuilder, typename TCompoundVertex>

#define CFixedVertexManager \
    CVertexManagerFixed<TIndex>::CDataStorage<TPathBuilder, TCompoundVertex>

TEMPLATE_SPECIALIZATION
inline CFixedVertexManager::CDataStorage(const u32 vertex_count)
    : CDataStorageBase(vertex_count)
{
}

TEMPLATE_SPECIALIZATION
inline typename CFixedVertexManager::Vertex& CFixedVertexManager::get_node(const Index& vertex_id) const
{
    VERIFY(vertex_id < m_max_node_count);
    VERIFY(is_visited(vertex_id));
    return *m_indexes[vertex_id].m_vertex;
}

Лог ошибок:

../src/test_cpp.cpp:54:34: error: non-template ‘CDataStorage’ used as template
     CVertexManagerFixed<TIndex>::CDataStorage<TPathBuilder, TCompoundVertex>
                                  ^
../src/test_cpp.cpp:63:17: note: in expansion of macro ‘CFixedVertexManager’
 inline typename CFixedVertexManager::Vertex& CFixedVertexManager::get_node(const Index& vertex_id) const
                 ^
../src/test_cpp.cpp:54:34: note: use ‘CVertexManagerFixed<TIndex>::template CDataStorage’ to indicate that it is a template
     CVertexManagerFixed<TIndex>::CDataStorage<TPathBuilder, TCompoundVertex>
                                  ^
../src/test_cpp.cpp:63:17: note: in expansion of macro ‘CFixedVertexManager’
 inline typename CFixedVertexManager::Vertex& CFixedVertexManager::get_node(const Index& vertex_id) const
                 ^
../src/test_cpp.cpp:54:59: error: expected unqualified-id before ‘,’ token
     CVertexManagerFixed<TIndex>::CDataStorage<TPathBuilder, TCompoundVertex>
                                                           ^
../src/test_cpp.cpp:63:46: note: in expansion of macro ‘CFixedVertexManager’
 inline typename CFixedVertexManager::Vertex& CFixedVertexManager::get_node(const Index& vertex_id) const
Я не понимаю, почему объявление возвращаемого типа метода get_node дает такую ошибку. Ведь CDataStorage - это только шаблон, нигде как класс он не объявлен?

 ,

eagleivg
()

Будь проклят тот день #2 [С++ template hell]

Снова код с винды:

template <typename _param, //  shadows template parm ‘class _param’
    typename _param_ptr = _param*> // shadows template parm ‘class _param_ptr’
class CTest
{
public:
    typedef _param CParam;

    struct STest
    {
    	_param_ptr m_operator;

        inline STest(_param_ptr _param) // declaration of ‘_param_ptr _param’
            : m_operator(_param)
        {
        }
    };
};

Как я понимаю, основная засада в инлайновом методе внутри структуры - он воспринимается как новое объявление класса. Как же тогда передать туда параметр шаблона?

 ,

eagleivg
()

Будь проклят тот день...[С++ template hell]

Портирую код с винды на линукс.

struct CDestroyer
{
...
    template <typename T>
    struct CHelper4
    {
        template <bool a>
        static void delete_data(T& data)
        {
            CHelper2<T>::delete_data<object_type_traits::is_pointer<T>::value>(data);
        }

        template <> // explicit specialization in non-namespace scope ‘struct CDestroyer::CHelper4<T>’
        static void delete_data<true>(T& data) //error: template-id ‘delete_data<true>’ in declaration of primary template

        {
            CHelper3::delete_data(data);
        }
    };

    template <typename T> 
    static void delete_data(T& data)
    {
        CHelper4<T>::delete_data<object_type_traits::is_stl_container<T>::value>(data);
    }
};
Получаю ошибки написанные в комментариях. Гуглинг показал, что частичная спецификация для функций недопустима по стандарту (ну а MSVS традиционно на это кладёт).

Вопрос: как это обойти?

Я в кресты не умею, только в си, так что при ответе пожалуйста учитывайте. Ну или ткните носом в доки, каким образом можно делать условный выбор шаблонов в целом.

 ,

eagleivg
()

Возможно Deus Ex: Mankind Divided выйдет на линуксе и маке.

Не могу не поделиться радостью.
Пруф:
https://steamdb.info/app/337000/depots/
Пока под мак и лялих нет DLC, вангую что задерживается именно из-за этого.

Думаю, надо брать как выпустят, вроде тогда статистика по линуху засчитается. И да, есть надежда, что Denuvo на другие платформы портировать не будут.

 , ,

eagleivg
()

ЭлектроМагнетизм и электро-магнитные волны - как это работает?

Электромагнитные волны возбуждаются попеременным движением электронов в проводнике в противоположных направлениях, т.е. переменным током. Движение же электронов в одном направлении возбуждает просто магнитное поле, без волн.
Изменения магнитного поля способно двигать электроны, т.е. возбуждать токи. Но что такое ЭМ-волна в вакууме - там же нет электронов, чтобы цепной реакцией возбуждались токи и далее менялось магнитное поле?

Правильно ли я понимаю, что если просто помахать магнитом в вакууме, то ЭМ волны не возникнет? Ведь тогда сам термин «электро-магнитная волна» некорректен?

Пробовал почитать литературу, нагугленную по «возбуждение электромагнитных волн», нашел это, так ничего и не понял. Математики дофига, но я не понимаю, как это интерпретировать.

В общем, я совсем запутался, может кто-нибудь пролить свет на это темное дело?

P.S. Эфиродинамщиков прошу не беспокоиться.

 магнетизм, ,

eagleivg
()

Выпустили HTC Vive

Видео здесь: https://www.youtube.com/watch?v=qYfNzhLXYGc

Вопрос к специалистам: кроме игрулек это на что-то годится? По идее, можно устроить что-то вроде CAD-Wall для конструкторов, но не за лярды долларов, а всего за восемьсот бачинских. Ещё на ум приходят биологи - там вроде есть задача визуализации белков и ручная корректировка цепочек. Всякие программеры в пролёте - тексты в этом шлеме видны отстойно.

Для чего ещё полезного можно такое использовать?

 cave, ,

eagleivg
()

Feral портирует Tomb Raider

Обещают до лета выпустить приключения сисек на линукс. Пруф.

Для Ъ: порт игры от 2013 года.

 ,

eagleivg
()

Arma 3 доступна для скачивания в Steam

Сабж. Бинари добавили для лялеха (эх, Саныч не дожил) и для мака.

Подробности: http://dev.arma3.com/post/sitrep-00120

 arma iii, ,

eagleivg
()

ФАС требует патентовать софт

Российское программное обеспечение должно попасть в специальный реестр отечественного софта только после того, как права на него будут зарегистрированы в Роспатенте, считает Федеральная антимонопольная служба (ФАС). Подготовленный Минкомсвязи проект постановления правительства, описывающего механизм ведения реестра и запрета закупок иностранного софта, передан в правительство с замечаниями антимонопольного органа


http://www.vedomosti.ru/technology/articles/2015/07/31/602953-fas-trebuet-pat...

 ,

eagleivg
()

Brocken Age Act II на подходе

Появился Backer branch, под паролем, для кикстартеровцев. Есть тут такие, как оно там, годно получилось?

 ,

eagleivg
()

Локальная и основная маршрутизация

Итак, есть 2 сетевые карты, и 2 интерфейса, eth0 и eth1.

Хочется мне погонять трафик через роутер, подключенный ланом к eth1, а ваном к eth0, пусть это будет ping. На eth1 ip 192.168.0.100 (получен по dhcp), на eth0 - 10.90.90.1, поднят dhcp сервер, раздающий адреса в 10.90.90.0/24

Указываю маршрутом для 10.90.90.1 устройство eth1, трассирую - он идет через интерфейс lo напрямую. Гуглю - оказывается, есть 2 таблицы, main и local, так пакет, попадая в ядро, проверяется сперва в local и радостно идет в eth0, мимо роутера.

Что посоветуют гуру? Что-то мне подсказывает, что если удалю запись для 10.90.90.1 из local, тогда пакет вообще никогда на интерфейс не придёт. Можно ли как-то маршрутизировать в зависимости от источника? Т.е., дефолтно пакет пихать его в eth1, а если извне от роутера (из 10.90.90.0/24), то в eth0. Или это в принципе невозможно?

 ,

eagleivg
()

Qualcomm LTE Direct позволит совершать звонки без подключения к базовым станциям

Я ДЖВА ГОДА ЖДАЛ!! Более полная новость: http://habrahabr.ru/company/gttf/blog/239669/

Сбылась мечта идиота - теперь с мобилы на мобилу можно будет звонить напрямую. Обещают к концу 2015-го. Правда, как я понял, только при отсутствии сигнала БС, но и это уже огромный шаг вперед.

Оригинал новости: http://hothardware.com/News/Qualcomm-LTE-Direct-Allows-Calls-Between-Devices-...

 

eagleivg
()

Не могу сообразить регулярки для замены

Дано, местный номер телефона из 5, 6 или 7 цифр. Нужно в зависимости от числа цифр подставить в начало номера код города.

Например, номер 123456 плавно превращается в 8(4912)123456, а 12345 в 8(49133)12345

В голову не приходит ничего умнее, чем искать начало строки перед 6-ю и 5-ю цифрами соответственно: ^(?=\d{5}) , но не прокатывает.

Протупив 2 часа, я вообще засомневался, решаема ли задача с помощью регулярок?

 ,

eagleivg
()

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