• Как ошибка из 2009 вызывает конфликт Docker for Windows и Razer Synapse
    0

    На Stackoverflow по ссылке примерно так и написано.

  • Как ошибка из 2009 вызывает конфликт Docker for Windows и Razer Synapse
    +3

    Почему нет?

  • Задумчивая Авалония
    0

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


    Возможности платформы гораздо нагляднее показало бы гибкое, кастомизируемое решение.

  • Задумчивая Авалония
    +1

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

  • Задумчивая Авалония
    0

    Задача вполне реальная: дизайнер нарисовал, нужно сверстать пиксель-в-пиксель.

  • Задумчивая Авалония
    0

    Все настраиваемые переменные, а также ControlTemplate для "кружка" можно выставить из компонента в виде AvaloniaProperty. Для пользователя это будет и проще, и удобнее, чем полностью переопределять ControlTemplate.

  • Задумчивая Авалония
    0

    Что за дополнительные анимации, которые нужно навешивать вне контрола, и зачем это делать?

  • Задумчивая Авалония
    0

    Это хардкод, потому что элементов четко восемь, а у каждого по четко восемь ключевых кадров. Как вы определили, что у Cue="0%" должно быть значение 0.17, у Cue="14%"0.34, и так далее? Как вычислили положение каждой точки на Canvas? Неужели вручную на бумажке? Если я захочу поменять скорость анимации, или начальное положение, или сделать больше\меньше точек — мне придется снова пересчитать руками все коэффициенты?


    Напрашивается мысль, что все это можно было бы не описывать декларативно в виде XML, а сгенерировать программно в цикле, основываясь на трех переменных — числе точек, скорости анимации (количестве "поворотов" в секунду") и изначальном положении.

  • Задумчивая Авалония
    0

    Вы на полном серьезе предлагаете делать прелоадер, захардкодив 8 элементов и 64 кейфрейма для них? Это же автоматизируется в 10 строчек кода...

  • Как выбрать редактор, и почему нужно выбрать NeoVim?
    +5
    Теперь представьте, вы можете перемещаться по коду через 50 слов сразу, нажав 3 клавиши
    Обычно перемещаются по коду не на какое-то расстояние от текущего места, а к конкретному месту — будь то имя файла, класса или метода.
    Поиск — одна клавиша, а не Ctrl+F, как это придумано везде.
    Сэкономили целое нажатие Ctrl?
    благодаря NeoVim я смог увелеичить свою производительность в 3-4 раза
    Даже боюсь представить, каких астрономических величин достигнет ваша продуктивность, когда вы откроете для себя language server'ы!
  • Нет, динамические системы типов по своей сути не более открыты
    +4

    Обратный процесс также существует — в Python и PHP добавили аннотации типов, для JS существуют Flow / Typescript. Но что это доказывает?

  • Нет, динамические системы типов по своей сути не более открыты
    +5
    динамические данные проще парсить динамическим языком
    Вы статью-то читали? Там именно это утверждение очень доходчиво опровергается.
    Приведенный выше код JavaScript делает все те же предположения, что и наш код на Haskell.… Он не может сделать ничего полезного с действительно неизвестными входными данными! Если добавляется новый тип события, наш код JavaScript не может магически адаптироваться к нему лишь потому, что он динамически типизирован.
  • Цензура в исходном коде .NET Framework
    +4

    Дискриминация — она и есть дискриминация, направления у нее нет

  • Цензура в исходном коде .NET Framework
    +6
    О сертификации ФСТЭК вы, полагаю, не слышали?
  • Резервирование констант и Git hooks на C#
    0

    А тестируются они где? У вас разворачивается полная копия окружения под каждую фичу? И как вы потом тестируете, что они не конфликтуют между собой после мержа?

  • Резервирование констант и Git hooks на C#
    0

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


    В проектах побольше пишем миграции руками в виде SQL-скриптов. При этом для доступа к данным все равно используем EF, но без миграций. Оба варианта уже несколько лет исправно работают.

  • Резервирование констант и Git hooks на C#
    0

    Фичи вливаются в develop когда их сделал разработчик, а в master — когда они полностью протестированы и готовы к релизу. Поэтому мержить develop в master (по крайней мере у нас) строго-настрого запрещено: иначе в релиз может проскочить сломанная фича.


    Проблема именно в том, что EF нужен полный "слепок" текущего состояния БД для миграций. Поэтому если просто использовать EF без миграций, заменяя их SQL-скриптами и сторонними утилитами типа FluentMigrator, проблема не возникает.

  • Резервирование констант и Git hooks на C#
    0

    EF-миграции создают сущий кошмар в ситуации, когда параллельно разрабатывается несколько фич и в develop они сливаются в одном порядке, а в master — в другом.

  • Анализатор исходного кода Microsoft Application Inspector
    0
    Вы перепутали .NET Foundation (благотворительный фонд развития открытого ПО) и .NET Framework (среда исполнения программ).
  • Мы приближаемся к пределу вычислительных мощностей – нам нужны новые программисты
    +4
    Причины чисто экономические. Требования к задачам растут, а объем «оперативной памяти» у человека довольно ограничен. Чем больше слоев абстракции нужно одновременно держать в голове, тем меньше людей оказываются на это способны. А написать, скажем, современную кроссплатформенную AAA-игру без использования фреймворков, скорее всего, невозможно вообще.
  • Анализатор исходного кода Microsoft Application Inspector
    +3
    .NET Foundation основан в 2014, а первая публичная версия Typescript выпущена аж в 2012…
  • Анализатор исходного кода Microsoft Application Inspector
    +1
    … кросс-платформенный опенсорсный (!) инструмент...
    Доброе утро, Майкрософт уже лет шесть-восемь как выпускает кросс-платформенные опенсорсные инструменты.
  • Запускаем игру на C# в MS-DOS
    +2
    В первой статье автора о том, как он упаковал змейку в 8кб, все рассказано — рантайм полностью вырезан, пользоваться reference-типами нельзя (т.е. только структуры, никаких аллокаций). Ограничения жесткие и далеко не любой код можно так зарефакторить. Однако змейка работает :)
  • Быстрее, чем C++; медленнее, чем PHP
    0
    Так тоже можно, но никакого прироста скорости не дает. Полагаю, дело в том, что индексация массива оптимизирована лучше, чем индексация строки.
  • Быстрее, чем C++; медленнее, чем PHP
    0
    Да все то же самое, только вместо .ToCharArray() используется .AsSpan(). Использую последний LINQPad 6, в нем .NET Core 3.1.
  • Быстрее, чем C++; медленнее, чем PHP
    +4
    Немного улучшенная версия на C#
    public static Int32 LevDist(string s1, string s2)
    {
    	return LevDist(s1.ToCharArray(), s2.ToCharArray());
    }
    
    public static Int32 LevDist(char[] s1, char[] s2)
    {
    	var m = s1.Length;
    	var n = s2.Length;
    
    	// Edge cases.
    	if (m == 0)
    	{
    		return n;
    	}
    	else if (n == 0)
    	{
    		return m;
    	}
    
    	var v0 = new int[n+1];
    	var v1 = new int[n+1];
    	for(var i = 0; i < n; i++)
    		v0[i] = v1[i] = i;
    
    	for (var i = 0; i < m; i++)
    	{
    		v1[0] = i + 1;
    
    		for (var j = 0; j < n; j++)
    		{
    			var substCost = (s1[i] == s2[j]) ? v0[j] : (v0[j] + 1);
    			var delCost = v0[j + 1] + 1;
    			var insCost = v1[j] + 1;
    
    			v1[j + 1] = Math.Min(Math.Min(substCost, delCost), insCost);
    		}
    
    		var temp = v0;
    		v0 = v1;
    		v1 = temp;
    	}
    
    	return v0[n];
    }
    
    public static void Main()
    {
    	string s1 = new String('a', 15000);
    	string s2 = s1;
    	string s3 = new String('b', 15000);
    
    	Stopwatch execTimer = new Stopwatch();
    	execTimer.Start();
    
    	Console.WriteLine(LevDist(s1, s2));
    	Console.WriteLine(LevDist(s1, s3));
    
    	execTimer.Stop();
    	double execTime = execTimer.ElapsedMilliseconds / 1000.0;
    
    	Console.WriteLine($"Finished in {execTime:0.000}s");
    }
    

    Со включенной оптимизацией на моей машине дает 0.77с против 5.6c в оригинальной версии.

    На удивление, использование ReadOnlySpan дает худшие результаты по сравнению с копированием массива в char[].
  • Чем программирование сегодня отличается от программирования 20 лет назад?
    +10
    Hello World на Си занимает две строчки и компилируется одной консольной командой…
  • Генеалогические исследования — метрические книги, переписи, архивы, открытые базы
    0
    Увы, нет. Это сложно, стоит денег и легко абьюзится. Но в репозитории есть скриншоты.
  • Генеалогические исследования — метрические книги, переписи, архивы, открытые базы
    +2
    Возможно вам будет интересен мой проект Bonsai — это аналог Древа Жизни, но с веб-интерфейсом и полностью открытый-бесплатный.
  • Пропаганда тоталитарного режима, антисемитизм и гомофобия в учебнике по программированию 2019 года? — Это возможно
    +6
    Исчерпывается ресурс человека, который этот контент создает. Вы почему-то предполагаете, что он не должен получать зарплату за свою работу, а жить за спасибо. Обеспечивать себя и семью с помощью мерча и пожертвований — примерно так же «легко», как выиграть в лотерею.

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

    В вашем идеализированном мире без авторского права ни у кого не будет мотивации что-либо создавать. Не будет Netflix и HBO, из игр останутся только веселые фермеры с pay-to-win и always-online.
  • Пропаганда тоталитарного режима, антисемитизм и гомофобия в учебнике по программированию 2019 года? — Это возможно
    +2
    Контент же. Кто захочет его создавать, если все пользователи считают своим правом получать его бесплатно?
  • Статическая типизация не обязательно требует церемоний
    –1
    Диаграмма на КДПВ неправильная. Там должно быть две оси: «количество церемоний» по горизонтали и «строгость типизации» по вертикали". Это позволит показать, например, что Java куда более церемониальная, чем тот же C#.

    С другой стороны, отсутствие «церемоний» — не всегда хорошо. Явное указание типов в интерфейсе является single source of truth: по нему можно сразу определить, что неправильно — реализация функции или ее использование. Вот например:
    let add a b = a + b
    printf "%A" (add 1 2)
    printf "%A" (add "a" "b")
    
    Компилятор падает на втором вызове функции, потому что первый «застолбил» за ней конкретные типы. Поменяем вызовы местами, сделаем сложение строк первым — будет падать на сложении чисел. Как понять, что имелось в виду — сложение чисел, или строк, или вообще тут предполагалось наличие SRTP, но компилятор не смог сам об этом догадаться?..

    In the face of ambiguity, refuse the temptation to guess.
  • Пропаганда тоталитарного режима, антисемитизм и гомофобия в учебнике по программированию 2019 года? — Это возможно
    –1
    Во-первых, он присвоил себе то, на что у него не было прав, и нанес автору материальный урон. Можно долго спорить о том, заслуживает ли автор данной конкретной книги какого-либо материального вознаграждения за свои «труды», но речь о платном контенте в целом.

    Во-вторых, это пример трагедии общих ресурсов. Будет ли приятно жить в мире, где так поступают все?
  • Пропаганда тоталитарного режима, антисемитизм и гомофобия в учебнике по программированию 2019 года? — Это возможно
    0
    Очень смешно, что автор открыто признается в воровстве контента, но считает это разве что незначительным проступком, а вот за петросянские шутки в украденной книге призывает сразу четвертовать
  • Фамильный вики-движок Bonsai: итоги 2019 года
    +1
    «Семейный» — это когда для семьи. Когда «каждый может запустить» — это «социальный» или «общедоступный».

    Да, Bonsai в первую очередь ориентирован на гиков. У них тоже бывают семьи :) Уровень специалиста для запуска не нужен — достаточно базового знакомства с IT, чтобы разобраться за вечер. Я искренне предполагаю, что во многих семьях такой человек хоть один, да есть.

    Я единственный разработчик, а проект сугубо некоммерческий, поэтому вылизывание UX установки не является приоритетом. Если вам в первую очередь важно развертывание в один клик на Windows Home — увы, могу только посоветовать посмотреть в сторону платных аналогов, у них такое обычно есть.
  • Фамильный вики-движок Bonsai: итоги 2019 года
    +1
    По вашей логике, семейный отдых — это тур, купленный бабушкой? Проект семейный, потому что им может пользоваться вся семья (после того, как один из членов семьи его установит).
  • Фамильный вики-движок Bonsai: итоги 2019 года
    0
    Контейнеры разворачивает не бабушка, а ее айтишник-сын, внук, племянник, сын маминой подруги. Для этого ему даже не нужно быть экспертом — с вызовом одной команды в консоли справится даже джун. А дальше бабушки-дедушки будут заходить с планшетов и смотреть фотки.
  • Фамильный вики-движок Bonsai: итоги 2019 года
    +1
    Спасибо, кажется это оно и есть
  • Фамильный вики-движок Bonsai: итоги 2019 года
    0
    Тогда это третья категория — работает на вашем сервере и требует некоторых (по возможности минимальных) усилий на развертывание. Кнопочке «запустить» эквивалентна команда docker-compose, шареные папки и проброс портов при желании тоже делаются довольно легко.
  • Фамильный вики-движок Bonsai: итоги 2019 года
    0
    Есть три типа подобных приложений:

    1. Десктопные: полная приватность, легко установить, но нет доступа через веб
    2. SAAS (а-ля соцсеть): доступ через веб, легко начать пользоваться, но нет приватности и стоит денег
    3. Selfhosted: полностью бесплатно, полная приватность, но требует некоторых навыков в поддержке

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