Pull to refresh
-2
Karma
0
Rating
Андрей Титов @izobr

Программист .NET

Как я делал user-control на WPF (VS2019, c#)

Я очень давно WPF занимался, но уверен, что здесь не нужно было делать свой контрол, а нужен был всего-лишь template.

Произошёл глобальный сбой в работе Facebook

Админская примета: настраивать сеть по сети - к длинной дороге...

Чат-бот для отзывов из Google Play. Опыт QuData

Мы определяем, что это намерение относится к типу “пользователь доволен” и отвечаем на него заранее подготовленным текстом для такого случая.… Пользователи не остались без внимания

Ну не знаю… Меня внимание ботов бесит. Я не жду ответа, если я просто хочу похвалить продукт. Если я получу автоматический ответ бота, то точно буду чувствовать, что компании до меня всё-равно. У неё нет никакого человеческого лица, а одни боты. А особенно, если я поругаю что-то и получу шаблонный ответ типа «Нам жаль, что вам пришлось столкнуться с трудностями. Информация о вашей проблеме передана специалистам. Ваша проблема решается!». В этом случае эффект удваивается и я получаю дополнительное чувство подтверждения, что я написал в пустоту. Единственный вариант бота, который повысит мою лояльность — это который ничего мне сам не пишет, но выделяет отзывы, которые требуют ответа живого человека, и призывают правильного человека, который ответит по делу.

Практическое использование автогенерации музыки

Ссылка Open in RockDice Application не повторят того звучания, которое воспроизводится в веб версии. Видимо не все параметры передаются, а только аккорды.

Впихнуть невпихуемое

Джеф Раскин одобрил бы! Настоящий зумируемый интерфейс!

Практическое использование автогенерации музыки

Купил pro версию. Подумал, что так автору будет веселее читать про хотелки, которые я выше набросал. Расстроило, что pro версия — независимое приложение, что не перенеслась история из бесплатной версии и бесплатную версию надо удалять самому.
Мне, как пользователю, приятно один раз заплатить на всю жизнь, но для автора такая модель не очень выгодна — будет расти масса пользователей, которые считают, что ты им, вроде как, что-то должен (они ж заплатили), а профита с них никакого больше нет. В долгосрочной перспективе любой вариант подписки будет выгоднее. Если не классическая помесячная подписка, то в этом приложении можно продавать паки — 1000 мелодий за 100 р., 10000 за 300 р. Хотя, чтобы такое работало, нужно, чтобы пользователи надолго привязывались к приложению. Пока это одноразовая игрушка и one time payment предпочтительнее.
Кстати, возможность фонового проигрования, лучшее качество звука и избранное/плейлисты — это хорошие различия для pro и lite версии.

Практическое использование автогенерации музыки

В приложении не хватает возможности добавлять мелодии в избранное, чтобы позже вернуться к тому, что мне выкинул рандом и мне понравилось. Или я не нашёл? И историю сохранять. Если я вдруг решу, что предыдущий вариант, вообще, был ничего по сравнению с новым. Увидел кнопку истории, но избранного/плейлиста не хватает.
Ползунка Tempo на главном экране не хватает (и отображения численного значения bpm). А что делает цветной ползунок я на слух не понял — я не музыкант.
По поведению, оно должно больше походить на плеер. Не выключаться, когда блокируется экран или переключаешься на другое приложение.
Если добавите автопереключение на следующий рандомный вариант через определённое время (типа переключение треков), то под него можно даже работать. Плюс свой плейлист из сохранённого.
Есть ощущение, что слушаешь низкобитрейтную mp3. Где-то между 96 и 128 kbps. Это мне кажется, или можно поднять качество? Какой-то чистоты в звуке не хватает.
Вообще, прикольная вещица, но пока она не ведёт себя как плеер она не понадобится мне надолго, так, что, скорее всего, когда закончится 50 вариантов до рекламы я уже потеряю к ней интерес и конверсии из меня никакой не будет. Но потенциал есть. Все мелодии, которые мне выкинул рандом мне в той или иной степени понравились. Вау-эффект был!

Война миров во вселенной IoT/IoE — доколе?

IoT → IoE — А буква S осталась на своём месте!

.NET Core Workers как службы Windows

Ещё нужно поставить правильный RuntimeIdentifier в проекте, например win7-x64. Иначе предполагается, что код должен запускаться на любой платформе (включая Mac и Linux), тогда выбирается версия System.ServiceProcess.ServiceController.dll в которой ServiceBase на всё бросает PlatformNotSupportedException.

<Project Sdk="Microsoft.NET.Sdk.Worker">

  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <RuntimeIdentifier>win7-x64</RuntimeIdentifier>
    <OutputType>Exe</OutputType>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.Extensions.Hosting.WindowsServices" Version="3.1.9" />
  </ItemGroup>
</Project>

.NET Core Workers как службы Windows

UseServiceBaseLifetime() был переименован в UseWindowsService() в релизной версии .NET Core 3.0

public class Program
{
    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .UseWindowsService()
            .ConfigureServices(services =>
            {
                services.AddHostedService<Worker>();
            });
}

Как мы приучили коллег брать вещи без спроса

Т.е. поставив автомат вы уволили несколько сотрудников, или просто стали им меньше платить?

Разбор демки на 128 байт из архива 1997 года

Я в студенчестве экспериментально выяснил, что минимальня программа которая запускается, состоит из одного байта. Это символ 'b' в ASCII. Т.е берём блокнот, пишем в нём одну букву b, и сохраняем как b.exe. Сейчас в Windows 10 не работает, но в XP ещё работало. Запускалась консоль и курсор хаотически помаргивал в начале экрана. Может кто объяснить, за счёт чего эт работало?

Как маркетинг мешает быстрее заряжать ваши смартфоны

Надо все рассчёты производить в ваттах, а не в амперах. Эти амперы соотносятся с разным напряжением. С одной стороны 5.2 В от USB (если без QC или PD), а с другой от 2.7 до 4.4 В на аккумуляторе. И большинство зарядок сейчас выдают 2 А и большинство телефонов их принимают. Надо только, чтобы кабель по дороге вольты не растерял. Тогда получается, что 3000 мА*ч аккумулятор разряженный до 2.7 В при заряде током 1 C потребляет как раз столько, сколько доходит от 10 ваттной зарядки с учётом КПД преобразователя напряжения в телефоне.

Купил!=твоё: John Deere лишает фермеров прав ремонтировать свои собственные тракторы

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

Что каждый программист на C должен знать об Undefined Behavior. Часть 3/3

C# в данном случае справляется: он говорит, что инициализация переменной возможно не выполнится (т.к. она под if-ом с не константным условием и в else её тоже не производят) и требует проинициализировать переменную при всех возможных путях выполнения. Это заставит меня сделать одно из двух: либо сразу написать int i = 0, либо занести второй if под первый. В данном случае я скорее сделаю второе. Это никак не повлияет на производительность, но теперь этот код будет отражать логические отношения между кондишенами. И даже в том случае, если они изменятся код останется валидным и без UB.

Короче правильный ответ, вероятно, такой: изначально таких проверок не было т.к. в то время компиляция и так была медленная, а теперь их нет т.к. если добавить, то перестанет компилится огромная база существующего кода.

А рассуждения, что вот поэтому С++ может так хорошо оптимизировать инструкции, как-то сомнительно звучат. Было бы больше структурных проверок на этапе анализа — можно было бы больше предположений доказать на этапе компиляции, можно было бы выкинуть больше проверок…

Что каждый программист на C должен знать об Undefined Behavior. Часть 3/3

Почему в принципе есть возможность успешно скомпилировать программу обращающуюся к неинициализированной переменной на чтение хоть с какими-то настройками компилятора? Ну и тот же вопрос про весь класс подобных «простых» UB.
Я понимаю, что это практически вопрос почему C++ не C#, но какая польза в том, чтобы C++ не был в этом аспекте Си-шарпом? Какой смысл начинать делать оптимизации, если в первую очередь здесь не известно какой должен быть результат?

Обыскать 314 км² за 10 часов — финальное сражение инженеров-поисковиков против леса

Согласен. Но тут нужны облака и техника безопасности запрещает разбрасывать по лесу лазеры больше 5 мВт.

Обыскать 314 км² за 10 часов — финальное сражение инженеров-поисковиков против леса

Где-то читал, что в морской спасательный набор входит лазер, который светит линией, как в лазерном уровне. Если ты хочешь себя обнаружить, то надо линию вдоль горизонта направить. Это эффективнее, чем водить фонариком. Можно маяк оснастить таким лазером и написать инструкцию — выйди на открытое место и медленно сканируй лазерной полосой небо. На беспилотнике поставить камеру с фильтром на длинну волны этого лазера. Вероятно можно выбрать диапазон, наверное ИК, в котором прозрачны облака и туман. Тогда беспилотники можно поднять повыше и ждать пока моргнёт пиксель на камере с фильтром.

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity