SlideShare une entreprise Scribd logo
1  sur  82
WHO NEEDS RUBY WHEN YOU’VE
     GOT CODEIGNITER?

           Jamie Rumbelow
           @jamierumbelow




     CodeIgniter Conference, London, 2012
HI, I’M JAMIE
PLUG:
codeigniterhandbook.com
SORRY CODEIGNITER,
I’VE GOT ANOTHER GIRL
BUT I STILL ♥ YOU
CODEIGNITER IS MY WIFE,
 RAILS IS MY MISTRESS
RAILS DEVELOPERS?
SMUG.
IN REALITY,
RAILS DEVS ARE RINGOS
“Totally the hot shit”
BOLLOCKS!
RUBY
NOPE!
IT’S ALL ABOUT
THE CONCEPTS
FLEXIBILITY
OTHER FRAMEWORKS
      COPY
CODEIGNITER
  ADAPTS
WHAT CONCEPTS?
CONVENTION
      >
CONFIGURATION
DON’T
 REPEAT
YOURSELF
A DAY IN THE LIFE
MVC
MVC
IT’S ALL ABOUT
   THE DATA
IT’S ALL ABOUT
*PROCESSING THE DATA
FAT
MODEL
SKINNY
CONTROLLER
MY_Model
public function get($where)
{
  return $this->db->where($where)
             ->get($this->_table);
}
PLURAL TABLE NAME
$this->_table = strtolower(plural(str_replace('_model', '', get_class())));
class User_model extends MY_Model { }
                    Text
class Post_model extends MY_Model { }
class Category_model extends MY_Model { }
OBSERVERS
class User_model extends MY_Model
{
   public $before_create = array( 'hash_password' );
}
foreach ($this->before_create as $method)
{
  $data = call_user_func_array(array($this, $method), array($data));
}
public function hash_password($user)
{
  $user['password'] = sha1($user['password']);

    return $user;
}
SCOPES
return $this;
public function confirmed()
{
  $this->db->where('confirmed', TRUE);
  return $this;
}
$this->user->confirmed()->get_all();
VALIDATION
YOU’RE
DOING
  IT
WRONG
class User_model extends MY_Model
{
   public $validate = array(
      array( 'field' => 'username', 'label' => 'Username',
          'rules' => 'required|max_length[20]|alpha_dash' ),
      array( 'field' => 'password', 'label' => 'Password',
          'rules' => 'required|min_length[8]' ),
      array( 'field' => 'email', 'label' => 'Email',
          'rules' => 'valid_email' )
   );
}
foreach ($data as $key => $value)
{
  $_POST[$key] = $value;
}
$this->form_validation->set_rules($this->validate);

return $this->form_validation->run();
MVC
PRESENTERS
<div id="account">
   <h1>
      <?= $this->bank->get($account->bank_id)->name ?> - <?= $account->title ?>
   </h1>
   <p class="information">
      <strong>Name:</strong> <?php if ($account->name): ?><?= $account->name ?><?php else: ?>N/
A<?php endif; ?><br />
      <strong>Number:</strong> <?php if ($account->number): ?><?= $account->number ?><?php
else: ?>N/A<?php endif; ?><br />
      <strong>Sort Code:</strong> <?php if ($account->sort_code): ?><?= substr($account->sort_code,
0, 2) . "-" . substr($account->sort_code, 2, 2) . "-" . substr($account->sort_code, 4, 2) ?><?php else: ?>N/
A<?php endif; ?>
   </p>
   <p class="balances">
      <strong>Total Balance:</strong> <?php if ($account->total_balance): ?><?= "&pound;" .
number_format($account->total_balance) ?><?php else: ?>N/A<?php endif; ?>
      <strong>Available Balance:</strong> <?php if ($account->available_balance): ?><?= "&pound;" .
number_format($account->available_balance) ?><?php else: ?>N/A<?php endif; ?>
   </p>
   <p class="statements">
      <?php if ($this->statements->count_by('account_id', $account->id)): ?>
          <?= anchor('/statements/' . $account->id, 'View Statements') ?>
      <?php else: ?>
          Statements Not Currently Available
      <?php endif; ?>
   </p>
