InnoDB does not keep an internal count of rows in a table because concurrent transactions might “see” different numbers of rows at the same time. Consequently, SELECT COUNT(*) statements only count rows visible to the current transaction. InnoDB processes SELECT COUNT(*) statements by scanning the clustered index. Processing SELECT COUNT(*) statements takes some time if index records are not ent..
Http Request 시 Response의 Header 정보중 Server 정보를 숨기는게 예전에는 필수 사항이 아니었는데 요즘엔 보안 필수사항으로 지적 받는다. Springboot의 embeded tomcat에서 설정하는 방법은 다음과 같다. application.properties 사용시server.server-header=SERVER_NAME application.yml 사용시server: port: 80 server-header: SERVER_NAME
잘 돌아가던 톰캣 서버에서 아래와 같은 Exception을 확인하였다. 잘 떠있던 놈이.. 갑자기 왜. 물론 재시작 하면서 이슈는 해결되었지만 원인을 찾기 위해서 삽질을 하고, 아래와 같은 로그를 드디어 재현하였다. 원인은, 프로세스가 떠 있는 상태에서 yum 업데이트로 jdk버전을 업데이트 해버려서, 이 프로세스에서 잡고 있던 java lib들을 알 수 없었기 때문에 오류가 났던 것이다. tomcat started -> yum update jdk* -> curl http://url -> occured Exception . java.lang.UnsatisfiedLinkError: no net in java.library.path at java.lang.ClassLoader.loadLibrary(Class..
개인적으로 AWS를 쓰다가 GoogleCloud VM을 써보고 싶어 12개월 300$ 무료 체험이 있길래 인스턴스 생성해서 이것저거 시도 중이다. ssh console은 크롬에서 지원되길래 브라우저에서 바로 접속해서 사용하는데 이게 생각보다 꽤 편리하다. 작업도중 대박사건 발견!!redis 설치하고 redis-cli 접속했더니 예약어(?)가 있는건지 auth를 입력했더니 password를 입력하라고 미리 보여준다. 원래 다 이런기능이 있는건가? 암튼 깜짝 놀랬다.
웹사이트를 구축할때는 동적인 영역과 정적인 영역을 나누어, 정적인 데이터는 미리 캐싱해두었다가 사용자의 요청이 있을때 데이터를 전송하는 것이 효율적이다. 동적데이터 - 프로그램이 포함되는 jsp, php, asp 등 서버언어 정적데이터 - html, css, image 등 자주 변하지 않는 데이터 그래서 정적인 데이터는 주로 웹서버로만 따로 운영을 하게 된다. 하지만, 따로 분리해서 운영할만큼 큰 프로젝트가 아니라면 동적인영역에 정적데이터를 포함시켜야 할때가 있는데 이또한 작업 하다보면 크로스도메인문제로 어플리케이션 설정에 cors(cross origin access sharing)이 필요할때가 있다. 자바 스프링에서는 다음과 같이 추가해줄 수 있따. @Component public class CorsF..
Jenkins에서는 Remote API를 제공하고 있다. https://wiki.jenkins-ci.org/display/JENKINS/Remote+access+API 기능은 retrieve information from Jenkins for programmatic consumption. trigger a new build create/copy jobs 요약하자면 배치작업들에 대한 관리가 가능하단 얘기다. 정작 내가 필요한건 젠킨스에 등록된 전체유저의 정보를 가져오는것이었다. 개발시 여러툴을 사용하는데 그에 따른 유저의 통합관리에 대한 필요성이 있어 해당API를 찾아보게 되었다. https://wiki.jenkins-ci.org/display/JENKINS/Authenticating+scripted+cl..
다운로드 받은 jenkins.war cmd창에서 파일 실행 D:\TT\3.Util>java -jar jenkins.war Running from: D:\JaeEun\3.Util\jenkins.war webroot: $user.home/.jenkins [33m3월 07, 2017 2:33:12 오후 Main deleteWinstoneTempContents 경고: Failed to delete the temporary Winstone file C:\Users\kwonje\AppData\Local\Temp\winstone\jenkins.war [0m3월 07, 2017 2:33:12 오후 org.eclipse.jetty.util.log.JavaUtilLog info 정보: Logging initialized ..
Spring + Mybatis @MapperScan의 sqlSessionFactoryRef 속성지정시, Tomcat을 실행시키면 다음과 같은 WARN 메세지가 미친듯이 뜨고 start 된다. 실행이 안되는건 아니지만, 찝찝한 경고 메세지 2017-03-07 13:18:59.821 WARN 25580 [main] --- org.springframework.beans.factory.support.AbstractBeanFactory.getTypeForFactoryBean:1480 : Bean creation exception on FactoryBean type check: org.springframework.beans.factory.BeanCreationException: Error creating bean ..
oAuth(open standard for authorization)사용자는 한번의 인증절차로 다른 웹서비스를 이용할때 아이디/패스워드의 개인정보를 전송하지 않고도 자신의 접근 또는 기타 권한을 부여할 수 있도록 하는것을 말한다.예를들어 페이스북 아이디로 쇼핑몰사이트를 이용하게 되는 경우 사용자는 페이스북에 로그인 하고 쇼핑몰 사이트에 접속하면 쇼핑몰 사이트에서는 페이스북으로 사용자 접근권한 요청을 보낸다. 그러면 사용자는 페이스북의 화면으로 해당쇼핑몰에서 접근하려고 하니 허용하시겠습니까 라는 메세지의 화면을 보게 되고 사용자가 승인 할경우 쇼핑몰을 이용할 수 있게 된다. 이처럼 사용자는 쇼핑몰에는 회원가입 또는 개인정보를 따로 저장하지 않아도 페이스북 로그인 하나만으로도 이용할 수 있게 되는데 이런 방..
절차지향언어냐 객체지향언어냐 그것이 문제로다. 절차지향은 뭐고 객체지향은 뭘까. 이미 그 차이를 알고는 있지만 개념으로 딱 떨어지게 정의하기에는 좀 어려운 부분이 있어 이렇게 정리해본다. 절차지향이란.순차지향으로도 표현할 수 있다. 위에서 아래로 실행될 순서대로 코딩하는것을 말하며 쉽고 빠르고 간단하게 프로그래밍을 할 수 있지만 코드의 재사용은 어렵다. 객체지향이란. 객체중심으로 코드를 만들어 실제 필요한 부분에서 각 객체들을 호출해 사용한다. 캡슐화 상속 다형성 등의 특징이 있고 코드의 재사용성이 좋다. 하지만 설계를 하기까지는 그만큼 복잡하고 어려울 수 있다.
개발을 하다보면 원격접속으로 일하는 일이 많은데 원격서버의 환경에 따라 각기 다른 툴을 이용하는게 무지 번거로웠다. 그러다가 찾게 된 툴을 소개한다. https://mremoteng.org/ mRemoteNG is a fork of mRemote: an open source, tabbed, multi-protocol, remote connections manager. mRemoteNG adds bug fixes and new features to mRemote. ssh, 윈도우 원격데스크탑, http 등 내가 필요한 기능이 다 있다. 굿!
RDBMS에서 Index란 무엇인가 아마 웹개발자라면 기술인터뷰시에 꼭 듣게 되는 질문중 하나다. 책을 예를 들면, 보통 책을 처음 읽고자 할때 가장 먼저 보게 되는 페이지가 목차이다. 몇페이지부터 어디까지 무슨 주제로 내용이 있고 그 다음은 무엇이고 책 전체내용을 빠르게 확인할 수 있고, 어떤 주제의 내용을 찾고자 할때는 이 목차를 활용할 수 있다. DB에서도 마찬가지로 테이블에서 데이터의 검색을 빠르게 할 수 있도록 특정컬럼을 Index로 지정하면 데이터삽입시 Index의 데이터가 별도로 생성되어 저장된다. 쿼리 조회시 Index를 사용할 경우 그 속도가 빠른것을 확인 할 수 있고 이 것은 explain 실행계획으로 Index 사용 여부를 확인하면 된다. 그럼 모든 컬럼을 Index로 지정하면 되지 ..
태그에 onclick 이벤트를 주고자 할때 클릭 function 함수명(url){실행코드;;;;;;location.href = url;return false;} 이렇게 작성해도 이상 없다고 생각했었고, 크롬과 IE10 이상에서도 문제가 없었다. 하지만 IE8과 IE10 사용자중 브라우저 속성을 변경했다고 하는 사용자의 요청을 확인해보니(일일히 브라우저속성을 다 파악하진 못했지만)일부사용자는 a 링크 클릭시 #none으로 이동되어 onclick이벤트가 안먹히는 현상이 발생되었다. 하여 코드를 다음과 같이 수정하였다. href 속성을 제거하고 마우스 커서를 변경시킬 스타일만 적용했다. 알림 function 함수명(url){실행코드;;;;;;location.href = url;return false;} 적용결..
개발을 하다보면 이런경우가 많이 생긴다. 동일한 데이터를 가지고 오지만 조회하고자 하는 컬럼에 따라 where 구문만 다르게 하고 싶을때. 예를들면 SELECT name, id FROM user Where name = ?SELECT name, id FROM user Where id = ? 각 동일한 select 구절이지만 Where 조건이 다르다. 이럴때 overload를 사용하면 되겠지라고 간단하게 생각했다가 낭패가 생겼다. SELECT name, id FROM user WHERE name = #{name} WHERE id = #{id} 다음과 같은 오류를 확인할 수 있다. org.mybatis.spring.MyBatisSystemException: nested exception is org.apach..
로컬에서 신규 프로젝트 생성하고 생각없이 호스트명을 http://my_project/~~ 언더하이픈을 포함하여 임시로 작명을 하였다. 헌데... 웹서블릿 호출시 GET방식으로는 문제 없으나 POST방식으로 호출시 아래와 같은 오류가 발생하였다. java.lang.IllegalStateException: Could not get HttpServletRequest URI: Illegal character in hostname at index 12: http://my_project/list at org.springframework.http.server.ServletServerHttpRequest.getURI(ServletServerHttpRequest.java:96) at org.springframework...
Aspectj로 공통로깅 만들기 개발을 하다보면 꼭 필요한것 중에 한가지가 디버깅에 필요한 로깅을 하는것이다. 그리고 자바, 스프링의 좋은것중 한가지가 다양한 라이브러리를 지원하고 개발자는 의존성만 주입하면 손쉽게 해당 기능을 가져다가 쓸수 있다는 것이 개인적으로 느꼈던 장점중 한가지였다. spring boot aspectjweaver library 의존성 추가 Java Config 방식 dependencies { // spring compile("org.springframework.boot:spring-boot-starter-web") compile("org.springframework:spring-context-support") compile("org.aspectj:aspectjweaver:1.8.8..
얼마전 오픈세미나에 다녀왔는데 그중 관심있었던 WebPayment API에 대하여 간단히 요약하였다. W3C에서 진행하는 웹결제 표준으로, 현재까지 진행중이며 합의에 다다랐다고 함. 왜 W3C에서 결제API를 표준으로 만드는 것일까. 조사에 따르면 유저는 장바구니에만 담아놓고 결제하지 않는 비율이 68%에 이르는데, 이중 모바일기기에서의 미결제율은 훨씬 높다는 통계자료가 있음.모바일기기에서 비율이 훨씬 높은 원인중에는 입력폼과 결제 과정이 복잡하고 어렵다는 의견이 많아 이를 해결하고자 표준으로 정하고자 함. 표준으로 정했을때의 User와 Merchant가 갖는 장점User 표준에 따른 친숙한 UI 결제정보는 한번만 저장하면 되므로 어렵거나 복잡한 과정이 없음 Merchant 결제관련 서버를 별도로 구축할..
Pooling이란?Wikipedia : Resource management https://en.wikipedia.org/wiki/Pooling_(resource_management) 자원을 일정갯수 미리 생성해두어 클라이언트의 요청이 있을때마다 해당자원을 꺼내쓰고 작업이 완료되면 자원을 반납하여 다음 요청이 있을때까지 대기하는 일련의 작업상태. 위키에서는 Resource management라는 의미로 해석을 했는데 우리말로 자원관리가 되려나? 좀 애매한 해석이다. Object Pool Pattern Pooling에 대한 기능은 소프트웨어 디자인패턴으로도 정의(?) 되어있다. Object Pool은 소프트웨어 디자인 패턴으로서, 객체를 필요에 따라 생성하고 파괴하는 방식이 아닌,적절한 개수의 객체를 미리 ..
ssh git 연결방법 아래와 같이 ssh로 git clone 시도시 암호를 입력하라고 나온다. [user@server project]$ git clone git@git주소:레파지토리.git Cloning into '레파지토리'... The authenticity of host 'git주소 (10.1.1.1)' can't be established. RSA key fingerprint is ed:c0:13:07:~~~. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'git주소 (10.1.1.1)' (RSA) to the list of known hosts. git@git주소's password: ..
톰캣을 shutdown하면 아래와 같은 오류메세지를 확인할 수 있다. 내용인즉슨.톰캣을 종료할때 jdbcDriver를 미등록상태로 변경할때 오류가 나고 메모리 누수를 막기 위해 강제로 jdbcDriver를 미등록 상태로 만들겠다라는 내용. Sep 05, 2016 7:35:56 AM org.apache.catalina.loader.WebappClassLoader clearReferencesThreadsSEVERE: The web application [] appears to have started a thread named [Abandoned connection cleanup thread] but has failed to stop it. This is very likely to create a memory..
- Total
- Today
- Yesterday
- mysql count
- 스프링 크로스도메인
- google vm ssh
- jenkins user list
- 원격접속툴
- 인덱스 자료구조
- select count(*) performence
- jenkins remote api
- Google ssh console
- BeanCreationException
- response server header
- mysql 인덱스
- springboot server header
- nested exception is org.apache.ibatis.binding.BindingException\
- 젠킨스 윈도우 설치
- a태그 onclick이벤트
- jenkins asyncpeople
- 스프링 마이바티즈 연동오류
- mysql count 성능
- 원격접속 무료툴
- 객체지향언어 자바
- 젠킨스 api
- common-dbcp
- java.lang.UnsatisfiedLinkError
- spring mybatis
- oauth sso 차이
- mybatis overload
- no net in java.library.path
- 작은거에소스라치게놀라는나
- mybatis overloading
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |