Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

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

89957   51 52 53 54 55 56 57 58 59 60 61 все
Murr патриот16.10.21 02:14
Murr
NEW 16.10.21 02:14 
в ответ alex445 16.10.21 00:27

Смена расчёта - это смена тестов этого расчёта.

-----

Правда?

Рассчет:

было - 2 * 2...

стало - 2 + 2...

Основание замены - сложение выполняется быстрее.

Ну и что поменяется в тестах?


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

alex445 старожил16.10.21 08:02
NEW 16.10.21 08:02 
в ответ Murr 16.10.21 02:14, Последний раз изменено 16.10.21 08:17 (alex445)
Что-то поднадоел твой тролинг... человек способный писать хоть простейший код не может быть настолько тупым...

Если вы такой умный, то как вы можете до сих пор вестись на этот троллинг? ))


было - 2 * 2...
стало - 2 + 2...
Основание замены - сложение выполняется быстрее.
Ну и что поменяется в тестах?

А что так сложно? Почему не return 4? А можно вместо функции вообще возвращать небольшой массив констант на разных диапазонах - заранее посчитанная дискретная аппроксимация. Если точность аппроксимации достаточная, то и ладно.


Всё зависит от задачи. Если вам нужна именно 4, то тест менять не надо. А если нужно конкретное действие - умножение или сложение, и оно поменяалось, то и тест должен поменяться.


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

Срыв покровов патриот16.10.21 09:56
16.10.21 09:56 
в ответ alex445 16.10.21 08:02, Последний раз изменено 16.10.21 09:57 (Срыв покровов)

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

alex445 старожил16.10.21 10:22
NEW 16.10.21 10:22 
в ответ Срыв покровов 16.10.21 09:56, Последний раз изменено 16.10.21 13:02 (alex445)

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


Вот в этом моём случае я пожалуй перепишу на захардкоденные значения - т.е. тут удобнее не TestCaseSource (NUnit, если что) использовать, а пачку TestCase со вбитыми руками значениями.


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


[TestCaseSource(nameof(_testValues))]
public void AddModifier_AbsoluteValueModifier_ValueChangesCorrectly(double test)
{
    _charStat.AddModifier(new StatModifier(test, StatModifierType.Absolute));
    var result = _charStat.Value;
    var expected = _baseValue + test;
    expected = Math.Round(expected, 0, MidpointRounding.AwayFromZero);

    Assert.AreEqual(result, expected);
}


А вот логика, где AddModifier вызывает CalculateValue, но через прокладку обработчика событий (AddModifier добавляет значения в ObservableCollection - я это всё опускаю, чтобы не загромождать тут).


void CalculateValue()
{
    var finalValue = BaseValue;

    foreach (var mod in StatMidifiers)
    {
        switch (mod.ModifierType)
        {
            case StatModifierType.Absolute:
                finalValue += mod.Value;
                break;
            case StatModifierType.Percent:
                var percentage = mod.Value < -100 ? -100 : mod.Value;
                finalValue = (int)Rounding.RoundCharacterStatistics(finalValue * (1 + percentage / 100.0));
                break;
            default:
                throw new ArgumentException(message: "Invalid enum value.", paramName: nameof(mod.ModifierType));
        }
    }

    Value = Math.Round(finalValue, 0, MidpointRounding.AwayFromZero);
}


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

finalValue += mod.Value;

но добавляю ещё кучу другой логики - т.е. делаю это далеко не банальным сложением.


Ещё вынесу правило округления в отдельную функцию (и может даже затестирую её), и даже библиотеку, и буду подключать её и к бизнес-логике, и к тестам. Чтобы код не дублировать.


Жаль, что не могу использовать C# 9, пока Юнити не перешёл на новую версию, где .NET 5 поддерживается (обещают в этом году) - приходится писать свичи в старом громоздком стиле.

alex445 старожил16.10.21 11:58
NEW 16.10.21 11:58 
в ответ alex445 16.10.21 10:22, Последний раз изменено 16.10.21 12:04 (alex445)

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


[TestCase(99999, 10 + 99999)]
[TestCase(-99999, 10 - 99999)]


И ещё можно константы использовать (но не вычисляемые в самих методах теста переменные, т.к. код атрибута выполняется раньше любого метода теста, а значит к нему в конструктор должны прийти уже инициализированные переменные)


const int _baseValue = 10;

