SlideShare a Scribd company logo
1 of 46
Download to read offline
"What Does Your Code Smell Like?"
           で学ぶPerl6

                 by risou
           at yokohama.pm #9
はじめに



• 今回は Perl6 のお話をします
• Perl6 に興味のない方は、
 15分の休憩と思ってゆっくりしてください。
YAPCお疲れ様でした


• 面白くてタメになるトークがたくさん
• 懇親会の美味しい料理
• LTthonのすごい盛り上がり
• etc...
ところで
Larry のトーク
聴きましたか?
What Does Your Code Smell Like?




 • strand sort を行うプログラム
 • Perl5 のコードを Perl6 のコードへ
use 5.10.0;     # for given/when
sub merge {
    my ($x, $y) = @_;
    my @out;
    while (@$x and @$y) {
        given ($x->[-1] <=> $y->[-1]) {
             when( 1) { unshift @out, pop @$x }
             when(-1) { unshift @out, pop @$y }
             default { splice @out, 0, 0, pop(@$x), pop(@$y) }
        }
    }
    return @$x, @$y, @out
}

sub strand {
    my $x = shift;
    my @out = shift @$x // return;
    if (@$x) {
        for (-@$x .. -1) {
             if ($x->[$_] >= $out[-1]) {
                 push @out, splice @$x, $_, 1
             }
        }
    }
    return @out
}

sub strand_sort {
    my @x = @_;
    my @out;
    while (my @strand = strand(@x)) {
         @out = merge(@out, @strand)
    }
    @out
}

my @a = map (int rand(100), 1 .. 10);
say "Before @a";
@a = strand_sort(@a);
say "After @a";
sub infix:<M> (@x is rw, @y is rw) {
    gather {
        while @x and @y {
             given @x[0] cmp @y[0] {
                 when Increase { take @x.shift }
                 when Decrease { take @y.shift }
                 when Same { take @x.shift, @y.shift }
             }
        }
        take @x, @y
    }
}

sub strand (@x is rw) {
    my $prev = -Inf;
    my $i = 0;
    gather while $i < @x {
        if @x[$i] before $prev {
            $i++;
        }
        else {
            take $prev = @x.splice($i, 1)[0];
        }
    }
}

sub strand_sort (@x is copy) {
    my @out;
    @out M= strand(@x) while @x;
    @out
}

my @a = (^100).roll(10);
say "Before @a[]";
@a = strand_sort(@a);
say "After @a[]";

@a = <The quick brown fox jumps over the lazy dog>;
say "Before @a[]";
@a = strand_sort(@a);
say "After @a[]";
今回のお話



•   What Does Your Code Smell Like?
    を元に Perl6 を紹介します

• (時間の都合で)全部は紹介しません
文法の違い
merge関数

sub merge {
    my ($x, $y) = @_;
    my @out;
    while (@$x and @$y) {
        given ($x->[-1] <=> $y->[-1]) {
             when( 1) { unshift @out, pop @$x }
             when(-1) { unshift @out, pop @$y }
             default { splice @out, 0, 0, pop(@$x), pop(@$y) }
        }
    }
    return @$x, @$y, @out
}
シンタックスハイライトを変更

sub merge {
    my ($x, $y) = @_;
    my @out;
    while (@$x and @$y) {
        given ($x->[-1] <=> $y->[-1]) {
             when( 1) { unshift @out, pop @$x }
             when(-1) { unshift @out, pop @$y }
             default { splice @out, 0, 0, pop(@$x), pop(@$y) }
        }
    }
    return @$x, @$y, @out
}
引数の受取り方が変わる

sub merge ($x, $y) {
#   my ($x, $y) = @_;
    my @out;
    while (@$x and @$y) {
        given ($x->[-1] <=> $y->[-1]) {
             when( 1) { unshift @out, pop @$x }
             when(-1) { unshift @out, pop @$y }
             default { splice @out, 0, 0, pop(@$x), pop(@$y) }
        }
    }
    return @$x, @$y, @out
}
不要な括弧を除去

sub merge ($x, $y) {
#   my ($x, $y) = @_;
    my @out;
    while @$x and @$y {
        given $x->[-1] <=> $y->[-1] {
             when 1 { unshift @out, pop @$x }
             when -1 { unshift @out, pop @$y }
             default { splice @out, 0, 0, pop(@$x), pop(@$y) }
        }
    }
    return @$x, @$y, @out
}
全ての変数がリファンレス

sub merge (@x, @y) {
#   my ($x, $y) = @_;
    my @out;
    while @x and @y {
        given $x[-1] <=> $y[-1] {
             when 1 { unshift @out, pop @x }
             when -1 { unshift @out, pop @y }
             default { splice @out, 0, 0, pop(@x), pop(@y) }
        }
    }
    return @x, @y, @out
}
strand関数

