SlideShare a Scribd company logo
The 9th Bit:
Encodings in
Ruby 1.9
Norman Clarke
Encoding API
One of the most visible changes
to Ruby in 1.9
invalid multibyte char
(US-ASCII)
invalid byte sequence
in US-ASCII/UTF8
`encode':
"xE2x80xA6" from
UTF-8 to ISO-8859-1
Today’s Topics
• Character Encodings
• Ruby’s Encoding API
• Avoiding problems with UTF-8
Why should I care?
Ruby 1.9.2 is much
faster than 1.8.7
but forces you to be
aware of encodings
Encodings are boring
but you can't ignore
them forever
flickr.com/photos/29213152@N00/2410328364/
Character Encoding
Algorithm for interpreting a
sequence of bytes as characters in
a written language
0 nul 1 soh 2 stx 3 etx 4 eot 5 enq 6 ack 7 bel
8 bs 9 ht 10 nl 11 vt 12 np 13 cr 14 so 15 si
16 dle 17 dc1 18 dc2 19 dc3 20 dc4 21 nak 22 syn 23 etb
24 can 25 em 26 sub 27 esc 28 fs 29 gs 30 rs 31 us
32 sp 33 ! 34 " 35 # 36 $ 37 % 38 & 39 '
40 ( 41 ) 42 * 43 + 44 , 45 - 46 . 47 /
48 0 49 1 50 2 51 3 52 4 53 5 54 6 55 7
56 8 57 9 58 : 59 ; 60 < 61 = 62 > 63 ?
64 @ 65 A 66 B 67 C 68 D 69 E 70 F 71 G
72 H 73 I 74 J 75 K 76 L 77 M 78 N 79 O
80 P 81 Q 82 R 83 S 84 T 85 U 86 V 87 W
88 X 89 Y 90 Z 91 [ 92  93 ] 94 ^ 95 _
96 ` 97 a 98 b 99 c 100 d 101 e 102 f 103 g
104 h 105 i 106 j 107 k 108 l 109 m 110 n 111 o
112 p 113 q 114 r 115 s 116 t 117 u 118 v 119 w
120 x 121 y 122 z 123 { 124 | 125 } 126 ~ 127 del
ASCII
ASCII: 7 bits
a
97: 0110 0001
Latin1: 8 bits
ã
227: 1110 0011
wikipedia.org/wiki/ISO/IEC_8859-1
Other 8-bit Encodings
Work for most languages
256 is not enough for:
かたかな• Chinese
• Japanese
• some others
한국어/조선말
中
文
字喃/ 喃/ 喃
fanpop.com/spots/gandalf/images/7018563/title/gandalf-vs-el-balrog-fanart
8-bit overlap
202
Ê Ę Ъ ‫ت‬ Κ ส Ź
Unicode: An
Improbable Success
¡cn:中文!
Used internally by Perl, Java,
Python 3, Haskell and others
Unicode in Japan: not as
popular
Ruby 1.9: Character Set
Independence
Ruby’s Encoding API
• Source code
• String
• Regexp
• IO
• Encoding
# coding: utf-8
class Canção
GÊNEROS = [:forró, :carimbó, :afoxé]
attr_accessor :gênero
end
asa_branca = Canção.new
asa_branca.gênero = :forró
p asa_branca.gênero
Source
Warnings
• Breaks syntax highlighting
• #inspect, #p don’t work as of 1.9.2
• Some editors/programmers will probably
mess up your code
• Just because you can, doesn’t mean you
should
# encoding: utf-8
string = “ã”
string.length #=> 1
string.bytesize #=> 2
string.bytes.to_a #=> [195, 163]
string.encode! "ISO-8859-1"
string.length #=> 1
string.bytesize #=> 1
string.bytes.to_a #=> [227]
String
# encoding: utf-8
string = “ã”
string.length #=> 1
string.bytesize #=> 2
string.bytes.to_a #=> [195, 163]
string.encode! "ISO-8859-1"
string.length #=> 1
string.bytesize #=> 1
string.bytes.to_a #=> [227]
String
# encoding: utf-8
string = “ã”
string.length #=> 1
string.bytesize #=> 2
string.bytes.to_a #=> [195, 163]
string.encode! "ISO-8859-1"
string.length #=> 1
string.bytesize #=> 1
string.bytes.to_a #=> [227]
String
# encoding: utf-8
string = “ã”
string.length #=> 1
string.bytesize #=> 2
string.bytes.to_a #=> [195, 163]
string.encode! "ISO-8859-1"
string.length #=> 1
string.bytesize #=> 1
string.bytes.to_a #=> [227]
String
puts a1 ("ã")
puts a2 ("ã")
a1.encoding #=> "ASCII-8BIT"
a2.encoding #=> "UTF-8"
a1.bytes.to_a == a2.bytes.to_a #=> true
a1 == a2 #=> false
String
# vim: set fileencoding=utf-8
pat = /ã/
pat.encoding #=> “UTF-8”
pat.encode! “ISO-8859-1” #=> FAIL
pat = “ã”.encode “ISO-8859-1”
regexp = Regexp.new(pat) #=> OK
Regexp
# vim: set fileencoding=utf-8
pat = /ã/
pat.encoding #=> “UTF-8”
pat.encode! “ISO-8859-1” #=> FAIL
pat = “ã”.encode “ISO-8859-1”
regexp = Regexp.new(pat) #=> OK
Regexp
# vim: set fileencoding=utf-8
pat = /ã/
pat.encoding #=> “UTF-8”
pat.encode! “ISO-8859-1” #=> FAIL
pat = “ã”.encode “ISO-8859-1”
regexp = Regexp.new(pat) #=> OK
Regexp
f = File.open("file.txt", "r:ISO-8859-1")
data = f.read
data.encoding #=> “ ISO-8859-1”
IO
f = File.open("file.txt", "rb:UTF-16BE:UTF8")
data = f.read
data.encoding #=> “UTF-8”
IO
f = File.open("file.txt", "r:BINARY") # (or “rb”)
data = f.read
data.encoding #=> “ASCII-8BIT”
data.force_encoding "UTF-8"
IO
f = File.open("file.txt", "r:BINARY") # (or “rb”)
data = f.read
data.encoding #=> “ASCII-8BIT”
data.force_encoding "UTF-8"
IO
f = File.open("file.txt", "r:BINARY") # (or “rb”)
data = f.read
data.encoding #=> “ASCII-8BIT”
data.force_encoding "UTF-8"
IO
Encoding.list.size #=> 95
Encoding.default_external = "ISO-8859-1"
Encoding.default_internal = "UTF-8"
File.open("latin1.txt", "r") do |file|
p file.external_encoding #=> ISO-8859-1
data = file.read
p data.encoding #=> UTF-8
end
Encoding
Encoding.list.size #=> 95
Encoding.default_external = "ISO-8859-1"
Encoding.default_internal = "UTF-8"
File.open("latin1.txt", "r") do |file|
p file.external_encoding #=> ISO-8859-1
data = file.read
p data.encoding #=> UTF-8
end
Encoding
Encoding.list.size #=> 95
Encoding.default_external = "ISO-8859-1"
Encoding.default_internal = "UTF-8"
File.open("latin1.txt", "r") do |file|
p file.external_encoding #=> ISO-8859-1
data = file.read
p data.encoding #=> UTF-8
end
Encoding
Encoding.list.size #=> 95
Encoding.default_external = "ISO-8859-1"
Encoding.default_internal = "UTF-8"
File.open("latin1.txt", "r") do |file|
p file.external_encoding #=> ISO-8859-1
data = file.read
p data.encoding #=> UTF-8
end
Encoding
UTF-8: a Unicode
Encoding
Unicode, UTF-8, UTF-16,
UTF-32, UCS-2, etc.
UTF-8
Backwards-compatible with
ASCII
Use UTF-8 unless you have a
good reason not to
UTF-8 and HTML
<meta http-
equiv="content-type"
content="text/
html;charset=UTF-8" />
UTF-8 and HTML
日本語
UTF-8 and HTML
日本語
UTF-8 and HTML
<form action="/"
accept-
charset="UTF-8">
UTF-8 and HTML
f.html?l=日本語
UTF-8 and HTML
f.html?l=
%26%2326085%3B
%26%2326412%3B
%26%2335
...here's where things get kind
of strange.
“JOÃO”.downcase #=> “joÃo”
“joão”.upcase #=> “JOãO”
Case Folding
# Unicode
Unicode.downcase(“JOÃO”)
# Active Support
“JOÃO”.mb_chars.downcase
Case Folding
# NOT always true
"João" == "João"
Equivalence
"ã" or "a" + "~"
Two ways to represent
many characters
Composed
a = Unicode.normalize_C("ã")
a.bytes.to_a #=> [195, 163]
Decomposed
a = Unicode.normalize_D("ã")
a.bytes.to_a #=> [97, 204, 131]
Why?
dec = Unicode.normalize_D("ã")
dec =~ /a/ # match
comp = Unicode.normalize_C("ã")
comp =~ /a/ # no match
Normalize string
keys!!!
{
"João" => "authorized",
"João" => "not authorized"
}
You have been warned
Some libraries
• Unicode
• Active Support
• Java’s stdlib
Cleaning up bad data:
avoid Iconv
require "active_support"
require "active_support/multibyte/unicode"
include ActiveSupport::Multibyte
Unicode.tidy_bytes(@bad_string)
Tidy Bytes
MySQL
Set encoding options early
# 1: decompose
@s = Unicode.normalize_D(@s)
# 2: delete accent marks
@s.gsub!(/[^x00-x7F]/, '')
# 3: FAIL
Approximating ASCII:
"João" => "joao"
OK
ã á ê ü à ç
a a e u a c
FAIL
ß ø œ æ
"" "" "" ""
Use instead:
• Active Support’s Inflector.transliterate
• I18n.transliterate
• Babosa
To Sum Up...
Ruby is weird
Use UTF-8
Normalize UTF-8 keys
Configure MySQL
properly for UTF-8
THANKS!
github.com/norman/enc
@compay
norman@njclarke.com

