노출되는 이미지가 불편하시겠지만 양해를 구합니다. 노출, 클릭등에 관한 자료로 활용 중입니다.

1. 깨지는 현상

-- Nanum폰트를 설치하고나서도, 아래 코드가 여전히 깨지는 현상이 발생한다.

[부동산API3] 전월세 실거래가 분석하기

import matplotlib as mpl
import matplotlib.font_manager as fm

#한글 가능 폰트 불러오기

fm.get_fontconfig_fonts()
font_location = '/Library/Fonts/NanumBarunGothicBold.ttf'
font_name = fm.FontProperties(fname=font_location).get_name()

mpl.rc('font', family=font_name)
 

[부동산 API3] 전월세 실거래가 현황(17년1월~18년1월, 서울&경기지역) 분석하기

오늘은 공공데이터 포털에서 끌어온 전월세API 데이터를 가지고 전월세 거래건수에 대해 알아보려고 한다. 그전에 알아본 내용을 잠깐 정리해보자. 먼저, 공공데이터 포털에서 부동산 거래데이터가 API형태로 제공..

tariat.tistory.com

 

2. 현상을 구체적으로 분석

-- 아래 예제도 동일하게 한글이 깨짐

-- cachedir() 위치(~/.matplotlib)로 가보니, fontlib-v300.json파일내에 폰트(NanumBarunGothicBold) 없다???

Matplotlib 한글폰트 사용하기

import matplotlib as mpl

print ('버전: ', mpl.__version__)
print ('설치 위치: ', mpl.__file__)
print ('설정 위치: ', mpl.get_configdir())
print ('캐시 위치: ', mpl.get_cachedir())
 

실습으로 배우는 데이터 사이언스 - Matplotlib에서 한글 폰트 사용하기 | 프로그래머스

Matplotlib 한글폰트 사용하기 1. 필요한 패키지를 가져옵니다. # 그래프를 노트북 안에 그리기 위해 설정 %matplotlib inline # 필요한 패키지와 라이브러리를 가져옴 import matplotlib as mpl import matplotlib.pyplot as plt import matplotlib.font_manager as fm # 그래프에서 마이너스 폰트 깨지는 문제에 대한 대처 mpl.rcParams['axes.unicode_

programmers.co.kr

 

3. 해결책

-- font cache를 rebuild를 하는 것이 필요하다.

Updating the Matplotlib Font Cache

블로그 이미지

StartGuide

I want to share the basic to programming of each category and how to solve the error. This basic instruction can be extended further. And I have been worked in southeast Asia more than 3 years. And I want to have the chance to work another country.

,
노출되는 이미지가 불편하시겠지만 양해를 구합니다. 노출, 클릭등에 관한 자료로 활용 중입니다.

 

표준 프레임워크 개발 환경 구성: 원문링크1, 참조링크1

1. Eclipse설치: Download 64bit

2. Eclipse설치가 되면, Spring Core IDE설치:  dist.springframework.org/release/IDE

3. Eclipse설치가 되면, eGovFramework, 표준 프레임워크 설치

1) 3.8 : maven.egovframe.kr:8080/update_3.8

2) 3.5.1 : maven.egovframe.kr:8080/update

*설치후에 Perspective추가

*필수, 추가 설치: 참조링크

--JUnit(이클립스에 포함되어 설치됨)

--UML2 Extention

download.eclipse.org/releases/xxxxxxx,  Modeling->UML2 Extender SDK

--Subversive SVN Team Provider/ SVN Connector

: polarion download, Latest Stable Bulld for Eclipse

 

eGovFrame, New Web Project 만들기, 원문링크

-- Tomcat 8+, JDK 7+, Eclipse 2019-06, eGov 3.7 +, Spring Framework 4.2+, Maven 4.0+

-- 프로젝트 생성 에러: Java 버젼 및 Path 확인

--pom.xml 에러: Failed to read artifact xxxxx egovframework.rte xxxx 3.5.0

: 표준 프레임웍 레파지토리 주소 변경, 원문링크

: www.egovframe.go.kr/maven ==> maven.egovframe.kr:8080/maven/ 

 

-- web.xml Missing 에러 : src/main/webapp/WEB-INF/에 web.xml생성

 

