Задать вопрос
  • Как лучше организовать схему бд?

    Вопрос наполовину не понял, у вас с терминологией тяжеловато.

    Мое предложение:
    - таблица Магазин(id, ...);
    - таблица Товар(id, ...);
    - таблица ЦенаТовара(id_магазина, id_товара, цена);
    Ответ написан
    1 комментарий
  • Как можно спорить на тему "ASP.NET WebForms против ASP.NET MVC"? Ведь эти технологии ПЕРЕСЕКАЮТСЯ?

    У вас крайне странная логика. Вам "позволили" удобства ради добавить в проект страницу на старом шаблонизаторе, и вы считаете, что это значит что WebForms это есть MVC? Я из описанных вами опытов увидел именно это.
    Да, MVC это архитектура, но ASP.NET MVC это прежде всего название технологии в целом, т.е. всей инфраструктуры и классов, обеспечивающих написание таких приложений. И шаблонизатор - это даже не главное, что стоит за понятием ASP.NET MVC
    Ответ написан
  • Адреса указателей?

    Nipheris
    @Nipheris Куратор тега C++
    Потому что указатели - прежде всего такие же переменные, как и любые другие (это очень важно понимать). Второе выведенное значение - это значение переменной b, и не особо важно, указатель это или нет (в нашем случае - да, указатель, и поэтому выведенное значение переменной b - некоторый адрес). Третье выведенное значение - это АДРЕС переменной b, и не имеет значения, что за тип у переменной b. Вы можете объявить int b или float b, и получите аналогичный результат.

    Вот что является отличительным моментом указателя - это как раз таки первое выведенное значение, а точнее, сама возможность его вывести. Для указателей (а также для любых пользовательских типов, реализующих operator*) доступна операция разыменования. Это дает возможность взять значение переменной b, интерпретировать его как адрес, а затем, в свою очередь, залезть в память по этому адресу и получить значение уже оттуда. В данном случае можно утверждать, что по адресу 0x011CD1C0 находится значение 66 (если его интепретировать соответственно типу указателя).
    Ответ написан
    1 комментарий
  • Для чего нужны свойства зависимости?

    Все предельно просто - dependency properties это попытка получить реактивное программирование конкретно в рамках WPF и с минимальными затратами (без модификаций на уровне языков/платформы .net).

    Вы формулами в Экселе когда-нибудь пользовались? Вида =A1+A2+A3? Когда обновляешь ячейку A1 и автоматически обновляются все значения, вычисляемые по формулам, в которых встречается A1. Вот это примерно то же самое. Почему это так важно в WPF? Потому что а) это естественный способ связи свойств визуальных компонент друг с другом и с ViewModel-ью - без свойств зависимостей обновление зависимых значений превращается в адские цепочки Refresh-ей, Recalc-ов и прочего, и дай бог не забыть вызвать все нужные пересчеты. б) это дает механизм абстрагированной обработки и изменения свойств объектов (как правило - контролов), более производительный и узкоспециализированный по сравнению со стандартной рефлексией. Это, в свою очередь, обеспечивает возможность без лишних заморочек написать классы вроде DoubleAnimation, с помощью которого можно анимировать ЛЮБОЕ (!) свойство типа double у любого объекта, лишь бы оно было dependency property.
    Ответ написан
    Комментировать
  • Как извлечь значения из переменной, с помощью регулярки С#?

    Nipheris
    @Nipheris Куратор тега C#
    ^(?<text>[^:]*):(?<text2>[^:]*):(?<text3>[^:]*)$

    Не знаю, по какому источнику вы смотрели, в MSDN все предельно понятно: https://msdn.microsoft.com/en-us/library/bs2twtah(...
    Ответ написан
    2 комментария
  • Пользовательский интерфейс и C# на html?

    Nipheris
    @Nipheris Куратор тега C#
    Значит возможен ли UI с помощью html, css и js?

    Возможен: Atom, VS Code и прочие приложения на Electron-е (не только они, разумеется, это как пример).
    Ходят слухи что WPF, помирает и толк его использования, сходит на нет.

    Не делайте поверхностных выводов. WPF это ж не какой-нидь дед старый, который когда помирает, мало чем уже семье помочь может. Если технология просто не так активно развивается, это не значит, что она по определению в хвосте какой-либо другой.
    Все, кто использует HTML для десктопного интерфейса это те, кто хочет а) кроссплатформенности; б) сделать свою софтину hackable, например чтобы можно было всякие плагины писать на js, и тем самым понравиться своим клиентам-разработчикам. Ну и еще в) те, кто кроме html+js стека ничего не знает, а декстопа тоже хочется ("мы же тоже люди").
    Ответ написан
    1 комментарий
  • Где получать биржевые данные по API?

    www.batstrading.com
    А некоторые крупные брокеры, например CQG, сами помогут в этом вопросе: https://develop.cqg.com/qd/?page=ContinuumDocumentation
    Ответ написан
    Комментировать
  • Как корректно обрезать строку тип string в utf8 на с++?

    Nipheris
    @Nipheris Куратор тега C++
    ICU
    Ответ написан
    Комментировать
  • Как настроить outlook для перемещаемых профилей Windows?

    1) в рамках roaming-профиля должна перемещаться папка %USERNAME%\AppData\Roaming, она для этого и была сделана; все адекватные приложения кладут все, что должно ездить вместе с пользователем, сюда. В т.ч. настройки, если они не в реестре;
    2) в аутлуке файл данных всегда можно положить куда душе угодно. Дефолтовое расположение для PST-шек - это Outlook Files в подпапке Documents, которая вроде как уже у вас ездит. OST-шки лежат в AppData\Local и роумингу не подлежат, т.к. представляют собой локальный кэш IMAP-аккаунтов.
    Ответ написан
    Комментировать
  • Чем заменить x11Info при переходе на qt5?

    Nipheris
    @Nipheris Куратор тега C++
    В целом, заменить можно на QDesktopWidget , но придется как-то уйти от использования класса Display, указатель на объект которого возвращается методом display(). Нужно разбираться, что за функция XRRGetScreenInfo, и как она этим Display пользуется. Возможно, будет достаточно свойства primaryScreen для получения номера главного экрана и метода screenGeometry(int screen).
    Ответ написан
    Комментировать
  • Как работает C#?

    Nipheris
    @Nipheris Куратор тега C#
    А откуда берётся этот MSIL? Куда компилируются .cs?

    cs компилируются компилятором. Есть стандартный csc, поставляется вместе с .net framework (НЕ со студией). Это "классический" компилятор от MS, написан на C++, с закрытым исходным кодом. Такой же есть и для Visual Basic. Кроме них есть еще Roslyn-компиляторы C# и VB, они open-source, их главное отличие в том, что они сами написаны на управляемых языках. Это значит, что у вас есть compiler-as-a-service. Это, в свою очередь, значит, что если вы хотите написать тулзу, обрабатывающую тем или иным образом исходный код, например на C#, вам не нужно самому писать парсер/компилятор, вы можете подключить модули Roslyn-компилятора и пользоваться ТЕМ ЖЕ компилятором (лексером/парсером/etc), что и используется непосредственно при сборке приложения. С классическим компилятором так не получится, он представляет из себя черный ящик: cs на входе, сборка на выходе.

    Далее будем считать, что не учитываем в рассуждениях технологию .net native.
    в каком моменте тогда работает виртуальная машина

    она работает в момент запуска exe.
    почему мы получаем на выходе .exe

    в этом вопросе часто возникает путаница. Дело в том, что дотнетовские exe и dll - это т.н. сборки (assemblies), и они содержат метаданные и MSIL (!) исполняемый код. То, что у них расширения exe и dll - это потому, что MS для повышения совместимости и удобства использования, упаковала их в формат PE. Чтобы .net приложения можно было запускать также, как и нативные. НО реально в exe-файле есть только небольшой загрузчик, который запускает CLR, просит загрузить текущий файл как дотнет-сборку и передать управление на метод-точку входа. Почитайте про сборки в хорошей книге, и скачайте dotPeek, посмотрите что внутри дотнетовского exe. Это совсем не то, что в "обычном", нативном exe.

    В мире C# существуют также такие понятия как .NET, Mono, Roslyn и т.д., можете ли вы структурированно разъяснить их смысл?

    .NET это название и бренд платформы, .NET Framework, а теперь и .NET Core - реализации платформы от MS, Mono - open-source реализация НЕ от MS. .NET FW работает только на винде, .NET Core и Mono и на других платформах. Про Roslyn уже упомянул.
    Ответ написан
    Комментировать
  • Как использовать общие переменных в многопоточных программах с++?

    Nipheris
    @Nipheris Куратор тега C++
    Ну начнем с того, что 10000 итераций на современном процессоре выполнится настолько быстро, что вероятно уложится в отведенный потоку квант времени, и второй поток скорее всего даже не успеет получить процессорное время, чтобы поменять вашу переменную. Поэтому ИСКЛЮЧИТЕЛЬНО в целях эксперимента можете попробовать увеличить число итераций хотя бы до 10 миллионов, и отключить по максимуму оптимизации (не по причине скорости, а по причине потенциального выбрасывания кода компилятором), т.к. наверняка количество итераций есть причина неудачи в вашем эксперименте.

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

    С архитектурной точки зрения, если у вас снятие показаний, то у вас просто классический случай producer-consumer - впилите потокобезопасную очередь, и пользуйтесь.
    Ответ написан
    3 комментария
  • SQLite FTS5 usage, what does xToken() do in xTokenize()?

    Nipheris
    @Nipheris Куратор тега C++
    В https://sqlite.org/fts5.html#section_7_1 ясно написано:


    xTokenize:
    This function is expected to tokenize the nText byte string indicated by argument pText. pText may or may not be nul-terminated. The first argument passed to this function is a pointer to an Fts5Tokenizer object returned by an earlier call to xCreate().
    ..........
    For each token in the input string, the supplied callback xToken() must be invoked.

    ВЫ пишете тройку функций xCreate, xDelete, xTokenize. При вызове вашей xTokenize ей будет передан колбэк, который, как правильно подметил abcd0x00 , нужно будет дергать для передачи движку SQLite готовой (т.е. подготовленной ВАМИ в процессе работы xTokenize) лексемы. Они называют это токен, но вообще это лексема, т.к. вы отдаете кусок из входной строки.
    Итого, все максимально просто - вам дается строка, вы по своим алгоритмам и критериям решаете, где в ней какие лексемы. Для каждой найденной лексемы дергаете данный вам xToken, чтобы сообщить эту радостную новость SQLite.
    Обязаны ли мы его вызывать?

    нет, но если не будете вызывать, ни одной лексемы из входной строки SQLite не получит.
    Если его должны реализовать мы

    его реализует SQLite.
    Ответ написан
    1 комментарий
  • C++ сеть. Как работать с сетью в C++?

    Nipheris
    @Nipheris Куратор тега C++
    Знаю что есть библиотеки ACE, POCO, BOOST(гуглил), но ничего про них не знаю больше.

    ну так узнайте! Узнайте про Boost::Asio, узнайте про cpp-netlib, построенную поверх него (как раз будет вам HTTP клиент и сервер)
    Ответ написан
    Комментировать
  • Как побороть foreign key constraint violation в MySQL?

    dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key...

    If ON UPDATE CASCADE or ON UPDATE SET NULL recurses to update the same table it has previously updated during the cascade, it acts like RESTRICT. This means that you cannot use self-referential ON UPDATE CASCADE or ON UPDATE SET NULL operations. This is to prevent infinite loops resulting from cascaded updates.


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

    Nipheris
    @Nipheris Куратор тега C#
    https://msdn.microsoft.com/en-us/library/windows/d...

    If the hook procedure processed the message, it may return a nonzero value to prevent the system from passing the message to the rest of the hook chain or the target window procedure.

    1 минута 25 секунд на поиск. Или вы какой-то другой хук ставите?
    Ответ написан
    2 комментария
  • Каким способом реализовать на канвасе "зум" например от года к конкретному дню недели?

    Nipheris
    @Nipheris Куратор тега C++
    А чего тут думать. Ну введите некое условное обозначение зума, например 1 - это минимальное увеличение, как сейчас. Также введите точку - центр viewport-а, куда смотрит пользователь. В зависимости от значения масштаба, отрисовывать дни/часы или минуты. Отрисовывать только то, что видно через вьюпорт. Таким образом у вас получится длинный-предлинный календарь, в каждый момент времени вы будете видеть лишь его фрагмент. Ну как тайловых картах сделано.
    Ответ написан
    Комментировать
  • User Settings Database Design/Scheme?

    0 [вступление] )
    Я не знаю почему но мне найблоьше нравится 3 вариант, но уже надоело делать под себя. хочется сделать как у людей)

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

    Теперь по делу:
    1) вариант подходящий для случая до 5-6 настроек на юзера, и с уверенностью, что их количество расти не будет; если больше - не стоит;
    2) это EAV. Не особо вижу в нем смысле, если вам доступен пункт 3;
    3) json-колонка settings вполне себе ничего. Важным премуществом является то, что вы тогда можете хранить только переопределенные пользователем значения. А как правило, пользователи не меняют более 20% настроек, особенно если они удачно подобраны. Т.е. после создания у вас будет пустой объект json, и после каждой смены настройки в объект будет добавляться поле, если настройка еще не менялась, либо обновляться, либо удаляться, если юзер нажал "reset to defaults". В случае пункта 1 вам бы пришлось использовать NULL для пометки того, что пользователь не устанавливал эту настройку;
    4) не вижу особого смысла: файлы настроек, вероятно, будут небольшими, плюс эти файлы будут лежать у вас списком, а не иерархией, а тогда смысл использовать ФС;

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