Pull to refresh
13
0
Send message

Обращение к ув. разработчикам Visual Studio, а конкретно к разработчикам поддерживающим VS For Linux подсистемы, которую вы здесь расхваливаете.

Мы работаем с ней уже несколько лет - и это КОШМАР!

Приурочу свою тираду к новому выпуску 2019 студии Version 16.10.4 - в которой Вы опять всё сломали!! И так из раза в раз. Висят ошибки которые не правятся годами, и главное, мы стараемся подсказать Вам из певых рук, то что нужно конечному разработчику и как это будет выглядеть правильно, но многое остаётся сделано криво.

Вот и сейчас: Раньше копирование исходников на удаленную машину происходило в директорию с названием проекта(что есть правильно), но сейчас ВДРУГ исходники стали копироваться в директорию, которая называется по имени файла проекта!! ЗАЧЕМ??

СМ: https://developercommunity.visualstudio.com/t/VS-For-Linux:-WHAT-ARE-YOU-DOING-All-o/1480858

У нас сломались все проекты - это большие проекты решения с десятками проектов - находящиеся на разных уровнях - все директории поплыли!

Более того начала падать Microsoft.Build.Linux.Tasks. Теперь вообще ничего не работает.

А главное ваши горе-разработчики не понимают как надо тестировать это всё - они мне всегда показывают - "Ну вот видишь Helloworld собирается же". Когда уже вы будете проверять ваш продукт на РЕАЛЬНЫХ решениях, сложных проектах использующих PostBuild и PreBuild, RemotePostBuild итд.

Наши проекты собираются в инфраструктуру на удаленной машине, есть общие файлы, о которых VS ничего не знает - НЕЛЬЗЯ просто так брать и менять пути деплоя, копирования исходников и пр. в каждой новой версии!

Более того у нас ещё есть и наши кастомные Targets построенные поверх VS For Linux - которые тоже постоянно ломаются. Половина Resolved путей внутри вашей системы вычисляются изначально верно, но потом заменяются на некорректные - это вообще ни вкакие ворота не лезет.

СМ: https://developercommunity.visualstudio.com/t/VS-for-Linux:-Wrong-resolve-RemoteProjec/1368377

И напоследок самый эпичный Баг - который висит уже 2 ГОДА!! https://developercommunity.visualstudio.com/t/VC-for-Linux-copysources-error-on-some/946015

Здесь я сам декомпилирую Вашу DLL правлю её и собраю заново - потому что Ваши разработчики не могут поправить 1 строчку кода! Описание проблемы давно есть и описание причины есть - я даже указал что именно надо править - это уже смешно.

Хочу привлечь внимание Allen Zeng [MSFT], Danny Cai [MSFT] и прочих, видимо причастных людей к этой разработке.

Почему это опять происходит, почему VS For Linux становится нестабильной - хотя от вас требовалось только поправить те баги, которые на Вас ставят.

К сожалению пользоваться в полной мере Вашей сборочной подсистемой для Linux до сих пор опасно. И честно, я уже желею, что построил сборку на ней. И пока не могу его рекоммендовать НИКОМУ.

Если вдруг представители(разработчики) захотят со мной связаться, могут написать здесь в личку - я и моя комманда с удовольствием проконсультирует их во всех нюансах и подводных камнях Вашего же продукта, который далёк от совершенства!

ПС Прошу прощения, но я уже устал "биться головой" о ваш developercommunity.visualstudio.com, ставя десятки и сотни багов!

Дык не считайте её — посчитайте один раз и положите в переменную — длина же не меняется на протяжении этой функции.

ПС
Вообще пример 1 — это бред сивой кобылы имхо — если такое пишут внутри ОС — за это надо наказывать у позорного столба

ПС2
А зачем вообще коллекционировать функции копирования памяти? Одно то что таковые наличествуют в коде — говорит о том, что это странный код и странный программист, который решил переписывать стандартные решения на свои костыли(если конечно это не разработчик стандартной библиотеки для какого либо компилятора, делающий это для оптимизации конкретно под него)
Честно, никогда не понимал наличие таких устройств на кристаллах по сути от мобильников. Да ещё и за такие деньги — даже чистыми это 14к российских рублей + непомерная доставка — получается уже чуть ли не 20к. Первое: Честно я у китайцев могу найти всякие jumperы, voyo, да тысячи их — с нормальными интел процами, и прекрасно туда ложатся разные ОС и по той же цене. Второе если вес не имеет значения — за эти деньги можно взять совсем дешманский ноут, который будет чуть менее модным, но гораздо более мощным.

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