More Related Content

Viewers also liked

And so it begins
And so it beginsAnd so it begins
And so it begins
Yellowbel
 
Cuộc sống tươi đẹp
Cuộc sống tươi đẹpCuộc sống tươi đẹp
Cuộc sống tươi đẹpkiwiminiu
 
Smahtrforfhrworkshop20sep10
Smahtrforfhrworkshop20sep10Smahtrforfhrworkshop20sep10
Smahtrforfhrworkshop20sep10
srgreene
 
Garden State Central Model Railroad Club needs a new home in New Jersey
Garden State Central Model Railroad Club needs a new home in New JerseyGarden State Central Model Railroad Club needs a new home in New Jersey
Garden State Central Model Railroad Club needs a new home in New Jersey
robertjohndavis
 
1 -corinne_berinstein
1  -corinne_berinstein1  -corinne_berinstein
1 -corinne_berinstein
Sukumar Reddy
 
Data Driven Launch 12th April
Data Driven Launch 12th AprilData Driven Launch 12th April
Data Driven Launch 12th April
Jonathan Woodward
 
Kodar-lan - Text and editors Character encoding and UTF-8
Kodar-lan - Text and editors Character encoding and UTF-8Kodar-lan - Text and editors Character encoding and UTF-8
Kodar-lan - Text and editors Character encoding and UTF-8
Tim Gremalm
 
