Upgrade to Pro — share decks privately, control downloads, hide ads and more …

2022年に始めるPerlでWebサービス開発(趣味)

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.
Avatar for papix papix
June 09, 2022

 2022年に始めるPerlでWebサービス開発(趣味)

Avatar for papix

papix

June 09, 2022
Tweet

More Decks by papix

Other Decks in Technology

Transcript

  1. ࣗݾ঺հ • papix (id:papix / @__papix__) • גࣜձࣾ͸ͯͳ WebΞϓϦέʔγϣϯΤϯδχΞ (2017೥ʙ)

    • ϒϩάMediaνʔϜ → ϚϯΨνʔϜ • Ұൠࣾஂ๏ਓJapan Perl Associationཧࣄ • ϒϩά: https://papix.hatena(blog.(com|jp)|diary.jp)
  2. ԿΛ࡞Δ? • υϝΠϯʹैͬͯ(?), ٕज़Ͱཱྀߦͷ৴པੑΛߴΊ͍ͨ • ϫʔέʔγϣϯ(લճ࿩͠·ͨ͠Ͷ!)Ͱ͸, ॓ͷ௨৴؀ڥ͕େࣄ • ňWi-Fi͋Γ·͢ʼnͱॻ͔Ε͍ͯͯ΋, ͦͷ඼࣭·Ͱ͸Θ͔Βͳ͍

    • docker pullͰ͖ͳ͔ͬͨΓ, Online MTG͕Ͱ͖ͳ͍඼࣭ͩͱࠔΔ • օͰ॓ͷ৘ใ(௨৴଎౓౳)ΛूΊΔαʔϏε͕͋ΔͱศརͰ͸?
  3. ຊ୊ • ͱ͍͏Θ͚Ͱ, झຯͰ! PerlͰ! WebApp։ൃ, ࢝Ί·ͨ͠ • ·ͩ·ͩ։ൃணखͨ͠͹͔ΓͰ͕͢, ͲͷΑ͏ͳߏ੒ʹ͔ͨ͠࿩ͦ

    ͏ͱࢥ͍·͢ • ߹ཧੑ͸օແͰ, ׬શʹझຯʹৼΓ੾͍ͬͯΔ఺ྃ͝ঝ͍ͩ͘͞ • ͪͳΈʹίʔυωʔϜ͸ňMoonsideʼnͰ͢
  4. cpan fi le requires 'Amon2', '== 6.15'; requires 'Aniki', '==

    1.06'; requires 'Cookie::Baker', '== 0.11'; requires 'Crypt::JWT', '== 0.034'; requires 'DBD::mysql', '== 4.050'; requires 'DBIx::Schema::DSL', '== 1.0000'; requires 'Digest::HMAC', '== 1.04'; requires 'Digest::SHA', '== 6.02'; requires 'Furl', '== 3.14'; requires 'Gazelle', '== 0.49'; requires 'HTML::FillInForm::Lite', '== 1.15'; requires 'JSON::XS', '== 4.03'; requires 'Module::Find', '== 0.15'; requires 'Module::Functions', '== 2.1.3'; requires 'Plack::Middleware::ReverseProxy', '== 0.16'; requires 'Plack::Middleware::Session', '== 0.33'; requires 'Plack::Session::Store::Redis', '== 0.05'; requires 'Redis', '== 1.999'; requires 'Router::Boom', '== 1.03'; requires 'Smart::Args', '== 0.14'; requires 'Text::Xslate', '== v3.5.9'; requires 'Time::Moment', '== 0.44'; on development => sub { requires 'Anego', '== 0.02'; }; on test => sub { requires 'Test2', '== 1.302188'; requires 'Test::WWW::Mechanize::PSGI', '== 0.39'; }; جຊతʹ࠷৽൛Λ࢖͏Α͏, όʔδϣϯݻఆ͍ͯ͠Δ
  5. Amon2 / Text::Xslate • WAF/Template Engine͸ͦΕͧΕAmon2/Text::XslateΛબఆ • Amon2͸࠷ۙ͝ແࠫଡͰ͕͢, લ͸݁ߏ࢖͍ͬͯͯ, ·ͩ·ͩهԱ͕

    ͋ΔͨΊ • Amon2Λ࠾༻͢ΔͳΒ౰વTemplate Engine͸Text::XslateͰ • Syntax͸Text::Xslate::Syntax::TTerseʹ͠·ͨ͠
  6. Authentication • Firebase Authentication • Ϣʔβʔ؅ཧपΓ͸ࣗલͰ؅ཧͨ͘͠ͳ͍ • Firebase AuthenticationͰ؅ཧͯ͠, PerlͷApp͔Βར༻͢Δ

    • ೝূ͸Firebase, ͦΕΛݩʹPerlͷAppͰηογϣϯΛ༻ҙ • ࢀߟจݙ: https://diary.ssig33.com/posts/535 • ͪ͜ΒͰ͸RailsͰͷࣄྫ͕ͩ, ಉ͡Α͏ͳ͜ͱ͸PerlͰ΋ग़དྷΔ
  7. CSRF Defender • ࠓճ͸ηογϣϯετΞʹRedisΛ࢖͏͜ͱʹͨ͠(झຯ) • ͕, HTTP::Session2::ServerStore͸Cache::Memcached::FastΛ૝ఆ ͍ͯ͠Δ • ݁ہ,

    Amon2ͷ࣮૷Λࢀߟʹͭͭ͠ಠࣗʹ࣮૷͢Δ͜ͱʹͨ͠ • RedisʹΑΔSession؅ཧ͸Plack::Session::Store::Redisʹ೚ͤΔ • ޙ͸ͦΕΛ࢖ͬͯtokenΛൃߦͨ͠Γ...