Это позволяет делать хаки вроде assert(cond && !"my message").
Выражение !"my message" всегда false, и assert(cond && false) всегда будет выводить сообщение, независимо от истинности cond.
Подобные ляпы обесценивают советы в этом переводе.
Вероятно, таким же образом вы пишете свои собственные макросы утверждений: ...
Код даже не скомпилируется из-за одной явной ошибки (expr вместо Expr) и одной неявной (#if DEBUG_ASSERT_ENABLED, если макрос определяется без значения).
if (Handler::value && !expr)
Однако у этого кода тот же недостаток, что описан выше: выражение вычисляется всегда, когда выполняется ветка Handler::value!
Не совсем понял, к чему это он, но кажется человек не понимает, как вычисляется булево выражение, и что такое точки следования, но это и не мудрено, т.к. см. ляп №1.
Но как предотвратить вычисление выражения? Пойдём на хитрость — используем лямбду
Что? Серьёзно? А почему не парсинг AST на каком-нибудь спирите?
Добавление уровней утверждений
Хм. Уровни в ассертах? Может пора уже нормальный логгер взять?
Пишу две строки, коммичу, выполняю push и, привычно дождавшись, когда сработает CI, получаю письмо с сообщением о сбое в Windows-сборке.…
Смотрю сообщение об ошибке. Рукалицо. Коммичу фикс:
1) Определение новостного агрегатора, ст. 10.4 п.1:
Владелец программы для электронных вычислительных машин, владелец сайта и (или) страницы сайта в сети "Интернет", которые используются для обработки и распространения новостной информации в сети "Интернет" на государственном языке Российской Федерации, ..., и доступ к которым в течение суток составляет более одного миллиона пользователей сети "Интернет" (далее — владелец новостного агрегатора).
Определение настолько широкое, что под него подходит любая RSS-читалка типа Greader (закрытый), Feedly и пр. Даже почтовик с поддержкой NNTP — и то подходит. Простой и удобный способ атаки/закрытия неугодного сайта.
2) ст.10.4 п.1.11:
обеспечить доступ федерального органа исполнительной власти, осуществляющего функции по контролю и надзору в сфере средств массовой информации, массовых коммуникаций, информационных технологий и связи, к информации, указанной в пункте 10 настоящей части, посредством системы взаимодействия указанного федерального органа исполнительной власти с владельцем новостного агрегатора, порядок функционирования которой устанавливается указанным федеральным органом исполнительной власти.
Требуется выгрузка данных во внешнюю систему, с сопутствующими затратами на разработку, поддержку и пр.
Как-то у вас все данные «таблично-ориентированы», инкапсуляция хромает. Спору нет, такая структура данных тоже возможна, но ИМХО только если она дает значительное преимущество в чем-то. Как у вас получение типа пользователя выглядит?
auto user = storage.get<User>(123);
auto types = storage.get_all<UserType>();
...
auto iter = std::find_if( std::begin(type), std::end(type), [&user](const UserType & t){ return t.id == user.typeId; } );
assert(iter != std::end(type));
const UserType & ut = *iter;
По поводу рендеринга контента: существует ещё два способа — Mixing Scene Graph and OpenGL. Один, тот что вы описали (рисование на контексте в момент вызова событий), второй — рисовать на текстуре/буфере, встроенной в граф сцены Qt Quick.
Плюс есть еще QQuickRenderControl, который предназначен как раз для интеграции с 3rd party OpenGL renderers. И который, наоборот, отдает цикл отрисовки приложению, UI рендерится куда укажут.
… под LGPL вполне можно распространять библиотеку в статически слинкованном виде ...
Obligations of the LGPL
…
In case of static linking of the library, the application itself may no longer be “work that uses the library” and thus become subject to LGPL. It is recommended to either link dynamically, or provide the application source code to the user under LGPL.
В случае статического связывания библиотеки (линковки), приложение может перестать быть «произведением, использующим библиотеку», и т.о. стать объектом LGPL. Рекомендуется либо использовать динамическое связывание, либо предоставлять пользователям исходный код приложения по лицензии LGPL.
Не определённо это «may no longer be», в каких случаях? Есть ли у вас что сказать по этому поводу?
Хоть я живу в другом городе…
Запрос «мед центр прививки» на яндекс картах выдал 5 точек на карте. Первая же (сайт ymc2003): прививка вакциной от краснухи 800₽.
В этом случае получается, что генерация кода привязана к счетчику касаний. А если пользователь нажал кнопку несколько раз просто так? На стороне банка надо перебирать счетчик, пока коды не сойдутся? То есть, вместо точного значения кода банк должен ожидать некое допустимое множество значений кода. Теперь о диапазоне значений кода: сколько там обычно разрядов? Три? То есть коллизии будут происходить очень быстро (коды начнут повторяться). Получается если кто-то получил данные карты, сделал покупку, отправил любой код, то можно рассчитывать, что этот код войдет в допустимое множество кодов, ожидаемых банком. Ограничить множество допустимых кодов для одной операции? Опять упираемся в счетчик касаний (дети поигрались с кнопкой).
теперь есть 64-битный GFW (лучше производительность при работе с большими репозиториями, устранены некоторые баги, специфичные для 32-битного GFW)
подсистема MSys заменена на MSys2
как следствие, получили современные версии Bash, OpenSSL, и т.д.
как следствие, будет тратиться меньше сил на поддержку GFW
GFW не является заменой MSys2, поэтому содержит только минимальный набор утилит (пакетов) для работы Git, и установка дополнительных пакетов отключена
Пока GFW не интегрирован до конца в MSys2, для разработки будет использоваться Git for Windows SDK, который является форком MSys2, настроенный для сборки GFW
GFW отличается от пакета git в MSys2, но в дальнейшем они будут одинаковыми, тикет #284, т.е. любой, заинтересованный в дополнительных утилитах, не входящих в GFW, сможет установить вместо него MSys2 и поставить git вместе с необходимыми пакетами
отказались от Git Cheetah, т.к. мало кто использовал, а аналог — TortoiseGit — хорошо поддерживается
GitHub for Windows намереваются интегрировать этот новый релиз
Выражение
!"my message"
всегдаfalse
, иassert(cond && false)
всегда будет выводить сообщение, независимо от истинностиcond
.Подобные ляпы обесценивают советы в этом переводе.
Код даже не скомпилируется из-за одной явной ошибки (expr вместо Expr) и одной неявной (#if DEBUG_ASSERT_ENABLED, если макрос определяется без значения).
Не совсем понял, к чему это он, но кажется человек не понимает, как вычисляется булево выражение, и что такое точки следования, но это и не мудрено, т.к. см. ляп №1.
Что? Серьёзно? А почему не парсинг AST на каком-нибудь спирите?
Хм. Уровни в ассертах? Может пора уже нормальный логгер взять?
Рукалицо.
Два неприятных момента:
1) Определение новостного агрегатора, ст. 10.4 п.1:
Определение настолько широкое, что под него подходит любая RSS-читалка типа Greader (закрытый), Feedly и пр. Даже почтовик с поддержкой NNTP — и то подходит. Простой и удобный способ атаки/закрытия неугодного сайта.
2) ст.10.4 п.1.11:
Требуется выгрузка данных во внешнюю систему, с сопутствующими затратами на разработку, поддержку и пр.
Номер все же есть — это 149-ФЗ от 27 июля 2006 года.
Федеральный закон "Об информации, информационных технологиях и о защите информации", номера отдельного у него нет. ФЗ 208 от 2016-06-23 это всего лишь один из изменяющих документов (даже не последний).
где обычно ожидается user.type.
Да у нас полно таких примеров.
Путеводитель по каркасным стройкам форумчан FORUMHOUSE.RU
Там материала на несколько десятков статей "Построил каркасный дом в одиночку / силами семьи".
Но если использовать так
то прослойка ORM вроде и не нужна, можно использовать fopen/fwrite.
Понимаете, к чему это?
C++ располагает к использованию UserType typeId; вместо int userTypeId; т.е. к использованию иерархического дерева объектов вместо таблиц.
Мировое станкостроение 2015 — брошюра на основе данных агентства Gardner Publication Inc.
U.S. Semiconductor Manufacturing: Industry Trends, Global Competition, Federal Policy. June 27, 2016
Плюс есть еще QQuickRenderControl, который предназначен как раз для интеграции с 3rd party OpenGL renderers. И который, наоборот, отдает цикл отрисовки приложению, UI рендерится куда укажут.
Не определённо это «may no longer be», в каких случаях? Есть ли у вас что сказать по этому поводу?
Но, вообще,
Хоть я живу в другом городе…
Запрос «мед центр прививки» на яндекс картах выдал 5 точек на карте. Первая же (сайт ymc2003): прививка вакциной от краснухи 800₽.
Также:
Только ссылка побилась, вот анонс Git for Windows 2.5.0
По формату больше, чем журнал, но выпускался ежегодно.