반응형



** BEGIN NESTED EXCEPTION ** 


javax.net.ssl.SSLException

MESSAGE: closing inbound before receiving peer's close_notify


STACKTRACE:


javax.net.ssl.SSLException: closing inbound before receiving peer's close_notify

at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:129)

at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:117)

at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:308)

at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:264)

at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:255)

at java.base/sun.security.ssl.SSLSocketImpl.shutdownInput(SSLSocketImpl.java:645)

at java.base/sun.security.ssl.SSLSocketImpl.shutdownInput(SSLSocketImpl.java:624)

at com.mysql.cj.protocol.a.NativeProtocol.quit(NativeProtocol.java:1312)

at com.mysql.cj.NativeSession.quit(NativeSession.java:182)

at com.mysql.cj.jdbc.ConnectionImpl.realClose(ConnectionImpl.java:1750)

at com.mysql.cj.jdbc.ConnectionImpl.close(ConnectionImpl.java:720)

at com.zaxxer.hikari.pool.PoolBase.quietlyCloseConnection(PoolBase.java:135)

at com.zaxxer.hikari.pool.HikariPool.lambda$closeConnection$1(HikariPool.java:441)

at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)

at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)

at java.base/java.lang.Thread.run(Thread.java:834)


==================================================================================================

원인: 기본적으로 database연결시 connecting에 대한 ssl 보안이 포함되어야 하는데 포함되지않아서 

       실행중 지속적으로 disconnecting 한다  그래서 Exception 이 떨어진다.

해결: sql connection 에서 darasource.url 에 &useSSL=false 라는 옵션을 추가해준다.

ex) spring.datasource.url=jdbc:mysql://localhost:3306?&useSSL=false

반응형
반응형

build.gradle 에 lombok 추가


dependencies{

.....

implementation 'org.projectlombok:lombok'

}




프로젝트 우클릭

Grandle -> Refresh Grandle Project

반응형
반응형


형상관리 로 자주쓰는 GitHub 개인 저장소가 전면 무료화 된다는 공지를 띄웟네윱!(엄지척)

관련 링크: https://blog.github.com/2019-01-07-new-year-new-github/


바뀐점!

기존: Public만 무료(1인이든 협업자(collaborators)를 두든)

지금! Private도 무료!(1인이든 협업자(Collaborators)를 무려...무려...(ㅠ) 3명까지)

기존에 작은 팀 프로젝트를 할때 내코드가 언제나 오픈소스로 나가는게 영~ 뭔가 빼앗기는 느낌이였는데 ㅋㅋ
Private저장소를 만들수 있음으로써 거기다 3명까지 추가가 가능하다능 으로써 엄지척을 올림니다 ㅋㅋㅋ


Git 만세 만세 만만세



