LINUX.ORG.RU

23
Всего сообщений: 103

Почему все учат Python, мне он не нравится. Мне нравится C#

Почему все учат Python, мне он не нравится. Мне нравится C#, но все учат Python, логично предположить, что в дальнейшем на нем будут написаны тонны говнокода которые придётся кому-то поддерживать, что сделает Python второй Джавой, т.е без работы не останусь. Но мне нравится .NET с Blazor. Почему для веба все тащатся от Джанго, когда там фронт один фиг надо на реакте каком-нибудь бахать. MVC уже никому не продашь.

Перемещено Zhbert из web-development

 , , ,

Shniv ()

Где взять исходники mscorlib на С++?

Конкретно вот это интересует https://github.com/Unity-Technologies/SimpleUIDemo/blob/master/Tiny3D/Library/DotsRuntimeBuild/artifacts/Stevedore/il2cpp/libil2cpp/icalls/mscorlib/System/Decimal.cpp На гитхабе под сотню Васянов где-то нашли и залили себе в репу эти сырцы. Где они их взяли? У mono и мелкомягких поскачивал sdk, но там этого нет внутри.

 , ,

foror ()

Хочу портировать System.Decimal в Java

Нужен нормальный класс для работы с деньгами, но BigDecimal избыточен, в том числе для хранения в оперативке и в БД. Посмотрел javamoney FastMoney - он убог на нем дальше фиата не уедешь (да и то с натяжкой), а мне нужно ещё битки и прочие эфиры (18 знаков после запятой) калькулировать.

И тут глянул C# System.Decimal - подходит идеально. Единственно смутило, что вся реализация вынесена в Си. Но там я глянул, вроде ничего сверхъестественного или JIT шарпа настолько убог, что решили не рисковать?

В общем, жду напутствия, может я какой велосипед изобретаю?

 , ,

foror ()

Мертв ли C# и Java?

Привет всем, дорогие форумчане.

Я постараюсь максимально конструкутивно донести свою идею, сорри если кому-то не понравится.

Я - человек со стажем в 5 лет программирования на Шарпе. Изучал не только его, ес-но.

Читал Эванса, его книги по DDD. Изучал многие другие практики, как CQRS+ES, читал Фаулера, имел опред. успех в работе.

Но, в итоге ушел :) в Раби… Прошу, не обоссывайте за эту фразу - я за нее поясню. А если точнее в нескольких языков и платформ… Теперь, по-подробнее.

За время моей эволюции, я понял, что C# и его экосистема не так уж хороши. И спасибо, тут наверное, можно сказать мировому тренду в мир Docker/K8S. Ведь, именно благодаря им - я осознал насколько все-таки, M$-продукция - лажова. Но… Это в какой мере касается и Java.

Меня перестало устраивать их качество, их направление развития. Я считаю их - мертвыми. Для своего времени, как более легкий порог входа и обхода C/C++ - они сыграли свою роль.

Но, вот… Посидев и посмотрел, как условно работают C#/.NET/Dapper, даже если ты не доверяешь ОРМ и пишешь сам параметризированные SQL-запросы и оформляет, как repository… Все равно, это колымага проигрывает по производительности С/C++/libpq (если PgSQL юзается, хотя справедливо и относительно другого)…

В целом, делать SOLID, DDD, CQRS/ES можно даже и на Ruby с Питоном, и это совсем не шутки.

Я понял, насколько все C#/Java - это неудобные инструменты… При этом в последних своих версиях, видимо создатели данных языков решили внести все, что можно в языки. Извратив их и превратив в какой-то швейцарский нож, но получился не швейцарский…

В итоге… Картина такая: что порог входа выше, чем для Golang, Ruby, Python. А в плане производительности .NET/JVM, хоть ты их тюнь 100500 раз - очень сильно проигрывают. А если, вы начнете тюнить приложения с C/C++, Python, Ruby - так они лучше картину покажут…

Спасибо, конечно Шарпу - что меня заставил учить GoF, DDD/CQRS+ES… Теперь эти знания можно применить в других языках, и сидеть на Linux only env.

