SlideShare une entreprise Scribd logo
1  sur  96
Télécharger pour lire hors ligne
The

Even-Darker Art
        of

  Rails Engines
@lazyatom
github.com/lazyatom/engines
Rails 2.3
history
November 2005
it’s distracting!
reuse is overrated!
Evil!     Evil!
 Evil!

                                   Evil!

                 Evil!
Evil!
                                    Evil!

         Evil!           Shit!
eek!
appable_plugins
desert
merb slices?
engines
!quot;#$%&!quot;#$'#(%&$#)&!quot;#$%&*$+,#-.!)
!quot;#$%&'()
$$*%&'()$++,$-'%!.%&'()./0#'12%)/'0
quot;0!

3$405/0quot;6$%1quot;$7-(5/06$8/)9$%0$%77:$!/1quot;;)'1<=
!quot;#$quot;05/0quot;>
$$9%6.%77.!/1quot;;)'1<>
quot;0!

3$?quot;)(106$)1(quot;$/#$)9quot;$quot;05/0quot;$69/76$8/)9$%$1'()/05$#/-quot;
!quot;#$1'()quot;!>
$$@/-quot;=quot;A/6)>B1'()/05.#/-quot;C
quot;0!


!quot;#$D/quot;8.7%)9
$$@/-quot;=E'/0B!/1quot;;)'1<F$G%77GF$GD/quot;86GC
quot;0!
app/controllers/
    models/
    helpers/
    views/
    metal/
*$+,#-&quot;**&23-'!3$$(!&*$+,#-523-'!3$$(!.!)

 ;-%66$H-(5/0I'0)1'--quot;1/0/1**$#2quot;'#3-43-'!3$$(!
 $$!quot;#$/0!quot;A
 $$$$1quot;0!quot;1$J)quot;A)$,K$LMquot;--'F$H-(5/0NL
 $$quot;0!
 quot;0!
9quot;-7quot;1$J%--
won’t load from your plugin
Ticket #1905
config/routes.rb
*$+,#-&23-6#,&!3+'(%.!)



  O;)/'0I'0)1'--quot;1JJ?'()/05JJ?'()quot;6=!1%8$!'$+2%7+

  $$2%7=;'00quot;;)$G:7%)9GF$J;'0)1'--quot;1$,K$L7-(5/0LF$
  $$$$$$$$$$$$$$$$$$$$$$$J%;)/'0$,K$L/0!quot;AL

  quot;0!
top precedence
in your plugin:
 O;)/'0I'0)1'--quot;1JJ?'()/05JJ?'()quot;6=!1%8$!'$+2%7+
 $$2%7=;'00quot;;)$G:7%)9GF$J;'0)1'--quot;1$,K$L7-(5/0LF$
 $$$$$$$$$$$$$$$$$$$$$$$J%;)/'0$,K$L/0!quot;AL
 quot;0!


in your app:
 O;)/'0I'0)1'--quot;1JJ?'()/05JJ?'()quot;6=!1%8$!'$+2%7+
 $$3$===$')9quot;1$1'()quot;6$===
 $$2%7=;'00quot;;)$G:7%)9GF$J;'0)1'--quot;1$,K$L%77LF$
 $$$$$$$$$$$$$$$$$$$$$$$J%;)/'0$,K$L/0!quot;AL
 $$3$===$')9quot;1$1'()quot;6$===
 quot;0!
in your plugin:
 O;)/'0I'0)1'--quot;1JJ?'()/05JJ?'()quot;6=!1%8$!'$+2%7+
 $$2%7=;'00quot;;)$G:7%)9GF$J;'0)1'--quot;1$,K$L7-(5/0LF$
 $$$$$$$$$$$$$$$$$$$$$$$J%;)/'0$,K$L/0!quot;AL
 quot;0!


in your app:
 O;)/'0I'0)1'--quot;1JJ?'()/05JJ?'()quot;6=!1%8$!'$+2%7+
 $$3$===$')9quot;1$1'()quot;6$===
 $$2%7=;'00quot;;)$G:7%)9GF$J;'0)1'--quot;1$,K$L%77LF$
 $$$$$$$$$$$$$$$$$$$$$$$J%;)/'0$,K$L/0!quot;AL
 $$3$===$')9quot;1$1'()quot;6$===
 quot;0!
