반응형

코도바에서 빌드한 안드로이드 프로젝트를 안드로이드 스튜디오에서 Import 했더니 could not resolve project cordovalib 요런 Gradle 오류가 발생했다.


build.gradle 파일에서 아래처럼 위의 두줄을 주석처리하고 마지막 줄을 추가해주었더니 오류가 사라졌다.


//debugCompile(project(path: "CordovaLib", configuration: "debug"))
//releaseCompile(project(path: "CordovaLib", configuration: "release"))
implementation project(':CordovaLib')
cs


반응형
반응형

코도바의 한계를 느끼고 네이티브 안드로이드를 시작해볼까하고 Hello World 를 실행시켰더니 비루한 G3 폰의 API 버전이 너무 낮아서 실행이 안된다는 메시지를 받았습니다. ㅜㅜ


안드로이드 스튜디오에서 minSdk가 너무 높게 설정되어있어서 그런가 봅니다.





minSdk를 낮춰봅시다.


1. app에서 오른 마우스를 누릅니다.




2. 메뉴에서 Open Module Settings F4 를 선택합니다.



3. Flavors 탭을 선택하면 Min Sdk Version 항목이 나옵니다. 콤보박스로 되어있어서 당황했는데 그냥 텍스트로도 써집니다. 9가 가장 API인것 같습니다.


반응형
반응형

스프링시큐리티를 사용하면 기본적으로 헤더가 설정되는 값이 있습니다.


캐시금지, 스니프 방지, HSTS, 프레임옵션, XSS공격 방지 등이 기본적으로 설정되어있습니다.


Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Content-Type-Options: nosniff
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
X-Frame-Options: DENY
X-XSS-Protection: 1; mode=block
cs



캐시를 수동으로 제어하고 싶은 경우에 처리 방법입니다.

cacheControl을 빼고 나머지는 다시 설정해주는 방법입니다.


    @Override
    protected void configure(HttpSecurity http) throws Exception {
      http.headers().defaultsDisabled().contentTypeOptions();
      http.headers().frameOptions().sameOrigin();
      http.headers().xssProtection().block(false);
      ....
    }
cs



그리고 Controller나 Interceptor 혹은 Filter에서 다음과 같이 수동으로 캐시를 설정합니다.


response.setHeader("Cache-Control""max-age=60");// 60seconds
cs


반응형
반응형

스프링부트에서 간단하게 사용할 수 있는 캐시 사용법입니다.


서비스 레이어에서 예를 들어 아래와 같은 코드를 사용할 수 있습니다.

@Cacheable 어노테이션을 통해 캐시할 대상을 지정하고 value는 어떤 캐시정책을 쓸 것인가에 대한 값이고 key는 지정한 캐시 정책내애서 캐시를 구분해주는 키값 입니다.


@CacheEvict 어노테이션은 value로 매칭되는 @Cacheable에 캐시되었던 데이터를 지워줄 대상을 지정합니다.

마찬가지로 key는 해당 캐시정책에서 특정 키에 해당하는 데이터만 지웁니다.


혹은 여러 캐시를 모두 지우고 싶은 경우 마지막 메서드처럼 하면 됩니다.



  import org.springframework.cache.annotation.CacheEvict;
  import org.springframework.cache.annotation.Cacheable;
  import org.springframework.cache.annotation.Caching;
 
  @Cacheable(value = "user", key = "#root.methodName + #userId")
  public String getUser(String userId, PrettyLog prettyLog) {
    return userDao.selectOne(userId, prettyLog);
  }
 
 @CacheEvict(value = "user", key = "#root.methodName + #userId")
  public void clearCacheUser(String userId, PrettyLog prettyLog) {
  }
 
  @Caching(evict = { //
      @CacheEvict(value = "user", allEntries = true), //
      @CacheEvict(value = "common", allEntries = true)//
  })
  public void clearCacheUser(PrettyLog prettyLog) {
  }



스프링부트에서 위 소스를 동작하게하려면 @EnableCaching 을 메인에서 지정해줘야 합니다.


import org.springframework.boot.SpringApplication;
import org.springframework.cache.annotation.EnableCaching;
 
@SpringBootApplication
@EnableCaching
public class MainApplication {
 
  public static void main(String[] args) {
    SpringApplication.run(MainApplication.class, args);
  }
}




ehcache.xml 파일입니다. (기본은 클래스패스 최상위에두면 자동으로 인식합니다.)

캐시정책을 정의합니다. 서비스레이어에서 value 해당하는 값이 아래의 cache name에 매칭됩니다.


timeToIdleSeconds : 몇초동안사용되지않으면 지울지

timeToLiveSeconds : 몇초동안만 살아있을지

maxBytesLocalHeap : 최대 메모리 사이즈

eternal : true면 timeout 관련설정을 무시하고 캐시를 지우지않는다.


2.5.2 에서 Deprecate 되었다.

maxElmentsInMemory : 메모리에 저장할 최대 개수



2.5.2 이후 2.x 버전

maxEntriesLocalHeap