</div>
<div id="account">
  <h1>
    <?= $account->title() ?>
  </h1>
  <p class="information">
    <strong>Name:</strong> <?= $account->name() ?><br />
    <strong>Number:</strong> <?= $account->number() ?><br />
    <strong>Sort Code:</strong> <?= $account->sort_code() ?>
  </p>
  <p class="balances">
    <strong>Total Balance:</strong> <?= $account->total_balance() ?>
    <strong>Available Balance:</strong> <?= $account->available_balance() ?>
  </p>
  <p class="statements">
    <?= $account->statements_link() ?>
  </p>
</div>
ENCAPSULATE
 THE CLASS
class Account_presenter
{
   public function __construct($account)
   {
     $this->account = $account;
   }
}
public function title()
{
  return get_instance()->bank->get($this->account->bank_id)->name .
       "-" . $this->account->title;
}
GETTING BETTER
public function number()
{
  return $this->account->number ?: "N/A";
}
<div id="account">
   <h1>
      <?= $this->bank->get($account->bank_id)->name ?> - <?= $account->title ?>
   </h1>
   <p class="information">
      <strong>Name:</strong> <?php if ($account->name): ?><?= $account->name ?><?php else: ?>N/
A<?php endif; ?><br />
      <strong>Number:</strong> <?php if ($account->number): ?><?= $account->number ?><?php
else: ?>N/A<?php endif; ?><br />
      <strong>Sort Code:</strong> <?php if ($account->sort_code): ?><?= substr($account->sort_code,
0, 2) . "-" . substr($account->sort_code, 2, 2) . "-" . substr($account->sort_code, 4, 2) ?><?php else: ?>N/
A<?php endif; ?>
   </p>
   <p class="balances">
      <strong>Total Balance:</strong> <?php if ($account->total_balance): ?><?= "&pound;" .
number_format($account->total_balance) ?><?php else: ?>N/A<?php endif; ?>
      <strong>Available Balance:</strong> <?php if ($account->available_balance): ?><?= "&pound;" .
number_format($account->available_balance) ?><?php else: ?>N/A<?php endif; ?>
   </p>
   <p class="statements">
      <?php if ($this->statements->count_by('account_id', $account->id)): ?>
          <?= anchor('/statements/' . $account->id, 'View Statements') ?>
      <?php else: ?>
          Statements Not Currently Available
      <?php endif; ?>
   </p>
</div>
<div id="account">
  <h1>
    <?= $account->title() ?>
  </h1>
  <p class="information">
    <strong>Name:</strong> <?= $account->name() ?><br />
    <strong>Number:</strong> <?= $account->number() ?><br />
    <strong>Sort Code:</strong> <?= $account->sort_code() ?>
  </p>
  <p class="balances">
    <strong>Total Balance:</strong> <?= $account->total_balance() ?>
    <strong>Available Balance:</strong> <?= $account->available_balance() ?>
  </p>
  <p class="statements">
    <?= $account->statements_link() ?>
  </p>
</div>
MVC
AUTOLOADING
application/views/controller/action.php
application/views/controller/action.php
application/views/controller/action.php
application/views/posts/action.php
application/views/posts/index.php
Posts::index();

application/views/posts/index.php
Posts::create();

application/views/posts/create.php
Comments::submit_spam();

application/views/comments/submit_spam.php
MY_Controller
_remap()
$view = strtolower(get_class($this)) . '/' . $method;
$view = strtolower(get_class($this)) . '/' . $method;
$view = strtolower(get_class($this)) . '/' . $method;
$this->load->view($view, $this->data);
public function index()
{
  $this->data['users'] = $this->user->get_all();
  $this->data['title'] = 'All Users';
}
HELP!
$this->load->view('shared/_header', $data);
  $this->load->view('users/all', $data);
$this->load->view('shared/_footer', $data);
$this->data['yield'] = $this->load->view($view, $this->data, TRUE);
$this->load->view('layouts/application', $this->data);
<header>
  <h1>My Application</h1>
</header>

<div id="wrapper">
  <?= $yield ?>
</div>

<footer>
  <p>Copyright &copy; 2012</p>
