7월, 2018의 게시물 표시

[Java] Date 클래스의 get(Year|Month|Day)가 deprecated됐다는 알림이 뜰 경우

  Date 클래스의 getYear, getMonth 등 수많은 메소드는 한참 전에 deprecated됐습니다. 따라서 여러분은 Calendar 클래스를 사용하셔야 합니다.   Calendar 클래스는 아래와 같이 사용할 수 있습니다. int year = Calendar.getInstance().get(Calendar.YEAR); int month = Calendar.getInstance().get(Calendar.MONTH) + 1; int day = Calendar.getInstance().get(Calendar.DAY_OF_MONTH);   잘 보시면, month는 Calendar.get 값에 +1 한 것을 알 수 있습니다. 이유는, Calendar.get(Calendar.MONTH)할 경우 연중 현재 월의 순번 을 나타내기 때문입니다. 예를 들어 1월은 0번째, 2월은 1번째, ...   때문에 1월, 2월과 같이 현재 월명을 구하고 싶으실 때엔 Calendar.get(Calendar.MONTH) + 1 해줘야합니다.

[MySql] 연결 문자열에서 타임존 설정

  Spring MVC 작업 중 아래와 같은 에러가 발생했습니다. CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: The server time zone value    context-datasource.xml에 연결 문자열에 serverTimezone을 설정하라고 스택오버플로우에서 말하더군요. 문제는 timezone을 뭐로 설정해야하는가? 였습니다.   우선 첫 번째로, 서버에서 사용중인 타임존을 알아야겠죠? SELECT @@global.time_zone, @@session.time_zone;   위와 같이 쿼리를 날렸더니, 둘 다 SYSTEM이란 답만 돌아왔습니다. 그래서 아래와 같이 해봤습니다. SELECT timediff(curtime(), utc_time());   결과는 09:00:00 였습니다. 서울이죠. 그래서 serverTimezone=Seoul 이라고 했더니 안 되더라고요. 구글로 검색해본 결과 앞에 대륙명까지 적어야 한다는 것을 깨달았습니다. 참고: 위키피디아   serverTimezone=Asia/Seoul 로 설정하니 정상 작동되는 것을 확인했습니다.

[Tampermonkey/Chrome] 옥션 우클릭 방지 알림 비활성화 스크립트

이미지
  바로 전에 탬퍼몽키 포스트 를 올렸습니다. 바로 이 글을 위해서죠. 우선 해당 포스트에서 탬퍼몽키 확장 도구를 설치한 뒤 읽어주시기 바랍니다.   이 포스트는 크롬 또는 파이어폭스 의 Tampermonkey  애드온/확장 도구가 설치돼 있어야 사용 가능합니다.   또한, 이 포스트는 크롬 기준으로 작성됨을 알립니다. 쓰잘데기 없이 짜증만 나는 우클릭 방지 알림   옥션에서 상품 페이지를 둘러보다 우클릭을 하면, 쓰잘데기 없이 뜨는 짜증나는 알림이 있습니다.   바로 위와 같은 알림이죠. 저는 우클릭 드래그 제스쳐로 여러 기능(페이지 앞으로, 뒤로, 새로고침, 다음 탭, 이전 탭, 탭 닫기 등등)을 사용하는 사람인데 우클릭 할 때마다 저 알림이 뜨니 정말 짜증이 났습니다.   심지어, 상품 상세설명은 우클릭을 막는다고 막아지지도 않습니다. 크롬이나 IE나 파이어폭스나 오페라나 사파리나 그 어떤 브라우저든지 개발자 도구를 열고 해당 HTML 엘리먼트로 이동한 뒤 내부 내용을 복사하면 되거든요. 뭐 이것 말고도 방법은 많지만, 가장 간단한 방법이 위와 같습니다. 한 마디로 저 알림은 사용자를 짜증나게 하는 보여주기식 알림창 일 뿐이죠. 알림을 없애기 위한 검색, 그러나   짜증이 난 저는 처음엔 페이지마다 window.oncontextmenu 프로퍼티를 수정해 알림을 없애고 돌아다녔지만, 그것도 한두번이지 너무 귀찮더라고요. 그래서 혹시 이미 나와있는 우클릭 방지 해제 스크립트가 있나 찾아보고 설치했지만, 작동을 하지 않더라고요.   그렇다고 확장 도구를 하나 설치하자니 이미 깔린 게 많아서 뭔가 거부반응이 일어나고... 그래서 그냥 Tampermonkey 스크립트를 직접 하나 만들었습니다. 옥션 우클릭 방지 알림 해제 스크립트   포스트 맨 위에서 다들 Tampermonkey는 설치하셨나요? 이 스크립트를 사용하기 위해서는 반드시 Tampermonkey가 설치되어 있어야 합니다. 다들 설치하셨으리라 믿고

