본문 바로가기
반응형

Programming307

Go언어 - MySQL 연동 package main import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" ) func checkError(err error) { if err != nil { panic(err) } } func main() { var name, email, phone string db, err := sql.Open("mysql", "root:1234@tcp(127.0.0.1:3306)/testdb") checkError(err) defer db.Close() fmt.Println("connect success") rows, err := db.Query("SELECT name, email, phone FROM members where id=?", 6) che.. 2020. 12. 6.
Go언어 - 소스코드 모듈화 보통 프로그램이 커질수록 파일을 기능별로 분리 관리를 하죠. Go 언어에서도 파일 분리/관리 방법이 있습니다만 오늘은 이것 때문에 삽질을 좀 많이 했네요. 역시 기초부터 제대로 공부하고 써먹어야한다는 생각을 절실히 체감하는 오늘입니다. 1. 같은 package 안에서는 함수, 메서드 등의 이름 첫글자가 소문자여도 사용이 가능합니다. (non-public) 폴더 구분없이 파일만 구분해서 사용하고 싶을 경우, 같은 패키지(현재 main)으로 하고, 함수이름 첫글자 소문자(my_plus)일 경우 문제없이 인식 가능합니다. (import 같은 기능 필요 없음) 2. 다른 패키지로 관리할 때, 즉 폴더별로 관리할 경우 주의해야 할 사항이 몇가지 있어서 정리를 할까 합니다. 1) 함수, 메서드 등의 이름 첫글자가 .. 2020. 12. 6.
Flask강좌6 - 등록/로그인/로그아웃 지금까지 DB 검색 기능에 대해 만들었으나, 사용자 등록, 로그인, 로그아웃 처리를 위해 대대적인 수정이 있겠습니다. 1. users 테이블 구성 우선 시작은 Database 구성부터 하도록 하겠습니다. 지난 members 테이블과는 별도로 사용자 관리를 위한 users 테이블을 생성하도록 하겠습니다. 2.user_model.py 데이터베이스 테이블에 맞춰 User클래스를 생성합니다. 정보는 ID, 이름, 비번이 되겠습니다. from flask_sqlalchemy import SQLAlchemy from datetime import datetime db = SQLAlchemy() class User(db.Model): __tablename__ = 'users' #테이블 이름 : users id = db... 2020. 12. 4.
Flask강좌5 - Flask form입력 form을 이용해 입력을 받고, 처리하여, 다시 결과를 보여주는 로직을 구현하겠습니다. 1. localhost:5000/all의 db.html 화면에서 입력 받고, 2. __init__.py에서 라우팅 처리하고, 3. db.html에 결과를 보여줍니다. 1. __init__.py form 으로부터 전달된 이름('nm')을 받아서 temp 변수에 저장하고, query.filter_by로 DB에서 조회한 후, 결과를 members로 저장합니다. 그리고 members의 갯수를 count에 저장합니다. render_template함수를 통해 db.html로 연결이 되는데, 이때 members와 count를 함께 넘겨줍니다. from flask import Flask, render_template, request.. 2020. 12. 3.
무료 간트 차트 라이브러리 Gantt chart library ourcodeworld.com/articles/read/434/top-5-best-free-jquery-and-javascript-dynamic-gantt-charts-for-web-applications 2020. 12. 2.
Flask강좌4 - Flask_SQLAlchemy MySQL연동 이번 강좌에서는 ORM 방식으로 Database와 연동하는 방법에 대해 포스팅하겠습니다. ORM은 Object-Relational Mapping 이라고 하여, Database 객체를 객체지향 프로그래밍 언어로 변환하는 기법입니다. (자세한 내용은 다른 포스팅들을 참조하시기 바랍니다.) 그 중에서도 Flask에서 ORM을 구현할 수 있게 해주는 라이브러리가 Flask-SQLAlchemy 입니다. 이 Flask-SQLAlchemy를 이용하여 MySql과 연동해보도록 하겠습니다. 1. Database 자료 생성 아래와 같이 id, name, email, phone, start(datetime), end(datetime)을 필드로 하는 자료를 생성해놓습니다. 2. 라이브러리 설치 먼저 말했듯이 이번 강좌의 메인.. 2020. 12. 2.
Flask강좌3 - Request 1. Request Event Handler 주요 Request Event Handler(Web Filter)는 아래와 같습니다. @app.before_first_requst : 첫번째 요청을 부를 때 @app.before_request : 매 요청에 대해 router가 받아서 모델이 처리하기 전에 @app.after_request : 응답이 나가기 직전에 (DB Close와 같은 작업 처리) @app.teardown_request : 응답이 나가고 나서 @app.teardown_appcontext : application Context가 끝났을 때 2. Request Parameter # GET request.args.get('q') .....> q파라미터를 GET으로 받음 # POST request... 2020. 12. 1.
Flask강좌2 - Global Object: g, Response객체 1. __init__.py 수정 from flask import Flask, g, Response, make_response app = Flask(__name__) app.debug = True #use only debug!! @app.before_request def before_request(); print("before_request!!!") g.str = "한글" @app.route("/gg") def helloworld(): return "Hello World!" +getattr(g, 'str', '111') @app.route("/") def helloworld(): return "Hello Flask World!!!!!!!" @app.route("/res1") def res1(): custo.. 2020. 12. 1.
Flask강좌1 - hello flask! 설치 pip install flask 셋업 webapp (Web application) /helloflask(Web context영역, blog 등) - /static -/css -/images -/js -/templates -application.html -__init__.py (임포트 하는 순간 자동 실행 됨) start_helloflask.py __init__.py from flask import Flask app = Flask(__name__) @app.route("/") def helloworld(): return "Hello Flask!" start_helloflask.py #../start_flask.py from helloflask import app app.run(host='localho.. 2020. 12. 1.
Spring boot 시작하기 - 14강(스프링데이터JPA) 1. SpringDataJpaMemberRepository 인터페이스 작성 이번엔 클래스가 아닌 인터페이스를 만들어줍니다. 인터페이스만 만들면 객체는 JPA 템플릿이 자동으로 생성해준다고 합니다. package hello.hellospring.repository; import hello.hellospring.domain.Member; import org.springframework.data.jpa.repository.JpaRepository; import java.util.Optional; public interface SpringDataJpaMemberRepository extends JpaRepository, MemberRepository { @Override Optional findByName(St.. 2020. 11. 30.
Spring boot 시작하기 - 13강(JPA) 1. build.gradle dependencies 설정 기존 jdbc 라이브러리 대신 jpa라이브러리를 설정합니다. 설정 뒤에는 코끼리 아이콘을 클릭하여 라이브러리를 끌어와 설치해줍니다. 2. application.properties 설정 spring.jpa,.show-sql=true 는 jpa가 수행하는 sql을 볼 수 있도록 하는 옵션이고, spring.jpa.hibernate.ddl-auto=none 은 회원 객체를 확인할 때 테이블을 자동 생성하는 기능은 끄고 시작하는 것입니다. 이번 예제에서는 테이블을 생성해 놓았으므로 none으로 합니다. none대신 create로 할 경우 테이블 생성까지도 자동으로 해 줍니다. 3. Member 클래스 코드 수정 @Entity : JPA가 관리하는 Enti.. 2020. 11. 30.
Spring boot 시작하기 - 12강(테스트) 1. 기존 MemberServiceTest크래스를 복사하여 MemberServiceIntegrationTest 클래스를 생성 후 아래와 같이 코드를 작성합니다. package hello.hellospring.service; import hello.hellospring.domain.Member; import hello.hellospring.repository.MemberRepository; import hello.hellospring.repository.MemoryMemberRepository; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; imp.. 2020. 11. 30.
Spring boot 시작하기 - 11강(H2 Database연결-jdbc template방식) 1. build.gradle 설정파일로 가서 아래와 같이 코드를 추가해줍니다. 2. application.properties 파일에 가서 아래와 같이 수정해줍니다. 3. JdbcTemplateMemberRepository 클래스를 추가해줍니다. package hello.hellospring.repository; import hello.hellospring.domain.Member; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import org.springfram.. 2020. 11. 30.
Spring boot 시작하기 - 10강(H2 Database생성) 테스트용으로 사용할 DB를 만들기 위해 H2라는 database를 설치하도록 하겠습니다. H2 database 사이트에서 본인의 OS에 맞는 버전을 다운받아 설치합니다. 다운받은(설치한) 경로에서 실행파일을 실행해줍니다. linux/Mac은 h2.sh를 실행하면 되고, windows는 h2.bat를 실행하면 자동으로 H2 콘솔이 브라우저로 열립니다. 잘 안나오면 뒷부분은 그대로 두고, IP 부분을 아래와 같이 localhost로 바꾸어줍니다. localhost:8082/login.do?jsessionid=f5e0be78c8ea2e025e1340946eb405a6 연결되면 JDBC URL 부분이 최초에는 아래와 같이 설정되어 있는데, 이는 폴더를 직접 접근하는 것입니다. 이를 소켓을 이용하여 접근하도록 아.. 2020. 11. 29.
Spring boot 시작하기 - 9강(조회) 1. @GetMapping("/members") 구현 MemberController에 @GetMapping("/members")를 구현합니다. package hello.hellospring.controler; import hello.hellospring.domain.Member; import hello.hellospring.service.MemberService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotat.. 2020. 11. 27.
Spring boot 시작하기 - 8강(등록) 1. MemberController 수정 @GetMapping을 통해 "/members/new" 를 처리하는 코드를 작성합니다. package hello.hellospring.controler; import hello.hellospring.domain.Member; import hello.hellospring.service.MemberService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.we.. 2020. 11. 27.
Spring boot 시작하기 - 7강(홈화면) 홈 화면을 추가해보겠습니다. 1. HomeController 클래스 추가 package hello.hellospring.controler; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @Controller public class HomeController { @GetMapping("/") public String home(){ return "home"; } } 2. home.html 추가 templates 패키지 아래에 home.html파일을 생성합니다. Hello Spring 회원 기능 회원 가입 회원 목록 결과 ~~ 끝 ~~ 2020. 11. 26.
Spring boot 시작하기 - 6강(컴포넌트 스캔과 자동의존관계 설정) 1. Member Controller 만들기 controller 패키지 안에 MemberController 클래스를 생성합니다. 그리고 아래와 같이 코딩합니다. package hello.hellospring.controler; import hello.hellospring.service.MemberService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; @Controller public class MemberController { private final MemberService memberService; @Autowired public Membe.. 2020. 11. 26.
Spring boot 시작하기 - 5강(테스트) Service 클래스에 대한 Test클래스를 작성하겠습니다. 우선 Service 클래스의 소스코드에서 Ctrl+Alt+T 버튼을 누르면 아래와 같이 테스트 코드 생성창이 뜹니다. Create New Test를 클릭하면 아래의 세부 설정창이 뜨는데, 아래와 같이 Testing Library를 JUnit5로 선택하고, Member들을 체크해준 뒤 OK를 클릭합니다. 그럼 자동으로 기본 구성이 된 소스 코드가 Test패키지 하위에 나타나게 됩니다. 해당 클래스 MemberServiceTest에 코드를 작성하면 됩니다. MemberServiceTest package hello.hellospring.service; import hello.hellospring.domain.Member; import hello.he.. 2020. 11. 26.
Spring boot 시작하기 - 5강(Service) Service를 구현합니다. hello.hellospring하위에 Service 패키지를 만들고 MemberService클래스를 추가합니다. 1. MemberService클래스 package hello.hellospring.service; import hello.hellospring.domain.Member; import hello.hellospring.repository.MemberRepository; import hello.hellospring.repository.MemoryMemberRepository; import java.util.List; import java.util.Optional; public class MemberService { private final MemberRepository .. 2020. 11. 26.
Spring boot 시작하기 - 4강(테스트) 테스트 케이스를 만들고 테스트를 해보겠습니다. 아래와 같이 테스트 패키지-hello.hellospring 패키지 아래에 repository패키지와 MemoryMemberRepositoryTest클래스를 구성합니다. 1. MemoryMemberRepositoryTest클래스 package hello.hellospring.repository; import hello.hellospring.domain.Member; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import java.util.List; import static org.assertj.co.. 2020. 11. 25.
Spring boot 시작하기 - 4강(회원 도메인과 리포지토리) 회원 도메인과 리포지토리를 만들겠습니다. 폴더구조는 아래와 같이 하여 domain 패키지를 만들고 내부에 Member 클래스를 만들어줍니다. 그리고 repository 패키지를 만들어준 후 MemberRepository 인터페이스와 MemoryMemberRepository클래스를 만들어줍니다. 1. Member 클래스 package hello.hellospring.domain; public class Member { private Long id; private String name; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } publ.. 2020. 11. 25.
Spring boot 시작하기 - 3강(파라미터 있는 MVC) 1. Controller 라우팅 추가 Controller 클래스에 "hello-mvc"라우팅을 추가합니다. 입력 파라미터로 "name"키에 값을 받아들이도록 합니다. name=???값을 이용해 "hello-template"를 반환하도록 합니다. package hello.hellospring.controler; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; @Controller publi.. 2020. 11. 23.
Spring boot 시작하기 - 2강(MVC예) 1. Controller작성 hello.hellospring 아래에 controler라는 패키지를 만든 후 HelloController라는 class를 만들어줍니다. 코드는 아래와 같습니다. localhost:8080/hello 로 접속 시 hello 함수를 실행하게 만들고, hello함수는 return "hello" 구문으로 hello를 리턴하는데, 이는 resources/templates에서 hello.html을 찾아서 반환해주는 역할을 합니다. 이때 속성으로 키가 "data"이고 값이 "hello!!"인 데이터를 함께 넘겨주게 됩니다. package hello.hellospring.controler; import org.springframework.stereotype.Controller; impor.. 2020. 11. 23.
Spring boot 시작하기 - 1강 1. 사전 준비 JDK 11버전을 설치해둡니다. IntelliJ도 설치를 해 둡니다. 2. start.spring.io 페이지에 접속하여 아래와 같이 세팅 후 Generate 를 클릭하여 Spring 프로젝트를 생성 및 다운로드 받습니다. 3. 원하는 곳에 압축을 풀고 IntelliJ를 이용하여 build.gradle파일을 열어줍니다. 4. Run하고 localhost:8080에 접속하여 에러 페이지가 나오는지 확인합니다. 아래와 같이 나타나면 정상설치가 된 것입니다. 5. 실행환경 변경 Settings에서 gradle로 검색하여 아래의 2가지 옵션을 gradle에서 IntelliJ IDEA로 변경해줍니다. 6. hello 페이지 만들기 Project View에서 src/main/resources/sta.. 2020. 11. 23.
Java - Intellij Scene Builder 찾기 인텔리제이에서 씬 빌더를 사용? 찾는 방법에 대해 적어놓습니다. 오랜만에 하려니 저도 어디있는지 까먹어서 많이 헷갈리네요... 처음 인텔리제이에서 javafx 프로젝트를 하나 생성하면 sample.fxml이라는 파일이 생성됩니다. fxml은 xml을 이용해 GUI를 쉽게 구현할 수 있게 해주는 언어인데요. 텍스트 탭과 scene builder 탭을 둘 다 볼 수 있습니다. 문제는 탭이 화면 아래쪽에 있는 것인데요....(아래 그림 참조) 이것때문에 괜히 파일명 우클릭해서 한참 찾았네요. 찾느라 고생 없으시길... 참고로, 처음 실행할 때 에러메시지와 함께 scene builder 다운로드가 아직 안됐다는 에러가 뜨는데... 해당 경고 따라 다운받아주시면 알아서 설치되고, 곧바로 보여집니다. scene b.. 2020. 11. 12.
Java Spring Boot 시작하기 - Hello World 1. JDK 설치 2. STS(Spring Tool Suit) 다운로드 및 설치 spring.io/tools 사이트로 이동하셔서 본인의 OS에 맞는 파일을 다운받아 설치합니다. 최근에 실행파일이 .jar로 바뀐 것 같은데요... java가 깔려있다면 실행되며(압축풀림) 폴더 하나가 생기게 됩니다. 안되면 cmd에서 실행해야합니다. (java -jar 받은파일명.jar) 팁으로....탐색기의 경로에 cmd를 곧바로 치면 해당 폴더에서 커맨드가 열립니다. 폴더 안에 SpringToolSuite4.exe 실행파일을 실행하시면 설치없이 실행됩니다. 3. 프로젝트 생성 4. 폴더 구조 5. 파일 수정(DemoApplication.java) package com.example.demo; import org.spri.. 2020. 11. 4.
PHP와IIS 연동하기 오늘은 IIS에서 PHP를 연동하는 방법에 대해 알아보겠습니다. Django, Flask와 마찬가지로 FastCGI방식을 이용해야 합니다. 1. CGI 설치 "제어판->프로그램->프로그램 및 기능->Windows 기능 켜기/끄기" 에서 아래의 그림에 따른 경로를 찾아들어가 CGI를 체크해줍니다. 그러면 알아서 관련 프로그램이 설치가 됩니다. 2. php download php.net 사이트에서 PHP를 다운로드합니다. 이때 FastCGI연결이 가능하도록 Non Thread Safe 버전을 다운받아야 합니다. 자신의 window 타입에 맞는 버전(x64 or x86) 을 선택하여 다운받아 줍니다. 그런다음 적당한 위치에 압축을 풀어줘야 하는데, 저는 "C:\php7"이라는 폴더를 만들어서 거기에 넣어두었습.. 2020. 10. 24.
Flask - IIS연동 IIS와 Flask 연동하는 방법에 대한 기록을 남깁니다. 1. flask 설치 pip install flask 2. wfastcgi설치 pip install wfastcgi 3. wfastcgi실행 c:\>wfastcgi-enable python.exe | wfastcgi.py 파일 경로 복사/기록 4. 테스트용 hello.py파일 작성( 예: E:\02_Programming_Work\06_Python\08_flask) 주소창에서 "localhost:7000/" 과같이 입력하면 이 파일에 의해서 Hello Flask!라는 텍스트를 나타내게 합니다. #hello.py from flask import Flask app=Flask(__name__) @app.route('/',methods=['GET']) d.. 2020. 10. 23.
Go언어 GUI 시스템 트레이에 아날로그 시계 만들기 with go-sciter 지금까지 만든 시계앱을 시스템 트레이로 만들어보도록 하겠습니다. 만들고 나면 이런 모양의 시스템 트레이가 하나 생성되게 됩니다. (Windows 기준). 모든 소스는 아래 공개해 놓았으며, 이전포스트는 굳이 참고하지 않아도 문제없습니다. 이미지는 다른 시계 예제에서 다운받아 온 것인데, 나름 귀엽네요. 그럼 이제 본격적으로 들어가보도록 하겠습니다. 1. 파일 정리 우선 지금까지는 main.go와 main.html에서 각각 기능과 뷰를 담당했는데, 앞으로는 시스템 트레이 프로그램이 메인이 되고, 거기서 clock 프로그램을 불러오는 방식으로 수정하도록 하겠습니다. main.go : 시스템 트레이 실행 (시계 프로그램 불러오기) ㄴ clock.go : 시계 프로그램 실행 (윈도우 생성 / 뷰 불러오기, 기존.. 2020. 9. 25.
반응형