Git Bash에서 이런저런 실습을 해보았다. 까먹기 전에 얼른 정리!

 

 

SSH key 생성, 등록하기

 

SSH(Secure SHell) 키를 생성하면 로그인 없이 깃허브에 공개키를 등록하여 접근할 수 있다. 

 

cd ~/.ssh 명령어로 현재 로컬에 SSH가 등록되어 있는지 확인한다.

 

ssh-keygen -t rsa -b 4096 -C "example@email.com"  명령어로 SSH 키를 생성한다.

  • ssh-keygen : ssh 비대칭키 생성 명령어
  • -t rsa : 암호화 타입을 rsa 방식을 사용
  • -b 4096 : 생성할 키의 비트수 4096으로 지정, rsa 타입을 위해선 최소 768 비트가 필요하며 default로 2048 비트이다. 4096으로 더 난독화된 키를 생성한다.
  • -C “example@email.com“ : 코멘트로 일종의 주석이다. 보통 이메일 계정이나 아이디등을 입력한다.

SSH 키 생성 시 출력 화면

 

ll ~/.ssh 명령으로 SSH 키가 잘 생성되었는지 확인한다.

  • cat ~/.ssh/id_rsa.pub  명령으로 공개키를 확인 후 copy
  • github > Settings > SSH and GPG keys > New SSH key 에 추가

 


 

commit/ push/ pull/ clone

 

임의 폴더 생성(mkdir) 해당 위치에서 git init 

commit할 파일 생성

1. git add 

2. git commit (-m : 커밋 메시지)

 

git remote add 이름 git@github.com:repository.git 명령으로 원격 저장소 지정

(git remote -v 로 원격 저장소 확인)

git push -u 원격저장소 master  명령으로 로컬 작업물 > 깃허브 push

 

깃허브 작업물을 commit 하려면 pull 먼저 수행

 

git clonelocal에 작업물이 없는 상태에서 원격저장소 데이터를 가져오는 것

git pull local에 작업물이 있고, 원격저장소의 수정상태를 반영하기 위해 하는 것

 

git clone은 repository 이름으로 가져옴

 


 

Branch

 

작업 관리 = branch (master 복제 및 추가작업)

브랜치 생성 및 조회

 

git checkout 지정브랜치  명령으로 브랜치 변경

 

git merge 명령으로 브랜치 합치기 (master->b1으로 가져오기)

master로 가서 b1 합치기 

 

git push결과

 


Reference

 

Github에 push, pull을 위한 ssh키 생성 및 등록(windows10)

들어가기이 블로그는 hexo라는 정적 웹 생성기로 만들어져 있고, hexo로 만들어진 정적웹을 github 페이지에 배포하여 운영하고 있다. 여기서 gitpage로 hexo블로그를 배포하기 위해서는 hexo 블로그를

www.hanumoka.net

 

반응형

0. 환경설정

 

MySQL, DBeaver 설치 및 연동

1. MySQL 설치 MySQL :: Download MySQL Installer Select Operating System: Select Operating System… Microsoft Windows Select OS Version: All Windows (x86, 32-bit) Windows (x86, 32-bit), MSI Installer..

rokroks.tistory.com

 

1. Spring initializr 에서 프로젝트 생성

본인의 Java 버전에 맞게 선택 후 Dependencies에 필요한 것들을 추가한다.

 

 

 

2. build.gradle에 bootstrap 추가

1번의 프로젝트를 다운받아 build.gradle 파일의 dependensies에 bootstrap을 추가한다.

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
	implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
	implementation 'org.springframework.boot:spring-boot-starter-web'
	compileOnly 'org.projectlombok:lombok'
	runtimeOnly 'mysql:mysql-connector-java'
	annotationProcessor 'org.projectlombok:lombok'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
	runtimeOnly 'org.webjars:bootstrap:4.5.0' //추가
}

 

3. src > main > resources > application.properties 추가

아래 내용을 위 파일에 추가한다.

spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:mysql://${MYSQL_HOST:localhost}:3306/test?serverTimezone=UTC&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=1234

spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
  • spring.jpa.hibernate.ddl-auto : JAVA의 Entity를 참고하여, Spring Boot 실행 시점에 자동으로 필요한 데이터베이스의 테이블을 설정
    • none : 아무것도 실행하지 않음
    • create : SessionFactory 시작 시점에 Drop을 실행하고 Create를 실행
    • create-drop : SessionFactory 시작 시점에 Drop 후 Create를 실행, SessionFactory 종료 시 Drop
    • update : 변경된 Schema를 적용 (데이터는 유지)
    • validate : update처럼 Object를 검사하지만, Schema는 변경하지 않음. 변경된 Schema가 존재하면 변경사항을 출력하고 서버 종료
  • spring.datasource.url : 데이터베이스 URL

 

  • spring.mvc.view... : 웹 실행 시 아래 에러 해결

 


Reference

 

[Spring Boot] 게시판 구현 하기 (1) - 글 작성 & 글 목록 출력

이번 시간에는 Spring Boot와 MySQL를 연동하고 게시판 기능의 글 작성과 글 목록 출력을 구현해보겠습니다.

kyuhyuk.kr

 

 

[Spring] "This application has no explicit mapping for /error, so you are seeing this as a fallback." 문제 해결

Eclipse에서 다음과 같이 index.html을 만들고 main code를 실행하니 "This application has no explicit mapping for /error, so you are seeing this as a fallback." 에러 출력됨 해결책: [src/main/resource..

hororolol.tistory.com

 

반응형

원격 DB에 접속할 때는 드라이버만 있어도 되지만 로컬 DB를 사용하려면 DB를 설치해야 한다.

 

1. MySQL 설치

 

MySQL :: Download MySQL Installer

Select Operating System: Select Operating System… Microsoft Windows Select OS Version: All Windows (x86, 32-bit) Windows (x86, 32-bit), MSI Installer 8.0.25 2.4M (mysql-installer-web-community-8.0.25.0.msi) MD5: 7f64b7ca2c526c359919d9db1bc8d669 | Signatu

dev.mysql.com

 

시스템 환경변수 > PATH C:\Program Files\MySQL\MySQL Server 8.0\bin 추가

cmd에서 MySQL 접속 확인 : mysql -u root -p

 

 

 

2. DBeaver 설치

 

Download | DBeaver Community

Download Tested and verified for MS Windows, Linux and Mac OS X. Install: Windows installer – run installer executable. It will automatically upgrade version (if needed). MacOS DMG – just run it and drag-n-drop DBeaver into Applications. Debian package

dbeaver.io

 


 

3. DBeaver에 MySQL 연결

※ 주의 : serverTimezone 값은 default로 비어있는데 그냥 생성 시 다음과 같은 오류가 발생한다.

(The sever time zone value ... is unrecognuzed or represents more than one time zone.)

 

 

해결 : Connection settings > Driver properties > severTimezone = UTC 입력

 

 

반응형

DOM (Document Object Model)

  • 문서 객체 모델 : 트리 형태의 프로그래밍 도구 (위>아래로 노드 쌓임)
  • HTML, XML을 프로그래밍적으로 다루기 위한 도구 (웹 페이지 문서를 표현, 저장, 조작함)
  • 문서의 논리적 구조, 문서가 접근되고 조작되는 법을 정의
  • 구조화된 노드(태그)속성, 기능(JS 함수)을 가진 객체로 표현

 

 

JS (JavaScript)

웹 페이지를 위한 프로그래밍 언어 (JIT 컴파일 PL)

DOM으로 HTML을 웹이 애플리케이션처럼 동작하는데 도움을 줌

비 브라우저 환경에서도 사용 (Node.js)

 

자바스크립트로 DOM 선택하기

  • document.querySelector('선택자') : 선택자의 정보를 통해 요소를 집어내는 함수
  • document.createElement('html요소') : 자바스크립트로 HTML 요소를 만드는 함수
  • document.body.appendChild() : body 요소 내부에 새로운 요소를 넣는 함수
var element=
document.querySelector('Head');
console.log(element.nodeName); //Head
<script> //HTML 요소를 불러온 뒤에 아래 함수 실행됨
    window.onload=function(){ //h1 태그 가진 html 요소 생성
    var heading=document.createElement('h1')
    heading.innerText='Hello, world'
    document.body.appendChild(heading)
    }
</script>

 

 


Reference

 

실용적인 웹 프로그래밍 - 인프런 | 학습 페이지

지식을 나누면 반드시 나에게 돌아옵니다. 인프런을 통해 나의 지식에 가치를 부여하세요....

www.inflearn.com

 

반응형

웹 서비스에 대해 공부하기 앞서 HTML, CSS를 간략하게 짚어보자

 

HTML

마크업 언어 : 문서의 요소를 태그를 이용해 정의 (NOT PL)

브라우저에게 웹 페이지를 어떻게 구성할지 기술하는 언어

 

문법

  • 중첩태그 가능
  • 블록 단위 요소 (display:block) : 항상 새 줄에서 시작, 가능한 너비 모두 차지
  • 인라인 요소 (display:inline) : 새 줄에서 시작 X, 필요한 만큼만 너비 차지
  • 인라인 블록 (display:inline-block) : 새 줄에서 시작 X (인라인특징), 너비와 높이 가짐 (블록특징)

 

1) 블록 요소 

