SlideShare a Scribd company logo
LARAVEL 101
Commit University
IONUT TANASA
LARAVEL
A free, open source, MVC web-application framework
2011 (v1.0) — current (v5.0.26)
Package-based dependency management
 laravel.com
GETTING STARTED
PREREQUISITES
PHP 5.4.x
Mcrypt extension
JSON extension
Composer
and install it globally!




 getcomposer.org
YOUR FIRST PROJECT
STARTING A NEW PROJECT
composer global require "laravel/installer=~1.1"
laravel new blog
composer create-project laravel/laravel my-project --prefer-dist
git clone git@github.com:laravel/laravel.git my-project
cd my-project
composer install
curl -L -O https://github.com/laravel/laravel/archive/master.zip
unzip master.zip
mv laravel-master my-project
cd my-project
composer install
GIT IT UNDER CONTROL I see what you did.
PROJECT STRUCTURE
PROJECT FOLDERS
app < your stuff
bootstrap < startup stuff
public < static stuff: img, js, css, etc.
composer.json < other people's stuff you want
vendor < other people's stuff





APPLICATION FOLDERS
app
commands
config
controllers
database
lang
models
start
storage
tests
views
filters.php
routes.php













ARTISAN
ARTISAN
Command line tool to make working with Laravel easier.
php artisan
BUILT-IN SERVER
php artisan serve --port 8000
ROUTING
BASIC ROUTING
Route::get('/', function() {
return 'Hello World!';
});
 app/routes.php
ROUTE PARAMETERS
// pass parameters via URI
Route::get('/hello/{name}', function($name)
{
return 'Hello, ' . $name;
});
 app/routes.php
// escape output for safety
Route::get('/hello/{name}', function($name)
{
return 'Hello, ' . e($name);
});
 app/routes.php
// filter the URI data
Route::get('/hello/{name}', function($name)
{
return 'Hello, ' . e($name);
})->where('name','[A-za-z]+');
 app/routes.php
// make the param optional
Route::get('/hello/{name?}', function($name='stranger')
{
return 'Hello, ' . e($name);
})->where('name','[A-za-z]+');
 app/routes.php
LISTING ROUTES
php artisan routes
CONTROLLERS
CONTROLLER ROUTING
Route::get('hello/{name?}', 'HelloController@showWelcome');
 app/routes.php
class HelloController extends BaseController {
public function showWelcome($name='stranger')
{
return 'Hello, '. e($name) . '!';
}
}
 app/controllers/HelloController.php
RESTFUL CONTROLLERS
Route::controller('users', 'UsersController');
 app/routes.php
class UsersController extends BaseController {
public function getIndex() {
// GET http://domain.com/users
}
public function postProfile() {
// POST http://domain.com/users/profile
}
}
 app/controllers/UsersController.php
RESOURCE CONTROLLERS
php artisan controller:make PostsController
Route::resource('posts', 'PostsController');
 app/routes.php
class PostsController extends BaseController {
public function index() {}
public function create() {}
public function store() {}
public function show($id) {}
public function edit($id) {}
public function update($id) {}
public function destroy($id) {}
}
 app/controllers/PostsController.php
php artisan routes
VIEWS
PASSING DATA TO VIEWS
class HelloController extends BaseController {
public function showWelcome($name='stranger')
{
return View::make('hello', array('name'=>$name) );
}
}
 app/controller/HelloController.php
class HelloController extends BaseController {
public function showWelcome($name='stranger')
{
return View::make('hello', compact('name') );
}
}
 app/controller/HelloController.php
<html>
<body>
<p>Hello, <?php echo e($name); ?>!</p>
</body>
</html>
 app/views/hello.php
<html>
<body>
<p>Hello, {{{ $name }}}!</p>
</body>
</html>
 app/views/hello.blade.php
BLADE TEMPLATING
OUTPUTTING DATA
<html>
<body>
// echo and escape output
Hello {{ $name }}! Hello {{{ $html }}}!
</body>
</html>
 app/views/VIEWNAME.blade.php
IF STATEMENTS
@if( $name=='Bob' )
Good to see you, Bob!
@elseif( $name=='Mary' )
Howya doing, Mary!
@else
Hey, where did Bob go?
@endif
@unless( $signed_in )
You are not signed in.
@endunless
 app/views/VIEWNAME.blade.php