</footer>
THE END
Jamie Rumbelow
    @jamierumbelow
  jamieonsoftware.com



The CodeIgniter Handbook
codeigniterhandbook.com

Contenu connexe

Tendances

Jqeury ajax plugins
Jqeury ajax pluginsJqeury ajax plugins
Jqeury ajax plugins
Inbal Geffen
 
Introduction à CoffeeScript pour ParisRB
Introduction à CoffeeScript pour ParisRB Introduction à CoffeeScript pour ParisRB
Introduction à CoffeeScript pour ParisRB
jhchabran
 
Magento Dependency Injection
Magento Dependency InjectionMagento Dependency Injection
Magento Dependency Injection
Anton Kril
 
JQuery In Rails
JQuery In RailsJQuery In Rails
JQuery In Rails
Louie Zhao
 

Tendances (20)

Clever Joomla! Templating Tips and Tricks
Clever Joomla! Templating Tips and TricksClever Joomla! Templating Tips and Tricks
Clever Joomla! Templating Tips and Tricks
 
Сергей Иващенко - Meet Magento Ukraine - Цены в Magento 2
Сергей Иващенко - Meet Magento Ukraine - Цены в Magento 2Сергей Иващенко - Meet Magento Ukraine - Цены в Magento 2
Сергей Иващенко - Meet Magento Ukraine - Цены в Magento 2
 
FamilySearch Reference Client
FamilySearch Reference ClientFamilySearch Reference Client
FamilySearch Reference Client
 
Keeping It Simple
Keeping It SimpleKeeping It Simple
Keeping It Simple
 
WordPress Theme Design and Development Workshop - Day 3
WordPress Theme Design and Development Workshop - Day 3WordPress Theme Design and Development Workshop - Day 3
WordPress Theme Design and Development Workshop - Day 3
 
Jqeury ajax plugins
Jqeury ajax pluginsJqeury ajax plugins
Jqeury ajax plugins
 
Sins Against Drupal 2
Sins Against Drupal 2Sins Against Drupal 2
Sins Against Drupal 2
 
Pagination in PHP
Pagination in PHPPagination in PHP
Pagination in PHP
 
Add edit delete in Codeigniter in PHP
Add edit delete in Codeigniter in PHPAdd edit delete in Codeigniter in PHP
Add edit delete in Codeigniter in PHP
 
Country State City Dropdown in PHP
Country State City Dropdown in PHPCountry State City Dropdown in PHP
Country State City Dropdown in PHP
 
Introduction à CoffeeScript pour ParisRB
Introduction à CoffeeScript pour ParisRB Introduction à CoffeeScript pour ParisRB
Introduction à CoffeeScript pour ParisRB
 
Drupal sins 2016 10-06
Drupal sins 2016 10-06Drupal sins 2016 10-06
Drupal sins 2016 10-06
 
Magento Dependency Injection
Magento Dependency InjectionMagento Dependency Injection
Magento Dependency Injection
 
Amp Up Your Admin
Amp Up Your AdminAmp Up Your Admin
Amp Up Your Admin
 
11. CodeIgniter vederea unei singure inregistrari
11. CodeIgniter vederea unei singure inregistrari11. CodeIgniter vederea unei singure inregistrari
11. CodeIgniter vederea unei singure inregistrari
 
Refactoring using Codeception
Refactoring using CodeceptionRefactoring using Codeception
Refactoring using Codeception
 
WordCamp Denver 2012 - Custom Meta Boxes
WordCamp Denver 2012 - Custom Meta BoxesWordCamp Denver 2012 - Custom Meta Boxes
WordCamp Denver 2012 - Custom Meta Boxes
 
AngulrJS Overview
AngulrJS OverviewAngulrJS Overview
AngulrJS Overview
 
Building secured wordpress themes and plugins
Building secured wordpress themes and pluginsBuilding secured wordpress themes and plugins
Building secured wordpress themes and plugins
 
JQuery In Rails
JQuery In RailsJQuery In Rails
JQuery In Rails
 

En vedette

Yiddish Right of REVOLUTION & Political CORRUPTION
Yiddish   Right of REVOLUTION & Political CORRUPTIONYiddish   Right of REVOLUTION & Political CORRUPTION
Yiddish Right of REVOLUTION & Political CORRUPTION
VogelDenise
 
