728x90
SMALL
Kotlin
<ex01람다식>
package ex20221123
fun main() {
// 람다 대수
// 수학 : 이름이 없는 함수
// 두 개 이상의 수를 1개의 결과값을 단순화
// 프로그래밍: 다른 함수의 인자로 넘기는 함수(매개변수)
// 함수의 결과값으로 반환하는 함수(리턴값)
// 변수에 저장하는 함수를 의미 ***
// 매개변수 -> 리턴값
{x:Int, y:Int -> x+y}
// 더하기 기능을 필요할 때마다 사용하려면 어딘가에 저장 : 변수
// 1. 람다식의 매개변수에 자료형이 지정되어 있다면 변수에서 자료형은 생략 할 수 있다
// 2. 변수의 매개변수 자료형이 지정되어 있다면 람다식의 매개변수 자료형은 생략 가능하다
val sum:(Int, Int) -> Int = {x, y -> x+y}
println(sum(3,4))
// 단, 람다식과 변수의 자료형을 둘 다 생략해버리면 추론이 불가능
//hello라는 변수에 아래 함수를 람다식으로 담아주세요
fun greet(): Unit{
println("Hello Kotlin")
}
// val/var 변수명: (매개변수의 자료형)->리턴타입 = 람다식
val hello: () -> Unit = { println("Hello Kotlin") }
// 다음은 정사각형의 넓이를 구하는 함수 입니다 람다식으로 바꿔 주세요
// (square2 변수 선언)
fun square1(x:Int):Int{
return x*x
}
val square2 : (Int)->Int = {x -> x*x}
}
<ex고차함수>
package ex20221123
fun main() {
var result: Int
result = sum3({x,y->x+y}, 10, 20)
println(result)
}
fun sum3(sum:(Int,Int)->Int, a:Int, b:Int): Int{
return sum(a,b)
}
Android 스튜디오
Moblie Application 필요성
* 모바일 운영체제
- 모바일에서 실행되는 운영체제
-모바일 하드웨어 자원을 직접 제어하고 관리하는 시스템 소프트웨어
- 데스크톱 운영체제에 비해 부피가 작고 상대적으로 쉽게 개발 가능함
* 피처폰의 특징
- 별도의 운영체제가 없고 통화가능, 문자 기능 제공
- 제조사에서 미리 설치해 놓은 프로그램만 사용가능
- 잔고장이 없으나 소프트웨어 추가설치가 거의 불가
node.js
http통신하기ㄴ
템플릿엔진
템플릿 엔진의 종류
퍼그/ EJS/ 넌적스
<Ex06router>
<routes>
index.js
const express = require('express');
const router = express.Router(); //라우터 사용
router.get('/', (req,res)=>{
res.send('index router!');
});
module.exports = router;
user.js
const express = require('express');
const router = express.Router();
router.get('/hello',(req, res)=>{
res.send('USER ROUTER!!');
});
module.exports=router;
app.js
//app.js : node module 로딩, 초기화, router 유입점
const express = require('express');
const indexRouter = require('./routes'); //index.js는 생략가능(기본)
const userRouter = require('./routes/user');
const app = express();
app.set('port', process.env.PORT||8888);
app.use('/', indexRouter);
app.use('/user',userRouter);
app.listen(app.get('port'), ()=>{
console.log(app.get('port'), '번 포트에서 서버 연결 대기중...');
});
<Ex07template>
<routes/index.js>
const express = require('express');
const router = express.Router();
//특정 요청 시
//index.html 응답+ 특정 데이터(html 에서 출력되도록)
router.get('/',(req, res)=>{
// render 호출 시
// 보내는 값 {}: 넌적스가 처리함
// index : index.html 을 렡더링 하여 보내겠다!
res.render('index', {title : 'value'});
})
module.exports =router;
<views/index.js>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body> <!--title : value-->
<h1>{{title}}</h1>
<!-- 내부 변수 선언 -->
{%set node = 'node.js'%}
{%set js ='node'%}
<h3>{{node}}</h3>
<h3>{{js}}</h3>
<!-- 조건문 -->
{% if js === 'node'%}
<p>node입니다</p>
{% elif js === 'java'%}
<p>java입니다</p>
{%else%}
<p>js 입니다</p>
{% endif %}
<!-- 반복문 -->
{%set fruits = ['사과', '배', '오렌지']%}
<table border="1">
<tr>
{%for item in fruits%}
<td>{{loop.index}}. {{item}}</td>
{%endfor%}
</tr>
</table>
</body>
</html>
<app.js>
const express = require('express');
const nunjucks = require('nunjucks'); //넌적스 템플릿 엔진 사용
const indexRouter = require('./routes');
const app = express();
app.set('port', process.env.PORT||8888);
app.set('view engine', 'html'); //넌적스 = njk / html
app.use('/', indexRouter);
nunjucks.configure('views', {
express: app, //app 객체 연결
watch : true, //html 파일이 연결되면 템플릿 엔진을 다시 렌더링
})
app.listen(app.get('port'), ()=>{
console.log(app.get('port'), '번 포트에서 서버 연결 대기중...');
});
<Ex08login>
<routes/login.js>
const express = require("express");
const bodyParser = require('body-parser');
const router = express.Router();
router.use(bodyParser.urlencoded({ extended: true }));
// 특정 요청 시
// index.html 응답 + 특정 데이터(html에서 출력되도록)
// loginForm.html 렌더링
router.get("/", (req, res) => {
//render 호출 시
//보내는 값 {} : 넌적스가 처리함
//index : index.html을 렌더링하여 보내겠다!
res.render("loginform");
});
router.post("/login", (req, res) => {
if (req.body.pw == "1234") {
res.render("loginSuccess", { id: req.body.id });
} else {
res.render("loginFail");
}
});
module.exports = router;
<views/loginFail.html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<p>로그인 실패!</p>
</body>
</html>
<loginform.html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<form action="/user/login" method="post">
ID: <input type="text" name="id"><br>
PW: <input type="password" name="pw"><br>
<input type="submit" value="LOGIN">
</form>
</body>
</html>
<loginSuccess.html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
{{id}}님 환영합니다!
</body>
</html>
<app.js>
const express = require("express");
const nunjucks = require("nunjucks"); //넌적스 템플릿 엔진 사용
const loginRouter = require("./routes/login");
const app = express();
// 실행시 http://localhost:8888/user/login 주소로 실행
app.set("port", process.env.PORT || 8888);
app.set("view engine", "html"); //넌적스 = njk / html
app.use("/user", loginRouter);
//npm install nunjucks
//npm install nunjucks chokidar
nunjucks.configure("views", {
express: app, //app 객체 연결
watch: true, //html 파일이 연결되면 템플릿 엔진을 다시 랜더링
});
app.listen(app.get("port"), () => {
console.log(app.get("port"), "번 포트에서 서버 연결 대기중..");
});
<Ex09cookieseession>
[routes/cookie.js]
const express = require('express');
const router = express.Router();
//쿠키 설정하기
router.get('/setcookie', (req,res)=>{
let nickname = 'pingu';
res.cookie('nickname', nickname, {
maxAge : 100000000, //밀리초단위 (만료시간)
});
res.cookie('dinner', '치킨', {
expires : new Date(Date.now() + 60*60*24*1000*2),
});
res.send('쿠키생성');
})
//쿠키 확인하기
router.get('/getcookies', (req,res)=>{
console.log(req.cookies.dinner);
res.send(req.cookies);
});
//쿠키 삭제
router.get('/deletecookie',(req,res)=>{
res.clearCookie('dinner');
res.send('쿠키삭제');
});
module.exports =router;
[app.js]
const express = require('express');
const app = express();
const cookieRouter = require('./routes/cookie');
const cookieParser = require('cookie-parser');
app.set('port', process.env.PORT||8888);
app.use(cookieParser()); //쿠키값 확인 시 필요
app.use('/c', cookieRouter);
app.listen(app.get('port'), ()=>{
console.log(app.get('port'), '번 포트에서 서버 연결 대기중...');
});
728x90
LIST
'Full Stack 교육 회고록' 카테고리의 다른 글
11/25- 안드로이드스튜디오(계산기, 로그인) / Node.js(Sequelize) (0) | 2022.11.25 |
---|---|
11/24 node.js / kotlin (1) | 2022.11.24 |
11/22- kotlin / Node.js (0) | 2022.11.22 |
11/21- node.js / 오후 Kotlin (0) | 2022.11.21 |
11/18 - Kotlin, (0) | 2022.11.18 |