Acme-CPANModulesBundle-Import-MojoliciousAdvent-2018

 view release on metacpan or  search on metacpan

devdata/https_mojolicious.io_blog_2018_12_01_welcome-mojoconf-recap_  view on Meta::CPAN


   </header>

     <div id="page-title">

  <div class="row">

      <div class="ten columns centered text-center">
        <h1>Mojo Wonk Blog<span>.</span></h1>

        <p>A semi-offical blog dedicated to the Mojolicious web framework</p>
      </div>

  </div>

</div>



<div class="content-outer">

devdata/https_mojolicious.io_blog_2018_12_01_welcome-mojoconf-recap_  view on Meta::CPAN


<p>There were lots of great talks, both on Mojolicious and on Perl in general.
You can <a href="https://www.youtube.com/playlist?list=PL3IiTqgYQ8s0DeRIHW6fXJ4w-BJIMHuDS">see them all</a> on the <a href="https://www.youtube.com/channel/UCgk2wCZr5Rk-cewLTtQA_Fg">NPW Youtube Channel</a>.
For brevity, I&#39;ll just highlight a few here.</p>

<h3>Keynote</h3>

<p>This year&#39;s keynote was delivered by Author and Perl luminary <a href="http://www252.pair.com/~comdog/">brian d foy</a>.
He talked about how Mojo&#39;s whipupitude got real work done quickly in his consulting gigs.</p>

<p><iframe allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen frameborder="0" height="480" src="https://www.youtube.com/embed/1tPAfgE3CbU" width="854"></iframe></p>

<h3>Mojolicious 8.0 Announcement</h3>

<p>Mojolicious Project founder and lead developer Sebastian Riedel presented &quot;Eight Point Oh&quot;.
Though it is ostensibly an announcement of the 8.0 release, it is more properly a recap of the features added to Mojo since 7.0.
It isn&#39;t just Mojolicious either, several spin-off projects are also mentioned.</p>

<p><iframe allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen frameborder="0" height="480" src="https://www.youtube.com/embed/nYlFprRybzA" width="854"></iframe></p>

<p>(Edit: This post originally stated that the talk included changes since 5.0.
While that had originally been the planned, there were so many features added since 7.0, covering from 5.0 up was dropped.)</p>

<h3>My Own Worst Enemy</h3>

<p>On another personal note, I love including working code and doing live demos in talks.
I know the former risks bordom but I fell it is important for people to be able to see how code really works in practice.
Because of that fear, I like live demos because it <a href="https://youtu.be/dDH10srLgVc?t=343">engages the audience</a> and makes code-heavy talks more physical.</p>

devdata/https_mojolicious.io_blog_2018_12_01_welcome-mojoconf-recap_  view on Meta::CPAN

<p>That&#39;s right, I forgot the login credentials to my own demo.</p>

<p>That said, most of the talk still worked.
So beyond that first lesson, here&#39;s one more: even experienced speakers mess up, we shrug and move on.
Don&#39;t let fear of failure stop you from speaking to groups of like minded colleagues about the work you do.</p>

<p>The talk is about migrating from a Lite app to a full app.
If you find yourself feeling afraid or confused in moving to a full app, or if you read the Mojolicious documentation and wonder how it applies to a full app, give this a watch.
Bonus material about modern Javascript at the end too.</p>

<p><iframe allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen frameborder="0" height="480" src="https://www.youtube.com/embed/ycAXeOKLCGc" width="854"></iframe></p>

<h3>And Now, a Bit of Fun</h3>

<p>Right before the lightning talks, call it an hour before, conference co-organizer Marcus Ramberg mentioned that he wished there was at least one more lightning talk to fill out the time.
I had had one more talk idea and even had a vague outline of structure in my head, so on the spur of the moment I told him I&#39;d do it.
The result was a bit rough (of course), and I&#39;ve since cleaned it up if I should get a chance to do it again, but it was still fun I think.
If you&#39;re in the mood and have 5 minutes, what my rant about SAML.</p>

<p><iframe allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen frameborder="0" height="480" src="https://www.youtube.com/embed/xno08-KGJyY" width="854"></iframe></p>

<h3>Finally</h3>

<p>Have some fun, watch the talks from the conference, and if you enjoy what you see, consider coming to the next MojoConf!
I want to thank all of the organizers, the venue <a href="http://www.teknologihuset.no/">Teknologihuset</a> and the conference partner/sponsor <a href="https://www.ksat.no/">KSAT</a>.
I had a great time and I can&#39;t wait for the next one!</p>

              </section>
              <small><p>Original image by Joel Berger.</p>
</small>

devdata/https_mojolicious.io_blog_2018_12_02_automatic-reload-for-rapid-development_  view on Meta::CPAN


   </header>

     <div id="page-title">

  <div class="row">

      <div class="ten columns centered text-center">
        <h1>Mojo Wonk Blog<span>.</span></h1>

        <p>A semi-offical blog dedicated to the Mojolicious web framework</p>
      </div>

  </div>

</div>



<div class="content-outer">

devdata/https_mojolicious.io_blog_2018_12_03_higher-order-promises_  view on Meta::CPAN


   </header>

     <div id="page-title">

  <div class="row">

      <div class="ten columns centered text-center">
        <h1>Mojo Wonk Blog<span>.</span></h1>

        <p>A semi-offical blog dedicated to the Mojolicious web framework</p>
      </div>

  </div>

</div>



<div class="content-outer">

devdata/https_mojolicious.io_blog_2018_12_04_testing-hooks-and-helpers_  view on Meta::CPAN


   </header>

     <div id="page-title">

  <div class="row">

      <div class="ten columns centered text-center">
        <h1>Mojo Wonk Blog<span>.</span></h1>

        <p>A semi-offical blog dedicated to the Mojolicious web framework</p>
      </div>

  </div>

</div>



<div class="content-outer">

devdata/https_mojolicious.io_blog_2018_12_04_testing-hooks-and-helpers_  view on Meta::CPAN

              </div>

            <div class="post-content">

              <section id="section-1">
                  <p><a href="https://mojolicious.org/perldoc/Test/Mojo">Test::Mojo</a>, the
<a href="http://mojolicious.org">Mojolicious</a> testing tool, has a lot of ways to
<a href="https://mojolicious.org/perldoc/Mojolicious/Guides/Testing">test routes in web
applications</a>
(even for <a href="https://metacpan.org/pod/Test::Mojo::Role::PSGI">testing in other web
frameworks</a>).</p>

<p>But what if what I need to test isn&#39;t a route? What if it&#39;s
a <a href="https://mojolicious.org/perldoc/Mojolicious#HOOKS">hook</a>,
a <a href="https://mojolicious.org/perldoc/Mojolicious/Guides/Cookbook#Adding-a-plugin-to-your-application">plugin</a>,
or
a <a href="https://mojolicious.org/perldoc/Mojolicious/Guides/Rendering#Helpers">helper</a>?
We can test all those things, too!</p>

              </section>
              <section id="section-2">

devdata/https_mojolicious.io_blog_2018_12_05_compound-selectors_  view on Meta::CPAN


   </header>

     <div id="page-title">

  <div class="row">

      <div class="ten columns centered text-center">
        <h1>Mojo Wonk Blog<span>.</span></h1>

        <p>A semi-offical blog dedicated to the Mojolicious web framework</p>
      </div>

  </div>

</div>



<div class="content-outer">

devdata/https_mojolicious.io_blog_2018_12_06_making-a-list-with-yancy_  view on Meta::CPAN


   </header>

     <div id="page-title">

  <div class="row">

      <div class="ten columns centered text-center">
        <h1>Mojo Wonk Blog<span>.</span></h1>

        <p>A semi-offical blog dedicated to the Mojolicious web framework</p>
      </div>

  </div>

</div>



<div class="content-outer">

devdata/https_mojolicious.io_blog_2018_12_06_making-a-list-with-yancy_  view on Meta::CPAN

              <div class="post-thumb">
                <!-- theme suggests 1300x500 -->
                <img alt="Santa making a list" src="/blog/2018/12/06/making-a-list-with-yancy/banner.jpg">
              </div>

            <div class="post-content">

              <section id="section-1">
                  <p>In these modern times, with billions of people in the world, Santa needs a
modern system to keep track of his naughty/nice list. Lucky for Santa, modern
Perl has a modern web framework, <a href="http://mojolicious.org">Mojolicious</a>.</p>

              </section>
              <section id="section-2">
                  <h1>Step 1: Build The List</h1>

<p>First, we need a database schema. Santa only really needs to know if someone
has been naughty or nice, so our schema is pretty simple. We&#39;ll start our
<a href="https://mojolicious.org/perldoc/Mojolicious/Guides/Tutorial">Mojolicious::Lite</a>
app by connecting to a <a href="http://sqlite.org">SQLite</a> database using
<a href="https://metacpan.org/pod/Mojo::SQLite">Mojo::SQLite</a> and loading our database

devdata/https_mojolicious.io_blog_2018_12_07_openapi_  view on Meta::CPAN


   </header>

     <div id="page-title">

  <div class="row">

      <div class="ten columns centered text-center">
        <h1>Mojo Wonk Blog<span>.</span></h1>

        <p>A semi-offical blog dedicated to the Mojolicious web framework</p>
      </div>

  </div>

</div>



<div class="content-outer">

devdata/https_mojolicious.io_blog_2018_12_08_authenticating-with-ldap_  view on Meta::CPAN


   </header>

     <div id="page-title">

  <div class="row">

      <div class="ten columns centered text-center">
        <h1>Mojo Wonk Blog<span>.</span></h1>

        <p>A semi-offical blog dedicated to the Mojolicious web framework</p>
      </div>

  </div>

</div>



<div class="content-outer">

devdata/https_mojolicious.io_blog_2018_12_09_add-a-theme-system-to-your-mojolicious-app_  view on Meta::CPAN


   </header>

     <div id="page-title">

  <div class="row">

      <div class="ten columns centered text-center">
        <h1>Mojo Wonk Blog<span>.</span></h1>

        <p>A semi-offical blog dedicated to the Mojolicious web framework</p>
      </div>

  </div>

</div>



<div class="content-outer">

devdata/https_mojolicious.io_blog_2018_12_09_add-a-theme-system-to-your-mojolicious-app_  view on Meta::CPAN

              <div class="post-thumb">
                <!-- theme suggests 1300x500 -->
                <img alt="Four lines of paint drawn on a roller, in green, red, orange and blue" src="/blog/2018/12/09/add-a-theme-system-to-your-mojolicious-app/banner.jpg">
              </div>

            <div class="post-content">

              <section id="section-1">
                  <p>You wrote an awesome Mojolicious app, and people use it.
Marvellous!
But users may want to modify the theme of your app: change the logo, use another CSS framework, such sort of things.</p>

<p>Modifying the theme of a Mojolicious app is quite easy: add, modify or delete things in <code>public</code> and <code>templates</code>.
But all those direct modifications may not survive on update of the app: they will simply be erased by the files of the new version.</p>

<p>Let&#39;s see how we can provide a way to have a theme system in a Mojolicious application, that allows users to have a custom theme without pain and without risk of losing it on updates.</p>

              </section>
              <section id="section-2">
                  <h2>A fresh application</h2>

devdata/https_mojolicious.io_blog_2018_12_10_minion-stands-alone_  view on Meta::CPAN


   </header>

     <div id="page-title">

  <div class="row">

      <div class="ten columns centered text-center">
        <h1>Mojo Wonk Blog<span>.</span></h1>

        <p>A semi-offical blog dedicated to the Mojolicious web framework</p>
      </div>

  </div>

</div>



<div class="content-outer">

devdata/https_mojolicious.io_blog_2018_12_11_who-watches-the-minions_  view on Meta::CPAN


   </header>

     <div id="page-title">

  <div class="row">

      <div class="ten columns centered text-center">
        <h1>Mojo Wonk Blog<span>.</span></h1>

        <p>A semi-offical blog dedicated to the Mojolicious web framework</p>
      </div>

  </div>

</div>



<div class="content-outer">

devdata/https_mojolicious.io_blog_2018_12_12_dancer-and-minion_  view on Meta::CPAN


   </header>

     <div id="page-title">

  <div class="row">

      <div class="ten columns centered text-center">
        <h1>Mojo Wonk Blog<span>.</span></h1>

        <p>A semi-offical blog dedicated to the Mojolicious web framework</p>
      </div>

  </div>

