русский
Germany.ruForen → Архив Досок→ Programmierung

.NET und C# ohne Web?

4812   7 8 9 10 11 12 13 14 15 16 17 alle
Программист коренной житель12.06.21 21:35
NEW 12.06.21 21:35 
in Antwort wasja-de 12.06.21 16:18
Ну правильно, в JSON есть поля{"AAA":{...},"BBB":{...},"CCC":{...}}

Проблема в том, что AAA обязательно должно присутствовать и значение должно быть числовое, BBB - опциональное поле и тип строка, но не больше 100 символов, CCC - обязательное поле и перечисление, а есть еще DDD - bool и еще 100 других полей. Можно конечно все это описать в PDF, но кто их читает? ;) Я уж не говорю о контроле, т.к. в какой-то момент команда A решает, что поле BBB теперь обязательное, рассылает всем PDF и валидуруй каждое поле в кучном режиме :)


это на сколько идиотами должны быть разрабы в командах, если они не договорились, что будет лежать в форматах для AAA, BBB, CCC? Тут валидация адекватности разрабов важна, а не городить "прогграммирование ради программирования".

Ну вот мы например фирма в Германии даем спецификацию фирме в Японии. Мы друг с другом вообще не разговариваем, в лучшем случае диалог есть при посредничестве клиента. В хорошем варианте, клиент передаст нам е-мыл другой конторы и мы сможем запросить их спеки и отправить свои. Но обычно мы даем спеки клиенту, а клиент пересылает их дальше. Так что никаких договоренностей в большинстве случаев нет.

Да и в пределах одной фирмы договоренности есть далеко не всегда. Кто-то просто предоставляет интерфейс и все.


Все так и не понимаю для чего валидация нужна, кроме надуманных случаев когда команды друг другу создают проблемы. Может я все-таки что-то упустил и есть какой-то реально нужный пример?

XSD файл - это контракт (в терминах C# это интерфейс) по которому общаются (программно) несвязанные меджу собой модули. Имея на руках XSD ты всегда можешь проверить соответствует ли твой код заданному контракту. Если два модуля не работают друг с другом, то всегда можно определить почему. При этом определить можно в автоматическом режиме.

Murr патриот12.06.21 22:45
Murr
NEW 12.06.21 22:45 
in Antwort wasja-de 12.06.21 20:45
распарсить и проверить

-----

Уточни, плс, что именно и как ты собираешься проверять?

И второй вопрос - как именно ты собираешься сегодня написать проверку для того что тебе дадут завтра или через год или через пятилетку и в проекте исходники которого тебе не даюt?


alex445 местный житель15.07.21 16:45
NEW 15.07.21 16:45 
in Antwort Murr 12.06.21 22:45, Zuletzt geändert 15.07.21 16:50 (alex445)

Касательно ямл и его валидации - можно юзать чужие схемы валидации для ямла

xsd - YAML Schema Validation? - Stack Overflow


В ямле удобно хранить данные - куда как более читаемо и меньше размер. Не раз уже встречал ямл как основной формат для хранения данных довольно больших размеров (десятки килобайт).


В Unity префабы хранятся в ямл - пример части файла ниже. Представьте, как это было бы всё нечитаемо, если бы XML-тегами всё было обрамлено.


alex445 местный житель15.07.21 16:56
NEW 15.07.21 16:56 
in Antwort alex445 15.07.21 16:45, Zuletzt geändert 15.07.21 16:59 (alex445)

Eщё немного сравнений




Network Devices & Programmability - Posts | Facebook


alex445 местный житель15.07.21 17:02
NEW 15.07.21 17:02 
in Antwort alex445 15.07.21 16:56, Zuletzt geändert 15.07.21 17:03 (alex445)

Меня, например, всегда напрягала многословность разметки в XAML (WPF, UWP, Silverlight) по сравнению с CSS. Описываешь стили там и там - в XAML какое-то бешеное накручивание специальных значков. Сделали бы описание интерфейса в Дотнете на основе ямл или хотябы джейсон.

Программист коренной житель15.07.21 17:27
NEW 15.07.21 17:27 
in Antwort alex445 15.07.21 16:56

1) В XML все эти параметры можно записать в виде аттрибутов. Я понимаю, что это не итак интересно для сравнения :)

