Javascript timestamp 컨버터 (로컬시간 기준)

|

개인적으로 자주 쓸 것 같아서 보관용으로 포스팅한다.

<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Timestamp Converter</title>
<script
  src="https://code.jquery.com/jquery-1.12.4.js"
  integrity="sha256-Qw82+bXyGq6MydymqBxNPYTaUXXq7c8v3CwiYwLLNXU="
  crossorigin="anonymous"></script>
<body>
	<textarea id="timestamp_list" style="height: 200px"></textarea>
	<button id="time_btn">변환</button>
	<div id="conv_list">
	</div>
	<script>
		$("#time_btn").on("click", function() {
			var $timestamp_list_val = $("#timestamp_list").val();
			var lists = $timestamp_list_val.split("\n");
			var conv_lists = [];
			$.each(lists, function(ind, val) {
				var convDate = new Date(Number(val));
				conv_lists.push(convDate.toLocaleString());
			});
			$("#conv_list").html(conv_lists.join("<br/>"));
		});
	</script>
</body>
</html>

스프링에서 @Async로 비동기처리하기

|

언제 사용하면 좋을까?

  1. 요청이 긴 경우
  2. 로그 처리
  3. 푸시 처리

Async 기능 켜기 Enable Async Support

자바 설정(Java configuration) 관련 클래스에 @EnableAsync 를 추가해주기만 하면 된다.

@Configuration
@EnableAsync
public class SpringAsyncConfig { ... }

Config

@EnableAsync만 추가하면 기본적인 설정은 끝이다.
하지만, 기본값인 SimpleAsyncTaskExecutor 클래스는 매번 Thread를 만들어내는 객체이기 때문에 Thread Pool이 아니다.
Thread Pool을 설정해기 위해 AsyncConfigurerSupport를 상속받아 재구현하자.

@Configuration
@EnableAsync
public class SpringAsyncConfig extends AsyncConfigurerSupport {
	@Override
	public Executor getAsyncExecutor() {
		ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
		executor.setCorePoolSize(2);
		executor.setMaxPoolSize(10);
		executor.setQueueCapacity(500);
		executor.setThreadNamePrefix("heowc-async-");
		executor.initialize();
		return executor;
	}
}

선언 후 호출하기.

어노테이션 선언

  • 비동기 작업을 하기 위한 메소드에 @Async를 추가하면 된다. 만약 callback이 필요하다면, Future 클래스 등의 객체로 감싸서 반환하면 된다.
@Component
@Slf4j
public class MessageSender {
 /**
   * @param to
   * @param subject
   * @param text
   */
  @Async
  public void sendSimpleMessage(String to, String subject, String text) {
     sendSimpleMessageSync(to, subject, text);
  }

  public void sendSimpleMessageSync(String to, String subject, String text) {
    .....
  }
}

호출은 아래와 같이 하면 된다.

 
 @Autowired
 private MessageSender messageSender;

 public void sendEmail(String originCd, String subject, String to, String companyCd, String productCd, String reservCd, String templateID, String dailCode, Map valueMap){
       ...
       messageSender.sendSimpleMessage(to, subject, html);
       ...
  }

참고:

  • https://heowc.github.io/2018/02/10/spring-boot-async/

[intellij-idea] IntelliJ를 사용하여 git commit 메시지 수정

|

로컬에만 커밋 되어있고 push 처리가 되지 않았을 경우에 할 수 있는 2가지 방법.

  1. IntelliJ 2017.1 이상 => 로그로 이동하여 + 단어를 오른쪽 클릭 후 F2 키를 눌러서 커밋메세지를 변경할 수 있다.
  2. jetBrains Go to View -> Version Control -> Log 탭 선택 후 오른쪽 마우스를 클릭하고 undo commit 을 선택하면 다시 커밋할 수 있다.

오라클 테이블 스페이스 용량 조회

|

select   substr(a.tablespace_name,1,30) tablespace,
         round(sum(a.total1)/1024/1024,1) "TotalMB",
         round(sum(a.total1)/1024/1024,1)-round(sum(a.sum1)/1024/1024,1) "UsedMB",
         round(sum(a.sum1)/1024/1024,1) "FreeMB",
         round((round(sum(a.total1)/1024/1024,1)-round(sum(a.sum1)/1024/1024,1))/round(sum(a.total1)/1024/1024,1)*100,2) "Used%"
from
         (select   tablespace_name,0 total1,sum(bytes) sum1,max(bytes) MAXB,count(bytes) cnt
          from     dba_free_space
          group by tablespace_name
          union
          select   tablespace_name,sum(bytes) total1,0,0,0
          from     dba_data_files
          group by tablespace_name) a
group by a.tablespace_name
order by tablespace

자바(JAVA) 형 변환(String과 Date)

|

String to Date

String from = "2013-04-08 10:10:10";
SimpleDateFormat transFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date to = transFormat.parse(from);

Date to String

Date from = new Date();
SimpleDateFormat transFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String to = transFormat.format(from);