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

Резюме для программиста

uscheswoi_82 старожил07.12.21 13:11
NEW 07.12.21 13:11 
in Antwort MolMed 07.12.21 13:00
Возраст в вакансиях нельзя указывать - это же дискриминация ;)

Почему возраст это дискриминация? Погуглиг Lebenslauf Muster 2021, вот нашёл - https://www.lebenslauf.de/templates/lebenslauf2021.jpg там Geburtsdatum стоит в Persönliche Daten после Name, причём указывают город где родился.

Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
Срыв покровов патриот07.12.21 15:06
NEW 07.12.21 15:06 
in Antwort uscheswoi_82 07.12.21 13:11

ты не с той стороны смотришь

Срыв покровов патриот07.12.21 15:07
NEW 07.12.21 15:07 
in Antwort alex445 07.12.21 10:19
вы если в офисе, то в масках сидите? А ходить там, пожрать или в туалет?

В масках сидят, только если дистанция не соблюдается.
встаёшь - надеваешь маску.

alex445 старожил07.12.21 16:20
NEW 07.12.21 16:20 
in Antwort alex445 07.12.21 12:35, Zuletzt geändert 07.12.21 16:34 (alex445)

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


Сделал практически ничего. Из всего задания процентов 15 за полтора часа. И это ещё просто говнокод был, а в задании было - всё по солиду и прочим принципам чтобы было.


Накидал моделей в коде, вытащил дерево на форму. Затем минут 15 искал, как и где его заполнять лучше. Начал заполнять в обработчике события загрузки формы. Далее стопорнулся на джейсонке - даже распарсить не смог. Минут 40 на это потратил. Две разных библиотеки подключал. Выяснилось, что я с ними толком работать не умею. Открыл свой старый проект, где я раньше когда-то это делал. Но тут время закончилось.


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


А потом я бы ещё думал, как тривьюху распарсенной джейсонкой заполнить. В WPF-то я привык к привязкам, а в формах не знаю, как делать. Я на формах 10 лет не писал. Я им об этом сказал, но им-то всё равно на формах писать надо.


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


Короче, чтобы сделать это упражнение успешно и в срок, нужно иметь недавний опыт делания таких приложений и именно по подобным заданиям. Они сказали, что задание очень интенсивное, поэтому не обязательно всё его выполнять. Но я и четверти не выполнил. Я ещё спросил, можно ли гуглить, и гуглил постоянно, искал простейшие примеры, как в той или другой библиотеке распарсить что-то, доки в МСДН смотрел. Вобщем, выглядело всё так, будто я вообще первый раз вин формы открыл и с джейсоном работаю. Ну, в принципе, так оно и есть - когда несколько лет назад этим занимался в последний раз, то сейчас как в первый раз. Вообще, можно было любой ГУИ фреймворк использовать, но на работе они пишут на формах. Ну я тоже на формах решил. Зря. С другой стороны, на WPF если по MVVM делать, то там пока всё распишешь, разметку сделаешь - за полтора часа тоже далеко не уйдёшь.


Ну ничего, буду дальше пытаться. ))


Ещё пришлось экран на 1080р переключить, а то боялся, что слишком мелко всё будет на их экранах и тормозить будет из-за передачи данных по вай-фай. У меня телек 4к разрешением, а у них может ноутбуки.

alex445 старожил07.12.21 16:36
NEW 07.12.21 16:36 
in Antwort alex445 07.12.21 16:20, Zuletzt geändert 07.12.21 16:39 (alex445)

А сколько вообще нормально делать компонент? Скажем, вот подобный же - тривью, сбоку подробности (типа master-detail, как я понял), добавление элемента в попапе, наполнение - из джейсона. Скажем, в день четыре таких таски зыкрывать - за 6 часов - нормально?


Описание задания было примерно полная страница А4. Ну и они сказали, что это было eine kleine Aufgabe.

alex445 старожил07.12.21 16:46
NEW 07.12.21 16:46 
in Antwort alex445 07.12.21 16:36

