• Распознавание кода, конечный автомат, лексический анализатор и прочие умные слова?

    Nipheris
    @Nipheris Куратор тега C++
    Если вам нужна конкретно простейшая подсветка синтаксиса (как в вашем примере с html), то вам достаточно лексического анализа. Вам нужно выбирать токены в тексте, и в зависимости от типа токена, выбирать цвет для подсветки. В разных средах это будет реализовано по-разному - в Саблайме это делается через спец. язык описания конечных автоматов, в других редакторах могут использоваться регулярные выражения, в Visual Studio пишется лексический анализатор на ЯП общего назначения.

    Поглядите на эти инструменты, С/С++: Flex, ANTLR для дотнет-языков еще FsLex хорош (правда, синтаксис у него F#-овский).

    Если нужен более сложный анализ (например, подстановки в зависимости от контекста), смотрите ответ Дмитрий Макаров - это уже синтаксический анализ, следующий этап после лексического. Упомянутый Yacc - это классическая пара к Lex/Flex. Есть и более современный аналог, совместимый с Yacc - Bison. Под дотнет могу посоветовать тот же ANTLR, и FsYacc в пару к FsLex.
    Ответ написан
    Комментировать
  • Как настроить роутинг конкретных приложений в Microsoft™Windows™?

    Никак. Если предложенные АртемЪ прокси - не вариант, могу предложить вариант подключать к VPN виртуалку, и ходить по блокировкам из неё)

    UPD: см. мой старый ответ Как перехватывать весь трафик и перенаправлять на прокси в C# или С++ (пишу в VS)?
    Ответ написан
  • Как подключить Box2D.lib к VS15?

    Nipheris
    @Nipheris Куратор тега C++
    Укажите пути в lib-файлам в настройках линковщика.
    Ответ написан
  • Существует ли красивая конструкция для делегирования реализации интерфейса?

    Не совсем понятно, чего вы хотите. Вернее, чего хотите - понятно, непонятно - почему.

    Если вы хотите абсолютно все методы делегировать к инстансу IR - то почему бы вам просто не возвращать инстанс IR через интерфейс I из объекта A - зачем самому A реализовывать I?

    Если же посредничество A все-таки необходимо, то значит, что вы хотите дать этому какую-то смысловую нагрузку. Т.е. раз вам хочется, чтобы A сам реализовал I, то значит вам хочется, чтобы он скрывал факт того, что вызовы на самом деле делегируются к инстансу IR.

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

    К чему я это всё? Конечно, можно себе представить, что код делегирования генерируется автоматически на основе конструкции вроде вашей (implements I by delegate), однако: а) это довольно частный случай, чтобы добавлять в язык синтаксический сахар для этого, плюс наверняка возникнет ряд вопросов реализации, на которые не будет однозначного ответа; б) я думаю такое реализуемо в языках с мощными макросами, но мне приходят в голову только те, которые вы врядли будете использовать, например Nemerle или Lisp. А, ну и на препроцессоре C++ такое можно сделать.
    Ответ написан
    2 комментария
  • Сколько памяти занимает тип int в c#, если он наследуется от типа object?

    Nipheris
    @Nipheris Куратор тега C#
    > Там же всякие методы наследуются, как например tostring и прочие.
    Не следует понимать это "наследование" буквально. Это вам язык C# и его объектная модель показывают, что они как бы наследуются от Object. На самом деле там все несколько сложнее. Примитивные типы в большинстве случаев занимают столько, сколько должны. Они становятся объектами только тогда, когда это необходимо. Почитайте про boxing и unboxing value-типов, узнаете много нового.
    Ответ написан
    Комментировать
  • Что использовать для быстрой генерации Excel файла?

    Nipheris
    @Nipheris Куратор тега C#
    Если не считать вот этого требования:
    сразу отдавать его назад пользователю, без сохранений на хард

    то однозначно EPPlus (в нюгете: EPPlus ), врядли вы что-то лучше найдете, не требующее наличия установленного Офиса. Насчёт "сразу отдавать пользователю" - надо посмотреть, умеет ли писать воркбук в Стрим, а не в файл.

    UPD: судя по конструктору ExcelPackage(Stream newStream), умеет. Так что пишите в МемориСтрим, и отдавайте юзеру. Не забудьте Content-Type нужный проставить)
    Ответ написан
    3 комментария
  • Можно ли расширить том?

    Штатными средствами без потери данных на D - нет. Если данные на D можно потерять - выпиливайте 450мб (только убедитесь сначала, что он вам не нужен), и раздел DATA, и расширяйте C:
    Ответ написан
    Комментировать
  • Разработчик языка программирования создает только стандарт?

    Язык ведь определяет его транслятор?

    Вообще, это плохо. Конечно, у некоторых языков есть популярные стандартные реализации, на которые все равняются и которые как бы задают стандарт языка де-факто, но записанный стандарт всегда лучше стандарта-по-реализации. Потому что всегда есть, куда посмотреть, и бага реализации не превратится в фичу языка: почитайте про typeof null === 'object' в Джаваскрипте, это отличный пример, когда в стандарте языка закрепилась бага реализации.

    С другой стороны, при написании стандарта обязательно делаются тестовые (пусть и не вполне стабильные, но все-таки рабочие) реализации. Иначе можно стандартизировать нерабочие или нереализуемые концепции и фичи. Особенно это касается сложных языков вроде C++, где при добавлении новой фичи нужно учесть кучу моментов и состыковать её с уже существующими возможностями языка.

    Когда говорят, что Страуструп создал ЯП, это значит он создал стандарт и рекомендации для компилятора или еще и сам компилятор?

    Точного определения понятия "создать язык программирования" мне не известно. Те же плюсы сначала были Си с классами, и классы, ЕМНИП, были реализованы с помощью макросов. Можно уже тогда было сказать, что был создан C++ или еще нет? А может, C++ был создан когда была написана первая программа на нём? Или когда был разработан первый стандарт? Поэтому лучше говорить конкретно - "была создана формальная спецификация языка" или "была создана первая реализация".

    Для некоторых эзотерических языков (например, Malborge), первые программы были написаны гораздо позже создания самого языка, причём в автоматическом режиме. Это конечно извращенный пример, но он (как и сам вышеупомянутый язык) показывает относительность понятия "создание языка".
    Ответ написан
    9 комментариев
  • Ошибка установки VIsual Studio 2015 community, как устранить?

    Мне кажется вы скачали update-only дистрибутив, т.е. такой установщик, который ставится поверх уже установленной Студии и обновляет её. Откуда качали, по какой ссылке?
    Ответ написан
  • Как убрать черные полосы при рендере окружности в LibGdx?

    Этот дефект называется алиасинг. Рискну предположить, что это изображение вы рисуете с помощью концентрических кругов. Если это так, то дефекты возникают из-за того, что функция, рисующая окружность, округляет значения координат точек круга "в разные стороны" для различных значений радиусов окружности, и результат рисования окружности для R=1.5 (условно) не "согласуется" с результатом рисования окружности с радиусом R=1.6. Из-за этого остаются черные незакрашеннные точки.

    Избавиться от этого можно по-разному. Например, рисовать изображение, проходя ВСЕ пиксели, претендующие на попадание на окружность, но для каждого из них вычислять значение цвета по расстоянию до центра окружности. Тогда у вас не будет незакрашенных точек изображения.
    Ответ написан
    1 комментарий
  • SQL. Нужно ли создавать отдельную таблицу?

    tihhanovski вам дело говорит. Это полная лажа - таблицы Child и Parent. В чем их смысл? Каждая таблица (т.е. отношение, говоря математическим языком) - эти некий факт, который может быть истинным для некоторой комбинации атрибутов (и тогда запись в таблице существует), либо не быть истинным (и тогда записи в таблице нет). В чем суть фактов "Ребенок" или "Родитель"? И в том и в другом случае это человек. Т.е. для хранения сведений о человеке нужна только одна таблица, и это таблица Person.

    Другое дело, что вы хотите еще хранить сведения о том, кто кому приходится родителем. Поля ParentId в таблице Person будет недостаточно, т.к. зарегистированный родитель может быть один, а может быть двое (или даже ни одного, если в вашем детсаду могут быть сироты). Можно конечно завести два поля - первый родитель и второй родитель, и давать возможность ставить туда NULL, но не факт что это лучшее решение. Вот для целей хранения связи родитель-ребенок (обращаю ваше внимание, что именно СВЯЗИ родитель-ребенок, а не отдельных сущностей "родитель" и "ребенок") можно завести отдельную таблицу вида Parent(ChildId, ParentId), где оба поля - это внешние ключи в таблицу Person и оба поля формируют составной первичный ключ. Тогда вы сможете спокойно заносить и детей и родителей в одну таблицу, а затем связывать их родственными отношениями - у одного ребенка может быть 0, 1 и более родителей (ограничение в 2 человека нужно будет контролировать на уровне приложения), и каждый родитель может иметь любое число детей.

    P.S. По поводу того, что данные разные в Child и Parent - дело не в том, что ФИО надо выносить, а в том, что надо отделить общие данные о человеке, и оставить их в таблице Person (кстати, пол человека вы наверняка захотите хранить в Person), а различающиеся данные разместить в других таблицах, например МестоРаботы и МедицинскиеСведения. То, что у родителей есть место работы, а у детей - мед. сведения, это, грубо говоря, стечение обстоятельств. Завтра вам скажут, что медицинскую информацию и для родителей тоже нужно хранить (например, если они посещают здание детсада). Один-два джоина - это более чем адекватный запрос в нормальной нормализованной БД.
    Ответ написан
  • С чего начать написание библиотеки JS?

    Знания JS есть.

    Открыл другие библиотеки, читал, пробовал понять хоть что нибудь, но, неудачно.

    Взаимоисключающие параграфы. Не может быть так, что знания есть, а что-нибудь понять не получается. Либо задавайте конкретный вопрос по существу ("не понимаю, как работает package.json в либе X"), либо проверьте истинность утверждения "Знания JS есть."
    Ответ написан
    Комментировать
  • Где найти хорошие примеры проектов на Angular 1.5 с использованием Typescript?

    /// <reference path="../typings/angular/angular.d.ts"/>
    import { angular } from "angular";
    
    var myapp=angular.module('myapp',[])

    1) 'use strict' не нужен начиная с TS 1.8 (tsc сам добавляет теперь всегда);
    2) вместо module начиная с TS 1.5 используют namespace, чтобы не конфликтовать в терминологии с модульными системами для JS;
    3) вам тут модуль и не нужен, т.к. сам файл и так представляет собой модуль;
    4) если имя не из стандартных библиотек TS, его нужно импортировать перед использованием. Точный путь зависит от того, куда у вас поставились d.ts-ки для Ангуляра и чем от того, чем вы вообще собираете проект.
    Ответ написан
  • Каков принцип работы SPA приложений в ASP.NET Core?

    Да, правильно. Добавлю, что т.к. теперь ваше WebAPI это основной поставщик данных на клиент (в браузер), то в идеальном случае вам вообще больше не нужны View - достаточно вернуть статику (скрипты и основую страницу приложения) с веб-сервера. Т.е. в идеальном SPA ASP.NET остается только для WebAPI.
    Ответ написан
    Комментировать
  • Как исправить ошибку "Поставщик "Microsoft.Jet.OLEDB.4.0" не зарегистрирован на локальном компьютере."?

    Nipheris
    @Nipheris Куратор тега C#
    Ставьте в свойствах проекта галочку Prefer 32-bit и радуетесь. Ну или ставите 64-х битную версию провайдера Access.
    Ответ написан
    1 комментарий
  • Как реализовать версионность данных на EntityFramework CodeFirst (метод таблиц-версий, подход TPC)?

    Nipheris
    @Nipheris Куратор тега C#
    Вы уверены, что надо этим мучать EF? Я думаю, версионирование данных это один из кейсов, когда стоит применить триггеры, а не поднимать версионность на уровень объектной БД.
    Ответ написан
    1 комментарий
  • Как неопределенное поведение в javascript складывается на уровне V8?

    Nipheris
    @Nipheris Куратор тега C++
    однако неопределенные поведения мы либо обрабатывали исключениями, либо как-то логично обрабатывали входные параметры операндов (obj1 + obj2). А как же тут обрабатывается?

    А вот не поверите, есть два вида программистов: те, которые считают, что хорошо замалчивать ошибки, и те, кто УЖЕ так больше не считает. Есть даже статьи на Хабре, которые рассказывают, какой JS хороший и "надежный". Считать замалчивание ошибок надежностью - имхо это значит не стать (пока что) программистом. От ошибок можно уметь восстанавливаться, но замалчивать их нельзя.
    В качестве примера посмотрите на архитектурные подходы в Эрланге. Прям погуглите по словам "erlang let it crash". Этот подход, поддерживаемый концепцией процесса в Эрланге, говорит, что тот код, который не может дальше нормально выполняться, должен "упасть". А мы напишем другой код, который будет следить за работой основного, и в случае нештатных ситуаций будет предпринимать необходимые действия (например, перезапускать процесс).
    Да хотя что далеко ходить, концепция исключений в более популярных языках также есть способ научиться жить с ошибками, не бояться их генерировать, и уметь их обрабатывать там, где это возможно и удобно. Это первое.

    Второе: JS это язык со слабой типизацией. Это такая штука, которая позволяет написать 1 + "1" и безо всяких перегрузок в стиле C++ транслятор сам приведёт какой-то из аргументов к такому типу, чтобы операцию можно было выполнить. Вы сейчас просто в большом удивлении от того, что это возможно и кому-то такое могло прийти в голову (вы из плюсов пришли, да?). Кстати, в PHP почти то же самое. Только правила преобразований другие немного. (Кстати, почитайте об операторах == и === в JS, узнаете много удивительного, если еще не сталкивались).

    Ведь браузерные движки написаны на С++, а значит все это JS-дело определено на уровне С++, мне интересно какие внутренности определяют такое поведение.

    Никакие внутренности не определяют это поведение. Все эти случаи либо явно описаны в стандарте JS и их просто реализуют в соответствии со стандартом, либо реализуют так, чтобы реализации были максимально совместимыми. Тут можете почитать про typeof null, возвращающий "object" - по сути один большой баг, который теперь поддерживают, чтобы не сломать совместимость.

    Из-за этих мелочей в JS минимум системности и логичности. Этим языком правит совместимость, а не логика. Почему он такой, какой есть, вам уже ответили.
    Ответ написан
    9 комментариев
  • Как найти и удалить с сайта чужой скрипт?

    Скрипты лучше "удалять" перезаливкой сайта (и даже базы, если у вас CMS) из бэкапа. Если вас поломали, то пока вы не прошерстите руками весь код, никто вам не скажет на 100%, в каких местах у вас бэкдоры стоят.

    Сайт-то самописный или цмс-ка?
    Ответ написан
    1 комментарий
  • Как сделать авторизацию на LDAP Active Directory? Как это вообще работает?

    > по заданию я должен написать свое клиент-серверное приложение по HTTP или TCP/IP
    Интересное задание. Так с помощью чего части приложения общаться должны? Толстый или тонкий клиент нужен?

    Авторизация в ASP.NET делается с помощью identity provider-ов.

    Гуглил типа "ldap get authorized user"

    Сложно придумать менее удачный запрос для поиска. Вам зачем "получать авторизованного пользователя"?? Вам нужно выполнять аутентификацию через ldap.

    www.nuget.org/packages/Microsoft.IdentityModel.Cli... поглядите что-ли, даже не знаю какой из вариантов вам предложить.
    Ответ написан
    Комментировать