Tampermonkey, 웹 사용자 경험을 극대화시키는 크롬 확장 도구

Tampermonkey   Tampermonkey, 탬퍼몽키? 이름만 들어서는 뭐 하는 확장 프로그램인지 감이 안 오실 겁니다. 직역하면 쓸데없이 참견해대는 원숭이 정도가 되겠네요. 어찌 보면 딱 알맞는 이름일지도 모릅니다. 현재 페이지에 커스텀 자바스크립트를 실행해주는 확장 도구   이유는 탬퍼몽키를 사용하면 특정 사이트, 혹은 사이트의 특정 페이지에 원하는 자바스크립트를 실행시킬 수 있기 때문입니다. 예를 들어서, 쇼핑몰 사이트의 정말 쓰잘데기 없는 우클릭 방지 스크립트를 비활성화시키는 행위 등을 말이죠.   한 번 옥션을 예로 들어볼까요? 옥션 상품 페이지에서 우클릭을 하면 알림창이 뜹니다. 상품 상세설명 무단도용 방지를 위해 우클릭을 비활성화했다는 정말 쓰잘데기 없는 알림이죠. 하지만 탬퍼몽키에 해당 사이트의 우클릭 방지 기능을 비활성화하는 스크립트를 넣어두면, 몇 번을 열고 몇 번을 새로고침해도 다시는 우클릭에 대한 알림이 뜨지 않게 됩니다. 다양한 활용   요즘은 크롬, 파이어폭스 모두 다양한 확장 도구가 나와있습니다. 정말 다양하죠. 하지만 그럼에도 불구하고 자신에게 딱 맞는 확장 도구를 찾기란 쉽지 않습니다. 예를 들어서, 구글 검색 결과 우측에 '제목 복사' 버튼이 생겨서 클릭하면 클립보드에 해당 제목이 복사되는 기능 등, 사용자마다 원하는 기능은 다른데 확장 도구는 그렇게 다양한 사용자 환경까지 고려하지는 않죠.   하지만 Tampermonkey 확장 도구와 자바스크립트 지식이 있다면 웹 페이지 안에서  가능한 모든 기능을 제작해 사용할 수 있습니다. 방금 위에 말씀드린 제목 복사 뿐 아니라, 깊게 들어가면 구글 검색 결과 페이지의 배경을 바꾼다던가, 애니메이션 처리를 하는 등 디자인적인 변경은 물론 네이버 검색 결과 페이지에서 쓸데없는 부분을 없애고 구글과 같이 심플하게 만들어린 뒤 '이 제목을 구글로 검색'과 같은 버튼을 다는 것도 가능하죠. 뭐든지 가능합니다. 브라우저에서

[C#/LINQ/Tuple] LINQ에서 Named Tuple을 반환하고 싶을 때

Named Tuple?   네임드 튜플을 알아보려면 우선 튜플부터 알아봐야겠죠. 튜플이란 아래와 같은 형식을 말합니다. Tuple tupleA = new Tuple (1, "A", 2); Console.WriteLine(tupleA.Item1); // 1 Console.WriteLine(tupleA.Item2); // "A" Console.WriteLine(tupleA.Item3); // 2   이 예제만 보고도 충분히 편리하다고 생각할 수 있지만, 더 편리하게 사용할 수 있는 방법이 있죠. 바로 튜플 리터럴(literal)을 사용하는 방법입니다. (int, string, int) tupleB = (1, "B", 2);   더 간단하게 해볼까요? var tupleC = (1, "C", 2);   충분히 간단해진 것 같습니다. 하지만 간단하다고 다 좋은 건 아니죠. 문제가 생깁니다. 바로 Item이 많아지면 Item1, Item2, ..., Item16 사이에 어떤 아이템에 어떤 값을 담았는지 확인하기가 어려워 집니다. 아래와 같은 상황이 있다고 생각해 봅시다. var tupleComplex = (1, 2, 3, "Complex", new List () { 1, 2, 3 }, new byte[] { 0x32, 0x33, 0x34, 0x00 }, 0.82);   Item1, Item2, Item3은 각각 클라이언트의 고유번호, 연결된 다른 클라이언트의 고유번호, 연결된 게시판의 고유번호이고, Item4는 클라이언트의 이름, Item5는 클라이언트의 즐겨찾는 게시판 고유번호, Item6는 인증키, Item7은 클라이언트의 현재 목표 달성 퍼센테이지라고 가정해 봅시다. 여러분은 코딩 중에 저 것들을 다 외워서 하실건가요?   물론, 굳이 일부러 외우지 않아도 사용할 때마다 코드에 들어가서 이건 이거고, 저건 저거고... 하면서 자연스레 외워질