{"id":74,"date":"2016-10-28T17:11:27","date_gmt":"2016-10-28T17:11:27","guid":{"rendered":"http:\/\/67bricks.com\/blog\/?p=74"},"modified":"2016-10-28T17:11:27","modified_gmt":"2016-10-28T17:11:27","slug":"dev-meeting-intellij-idea-xquery-and-aws-lambda","status":"publish","type":"post","link":"https:\/\/blog.67bricks.com\/?p=74","title":{"rendered":"Dev meeting &#8211; IntelliJ IDEA XQuery, and AWS Lambda"},"content":{"rendered":"<p>Reece talked about the work that he&#8217;s been doing on an improved XQuery plugin for IntelliJ IDEA. This was inspired by some annoyances he was encountering with the existing XQuery plugin &#8211; although it&#8217;s generally good, it doesn&#8217;t have complete support for MarkLogic&#8217;s brand of XQuery, and it doesn&#8217;t correctly parse all XQuery.<\/p>\n<p>Reece&#8217;s implementation covers more areas of the XQuery language, has better error reporting for issues in your XQuery code, can check for file encoding issues, supports Find Usages, and has a number of other features.<\/p>\n<p>Reece is uploading his XQuery plugin to the Jetbrains repository this weekend, so it should soon be publicly available.<\/p>\n<p>Joe and Chris talked about the work that we&#8217;ve been doing with AWS Lambda. AWS Lambda is what Joe hoped that cloud computing would be all along. AWS EC2 is a server in the cloud, but not fundamentally different from having a server on your own network. However, AWS Lambda is effectively serverless &#8211; you upload a piece of code, and then it runs without you worrying about the infrastructure at all. However, the underlying infrastructure can make a difference to you, in terms of the latency of invoking it when it hasn&#8217;t recently been called.<\/p>\n<p>We are using AWS Lambda as part of a filter for an Amazon SQS queue. We&#8217;re testing it using an SBT plugin &#8211; SBTMocha. The challenges with testing it are:<\/p>\n<ul>\n<li>When uploading the lambda, you don&#8217;t need the AWS libraries. However, when you&#8217;re testing it locally, you need to have the AWS library available. We dealt with this by separating the AWS-specific content from the testable content, and just testing the interesting part that doesn&#8217;t depend on AWS.<\/li>\n<li>We have a number of environments: dev, qa, production. The configuration for the function needs to vary between each of them. The standard way of dealing with this is to include a &#8220;conf&#8221; directory as part of the upload, from which the lambda reads its configuration. Our build process in Jenkins constructs an appropriate zip file for the environment.<\/li>\n<\/ul>\n<p>Using Lambda has been very useful for us &#8211; it has removed the need for a server.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Reece talked about the work that he&#8217;s been doing on an improved XQuery plugin for IntelliJ IDEA. This was inspired by some annoyances he was encountering with the existing XQuery plugin &#8211; although it&#8217;s generally good, it doesn&#8217;t have complete support for MarkLogic&#8217;s brand of XQuery, and it doesn&#8217;t correctly parse all XQuery. Reece&#8217;s implementation &hellip; <a href=\"https:\/\/blog.67bricks.com\/?p=74\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Dev meeting &#8211; IntelliJ IDEA XQuery, and AWS Lambda&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-74","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/blog.67bricks.com\/index.php?rest_route=\/wp\/v2\/posts\/74","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.67bricks.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.67bricks.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.67bricks.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.67bricks.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=74"}],"version-history":[{"count":1,"href":"https:\/\/blog.67bricks.com\/index.php?rest_route=\/wp\/v2\/posts\/74\/revisions"}],"predecessor-version":[{"id":75,"href":"https:\/\/blog.67bricks.com\/index.php?rest_route=\/wp\/v2\/posts\/74\/revisions\/75"}],"wp:attachment":[{"href":"https:\/\/blog.67bricks.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=74"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.67bricks.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=74"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.67bricks.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=74"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}