Как раз под никсами достаточно рута и корневик можно тихо ставить. Под виндой даже после uac подсистема спросит "вы точно хотите добавить корневой сертификат". Это мы если говорим про общий.
А для пользователя ещё проще - SSL_CERT_FILE в линуксе не требуетс рута и делается молча. Под виндой, опять же, подсистема спросит "точно добавить в доверенные"
второй лекцией в ассемблер, обсудить разные системы команд и основные приёмы работы с регистрами
Зачем? Я вот учил ассемблер и до сих пор уверен, что это абсолютно не нужные знания большунству. При желании можно самому выучить. Он нужен 5% программистов, кто реально будет делать какие-то системные вещи, остальным оно нафиг не надо. Учить надо общим вещам - алгоритмизации, бизнес-процессам, общей логике. А то выходит из института чувак, который умеет что-то там базовое на ассемблере, зато вообще ни в зуб ногой как бизнес работает, что такое документы рабочие, двух предложений связать не может. А еще оказывается, что пока он до синьера не дорастет - никто его не пустит низкоуровневый код писать.
Из-за лишних созвонов, переключений и уточнений каждый теряет в среднем 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? Или куда-то пропадает рантайм каст к нужному типу?
Где это всё в моем и вашем примере?
Абсолютно не читаемо". Это опять демагогия.
Угу, так и есть, потому взял ваш стиль, у вас вся статья такая - "мне так удобнее" :) И миллионы строк кода написанного на шарпе (и яве, там примерно тоже самое) - ну это просто все ошиблись. Можно угадаю - вы не пишите в команде?
Проблемы всего две: абсолютно не объективно и уж тем более не беспристрастно. Вы описали кучу минусов линковки в С++, и поставили ему это в заслугу. Серьезно?
тип, наявно конвертируемый в bool
Так и основной вопрос - зачем? С учетом implicit\explicit можно возвращать bool, а операторы сделают своё дело. Вы решаете проблему, которой нет.
именно в этих примерах C# неудобен
неудобен кому? Лично вам? Некоторым, знаете ли, спать на кровати неудобно.
внутри функции объявляется именованный класс
Опять - зачем? Плодить простыни кода? Сейчас все стремятся наоборот выносить максимум классов в отдельные файлы. Такой PR точно не пройдёт никогда.
Если ничем не отличается, то почему в C# сделали 17 делегатов Func
Ну точно не для того примера, который вы привели.
да и в коде это выглядит некрасиво
А то есть в плюсах это выглядит красиво? Абсолютно не читаемо, и если нет комментариях и описания что же она там делает - придётся смотреть код. ИМХО конечно, но мне кажется 9 из 10 PR-ов с таким кодом не пройдёт в крупном проекте.
И часто вам приходится так делать?
Да, специфика разработки плагинов под существующие системы (что в плюсах лютый геморрой, к слову).
на сколько я знаю, обсуждаемый сервис был первым и на данный момент намного более популярный
800К в сутки
Почему в сутки? там нагрузка волнообразная - публикация на VC,потом на хабре, до этого в пабликах.
заплатить за лимиты к API не дешевле, чем за сервера
40К деревянных в месяц за 500 запросов за доступ с API карт, 350Р за каждые 500 следующих запросов. На 40К можно купить ОЧЕНЬ много места, даже на CDN.
на Openstreetmap
Зарубежный сервис, видимо решили не связываться. Он, кстати, лицензию нарушает: "Attribution must be to “OpenStreetMap”"
Экс-СССРовскоке комьюнити конечно уникальное - под хоть сколько-нибудь успешным проектом обязательно понабегут "вывсёнетакделалиязнаюкак"-комментаторы, которые при этом ни одного приложения в своей жизни не делали и, внезапно, работаю на дядю. Вопрос - зачем?
А может, тормоза от того,
Вы вот положите на сервер хотя бы пару статичных файлов, натравите туда 800К пользователей, а потом расскажите нам почему он тормозит, ок?
Сделать оверлей на Яндекс картах было куда проще и надежней
Вот если бы вы хоть раз делали такое приложение, то знали бы, что он бы уперся в лимит API через 5 минут при таких показателях аудитории.
Кстати, кто-нибудь опознал источник карт по внешнему виду?
В C#, чтобы подключить библиотеку, вам достаточно выполнить команду
А потом оказывается, что эта библиотека не совместима с текущим рантаймом. Удачи подключать библиотеки .net framework в .net core > 3. Примерно тоже самое касается .netcore - .net standard.
Это стирает границы между платформами и позволяет переносить компоненты приложений с одной ОС на другую
но опять же, очень сильно зависит от рантайма и того, как было собрано приложение. В большинстве случаев вы всё равно наступите на грабли.
Но даже с учетом того ставить балл здесь за С++ - это конечно интересный вывод. Сову порвало :)
Из-за этого в C++ слишком легко допустить маленькую ошибку, которая приведёт к большим последствиям
Ну да, поддерживаю, к черту продавать Феррари - малейшая ошибка и ты улетел в столб (сарказм, понятное дело)
Интерфейс Disposable
А еще там есть такое замечательное исключение, как HttpClient.
то в C# операторы сравнения должны возвращать именно bool и ничто иное
Очень спорно, как минимум есть implicit/explicit (или я не понял идею тут). Вообще вся эта секция немного притянута за уши, КМК. Тут как раз-таки C# намного более удобен и по синтаксису, и по ограничениям - при вызове функции сразу видно что в неё передавать и что ожидается, не нужно лезть в код или читать комментарии.
чтобы всё было чисто и аккуратно,
Долго смеялся )))) мы точно про C++ , где есть define? ))) А еще громче смеялся после
Формально рефлексия в C++ есть, и через несколько лет, когда её доделают, она будет лучше, чем в C#, так что это 8:0 в пользу C++
Ну и как через рефлексию достать значение приватного свойства в С++, объявленного в другой подключаемой библиотеке? А статья так хорошо начиналась.....
Как раз под никсами достаточно рута и корневик можно тихо ставить. Под виндой даже после uac подсистема спросит "вы точно хотите добавить корневой сертификат". Это мы если говорим про общий.
А для пользователя ещё проще - SSL_CERT_FILE в линуксе не требуетс рута и делается молча. Под виндой, опять же, подсистема спросит "точно добавить в доверенные"
Зачем? Я вот учил ассемблер и до сих пор уверен, что это абсолютно не нужные знания большунству. При желании можно самому выучить. Он нужен 5% программистов, кто реально будет делать какие-то системные вещи, остальным оно нафиг не надо. Учить надо общим вещам - алгоритмизации, бизнес-процессам, общей логике. А то выходит из института чувак, который умеет что-то там базовое на ассемблере, зато вообще ни в зуб ногой как бизнес работает, что такое документы рабочие, двух предложений связать не может. А еще оказывается, что пока он до синьера не дорастет - никто его не пустит низкоуровневый код писать.
Обожаю хабр) в одних комментариях народ обсуждается, что 128гб памяти это уже и маловато, а в других - что 4гб это прям норм)))
То, что вам интересно в офисе влияет на ROI ещё хуже, потомв что вместо работы вы будете изучать хом асистанс))
Вставьте в эту формулу потери в офисе от разговоров про футбол, с кем спит Маша, что лучше электричка или двс, перерывы на перекур, на поиграть в настолку, добавив сюда пятничные бухания - и вы поймёте, на сколько продуктивнее работа на удалёнке.
Если в опенчпецсе больше 10 человек, то никакого "простого онбординга" также нет
А зачем он мне?
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 вы предпочли не заметить) - ну это ваши проблемы.
Где это всё в моем и вашем примере?
Угу, так и есть, потому взял ваш стиль, у вас вся статья такая - "мне так удобнее" :) И миллионы строк кода написанного на шарпе (и яве, там примерно тоже самое) - ну это просто все ошиблись. Можно угадаю - вы не пишите в команде?
Почти все поддерживают удалённое подписание кода, точно есть в DigiCert
Без нейросети это так и осталось бы идеей, так как на реализацию потребовалось бы очень много времени.
Проблемы всего две: абсолютно не объективно и уж тем более не беспристрастно. Вы описали кучу минусов линковки в С++, и поставили ему это в заслугу. Серьезно?
Так и основной вопрос - зачем? С учетом implicit\explicit можно возвращать bool, а операторы сделают своё дело. Вы решаете проблему, которой нет.
неудобен кому? Лично вам? Некоторым, знаете ли, спать на кровати неудобно.
Опять - зачем? Плодить простыни кода? Сейчас все стремятся наоборот выносить максимум классов в отдельные файлы. Такой PR точно не пройдёт никогда.
Ну точно не для того примера, который вы привели.
А то есть в плюсах это выглядит красиво? Абсолютно не читаемо, и если нет комментариях и описания что же она там делает - придётся смотреть код. ИМХО конечно, но мне кажется 9 из 10 PR-ов с таким кодом не пройдёт в крупном проекте.
Да, специфика разработки плагинов под существующие системы (что в плюсах лютый геморрой, к слову).
Это был не вопрос, а намек, что это всё решено в C# (ну точнее во фреймоврках) нативно
на сколько я знаю, обсуждаемый сервис был первым и на данный момент намного более популярный
Почему в сутки? там нагрузка волнообразная - публикация на VC,потом на хабре, до этого в пабликах.
40К деревянных в месяц за 500 запросов за доступ с API карт, 350Р за каждые 500 следующих запросов. На 40К можно купить ОЧЕНЬ много места, даже на CDN.
Зарубежный сервис, видимо решили не связываться. Он, кстати, лицензию нарушает: "Attribution must be to “OpenStreetMap”"
ну зачем так витиевато писать, так бы и написали прямо - "Роскомнадзор" :)
Вы обязательно в консорциум WWW напишите письмо, что они идиоты, не знаю как правильно называть.
А у меня Ютуб не открывается, видимо еще одно не успешное приложение
"Не читал, но осуждаю" (тм)
Можете вместе с коллегой выше поднять сервер, разместить на нём пару статических файлов и натравить туда 800К пользователей. И посмотреть что будет.
Экс-СССРовскоке комьюнити конечно уникальное - под хоть сколько-нибудь успешным проектом обязательно понабегут "вывсёнетакделалиязнаюкак"-комментаторы, которые при этом ни одного приложения в своей жизни не делали и, внезапно, работаю на дядю. Вопрос - зачем?
Вы вот положите на сервер хотя бы пару статичных файлов, натравите туда 800К пользователей, а потом расскажите нам почему он тормозит, ок?
Вот если бы вы хоть раз делали такое приложение, то знали бы, что он бы уперся в лимит API через 5 минут при таких показателях аудитории.
CartoDB/basemap-styles: CARTO basemap public styles
то есть приложение с 800К пользователями - это не успешное приложение? )) Ну ОК, так и запишем )
И теперь будет что показать на вопрос "Ну и где эти ваши приложения, которые нейронка создала" )))
Государство само такой же сервис выкатило, так что думаю пронесет автора. Выборы скоро, вряд ли шуметь будут (надеюсь)
Как в С++ делается следующее:
Защита от подмены библиотеки?
Защита от dll hell, когда у вас 5 разных версий одной и тоже библиотеки лежит в разных местах?
Выбор версии библиотеки (можно использовать любую от 2.0.0.0 до 2.9.0.0, или только определенную)
А потом оказывается, что эта библиотека не совместима с текущим рантаймом. Удачи подключать библиотеки .net framework в .net core > 3. Примерно тоже самое касается .netcore - .net standard.
но опять же, очень сильно зависит от рантайма и того, как было собрано приложение. В большинстве случаев вы всё равно наступите на грабли.
Но даже с учетом того ставить балл здесь за С++ - это конечно интересный вывод. Сову порвало :)
Ну да, поддерживаю, к черту продавать Феррари - малейшая ошибка и ты улетел в столб (сарказм, понятное дело)
А еще там есть такое замечательное исключение, как HttpClient.
Очень спорно, как минимум есть implicit/explicit (или я не понял идею тут). Вообще вся эта секция немного притянута за уши, КМК. Тут как раз-таки C# намного более удобен и по синтаксису, и по ограничениям - при вызове функции сразу видно что в неё передавать и что ожидается, не нужно лезть в код или читать комментарии.
Долго смеялся )))) мы точно про C++ , где есть define? ))) А еще громче смеялся после
:)
и чем это отличается от:
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");?
Ну и как через рефлексию достать значение приватного свойства в С++, объявленного в другой подключаемой библиотеке? А статья так хорошо начиналась.....