По теме:
Много вопросов по мат плате.

При исчезновении мат. платы в привычном виде — что делать с оперативкой? Очевидно она будет на проце, лично для меня, например, отсутствие апгрейда по оперативке это минус. Т.е. получается если нужно добавить каких нибудь жалких 4гб на борт нужно будет менять весь «камень», что несомненно дорого и линейка будет выглядеть аля: Core i100500 4GB, Core i100500 8GB, Core i100500 16GB… и т.д.

Да и вообще не понятно, что делать с периферией. В любом случае нужно оставлять возможность дискретной видеокарты — а это уже опять практически классическая «материнка», ибо каким бы хорошим не было интегрированное видео, оно далеко от дискретной продукции nVidia/AMD. Для офисных нужд — да, лучше не придумаешь, но для сложных вычислений/рендер задач, это не серьёзно. Даже если представить что nVidia/AMD начнёт делать видео чиплеты и даже если представить, что intel их будет интегрировать это, имхо, будет мрак, т.к. вдобавок к вышеупомянутому(по оперативке) уже линейка будет выглядеть: Core i100500 16GB nVidia 3070, Core i100500 8GB nVidia 3050 — кошмар же. Про охлаждение же таких монстров, я вообще молчу — там уже жидкий гелий понадобится.

В сухом остатке — если это произойдёт мы получим некий черный ящик без возможности модификации( ничего не напоминает). Для меня классический PC это конструктор(и собственно, я думаю, отчасти, за счет этого он и покорил мир), который позволяет пользователю/компании модифицировать его под конкретные задачи, причем гибко менять начинку, если задачи меняются! Я думаю возможность апгрейда/изменения — это преимущество.

ПС
Конечно я тут привёл всё к PC. Intel конечно же выпускает кристаллы для различных систем, но вот как-то так вышло…
Внимание! Если вы взяли к примеру 2-ой элемент в таблице ординалов, это не значит 2 — это ординал для таблиц имён и адресов. Индексом является значение, хранящееся во втором элементе массива ординалов.

Вот это вообще непонятно что — в массиве ординалов хранятся ординалы, а не индексы! И ординал, который лежит в по индексу 2 будет однозначно соответствовать фции, которая лежит по индексу 2 с именем, которое лежит по индексу 2.

Количество значений в таблицах имён (NumberOfNames) и ординалов равны и не всегда совпадают с количеством элементов в таблице адресов (NumberOfFunctions).

Исходя из документации, которую Вы же и указали оно всегда совпадает…
DWORD NumberOfNames
The number of elements in the AddressOfNames array. This value seems always to be identical to the NumberOfFunctions field, and so is the number of exported functions.

И вот ещё:

To find all the information about the fourth function, you need to look up the fourth element in each array.


RVA >= sectionVitualAddress && RVA < ALIGN_UP(sectionVirtualSize, sectionAligment)

опечатки
Сейчас читаю эту статью (освежить память по PE) — нашел ошибки.

TimeDateStamp: WORD — число хранящее дату и время создания файла.
PointerToSymbolTable: DWORD — смещение (RAW) до таблицы символов, а SizeOfOptionalHeader — это размер данной таблицы. Данная таблица призвана служить для хранения отладочной информации, но отряд не заметил потери бойца с самого начала службы. Чаще всего это поле зачищается нулями.
SIzeOfOptionHeader: WORD — размер опционального заголовка (что следует сразу за текущим) В документации указано, что для объектного файла он устанавливается в 0…


Очевидно вместо первого вхождения SizeOfOptionalHeader должно быть NumberOfSymbols, а второе вхождение — дык вообще с опечатками: заменить «SIzeOfOptionHeader» на SizeOfOptionalHeader.

Это происходит из-за размера выравнивания. 0x28 “не дотягивает” до 0x50 и как следствие, будет выгружена секция, а остальное пространство в размере 0x50-0x28 занулится. А если размер секции был бы больше размера выравнивания, то что? Например sectionSize = 0x78, а sectionAligment = 0x50, т.е. остался без изменений. В таком случае, секция занимала бы в памяти 0xA0 (0xA0 = 0x28 * 0x04) байт.


Какие 0x28 * 0x04 — очевидно же что 0x50 * 2 — выравнивание на то и выравнивание, что фиксирован размер блока и если 0x78 не влезает в 0x50 — процедура вычисления будет выглядеть на сишечке примерно (0x78 / 0x50 + 1) * 0x50. Откуда здесь всплыло 0x28 из первого примера неясно. Ошибка вводящая в заблуждение по поводу выравнивания имхо(особенно для неокрепших).

