Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
p5-Lodash!
Search
Kenta Kobayashi
May 26, 2018
Technology
930
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
p5-Lodash!
吉祥寺.pm #14 / LT
Kenta Kobayashi
May 26, 2018
More Decks by Kenta Kobayashi
See All by Kenta Kobayashi
Perlの生きのこり - YAPC::Fukuoka 2025
kfly8
0
2.2k
プロジェクトの空気を読んで開発してくれるPerlのAIツールがほしい
kfly8
2
1.1k
Perlの生きのこり - エンジニアがこの先生きのこるためのカンファレンス2025
kfly8
4
3.3k
Tシャツに書かれたコードを読む
kfly8
0
1.5k
Introduce Sub::Meta
kfly8
0
110
研修はイベントでなくコミュニティ作り
kfly8
0
2.3k
明日からできる新人のオンボーディングガイド
kfly8
0
940
メンター成長のためのふりかえり会
kfly8
0
1.5k
Interfaces in Perl5 at The Perl Conference 2019 in Pittsburgh
kfly8
0
3.4k
Other Decks in Technology
See All in Technology
Essential architectural thinking (revised edition)
ufried
0
110
Running Kotlin + Quarkus with Lambda
nealle
0
380
大型犬好きによるPugの紹介
yamanoku
1
110
ブラウザとサーバーから考えるAI時代のフロントエンド監視
shogo4131
3
760
ai_cording_with_k8s_knowledge.pdf
mochizuki875
1
330
AI駆動開発の時代になったのでトヨタ生産方式から見直す
terurou
6
5.7k
Claude Code本は、どのように執筆チームで書かれたか
oikon48
1
360
MCPゲートウェイを作って運用してわかったこと — Agent時代の権限管理の現在地
mtpooh
10
3.3k
初対面のメンバーがチームを組み、Claude Codeでゼロからサービスをリリース
mkdev10
1
120
AIがコードを書く時代に、エンジニアは何で自分の価値を証明するのか / In an era where AI writes code how do engineers prove their value
carta_engineering
1
790
スキルを作る、その前に!複数人で使われるスキルを 作るためのプロセス
junkifurukawa
2
380
Jetson Orin Nanoとk3sとローカルLLMで音声文字起こしシステム作ってみた
y_sera15
0
120
Featured
See All Featured
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Believing is Seeing
oripsolob
1
240
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
490
HDC tutorial
michielstock
2
950
Large-scale JavaScript Application Architecture
addyosmani
516
110k
Why Our Code Smells
bkeepers
PRO
340
58k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.6k
Technical Leadership for Architectural Decision Making
baasie
3
600
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
260
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Transcript
p5-Lodash! 吉祥寺.pm14 / LT @k y8
_.defaults({ 'a': 1 }, { 'a': 3, 'b': 2 });
// → { 'a': 1, 'b': 2 } _.partition([1, 2, 3, 4], n => n % 2); // → [[1, 3], [2, 4]]
p5-Lodash Perl5 port of Lodash.js 同じ挙動を目指してる ( ひとまず) 手書き Inline
module に頼るでなく、 真正面から モチベー ション JSer に楽してもらいたい CPAN に便利なモジュー ルがたくさんあるけ ど、 知らないが為に損することもある
use Lodash; _->defaults({ a => 1 }, { a =>
3, b => 2 }); # → { a => 1, b => 2 } _->partition([1, 2, 3, 4], sub ($n) { $n % 2 }); # → [[1, 3], [2, 4]]
use Lodash qw(_defaults _partition); _defaults({ a => 1 }, {
a => 3, b => 2 }); # → { a => 1, b => 2 } _partition([1, 2, 3, 4], sub ($n) { $n % 2 }); # → [[1, 3], [2, 4]]
use Lodash -core; # => export core functions
_.add
6 + 4
❯ perl -e 'print 6 + 4' 10 ❯ node
-e 'console.log(6+4)' 10
'6' + '4'
❯ perl -e "print '6' + '4'" 10 ❯ node
-e "console.log('6'+'4')" 64
_.add(6, 4) # => 10 _.add('6', '4') # => '64'
❯ perl -MDevel::Peek -e "Dump 6" SV = IV(0x7fdf7d011370) at
0x7fdf7d011380 REFCNT = 1 FLAGS = (IOK,READONLY,PROTECT,pIOK) IV = 6
❯ perl -MDevel::Peek -e "Dump '6'" SV = PV(0x7fb986803e80) at
0x7fb98700a998 REFCNT = 1 FLAGS = (POK,IsCOW,READONLY,PROTECT,pPOK) PV = 0x7fb986500b70 "6"\0 CUR = 1 LEN = 10 COW_REFCNT = 0
どちらも Scalar Value だけど、 中身は違う 一方は、 Integer Value もう一方は Pointer
Value 6 と '6' の中身の違いを浮き出せれば、 区別できる
use B;
use Test::More; use B; ok B::svref_2object(\6)->FLAGS & B::SVp_IOK; ok not
B::svref_2object(\'6')->FLAGS & B::SVp_IOK; done_testing;
None
XOR operator
use Test::More; ok((6^6) eq '0'); ok not (('6'^'6') eq '0');
done_testing;
use Test::More; # NUL ok not ((6^6) eq "\0"); ok(('6'^'6')
eq "\0"); done_testing;
sub is_number { my $value = shift; looks_like_number($value) && ($value^$value)
eq '0' }
None
!!1
is_number(!!1^!!1) # => ok ❯ perl -MDevel::Peek -e 'Dump !!1^!!1'
SV = IV(0x7f93e7015370) at 0x7f93e7015380 REFCNT = 1 FLAGS = (PADTMP,IOK,READONLY,PROTECT,pIOK) IV = 0
None
❯ perl -MDevel::Peek -e 'Dump !!1' SV = PVNV(0x7ff3a4001010) at
0x10d9b7b58 REFCNT = 2147483644 FLAGS = (IOK,NOK,POK,READONLY,PROTECT,pIOK,pNOK,pPOK) IV = 1 NV = 1 PV = 0x10d99cd43 "1" CUR = 1 LEN = 0
PVNV!
PVNV dual value Scalar::Util::isdual
sub is_number { my $value = shift; looks_like_number($value) && ($value^$value)
eq '0' && !isdual($value) }
None
雑まとめ p5-Lodash の話から Perl の話に脱線 SV は、 多態 コンテキストで、 値が変わる
見ようと思えば、 中身も見れる Devel::Peek B.pm etc
進捗
7/256
やっていき
Gotanda.pm #18 6/11( 月) 株式会社メルカリ 六本木! スピー カー @kazeburo 「System
Programming and Perl」
ぱー るもんがー ごたぴー きちぴー ぜんぶがいねん ( 字余り)