# 기타, 실행 환경 Migration (3.5 -> 3.6)

 

egovframework:rtemigration3.6 [eGovFrame]

표준프레임워크 3.6는 기존 표준프레임워크 3.X와의 호환성을 염두해두고 실행환경의 버전 업그레이드를 진행하였으나, 전체 오픈소스SW 업그레이드에 따라 일부 변경이 필요합니다. 또한, 각 프로젝트의 상황 및 환경에 따라서 버전 업그레이드에 따른 충돌, 버그, 불안정성이 발생할 수도 있으니 충분한 테스트 후 진행하시기 바랍니다. 표준프레임워크 3.6는 JDK 1.7이 필요합니다. 이에 따라 우선 관련된 WAS 등 적용되어 있는 SW 등이 JDK 1.7을 지

www.egovframe.go.kr

 

# eGovFrame 버젼별 차이

블로그 이미지

StartGuide

I want to share the basic to programming of each category and how to solve the error. This basic instruction can be extended further. And I have been worked in southeast Asia more than 3 years. And I want to have the chance to work another country.

,
노출되는 이미지가 불편하시겠지만 양해를 구합니다. 노출, 클릭등에 관한 자료로 활용 중입니다.

# 이클립스에서 메이븐 프로젝트 만들기 ( Create a Meven Web Project with Eclipse)

 

 

>> 참조

# 이클립스에서 메이븐 참조 추가 (Import Maven Preferences in Eclipse)

-- 메이븐 원격 archetype 목록을 이클립스에서 import

 

>> 참조

* https://search.maven.org에서 검색 결과(June 2019)

# Web Application 프로젝트 개발 순서 (예제)

1.Create Maven Web Application

2.Add Dependencies - pom.xml File

3.Project Structure : Class Diagram

4.AppInitializer - Register a DispatcherServlet using Java-based Spring configuration

5.PersistenceJPAConfig - Spring and Hibernate Integration using Java-based Spring configuration

6.WebMvcConfig - Spring MVC Bean Configuration using Java-based Spring configuration

7.JPA Entity - Customer.java

8.Spring MVC Controller Class - CustomerController.java

9.Service Layer - CustomerService.java and CustomerServiceImpl.java

10.DAO Layer - CustomerDAO.java and CustomerDAOImpl.java 11 JSP Views - customer-form.jsp and list-customers.jsp

11.Serve Static Resources - CSS and JS

12.Build and Run an application

>> Class Diagram

-- AppInitializer, AppContext, WebMvcConfig

-- CustomerController, Customer

-- CustomerServiceImpl, CustomerService

-- CustomerDAOImpl, CustomerDAO

>> 참조

블로그 이미지

StartGuide

I want to share the basic to programming of each category and how to solve the error. This basic instruction can be extended further. And I have been worked in southeast Asia more than 3 years. And I want to have the chance to work another country.

,
노출되는 이미지가 불편하시겠지만 양해를 구합니다. 노출, 클릭등에 관한 자료로 활용 중입니다.

부제 : , Java + Slack Web Hook API

 

# 채널 설정

1. 슬랙(slack.com)에서 Workspace에 로그인(또는 신규 생성)후, 채널(=그룹채팅)을 생성

 

2. 아래 메뉴에서,

1) 원하는 채널을 선택(또는 신규생성)하고,

2) 접근API를 생성(Add Incoming WebHooks Integration)

3) 생성된 Webhook URL을 복사/저장

 

- 메뉴 : https://my.slack.com/services/new/incoming-webhook/ , [MyWorkspace].slack.com으로 연결

- 설명 : api.slack.com -> incoming webhooks

 

3. 메시지 전송이 가능해지면, 채널로 초대하기(Invite People)

# 파라미터 옵션들

[POST]

2 Options

1.send a JSON string as the payload parameter in a POST request

2.send a JSON string as the body of a POST request

Sending Messages

payload={"text": "This is a line of text in a channel.\nAnd this is another line of text."}

Adding links

payload={"text": "{A very important thing has occurred! <https://alert-system.com/alerts/1234|Click here> for details!"}

Customized Appearance

"username":"new-bot-name"

"icon_url": "https://slack.com/img/icons/app-57.png"

"icon_emoji": ":ghost"

Channel Override

