SlideShare una empresa de Scribd logo
1 de 30
Descargar para leer sin conexión
Djangocon Presentation
Bruce Kroeze & Chris Moffitt  
     September 6th, 2008
Discussion Topics

    • Introduction and history
 
    • Unique Features
 
    • Large Project Issues
 
    • The Future 
Satchmo ­ The Beginning

Excerpt from the initial post: 

       quot;I know some people have started (or have completed) work on their 
        own stores.  Is there any framework out there that I can leverage or 
        do I have to quot;roll my own?quot;  I think it would be a great thing for this 
        community to create a store framework.  The Django pluses I 
        mentioned would be awesome in a complete solution.  I think it 
        would also attract a lot of users to the project. Is there interest or 
        any activity in this area?  I'm willing to hack through by myself but I 
        think if there's anyone that is an expert, we could move through this 
        a lot more quickly.quot;
 
       ­ Django Users Posting by Chris Moffitt April 12, 2006 
What's in a name?


 
 
    Googling for 'quot;too commercialquot; jazz' turns this up: 
    http://www.redhotjazz.com/louie.html 
    It's Louie quot;Satchmoquot; Armstrong.  I could go for Armstrong, but I think 
        quot;Satchmoquot; is cooler. 
    ­ jmj 

       Posted by Jeremy Jones on April 14th, 2006
What is Satchmo?
     • Django­based framework for developing unique and highly 
       customized ecommerce sites
  
     • Designed for developers that have a unique store need 
  
     • Supported by over 570 people in Satchmo­users Google Group
  
     • Deployed to 9 known production sites & more in development

     • Translated into multiple languages
  
     • Preparing for it's 1.0 release!
Satchmo Features
                             •
 • Template driven               Multiple shops­per­instance 
                             •   Multiple discount options
 • Multiple payment 
                             •   Wishlists
   gateways 
                             •   Full account management 
 • Custom shipping modules
 • Custom payment modules        options
                             •   PDF invoice & shipping 
 • UPS, FedEx integration
 • Downloadable,                 documents
                             •   Automatic image 
   subscription & custom 
                                 thumbnails 
   products
                             •   Modular newsletters
 • Gift certificates 
                             •
 • Tax & VAT                     Strong internationalization 
                                 and localization



                  And Much More ...
Components
                           Middleware
Applications (core)        •   quot;threaded_multihost.middleware.ThreadLocalMiddlewarequot;,  
'satchmo.caching',              quot;satchmo.shop.SSLMiddleware.SSLRedirectquot;,    
                               quot;satchmo.recentlist.middleware.RecentProductMiddlewarequot;
'satchmo.configuration',
'satchmo.shop',
'satchmo.contact',         Context Processors
'satchmo.product',         •   'satchmo.recentlist.context_processors.recent_products',  
                                 'satchmo.shop.context_processors.settings',
'satchmo.shipping‘,
'satchmo.payment',
                           Applications (non­core)
'satchmo.discount',
                            'satchmo.shipping.modules.tiered‘
'satchmo.supplier',
'satchmo.thumbnail',         'satchmo.newsletter',    
'satchmo.l10n',              'satchmo.feeds',
'satchmo.tax‘,               'satchmo.giftcertificate',
‘satchmo.productrating’      'satchmo.recentlist',
                             'satchmo.wishlist',
                             'satchmo.upsell',
Unique Features ­ Custom Shipping
Satchmo supports many shipping 
modules but the real power is in 
the flexibility to create your own.




 Scenario ­ You have a small retail presence and would like to 
 allow people within 20 miles of your store to stop by and pick up 
 the purchase instead of spending money for shipping
   
 Solution ­ Create your own shipping module to determine how 
 far the address is from your shipping point. 

 Bonus – Use Google Map’s API to do it!
Creating a Custom Shipping Module
Steps to create a your quot;local pickupquot; shipping module:
 
  1. Make a new directory somewhere. Ex: mysite.localpickup
  2. Copy in the boilerplate from satchmo.shipping.modules.per.
  3. Only two files of interest:  config.py and shipper.py
  4. config.py uses another Satchmo feature, the configuration 
     system, and defines the custom variables used by this 
     shipper.
  5. shipper.py uses a standard quot;walks like a duckquot; Python 
     interface for handling shipping calculations.