LOOPS
@for ($i = 0; $i < 10; $i++)
The current value is {{ $i }}
@endfor
@foreach ($users as $user)
<p>This is user {{ $user->id }}</p>
@endforeach
@while (true)
<p>Make it stop!</p>
@endwhile
 app/views/VIEWNAME.blade.php
LAYOUTS
<html>
<body>
@include('header') {{-- app/views/header.blade.php --}}
@section('sidebar')
This is the master sidebar.
@show
<div class="container">
@yield('content', 'Default content')
</div>
</body>
</html>
 app/views/layouts/master.blade.php
@extends('layouts.master')
@section('sidebar')
@parent
<p>This is appended to the master sidebar.</p>
@stop
@section('content')
 app/views/VIEWNAME.blade.php
DATABASE
SUPPORTED DATABASES
Out-of-the-box support for:
MySQL
Postgres
SQLite
SQL Server




CONFIGURATION
return array(
'default' => 'mysql',
'connections' => array(
'mysql' => array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'my-project',
'username' => 'db_user',
'password' => 's3creT_pa5sw0rD'
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
…
 app/config/database.php
return array(
'default' => 'mysql',
'connections' => array(
'mysql' => array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'my-project',
'username' => $_ENV['MYSQL_USER'],
'password' => $_ENV['MYSQL_PASS'],
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
…
 app/config/database.php
SECRET ENVIRONMENT
VARIABLES
return array(
'MYSQL_USER' => 'dbuser',
'MYSQL_PASS' => 's3creT_pa5sw0rD',
);
 .env.php
MIGRATIONS
PREPARING
php artisan migrate:install
php artisan migrate:make create_posts_table --create="posts"
MIGRATION FILE
use IlluminateDatabaseSchemaBlueprint;
use IlluminateDatabaseMigrationsMigration;
class CreatePostsTable extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
//
}
/**
* Reverse the migrations.
*
 app/database/migrations/###_create_posts_table.php
SCHEMA BUILDING
public function up()
{
Schema::create('posts', function(Blueprint $table) {
$table->increments('id');
$table->string('title', 50);
$table->text('text')->nullable();
$table->boolean('active')->default(true);
$table->timestamps(); // created_at and updated_at
});
}
public function down()
{
Schema::drop('posts');
}
RUN MIGRATIONS
php artisan migrate
OOOPS!
php artisan migrate:rollback
MODELS
ELOQUENT
class Post extends Eloquent {}
 app/models/Post.php
CREATE A NEW MODEL
$post = Post::create(
array(
'title' => 'My First Post',
'text' => 'Lorem ipsum dolor sit amet, consectetur adipisicing elit
'active' => true,
)
);
RETRIEVING
$post = Post::find(1);
$post = Post::findOrFail(1);
$posts = Post::where('id','>',3)->get();
$post = Post::where('title','LIKE','laravel')->first();
$posts = Post::all();
USING
$post = Post::find(1);
echo $post->title;
echo $post->created_at; // uses Carbon package for date handling
$posts = Post::all();
foreach( $posts as $post )
{
echo $post->title;
}
DELETING
$post = Post::find(1);
$post->delete();
Post::destroy(1);
Post::destroy(1,2,3);
$lastWeek = Carbon::now()->subWeek();
Post::where('created_at','<', $lastWeek)->delete();
ACCESSORS & MUTATORS
ACCESSORS
class Post extends Eloquent {
public function getTitleAttribute($value)
{
return ucwords($value);
}
}
$post = Post::create(array(
'title' => 'my first post'
));
echo $post->title; // "My First Post"
MUTATORS
class Post extends Eloquent {
public function setTextAttribute($value)
{
$value = trim($value);
$this->attributes['text'] = $value;
// not limited to modifying the one attribute
$this->attributes['excerpt'] = substr($value,0,97) . '...'
}
}
RELATIONSHIPS
ONE-TO-ONE
class Comment extends Eloquent {
// comments table has an `author_id` field
public function author()
{
return $this->hasOne('Author');
}
}
$author = Comment::find(1)->author;
INVERSE
class Author extends Eloquent {
// authors table needs a `post_id` column
public function comment()
{
return $this->belongsTo('Comment');
}
}
$title = Author::find(1)->comment->title;
ONE-TO-MANY
class Book extends Eloquent {
// books table has `author_id` column
public function author()
{
return $this->belongsTo('Author');
}
}
class Author extends Eloquent {
public function books()
{
return $this->hasMany('Book');
}
$my_books = Author::where('firstname','=','Ionut')->books;
MANY-TO-MANY
class Book extends Eloquent {
public function tags()
{
return $this->belongsToMany('Tag');
}
}
class Tag extends Eloquent {
public function books()
{
return $this->belongsToMany('Book');
}
}
PIVOT TABLE
Schema::create('book_tag', function(Blueprint $table) {
$table->increments('id');
$table->integer('book_id')->unsigned()->index();
$table->integer('tag_id')->unsigned()->index();
});
EAGER LOADING
Book::with('author')->get();
Book::with('author','tags')->get();
Tag::with('books.author')->get();
FORM HANDING
BUILDING FORMS
{{ Form::open() }}
{{ Form::label('title') }}
{{ Form::text('title', 'default', array('class'=>'form-control') }}
{{ Form::label('text', 'Enter the full text:') }}
{{ Form::textarea('text', 'default', array('placeholder'=>'Enter the text
{{ Form::email('email') }}
{{ Form::checkbox('is_active', 1, null, array('tabindex'=>4) }}
{{ Form::label('is_active', 'Yes') }}
{{ Form::submit('Send it!')}}
{{ Form::close() }}
HANDLING INPUT
$input = Input::get('field','default');
$input = Input::only('firstname','lastname');
$input = Input::except('credit_card');
$input = Input::get('choices.0.name');
$input = Input::all();
$input = Input::file('upload_field');
FORM MODEL BINDING
$book = Book::findOrFail($id);
return View::make('books.edit', compact('book'));
{{ Form::model($book, array('route'=>array('books.update', $book
{{ Form::text('title')}}
{{ Form::textarea('description')}}
…
{{ Form::close() }}
VALIDATION
VALIDATION RULES
$data = array(
'title' => 'My First Post',
'text' => 'Lorem hipster YOLO sic amet, semiotics banh mi flexitarian.
));
$rules = array(
'title' => 'required|min:5',
'description' => 'required|max:100'
);
VALIDATION
$validator = Validator::make( $data, $rules );
if ( $validator->fails() ) // ->passes()
{
$messages = $validator->messages();
…
}
if ( $messages->has('email') )
{
echo $messages->first('email', '<p>:message</p>');
}
$messages->get('field');
$messages->all();
VALIDATION RULES
$rules = array(
'firstname' => 'required',
'lastname' => 'alpha',
'email' => 'email',
'age' => 'integer|between:18,65',
'agree' => array('required','accepted'),
'website' => 'url',
'password' => 'confirmed', // implies matching 'password
'company_id' => 'exists:companies,id',
'gender' => 'in:male,female',
'photo' => 'mimes:jpeg,png|max:100', // kilobytes
'postalcode' => 'regex:^[A-Z][0-9][A-Z] ?[0-9][A-Z][0-9]$'
);
LOGGING
LOGGING
Built on top of  Monolog
Log::info('This is some useful information.');
Log::info('Information with context', array('context' => 'Other helpful i
Log::warning('Something could be going wrong.');
Log::error('OMGWTFBBQ!');
 app/storage/logs/laravel.log
QUERY LOGGING
$queries = DB::getQueryLog();
DB::connection()->disableQueryLog();
CACHING
CACHE CONFIGURATION
 app/config/cache.php
Drivers:
file
database
apc
memcached
redis
array








CACHE USAGE
Cache::put('key', 'value', $minutes);
$expiresAt = Carbon::now()->addHours(10);
Cache::put('key', 'value', $expiresAt);
if (Cache::has('key')) { … }
$value = Cache::get('key');
$value = Cache::get('key', 'default');
$value = Cache::get('key', function() { return 'default'; });
$value = Cache::forever('key', 'value');
Cache::forget('key');
ADVANCED CACHE USAGE
$books = Cache::remember('all-books', 10, function()
{
return Book::with('author')
->orderBy('title')
->get();
});
MAIL
MAIL CONFIGURATION
Built on top of
 app/config/mail.php
Drivers:
smtp
mail
sendmail
  SwiftMailer





MAIL USAGE
Mail::send('emails.view', $data, function($message)
{
$message->to('ionut@example.com', 'Ionut Tanasa')
->subject('Welcome!');
});
Mail::send( array('emails.view.html', 'emails.view.text'), $data
{
$message->to('ionut@example.com', 'Ionut Tanasa')
->subject('Welcome!');
});
Mail::send( array('emails.view.html', 'emails.view.text'), $data
{
$message->to('ionut@example.com', 'Ionut Tanasa')
->subject('Welcome!')
->cc('bar@example.com')
->bcc('snoop@nsa.gov');
});
Mail::send( array('emails.view.html', 'emails.view.text'), $data
{
$message->to('ionut@example.com', 'Ionut Tanasa')
->subject('Welcome!')
->cc('bar@example.com')
->bcc('snoop@nsa.gov');
$message->attach($pathToFile);
});
Mail::send( array('emails.view.html', 'emails.view.text'), $data
{
$message->to('ionut@example.com', 'Ionut Tanasa')
->subject('Welcome!')
->cc('bar@example.com')
->bcc('snoop@nsa.gov');
$message->attach($pathToFile, array('as' => $display, 'mime' =>
});
INLINE DATA
<body>
Here is an image <img src="{{ $message->embed($pathToFile) }}"
</body>
<body>
Here is raw image data <img src="{{ $message->embedData($data, $name) }
</body>
QUEUEING MAIL
Mail::queue('emails.view', $data, function($message)
{
$message->to('ionut@example.com', 'Ionut Tanasa')
->subject('Welcome!');
});
Mail::later($seconds, 'emails.view', $data, function($message)
{
$message->to('ionut@example.com', 'Ionut Tanasa')
->subject('Welcome!');
});
AUTHENTICATION
EVENTS
LOCALIZATION
QUEUES
PACKAGES
FURTHER READING
 laravel.com/docs
 laravel.com/api
 github.com/laravel
 laravel.io
 laracasts.com
 github.com/cviebrock
That’s All Folks!

More Related Content

What's hot (20)

PPTX
Node.js Express
Eyal Vardi
 
PPTX
HTTP Request Header and HTTP Status Code
Abhishek L.R
 
PDF
Nest.js Introduction
Takuya Tejima
 
PDF
Php tutorial(w3schools)
Arjun Shanka
 
PDF
Front End Development
Вѓд Сн
 
PPTX
Soap web service
NITT, KAMK
 
PPTX
Reactjs
Neha Sharma
 
PPTX
REST API
Tofazzal Ahmed
 
PPTX
Spring boot
Gyanendra Yadav
 
PDF
Practicals it
Gulbir Chaudhary
 
PPT
Openstack swift - VietOpenStack 6thmeeetup
Vietnam Open Infrastructure User Group
 
PDF
Use Node.js to create a REST API
Fabien Vauchelles
 
PPT
IIS
Giritharan V
 
PPTX
Laravel overview
Obinna Akunne
 
PPTX
Rest API
Rohana K Amarakoon
 
PDF
TypeScript: coding JavaScript without the pain
Sander Mak (@Sander_Mak)
 
PPTX
Web Servers(IIS, NGINX, APACHE)
Reza Jebeli
 
PPTX
Introduction to Node.js
Vikash Singh
 
PPTX
Nodejs functions & modules
monikadeshmane
 
PDF
Javascript basics
shreesenthil
 
Node.js Express
Eyal Vardi
 
HTTP Request Header and HTTP Status Code
Abhishek L.R
 
Nest.js Introduction
Takuya Tejima
 
Php tutorial(w3schools)
Arjun Shanka
 
Front End Development
Вѓд Сн
 
Soap web service
NITT, KAMK
 
Reactjs
Neha Sharma
 
REST API
Tofazzal Ahmed
 
Spring boot
Gyanendra Yadav
 
Practicals it
Gulbir Chaudhary
 
Openstack swift - VietOpenStack 6thmeeetup
Vietnam Open Infrastructure User Group
 
Use Node.js to create a REST API
Fabien Vauchelles
 
Laravel overview
Obinna Akunne
 
TypeScript: coding JavaScript without the pain
Sander Mak (@Sander_Mak)
 
Web Servers(IIS, NGINX, APACHE)
Reza Jebeli
 
Introduction to Node.js
Vikash Singh
 
Nodejs functions & modules
monikadeshmane
 
Javascript basics
shreesenthil
 

Viewers also liked (8)

PPTX
Workshop Laravel 5.2
Wahyu Rismawan
 
PDF
How to learn Laravel5 application from Authentication
Masashi Shinbara
 
PDF
MidwestPHP 2016 - Adventures in Laravel 5
Joe Ferguson
 
PPTX
Laravel 5
Brian Feaver
 
PDF
(Have a) rest with Laravel
Commit University
 
PDF
Laravel 5.4
Nisha Patel
 
PDF
Software Design Patterns in Laravel by Phill Sparks
Phill Sparks
 
PDF
reveal.js 3.0.0
Hakim El Hattab
 
Workshop Laravel 5.2
Wahyu Rismawan
 
How to learn Laravel5 application from Authentication
Masashi Shinbara
 
MidwestPHP 2016 - Adventures in Laravel 5
Joe Ferguson
 
Laravel 5
Brian Feaver
 
(Have a) rest with Laravel
Commit University
 
Laravel 5.4
Nisha Patel
 
Software Design Patterns in Laravel by Phill Sparks
Phill Sparks
 
reveal.js 3.0.0
Hakim El Hattab
 
Ad

Similar to Laravel 101 (20)

KEY
Remedie: Building a desktop app with HTTP::Engine, SQLite and jQuery
Tatsuhiko Miyagawa
 
PDF
Doctrine and NoSQL
Benjamin Eberlei
 
PDF
Doctrine For Beginners
Jonathan Wage
 
PDF
関西PHP勉強会 php5.4つまみぐい
Hisateru Tanaka
 
PDF
Rails 3: Dashing to the Finish
Yehuda Katz
 
PDF
What's New In Laravel 5
Darren Craig
 
PDF
Doctrine for NoSQL
Benjamin Eberlei
 
PPTX
10 Things Every Plugin Developer Should Know (WordCamp Atlanta 2013)
arcware
 
PDF
Codeigniter : Two Step View - Concept Implementation
Abdul Malik Ikhsan
 
PDF
How to develop modern web application framework
techmemo
 
PDF
Rails 3 overview
Yehuda Katz
 
PDF
Frameworks da nova Era PHP FuelPHP
Dan Jesus
 
PDF
Flask - Backend com Python - Semcomp 18
Lar21
 
PDF
Durian: a PHP 5.5 microframework with generator-style middleware
Kuan Yen Heng
 
PDF
Avinash Kundaliya: Javascript and WordPress
wpnepal
 
ODP
Aura Project for PHP
Hari K T
 
PPT
Play!ng with scala
Siarzh Miadzvedzeu
 
KEY
Ruby/Rails
rstankov
 
PDF
Play vs Rails
Daniel Cukier
 
PDF
Teaming up WordPress API with Backbone.js in Titanium
Jeroen van Dijk
 
Remedie: Building a desktop app with HTTP::Engine, SQLite and jQuery
Tatsuhiko Miyagawa
 
Doctrine and NoSQL
Benjamin Eberlei
 
Doctrine For Beginners
Jonathan Wage
 
関西PHP勉強会 php5.4つまみぐい
Hisateru Tanaka
 
Rails 3: Dashing to the Finish
Yehuda Katz
 
What's New In Laravel 5
Darren Craig
 
Doctrine for NoSQL
Benjamin Eberlei
 
10 Things Every Plugin Developer Should Know (WordCamp Atlanta 2013)
arcware
 
Codeigniter : Two Step View - Concept Implementation
Abdul Malik Ikhsan
 
How to develop modern web application framework
techmemo
 
Rails 3 overview
Yehuda Katz
 
Frameworks da nova Era PHP FuelPHP
Dan Jesus
 
Flask - Backend com Python - Semcomp 18
Lar21
 
Durian: a PHP 5.5 microframework with generator-style middleware
Kuan Yen Heng
 
Avinash Kundaliya: Javascript and WordPress
wpnepal
 
Aura Project for PHP
Hari K T
 
Play!ng with scala
Siarzh Miadzvedzeu
 
Ruby/Rails
rstankov
 
Play vs Rails
Daniel Cukier
 
Teaming up WordPress API with Backbone.js in Titanium
Jeroen van Dijk
 
Ad

More from Commit University (20)

PDF
Accessibilità ed equità digitale: un impegno, non una scelta
Commit University
 
PDF
GitHub Copilot:vediamo chi comanda - Commit University.pdf
Commit University
 
PDF
Contract Driven Development - Branch 2024.pdf
Commit University
 
PPTX
Cybersecurity & AI: Illusioni e Speranze
Commit University
 
PDF
Migliorare la Developer Experience in un mondo Cloud Native
Commit University
 
PPTX
Scopri come sfruttare la potenza della Hybrid RAG
Commit University
 
PDF
Introduzione a AWS Forecast e SageMaker DeepAR: Prevedere la Domanda con il M...
Commit University
 
PDF
Oltre l'hype: vulnerabilità e limiti dell'intelligenza artificiale.pdf
Commit University
 
PPTX
Alla scoperta dei Vector Database e dei RAG
Commit University
 
PDF
Nell’iperspazio con Rocket: il Framework Web di Rust!
Commit University
 
PDF
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Commit University
 
PDF
Breaking REST Chains_ A Fastify & Mercurius Pathway to GraphQL Glory.pdf
Commit University
 
PDF
Accelerating API Development: A Pit Stop with Gin-Gonic in Golang-Slide.pdf
Commit University
 
PDF
Slide-10years.pdf
Commit University
 
PDF
Collaborazione, Decisionalità e Gestione della Complessità nel Tempo: cosa ...
Commit University
 
PDF
Vue.js slots.pdf
Commit University
 
PPTX
Commit - Qwik il framework che ti stupirà.pptx
Commit University
 
PPTX
Sviluppare da zero una Angular Web App per la PA
Commit University
 
PDF
Backstage l'Internal Developer Portal Open Source per una migliore Developer ...
Commit University
 
PDF
Prisma the ORM that node was waiting for
Commit University
 
Accessibilità ed equità digitale: un impegno, non una scelta
Commit University
 
GitHub Copilot:vediamo chi comanda - Commit University.pdf
Commit University
 
Contract Driven Development - Branch 2024.pdf
Commit University
 
Cybersecurity & AI: Illusioni e Speranze
Commit University
 
Migliorare la Developer Experience in un mondo Cloud Native
Commit University
 
Scopri come sfruttare la potenza della Hybrid RAG
Commit University
 
Introduzione a AWS Forecast e SageMaker DeepAR: Prevedere la Domanda con il M...
Commit University
 
Oltre l'hype: vulnerabilità e limiti dell'intelligenza artificiale.pdf
Commit University
 
Alla scoperta dei Vector Database e dei RAG
Commit University
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Commit University
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Commit University
 
Breaking REST Chains_ A Fastify & Mercurius Pathway to GraphQL Glory.pdf
Commit University
 
Accelerating API Development: A Pit Stop with Gin-Gonic in Golang-Slide.pdf
Commit University
 
Slide-10years.pdf
Commit University
 
Collaborazione, Decisionalità e Gestione della Complessità nel Tempo: cosa ...
Commit University
 
Vue.js slots.pdf
Commit University
 
Commit - Qwik il framework che ti stupirà.pptx
Commit University
 
Sviluppare da zero una Angular Web App per la PA
Commit University
 
Backstage l'Internal Developer Portal Open Source per una migliore Developer ...
Commit University
 
Prisma the ORM that node was waiting for
Commit University
 

Recently uploaded (20)

PDF
Presentation - Vibe Coding The Future of Tech
yanuarsinggih1
 
PDF
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
PDF
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PDF
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
PDF
Log-Based Anomaly Detection: Enhancing System Reliability with Machine Learning
Mohammed BEKKOUCHE
 
PPTX
Top iOS App Development Company in the USA for Innovative Apps
SynapseIndia
 
PDF
Windsurf Meetup Ottawa 2025-07-12 - Planning Mode at Reliza.pdf
Pavel Shukhman
 
PDF
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
PDF
Python basic programing language for automation
DanialHabibi2
 
PDF
NewMind AI - Journal 100 Insights After The 100th Issue
NewMind AI
 
PDF
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
PDF
CIFDAQ Weekly Market Wrap for 11th July 2025
CIFDAQ
 
PDF
HubSpot Main Hub: A Unified Growth Platform
Jaswinder Singh
 
PDF
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
PDF
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
PDF
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
PDF
LLMs.txt: Easily Control How AI Crawls Your Site
Keploy
 
PDF
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
PDF
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
PDF
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
Presentation - Vibe Coding The Future of Tech
yanuarsinggih1
 
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
Log-Based Anomaly Detection: Enhancing System Reliability with Machine Learning
Mohammed BEKKOUCHE
 
Top iOS App Development Company in the USA for Innovative Apps
SynapseIndia
 
Windsurf Meetup Ottawa 2025-07-12 - Planning Mode at Reliza.pdf
Pavel Shukhman
 
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
Python basic programing language for automation
DanialHabibi2
 
NewMind AI - Journal 100 Insights After The 100th Issue
NewMind AI
 
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
CIFDAQ Weekly Market Wrap for 11th July 2025
CIFDAQ
 
HubSpot Main Hub: A Unified Growth Platform
Jaswinder Singh
 
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
LLMs.txt: Easily Control How AI Crawls Your Site
Keploy
 
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 

Laravel 101