2019년 10월 29일 화요일

[통신] [JAVA] IEEE-754 Floating-Point Conversion

JAVA

IEEE-754 Floating-Point Conversion

hex or bin ---> ieee 754 규칙으로 floating-point 변환을 예제로 설명>

* 주어진 값

Decimal : 
66 200 0 0
Hex : 
0x42 0xC8 0x00 0x00
Bin :
1000010 11001000 00000000 00000000


1) hex -> bin 으로 변경 (bin 32 자리)
Bin 1 (왼쪽기준) 자리 :
0->+
1->-

===> 예제에서는 왼쪽 1 자리가 값이 비어 있는데, 0 이란 뜻.

2) 왼쪽기준 2번째 자리부터 8개 자리 값을 decimal 변경해서, 127을 뺀다.
===> 1000010 1 -> 133(decimal) - 127 = 6    :     2의 6제곱 값을 말함.

3) 나머지 비트 자리 수를 가수로써 1 .10010000000000000000000 => 1.5625000


1) * 2) * 3) 을 모두 곱하면 결과값이 나옴. : 100.0000000

계산 참고용 사이트>
https://babbage.cs.qc.cuny.edu/IEEE-754.old/32bit.html




+++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++



> 자바에서는 Float.intBitsToFloat(int value); 를 사용하면 된다.

예제 ]
 - b[i] 는 byte [], start 는 byte []에서 시작 값, length는 사용할 byte 개수


StringBuilder sb=new StringBuilder();
for(int i=start; i<(start+length); ++i){
    sb.append(byteToBinaryString(b[i]));
}
int bits = Integer.parseInt(sb.toString(), 2);
Float result = Float.intBitsToFloat(bits);









2019년 8월 13일 화요일

[Data Science] DS School의 ║데이터 사이언스 입문║과정 후기






DS School의 ║데이터 사이언스 입문║과정을 마치며 느낀점.


데이터사이언스입문과정은 오프라인으로 5주간 주1회 4시간씩 진행되는 수업이었다.
과정을 듣기 전, 데이터 사이언스라는 클래스명에서 풍기는 냄새는, 먼가(명확하지않고 뜬구름같이) 고급진 커리어를 만들수 있을 것 같은 막연한 기대감에 다른 IT 관련 교육보다 관심이 컸고, 데이터를 자유자재로 다루며 데이터에서 남들이 보지 못한 가치를 데이터로써 만들어 낼 수 있지 않을까 기대가 됬다.



과정 속에서, 데이터사이언스가 어떤 분야이고, 데이터분석가가 어떤툴을사용하고, 어떤방향으로 어떤방법으로 데이터를 판단하고 분석할수 있는지 전체적인 윤곽을 이해할 수 있었다. 그리고 앞으로 어떻게 좀더 깊이 공부할 수 있을지 방향도 찾을 수 있었던 시간이었던 것 같다. 그렇다고, 개관만 훑어보는 것 만은 아니다. 수업료가 할인받아서 50만원이다. 수업을 알차게 준비했다고 느껴진다. 데이터분석을 위해 다루는 툴도 배우고, 익숙해 지는데 도움이 되도록 실습시간도 충분히 주워졌다. 다만 개개인의 학습력에 따라 또는 타자 치는 속도 또는 파이선 언어 사용법의 익숙도에 따라 차이는 있다.



5주간의 시간이 기대만큼, 내 실력을 키울수는 없었다. 5주간이지만, 1주에 하루 집중해서 이론적이고 방법적인 내용을 수업 시간 동안 습득하기는 어렵다. 매일매일 3-4 시간씩 연습해보면서 툴과 언어를 익숙하도록 공부하면, 데이터를 다루는데 있어서 수업시간에 습득되지 못한 부분은 채워질 것 같다. 하지만 데이터분석을 할려면 데이터를 잘 다룰 줄 알아야되기도 하고 어떻게 데이터를 정리 할지 어떻게 예측값에 오차가 없도록 데이터를 조정할 수 있을지에 대한 고민과 경험이 필요함으로, 입문반 통해서 데이터분석가가 되겠다는 욕심은 버리는게 좋을 듯하다. 그러나 데이터분석가가 되겠다는 다짐 앞에 훈련을 위한 방법과 도구를 다 준비한 느낌이다. 훈련방향도 어느정도 잡힌다. 부지런히 훈련하다보면 어느덧 능력있는 데이터 사이언티스트가 되있으리라고 본다.



* 실습했던 kaggle competition



Titanic: Machine Learning from Disaster




Bike Sharing Demand




