반응형

전체 글 438

색상 감별 테스트

요즘 소소하게 시간을 때울 수 있는 재미난 게임들을 많이 하고 있는데요. 이번 포스팅에서 소개해드릴 테스트는 색상 감별 테스트입니다. 처음 2x2 화면에 사각형이 4개가 나옵니다. 그 중에 1개만 색상이 틀린데, 그 색상이 다른 사각형을 클릭하시면 다음 스테이지로 넘어가실 수 있습니다. https://bit.ly/3JMBi1q 색깔 감별 테스트 색깔 감별 테스트를 통해서 당신의 색깔 감별 능력을 시험해보세요. www.bravomy.life 각 스테이지별 제한시간은 15초이며, 다음 스테이지로 넘어갈 경우 다시 15초로 초기화 됩니다. 여기서 더 재미난 요소가 하나 더 있는데요, 바로 생명력(?) 입니다. 이 생명력도 제한시간과 마찬가지로 다음 스테이지로 넘어갈 경우에 다시 3개로 초기화가 됩니다. 브라보..

Game 2022.08.04

국기 맞추기 퀴즈

나라의 의미는 일정한 영토와 거기에 사는 사람들로 구성되고, 주권에 의한 하나의 통치 조직을 가지고 있는 사회 집단 이라고 합니다. 국민, 영토, 주권의 3요소를 필요로 합니다. 아마 국민학교 시절에 국가의 3요소에 대해서 배우셨을 겁니다. 하지만, 꽤나 직관적이고 명확한 정의를 지닌 단어로 보이지만, 이 단어에 대한 명확한 정의는 국가에 대해 생각한 학자와 학문 수 만큼이나 다양하다고 볼 수 있습니다. 혹시 전 세계에는 위에서 얘기한 국가의 3요소를 갖춘 나라들이 얼마나 있을까요? 궁금하신 적 없으셨나요? 흔히 세계의 국가라고 하면 유엔 회원국 193개와 유엔 옵저버인 바티칸과 팔레스타인까지 총 195개를 가리킨다고 합니다. 그 외 대만과 코소보, 서사하라도 국가로 취급하는 보고서는 무수히 많지만 일단..

Game 2022.08.03

[구글애널리틱스] UTM 설정하기

UTM이란 Google Analytics의 전신이라고 볼 수 있는 Urchin Software의 마케팅 캠페인 효과 추적을 위한 URL 매개변수입니다. 구글이 해당 회사를 인수하면서 UTM 기술도 함께 인수를 했고, 이를 구글 애널리틱스에서 즉시 지원 가능하도록 했습니다. 이를 이용해서 웹사이트로 유입될 경우 UTM이 포함된 URL을 바탕으로 어디를 통해서 유입이 되었는지 알 수 있게 되었습니다. UTM에서 사용되는 파라메터의 종류는 여러 가지가 있으며 GA3, GA4에 따라서 사용할 수 있는 파라메터가 틀리니 구글 애널리틱스 어떤 버전을 사용하시는지 확인하시고 진행해주세요. https://bit.ly/3vUJ2ZM Google Analytics Campain URL Builder This tool al..

Etc 2022.08.02

[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

[vue] mongoose ERROR ServerMiddleware Error: Cannot overwrite User model once compiled.

npm run dev 위의 명령어로 로컬에서 서비스를 띄운 후, 파일을 수정하거나 하면 알아서 hot loading를 해줍니다. 정적인 페이지나 다른 부분은 문제가 없는데 mongoose를 사용중에는 아래와 같은 에러를 만나게 됩니다. ERROR ServerMiddleware Error: Cannot overwrite User model once compiled. 12:23:25 at Mongoose.model (node_modules/mongoose/lib/index.js:506:13) at api/schamas/user.js:42:19 at g (node_modules/jiti/dist/jiti.js:1:55111) at api/routes/signRoute.ts:6:36 at g (node_modu..

Programming/Vue.js 2022.01.22

[ReactNative] iOS, Android 구분하기 (Platform)

ReactNative로 개발을 하다보면 특히 화면을 구성할 때 iOS, Android를 구분해서 다르게 구성하는 경우도 있습니다. 이럴 때 iOS인지 Android인지 구분하는 방법을 알아보겠습니다. import React from 'react'; import {Platform, SafeAreaView, StyleSheet} from 'react-native'; const App = { return ( ); } const styles = StyleSheet.create({ container: { flex: 1, padding: Platform.select({ios: 10, android: 20}) } }); export default App; Platform을 사용하면 운영체제별 다른 값으로 설정하여 운..

반응형