В итоге, я для себя сделал вывод:

  1. Хочешь клепать фичи по-быстрому для PoC/MVP - Ruby или Python.
  2. Хочешь интересно дизайна ПО - Haskell.
  3. Хочешь high load - C/C++.
  4. Обязательно Linux, забыть про Windows.

PS: дядя шарпист уходит в нирвану Linux. PS2: да, я понимаю что это ЛОР, понимаю что наверное меня кто-нибудь обоссыт за такие выводы… Ну и ладно, зато я сказал - как есть, что на душе. Желаю всем перейти на Linux. PS3: Шарпист, если ты читаешь этот пост - бросай его перейди на Kotlin, Java… не знаю, если перейдешь - потом перейдешь на Haskell, Elixir или др., главное!!! держись подальше от корпораций M$ и Oracle PS4: таки, вспомнил за что еще не люблю Жабу… от нее веет enterprise, и всякие OracleJDK позорят ее… да, есть OpenJDK… но… PS5: всем - добра, peace

 , , ,

hazkel ()

Встретил девушку, теперь хочу перейти с Java на C#

Это нормально? Что это значит?

 , ,

SaBo ()

git submodules?

Есть необходимость написать кросс-платформенное приложение (а конкретно, оно должно работать на виндовсе и андроиде). Javascript/Typescript - я в него плохо умею. Остается Xamarin/Unity. Наверное?

Если остается Xamarin/Unity (Unity есть в ТЗ как возможная необходимость, потому что под него есть какой-то код, который, возможно, необходимо использовать, но я подозреваю, что этот код не Unity-specific, а просто .NET/Mono). Я не хочу Unity.

Кроме того, меня всегда смешили эти MVC от iPhone/Objective-C. Там же всегда один View, для каждого Controller, он никогда не меняется.

А тут вроде можно сделать правильный MVC/MVVM/как_звал_так_звал. C#/.NET/Mono код это Model/Controller или Model/ModelView, а Unity/Xamarin - это View.

Писать это все мне одному, как хочу, так и сделаю. Как я думаю:

  1. Сделать отдельный проект C# dll с MV/MVM
  2. Сделать отдельный проект Unity/Xamarin и туда руками кидать dll

Или

  1. Сделать отдельную репо с C# кодом
  2. Подключить ее как submodule в еще одной репе с Unity/Xamarin

Я помню, что в git submodules есть такое неудобство, что каждый раз, когда изменяешь код в submodule и коммитишь его - необходимо делать отдельный коммит к Unity/Xamarin репе, типо «bump submodule reference commit»

Можно еще проще:

  1. Сделать отдельное репо с C# кодом
  2. Сделать отдельное репо с Unity/Xamarin кодом и просто знать, что необходимо коммитить туда/cюда.

Я делал решения 1, 2 и 3. Ну т.е. я участвовал в проектах где делалось и так и так.

Может можно еще как-то по четвертому? Perforce у меня нету и он кажется за деньги. Писать это все мне - т.е. как сделать так, чтобы было удобно мне? Я не хочу, на этой стадии выбирать между Unity и Xamarin. C# похоже мне навязан из-за гипотетической необходимости использовать код от китайской железки, в которой есть примеры для Unity (подозреваю, что они не Unity-specific, а C#/.NET/Mono).

Как бы вы сделали?

PS И да, интересно услышать альтернативы на случай, если код от китайской железки окажется не нужен. Typescipt/AngularJS/Vue.js/Electron/вот это все? Или там Corona/Lua какая?

 , , ,

dissident ()

Gui под Linux c#

Можно ли писать gui под линукс на c# по типу wpf. И если можно то как?

 

Artem123 ()

emacs и LSP-mode