sub strand {
    my $x = shift;
    my @out = shift @$x // return;
    if (@$x) {
        for (-@$x .. -1) {
             if ($x->[$_] >= $out[-1]) {
                 push @out, splice @$x, $_, 1
             }
        }
    }
    return @out
}
シンタックスハイライトを変更

sub strand {
    my $x = shift;
    my @out = shift @$x // return;
    if (@$x) {
        for (-@$x .. -1) {
             if ($x->[$_] >= $out[-1]) {
                 push @out, splice @$x, $_, 1
             }
        }
    }
    return @out
}
既に説明した変更を適用


sub strand (@x) {
    my @out = shift @x // return;
    if @x {
        for -@x .. -1 {
            if (@x[$_] >= @out[-1]) {
                push @out, splice @x, $_, 1
            }
        }
    }
    return @out
}
配列の添字にマイナスは使えない


sub strand (@x) {
    my @out = shift @x // return;
    if @x {
        for -@x .. -1 {
            if (@x[*+$_] >= @out[*-1]) {
                push @out, splice @x, *+$_, 1
            }
        }
    }
    return @out
}
範囲指定時の ^


sub strand (@x) {
    my @out = shift @x // return;
    if @x {
        for 0 ..^ @x {
            if (@x[$_] >= @out[*-1]) {
                push @out, splice @x, $_, 1
            }
        }
    }
    return @out
}
変更点まとめ

• 引数の受取り方が変わった
• if, while 等の条件指定時に括弧が不要
• 全ての変数がリファレンスに
• 配列の添字に負数は使えない
 →代わりに whatever(*) を使う

• 範囲指定の .. に ^ をつけると、
 その値を除外( 0 ^..^ 3 => 1, 2 )
見慣れないキーワード
見慣れないものたち

sub infix:<M> (@x is rw, @y is rw) {
    gather {
        while @x and @y {
             given @x[0] cmp @y[0] {
                 when Increase { take @x.shift }
                 when Decrease { take @y.shift }
                 when Same { take @x.shift, @y.shift }
             }
        }
        take @x, @y
    }
}
infix:<M>
infix:<***>


• いわゆる中置演算子の定義
• 引数を2つとる
(例) べき乗の関数



sub infix:<exp> ($x, $y) {
    $x ** $y;
}

say 3 exp 4; # 81
こう定義して……

sub infix:<M> (@x is rw, @y is rw) {
    gather {
        while @x and @y {
             given @x[0] cmp @y[0] {
                 when Increase { take @x.shift }
                 when Decrease { take @y.shift }
                 when Same { take @x.shift, @y.shift }
             }
        }
        take @x, @y
    }
}
こう使う



sub strand_sort (@x is copy) {
    my @out;
    @out = @out M strand(@x) while @x;
    @out;
}
こう書くこともできる



sub strand_sort (@x is copy) {
    my @out;
    @out M= strand(@x) while @x;
    @out;
}
is rw
is ***


• Perl6 では引数は読み取り専用
• 引数の値を変更したい場合は is rw
• 引数のコピーが欲しい場合は is copy
is rw を使うと

sub writable ($x is rw) {
    $x += 1;
    say "x = $x";
}

my $orig = 10;
say "orig = $orig";
writable($orig);
say "orig = $orig";

# orig = 10
# x = 11
# orig = 11
is copy を使うと

sub copy_value ($x is copy) {
    $x += 1;
    say "x = $x";
}

my $orig = 10;
say "orig = $orig";
copy_value($orig);
say "orig = $orig";

# orig = 10
# x = 11
# orig = 10
何も指定しなかった場合

sub read_only ($x) {
    $x += 1;
    say "x = $x";
}

my $orig = 10;
say "orig = $orig";
read_only($orig);
say "orig = $orig";

# orig = 10
# Cannot assign to a readonly variable or a value
#   in block at src/gen/CORE.setting:11981
#   in sub read_only at is.pl:2
#   in block at is.pl:8
gather ... take
gather ... take


• gather は遅延評価リストを返す
• 評価時に gather ブロック内を走査
• take された要素を見つけて返す
簡単な例



my @list = gather {
    for 0 .. Inf {
        take $_ ** $_;
    }
}

say @list[0..3]; # 1 1 4 27
merge関数での使い方

sub infix:<M> (@x is rw, @y is rw) {
    gather {
        while @x and @y {
             given @x[0] cmp @y[0] {
                 when Increase { take @x.shift }
                 when Decrease { take @y.shift }
                 when Same { take @x.shift, @y.shift }
             }
        }
        take @x, @y
    }
}
まとめ


