1. node js 설치
2. vue cli 설치
3. vue create
4. vuetify 추가
5. router 추가
# vue add router
6. 서버 실행
'프로그래밍 > Vue.js' 카테고리의 다른 글
Atom Vue.JS 개발환경 세팅 (0) | 2019.05.16 |
---|
# vue add router
Atom Vue.JS 개발환경 세팅 (0) | 2019.05.16 |
---|
var a = 5
val b = 10
// 변수명: 자료형 = 값
var a: Int 10
val b: int = 20
기본 자료형
Double : 64비트 부동소수점
Float : 32비트 부동소수점
Long : 64비트 정수
Int : 32비트 정수
Short : 16비트 정수
Byte : 8비트 정수
리터럴
val a = 10 // val a: Int
val b = 10L // val b: Long
val c = 10.0 // val c: Double
val d = 10.0f // val d: Float
문자형
String : 문자열
Char : 하나의 문자
val str = "안녕하세요" // val str: String
val char = "안" // val char: char
// 함수
fun greet(str: String): Unit {
println(str)
}
greet( str:"안녕")
// 문자열 템플릿
val str = "안녕"
println(str + "하세요") // 자바 안녕하세요
--코틀린
println("$str 하세요") // 안녕 하세요
println("${str}하세요") //안녕하세요
// 배열
val numbers: Array<Int> arrayOf(1, 2, 3, 4, 5)
val number2 = arrayOf(1, 2, 3, 4, 5) // 자료형 생략
numbers[0] = 5 // [5, 2, 3, 4, 5]
//제어문
# if
if( a < b ) max = b // 일반적인 방법
if( a < b) {
max = a
} else {
max = b
}
val max = if(a > b) a else b // 식처럼 사용 가능
// when 문은 자바의 switch문에 대응
#1
val x = 1
when (x) {
1 -> println("x == 1") // 값 하나
2, 3 -> println("x == 2 or x == 3") // 여러 값은 콤마로
in 4..7 -> println("4 부터 7 사이") // in 연산자로 범위지정
!in 8..10 -> println("8부터 10 사이가 아님")
} else -> { // 나머지
print("x는 1이나 2가 아님")
}
#2
val numberStr = 1
val numberStr = when(number % 2) {
0-> "짝"
else -> "홀"
}
#3
val number = 1
fun isEven (num: Int) = when (num %2) { // 결과가 String으로 추론되어 반환형 선언 생략 가능
0 -> "짝"
else -> "홀"
}
println(isEven(number))
// for문
#1
val numbers = arrayOf(1, 2, 3, 4, 5)
for (num in numbers) {
println(num) //1; 2; 3; 4; 5;
}
#2
// 1~3 까지 출력
for (i in 1..3) {
println(i) // 1; 2; 3;
}
// 0~10까지 2씩 증가하며 출력
for (i in 0..10 step 2) {
println(i) // 0; 2; 4; 6; 8; 10;
}
// 10부터 0 까지 2씩 감소하며 출력
for (i in 10 downTo 0 step 2) {
println(i) // 10; 8; 6; 4; 2; 0;
}
// while
var x = 10
println(x)
while ( x > 0 ) {
x--
println(x) //9; 8; 7; 6; 5; 4; 3; 2; 1; 0;
}
// do while
var x = 10
do {
x--
println(x) // 9; 8; 7; 6; 5; 4; 3; 2; 1; 0;
} while (x > 0)
// 클래스
# 클래스 선언
class Person {
}
#인스턴스 생성
val person = Person()
// 생성자
# 코틀린에서의 클래스
calss Person(var name: String) {
}
class Person {
constructor(name: String) {
println(name)
}
}
class Person(name: String) {
init {
println(name)
}
}
// 프로퍼티 : 클래스의 속성을 사용할 때는 멤버에 직접 접근하며 이를 프로퍼티라고 합니다.
# 클래스 선언
class Person(var name: String) {
}
// 인스턴스 생성
val person = Person("멋쟁이")
person.name = "키다리" // 쓰기
println(person.name) // 읽기
// 접근제한자 : 접근제한자란 변수나 함수를 공개하는 데 사용하는 키워드이다.
Class A {
val a = 1 // public(생략가능) : 전체 공개
private val b = 2 // private : 현재 파일 내부에서만 사용 가능
protected val c = 3 // protected : 같은 모듈 내에서만 사용가능
internal val d = 4 // internal : 상속받은 클래스에서 사용가능
}
// 클래스 상속
// 코틀린에서의 클래스는 기본적으로 상속이 금지된다.
// 상속이 가능하게 하려면 open키워드를 클래스 선언 앞에 추가한다.
// 다음은 Animal클래스를 상속받는 Dog 클래스를 나탄내다.
open class Animal {
}
class Dog : Animal() {
}
open class Animal(val name: String) {
}
class Dog(name: String) : Animal(name) {
}
// 내부 클래스
// 내부 클래스 선언에는 inner를 사용
// 내부 클래스는 외부 클래스에 대한 참조를 가지고 있다.
// 아래 코드에서 inner 키워드가 없다면 a를 20으로 변경할 수 없다.
class OuterClass {
val a = 10
// 내부클래스
inner class OuterClass2 {
fun something() {
a = 20 // 접근 가능
}
}
}
// 추상 클래스
// 추상클래스는 미구현 메서드가 포함된 클래스.
// 클래스와 미구현 메서드 앞에 abstract키워드를 붙인다.
// 추상클래스는 직접 인스턴스화 할 수 없고 다른 클래스가 상속하여 미구현 메서드를 구현해야 한다.
// 기본적으로 자바와 동일한 특성을 가진다.
abstract class A {
abstract fun func()
fun func2() {
}
}
class B: A() {
override fun func() {
println("Hello")
}
}
val a = A() // 에러
val a = B() // ok
// 인터페이스
// 인터페이스는 미구현 메서드를 포함하여 클래스에서 이를 구현한다.
// 추상클래스와 비슷하지만 클래스가 단일 상속만 되는 반면 인터페이스는 다중 구현이 가능하다.
// 주로 클래스에 동일한 속성을 부여해 같은 메서드라도 다른 행동을 할 수 있게 하는데 사용한다.
// 코틀린의 인터페이스는 자바와 거의 사용법이 같다.
//# 인터페이스 선언
// 다음과 같이 인터페이스에 추상 메서드를 포함할 수 있다.
// 원래 추상 클래스에서 추상 메서드는 abstract키워드가 필요한데 인터페이스에서는 생략할 수 있다.
interface Runnable {
fun run()
}
// 인터페이스는 구현이 없는 메서드뿐만 아니라 구현된 메서드를 포함할 수 있다. 이는 자바의 default 메서드에 대응한다.
interface Runnable {
fun run()
fun fastRun() = println("빨리 달린다")
}
// 인터페이스의 구현
// 인터페이스를 구현할 때는 인터페이스 이름을 콜론 뒤에 나열한다.
// 그리고 미구현 메서드를 작성하는데 이때 override 키워드를 메서드 앞에 추가한다.
// run 함수를 오버라이드한다고 말한다.
class Human : Runnable {
override fun run() {
println("달린다")
}
}
// 상속과 인터페이스를 함께 구현
// 다음과 같이 상속과 인터페이스를 함께 구현할 수 있다.
// 상속은 하나의 클래스만 상속하는 반면 인터페이스는 콤마로 구분하여 여러 인터페이스를 동시에 구현할 수 있다.
open class Animal {
}
interface Runnable {
fun run()
fun fastRun() = println("빨리 달린다")
}
interface Eatable {
fun eat()
}
class Dog: Animal(), Runnable, Eatable {
override fun eat() {
println("먹는다")
}
override fun run() {
println("달린다")
}
}
val dog = Dog()
dog.run()
dog.eat()
윈도우에서 개발을 할 예정이다.
기본적인 command명령어를 알아두면 좋다.
먼저 윈도우키와 R키를 눌러 cmd를 입력한다.
폴더 만들기
>mkdir [생성할 폴더명]
하위 폴더로 이동
>cd [이동할 폴더]
상위 폴더로 이동
>cd ..
Django 를 설치하기 전에 파이썬을 먼저 설치해 준다. (참고 : 2017/01/11 - [프로그래밍/Python] - 1. 파이썬 설치하기)
>django-admin startproject mysite
기존에 있던 것을 주석처리 한 후에 바로 아랫줄에 LANGUAGE_CODE = 'ko-kr'을 추가해 준다.
기존에 있던 것을 주석처리 한 후에 바로 아랫줄에 TIME_ZONE = 'Asia/Seoul'을 추가해 준다.
>cd mysite
>python manage.py runserver -- 기본 8000번 포트로 실행이 된다.
>python manage.py runserver 8080 -- 포트를 8080으로 실행하고 싶을때
>python manage.py runserver 0.0.0.0:8080
[Node.js] MSSQL 프로시저 설정하기 (0) | 2019.06.18 |
---|---|
[Yo Express](오류관련) Fatal error: Unable to find local grunt. (0) | 2018.09.20 |
pow함수는 제곱을 해주는 함수이다.
math.sqrt는 root함수 이다.
아래의 코드에선 21:9 비율의 모니터를 기준으로 패널의 크기만 고려 한 것이다. 배젤의 크기는 제외하였다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | import math #대각선 길이를 입력 받는다. cm = int(input("대각선의 길이 입력 : ")) pita_c = pow(cm,2) a_val = 21 b_val = 9 a = pow(a_val,2) b = pow(b_val,2) result = a+b result = math.sqrt(pita_c/result) result_a = a_val*result result_b = b_val*result print(2.54*result_a, 2.54*result_b) | cs |
파이썬 selenium (0) | 2019.03.17 |
---|---|
파이썬파일 exe 배포 (0) | 2019.03.15 |
파이썬 엑셀 파일 읽기 (0) | 2018.09.18 |
3. 파이썬(Python)의 변수 (0) | 2017.02.28 |
2. 파이썬(Python) 사용하기 (0) | 2017.01.13 |
Yo express grunt 시 오류 발생
기본적으로 gruntfile이 자동으로 생성이 된다.
하지만 무엇이 문제인지 오류가 발생하였다.
오류내용
grunt-cli: The grunt command line interface (v1.3.1)
Fatal error: Unable to find local grunt.
If you're seeing this message, grunt hasn't been installed locally to
your project. For more information about installing and configuring grunt,
please see the Getting Started guide:
https://gruntjs.com/getting-started
grunt-cli가 문제가 됨
grunt가 설치된 폴더로 이동한다.
grunt를 재 설치해 준다.
명령어
npm install grunt --save-dev
문제가 해결되고 grunt명령어가 작동한다.
[Node.js] MSSQL 프로시저 설정하기 (0) | 2019.06.18 |
---|---|
Express 설치하기 (0) | 2018.09.27 |
파이썬에서 엑셀파일을 열려면 openpyxl이 필요합니다.
openpyxl 설치는 커맨드창에서 'python -m pip install openpyxl'을 입력합니다.
설치가 끝나시면 import를 하여 사용합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | import openpyxl # 엑셀파일 열기(sample.xlsx) wb = openpyxl.load_workbook('sample.xlsx') ws = wb['Sheet1'] #Name BC- 넘버 start_num = int(input("BC넘버 입력 : ")) #타입입력 input_type = str(input("Type 입력 : ")) #J1에다가 결과값 붙여 넣기 start_value = 1 #마지막 번호 end_value = int(input("마지막 번호 입력 : ")) for i in range(1, end_value*3 ,3): ws['A' + str(i)] = '** Name: BC-' + str(start_num) + ' Type: ' + str(input_type) ws['A' + str(i + 1)] = '*Boundary' ws['A' + str(i + 2)] = 'cover'+ str(start_value) + ', 11, 11, ' + str(ws['J' + str(start_value)].value) + '.' print(ws['A' + str(i)].value) print(ws['A' + str(i+1)].value) print(ws['A' + str(i+2)].value) start_num += 1 start_value += 1 # 엑셀 파일 저장 save_name = input("저장할 파일명 입력 : ") wb.save(save_name+".xlsx") wb.close() exit() | cs |
sample.xlsx
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | BC넘버 입력 : 13 Type 입력 : Temperture 마지막 번호 입력 : 185 ** Name: BC-13 Type: Temperture *Boundary cover1, 11, 11, a. ** Name: BC-14 Type: Temperture *Boundary cover2, 11, 11, b. ** Name: BC-15 Type: Temperture *Boundary cover3, 11, 11, c. ** Name: BC-16 Type: Temperture *Boundary cover4, 11, 11, d. (중략) ** Name: BC-195 Type: Temperture *Boundary cover183, 11, 11, 58. ** Name: BC-196 Type: Temperture *Boundary cover184, 11, 11, 69. ** Name: BC-197 Type: Temperture *Boundary cover185, 11, 11, 85. 저장할 파일명 입력 : save | cs |
파이썬파일 exe 배포 (0) | 2019.03.15 |
---|---|
심심해서 만들어 본 모니터 가로 세로 길이 계산 (0) | 2018.09.21 |
3. 파이썬(Python)의 변수 (0) | 2017.02.28 |
2. 파이썬(Python) 사용하기 (0) | 2017.01.13 |
1. 파이썬 설치하기 (0) | 2017.01.11 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>jquery를 이용한ajax json</title> </head> <body> <input type="email" id="email" placeholder="email" /> <button id="chkemail">중복확인</button> </body> <script> var data = {}; //data 변수를 배열로 생성합니다. //중복확인 클릭시 //jquery에서는 #은 아이디 .은 클래스를 표현합니다. $("#ID명") $(".CLASS명") $("#chkemail").click(function () { // 아이디값이 chkemail인 것을 클릭했을시 function을 실행합니다. data.email = $("#email").val(); // data 변수에 email항목을 만듭니다. 그리고 id값이 email의 value값을 대입합니다. data.url = "./emailAuth"; // data변수에 url항목을 생성하고 그 값에 emailAuth를 대입합니다. sendServer(data); // sendServer함수에 data를 담아서 보냅니다. }); function sendServer(data) { /* $.ajax({ type: "get", // type에는 "get || post"를 사용할 수 있습니다. url : data.url, // url은 서버에 보내질 url위치를 적어줍니다. data : data, // 서버에 보낼 data를 입력합니다. data : data, 라고 적혀있지만 앞에는 ajax의 형식이고 뒤에는 피라메터 값 입니다. dataType: "JSON", // json을 사용할 것이기에 json을 적어줍니다. success: function(success) { console.log(success); // 성공시 서버에서 가져온 값을 콘솔에 보여줍니다. }, error: function(error) { console.log(error); // 실패시 에러값을 보여줍니다. } }); */ $.ajax({ type: "get", url: data.url, data: data, dataType: "JSON", success: function (data) { if(url == "./rest/emailAuth"){ if (data.emailChk < 0) { alert('이미 사용중인 이메일 입니다.'); } else { alert('사용 가능한 이메일 입니다.'); } } }, error: function (error) { console.log(error); } }); } </script> </html> | cs |
1 2 3 4 5 6 | <!-- JACKSON --> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> <version>1.9.13</version> </dependency> | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | @Controller("restController") //컨트롤러 명 지정 @RequestMapping(value = "/rest") // 컨트롤러의 위치를 정해줍니다. public class restController { @Autowired OverlayService service; private Logger logger = LoggerFactory.getLogger(this.getClass()); // 중복확인(이메일) @RequestMapping(value = "/emailAuth") public @ResponseBody Map<String, String> emailAuth(@RequestParam("email") String email) { return service.emailAuth(email); } } | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | @Service public class OverlayService { @Autowired SqlSession sqlSession; private Logger logger = LoggerFactory.getLogger(this.getClass()); OverlayInterface inter = null; // 이메일 중복확인 public Map<String, String> emailAuth(String email) { Map<String, String> jsonObj = new HashMap<String, String>(); inter = sqlSession.getMapper(OverlayInterface.class); String emailAuth = inter.emailAuth(email); if (emailAuth != null) { jsonObj.put("chk", "-1"); } else { jsonObj.put("chk", "1"); } return jsonObj; } } | cs |
1 2 3 4 5 6 | public interface OverlayInterface { //이메일 중복확인 String emailAuth(String email); } | cs |
1 2 3 4 5 6 7 8 9 10 11 | <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" <mapper namespace="com.rest.dao.OverlayInterface"> <!--중복체크--> <select id="emailAuth" resultType="String"> SELECT mm_email FROM members WHERE mm_email = #{param1} </select> </mapper> | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 | public class UserInfoDTO { private String mm_email; // 이메일 public String getMm_email() { return mm_email; } public void setMm_email(String mm_email) { this.mm_email = mm_email; } } | cs |
회원가입 (0) | 2017.08.24 |
---|---|
MyBatis 세팅 (0) | 2016.06.15 |
STS설정 및 스프링 한글깨짐 방지 설정 (0) | 2016.06.13 |
Controller 부분
1 2 3 4 5 6 | @RequestMapping(value = "regist") public ModelAndView regist(HttpServletRequest req) { String id = req.getParameter("email"); String pw = req.getParameter("password"); return service.regist(id, pw); } | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | @Service public class TestService { @Autowired SqlSession sqlSession; TestInterface inter = null; // 회원가입 public ModelAndView regist(String id, String pw) { ModelAndView mav = new ModelAndView(); inter = sqlSession.getMapper(TestInterface.class); int success = inter.regist(id, pw); mav.setViewName("redirect:/"); return mav; } } | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | public class TestDTO { private String test_id; private String test_pw; public String getTest_id() { return test_id; } public void setTest_id(String test_id) { this.test_id = test_id; } public String getTest_pw() { return test_pw; } public void setTest_pw(String test_pw) { this.test_pw = test_pw; } } | cs |
1 2 3 | public interface testInterface { int regist(String id, String pw); } | cs |
1 2 3 4 5 6 7 8 9 10 11 | <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.test.dao.TestInterface"> <insert id="regist"> INSERT INTO testmem(test_id, test_pw) VALUES(#{param1}, #{param2}) </insert> </mapper> | cs |
JSP 부분
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>회원가입</title> </head> <body> <form action="regist" method="post"> <input type="email" id="email" name="email" placeholder="email"/> <input type="password" id="password" name="password" placeholder="password"/> <input type="submit" /> </form> </body> </html> | cs |
jquery를 이용한 ajax json (0) | 2017.08.28 |
---|---|
MyBatis 세팅 (0) | 2016.06.15 |
STS설정 및 스프링 한글깨짐 방지 설정 (0) | 2016.06.13 |
파이썬에서 변수명으로 사용할수 없는 것들 이있습니다.
그중에 먼저 '예약어'에대해 알아보겠습니다.
and | as | assert | break | class | continue | def | del | elif | else | except | finally |
for | form | global | if | import | in | is | lambda | nonlocal | not | or | pass |
raise | return | try | while | with | yield |
위에 있는 것들은 예약어로 불리며 변수명으로 사용이 불가능 합니다.
파이썬에서 특정 기능을 동작하게 하는 것을 예약어라고 합니다.
변수를 생성할 때 주의할 점이 몇가지 있습니다.
변수를 만들때 특수문자 및 숫자가 앞에오는 경우 불가능 합니다.
ex) 1abc %abc #abc
특수 문자에서 예외가 있습니다.
언더바( _ ) 는 사용이 가능합니다.
ex) _abc
파이썬파일 exe 배포 (0) | 2019.03.15 |
---|---|
심심해서 만들어 본 모니터 가로 세로 길이 계산 (0) | 2018.09.21 |
파이썬 엑셀 파일 읽기 (0) | 2018.09.18 |
2. 파이썬(Python) 사용하기 (0) | 2017.01.13 |
1. 파이썬 설치하기 (0) | 2017.01.11 |