선택된 기본 채널을, JSON 에서 변경 가능하다. "channel" : "#other-channel"

그리고, 직접메시지는 "channel": "@username"

Example

curl -X POST --data-urlencode "payload={\"channel\": \"#dev~~channel\", \"username\": \"webhookbot\", \"text\": \"This is posted to #devpostchannel and comes from a bot named webhookbot.\", \"icon_emoji\": \":ghost:\"}" https://hooks.slack.com/services/T1~~~~~~F6495

 

# 구현 예제

1) 연동(Java Native) 모듈 생성

https://github.com/sketchout/ChannelNotifySlack

 

2) 연동(Java Spring) 모듈 생성

String hooksSlack = "https://hooks.slack.com/services/xx/yy/zz"; 
CloseableHttpClient client = HttpClients.createDefault(); 
HttpPost httpPost = new HttpPost(hooksSlack); 

String message = " " ; 
String json = "{ \"text\": \""+ message.toString() + "\" }"; 

StringEntity entity = new StringEntity(json); 
httpPost.setEntity(entity); 
httpPost.setHeader("Accept", "application/json"); 
httpPost.setHeader("Content-type", "application/json"); 
CloseableHttpResponse response = client.execute(httpPost); 
log.error("getStatusCode : " + response.getStatusLine().getStatusCode() ); 
//assertThat
( response.getStatusLine().getStatusCode(), equalTo(200) ); 
client.close();

 

* 실행 결과 (샘플)

 

# 참조

# Spring Slack Integration : http://wooriworld2006.tistory.com/382

# POST with JSON : http://www.baeldung.com/httpclient-post-http-request

# Webhook URL : https://stackoverflow.com/questions/37423129/slack-incoming-web-hook-and-getting-it-to-work-with-httppost

블로그 이미지

StartGuide

I want to share the basic to programming of each category and how to solve the error. This basic instruction can be extended further. And I have been worked in southeast Asia more than 3 years. And I want to have the chance to work another country.

,
노출되는 이미지가 불편하시겠지만 양해를 구합니다. 노출, 클릭등에 관한 자료로 활용 중입니다.

# 설정

1.그룹(채팅)을 개설하고,

2. LINE Notify를 그룹 멤버로 초대하고,

3. https://notify-bot.line.me에 로그인하고, MyPage에서 해당 그룹에 대한 Token을 발행

 

# 구현 예제, 코드

4. 프로그램 작성(Java) : https://github.com/sketchout/GroupNotifyLINE

 

# 참조

> 슬랙(Slack) 메신저로 메시지(알림) 보내기

https://blog.naver.com/macyoo/221388852982

 

'Web Tech. > Spring Framework' 카테고리의 다른 글

전자 정부 프레임웍, 설치 with MacBook  (0) 2019.08.08
Maven Project 생성하기  (0) 2019.06.28
thread-safe하도록 servlet작성하기  (0) 2018.07.20
Tomcat Memory Leak  (0) 2018.07.18
Java Spring + Slack Web Hook API  (0) 2018.03.13
블로그 이미지

StartGuide

I want to share the basic to programming of each category and how to solve the error. This basic instruction can be extended further. And I have been worked in southeast Asia more than 3 years. And I want to have the chance to work another country.

,
노출되는 이미지가 불편하시겠지만 양해를 구합니다. 노출, 클릭등에 관한 자료로 활용 중입니다.


Java Code for mongoDB Query


1. MongoCursor 생성

Document docQuery = new Document();

docQuery.put("key1","value1");


MongoCursor<Document> mc = collection.find(docQuery).iterator();

Document curDoc = mc.next;

...

mc.close(); // cursor close


2. MongoClient 생성

List<MongoCredential> credentialList = new ArrayList<>();

MongoCredential credential = MongoCredential.createCredential(_USER, "admin",_PWD.toCharArray() );

credentialList.add(credential);


ServerAddress svr = new ServerAddress(_SVR, _PORT);

mongoClient = new MongoClient(svr, credentialList);

...

mongoClient.close(); // 연결 닫기


3. MongoCollection 생성

MongoDatabase db = mongoClient.getDatabase(dbName);

MongoCollection<Document> collection = db.getColleciton(collectionName); 


* ISODate, docQuery, 자료 목록 가져오기

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");

