Спасибо.
У вас псевдокод во фреймах с подсветкой Питона, после первой кавычки всё зеленеет. Попробуйте поиграть с подсветкой, а лучше поменяйте на честный Питон, все всё поймут :)
Это то что я назвал вторым способом. При этом мы теряем информацию, в каком конкретно вызове произошло исключение и должны поддерживать несколько обработчиков, что затрудняет чтение и добавляет сложности.
def foo(a, b, dictionary, host):
j = divide(a / b)
l = http.get(host).parseSmth()
k = dictionary[l]
m = divide(k / j)
...
Здесь у нас могут быть разные исключения — арифметика, сеть, отсутствует ключ. Либо мы вешаем на весь блок «except Exception», либо делаем серию except'ов на каждый тип исключения, либо вешаем персональный try на каждый опасный вызов. Второй и третий способ раздувает код и делает его нелинейным, первый я не приемлю, потому что слишком общий. Монада Result добавляет один декоратор за пределами тела функции и по .unwrap() в конец каждой строки.
Вторая проблема — два опасных divide в одной функции. Допустим мы поставили общий «except ZeroDivisionError», но теперь мы не знаем, какой из них бросил исключение. Монада Result позволяет перед вызовом unwrap() сделать rescue() и добавить подробное описание.
Если я правильно понял — завернуть всё в pipeline и везде где мы получили эти переменные j, l, n, k, z получать их unwrap'ом. Тогда в самих переменных будут честные int'ы, но если хотя бы одна завалится, то pipeline тормознёт вычисления.
В Haskell есть какая-то похожая штука для неявной работы с контейнерами? inline-разворачивания, так сказать?
Конечно — трансформеры монад. Делаем всякие разные грязные действия, возвращающие Either (Result в статье), если хотя бы одно вернёт Left (Failure), игнорируем все последующие и возращаем этот Left. При этом локальные присваивания игнорируют Either (Result) и всегда думают, что им вернули Right (Success). Если не вернули — смотри выше.
Вроде бы и да, но в этой статье я вижу другой смысл. В RP коллбеки очень тонкие и не порождают новые коллбеки (они могут, но это не идиоматично). Их задача — получить сообщение и послать его в граф. В статье описывается функция которая занимается вычислениями, выводом и вводом, хотя в RP все три части разделены.
Как такой же фрагмент кода будет работать в реактивном стиле? Нить исполняет вычисления, посылает HTTP-запрос и вместо того чтобы заблокироваться и при получении результата синхронно обработать его, описывает код (оставляет callback) который должен быть исполнен в качестве реакции (отсюда слово реактивный) на результат. После этого нить продолжает работу, делая какие-то другие вычисления (может быть, как раз обрабатывая результаты других HTTP-запросов) без переключения контекста.
Это не реактивное, а асинхронное программирование на коллбеках. Хотя реактивные фреймворки зачастую имеют асинхронный реактор, но одной из фич реактивного программирования является как раз избегание коллбэков. Реактивное программирование — это прежде всего про потоки данных внутри системы и распространение изменений. Никаких отложенных вызовов не предполагается. За манифест спасибо, посмотрю.
Пришла мысль, что геймдев идёт по стопам музыкальной и писательской индустрии. Огромное количество авторов, магазины/лейблы/издательства. Всё те же плюсы и минусы: и снижение порога входа и жадные издатели и огромное количество мусора. Жаловаться бессмысленно, зато можно предугадать некоторые будущие шаги.
Увы, но из новых аминокислот получить улучшенные органы человека не более просто, чем из новых инструкций процессора получить искусственный интеллект. Слишком много запутанных логических уровней в промежутке.
habrahabr.ru/company/pt/blog/329984
А вообще такого рода соревнования тяжело сбалансировать. На короткой дистанции у защитников обычно огромное преимущество, и оргам приходится их по-разному ограничивать.
Не, ну за минус я не смолчу: адаптирован == переведён, мало ли что там напереводили иные редакторы GT. Насчёт расширен — можете ткнуть в конкретный кусок, которого нет в оригинальной статье? Если что, вторая табличка — это урезанная версия из pdf'ки с owasp, на которую референс в конце. Пока что я вижу именно что перевод оригинальной статьи с выкинутыми введением и тремя экранами в конце.
Исследования подтверждают, что люди могут накачивать свои «моральные мускулы» и размывать грань между своими и чужими.
Социологи обнаружили, что привязанность к своим и ненависть к чужим работают на одной и той же нейробиологической основе
Противоречие.
Такой подход мог бы сообщить нам, например, что в среднем волнение, ощущаемое людьми по поводу возможности того, что правительство будет читать их переписку, превышает беспокойство по поводу возможной террористической атаки.
Если вы боитесь растолстеть, то выпивайте 50г коньяка перед приёмом пищи — алкоголь притупляет страх. Такой подход полностью оправдывает «ложь во спасение». Какой-то извращённый консеквенциализм. Хотя выше было корректно, не про эмоции, а про внешний мир:
К примеру, мы можем оправдать с моральной точки зрения прослушивание телефона, если стоимость вмешательства в личную жизнь оправдывается преимуществами предотвращения террористической атаки с некоей минимальной частотой, допустим, раз в пять лет.
Некоторые трагедии привлекают внимание людей, а более серьёзные остаются в тени.
Удивительно, в чём же может быть причина? Хм, может в разнице освещённости в прессе? Да не, бред какой-то.
Ага, я так надеялся увидеть новую абстракцию «наборы», а тут полстатьи про то чем «me» лучше «this». В итоге автор убрал два символа из в общем-то нечасто используемого символа, зато навалил фигурных скобок вместо отступов. Хотя это всё имеет мало отношения к читаемости языка. Плюсы сложнее питона не из-за фигурных скобок.
«Но причем здесь относительность? Для этого остановимся на минуту и ответим на один вопрос: «Какая сейчас у меня скорость движения?».
«Ноль» ответите вы и будете правы, если сидите или стоите, но в то же время верным ответом будет и «1679 км/ч», если представим, что вы находитесь в районе устья Амазонки, потому что это скорость вращения земли в районе экватора.»
Что? Не учитывая движение литосферных плит, любая приколоченная к Земле точка неподвижна относительно меня сейчас.
Меня вот интересует — не может ли притяжение, вызванное «тёмной материей», оказаться притяжением, вызванным обычной материей но в другом времени? Гравитация же вроде бы одинакова для всех измерений, почему я не могу притягивать самого себя из прошлого/будущего?
У вас псевдокод во фреймах с подсветкой Питона, после первой кавычки всё зеленеет. Попробуйте поиграть с подсветкой, а лучше поменяйте на честный Питон, все всё поймут :)
Здесь у нас могут быть разные исключения — арифметика, сеть, отсутствует ключ. Либо мы вешаем на весь блок «except Exception», либо делаем серию except'ов на каждый тип исключения, либо вешаем персональный try на каждый опасный вызов. Второй и третий способ раздувает код и делает его нелинейным, первый я не приемлю, потому что слишком общий. Монада Result добавляет один декоратор за пределами тела функции и по .unwrap() в конец каждой строки.
Вторая проблема — два опасных divide в одной функции. Допустим мы поставили общий «except ZeroDivisionError», но теперь мы не знаем, какой из них бросил исключение. Монада Result позволяет перед вызовом unwrap() сделать rescue() и добавить подробное описание.
Конечно — трансформеры монад. Делаем всякие разные грязные действия, возвращающие Either (Result в статье), если хотя бы одно вернёт Left (Failure), игнорируем все последующие и возращаем этот Left. При этом локальные присваивания игнорируют Either (Result) и всегда думают, что им вернули Right (Success). Если не вернули — смотри выше.
Это не реактивное, а асинхронное программирование на коллбеках. Хотя реактивные фреймворки зачастую имеют асинхронный реактор, но одной из фич реактивного программирования является как раз избегание коллбэков. Реактивное программирование — это прежде всего про потоки данных внутри системы и распространение изменений. Никаких отложенных вызовов не предполагается. За манифест спасибо, посмотрю.
Скрипта на Jave? Javascript'а?
А вообще такого рода соревнования тяжело сбалансировать. На короткой дистанции у защитников обычно огромное преимущество, и оргам приходится их по-разному ограничивать.
www.contextis.com/blog/xslt-server-side-injection-attacks
Противоречие.
Если вы боитесь растолстеть, то выпивайте 50г коньяка перед приёмом пищи — алкоголь притупляет страх. Такой подход полностью оправдывает «ложь во спасение». Какой-то извращённый консеквенциализм. Хотя выше было корректно, не про эмоции, а про внешний мир:
Удивительно, в чём же может быть причина? Хм, может в разнице освещённости в прессе? Да не, бред какой-то.
«Ноль» ответите вы и будете правы, если сидите или стоите, но в то же время верным ответом будет и «1679 км/ч», если представим, что вы находитесь в районе устья Амазонки, потому что это скорость вращения земли в районе экватора.»
Что? Не учитывая движение литосферных плит, любая приколоченная к Земле точка неподвижна относительно меня сейчас.