- DS School에서 작성한 [30일 만에 데이터 사이언티스트가 되는 비법] 글 공유

https://medium.com/@DSSchool/30%EC%9D%BC-%EB%A7%8C%EC%97%90-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%82%AC%EC%9D%B4%EC%96%B8%ED%8B%B0%EC%8A%A4%ED%8A%B8%EA%B0%80-%EB%90%98%EB%8A%94-%EB%B9%84%EB%B2%95-e0287a06c1c8

2019년 7월 8일 월요일

[git] gitlab 사용법

[git] gitlab 사용법

0. gitlab 계정생성 및 저장소와 프로젝트 생성

1. git bash 실행

2. git 관리를 원하는 폴더에서 아래 명령 실행

3. git clone git@gitlab.com:[git저장소명]/[프로젝트명].git

4. 작성하던 프로젝트 파일을 git clone해서 생성된 프로젝트 폴더에 저장

5. git add * (파일추가)

6. git commit -m "git commit message..."

7. git push origin master

--> gitlab 에서 master에 추가된 프로젝트파일이 확인될 것임.

8. git lab 에서 new branch 실행(개발자 당 한개씩 추가)

9. 다시 git bash에서, git pull 실행

10. git branch -a

--> 생성된 branch 확인가능

11. git checkout [브랜치명]

12. checkout 한 branch 로 변경됨


** merge 방법

1. branch 에서 작업 후 merge 시,

2. git checkout master

3. git merge [작업한 브렌치명]

--> conflict (충돌) 발생시, 수동으로 수정후, 다시 시도.


2019년 5월 16일 목요일

[android] AndroidX Preference 설정 시 오류 (kotlin 해당)

[android] AndroidX Preference 작성 시 주의사항 (kotlin 해당)


https://developer.android.com/guide/topics/ui/settings?hl=ko

위 사이트에서 preference 작성 방법을 참고 할 수 있다.

그래서 참고자료 대로 작성하고 실행해 봤지만 에러가 발생했다.

에러와 수정방법을 아래와 같이 정리했다.


에러 내용 :
java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter savedInstanceState


수정 방법 :

에러 내용 처럼, nullable 처리를 해줘야 한다.

override fun onCreatePreferences(bundle: Bundle?, s: String?) {}


- 끝 -

2019년 3월 7일 목요일

[docker] tomcat8 docker image 생성 후, image 실행, 실행중인 container 접속 방법

[docker] tomcat8 docker image 생성 후, image 실행, 실행중인 container 접속 방법

명령어로  실행하는 방법을 정리함.

host 환경
* host os : window 7
* host docker tool : docker toolbox

$ docker pull tomcat:8
-> docker hub 로부터 tomcat8 image를 다운로드


$ docker run -d -i -t --name="tomcat8" -p 8080:8080 tomcat:8
-> tomcat:8이미지로 컨테이너 생성(생성과 함께 tomcat service start 됨)

$ docker cp ./stest.war tomcat8:/usr/local/tomcat/webapps/
-> 테스트 stest.war파일을 tomcat8 컨테이너 내부의 폴더로 복사

$ winpty docker exec -it eb4f //bin//bash
-> eb4f 라는 앞자를 가진 컨테이너아이디 값으로 tomcat8 서버 console 접속
-> /usr/local/tomcat/webapps/ 폴더에서 복사한 stest.war 파일 확인 가능

host os 의 브라우저 stest 웹사이트 접속 확인






 




2019년 3월 6일 수요일

[docker] mysql 5.7 docker image 생성 후, image 실행, 실행중인 container 접속 방법

[docker] mysql 5.7 docker image 생성 후, image 실행, 실행중인 container 접속 방법

host 환경
* host os : window 7
* host docker tool : docker toolbox



start.sh 실행.

$ docker --help
-> 각종 docker 명령어를 확인 가능

$ docker pull mysql:5.7
-> name : mysql, tagname : 5.7 의 image 파일 다운로드

$ docker images
-> 다운받거나 생성한 docker image 파일 목록을 확인할수 있다.





$ docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root --name ems_mysql mysql:5.7
-> image 파일 실행하여 ems_mysql container 생성

$ docker ps -a
-> container 목록 확인




$ winpty docker exec -it ems_mysql //bin//bash
-> ems_mysql 컨테이너 서버 접속

주의)
1] 윈도우7 환경에서, MINGW64 실행 실행시(start.sh), /bin/bash => //bin//bash 로 작성

2] winpty 붙이지 않은경우, 

