프로젝트 시작하면서 또 봐야 할 DB 설계시 정부 표준을 봐야 하기에 또 옛자료들 들추며확인 중이었는데

7월에 업데이트 (5차가 진행됨)

1)공동데이터 포털 공지사항 접속  https://www.data.go.kr/bbs/ntc/selectNoticeListView.do 

 

공공데이터 포털

국가에서 보유하고 있는 다양한 데이터를『공공데이터의 제공 및 이용 활성화에 관한 법률(제11956호)』에 따라 개방하여 국민들이 보다 쉽고 용이하게 공유•활용할 수 있도록 공공데이터(Datase

www.data.go.kr

2) 공공데이터 공통표준용어 검색

검색

결과를 확인하여 최신의 데이터를 확인

용어, 단어, 도메이인 엑셀로 되어 있는 파일(필요에따라서 HWP 파일도 있음)

 

3

3) 해당 최신 글을 들어가서 다운로드 한다.

2022-07 링크

 

확인용으로 남겨 본다.

sql 문의 log 출력을 아름답게 변경하려고 준비 했던 것들이 있었다. ~3.10 에서 사용하던 log 설정 및 CustomFormatter 파일이 있어 그대로 이용중이 었다. 다만, pom 설정을 조금 다르게 가져가다 보니 문제가 발생했다.

 

기본적으로 

https://offbyone.tistory.com/208

 

log4jdbc-remix의 Custom SQL Formatter 만들기(SQL log 줄 바꿈)

