Node Js in 30days
Node Js in 30days
Learn Node JS
in 30 Days
Day-1
Node JS
INTRODUCTION
nerd_jfpb
nerdjfpb nerdjfpb
Node.js is an open-source,
cross-platform, JavaScript
runtime environment
that executes JavaScript
code outside of a browser.
(From Wikipedia)
HARD TO UNDERSTAND RIGHT?
nerd_jfpb
nerdjfpb nerdjfpb
-------
If I just give a
short INTRO
about it then
-------
nerd_jfpb
nerdjfpb nerdjfpb
A PLATFORM
which allows us
to run JAVASCRIPT
on a computer/server
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
Why
NODE is
so popular?
JAVASCRIPT
everywhere
nerd_jfpb
nerdjfpb nerdjfpb
SUPER FAST
LIGHTWEIGHT
nerd_jfpb
nerdjfpb nerdjfpb
Huge
ECOSYSTEM
Great
for real time
application
nerd_jfpb
nerdjfpb nerdjfpb
HIGH
performance
Easy to
LEARN
nerd_jfpb
nerdjfpb nerdjfpb
NOW TELL ME
DO YOU LIKE
NODE JS ?
nerd_jfpb
nerdjfpb nerdjfpb
Learn Node JS
in 30 Days
Day-2
Install NODE JS
nerd_jfpb
nerdjfpb nerdjfpb
Go to node website
https://nodejs.org/en/
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
create a folder
and name it
whatever you want
nerd_jfpb
nerdjfpb nerdjfpb
create a file
and name it
whatever you want
with .js extention
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
So did you
installed it properly?
nerd_jfpb
nerdjfpb nerdjfpb
Learn Node JS
in 30 Days
Day-3
JAVASCRIPT
Engine
nerd_jfpb
nerdjfpb nerdjfpb
WHY WE NEED
JAVASCRIPT ENGINE ?
nerd_jfpb
nerdjfpb nerdjfpb
SO WHAT IS THE
PURPOSE OF
JAVASCRIPT ENGINE ?
nerd_jfpb
nerdjfpb nerdjfpb
SOME JAVASCRIPT
ENGINES
V8 by Google for Chrome(most used)
SpiderMonkey by Mozila for Firexof
JavascriptCore by Apple for Safari
Chakra by Microsoft for Microsoft
Edge
Hemes engine by Facebook for
Android apps
nerd_jfpb
nerdjfpb nerdjfpb
WHAT IS V8 ?
V8 is an open-source JavaScript
engine developed by The Chromium
Project for Google Chrome and
Chromium web browsers.
The project’s creator is Lars Bak.
The first version of the V8 engine was
released at the same time as the
first version of Chrome: September 2,
2008. (wikipedia)
nerd_jfpb
nerdjfpb nerdjfpb
SO HOW V8 WORKS?
We write codes
It goes to v8
Finally v8 changes it to c++
c++ changed into assembly language
Finally assembly to machine codes
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
TIRED OF SEARCHING
ANWSER ?
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
Do you learnt
something new today ?
Share and comment to
help others too!
nerd_jfpb
nerdjfpb nerdjfpb
Day-4
Learn Node JS
in 30 Days
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
EXAMPLE
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
Day-5
Learn Node JS
in 30 Days
Function Function
Declarations Expressions
nerd_jfpb
nerdjfpb nerdjfpb
Function Declarations
are normal function
we write!
nerd_jfpb
nerdjfpb nerdjfpb
Example
(FUNCTION DECLARATIONS)
nerd_jfpb
nerdjfpb nerdjfpb
FUNCTION
EXPRESSIONS
nerd_jfpb
nerdjfpb nerdjfpb
Example
(FUNCTION EXPRESSIONS)
nerd_jfpb
nerdjfpb nerdjfpb
Why this is
IMPORTANT ?
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
Function Declarations
vs.
Function Expressions
nerd_jfpb
nerdjfpb nerdjfpb
SO ARE YOU
ENJOYING
THIS SERIES ?
nerd_jfpb
nerdjfpb nerdjfpb
Learn Node JS
in 30 Days
Day-6
KEYWORDS
'REQUIRE'
&
'MODULE'
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
Final Result
nerd_jfpb
nerdjfpb nerdjfpb
DO YOU UNDERSTAND
the Require
and module now ?
nerd_jfpb
nerdjfpb nerdjfpb
Learn Node JS
in 30 Days
Day-7
MORE
'MODULE'
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
Adding
module.exports.VARIABLE_NAME
we can send it to other file
nerd_jfpb
nerdjfpb nerdjfpb
By using
Song.VARIABLE_NAME
what we've send from `song.js` file
we can call the functions
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
-Example-
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
Day-8
Learn Node JS
in 30 Days
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
`Now we divide
var with
two different types
one CONST &
other LET
nerd_jfpb
nerdjfpb nerdjfpb
CONST is declared
for those value
which will not
changed anytime!
Or will not be updated
at any point
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
So in es6 we use
LET & CONST
not Var!
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
Day-9
Learn Node JS
in 30 Days
MASTERING
EVENTEMITTER
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
FINAL RESULT
nerd_jfpb
nerdjfpb nerdjfpb
So do you understand
a bit of EventEmitter
right now ?
nerd_jfpb
nerdjfpb nerdjfpb
Learn Node JS
in 30 Days
Day-10
File
READ & WRITE
using node api fs
nerd_jfpb
nerdjfpb nerdjfpb
Go to
https://nodejs.org/dist/latest-v12.x/docs/api/fs.html
then you can see oficial document
of fs
nerd_jfpb
nerdjfpb nerdjfpb
Now,
first we need to require the fs
and store it on a const by writing
`const fs = require('fs')`
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
Using fs.writeFileSync
(path, dataForWrite)
we can write in the file,
what we need to write.
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
Learn Node JS
in 30 Days
Day-11
Creating
and
Deleting Folders
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
So
we created and deleted folder
easily using `fs.mkdirSync`
and `fs.rmdirSy
nerd_jfpb
nerdjfpb nerdjfpb
DO YOU HAVE
ANY QUESTIONS ?
nerd_jfpb
nerdjfpb nerdjfpb
Learn Node JS
in 30 Days
Day-12
Creating
OWN SERVER
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
Learn Node JS
in 30 Days
Day-13
BUFFER
&
STREAM
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
DATA
BUFFER
DATA
IS
GOING
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
(OTHER TWO)
c)Duplex −
Stream which can be used for both
read and write operation.
d)Transform −
A type of duplex stream where
the output is computed based
on input.
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
Learn Node JS
in 30 Days
Day-14
SERVING
HTML PAGES
nerd_jfpb
nerdjfpb nerdjfpb
Do you know
we can send html pages
to the client?
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
Learn Node JS
in 30 Days
Day-15
Sending JSON
to Client
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
Learn Node JS
in 30 Days
Day-16
Routing (Basic)
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
Learn Node JS
in 30 Days
Day-17
Npm -
Node Package
Manager
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
UNDERSTAND ANYTHING ?
nerd_jfpb
nerdjfpb nerdjfpb
A package manager or
package-management system is a
collection of software tools that
automates the process of installing,
upgrading, configuring, and removing
computer programs for a computer's
operating system in a consistent
manner. (wikipedia)
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
Learn Node JS
in 30 Days
Day-18
Why
Express JS ?
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
Actually many!
I didn't find a number to tell you.
But I can listed some -
- Express.js
- Nest.js
- Sails.js
- Koa.js
and many more
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
Express is
- Fast & Simple
- Speedy
- Scalable
- Easy to Learn
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
Learn Node JS
in 30 Days
Day-19
NODEMON
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
Learn Node JS
in 30 Days
Day-20
EXPRESS JS
INTRODUCTION
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
SO DO YOU LIKE
THE INTRODUCTION
OF EXPRESS JS ?
nerd_jfpb
nerdjfpb nerdjfpb
Learn Node JS
in 30 Days
Day-21
HTTP
METHODS
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
Learn Node JS
in 30 Days
Day-22
ROUTE
PARAMETERS
nerd_jfpb
nerdjfpb nerdjfpb
Up until now
we never passed any id
with our route.
What if we need
to go to a specific profile ?
nerd_jfpb
nerdjfpb nerdjfpb
Like - `profile/10`
How we can load different
using those id ?
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
To catch the 10
we need to make a specific route
like '/profile/:id'
this id will catch
what request send after profile.
So how to catch it ?
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
Learn Node JS
in 30 Days
Day-23
TEMPLATING
ENGINE
nerd_jfpb
nerdjfpb nerdjfpb
To creating
QUICK NODE APPLICATION
we can use some
FRONTEND TEMPLATE ENGINE.
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
WANT TO KNOW
MORE ABOUT
TEMPLATING ENGINE ?
nerd_jfpb
nerdjfpb nerdjfpb
Learn Node JS
in 30 Days
Day-24
WORKING WITH
EJS - PART 1
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
This
`app.set('view engine', 'ejs')`
will look into views folder
on the same path.
So we need to create
views folder
for writing those
frontend templates.
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
Learn Node JS
in 30 Days
Day-25
WORKING WITH
EJS - PART 2
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
SO DO YOU THINK
YOU CAN MAKE
SOME SIMPLE PROJECT
RIGHT NOW ?
nerd_jfpb
nerdjfpb nerdjfpb
Learn Node JS
in 30 Days
Day-26
WORKING WITH
PARTIAL EJS
- PART 3
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
Answer is YES.
We can but we need to make
the navbar as partials.
Partials is a concept in ejs.
nerd_jfpb
nerdjfpb nerdjfpb
So create a folder
inside our view folder
call it `partials`.
We'll store the partial files here.
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
Do you understand
how we can easily do
many things
using partial templating ?
nerd_jfpb
nerdjfpb nerdjfpb
Learn Node JS
in 30 Days
Day-27
WORKING WITH
STATIC FILES
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
In
`app.use('/assets', express.static('assets'))`
In 1st part is route and 2nd part is
folder that we are going to put
the files.
nerd_jfpb
nerdjfpb nerdjfpb
SO,
CAN YOU WORK WITH
THE STATIC FILES NOW?
nerd_jfpb
nerdjfpb nerdjfpb
Learn Node JS
in 30 Days
Day-28
MIDDLEWARES
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
In short,
normally we use middleware
to checking something.
Like -
if anyone is a authentic user
or is the user is admin.
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
Learn Node JS
in 30 Days
Day-29
SQL DATABASE
WITH
NODE JS
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
Learn Node JS
in 30 Days
Day-30
NO-SQL DATABASE
WITH NODE JS
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
If we use mongodb
as a no-sql database,
which is really really popular.
We can use a package
call mongoose
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
Like this
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb
nerdjfpb nerdjfpb
nerd_jfpb