<?xml version="1.0" encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd" updateCheck="false">
    <diskStore path="java.io.tmpdir" />
    <defaultCache 
    maxEntriesLocalHeap="10000" 
    eternal="false"
        timeToIdleSeconds="120" 
        timeToLiveSeconds="120" 
        overflowToDisk="true"
        maxElementsOnDisk="10000000" 
        diskPersistent="false"
        diskExpiryThreadIntervalSeconds="120" 
        memoryStoreEvictionPolicy="LRU" />
    <cache name="user" 
    maxEntriesLocalHeap="1000"
    maxBytesLocalHeap="100m" 
    eternal="false"
    timeToIdleSeconds="360" 
    timeToLiveSeconds="" 
    overflowToDisk="false"
    memoryStoreEvictionPolicy="LRU" />
</ehcache>




마지막으로 캐시를 사용하기위한 메이븐 설정입니다.


    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-cache</artifactId>
    </dependency>
    <dependency>
      <groupId>net.sf.ehcache.internal</groupId>
      <artifactId>ehcache-core</artifactId>
      <version>2.10.1</version>
      <scope>provided</scope>
    </dependency>



반응형

'java' 카테고리의 다른 글

spring boot - spring.log 남기지 않기.  (0) 2018.02.21
java poi excel write 엑셀 쓰기  (0) 2018.01.29
java 전화번호 형식 변환  (7) 2018.01.23
spring security cache control  (0) 2018.01.16
spring 301 redirect - RedirectView  (0) 2018.01.09
java md5  (0) 2017.12.26
LRU LFU FIFO 알고리즘  (0) 2017.12.19
java - collections sort  (0) 2017.12.06
반응형

자바스크립트 날짜 객체를 getTime 함수를 이용해 얻은 밀리세컨즈단위의 숫자를 다시 날짜 객체로 변환하는 코드입니다.

 

 

 

반응형
반응형

코도바를 최신버전에서 좀 오래된(사실 대부분 오래되었다) 플러그인들을 사용하려니 설치부터 빌드까지 난리가 아닙니다.

모든 해결은 코도바를 6버전으로 재설치하니 해결되었습다. 두둥. @.@

플러그인 설치 및 빌드로 삽질중이라면 한번 시도해보길 권합니다.


npm ERR! code ENOENT

npm ERR! errno -4058

npm ERR! syscall open

npm ERR! enoent ENOENT: no such file or directory

npm ERR! enoent This is related to npm not being able to find a file.


Error: cmd: Command failed with exit code 4294963238 Error output:


(node:8388) UnhandledPromiseRejectionWarning



정답은  npm install -g cordova@6


코도바 6버전사용하기~!!

반응형
반응형

제가 자주쓰는 bootstrap datepicker  입니다.

 

https://uxsolutions.github.io/bootstrap-datepicker

 

보통은 위 sandbox에서 다 해결이되는데, Range가 이쁘지 않고 inline으로 쓰려고 하면 뭔가 할때마다 삽질하는 것 같아서 정리해보았습니다.

아래 JSFiddle의 Result 탭에서 결과를 확인할 수 있습니다.

 

 

<html>

 

 

 

<js>

 

 

<css>

 
 
반응형
반응형

자바스크립트에서 변수가 배열인지 확인하는 방법입니다.

typeof 로는 'object'로만 나와서 배열인지 확인할 수 없습니다.

 

 

 

반응형
반응형

it Client for Window 입니다. 


다운로드 URL : https://git-scm.com/download/win


다운로드가 너무느려서 파일을 같이 첨부합니다.

Git-2.15.1.2-64-bit.z02

Git-2.15.1.2-64-bit.z01

Git-2.15.1.2-64-bit.zip

Git-2.15.1.2-64-bit.z03


다운로든 URL에 접속하면 아래화면이 나오면서 자동으로 다운로드가 시작됩니다.



다운받은 파일을 실행하면 설치가 시작됩니다.


단계별로 모두 기본설정을 유지하고 Next 신공을 발휘하여 빠른설치를 합니다.




저는 GUI가 필요없어서 Git GUI Here 은 체크해제 하였습니다.


저는 Notepad++을 쓰고 있어서 맨 아래걸로 선택했습니다.





설치가 잘되었는지 최종적으로 cmd 에서 git을 치면 아래처럼 나오면 git 설치성 공입니다.



반응형
반응형

DB2의 substring 함수 사용법입니다.


substr(컬렴명, 시작위치, 길이) 입니다.


주의할점은 시작위치가 1부터이라는 점입니다.

반응형

'Database' 카테고리의 다른 글

db2 - SQL1025N The database manager was not stopped because databases are still active.  (0) 2018.02.13
db2 drop database  (0) 2018.02.13
DB2 : SQLCODE=-668, SQLSTATE=57016  (0) 2018.01.25
db2 window client 설치  (3) 2018.01.24
DB2 LIKE 검색  (0) 2018.01.07
DB2 date format  (0) 2018.01.07
DB2 SYSDATE NOW  (0) 2018.01.07
DB2 오류 메시지  (0) 2018.01.07

+ Recent posts