Задать вопрос
  • C# в качестве backend под linux, стоит ли?

    @FoxInSox
    Стоит ли сейчас C# использовать на сервере?

    Конечно.
    Ответ написан
    Комментировать
  • Чем отличается Visual C# от C#?

    AlekseyNemiro
    @AlekseyNemiro
    full-stack developer
    Под C# обычно следует понимать Visual C#, точнее Microsoft Visual C#.

    Microsoft Visual C# - реализация языка C# компанией Microsoft.

    Наверное выглядит странно, учитывая что язык создан в Microsoft для Microsoft .NET Framework, но на данный момент есть две спецификации C#: ECMA-334, ISO/IEC 23270:2006 (в чем разница, не имею представления).
    Microsoft штампует новые версии C# со страшной скоростью, и как следствие выпускает новые спецификации :-)

    Из-за разных реализация C#, стандартов, юридических проблем в языке появляются искажения и не стыковки. Например, при программировании под Mono есть мелкие особенности, которые следует учитывать. А в целом, C# - он один.
    Ответ написан
  • Как быть с реестром (пишет в WOW64)?

    @Mercury13
    Программист на «си с крестами» и не только
    Так надо, у W32 и W64 разные места в реестре. И в 90% случаев ничего не надо делать.
    Но иногда всё-таки приходится, например:
    • Есть проги для W32 и W64, и хотелось бы иметь общие настройки.
    • Прога для W32 читает чужие настройки от проги для W64, и наоборот.
    • У вас программа, оперирующая реестром: редактор, чистильщик, архиватор…
    Тогда вот дока от M$, объясняющая всё это.
    https://msdn.microsoft.com/en-us/library/windows/d...

    P.S. «Работает с реестром» — это пишет свои настройки в реестр или действительно оперирует реестром, типа редактора или чистильщика реестра?
    Ответ написан
    2 комментария
  • Как быть с реестром (пишет в WOW64)?

    @MiiNiPaa
    Собирать 64битное приложение а не 32. Wow6432Node это виртуальный реестр для 32битных приложений.
    Ответ написан
    Комментировать
  • Как реализовать мгновенные сообщения?

    @frozen_coder
    Java-developer
    Гугли в сторону XMPP протокола и его готовых реализаций клиента (можно использовать через сторонний открытый сервер, можно и свой развернуть). В сети их немало, да на разных языках, да с поддержкой разных фич, ну например:
    https://candy-chat.github.io/candy/
    https://www.jsxc.org/
    https://conversejs.org/
    Ответ написан
    Комментировать
  • Как сделана эта крутая анимация иконок img?

    qork
    @qork
    { background: #F00B42 }
    clients.png
    Ответ написан
    Комментировать
  • Как объяснить кусок кода C++?

    @Mercury13
    Программист на «си с крестами» и не только
    Весь этот код (за исключением Close) — автогенерируемый.

    ///// Защита от повторного включения
    #ifndef Unit1H
    #define Unit1H
    
    ///// Хедеры VCL. Причём всё это сделано так, чтобы упростить написание ценой удлинения
    ///// компиляции. Более громоздкий, но и более удачный вариант.
    ///// В H:
    /////   namespace Controls { class TLabel; }
    /////   using namespace Controls;
    ///// В CPP:
    /////   #include <Controls.hpp>
    ///// Вот таким образом можно (было) избавиться от каскадного подключения
    ///// хедера Controls. А то каждый, кто использует главной форму,
    ///// автоматически подключает эти хедеры.
    #include <Classes.hpp>
    #include <Controls.hpp>
    #include <StdCtrls.hpp>
    ///// Только от Forms.hpp избавиться таким макаром нельзя:
    ///// мы наследуемся от TForm.
    #include <Forms.hpp>
    
    ///// Класс формы. Все формы наследуются от TForm.
    class TForm1 : public TForm
    {
       ///// Особое право доступа Borland, для совместимости с Delphi.
       ///// Поля и свойства published не просто public, но включаются
       ///// в структуру рефлексии (aka reflection или introspection)
       ///// и программа о них знает при выполнении.
       ///// Применительно к формам — published-поля доступны
       ///// загрузчику.
    __published: // IDE-managed Components
       ///// Компоненты, которые мы установили на форме редактором.
    TLabel *Label1;
    TButton *Button1;
       ///// События, которые мы прописали в редакторе.
       ///// __fastcall — модель вызова, аналогичная Delphi.
       ///// Именно такая модель вызова принята в обработчиках
       ///// событий.
    void __fastcall Button1Click(TObject *Sender);
       ///// Пользователь пока не прописал никаких своих
       ///// полей и функций.
    private: // User declarations
    public: // User declarations
       ///// Конструктор. Раз уж у формы нетривиальный конструктор —
       ///// по правилам Си++ его надо повторить в подклассе.
       ///// Снова-таки, модель вызова __fastcall: в формах Delphi
       ///// используются т.н. виртуальные конструкторы, 
       ///// когда по имени класса можно создать объект этого класса.
       ///// Фабричный метод, только немного лучше.
       ///// Но это значит: у всех подчинённых классов
       ///// должен быть один и тот же набор параметров
       ///// и модель вызова.
    __fastcall TForm1(TComponent* Owner);
    };
    //---------------------------------------------------------------------------
    ///// Как известно, переменная объявляется один раз.
    ///// Поскольку хедер может подключаться к огромному числу CPP,
    ///// её объявляют как extern (она есть, но в другом месте).
    ///// Макрос PACKAGE раскрывается в __declspec(package),
    ///// чтобы эту штуку можно было собрать как пакет.
    extern PACKAGE TForm1 *Form1;
    //---------------------------------------------------------------------------
    #endif

    Модель вызова — это как технически мы вызываем подпрограмму. Какая память и какие регистры на это используются, и кто подчищает стек. Ищи в Википедии.
    Ответ написан
    Комментировать
  • Как работает деинсталятор?

    Ответ написан
    Комментировать
  • Как вырасти из программиста в менеджмент?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Хм. Нужно понимать, что их программиста в менеджера это не вырасти а перейти в другую профессию.

    У программиста рост вверх - это это тех.лид и архитектор. Затем может быть собственный проект, где ты владелец. и то...

    Менеджер это другая отрасль, и нужно вырасти нужно не из программиста, а просто вырасти.
    Ответ написан
    3 комментария
  • Двумерный массив в структуре, как правильно использовать?

    @RPG
    Так правильно вам пишет компилятор. h_buf должен быть double**, а у вас просто double. И про аллокацию памяти не стоит забывать, смотрите примеры, как правильно работать с массивами в C++.
    Ответ написан
    6 комментариев
  • Как найти неправильно поставленные скобочки { и } в C++?

    Olej
    @Olej
    инженер, программист, преподаватель
    В коде куча строк, но вот как найти среди них одну скобочку, которая ломает весь код...

    1. Куча - это сколько? 5000? 10000? ... а не нужно писать код простынями в один файл.
    2. Либо загнать код в редактор/IDE с разметкой (я люблю Geany), чтобы он вам показал разметку.
    3. Либо комментариями исключать внутренние блоки {} пока на верхнем уровне не выявится непарность.
    Ответ написан
    Комментировать
  • Как учить что-то новое и быстро не забывать?

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    Пишите код.
    Только попытка создать работающий продукт, проведет вас по всей цепочке. Просмотр видеолекций помогает для освоение примитивного базиса, и помогают подметить какие-то моменты из чужого опыта, когда ты уже сам шаришь.
    Но запоминание информации не означает установление логических связей о том, как оно работает в разных условиях. Тут только собственная многочисленная практика.
    Заставьте себя на каждую прочитанную статью, книжку написать несколько рабочих примеров. Собственных. Усложняйте свои примеры.
    Ответ написан
    Комментировать
  • Как посчитать сумму чисел в файле?

    @Mercury13
    Программист на «си с крестами» и не только
    Пока вижу вот что.
    1. a += buff[i]; Вы суммируете коды символов, а не их числовые значения. Правильно a += buff[i] - '0';

    2. Эти строки дублируют друг друга.
    fin >> buff;
      fin.getline(buff, 11);

    Сначала получаем 0123456789, потом файл кончился и на место 0 записываем нулевой символ (NUL).

    3. for (int i = 0; i < 11; i++) — неуниверсальная конструкция. Плюс цифр в строчке всего 10, поэтому надо i < 10.

    4. Так сумму чисел или сумму цифр?
    Ответ написан
  • Отказаться от group by и sort by?

    savostin
    @savostin
    Еще один программист
    У Вас быстро закончится память, т.к. вся таблица (а скорей всего не одна) будет сохраняться в ОЗУ.
    Ответ написан
    Комментировать
  • Angular 2 typesript или es6?

    IonDen
    @IonDen
    JavaScript developer. IonDen.com
    Он заточен именно под TS. Выбор очевиден, да TS сам по себе очень хорош для серьезных проектов.
    Ответ написан
    Комментировать
  • Как написать функцию которая может не вернуть значение?

    @Mercury13
    Программист на «си с крестами» и не только
    Object* find (const Object& o)
    {
        /* Поиск, если нашли */
       return link;
       /* Если не нашли? */
       return NULL; // Теперь можно
    }
    Ответ написан
    5 комментариев
  • Большой проект на С. Как строить работу чтобы не завалило кодом?

    Декомпозировать проект на несколько проектов с независимой разработкой и документированным API.
    В случае серверной системы - разбить на несколько независимых взаимодействующих сервисов, что, кроме всего прочего, еще и упростит горизонтальное масштабирование и переход к высоким нагрузкам.
    Выделить в отдельную разработку отдельные компоненты и библиотеки, для упрощения интеграции и сборки можно сделать библиотеки динамическими/разделяемыми.

    Это потянет за собой новые проблемы и необходимость содержать системного архитектора, но рано или поздно все равно потребуется при таком объеме кода.
    Ответ написан
    Комментировать
  • Большой проект на С. Как строить работу чтобы не завалило кодом?

    @koronabora
    Человек
    1) Разбиваем по категориям, каждую категорию - в свою папку. Если надо - еще подпапки.
    2) Общий или старый код вынести в библиотеку, подключать только .h + .lib
    3) Использовать систему контроля версий.
    4) Ввести лимит по количеству строк на файл, перераспределять код таким образом, чтобы в одном .c файле было не больше 1000 строк (имхо даже 500 на с уже много. )
    Ответ написан
    Комментировать
  • Почему в интерфейсе нельзя использовать protected или private?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    Интерфейс предназначен для декларирования внешнего API без уточнения реализации. В нем должны быть лишь публичные члены.

    Вообще говоря, это искусственное ограничение, принятое для удобства. В том же C++ в качестве интерфейсов используются чисто виртуальные (абстрактные) классы без состояния. Наличие же специальной синтаксической конструкции (интерфейсов, как в C# или Java) позволяет явно подчеркнуть, что программиста там не ждет никакого сюрприза и этот тип используется как "клей" между другими классами.
    Ответ написан
    Комментировать