2) В XML можно отобразить такую структуру:

<Servers>
    <HttpServer name="..." ... />
    <FtpServer name="..." ... />
    <SomeOtherServer name="..." ... />
</Servers>

Продемонстрируй, как такая структура будет выглядеть в YAML?


Меня, например, всегда напрягала многословность разметки в XAML (WPF, UWP, Silverlight) по сравнению с CSS. Описываешь стили там и там - в XAML какое-то бешеное накручивание специальных значков. Сделали бы описание интерфейса в Дотнете на основе ямл или хотябы джейсон.

Ну вот простенький XAML:

  <Grid>
    <Grid.RowDefinitions>
      <RowDefinition />
      <RowDefinition Height="33" />
    </Grid.RowDefinitions>
    <TextBox Grid.Row="0" TextWrapping="Wrap" AcceptsReturn="True" Text="{Binding MessageTemplates, Converter={StaticResource ObservableCollection2StringConverter}}" />
    <Grid Grid.Row="1">
      <Grid.ColumnDefinitions>
        <ColumnDefinition />
        <ColumnDefinition />
        <ColumnDefinition Width="100" />
      </Grid.ColumnDefinitions>
      <CheckBox Grid.Column="0" Content="Convert to HEX" IsChecked="{Binding ConvertToHEX}" Margin="5" VerticalAlignment="Center" />
      <CheckBox Grid.Column="1" Content="Open in Explorer" IsChecked="{Binding OpenExplorer}" Margin="5" VerticalAlignment="Center" />
      <Button Grid.Column="2" Content="Generate" Command="{Binding Generate}" Margin="5" VerticalAlignment="Center" />
    </Grid>
  </Grid>

покажи как бы такая структура выглядела бы в YAML. Чтобы было проще, названия аттрибутов с точкой можешь считать как одно слово.


Murr патриот15.07.21 20:09
Murr
NEW 15.07.21 20:09 
in Antwort alex445 15.07.21 16:45

В ямле удобно хранить данные - куда как более читаемо и меньше размер.

------

Наименьший размер данных будет у файла в котором нет избыточной информации - имен полей, разделителей и т.п.

Для машины - без разницы насколько он читаемый.

А для человека в любом случае нужен подходящий инструмент. Потребовать чтобы он представлял данные в удобоваримом виде - не проблема.


как это было бы всё нечитаемо, если бы

------

Угу... вот только один моментик - ссылка небольшой ХСЛТ добавленная в ХМЛ предоставит точно такое же вью... все в рамках стандартов.

А что и куда надо добавить в твоем варианте Я не знаю.

alex445 местный житель15.07.21 23:01
NEW 15.07.21 23:01 
in Antwort Программист 15.07.21 17:27

2) В XML можно отобразить такую структуру:

<Servers>
    <HttpServer name="..." ... />
    <FtpServer name="..." ... />
    <SomeOtherServer name="..." ... />
</Servers>

Продемонстрируй, как такая структура будет выглядеть в YAML?

Это зависит от того, какие объекты вы сериализуете в XML. Скорее всего, они же и в YAML прекрасно сериализуются. Тут, как я понял, коллекция серверов разных типов - значит, скорее всего, эта коллекция хранит элементы некоего базового типа, к которому приводятся унаследованные от него производные типы серверов. В YAML нельзя хранить базовые типы или инфу о конкретном типе элемента в коллекции?


Я, если что, не спец по форматам - просто мне нравится, как выглядит YAML. У XML недостаток в синтаксисе - слишком много условных значков и лишние закрывающие теги - всё это сильно снижает читаемость.