Unique Styles of Fishing
Unique Styles of FishingUnique Styles of Fishing
Unique Styles of Fishing
Paul Katsus
 
021013 adecco email (welsh)
021013   adecco email (welsh)021013   adecco email (welsh)
021013 adecco email (welsh)
VogelDenise
 
061612 Slideshare Analytic Report Through 06/16/12
061612   Slideshare Analytic Report Through 06/16/12061612   Slideshare Analytic Report Through 06/16/12
061612 Slideshare Analytic Report Through 06/16/12
VogelDenise
 
Hatian Creole Right of REVOLUTION & Political CORRUPTION
Hatian Creole   Right of REVOLUTION & Political CORRUPTIONHatian Creole   Right of REVOLUTION & Political CORRUPTION
Hatian Creole Right of REVOLUTION & Political CORRUPTION
VogelDenise
 
062112 esperanto (supreme court)
062112   esperanto (supreme court)062112   esperanto (supreme court)
062112 esperanto (supreme court)
VogelDenise
 
Persian Right of REVOLUTION & Political CORRUPTION
Persian   Right of REVOLUTION & Political CORRUPTIONPersian   Right of REVOLUTION & Political CORRUPTION
Persian Right of REVOLUTION & Political CORRUPTION
VogelDenise
 

En vedette (20)

BAKER DONELSON - Attorney Layoffs The SINKING OF A TERRORIST REGIME (GUJARATI)
BAKER DONELSON - Attorney Layoffs The SINKING OF A TERRORIST REGIME (GUJARATI)BAKER DONELSON - Attorney Layoffs The SINKING OF A TERRORIST REGIME (GUJARATI)
BAKER DONELSON - Attorney Layoffs The SINKING OF A TERRORIST REGIME (GUJARATI)
 
Yiddish Right of REVOLUTION & Political CORRUPTION
Yiddish   Right of REVOLUTION & Political CORRUPTIONYiddish   Right of REVOLUTION & Political CORRUPTION
Yiddish Right of REVOLUTION & Political CORRUPTION
 
052215 - FAX TO DELNER THOMAS & BENNIE THOMPSON (Turkish)
052215 - FAX TO DELNER THOMAS & BENNIE THOMPSON (Turkish)052215 - FAX TO DELNER THOMAS & BENNIE THOMPSON (Turkish)
052215 - FAX TO DELNER THOMAS & BENNIE THOMPSON (Turkish)
 
052215 - FAX TO DELNER THOMAS & BENNIE THOMPSON (Tajik)
052215 - FAX TO DELNER THOMAS & BENNIE THOMPSON (Tajik)052215 - FAX TO DELNER THOMAS & BENNIE THOMPSON (Tajik)
052215 - FAX TO DELNER THOMAS & BENNIE THOMPSON (Tajik)
 
052215 - FAX TO DELNER THOMAS & BENNIE THOMPSON (Yiddish)
052215 - FAX TO DELNER THOMAS & BENNIE THOMPSON (Yiddish)052215 - FAX TO DELNER THOMAS & BENNIE THOMPSON (Yiddish)
052215 - FAX TO DELNER THOMAS & BENNIE THOMPSON (Yiddish)
 
020915 PUBLIC RELEASE EEOC CHARGE AGAINST 1ST HERITAGE CREDIT (Malay)
020915 PUBLIC RELEASE EEOC CHARGE AGAINST 1ST HERITAGE CREDIT (Malay)020915 PUBLIC RELEASE EEOC CHARGE AGAINST 1ST HERITAGE CREDIT (Malay)
020915 PUBLIC RELEASE EEOC CHARGE AGAINST 1ST HERITAGE CREDIT (Malay)
 
Unique Styles of Fishing
Unique Styles of FishingUnique Styles of Fishing
Unique Styles of Fishing
 
GEORGE ZIMMERMAN & EBOLA CRISIS (Urdu)
GEORGE ZIMMERMAN & EBOLA CRISIS (Urdu)GEORGE ZIMMERMAN & EBOLA CRISIS (Urdu)
GEORGE ZIMMERMAN & EBOLA CRISIS (Urdu)
 