SQL Query 로그의 줄을 바꿔서 어느정도 예쁘게 출력하는 방법을 알아보겠습니다. log4jdbc-remix 를 사용해서 쿼리 로그를 만들게 됩니다. 테스트는 전자정부표준프레임워크 비즈니스 템플릿을 MySQL(

offbyone.tistory.com

이 내용을 참조하여 진행하는 것을 원칙으로 하고 설정 끝내고 구동을 했더니 WAS가 시작 되지 않고 아래와 같은

아래 같은 오류가 발생한다.

Property 'logFormatter' 
threw exception; nested exception is java.lang.NoSuchMethodError:
'void net.sf.log4jdbc.SpyLogFactory.setSpyLogDelegator(net.sf.log4jdbc.SpyLogDelegator)'

 

context-datasource.xml 파일의 설정

egovframework.cmmn.Log4JdbcCustomFormatter.java 파일은 위 블로그를 참조로 만들었음.

    <bean id="dataSource" class="net.sf.log4jdbc.Log4jdbcProxyDataSource">
       <constructor-arg ref="dataSource-Spied" />
       <property name="logFormatter"> 
	       <bean class="egovframework.cmmn.Log4JdbcCustomFormatter"> 
	           <property name="loggingType" value="MULTI_LINE" /> 
	           <property name="margin" value="8" /> 
	           <property name="sqlPrefix" value="SQL: ################################################################################################################" /> 
	       </bean> 
    	</property>
    </bean>
    
     <bean id="dataSource-Spied" 설정들 ...

여러 이런식의 파생 문제가 발생하는 경우가 있다. 위처럼 인경우 나 그 근접한 문제인 경우

또는 junit 등의 같이 사용후 오류 등이 있다.

 

log4j의 여러 라이브리의 충돌 인것이다.

 

pom.xml 을 확인해 보자.

 

<!-- log4jdbc driver -->
		<dependency> 
	        <groupId>org.lazyluke</groupId> 
	        <artifactId>log4jdbc-remix</artifactId> 
	        <version>0.2.7</version> 
        </dependency>
        
        <dependency>  
              <groupId>org.slf4j</groupId>  
             <artifactId>slf4j-log4j12</artifactId>  
            <version>1.7.35</version>  
        </dependency>
        
        <!-- 아래가 충돌 : 나중에 삭제함. -->
        <dependency>
            <groupId>com.googlecode.log4jdbc</groupId>
            <artifactId>log4jdbc</artifactId>
            <version>1.2</version>
            <exclusions>
                <exclusion>
                    <artifactId>slf4j-api</artifactId>
                    <groupId>org.slf4j</groupId>
                </exclusion>
            </exclusions>
        </dependency>

나는 이렇게 되어 있었다.  그렇다. log4jdbc 이 충돌 하고 있던 것이다. 하...

googlecode.log4jdbc 부분 전체를 주석으로 변경하고 처리 하면 되는 것이다.

 

알길이 없다 싶어서 기록으로 남겨 놓았다. Java 오류가 발생하는 것도 아니고 말이다.

다른 문제를 찾을 수도 있지만 저런 라이브러리 충돌도 잘 봐야 할것 같다.

echat 사용시 차트를 이미지로 저장 시 옵션에 있는 기능을 사용할 수 있지만

외부 디자인에 넣으려고 할 때도 있다. 찾아보면

 

아래와 같은데 이는 조금 문제가 있다. 확장으로 이미지를 디자인식으로 올린 경우 저장이 동일하게 되지 않는다. 

 // Get canvas information
    let canvas = document.getElementsByTagName("canvas");
    if(canvas&&canvas.length>0){
        // create label
        let tempA = document.createElement("a");
        // Set download name
        tempA.download = "echarts download" +".png";
        // Set address and file type
        tempA.href = canvas[0].toDataURL("image/png");
        document.body.appendChild(tempA);
        // Trigger download event
        tempA.click();
        // Remove Tag
        tempA.remove();
     }

따라서 온전히 저장을 하기 위해서는 echat  내부 api를 사용해야 한다.  

/**
 * @param flNm			저장 파일명 확장자 포함
 * @param chartObj		차트 오브젝트명
 * @param pixelRt		저장 이미지 비율 default 1(1:1)
 * @returns
 */
function downloadURI(flNm, chartObj, pixelRt = 1) {
    var tempA = document.createElement("a");
    tempA.download = flNm ;
    //address 설정하고 파일의 타입 정하기
    tempA.href = chartObj.getDataURL({
        pixelRatio: pixelRt
    });
    document.body.appendChild(tempA);
    //클릭 다운로드 이벤트
    tempA.click();
    //태그를 제거합니다
    tempA.remove();
}

함수로 만들어 보았다.  내부 함수를 이용하면 온전히 이미지로 저장이 가능하다.

 

	public boolean generateVideoBySequenceImages4Jcoder
		(String videoFilename, List<String> filelist,  int FPS) throws Exception {
		boolean result = false;
		SeekableByteChannel out = null;
		
		try {
			out = NIOUtils.writableFileChannel(videoFilename);
		      // for Android use: AndroidSequenceEncoder
            AWTSequenceEncoder encoder = new AWTSequenceEncoder(out, Rational.R(FPS, 1));
            for (String fnpath : filelist) {
            	LOGGER.info(fnpath);
            	
            	File img = new File(fnpath);
            	BufferedImage image = ImageIO.read(img);
            	encoder.encodeImage(image);
            }
            // Finalize the encoding, i.e. clear the buffers, write the header, etc.
            encoder.finish();
            result = true;
			
		} catch (Exception e) {
//			LOGGER.info("generateVideoBySequenceImages Exception: " + e);
			e.printStackTrace();
			
		} finally {
            NIOUtils.closeQuietly(out);
        }
		return result;
	}
    
    ----
    
    ...사용시
    
         String filefullNm = tempPath + fileName + format1.format(time)+ "_jcodec.avi";
        	if ( generateVideoBySequenceImages4Jcoder(filefullNm, filelist, Integer.valueOf(videofps)) ){
        		LOGGER.info("동영상저장 끝:" + filefullNm);
        		result = "true";
        		mv.addObject("filePath", filefullNm);
        	}

참조 : https://stackoverflow.com/questions/55232723/generate-mp4-video-file-by-sequence-png-images-in-java-8

 

Generate MP4 video file by sequence PNG images in Java 8

After testing several tools for Windows 10 found on the network, I had great difficulty in finding one that could carry around 5,000 PNG images in sequence and convert it into a video that was

stackoverflow.com

jcodec 사용하여 순서 이미지들로 동영상 파일 제작 

(sequence images to video)

 

그런데 문제가 발생한다.

계속 발생하는게 아니라 특정 조건에 아래와 같이 발생한다.

Component 1 width should be a multiple of 2 for colorspace: YUV420J

 

찾아 보면 이미지의 넓이와 크기가 짝수여야 한다는 것이다.

 

그래서 원천 이미지를 만들어 내는 곳에 소스를 변경해야 만 처리가 편한다.

사용은 아래와 같이

	
...
  BufferedImage bufImg = ImageIO.read(new ByteArrayInputStream(imageBytes));

  int width          = bufImg.getWidth() ;
  int height         = bufImg.getHeight();
  if ( (width %2) != 0 ) width++;
  if ( (height %2) != 0 ) height++;
  BufferedImage resizedImage = resizeImg(bufImg, width, height);

  ImageIO.write(resizedImage, "png", new File(filefullNm)); 
...
   
   
   	// 크기 재생산
    public BufferedImage resizeImg(BufferedImage inputImage, int width, int height)
            throws IOException {
    	//https://icarus8050.tistory.com/32

        BufferedImage outputImage =
                new BufferedImage(width, height, inputImage.getType());

        Graphics2D graphics2D = outputImage.createGraphics();
        graphics2D.drawImage(inputImage, 0, 0, width, height, null);
        graphics2D.dispose();

        return outputImage;
    }

이와 같이 하면 문제가 없어 질 것이다. 두둥탁~

참 

pom

 

<!--        jcodec   #######################################################################################-->
<dependency>
    <groupId>org.jcodec</groupId>
    <artifactId>jcodec</artifactId>
    <version>0.2.5</version>
</dependency>

<dependency>
    <groupId>org.jcodec</groupId>
    <artifactId>jcodec-javase</artifactId>
    <version>0.2.5</version>
</dependency>

 

메이븐도 필수~

 

 

 

 

증상 : NET::ERR_CERT_AUTHORITY_INVALID 나면서 거리뷰 이미지 표출 기능 로컬에서 개발시에 오류가 발생

 

서버에서는 자신의 인증 및 처리가 되어 있지만, 로컬에서는 처리가 되지 않아서 오류가 나는것으로 판단됩니다.

 

문의를 했더니 


ERR_CERT_COMMON_NAME_INVALID 해당 에러는 인증서에 올바른 subjectAlternativeName 확장이 없는 경우 연결이 비공개로 설정되지 않았다는 NET::ERR_CERT_COMMON_NAME_INVALID 오류가 사용자에게 표시되는 것으로 알려져있습니다.

 

자세한 사항은 고객센터 아래 URL을 확인을 부탁 드립니다.

https://support.google.com/chrome/a/answer/9813310?hl=ko

 

알려진 문제 - Google Chrome Enterprise 고객센터

도움이 되었나요? 어떻게 하면 개선할 수 있을까요? 예아니요

support.google.com


이렇게 답변이... 머라고 하는 건지 링크를 가봤지만, 모르겠다. 역시 구글링 뿐이구나 싶다.

 

1. 서버에 인증서 처리를 로컬에 반영하는 분들도 있었다. 처리 방법 하나

2. 크롬에서는 그냥 설정으로 처리를 통해 나오게 한다.

 

전 2번으로 했습니다. 

이거 보여줄려고 말이 길었습니다.

 

크롬 설정에서 좌측 개인정보 및 보안 메뉴서 사이트 설정을 들어가서 밑에서 3번째즈음.

안전하지 않은 콘텐츠 설정

안전하지 않은 콘텐츠 설정을 선택합니다.

 

허용에 pvimgl.map.naver.com 사이트를 추가합니다. 그러면 뽕~ 끝입니다.

그럼 즐프 입니다. ^^

 

 

+ Recent posts