alex445 местный житель15.07.21 23:14
NEW 15.07.21 23:14 
in Antwort Программист 15.07.21 17:27, Zuletzt geändert 15.07.21 23:19 (alex445)
Ну вот простенький XAML:


  <Grid>
    <Grid.RowDefinitions>
      <RowDefinition />
      <RowDefinition Height="33" />
    </Grid.RowDefinitions>
    <TextBox Grid.Row="0" TextWrapping="Wrap" AcceptsReturn="True"
        Text="{Binding MessageTemplates, Converter={StaticResource ObservableCollection2StringConverter}}" />
    <Grid Grid.Row="1">
      <Grid.ColumnDefinitions>
        <ColumnDefinition />
        <ColumnDefinition />
        <ColumnDefinition Width="100" />
      </Grid.ColumnDefinitions>
      <CheckBox Grid.Column="0" Content="Convert to HEX" IsChecked="{Binding ConvertToHEX}" Margin="5" VerticalAlignment="Center" />
      <CheckBox Grid.Column="1" Content="Open in Explorer" IsChecked="{Binding OpenExplorer}" Margin="5" VerticalAlignment="Center" />
      <Button Grid.Column="2" Content="Generate" Command="{Binding Generate}" Margin="5" VerticalAlignment="Center" />
    </Grid>
  </Grid>
покажи как бы такая структура выглядела бы в YAML. Чтобы было проще, названия аттрибутов с точкой можешь считать как одно слово.


Я не знаю как точно - не знаком подробно с ситнаксисом YAML. Ну примерно так (очень приблизительно):


Grid
    Rows:
    -   Row
        Row
            Height:33
    TextBox
        GridRow:0
        TextWrapping:wrap
        AcceptsReturn:true
        Text
            Binding
                Path:MessageTemplates
                Converter
                    StaticResource:ObservableCollection2StringConverter
        Grid
            GridRow:1
            Columns:
            -   Column
                Column
                Column
                    Width:100
            CheckBox
                GridColumn:0
                Content:Convert to HEX
                IsChecked
                    Binding
                        Path:ConvertToHEX
                        Margin:5
                        VerticalAlignment:Center


Ну и т.д.

alex445 местный житель15.07.21 23:18
NEW 15.07.21 23:18 
in Antwort Программист 15.07.21 17:27

Насколько я понимаю, запись данных что в тегах, что в атрибутах равнозначна. Просто в атрибутах пишутся простые данные, а в тегах - сложные, составные. Но в любом случае это всё свойства представляемого объекта. Просто если данное больше не делится - является элементарным типом, то его можно в атрибут поместить. А если охота его расписать - то через вложенные теги.

Программист коренной житель16.07.21 08:09
NEW 16.07.21 08:09 
in Antwort alex445 15.07.21 23:01
В YAML нельзя хранить базовые типы или инфу о конкретном типе элемента в коллекции?

Это ты у меня спрашиваешь? :) Ты же пропагандируешь YAML. Вот и скажи ;)


Ну и т.д.

Ты же понимаешь, что 18 строк XAMLа ты перевел в 29 строк (не полностью, а полностью было бы 44 строки) на YAML? По-твоему это как-то улучшило читаемость? И тебе не кажется, что это как-то не очень соотносится с "легковестностью" YAMLа?

alex445 местный житель16.07.21 08:50
NEW 16.07.21 08:50 
in Antwort Программист 16.07.21 08:09, Zuletzt geändert 16.07.21 08:51 (alex445)
Это ты у меня спрашиваешь? :) Ты же пропагандируешь YAML. Вот и скажи ;)

А я думал, это мне тут объяснят - тут же типа опытные собрались. )))

Я в нём не разбираюсь, я увидел несколько раз его использование в реальных проектах, почитал, в чём некоторые отличия, но в глубину не копал.


Мне вообще как программисту в нём разбираться особо и не нужно - дайте мне сериалайзер-десериалазйер и нормальный АПИ к нему - больше мне ничего не нужно. Нафига мне лезть в чёрные коробочки, если они (если!) будут нормально работать?

alex445 местный житель16.07.21 08:57
NEW 16.07.21 08:57 
in Antwort Программист 16.07.21 08:09, Zuletzt geändert 16.07.21 09:05 (alex445)
Ты же понимаешь, что 18 строк XAMLа ты перевел в 29 строк (не полностью, а полностью было бы 44 строки) на YAML? По-твоему это как-то улучшило читаемость? И тебе не кажется, что это как-то не очень соотносится с "легковестностью" YAMLа?

