일단 Mysql 로 DB 를 다루기 전에 그냥 파일로 저장해봤다. 

로그인 완료창이랑 로그아웃때 템플릿엔진으로 좀 괜찮은 디자인을 사용하고 싶은데

디자인하는거는 너무 어려워서 나중에 디자이너한테 부탁해야겠다. 

디자인이 일단 너무 구림...


코딩하기 전 구상... 와 글씨 너무 끔찍하다 아무리 나 혼자 보는거지만...






코드...




var express = require('express')

var session = require('express-session')

var MySQLStore = require('express-mysql-session')(session)

var bodyParser = require('body-parser')

var app = express()

app.use(bodyParser.urlencoded({ extended: false }));

app.use(session({

  secret: 'djqiowjd2212@@!sd32dk9023kjd09j',

  resave: false,

  saveUninitialized: true,

  store:new MySQLStore({

    host: 'localhost',

    port: 3306,

    user: 'root',

    password: 'root',

    database: 'adopt'

  })

}));


app.set('view engine', 'ejs')

app.set('views', './views')


app.get('/adopt_login', function(req, res){

  res.render('view')

})


app.get('/adopt_logout', function(req, res){

  delete req.session.displayName;

  res.redirect('/welcome')

})


var users =[

  {

    username:'Jeong',

    password:'111',

    displayName:'Jeong'

  }

];


app.post('/adopt_login', function(req, res){

  var uname = req.body.username;

  var pwd = req.body.password;

  for(var i=0; i<users.length; i++){

    var user = users[i];

    if(uname === user.username && pwd === user.password){

      req.session.displayName = user.displayName;

      return res.redirect('/welcome');

    }

  }

    res.send('Who are u <a href="/Adopt_login">Login</a>');

});


app.get('/welcome', function(req, res){

  if(req.session.displayName){

    res.send(`

      <h1>Hello, ${req.session.displayName}</h1>

      <a href="/adopt_logout">logout</a>

      `)

  } else {

    res.send(`

      <h1>Welcome</h1>

      <a href="/adopt_login">Login</a><br>

      <a href="/adopt_register">Register</a>

    `);

  }

})


app.get('/adopt_register', function(req, res){

  var output=`

  <h1>Register</h1>

  <form action="/adopt_register" method="post">

    <p>

      <input type="text" name="username" placeholder="username"

    </p>

    <p>

      <input type="password" name="password" placeholder="password"

    </p>

    <p>

      <input type="text" name="displayName" placeholder="displatName"

    </p>

    <p>

      <input type = "submit">

    </p>

  </form>

  `

  res.send(output)

})


app.post('/adopt_register', function(req, res){

  users.push({

    username:req.body.username,

    password:req.body.password,

    displayName:req.body.displayName

  })

  req.session.displayName = req.body.displayName;

  req.session.save(function(){

    res.redirect('/welcome')

  })

})


app.listen(3003, function(){

  console.log('Connected 3003!');

});



느낀점...

실제 서비스를 이용할때는 파일로 DB 관리를 하면 전혀 실용적이지 않을 것같다.

포트연결이 끊어지는 순간 다 휘발...

sql 로 빨리 만들어봐야겠다.



리스트 자료형에 대한 정리.


[문제1] 리스트 인덱싱

다음과 같은 리스트 a가 있다.

>>> a = ['Life', 'is', 'too', 'short', 'you', 'need', 'python']

a 리스트를 이용하여 다음과 같은 문자열을 출력하시오.

you too


-> 풀이

a[4]+' '+a[2] 




[문제2] 리스트 조인

['Life', 'is', 'too', 'short'] 라는 리스트를 Life is too short라는 문자열로 만들어 출력해 보자.





[문제3] 리스트의 갯수

다음과 같은 리스트 a가 있다.

>>> a = [1, 2, 3]

이 리스트의 갯수(사이즈)를 구하시오.


[문제4] 리스트의 append와 extend

다음과 같은 리스트 a가 있다.

>>> a = [1, 2, 3]

리스트 a에 [4, 5]를 append 했을 때와 extend했을 때의 차이점은 무엇인가?


-> 풀이

a.append([4, 5]) 를 하면 a = [ 1, 2, 3, [4, 5] ]

a.extend([4, 5]) 를 하면 a = [ 1, 2, 3, 4, 5 ]

로나온다


즉, 리스트의 append 함수는 한 개의 값을 추가하는 함수이다. 여기서 사용된 한 개의 값은 [4, 5]라는 리스트이므로 리스트 a에 [4, 5]라는 리스트가 가장 마지막에 추가된 것이다.

반면 expend 함수는 리스트값에 입력받은 리스트를 더하는 함수이다. 따라서 [ 1, 2, 3, 4, 5 ] 가 나온다.




[문제5] 리스트 정렬

[1, 3, 5, 4, 2]라는 리스트를 [5, 4, 3, 2, 1]로 만들어보자. (힌트. 리스트의 내장함수인 sort와 reverse를 활용해 보자.)

먼저 a = [1,3,5,4,2] 로 리스트값을 준다.

그 다음 순서가 엉망 진창이니까 a.sort() 로 순서를 맞춰주면 a = [ 1,2,3,4,5 ]

가 된다.

그리고 순서를 뒤집어야 하기에 a.reverse() 를 해주면서 a = [ 5,4,3,2,1 ] 이 완성된다.




[문제6] 리스트 삭제

[1, 2, 3, 4, 5]라는 리스트를 [1, 3, 5]로 만들어 보자.


먼저 remove 함수를 사용한다.

a.remove(2) 로 2삭제

a.remove(4) 로 4삭제


그러면 a = [1,3,5] 가남는다.

Python 의 숫자 자료형같은 경우 자바나 C# 과 비슷해서 큰 어려움이 없었다.


1. ** 연산자의 경우 제곱을 나타낸다.


>>> a = 3 >>> b = 4 >>> a ** b 81


2. // 연산자의 경우 소숫점의 아랫자리를 버려준다.


>>> 7 // 4 1


반면 / 연산자의 경우 소숫점 아랫자리를 보존한다.


>>> 7 / 4 1.75


3. % 연산자는 나머지를 반환 해 준다.


>>> 7 % 3 1 >>> 3 % 7 3



+ Recent posts