Data Culture London 12th April Keynote
Data Culture London 12th April KeynoteData Culture London 12th April Keynote
Data Culture London 12th April Keynote
Jonathan Woodward
 
NUREG_CR_2182_Vol_1
NUREG_CR_2182_Vol_1NUREG_CR_2182_Vol_1
NUREG_CR_2182_Vol_1
srgreene
 
20120117 pengelolaan bmn berupa rumah negara
20120117   pengelolaan bmn berupa rumah negara20120117   pengelolaan bmn berupa rumah negara
20120117 pengelolaan bmn berupa rumah negaraAlifian Utama
 
Banking in 2050 by PwC
Banking in 2050 by PwCBanking in 2050 by PwC
Banking in 2050 by PwC
iRexy 何
 
Data Culture Series - April 12th - Business Exec Track
Data Culture Series  - April 12th - Business Exec Track Data Culture Series  - April 12th - Business Exec Track
Data Culture Series - April 12th - Business Exec Track
Jonathan Woodward
 

Viewers also liked (15)

20111213 bgs-bsg
20111213   bgs-bsg20111213   bgs-bsg
20111213 bgs-bsg
 
And so it begins
And so it beginsAnd so it begins
And so it begins
 
Cuộc sống tươi đẹp
Cuộc sống tươi đẹpCuộc sống tươi đẹp
Cuộc sống tươi đẹp
 
Smahtrforfhrworkshop20sep10
Smahtrforfhrworkshop20sep10Smahtrforfhrworkshop20sep10
Smahtrforfhrworkshop20sep10
 
Garden State Central Model Railroad Club needs a new home in New Jersey
Garden State Central Model Railroad Club needs a new home in New JerseyGarden State Central Model Railroad Club needs a new home in New Jersey
Garden State Central Model Railroad Club needs a new home in New Jersey
 
ฉันนเหมือนใคร
 ฉันนเหมือนใคร ฉันนเหมือนใคร
ฉันนเหมือนใคร
 
ฉันนเหมือนใคร
ฉันนเหมือนใครฉันนเหมือนใคร
ฉันนเหมือนใคร
 
