>> Почему вы никогда не перепутаете красоту раскачивающейся на ветру сосны со вкусом сыра фета? Или ощущение наждачной бумаги на кончиках пальцев с запахом свежего эспрессо?
Под действием ЛСД, псилоцибина и других психоделиков вполне можно услышать свет, увидеть звук и так далее.
Честно говоря, речь шла в основном про дебетовые карты, копия паспорта+симка нужна для восстановления доступа и подтверждения операций (привет, сбербанк). Не пойму, откуда вообще могла возникнуть идея делать обнал левых денег лично по чужому паспорту — это полнейший бред.
Орган, выпускающий деньги, насколько я помню, гарантирует только, что они чем-то подкреплены (допустим, золотым запасом). Наличие у вас денег совсем не гарантирует того, что вам кто-то что-то за них продаст. Может быть, вернёмся к реальному миру? Биткоин есть? Есть. Торгуется? Торгуется. Товар за него продаётся? Продаётся. Покупается? Покупается. Да, если у вас украдут биткоины — вы ничего не сможете сделать. Но с другой стороны никто не заблокирует ваш кошелёк, и за ним не придут приставы, например. У всего есть свои плюсы и минусы, и, повторяю — то, что вам не нравится биткоин, не означает, что он бесполезен.
Продавец товара, скорее всего, первым делом использует миксер, чтобы было трудно отследить, от кого и к кому ушли деньги. Далее дело техники — в интернете вагон обменников, которые с радостью купят ваши биткоины и переведут в нужной валюте на ваш кошелёк, будь то VISA, QIWI, WebMoney или что-нибудь другое. Более того, обычно в тех же местах можно приобрести левые дебетовые карты (VISA/MasterCard) с привязанными симками и комплектом паспортов, которые успешно можно использовать для обнала минимум один раз (это к вопросу о безопасности).
Это не умаляет того, что те, кому надо — вполне себе успешно используют биткоин. Скажем так, то, что вы не видите в этом целесообразности — не значит, что всё так и есть :)
Я не буду приводить ссылок, но если вы поищете в торе — сами найдёте уйму площадок. И вы не поверите, но они этим и занимаются — обменивают товар на, как вы говорите, «пустой звук». Сильно сомневаюсь, что люди, которым хватает мозгов всё это организовать и не быть при этом пойманными, находятся не в своём уме.
Из более-менее легального можно посмотреть на обменники — например, localbitcoins живёт и здравствует, на нём торгуют люди, пишут ботов, есть вменяемый API. А если обменники скомбинировать с миксерами — получается, что биткоин далеко не такой пустой звук, как вам кажется.
Если в качестве идеи вы имеете ввиду майнинг — то да, так и есть. А сам биткоин умирать не собирается, я вас уверяю :) В сети куча мест (полулегальных/совсем нелегальных), где оплату можно произвести ТОЛЬКО биткоинами, где крутятся в прямом смысле этого слова бешеные деньги (как пример — наркобизнес).
Интересно, какую такую узкую нишу имеет асинхронное программирование. Любое взаимодействие с внешним миром — работа с сетью, чтение/запись на диск и т. д. гораздо проще выражается при использовании асинхронного кода, нежели мешаниной callback'ов. Зависит конечно от самого языка и от того, что конкретно разрабатывается.
Проблема арабского языка — в написании справа налево. А когда в дело вступает форматирование (я имею ввиду подстановку цифр, дат, денежных значений и т. д.) — становится совсем невесело.
Лично я не против вашего подхода, но на мой взгляд он менее универсальный, конечно это не смертельно, если вы не планируете расширять список используемых языков.
Если 200 комментариев по существу на 1000 строк кода — значит задача слишком сложная, и надо давать что-нибудь попроще для начала. Если критика конструктивная (а не в стиле «я бы сделал по-другому») — значит всё правильно, обратную связь нужно давать и лучше сказать, что год говно, на этапе ревью, чем это выяснится после релиза. Если человека уволили из-за того, что он не справляется со своими прямыми обязанностями — это в основном его проблемы. «Каждый должен подтирать свою задницу».
Да, но дело в том, что если вы пишете библиотечный код, то обычно не можете знать, в каком контексте он будет вызван. Обычная рекомендация — добавлять везде .ConfigureAwait(false), но эта конструкция семантически некорректна, и очень легко забыть написать её в каком-то одном месте, и получить дедлок у клиента.
Ещё бывает полезно предоставлять варианты метода с выбрасыванием исключений и с кодом ошибки, грубо говоря:
public CoolResult DoSomethingCool(...); // кидает исключение
public bool TryDoSomethingCool(..., out CoolResult result); // возвращает флаг
Ещё желательно позаботиться об обработке unhandled exceptions (отовсюду, в шарпах это значит, что надо ловить и AppDomain.CurrentDomain.UnhandledException, и TaskScheduler.UnobservedTaskException, и Dispatcher.UnhandledException) или хотя бы предоставить в SDK такую возможность, это несложно и очень упрощает жизнь.
Опять же, если пишете на C# — надо продумать всё, что связано с контекстом, и определить правила, которых вы будете придерживаться. Например, мы у себя не используем ConfigureAwait(false) по ряду причин, и для гарантированного переключения контекста у нас есть специальная небольшая структура.
Также, если у вас есть асинхронный код (а это скорее всего так), и вы его передаёте в диспетчер или Task.Run — лучше сразу позаботиться о том, чтобы в случае чего вы получили грамотный call stack, а не обрывок.
Если у вас большой solution, удобно использовать файл Directory.Build.props для задания свойств и действий, которые будут применяться ко всем проектам — например, вы можете через этот файл подключить один AssemblyInfo.cs ко всем проектам, а также настроить CodeAnalysis и StyleCop в одном месте. Если надо будет на время отключить стайлкоп — достаточно поправить один файл, то же касается версий и т.д.
Под действием ЛСД, псилоцибина и других психоделиков вполне можно услышать свет, увидеть звук и так далее.
Из более-менее легального можно посмотреть на обменники — например, localbitcoins живёт и здравствует, на нём торгуют люди, пишут ботов, есть вменяемый API. А если обменники скомбинировать с миксерами — получается, что биткоин далеко не такой пустой звук, как вам кажется.
Лично я не против вашего подхода, но на мой взгляд он менее универсальный, конечно это не смертельно, если вы не планируете расширять список используемых языков.
Ещё желательно позаботиться об обработке unhandled exceptions (отовсюду, в шарпах это значит, что надо ловить и AppDomain.CurrentDomain.UnhandledException, и TaskScheduler.UnobservedTaskException, и Dispatcher.UnhandledException) или хотя бы предоставить в SDK такую возможность, это несложно и очень упрощает жизнь.
Опять же, если пишете на C# — надо продумать всё, что связано с контекстом, и определить правила, которых вы будете придерживаться. Например, мы у себя не используем ConfigureAwait(false) по ряду причин, и для гарантированного переключения контекста у нас есть специальная небольшая структура.
Также, если у вас есть асинхронный код (а это скорее всего так), и вы его передаёте в диспетчер или Task.Run — лучше сразу позаботиться о том, чтобы в случае чего вы получили грамотный call stack, а не обрывок.
Если у вас большой solution, удобно использовать файл Directory.Build.props для задания свойств и действий, которые будут применяться ко всем проектам — например, вы можете через этот файл подключить один AssemblyInfo.cs ко всем проектам, а также настроить CodeAnalysis и StyleCop в одном месте. Если надо будет на время отключить стайлкоп — достаточно поправить один файл, то же касается версий и т.д.
Был неправ, посыпаю голову пеплом. Вот только почему-то у меня так ни разу и не получилось.