Пост №3052170

Автор: Arterton


Трамп ушел с церемонии подписания указов, забыв их подписать

ссылка на гифку



Развернуть


&epicComment_3052170&
{
«@context»: «http://schema.org»,
«@type»: «BlogPosting»,
«mainEntityOfPage»:{
«@type»:»WebPage»,
«@id»:»http://polit.reactor.cc/post/3052170″
},
«headline»: «Трамп ушел с церемонии подписания указов, забыв их подписать / трамп :: всем пока :: политика :: гиф анимация (гифки — ПРИКОЛЬНЫЕ gif анимашки)»,
«image»: {
«@type»: «ImageObject»,
«url»: «http://img0.joyreactor.cc/pics/post/full/%D0%B3%D0%B8%D1%84%D0%BA%D0%B8-%D0%B2%D1%81%D0%B5%D0%BC-%D0%BF%D0%BE%D0%BA%D0%B0-%D1%82%D1%80%D0%B0%D0%BC%D0%BF-%D0%BF%D0%BE%D0%BB%D0%B8%D1%82%D0%B8%D0%BA%D0%B0-3761628.gif»,
«height»: 257,
«width»: 450 },
«datePublished»: «2017-04-03T06:42:16+03:00»,
«dateModified»: «2017-04-03T06:42:16+03:00»,
«author»: {
«@type»: «Person»,
«name»: «Arterton»
},
«publisher»: {
«@type»: «Organization»,
«name»: «JoyReactor.cc»,
«logo»: {
«@type»: «ImageObject»,
«url»: «http://joyreactor.cc/images/joyreactor_ie6.png»,
«width»: 207,
«height»: 54
}
},
«description»: «»
}

Комментировать 
Пост №3052170
Source: Joyreactor

Обработка ошибок в C

Введение


Ошибки, увы, неизбежны, поэтому их обработка занимает очень важное место в программировании. И если алгоритмические ошибки можно выявить и исправить во время написания и тестирования программы, то ошибок времени выполнения избежать нельзя в принципе. Сегодня мы рассмотрим функции стандартной библиотеки (C Standard Library) и POSIX, используемые в обработке ошибок.
Читать дальше →
Обработка ошибок в C
Source: habrahabr

Пост №3052145

Автор: Mishvanda