1 -corinne_berinstein
1  -corinne_berinstein1  -corinne_berinstein
1 -corinne_berinstein
 
Data Driven Launch 12th April
Data Driven Launch 12th AprilData Driven Launch 12th April
Data Driven Launch 12th April
 
Kodar-lan - Text and editors Character encoding and UTF-8
Kodar-lan - Text and editors Character encoding and UTF-8Kodar-lan - Text and editors Character encoding and UTF-8
Kodar-lan - Text and editors Character encoding and UTF-8
 
Data Culture London 12th April Keynote
Data Culture London 12th April KeynoteData Culture London 12th April Keynote
Data Culture London 12th April Keynote
 
NUREG_CR_2182_Vol_1
NUREG_CR_2182_Vol_1NUREG_CR_2182_Vol_1
NUREG_CR_2182_Vol_1
 
20120117 pengelolaan bmn berupa rumah negara
20120117   pengelolaan bmn berupa rumah negara20120117   pengelolaan bmn berupa rumah negara
20120117 pengelolaan bmn berupa rumah negara
 
Banking in 2050 by PwC
Banking in 2050 by PwCBanking in 2050 by PwC
Banking in 2050 by PwC
 
Data Culture Series - April 12th - Business Exec Track
Data Culture Series  - April 12th - Business Exec Track Data Culture Series  - April 12th - Business Exec Track
Data Culture Series - April 12th - Business Exec Track
 

Similar to The 9th Bit: Encodings in Ruby 1.9

Encodings - Ruby 1.8 and Ruby 1.9
Encodings - Ruby 1.8 and Ruby 1.9Encodings - Ruby 1.8 and Ruby 1.9
Encodings - Ruby 1.8 and Ruby 1.9
Dimelo R&D Team
 
Migrating To Ruby1.9
Migrating To Ruby1.9Migrating To Ruby1.9
Migrating To Ruby1.9
tomaspavelka
 
UTF-8: The Secret of Character Encoding
UTF-8: The Secret of Character EncodingUTF-8: The Secret of Character Encoding
UTF-8: The Secret of Character Encoding
Bert Pattyn
 
Unicode and character sets
Unicode and character setsUnicode and character sets
Unicode and character sets
renchenyu
 
Unicode 101
Unicode 101Unicode 101
Unicode 101
davidfstr
 
20141106 asfws unicode_hacks
20141106 asfws unicode_hacks20141106 asfws unicode_hacks
20141106 asfws unicode_hacks
Cyber Security Alliance
 
Unicode, PHP, and Character Set Collisions
Unicode, PHP, and Character Set CollisionsUnicode, PHP, and Character Set Collisions
Unicode, PHP, and Character Set Collisions
Ray Paseur
 
Character Encoding issue with PHP
Character Encoding issue with PHPCharacter Encoding issue with PHP
Character Encoding issue with PHP
Ravi Raj
 
R tech introcomputer
R tech introcomputerR tech introcomputer
R tech introcomputer
Rose Rajput
 
When 7 bit-ascii ain't enough - about NLS, collation, charsets, unicode and s...
When 7 bit-ascii ain't enough - about NLS, collation, charsets, unicode and s...When 7 bit-ascii ain't enough - about NLS, collation, charsets, unicode and s...
When 7 bit-ascii ain't enough - about NLS, collation, charsets, unicode and s...
Kim Berg Hansen
 
dokumen.tips_linux-networking-commands.ppt
dokumen.tips_linux-networking-commands.pptdokumen.tips_linux-networking-commands.ppt
dokumen.tips_linux-networking-commands.ppt
ThorOdinson55
 
Mona cheatsheet
Mona cheatsheetMona cheatsheet
Mona cheatsheet
Ce.Se.N.A. Security
 
x86
x86x86
Ruby 1.9
Ruby 1.9Ruby 1.9
Ruby 1.9
guestaef7ea
 
Writing Metasploit Plugins
Writing Metasploit PluginsWriting Metasploit Plugins
Writing Metasploit Plugins
amiable_indian
 
ImplementingCryptoSecurityARMCortex_Doin
ImplementingCryptoSecurityARMCortex_DoinImplementingCryptoSecurityARMCortex_Doin
ImplementingCryptoSecurityARMCortex_Doin
Jonny Doin
 
Huffman
HuffmanHuffman
How to check valid Email? Find using regex.
How to check valid Email? Find using regex.How to check valid Email? Find using regex.
How to check valid Email? Find using regex.
Poznań Ruby User Group
 