</div>



<div class="content-outer">

devdata/https_mojolicious.io_blog_2018_12_13_taking-on-roles_  view on Meta::CPAN


   </header>

     <div id="page-title">

  <div class="row">

      <div class="ten columns centered text-center">
        <h1>Mojo Wonk Blog<span>.</span></h1>

        <p>A semi-offical blog dedicated to the Mojolicious web framework</p>
      </div>

  </div>

</div>



<div class="content-outer">

devdata/https_mojolicious.io_blog_2018_12_14_a-practical-example-of-mojo-dom_  view on Meta::CPAN


   </header>

     <div id="page-title">

  <div class="row">

      <div class="ten columns centered text-center">
        <h1>Mojo Wonk Blog<span>.</span></h1>

        <p>A semi-offical blog dedicated to the Mojolicious web framework</p>
      </div>

  </div>

</div>



<div class="content-outer">

devdata/https_mojolicious.io_blog_2018_12_15_practical-web-content-munging_  view on Meta::CPAN


   </header>

     <div id="page-title">

  <div class="row">

      <div class="ten columns centered text-center">
        <h1>Mojo Wonk Blog<span>.</span></h1>

        <p>A semi-offical blog dedicated to the Mojolicious web framework</p>
      </div>

  </div>

</div>



<div class="content-outer">

devdata/https_mojolicious.io_blog_2018_12_16_browser-diet_  view on Meta::CPAN


   </header>

     <div id="page-title">

  <div class="row">

      <div class="ten columns centered text-center">
        <h1>Mojo Wonk Blog<span>.</span></h1>

        <p>A semi-offical blog dedicated to the Mojolicious web framework</p>
      </div>

  </div>

</div>



<div class="content-outer">

devdata/https_mojolicious.io_blog_2018_12_17_a-website-for-yancy_  view on Meta::CPAN


   </header>

     <div id="page-title">

  <div class="row">

      <div class="ten columns centered text-center">
        <h1>Mojo Wonk Blog<span>.</span></h1>

        <p>A semi-offical blog dedicated to the Mojolicious web framework</p>
      </div>

  </div>

</div>



<div class="content-outer">

devdata/https_mojolicious.io_blog_2018_12_18_a-view-to-a-pod_  view on Meta::CPAN


   </header>

     <div id="page-title">

  <div class="row">

      <div class="ten columns centered text-center">
        <h1>Mojo Wonk Blog<span>.</span></h1>

        <p>A semi-offical blog dedicated to the Mojolicious web framework</p>
      </div>

  </div>

</div>



<div class="content-outer">

devdata/https_mojolicious.io_blog_2018_12_19_you-only-export-twice_  view on Meta::CPAN


   </header>

     <div id="page-title">

  <div class="row">

      <div class="ten columns centered text-center">
        <h1>Mojo Wonk Blog<span>.</span></h1>

        <p>A semi-offical blog dedicated to the Mojolicious web framework</p>
      </div>

  </div>

</div>



<div class="content-outer">

devdata/https_mojolicious.io_blog_2018_12_20_testing-dancer_  view on Meta::CPAN


   </header>

     <div id="page-title">

  <div class="row">

      <div class="ten columns centered text-center">
        <h1>Mojo Wonk Blog<span>.</span></h1>

        <p>A semi-offical blog dedicated to the Mojolicious web framework</p>
      </div>

  </div>

</div>



<div class="content-outer">

