텔레그램 전송 오류 def telegram_send(chat_id, text): print("telegram send : "+text) bot = telegram.Bot(token='${본인의텔레그램 봇 토큰') bot.send_message(chat_id,text) telegram_send(${본인의텔레그램 쳇ID} ,"텔레그램 푸시알람 오류") RuntimeWarning: coroutine 'Bot.send_message' was never awaited 텔레그램 라이브러리 버전이 올라가면서 이런 오류메시지가 생겼다. 오류 해결 방법 async def telegram_send(chat_id, text): print("telegram send : "+text) bot = telegram.Bot(toke..
티스토리 rss를 살펴보면 rss/channel 안에 title(블로그명), link(블로그링크)가 있고 각각의 블로그 제목과 링크들이 들어있는 item이 반복됨을 알 수 있다. blist =['https://letsplaycoding.tistory.com/rss'] asyncio.run(telegram_send([텔레그램봇아이디],"[xml 수집 시작 by 인포 메이크]")) while True: for blog in blist : time.sleep(0.1) crawl_blog(blog) time.sleep(300) 여러 개의 xml 주소를 담을 수 있도록 배열을 선언하고 한 개의 블로그 주소를 넣어주었다. 반복문을 만들고 블로그 주소를 매개변수로 전달받는 crawl_blog라는 메소드를 만들었다. ..
CDN이란? cdn이란 콘텐츠 전송 네트워크의 약자로 데이터 사용량이 많은 페이지 웹페이지의 로드 속도를 높이기 위해 연결된 서버 네트워크이다. 사용자가 웹 사이트를 방문하면 데이터를 주고 받기 위해 인터넷 통신이 이루어지는데 특히 동영상이나 큰 이미지와 같은 대용량 파일의 경우 로드하는데 시간이 오래 걸리게 된다. 이때 cdn을 이용하면 사용자와 가까운 cdn 서버를 연결해주어 대기시간을 줄이거나 통신 지연을 줄여준다. jQuery CDN 종류 jquery에서는 uncompressed, minified, slim, slim minified 총 4가지의 패키지를 제공한다. uncompressed : 원본 파일(확장자 .js) minified : 원본을 압축한 파일 (확장자 : .min.js) slim :..
홈페이지 운영을 하다 보면 팝업을 쓸 일이 참 많다. 공지사항이나 특별한 메세지를 전달할 때에는 메인에 뜨는 팝업만큼 효과적인 게 없기 때문이다. window.open()을 이용해 작은 팝업을 띄울수도 있지만 팝업차단을 하면 막히기에 보편적으론 레이어팝업이 선호되는 편이다. 레이어 팝업 디자인 팝업창 예제 첫번째 팝업입니다. 홈페이지 바로가기(클릭) 공지사항보기 오늘 하루 열지 않기 레이어 팝업 디자인을 살펴보자. 여러개의 팝업을 쓰기 위해 id값은 div[id ^= 'layerPop'] 으로 처리한다. 이는 여러개의 팝업을 사용하기 위한 방법인데 layePop1, layePop2, layePop3, layePop4 이라는 id의 div도 style이 적용되게 한다. 팝업창은 가장 위에 보여야 하니 z-..
자바에서 파일 다운로드를 구현하다 보면 문제가 발생할 때가 있다. 그건 바로 다운로드는 되지만 파일명의 특수문자가 깨진다거나 한글파일명은 다운로드가 안 되는 경우이다. 그래서 오늘은 파일다운로드 할때 어떤 브라우저를 사용하더라도 최대한 다운로드가 실패하지 않게 구현하는 방법을 알아보자. 사용자페이지 ${파일명} ${파일명2} ${파일명3} 파일명을 A 태그로 감싸고 data값에 파일명과 파일경로를 써 주었다. 다운로드 클릭 이벤트가 일어나면 A tag에 있는 data 속성값을 가져와서 변수에 담는다. 미리 만들어둔 download form에 넣고 submit()을 실행한다. 파일 다운로드 컨트롤러 @RequestMapping(value = "/file/download") public void downlo..
오늘은 jsp에서 jstl을 이용해 어떻게 파라미터를 받을 수 있는지 한번 알아보자. https://letsplaycoding.tistory.com?searchText=jsp&searchType=name&pageNum=0 url에서 파란색으로 표시된 부분을 파라미터라고 한다. 파라미터는 보통 쿼리 스트링으로도 불리며 key값과 value 값의 형태로 이루어진다. 처음 물음표(?) 뒤에 나열이 되며 & 기호로 여러 개의 파라미터가 존재할 수 있다. 일반적인 jsp 페이지에서 자바 문법을 사용한 파라미터 처리방법 결과값 : jsp jstl을 이용한 파라미터 처리방법 ${param.searchTxt} 결과값 : jsp jsp 페이지에서 검색어 유지하기 목록 게시판을 만들 때 다른 페이지에 이동했다가 목록으로 ..
Spring Boot는 별다른 설정 없이도 root를 기준으로 아래의 경로에서 정적 콘텐츠를 제공한다. classpath:/static classpath:/public classpath:/resources/ classpath:/META-INF/resources resources 폴더를 살펴 보면 static과 templates 폴더로 나뉘어 있는 것을 알 수 있다. 이는 스프링 버전이 올라가면서 jsp 대신에 thymeleaf 쓰게됨으로 템플릿 파일들을 두는 곳이 생기게 되었다. 그러므로 css나 js파일들은 static 폴더에 넣고 템플릿파일들은 templates 폴더에 넣어서 사용하면 된다. 실제 경로를 호출해보면 /resources/ 또는 /resources/static/ 을 경로에 붙이지 않아도 ..
개발자가 디자이너와 코더 없이 관리자페이지를 꾸미기란 여간 힘든 일이 아니다. 하지만 부트스트랩을 이용한다면 디자인,퍼블리싱 시간도 상당히 단축시키고 생각보다 훌륭한 사이트를 만들 수 있다. Bootstrap이란? 부트스트랩은 웹사이트를 쉽게 만들수 있게 도와주는 css.js 프레임워크이다. 약간의 html 지식만 있다면 코드하나로 손쉽게 휴대폰,태블릿,pc까지 작동하게끔 사이트를 제작하게 해준다. 부트스트랩의 본래 이름은 트위터 블루프린트. UI 프레임워크가 정형화되지 않아 유지보수에 어려움을 겪었던 트위터 개발자 마크 오토가 이를 개선하기 위해 만들었다. 그 이후 여러 개발자들이 개발에 참여했고 현재는 v5.3.2 버전까지 출시되었다. Bootstrap 소스 제공 사이트 부트스트랩 소스를 제공해 주는..
현재 개발세팅은 Spring Boot, gradle 환경에 mybatis, jsp를 사용하고 있다. 세팅하는 방법은 아래의 블로그를 참고하도록 하자. [Spring Boot , gradle ] mybatis 환경 설정 방법 Mybatis란? 마이바티스는 아파치 스포트웨어 재단에서 만든 자바 퍼시스턴스 프레임워크이다. 마이바티스는 xml 서술자나 어노테이션을 사용해 저장 프로시저나 sql문으로 객체들을 연결시킨다. letsplaycoding.tistory.com 데이터베이스 도구 및 SQL 플러그인 활성화 일단 인텔리제이에서 데이터베이스 도구를 사용하려면 SQL 플러그인을 활성화를 시켜야 사용할 수 있다. 활성화시키는 방법은 [View]-[Tool Windows]- [Database] 메뉴를 클릭하자. [..
Mybatis란?마이바티스는 아파치 스포트웨어 재단에서 만든 자바 퍼시스턴스 프레임워크이다.마이바티스는 xml 서술자나 어노테이션을 사용해 저장 프로시저나 sql문으로 객체들을 연결시킨다.특징으로는 기존의 ibatis보다 간결하고 유연한 설정방식을 제공한다. build.gradle에 JDBC 라이브러리 추가 implementation 'org.springframework.boot:spring-boot-starter-jdbc' bulid.gradle 파일에 spring-boot-starter-jdbc 라이브러리와 db 종류에 따른 jdbc 드라이버도 추가해준다. - mssql runtimeOnly 'com.microsoft.sqlserver:mssql-jdbc'- mysql (spring boo..
SSLHandshakeException 오류 Caused by: javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 데이터베이스 연결을 할 때 SSLHandshakeException 오류가 나는 경우가 있다. 원인은 자바 1.8.0_291 버전부터 보안적인 이유로 TLS 1.0, TLS 1.1을 비활성화되었기 때문이다. 오류 해결방법 1. JAVA 버전 다운그레이드. 2. TLS를 사용하도록 JDBC 연결 구성하기 3. db 커넥션..
보통 Spring boot로 개발할때에는 환경설정을 통해 브라우저를 새로고침하면서 수정된 소스를 확인해본다. [spring boot] JSP 수정시 바로 반영 적용하기 spring boot 환경을 세팅하고 jsp로 개발 세팅을 하다 보니 불편한 점이 있었다. 그건 바로 소스를 수정해도 바로 적용이 되지 않는 JSP auto reload 문제. Application을 재시작해주면 바로 되긴하지만 여간 letsplaycoding.tistory.com 하지만 devtools 라이브러리에는 이 귀찮은 동작을 안해도 되는 꽤나 괜찮은 기능이 있다. Automatic Restart와 Live Reload. 이 기능은 서버를 재시작하지 않아도 웹브라우저에서 변경 사항을 바로 확인할 수 있다. 이 기능을 해보기 위해 ..