Метка «c++» - 59

Для начала несколько вопросов:

  1. Тип char по умолчанию знаковый или нет? А int?
  2. Сколько бит в char?
  3. Какое максимальное число гарантированно можно поместить в int? А минимальное?
  4. Тип long определённо больше, чем char, не так ли?

Разумеется, экспериментально искать ответы на эти вопросы с помощью вашего любимого компилятора в вашей любимой системе на вашем любимом компьютере1 — не лучшая идея. Мы говорим о стандарте языка (С99 и новее).

Если вы уверенно сможете правильно ответить на эти вопросы, тогда эта статья не для вас. В противном случае десять минут, потраченные на её чтение, будут весьма полезны.

Предположу, что вы ответили

  1. Знаковые оба.
  2. 8.
  3. 2147483647. -2147483648.
  4. Конечно, кэп.

А правильные ответы такие

  1. char — не регламентируется, int — знаковый.
  2. Не менее 8.
  3. 32767. -32767
  4. Вообще говоря, нет.

Читать полностью »

При разработке сложных бизнес приложений часто приходится сталкиваться с ситуацией, когда пользователям необходимо ограничивать права на редактирование некоторых данных. В данной статье будет рассмотрен пример запрета изменения определенных свойств модели в приложении, разработанном на ASP.NET MVC.
Читать полностью »

Некоторое время назад страничка «Лучшие комментарии» была удалена с Хабра (подробности здесь: habrahabr.ru/qa/18401/).
Тем не менее, мне бывало интересно туда заглянуть — и ради лулзов, и статьи иногда интересные попадаются из тех, что в ленте упустил. Так что решил я сделать свой небольшой сервис. Надеюсь, администрация не будет против.