devdata/https_mojolicious.io_blog_2018_12_20_testing-dancer_  view on Meta::CPAN

  -&gt;message_ok
  -&gt;json_message_is({hello =&gt; &#39;browser!&#39;})
  -&gt;finish_ok;

done_testing;
</code></pre>

<p>Unlike the previous examples, this time the connection stays open (but blocked) between method calls.
Per the protocol of the example, we first send a greeting to the Dancer app as a JSON document.
Since so much real-world websocket usage is just serialized JSON messages, Mojolicious provides many JSON-over-WebSocket conveniences.
One such convenience is a virtual websocket frame type that takes a data structure and serializes it as JSON before actually sending it as a text frame.</p>

<p>We then wait to get a message in response with <code>message_ok</code>.
In this case, we expect the application to greet us by calling us &quot;browser!&quot;.
Oh well, it doesn&#39;t know any better!
We can the test that JSON reply with <code>json_message_is</code> (like <code>json_is</code> above but for websocket messages).
Finally we close the connection, testing that it closes correctly.</p>

<p>Testing WebSockets, even from a Dancer application, is easy!</p>

<h2>Conclusion</h2>

devdata/https_mojolicious.io_blog_2018_12_21_a-little-christmas-template-cooking_  view on Meta::CPAN


   </header>

     <div id="page-title">

  <div class="row">

      <div class="ten columns centered text-center">
        <h1>Mojo Wonk Blog<span>.</span></h1>

        <p>A semi-offical blog dedicated to the Mojolicious web framework</p>
      </div>

  </div>

</div>



<div class="content-outer">

devdata/https_mojolicious.io_blog_2018_12_22_use-carton-for-your-mojolicious-app-deployment_  view on Meta::CPAN


   </header>

     <div id="page-title">

  <div class="row">

      <div class="ten columns centered text-center">
        <h1>Mojo Wonk Blog<span>.</span></h1>

        <p>A semi-offical blog dedicated to the Mojolicious web framework</p>
      </div>

  </div>

</div>



<div class="content-outer">

devdata/https_mojolicious.io_blog_2018_12_23_mojolicious-and-angular_  view on Meta::CPAN


   </header>

     <div id="page-title">

  <div class="row">

      <div class="ten columns centered text-center">
        <h1>Mojo Wonk Blog<span>.</span></h1>

        <p>A semi-offical blog dedicated to the Mojolicious web framework</p>
      </div>

  </div>

</div>



<div class="content-outer">

devdata/https_mojolicious.io_blog_2018_12_23_mojolicious-and-angular_  view on Meta::CPAN

            </div>

              <div class="post-thumb">
                <!-- theme suggests 1300x500 -->
                <img alt="Spider in web" src="/blog/2018/12/23/mojolicious-and-angular/banner.jpg">
              </div>

            <div class="post-content">

              <section id="section-1">
                  <p><a href="https://angular.io/">Angular</a> is one of the most popular front-end web application frameworks, helping you build modern applications for the web, mobile, or desktop.
<a href="https://mojolicious.org/">Mojolicious</a> is a next generation web framework for the Perl programming language.
Mojolicious and Angular together can certainly build a next generation web application.</p>

<p>At work, we have been using these two to build a very responsive, scalable and fantastic web apps.
Mojolicious as a backend gives a lot of fun to work stuffs like <a href="https://mojolicious.org/perldoc/Minion">Minion</a>, <a href="https://mojolicious.org/perldoc/Mojo/DOM">Mojo::DOM</a>, <a href="https://mojolicious.org/perldoc/Test/Mojo">Test::M...
It has many plugins, including easy implementation of <a href="https://metacpan.org/pod/Mojolicious::Plugin::OpenAPI">OpenAPI</a>, <a href="https://metacpan.org/pod/Mojolicious::Plugin::OAuth2">OAuth</a>, utility modules and of many others on CPAN.</...

<p>One of the reasons you want to have this kind of web development set up is that front-end Angular developers and backend Mojolicious developers can work independently.</p>

<p>Angular is backend agnostic. Node.js Express is often used as backend for Angular, but we love Perl and Mojolicious.</p>

devdata/https_mojolicious.io_blog_2018_12_24_async-await-the-mojo-way_  view on Meta::CPAN


   </header>

     <div id="page-title">

  <div class="row">

      <div class="ten columns centered text-center">
        <h1>Mojo Wonk Blog<span>.</span></h1>

        <p>A semi-offical blog dedicated to the Mojolicious web framework</p>
      </div>

  </div>

</div>



<div class="content-outer">

devdata/https_mojolicious.io_blog_2018_12_25_special-thanks_  view on Meta::CPAN


   </header>

     <div id="page-title">

  <div class="row">

      <div class="ten columns centered text-center">
        <h1>Mojo Wonk Blog<span>.</span></h1>

        <p>A semi-offical blog dedicated to the Mojolicious web framework</p>
      </div>

  </div>

</div>



<div class="content-outer">



( run in 1.206 second using v1.01-cache-2.11-cpan-df04353d9ac )