[TestCase(99999, _baseValue + 99999)]
[TestCase(-99999, _baseValue - 99999)]
Murr патриот16.10.21 18:59
Murr
NEW 16.10.21 18:59 
в ответ alex445 16.10.21 08:02

Почему не return 4?

------

Через пятилетку другую до тебя дойдет где и почему будет использиваться ретурн 4. безум


Если вам надо

Если вам нужен

-----

(на мотив Волховской застольной)

а если болотами...

значит судьба такой... спок

alex445 старожил16.10.21 20:31
NEW 16.10.21 20:31 
в ответ alex445 16.10.21 11:58, Последний раз изменено 16.10.21 20:35 (alex445)

Как объединить несколько JS приложений с .NET Core (Create React APP + Next JS + .NET Core) / Хабр (habr.com)

Из комментов оттуда


Обычно в компаниях разводят js и. Net core, потому что над ними работают работают разные команды в разных редакторах, да и деплоят их отдельно.

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


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

alex445 старожил16.10.21 22:32
NEW 16.10.21 22:32 
в ответ alex445 16.10.21 20:31, Последний раз изменено 17.10.21 17:35 (alex445)

Сейчас только обратил внимание на одно место в резюме, которое внутри Dienstleistungsfirma было, а там


Senior Softwareentwickler C#/.NET

Я конечно польщён, но кажется понятно, почему меня не очень хотели брать. А продавали явно не за 40к.

С другой стороны, как я говорил, разговаривал там с человеком, который тесты не писал. В чём в принципе разница между сеньёром и несеньёром в той фирме? Обязанности те же самые - полный цикл разработки приложения, если один делаешь, или то же самое в команде - т.е. на любой участок кинуть могут. Только сеньёр больше получает.


Короче, теперь буду просить минимум 45, а не 40. Плюс транспортные расходы.


Вот, переделал резюме. Использовал помощь от "Срыв покровов", данные из внутреннего резюме Dienstleistungsfirma, и от себя добавил.


В резюме Dienstleistungsfirma стоит национальность и дата рождения. Я здесь не указывал и не указываю сейчас. Буду проговаривать, если будут спрашивать. Не знаю, стоит ли указать, или лучше всё же проговаривать. Просто некоторые спрашивают про разрешение на работу и сколько ещё действительна виза - думают, что я по рабочей или вообще нелегал.


С нормальным переводом названия магистерской работы пока не знаю что делать. По-русски она звучит так: "Исследование и разработка метода синтеза фильтров на нерегулярных линиях передачи". Чтобы было понятно, имеются ввиду подобные линии Микрополосковая линия — Википедия (wikipedia.org).


Изменения:

- правка ошибок,

- опыт работы продлил до 21 года (я работал удалённо даже после переезда, консультировал), но не указал срок "по настоящее время" - может, ещё накинуть 1-2 месяца?

- добавил раздел Weiterbildung, где написал про языки и прочие обучения - тут "по настоящее время"

- звание магистра написал не просто "Master", а "Master of Science" - чтобы было что-то из списка по ссылке Master – Wikipedia,

- Ausbildung заменил на Studium,

- убрал упоминание, что я переехал в Германию - у меня адрес немецкий,

- добавил NUnit в Kenntnisse )))

uscheswoi_82 старожил17.10.21 05:04
NEW 17.10.21 05:04 
в ответ alex445 16.10.21 08:02, Последний раз изменено 17.10.21 07:38 (uscheswoi_82)
Если вы такой умный, то как вы можете до сих пор вестись на этот троллинг? ))