Local Pickup Shipper Code ­ Boilerplate
from django.utils.translation import ugettext, ugettext_lazy
from satchmo.configuration import config_value
_ = ugettext_lazy
from satchmo.shipping.modules.base import BaseShipper
from geopy import geocoders
from geopy import distance
from satchmo.shop.models import Config

class Shipper(BaseShipper):
  id = quot;LocalPickupquot;

       def __str__(self):
         quot;quot;quot;
         This is mainly helpful for debugging purposes
         quot;quot;quot;
         return quot;Local Pickupquot;
       def description(self):
         quot;quot;quot;
         A basic description that will be displayed to the user when selecting their shipping options
         quot;quot;quot;
         return _(quot;Local Pickupquot;)

  def cost(self):
     quot;quot;quot;
     Complex calculations can be done here as long as the return value is a dollar figure
     quot;quot;quot;
     fee = config_value('SHIPPING', 'LOCAL_PICKUP_FEE')
     return fee
 def method(self):
     quot;quot;quot;
     Describes the actual delivery service (Mail, FedEx, DHL, UPS, etc)
     quot;quot;quot;
     return _(quot;Local Pickupquot;)      
    
Local Pickup Shipper Code ­ Workhorse
       def expectedDelivery(self):
         quot;quot;quot;
         Can be a plain string or complex calculation returning an actual date
         quot;quot;quot;
         return _(quot;5 Hoursquot;)

       def valid(self):
         quot;quot;quot;
         Can do complex validation about whether or not this option is valid.
         quot;quot;quot;
         return self._destination_is_local()

       def _destination_is_local(self):
         store_config = Config.objects.get_current()
         store_add= uquot;%s, %squot; % (store_config.street1, store_config.postal_code)
         customer_add = uquot;%s, %squot; % (self.contact.billing_address.street1,
                                            self.contact.billing_address.postal_code)
         api_key = config_value('SHIPPING', 'GOOGLE_API_KEY')
         g = geocoders.Google(api_key)
         _, store = g.geocode(store_add)
         _, dest = g.geocode(customer_add)
         dist = distance.distance(store, dest).miles
         return(dist < config_value('SHIPPING','LOCAL_PICKUP_DISTANCE'))       
    
Local Pickup Config Code
from django.utils.translation import ugettext_lazy as _
from satchmo.configuration import *
SHIP_MODULES = config_get('SHIPPING', 'MODULES')
SHIP_MODULES.add_choice(('satchmo.shipping.modules.localpickup', _('Local Pickup')))

SHIPPING_GROUP = config_get_group('SHIPPING')
config_register_list(

    DecimalValue(SHIPPING_GROUP,
      'LOCAL_PICKUP_FEE',
      description=_(quot;Pickup Feequot;),
      requires=SHIP_MODULES,
      requiresvalue='satchmo.shipping.modules.localpickup',
      default=quot;5.00quot;),

    DecimalValue(SHIPPING_GROUP,
      'LOCAL_PICKUP_DISTANCE',
      description=_(quot;Radius for local pickupquot;),
      requires=SHIP_MODULES,
      requiresvalue='satchmo.shipping.modules.localpickup',
      default=quot;10.0quot;),

    StringValue(SHIPPING_GROUP,
       'GOOGLE_API_KEY',
       description=_(quot;Google Maps API Keyquot;),
       help_text=_(quot;Google API Keyquot;),
       requires=SHIP_MODULES,
       requiresvalue='satchmo.shipping.modules.localpickup',
       default=quot;quot;),
)
Enabling the Local Pickup Module
In the site's settings.py, we have a dictionary for Satchmo settings.  
Add the module as an option there, and it will get picked up as an 
allowable shipper.
 
    SATCHMO_SETTINGS = {
      # ... skipping the other settings here
      CUSTOM_SHIPPING_MODULES = ['mysite.localpickup'] }

Then, you would activate the newly built shipping module at your site 
settings page usually “mysite.com/settings/quot;  

That's also where you would configure:
–  Maximum distance
–  Google API key
–  Fee
Configuring the Local Pickup Module
Unique Feature ­ Configuration
Why?

– Updating configuration files isn’t always practical

– We got tired of always having to make backwards incompatible 
  notes just to add a new feature  

– The Shop object got to be a dumping ground and it was a hassle.