Вообще, с произвольным JSON у меня не получилось. Дали файл и сказали, что из него получаешь структуру объектов, которые описаны в задании. Я могу открыть и увидеть его, но в какую структуру его распарсить правильно, я не успел разобраться. Если бы я свой граф объектов сохранил сначала, то потом загрузить и распарсить было бы легко. А тут нужно по джейсонфайлу восстановить структуру классов. Я придумал одну и подставил, а там всё null. И я не успел выяснить, почему. Просто не распарсилось.


Я делал подобное раньше, но поздно вспомнил. Пока открыл свой старый проект и разбирался, как там что в Newton.Json библиотеке, время кончилось.

Murr патриот07.12.21 17:23
Murr
NEW 07.12.21 17:23 
in Antwort alex445 07.12.21 16:20

работать не умею

-----

Этого - достаточно. спок


Ну да для тебя это не критично... безум


alex445 старожил07.12.21 17:37
NEW 07.12.21 17:37 
in Antwort Murr 07.12.21 17:23, Zuletzt geändert 07.12.21 17:38 (alex445)
Этого - достаточно. спок


Ну да для тебя это не критично...

Это всё фигня. Всё это быстро учится, стоит один раз подобное приложение сделать. Другой вопрос, надо ли им это, или надо чтобы сразу быстро всё делал.


Любому сеньёру дай что-нибудь, что он первый раз видит или лет 5-10 назад последний раз в руки брал - тоже тупить будет и гуглить на каждом шагу.

Murr патриот07.12.21 17:42
Murr
NEW 07.12.21 17:42 
in Antwort alex445 07.12.21 16:46

разбирался, как там что в Newton.Json библиотеке

-----

Стандартный путь от мелкомягких:

https://docs.microsoft.com/en-us/dotnet/standard/serializa...

От тебя ожидали написания 3-5 строк...


и использования чего-то типа

https://json2csharp.com/


И заметь - Я ЖИСОНа не пользую...

alex445 старожил07.12.21 17:50
NEW 07.12.21 17:50 
in Antwort Murr 07.12.21 17:42

И у мелких, и у Ньютонсофт смотрел. Не распарсилось по моей структуре классов. Вот джейсонка


{
    "items":  [
        {
            "prop1" : "aaa",
            "prop2": "01",
            "description": "desc1"
        },
        {
            "prop1" : "aaa",
            "prop2": "02",
            "description": "desc1"
        },
        {
            "prop1" : "bbb",
            "prop2": "ABC",
            "description": "desc2"
        },
        {
            "prop1" : "bbb",
            "prop2": "YUZ",
            "description": "desc3"
        },
        {
            "prop1" : "ccc",
            "prop2": "01",
            "description": "desc4"
        }
    ]
}


alex445 старожил07.12.21 17:53
NEW 07.12.21 17:53 
in Antwort alex445 07.12.21 17:50, Zuletzt geändert 07.12.21 17:57 (alex445)

У меня такая структура классов была. В неё не распарсилось. В возвращаемом после десериализации объекте null был.


public class Item
{
    public string Prop1 { get; protected set; }
    public string Prop2 { get; protected set; }
    public string Desсription { get; protected set; }
}


public class Items
{
    public List<Item> Items { get; set; }
}


По вашей ссылке такая


// Root myDeserializedClass = JsonConvert.DeserializeObject(myJsonResponse); 
    public class Item
    {
        public string prop1 { get; set; }
        public string prop2 { get; set; }
        public string description { get; set; }
    }

    public class Root
    {
        public List items { get; set; }
    }
alex445 старожил07.12.21 17:57
NEW 07.12.21 17:57 
in Antwort alex445 07.12.21 17:53

Чтобы сделать просто парсинг джейсон и немного форматированный вывод в консоль, я в старом своём приложении потратил где-то часов 5-6. Но я тогда тоже с нуля смотрел, как ньютонсофтовской библиотекой пользоваться.

alex445 старожил07.12.21 17:59
NEW 07.12.21 17:59 
in Antwort alex445 07.12.21 17:53

Вроде, все свойства должны быть публичными - и геттеры, и сеттеры. Тогда должно десериализоваться. Но это я только сейчас додумал.