Date gtDate = sdf.parse("2018-06-04T00:00:00.000Z");


Document docQuery = new Document();

docQuery.put("reg_dt", new Document("$gt", gtDate) );


* ISODate, JSON -> Document, 자료 추가 하기

String jsonData = "{" 

        + " 'key1' : '"+ curDoc.get("key1")+"',"+

        + " 'key2' : '"+ curDoc.get("key2")+"'"+ "}";

Document docInsert = Document.parse(jsonData);

docInsert("reg_dt", regDate);


collection.insertOne(docInsert);


* Error 1,  메시지 & 해결 시도 방법

A pipeline stage specification object must contain exactly one field.

A

You should make a pair every pipeline in {}.

db.collection.aggregation(

  { $group: ... },

  { $match: ...}

)




'DBMS, noSQL > mongoDB' 카테고리의 다른 글

Robo 3T(Robomongo) 폰트 변경  (0) 2018.10.24
CentOS에 MongoDB 64bit 설치하기  (0) 2017.02.07
사용자 계정 관리  (0) 2017.02.07
블로그 이미지

StartGuide

I want to share the basic to programming of each category and how to solve the error. This basic instruction can be extended further. And I have been worked in southeast Asia more than 3 years. And I want to have the chance to work another country.

,
노출되는 이미지가 불편하시겠지만 양해를 구합니다. 노출, 클릭등에 관한 자료로 활용 중입니다.

Robo 3T(Robomongo)  폰트 변경



-- 부제:  몽고 DB 클라이언트, 폰트 사이즈 변경하기



방법1. Config수정 하기



1) Config 위치 (윈도우 기준)



C:/.3T/robo-3T/1.2.1/robo3t.json


** 기존 버젼 : robomongo.json




2) 폰트 정보 변경



변경 전

  "textFontFamily" : "",

 "textFontPointSize" : -1,

 변경 후

  "textFontFamily" : "Lucida Console",

 "textFontPointSize" : 12,




* 변경 후 (스크린 샷)




*** 클라이언트를 종료후에 robo3t.json을 수정하고, 다시 실행




참조1 : https://github.com/Studio3T/robomongo/issues/1250

참조2: https://github.com/Studio3T/robomongo/issues/645

'DBMS, noSQL > mongoDB' 카테고리의 다른 글

Java Code for mongoDB Query  (0) 2018.10.30
CentOS에 MongoDB 64bit 설치하기  (0) 2017.02.07
사용자 계정 관리  (0) 2017.02.07
블로그 이미지

StartGuide

I want to share the basic to programming of each category and how to solve the error. This basic instruction can be extended further. And I have been worked in southeast Asia more than 3 years. And I want to have the chance to work another country.

,
노출되는 이미지가 불편하시겠지만 양해를 구합니다. 노출, 클릭등에 관한 자료로 활용 중입니다.

Cloud9 Ruby, DB 변경 하기 (sqlite3 -> mysql )



1. 기본 Template선택


2. MySQL 설치하기



3. Config변경하기

- 복사본 만들기 : cp config/database.yml config/database.yml.sqlite3

- Gemfile추가하기 : gem 'mysql2' 

- bundle 설치 : bundle install

- config/database.yml 변경하기

4. Database생성하기

> mysql-ctl cli

> create database scaffold2_development;

> create database scaffold2_test;


5. Table 생성하기

- bash 쉘 열기

>rake db:migrate



6. rake db:migrate 오류 발생시 


- Rails Specified 'mysql2' for database adapter, but the gem is not loaded.


https://medium.com/sudogem/rails-specified-mysql2-for-database-adapter-but-the-gem-is-not-loaded-add-gem-mysql2-to-your-gemfile-d35bb40eb961


#gem 'rails', '4.2.5'

#gem 'mysql2', '~> 0.3.20'


* Scaffold 프로젝트 생성하기


>rails g scaffold post title:string content:string

>rake db:migrate


# Run Project

# Preview


'Web Tech. > Ruby on Rails' 카테고리의 다른 글

Cloud9 Ruby Rails의 MySQL설정  (0) 2018.10.11
Ruby on Rails 설치하기 ( VMware + Ubuntu )  (0) 2018.04.17
블로그 이미지

