반응형

Programming 211

자바(JAVA) 직렬화, 역직렬화

자바 직렬화와 역직렬화 - 객체의 저장과 복원 자바에서 직렬화와 역직렬화는 데이터를 객체로 변환하고 그 반대 과정을 수행하는 중요한 개념입니다. 이러한 프로세스는 객체를 파일에 저장하거나 네트워크를 통해 전송하는데 유용하며, JAVA의 Serializable 인터페이스를 사용하여 구현됩니다. 1. 직렬화 (Serialization) 직렬화는 객체를 이진 형식으로 변환하여 파일이나 네트워크를 통해 전송 가능한 형태로 만드는 과정입니다. 객체를 직렬화하려면 해당 클래스가 Serializable 인터페이스를 구현해야 합니다. import java.io.*; public class SerializationExample implements Serializable { private String name; priva..

Programming/JAVA 2023.10.31

[ReactNative] CocoaPods could not find compatible versions for pod "RCT-Folly":

2022년 1월에 회사에서 ReactNative 로 iOS, Android 앱을 개발해서 스토어에 올렸다. 1년 넘게 수정사항이 없다가 수정해야 할 일이 생겨서 예전 소스 그대로 build를 해봤는데 CocoaPods could not find compatible versions for pod "RCT-Folly": 에러를 만나게 되었다. 뭔 짓을 해봐도 안되길래 마음을 차분히 가라앉히고 검색을 해봤더니 아래와 같은 공식사이트 페이지를 발견하게 되었다. https://reactnative.dev/docs/new-architecture-troubleshooting Troubleshooting · React Native This page contains resolutions to common problem ..

[Spring Tomcat] failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered.

기존 Java Spring로 배포할 때 Tomcat를 재기동하는 방식으로 하고 있었는데, 톰캣이 내려갔다가 다시 올라오는 사이에 서비스 단절이 발생해서 이 것을 어떻게 단절 없이 배포할 수 없을까 고민하다가 Tomcat Parallel Deployment를 적용해서 톰캣의 재시작 없이 Context만 바꿔치기(?)하는 형식으로 변경을 해서 무중단 배포를 적용하게 되었다. 톰캣의 중단 없이 Context가 잘 바뀌긴하는데 기존 Context가 떠 있는 상태에서 새로운 Context가 로드되고, 완전한 교체가 이루어진 다음 기존 Context가 내려갈 때 아래와 같은 톰캣 로그가 발생했다. 심각: The web application [##20230320161639] registered the JDBC dri..

Programming 2023.03.22

[Bravo My Life] 무료 오늘의 운세

Bravo My Life 사이트에서 제공하는 무료 오늘의 운세를 소개합니다. 브라보 마이 라이프 사이트에는 오늘의 운세를 무료로 볼 수 있는 것은 물론, 다양한 유틸리티와 다양한 즐길거리들이 많이 있습니다. 회원 가입 없이 이 모든 것을 무료로 사용하실 수 있습니다. 사용방법도 아주 간단합니다. 성별과 생년월일, 그리고 양력/음력을 입력하시면 됩니다. 태어난 시간의 경우에는 모르시는 분들이 대부분일 것으로 예상됩니다. 물론 저도 태어난 시간은 모릅니다 ^^; 태어난 시간을 알고 계신 분들은 시간을 선택해 주시면 되고, 모르신다면 모름으로 놔두셔도 됩니다. 시간은 자, 축, 인, 묘, 진, 사, 오, 미, 신, 유, 술, 해 중 선택하실 수 있습니다. 위의 화면은 오늘 저의 운세입니다 ^^ 오늘의 운세는 ..

Programming/Etc 2022.08.27

AWS EC2 t2 vs t3 차이점

AWS EC2를 사용할 경우 t2.micro(프리티어 사용가능)을 가장 흔하게 사용합니다. 하지만 인스턴스를 생성할 때 인스턴스 유형을 선택할 수 있는데, 이 중에서 t가 붙은 인스턴스에 관련해서 내용을 공유하고자 합니다. 우선 t 계열에는 t2와 t3가 있습니다. t계열의 인스턴스들은 기본 성능을 제공하다가, 유저들이 몰리거나 하는 등 기준 이상의 성능이 필요할 경우 버스트 기능이 동작하게 됩니다. 물론, 공짜는 아니고 인스턴스 사양마다 제공되는 크레딧이 다르고 그 크레딧이 남아 있는 동안 버스트 기능을 사용할 수 있습니다. 기준 이하 성능으로 사용이 지속될 경우 크레딧이 쌓이고(한계치 있음), 그 이상의 성능을 사용할 경우 크레딧을 소모시킵니다. 크레딧이 다 소모되면, 기준 이상의 성능을 발휘하지 못..

Programming/Etc 2022.08.17

[Amazon Linux] Let's Encrypt SSL 인증서 (epel-release is available in Amazon Linux Extra topic "epel")

Amazon Linux 사용중 Let's Encrypt 인증서를 적용하려고 certbot를 설치하려고 아래와 같은 명령어를 수행했는데 안된다. $ sudo yum install epel-release Loaded plugins: extras_suggestions, langpacks, priorities, update-motd 1 packages excluded due to repository priority protections No package epel-release available. Error: Nothing to do epel-release is available in Amazon Linux Extra topic "epel" To use, run Amazon Linux에서는 EPEL 리포지토리에..

Programming/Etc 2022.07.15

[Spring] redis 를 통한 session 공유 및 하위 도메인간 세션 공유

spring에서 세션을 공유하는 방법은 여러 가지가 있습니다. Tomcat, Apache 등등 있지만, 저의 경우에는 3대의 apache + tomcat로 구성된 서비스를 redis를 통해서 세션을 공유하도록 했습니다. 한 동안 잘 사용하고 있다가 다른 서비스를 띄워서 세션을 같이 공유해야하는 상황이 생겼습니다. 기존 사용하던 도메인이 admin.marsland.co.kr 이었다고 하면 신규로 생긴 서비스는 docs.marsland.co.kr 입니다. 흔히 인터넷에 나와 있는 redis를 통한 세션 공유는 도메인이 틀려지면 세션이 공유는 되지 않습니다. admin.marsland.co.kr에서 로그인을 했을 경우에 docs.marsland.co.kr도메인으로 접근시에도 세션을 공유하여 admin.mars..

nodemon : 이 시스템에서 스크립트를 실행할 수 없으므로

오랜만에 예전에 만들어뒀던 토이 프로젝트 소스를 mac 환경에서 WebStorm IDE에서 돌려보았다. 음~ 잘 돌아가는구먼. 오랜만에 보니 반갑네. 집에 와서 Window OS에서 같은 WebStorm IDE에서 돌렸더니 읭? nodemon을 실행했더니 아래와 같은 에러를 뱉는게 아닌가! PS D:\GDR\sabzil> nodemon nodemon : 이 시스템에서 스크립트를 실행할 수 없으므로 C:\Users\marsl\AppData\Roaming\npm\nodemon.ps1 파일을 로드할 수 없습니다. 자세한 내용은 about_Execution_Policies(https://go.microsoft.com/fwlink/?LinkID=135170)를 참조하십시오. 위치 줄:1 문자:1 + nodemon..

Programming/Node.js 2022.07.09

[Delphi] 아이콘 캐시 초기화

이 내용은 Delphi 에만 국한되는 내용은 아니지만, Delphi 를 하다가 나온 문제를 해결하다가 발견한 내용이기에 해당 카테고리에 포스팅을 합니다. 프로그램을 개발할 때, 처음부터 실행 아이콘을 변경해서 해도 되지만 이는 우선순위가 중요한 것은 아니기에 보통은 프로그램이 완료되고 마무리할때즈음해서 이쁜 아이콘을 구해서 설정하곤 합니다. 이렇게 설정한 아이콘은 작업표시줄, 폼 좌측 상단 등등 잘 표시가 되지만!! 희안하게도 탐색기에서 파일 아이콘은 계속 기존의 기본 아이콘이 표시가 되었습니다. 이리저리 찾아봤더니 확장자별 아이콘을 레지스트리에 등록하고 그렇게 캐시된 아이콘을 표시하기에 아무리 아이콘을 변경하고 별짓거리를 다 해봐도 파일 아이콘은 변경이 되지 않았는데 아래와 같은 명령어 한 줄로 해결을..

Programming/Delphi 2022.05.24

[Delphi] 듀얼모니터일 때 주모니터에 폼 띄우기

듀얼모니터를 사용하면서 폼을 실행할 때 보조모니터에 띄울까~? 메인모니터에 띄울까~? 고민될 때 있지 않으셨습니까? 저의 경우에는 전체 스크린(메인모니터 + 보조모니터)의 크기를 구한 다음 계산해서 메인모니터 또는 보조모니터 등 원하는 모니터에 폼을 띄울 수 있었습니다. 우선, Delphi 에서는 Screen 이라는 강력한 클래스를 제공합니다. Screen.MonitorCount 위의 객체를 통해서 모니터의 갯수를 알 수 있습니다. procedure TfrmMain.scButton1Click(Sender: TObject); var i : Integer; begin Log('monitor count : ' + IntToStr(Screen.MonitorCount)); Log(Format('[Desktop] ..

Programming/Delphi 2022.05.24

[JPA] @CreatedBy, @LastModifiedBy 를 위한 AuditorAware 적용

spring-data-commons 에는 @CreatedBy, @LastModifiedBy 라는 어노테이션이 있습니다. 물론, @CreatedDate, @LastModifiedDate가 자매품(?)으로 있긴하지만, 생성시간과 업데이트시간은 해당 어노테이션을 지정하는 것만으로도 끝나지만, 생성자, 수정자는 별도의 셋팅 과정이 필요합니다. 이 과정에서 Spring Security 셋팅이 필수로 필요합니다. Spring Security 셋팅 없이도 할 수 있겠지만 요즘 백엔드와 프론트엔드도 분리되고 JWT 토큰으로 인증을 하기에 더더욱 필요한 것 같습니다. 아래는 JPA, Spring Secutiry 환경에서 작성된 코드입니다. MemberEntity.java @Getter @ToString @Builder ..

Programming/JAVA 2022.03.30

moment는 역사속으로 (지원중단)

개인적으로 JavaScript에서 날짜 관련해서 moment를 꽤나 신뢰하고 오랫동안 사용했습니다만, 최근에 moment가 더 이상의 지원은 없다라는 사실을 접하고 많이 슬펐습니다. ㅠㅠ 물론 moment를 사용하면서도 불편한 점도 없이 않아 있었지만, 나름 훌륭하다고 생각했고 무엇보다도 손에 익다보니 편했던 것이 사실입니다. 그래서 더더욱 슬프게 느껴졌습니다. 그러면 왜 지원을 중단했는지, 대안으로는 무엇이 있는지 살펴보도록 하겠습니다. 일단, npm에 들어가보면 마지막 업데이트가 2020-10-06으로 되어 있습니다. 그리고 주간 다운로드 수가 1,800만... 물론 업데이트가 중단된 것이지 기존의 moment 라이브러리는 계속 사용할 수 있습니다. https://momentjs.com/docs/#/..

Programming/Etc 2022.02.08

[node.js] slack bot 만들기 + typescript

제가 속한 연구개발실은 매일 오전 10시에 slack에서 온라인 스크럼을 진행하고 있습니다. 매번 시간에 맞춰서 slack에 글을 쓰는 것도 번거롭고 깜빡할 때도 있어서 이번 기회에 slack bot을 만들어서 알림을 보내도록 만들어봤습니다. slack에 bot을 추가하는 방법이나 node-schedule, typescript 등등에 대한 내용은 인터넷에 찾아보면 자료가 많으니 여기서는 제가 구현한 소스코드를 공유해드리는 것으로 할게요. Development environment. node v14.16.1 typescript node-schedule moment mac package.json { "name": "jarvis", "version": "1.0.0", "description": "", "mai..

Programming/Node.js 2022.02.04

서버 시간 설정하기

간단하게 node-schedule를 적용해서 slack api bot을 만들었습니다. 로컬에서 테스트할 때는 제가 지정한 시간에 맞춰서 알림이 잘 갔는데 AWS EC2 인스턴스에서는 정해진 시간에 알림이 안가더라구요. 혹시나 해서 서버 시간을 살펴봤더니 UTC 시간 기준으로 되어있더라구요. 그래서 UTC +9 로 맞춰서 다시 실행을 하니 원하는 시간에 알림이 잘 가게 되었습니당. 서버 시간 확인 date 서버 시간 변경 ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime

Programming/Etc 2022.02.04
반응형