• 文法にちょっとした変更がたくさん
• 演算子を定義できる
• is *** で引数へのアクセスレベルを指定
• 遅延評価ができる
ところで
Perl5 と Perl6 の関係



• 異なる言語
• Perl6 は Perl5 をベースに設計されている
• Perl6 の特徴の一部は Perl5 に移植されている
Perl6::Gather
use strict;
use warnings;

use Perl6::Gather;

my @list = gather {
    for (0..100) {
        take $_ ** $_;
    }
};

for (0..3) {
    print $list[$_], ' ';
}
print "n";

# 1 1 4 27
"What Does Your Code Smell Like?"で学ぶPerl6

More Related Content

What's hot

リストモナドを作ってみた
リストモナドを作ってみたリストモナドを作ってみた
リストモナドを作ってみたAtsushi Kanehara
 
モナドがいっぱい!
モナドがいっぱい!モナドがいっぱい!
モナドがいっぱい!Kenta Sato
 
すごいH 第12章モノイド
すごいH 第12章モノイドすごいH 第12章モノイド
すごいH 第12章モノイドShinta Hatatani
 
R6 classes
R6 classesR6 classes
R6 classeshiroki84
 
Clojure programming-chapter-2
Clojure programming-chapter-2Clojure programming-chapter-2
Clojure programming-chapter-2Masao Kato
 
Elixirだ 第1回強化版 前半
Elixirだ 第1回強化版 前半Elixirだ 第1回強化版 前半
Elixirだ 第1回強化版 前半Joe_noh
 
解説#74 連結リスト
解説#74 連結リスト解説#74 連結リスト
解説#74 連結リストRuo Ando
 
Van laarhoven lens
Van laarhoven lensVan laarhoven lens
Van laarhoven lensNaoki Aoyama
 
3時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012
3時間濃縮CakePHP2.1 in PHPカンファレンス北海道20123時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012
3時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012Yusuke Ando
 
Elixirだ 第1回 - 基礎だ -
Elixirだ 第1回 - 基礎だ -Elixirだ 第1回 - 基礎だ -
Elixirだ 第1回 - 基礎だ -Joe_noh
 
Elixirだ 第1回強化版 後半
Elixirだ 第1回強化版 後半Elixirだ 第1回強化版 後半
Elixirだ 第1回強化版 後半Joe_noh
 
Python勉強会3-コレクションとファイル
Python勉強会3-コレクションとファイルPython勉強会3-コレクションとファイル
Python勉強会3-コレクションとファイル理 小林
 
Elixirだ 第2回
Elixirだ 第2回Elixirだ 第2回
Elixirだ 第2回Joe_noh
 
Pythonで始めるDropboxAPI
Pythonで始めるDropboxAPIPythonで始めるDropboxAPI
Pythonで始めるDropboxAPIDaisuke Igarashi
 

What's hot (18)

リストモナドを作ってみた
リストモナドを作ってみたリストモナドを作ってみた
リストモナドを作ってみた
 
モナドがいっぱい!
モナドがいっぱい!モナドがいっぱい!
モナドがいっぱい!
 
すごいH 第12章モノイド
すごいH 第12章モノイドすごいH 第12章モノイド
すごいH 第12章モノイド
 
R6 classes
R6 classesR6 classes
R6 classes
 
Introduction Xtend
Introduction XtendIntroduction Xtend
Introduction Xtend
 
Clojure programming-chapter-2
Clojure programming-chapter-2Clojure programming-chapter-2
Clojure programming-chapter-2
 
Elixirだ 第1回強化版 前半
Elixirだ 第1回強化版 前半Elixirだ 第1回強化版 前半
Elixirだ 第1回強化版 前半
 
解説#74 連結リスト
解説#74 連結リスト解説#74 連結リスト
解説#74 連結リスト
 
Van laarhoven lens
Van laarhoven lensVan laarhoven lens
Van laarhoven lens
 
Applicative functor
Applicative functorApplicative functor
Applicative functor
 
3時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012
3時間濃縮CakePHP2.1 in PHPカンファレンス北海道20123時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012
3時間濃縮CakePHP2.1 in PHPカンファレンス北海道2012
 
Elixirだ 第1回 - 基礎だ -
Elixirだ 第1回 - 基礎だ -Elixirだ 第1回 - 基礎だ -
Elixirだ 第1回 - 基礎だ -
 
Elixirだ 第1回強化版 後半
Elixirだ 第1回強化版 後半Elixirだ 第1回強化版 後半
Elixirだ 第1回強化版 後半
 