StartGuide

I want to share the basic to programming of each category and how to solve the error. This basic instruction can be extended further. And I have been worked in southeast Asia more than 3 years. And I want to have the chance to work another country.

,
노출되는 이미지가 불편하시겠지만 양해를 구합니다. 노출, 클릭등에 관한 자료로 활용 중입니다.


Cloud9 Ruby Rails의 MySQL설정


1. c9 가입후 workspace생성


- Ruby template은 sqlite3로 설정되어서, Blank template를 선택

- Workspace Name은 'ror'로 임의 부여



2. Terminal에서 MySQL 사용 설정

- mysql-ctl install 실행


mysql-ctl cli를 통해 mysql console 접속(show databases등 명령어 실행)


3. Rails 설치 

: gem install rails


4. Ruby on Rails MySQL 프로젝트 생성

 : rails new scaffold1 -d mysql



5. Database 생성하기

 : mysql-ctl cli로 console접속


- create database scaffold1_development

- create database scaffold1_test



6. config/database.yml 수정 (필요한 부분)


- username : <%= ENV['C9_USER'] %>

- database :

- host : 


7. 서버 실행 

- rails -s -b $IP -p $PORT


8. 접속 주소 확인 

: 메뉴상의 Preview를 통해서 확인

 

9. MVC패턴으로 만들기

Controller생성>rails g controller home
Action 만들기

: 요청을 받고 이를 처리하는 최소 단위
app/controllers/home_controller.rb

def index
end
Action에 대응하는 View 생성하기
app/view/home/index.html.erb

<h1>Hello, World</h1>
Layout (기본 제공)
app/views/layout/application.html.erb

<%= yield %>
Route 명시하기

: 특정 경로를 Controller의 Action에 매칭
HttpType(get,post) 'path'=>'Controller#action'
config/routes.rb

get '/'=>'home#index'



블로그 이미지

StartGuide

I want to share the basic to programming of each category and how to solve the error. This basic instruction can be extended further. And I have been worked in southeast Asia more than 3 years. And I want to have the chance to work another country.

,
노출되는 이미지가 불편하시겠지만 양해를 구합니다. 노출, 클릭등에 관한 자료로 활용 중입니다.

ToDo App by Flutter / 플루터로 만드는 '할일앱'



1. Flutter 프로젝트 생성하기


> flutter create flutter_todo




2. 생성된 lib/main.dart를 지우고, 새로운 내용으로 채우기(Material Design)



심플한 Material-style의 앱을 title bar와 body만을 갖고 있도록 고친다.



모든 것은 Widget이다. MaterialApp, Scaffold, AppBar


3. Stateless & Stateful 위젯



StatelessWidget는 동적으로 변경될 수가 없다. 하지만, 동적인 자식들을 가질 수 있다.

이것이 StatefulWidget이다.




4. State 변경 하기



5. User Interaction: Adding a todo item



6. User Interaction: Removing todo items



...


# 원문


https://medium.com/the-web-tub/making-a-todo-app-with-flutter-5c63dab88190




# Flutter 설치하기 ( Windows )


https://flutter.io/get-started/install/


블로그 이미지

StartGuide

I want to share the basic to programming of each category and how to solve the error. This basic instruction can be extended further. And I have been worked in southeast Asia more than 3 years. And I want to have the chance to work another country.

,
노출되는 이미지가 불편하시겠지만 양해를 구합니다. 노출, 클릭등에 관한 자료로 활용 중입니다.

Postgres SQL - to_char가 응답이 늦을떄(Slow Query)


원문

select
    to_char("Timestamp",'YYYY/MM/DD HH24:MI:SS') as "Timestamp"
from 
    xxx
order by 1 asc


수정

select
    to_char("Timestamp",'YYYY/MM/DD HH24:MI:SS') as "Timestamp"
from (
    select "Timestamp" 
    from xxx
    order by 1 asc
)s


-- 변환 없이 쿼리를 하고, 원하는 포맷으로 감싸라 !!! ( 5배 빨라진다. )


참조 : https://stackoverflow.com/questions/24437023/postgresql-to-char-slowing-query-a-by-a-lot

'DBMS, noSQL > PostgreSQL' 카테고리의 다른 글