Не в строках дело, а в объёме текста, количестве служебных значков, которые все только мешают воспринимать основную информацию. У вас в XML или XAML просто строки длинные - из каждой надо выхватить несколько кусков инфы, очистив её от служебных слов и закорючек. Ямл сразу охватываешь взглядом почти всю страницу и быстро находишь, что нужно. А XML или XAML сначала "парсишь" глазами и головой. Открывая документ XML или XAML на всего лишь одну страницу, мне проще воспользоваться полнотекстовым поиском, чтобы найту нужное слово, а в ямл проще и быстрее глазами. Это если не впадать в крайности.


XML или XAML тоже могут быть достаточно читаемыми - тогда тоже придётся много строчек использовать - каждый атрибут на новой строке. Вот у вас, например, слишком длинная строка получилась и приходится форум горизонтально прокручивать. Но просто посмотрите, сколько лишней инфы находится в типичном XML или XAML при хорошей такой иерархии вложенностей


<DockPanel.Triggers>
      <EventTrigger
        RoutedEvent="DockPanel.MouseEnter">
        <BeginStoryboard>
          <Storyboard>
            <DoubleAnimation
              Duration="0:0:0.100"
              To="1"
              Storyboard.TargetName="descriptionButton"
              Storyboard.TargetProperty="Opacity" />
          </Storyboard>
        </BeginStoryboard>
      </EventTrigger>
      <EventTrigger
        RoutedEvent="DockPanel.MouseLeave">
        <BeginStoryboard>
          <Storyboard>
            <DoubleAnimation
              Duration="0:0:0.100"
              To="0"
              Storyboard.TargetName="descriptionButton"
              Storyboard.TargetProperty="Opacity" />
          </Storyboard>
        </BeginStoryboard>
      </EventTrigger>
    </DockPanel.Triggers>


Блин, подсветки нет. Вот с подсветкой видно (фиолетовый цвет), что на всю кучу инфы всего несколько значений, которые важны и нужно прочитать. Полезность текста в XML или XAML где-то процентов 20-30, остальное - мусор.



Как вы сюда код вставляете с моноширинным текстом и сохранением форматирования (отступов и прочего)?

Программист коренной житель16.07.21 10:23
NEW 16.07.21 10:23 
in Antwort alex445 16.07.21 08:57
каждый атрибут на новой строке.

Это ужасно :)


Блин, подсветки нет. Вот с подсветкой видно (фиолетовый цвет), что на всю кучу инфы всего несколько значений, которые важны и нужно прочитать. Полезность текста в XML или XAML где-то процентов 20-30, остальное - мусор.

Полезность не 20-30 процентов ;) Фиолетовый - это только значения, однако имена соответствующих значений тоже важны (и они точно также есть в YAML ;) )

Вся экономия заключается в YAML

GridColumn:0

против в XML

GridColumn="0"

этономия ровно 2 символа :D

А если взять закрывающие тэги, то YAML накладывает ограничение в том, чтобы данные были вывовнены по границе объекта, к которому они принадлежат. Так что съекономили на закрывающем тэге и в 10 раз больше потратили на <TAB> :D

Ну и текстик в 44 строки не так то уж просто прочитать :)


Как вы сюда код вставляете с моноширинным текстом и сохранением форматирования (отступов и прочего)?

1) Нажимаешь кнопку "<>" (рядом с Bold)

2) пишешь текст в блоке <pre></pre>

alex445 местный житель16.07.21 10:36
NEW 16.07.21 10:36 
in Antwort Программист 16.07.21 10:23, Zuletzt geändert 16.07.21 10:50 (alex445)
каждый атрибут на новой строке.
Это ужасно :)

Я не могу нормально читать ваши атрибуты, написанные кучей в одну строку. И когда у вас пустых строк нет между хотя бы блоками вложенностей тегов - типа коллекцию элементов RowDefinitions отделить сверху и снизу пустой строкой. Когда атрибуты каждый на своей строке, то можно и не отделать - вполне и так читаемо. Но когда всё в куче, то хотя бы пустые строки помогли бы. У вас там на экране места мало, чтоли? Я думал, уже у всех стоят минимум 2 моника на 32 дюйма хотя бы 2560х1440. ))


Но это не проблема, если есть автоформатирование при открытии файла. Открываю вашу разметку у себя - автоформат под мои требования. У всех нормальных IDE это давно идёт из коробки.


