반응형

분류 전체보기 108

Flutter 앱 구조/Widget/Singleton

Flutter 앱의 전체 구조는 다음과 같습니다. import 'package:flutter/material.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { } class MyHomePage extends StatefulWidget { } class _MyHomePageState extends State { } 화면을 그리는 모든 디자인 요소를 위젯이라고 합니다. package:flutter/material.dart 패키지에는 머티리얼 디자인 위젯들이 포함되어 있습니다. 아이폰 디자인의 cupertino 패키지도 제공하므로 필요에 따라 import 해서 사용할 수 있습니다. import 'package:flutter..

Flutter 2022.02.06

Spring Boot - Thymeleaf

Spring Web Application 구현시 JSP를 이용해서 View를 구성하고 data 표현을 위해 HTML 태그에 로 자바 언어를 사용했습니다. JSP를 사용하면 Web Application 배포시 WAR(Web Archive) 파일로 생성되는데, WAR는 Web Application 압축타입으로 Servlet(JSP) 해석과 관련된 모든 패키지들을 포함시키면서 복잡하고 무거운 구조였습니다. 그리고, JSP 자체가 서버 측 언어로 그 사용빈도가 줄고 있습니다. JSP 의 잇점인 '스크립틀릿(scriptlet)'이라는 기능이 있어서 자바코드를 직접 태그안에 작성할 수 있습니다. 이런 이점이 있지만, 뷰 부분에 코드가 섞여서 로직을 분리하기 어려워 지기 때문에 JSP에 의존하는 개발은 피해야 하는 ..

Web 2022.02.05

3. Spring Boot - MyBatis

MyBatis는? 쿼리 기반 웹 애플리케이션을 개발할 때 가장 많이 사용되는 SQL 매퍼(Mapper) 프레임워크입니다. 객체 지향 언어인 자바의 관계형 데이터베이스 프로그래밍을 좀 더 쉽게 할 수 있게 도와 주는 개발 프레임 워크로서 JDBC를 통해 데이터베이스에 엑세스하는 작업을 캡슐화하고 일반 SQL 쿼리, 저장 프로 시저 및 고급 매핑을 지원하며 모든 JDBC 코드 및 매개 변수의 중복작업을 제거 합니다. Mybatis에서는 프로그램에 있는 SQL쿼리들을 한 구성파일에 구성하여 프로그램 코드와 SQL을 분리할 수 있는 장점을 가지고 있습니다. 마이바티스를 사용하지 않고 직접 JDBC를 이용할 경우 문제점: 개발자가 반복적으로 작성해야 할 코드가 많고, 서비스 로직 코드와 쿼리를 분리하기가 어렵습니..

Web 2022.02.03

2. Spring Boot - MySQL/MyBatis 연동

앞에서 생성한 WAS의 UserProfile Data를 MySQL 과 MyBatis 를 사용하여 database로 저장해 보겠습니다. :: https://kakaroo.tistory.com/14?category=1001571 MyBatis ? https://kakaroo.tistory.com/16 MyBatis MyBatis는? 쿼리 기반 웹 애플리케이션을 개발할 때 가장 많이 사용되는 SQL 매퍼(Mapper) 프레임워크입니다. 객체 지향 언어인 자바의 관계형 데이터베이스 프로그래밍을 좀 더 쉽게 할 수 있게 도 kakaroo.tistory.com 1. 라이브러리 Dependency 추가 필요 - MySQL 라이브러리 - Database 연동을 위해 사용할 SQLMapping 기술을 제공하는 MyBat..

Web 2022.02.03

1. Spring Boot - Starter Application by Eclipse(간단한 API 서버)

1. 아래 예처럼 URL을 load 했을 때 설정한 Model 정보가 나타나는 API 서버를 만들어 보겠습니다. 2. Create New Spring Starter Project 3. Run As Spring Boot App 4. Server started 4.1 Server 가 이미 사용중일 경우, cmd 창에서 아래 taskkill 명령어를 통해 서버를 강제 종료할 수 있습니다. Web server failed to start. Port 8080 was already in use. >netstat -ao // tomcat port(보통 8080) 사용중인 pid를 찾는다. >taskkill /f /pid [pid] 5. 아직 API가 구현되지 않았으므로, 아래와 같은 화면이 나오는 것은 정상입니다. ..

Web 2022.02.02

Coding - Smart Robot

출처: https://softeer.ai/practice/info.do?eventIdx=1&psProblemId=414 A그룹은 주요 물류센터에 각종 자동화 기기를 도입하며 ‘스마트 물류’를 실현하고 있다. 최근에는 자동차 반조립 부품(KD, Knock-Down) 물류기지인 B센터에 포장 관련 자동화 로봇 개발과 구축을 완료했다. 기존 수작업으로 진행하던 일부 작업 라인을 자동화 기기로 전환해 생산성을 높이기 위한 시도다. 기다란 작업 라인에 로봇과 부품이 아래 그림과 같이 단위 간격으로 놓여 있다. 로봇들의 위치에서 거리가 K 이하인 부품만 잡을 수 있다. 왼쪽 오른쪽은 상관 없다. 입력형식 입력의 첫 줄에는 두 정수 N과 K가 나온다. (1 ≤ N ≤ 20,000, 1 ≤ K ≤ 10) 다음 줄에는 ..