ссылка на гифкуРазвернуть { «@context»: «http://schema.org», «@type»: «BlogPosting», «mainEntityOfPage»:{ «@type»:»WebPage», «@id»:»/post/3052145″ }, «headline»: «большая гифка (большие гифки) :: большой котэ :: гиф анимация (гифки — ПРИКОЛЬНЫЕ gif анимашки) :: котэ (прикольные картинки с кошками)», «image»: { «@type»: «ImageObject», «url»: «http://img1.joyreactor.cc/pics/post/full/%D0%B3%D0%B8%D1%84%D0%BA%D0%B8-%D0%BA%D0%BE%D1%82%D1%8D-%D0%B1%D0%BE%D0%BB%D1%8C%D1%88%D0%B0%D1%8F-%D0%B3%D0%B8%D1%84%D0%BA%D0%B0-%D0%B1%D0%BE%D0%BB%D1%8C%D1%88%D0%BE%D0%B9-%D0%BA%D0%BE%D1%82%D1%8D-3761595.gif», «height»: 900, «width»: 720 }, «datePublished»: «2017-04-03T05:47:26+03:00», «dateModified»: «2017-04-03T05:47:26+03:00», «author»: { «@type»: «Person», «name»: «Mishvanda» }, «publisher»: { «@type»: «Organization», «name»: «JoyReactor.cc», «logo»: { «@type»: «ImageObject», «url»: «http://joyreactor.cc/images/joyreactor_ie6.png», «width»: 207, «height»: 54 } }, «description»: «» }
Комментировать 
Пост №3052145
Source: Joyreactor

Пост №3052123

Автор: DaryaKost

Развернуть { «@context»: «http://schema.org», «@type»: «BlogPosting», «mainEntityOfPage»:{ «@type»:»WebPage», «@id»:»/post/3052123″ }, «headline»: «арт барышня (арт девушка, art барышня, art девушка,) :: Yong Ja STUDIO :: красивые картинки», «image»: { «@type»: «ImageObject», «url»: «http://img0.joyreactor.cc/pics/post/full/Yong-Ja-STUDIO-%D0%B0%D1%80%D1%82-%D0%B1%D0%B0%D1%80%D1%8B%D1%88%D0%BD%D1%8F-%D0%BA%D1%80%D0%B0%D1%81%D0%B8%D0%B2%D1%8B%D0%B5-%D0%BA%D0%B0%D1%80%D1%82%D0%B8%D0%BD%D0%BA%D0%B8-3761572.jpeg», «height»: 1920, «width»: 1920 }, «datePublished»: «2017-04-03T04:29:44+03:00», «dateModified»: «2017-04-03T04:29:44+03:00», «author»: { «@type»: «Person», «name»: «DaryaKost» }, «publisher»: { «@type»: «Organization», «name»: «JoyReactor.cc», «logo»: { «@type»: «ImageObject», «url»: «http://joyreactor.cc/images/joyreactor_ie6.png», «width»: 207, «height»: 54 } }, «description»: «» }
Комментировать 
Пост №3052123
Source: Joyreactor

Scala: parser combinators на примере парсера формул

Время от времени у меня возникает желание придумать свой собственный маленький язык программирования и написать интерпретатор. В этот раз я начал писать на scala, узнал про библиотеку parser combinators, и был поражён: оказывается, можно писать парсеры легко и просто. Чтобы не превращать статью в пособие по «рисованию совы», ниже приведёна реализация разбора и вычисления выражений типа "1 + 2 * sin(pi / 2)".

Сам парсинг и вычисление выражения занимают всего лишь 43 непустых строчки — не то чтобы я сильно стремился сократить их количество, но выглядит это реально просто и лаконично. Проект на github.

Для сравнения:

Итак, если вам не терпится увидеть результат:

Ответственный за парсинг кусочек кода

object FormulaParser extends RegexParsers with PackratParsers {

    def id: Parser[Id] = "[a-zA-Z][a-zA-Z0-9_]*".r ^^ Id

    def number: Parser[Number] = "-" ~> number ^^ (n => Number(-n.value)) |
        ("[0-9]+.[0-9]*".r | "[0-9]+".r) ^^ (s => Number(s.toDouble))

    def funcCall: Parser[FuncCall] = id ~ ("(" ~> expression <~ ")") ^^ (pair => FuncCall(pair._1, pair._2))

    def value: Parser[Expression] = number | funcCall | id | ("(" ~> expression <~ ")")

    lazy val term: PackratParser[Expression] = term ~ ("*" | "/") ~ value ^^ binOperation | value

    lazy val expression: PackratParser[Expression] = expression ~ ("+" | "-") ~ term ^^ binOperation | term
    ...
}

Посмотрите на следущую строчку:

def value: Parser[Expression] = number | funcCall | id | ("(" ~> expression <~ ")")

Она подозрительно похожа на описание грамматики, но это валидный код, в котором среда разработки может сразу же обнаружить и подсветить большинство ошибок.

Это возможно по следующим причинам:

  1. В scala разрешено давать методам замечательные названия типа "~", "~>", "<~", "|", "^^". Комбинация парсеров p и q записывается как p~q, а возможность выбрать один из них: p|q. Читается намного лучше, чем p.andThen(q) или p.or(q)
  2. Благодаря неявным преобразованиям (implicits) и строчка "abc" и регулярное выражение "[0-9]+".r при необходимости превращаются в парсеры.
  3. В языке мощная статическая система типов, которая позволяет ловить ошибки сразу.

Думаю, мне удалось Вас заинтересовать, поэтому дальше всё будет по порядку.

Читать дальше →
Scala: parser combinators на примере парсера формул
Source: habrahabr

Как не наступать на грабли в Go

Этот пост является версией моей же англоязычной статьи «How to avoid gotchas in Go», но слово gotcha не переводится на русский, поэтому я буду использовать это слово как без перевода, так и немного непрямой вариант — «наступать на грабли».

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

В языке Go есть несколько таких gotchas и есть немало хороших статей, которые их подробно описывают и разъясняют. Я считаю, что эти статьи очень важны, особенно для новичков в Go, поскольку регулярно вижу людей, попадающихся на те же грабли.

Но один вопрос меня мучал долгое время — почему я сам никогда не делал этих ошибок? Серьезно, самые популярные из них, вроде путаницы с nil-интерфейсом или непонятного результата при append()-е слайса — в моей практике никогда не были проблемой. Каким-то образом мне повезло обойти эти подводные камни с первых дней своей работы с Go. Что же мне помогло?

И ответ оказался довольно прост. Я просто очень вовремя прочёл несколько хороших статей о внутреннем устройстве структур данных в Go и прочих деталях реализации. И этого, вполне поверхностного на самом деле, знания было достаточно, чтобы выработать некоторую интуицию и избегать этих подводных камней.

Читать дальше →
Как не наступать на грабли в Go
Source: habrahabr

Пост №3052075

Автор: Robotron3000

ссылка на гифкуРазвернуть { «@context»: «http://schema.org», «@type»: «BlogPosting», «mainEntityOfPage»:{ «@type»:»WebPage», «@id»:»/post/3052075″ }, «headline»: «Белый медведь :: k-eke :: медведь :: gif», «image»: { «@type»: «ImageObject», «url»: «http://img0.joyreactor.cc/pics/post/full/k-eke-%D0%BC%D0%B5%D0%B4%D0%B2%D0%B5%D0%B4%D1%8C-%D0%91%D0%B5%D0%BB%D1%8B%D0%B9-%D0%BC%D0%B5%D0%B4%D0%B2%D0%B5%D0%B4%D1%8C-gif-3761498.gif», «height»: 365, «width»: 320 }, «datePublished»: «2017-04-03T01:50:13+03:00», «dateModified»: «2017-04-03T01:50:13+03:00», «author»: { «@type»: «Person», «name»: «Robotron3000» }, «publisher»: { «@type»: «Organization», «name»: «JoyReactor.cc», «logo»: { «@type»: «ImageObject», «url»: «http://joyreactor.cc/images/joyreactor_ie6.png», «width»: 207, «height»: 54 } }, «description»: «» }
Комментировать 
Пост №3052075
Source: Joyreactor

Пост №3052044

Автор: Nuribroni

Развернуть { «@context»: «http://schema.org», «@type»: «BlogPosting», «mainEntityOfPage»:{ «@type»:»WebPage», «@id»:»/post/3052044″ }, «headline»: «котэ (прикольные картинки с кошками)», «image»: { «@type»: «ImageObject», «url»: «http://img0.joyreactor.cc/pics/post/full/%D0%BA%D0%BE%D1%82%D1%8D-3761362.jpeg», «height»: 600, «width»: 900 }, «datePublished»: «2017-04-03T01:14:35+03:00», «dateModified»: «2017-04-03T01:14:35+03:00», «author»: { «@type»: «Person», «name»: «Nuribroni» }, «publisher»: { «@type»: «Organization», «name»: «JoyReactor.cc», «logo»: { «@type»: «ImageObject», «url»: «http://joyreactor.cc/images/joyreactor_ie6.png», «width»: 207, «height»: 54 } }, «description»: «» }
Комментировать 
Пост №3052044
Source: Joyreactor

Пост №3052035

Автор: Shuster

Развернуть &epicComment_3052035& { «@context»: «http://schema.org», «@type»: «BlogPosting», «mainEntityOfPage»:{ «@type»:»WebPage», «@id»:»/post/3052035″ }, «headline»: «И сколько тебе лет? :: возраст», «image»: { «@type»: «ImageObject», «url»: «http://img0.joyreactor.cc/pics/post/full/%D0%98-%D1%81%D0%BA%D0%BE%D0%BB%D1%8C%D0%BA%D0%BE-%D1%82%D0%B5%D0%B1%D0%B5-%D0%BB%D0%B5%D1%82-%D0%B2%D0%BE%D0%B7%D1%80%D0%B0%D1%81%D1%82-3761346.jpeg», «height»: 619, «width»: 640 }, «datePublished»: «2017-04-03T00:57:22+03:00», «dateModified»: «2017-04-03T00:57:22+03:00», «author»: { «@type»: «Person», «name»: «Shuster» }, «publisher»: { «@type»: «Organization», «name»: «JoyReactor.cc», «logo»: { «@type»: «ImageObject», «url»: «http://joyreactor.cc/images/joyreactor_ie6.png», «width»: 207, «height»: 54 } }, «description»: «» }
Комментировать 
Пост №3052035
Source: Joyreactor

[Перевод] Термин «искусственный интеллект» потерял всякий смысл

Часто это просто модное название компьютерной программы

image


В научной фантастике возможность угрозы со стороны искусственного интеллекта (ИИ) связана с взаимоотношениями людей и разумных машин. Будь то Терминаторы, Сайлоны или такие вспомогательные машины, как компьютер из «Звёздного пути» или дроиды из «Звёздных войн», машины заслуженно называют искусственным интеллектом, когда те становятся разумными – или, по меньшей мере, осознают себя достаточно, чтобы действовать мастерски, неожиданно и по собственному желанию.


Что же можно сказать о текущем взрыве «якобы ИИ» в СМИ, индустрии и технологиях? В некоторых случаях назвать нечто «ИИ» в принципе возможно, хотя и с натяжкой. Робомобили не сравнить с R2D2 (или Hal 9000), но у них есть набор датчиков, данных и вычислительные возможности для выполнения сложной задачи вождения автомобиля. В большинстве случаев системы, заявленные, как ИИ, не осознают себя, не разумны, не обладают волей и не могут удивлять. Это просто программы.
Читать дальше →
[Перевод] Термин «искусственный интеллект» потерял всякий смысл
Source: geektimes