2020/07/01 にオンラインで開催された 「Perl若手の会(https://connpass.com/event/179235/)」でのLT資料です
Perlͷ࣌ؒϞδϡʔϧͰPerlएखͷձ2020-07-01 @koluku
View Slide
ࣗݾհ• koluku ʢίϧΫʣ• एख, Perlܦݧ2ϲ݄, ొஃܦݧແ͠• Python/Go͕ϝΠϯ
͢͜ͱɾ͞ͳ͍͜ͱ• ͢͜ͱ• ࣌ؒͷ੍ޚͷ͋Ε͜Ε• Time::Pieceָ͕ͩΑ• ͞ͳ͍͜ͱ• ࣮ͷ
$^T• ʮϓϩάϥϜΛ࣮ߦ։࢝ͨ࣌͠ࠁΛɺلݩ (1970ͷ࢝Ί) ͔ΒͷඵͰ ࣔͨ͠ͷͰ͢ʯ• لݩ (1970ͷ࢝Ί) ͬͯԿΑʁ
time• ʮ΄ͱΜͲͷγεςϜͰلݩUTC19701݄100:00:00Ͱ͢;ಛతͳྫ֎ͱͯ͠ɺݹ͍MacOSͰϩʔΧϧλΠϜκʔϯͷ19041݄100:00:00Λلݩͱ͍ͯ͠·͢ɻʯ• UTC19701݄100:00:00͍ΘΏΔUNIX࣌ؒ• UTC19041݄100:00:00͏Δ͏ͷྫ֎ճආͷͨΊͷ• 1904͔Β2096·Ͱ͏Δ͏ଘࡏ͢Δ
$^Tͱtime• ͲͪΒγεςϜ࣌ؒΛฦ͢ͷͰ࣮࣭ಉ͡• ݱࡏ࣌ؒΛΖ͏ʹUNIX࣌ؒʢඵʣͰฦ͞ΕΔͷͰී௨ʹѻ͑ͳ͍• ͦ͜ͰlocaltimeͱgmtimeΛ͏
localtime• ʮtime͕ؔฦ࣌͢ࠁΛɺϩʔΧϧͳλΠϜκʔϯͰଌͬͨ࣌ࠁͱͯ͠ɺ9ཁૉͷྻʹม͠·͢ɻී௨ɺҎԼͷΑ͏ʹ͍ͯ͠·͢:ʯ• $wday༵Λ0ͱ༵ͨ͠ɺ $yday ͦͷͷԿ͕ؼͬͯ͘Δ• εΧϥʔͷͱ͖ʹѻ͏ͱจࣈྻͰؼͬͯ͘Δ• ศརʂ
gmtime• localtimeͩͱϚγϯͷ࣌ؒʹґଘ͢ΔͨΊຊͩͱGMT+9:00• άϦχοδඪ४࣌ʹ͢ʹ-9࣌ؒ͢Δඞཁ͕…• localtimeͱಉ͡ΈͰάϦχοδඪ४࣌Λѻ͏gmtime͕͋ΔͷͰ҆৺ʂ
localtimeͱgmtimeͷ᠘• ʮ$year 1900 ͔ΒͷΛ࣋ͪ·͢ɻʯ• ਓ͕ؒಡΈ͍͢Α͏ʹԼೋܻͰஅͰ͖Δ։࢝ͷͨΊ• ͍ΘΏΔPOSIX४ڌ• ͚ͩͰݟΔͱ3ύλʔϯ͋Δ
localtimeɺศརʹศརͳΜ͚ͩͲ…• ใ͔͠ͳ͍͔Βѻ͏ʹ݁ہؔΛ࡞Δඞཁ͕͋Δ• ศརϝιου͕ੜ͑ͨΦϒδΣΫτͰฦͯ͠΄͘͠ͳ͍ʁ
Time::Piece• Timepiece࣌ܭͱ͍͏ҙຯ• localtime, gmtime͕Time::PieceΦϒδΣΫτͰؼͬͯ͘Δ• ཉ͍͠ػೳେମἧ͍ͬͯΔ
Time::PieceͰՃࢉɾݮࢉ• Time::SecondsͰ1ʢONE_MINUTEʣͳͲͷఆ͕ٛݺͼग़ͤΔ• Time::PieceʹTime::SecondsͰՃࢉɾݮࢉ͢Δ͜ͱ͕Ͱ͖Δ• localtime + ONE_DAY• Time::Pieceಉ࢜Ͱݮࢉ͢ΔͱTime::SecondsͰؼͬͯ͘Δʢඵʣ• localtime - gmtime
Time::PieceͰൺֱ• Time::Pieceಉ࢜Ͱൺֱ͢ΔࣄͰ͖Δ• return if (localtime - gmtime == ONE_HOUR * 9);• Time::Pieceศར͗͢ͳ͍ʁ
ͰͲ͏ͬͯՃࢉൺֱΛͯ͠Δʁ• ͪΐͬͱدΓಓ• Α͘ߟ͑ͨΒTime::PieceΦϒδΣΫτ͔ͩΒී௨ͷԋࢉࢠͰܭࢉͰ͖Δͷ͓͔͍͠
͜͏͍͏ͱ͖ίʔυΛಡΉͷ͕ૣ͍• ͱ͏͍͏͜ͱͰmeta::cpan͔ΒBrowseͰίʔυΛݟͯΔͱTime::Seconndsʹoverloadͱ͍͏໊લ͕ग़ͯ͘Δ
overload• perldoc.jpΛݟͯΈΔͱʮPerl ͷԋࢉࢠͷΦʔόʔϩʔυΛߦ͏ύοέʔδʯͱ͋Δ• ͭ·Γࢉज़ԋࢉࢠൺֱԋࢉࢠΛผͷؔʹ্ॻ͖Ͱ͖Δ• Time::SecondsͰ+ԋࢉࢠͷ߹ࠨӈ͔ΒΛऔͬͯؔʹೖΕͯܭࢉͨ͠ͷΛฦ͍ͯ͠Δ• ͳΔ΄ͲͶ
Ͱେମѻ͍͍ͨͷMySQLͷͱ͖…• ͬͯɺ࣌ؒͱ͍͑MySQLͰͷѻ͍ͳ͔ͳ͔໘• fracʢখҎԼʣ͕Ճ͞Ε͍ͯΔ͜ͱ͋Δ• DATETIMEͱTIMESTAMPಉ͡ϑΥʔϚοτͰɺ• αϙʔτ͞Ε͍ͯΔൣғ͕ڱ͍, DATETIME݄ɾʹ00Λڐ༰• ಉ͡Ͱҧ͏Ͱొ͞ΕΔ͕࣌͋Δ• ͜Μͳͷී௨ʹѻ͍ͨ͘ͳ͍ʂ
Time::Piece::MySQL• Time::Pieceͷ֦ுϝιου• Time::Piece->mysql_dateͰMySQLͷDATEܕʹม• Time::Piece->from_mysql_date($datetime)ͰMySQLͷDATEܕ͔ΒTime::PieceΦϒδΣΫτʹม• ͜ΕͰMySQLͰͷ࣌ؒͷॲཧʹۤ࿑͢Δ͜ͱͳ͘ͳͬͨ…ʂ
ͬͨʂੈքʹฏ͕๚ΕͨʂͰ…• ϛϦඵɾϚΠΫϩඵͷѻ͍Ͳ͏͢Δͷʁ• ϓϩάϥϜͷ࣮ߦ࣌ؒΛѻ͍͍ͨΜ͚ͩͲ• Q: Ұఆ࣌ؒॲཧΛsleepͤ͞Δʹ• Λྐྵʹม͍ͨ͠• ͷൣғʹ͋Δ͔Ͳ͏͔Λָʹܭࢉ͍ͨ͠• ຊҎ֎ͷ࣌ࠁΛϩέʔϧ͍ͨ͠• ҧ͏ϩέʔϧ࣌ؒͲ͏͠ͰࠩΛग़͍ͨ͠• etc…
͝ΊΜʂLT͡Ό࣌ؒΓͳ͍͔ΒࣗͰௐͯʂ