Эшу быдлокодит

Description
Гитхаб: https://github.com/vladzvx
Навигация по каналу:
#телеграм - о телеге и ботах
#csharp - о шарпе
#кодинг - разное об IT
#проекты - мои проекты
#mongo
#tarantool
#postgresql

Стек: C#, PostgreSQL, Tarantool, MongoDB, RabbitMQ
Advertising
We recommend to visit

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 недели назад

2 months, 2 weeks ago

К своему стыду не осознавал применительно к работе и играм сего подхода: если уверен в успехе - не выпендривайся:

2 months, 2 weeks ago

Не люблю доту, но с автором согласен ⬆️

2 months, 2 weeks ago

К своему стыду не осознавал применительно к работе и играм сего подхода: если уверен в успехе - не выпендривайся:

5 months, 1 week ago

Кстати сегодня день рождения .NET Core (да, тогда он назывался так).
27 июня 2016го года - день релиза .NET Core 1.0 :)

5 months, 1 week ago

Некоторое время назад потыкал питоновские фреймворки на предмет быстрого создания веб апи. Мои требования:
1. Сваггер с описаниями методов и полей.
2. Типизированные модели, чтобы всякий мусор присылаемых извне отваливался на этапе десериализации.
3. Упаковка проекта в докер, желательно из коробки.

Этот набор требований - то что в c# даётся из коробки в шаблоне проекта.

Сначала я попробовал по старой памяти потыкать Flask. Читаю про сваггер. Можно подключить его десятком разных способов, в некоторых случаях мне предлагают прицепить yml описание методов.

Посмотрел в Django. Оказывается все не так плохо как несколько лет назад: туда завезли асинхронщину, не прошло и 10 лет. Сваггер описывается вроде нормально. Но тащить весь джанговский зверинец вместе с MVC для легковесной апишки мне запрещают религиозные убеждения. Плюс Django надо отдельно изучать, шарповый опыт не особо помогает понимать происходящее.

Попробовал новую для меня библиотеку - FastApi. Она вошла в употребление уже после того, как я полностью ушел от питона и она меня приятно удивила: все мои требования были удовлетворены в течении часа.

Все бы ничего, но возник вопрос: а питон - это точно про сделать что-то без боли и мучений?

6 months, 1 week ago

Тут против России внезапно ввёл санкции докер. По утру отвалилась сборка контейнеров, завязанных на DockerHub. Проектов на c# это не коснулось: базовые образы тянутся с сайта Microsoft.

Решений у проблемы несколько:
1. Использовать vpn на сервере для сборок.
2. Использовать свежезапущенный проект хуёкер: https://huecker.io/
3. Закешировать нужные для сборок базовые образы у себя в экосистеме и либо переписать докерфайлы, чтобы они тянули с ваших хранилищ, либо понадеятся на кеширование самого докера.

UPD. Я бы пока не стал пользоваться хуёкером, ибо все мы помним SDEK. А вот зеркалом Гугла (mirror.gcr.io)- вполне.

7 months, 3 weeks ago

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

Вчера пришла идея - было бы неплохо управлять ютубом с телефона. Нужны включение нового видео и постановка на паузу. Прикинул решение - самым простым показалось использование использование телеграм бота в качестве виндовой службы, управляющей браузером через 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.

У нас нет телевизора в общепринятом смысле: с каналами и антенной. Есть мини компьютер с виндой, к которому подключен настенный …
7 months, 3 weeks ago

pl/dotnet Для PostgreSQL появилась поддержка C# и F# как языков процедур. Внутри используется модифицированная библиотека Npgsql, в которой сетевые вызовы заменены на прямые вызовы функций бд. Это позволяет писать в хранимых процедурах такой же код, как…

7 months, 3 weeks ago

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 …

We recommend to visit

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 недели назад