alex445 старожил07.12.21 18:04
NEW 07.12.21 18:04 
in Antwort alex445 07.12.21 17:59, Zuletzt geändert 07.12.21 18:07 (alex445)

Сделал публичными, а не защищёнными - всё равно получаю налл.


JsonConvert.DeserializeObject(json)


Есть вариант от противного - в коде создать такую структуру и сериализовать. И посмотреть, чем отличается мой файл от данного в задании. Но уже времени не было.

Murr патриот07.12.21 18:52
Murr
NEW 07.12.21 18:52 
in Antwort alex445 07.12.21 17:50

И у мелких, и у Ньютонсофт смотрел.

-----

И до сих пор не понимаешь, что на тестовых задачах не надо никакого "и"?

Не понимаешь, что надо делать тем, что уже изучено?

Что нет времени на изучение-в-процессе?

Что надо учить ДО?


Я с ЖИСОНом не работаю.

Но! У меня твой ЖИСОН десериализовался с полпинка одной копипастнутой строкой... руками чутка имя сгенерированного класса поправил на актуальное и все...


Murr патриот07.12.21 18:55
Murr
NEW 07.12.21 18:55 
in Antwort alex445 07.12.21 17:53

По вашей ссылке такая

-----

Вообще-то - такая:

    // Root myDeserializedClass = JsonConvert.DeserializeObject(myJsonResponse); 
    public class Item
    {
        [JsonConstructor]
        public Item(
            [JsonProperty("prop1")] string prop1,
            [JsonProperty("prop2")] string prop2,
            [JsonProperty("description")] string description
        )
        {
            this.Prop1 = prop1;
            this.Prop2 = prop2;
            this.Description = description;
        }

        [JsonProperty("prop1")]
        public string Prop1 { get; }

        [JsonProperty("prop2")]
        public string Prop2 { get; }

        [JsonProperty("description")]
        public string Description { get; }
    }

    public class Root
    {
        [JsonConstructor]
        public Root(
            [JsonProperty("items")] List items
        )
        {
            this.Items = items;
        }

        [JsonProperty("items")]
        public IReadOnlyList Items { get; }
    }

alex445 старожил07.12.21 19:49
NEW 07.12.21 19:49 
in Antwort Murr 07.12.21 18:55

Такая портянка, да ещё с атрибутами, не нужна в таком простом случае.

Срыв покровов патриот07.12.21 19:52
NEW 07.12.21 19:52 
in Antwort alex445 07.12.21 16:36
сколько вообще нормально делать компонент? Скажем, вот подобный же - тривью, сбоку подробности (типа master-detail, как я понял), добавление элемента в попапе, наполнение - из джейсона. Скажем, в день четыре таких таски зыкрывать - за 6 часов - нормально?

нет, это много

Ты такую будешь одну закрывать, потому что 4 раза будешь останавливаться из-за неполноты вводных данных, чтобы спросить заказчика

И 10 раз тебе позвонит заказчик, чтобы спросить что-то другое.

Murr патриот07.12.21 20:03
Murr
NEW 07.12.21 20:03 
in Antwort alex445 07.12.21 19:49

Такая портянка, да ещё с атрибутами,

-----

Ты таки все еще не понял - мне было без разницы какую именно сгенерировать - временные затраты на их генерацию одинаковые.


не нужна в таком простом случае.

-----

Случаи у нас вроде как одинаковые.

Разница:

- у меня - заработало с полутыка то с чем Я не работал;

- у тебя - НЕ заработало то с чем ты до этого работал.

Я мог бы объяснить - почему - так, но для тебя оно бесполезно...

alex445 старожил07.12.21 20:09
NEW 07.12.21 20:09 
in Antwort Murr 07.12.21 20:03, Zuletzt geändert 07.12.21 20:09 (alex445)

Я уже понял, почему не работало - банальнейшая вещь. Я просто не понял, что в джейсоне что есть.


В представленном файле "items" - это имя свойства-коллеции. А дальше идут элементы этой коллекции.