Pythonintro
PythonintroPythonintro
Pythonintro
 
01 php7
01   php701   php7
01 php7
 
Python勉強会3-コレクションとファイル
Python勉強会3-コレクションとファイルPython勉強会3-コレクションとファイル
Python勉強会3-コレクションとファイル
 
Elixirだ 第2回
Elixirだ 第2回Elixirだ 第2回
Elixirだ 第2回
 
Pythonで始めるDropboxAPI
Pythonで始めるDropboxAPIPythonで始めるDropboxAPI
Pythonで始めるDropboxAPI
 

Viewers also liked

Perl 6 Object-Oliented Programming
Perl 6 Object-Oliented ProgrammingPerl 6 Object-Oliented Programming
Perl 6 Object-Oliented Programmingrisou
 
Officeで使うPerl Excel編
Officeで使うPerl Excel編Officeで使うPerl Excel編
Officeで使うPerl Excel編risou
 
Load / Frequency balancing Control systems study
Load / Frequency balancing Control systems studyLoad / Frequency balancing Control systems study
Load / Frequency balancing Control systems studyCAL
 
Builderscon 2016 講演資料 「人工知能によってプログラムを有機化する」(前篇)
Builderscon 2016 講演資料 「人工知能によってプログラムを有機化する」(前篇)Builderscon 2016 講演資料 「人工知能によってプログラムを有機化する」(前篇)
Builderscon 2016 講演資料 「人工知能によってプログラムを有機化する」(前篇)Youichiro Miyake
 
Builderscon 2016 講演資料 「人工知能によってプログラムを有機化する」(後篇)
Builderscon 2016 講演資料 「人工知能によってプログラムを有機化する」(後篇)Builderscon 2016 講演資料 「人工知能によってプログラムを有機化する」(後篇)
Builderscon 2016 講演資料 「人工知能によってプログラムを有機化する」(後篇)Youichiro Miyake
 
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用純生 野田
 
First step of Performance Tuning
First step of Performance TuningFirst step of Performance Tuning
First step of Performance Tuningrisou
 
MI100ロボットでライントレース大会
MI100ロボットでライントレース大会MI100ロボットでライントレース大会
MI100ロボットでライントレース大会noanoa07
 
H2O x mrubyで人はどれだけ幸せになれるのか
H2O x mrubyで人はどれだけ幸せになれるのかH2O x mrubyで人はどれだけ幸せになれるのか
H2O x mrubyで人はどれだけ幸せになれるのかIchito Nagata
 

Viewers also liked (11)

Mídia Kit - O Reacionário
Mídia Kit - O ReacionárioMídia Kit - O Reacionário
Mídia Kit - O Reacionário
 
Practica
PracticaPractica
Practica
 
Perl 6 Object-Oliented Programming
Perl 6 Object-Oliented ProgrammingPerl 6 Object-Oliented Programming
Perl 6 Object-Oliented Programming
 
Officeで使うPerl Excel編
Officeで使うPerl Excel編Officeで使うPerl Excel編
Officeで使うPerl Excel編
 
Load / Frequency balancing Control systems study
Load / Frequency balancing Control systems studyLoad / Frequency balancing Control systems study
Load / Frequency balancing Control systems study
 
Builderscon 2016 講演資料 「人工知能によってプログラムを有機化する」(前篇)
Builderscon 2016 講演資料 「人工知能によってプログラムを有機化する」(前篇)Builderscon 2016 講演資料 「人工知能によってプログラムを有機化する」(前篇)
Builderscon 2016 講演資料 「人工知能によってプログラムを有機化する」(前篇)
 
Builderscon 2016 講演資料 「人工知能によってプログラムを有機化する」(後篇)
Builderscon 2016 講演資料 「人工知能によってプログラムを有機化する」(後篇)Builderscon 2016 講演資料 「人工知能によってプログラムを有機化する」(後篇)
Builderscon 2016 講演資料 「人工知能によってプログラムを有機化する」(後篇)
 
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用
YAPC::Kansai 2017 - macOSネイティブアプリ作成におけるPerlの活用
 
First step of Performance Tuning
First step of Performance TuningFirst step of Performance Tuning
First step of Performance Tuning
 
MI100ロボットでライントレース大会
MI100ロボットでライントレース大会MI100ロボットでライントレース大会
MI100ロボットでライントレース大会
 
H2O x mrubyで人はどれだけ幸せになれるのか
H2O x mrubyで人はどれだけ幸せになれるのかH2O x mrubyで人はどれだけ幸せになれるのか
H2O x mrubyで人はどれだけ幸せになれるのか
 