Полезность не 20-30 процентов ;) Фиолетовый - это только значения, однако имена соответствующих значений тоже важны (и они точно также есть в YAML ;) )

Das ist schon dazu gehört. Я уже прикинул имена тегов в эти 20-30%.


Ямл лучше тем, что просто пустое пространство, которое в Ямл изобилует, гораздо лучше воспринимается и не отвлекает, чем это же пространство, забитое всяким мусором.


Заметьте, как в Ямл хорошо читаются даже тексты без подсветки. В XML без подсветки чёрт ногу сломит.


Так что съекономили на закрывающем тэге и в 10 раз больше потратили на :D

Все табы проставляются автоматически, как и каретки выравниваются при переходе на новую строку - как в XML, так и в YAML. Если нужно начать новый объект и автопростановка поставила слишком много табов - убираешь табы бэкспейсом. Это происходит и в XML, и в YAML редакторах.


Ну и текстик в 44 строки не так то уж просто прочитать :)

Внимание расходуется не на количество строк, а на количество слов и символов, которые нужно "распарсить" головой.



Скука, как же повезло инглишьменам - не надо постоянно язык переключать, когда говорят о своих технологиях!


1) Нажимаешь кнопку "<>" (рядом с Bold)

2) пишешь текст в блоке <pre></pre>


Т.е. я должне вручную напечатать эти теги, да ещё как-то догадаться, что это надо сделать в режиме "<>". И всё равно подсветки не будет? "Гений ты Моцарт, и шутки у тебя гениальные."
https://youtu.be/GUKdwYBi9Rs?t=184

Murr патриот16.07.21 19:41
Murr
NEW 16.07.21 19:41 
in Antwort alex445 16.07.21 08:57

А XML или XAML сначала "парсишь" глазами и головой.

-----

Это аккурат следует из:

Мне вообще как программисту в нём разбираться особо и не нужно

Выше Я писал - в ХМЛ достаточно втиснуть ссылку на ХСЛТишку и можно получить нужную трансформацию.

Правда чтобы это сделать... или хотя бы знать об такой возможности, об "особо и не нужно" надо забыть.

alex445 местный житель21.07.21 23:44
NEW 21.07.21 23:44 
in Antwort Murr 16.07.21 19:41

Ну что, будущее дотнета в области UI - MAUI и Blazor? Остальное можно "забывать"? Готовишься сейчас, а через годик-другой - бум вакансий по MAUI и Blazor?


.NET Multi-platform App UI (.NET MAUI)
a cross-platform UI toolkit announced in May 2020 that originated as a fork of Xamarin.Forms and that can run on Android, iOS, Linux, macOS, Tizen, and Windows. .NET MAUI will run on .NET 6 and later.[25][26][27] The source code is licensed under MIT License and available on GitHub.[28]

Blazor

a free and open-source web framework that enables developers to create Web apps using C# and HTML. Blazor Server apps are hosted on an ASP.NET Core server in ASP.NET Razor format, while Blazor WebAssembly apps are Single-page apps that are downloaded to the client's web browser before running.

https://en.wikipedia.org/wiki/List_of_.NET_libraries_and_f...

alex445 местный житель23.07.21 12:33
NEW 23.07.21 12:33 
in Antwort alex445 21.07.21 23:44, Zuletzt geändert 23.07.21 16:04 (alex445)

Создал консольный проект на Дотнет 5 - часть файлов конфигов на джейсоне. Только конфиг проекта на XML. Похоже, Студия тоже постепенно переезжает на джейсон. ASP.NET MVC конфиги так уже давно на нём.


XML должен умереть. Кто согласен? ))

alex445 местный житель23.07.21 16:09
NEW 23.07.21 16:09 
in Antwort alex445 23.07.21 12:33, Zuletzt geändert 23.07.21 16:10 (alex445)

А в Unity3D наоборот решили новый UI делать на XML,HTML-образном синтаксисе. Да что ж такое-то!..

Overview | UI Builder | 1.0.0-preview.14 (unity3d.com)


картинка

alex445 местный житель03.08.21 22:29
NEW 03.08.21 22:29 
in Antwort alex445 23.07.21 16:09
7 8 9 10 11 12 13 14 15 16 17 alle