Pull to refresh
4
0.7
Send message

Вот аналогично, всегда отключаю у себя группировку окон. Если это невозможно сделать в новой версии ОС, это, наверно, самый сильный для меня аргумент подождать с переходом.

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

Согласен, протупил когда читал Ваш коммент)

Я вот даже поспорил бы с тем, что 100% - это хорошо. На любом крупном проекте (от 100 тыс. строк кода, если взять порог, указанный в одной из книг "дяди Боба") будет такой код, который покрывать тестами нерационально. Например, инфраструктурный/конфигурационный код, или код, который отвечает за интеграцию со сторонней системой (адаптер). Конечно, такие места должны содержать минимум логики, но стремление к 100% покрытию может привести к тестам ради тестов, ценность которых == 0, которые были написаны только для галочки. Отмечу, что эти тесты разработчик пишет в рабочее время, и за это время заплатил бизнес.

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

Поэтому считаю целевой уровень 70-80% оптимальным, это задаёт высокую планку: почти весь код с бизнес-логикой, скорее всего, будет покрыт тестами, но будет запас для того, чтобы не упарываться с "тестами ради тестов".

Инициализация полей - это синтаксический сахар над присвоением этих значений в конструкторе. Убедитесь в этом сами, для C# кода:

class Test
{
    private int[] test = new int[100];
    public Test()
    {
        Console.WriteLine("Test create");
    }
}

Будет IL код:

IL код
.class private auto ansi beforefieldinit Test
    extends [System.Private.CoreLib]System.Object
{
    // Fields
    .field private int32[] test

// Methods
.method public hidebysig specialname rtspecialname 
    instance void .ctor () cil managed 
{
    // Method begins at RVA 0x205d
    // Code size 33 (0x21)
    .maxstack 8

    IL_0000: ldarg.0
    IL_0001: ldc.i4.s 100
    IL_0003: newarr [System.Private.CoreLib]System.Int32
    IL_0008: stfld int32[] Test::test
    IL_000d: ldarg.0
    IL_000e: call instance void [System.Private.CoreLib]System.Object::.ctor()
    IL_0013: nop
    IL_0014: nop
    IL_0015: ldstr "Test create"
    IL_001a: call void [System.Console]System.Console::WriteLine(string)
    IL_001f: nop
    IL_0020: ret
} // end of method Test::.ctor

} // end of class Test

Как видно из IL-кода, создание массива происходит именно в конструкторе.

Вы можете убедиться сами на https://sharplab.io

За популярные веб-ресурсы не буду говорить, но среди корпоративных решений такие встречаются нередко. И когда на фронтенде большое количество различных сложных компонентов: виджетов, графиков, табличек, админок и прочее, фреймворк, который ограничивает творческую свободу разработчиков, - это несомненное благо. И хотя я бэкендер, но будучи немного знаком со структурой нашего проекта на фронте, не могу себе представить, насколько сложнее стала бы разработка без ангуляра, и тем более без фреймворка вообще. Сейчас же новый человек может достаточно быстро погрузиться в проект и начать фигачить таски.

Позвольте полюбопытствовать, какие новостные сайты для себя избрали? Сам иногда захожу на медузу, но подача материала там иногда огорчает, да и иногда замечаю некоторый непрофессионализм (имхо) в статьях.

Ничего себе! Был в этом городе несколько раз, но не знал об этом.

Правильно, вершина эволюции - это кошки, которые сумели распространиться по всей планете, подчинив себе людей =)

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

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

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

Тоже обратил на это внимание. По-хорошему там должна быть транзакция, в рамках которой происходит поиск по idempotencyKey и в случае отсутствия, вставка записи с этим идентификатором (естественно, также должен быть unique constraint в БД). В этом случае гонка уже не страшна, поскольку проверка и добавления записи с idempotencyKey атомарно.

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

Fluent-паттерн действительно очень красивый. Его удобно использовать для конфигурации: как в ASP.NET Core или паттерн test builder. Также очень удобно составлять запросы в LINQ, например используя IQueryable.

Но нужно обратить внимание, что в том же LINQ запрос не выполнится, пока не будет вызван например ToListAsync - который и отдаст Task. В приведенном примере, если переделать метод BuilderFtpService.Download на асинхронную модель, нужно будет реализовывать дополнительно интерфейс вроде IDownloadableBuilderFtpService, который позволит сконфигурировать скачивание и дельнейшее сохранение - но позволит запустить эту задачу только при вызове последнего метода, который уже отдаст Task в запущенном состоянии.

Поясните пожалуйста для тех, кто не очень активно следит за
информационной повесткой

А вот это было бы совсем печально. Я себе возвращаю классический вид, убирая эту ненавистную группировку. Раздражает, когда чтобы переключиться на другое окно, нужно делать лишний клик, чтобы раскрыть группу (а еще она иногда невовремя всплывает, если случайно провести мышью над панелью задач).
Это уже не анонимность, а псевдонимность. Персональных данных владельца нет, но тем не менее история действий от лица конкретного участника остаётся, пусть и под его псевдонимом.
Очень хотелось бы, чтобы исправили копирование и вставку в режиме multiple carets (несколько курсоров). Сейчас вынужден копировать код в VS Code, там редактировать и вставлять обратно в студию. Иначе при копировании и вставке в каждом месте где курсор вставляет всё содержимое буфера.

Пример multiple cursor

Information

Rating
1,804-th
Registered
Activity