Обновить
4

Пользователь

5,8
Рейтинг
Отправить сообщение

Linux - ну это вообще нереально

Как раз под никсами достаточно рута и корневик можно тихо ставить. Под виндой даже после uac подсистема спросит "вы точно хотите добавить корневой сертификат". Это мы если говорим про общий.

А для пользователя ещё проще - SSL_CERT_FILE в линуксе не требуетс рута и делается молча. Под виндой, опять же, подсистема спросит "точно добавить в доверенные"

второй лекцией в ассемблер, обсудить разные системы команд и основные приёмы работы с регистрами

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

Обожаю хабр) в одних комментариях народ обсуждается, что 128гб памяти это уже и маловато, а в других - что 4гб это прям норм)))

То, что вам интересно в офисе влияет на ROI ещё хуже, потомв что вместо работы вы будете изучать хом асистанс))

Из-за лишних созвонов, переключений и уточнений каждый теряет в среднем 20 минут в день

Вставьте в эту формулу потери в офисе от разговоров про футбол, с кем спит Маша, что лучше электричка или двс, перерывы на перекур, на поиграть в настолку, добавив сюда пятничные бухания - и вы поймёте, на сколько продуктивнее работа на удалёнке.

Если в опенчпецсе больше 10 человек, то никакого "простого онбординга" также нет

Если операторы сравнения для класса возвращают другой тип, конвертируемый в bool, то вы не сможете использовать его с функцией max — это просто не скомпилируется.

А зачем он мне?

public class MyInt

{

    private int _value;

    public MyInt(int x)

    {

        _value = x;

    }

    public static MyInt operator +(MyInt a, MyInt b) => new MyInt((a?._value ?? 0) + b._value);

    

    public static MyInt operator -(MyInt a, MyInt b) => new MyInt((a?._value ?? 0) - b._value);

    public static explicit operator bool(MyInt x)

    {

        return x._value > 0;

    }

    public override string ToString()

    {

        return _value.ToString();

    }

}

public static T Max<T>(IEnumerable<T> values)

{

    using var it = values.GetEnumerator();

    if (!it.MoveNext())

        throw new ArgumentException(values);

    dynamic max = it.Current;

    while (it.MoveNext())

    {

        if ((bool)(it.Current - max))

            max = it.Current;

    }

    return (T)max;

}

Такой же изврат (хотя если посидеть, можно и красивее, это просто в лоб), как и у вас в коде, и так же как ваш никогда не пройдет PR в нормальной команде. Потому что оно нафиг никому не надо ни в плюсах, ни в шарпе.

 притом что я сам рассказываю про эти проблемы буквально в том же предложении

Потому что вы не рассказываете, а упомянули их как "не значащие", хотя на самом деле это единственный большой минус C# (точнее фреймворка), а остальным параметрам он просто наголову удобнее линковки в плюсах. То, что не понимаете как работает линковка в шарпе и какие минусы несёт в себе cmake (про dll hell вы предпочли не заметить) - ну это ваши проблемы.

Для значимых типов перестаёт использоваться boxing? Или куда-то пропадает рантайм каст к нужному типу?

Где это всё в моем и вашем примере?

Абсолютно не читаемо". Это опять демагогия.

Угу, так и есть, потому взял ваш стиль, у вас вся статья такая - "мне так удобнее" :) И миллионы строк кода написанного на шарпе (и яве, там примерно тоже самое) - ну это просто все ошиблись. Можно угадаю - вы не пишите в команде?

требует физический USB-токен

Почти все поддерживают удалённое подписание кода, точно есть в DigiCert

Без нейросети это так и осталось бы идеей, так как на реализацию потребовалось бы очень много времени.

А в чём проблема? 

Проблемы всего две: абсолютно не объективно и уж тем более не беспристрастно. Вы описали кучу минусов линковки в С++, и поставили ему это в заслугу. Серьезно?

тип, наявно конвертируемый в bool

Так и основной вопрос - зачем? С учетом implicit\explicit можно возвращать bool, а операторы сделают своё дело. Вы решаете проблему, которой нет.

именно в этих примерах C# неудобен

неудобен кому? Лично вам? Некоторым, знаете ли, спать на кровати неудобно.

внутри функции объявляется именованный класс

Опять - зачем? Плодить простыни кода? Сейчас все стремятся наоборот выносить максимум классов в отдельные файлы. Такой PR точно не пройдёт никогда.

Если ничем не отличается, то почему в C# сделали 17 делегатов Func

Ну точно не для того примера, который вы привели.

да и в коде это выглядит некрасиво

А то есть в плюсах это выглядит красиво? Абсолютно не читаемо, и если нет комментариях и описания что же она там делает - придётся смотреть код. ИМХО конечно, но мне кажется 9 из 10 PR-ов с таким кодом не пройдёт в крупном проекте.

И часто вам приходится так делать?

Да, специфика разработки плагинов под существующие системы (что в плюсах лютый геморрой, к слову).

Это был не вопрос, а намек, что это всё решено в C# (ну точнее во фреймоврках) нативно

К тому же, идея не уникальна

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

800К в сутки

Почему в сутки? там нагрузка волнообразная - публикация на VC,потом на хабре, до этого в пабликах.

заплатить за лимиты к API не дешевле, чем за сервера

40К деревянных в месяц за 500 запросов за доступ с API карт, 350Р за каждые 500 следующих запросов. На 40К можно купить ОЧЕНЬ много места, даже на CDN.

на Openstreetmap

Зарубежный сервис, видимо решили не связываться. Он, кстати, лицензию нарушает: "Attribution must be to “OpenStreetMap”"

 люди, желающие добра россиянам.

ну зачем так витиевато писать, так бы и написали прямо - "Роскомнадзор" :)

нуи контингент на хабре, не приложение, а сайт

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

у меня он не открывается, так что да, это неуспех.

А у меня Ютуб не открывается, видимо еще одно не успешное приложение

что статика вся на каких-нибудь яндекс-картах держится

"Не читал, но осуждаю" (тм)

такой объем данных можно было в ОЗУ хранить на средненьком серваке.

Можете вместе с коллегой выше поднять сервер, разместить на нём пару статических файлов и натравить туда 800К пользователей. И посмотреть что будет.

Экс-СССРовскоке комьюнити конечно уникальное - под хоть сколько-нибудь успешным проектом обязательно понабегут "вывсёнетакделалиязнаюкак"-комментаторы, которые при этом ни одного приложения в своей жизни не делали и, внезапно, работаю на дядю. Вопрос - зачем?

А может, тормоза от того,

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

Сделать оверлей на Яндекс картах было куда проще и надежней

Вот если бы вы хоть раз делали такое приложение, то знали бы, что он бы уперся в лимит API через 5 минут при таких показателях аудитории.

Кстати, кто-нибудь опознал источник карт по внешнему виду?

CartoDB/basemap-styles: CARTO basemap public styles

то есть приложение с 800К пользователями - это не успешное приложение? )) Ну ОК, так и запишем )

И теперь будет что показать на вопрос "Ну и где эти ваши приложения, которые нейронка создала" )))

Государство само такой же сервис выкатило, так что думаю пронесет автора. Выборы скоро, вряд ли шуметь будут (надеюсь)

Как в С++ делается следующее:

  1. Защита от подмены библиотеки?

  2. Защита от dll hell, когда у вас 5 разных версий одной и тоже библиотеки лежит в разных местах?

  3. Выбор версии библиотеки (можно использовать любую от 2.0.0.0 до 2.9.0.0, или только определенную)

В C#, чтобы подключить библиотеку, вам достаточно выполнить команду 

А потом оказывается, что эта библиотека не совместима с текущим рантаймом. Удачи подключать библиотеки .net framework в .net core > 3. Примерно тоже самое касается .netcore - .net standard.

Это стирает границы между платформами и позволяет переносить компоненты приложений с одной ОС на другую

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

Но даже с учетом того ставить балл здесь за С++ - это конечно интересный вывод. Сову порвало :)

Из-за этого в C++ слишком легко допустить маленькую ошибку, которая приведёт к большим последствиям

Ну да, поддерживаю, к черту продавать Феррари - малейшая ошибка и ты улетел в столб (сарказм, понятное дело)

Интерфейс Disposable

А еще там есть такое замечательное исключение, как HttpClient.

то в C# операторы сравнения должны возвращать именно bool и ничто иное

Очень спорно, как минимум есть implicit/explicit (или я не понял идею тут). Вообще вся эта секция немного притянута за уши, КМК. Тут как раз-таки C# намного более удобен и по синтаксису, и по ограничениям - при вызове функции сразу видно что в неё передавать и что ожидается, не нужно лезть в код или читать комментарии.

чтобы всё было чисто и аккуратно,

Долго смеялся )))) мы точно про C++ , где есть define? ))) А еще громче смеялся после

Нельзя объявлять классы внутри функций

:)

void for_each_arg(F&& f, Ts&&... xs){ (f(std::forward<Ts>(xs)), ...);}

и чем это отличается от:

static void for_each_arg(Action<object> action, params object[] args) {

    foreach (var arg in args) {

        action(arg);

    }

}

for_each_arg((o) => Console.WriteLine(o), 42, 3.14, "hello");

?

Формально рефлексия в C++ есть, и через несколько лет, когда её доделают, она будет лучше, чем в C#, так что это 8:0 в пользу C++

Ну и как через рефлексию достать значение приватного свойства в С++, объявленного в другой подключаемой библиотеке? А статья так хорошо начиналась.....

1
23 ...

Информация

В рейтинге
1 343-й
Зарегистрирован
Активность

Специализация

Фулстек разработчик, Системный инженер
Старший
TypeScript
C#
SQL
Git
REST