본문 바로가기

분류 전체보기

(359)
Python - 클래스의 생성자 Python 클래스에서 만약 인자가 있는 생성자 외에 디폴트 생성자까지 만들고 싶다면?만약 윤씨 집안의 사람을 만드는 클래스라고 생각해보자. 그러면 클래스의 인스턴스를 생성하는 방법은 2가지가 있을 것이다. 생성자에 이름 인자를 넣어서 인스턴스를 생성하는 방법과 우선은 디폴트 생성자로 윤씨인 인스턴스를 만들고 그 다음에 setter 메소드를 이용해 이름을 결정짓는 방법 이렇게 2가지 일 것이다. 12345678class HouseYoon: lastname='윤' def __init__(self,name=None): if name != None: self.fullname=self.lastname+name def setname(self,name): self.fullname=self.lastname+namec..
Spring - Jsoup을 이용한 웹크롤링 Spring - Jsoup을 이용한 웹크롤링채팅을 개발하던 도중에 간단히 챗봇 기능을 만들어보면 어떨까 하는 생각에 오늘 날씨를 물어보면 오늘 날씨에 대한 정보를 답장으로 보내주는 채팅을 구현하기 위해 Jsoup을 이용한 웹크롤링을 진행해보았습니다. pom.xml 12345 org.jsoup jsoup 1.8.3cs 웹 크롤링 코드 12345String URL = "https://weather.naver.com/rgn/cityWetrMain.nhn";Document doc = Jsoup.connect(URL).get();Elements elem = doc.select(".tbl_weather tbody>tr:nth-child(1)");String[] str = elem.text().split(" ");E..
Spring AOP를 이용한 XSS 공격 방지 Spring AOP를 이용한 Xss 공격 방지lucy-xss를 이용하여 간단하게 게시글이나 댓글에 XSS공격을 방지하는 기능을 구현하였습니다. 그런데 보통 홈페이지는 게시판과 댓글 기능이 하나만 들어가있는 경우는 드뭅니다. 그말은 즉, xss관련 코드가 2개 이상이 중복되어 구현됩니다. 그래서 spring AOP를 이용하여 XSS 관련 코드를 하나의 클래스 파일에 구현해 게시물,댓글 등의 코드에 중복되어 구현되지 않게 하였습니다. pom.xml 12345678910111213 com.navercorp.lucy lucy-xss 1.6.3 org.aspectj aspectjweaver 1.8.8cs lucy-xss-superset.xml 123456789101112131415161718192021222324..
SOLID 원칙이란? SOLID 원칙이란? S : SRP(Single Responsibility Principle) - 단일 책임 원칙 O : OCP(Open Closed Principle) - 개방-폐쇄 원칙 L : LSP(Liskov Substitution Principle) - 리스코프 치환 원칙 I : ISP(Interface Segregation Principle) - 인터페이스 분리 원칙 D : DIP(Dependency Inversion Principle) - 의존 역전 원칙 S : SRP(Single Responsibility Principle) - 단일 책임 원칙 단일 책임 원칙이란 말 그대로, 하나의 객체는 하나의 책임만 가져야 한다는 원칙이다. 만약 많은 기능을 한 객체에 다 쑤셔 넣는다면? 그만큼 그 객..
JSON객체의 배열로 넘어온 데이터 출력하기 JSON객체의 배열로 넘어온 데이터 출력하기단순히 JSON 객체로 넘어온 것이 아니라 JSON 객체 배열로 넘어온 데이터를 javascript로 출력하는 반복문을 작성하는 예제입니다. Spring으로 프로젝트를 하는 도중에 ajax로 리스트를 받아야 하는 기능이 있었는데, 그것이 @Response 어노테이션을 이용하여 자동으로 json객체의 배열로 넘겨받는 상황이었습니다. 순간 json객체 단위로 받는 것은 많이 했었지만 json객체의 배열? 생각하니 혼란이 와서 정리해봅니다. 1234567891011121314151617181920 var i=[{"t_no":"120","t_content":"test11","t_writer":"임광빈","obtain":"0","t_date":"2018- 04-27"},..
Spring(스프링) + WebSocket(웹소켓)을 이용한 실시간 채팅 스프링 + 웹소켓을 이용한 간단한 실시간 채팅 우선 웹소켓이란 간단히 이야기하면 서버와 양방향 통신이 가능한 통신 방법이다. 그럼으로써 실시간 채팅 등이 구현이 가능한 것이다. 여기서 그러면 "ajax로 구현하면 되잖아? ajax도 서버와 통신이 되는데?" 생각을 하게된다. 나도 처음에는 그렇게 생각했는데, 생각해보면 ajax는 클라이언트가 서버로 데이터를 요청을 한다. 하지만 서버가 클라이언트에게 요청할 수 있는 방법이 없다. 하지만 웹소켓은 가능하다라는 것 ! ajax로 채팅을 구현한다면 클라이언트가 보낸 메시지를 서버가 받아서 그 메시지를 모든 사람에게 전송한다? ajax는 예를 들어 10초에 한번씩 서버에서 메시지를 뿌려주는 기능을 구현해야 할것이다. 왜냐하면 서버가 클라이언트에게 요청을 할수 있..
그래프 다익스트라 - 네트워크 복구(백준 2211번) 1. 그래프 다익스트라 - 네트워크 복구(백준 2211번) 2. 다익스트라 알고리즘을 이용한 문제풀이 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091package _317324; import java.util.ArrayList;import java.util.Arrays;import java.util.Comparator;import java.util.Iterator;import java.util.PriorityQueue;import java.uti..
다이나믹 프로그래밍 - 동전1 (백준 2293번) 1. 다이나믹 프로그래밍 - 동전1 (백준 2293번) 2. 다이나믹 프로그래밍을 이용한 문제풀이 1234567891011121314151617181920212223242526272829package _317324; import java.util.Scanner; public class Baekjoon2293Coin1 { static int dp(int[] coin,int[] memo,int n,int k) { memo[0]=1; for(int i=0;i