– Configuration app is aware of prerequisites, so you don't see 
  sections which aren't applicable to you.  No UPS on your store, then 
  no need to have all that data in the db.

– Very fast, heavily cached access to all config variables.
Unique Feature ­ Caching
Why?

­ Able to cache a None object, and know that they weren't 
cache misses.

­ A consistent design patterns for cache application.

­ Caching stats and resets from the app itself.
Unique Feature – Payment Modules


•  Satchmo’s payment module design supports 
     a broad range of payment processors:

  –  URL posting and response ­ Authorize.net

  –  Full XML message creation and response – Cybersource
     • Utilize full power of Django templates for XML message creation
     • Elementree for simple parsing of data

  –   Complex site redirection/posting – Google Checkout, Paypal
     • Uses custom views to manage the process

  –  Custom interface via libraries – TrustCommerce via Tclink
Signal Usage in Satchmo
We currently have 13 signals in the base Satchmo.

quot;satchmo_order_successquot; and quot;satchmo_cart_changedquot; are 
the two most heavily used.

The use of signals allowed us to remove circular dependencies, 
clear up responsibilities, and make the whole thing much more 
understandable.

We'll be adding many more as we grow to support better 
integration.
Real­World Signal Usage
Loyalty Card Creation
Scenario:  Develop a site for a customer who wishes to sell 
“loyalty cards” which offer a 10% discount, each have a unique 
code, and automatically expire in 1 year.

Approach:  Listen for “order_success” signal, look through cart 
for loyalty cards, create a unique discount code for each one 
found, email the code to the user and to the fulfillment house, 
update order notes with loyalty card code.

Total time to implement with testing: 1.5 hours.
Real­World Signal Usage
Custom Tiered Pricing
Scenario:  Develop a site for a customer 
who has two classes of users, each of 
which see and pay different prices for 
products.

Approach:  Listen for “satchmo_price_query” signal.  Look up 
user from threadlocals.  If user is part of special group, look up 
discount for that group, apply to current price, and return 
modified price.  

Total time to implement with testing: 2 hours.
Integrating with other
Django Apps ­ Banjo
Scenario: Customer wants to have a
Blog integrated with their store.

Django App Used: Banjo

Interesting bits:
  •  Blog entries can be integrated onto the homepage

  •  Entries can be tagged so that they show related products

  •  Blog remote­posting interface can be used to edit/maintain
     pages instead of the manual “flatpages” app.
Steps to Integrate Banjo

 Add requirements to INSTALLED_APPS 
  and CONTEXT_PROCESSORS
   
 Make a custom templatetag library
  which looks up related products using 
  the tags attached to the blog entry.  
  Put this in the local “site” app.

 Override the Satchmo base_index.html template and the 
  Banjo blog/view_post.html template.
Big vs. Small 
The Endless Debate
Should Satchmo be:

­A single app

­Focused on small stores

­Capable of supporting thousands of products

­Easily integrated with other “Enterprise” apps

­Heavily “instrumented” for reporting that some stores need
Big vs. Small 
The Working Philosophy
Satchmo will remain usable standalone.
Core development is driven by real sites.

We appreciate contributions providing new functionality if they:

­ have tests
­ have documentation (sadly rare)
­ are optional
­ don’t require modification of basic functionality or addition of 
special cases
­ need new signals (we’ll add them if they make sense)

It is simply amazing how far signals + templatetags will get you.
Documentation

We strive to emulate Django’s documentation example.

ReStructured text for all the documents

Sphinx for presenting them nicely

Use built in admin docs functionality

The biggest challenge is providing the right level of 
documentation to help newbies as well as experienced devs
The Future

• Stabilizing on Django 1.0 
   – YEAH!

• Improving the documentation around extensibility

• Improved product model

• More customization of the admin interface
The Future ­ Product Models

• Current product model has some limitations
–   Not straightforward to extend
–   Tend to proliferate a lot of different model types
–   Lots of special case checking throughout the code
–   Doesn’t take full advantage of inheritance and generic foreign keys

• Future model
– Create a design that is easily extensible for unique shops
– Clean interface to other sections of the code
– Support just about any product that could be sold on the web
The Future ­ Admin

New Admin Features in the works:

Order Manager:
­Multi­tab interface
­Modify orders, adjust discounts, add notes, set status, add 
order items, change quantities, mark manual payments

Product Manager:
­Built to handle thousands of products & variations
­Integrated assignment of categories
­Importing and Exporting of product lists to common formats

Reporting – we need some!
The Future ­ External Apps

XMLRPC interface

  ­Use Satchmo as backend to Flash store

  ­Desktop product manager

  ­Desktop reporting

JSON interface

  ­AIR/Google/Yahoo/OSX store status widgets
Questions ?

Más contenido relacionado

La actualidad más candente

OSDC 2009 Rails Turtorial
OSDC 2009 Rails TurtorialOSDC 2009 Rails Turtorial
OSDC 2009 Rails Turtorial
Yi-Ting Cheng
 
Yearning jQuery
Yearning jQueryYearning jQuery
Yearning jQuery
Remy Sharp
 
Dependency Management with RequireJS
Dependency Management with RequireJSDependency Management with RequireJS
Dependency Management with RequireJS
Aaronius
 
Zf2 how arrays will save your project
Zf2   how arrays will save your projectZf2   how arrays will save your project
Zf2 how arrays will save your project
Michelangelo van Dam
 

La actualidad más candente (20)

OSDC 2009 Rails Turtorial
OSDC 2009 Rails TurtorialOSDC 2009 Rails Turtorial
OSDC 2009 Rails Turtorial
 
Yearning jQuery
Yearning jQueryYearning jQuery
Yearning jQuery
 
WCLV13 JavaScript
WCLV13 JavaScriptWCLV13 JavaScript
WCLV13 JavaScript
 
Symfony 1, mi viejo amigo
Symfony 1, mi viejo amigoSymfony 1, mi viejo amigo
Symfony 1, mi viejo amigo
 
Best Practices for Magento Debugging
Best Practices for Magento Debugging Best Practices for Magento Debugging
Best Practices for Magento Debugging
 
Angularjs
AngularjsAngularjs
Angularjs
 
Creating GUI Component APIs in Angular and Web Components
Creating GUI Component APIs in Angular and Web ComponentsCreating GUI Component APIs in Angular and Web Components
Creating GUI Component APIs in Angular and Web Components
 
AngularJS Directives
AngularJS DirectivesAngularJS Directives
AngularJS Directives
 
What's new in Rails 2?
What's new in Rails 2?What's new in Rails 2?
What's new in Rails 2?
 
Gae
GaeGae
Gae
 
Creating GUI container components in Angular and Web Components
Creating GUI container components in Angular and Web ComponentsCreating GUI container components in Angular and Web Components
Creating GUI container components in Angular and Web Components
 
Dependency Management with RequireJS
Dependency Management with RequireJSDependency Management with RequireJS
Dependency Management with RequireJS
 
Building Potent WordPress Websites
Building Potent WordPress WebsitesBuilding Potent WordPress Websites
Building Potent WordPress Websites
 
HTML::FormHandler
HTML::FormHandlerHTML::FormHandler
HTML::FormHandler
 
Images and PWA in magento
Images and PWA in magentoImages and PWA in magento
Images and PWA in magento
 
Zf2 how arrays will save your project
Zf2   how arrays will save your projectZf2   how arrays will save your project
Zf2 how arrays will save your project
 
Сергей Иващенко - Meet Magento Ukraine - Цены в Magento 2
Сергей Иващенко - Meet Magento Ukraine - Цены в Magento 2Сергей Иващенко - Meet Magento Ukraine - Цены в Magento 2
Сергей Иващенко - Meet Magento Ukraine - Цены в Magento 2
 
Progressive What Apps?
Progressive What Apps?Progressive What Apps?
Progressive What Apps?
 
WordPress and Ajax
WordPress and AjaxWordPress and Ajax
WordPress and Ajax
 
Turn your spaghetti code into ravioli with JavaScript modules
Turn your spaghetti code into ravioli with JavaScript modulesTurn your spaghetti code into ravioli with JavaScript modules
Turn your spaghetti code into ravioli with JavaScript modules
 

Similar a Satchmo

Private slideshow
Private slideshowPrivate slideshow
Private slideshow
sblackman
 
