• ЯП для кросплатформенной разработки?

    mindtester
    @mindtester
    http://iczin.su/hexagram_48
    1 - C# (.dotnet Core. через годика полтора-два, весь дотнет обещают снова сделать единым и кроссплатформенным). но GUI "из коробки" только под винду (и то релиз осенью, но беты доступны). но есть вещи типа https://github.com/ElectronNET/Electron.NET. учитывая что сам МС перевел даже скайп на "электрон" (не знаю точно какой), и таких примеров пугающе много.. это тренд. он мне не нравится ("электрон-based", сам C# и корка мне оч даже нравятся), но тренд есть. кстати? есть https://duckduckgo.com/?q=qt%23&t=ffab&ia=web (сам не трогал)

    2 - java. и там есть кроссплатформенные GUI (но за подробностями не ко мне. скорее к гуглу)

    3 - камни в чужие огороды - не советую тратить время на другие варианты ;))... если эти не милы - рубитесь в Qt на плюсах

    ps ну или разве что, если вам не важна производительность, как уже сказано - python3. думаю найдется не мало оберток и к Qt (тем более если linux only)
    Ответ написан
    Комментировать
  • Как создать массив списков C++?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    Комментировать
  • Брандмауэр и консольное приложение?

    mindtester
    @mindtester Куратор тега Windows
    http://iczin.su/hexagram_48
    а в чем трудности? изучайте правила брандмауэра вашей ОС
    в винде:
    - Панель управления\Все элементы панели управления\Администрирование
    - Монитор брандмауэра Защитника Windows в режиме повышенной безопасности
    .. и читайте, читайте и читайте... можете править, но аккуратно. лучше с резервными копиями
    в линуксе:
    - в гугл полз )) .. (я только некоторые гуи, и то совсем чуть чуть освоил)
    Ответ написан
    Комментировать
  • Брандмауэр и консольное приложение?

    Jump
    @Jump Куратор тега Windows
    Системный администратор со стажем.
    По умолчанию брандмауэр блокирует входящие, а не исходящие.
    Если вы явно запретите - тогда будет блокировать и исходящие.
    Ответ написан
    6 комментариев
  • Какому языку, в какой среде начинать учить ребенка программированию 10 лет?

    10 лет это 3 класс

    Отстаньте лучше от ребёнка. Ему всего лишь 10 лет - какое программирование? Пусть он сначала насладится детством. А уже после - сам начнёт ковыряться в том, что ему понравится
    Ответ написан
    7 комментариев
  • Как сделать html-разметку в телеграм-боте?

    Sanasol
    @Sanasol
    нельзя просто так взять и загуглить ошибку
    Комментировать
  • Простой векторный графический редактор?

    RabraBabr
    @RabraBabr
    Вот вам политеховская методичка по которой студенты делают лабы (и я когда то делал)
    vt.samgtu.ru/%2Fattachments%2Farticle%2F233%2F%D0%...
    Ее вполне вам хватит. Рисование прямых, кривых Безье, раскраска многоугольников, тмо, матрицы вращения, масштабирования и сдвига там есть.
    Ответ написан
    Комментировать
  • Простой векторный графический редактор?

    Vlad_IT
    @Vlad_IT
    Front-end разработчик
    Ну, если бы на все задачи можно было найти точные инструкции, было бы скучно.
    Пробуйте написать начиная с малого, например:
    1) Создайте холст, просто объект, который будет помещать в себя фигуры. Это будет некий viewport.
    2) Сделайте скролл этого холста мышкой, во все стороны.
    3) Сделайте возможность динамически добавлять объекты на холст, сначала определите базовый объект, например прямоугольник или линию. Легче на этом моменте сразу определить интерфейс IShape, таким образом дальше будет легче унифицировать все объекты при добавлении их на холст, да и холст ничего не должен знать об этих объектах, только об интерфейсе.
    4) Сделайте drag&drop добавленных объектов, чтобы их можно было тащить.
    5) Добавьте зум, это не простой шаг, тут нужно многое учитывать, особенно часто на этой задаче ломается позиционирование drag&drop объектов.
    6) Сделайте трансформатор объектов, который будет изменять их размер (для прямоугольников и.т.д.), менять точки (для линий), вращать и.т.д.
    7) Сделайте редактор свойств, через который будете назначать атрибуты вашим объектам, такие как цвет заливки, цвет рамки, ширина рамки, непрозрачность и.т.д.
    8) Добавляйте потихоньку различные объекты. Можете подглядывать в другие редакторы, например inkscape.
    9) Реализуйте сохранение и загрузку холста. Тут лучше не изобретать свой формат данных, а использовать открытый, например svg.
    10) Буфер обмена. Тут либо свой формат в бинарник, либо тот же самый svg в текстовом виде (что куда лучше, так сделано в фигме).
    11) Отменить/вернуть - важная штука, и на первый взгляд простая. Но простая она только в том случае, если запоминать шаги путем снимка всех текущих объектов, но этот способ плохой. По нормальному нужно при любой операции над объектами на холсте делать снимок изменений. Например подвинули кубик на 10px влево, и записали в память значение
    { id: 'id кубика', x: -10 }
    и потом при нажатии отмена, будете просто делать обратную операцию, добавлять эти 10px. Тут у вас возникнут сложность с операцией "возврат", но думаю, если вы дошли до этого шага, упорство у вас уже есть. Пригодятся паттерны: command и memento
    12) Ну, тут уже по мелочи, различные киллер фичи, новые объекты, свойства, различные меню и.т.д.
    Ответ написан
    1 комментарий
  • Как работают проперти со значимыми типами - почему так?

    freeExec
    @freeExec
    Участник OpenStreetMap
    Эээ X++ => X = X + 1 Значение копии то меняется, но затем оно заносится обратно.
    Ответ написан
    3 комментария
  • Как скомпилировать код внутри скомпилированного кода?

    dollar
    @dollar
    Делай добро и бросай его в воду.
    Писать компилятор с нуля не советую - это целая наука.
    Погуглите, например, "opcodes list x86" - а потом решайте, надо ли оно вам.

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

    А вообще сейчас идёт интересная мода - писать движок на быстром языке, типа C++, а пользователям давать возможность расширять функционал на другом встраиваемом языке, типа Lua, но может быть любой, хоть JS, хоть C#. Даже на C++ можно, но тогда удобнее вашу программу сделать библиотекой, а расширение пользователя будет основной программой. Конечно, в вашем конкретном случае эти модели могут быть неприменимы - это уже вам виднее.

    Основное требование к встраиваемому языку - его простота в изучении и использовании. Ведь не все являются программистами, тем более на C++. Так что чем проще встраиваемый язык, тем шире у вас аудитория.
    Ответ написан
    Комментировать
  • Как делать расчет по формулам?

    FoggyFinder
    @FoggyFinder
    Можно использовать готовые библиотеки.
    Например, MathNet.Symbolics

    Библиотека написана на F#, но вы можете использовать ее и в C# проекте:

    Math-NET-Symbolics-with-C-VB-NET-and-C-CLI

    Как видно из примера:

    using MathNet.Symbolics;
    using Expr = MathNet.Symbolics.SymbolicExpression;
    ...
    Expr.Parse("1/(a*b");  // выбросит исключение
    Expr.Parse("1/(a*b)").ToString(); // вернет строку "1/(a*b)"


    API достаточно удобное.

    С простыми функциями / формулами проблем быть не должно. Если возможностей будет не хватать или вы найдете баг - открывайте ишшью (на английском языке) или даже PR - мейнтейнер принимает их без проблем.

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

    Есть и другие библиотеки, некоторые по возможностям превосходят MathNet.Symbolics, но так как я с ними не работал, то рекомендовать не могу.
    Ответ написан
    1 комментарий
  • Правильно ли я понимаю?

    15432
    @15432
    Системный программист ^_^
    Неа, number[3] - четвертый элемент массива, нумерация с нуля идёт (0, 1, 2, 3 ,4).
    Ответ написан
    1 комментарий
  • Почему "" != "" ??

    @distrik
    Programador
    Оператор == в случае с объектами сравнивает ссылки. При создании строк с одинаковым значением нет гарантии, что это окажется один и тот же объект, а значит они могут иметь разные ссылки.
    Для сравнения объектов принято испольховать оператор equals.
    Так же, строки можно сравнить через ==, если сравнивать не сами объекты, а результаты их интернирования:
    str1.intern() == str2.intern()
    И все же, имхо, лучше использовать equals()
    Ответ написан
    Комментировать
  • Почему "" != "" ??

    @Neonoviiwolf
    Flutter developer
    строки так не сравнивают, нужен "equals()"
    Ответ написан
    Комментировать
  • Почему "" != "" ??

    @Strannyk
    В Java строки являются объектами, а объекты равны между собой, только если это один и тот же объект. Для сравнивания строк используйте метод equals.
    Ответ написан
    Комментировать
  • Как сделать чтобы фигура не вылазила за рамку при трансформациях?

    cyber_roach
    @cyber_roach
    UX дизайнер INEDIapps
    Или можно просто установить у бордера свойство обрезки контента
    https://docs.microsoft.com/ru-ru/dotnet/api/system...
    Ответ написан
    Комментировать
  • Как сделать чтобы фигура не вылазила за рамку при трансформациях?

    samodum
    @samodum
    Какой вопрос - такой и ответ
    При вращении нужно ещё менять масштаб фигуры. А сам масштаб зависит от угла поворота, т.е. это будет функция от угла.
    Когда-то очень давно я подобное делал, только на канве
    Ответ написан
    3 комментария
  • Готовый компонент для растягивания фигур?

    cyber_roach
    @cyber_roach
    UX дизайнер INEDIapps
    Базово - нет.
    Насколько я помню такие вещи делаются через Behavior's или addonners

    Вот старый пример бихейвора с использованием библиотеки System.Windows.Interactivity
    10rem.net/blog/2010/01/09/a-wpf-behavior-for-windo...

    Вот еще более старый, но вот тут на мой взгляд, более верный подход - через кастомный контрол и Аддоннеры, можно просто достать нужные куски кода себе.
    https://www.codeproject.com/Articles/22952/WPF-Dia...

    А вот просто документация, где все необходимые знания чтобы сделать такой же, но свой с блекджеком и дамами
    https://docs.microsoft.com/en-us/dotnet/framework/...
    Ответ написан
    Комментировать
  • Что значит моделирование обьектов реального мира в ООП?

    @luna3956
    Представьте, что Вам нужно написать программу, в которой ведется учет частных домов на какой-нибудь улице. Ключевой единицей будет дом - объект из реального мира. Чтобы описать его с помощью программного кода для этого отлично подходит ООП. В нем есть такое понятие как класс, он является по сути моделью/структурой объекта из реального мира. В нашем примере с домом это будет примерно такой класс:
    class House {
    
      string address;
      int numOfRooms;
      ...
    
      House(string address, int numOfRooms)
      {
        this.address = address;
        this.numOfRooms = numOfRooms;
      }
    
    }


    Теперь же в самой программе чтобы оперировать таким объектом из реального мира как дом вам достаточно написать примерно следующее:

    House h = new House("Улица Вязов дом 13", 5);

    То есть в переменной h у нас теперь хранится объект/ссылка на объект, являющийся представлением объекта из реального мира - пятикомнатного дома, который находится по адресу "Улица Вязов дом 13".

    Или например собаку(тоже объект из реального мира) можно описать таким классом:

    class Dog {
    
      string name;
      string breed;
    
      Dog(string name, string breed)
      {
        this.name = name;
        this.breed = breed;
      }
    
    }


    И теперь чтобы в программе "создать собаку" с каким-то именем и породой достаточно написать:

    Dog d = new Dog("Бобик", "Бульдог")

    Это очень упрощенные примеры, но думаю вполне подойдут для того, чтобы вы поняли каким образом объекты реального мира моделируются благодаря ООП.

    P.S сам код это не ява а просто псевдокод для наглядности
    Ответ написан
    Комментировать
  • Обязательно ли читать книгу по языку/технологии что бы быть тру и продвинутым кодером?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Вы не найдёте ни одного авторитетного программиста с мировой известностью, который бы утверждал, что курсы и видео-уроки лучше книг. Обычно это утверждают либо профаны, оправдывающие своё нежелание читать, либо авторы курсов, делающие деньги на лентяях и глупцах. И я лично за 18 лет в отрасли встретил множество программистов, но ни одного хорошего, выучившегося по курсам и видео-урокам.

    Видеокурс может запилить любой дурак. Чтобы написать книгу, нужно иметь авторитет достаточный для издательства. Кроме того, текст пройдёт редактуру нескольких профессионалов. Поэтому знания в книгах качественные и систематизированные. Для начинающего это очень важные качества.

    К тому же, после достижения профессионального уровня достаточного чтобы называться специалистом, вы обнаружите, что необходимые на этом уровне знания можно почерпнуть только из документации. То есть всё равно придётся читать. Много и часто.

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

    Кроме того, чтение развивает абстрактное мышление - основной инструмент разработчика.
    Ответ написан
    16 комментариев