Топ комментариев Хабра — сервис, детали реализации, и немного статистики (С#)
Читать полностью »

Здравствуйте!

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

Пишем эмулятор Gameboy, часть 1
Пишем эмулятор Gameboy, часть 2
Читать полностью »

Надоело… Накипело и надоело. Не знаю как высказаться и поймёте ли вы о чём я, но всё же, не судите строго.
За всё что только не возьмись — всё хорошо, но «не совсем». Я не имею большого опыта, можно сказать, — junior — 1 год. Увлёкся программированием, а именно C++ — программированием. Да-да, именно «C++ — программирование». И с этого всё началось. Сначала чтение много чего, чтение днём и ночью: начиная с «C++ за 21 день» или чего-то в этом духе, заканчивая бандой четырёх и их модными паттернами.
Первое что приходило в голову — «Нет ничего сложного и когда говорят, что C++ сложный и запутанный — слишком сильно преувеличивают». Ну подумаешь, множественное наследование и проблема с неоднозначностью — так всё верно ж — виртуальное наследование, как минимум, тебе в руки. Всё и так давным давно написано умными людьми — осталось просто почитать и правильно понять. Что ж тут сложного?
Ага, почитал.
Читать полностью »

Наверное, многие C++-программисты слышали про мультиметоды и знают о том, что по сей день нет для этого языка приемлемой реализации: ни языковой поддержки, ни внешних библиотек. Есть кодогенераторы, выкрутасы через виртуальные методы, частный случай двойной диспетчеризации aka паттерн Посетитель (Visitor). Но ведь хочется просто реализовать несколько функций и указать: этот набор функций — есть мультиметод и точка.

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

Я решил попытать счастья, дерзнуть, предложить свое видение этой проблемы и способ ее решения. Получилась шаблонная библиотека на одних только заголовочниках.
Это реализация под стандарт C++03, на чистом C++: без каких-либо кодогенераторов и дополнений. Цель — библиотека с простым и понятным интерфейсом для реализации возможности перегружать функций по типу (и даже по значению) во время выполнения (это была программа минимум, в конечном итоге получилось еще много вкусностей).
Для тест-драйва необходимо скачать исходники, и сделать парочку #include.Читать полностью »

Ну вот нельзя просто так добавить, и все тут!

Мне тут пришлось вспомнить, как же все таки надо писать на С, хотя работаю С++ программистом. И мне так не хватало классов и методов, что я стал думать, как можно приблизить С к С++. Зачем? Просто так, мозги размять.
Основное пожелание было следующим: хочется, чтобы в С работал примерно такой код

void print_name( Iface* ptr )
{
    ptr->print_name();
}

void main()
{
    A a;
    B b;

    print_name( &a );    // выдаст "This is A object"
    print_name( &b );    // выдаст "This is B object"
}

По сути, A и В наследуют один и тот же (а может и несколько) интерфейс(ов). При этом можно на этих объектах вызывать виртуальные методы, действующие в зависимости от того, какой указатель был подан.

Кому интересно, что получилось в итоге (а в каком-то виде задача была решена) и кому интересно, как примерно в С++ реализуются виртуальные методы, прошу под кат.
Читать полностью »

Привет, в прошлой статье я рассказал про алгоритм обратного распространения ошибки и привел реализацию, не зависящую от функции ошибки и от функции активации нейрона. Было показано несколько простых примеров подмены этих самых параметров: минимизация квадрата Евклидова расстояния и логарифмического правдоподобия для сигмоидной функции и гиперболического тангенса. Данный пост будет логическим продолжение прошлого, в котором я рассмотрю немного нестандартный пример, а именно функцию активации Softmax для минимизации перекрестной энтропии. Эта модель актуальна при задаче классификации, когда необходимо получить на выходе нейросети вероятности принадлежности входного образа одному из не пересекающихся классов. Очевидно, что суммарный выход сети по всем нейронам выходного слоя должен равняться единице (так же как и для выходных образов обучающей выборки). Однако не достаточно просто нормализировать выходы, а нужно заставить сеть моделировать вероятностное распределение, и обучать ее именно этому. Кстати, сейчас на coursera.org идёт курс по нейросетям, именно он помог углубиться в понимание софтмакса, иначе я продолжал бы использовать сторонние реализации.

Читать полностью »

В рамках серии Октябрьских .NET Субботников состоится очередное звездное мероприятие в Киеве.
20 Октября Ciklum SkyPoint откроет для участников события как незабываемый вид на город, так и отличные доклады, которые придутся по вкусу всем .NET специалистам.
Октябрьский Ciklum .NET Saturday в Киеве
В программе:
1. Overview of ASP.NET Web API Framework от Александра Белетского
ASP.NET версии 4.5 обзавелся большим количеством новых фич, среди которых улучшенные ВебФормы, поддержка MVC, но одной из главных возможностей автор называет новый ASP.NET Web API Framework, который позволяет делать RESTful веб-сервисы на .NET. В рамках доклада будет предметно рассмотрена эволюция веб сервисов, архитектура REST и основные возможности Web API.

2. Continuous Deployments in Windows Azure Web Sites от Антона Видищева
На докладе будет подробно рассмотрены Azure Web Sites элементы и возможности деплоймента и настроек Cloud TFS и GIT.
.
3. Introduction to TypeScript от Дмитрия Миндры
Все уже наслышаны о новом языке от Mictosoft, который позволит разрабатывать на JS масштабируемые сервисы. Разработчики на JS уже итак проверяют код с jslint, используют closure compiler, применяют module pattern. Вашему вниманию предлагается рассмотреть TypeScript. Он сочетает в себе проверку типов и статический анализ, явные интерфейсы и лучшие функции в рамках одного языка и компилятора. Рассмотрим этот язык подробно.

4.5 Resharper features I can't live without от Дмитро Суворова
R# один из самых наименее популярных инструментов в мире .NET. Разработчики, которые пользуются им будут долго рассказывать о бесконечном списке полезных возможностей, но большинство считает его медленным, постоянно падающим и крайне бесполезным инструментом. Но встретившись с ним вновь при грамотном введении от специалистов видишь его совершенно другим: достаточно стабильным и обладающим большим количеством полезных возможностей.
Доклад Дмитрия будет именно о том, почему он больше не может жить без R#.
5. Functional programming in C# от Сергея Калинца
C# считается языком объектно-ориентированного программирования, однако он поддерживает многие парадигмы, одна из которых – функциональное программирование.
В своем докладе Сергей покажет на примерах как использование паттернов функционального программирования смогут создать разработчику более комфортные условия и помочь программному коду стать более чистым и эффективным. Будут рассмотрены базовые конструкции C#, LINQ от базового до продвинутого, параллельный и асинхронный код. Читать полностью »

Как показала практика работы с ERP системами — корпоративные приложения на 30% состоят из отчетов. Типичная ситуация для таких приложений — построить отчет по некоторым данным.

Для построения отчетов можно использовать ReportBuilder или любые другие системы построения отчетов. В этой статье я хочу рассмотреть построение отчетов в MS Word 2003 (и более поздние версии) посредством Aspose.Words, так как легко вносить правки, удобно разрабатывать, не требует особых навыков по работе с гигантами систем отчетов и т.д.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js