(출처: https://blog.github.com/2019-01-07-new-year-new-github/)

반응형
반응형

오늘은 늦은 후기를 올려봅니당 ㅋㅋ


11월 17일. Cocos Developer 세미나?에 참가했습니다.
신촌 에서 진행되었구요.

모임  주제는 cocos를 맛보는 시간이였습니다 ㅋ

바로 앞에있는 녹색녹색이 접니다>_<
대학 동료이자 전직장 동료와 함께 참가했어요.


Cocos가 무엇인지 왜 편한지 보고왔습니다 ㅎㅎ


참석시 준비물
1. 노트북!
2. Cocos Creator V2.0.4
3. VS Code
4. JS 기본사용법 정도?


실습 내용은 코코스에서 제공되는 Quick Start! 게임만들기 였습니당.
https://docs.cocos2d-x.org/creator/manual/en/getting-started/quick-start.html



아참! 모임을 소집해주신 감사한 진행자님은 인자건 선생님(?), 대표님(?), 커뮤니티장님(?) 이였습니다.


Cocos2d-x 3 모바일 게임 프로그래밍 (2014, 에이콘출판사)    <- 요거 쓰신 저자분 이였습니다 ㅎㅎ



코코스에대한 열정이 엄청나시고 커뮤니티를 이끌어가시는 리더님이였습니다.


코코스에 미래와 현재에 대해 들을수 있었고요


QhickStart 게임만들기를 깔끔히 번역해주셔서 인자건님 블로그 보면서 실습을 진행했어요(아주편하게>_<)





결과적으로 

preview score




요런 별먹기 게임을 만들었습니다ㅋㅋㅋ


js로만 코딩했규요.



자세한 내용과 설치법, Quick Start 게임만들기 방법은 천~~~~~~천~~~~히~~~시간이 난다면 올려보도록 하겠습니다.
.


그럼 덕질기행일기 끝!







아참! 혹시 코코스 페이스북 커뮤니티 그룹에 관심 있으신분은 아래 링크 참조하세요!
https://www.facebook.com/groups/cocosdeveloperskorea/?ref=group_header

그리고 이 글의 출처는..

https://cocos2d-x.org/

여기고 저작권 관련 문제시 바로 삭제 하겠습니다.

반응형
반응형
IP를 통해 접속 국가를 확인 하는 방법에 대해 소개 글입니당 ㅎㅎ

회사에서 접속한 IP를 통해 어느 국가에서 접근 했는지 확인이 필요해서 알아보던중

한국인터넷진흥원(KISA)에서 국가별 ip 대역대 정보를 제공해주더군요!!
(https://후이즈검색.한국/kor/main.jsp)

IP를 가지고 국가를 확인하는 방법은
1. KISA에서 제공되는 국가별 IP대역대를 엑셀로 받고 DB에 넣어서 조인으로 어느 나라에서 접속했는지 확인하는 방법!(참고. 모든 국가별 ip대역대(v4)는 19만 로우 라능....)
2. KISA에서 제공되는 whois api 를 통해 어느나란지 주고 받는 방법!

요렇게 있습니다.

1번의 방법같은경우는 음.....속도면에서눈 api를 각각 유저별로 호출하는 것 보다는 빠르겟죠? 쿼리만 잘~짠다면....
하지만 새로 갱신되거나 추가되는 대역에 대해서 매번 확인하고 수동으로 DB에 넣어줘야하는 불편함?이있죠

2번의 방법의경우 제가 못찾은건지 아니면 정말 api가 이상한건지.....
api가 한번 호출로 한개의 ip밖에 확인을 못해주더군요
분명 리턴되는 데이터 타입은 json이나 xml로 받을수 있는데 한건 밖에 처리를 못한다니;;
예를 들어 열개의 ip주소의 국가를 확인할 때 ip별로 10번의 호출을 통해 10개ip의 국가정보를 확인 할 수 있습니다...
Json을 사용하는데 반만쓰는 느낌이 들죠 ㅋㅋㅋ


뭐 어찌됐든!! 1번은 whois에 들어가서 엑셀다운을 받으면 되니 패스
2번 whois의 api를 호출하고 응답값을 확인하는 방법을 알아볼게요.

기본적으로 api호출시 요청해야하는 파라미터입니다.

요청파라미터 예시
http://whois.kisa.or.kr/openapi/ipascc.jsp?query=202.30.50.0&key=발급받은KEY값&answer=json

(Whois에서 이용등록후 키를 발급받으면 메일로  키값을 받을수 있습니다)

저렇게 api를 호출하게되면 해당 ip에 대한 국가 정보를 응답 받을수 있습니다

{ "whois":{ "query":"202.30.50.0", "queryType":"IPv4", "registry":"KRNIC", "countryCode":"KR" } }

요렇게 응답을 받을수 있죠

Api를 호출해서 사용하면 우선 국가별 ip대역대를 관리하지않아도 되니 편리합니다.
하지만 대량의 ip를 조회하기에는 건별 호출이다보니 속도가 많이 느리겠죠...
나중에 고쳐지지 않을 까 싶습니다 ㅎㅎ

PHP를 이용해 테스트 소스를 작성해 봤습니다.

function fSearchCountryCode($ip) {
    $key = "------KEY파일-----------";
    $dataFormat = "json";
    $url ="http://whois.kisa.or.kr/openapi/ipascc.jsp?query=".$ip."&key=".$key."&answer=".$dataFormat."";

    $ch = curl_init();
    curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch,CURLOPT_NOSIGNAL, 1);
    //curl_setopt($ch,CURLOPT_POST, 1); //Method를 POST로 지정.. 이 라인이 아예 없으면 GET

    $data = curl_exec($ch);
    $curl_errno = curl_errno($ch);
    $curl_error = curl_error($ch);

    curl_close($ch);
    $decodeJsonData = json_decode($data, true);
    return $decodeJsonData['whois']['countryCode'];
}

언어 별로 조금씩 다르지만 http api호출 방법은  보통 비슷하쥬 응용해서 사용하시길 바라며
이 게시글은 여기서 마무리 할게요 ㅋㅋㅋ


혹시 잘못된정보나 오타?..가 있으면 댓글을 통해 의견 부탁드려요.
반응형
반응형

정리를 해야지 해야지..하다가 오랫만에 포스팅 하게됩니당


본 게시글의 C# Code Style은 microsoft docs를 참조합니당

목록!

1. 명명규칙

2. 레이아웃 규칙 

3. 언어지침

아참.. 이거 왜하느냐?


모든 프로그래머의 code는 다르다

다르면? 남이 코딩한 코드를 읽기 힘들다.

같으면? 여러명이 짜도 한사람이 짠 느낌의 코드기 때문에 읽기 편하고 유지보수가 편하다

하지만. 귀찮다.. 아니 훈련이 필요하다



1. 명명 규칙

 - using 지시문을 쓰지 않는 경우!

 정규화된 이름은 한줄에 표시하기가 너무 길다면 다음과 같이 점(.)으로 표기한다.

ex) Math의 Sqrt를 사용하는경우

    1. using static System.Math; 선언후 Sqrt(someValue); -> 이렇게 쓰거나

    2. System.Math.Sqrt(someValue); -> 이렇게 쓰거나 이렇게 점(.)을 써서 표기한다.