Я с айти ушёл, потому-что там выпендриваются типа мурр, и друг другу хотят показать свои знания. Если не умеешь то начинают всякое клеймо ставить, типа на неспособность в программирование, только погрубее. Допустим этот программер - https://yvision.kz/u/Hes говорил мне, что я не умею программировать на net, а у самого там много дизлайков. Со своим LINQ он мне весь плешь проел см. https://yvision.kz/post/429471 и https://yvision.kz/post/435356. Только из-за него и учил этот LINQ, провёл исследования, LINQ немного медленно работает. исследование простые - в начале до LINQ и foreach ставите DateTime Now, в конце LINQ и foreach ставите опять DateTime Now, а потом сравниваете 2 даты до и после, у меня на простые LINQ уходит где-то примерно 4 сек., а если сделать сложные LINQ и очень много записей, особенно на сервере - то всё замёрзнет напрочь и будет программа или сервер еле еле шевелиться, в Германии распространён тонкий клиент-сервер (так немцы экономят денюжки), покупают один сервер, покупают для сервера Client Access License, покупают 10-100 тонких клиентов, потом настраивают, а пользователь включает тонкий клиент, который подключается к Windows Server через сеть или Wi-Fi, если там будут сидеть одновременно ну скажем 20 пользователей, и будут выполняться тяжёлые и сложные LINQ, весь сервер просто замёрзнет, из-за того что будет много съедаться памяти см.:


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace LINQTest
{
    public partial class Form1 : Form
    {
        private DateTime tm1; 
        public Form1()
        {
         //   tm1 = DateTime.Now;
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            const int MAX_RECORDS = 6000;
            String[] firstnames = new String[] { "Ольга", "Наталья", "Марина", "Александра", "Ирина", "Екатерина", "Сабина", "Элеонора", "Елезавета" };
            String[] lastnames = new String[] {"Попова", "Шевченко", "Найденко", "Сидорова", "Еремеева", "Шабанова", "Иванова", "Ким", "Пушкина", 
                                               "Лысенко", "Квашенко", "Зайцева", "Краскова", "Даренко", "Абрамушина", "Березовская", "Касымова", "Чечмарёва", 
                                               "Надымова", "Кокина", "Кабаева", "Лебедева", "Соколова", "Кузнецова", "Новикова", "Морозова", "Дроздова", "Дудь", 
                                               "Порхоменко", "Надымова", "Викулова", "Здорова", "Краскова", "Гудкова", "Грудинина", "Конь", "Шишков", "Рыжкова", 
                                               "Жукова", "Дмитриев", "Порхоменко", "Мухина"};
            String[] stations = new String[] { "Онкология", "Пульмунология", "Гастрэнторология", "Травматология", ""};
            Person[] persons = new Person[MAX_RECORDS];
            Hospital[] hospital = new Hospital[MAX_RECORDS];

            Random rnd = new Random();
            Random rnd2 = new Random();
            Random rnd3 = new Random();
            Random rnd4 = new Random();
            Random rnd5 = new Random();
            Random rnd6 = new Random();

            for (int j = 0; j < MAX_RECORDS; j++)
            {
                persons[j] = new Person();
                persons[j].personID = j;
                persons[j].FirstName = firstnames[rnd.Next(0, firstnames.Length)];
                persons[j].LastName = lastnames[rnd2.Next(0, lastnames.Length)];
                persons[j].Birthday = new DateTime(rnd3.Next(1920, 1980), rnd3.Next(1, 12), rnd3.Next(1, 20));
            }

            for (int j2 = 0; j2 < MAX_RECORDS; j2++)
            {
                hospital[j2] = new Hospital();
                hospital[j2].PersonID = rnd4.Next(0, MAX_RECORDS);
                int day = rnd5.Next(1, 20);
                int month = rnd5.Next(1, 8);
                hospital[j2]._From = new DateTime(2018, month, day);
                hospital[j2]._To= new DateTime(2018, month+rnd5.Next(1, 4), day+5);
                hospital[j2].Station = stations[rnd6.Next(0, stations.Length)];
            }

            tm1 = DateTime.Now; // засекаем отсюда время

            var results = from p in persons
                          from h in hospital
                          where p.personID == h.PersonID
                          select new { p.FirstName, p.LastName, p.Birthday, h.Station, h._From, h._To };

            this.dataGridView1.DataSource = results.ToList();

            this.txtCount.Text = MAX_RECORDS.ToString();
            TimeSpan ts= DateTime.Now - tm1; // вычисляем время
            this.txtTime.Text = ts.Seconds.ToString() + " сек.";
            /*foreach (var r in results)
            {
                //this.listBox1.Items.Add(r.FirstName + " " + r.LastName + " " + r.Birthday + " "+ r._From + " " + r._To);
            }*/
        }
    }
}


Вот результат 4 сек, всего 6 тыщ записей:

https://i.ibb.co/5YRjq4r/1-min.jpg


Этот код я делал в 2019 или 2020 году, сейчас посмотрел и вроде заметил ошибку, я тогда только начинал заниматься LINQ.

Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
uscheswoi_82 старожил17.10.21 07:23
NEW 17.10.21 07:23 
в ответ uscheswoi_82 17.10.21 05:04, Последний раз изменено 17.10.21 07:33 (uscheswoi_82)
Вот результат 4 сек, всего 6 тыщ записей:

А теперь представим что это выполняется на IIS. Получается нужно будет наверное Request Timeout увеличить см. https://stackoverflow.com/questions/2414441/how-to-increase-request-timeout-in-iis?


<system.web>
    <httpRuntime executionTimeout="180" />
</system.web>


Этот код я делал в 2019 или 2020 году, сейчас посмотрел и вроде заметил ошибку, я тогда только начинал заниматься LINQ.

Хм, хотя в stackoverflow написано, что вроде так правильно...

var result = (from p in person
              from c in college
              select new { p.Name, p.Age, c.Course, c.Lecture });


Но всё равно я привык join-ить,




Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
AlexNek патриот17.10.21 10:36
AlexNek
NEW 17.10.21 10:36 
в ответ alex445 16.10.21 22:32
В резюме Dienstleistungsfirma стоит национальность и дата рождения.

Скорее всего, там написано "staatsangehörigkeit" - это гражданство. Допишите что есть разрешение на работу и проживание без ограничений.

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

Вместо A1-B2, я бы оставил только B2 и дописал "сертификат" или что там получено по окончании


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

"Forschung und Entwicklung eines Verfahrens zur Synthese von Filtern auf unregelmäßigen Übertragungsleitungen"

alex445 старожил17.10.21 10:57
NEW 17.10.21 10:57 
в ответ uscheswoi_82 17.10.21 07:23, Последний раз изменено 17.10.21 10:58 (alex445)

Хм, хотя в stackoverflow написано, что вроде так правильно...

var result = (from p in person
              from c in college
              select new { p.Name, p.Age, c.Course, c.Lecture });

Зачем там взяли в скобки запрос, не знаю. Работает и без скобок. Может, человек выдрал не совсем правильно кусок код из более сложного запроса. Обычно в скобки берут, когда хотят к SQL-синтаксису потом дописать метод-синтакс, чтобы преобразовать результат запроса в список типа ToList или просто чтобы он выполнился (они же там все "ленивые"). Поэтому я предпочитаю метод-синтакс - меньше скобок и больше читаемость, на мой взгляд. Хотя, вроде, есть в метод-синтаксе пара штук, которые удобнее делать в SQL-синтаксе, но я не помню какие. Тут можно почитать.


А вообще, я сомневаюсь, что вы получаете существенный удар по производительности на таких маленьких коллекциях. Если всё написано правильно, навряд ли разница в производительности у LINQ и for отличается в разы. Да даже на десятки процентов. Если вы пишете сверхвылизанную по производительности систему, то можно заменить всё на стандартные циклы вместо линк. Не знаю, что там немцы выиграют по железу и производительности, но могут проиграть по поддержке такого кода - т.е. выигрыш уйдёт в дополнительные человекочасы программистов.


Знаете, когда народ толкает везде джаваскрипт, как-то двулично предъявлять претензии к линку. Некоторые вообще C# отрицают и даже местами С++ - всё должно быть в машинных кодах. Тут главное сильно не увлекаться - "не сотвори себе кумира".

alex445 старожил17.10.21 11:05
NEW 17.10.21 11:05 
в ответ AlexNek 17.10.21 10:36
Скорее всего, там написано "staatsangehörigkeit" - это гражданство. Допишите что есть разрешение на работу и проживание без ограничений.

Так и есть.


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

Я начитался рекомендаций из англоязычных (читай американских) источников - там у них жуткий пунктик по личным данным, чтобы всяких bias не было, что лучше подобные вещи скрывать. Ну и пока оставлю так - будет повод позвонить мне и поговорить. Хоть так буду поддерживать практику общения на эти темы. ))


Вместо A1-B2, я бы оставил только B2 и дописал "сертификат" или что там получено по окончании

Да, пожалуй.


Я просто хотел показать, что не балду пинал всё это время. Всё же, получить В2 с нуля - минимум год, и нормально - 2 года.


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

"Forschung und Entwicklung eines Verfahrens zur Synthese von Filtern auf unregelmäßigen Übertragungsleitungen"

Да тоже лучше, наверное, самому скомпилировать, используя термины из Википедии. Переводчица что-то намудрила, но она не профессионал, и может терминов не знать. Я, кстати, тоже немецкие термины не знаю, но знаю английские и русские.

AlexNek патриот17.10.21 11:41
AlexNek
NEW 17.10.21 11:41 
в ответ alex445 17.10.21 11:05
там у них жуткий пунктик по личным данным