Дальше читаю. Если найду ещё — напишу…
Вот сейчас как раз понадобилось, но оказалось — это не стандарт даже 17. И конструкции вида
template<typename CharT, CharT ...String>
constexpr str<String...> operator"" _s()
{
    return str<String...>();
}
например msvc не поддерживает — печаль
Ну нельзя быть таким прямолинейным — есть такое понятие «переносный смысл», а Вы, ей богу, пытаетесь в прямом смысле найти хвост, у того кого нарекли обезьяной. Естественно я не имел ввиду, что майнеры грабят и убивают. Да и преступления братков — это всего лишь следствие, а не причина.Причина была в безудержном стремлении к наживе(чувствуете параллель), настолько безудержном, что люди переступали через законы и судьбы, потому что у многих из них не было морали как таковой. Отсутствие морали и есть, как мне кажется, причина всего того, что творилось в то время.

А с гречкой — сравнение некорректное… совсем… Во первых, дефицит гречки был искусственный, а в случае с видеокартами вполне себе настоящий. В искусственном дефиците — сначала всем говорят, что дефицит есть — а потом он возникает, в естественном же — он сначала возникает, а потом уже все про него начинают говорить. Во вторых — в ситуации с гречкой, был намеренно сделан запланированный вброс, который впоследствии создал резонанс. Это была вполне себе обдуманная акция. Люди, которые этот вброс сделали, очевидно, также не обладают достаточной моралью, кстати. И да..., бабушек в этом случае, действительно, обвинять нельзя — нужно обвинять людей, которые этот вброс сделали, и умысел их был явно направлен не на достижение блага для общества.

Исходя из всего вышеупомянутого — получается, что Вы фактически предлагаете обвинить математиков — «ах какие нехорошие математики, придумали окаянную криптовалюту и бедный люд подсадили на иглу майнинга» — это смешно!

В этой ситуации виноваты именно «фермеры», которые в бреду своей майнинговой лихорадки, хоть и косвенно, но таки нанесли ущерб простым обывателям. Опять проблема с моралью, очевидно. И вместо того, чтобы распространять криптовалюту по миру — сосредоточили её львиную долю вокруг нескольких крупных майнинговых ферм. Они убивают идею криптовалюты. Она становится бессмысленна.
Да пОлно Вам… Раз Вы это написали — Вы прекрасно поняли, о чем я говорил и не надо муссировать. Ну если уж переходить на уровень Вашего комментария — у меня есть знакомые и пауэрлифтеры и бодибилдеры, спокойные, адекватные ребята(по крайней мере те, кого я знаю). Вот именно они никак не ассоциируются с вышеупомянутыми личностями. А вот в темные времена, бодрые панцанчики, именно наращивали свой авторитет захватывая новые районы, что негативно сказывалось на доходах и спокойствии(а возможно и жизни) нормальных людей… это видели мои глаза. И действительно, сейчас захожу я в магазин… и вижу видеокарта, которая стоила 10к руб уже 15 стоит. Я не геймер, я всего лишь разработчик, изредка снимающий напряжение после трудового дня, меня вполне устроила бы среднячковая карта, и мысля рационально переключаюсь на вторичный *всем известный ресурс*… и что ж я созерцаю — ассортимент огромен… вот только состояние у всего у этого сомнительное. На самом деле я видел частично выгоревшие цепи питания, высохшие конденсаторы(как будто им 100 лет), поплывшие чипы, где даже реболл не помогает т.к дороги начали отслаиваться… Вы можете возразить — «вот, проклятые производители подняли цены», ну извините это рынок — вакуум заполняется либо товаром либо деньгами, у нас второй вариант — поэтому я, в какой-то мере, не виню вендоров — дефицит ведь, надо как-то выкручиваться. История классная конечно..., но объективно, при всём при этом, у меня всё же из кармана пропали эти 5к — отсюда и сравнение. Вот раньше я мог даже не задумываться и купить себе или чаду, что-нибудь на вторичке — где карточки, даже после заядлых(а может быть особенно после) геймеров, были чистенькими, проверенными, да они даже свои профили под разные игрушки тебе зальют, только бы апгрейдить машинку себе на что-то более топовое — отношение другое… и к девайсам и к людям

PS
сорри, немного эмоционально, но всё же

А я и не говорю про саму идею. Наоборот я восхищаюсь ей. И да, нормальный айтишник не будет сотнями скупать видеокарты, а говорил я именно об этом… и именно таких майнеров я не терпеть не могу.