Ticket #2592
(also Ticket #329)
785*$+,#-&$#)&785*$+,#-.!)
2'!(-quot;$P<H-(5/0
$$!quot;#$6quot;-#=%!!.1'()quot;6B7quot;*C
$$$$2%7=;'00quot;;)$L:6)(##LF$J;'0)1'--quot;1$,K$L)9/056L
$$quot;0!
quot;0!

O;)/'0I'0)1'--quot;1JJ?'()/05JJ?'()quot;6=!1%8$!'$+2%7+
$$3$<'(1$%77$1'()quot;6===

$$P<H-(5/0=%!!.1'()quot;6B2%7C

$$3$quot;);===
quot;0!
what’s missing?
public assets
copy
file clash
83+!5*$+,#-&#-%'quot;$$.!)

2<./2%5quot;6$,$H%)90%2quot;=0quot;8B@/-quot;=!/10%2quot;B..@QR4..CC$S$
$$$$$$$$$$$$$$L%66quot;)6:/2%5quot;6L
)%15quot;)$,$?%/-6=1'')$S$L7(&-/;:/2%5quot;6:2<.7-(5/0L

@/-quot;T)/-6=2U!/1.7B)%15quot;)C

2<./2%5quot;6=;9/-!1quot;0=quot;%;9$!'$+quot;+$
$$$$@/-quot;T)/-6=;7.1Bquot;F$)%15quot;)$S$quot;=&%6quot;0%2quot;C$
quot;0!
83+!5*$+,#-&#-%'quot;$$.!)

2<./2%5quot;6$,$H%)90%2quot;=0quot;8B@/-quot;=!/10%2quot;B..@QR4..CC$S$
$$$$$$$$$$$$$$L%66quot;)6:/2%5quot;6L
)%15quot;)$,$?%/-6=1'')$S$L7(&-/;:/2%5quot;6:2<.7-(5/0L

)%15quot;)=2%Uquot;.6<2-/0UB2<./2%5quot;6C$(0-quot;66$)%15quot;)=quot;A/6)>
migrations
simple DSL
rollback
!&:2/51%)quot;:
   version
                 $$VWWXWYWYYVYVZ[.%-79%=1&
                   VWWXWYWVY[VZ[.&quot;)%=1&
20090101121234

20090102142345
                 7-(5/0:!&:2/51%)quot;:
2008123123456    $$VWW]YVZYZ[^.5%22%=1&
1%Uquot;$!&J1'--&%;U
   version
                  P/51%)'1=1'--&%;U
20090101121234
                  P/51%)'13;(11quot;0).Dquot;16/'0
20090102142345
                  P/51%)'132/51%)quot;!=-%6)