03/30/15 FAX EMAIL TO BENNIE THOMPSON-Corrected
03/30/15 FAX EMAIL TO BENNIE THOMPSON-Corrected03/30/15 FAX EMAIL TO BENNIE THOMPSON-Corrected
03/30/15 FAX EMAIL TO BENNIE THOMPSON-Corrected
 
Programes de formació i inserciò (pfi)
Programes de formació i inserciò  (pfi)Programes de formació i inserciò  (pfi)
Programes de formació i inserciò (pfi)
 
A study to compare trajectory generation algorithms for automatic bucket fill...
A study to compare trajectory generation algorithms for automatic bucket fill...A study to compare trajectory generation algorithms for automatic bucket fill...
A study to compare trajectory generation algorithms for automatic bucket fill...
 
An Event-driven Operator Model for Dynamic Simulation of Construction Machinery
An Event-driven Operator Model for Dynamic Simulation of Construction MachineryAn Event-driven Operator Model for Dynamic Simulation of Construction Machinery
An Event-driven Operator Model for Dynamic Simulation of Construction Machinery
 
021013 adecco email (welsh)
021013   adecco email (welsh)021013   adecco email (welsh)
021013 adecco email (welsh)
 
BAKER DONELSON - Attorney Layoffs The SINKING OF A TERRORIST REGIME (CORSICAN)
BAKER DONELSON - Attorney Layoffs The SINKING OF A TERRORIST REGIME (CORSICAN)BAKER DONELSON - Attorney Layoffs The SINKING OF A TERRORIST REGIME (CORSICAN)
BAKER DONELSON - Attorney Layoffs The SINKING OF A TERRORIST REGIME (CORSICAN)
 
061612 Slideshare Analytic Report Through 06/16/12
061612   Slideshare Analytic Report Through 06/16/12061612   Slideshare Analytic Report Through 06/16/12
061612 Slideshare Analytic Report Through 06/16/12
 
CIPR PRide Awards - Home Counties South
CIPR PRide Awards - Home Counties SouthCIPR PRide Awards - Home Counties South
CIPR PRide Awards - Home Counties South
 
Hatian Creole Right of REVOLUTION & Political CORRUPTION
Hatian Creole   Right of REVOLUTION & Political CORRUPTIONHatian Creole   Right of REVOLUTION & Political CORRUPTION
Hatian Creole Right of REVOLUTION & Political CORRUPTION
 
062112 esperanto (supreme court)
062112   esperanto (supreme court)062112   esperanto (supreme court)
062112 esperanto (supreme court)
 
Persian Right of REVOLUTION & Political CORRUPTION
Persian   Right of REVOLUTION & Political CORRUPTIONPersian   Right of REVOLUTION & Political CORRUPTION
Persian Right of REVOLUTION & Political CORRUPTION
 
Essay Parts
Essay PartsEssay Parts
Essay Parts
 

Similaire à Who Needs Ruby When You've Got CodeIgniter

Dealing with Legacy PHP Applications
Dealing with Legacy PHP ApplicationsDealing with Legacy PHP Applications
Dealing with Legacy PHP Applications
Clinton Dreisbach
 
How to Create Login and Registration API in PHP.pdf
How to Create Login and Registration API in PHP.pdfHow to Create Login and Registration API in PHP.pdf
How to Create Login and Registration API in PHP.pdf
Appweb Coders
 

Similaire à Who Needs Ruby When You've Got CodeIgniter (20)

Dealing with Legacy PHP Applications
Dealing with Legacy PHP ApplicationsDealing with Legacy PHP Applications
Dealing with Legacy PHP Applications
 
Dealing With Legacy PHP Applications
Dealing With Legacy PHP ApplicationsDealing With Legacy PHP Applications
Dealing With Legacy PHP Applications
 
前后端mvc经验 - webrebuild 2011 session
前后端mvc经验 - webrebuild 2011 session前后端mvc经验 - webrebuild 2011 session
前后端mvc经验 - webrebuild 2011 session
 
Smarty
SmartySmarty
Smarty
 
