Javascript, crible d’Eratosthène
const N = 20
const SQRTN = Math.sqrt(N)
let tab = []
for (let i = 2; i < SQRTN; i++) {
if (tab[i] === undefined) {
let j = 2*i
while (j < N) {
tab[j] = true
j += i
}
}
}
for (let i = 2; i < N; i++) {
if (tab[i] === undefined) {
console.log(i, "est premier")
}
}
Application Express - YesNo
const express = require('express')
const DATA = [
{ answer: "no", image: "https://yesno.wtf/assets/no/19-2062f4c91189b1f88a9e809c10a5b0f0.gif"},
{ answer: "no", image: "https://yesno.wtf/assets/no/16-b66d2db7543f5259c86abc166d6901cf.gif"},
{ answer: "yes", image: "https://yesno.wtf/assets/yes/15-3d723ea13af91839a671d4791fc53dcc.gif"},
{ answer: "yes", image: "https://yesno.wtf/assets/yes/14-b57c6dc03aa15a4b18f53eb50d6197ee.gif"},
]
function getRandomYesNo() {
let index = Math.floor(Math.random() * DATA.length)
return DATA[index]
}
const app = express()
app.get('/api', function (request, response) {
let randomYesNo = getRandomYesNo()
response.send(randomYesNo)
})
app.get('/', function (request, response) {
let randomYesNo = getRandomYesNo()
response.send(`<html><body><img src="${randomYesNo.image}" width="100%"/></body></html>`)
})
app.listen(3000, function () {
console.log("Server listening on port 3000")
})
Point d’accès REST simplifié
const express = require('express')
const DATA = [
{ answer: "no", image: "https://yesno.wtf/assets/no/19-2062f4c91189b1f88a9e809c10a5b0f0.gif"},
{ answer: "no", image: "https://yesno.wtf/assets/no/16-b66d2db7543f5259c86abc166d6901cf.gif"},
{ answer: "yes", image: "https://yesno.wtf/assets/yes/15-3d723ea13af91839a671d4791fc53dcc.gif"},
{ answer: "yes", image: "https://yesno.wtf/assets/yes/14-b57c6dc03aa15a4b18f53eb50d6197ee.gif"},
]
function getRandomYesNo() {
let index = Math.floor(Math.random() * DATA.length)
return DATA[index]
}
let logger = (req, res, next) => {
console.log('method', req.method, "path", req.url)
next()
}
let lastUserId = 1
let users = {}
const app = express()
app.use(logger)
app.use(express.json())
app.post('/users', function (request, response) {
let user = { id: lastUserId++, ...request.body }
users[user.id] = user
response.send(user)
})
app.get('/users/:id', function (request, response) {
let id = request.params.id
let user = users[id]
if (user === undefined) {
response.status(404).send('Not Found')
} else {
response.send(user)
}
})
app.get('/users', function (request, response) {
let userList = Object.values(users).sort(function(u1, u2) {
return u1.id - u2.id
})
response.send(userList)
})
app.delete('/users/:id', function (request, response) {
let id = request.params.id
let user = users[id]
if (user === undefined) {
response.status(404).send('Not Found')
} else {
delete users[id]
response.send(user)
}
})
app.patch('/users/:id', function (request, response) {
let id = request.params.id
console.log('body', request.body)
let user = users[id]
if (user === undefined) {
response.status(404).send('Not Found')
} else {
for (let key in request.body) {
user[key] = request.body[key]
}
}
})
app.listen(3000, function () {
console.log("Server listening on port 3000")
})
Configuration Nginx d’un virtualhost pour l’application YesNo
server {
listen 80;
server_name yesno.du-fullstack.fr;
location /static {
root /var/www/yesno/;
}
location / {
proxy_pass http://localhost:3000/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}