Java 2022.02.02

list/lambda/numpy/pandas/matplotlib

''.join(myList) //list의 item을 합쳐 문자열로 반환한다 //리스트 타입이 숫자인 경우에는 아래와 같이 map(str, 리스트이름)을 사용해서 리스트를 문자열로 합칠 수 있다. alist = list(range(10)) print(alist) s = ''.join(map(str,alist)) map()함수 👉map(f, iterable)은 함수(f)와 반복가능한(iterable) 자료형을 입력받고, 입력받은 자료형의 각 요소를 함수(f)가 수행한 결과를 묶어서 반환하는 함수. ex) list(map(int, l1)) => map 함수의 결과를 list로 묶어주지 않을 경우 객체로 변환된 위치만 반환 l1 = [2, 5, 6, 7, 8] new_list = list(map(str, l1..

Python 2022.02.02

Front Controller Pattern

컨트롤러가 공통 요청을 먼저 수행하고 뷰를 호출하는 패턴입니다. 프리젠테이션 레이어에 일어나는 일들의 창구로 facade 패턴의 역할과 MVC 패턴에서 controller의 역할을 함으로써 보안, 뷰 관리, 탐색들을 관리합니다. Response 객체의 sendRedirect 메서드 RequestDispatcher 객체의 forward 메서드 커맨드 패턴 커맨드 패턴은 명령(로직)을 객체 안에 캡슐화해서 저장함으로써 컨트롤러와 같은 클래스를 수정하지 않고 재사용할 수 있게 하는 패턴. 1. URI parsing 해서 구현 아래 Dispatcher 역할을 하는 Servlet 에서 Front Controller 역할을 합니다. @WebServlet("/") public class DispatcherServle..

Web 2022.02.01

JSP - URL mapping

servlet 2.* 에서는 web.xml 파일에서만 URL mapping이 가능, servlet 3.0이상에서는 annotation 으로 mapping하는 것도 가능해졌습니다. 1. web.xml mapping servlet-name 끼리 매칭이 되어야 함. servlet-class 는 코드에서 실행되는 클래스이름(package명.javaClass명) url-pattern은 url 주소이름 (ex. http://localhost:8080/TestServlet7) 2. annotation mapping web.xml에서 metadata-complete 값이 true로 되어 있을 경우 false로 바꿔줘야 annotation으로 URL mapping이 가능합니다. true는 url 매핑을 포함한 메타 데이..

Web 2022.02.01

JSP와 Servlet 값 주고 받기 (GET/POST)

Servlet은 서버에서 웹페이지 등을 동적으로 생성하거나 데이터 처리를 수행하기 위해 자바로 작성된 프로그램입니다. Servlet은 Java코드 안에 HTML태그가 삽입되며 자바언어로 되어있다. 확장자가 .java 입니다. 서블릿의 단어는 Server + Let의 합성어라고 알고 있는 사람도 있고 Server + Applet으로 알고 있는 사람도 있다. 사실 둘다 어려운 느낌이다. 하지만 쉽게 풀어보면 '클라이언트 요청을 처리하고 그 결과를 다시 클라이언트에게 전송하는 servlet 클래스의 구현 규칙을 지킨 자바프로그램'이라고 이해하면 좋을 듯하다. Servlet은 자바언어를 웹어플리케이션에 조금 더 개발하기 쉽게 하기 위해 만든 API(라이브러리, 클래스 들)이며 이 규약에 맞는 라이브러리나 클래스..

Web 2022.02.01

Eclipse Dynamic Web Project - 02

Servlet 설정 아래 Context Root (Web Project 생성시 프로젝트명)가 URL의 root가 됩니다. 예) http://localhost:8080/Test7 Root 이름 없이 http://localhost:8080/ 인 URL로 설정하기 위해서는 아래 path 를 '/' 로 변경하면 됩니다. Servlet 추가 web.xml에서 servlet mapping 설정 servlet-name 끼리 매칭이 되어야 합니다. servlet-class 는 코드에서 실행되는 클래스이름(package명.javaClass명) url-pattern은 url 주소이름 (ex. http://localhost:8080/TestServlet7) https://kakaroo.tistory.com/8 JSP URL..

Web 2022.02.01

Tomcat Server 설정

1. Server 실행시 수행될 프로젝트 설정 2. 화면에 보여 줄 Text 추가 3. Web module path 수정 3.1 Tomcat 더블 클릭 3.2 Modules 탭 선택 > Path를 '/' 로 수정 4. Server 실행시 아래와 같이 페이지가 로드되면 성공 "http://localhost:8080"에서 "localhost"는 "127.0.0.1"로 현재 PC의 웹 주소이며 8080는 Tomcat이 실행될때 사용되는 포트(Port)입니다. 웹 주소에 "index.jsp"을 입력하지 않아도 자동으로 처리되는 이유는 새롭게 설치된 Tomcat서버("Project Explorer"에서 "Server")의 환경정보 파일인 "web.xml"에 "welcome-file-list"에 처리되어 있어서 가..

카테고리 없음 2022.02.01
반응형