Не получается подружить Emacs с lsp-mode и сервером(c#).

Стоят Flycheck, Company, lsp-mode. Вот скрин: https://ibb.co/7RXRgXZ

Если бросать hook на omnisharp, то всё вроде работает (не полностью переходы, не полностью документация).Документация показывается в минибуфере, как поднять не знаю. С Flycheck поставил flycheck-popup-tip и стало приятнее.

Не могу найти годной статьи по настройке Emacs для полноценной разработки на C# и веб. С вебом разобрался, наверное (Tide и 28 версия Emacs).

Кто настраивал lsp и что делал? При первом запуске он спрашивает о сервере, я делал M-x lsp-csharp-update-server и оно качало в cache последнюю версию. При выборе файла сервер подгружается, но автодополнение через сервер не работает, проверка ошибок тоже.

P.S. Как в MELPA обновляются пакеты? Вот на github пришла коррекция 5 часов назад, как раз на csharp модуль. Когда она попадёт в пакет? Или уже? https://github.com/emacs-lsp/lsp-mode/commit/0db4180667a0418126d588586a56c3e568a0f0ff

P.P.S Web-mode и проверка HTML, кто как проверяет? Я пробовал с tidy, но эта штука ругается на custom tags. Есть ли проверка просто на HTML-mode?

 , ,

Vault_Boy ()

Нормализовать ссылку на youtube через regex

Перед записью ссылок в БД хочу нормализовать их, чтобы находить дубли. У ютубчика есть много разных форматов ссылок, которые ведут на одно и то же видео. Например:

youtube.com/watch?v=Bo_F8KTEpss
youtube.com/embed/Bo_F8KTEpss
youtu.be/Bo_F8KTEpss

youtube.com/watch?v=Bo_F8KTEpss?t=1113
youtube.com/embed/Bo_F8KTEpss?t=1113
youtu.be/Bo_F8KTEpss?t=1113

Хочу с помощью регулярки вырезать Bo_F8KTEpss, чтобы потом сгенерировать ссылку в нужном формате. Помогите запилить регулярку, чтобы провернуть всё это дело. На всякий случай скажу, что пишу на c# под dot net core. Я не знаю, что там за движок регулярок.

 , ,

ox55ff ()

Beta-тест C# анализатора PVS-Studio на Linux и macOS

Всё больше пользователей C# анализатора PVS-Studio интересуются возможностью его использования для проверки C# кода на Linux и macOS. И сегодня у нас хорошие новости.

Мы ведём активные работы по портированию нашего C# анализатора на платформу .NET Core, а также занимаемся обеспечением его работоспособности на Unix’о-подобных ОС. В наших планах выпустить PVS-Studio C# для .NET Core на платформах Linux и macOS в конце апреля - первой половине мая 2020.

Мы планируем начать бета-тест в начале-середине апреля. Если вам интересно принять в нём участие, заполните эту форму: https://www.viva64.com/ru/pvs-studio-eap/

Когда beta тест стартует, мы вышлем вам инструкции по установке анализатора и пробную лицензию.

 , , ,

Andrey_Karpov_2020 ()

osu!lazer теперь выходит в AppImage

Ъ: https://github.com/ppy/osu/releases/tag/2020.221.0

Игра кроссплатформенная благодаря использованию .Net Core, но официальных сборок для Linux до этого не выходило.

 , , , ,

commagray ()

beef - новый системный ЯП

https://www.beeflang.org/

Особенности:

  • По заявлению автора, представляет собой смесь C++ и C#, с небольшими вкраплениями Rust.
  • Без GC, JIT и тому подобного.
  • Развивается параллельно с IDE (написана на самом beef и собственном тулките). Дизайн языка развивается с учётом удобства разработки IDE.
  • Автор делает упор на удобную отладку с помощью дебаггера, а не print.
  • Умеет все модные фичи: ADT, pattern matching, лямбды, дженерики, миксины, кортежи, опциональные типы и тд. Но не гарантирует null-safety.
  • Поддерживает рантайм рефлексию.
  • Не использует исключения. Используется тот же подход что и в Rust: Result + panic.
  • Проверяет проблемы с памятью в рантайме в отладочной сборке. В релизной сборке всё как в C/C++.
  • Предоставляет лёгкое взаимодействие с C/C++ кодом (не уверен в каком виде).
  • Основан на ворованном LLVM. Как будто кто-то сомневался.
  • Автор пилит язык последние 5 лет full-time.

Простой пример:

static Result<uint> GetMinusOne(uint i)
{
    if (i == 0)
        return .Err;
    return .Ok(i - 1);  
}

void Use()
{
    /* Handle result via a switch */
    switch (GetMinusOne(i))
    {
        case .Ok(let newVal): Console.WriteLine("Val: {}", newVal);
        case .Err: Console.WriteLine("Failed");
    }

    /* This invokes an implicit conversion operator, which will be fatal at runtime if an error is returned */
    int newVal = GetMinusOne(i);

    /* Result<T> contains a special "ReturnValueDiscarded" method which is invoked to facilitate failing fatally on ignored returned errors here */
    GetMinusOne(i);
}

В целом ближе к D, чем к Rust, так как содержит намного меньше гарантий.

 , ,

RazrFalcon ()

C# 9 опережает Rust?

Тут выложили обзор фич C# 9, и там очень много ФП и странного синтаксиса (привет @WitcherGeralt).

Sum Types:

enum class MixedType  
{  
  Person P;  
  ByteOrBool U;  
}

var person = new Person()  
{  
  Firstname = "Bassam";  
  Lastname = "Alugili";  
};  
  
var unionRecord = new MixedType.P(person);
var unionType1 = new MixedType.U(B true);
var unionType2 = new MixedType.U(Y 86uy);

Pattern matching:

public class GenericClass<T> where T : T1 | T2 | T3 

var crazyCollectionFP = new List<int|double|string>{1, 2.3, "bassam"}; 

var result = x switch { true => "Successful", false => 0 }; 

Типы аля Rust:

public class None {}  
public typealias Option<T> = T | None; 
public typealias Result<T> = T | Exception; 

Некое чудо-юдо для автоматической проверки на null:

void M(List<int> list, uint? u)  
{  
  IEnumerable<int> x = list ?? new[] { 1, 2 };  
  var l = u ?? -1;
}  

Что значит uint? - без понятия.

Проверка аргумента на null:

void DoSomething (string txt!)  
{  
  …  
} 

Lambda discard parameters (хз как перевести):

Func zero = (_,_) => 0;  
(_,_) => 1, (int, string) => 1, void local(int , int);

Атрибуты аргументов (опять как в rust):

static bool LocalFunc([NotNull] data)  
{  
  return true;  
} 

Нативный int:

nint nativeInt = 55; // take 4 bytes when I compile in 32 Bit host.  
nint nativeInt = 55; // take 8 bytes when I compile in 64 Bit host with x64 compilation settings.

nuint nativeUnsignedInt = 55; 

А @eao197 говорил, что u32 - это дно. Оказывается нет.

Указатели на функцию (неужели до этого не было?):

unsafe class Example  
{  
  void Example(Action<int> a, delegate*<int, void> f)  
  {  
    a(42);  
    f(42);  
  }  
} 

В целом радует, что идут в сторону ФП и null-safety, но в итоге получаем второй C++, в котором на любой чих есть с десяток конструкций. Что в конечном итоге убивает экосистему.

 , ,

RazrFalcon ()

Минcк, Middle/Senior QA, $2000

Минск, позавчера нужен мидл или сеньор QA (автоматизация мастхэв)

Аутсорс с более-менее лицом, проект долгоиграющий и довольно большой, feature-команда, процессы налажены, садись и работай. CI/CD, автоматизация, webdriver, restsharp, небольшая команда приручённых разработчиков, scrum, отэтавсё.

По технологиям – продукт мелкософтовский, тесты – C#, CI в Azure Devops, тесты там же. На рабочем компе можете иметь хоть гейось, хоть linux, жить это не особо мешает.

По требованиям – хоть какой-то опыт в автоматизации вебни, знание C#, английский, понимание что куда прикладывается в QA. Опыт работы с MSовским стэком – большой плюс.

Ищу на своё место, перед уходом всё покажу-расскажу, экскурсию по офису устрою, кресло нагрею. По деньгам – зависит от попадания в вакансию, как минимум рынок дадут (в заголовке средняя с dev.by, да). Страховка, печеньки – как везде, контора ПВТшная, всё белое, график человеческий, овертаймы не в ходу. Не опенспейс, матом в кабинете ругаться можно.

xmpp: brat_radist@jabber.ru, телега: @pavelse16, телега предпочтительнее, особенно в нерабочее время

 , , ,

a769023c ()

Вопрос по Renci.SshNet

Добрый день.

using Renci.SshNet;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SshClient10
{
    class Program
    {
            using (var client = new SshClient("10.1.1.1", 22, "maintainer", "12345678"))
            {
                client.Connect();
                var cmd = client.RunCommand("echo -e '12345678\n' | sudo su");
                if (cmd.ExitStatus == 0)
                    Console.WriteLine(cmd.Result);
                else
                    Console.WriteLine(cmd.Error);               
                client.RunCommand("shutdown -h now");
                client.Disconnect();
            }
    }
}

cmd.Error «sudo: нет tty и не указана программа askpass\n»

Вот этот год не выполняется.

Гуглю почему... судя по всему соединение проходит, но система не понимает что первая и вторая команды связаны.

 ,

Shulman ()

Можно ли научить консоль отправлять сообщения в Viber

Добрый день.

Думаю, а что мы все сообщения о системных событиях у себя все на email да на email.

Вчера гуглил, но куски кода которые находил для C# не смог встроить в проект.

Хочу любой из dot net фреймворков (или mono) и написать код, чтобы без фанатизма... и слать сообщения прямо в Viber.

Такое вообще возможно?

 , ,

Shulman ()

Помогите разобраться с SSH.NET

Есть проект https://github.com/sshnet/SSH.NET

Я не пойму какие файлы перенести в свой проект, чтобы у меня появился доступ к функциям данного проекта.

Хочу написать приложение для .Net Core, но не получается включить в свой проект пространство имен.

Все время не хватает каких то объявлений.

 , ,

Shulman ()

ASP.NET Core готово ли для производства?

Всем привет товарищи программисты! Поделитесь пожалуйста с мнением по поводу дотнет кора? Кто-нибудь использует его на производстве? Стоит ли инвестировать свое время на изучения оного? Для бекенда?

 , , ,

Deleted ()

Обеспечивает-ли сетевой протокол QUIC гарантию доставки данных ?

Собственно, вопрос.

Решил я тут в один сервис в своём рукожопом ынтерпрайзе внедрить передачу данных по какому-нибудь протоколу отличному от TCP, так как накладные расходы большие, мультиплексирование логических соединений - это вообще отдельная пляска вприсядку с костылями, и система антиддоса у VPS провайдера, походу, временами начинает возбуждаться на сильно нестандартные настройки TCP (для обеспечения максимальных скоростей). А данных передавать надо много и быстро.

В общем, вспомнил я про такую штуку как QUIC. И вроде, навскидку, вещь всем хороша и мне подходит, кроме того что сходу я так и не смог нагуглить - обеспечивает-ли эта балалайка гарантию доставки данных (или хотя-бы очередность). А тратить время на тесты и интеграцию библиотеки через интероп в свой проект на C#/Mono как-то не хочется.

Может кто из местных знатоков уже работал с данной хреновиной, и может поделиться опытом ?

Вот реализация, которую планирую тестировать: https://github.com/ngtcp2/ngtcp2 . Если кто-нибудь работал с этой или другой реализацией - если не сложно, расскажите вкратце, какие проблемы у вас были.

 , , , ,

DawnCaster ()

Что выбрать для изучения?

Доброго времени суток всем. Пишу сейчас на Python + Flask + SQAlchemy. Иногда Django. Т.е по части backend. Появилось сейчас частичка свободного времени и захотелось попробовать что-то новое. Из того, что привлекает, есть на выбор Go или же C# + ASP.NET Core. Кто что посоветует? Особенно актуально от тех, кто писал и на том, и на том.

P.S Так же как обстоят дела в .NET с использованием Postgres? Или в целом по рынку стандарт MSSQL?

 , , ,

crarkie ()