2. 레이아웃 규칙

 - 코드 가독성을 위해 중괄호( '{', '}') 는 한줄씩

 - 자동 들여쓰기를 쓰되! 들여쓰기가 안되면 탭(공백4개)만큼 들여쓴다.

ex)

올바른 표기 

if(조건문)

{

    // Action

}

부정확 표기 

if(조건문){

// Action



3. 주석 규칙

 - 코드 줄 끝이 아닌 별도의 줄에 주석을 배치함(저는 바로윗줄에 주석함)

 - 주석 텍스트는 대문자로!

 - 주석에 마침표!~

 - 주석 구분기호(//)와 주석 사이 공백 하나 삽입!~

 - 개인적 의견? 꼭~꼬~~~옥~ 필요한 부분만 주석 처리한다 쓸데없는 주석 ㄴㄴ & 명확성!!!!!!

ex)

올바른 표기

 // 울 회사의 프로젝트를 정의 한다.

 using Project = PC.Mycompany.Project;

부정확 표기 

 //울 회사의 프로젝트를 정의 할걸..

 using Project = PC.Mycompany.Project;



언어 지침은 다음게시글에서...




반응형
반응형

이거 왜해?..

 - CentOs +Apache 를 사용해서 웹서비스를 하려하다가!! 분명 netstat 에도 listen상태인데 웹에서 접근이 안되는거임 ㅠㅠ

   그래서 찾아보니 iptable | firewall 을 등록해야하는걸 깨달음.. (왜냐?. 외부에서 접근해야하니꽌)

   그뒤 iptable을 등록하고 리셋하고 등등 삽질중 듣게됨 ㅠㅠ (나..바보야...ㅠㅠ)

   CentOs 7(?) 이상에서는 firewall이 기본설정이고 firewall 에 등록된 포트만 외부에서 접근됨(당연한거였는데 ㅠㅠ)



그래서!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Cent OS에서 firewall 특정 PORT 를 firewall 에 등록하는 방법을 올려보아요~



1. 일단! Linux Cent OS 버전 확인 해야겟쥬?

 #grep . / etc/*-release


2. firewall 외부 오픈 목록 확인

# firewall-cmd --list-all


3. 포트 등록(ex. 8080)

#firewall-cmd --permanent --zone=public --add-port=8080/tcp

(firewall에 public port 8080/tcp 를 등록한다)


4. 등록 확인

#firewall-cmd --list-all

(어?...왜 추가가 안됫지!?)


5. firewall reload!!! 추가하고 다시 로드해 줘야한다.

# firewall-cmd --reload <-리로드!~

#firewall-cmd --list -all <-다시확인


하면 등록되있는걸 볼수있습니다.


저는 CentOs + Apache를 사용하기 때문에 


아파치 설정에서 VirtualHost에 포트를 등록하고 어...? 왜 안되지 고민하다가 찾아보니깐 방화벽에 등록을 해줘야하네요!~(public으로!~외부접근을위해!~)




그럼 이만....

반응형

'IT-Programming&+ > 서버' 카테고리의 다른 글

REST API, RESTful API란 무엇인가..?  (0) 2022.10.12
HTTP와 HTTPS의 차이점  (0) 2022.10.11
WebServer와 WAS차이점(Tomcat과 Apache)  (0) 2018.11.09
반응형
https://www.youtube.com/playlist?list=PLNYkxOF6rcIDjlCx1PcphPpmf43aKOAdF

영어회화가 절실한 시점이다...
일단 유툽자막님의 조언과함께 하나씩 들어봐야지요 ㅋㅋ
반응형
반응형

NOW([fsp])

Returns the current date and time as a value in 'YYYY-MM-DD HH:MM:SS' or YYYYMMDDHHMMSS format, depending on whether the function is used in a string or numeric context. The value is expressed in the current time zone.

If the fsp argument is given to specify a fractional seconds precision from 0 to 6, the return value includes a fractional seconds part of that many digits.

mysql> SELECT NOW();
        -> '2007-12-15 23:50:26'
mysql> SELECT NOW() + 0;
        -> 20071215235026.000000

NOW() returns a constant time that indicates the time at which the statement began to execute. (Within a stored function or trigger, NOW() returns the time at which the function or triggering statement began to execute.) This differs from the behavior for SYSDATE(), which returns the exact time at which it executes.

mysql> SELECT NOW(), SLEEP(2), NOW();
+---------------------+----------+---------------------+
| NOW()               | SLEEP(2) | NOW()               |
+---------------------+----------+---------------------+
| 2006-04-12 13:47:36 |        0 | 2006-04-12 13:47:36 |
+---------------------+----------+---------------------+

mysql> SELECT SYSDATE(), SLEEP(2), SYSDATE();
+---------------------+----------+---------------------+
| SYSDATE()           | SLEEP(2) | SYSDATE()           |
+---------------------+----------+---------------------+
| 2006-04-12 13:47:44 |        0 | 2006-04-12 13:47:46 |
+---------------------+----------+---------------------+

In addition, the SET TIMESTAMP statement affects the value returned by NOW() but not by SYSDATE(). This means that timestamp settings in the binary log have no effect on invocations of SYSDATE(). Setting the timestamp to a nonzero value causes each subsequent invocation of NOW() to return that value. Setting the timestamp to zero cancels this effect so that NOW() once again returns the current date and time.

See the description for SYSDATE() for additional information about the differences between the two functions.


(출처: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html)


MySQL 에서 제공하는 document에 보면 위와 같이 나와있다


간단한 예제를 통해 두개의 함수의 차이점을 알수있다.

함수: NOW() -> 함수는 하나의 트랜젝션 or 쿼리 단위로 실행한뒤 동일한 값을 리턴하게 된다.




함수: SYSDATE() -> 함수는 트랜젝션or쿼리 단위에 관계없이 그 함수가 실행되는 시점을 리턴해준다.



간단히!

내가 내린 결론은 sysdate는 말그대로 system시간을 각각 보여주고

NOW는 쿼리문이 실행되고 난뒤 시간을 나타낸다. 


그럼끝.







반응형
반응형

코딩놀이! 10 Days of Statistics(HackerRank)

 Day 5 -1: Poisson Distribution I



13 번째 문제!

Objective 
In this challenge, we learn about Poisson distributions. Check out the Tutorial tab for learning materials!

Task 
A random variable, , follows Poisson distribution with mean of . Find the probability with which the random variable  is equal to .

Input Format

The first line contains 's mean. The second line contains the value we want the probability for:

2.5
5

If you do not wish to read this information from stdin, you can hard-code it into your program.

Output Format

Print a single line denoting the answer, rounded to a scale of  decimal places (i.e.,  format).


문제해석!

1. 값이 랜덤인 변수 X 가 있다

2. X는 평균 2.5의 포아송 분포다.

3. X 가 5를 찾을 확률은?

여기서 잠깐!. 포아송 분포요?....

 

정의[편집]

정해진 시간 안에 어떤 사건이 일어날 횟수에 대한 기댓값을 라고 했을 때, 그 사건이 회 일어날 확률은 다음과 같다.

여기서 는 자연상수이다.

(출처: 위키, https://ko.wikipedia.org/wiki/%ED%91%B8%EC%95%84%EC%86%A1_%EB%B6%84%ED%8F%AC)


어디다가 쓰냐고요?...

응용[편집]

다음과 같은 확률적인 문제를 알아내기 위해 쓰이고 있다.

  • 일정 주어진 시간 동안에 도착한 고객의 수
  • 1킬로미터 도로에 있는 흠집의 수
  • 일정 주어진 생산시간 동안 발생하는 불량 수
  • 하룻동안 발생하는 출생자 수
  • 어떤 시간 동안 톨게이트를 통과하는 차량의 수
  • 어떤 페이지 하나를 완성하는 데 발생하는 오타의 발생률
  • 어떤 특정 량의 방사선을 DNA에 쬐였을 때 발생하는 돌연변이의 수
  • 어떤 특정 면적의 다양한 종류의 나무가 섞여 자라는 삼림에서 소나무의 수
  • 어떤 특정 진도 이상의 지진이 발생하는 수

(출처: 위키, https://ko.wikipedia.org/wiki/%ED%91%B8%EC%95%84%EC%86%A1_%EB%B6%84%ED%8F%AC)


이런다고 합니다 ㅋㅋ


난 잘 모르겟고 n!분의 람다(n승)* e(-람다승) 이라니깐 고대로 ㅋㅋ



계산식 포인트

Math.Pow(Math.E, -Expected_value) * Math.Pow(Expected_value,X) / Factorial(X)

Math.E(?응?) - 문제에서 e는 자연 상수를 나타내는데 값으로 나타내면 약 2.71828 이라고 수학에서 상수라고 한다

그럼 코드공개!

class Solution {
    private static readonly double EXPECTED_VALUE = 2.5;
    private static readonly int X = 5;
    static void Main(String[] args)
    {
        Console.WriteLine("{0:f3}", Math.Pow(Math.E, -EXPECTED_VALUE) * Math.Pow(EXPECTED_VALUE, X) / Factorial(X));
    }
    static int Factorial(int n)
    {
        return (n == 0) ? 1 : n * Factorial(n - 1);
    }
}





제출!!!





그럼이만! 혹시 설명이 부족하다면 댓글 달아주세용 ㅎ


(출처:https://www.hackerrank.com/challenges/s10-poisson-distribution-1/problem)

반응형

+ Recent posts