개발 (70)
Kotlin toIntOrNull

코틀린에서 숫자 변환시에 자주 쓰이는 함수입니다.

다른 용도로 숫자인지 아닌지를 판단할때도 자주 쓰는데 주의할 점이 있습니다

fun main(args:Array<String>)
{
    "1234".run {
        println(this.toIntOrNull() ?: "$this is not number")
   }
    "349505749735".run {
        println(this.toIntOrNull() ?: "$this is not number")
        println(this.toBigIntegerOrNull() ?: "$this is not number")
    }
}

//1234
//349505749735 is not number
//349505749735

위 예제를 보시면 문자열이 숫자인지 아닌지 판단하기 위해 toIntOrNull을 사용하였지만

중간에 숫자가 아니라고 나오는 경우가 발생합니다.

 

이미 눈치채셨겠지만 숫자가 너무 커서 toInt를 하지 못한 경우입니다.

toBigIntegerOrNull로 대체해서 해결되었지만 무심코 쓰다가 실수할 수 있는 부분이니 신경 써주면 좋습니다

  Comments,   0  Trackbacks
댓글 쓰기
mysql 사용자 추가 및 권한

제목 그대로 mysql 8 버전 기준 사용자 / db / 권한 추가



create user testuser identified by 'mypassword';


create database testdb;


grant all privileges on testdb.* to 'testuser' with grant option;


'개발 > DB' 카테고리의 다른 글

mysql 사용자 추가 및 권한  (0) 2019.02.07
Mybatis #과 $의 차이  (1) 2014.11.10
몽고DB 설치  (0) 2014.01.22
테이블 정보(컬럼 정보, 코멘트 등등)  (0) 2013.11.11
테이블 사이즈 구하기(컬럼 길이, 컬럼 길이 평균)  (0) 2013.03.12
[ORACLE] 달력  (0) 2012.09.14
  Comments,   0  Trackbacks
댓글 쓰기
http 응답에서 특정 헤더가 읽어지지 않을때

axios를 이용해서 통신하는 도중 헤더를 읽지 못하는 현상 발생


서버에서 201 created 응답 헤더에 생성된 자원의 Location을 보냈으나 받지 못함

(크롬의 network 탭에서는 보이나 response.headers.location이 undefined로 찍힘)


CORS 이슈로 다음의 헤더만 사용가능

Cache-Control

Content-Language

Content-Type

Expires

Last-Modified

Pragma


추가적인 헤더 사용하기 위해서는 다음과 같이 CORS설정 시 명시해줘야함


@CrossOrigin(origins = ["http://localhost:3000"], exposedHeaders = ["Location"])


  Comments,   0  Trackbacks
댓글 쓰기
nginx 로그 로테이트

nginx 로그를 로테이트 하고 싶을때 os의 log rotate 모듈을 많이 사용하지만

시간별로 남기는 기능을 지원하지 않는다.


nginx 설정만으로 하려면 다음과 같이 설정한다.


nginx.conf

if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})") {

set $year $1;

set $month $2;

set $day $3;

set $hour $4;

set $minutes $5;

set $seconds $6;

}


access_log  logs/access_${year}-${month}-${day}_${hour}.log  main;


'개발 > Linux/Server' 카테고리의 다른 글

nginx 로그 로테이트  (0) 2019.01.11
대용량 더미파일 생성 방법  (0) 2018.12.27
쉘 이용해서 자동 로그인하기  (0) 2014.09.17
vmstat 파일에 쓰기  (0) 2014.08.25
shell 색상 입히기  (0) 2013.11.28
마지막으로 수정된 파일 tail 걸기  (0) 2013.11.13
  Comments,   0  Trackbacks
댓글 쓰기
대용량 더미파일 생성 방법

압축 테스트 등을 위해 대용량 더미파일을 생성해야 하는 경우가 종종 생깁니다

간단하게 용량을 지정해서 더미파일을 생성하는 방법입니다


$ head -c 1M /dev/urandom > 1m.txt

$ head -c 1G /dev/urandom | gzip -9 > 1g.txt



