Pull to refresh
-2
0
Send message
Вопрос в лицензионных ограничениях. Нельзя просто так распространять шрифты. Нужно учитывать тип лицензии. А автоматически это сделать нереально.

Как альтернативный вариант наверное можно рассмотреть встраивание шрифтов в файл чертежа без возможности их экстракции, как это сейчас делается в PDF.

или еще проще — говорил что шрифтов нет и предлагал бы заменить их в чертеже на какой то общий из системных шрифтов.

Собственно так оно сейчас и работает. И для TTF, и для SHX. Только без запроса к пользователю.
Вообще говоря именно пропажа текста в dwg-файлах в 99% из-за SHX-шрифтов.

Неправда ваша. При отсутствии shx-шрифтов авто/нанокады осуществляют автоматическую замену на shx-шрифт по умолчанию. И ситуация опять сводится к наличию глифов для соответствующих символов (в смысле юникодных codepoint). Отсутствующие глифы обычно заменяются глифом знака вопроса.
Кроме того, одной из постоянно возникающих сложностей была и остается пропажа текста при передаче *.dwg-файлов.

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

Если уж начистоту, это результат плохого знания «опытным проектировщиком» того интсрумента (САПР), с которым он работает. Или банальное раздолбайство. В первом случае статья возможно и поможет. Во втором — скорее всего нет.
Не путайте мягкое с тёплым. ГОСТовские шрифты могут быть и в виде TTF, и в виде SHX.

Статья не о том, использовать ГОСТовские шрифты или нет, и вообще выполнять ли требования ГОСТ. (Кстати, в разных странах разные ГОСТы и разные требования по их исполнению.) Вам в техникуме было выставлено требование выполнения норм ГОСТ — вы его выполняли (и это правильно). А где-то это совершенно необязательно.
В идеальном мире чистых абстракций с бесконечной производительностью и нулевыми задержками это работает. Так же как и идея составных документов, когда в условный вордовский документ на локальном компьютере вставлены объекты условных Excel, PowerPoint, etc., находящиеся на других компьютерах, разбросанных по всему миру. В идеальном мире это работает. В реальном — применимо, если вы мазохист (ну или поставлены в такие условия извне). И это не единичные примеры.

С другой стороны, всегда надо думать, что ты собираешься сделать. Разархивировать файлы через Ctrl-X/Ctrl-P — явно не лучшая идея, если вы не тестировщик.

С третьей стороны, Windows9x (да и не только 9x) позиционировались как «ОС для домохозяек». А эта категория пользователей не будет задумываться, чем отличается zip-архив от дисковой файловой системы. Поскольку не знает, что такое «zip-архив» и «файловая система». Тут однозначно прокол при тестировании.
Интересно то, что такая сложная атака имела целью такую мизерную сумму. И ведь понятно, что эту схему долго и/или для большого количества потенциальных жертв эксплуатировать не получится. Профит в чём?
А, если не секрет, цена вопроса какая? На какую сумму вас пытались развести?
О'кей, если вы отвечаете за снабжение детских домов ноутбуками по всей стране, не буду ваши слова подвергать сомнению. Но смысл моего комментария был несколько иной.
Рояль жалко. Да и ноут тоже.
Если уж «бабла немеряно» отдали бы рояль и ноут куда-нибудь в детский дом. Всё польза была бы.
Полметра вроде. Если кирпичи однородные по плотности.
Однако у обобщённого программирования в C++ есть огромный минус: возникающие ошибки — это боль.

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

Плюсовый компилятор, если не вдаваться в подробности, состоит из собственно компилятора C++ (без шаблонов) и интерпретатора мета-языка шаблонов. И если с отладкой исполняемого кода всё более или менее в порядке, то отлдка мета-языка находится где-то на уровне 60-х годов прошлого века: на входе колода перфокарт, на выходе телетайп. Как-то посмотреть промежуточные результаты вычислений интерпретатора весьма затруднительно. Не говоря уже про точки останова и прочие плюшки отладчика.