Bag Of Tricks From Iusethis
Bag Of Tricks From IusethisBag Of Tricks From Iusethis
Bag Of Tricks From Iusethis
 
Developing for Business
Developing for BusinessDeveloping for Business
Developing for Business
 
Os Nixon
Os NixonOs Nixon
Os Nixon
 
Practical PHP by example Jan Leth-Kjaer
Practical PHP by example   Jan Leth-KjaerPractical PHP by example   Jan Leth-Kjaer
Practical PHP by example Jan Leth-Kjaer
 
TDC2016SP - Trilha Developing for Business
TDC2016SP - Trilha Developing for BusinessTDC2016SP - Trilha Developing for Business
TDC2016SP - Trilha Developing for Business
 
You're Doing it Wrong - WordCamp Orlando
You're Doing it Wrong - WordCamp OrlandoYou're Doing it Wrong - WordCamp Orlando
You're Doing it Wrong - WordCamp Orlando
 
Shangz R Brown Presentation
Shangz R Brown PresentationShangz R Brown Presentation
Shangz R Brown Presentation
 
Zero to SOLID
Zero to SOLIDZero to SOLID
Zero to SOLID
 
How to Create Login and Registration API in PHP.pdf
How to Create Login and Registration API in PHP.pdfHow to Create Login and Registration API in PHP.pdf
How to Create Login and Registration API in PHP.pdf
 
Unit testing zend framework apps
Unit testing zend framework appsUnit testing zend framework apps
Unit testing zend framework apps
 
Tidy Up Your Code
Tidy Up Your CodeTidy Up Your Code
Tidy Up Your Code
 
Login and Registration form using oop in php
Login and Registration form using oop in phpLogin and Registration form using oop in php
Login and Registration form using oop in php
 
Improving state of M2 front-end - Magento 2 Community Project
Improving state of M2 front-end - Magento 2 Community ProjectImproving state of M2 front-end - Magento 2 Community Project
Improving state of M2 front-end - Magento 2 Community Project
 
Building scalable products with WordPress - WordCamp London 2018
Building scalable products with WordPress - WordCamp London 2018Building scalable products with WordPress - WordCamp London 2018
Building scalable products with WordPress - WordCamp London 2018
 
PHPSpec - the only Design Tool you need - 4Developers
PHPSpec - the only Design Tool you need - 4DevelopersPHPSpec - the only Design Tool you need - 4Developers
PHPSpec - the only Design Tool you need - 4Developers
 
Framework
FrameworkFramework
Framework
 

Plus de ciconf (7)

CICONF 2012 - Don't Make Me Read Your Mind
CICONF 2012 - Don't Make Me Read Your MindCICONF 2012 - Don't Make Me Read Your Mind
CICONF 2012 - Don't Make Me Read Your Mind
 
Chef + AWS + CodeIgniter
Chef + AWS + CodeIgniterChef + AWS + CodeIgniter
Chef + AWS + CodeIgniter
 
Work Queues
Work QueuesWork Queues
Work Queues
 
Pretty Good Practices/Productivity
Pretty Good Practices/ProductivityPretty Good Practices/Productivity
Pretty Good Practices/Productivity
 
Hosting as a Framework
Hosting as a FrameworkHosting as a Framework
Hosting as a Framework
 
Zero to Hero in Start-ups
Zero to Hero in Start-upsZero to Hero in Start-ups
Zero to Hero in Start-ups
 
How to use ORM
How to use ORMHow to use ORM
How to use ORM
 

Dernier

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 

Dernier (20)

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
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
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines 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...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
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
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
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
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
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
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
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
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 

Who Needs Ruby When You've Got CodeIgniter

Notes de l'éditeur

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n
  53. \n
  54. \n
  55. \n
  56. \n
  57. \n
  58. \n
  59. \n
  60. \n
  61. \n
  62. \n
  63. \n
  64. \n
  65. \n
  66. \n
  67. \n
  68. \n
  69. \n
  70. \n
  71. \n
  72. \n
  73. \n
  74. \n
  75. \n
  76. \n
  77. \n
  78. \n
  79. \n
  80. \n
  81. \n
  82. \n