'개발 > Linux/Server' 카테고리의 다른 글

nginx 로그 로테이트  (0) 2019.01.11
대용량 더미파일 생성 방법  (0) 2018.12.27
쉘 이용해서 자동 로그인하기  (0) 2014.09.17
vmstat 파일에 쓰기  (0) 2014.08.25
shell 색상 입히기  (0) 2013.11.28
마지막으로 수정된 파일 tail 걸기  (0) 2013.11.13
  Comments,   0  Trackbacks
댓글 쓰기
도커에서 시간 설정하기

도커 사용시 기본적으로 시간설정이 되어있지 않기 때문에 9시간 전으로 표시가 된다

Dockerfile에 다음과 같이 설정하면 시간이 정상적으로 나오게 된다



Dockerfile

FROM mysql
ENV TZ=Asia/Seoul
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone


  Comments,   0  Trackbacks
댓글 쓰기
java.lang.string cannot be cast to com.facebook.react.uimanager.accessibility DelegateUtil$accessibilityRole

리액트 네이티브 버그, 강제로 버전을 낮춰서 해결


node_modules 삭제 후 진행




$ rm -rf node_modules

$ npm i -S react-native@0.57.1

$ npm add @babel/runtime

$ npm i -D schedule@0.4.0

$ npm i


  Comments,   0  Trackbacks
댓글 쓰기
gradle 빌드 환경에서 profile 적용하기

java -jar 이런걸로 실행시키면 문제될게 없지만

gradle의 bootRun task를 사용할때 스프링 프로파일 적용 방법입니다

build.gradle에 아래와 같이 설정 추가하면 됩니다.


build.gradle

bootRun {
String activeProfile = System.properties['spring.profiles.active']
systemProperty "spring.profiles.active", activeProfile
}



Dockerfile

ENTRYPOINT ["./gradlew"]
CMD ["bootRun", "-Dspring.profiles.active=prod"]


  Comments,   0  Trackbacks
댓글 쓰기
docker-compose up 빌드 오류 발생 시 해결 방법

ERROR: Service 'app' failed to build: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io on 10.0.2.3:53: read udp 10.0.2.15:43602->10.0.2.3:53: i/o timeout

도커에서 기동시 위와 같은 오류가 날 경우 아래와 같이 입력 후 기동을 한다


$ docker-machine restart default
$ eval $(docker-machine env default)


$ docker-compose.exe up
Building app
Step 1/5 : FROM openjdk:10.0.1-jdk
ERROR: Service 'app' failed to build: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io on 10.0.2.3:53: read udp 10.0.2.15:43602->10.0.2.3:53: i/o timeout

$ docker-machine restart default
Restarting "default"...
(default) Check network to re-create if needed...
(default) Windows might ask for the permission to configure a dhcp server. Sometimes, such confirmation window is minimized in the taskbar.
(default) Waiting for an IP...
Waiting for SSH to be available...
Detecting the provisioner...
Restarted machines may have new IP addresses. You may need to re-run the `docker-machine env` command.

$ eval $(docker-machine env default)

$ docker-compose.exe up
Building app
Step 1/5 : FROM openjdk:10.0.1-jdk
10.0.1-jdk: Pulling from library/openjdk
e367ac4072dc: Pull complete
9a57779b5dba: Pull complete
7a4c28c5ff25: Pull complete
9a8bf5e9a1f1: Pull complete
0e45f9a301ef: Pull complete
70656c3c9396: Pull complete
e1eb305208da: Pull complete
e022358c7c3e: Pull complete


  Comments,   0  Trackbacks
댓글 쓰기
git 사용시 .idea 제거하기(workspace.xml 제외)

intellij 사용중 git에서 .idea/workspace.xml이 커밋되어 빠지지 않을경우 사용

git bash를 이용해서 작업을 하면 된다


mv .idea ../.idea_backup
git rm -r .idea 
git commit -m "Remove .idea from repo"
mv ../.idea_backup .idea


  Comments,   0  Trackbacks
댓글 쓰기