All streams
Search
Write a publication
Pull to refresh
20
0
Send message
Это позволяет делать хаки вроде 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-сборке.…
Смотрю сообщение об ошибке. Рукалицо. Коммичу фикс:

Рукалицо.

Название не особо удачное вы выбрали, будут путать с этим — https://eclipse.org/papyrus/.

Два неприятных момента:


1) Определение новостного агрегатора, ст. 10.4 п.1:


Владелец программы для электронных вычислительных машин, владелец сайта и (или) страницы сайта в сети "Интернет", которые используются для обработки и распространения новостной информации в сети "Интернет" на государственном языке Российской Федерации, ..., и доступ к которым в течение суток составляет более одного миллиона пользователей сети "Интернет" (далее — владелец новостного агрегатора).

Определение настолько широкое, что под него подходит любая RSS-читалка типа Greader (закрытый), Feedly и пр. Даже почтовик с поддержкой NNTP — и то подходит. Простой и удобный способ атаки/закрытия неугодного сайта.


2) ст.10.4 п.1.11:


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

Требуется выгрузка данных во внешнюю систему, с сопутствующими затратами на разработку, поддержку и пр.

Федеральный закон "Об информации, информационных технологиях и о защите информации", номера отдельного у него нет. ФЗ 208 от 2016-06-23 это всего лишь один из изменяющих документов (даже не последний).

Промахнулся, ответил новым комментарием.
Как-то у вас все данные «таблично-ориентированы», инкапсуляция хромает. Спору нет, такая структура данных тоже возможна, но ИМХО только если она дает значительное преимущество в чем-то. Как у вас получение типа пользователя выглядит?
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;

где обычно ожидается user.type.

Да у нас полно таких примеров.


Путеводитель по каркасным стройкам форумчан FORUMHOUSE.RU


Там материала на несколько десятков статей "Построил каркасный дом в одиночку / силами семьи".

Да, не плохо. Фактически, избавляет от многочисленных assigns при де-сериализации.
Но если использовать так
struct User{
    int id;
    int birthDate;
    char firstName[64];
    char lastName[64];
};

то прослойка ORM вроде и не нужна, можно использовать fopen/fwrite.

Понимаете, к чему это?

C++ располагает к использованию UserType typeId; вместо int userTypeId; т.е. к использованию иерархического дерева объектов вместо таблиц.

Мировое станкостроение 2015 — брошюра на основе данных агентства Gardner Publication Inc.


  1. 27,6 % — КНР
  2. 15,5 % — Германия
  3. 16,8 % — Япония
  4. 6,6 % — Италия
  5. 5,9 % — Ю.Корея
  6. 5,7 % — США
  7. 5,0 % — Тайвань
  8. 3,8 % — Швейцария
  9. 1,4 % — Австрия
  10. 1,4 % — Испания

U.S. Semiconductor Manufacturing: Industry Trends, Global Competition, Federal Policy. June 27, 2016


  • 10 из 20 крупнейших "полупроводниковых" компаний происходят из США
  • доля этих компаний на мировом рынке составляет 49,6% (по продажам)
  • ни одна компания из этой двадцатки не происходит из Китая
  • большинство компаний являются "fabless" (без собственных фабрик), т.е. только владеют технологией
Apple Developer → Support → Choosing a Membership — таблица в конце страницы, пункт «Test on Device».
По поводу рендеринга контента: существует ещё два способа — 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», в каких случаях? Есть ли у вас что сказать по этому поводу?

В том же центре:
Вакциной против ветряной оспы «Варилрикс» 3000₽

Но, вообще,
Имеются противопоказания, необходимо проконсультироваться...

В Ярославле, к примеру, это малореально

Хоть я живу в другом городе…
Запрос «мед центр прививки» на яндекс картах выдал 5 точек на карте. Первая же (сайт ymc2003): прививка вакциной от краснухи 800₽.
В этом случае получается, что генерация кода привязана к счетчику касаний. А если пользователь нажал кнопку несколько раз просто так? На стороне банка надо перебирать счетчик, пока коды не сойдутся? То есть, вместо точного значения кода банк должен ожидать некое допустимое множество значений кода. Теперь о диапазоне значений кода: сколько там обычно разрядов? Три? То есть коллизии будут происходить очень быстро (коды начнут повторяться). Получается если кто-то получил данные карты, сделал покупку, отправил любой код, то можно рассчитывать, что этот код войдет в допустимое множество кодов, ожидаемых банком. Ограничить множество допустимых кодов для одной операции? Опять упираемся в счетчик касаний (дети поигрались с кнопкой).
Например, так:

[ -e file.ext ] && echo Exists

[ -f file1 -a -d folder1 ]
if %ERRORLEVEL% equ 0 (...)
Из ананоса Git for Windows 2.5.0:
  • теперь есть 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 намереваются интегрировать этот новый релиз

Также:
Один из случаев, когда комментарий полезней статьи :)
Только ссылка побилась, вот анонс Git for Windows 2.5.0
Эврика



По формату больше, чем журнал, но выпускался ежегодно.

Information

Rating
Does not participate
Registered
Activity