DB ERD 추출 하기  (0) 2017.10.27
dblink 문법  (0) 2017.10.25
Postgres 백업 및 복구 ( Backup & Restore with pgAdmin)  (0) 2017.07.21
재구매, 연속 구매  (0) 2017.04.12
Postgres CPU 과다 사용 ( high CPU Usage )  (0) 2017.01.23
블로그 이미지

StartGuide

I want to share the basic to programming of each category and how to solve the error. This basic instruction can be extended further. And I have been worked in southeast Asia more than 3 years. And I want to have the chance to work another country.

,
노출되는 이미지가 불편하시겠지만 양해를 구합니다. 노출, 클릭등에 관한 자료로 활용 중입니다.

thread-safe하도록 servlet작성하기


만약 자바로 웹 어플리케이션을 작성한다면, 서블릿이 가장 친숙한다. JSP로 작성하거나 일반 서블릿으로 작성하든 관계 없이, 서블릿이 제공하는 장점을 받게 된다.

thread-safe라는 것은? 여러 thread가 프로그램의 단일 instance을 실행하여, 메모리를 공유할때, 동일한 위치(영역, 값)를 읽고 쓰려고 시도 할 수 있습니다.


자바 프로그램과 마찬가지로 서블릿은 JVM내에서 실행되어야 하지만, 웹 어플리케이션의 경우 서블릿 컨테이너가 HTTP요청이 들어 오는 곳에서 처리를 합니다.
서블릿의 생명주기의 상당 부분을 프로그래머가 제어 할 수 없고, 생성 및 파괴시에 메모리 사용에 대해 걱정하지 않는다. 
Google이나 Amazon처럼 많은 각 요청에 대해 서블릿은 인스턴스화를 하는 것은 실용적이지 않으며, 서블릿 컨테이너가 multi thread를 처리합니다.



1. thread-safe하냐?

변수 counter는 인스턴스 변수이고, 클래스내에서 정의되어, 클래스 인스턴스에 속합니다.
이 값은 method호출간에 유지되며, 문제는 서블릿 컨테이너가 multi thread이고, 다중 요청을 위해 서블릿의 단일 인스턴스를 공유한다는 점이다.

이 서블릿을 동시에 실행할때 어떤 일이 발생하는지 살펴보자. 처리에 지연을 위해 sleep()를 사용한다. HTML프레림을 사용하여 동시 요청을 만듭니다.

쓰레드 안전하지 않은 서블릿 코드는 다음과 같은 결과를 생성한다.

2.첫번째 방어 : 회피

각 쓰레드에 대해 고유한 변수 인스턴스를 갖도록하기 위해 클래스 내에서 변수 선언한 내용을 method내로 변수 선언을 이동하기만 하면 된다. 차이점은 method에 대한 각 호출에 대해 새 변수가 만들어진다.

3.두번째 방어: 부분 동기화

쓰레드 동기화는 알아야 할 중요한 기술이지만, 필요하지 않으면 이걸 솔루션으로 채택하지 마세요. 코드 블록을 동기화 할때마다 시스템에 병목 현상이 발생합니다. 코드 블록을 동기화할때, 주어진 순간에 동기화된 코드 블록내에 하나의 스레드만 있을 수 있다고 JVM 알려줍니다. 다중 쓰레드에서 동기화된 코드 블록으로 스레드가 실행되면, 2번째 스레드는 1번쨰 스레드가 해당 블록을 종료할때까지 대기해야 합니다.

4.마지막 방어: 전체 동기화

서블릿 컨테이너에 쓰레드가 안전하지 않다는 것을 알려주기 위해서, 빈 인터페이스를 구현해야 합니다. 구현하려는 tag는 SingleThreadModel인터페이스 입니다. 인터페이스를 적용하면, 2개의 쓰레드가 동시에 실행 될 수 없음을 보장 합니다. (블록이 발생하므로, 되도록 사용하면 안되겠죠?)

원문 : Jul 12, 2004
https://www.javaworld.com/article/2072798/java-web-development/write-thread-safe-servlets.html?page=2 

블로그 이미지

StartGuide

I want to share the basic to programming of each category and how to solve the error. This basic instruction can be extended further. And I have been worked in southeast Asia more than 3 years. And I want to have the chance to work another country.

