- 2) Identity 서비스 : keystone 2021.01.05
- 1) Cloud? 2021.01.05
- [Spring] Annotation "@" 2021.01.05
- [Programmers] 코딩테스트 연습 - 두 개 뽑아서 더하기 2020.10.13
- [linux] 파일 시스템 구조 2020.07.31
- [linux] 1. 리눅스 란 2020.07.31
- array to ArrayList 2020.07.28
- [spring] 2. 한글 처리 filter (web.xml) 2020.06.09
- [RPA] A2019 Distributed Architecture (분산 아키텍처) 2020.06.09
- [RPA] A2019 Enterprise Control Room 2020.06.09
- [python] Beautifulsoup 네이버 뉴스 크롤링 2020.05.27
- [python] 파이썬 네이버 크롤링 하여 csv 파일로 2020.05.25
- [메모] Automation Anywhere Comparison 주소 2020.05.11
- [linux] 명렁어 안먹힐 때 2020.05.06
- [Spring] 의존 주입 - 작성중 2020.04.21
- [Spring] 클래스 컨테이너 2020.04.20
- [spring] - pom.xml 의 dependency 2020.04.20
- [spring] - 스프링 프로젝트 생성 2020.04.19
- [git CLI] 명령어 사용해보기 - 추가중 2020.04.18
- [weblogic] 설치 centos7 2020.04.15
과정
1. Database 생성
//데이터 베이스 생성
CREATE DATABASE keystone;
//keystone 계정에 모든 권한을 부여하며,
//keystone 계정은 localhost 로 접속가능하게 한다.
//비밀번호는 openstack
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'openstack';
//계정이름 keystone의 접속 주소를 외부도 허용한다. 비밀번호는 openstack
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%'IDENTIFIED BY 'openstack';
2. 관리 토큰 생성
openssl rand -hex 10
> 나오는 값을 저장
3. Keystone 설치
4. Apache HTTP Server 설치
IaaS : 인프라를 빌려주는 서비스
1) 인프라 : ex) 컴퓨터 자원 (CPU, Memory, HDD, 스토리지, 네트워크 장비등을 빌려줌)
PaaS : 플랫폼을 빌려주는 서비스
1) 플랫폼 : 서비스 개발, 배포 등을 위해 필요한 안정적인 플랫폼 제공.
SaaS : 서비스를 빌려주는 서비스
1) 서비스 : Gmail, DropBox, 네이버 클라우드... 등 웹에서 쓰는 서비스들
사진 출처
<terms.naver.com/entry.nhn?docId=3580686&cid=59088&categoryId=59096>
관리할 부분이 줄어들고 서비스 개발에 초점
@Controller (view 를 반환)
Controller Class 에 @Controller 를 작성합니다.
해당 어노테이션의 의미는 "이 class 는 Controller 이며" 해당 클래스가 bean으로 등록됩니다.
해당 class 가 Controller로 사용됨을 Spring Framework에 알립니다.
1) String 을 반환하는 메서드에서 return "main"; 을 하면, views/main.jsp 파일을 찾음
2) ModelAndView 를 반환하는 메서드에서 return mav; 를 하면, ModelAndView 객체를 반환하며, setViewName으로 view 화면과, addObject() 로 객체를 View 단에 넘겨줄 수 있음.
@ResponseBody
json 형태로 응답해줄 수 있으며, view 를 반환하지 않음
'Spring Framework > Annotation' 카테고리의 다른 글
Spring @Bean - 스프링 빈 (0) | 2021.07.08 |
---|
import java.util.HashSet;
import java.util.Set;
import java.util.Arrays;
class Solution {
public int[] solution(int[] numbers) {
int[] answer = {};
int answers = 0;
Set<Integer> hashset = new HashSet<>();
//System.out.println("Size of Array : " + numbers.length);
for (int n = 0; n < numbers.length; n++) // 0 1 2 3 4
{
for (int m = n + 1; m <= numbers.length-1; m ++)
{
//System.out.println("Selected Array : " + "["+ n +"]" + "["+ m +"]");
answers = numbers[n] + numbers[m];
hashset.add(answers);
}
}
answer = new int[hashset.size()];
int j = 0;
for(int i : hashset)
{
answer[j] = i;
//System.out.println(i + "=?" + answer[j]);
j++;
}
Arrays.sort(answer);
return answer;
}
}
'AREA(지속적인 일상) > 01_Programmers' 카테고리의 다른 글
[JAVA] HashMap 의 중복 원소 갯수 세기 (0) | 2021.04.17 |
---|
출처
리눅스를 설치하면, 상당히 많은 디렉토리가 자동으로 생성된다. 이러한 디렉토리는 대부분의 유닉스와 유사하다. DOS에서는 거의 사용자 임의대로 디렉토리의 이름을 정하여 사용하나, 유닉스에서는 아래와 같은 디렉토리의 이름들과 구조로 대부분 정해져 있다.
−목차
설명
/bin
/bin은 "binaries"의 약자이며, 실행 파일들이 모여 있다. 이 디렉토리에는 많은 필수적인 프로그램들이 포함되어 있다. "ls /bin"을 해보면 이 안의 파일들을 볼 수 있으며 cp, ls, mv 같은 몇 개의 명령어들은 알아볼 수 있을 것이다. 이것들은 이들 명령어들의 실제 프로그램들이다. 따라서, ‘cp’ 명령을 입력하면, /bin/cp 프로그램이 실행되는 것이다. “ls -F”를 사용하면, /bin의 대부분의 파일들에서 "*"가 파일명 끝에 추가되어 있는 것을 볼 수 있을 것이다. 이것은 이 파일이 실행 가능한 파일임을 표시한다.
/dev
/dev 안의 파일들은 디바이스 드라이버들이다. 이것들은 디스크 드라이버, 모뎀, 메모리 등과 같은 시스템 디바이스나 자원들을 액세스하는데 사용된다. 예를 들면, 파일들로부터 정보를 읽어볼 수 있는 것과 같이, /dev/mouse를 액세스함으로써 마우스로부터 입력되는 정보를 읽어 올 수 있다. fd로 시작하는 파일 이름들은 플로피 장치들이다. fd0는 첫 번째의 플로피디스크 드라이브이며, fd1은 두 번째이다. 이 이외의 것들은 보통 플로피 디스크의 특정 형태를 표시한다. 예를 들면, fd0H1440은 첫 번째 드라이브(A: 드라이브)의 고밀도 3.5인치 디스켓을 말한다. 여기서는 가장 많이 사용되는 디바이스 파일을 열거하였다.
/dev/console
시스템의 콘솔이며, 모니터가 시스템에 직접 연결되어 있음을 말한다.
/dev/ttyS 와 /dev/cua
직렬 포트를 액세싱한다. 예를 들면, /dev/ttyS0는 도스 상의 "COM1"을 말하며, /dev/cua 는 "callout" 장치로써, 이것은 모뎀을 쓸 때 사용된다.
hd로 시작하는 디바이스 이름
하드 디스크를 액세스한다. /dev/hda는 첫 번째 하드 디스크 전체를 말하며, hda1은 /dev/hda의 첫 번째 파티션을 말한다.
sd로 시작하는 디바이스 이름
SCSI 하드 디스크 드라이브나 테이프 드라이브 같은 SCSI 장치들을 말한다. 만약 SCSI 하드 디스크를 가지고 있다면, /dev/hda를 액세스하는 대신에 /dev/sda를 액세스하여야 할 것이다.
lp로 시작하는 디바이스 이름
병렬 포트를 말하며, /dev/lp1은 도스의 "LPT1"와 같다.
/dev/null
"black hole"로서 사용되는 것으로서 어떠한 데이터를 이 장치에 보내면 모두 없어지게 된다. 예를 들면, 화면에 아무 것도 출력되지 않기를 바랄경우, /dev/null로 출력을 보내면 된다.
/dev/tty로 시작되는 디바이스 이름
시스템에 있는 "가상 콘솔 : Virtual Console(VC)"이다. /dev/tty1은 첫 번째 VC이며, /dev/tty2는 두 번째이다. 가상 콘솔은 한 화면이 여러개의 가상 터미날을 갖는 것이다. 각각의 터미날은 [alt-F1], [alt-F2] 등을 누름으로서 전환할 수 있으며, 같은 사용자나 다른 사용자로 login 할 수 있다.
/dev/pty로 시작하는 디바이스 이름
이것들은 원격 login 세션에서 사용되는 "pseudo-terminal"들이다. 예를 들어, 사용중인 컴퓨터가 네트워크에 연결되어 있고, telnet으로 login하려고 할 때, /dev/pty 디바이스를 사용한다.
/etc
/etc는 시스템 설정 파일, 프로그램, 유틸리티 등 다양한 프로그램들을 포함하고 있으며 대부분의 파일들은 관리자에 의해 사용되는 것이다. 리눅스 etc 폴더 이해하기참조
/home
/home은 사용자의 홈 디렉토리로서 login하였을 경우, 처음으로 위치하게 되는 디렉토리이다. 예를 들어, /home/larry는 사용자 "larry"의 홈 디렉토리이다. 시스템이 새로 설치되면, 이 디렉토리 안에 아무 것도 포함되어 있지 않다.
/lib
/lib는 공유 라이브러리 이미지를 포함하고 있다. 이 파일들은 일반적으로 사용되는 많은 프로그램에서 호출되는 코드들을 포함하고 있다. 어떤 프로그램이 공유 될 수 있는 루틴을 단독으로 포함하지 않고, 그 루틴을 일반 장소인 /lib 안에 저장한다. 이렇게 함으로서 실행 파일의 크기를 작게 만들어 사용자의 공간을 넓힐 수 있다.
/media
DVD, CD-ROM, USB 등과 같은 탈부착이 가능한 장치들의 마운트포인트로 사용되는 디렉토리.
/mnt
/media 디렉토리와 비슷한 용도로 탈부착이 가능한 장치들에 대하여 일시적인 마운트포인트로 사용하는 디렉토리.
/proc
/proc는 "가상 파일 시스템"이다. 이 디렉토리의 내용들은 시스템에서 운영되고 있는 다양한 프로세서들에 관한 내용과 프로그램에 대한 정보를 포함하고 있다. 이 디렉토리에서 볼 수 있는 것은 실제 드라이브에 저장되어 있는 내용이 아니며, 메모리상에 저장되어 있는 것이다.
/tmp
많은 프로그램들은 여러 정보가 임시 파일 안에 저장되는 것을 필요로 한다. 이런 파일들이 위치할 장소가 /tmp 이다.
/usr
시스템이 아닌 일반사용자들이 주로 사용하는 디렉토리. 즉, c++, chsh, cpp, crontab, du, find등과 같이 일반사용자들용 명령어들은 /usr/bin 에 위치한다. /usr는 실제 작업을 위한 응용 패키지들이 설치되어 있는 디렉토리이다. 따라서 많은 서브디렉토리를 포함하고 있다.
/usr/bin
/usr/bin은 모든 유닉스 시스템이 소유하고 있는 소프트웨어를 담기 위한 진정한 warehouse이다. 이것은 /bin 같은 곳에는 없는 유용한 실행 파일들을 가지고 있다.
/usr/etc
/etc는 시스템 파일과 사양 파일이 있는 것처럼, /usr/etc에는 더많은 유틸리티와 파일들이 있다. 일반적으로 /usr/etc에 있는 파일들은 /etc에 있는 것만큼의 반드시 필요로 한 것들은 아니다.
/usr/lib
/usr/bin은 /lib에서 찾을 수 있는 "stub"와 "static"와 같은 라이브러리를 포함하고 있다. 프로그램을 컴파일할 때, 프로그램은 /usr/lib에 있는 파일들과 "link"되며 이 라이브러리 안에 실행 코드가 필요로 할 때, /lib를 찾는다. 또한, 많은 프로그램들이 /usr/lib 안에 사양 파일을 저장한다.
/usr/local
/usr/local은 /usr에 포함된 것과 매우 유사하고, 시스템에 반드시 필요로 하는 것은 아니지만, 매우 유용한 것들을 포함하고 있다. 일반적으로, /usr/local에 있는 프로그램들은 시스템의 특성을 결정짓는 소프트웨어들이 있으며, 따라서, 유닉스 시스템마다 매우 다르다. TeX(문서 형식화 시스템)나 Emacs(에디터)를 설치하였다면 이 디렉토리에서 찾을 수 있을 것이다.
/usr/man
이 디렉토리는 실제적인 man page를 포함하고 있다. 또한, 모든 man page 를 위한 두 개의 서브 디렉토리가 있다. 예를 들면, /usr/man/man1 은 section 1 안에 man page를 위한 형식화되지 않은 소스가 포함되어 있으며, /usr/man/cat1은 section 1을 위한 형식화된 man page가 포함되어 있다.
/usr/spool
/usr/spool 은 어떤 프로그램을 위한 "spool"된 파일들을 포함하고 있다. 예를 들면, 만약 사용중인 컴퓨터가 네트워크에 연결되어 있다면, 받은 메일은 /usr/spool/mail 안에 읽거나 지우기 전까지 저장될 것이다. 뉴스 글을 보내거나 받을 때는 그 내용이 /usr/spool/news에 있게 된다.
/usr/src
/usr/src는 시스템에 있는 다양한 프로그램의 컴파일 되지 않은 소스 코드들을 포함하고 있다. 여기서 가장 중요한 것은 /usr/src/linux이며, 이것은 리눅스 커널의 소스 코드를 포함하고 있다.
/var
시스템운용중에 생성되었다가 삭제되는 데이터를 일시적으로 저장하기 위한 디렉토리. 거의 모든 시스템로그파일은 /var/log 에 저장되고, DNS 의 zone 설정파일은 /var/named 에 저장되고, 메일파일은 /var/spool/mail 에 저장되며, 크론설정파일은 /var/spool/cron 디렉토리에 각각 저장됨.
/lost+found
최상위 디렉토리인 / 디렉토리에만 존재하는 것이 아니라 파일시스템마다 존재할 수 있는 디렉토리임. 이 디렉토리는 fsck 또는 e2fsck 등과 같은 파일시스템 체크 및 복구유틸리티 실행후에 주로 생성이 되는 것으로서 복구되지 않은 채로 블록(block)만 존재하는 파일 즉, 연결이 끊어진 inode 들이 숫자파일형태로 존재하는 곳임. 숫자형태로 존재하는 파일들은 mv 명령어로 파일이름만 바꾸면 바로 복구될 수 있다.
1. 1991년 11월 리누스 토발즈가 공개
1) 유닉스 기반 : 유닉스는 중대형 컴퓨터에서 사용 2) 개인컴퓨터용 공개 운영체제 |
2. 오픈소스
무상으로 공개된 소스코드 또는 소프트웨어 |
3. 파일 구성과 시스템 기능의 일부는 유닉스 기반
시스템(영어: system)은 각 구성요소들이 상호작용하거나 상호의존하여 복잡하게 얽힌 통일된 하나의 집합체(unified whole)다. 또는 이 용어는 복잡한 사회적 체계의 맥락에서 구조와 행동을 통제하는 규칙들의 집합체를 일컫기도 한다. |
4. 핵심 커널은 유닉스와 차이가 있음
커널(Kernel)은 운영체제의 핵심을 이루는 요소로서 컴퓨터내의 자원을 사용자 프로그램(User Application)이 사용할 수 있도록 관리하는 프로그램 |
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
public class Solution {
public String solution(String[] participant, String[] completion) {
String answer = "";
ArrayList<String> arr = new ArrayList<String>();
ArrayList<String> arr1 = new ArrayList<String>();
Collections.addAll(arr, participant);
Collections.addAll(arr1, completion);
Iterator<String> iter = arr.iterator();
Iterator<String> iter1 = arr1.iterator();
while (iter.hasNext())
{
System.out.println(iter.next());
}
while (iter1.hasNext())
{
System.out.println(iter1.next());
}
return answer;
}
public static void main(String[] args) {
Solution sol = new Solution();
String[] participant = {"a", "b", "c"};
String[] completion = {"a", "c"};
sol.solution(participant, completion);
}
}
'JAVA' 카테고리의 다른 글
[Java] Map 자료형 저장, 출력 (0) | 2021.01.07 |
---|---|
[JAVA] - 자바 Email 전송하기 (0) | 2019.12.26 |
[JAVA] window builder - login (0) | 2019.11.18 |
[JAVA] WINDOW BUILDER (0) | 2019.11.18 |
[JAVA] 읽으면서 정리하기 (0) | 2019.11.10 |
web.xml 에 적용
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
'Spring Framework > Spring' 카테고리의 다른 글
[Spring] json 형식 주고 받기 (0) | 2021.01.09 |
---|---|
[Spring] 컨트롤러에서 파라미터를 받는 방법 (0) | 2021.01.07 |
[Spring] 의존 주입 - 작성중 (0) | 2020.04.21 |
[Spring] 클래스 컨테이너 (0) | 2020.04.20 |
[spring] - pom.xml 의 dependency (0) | 2020.04.20 |
Bot Creators : 봇을 생산하는 생산자
Control Room : 모든게 작업이 이루어지는 중앙집중 웹기반 서비스
Bot Runners : 봇을 실행 (attended - 사람을 거쳐 실행 / unattended - 사람을 거치지 않고 실행)
HA / DR을 지원하는 분산 아키텍처
HA : 이중화
DR : 재해복구
'RPA(AA)' 카테고리의 다른 글
[RPA] A2019 Enterprise Control Room (0) | 2020.06.09 |
---|---|
[RPA] Recorder - Smart / Screen / Web (0) | 2020.03.31 |
[RPA] Automation Anywhere Certified Advanced RPA 4번째꺼(작성중) (0) | 2020.03.30 |
[RPA] Schedule Task (0) | 2020.03.27 |
[RPA] AA - 메세지박스 사용해보기, 변수 생성, if else문 (0) | 2020.03.27 |
1) A2019 Enterprise 제어실(Control Room)
(1) 기능1 : 봇과 봇 러너의 다양한 기능을 관리를 웹 기반 서비스로 제공
ㄱ) 봇 스케줄링
ㄴ) 실행, 관리
ㄷ) 배포
(2) 구성 요소
ㄱ) 컨트롤룸 서버
a) Control Room Reverse Proxy : 원격 연결 요청을 listen 후 목적에 맞는 서비스로 전달
b) Control Room Proxy 관리 :
Control Room Service :
Control Room Messaging :
Control Room Caching :
2) 특징
(1) 중앙 집중식 자동화 배포
ㄱ) 봇 실행을 위한 단일 액세스 지점 및 제어 역할
ㄴ) 봇 업로드 및 다운로드 기능을 제공
ㄷ) 모든 예약은 Control Room 에서 관리. 임시 or 사전 정의된 일정으로 배포
(2) 중앙 집중식 액세스 제어
ㄱ) 최소 권한 및 액세스는 사용자 액세스를 제어. RBAC (역할 기반 액세서 제어)를 통해 구현
ㄴ) 모든 사용자 및 역할은 제어실에서 작성 및 관리
(3) 협업 중앙화 된 인력 관리
ㄱ) 대시보드 : 전체 자동화 인프라에 대한 단일 뷰 제공
ㄴ) 이벤트, 예외 및 경고와 함께 자동화에서 실시간 하트 비트 및 원격 측정을 수신
ㄷ) 무단 사용자는 Bot Runner 에서 진행중인 자동화를 일시 중지, 재개 또는 중지 불가
ㄹ) 모든 자동화 데이터 내역은 Audit Logs로 확인 가능
> A2019 는 컨트롤룸 서버를 중심으로 봇생성, 관리, 제어, 배포, 사용자관리, 스케줄링 등 모든게 다이루어 진다.
= 컨트롤룸만 다 파악하면 모든 기능을 다쓸수 있다
'RPA(AA)' 카테고리의 다른 글
[RPA] A2019 Distributed Architecture (분산 아키텍처) (0) | 2020.06.09 |
---|---|
[RPA] Recorder - Smart / Screen / Web (0) | 2020.03.31 |
[RPA] Automation Anywhere Certified Advanced RPA 4번째꺼(작성중) (0) | 2020.03.30 |
[RPA] Schedule Task (0) | 2020.03.27 |
[RPA] AA - 메세지박스 사용해보기, 변수 생성, if else문 (0) | 2020.03.27 |
https://bumcrush.tistory.com/116
크롤링을 하다보니 "태그위치 달라지는" 날짜를 얻어오는 것에 대해 방법을 찾다가 위의 글을 찾게 되었습니다.
<크롤링 할 내용>
-
1. 기사 - title
-
2. 신문사 - newspaper
-
3. 날짜 - date
-
4. 내용 요약 - content
-
5. 링크 - link
1. 크롤링을 위한 라이브러리
설치 방법
외부 라이브러리
1) Beautifulsoup - 태그 접근
CMD - 'python -m pip install bs4' 입력 ('제외)
2) pandas (엑셀로 저장할 때) or python-docx(워드로 저장)
CMD - 'python -m pip install pandas'
CMD - 'python -m pip install python-docx'
내부 라이브러리
1) datetime - 저장파일을 시간으로 저장하기 위해서
2) requests - 웹 요청
3) re - 정규식
2. 크롤링을 하려면 html 태그를 알아야하며, 태그의 속성 (href, class, title...) 같은 속성이 필요
크롬도구(F12) -> 빨간 네모 부분 클릭 -> 가져올 기사 Title에 포커스를 두고 클릭 -> 해당하는 부분이 바로 찾아짐
3. html 코드는 아래 처럼 많은 태그들로 이루어 져있고, 아래의 a 태그에는 href, target, class 등과 같은 속성과 strong 태그도 존재
<a href="https://www.zdnet.co.kr/view/?no=20200526125336"
target="_blank"
class=" _sp_each_title"
onclick="return goOtherCR(this, 'a=nws*a.tit&r=1&i=8800011E_000000000000000002189487&g=092.0002189487&u='+urlencode(this.href));"
title="유아이패스, 27일 RPA 세미나 개최">
유아이패스, 27일
<strong class="hl">RPA</strong>
세미나 개최
</a>
4. 검색 파라미터 url 분석
#1일 이내 (현재시간으로부터)
https://search.naver.com/search.naver?&where=news
&query=RPA
&sm=tab_pge
&sort=1
&photo=0
&field=0
&reporter_article=
&pd=4
&ds=2020.05.26.13.23
&de=2020.05.27.13.23
&docid=
&nso=so:dd,p:1d,a:all
&mynews=0
&start=1
&refresh_start=0
#1주일
https://search.naver.com/search.naver?&where=news
&query=RPA
&sm=tab_pge
&sort=1
&photo=0
&field=0
&reporter_article=
&pd=1
&ds=2020.05.20
&de=2020.05.27
&docid=
&nso=so:dd,p:1w,a:all
&mynews=0
&start=1
&refresh_start=0
필터를 넣어서 검색을 해보면 위와 같은 url을 볼 수 있다.
특징을 살펴보자.
- &query= "검색값"
- &sm="tab_pge" 이 값은 검색했을 때 "tab_opt"로 나오고, 페이지를 한번 2페이지로 옴겼다가 1페이지로 돌아오면 됨
- &sort="정렬 방식" 1일 때 최신순
- &pd= "period"의 pd로 생각 된다.
- 필터를 조절하며, 값을 다르게 주었더니 다음과 같은 결과를 얻었다.
&pd =
- '1일 이내'='4',
- '1주이내'='1',
- '1개월 이내' = '2',
- '6개월 이내' = '6',
- '1년 이내' = '5',
- '선택기간' = '3'
&ds= 기간이며, 1일 이내의 시간에 대해서는 2020.05.27.'tt'.'mm' 으로 표시되며, 기준은 현재시간
'Python' 카테고리의 다른 글
[python] 파이썬 네이버 크롤링 하여 csv 파일로 (0) | 2020.05.25 |
---|
from urllib.request import urlopen
from urllib.parse import quote_plus
from bs4 import BeautifulSoup
import pandas as pd
pageNum = 1
search = input('검색어: ')
page = input('끝 페이지 입력')
lastpage = int(page) * 10 -9
searchlist = []
while pageNum < lastpage + 1:
url = f'https://search.naver.com/search.naver?&where=news&query={quote_plus(search)}&sm=tab_pge&sort=0&photo=0&field=0&reporter_article=&pd=0&ds=&de=&docid=&nso=so:r,p:all,a:all&mynews=0&cluster_rank=37&start=1&refresh_start={pageNum}'
html = urlopen(url).read()
soup = BeautifulSoup(html, 'html.parser')
title = soup.find_all(class_='_sp_each_title')
for i in title :
print(i.attrs['title'])
print(i.attrs['href'])
print(pageNum)
temp = []
temp.append(i.attrs['title'])
temp.append(i.attrs['href'])
searchlist.append(temp)
searchfile = pd.DataFrame(searchlist)
pageNum += 10
searchfile.to_csv('naver.csv', encoding = 'CP949', index = False, header = ['제목' , '기사 url'])
'Python' 카테고리의 다른 글
[python] Beautifulsoup 네이버 뉴스 크롤링 (0) | 2020.05.27 |
---|
출처!
위에서 방법을 얻어서 기록해둠
PATH=/usr/local/bin:/bin:/usr/bin
한번 설정해두면 계속 적용이 될 줄 알았으나
계속 풀려서 환경변수 적용을 찾아봄.
리눅스 전역( global ) 로 환경변수 등록
$vi /etc/profile
shift + g
PATH=/usr/local/bin:/bin:/usr/bin
내용 출처
의존 주입 (Dependency Injection)
프로그래밍에서 객체를 만들어서 외부에서 따로 주입하는 방식
제일 안좋은 프로그램 : 변경이 쉽지 않은 프로그램
1. 배터리 일체형 - 장난감 자동차 (배터리가 떨어지면 장난감을 새로 구입해야함) 의존성이 큼
생성자에서 객체에 주입
public class ElectronicCarToy {
private Battery battery;
public ElectroniCarToy() {
battery = new NormalBattery();
}
}
2. 배터리 분리형
setter 메서드에서 객체에 주입
public class ElectronicRobotToy {
private Battery battery;
public ElectronicRobotToy() {
}
public void setBattery(Battery battery) {
this.battery = battery;
}
}
3. 배터리 분리형 - 공장에서 미리 배터리를 넣어놓고, 원할 때 교체
public class ElectronicRobotToy {
private Battery battery;
public ElectronicRobotToy() {
this.battery = battery;
}
public void setBattery(Battery battery) {
this.battery = battery;
}
}
스프링에서의 의존주입
스프링 컨테이너에서 주입하고 의존하는 관계
1. 스프링 DI 설정
ㄱ) 스프링 설정파일 (XML) 파일
ㄴ) GenericXmlApplicationContext 로 파일을 읽음
ㄷ) 스프링 컨테이너에서 큰 객체에 작은 객체가 들어있는 것을 보고 (주입이 되어있다고 함)
ㄹ) 사용할 때는 getBean라고 사용하고, 객체를 생성할 때는 Bean사용
'Spring Framework > Spring' 카테고리의 다른 글
[Spring] 컨트롤러에서 파라미터를 받는 방법 (0) | 2021.01.07 |
---|---|
[spring] 2. 한글 처리 filter (web.xml) (0) | 2020.06.09 |
[Spring] 클래스 컨테이너 (0) | 2020.04.20 |
[spring] - pom.xml 의 dependency (0) | 2020.04.20 |
[spring] - 스프링 프로젝트 생성 (0) | 2020.04.19 |
기존의 자바 프로그램 작성시에 다른 클래스의 메서드를 사용할 때에
객체를 생성하는 것과 스프링에서 객체를 생성하는 방법의 차이.
기존방식
A.java
public class A
{
public void printA()
{
System.out.println("클래스 A");
}
}
MainClass.java
public class MainClass
{
public static void main(String[] args)
{
A a = new A();
a.printA();
}
}
스프링에서 사용하는 방식
- 클래스 컨테이너에 객체를 생성( xml 파일에 작성)
- 클래스에서 클래스 컨테이너 경로를 잡아줌
- 클래스 컨테이너에서 객체를 얻어옴
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 클래스 모음 / 객체 생성 -->
<bean id="a" class="test.A" />
</beans>
A.java
public class A
{
public void printA()
{
System.out.println("클래스 A");
}
}
MainClass.java
import org.springframework.context.support.GenericXmlApplicationContext;
public class MainClass
{
public static void main(String[] args)
{
//spring container에 접근 = applicationContext.xml(클래스 컨테이너)
//1. 클래스를 선언해놓은 컨테이너에 접근하기위해 컨테이너 주소를 적어줌
GenericXmlApplicationContext ctx = new GenericXmlApplicationContext("classpath:applicationContext.xml");
//2. 객체를 가져와서 사용
A a = ctx.getBean("a", A.class);
a.printA();
}
}
'Spring Framework > Spring' 카테고리의 다른 글
[Spring] 컨트롤러에서 파라미터를 받는 방법 (0) | 2021.01.07 |
---|---|
[spring] 2. 한글 처리 filter (web.xml) (0) | 2020.06.09 |
[Spring] 의존 주입 - 작성중 (0) | 2020.04.21 |
[spring] - pom.xml 의 dependency (0) | 2020.04.20 |
[spring] - 스프링 프로젝트 생성 (0) | 2020.04.19 |
pom.xml 에 dependency에 작성해주는 것을 그대로 따라 적는데
왜 project의 groupId 랑 artifactId랑 다른가 해서 찾아보니
외부에 있는
groupId = 제작자
artifactId = 프로젝트 이름
으로 부터 제공 받는다고 생각하니 의문이 풀렸다.
org.springframework를 주소에 쳐보니 이해가 됬다.
Maven 프로젝트를 선택하면 그것에 맞는 pom.xml 에 넣을 수 있는 형태로 만들어 준다.
'Spring Framework > Spring' 카테고리의 다른 글
[Spring] 컨트롤러에서 파라미터를 받는 방법 (0) | 2021.01.07 |
---|---|
[spring] 2. 한글 처리 filter (web.xml) (0) | 2020.06.09 |
[Spring] 의존 주입 - 작성중 (0) | 2020.04.21 |
[Spring] 클래스 컨테이너 (0) | 2020.04.20 |
[spring] - 스프링 프로젝트 생성 (0) | 2020.04.19 |
(inflearn 강좌 정리) - https://www.inflearn.com/course
1. Eclipse -> Maven Project 생성
2. Create a simple project 체크 -> Next
3.
Group id 는 가장 큰 프로젝트를 감싸는 이름
> spring4
Artifact id 는 큰 프로젝트 안에서 하나하나의 모듈을 의미
> testPjt
4. 프로젝트를 생성하고나면 아래에 Creating project 가 100% 까지 완료되어야 프로젝트가 온전하게 생성이 된 것임
스크린샷 보다 폴더가 더 생겨나기 때문에 그 사이에 뭐 해보려고 하지 말자
5. pom.xml 설정
pom.xml 이란?
스프링의 각 기능들이 있음 (Core, JDBC, AOP ...등 모듈이 존재) -> 필요한 모듈을 가져오기 위한 파일이다 |
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>spring4</groupId>
<artifactId>testPjt</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.1.0.RELEASE</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>utf-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
</project>
pom.xml에 붙여넣은 후 프로젝트> maven > update maven
5-1. pom.xml(프로젝트에 있는 pom.xml에 의해서 라이브러리가 다운로드 됨)
다운로드는 Repository 에서 받아옴
프로젝트1 - pom.xml - 라이브러리1, 라이브러리4, 라이브러리5
프로젝트2 - pom.xml - 라이브러리2, 라이브러리3
프로젝트3 - pom.xml - 라이브러리6
Maven Dependencies 에 추가 됨 (jar)
6. 스프링 폴더 구조
testPjt(maven project) | src(폴더) | main | java |
resources | |||
test | java | ||
resources |
1. java 폴더 - 앞으로 만들어지는 자바 파일들이 관리되는 폴더
2. resource 폴더 - 자원을 관리하는 폴더로 스프링 설정 파일 (XML)/ 프로퍼티 파일 등이 관리
3. 폴더 구조는 바꾸지않고 이대로 구성해야함
궁금한 것
Group id
- 프로젝트마다 접근할 수 있는 고유한 이름
- 패키지 네이밍룰(도메인을 반대로 쓰는)을 따르는 것이 룰
maven.apache.org > org.apache.maven
Artifact id
- jar 파일에서 버전 정보를 뺀 이름
- 소문자 사용. 특수문자 x
properties (선택사항)
pom.xml에서 사용되는 자주 사용되는 정보를 변수처럼 만들어서 사용
dependencies (필수 사항)
라이브러리 호출
'Spring Framework > Spring' 카테고리의 다른 글
[Spring] 컨트롤러에서 파라미터를 받는 방법 (0) | 2021.01.07 |
---|---|
[spring] 2. 한글 처리 filter (web.xml) (0) | 2020.06.09 |
[Spring] 의존 주입 - 작성중 (0) | 2020.04.21 |
[Spring] 클래스 컨테이너 (0) | 2020.04.20 |
[spring] - pom.xml 의 dependency (0) | 2020.04.20 |
명령어
cd : 디렉터리 이동
(ex : cd /c) C:\
cd .. : 현재 디렉터리에서 한단계 이전
cd ~ : 최상위 디렉터리
pwd : 현재 디렉터리의 경로 표시
mkdir : 디렉터리 생성
rm : 디렉터리나 파일 삭제 (rm 명령에 보호가 걸려있어서 --옵션을 뒤에 달아줘서 지워야함)
git 명령
1) 로컬 레포 생성
$git init
현재의 디렉터리 하위에 .git이라는 하위 디렉토리 생성
2) README.md 파일 생성
echo "# java-chat" >> README.md
ll명령어 입력후 README.md 생성되었는지 확인
3) 파일 추가
$git add README.md
4) 커밋 메세지
$git commit -m 'first commit'
5) 원격지 주소 지정
$git remote add origin https://github.com/SsackTeun/java-chat.git
잘못적었을 때
$git remote remove origin
6) 원격지로 푸쉬
$git push -u origin master
1. weblogic 계정추가
2. weblogic 디렉터리
3. 다운로드는 오라클 홈페이지의 generic 버전 10.3.6 기준
4. scp c:\Users\jaeyo\Downloads\wls1036_generic.jar root@192.168.0.110:/home/weblogic
5. 실행권한을 주기 chmod +x 파일이름
6. ls 로 확인
7. java jar- 파일 이름
8. 설치
http://1004lucifer.blogspot.com/2018/08/weblogic-linux-103-1211.html
9.도메인설치
http://1004lucifer.blogspot.com/2018/08/weblogiclinux-103-1211.html
웹로직 어드민 콘솔 > 어드민 서버 접속 > 노드 매니저 > 서버들 관리