Ну напишите только год


будет повод позвонить мне и поговорить

Скорее повод выбросить в корзину, чем звонить. Никому не нужна лишняя работа, подсчитывать по дате окончания института может быть просто лень.


наверное, самому скомпилировать

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

Например, я не знаю во всех ли случаях уместно использовать Übertragungsleitungen и для отличий от Übertragungsstrecken могу только строить предположения. Но Übertragungslinien - это скорее ZEN, чем электричество.

AlexNek патриот17.10.21 12:08
AlexNek
NEW 17.10.21 12:08 
в ответ alex445 16.10.21 22:32

Что еще не понимаю откуда взялось слово Thesis

https://www.duden.de/rechtschreibung/Thesis


Обычно это тема

https://www.bachelorprint.de/wissenschaftliche-arbeiten/di...

alex445 старожил17.10.21 12:31
NEW 17.10.21 12:31 
в ответ alex445 17.10.21 11:05, Последний раз изменено 17.10.21 12:36 (alex445)
Я офигеваю с нового тренда! - Курилка (germany.ru)
У меня - семерка.
Кто бы мне еще сказал какого черта лапоть греется... до запаха палева...
две браузерные игрушки... т.е. жабий скрипт и картинки...

И эти люди запрещают мне ковыряться в носу выговаривают мне за XML!

А я ведь даже не искал - случайно наткнулся. Что там можно ещё откопать, если искать специально...

)))

alex445 старожил17.10.21 12:35
NEW 17.10.21 12:35 
в ответ AlexNek 17.10.21 12:08

Что еще не понимаю откуда взялось слово Thesis

https://www.duden.de/rechtschreibung/Thesis


Обычно это тема

https://www.bachelorprint.de/wissenschaftliche-arbeiten/di...

Thesis – Wikipedia

  • englische Bezeichnung der Abschlussarbeit zur Erlangung eines akademischen Grades, siehe Studienabschlussarbeit

Взял из примера одного резюме тут. Ну и звучит это на английский манер - могут подумать, что я знатный инглишмен и вообще диплом по международным стандартам имею. Короче, это всё ради первого впечатления. Я не пытаюсь выдать себя за местного немца, ни в резюме, ни в жизни.

alex445 старожил17.10.21 13:02
NEW 17.10.21 13:02 
в ответ AlexNek 17.10.21 11:41, Последний раз изменено 17.10.21 13:03 (alex445)
В любом случае, несколько местных должны прочитать и сказать своё мнение.
Например, я не знаю во всех ли случаях уместно использовать Übertragungsleitungen и для отличий от Übertragungsstrecken могу только строить предположения. Но Übertragungslinien - это скорее ZEN, чем электричеств


русский

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

"Линия передачи" это слишком широкое понятие, не имеющее какого-то устоявшегося термина (или его трудно найти), чтобы ассоциировать мою работу именно с микрополосковыми линиями. А микрополосок - это более узкий термин, имеющий прямой аналог в английском и немецком. Именно то, что изображено в татьях в Википедии по этим терминам, я и проектировал: Streifenleitung – Wikipedia


И ещё мне не нравится слово Ausarbeitung для "разработки" - его аналогов почти не встерчаю. Лучше, наверное, Entwicklung.


Вобщем, получается русский изменённый вариант

Исследование и разработка метода синтеза фильтров на нерегулярных микрополосковых линиях.

Тогда английский вариант будет звучать ближе к истине и чему-то конкретному - это взял из Гугл-Транслейт

Research and development of a method for the synthesis of filters on irregular microstrip lines.

Немецкий вариант возьму не напрямую из переводчика, а переделаю немного

Forschung und Entwicklung der Filtersynthesemethode für unregelmäßige Mikrostreifenleitungen.
uscheswoi_82 старожил17.10.21 13:09
NEW 17.10.21 13:09 
в ответ alex445 17.10.21 10:57
Зачем там взяли в скобки запрос, не знаю. Работает и без скобок

Имхо это старый способ, сейчас пользуются методом Select, и ещё злоупотребляют лямбдами. Тот программист, ссылку которого я вам дал, он мне и про лямбды мозг выносил.

Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
AlexNek патриот17.10.21 13:28
AlexNek
NEW 17.10.21 13:28 
в ответ alex445 17.10.21 12:35
могут подумать, что я знатный инглишмен

А могут подумать что недотёпа, который действительно не знает немецкого спок