Задать вопрос
  • Стоит ли учить WordPress в 2021 году?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Стоит ли в 2021-м управлять карьерными самосвалами? Или сразу садиться за штурвал моторного катера? Вы сравниваете разные вещи с разными областями применения.
    Ответ написан
    1 комментарий
  • Как сделать, чтобы конструктор при определённых условиях не компилировался — а не сваливал на runtime?

    @Mercury13 Автор вопроса
    Программист на «си с крестами» и не только
    Вот действующий код.
    Хоть он на 20, простейшими define’ами (consteval → constexpr, constinit → пустота) можно собрать его и на 17.
    #include <iostream>
    #include <array>
    #include <string>
    
    enum class FromRawMem { INST };
    enum class NoValue { INST };
    
    #define consteval constexpr
    
    
    class Char4
    {
    public:
        using CppArray = std::array<char, 4>;
        constexpr explicit Char4(NoValue) : fBuf { { 0, 0, 0, 0 } } {}
        consteval Char4(const char (&x)[5]) : fBuf { { x[0], x[1], x[2], x[3] } } {}
        constexpr Char4(const Char4&) = default;
        Char4(FromRawMem, const char* data) { fBuf.asInt = *reinterpret_cast<const uint32_t*>(data); }
        constexpr const CppArray& toAr() const { return fBuf.asAr; }
        CppArray& toAr () { return fBuf.asAr; }
        constexpr std::string_view toSv() const { return { fBuf.asAr.data(), 4 }; }
    
        /// @return  byte-order dependent integer value
        /// @warning
        ///    DO NOT save toRawInt() as Intel, Motorola or any numeral system (decimal etc).
        ///    You MAY save it as raw memory, or use it for optimization.
        constexpr uint32_t toRawInt() const { return fBuf.asInt; }
        constexpr const char* data() const { return fBuf.asAr.data(); }
    private:
        union {
            std::array<char, 4> asAr;
            uint32_t asInt;
        } fBuf;
    };
    
    constexpr inline bool operator == (Char4 x, Char4 y) { return x.toRawInt() == y.toRawInt(); }
    constexpr inline bool operator != (Char4 x, Char4 y) { return x.toRawInt() != y.toRawInt(); }
    constexpr inline bool operator == (Char4 x, std::string_view y)
            { return y.size() == 4 && x.toRawInt() == *reinterpret_cast<const uint32_t*>(y.data()); }
    constexpr inline bool operator != (Char4 x, std::string_view y)
            { return !operator == (x, y); }
    constexpr inline bool operator == (std::string_view x, Char4 y)
            { return operator == (y, x); }
    constexpr inline bool operator != (std::string_view x, Char4 y)
            { return !operator == (y, x); }
    
    
    /// Size of enum class, no generic implementation.
    template <class Ec>
    constexpr size_t enumSize();
    
    namespace detail {
        /// Jut does not compile if arguments contain assignments
        constexpr int enumDummy(...) { return 0; }
    
        template <typename T, std::size_t...Is>
        consteval std::array<T, sizeof...(Is)>
        make_array(const T& value, std::index_sequence<Is...>)
        {
            return {{(static_cast<void>(Is), value)...}};
        }
    
        template <std::size_t N, typename T>
        consteval std::array<T, N> make_array(const T& value)
        {
            return make_array(value, std::make_index_sequence<N>());
        }
    }
    
    #define DEFINE_ENUM_SIZE(Name) \
        template <> constexpr size_t enumSize<Name>() { return static_cast<int>(Name::NN); }
    
    #define DEFINE_ENUM_N(Name, ...)  \
        enum class Name { __VA_ARGS__ };   \
        template <> constexpr size_t enumSize<Name>() { \
            enum Internal { __VA_ARGS__ , NNNNNN };  \
            detail::enumDummy(__VA_ARGS__);  \
            return NNNNNN; }
    
    
    enum class DummyElem { INST };
    enum class IncompleteArray { INST };
    enum class FillArray { INST };
    enum class PairwiseTempInit {INST };
    
    
    namespace detail {
        namespace array {
    
            template <auto K, class V>
            class KeyValue {
            public:
                static constexpr auto index = K;
                V && v;
                consteval KeyValue(V && aV) : v(aV) {}
            };
    
            // checkOneForRepeat
            template <class Ec>
            consteval void checkOneForRepeat() {}
    
            template <class Ec, Ec Only>
            consteval void checkOneForRepeat() {}
    
            template <class Ec, Ec First, Ec Second, Ec ... Rest>
            consteval void checkOneForRepeat()
            {
                static_assert(First != Second, "Repeating array keys!");
                checkOneForRepeat<Ec, First, Rest...>();
            }
    
            // checkForRepeat
            template <class Ec>
            consteval void checkForRepeat() {}
    
            template <class Ec, Ec Only>
            consteval void checkForRepeat() {}
    
            template <class Ec, Ec First, Ec Second, Ec ... Rest>
            consteval void checkForRepeat()
            {
                checkOneForRepeat<Ec, First, Second, Rest...>();
                checkForRepeat<Ec, Second, Rest...>();
            }
    
            template <class Ec, Ec ... args>
            consteval void checkKeys()
            {
                checkForRepeat<Ec, args...>();
            }
    
        }
    }
    
    template<auto K, class V>
    consteval auto kv(V && v) { return detail::array::KeyValue<K, V>(v); }
    
    
    template <class T, class Ec>
    class EcArray
    {
    public:
        static constexpr auto Size = enumSize<Ec>();
        using CppArray = std::array<T, Size>;
        using Elem = T;
        using iterator = Elem*;
        using const_iterator = const Elem*;
        constexpr CppArray& toAr() { return fBuf; }
        constexpr const CppArray& toAr() const { return fBuf; }
        constexpr Elem* data() { return fBuf.data(); }
        constexpr const Elem* data() const { return fBuf.data(); }
        constexpr size_t size() const { return Size; }
        constexpr iterator begin() { return fBuf.begin(); }
        constexpr iterator end() { return fBuf.end(); }
        constexpr const_iterator begin() const { return fBuf.begin(); }
        constexpr const_iterator end() const { return fBuf.end(); }
        constexpr const_iterator cbegin() const { return fBuf.begin(); }
        constexpr const_iterator cend() const { return fBuf.end(); }
    
        constexpr EcArray() = delete;
        constexpr EcArray(NoValue) {}
        constexpr EcArray(const EcArray&) = default;
        constexpr EcArray(EcArray&&) = default;
    
        EcArray& operator = (const EcArray&) = default;
        EcArray& operator = (EcArray&&) = default;
    
        template <class U>
        constexpr EcArray(NoValue, const U&& x) : fBuf {x } {}
    
        template <class ... Args>
        consteval EcArray(Args&& ... x)
            : fBuf { x... }
            { static_assert(sizeof...(Args) == Size, "EcArray size mismatch"); }
    
        template <class U, Ec K, class V, class ... Args>
        consteval EcArray(
                PairwiseTempInit, U&& temp,
                detail::array::KeyValue<K, V> first,
                Args&& ... rest)
            : fBuf { detail::make_array<Size, T>(temp) }
        {
            static_assert(sizeof...(Args) + 1 == Size, "EcArray pairwise size mismatch");
            detail::array::checkKeys< Ec, K, (std::remove_reference_t<decltype(rest)>::index)... >();
            initPairwise(first, rest...);
        }
    
    private:
        CppArray fBuf;
    
        consteval void initPairwise() {}
    
        template <Ec K, class V, class ... Args>
        consteval void initPairwise(
                detail::array::KeyValue<K, V> first,
                Args&& ... rest)
        {
            fBuf[static_cast<size_t>(K)] = T { first.v };
            initPairwise(rest...);
        }
    };
    
    
    DEFINE_ENUM_N( Letter, A, B, C )
    
    extern const EcArray <Char4, Letter> names2;
    
    //const EcArray <Char4, Letter> names { "alph", "brav", "char" };
    
    constinit const EcArray <Char4, Letter> names2
        { PairwiseTempInit::INST, Char4 { NoValue::INST},
          kv <Letter::A> ( "alp1" ),
          kv <Letter::B> ( "bra1" ),
          kv <Letter::C> ( "cha1" ) };
    
    
    int main()
    {
        std::cout << "Hello World!" << std::endl;
        return 0;
    }
    Ответ написан
    Комментировать
  • Ссылка на музыку ве без привязки по IP?

    HemulGM
    @HemulGM
    Delphi Developer, сис. админ
    Как ты декодируешь плейлист в музыку?
    Ответ написан
    1 комментарий
  • Можно ли считать стаж работы при разработке своего проекта?

    Да, можно, считай
    Если что, скажешь Влатька разрешил
    Ответ написан
    Комментировать
  • Можно ли перевезти комп в чемодане в поезде?

    @maximsemin23
    Ну монитор точно оберни. Что значит везти без корпуса? Просто детали по отдельности? Тогда каждую в пакет, а пакет в твердую коробку
    Ответ написан
    Комментировать
  • Как сделать графический интерфейс на Java, а логику на C#?

    @rPman
    Не нравится WFP, попробуй WinForms вдруг будет по душе?
    Java не лучшее место для создания UI, удобным я бы это не назвал

    Моста не будет, точнее любые средства создадут еще больше неудобств

    p.s. попробуй java mono
    Ответ написан
    Комментировать
  • Стоит ли платить налог при 100к в месяц?

    @Stalinko Куратор тега Фриланс
    PHP'шник и фрилансер до мозга костей
    Точно никто не ответит на данный вопрос.
    Есть мнение, что точно оформляться стоит, когда оборот в месяц достигает 600т.р.
    В принципе 100 тысяч это тоже хороший стабильный доход, поэтому уже можно. До 2млн/год можно как самозанятый. Если больше, то ИП. Если по твоему виду деятельности есть патент, тогда однозначно надо регать ИП + патент и не задумываться.

    В случае с PayPal есть слухи, что они могут забанить, если заподозрят предпринимательскую деятельность через их аккаунт. Это по сути - регулярные поступления на счёт от третьих лиц. Ни подтвердить, ни опровергнуть не могу. Сам предпочитаю через палку деятельность не вести. Только прямые переводы банк-банк.
    Ответ написан
    1 комментарий
  • Какие есть препроцессоры javascript?

    DevMan
    @DevMan
    coffeescript может и устарел, но последний релиз был всего год назад. и если вас устраивает его синтаксис и плюшки, можно и нужно его спокойно использовать.
    и дело не в устаревании, а в популярности (выстрелил он благодаря рельсо-хайпу, который упал).

    другое дело - сам жс за это это время подрос.
    Ответ написан
    9 комментариев
  • Можно ли перепрограммировать готовые контроллеры скуд и каким способом?

    15432
    @15432
    Системный программист ^_^
    Покупаете программатор ST-Link или J-Link и перепрограммируете, делов-то.

    Но вам придется создать для него собственную прошивку, на это могут уйти месяцы.
    Ответ написан
    Комментировать
  • Как это понять?

    theobroma
    @theobroma
    javascript developer (ReactJS)
    1)let arr = str.split(' ');
    Возьмет строку, в данном случае 'aa bb cc aa bb aa', разобьет на части используя пробел как разделитель. В результате получим:
    let arr = ['aa', 'bb', 'cc', ' aa', 'bb', 'aa']
    2) Следующий кусок кода просто произведет подсчет одинаковых частей.
    return arr.reduce((acc, rec, index) => {
        return (typeof acc[rec] !== 'undefined')
          ? { ...acc, [rec]: acc[rec] + 1 }
          : { ...acc, [rec]: 1 }
      }, {});
    Рассмотрим его подробнее. Начнем с аргументов:
    acc – последний результат вызова функции, он же «промежуточный результат».
    rec – текущий элемент массива, элементы перебираются по очереди слева-направо.
    index – номер текущего элемента.

    Что собственно происходит:
    -typeof acc[rec] !== 'undefined' проверит есть ли в объекте 'acc' ключ 'rec'.
    - и если мы уже встречали такой( например когда "aa", но уже во второй раз ), тогда изменить значение этого ключа прибавив 1.{ ...acc, [rec]: acc[rec] + 1 }
    - если же такого ключа еще не было, то создадим его со значением 1, ибо он в первый раз попался{ ...acc, [rec]: 1 }
    Ответ написан
    6 комментариев
  • Какие программы можно написать на C#?

    twobomb
    @twobomb
    На большинстве ЯП можно написать что угодно и уж точно всё то что в списке.
    Ну понятно что лучше всего написать на С++, вообще всё лучше писать на С++ от сайтов до крупных проектов, но почему же этого никто не делает и создали кучу языков? Да потому-что люди ленивые и не хотят тратить кучу времени и нервов, им нужно что-то более удобное, то на чем можно быстро и легко выполнить поставленную задачу, даже ценой производительности.
    C# простой язык на котором можно быстро и без заморочек написать нужную программу, ну если стоит вопрос написать тот же 3д редактор типа blender, тут лучше смотреть в сторону С++ из-за того что банально это программа в которой происходит очень много вычислений и как ни крути на С++ она будет работать быстрее, чем на C#, а здесь это критично, но это не значит что ее нельзя написать на C#.
    Ответ написан
    Комментировать
  • Ип для устройства на работу?

    xez
    @xez
    TL Junior Roo
    Правда.
    Редко.
    Ответ написан
    Комментировать
  • Какие программы можно написать на C#?

    GavriKos
    @GavriKos
    99% функционала в указанных вами программах не зависит от языка в целом. Там куча алгоритмов, и щепотка UI. Алгоритмы от языка не зависят (только разве что быстродействие, удобство реализации и прочее - но результат будет на любом языке), интерфейс - в целом тоже.
    Ответ написан
    Комментировать
  • Какие программы можно написать на C#?

    sarapinit
    @sarapinit Куратор тега C#
    Точу водой камень
    Можно написать stackoverflow.com, например.
    Ответ написан
    1 комментарий
  • Какие программы можно написать на C#?

    hottabxp
    @hottabxp
    Сначала мы жили бедно, а потом нас обокрали..
    Практически, все что угодно. А так, на что фантазии хватит, то и можно написать.
    Ответ написан
    2 комментария
  • Можно ли сделать чтобы действия в OnTriggerEnter происходили каждый кадр?

    @pashara
    Можно обойтись OnTriggerStay, либо выставлением флага в OnTriggerEnter/Exit, и обновлять данные по своей логике и своему апдейту.
    Ответ написан
    3 комментария
  • Как построить запрос с 3 уровнями сортировки?

    rozhnev
    @rozhnev
    Fullstack programmer, DBA, медленно, дорого
    Вот вариант SQL запроса:
    select *
    from colors
    order by 
    	id = 3 desc, -- 3 in get
    	id in (5, 6) desc, -- 5 and 6 in session 
    	popularity asc;


    MariaDB fiddle
    Ответ написан
    3 комментария
  • Как найти все элементы getElementById?

    v3shin
    @v3shin
    Веб-шаман
    document.querySelectorAll('[id="someId"]');
    Но, как написали другие комментаторы: если у вас есть несколько элементов с одним id, значит, вы делаете что-то не то.
    Ответ написан
    Комментировать
  • Интересует мнение об онлайн школе Скиллбокс?

    daemonhk
    @daemonhk
    ПсиХоПат
    ИМХО, все онлайн обучение призвано поиметь с тебя денег. Да, дадут какую-то базу, которую ты, ленивая жопа, мог бы найти на профильных сайтах, но не более того.
    Ответ написан
    5 комментариев