Pull to refresh
4
0.6
Send message

Почему же, если не вакцинироваться, шансы на самоустранение из соревнований несколько возрастают.

На самом деле, нам доступны только условия. И то тут все очень примитивно.

Не совсем так, если использовать шаблоны для dotnet core, можно использовать не только условия, но и например генераторы guid или случайных значений, опционально включать/исключать файл целиком, определять опции командной строки из ограниченного перечня, или например приводить строки к верхнему/нижнему регистру

В прошлой статье оставил несколько ссылок, может быть полезно:
https://habr.com/en/post/573930/#comment_23396710

Кроме того, если например в Вашей компании используется свой NuGet-репозиторий, например Nexus или MyGet, можно опубликовать эти шаблоны как NuGet-пакеты, и тогда их можно будет установить и использовать через CLI-команды dotnet new (наряду со встроенными стандартными шаблонами).

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

Как-то слышал историю про то, как данные слили на флэшку, которую встроили внутрь usb-мышки (внутри поместили usb-хаб, к которому была подключена и мышь, и флэшка).

Ну и вспомним stuxnet, насколько я помню, так тоже был airgap, который не помешал загрузить вирус, поломавший центрифуги.

У нас на работе делали пару шаблонов для веб-апи asp net core проектов, публикуются как нугет-пакеты, и при локальной установке становятся доступными в списке шаблонов dotnet new. Поддерживают кастомные переменные-опции. Основная настройка шаблона, переменные и их типы (и возможные значения) описываются в файле .template.config/template.json

Документация,
статья в devblogs,
полезные примеры на гитхабе,
исходники .NET Core Template Engine
некоторые тонкости про шаблоны

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

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

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

Я вот даже поспорил бы с тем, что 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 в запущенном состоянии.

Information

Rating
1,471-st
Registered
Activity