Last updated 1 год, 6 месяцев назад
Крупнейший туроператор
Телефон: +998712017777
Instagram: instagram.com/asialuxe.travel
Facebook: facebook.com/asia.luxe.travel
🕋 Умра: t.me/asialuxe_umra
⛰ Туры по Узбекистану: t.me/asialuxeuz
Last updated 2 недели, 6 дней назад
KANALIMIZGA XUSH KELIBSIZ!?
KANALIMIZDA:
?Eng zor retseptlar
?Eng Yangi Fasonlar
?Foydali Video lifehacklar
?Roʻmol oʻrash usullari
?Soch turmaklari Makiyaj
KANAL ADMINI @AFZUNNA
Reklama: @AyollaruchunRek
Last updated 2 месяца, 3 недели назад
К своему стыду не осознавал применительно к работе и играм сего подхода: если уверен в успехе - не выпендривайся:
Не люблю доту, но с автором согласен ⬆️
К своему стыду не осознавал применительно к работе и играм сего подхода: если уверен в успехе - не выпендривайся:
Кстати сегодня день рождения .NET Core (да, тогда он назывался так).
27 июня 2016го года - день релиза .NET Core 1.0 :)
Некоторое время назад потыкал питоновские фреймворки на предмет быстрого создания веб апи. Мои требования:
1. Сваггер с описаниями методов и полей.
2. Типизированные модели, чтобы всякий мусор присылаемых извне отваливался на этапе десериализации.
3. Упаковка проекта в докер, желательно из коробки.
Этот набор требований - то что в c# даётся из коробки в шаблоне проекта.
Сначала я попробовал по старой памяти потыкать Flask. Читаю про сваггер. Можно подключить его десятком разных способов, в некоторых случаях мне предлагают прицепить yml описание методов.
Посмотрел в Django. Оказывается все не так плохо как несколько лет назад: туда завезли асинхронщину, не прошло и 10 лет. Сваггер описывается вроде нормально. Но тащить весь джанговский зверинец вместе с MVC для легковесной апишки мне запрещают религиозные убеждения. Плюс Django надо отдельно изучать, шарповый опыт не особо помогает понимать происходящее.
Попробовал новую для меня библиотеку - FastApi. Она вошла в употребление уже после того, как я полностью ушел от питона и она меня приятно удивила: все мои требования были удовлетворены в течении часа.
Все бы ничего, но возник вопрос: а питон - это точно про сделать что-то без боли и мучений?
Тут против России внезапно ввёл санкции докер. По утру отвалилась сборка контейнеров, завязанных на DockerHub. Проектов на c# это не коснулось: базовые образы тянутся с сайта Microsoft.
Решений у проблемы несколько:
1. Использовать vpn на сервере для сборок.
2. Использовать свежезапущенный проект хуёкер: https://huecker.io/
3. Закешировать нужные для сборок базовые образы у себя в экосистеме и либо переписать докерфайлы, чтобы они тянули с ваших хранилищ, либо понадеятся на кеширование самого докера.
UPD. Я бы пока не стал пользоваться хуёкером, ибо все мы помним SDEK. А вот зеркалом Гугла (mirror.gcr.io)- вполне.
У нас нет телевизора в общепринятом смысле: с каналами и антенной. Есть мини компьютер с виндой, к которому подключен настенный экран. С него мы включаем детям мультфильмы с флешки или видео про природу или рыбалку с Ютуба.
Вчера пришла идея - было бы неплохо управлять ютубом с телефона. Нужны включение нового видео и постановка на паузу. Прикинул решение - самым простым показалось использование использование телеграм бота в качестве виндовой службы, управляющей браузером через PowerShell. В можно было бы вспомнить/изучить нативную виндовую часть c# и сделать все по фен-шую, но желания не было от слова совсем. В итоге для отправки в браузер горячих клавиш Ютуба - F (полный экран) и K (пауза) - бот запускает скрипт PowerShell из строковой переменной:)
Какая там разработка банковского ПО или СППВР! Вот - настоящая магия, приносящая удовлетворение: три часа и получившийся мутант запущен в качестве консольного приложения. Осталось спрятать окно так, чтобы не мозолило глаза...
После 6 часов мучений я узнал что надо внимательно читать мануалы. А кроме того, ряд нюансов по написанию виндовых служб на современном c#:
1. Чтобы запускать обычный шарповый серверный проект в качестве службы надо дополнительно ставить пакет. Microsoft.Extensions.Hosting.WindowsServices
2. Фреймворк мне нужен не просто .Net 8, а net8.0-windows и никак иначе!
3. В коде также надо специально указать, что я хочу именно виндовую службу: builder.Services.AddWindowsService.
4. Компилировать надо обязательно в релиз х64.
В итоге я уперся в то, что виндовые службы не имеют доступа к десктопным приложениям, приплыли. Вообще, обходные пути есть - например эмулировать powershell внутри моего приложения и парсить консольный вывод скриптов, но это уже совсем уродство.
В итоге пришлось запускать бота внутри пустой формочки WinForms, умеющей сворачиваться в системный трей (иконку там, где язык и часы). Код выложил на гитхаб.
P.S. До чего же я рад, что Microsoft прикопали серверную разработку под винду и что я не имею ничего общего с десктоп разработкой!
GitHub
GitHub - vladzvx/youtuberunnerbot
Contribute to vladzvx/youtuberunnerbot development by creating an account on GitHub.
pl/dotnet Для PostgreSQL появилась поддержка C# и F# как языков процедур. Внутри используется модифицированная библиотека Npgsql, в которой сетевые вызовы заменены на прямые вызовы функций бд. Это позволяет писать в хранимых процедурах такой же код, как…
pl/dotnetДля PostgreSQL появилась поддержка C# и F# как языков процедур.
Внутри используется модифицированная библиотека Npgsql, в которой сетевые вызовы заменены на прямые вызовы функций бд. Это позволяет писать в хранимых процедурах такой же код, как при работе с базой через библиотеку, с привычными Npgsql типами.
`CREATE OR REPLACE FUNCTION dynamic_record_generator_srf(lim INT8)
RETURNS SETOF record
AS $$
upperLimit = lim.HasValue ? lim : System.Int32.MaxValue;
for(long i=0;i<upperLimit;i++){ yield return new object?[] { i, $"Number is {i}" }; }
$$ LANGUAGE plcsharp;
CREATE OR REPLACE FUNCTION dynamic_record_generator_srf_fsharp(lim INT8)
RETURNS SETOF record
AS $$
let upperLimit = Option.defaultValue (int64 System.Int32.MaxValue) lim
seq { for i in 0L .. upperLimit - 1L do yield [| box i; $"Number is {i}" |] }
$$ LANGUAGE plfsharp;`
https://www.postgresql.org/about/news/announcing-pldotnet-version-099-beta-2838/
https://github.com/Brick-Abode/pldotnet/wiki/pldotnet:-White-Paper
А о релизе интеграции я узнал из канала @vchirikov
@epeshkblog | Поддержать канал
PostgreSQL News
Announcing pl/dotnet, version 0.99 (beta)
# Announcing pl/dotnet, version 0.99 (beta) pl/dotnet adds full support for C# and F# to PostgreSQL. 0.99 is our public …
Last updated 1 год, 6 месяцев назад
Крупнейший туроператор
Телефон: +998712017777
Instagram: instagram.com/asialuxe.travel
Facebook: facebook.com/asia.luxe.travel
🕋 Умра: t.me/asialuxe_umra
⛰ Туры по Узбекистану: t.me/asialuxeuz
Last updated 2 недели, 6 дней назад
KANALIMIZGA XUSH KELIBSIZ!?
KANALIMIZDA:
?Eng zor retseptlar
?Eng Yangi Fasonlar
?Foydali Video lifehacklar
?Roʻmol oʻrash usullari
?Soch turmaklari Makiyaj
KANAL ADMINI @AFZUNNA
Reklama: @AyollaruchunRek
Last updated 2 месяца, 3 недели назад