5G, AFAIK, ещё нет в среднем нигде — ни сетей, ни устройств.
4G на бумаге выглядит хорошо, но мой ОПСоС выдаёт заявленные скорости(30+ mbps) только на станциях метро, где базовая станция находится в прямой видимости. В произвольной точке города — 5-10mbit, в старых зданиях в центре Питера вообще едва ловят телефоны и переходят на EDGE с четвертью мегабита скорости.
>Т.е. самостоятельно изготовить крепления, даже в самой беднейшей стране,
Чувак живёт в штатах, в статье написано же. $500 за нормальное крепление вместо DIY-хреновины либо просто покрываются сэкономленным временем, либо компенсируются сильно меньшим риском разбить камеру в стране, где нельзя будет её починить/заменить.
С каких пор это повод для подражания? Ну а в Rust'e они с первой версии и что теперь?
Я не говорю, что это повод для подражания. Я утверждаю, что отсутствие дженериков(и любых других фич языка) только усложняет работу, заставляя писать больше кода, но точно не стирает границу между сильными разработчиками и слабыми, как утверждает автор.
Пишите по-русски, английский, видимо, не ваше. Бессмысленная фраза какая-то получилась.
~.
would like a word — устойчивое выражение. Изначально выглядело как 'x would like to have a word with you', но в реальной речи большую часть текста выкидывают, гугл знает. Английский, вообще, достаточно гибок и содержит идиомы, на первый взгляд конфликтующие с грамматикой, вроде классического 'long time, no see'.
Могу на русском перефразировать.
LXC(вокруг которого, кстати, докер был изначально построен), Jail и подобные им проекты с вами не согласны. Они являются контейнерами, но не предоставляют средств доставки приложений.
Эм… что?
То есть помимо того, что нормальные типы то у нас есть, у нас строгая типизация, все-таки
в питоне вы не делаете это ручками.
Вы делаете:
Обеспечиваете типобезопасность.
Реализуете менее очевидные вещи, которые достаются с дженериками. В C#, например, все DI контейнеры выставляют наружу интерфейсы уровня
container.RegisterService<TInterface, TImplementation>()
where TImplementation : TInterface;
container.GetService<TInterface>();
Язык гарантирует совместимость типа регистрируемых интерфейса и реализации за счёт generic constraint.
Ни один из методов не требует передавать типы в виде аргументов — информация о типе доступна в рантайме через рефлексию / typeof(тип-параметр).
В java так нельзя из-за type erasure
В том же C# можно написать что-то вроде
class GenericAddList<T> : List<T> where T : new(){
public T AddNew(){
var t = new T();
this.Add(t);
return T();
}
}
...
var list = new GenericAddList<SomeClass>();
var newValue = list.AddNew();
Т.е имея информацию о типе для дженерика создавать инстансы объектов. Всё это можно сделать в питоне, но придётся в явном виде передавать типы и интерпретатор даже не ругнётся, если где-то типы окажутся несовместимы / код упадёт где-то дальше.
Поконкретнее можно, что подразумевается под «уже несколько лет». Я же верно понимаю, что «несколько» в вашем понимании = «не более двух»?
Странно таргетиться на .NET Standard ДО его выхода, правда же?
Не совсем.
MS проанализировали все существующие пакеты nuget перед выпуском .NET Standard и получили, что 98, IIRC, процентов библиотек опираются только на доступные в нём API(понятно, что там могут быть обращения к win-only нативным либам / файлам / etc). По этой причине nuget позволяет использовать пакеты, целящиеся на .NET в .NET Core и .NET Standard, хотя и кидает ворнинг. 'Миграция' для большей части либ заключается в смене таргета в проекте.
У вас реально с арифметикой плохо, простите. С 2012 года не то что «десятилетий» (во множественном числе) не прошло, одного десятка еще не исполнилось.
Именно десятилетий. Большая часть API surface, описанная в .NET Standard, существует с .NET 1.1/2.0, чтобы таргегитьтся по .NET обычно было достаточно просто целиться в основной фреймворк, не трогая win-only части.
Прям на серверах сидел? Или, все же, в мобильных приложениях?
В мобильных приложениях, но это такой же прод — если оно развалится, будут потеряны деньги. Почему-то доверяют для такой задачи 'альтернативной реализации фреймворков от сторонних разработчиков'.
И ссылка в гайд: что делать, если после обновления платформы «совместимое» с ней приложение вдруг перестало работать
Да. Потому что мажорные версии гарантируют API surface и то же поведение фреймворка, но не внутреннюю реализацию. Так, несколько раз встречался с тем, что клиентский код переставал работать при обновлении, потому что он лез рефлексией в кишки библиотек, а в новой версии переименовывали поля/приватные методы.
Контейнеры, в первую очередь, способ доставки. Как инструмент изоляции они не очень.
LXC, Jail and friends would like a word.
Собственно, погуглите 12-factor apps — достаточно годный список рекомендаций.
Всё это и так применяют — я работал над нагруженным продом, где были микросервисы на дотнете/winserver.
А вы точно знаете, что такое дженерики и зачем они нужны?
Я пишу на шарпе и не пишу на Go.
Ну и алсо, в питоне есть дженерики, как только там ввели подсказки по типам.
Они не энфорсятся интерпретатором — их по сути(т.е. они даже видны в рантайме, чем пользуются некоторые DI-фреймворки, но это скорее сайд-эффект) нет, если не учитывать сторонние линтеры.
И как бы, зачем вы требуете их в питоне?
Их и не может быть в питоне в чистом виде — нет нормальных типов => нет дженериков. На питоне делают руками то, что реализует компилятор и рантайм в том же C# и добиваются успеха, выдавая сложный и рабочий код — точно так же смогут и в Go.
Собственно, по этой причине я не согласен с автором.
Неизмеримое количество нетривиального и полезного софта написано вообще на сях, без дженериков(да, есть макросы, но всё же), вывода типов, исключений, чего угодно — посредственные разработчики просто бы просто не вытянули такие проекты. Опенсорсного, кстати — это не какой-то большой дядька решил, что они сэкономят бюджет, а выбрали сами девелоперы.
На F# же, который автор поставил в теги и, скорее всего, считает хорошим языком, я слышал только о FAKE, который не то, чтобы сильно популярен или не имел аналогов.
Где все те гениальные проекты, которым мешает простота языка и грязные решения? А нет их, не подтверждает реальность слова автора.
«реализует большую часть», вы сами это сказали. При выборе платформы для проекта эту фразу принято читать как «без гарантий совместимости» или, на крайний случай «никто ничего не обещает».
Нет, это именно означает 'большую часть'. WPF / WinForms / WebForms отсутствуют(первые два вернут в 3.0, бета уже вышла) — Core изначально позиционировался как лёгкий серверный рантайм, в котором не было десктопного UI и legacy.
Как .NET FX, так и .NET Core реализуют .NET Standard, под который уже несколько лет таргетятся все мажорные библиотеки на nuget — для них гарантирована совместимость.
— В критичных для бизнеса проектах не любят «альтернативные реализации фреймворков от сторонних разработчиков».
Как-то реальный бизнес прекрасно сидел на Xamarin ещё до покупки Microsoft'ом, который на тот момент разрабатывался командой mono.
К тому же .NET Framework 3.2, 3.4, 3.5, 4.6 и т.д. — несовместимы между собой
Внутри мажорных версий — совместимы. 4.0 был выпущен девять лет назад — за 3 года до Go 1.0.
Фреймворки автоматически определяются и ставятся sXs, по крайней мере, на windows.
Mono имплементирует их все разом, подсовывая чуть разные stdlib.
На основании чего ждать иного поведения от .NET Core, так ни разу и не вышедшего в LTS.
А .NET Core (и .NET Standard), еще и одного десятка нет.
.NET Standard описывает существующую функциональность, а не описывает новую. Так .NET Standard 1.1, релизнутый в 2016, совместим с .NET FX 4.5, выпущенном в 2012. Большая часть апи, описанных в нём, существует как раз десятилетия.
не пишут десятилетиями контейнеризованные приложения
Расскажите же об отличиях в коде для контейнеризованных приложений относительно любых других. Большая часть софта, написанного задолго до мейнстримных контейнеров, прекрасно запускается в докере без модификаций — контейнеры, в первую очередь, это просто способ изоляции.
в принципе не пишут контейнеризованные приложения.
Пишут.
windows containers существуют уже пару лет в релизном состоянии
на mono+docker всё работало ещё в 2015(возможно и раньше, но я тогда с таким комбо впервые столкнулся).
Именно. Программист — инженер, а не писатель, вы реализуете спецификацию. Ваш код должен быть безликим, чтобы человек, который будет работать с вами просто вносил необходимые изменения, не тратя время на осознание вашего 'авторского стиля'.
Момент, когда у тебя забирают возможность выбирать, как этот код будет работать — мой самый страшный кошмар. Представьте кейс: вы написали сложный перфоманс сенситив модуль, а вам говорят: «Послушай, он слишком сложный. Давай ты сделаешь его попроще, не важно, что работать будет хуже».
Напомню, что код пишется для людей. Если кроме вас его никто не может понять, то бизнес зависит от того, как успешно вы уворачиваетесь от автобусов. Завтра вы написали заявление по собственному — код можно выкидывать.
Впрочем, вы сами написали это ниже:
возьмут на моё место какого-нибудь дурачка, он легко сможет работать с моим кодом. Так компании будет намного комфортнее
Не можете написать просто и эффективно — страдайте.
Они не добавили дженерики в Go, потому что дженерики — сложные.
Это никак не мешает куче динамических языков — никто не жалуется на отсутствие дженериков в, например, питоне, на котором написано чуть более девяти тысяч сложного кода.
C# и Java обзавелись дженериками тоже не с первой версии, причём в яве на уровне рантайма они до сих пор не существуют — тоже как-то писали.
Сегодня он играет джаз смотрит запрещённые сайты, а завтра родину продаст. Придумают какой-нибудь буллшит, как для хентая с лолями, который приравняли к детскому порно.
На самом деле, это самый эффективный метод сразу по двум причинам:
С точки зрения защиты — при переезде в другую страну все новости о таких законах перестают касаться лично вас и тех членов семьи / друзей, которых удалось вытащить за собой.
И с точки зрения нападения — вы перестаёте платить 13% НДФЛ, 18(20 с первого января 2019)% НДС, 28% от ФОТ перестаёт платить ваш работодатель в разные бюджетные чёрные дыры. Сейчас перепроверил — у меня в сумме больше 100К налогов в месяц таким образом выходит. Эти сто тысяч не достаются государству, которое работает против своих граждан.
У Финляндии, Норвегии, Дании, Швеции и Ирландии есть программы привлечения разработчиков и других востребованных профессий, которые дают рабочую визу, при этом без особого конкурса / многолетних очередей, а у многих даже без требования высшего образования по специальности.
Если предположить, что он не входит в роль много лет, то можно прочесть его историю комментариев и увидеть причину:
[Да, у меня всё начиналось как хроническая усталость. Я плохо справлялся с псих. нагрузкой. Сейчас мне 26 лет и я уже не знаю, что это.
…
То есть мой мозг слабо фильтрует входящую информацию.
Да, недостаточно.
5G, AFAIK, ещё нет в среднем нигде — ни сетей, ни устройств.
4G на бумаге выглядит хорошо, но мой ОПСоС выдаёт заявленные скорости(30+ mbps) только на станциях метро, где базовая станция находится в прямой видимости. В произвольной точке города — 5-10mbit, в старых зданиях в центре Питера вообще едва ловят телефоны и переходят на EDGE с четвертью мегабита скорости.
Чувак живёт в штатах, в статье написано же. $500 за нормальное крепление вместо DIY-хреновины либо просто покрываются сэкономленным временем, либо компенсируются сильно меньшим риском разбить камеру в стране, где нельзя будет её починить/заменить.
Я не говорю, что это повод для подражания. Я утверждаю, что отсутствие дженериков(и любых других фич языка) только усложняет работу, заставляя писать больше кода, но точно не стирает границу между сильными разработчиками и слабыми, как утверждает автор.
~.
would like a word— устойчивое выражение. Изначально выглядело как 'x would like to have a word with you', но в реальной речи большую часть текста выкидывают, гугл знает. Английский, вообще, достаточно гибок и содержит идиомы, на первый взгляд конфликтующие с грамматикой, вроде классического 'long time, no see'.Могу на русском перефразировать.
LXC(вокруг которого, кстати, докер был изначально построен), Jail и подобные им проекты с вами не согласны. Они являются контейнерами, но не предоставляют средств доставки приложений.
Вы делаете:
typeof(тип-параметр).В том же C# можно написать что-то вроде
Т.е имея информацию о типе для дженерика создавать инстансы объектов. Всё это можно сделать в питоне, но придётся в явном виде передавать типы и интерпретатор даже не ругнётся, если где-то типы окажутся несовместимы / код упадёт где-то дальше.
Не совсем.
MS проанализировали все существующие пакеты nuget перед выпуском .NET Standard и получили, что 98, IIRC, процентов библиотек опираются только на доступные в нём API(понятно, что там могут быть обращения к win-only нативным либам / файлам / etc). По этой причине nuget позволяет использовать пакеты, целящиеся на .NET в .NET Core и .NET Standard, хотя и кидает ворнинг. 'Миграция' для большей части либ заключается в смене таргета в проекте.
Именно десятилетий. Большая часть API surface, описанная в .NET Standard, существует с .NET 1.1/2.0, чтобы таргегитьтся по .NET обычно было достаточно просто целиться в основной фреймворк, не трогая win-only части.
В мобильных приложениях, но это такой же прод — если оно развалится, будут потеряны деньги. Почему-то доверяют для такой задачи 'альтернативной реализации фреймворков от сторонних разработчиков'.
Да. Потому что мажорные версии гарантируют API surface и то же поведение фреймворка, но не внутреннюю реализацию. Так, несколько раз встречался с тем, что клиентский код переставал работать при обновлении, потому что он лез рефлексией в кишки библиотек, а в новой версии переименовывали поля/приватные методы.
LXC, Jail and friends would like a word.
Всё это и так применяют — я работал над нагруженным продом, где были микросервисы на дотнете/winserver.
Я пишу на шарпе и не пишу на Go.
Они не энфорсятся интерпретатором — их по сути(т.е. они даже видны в рантайме, чем пользуются некоторые DI-фреймворки, но это скорее сайд-эффект) нет, если не учитывать сторонние линтеры.
Их и не может быть в питоне в чистом виде — нет нормальных типов => нет дженериков. На питоне делают руками то, что реализует компилятор и рантайм в том же C# и добиваются успеха, выдавая сложный и рабочий код — точно так же смогут и в Go.
Собственно, по этой причине я не согласен с автором.
Неизмеримое количество нетривиального и полезного софта написано вообще на сях, без дженериков(да, есть макросы, но всё же), вывода типов, исключений, чего угодно — посредственные разработчики просто бы просто не вытянули такие проекты. Опенсорсного, кстати — это не какой-то большой дядька решил, что они сэкономят бюджет, а выбрали сами девелоперы.
На F# же, который автор поставил в теги и, скорее всего, считает хорошим языком, я слышал только о FAKE, который не то, чтобы сильно популярен или не имел аналогов.
Где все те гениальные проекты, которым мешает простота языка и грязные решения? А нет их, не подтверждает реальность слова автора.
Нет, это именно означает 'большую часть'. WPF / WinForms / WebForms отсутствуют(первые два вернут в 3.0, бета уже вышла) — Core изначально позиционировался как лёгкий серверный рантайм, в котором не было десктопного UI и legacy.
Как .NET FX, так и .NET Core реализуют .NET Standard, под который уже несколько лет таргетятся все мажорные библиотеки на nuget — для них гарантирована совместимость.
Как-то реальный бизнес прекрасно сидел на Xamarin ещё до покупки Microsoft'ом, который на тот момент разрабатывался командой mono.
У .NET Core есть LTS.
.NET Standard описывает существующую функциональность, а не описывает новую. Так .NET Standard 1.1, релизнутый в 2016, совместим с .NET FX 4.5, выпущенном в 2012. Большая часть апи, описанных в нём, существует как раз десятилетия.
Расскажите же об отличиях в коде для контейнеризованных приложений относительно любых других. Большая часть софта, написанного задолго до мейнстримных контейнеров, прекрасно запускается в докере без модификаций — контейнеры, в первую очередь, это просто способ изоляции.
Пишут.
Именно. Программист — инженер, а не писатель, вы реализуете спецификацию. Ваш код должен быть безликим, чтобы человек, который будет работать с вами просто вносил необходимые изменения, не тратя время на осознание вашего 'авторского стиля'.
Напомню, что код пишется для людей. Если кроме вас его никто не может понять, то бизнес зависит от того, как успешно вы уворачиваетесь от автобусов. Завтра вы написали заявление по собственному — код можно выкидывать.
Впрочем, вы сами написали это ниже:
Не можете написать просто и эффективно — страдайте.
.net core реализует большую часть .net fx, а тому скоро третий десяток лет пойдёт.
Предыдущий пункт — на оригинальном дотнете десятилетиями пишут.
Сначала они пришли за навальнистами.
Браво, вы придумали наблюдателей. Их выгоняют(даже разрешённых), а суд отказывает в возбуждении дел даже тем, кто записи с камер приносит.
Сегодня он
играет джазсмотрит запрещённые сайты, а завтра родину продаст. Придумают какой-нибудь буллшит, как для хентая с лолями, который приравняли к детскому порно.Будет как в Приморье — отменят результаты / назначат второй тур, а потом оппозицонный кандидат не пройдёт муниципальный фильтр.
На самом деле, это самый эффективный метод сразу по двум причинам:
С точки зрения защиты — при переезде в другую страну все новости о таких законах перестают касаться лично вас и тех членов семьи / друзей, которых удалось вытащить за собой.
И с точки зрения нападения — вы перестаёте платить 13% НДФЛ, 18(20 с первого января 2019)% НДС, 28% от ФОТ перестаёт платить ваш работодатель в разные бюджетные чёрные дыры. Сейчас перепроверил — у меня в сумме больше 100К налогов в месяц таким образом выходит. Эти сто тысяч не достаются государству, которое работает против своих граждан.
У Финляндии, Норвегии, Дании, Швеции и Ирландии есть программы привлечения разработчиков и других востребованных профессий, которые дают рабочую визу, при этом без особого конкурса / многолетних очередей, а у многих даже без требования высшего образования по специальности.
Начатый когда-то список требований для переезда в разные страны.
Ну вот будет замена — Там-там и ВК с товарищем майором.
Фильтры роскомнадзора по мановению волшебной палочки появляются? СОРМ сделали оперативники ФСБ? Нет, их реализовывали программисты и администраторы.
Те же образованные, что выгоняют детей из дома, потому что 'рак заразен'?
Если предположить, что он не входит в роль много лет, то можно прочесть его историю комментариев и увидеть причину:
27 марта 2016 в 15:32