Wide Open Spaces Using My Sql As A Web Mapping Service Backend
Wide Open Spaces Using My Sql As A Web Mapping Service BackendWide Open Spaces Using My Sql As A Web Mapping Service Backend
Wide Open Spaces Using My Sql As A Web Mapping Service Backend
MySQLConference
 
5 Reasons To Love CodeIgniter
5 Reasons To Love CodeIgniter5 Reasons To Love CodeIgniter
5 Reasons To Love CodeIgniter
nicdev
 
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
railsconf
 
Hacking Movable Type Training - Day 2
Hacking Movable Type Training - Day 2Hacking Movable Type Training - Day 2
Hacking Movable Type Training - Day 2
Byrne Reese
 

Similar a Satchmo (20)

More Secrets of JavaScript Libraries
More Secrets of JavaScript LibrariesMore Secrets of JavaScript Libraries
More Secrets of JavaScript Libraries
 
Smarty
SmartySmarty
Smarty
 
Blueprint talk at Open Hackday London 2009
Blueprint talk at Open Hackday London 2009Blueprint talk at Open Hackday London 2009
Blueprint talk at Open Hackday London 2009
 
Plone Interactivity
Plone InteractivityPlone Interactivity
Plone Interactivity
 
Introduce cucumber
Introduce cucumberIntroduce cucumber
Introduce cucumber
 
JUDCon London 2011 - Bin packing with drools planner by example
JUDCon London 2011 - Bin packing with drools planner by exampleJUDCon London 2011 - Bin packing with drools planner by example
JUDCon London 2011 - Bin packing with drools planner by example
 
Neil Patel - What You Need to be Measuring and How to Do It
Neil Patel - What You Need to be Measuring and How to Do ItNeil Patel - What You Need to be Measuring and How to Do It
Neil Patel - What You Need to be Measuring and How to Do It
 
Intro To Django
Intro To DjangoIntro To Django
Intro To Django
 
Running Vue Storefront in production (PWA Magento webshop)
Running Vue Storefront in production (PWA Magento webshop)Running Vue Storefront in production (PWA Magento webshop)
Running Vue Storefront in production (PWA Magento webshop)
 
What's New in ZF 1.10
What's New in ZF 1.10What's New in ZF 1.10
What's New in ZF 1.10
 
Private slideshow
Private slideshowPrivate slideshow
Private slideshow
 
GWT
GWTGWT
GWT
 
Wide Open Spaces Using My Sql As A Web Mapping Service Backend
Wide Open Spaces Using My Sql As A Web Mapping Service BackendWide Open Spaces Using My Sql As A Web Mapping Service Backend
Wide Open Spaces Using My Sql As A Web Mapping Service Backend
 
From jQuery to App Store in 30 Minutes
From jQuery to App Store in 30 MinutesFrom jQuery to App Store in 30 Minutes
From jQuery to App Store in 30 Minutes
 
Using Geeklog as a Web Application Framework
Using Geeklog as a Web Application FrameworkUsing Geeklog as a Web Application Framework
Using Geeklog as a Web Application Framework
 
Ten modules I haven't yet talked about
Ten modules I haven't yet talked aboutTen modules I haven't yet talked about
Ten modules I haven't yet talked about
 
5 Reasons To Love CodeIgniter
5 Reasons To Love CodeIgniter5 Reasons To Love CodeIgniter
5 Reasons To Love CodeIgniter
 
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
 
Curso Symfony - Clase 4
Curso Symfony - Clase 4Curso Symfony - Clase 4
Curso Symfony - Clase 4
 
Hacking Movable Type Training - Day 2
Hacking Movable Type Training - Day 2Hacking Movable Type Training - Day 2
Hacking Movable Type Training - Day 2
 

Más de DjangoCon2008

Más de DjangoCon2008 (6)

Why I Hate Django
Why I Hate DjangoWhy I Hate Django
Why I Hate Django
 
Pinax
PinaxPinax
Pinax
 
Reusable Apps
Reusable AppsReusable Apps
Reusable Apps
 
What’S New In Newforms Admin
What’S New In Newforms AdminWhat’S New In Newforms Admin
What’S New In Newforms Admin
 
High Performance Django 1
High Performance Django 1High Performance Django 1
High Performance Django 1
 
High Performance Django
High Performance DjangoHigh Performance Django
High Performance Django
 

Último

Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Último (20)

Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 

Satchmo