Конечно отладка — это не вопрос Стандарта. Но и производители компиляторов и IDE не спешат что-то делать в этом направлении. (А прошло, на минуточку, уже больше 30 лет с момента появления первого компилятора C++.) Поэтому метапрограммирования на C++ стараются, по возможности, избегать (иногда даже запрещать на уровне корпоративного code-style). А когда это невозможно, метапрограммные части кода являют собой достаточно примитивные конструкции, правильность которых можно оценить невооружённым глазом. И только малый процент мета-кода является действительно сложными программами на мета-языке.
Всё великолепие разбивается одним предложением:
И помните, что никакие советы не помогут сохранить анонимность, если вами заинтересуются действительно серьёзные ребята (типа АНБ/ФСБ/Моссад).

Конечно не надо светить своими личными данными на каждой интернет-помойке во избежание контактов с мелкими бандюками, мошенниками и аферистами. Ну и от своей первой, официальной, хорошо засвеченной личности избавиться сложно, затратно, неудобно.
HD-Copy версия 1.7р. Экран «О программе»

Там написано, что эта программа CARDWARE. Вы послали postcard (или хотя бы e-mail) автору программы?
В 90-е было дело. У моего друга и коллеги была своя BBS. После того, как клиент всё-таки дозванивался по dial-up'у и подключался к BBS, он видел экран приветствия, на котором в частности было написано «For continue press Ctrl-Alt-Del twice...» (на самом деле «press any key»). И что вы думаете? Один товарищ на полном серьёзе написал на него жалобу в профильную FIDO'шную эху по поводу того, что это безобразие и издевательство: он не может войти на BBS, владельцем которой является имярек <адрес FIDO>, потому что после первого Ctrl-Alt-Del его компьютер перезагружается.
По поводу вашего списка примеров блюза на 160 bpm.

Во-первых, пп.1 и 2 блюзом являются только очень формально, только поскольку используют блюзовый квадрат. А вообще-то буги-вуги. Rock'n'roll ведь формально тоже блюз. Только сильно убыстренный. Это к качеству выборок композиций для анализа.

Во-вторых, п.4, на мой чисто любительский взгляд, ну не как на 160. Скорее 120 bpm. Я не знаю, как там с четвертями, но если отстукать темп (по ударнику, по басу, по сильным долям) — получается примерно 2 удара в секунду. Это к качеству анализа композиций.

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

Понятие совершенного кода, imho, в первую очередь подразумевает код, который лёгок в сопровождении, расширении и модификации. Всё остальное: читаемость, комментарии, алгоритмы, оптимизации — вытекает из этого. Не говоря уж о том, что код должен работать и выполнять свою задачу.
Во-первых, такой функции нет в стандарте С++. Т.е. сразу непереносимо.
Во-вторых, в данном случае, использование этой функции эквивалентно объявлению локальной переменной-массива. С теми же потенциальными граблями и, возможно, дополнительными ключами компиляции.
А оно надо?
Не всё так однозначно. Если двухмерный (многомерный в в общем случае) массив объявлен так, как это показано в статье, то он однозначно «лежит в памяти одним блоком».

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

совершенно неправильно. «Указатели на указатели на указатели» появляются только в том случае, когда многомерный массив размерности n реализуется с помощью массива указателей на массивы с размерностью n-1. И, да, в этом случае данные массива будут разбросаны по памяти. Обычно это бывает при создании многомерного массива в куче при размерах массива, неизвестных на этапе компиляции. Хотя и в этом случае, если чуть-чуть напрячься и заморочиться с адресной арифметикой, можно написать класс, реализующий многомерный массив, данные которого будут лежать в куче единым блоком.
Я чего-то не понял. Вот это «новое» — это ещё не забытое старое? До 10-ки были регулярные (плюс-минус) обновления системы и «других продуктов Microsoft». В 10-ке решили отказаться от этого и сказали, что систему будем патчить 2 раза в год, но по-крупному. Исключения — только хотфиксы безопасности. Теперь, как я вижу, просто возвращаются к старой схеме. Не?

Information

Rating
Does not participate
Registered
Activity