2008123123456     P/51%)'1=5quot;).%--.Dquot;16/'06

                 BL_4R4I`$Dquot;16/'0$@?aP$$
                 $$6;9quot;2%.2/51%)/'06LC
                 =2%7BbJ)'./C=6'1)
it gets worse
!&:2/51%)quot;:
version
          $$WWY.%-79%=1&
            WWV.&quot;)%=1&
 001

 002
          7-(5/0:!&:2/51%)quot;:
          $$WWY.5%22%=1&
http://www.flickr.com/photos/bk2204/475332962/
single timeline
You                            1
                                  n
                               tio           n1
                            ra           tio
                        ig
                                   gra
                      m
                   pp            mi
                  a                             n2
                             in
                          ug                tio
                         l
                       p                gra               3
                                      i              ion
                                    m
Me                                                at
                                pp            igr
                               a
            all                         pm                 ra
        nst                          p                  ig
                                    a
       i                                           nm
                                                gi
                                           plu
                            de
                         ra
                      pg
                    u
n1
                      tio
You             gra                n1
              i                tio
            m
                           gra
       pp               mi
      a
                                          n2
                 gin                  tio
             plu                    ra             n3
                                 ig
                         pm                    tio
                                            ra
                       ap                                   n2
                                         ig             tio
                                    pm               gra
                                 ap                mi
                                             gin
                                         plu
!&:2/51%)quot;:
$$WWY.%-79%=1&
  WWV.&quot;)%=1&
  WWZ.7-(5/0.)'.WWY=1&
  WW[.!quot;-)%=1&


7-(5/0:!&:2/51%)quot;:
$$WWY.5%22%=1&
Symlink?
 !&:2/51%)quot;:
 $$WWY.%-79%=1&
   WWV.&quot;)%=1&
Reference?
   WWZ.7-(5/0.)'.WWY=1&
   WW[.!quot;-)%=1&

                    Copy &
 7-(5/0:!&:2/51%)quot;:
              Retimestamp?
 $$WWY.5%22%=1&
Ticket #2058
interblah.net/plugin-migrations
my recommendation?
   (for the moment, at least)
write a generator
              (within your plugin)



c$6;1/7):5quot;0quot;1%)quot;$%;)6.%6.#(.2/51%)/'06
$$$$
$$$quot;A/6)6$$!&:2/51%)quot;
$$$;1quot;%)quot;$$!&:2/51%)quot;:VWWXWWYYYZZd.&-%9=1&

c$===
techniques
overriding functionality
views just work
controllers
straight override
module
namespaced
playing nice with the
     class cache
1/23*8/36/1**$#2quot;'#3-43-'!3$$(!/

                              !
9quot;%/)((-/!(73:(;/6!37/'9(/73;+$(/
                             <
                            <
'!((/)+'/#%/%'#$$/quot;2'#:(<< < <
                          <<
O;)/Dquot;_(77'1)JJequot;7quot;0!quot;0;/quot;6=-'%!.'0;quot;.7%)96
ApplicationController




AppController                 PluginController
ApplicationController




                  PluginController
23-6#,&(-:#!3-7(-'.!)


 ?%/-6JJQ0/)/%-/fquot;1=1(0$!'$+;'0#/5+
 $$3$quot;);===

 $$;'0#/5=1quot;-'%!.7-(5/06$,$)1(quot;
 $$
 quot;0!
83+!5*$+,#-&quot;**&23-'!3$$(!%&,33;523-'!3$$(!.!)



  ;-%66$g''!I'0)1'--quot;1$h$===
  $$(0-'%!%&-quot;
  $$
  $$3$quot;);$===

  quot;0!
init.rb woes
785*$+,#-&#-#'.!)



;'0#/5=)'.71quot;7%1quot;$!'

$$_'2quot;O77I-%66=quot;A)quot;0!BP<iquot;9%D/'(1C
$$
quot;0!
testing
ApplicationController




AppController                 PluginController
ApplicationController


                                ode
                           ir C
                        The
                              Code
                         Your




                  PluginController
quot;
    $
    !
#
unit test?
test in your own rails
    environment?
plugin_test_helper
I care about testing
     my chunk
You care about testing
   your whole app
empower the
 developer
avoiding fail
;%6quot;$;'!quot;=;'06(2quot;1

$$89quot;0$;'!quot;=%()9'1
$$$$1quot;(6quot;=2'6)-<$,j$:quot;##quot;;)/Dquot;:

$$89quot;0$1%0!B!quot;Dquot;-'7quot;1C
$$$$1quot;(6quot;=)1/;U/quot;1.&().7'66/&-quot;B)1(quot;C

$$quot;-6quot;
$$$$1quot;(6quot;='Dquot;11%)quot;!N

quot;0!
consume wisely
Nutrition Facts
Serving Size 14 kloc
Amount Per Serving 1 bad engine
Calories 10,666
                    % Daily Value*
Total Fat 2674g        98%
                       34%
 Long Methods 1578g
                        7%
 God Objects 326g
Stress 320mg         119%
Hairloss 45g         45.8%
Technical Debt 13g     87%
 Untested Code 1578mg 34%
                        7%
 Hidden Bugs 326mg
Benefit 1mg           0.1%
you will not be able to
 write some engines.
you will not be able to
  use some engines.
extract
specific functionality
establish some
clear integration points
you are customer #1
READ the CODE
james@lazyatom.com




  FIN
lets@gofreerange.com

Contenu connexe

Similaire à The Even Darker Art Of Rails Engines Presentation

用設計看世界
用設計看世界用設計看世界
用設計看世界吉閔 鄭
 
Social Media for Cause Marketers - CMF 2009 Workshop
Social Media for Cause Marketers - CMF 2009 WorkshopSocial Media for Cause Marketers - CMF 2009 Workshop
Social Media for Cause Marketers - CMF 2009 WorkshopMediaSauce
 
Wikimedia Foundation: Annual Plan 2008-2009
Wikimedia Foundation: Annual Plan 2008-2009Wikimedia Foundation: Annual Plan 2008-2009
Wikimedia Foundation: Annual Plan 2008-2009guestc4425
 
K+N DOIT Product Overview
K+N DOIT Product OverviewK+N DOIT Product Overview
K+N DOIT Product Overviewmtmsolutions
 

Similaire à The Even Darker Art Of Rails Engines Presentation (11)

Hamdeli 2
Hamdeli 2Hamdeli 2
Hamdeli 2
 
用設計看世界
用設計看世界用設計看世界
用設計看世界
 
Social Media for Cause Marketers - CMF 2009 Workshop
Social Media for Cause Marketers - CMF 2009 WorkshopSocial Media for Cause Marketers - CMF 2009 Workshop
Social Media for Cause Marketers - CMF 2009 Workshop
 
Vietnam Online Travel Behaviors
Vietnam Online Travel BehaviorsVietnam Online Travel Behaviors
Vietnam Online Travel Behaviors
 
Thailand ICT Market Survey 2008
Thailand ICT Market Survey 2008Thailand ICT Market Survey 2008
Thailand ICT Market Survey 2008
 
Layouts
LayoutsLayouts
Layouts
 
Wikimedia Foundation: Annual Plan 2008-2009
Wikimedia Foundation: Annual Plan 2008-2009Wikimedia Foundation: Annual Plan 2008-2009
Wikimedia Foundation: Annual Plan 2008-2009
 
OpenSSO Microsoft Interop
OpenSSO Microsoft InteropOpenSSO Microsoft Interop
OpenSSO Microsoft Interop
 
Moms 8.0: Celebrities
Moms 8.0: Celebrities Moms 8.0: Celebrities
Moms 8.0: Celebrities
 
Salah Prez Cogifactory
Salah Prez CogifactorySalah Prez Cogifactory
Salah Prez Cogifactory
 
K+N DOIT Product Overview
K+N DOIT Product OverviewK+N DOIT Product Overview
K+N DOIT Product Overview
 

Plus de railsconf

Smacking Git Around Advanced Git Tricks
Smacking Git Around   Advanced Git TricksSmacking Git Around   Advanced Git Tricks
Smacking Git Around Advanced Git Tricksrailsconf
 
Running The Show Configuration Management With Chef Presentation
Running The Show  Configuration Management With Chef PresentationRunning The Show  Configuration Management With Chef Presentation
Running The Show Configuration Management With Chef Presentationrailsconf
 
Sd208 Ds%2 C0
Sd208 Ds%2 C0Sd208 Ds%2 C0
Sd208 Ds%2 C0railsconf
 
Rails Is From Mars Ruby Is From Venus Presentation 1
Rails Is From Mars  Ruby Is From Venus Presentation 1Rails Is From Mars  Ruby Is From Venus Presentation 1
Rails Is From Mars Ruby Is From Venus Presentation 1railsconf
 
Rails 3 And The Real Secret To High Productivity Presentation
Rails 3 And The Real Secret To High Productivity PresentationRails 3 And The Real Secret To High Productivity Presentation
Rails 3 And The Real Secret To High Productivity Presentationrailsconf
 
Quality Code With Cucumber Presentation
Quality Code With Cucumber PresentationQuality Code With Cucumber Presentation
Quality Code With Cucumber Presentationrailsconf
 
J Ruby On Rails Presentation
J Ruby On Rails PresentationJ Ruby On Rails Presentation
J Ruby On Rails Presentationrailsconf
 
Integrating Flex And Rails With Ruby Amf
Integrating Flex And Rails With Ruby AmfIntegrating Flex And Rails With Ruby Amf
Integrating Flex And Rails With Ruby Amfrailsconf
 
Don T Mock Yourself Out Presentation
Don T Mock Yourself Out PresentationDon T Mock Yourself Out Presentation
Don T Mock Yourself Out Presentationrailsconf
 
Gov 2 0 Transparency Collaboration And Participation In Practice Presentation
Gov 2 0  Transparency  Collaboration  And Participation In Practice PresentationGov 2 0  Transparency  Collaboration  And Participation In Practice Presentation
Gov 2 0 Transparency Collaboration And Participation In Practice Presentationrailsconf
 
Crate Packaging Standalone Ruby Applications
Crate  Packaging Standalone Ruby ApplicationsCrate  Packaging Standalone Ruby Applications
Crate Packaging Standalone Ruby Applicationsrailsconf
 
Develop With Pleasure Deploy With Fun Glass Fish And Net Beans For A Better...
Develop With Pleasure  Deploy With Fun  Glass Fish And Net Beans For A Better...Develop With Pleasure  Deploy With Fun  Glass Fish And Net Beans For A Better...
Develop With Pleasure Deploy With Fun Glass Fish And Net Beans For A Better...railsconf
 
Building A Mini Google High Performance Computing In Ruby
Building A Mini Google  High Performance Computing In RubyBuilding A Mini Google  High Performance Computing In Ruby
Building A Mini Google High Performance Computing In Rubyrailsconf
 
A Z Introduction To Ruby On Rails
A Z Introduction To Ruby On RailsA Z Introduction To Ruby On Rails
A Z Introduction To Ruby On Railsrailsconf
 
Below And Beneath Tdd Test Last Development And Other Real World Test Patter...
Below And Beneath Tdd  Test Last Development And Other Real World Test Patter...Below And Beneath Tdd  Test Last Development And Other Real World Test Patter...
Below And Beneath Tdd Test Last Development And Other Real World Test Patter...railsconf
 

Plus de railsconf (15)

Smacking Git Around Advanced Git Tricks
Smacking Git Around   Advanced Git TricksSmacking Git Around   Advanced Git Tricks
Smacking Git Around Advanced Git Tricks
 
Running The Show Configuration Management With Chef Presentation
Running The Show  Configuration Management With Chef PresentationRunning The Show  Configuration Management With Chef Presentation
Running The Show Configuration Management With Chef Presentation
 
Sd208 Ds%2 C0
Sd208 Ds%2 C0Sd208 Ds%2 C0
Sd208 Ds%2 C0
 
Rails Is From Mars Ruby Is From Venus Presentation 1
Rails Is From Mars  Ruby Is From Venus Presentation 1Rails Is From Mars  Ruby Is From Venus Presentation 1
Rails Is From Mars Ruby Is From Venus Presentation 1
 
Rails 3 And The Real Secret To High Productivity Presentation
Rails 3 And The Real Secret To High Productivity PresentationRails 3 And The Real Secret To High Productivity Presentation
Rails 3 And The Real Secret To High Productivity Presentation
 
Quality Code With Cucumber Presentation
Quality Code With Cucumber PresentationQuality Code With Cucumber Presentation
Quality Code With Cucumber Presentation
 
J Ruby On Rails Presentation
J Ruby On Rails PresentationJ Ruby On Rails Presentation
J Ruby On Rails Presentation
 
Integrating Flex And Rails With Ruby Amf
Integrating Flex And Rails With Ruby AmfIntegrating Flex And Rails With Ruby Amf
Integrating Flex And Rails With Ruby Amf
 
Don T Mock Yourself Out Presentation
Don T Mock Yourself Out PresentationDon T Mock Yourself Out Presentation
Don T Mock Yourself Out Presentation
 
Gov 2 0 Transparency Collaboration And Participation In Practice Presentation
Gov 2 0  Transparency  Collaboration  And Participation In Practice PresentationGov 2 0  Transparency  Collaboration  And Participation In Practice Presentation
Gov 2 0 Transparency Collaboration And Participation In Practice Presentation
 
Crate Packaging Standalone Ruby Applications
Crate  Packaging Standalone Ruby ApplicationsCrate  Packaging Standalone Ruby Applications
Crate Packaging Standalone Ruby Applications
 
Develop With Pleasure Deploy With Fun Glass Fish And Net Beans For A Better...
Develop With Pleasure  Deploy With Fun  Glass Fish And Net Beans For A Better...Develop With Pleasure  Deploy With Fun  Glass Fish And Net Beans For A Better...
Develop With Pleasure Deploy With Fun Glass Fish And Net Beans For A Better...
 
Building A Mini Google High Performance Computing In Ruby
Building A Mini Google  High Performance Computing In RubyBuilding A Mini Google  High Performance Computing In Ruby
Building A Mini Google High Performance Computing In Ruby
 
A Z Introduction To Ruby On Rails
A Z Introduction To Ruby On RailsA Z Introduction To Ruby On Rails
A Z Introduction To Ruby On Rails
 
Below And Beneath Tdd Test Last Development And Other Real World Test Patter...
Below And Beneath Tdd  Test Last Development And Other Real World Test Patter...Below And Beneath Tdd  Test Last Development And Other Real World Test Patter...
Below And Beneath Tdd Test Last Development And Other Real World Test Patter...
 

Dernier

Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 

Dernier (20)

Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 

The Even Darker Art Of Rails Engines Presentation