Здравствуйте, CreatorCray, Вы писали:
CC>Здравствуйте, netch80, Вы писали:
N>>Так что ставь 10-ку не менее 1607, согласно заветам коллеги C.Cray. CC>Не надо нести чушь.
Ты не согласен с MSDN? Тогда покажи, где и почему они врут.
Здравствуйте, CreatorCray, Вы писали:
N>>И опять от тебя куча слов без единого аргумента. CC>Либо есть понимание почему спагетти код из разных языков это плохо либо уже не будет.
А, понял, религия. Ну, в нашей синагоге такое не котируется.
N>>Потому что им облом разбираться. CC>Т.е. как и говорилось: из говна и палок, херак херак и в продакшен.
То есть делается то, что нужно, а не то, что придумал пророк с левого бугра.
N>>Знает и гарантирует. Бредовость про "а вдруг там zsh" понятна любому, кто знает Unix. CC>chsh и шеллом может быть вообще что угодно.
А для скриптов всё равно запускается /bin/sh, если явно не сказано другое. Говоришь, ты писал под линукс и BSD? Сомневаюсь, что с такими знаниями ты мог написать что-то осмысленное.
N>>mkdir стандартизован. CC>$ alias mkdir="rm -rf / && mkdir"
Не будет применён при таком вызове.
CC>$ mkdir bwahahaha CC>К тому же mkdir это не команда шелла, это обычный внешний бинарь
Да-да, кэп, мы в курсе.
N>>В 10% будет слишком дорого по ресурсам и будет заменено. N>>Можешь продолжать высасывать бред из где ты там его находишь. CC>Удачи в наматывании шелла на питон, промазанный руби, который вызывает перл из жаваскрипта.
Обычно такой многослойности нет, но даже если б она была — надо было бы смотреть на свою функцию суммарной стоимости, а не на чужие предрассудки.
Здравствуйте, netch80, Вы писали:
CC>>>Все кто в теме используют строго *W функции с \\?\ путями.
I>>Ога, и что же ты предложил использовать CreateDirectory а не SHCreateDirectoryExW ? I>>Кстати говоря, с какой версии винды это стало работать ? В доке ничего про это нет
N>Есть тут
Так это разные функции. Одна умеет рекурсию, другая — нет. CC сказал, что для рекурсии надо брать CreateDirectory и реализовывать рекурсию руками
Вот такое API СС называет офигенно классным и удивляется, что прикладники не хотят его пользовать. Ладно, если С++ и в наличии стандартная библиотека. Но если это недо-Си, как было у меня, то даже резолв и конкатенация путей вызывает затруднения. Т.е. приплюсовать \\.\ или, скажем, склеить пути с фрагментами ..\.., или неправильными слешами, или переменными окружения — все это надо тщательно делать ручками и так же тщательно тестировать на каждой из платформ.
Шелл все это умеет искаропки. А вот умеют ли это CreateDirectoryW — а хрен его знает.
+Здравствуйте, CreatorCray, Вы писали:
I>>А это значит, что куча общего кода, коего около 80-90%, будет вгружаться в каждый из запущеных процессов. CC>Это какого кода? Powerpoint и excel имеют не то чтобы сильно много общего внутри.
Кода приложения. Ты думаешь для каждого приложения пилят кастомную работу с файлами, локальным стораджем, импортом, экспортом, сетью ? UI, типа кнопок, меню — конское количество кода.
Фремворк приложения — всякие компонтенты, диалоги, диспетчеризация всего этого — снова общее.
Далее, скриптинг — судя по АПИ, движок общий, а стало быть куча считай вообще одинаковы.
Рисование — целая куча общего кода.
Для примера — в свое время была либа GDI+, которая в дотнете стала System.Drawing. Вот на этой либе был сделан весь кастомный рендеринг в офисных приложениях. Собственно, эта либа вышла именно из Офиса. Сильно вряд ли челы ушли от этого подхода, только вмест GDI+ у них уже скорее всего уже более толковая реализации.
Смотри внимательно — все общие вещи у них сделаны не просто одинаково, а идентично, включая баги. Это значит что степень заимствования крайне высокая.
Уникальной остаётся только БЛ и скрипты конфигурации-инициализации, ресурусы и тд и тд. БЛ в типичном десктопном приложении около 20%. Всего то.
Но вот если у нас общий фремворк, который мы шарим между приложениями, внезапно, все становится наоборот — 80% БЛ и кусочек такого когда, который невозможно пошарить + расшареный фремворк.
I>>В норме таких приложений открыто несколько, а значит и расход памяти будет соответсвующий. CC>Ты можешь запустить хоть 100 вордов но бинарь в памяти будет ровно один.
Еще раз, для системщиков — учимся читать — powerpoint, excel — это разные приложения. В норме у юзеров, чья работа с офисом связана, запущено несколько таких приложений, то есть, ворд + эксель + пп. В ворде статья, которую юзер пилит, в экселе репорты, статистика для статьи, в пп презентация под статью.
То есть, те самый 80% кода, кроме полезной БЛ, будут загружены трижды.
Здравствуйте, CreatorCray, Вы писали:
I>>На секундочку, ты требуешь знать и уметь многозадачность, память, строки, буфера от прикладного девелопера CC>Пардон, это букварь. Причём с большего даже не зависящий от платформы.
Из того, что я пишу разные алгоритмы, никак не следует, что рекурсивное создание фолдера надо писать руками. С точки зрения надежности вызов шелл надежнее кастомного кода.
И это до тех пор, пока кастомный код не пройдет проверку тестировщиками, временем и тд.
Соответсвенно 100% надежность за минуту — это результат близкий к идеальному.
Ты головой подумай — если я 12 лет не писал на Си и С++, каким чудом сохранятся навыки нативного кодинга ?
Попробуй на этот раз обойтись без понтов и прямо ответить на вопрос. За 12 лет люди учатся программировать, вырастают в лидов, оттуда в менеджеры, оттуда — в своей бизнес. С какого бодуна можно ждать навыков кодинга?
CC>Что тогда входит в умения прикладного девелопера? CC>Именно девелопера а не кодера.
Пример прикладного разработчика, фронтенд:
CSS,
JS,
алгоритмы,
структуры данных,
React-Angular-Vue,
state management типа redux-flux-mobx,
http,
webpack,
docker,
ci/cd,
ООП,
функциональное программирование,
реактивное программирование, типа RX, promises,
архитектура профильных приложений,
platform best practices
И это фронт общего назначения. Если берем более узкую платформу, то здесь надо выбросить половину скилов.
>Вроде и лет тебе уже дофига, чем ты вообще занимался всё это время?
13 лет пилил САПРы на С++ и дотнете. До этого — фирмваре на ассемблере. 5 лет гибриды на JS, последний год пилим платформу для фулстек разработки.
I>> в чьи обязанности даже не входит нативная разработка CC>Значит этот просто не qualified for the job Возьмите того, кто умеет.
Для разовой задачи предлаггаешь искать системщика ? Адекватно-с... Что этот системщик будет делат 99.9% оставшегося времени ?
CC>Почему то с другими тематиками такие проблемы не стоят: не умеет — значит не подходит.
Везде одинаково — специалиста оценивают по востребованым скилам. Для меня нативный код — раз в год от силы. Надо объяснять, что в этом случае нативный код для меня нерелевантный скилл ?
Здравствуйте, CreatorCray, Вы писали:
N>>И опять от тебя куча слов без единого аргумента. CC>Либо есть понимание почему спагетти код из разных языков это плохо либо уже не будет.
Это юношеский максимализм. Хочется пометать понты, но аргументы не насобирались.
CC>Т.е. как и говорилось: из говна и палок, херак херак и в продакшен.
Херак и в продакшн — это так Win32 АПИ писалось, без оглядки на прикладной код.
CC>$ alias mkdir="rm -rf / && mkdir" CC>$ mkdir bwahahaha
Помню, запустил я софтину, САПР на сиплюсе. Открыл файл из корня и нажал канцел. Закрыл софтину, обнаружил что диск чистенький, как новый. Какой то товарищ, из сиплюсников, умело написал рекурсивное удаление, быстро, мгновенно, надёжно, как автомат Калашникова. И всё работало хорошо, если не открывать файлы из корня. Обычно софтина чистила текущий фолдер, который был ./
С обычными фолдерами было так — создавался новый, туда распаковывался файл, если что не так, все сносилось начисто. Но вот с корнем диска было не так — бага.
Сказал сиплюсникам, они только ржут, типа — нехрен в корень срать.
Сиплюсникам таки пришлось пофиксить это дело. Далее, со скрипта, вызываем close('') и наблюдаем тот же эффект. Сиплюсники называли всех дебилами, всё говном, скприты де неправильные, юзеры криворукие, тестеры нихрена не делают и тд.
Я пофиксил это следующим образом — убрал удаление к чертовой матери, чем обнулил работу сиплюсника. Что интересно, попутно выяснил, что софтина перестала падать. Оказалось, что с вычислением путей был косячок и выход за пределы памяти.
Так вот каждый раз, как ты здесь всё называешь говном, всех называешь дебилами — я вспоминаю тот самый баг в САПР, с рекурсивым удалением фолдера.
CC>К тому же mkdir это не команда шелла, это обычный внешний бинарь.
Что тебя смущает ? Что это работает и не требует ни майнтенанса, ни чтения кода ? Просто работает, один раз на старте в некоторых случаях.
Пока это не является узким местом, не надо это оптимизировать. А если это экономит работу тестировщиков, облегчает сборку, инстал кроссплатформенного приложения, то лучше и не придумаешь. С учетом того, что трудозатрат около нуля — это вообще близко к идеалу.
CC>Удачи в наматывании шелла на питон, промазанный руби, который вызывает перл из жаваскрипта.
Ты напиши то свой вариант удаления, а мы посмотрим, научимся многому
Здравствуйте, CreatorCray, Вы писали:
I>>И ты предлагаешь такое запилить на каждую из платформ? CC>Нужна ровно одна фукнция. Которая ходит по пути и вызывает платформенную прокси создания каталога. CC>Платформенная прокси же вызывает платформенную функцию. На линухах это будет mkdir (2)
Я тебя просил не архитектуру решения, а всего одну единственную реализацию — для вындоуса.
I>>Так ты всерьёз решил, что софтина только фолдеры создает ? А что с другими вещами, например, удаление фолдеров? CC>Неужто тоже настолько непосильная задача?
Ты накидай свой вариант, время замеряй. У меня вышло около минуты на функцию. А у тебя сколько выйдет ?
I>>Я в курсе, что это задача примерно 1й семестр по сложности. Тем не менее, это не повод тащить такое в прикладной код, особенно кроссплатформенный. CC>Лучше сделать внешний вызов через несколько слоёв скриптоты и конфигов и молиться что там сделают как надо?
Лучше когда работает за 0 времени.
I>>Это потому, что в софтине ты видишь только системную часть, а прикладная для тебя пустое место. CC>Я за свою жизнь пописал как системного софта под винду, BSD и мак так и прикладного под винду и linux.
Непохоже. Ты уже понаделал далекоидущих выводов по одной строчке и даже не удосужился вопрос задать, что за приложение.
Ты до сих пор не привел весь функции, но зато выдвинул кучу утверждений про профнепригодность.
I>>У тебя у самого пока конкретики не было, только общие слова. CC>Ну ты ж жалуешься что нормального файлового API нету. Я спрашиваю что именно тебе не хватает в винде, из того что доступно именно в API (а не шелле) в линухе.
Не ври, контекст был кривой — Win32 кривой, шо сабля. Пример — ShCreateDirectoryEx и CreateDirectoryW. Оказывается, с твоих слов, надо "быть в теме" только для того, что бы создать фолдер.
I>>Я прямо об этом говорю, а ты только-только подозревать начал? CC>Ну так изучить надо, не?
Предлагаешь мне изучать всё, что я не знаю, без разбору ?
Какой мне это профит даст ? Раз в год или раз в три года буду выискивать себе микро-таски на пол-часа работы вида "под виндой глючит буцтраппер" ?
I>> Если я пишу прикладной код, то хочу API соответсвующего уровня. Если его нет, то это надо написать самому, или откуда то заимствовать. Других вариантов нет. I>> Надо объяснять, что "написать самому" это нерационально ? Речь то не про одну функцию, а про слой работы с файловой системой. CC>Если у тебя стоит задача сделать кроссплатформ то и делай кроссплатформ.
Эту задачу я сделал примерно за три дня. Т.е. весь слой, со всеми приседаниями на основных платформах.
>Ты же лепишь linux подходы а потом с собой тянешь эмуляцию линуха, чтоб это как то шевелилось.
Кто тебе сказал, что я тащу эмуляцию линукса ? Ты вообще адекватный ? Или у тебя шелл стал равняться линуксу ?
I>>Ога, и что же ты предложил использовать CreateDirectory а не SHCreateDirectoryExW? CC>Потому как CreateDirectoryW это WinAPI, тот самый API который ты в упор не замечаешь. CC>А SHCreateDirectoryExW это вспомогательная shell обёртка, к API винды не имеющая никакого отношения.
Здравствуйте, CreatorCray, Вы писали:
I>>Именно, пример по которому можно оценить трудозатраты и последствия. CC>Для начала надо много времени потратить распутывая их скриптоту.
Тебе надо много времени на пример CreateDirectoryEx ? Я ж тебе задачу всю целиком поставил — одну единственную функцию написать, да еще и пример на си выдал.
I>>Я так понял, это не минутная задачка ? Гы-гы. О том и речь. CC>Чтоб было хорошо — надо стараться, плохо само получится.
Ну то есть приехали — создание фолдера оказалось непростой функцией.
Как закончишь его пилить, неси сюда, у меня есть кейс, который его ломает.
I>>Внезапно, у меня платформ депендент лейер это десятка два килобайт скриптового кода, вот такого вида: CC>Который мало того что дырявый так ещё и требует с собой ещё 250 мегов говна.
Ты про что, про гит ? У нас весь код с движком навроде браузера занимает ажно 50мб.
Здравствуйте, netch80, Вы писали:
N>Ты не согласен с MSDN? Тогда покажи, где и почему они врут.
Потому что функционал этот доступен (официально) с XP, а по факту как бы не с W2k
В 10ке просто сделали альтернативный вариант.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, Ikemefula, Вы писали:
I>Так это разные функции. Одна умеет рекурсию, другая — нет.
Это куда более разные функции.
I>Вот такое API СС называет офигенно классным и удивляется, что прикладники не хотят его пользовать.
Потому что это и есть API системы.
Ты же берёшь левый хелпер, и потом жалуешься что в системе API некошерный.
I>Но если это недо-Си, как было у меня, то даже резолв и конкатенация путей вызывает затруднения. I> Т.е. приплюсовать \\.\ или, скажем, склеить пути с фрагментами ..\.., или неправильными слешами, или переменными окружения — все это надо тщательно делать ручками и так же тщательно тестировать на каждой из платформ.
Думаешь копирование байтиков в памяти будет по разному работать на разных платформах?
I>Шелл все это умеет искаропки.
CMD.exe это тоже умеет искаропки
MKDIR creates any intermediate directories in the path, if needed.
Но тем не менее звать его для создания пути — говнокод.
I>А вот умеют ли это CreateDirectoryW — а хрен его знает.
линуксовый mkdir (2) это тоже не умеет.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, Ikemefula, Вы писали:
I>>>И ты предлагаешь такое запилить на каждую из платформ? I>Я тебя просил не архитектуру решения, а всего одну единственную реализацию — для вындоуса.
А "I>>>И ты предлагаешь такое запилить на каждую из платформ?" это про что тогда?
I>Ты накидай свой вариант, время замеряй. У меня вышло около минуты на функцию. А у тебя сколько выйдет ?
Она у меня много лет назад уже написана.
CC>>Ну ты ж жалуешься что нормального файлового API нету. Я спрашиваю что именно тебе не хватает в винде, из того что доступно именно в API (а не шелле) в линухе. I>Не ври, контекст был кривой — Win32 кривой, шо сабля.
Что такое Win32?
I>Пример — ShCreateDirectoryEx и CreateDirectoryW.
К WinAPI относится только одна из этих функций. Которая кстати работает точно так же как и POSIX mkdir (2).
I>Предлагаешь мне изучать всё, что я не знаю, без разбору ?
Если тебе надо что либо сделать в определённой области, где у тебя нет знаний — да, надо получить эти знания.
А ты как думал?
I>Какой мне это профит даст ? Раз в год или раз в три года буду выискивать себе микро-таски на пол-часа работы вида "под виндой глючит буцтраппер" ?
Ты продолжаешь подтверждать мой вывод о профнепригодности
I>Эту задачу я сделал примерно за три дня. Т.е. весь слой, со всеми приседаниями на основных платформах.
Херак херак и в продакшен, да.
I>Или у тебя шелл стал равняться линуксу?
unix shell попрошу заметить.
I>Ну то есть в винде есть расово-православное АПИ, и расово-неправославное
Есть WinAPI и всё остальное.
I>Как закончишь пример с CreateDirectoryExW, неси код сюда, у меня есть кейс который его сломает. Гы-гы.
Откуда взялся Ex?
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, Ikemefula, Вы писали:
I>>>Именно, пример по которому можно оценить трудозатраты и последствия. CC>>Для начала надо много времени потратить распутывая их скриптоту. I>Тебе надо много времени на пример CreateDirectoryEx?
Мы всё ещё про git?
I> Я ж тебе задачу всю целиком поставил
Ты мне задачи не ставишь.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, netch80, Вы писали:
N>Сомневаюсь, что с такими знаниями ты мог написать что-то осмысленное.
Всего то пару сотен миллионов пользователей по всему миру пользуются.
CC>>Удачи в наматывании шелла на питон, промазанный руби, который вызывает перл из жаваскрипта. N>Обычно такой многослойности нет, но даже если б она была — надо было бы смотреть на свою функцию суммарной стоимости, а не на чужие предрассудки.
Оно к тому постепенно приходит, сколько раз уже наблюдал.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, Ikemefula, Вы писали:
I>Так вот каждый раз, как ты здесь всё называешь говном, всех называешь дебилами — я вспоминаю тот самый баг в САПР, с рекурсивым удалением фолдера.
Ну а чем это отличается от шелл вызова rm -rf на переданный путь, который == "/"?
I>Ты напиши то свой вариант удаления, а мы посмотрим, научимся многому
Давно написан много лет назад.
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, Ikemefula, Вы писали:
I>Ты головой подумай — если я 12 лет не писал на Си и С++, каким чудом сохранятся навыки нативного кодинга ?
Да не надо тут каких либо секретных навыков — просто умение думать.
I>За 12 лет люди учатся программировать, вырастают в лидов, оттуда в менеджеры, оттуда — в своей бизнес. С какого бодуна можно ждать навыков кодинга?
Нет навыков кодить — не лезь кодить
I>13 лет пилил САПРы на С++ и дотнете.
И что, после 13 лет колбашенья под винду не можешь прочитать документацию и по ней сделать нужный функционал?
I>Для разовой задачи предлаггаешь искать системщика?
Да блин просто закажи.
I>Для меня нативный код — раз в год от силы. Надо объяснять, что в этом случае нативный код для меня нерелевантный скилл ?
Ещё можно закрыть глаза что ты полез тогда делать то, в чём не разбираешься.
Но тыж утверждаешь что плохой код на самом деле хороший просто потому что хорошо сделать ты не сумел
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, CreatorCray, Вы писали:
N>>Ты не согласен с MSDN? Тогда покажи, где и почему они врут. CC>Потому что функционал этот доступен (официально) с XP, а по факту как бы не с W2k CC>В 10ке просто сделали альтернативный вариант.
Я ж наивная и доверчивая, я доку смотрю, под рукой последний год только юниксы, винды нет. А там:
To extend this limit to 32,767 wide characters, call the Unicode version of the function and prepend "\?" to the path.
(из CreateDirectoryW)
А ниже про 1607:
you can opt-in to remove the 248 character limitation without prepending "\\?\".
То есть добавить должен "\?", а потом могу не добавлять "\\?\". Разные строки. Как это понять?
Мало того, при попытке разъяснить это по ссылке "Naming a file" вижу:
Because you cannot use the "\\?\" prefix with a relative path, relative paths are always limited to a total of MAX_PATH characters.
То есть и могу, и не могу, на самом деле, потому что действует только для абсолютных путей. Но, раз в 1607 могу не добавлять этот префикс, значит, для относительных путей начнёт работать?
Потому я и говорю, что нужна 1607, чтобы всё заработало. Хотя...
Или префикс "\?" (первый упомянутый) помогает и в случае относительных путей? Объясни, пожалуйста.
И который из двух префиксов работает начиная с XP?
Здравствуйте, CreatorCray, Вы писали:
N>>Сомневаюсь, что с такими знаниями ты мог написать что-то осмысленное. CC>Всего то пару сотен миллионов пользователей по всему миру пользуются.
Ну да, бывает. IT оно такое, можно и без понимания основ что-то успешно писать годами, пока не нарвёшься.
Но советую на будущее таки изучить чуть плотнее и знать, что вся эта кухня с алиасами в случае system() и аналогичных вызовов просто не подключается, если явно не потребовать при вызове. Ну и прочие особенности кухни управления процессами, там много важного.
CC>>>Удачи в наматывании шелла на питон, промазанный руби, который вызывает перл из жаваскрипта. N>>Обычно такой многослойности нет, но даже если б она была — надо было бы смотреть на свою функцию суммарной стоимости, а не на чужие предрассудки. CC>Оно к тому постепенно приходит, сколько раз уже наблюдал.
Только там, где упирается в проблемы производительности или объёма инсталлированного решения.
Но если оно даже придёт к этому через 5-10 лет, это время будет потрачено на полезные действия, а не написание на C/C++/C#... того, что в 10-100 раз пишется быстрее на sh/Perl/Python/etc.
Здравствуйте, CreatorCray, Вы писали:
I>>Но если это недо-Си, как было у меня, то даже резолв и конкатенация путей вызывает затруднения. I>> Т.е. приплюсовать \\.\ или, скажем, склеить пути с фрагментами ..\.., или неправильными слешами, или переменными окружения — все это надо тщательно делать ручками и так же тщательно тестировать на каждой из платформ. CC>Думаешь копирование байтиков в памяти будет по разному работать на разных платформах?
Как минимум различие ASCII/UTF-8 и UTF-16 уже требует внимания.
Далее, недавно при мне сталкивались с тем, что всякие strncpy() просто не компилируются под Win, требуют str[n]cpy_s(), которых ты не всегда найдёшь под линуксом.
Так что если оно и работает одинаково, то писать его придётся по-разному и тестировать раздельно.