Similar to "What Does Your Code Smell Like?"で学ぶPerl6

姫路IT系勉強会 Vol.11 第0回L-1グランプリ bash
姫路IT系勉強会 Vol.11 第0回L-1グランプリ bash姫路IT系勉強会 Vol.11 第0回L-1グランプリ bash
姫路IT系勉強会 Vol.11 第0回L-1グランプリ bashJun Nogata
 
関数プログラミング入門
関数プログラミング入門関数プログラミング入門
関数プログラミング入門Hideyuki Tanaka
 
F#入門 ~関数プログラミングとは何か~
F#入門 ~関数プログラミングとは何か~F#入門 ~関数プログラミングとは何か~
F#入門 ~関数プログラミングとは何か~Nobuhisa Koizumi
 
Nambapm_napthats
Nambapm_napthatsNambapm_napthats
Nambapm_napthatsnapthats
 
すごいHaskell読書会#10
すごいHaskell読書会#10すごいHaskell読書会#10
すごいHaskell読書会#10Shin Ise
 
Ruby on Rails on MySQL チューニング入門
Ruby on Rails on MySQL チューニング入門Ruby on Rails on MySQL チューニング入門
Ruby on Rails on MySQL チューニング入門だいすけ さとう
 
純粋関数型アルゴリズム入門
純粋関数型アルゴリズム入門純粋関数型アルゴリズム入門
純粋関数型アルゴリズム入門Kimikazu Kato
 
Hachiojipm #5 LT資料 [テーマ:最近いいなと思ったもの]
Hachiojipm #5 LT資料 [テーマ:最近いいなと思ったもの] Hachiojipm #5 LT資料 [テーマ:最近いいなと思ったもの]
Hachiojipm #5 LT資料 [テーマ:最近いいなと思ったもの] norry_gogo
 
Livesense tech night immutable-js at a glance
Livesense tech night   immutable-js at a glanceLivesense tech night   immutable-js at a glance
Livesense tech night immutable-js at a glanceYuta Shimakawa
 
言語処理系入門€5
言語処理系入門€5言語処理系入門€5
言語処理系入門€5Kenta Hattori
 
詳説ぺちぺち
詳説ぺちぺち詳説ぺちぺち
詳説ぺちぺちdo_aki
 

Similar to "What Does Your Code Smell Like?"で学ぶPerl6 (14)

勉強会課題①
勉強会課題①勉強会課題①
勉強会課題①
 
姫路IT系勉強会 Vol.11 第0回L-1グランプリ bash
姫路IT系勉強会 Vol.11 第0回L-1グランプリ bash姫路IT系勉強会 Vol.11 第0回L-1グランプリ bash
姫路IT系勉強会 Vol.11 第0回L-1グランプリ bash
 
関数プログラミング入門
関数プログラミング入門関数プログラミング入門
関数プログラミング入門
 
20170401 alias
20170401 alias20170401 alias
20170401 alias
 
F#入門 ~関数プログラミングとは何か~
F#入門 ~関数プログラミングとは何か~F#入門 ~関数プログラミングとは何か~
F#入門 ~関数プログラミングとは何か~
 
Nambapm_napthats
Nambapm_napthatsNambapm_napthats
Nambapm_napthats
 
すごいHaskell読書会#10
すごいHaskell読書会#10すごいHaskell読書会#10
すごいHaskell読書会#10
 
Currying in perl
Currying in perlCurrying in perl
Currying in perl
 
Ruby on Rails on MySQL チューニング入門
Ruby on Rails on MySQL チューニング入門Ruby on Rails on MySQL チューニング入門
Ruby on Rails on MySQL チューニング入門
 
純粋関数型アルゴリズム入門
純粋関数型アルゴリズム入門純粋関数型アルゴリズム入門
純粋関数型アルゴリズム入門
 
Hachiojipm #5 LT資料 [テーマ:最近いいなと思ったもの]
Hachiojipm #5 LT資料 [テーマ:最近いいなと思ったもの] Hachiojipm #5 LT資料 [テーマ:最近いいなと思ったもの]
Hachiojipm #5 LT資料 [テーマ:最近いいなと思ったもの]
 
Livesense tech night immutable-js at a glance
Livesense tech night   immutable-js at a glanceLivesense tech night   immutable-js at a glance
Livesense tech night immutable-js at a glance
 
言語処理系入門€5
言語処理系入門€5言語処理系入門€5
言語処理系入門€5
 
詳説ぺちぺち
詳説ぺちぺち詳説ぺちぺち
詳説ぺちぺち
 

Recently uploaded

LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 

Recently uploaded (10)

LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 

"What Does Your Code Smell Like?"で学ぶPerl6