,
노출되는 이미지가 불편하시겠지만 양해를 구합니다. 노출, 클릭등에 관한 자료로 활용 중입니다.

Tomcat Memory Leak

VisualVM을 사용해서, 메모리 누수를 찾기 위해, Tomcat 연결 하기


1. VisaulVM 다운로드

> Download 주소 : https://visualvm.github.io/download.html

> Monitor : CPU, Heap/Metaspace, Classes, Threads

> Plugin Download: https://visualvm.github.io/plugins.html


2. Tomcat setenv.sh 설정하기

위치 : ~tomcat/bin

#!/bin/sh

export CATALINA_OPTS="$CATALINA_OPTS

 -Dcom.sun.management.jmxremote.authenticate=false"

export CATALINA_OPTS="$CATALINA_OPTS

 -Dcom.sun.management.jmxremote.port=9999"

export CATALINA_OPTS="$CATALINA_OPTS

 -Dcom.sun.management.jmxremote.ssl=false"

export CATALINA_OPTS="$CATALINA_OPTS 

-Djava.rmi.server.hostname=localhost"


3. Tomcat 재시작


4. 연결하기 : ViusalVM - Remote - Add Host - Add Jmx Connection

* localhost가 서버인 경우에는 IP와 hostname를 매칭을 해 주세요. 

(/etc/hosts에 등록을 해도 됩니다.)


5. Heap Dump 

- 원격 Dump는 8-900M를 압축해서 다운로드

- Eclipse에서 Memory Analyzer(http://www.eclipse.org/mat/) 열기를 수행하면,
leak problem suspect를 접근 가능


> 원문 : java.lang.OutOfMemoryError: Metaspace

Tomcat는 1.25GB를 넘게 설정된 MaxMetaspaceSize지만,....
remote JMX 연결을 허용해서, VisualVM을 통해, metaspace를 살펴본다

https://apollogic.com/en/2017/05/fixing-memory-leaks-tomcat/


> 참조 : Metaspace란?

Java 7의 PermGen(Permanent Generation) Java 8에서는 사라지고, Metaspace라는 네이티브 메모리 영역으로 클래스 메타데이터들이 모두 이동했다...
heap영역에서 사용할 수 있는 메모리가 늘어났다...

http://starplatina.tistory.com/entry/JDK8%EC%97%90%EC%84%A0-PermGen%EC%9D%B4-%EC%99%84%EC%A0%84%ED%9E%88-%EC%82%AC%EB%9D%BC%EC%A7%80%EA%B3%A0-Metaspace%EA%B0%80-%EC%9D%B4%EB%A5%BC-%EB%8C%80%EC%8B%A0-%ED%95%A8

블로그 이미지

StartGuide

I want to share the basic to programming of each category and how to solve the error. This basic instruction can be extended further. And I have been worked in southeast Asia more than 3 years. And I want to have the chance to work another country.

,
노출되는 이미지가 불편하시겠지만 양해를 구합니다. 노출, 클릭등에 관한 자료로 활용 중입니다.

Firebase Messaging Notification



1. AndroidManifest.xml


2. Build the notification


# Cloud Messaging https://firebase.google.com/docs/cloud-messaging/android/client # Build Notification https://developer.android.com/training/notify-user/build-notification




블로그 이미지

StartGuide

I want to share the basic to programming of each category and how to solve the error. This basic instruction can be extended further. And I have been worked in southeast Asia more than 3 years. And I want to have the chance to work another country.

,
노출되는 이미지가 불편하시겠지만 양해를 구합니다. 노출, 클릭등에 관한 자료로 활용 중입니다.


Functions 샘플




// 에러 : TypeError: Cannot read property 'receiver_id' 


https://stackoverflow.com/questions/48031598/cloud-functions-for-firebase-fcm-reference-error




참고 : https://firebase.google.com/docs/functions/beta-v1-diff

Cloud 함수용 Firebase SDK 이전 가이드 : 베타에서 버젼 1.0으로 이전


> event매개 변수가 data 및 context로 분할됨



블로그 이미지

StartGuide

I want to share the basic to programming of each category and how to solve the error. This basic instruction can be extended further. And I have been worked in southeast Asia more than 3 years. And I want to have the chance to work another country.

,