Creating a Fibonacci Generator in Assembly - by Willem van Ketwich
Creating a Fibonacci Generator in Assembly - by Willem van KetwichCreating a Fibonacci Generator in Assembly - by Willem van Ketwich
Creating a Fibonacci Generator in Assembly - by Willem van Ketwich
Willem van Ketwich
 
String Comparison Surprises: Did Postgres lose my data?
String Comparison Surprises: Did Postgres lose my data?String Comparison Surprises: Did Postgres lose my data?
String Comparison Surprises: Did Postgres lose my data?
Jeremy Schneider
 

Similar to The 9th Bit: Encodings in Ruby 1.9 (20)

Encodings - Ruby 1.8 and Ruby 1.9
Encodings - Ruby 1.8 and Ruby 1.9Encodings - Ruby 1.8 and Ruby 1.9
Encodings - Ruby 1.8 and Ruby 1.9
 
Migrating To Ruby1.9
Migrating To Ruby1.9Migrating To Ruby1.9
Migrating To Ruby1.9
 
UTF-8: The Secret of Character Encoding
UTF-8: The Secret of Character EncodingUTF-8: The Secret of Character Encoding
UTF-8: The Secret of Character Encoding
 
Unicode and character sets
Unicode and character setsUnicode and character sets
Unicode and character sets
 
Unicode 101
Unicode 101Unicode 101
Unicode 101
 
20141106 asfws unicode_hacks
20141106 asfws unicode_hacks20141106 asfws unicode_hacks
20141106 asfws unicode_hacks
 
Unicode, PHP, and Character Set Collisions
Unicode, PHP, and Character Set CollisionsUnicode, PHP, and Character Set Collisions
Unicode, PHP, and Character Set Collisions
 
Character Encoding issue with PHP
Character Encoding issue with PHPCharacter Encoding issue with PHP
Character Encoding issue with PHP
 
R tech introcomputer
R tech introcomputerR tech introcomputer
R tech introcomputer
 
When 7 bit-ascii ain't enough - about NLS, collation, charsets, unicode and s...
When 7 bit-ascii ain't enough - about NLS, collation, charsets, unicode and s...When 7 bit-ascii ain't enough - about NLS, collation, charsets, unicode and s...
When 7 bit-ascii ain't enough - about NLS, collation, charsets, unicode and s...
 
dokumen.tips_linux-networking-commands.ppt
dokumen.tips_linux-networking-commands.pptdokumen.tips_linux-networking-commands.ppt
dokumen.tips_linux-networking-commands.ppt
 
Mona cheatsheet
Mona cheatsheetMona cheatsheet
Mona cheatsheet
 
x86
x86x86
x86
 
Ruby 1.9
Ruby 1.9Ruby 1.9
Ruby 1.9
 
Writing Metasploit Plugins
Writing Metasploit PluginsWriting Metasploit Plugins
Writing Metasploit Plugins
 
ImplementingCryptoSecurityARMCortex_Doin
ImplementingCryptoSecurityARMCortex_DoinImplementingCryptoSecurityARMCortex_Doin
ImplementingCryptoSecurityARMCortex_Doin
 
Huffman
HuffmanHuffman
Huffman
 
How to check valid Email? Find using regex.
How to check valid Email? Find using regex.How to check valid Email? Find using regex.
How to check valid Email? Find using regex.
 
Creating a Fibonacci Generator in Assembly - by Willem van Ketwich
Creating a Fibonacci Generator in Assembly - by Willem van KetwichCreating a Fibonacci Generator in Assembly - by Willem van Ketwich
Creating a Fibonacci Generator in Assembly - by Willem van Ketwich
 
String Comparison Surprises: Did Postgres lose my data?
String Comparison Surprises: Did Postgres lose my data?String Comparison Surprises: Did Postgres lose my data?
String Comparison Surprises: Did Postgres lose my data?
 

Recently uploaded

Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
tolgahangng
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
IndexBug
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
DianaGray10
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
Neo4j
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
Zilliz
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
DianaGray10
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
Tomaz Bratanic
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
KAMESHS29
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
Neo4j
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
Zilliz
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
Matthew Sinclair
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
名前 です男
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 

Recently uploaded (20)

Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
 
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial IntelligenceAI 101: An Introduction to the Basics and Impact of Artificial Intelligence
AI 101: An Introduction to the Basics and Impact of Artificial Intelligence
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
みなさんこんにちはこれ何文字まで入るの?40文字以下不可とか本当に意味わからないけどこれ限界文字数書いてないからマジでやばい文字数いけるんじゃないの?えこ...
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 

The 9th Bit: Encodings in Ruby 1.9