Да сравнение грубовато, но я имел ввиду зарабатывания денег какой то грубой силой, чисто наращивая мощности… Я противник таких подходов(простое наращивание мускулов), ибо если двигаться в этом направлении, ничего хорошего не будет

Как же майнеры достали меня! Я не хочу больше читать про ваши блокчейны и пр! Мало того, что гениальную идею криптовалюты испоганили своими фермами, дык из-за вас ещё и железо во всем мире дорожает. Даже бу страшно покупать, потому что "а вдруг из под майнера". Это безумие какое-то… сравнимое с игровой зависимостью в казино или игровых автоматах. Стремление сидеть в ожидании пассивного дохода, можно раскрыть куда более интеллигентным и интересными способами. Из всех айтишников, если проводить параллели с обычными людьми, то майнеры попадают в категорию некой гопоты ну или братков из 90х...

Очень годное расширение. Мне, как олдовому крестовику, оно очевидно и понятно и приятно. Но есть один нюанс — уже сейчас ко мне приходят выпускники, которым тяжело начинать писать на крестах для энтерпрайза с учетом всех нововведений в язык. Мдя… язык был и так сложным, а становится с каждым годом всё сложнее — порог вхождения для неокрепших студенческих мозгов всё выше… как бы не скатится к тому, что через н лет люди просто будут пугаться влезать во всё это — типа «Язык программирования С++ в 10 томах. Том первый».

ПС
Уже много лет грызет меня эта мысль, что вот так вжух и в один прекрасный момент не смогу найти годных сотрудников крестовиков. Прям фобия.
У моей жены(да и у меня один раз было) иногда сбрасываются открытые вкладки — это ужас для нее. Т.к. она в ит сфере сильно не шарит и закладками не пользуется, а просто открывает кучу нужных её вкладок — так и живет. И вот наступает час икс и она кричит из зала, что «всё пропало». Я бегу — и вижу что действительно нет вкладок — перезагрузка браузера не помогает. При выгрузке браузера в процессах системы vivaldi.exe — нет(это на всякий случай что никакой инстанс не завис), но на всякий случай перегружаю комп — не помогает. Галка в настройках сохранять сессию естественно стоит. Более того этот глюк остается и дальше. Т.е. если после этого опять наоткрывать вкладок и перезапустить вивальди — сессия не восстановится! Причем это творится до обновления — как только браузер обновляется — косяк уходит(ну или мне кажется что из-за обновления), но в один прекрасный момент опять происходит час икс, и бац ждем следующего обновления. Это достало в конец. Единственное, что могу отметить: комп жены постоянно уходит в гибернацию, просто по 10 раз на дню(win7 стоит). Такое ощущение, что в определенный момент вивальди портит свой собственный профиль, а обновление его фиксит до поры до времени.
Дык и не надо ожидать — нужно просто взять более или менее сложный реальный проект(для чистоты эксперимента) с большим обилием стд и проверить его вместе со стандартной библиотекой, ну или на худой конец написать тесты хотя бы со стандартными типами — это не долго, хотя бы ради статьи. Все мы крестовики — и я не говорю про синтетические ситуации — типа перекрытого оператора неравенства != 11. Таких ситуации, которые выстреливают мимо бага одна на миллион. И на 90% этот анализ отразит состояние стандартной библиотеки того или иного компилятора — тем более Ваш PVS анализатор не плохо с этим справляется. А глазками уже можно будет понять баг это или фича или какая-то уникальная ситуация — и если это баг, отразить в статье — вот так как-то…

ПС
Вы создали великолепный продукт, но не нужно надеяться на то, что он за Вас будет и статьи на хабре писать, если Вы заявляете про анализ «Visual C++ 2017 Libraries» нужно ожидать, что люди ждут анализа именно самой главной — т.е. стандартной библиотеки — а что Вы хотели…
99% это MFC/ATL код — мы все знаем как он писался и когда… честно говоря, открывая данную статью надеялся увидеть ошибки в стандартной библиотеке, что гораздо интереснее. Да и используется стд в наше время всё больше и больше нежели умирающие древности типа MFC/ATL.
Ну капец… Вы что сами не помните? В дюке не было 3д моделей(а на видео есть), там спрайты как в первом и вторых думах. Здесь на стенах текстуры качественные со сглаживанием — какое нафиг сглаживание могло быть в 96м.

Вот оригинал:
Вспомнил, blood еще была, та которая с вилами

Information

Rating
Does not participate
Registered
Activity