웹 페이지를 나타내는 구조적 요소 (단락, 목록, 탐색메뉴, 바닥글, ...)

인라인 요소 안에 중첩불가, 다른 블록 요소 안에 중첩가능

 

2) 인라인 요소 

블록 레벨 요소 안에 존재 (주로 텍스트의 구문 : <a>, <em>, <strong>, ...)

 

블록 예제

 

인라인 예제
인라인 블록 예제

 

- Void 요소

Single tag, 닫는 태그 없음. 문서에 삽입/ 첨부하는 경우 (<img>, <embed>, ...)

<img src="sample.png">

 

- 속성

요소에 대한 추가정보 제공 (id, disabled, onclick, ....)

<div id="hello"></div>

 

<html> : 모든 html 요소를 감싸는 역할

<meta> : 웹 페이지의 charset 지정 (utf-8)

주석 : <!-- ○ -->

 


CSS

<style></style> : HTML 콘텐츠와 외부 스타일을 구성 

 

선택자와 선언부로 구성

  • 선택자 : h1 
    • 조상 자손 선택자 : ul 아래의 모든 태그 선택, 적용 (ul li)
    • 부모 자식 선택자 : 선택한 것 바로 밑의 선택자만 선택, 적용 (#lecture>li)
    • 동시 선택자 : 해당하는 두개의 태그를 동시 선택, 적용 (ul, ol)
  • 선언부 : {color: blue; font-size: 12px; }

선택자와 선언부

 

- id속성 : 유일한 하나의 HTML element에만 적용 ( #id값 )

 

- class 속성 : 같은 클래스 내 모든 요소들 속성 변경 ( .id값 )

 


Reference

 

실용적인 웹 프로그래밍 - 인프런 | 학습 페이지

지식을 나누면 반드시 나에게 돌아옵니다. 인프런을 통해 나의 지식에 가치를 부여하세요....

www.inflearn.com

 

반응형

크롤링 환경 만들기

 

1. Python 공식 사이트(https://www.python.org/downloads/)에서 Python 설치하기

 

2. PIP 인스톨용 스크립트를 저장하기 (https://bootstrap.pypa.io/get-pip.py)  ‘다른 이름으로 링크 저장’

   

   cmd > 링크 저장한 경로에서 PIP 설치하기

 

python get-pip.py

 

 

3. requests, BeautifulSoup 라이브러리 설치하기

 

pip install beautifulsoup4 requests

 

  • requests : html 데이터 요청
  • BeautifulSoup : html 파싱

Requests 테스트

내 티스토리 주소를 requests 해봤다

import requests
from bs4 import BeautifulSoup
def crawling():
    url='https://rokroks.tistory.com/'
    response = requests.get(url)
    print(response)
    print(response.status_code) #응답코드, 200이면 성공
    print(response.text)
crawling()

▲실행결과

 

잘 불러오는 것을 볼 수 있다. 다음엔 원하는 내용을 파싱해보자.

 

 


Reference

 

Windows용 PIP 설치하기(How to Install PIP For Python on Windows) - 아크몬드넷

PIP란? pip는 파이썬으로 작성된 패키지 소프트웨어를 설치 · 관리하는 패키지 관리 시스템이다. Python Package Index (PyPI)에서 많은 파이썬 패키지를 볼

archmond.net

 

파이썬 크롤링 시작하기 - html 구조와 간단한 크롤링

crawling html 간단한 구조 tag head title body p a href img h1, h2, h3, h4 input button css란? tag별 스타일링 id, class 크롤링 requests beautiful soup 네이버 블로그 크롤링 해보기 크롤..

software-creator.tistory.com

 

반응형

'Web > 실습' 카테고리의 다른 글

웹 서비스 다뤄보기 (2) - JavaScript와 DOM  (2) 2021.05.12
웹 서비스 다뤄보기 (1) - HTML, CSS  (0) 2021.05.12
크롤링 (1)-개념 및 방식  (0) 2021.05.03

※ 본 게시글은 '배워서 바로 쓰는 스프링 프레임워크' 책으로 공부한 내용을 정리한 글입니다 ※


1. 스프링 프레임워크란

: 자바 엔터프라이즈 애플리케이션 개발을 단순하게 해주는 오픈소스 애플리케이션 프레임워크이다.

  

 

Spring Framework

 

spring.io

▲스프링 프로젝트 홈페이지 : 참조문서와 API를 볼 수 있음

 

 

스프링의 특징

  • 구조가 잘 잡히고 유지 보수가 쉬우며 테스트에 좋음
  • 독립 실행 자바 애플리케이션/ 웹 애플리케이션/ 애플릿 등 다양한 유형의 자바 애플리케이션 개발 가능
  • POJO로 개발하는 것을 권장 (Plain Old Java Object 기존자바객체)
  • 추상화 계층 제공 (준비코드 처리) -> 상호작용 쉬워짐

 


 

2. 스프링 모듈

스프링은 담당하는 애플리케이션 개발 요소에 따라 여러 모듈로 구성된다.

모듈 그룹 설명
핵심 컨테이너 스프링 기반을 이루는 모듈
◆ spring-core / spring-beans : 스프링 DI 기능과 IoC 컨테이너 구현 지원
◆ spring-expression : SpEL(스프링 표현언어, 애플리케이션 객체설정) 지원
AOP와 계측 ◆ spring-aop : AOP 기능 지원(AOP : Aspect Oriented Programming 관점기반 프로그래밍)
◆ spring-intrument : 클래스 계측지원
메시징 ◆ spring-meassaging : 메시지 기반 애플리케이션 개발에 유용
데이터 접근/통합 DB나 메시징 공급자와의 상호작용을 쉽게해주는 모듈
◆ spring-jdbc : JDBC를 사용한 DB사용 단순화 지원

spring-orm : ORM(객체-관계 매핑) 프레임워크 통합 지원 (하이버네이트, JPA)
spring-jms : JMS 공급자와의 상호작용 지원
 spring-tx : 프로그램을 통한 선언적 트랜잭션 관리 지원
 spring-web : 모든 웹 모듈이 공통으로 사용하는 클래스, 인터페이스 정의
 spring-webmvc : servlet, RESTful 웹 개발을 쉽게 해줌 (블로킹방식들)
 spring-webflux : 반응형(논블로킹), RESTful 웹 개발을 쉽게 해줌 
 spring-websocket : 웹소켓 프로토콜 지원
테스트  spring-test : 단위/통합테스트 지원

스프링의 여러 모듈은 애플리케이션에 꼭 필요한 부분만 포함하도록 설계한다.

 

 

 

스프링 배포판 명명규약

spring-<짧은 모듈 이름>-<스프링 버전>.jar

(짧은 모듈 이름 : aop, beans, context, expressions)

 

 

 

스프링 모듈 간 상호 의존 관계

 

의존관계 : 객체가 다른 객체와 상호작용하는 경우

출처 taejin0527.github.io

 

 


 

3. 스프링 기반 프레임워크

프레임워크 설명
스프링 시큐리티 엔터프라이즈 애플리케이션을 위한 인증, 권한부여 프레임워크
- XML에 빈 몇개를 설정하는 것 만으로 인증, 권한의 특징 부여 가능
스프링 데이터 여러 유형의 DB를 일관성있는 프로그래밍 모델로 사용가능하게 해줌
스프링 배치 애플리케이션이 뭉텅이로 작업을 처리하는 경우
스프링 통합 EA (기업 애플리케이션 통합) 제공
스프링 소셜 SNS와 상호 작용해야 하는 경우

사용중인 스프링 버전과 호환되는 버전인지 확인 후 사용하기

 

 

 


스프링의 특징과 모듈, 프레임워크에 대해 공부하고 정리해보았다. 다음은 IoC 컨테이너에 대해 알아보자.

반응형

'Web > Spring' 카테고리의 다른 글

스프링 프레임워크 (2) - IoC 컨테이너, Bean  (0) 2022.04.28
Spring Boot -프로젝트 생성  (0) 2021.05.14
스프링 공부 시작!  (0) 2021.05.04

그동안 웹과는 관련이 없는 프로젝트를 진행했다.

 

마지막으로 웹을 사용했던건 학부 졸업작품때 PHP로 주먹구구식 페이지를 구현했던 것..

(그마저 펌웨어가 주였던 작품.....)

 

그래서인지 항상 웹은 공부하기 싫으면서도 모르니까 해야만하는 존재였다. 

 

구구절절 어쩌구 어쨌든 재택근무를 하게 되어 이번 기회에 스프링공부도 시작해보려고 한다.

 

현미발 ㅎ2

부끄럽지만 작년에 법카로 구매했던 '배워서 바로 쓰는 스프링 프레임워크' 책으로 공부할 예정이다.

반응형

크롤링(Crawling)

크롤링이란 웹에서 데이터를 수집하여 원하는 데이터를 추출하는 기술이다.

데이터를 검색, 색인, 가공까지 가능하기에 방대한 자료들을 활용하는 검색엔진 혹은 특정 정보들을 분석해야하는 분야에서 다양하게 사용되고 있다.

 


1. 크롤링 방식

1) 웹 페이지에 데이터 요청

정보를 추출하기 위해 웹에 요청하는 방식은 Get과 Post가 있다.

 

  • Get : URL을 통해 서버에 정보를 전달. URL 특성 상 길이제한이 있어 일반적으로 적은 양의 정보를 전달할 때 사용.
  • Post : 요청과 응답이 웹 페이지의 본문 안에서 일어나 글자 수의 제한이 없음.

이 단계에서 Python은 주로 requests 로 처리한다.

 

import requests

r=requests.get(target_url)

 

target_url 변수에 크롤링 하려는 웹페이지의 URL을 문자열로 저장한 뒤 requests.get()으로 불러온다.

 

 


 

2) 데이터 파싱

데이터를 추출하기 위해서는 가져온 웹 페이지를 파싱하는 단계가 필요하다.

파싱 :  페이지(문서, html 등)에서 원하는 데이터를 특정 패턴이나 순서로 추출하여 정보로 가공하는 것

 

이 단계에서 Python은 Beautiful soup 로 처리한다. (HTML, xml 파싱 라이브러리)

 

from bs4 import BeautifulSoup

#lxml파싱
lxml = BeautifulSoup(r.content, 'lxml')  #r=requests.get(target_url)

#HTML파싱
html = get_html(target_url)
soup = BeautifulSoup(html, 'html.parser')

 

1)에서 가져온 데이터를 파싱한다. (lxml이 성능향상에 좋음)

 

 


 

3) 데이터 추출