the input device is not a TTY. If you are using mintty, try prefixing the command with 'winpty' 에러발생
-> 해결방법
winpty 를 docker 명령 앞에 붙인다.


root@7815e476dfb2:/# mysql -u root -p
-> 접속한 컨테이너에서 mysql 접속이 가능하다.

MySQL Workbench 접속










2019년 3월 5일 화요일

[spring boot] ubuntu tomcat8 설치경로

[spring boot] ubuntu tomcat8 설치경로

sudo apt-get install tomcat8 

설치경로

HOME : /usr/share/tomcat8 
CONF :  /etc/tomcat8 
LOG :  /var/log/tomcat8 
ROOT : /var/lib/tomcat8 

[spring boot] org.springframework.jmx.export.UnableToRegisterMBeanException: Unable to register MBean [HikariDataSource (HikariPool-16)] with key 'dataSource'; nested exception is javax.management.InstanceAlreadyExistsException: com.zaxxer.hikari:name=dataSource,type=HikariDataSource

[spring boot] org.springframework.jmx.export.UnableToRegisterMBeanException: Unable to register MBean [HikariDataSource (HikariPool-16)] with key 'dataSource'; nested exception is javax.management.InstanceAlreadyExistsException: com.zaxxer.hikari:name=dataSource,type=HikariDataSource



org.springframework.jmx.export.UnableToRegisterMBeanException: Unable to register MBean [HikariDataSource (HikariPool-16)] with key 'dataSource'; nested exception is javax.management.InstanceAlreadyExistsException: com.zaxxer.hikari:name=dataSource,type=HikariDataSource

war 파일 배포시, 해당 Exception 이 발생한다면,

application.properties 파일내에

 spring.jmx.enabled= false

를 추가 한다.

[spring boot] 스프링부트에서 외부jar파일 추가 방법(배포시에도 정상적으로 추가됨)

[spring boot] method of including external jar on spring boot maven project

스프링부트에서 외부jar파일 추가 방법(배포시에도 정상적으로 추가됨)

1. 아래 이미지 처럼, 프로젝트에 lib 폴더 생성 후, 외부jar를 추가한다.
2. 아래 이미지 우측처럼, pom.xml 에,

<properties>
         ...
<webapp.lib>${basedir}/lib</webapp.lib>
</properties>

추가 후,

<dependencies>
<dependency>
<groupId>external</groupId>
<artifactId>external</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>${webapp.lib}/external.jar</systemPath>
</dependency>
</dependencies>

를 추가해준다. (주의] scope 는 system이다.







설정후, 프로젝트 클린&빌드를 한다.

여기까지 설정하면,
프로젝트에서 외부jar파일을 프로젝트에 포함되어 프로젝트가 해당 jar를 인식한다.

스프링부트의 boot dashboard 상으로 local실행시에 외부 jar가 빌드시 프로젝트내에 추가되어 잘 실행된다.

그러나, 배포를 위해 maven install 시에는, 설정한 jar파일들이 프로젝트의 WEB-INF/classes 폴더 (기본설정값) 로 저장되어, 배포시 외부jar를 사용하는 class에서 org.springframework.beans.factory.BeanCreationException: 
을 발생 시킨다.

따라서, 외부jar를 maven install 시, WEB-INF/lib 폴더에 저장되도록
Build Path > Configure Build Path... 에서 설정 해 줘야한다.

아래 그림처럼 설정한다.(지운부분은 프로젝트명 영역)



프로젝트에 추가한 lib 폴더를 우측 Add Folder 버튼을 이용해서 추가해주고,
Output folder: 를 선택 후, 우측에 활성화된 Edit 버튼을 이용해서 해당 프로젝트의
project/target/project/WEB-INF/lib 를 선택하고
Apply로 적용해 주면 설정 끝.

프로젝특 의 target 폴더 내의 모든 파일과 폴더를 삭제후, 프로젝트 클린&빌드 후,
maven install을 실행 하게 되면, 생성된 배포 war 파일이 만들어지는데,

해당 war 파일을 열어보면, WEB-INF/lib 폴더에 저장됨을 확인 할 수 있고,

tomcat8/webapp 폴더에 배포시, 정상실행된다.












2019년 2월 13일 수요일

[spring boot] @Component 선언한 class 파일 불러오는 방법

@Component 선언한 class 파일 불러오는 방법

예)

@Component
public class Scheduler {
}

라고 작성한 class 파일이있을때,

Scheduler s = ApplicationContextLocator.getApplicationContext().getBean(Scheduler.class);

처럼 class를 불러올수 있다.