2)에서 파싱한 데이터에서 원하는 데이터를 추출, 처리한다.

 

이 단계에서 Python은 soup 객체의 find_all 혹은 find 함수를 사용해 데이터를 추출한다.

 

result = soup.find_all("a")
print(len(result))

 

 


2. 제한 규약 (robots.txt)

지식재산권을 침해하는 등의 피해를 방지하기 위해 웹 페이지마다 크롤링을 제한하는 규약이 있다.

웹 사이트 주소 끝에 'robots.txt'을 입력하면 크롤링을 허용하는 범위를 알려준다. 

 

나무위키에서 크롤링이 가능한 범위

 

크롤링개념과 크롤링 방식에 대해 알아보았다. 다음 회차에 Python으로 간단히 크롤링해보자.

 

 


Reference

 

웹 크롤링에 대해서

Data and Visualization

lumiamitie.github.io

 

크롤링 - 나무위키

이 저작물은 CC BY-NC-SA 2.0 KR에 따라 이용할 수 있습니다. (단, 라이선스가 명시된 일부 문서 및 삽화 제외) 기여하신 문서의 저작권은 각 기여자에게 있으며, 각 기여자는 기여하신 부분의 저작권

namu.wiki

 

파이썬으로 크롤링 하기

requests와 Beautiful Soup을 사용해보기

medium.com

 

반응형

+ Recent posts