반응형

분류 전체보기 455

[HTML] Form 자동 Submit 막기

html에서 form을 만들때 가장 쉽게 실수 하는 부분이 submit에 대한 것입니다. 모든 전처리를 서버에서 하는 경우에는 문제가 되지 않지만, javascript내에서 전처리르 하게 하는 경우에는 이 부분이 오작동을 일으키기도 합니다. 다음과 같이 html소스가 되어있다고 가정하고, 해당 파일이 http://localhost:8080/main.html 이라고 가정하였을 때, 다음과 같은 입력창이 하나 생성됩니다. 여기에 아무 텍스트나 입력하고 엔터를 치게 되면, 어떻게 될까요? 결론부터 말하면 아래와 같이 호출되게 됩니다. http://localhost:8080/main.html?keyword= 두 가지 방법이 있는데 javascript에서 막는 방법 (jQuery 기준) $("[name=editF..

개발 창고/Web 2020.08.12

[Spring] Movie Streaming 처리

최근에 카페24에 스프링 프레임워크를 설치하고 운영중에 버그가 한개 발생했었습니다. 그 버그는 동일 서버내에서 영상 재생을 다이렉트로 하면, Stack Overflow가 발생하면서 재생동안 에러로그가 쌓여 카페24에서 할당받은 용량을 catalina.out이 꽉 차면서 용량이 사용할 수 없는 문제였습니다. 확인해보니, 컨트롤러단에서 스트리밍 링크를 직접 연결해주면 해당 문제가 해결되는것을 확인했습니다. private final String FOLDER_MOVIE = "{폴더경로}"; /** * @reference : http://aodis.egloos.com/5962812 * @modified : whiteduck */ @RequestMapping(value="/stream/{video_name:.+}"..

개발 창고/Web 2020.08.10

[Kotlin] 코틀린이란?

최근에 코틀린에 대해 공부를 할 이유가 많아졌습니다. 그 이유 중 하나는 구글이 안드로이드 개발 선호 언어로 코틀린을 들기 때문이고 (구글은 젯브레인스사와 협업으로 IntelliJ IDEA 기반으로 만들었고, 코틀린은 이 젯브레인사에서 만든 언어라 호환성이 좋다고 보여집니다) 또 개발자 입장에서 소스가 대부분 복사 붙여넣기가 많은데, 최근 안드로이드 소스는 자바 소스가 줄어들고 코틀린 소스가 많아지기 때문입니다. 그렇다고 코틀린 소스로 개발은 신규 프로젝트에서 중요하지만, 기존의 자바기반 어플을 유지보수하기위해서도 코틀린 소스를 읽을 줄 알아야 하는 부분이 많아 코틀린에 대한 니즈가 많이 늘어나게 되었습니다. 기본적으로 코틀린은 위키백과에 아래와 같이 정의하고 있습니다. 코틀린(Kotlin)은 JVM에서..

[MyBATIS] Primary Key를 Insert하기 위한 SelectKey

RDB에서 TABLE에 INSERT를 할 때 기본키(PK, Primary Key)를 꼭 지켜줘야 하는 경우가 많습니다. MariaDB나 MySQL등에서는 Auto Increasement를 활용하는 경우가 많지만, Oracle에서는 이 Auto Increasement를 제공하지 않죠. 흔히 MyBATIS를 사용할때, INSERT 하는 방식에는 총 3가지 정도 아이디어를 낼 수 있습니다. 1. PK SQL과 INSERT SQL을 만들고 호출 하는 방법 2. INSERT를 SELECT로 만드는 방법 3. SelectKey 구문을 활용하는 방법 만약 아래와 같은 테이블이 있다고 가정한다면 CREATE TABLE TB_BOARD ( BBS_SEQ INT NOT NULL, BBS_TITLE VARCHAR(100) ..

개발 창고/Web 2020.08.05

[Android] 안드로이드 기능을 웹에서, AndroidBridge

Android 개발 시, 기존 모바일웹을 어플로 띄우고 싶을 때가 있을 겁니다. 그럴 때 사용하는 게 바로 WebView인데 가끔 Web에서 안드로이드의 기능 (ex. 카메라, 바코드스캐너, 알림 등등)을 사용하고 싶을 때가 있을 겁니다. 물론 최근의 WebView는 그런 걸 많이 커버하려고도 하지만, 커스터마이즈한 기능들까지 다 커버하지는 못하죠. 그럴 때, 개발자의 갈증을 2프로 정도 해소해줄 수 있는 기능이 바로 AndroidBridge입니다. 이는 AndroidBridge라고 따로 있는 건 아니고 기능상으로 그러하다는 거고 webview를 통해 web과 android가 통신할 수 있도록 다리를 놓아주는 기능이기 때문에 AndroidBridge라고 보시면 됩니다. 1. Bridge 만들기 impor..

[MariaDB] Database 및 사용자 계정 생성

데이터 베이스를 구축하고 나서 제일 먼저 하게 되는 것은 해당 데이터들이 저장될 Database를 만들고 그 Database에 접근할 계정을 만드는 것일 겁니다. MariaDB 데이터베이스의 구축에 대해서는 차후에 글을 기재하도록 하겠습니다. 먼저 root 권한으로 mariadb에 접근해 줍니다. (mariadb는 mysql기반이기 때문에 명령어가 mysql가 유사한 부분이 많습니다.) 1. MariaDB 접속 $> sudo mysql -u root 2. DATABASE 생성 create database {mydatabase}; 3. USER 생성 create user '{userName}’@'localhost' identified by '{userPassword}'; → localhost의 경우 내부에..

[CentOS] 관련 링크

여기에는 CentOS를 이용하면서 필요가 없을 수도 있을 수도 있는 링크를 남겨볼까 합니다. Yum Yum 버전을 알고 싶거나 파일을 직접 받고 싶은 경우 yum 사이트 경로 http://yum.baseurl.org/download/ Index of /download yum.baseurl.org 어제 삼바(Samba)가 버전이 맞지 않아 정상작동하지 않는다는 오류를 발생했습니다. 그래서 삼바 버전이 업데이트되면서 문제인가 해서 여기저기 찾아보니 알맞은 답이 없었습니다. 그래서 혹시나 하고 yum update를 실행했더니 yum이 깨져있더군요. (이런 경우엔 구글링해서 찾아보는 yum clean all이나 다른 yum명령이 수행되지 않기 때문에 가장 손쉬운 방법은 제거 후 재 설치였습니다. $> rpm -..

[CentOS] 압축관련 Util, tar

윈도우나 맥에서는 주로 zip으로 압축된 경우가 많지만, 리눅스에서는 tar 또는 tar.gz로 압축된 파일을 다운로드하는 경우가 많습니다. 기본적으로 apt/yum 등에서 패키지 관리가 가능하지만, 직접 다운 받은 파일 또는 지금 있는 파일들을 압축하고 싶을 때 어떻게 해야 할까요? 바로 그 답은 tar입니다 (물론 gzip도 있고 다른 util들도 있습니다) 압축하기 (tar) $> tar -cvf [파일명.tar] [폴더명] ex) $> tar -cvf targetFolder.tar targetFolder → targetFolder를 targetFolder.tar로 압축 더보기 따라 해 보기 다음과 같이 임시로 targetFolder를 생성해주고 조회해 보면 아래와 같이 targetFolder가 생..

[Spring] 프로그램의 로깅을 위한 기술 Log4j

이 버전에서는 TOC를 지원하지 않습니다. (ex. 모바일) 웹 개발뿐만 아니라 안드로이드 개발 등등에서 콘솔에 보일 로그는 때로 매우 중요하기도 합니다. 로깅은 여러 방법이 있는데 그중에서도 아파치재단에서 제공하는 Log4j는 최근까지도 많이 활용되는 기능입니다. (Spring에서 주로) Log4j란? log4j는 프로그램을 작성하는 도중에 로그를 남기기 위해 사용되는 자바 기반 로깅 유틸리티이다. 디버그용 도구로 주로 사용되고 있다. log4j의 최근 버전에 의하면 높은 등급에서 낮은 등급으로의 6개 로그 레벨을 가지고 있다. - 위키백과 Log4j - 위키백과, 우리 모두의 백과사전 ko.wikipedia.org 로깅의 등급으로 총 6가지가 있는데 다음과 같습니다. FATAL ERROR WARN I..

개발 창고/Web 2020.08.03

[Android] SeekBar 적용하기

자주 쓰기도, 자주 쓰지 않기도 하는 기능 중 하나가 SeekBar인데요 주료 옵션/설정 등을 숫자가 아닌 배율로 조정할 경우 적용하는 경우가 많은데요 이렇게 SeekBar를 등록하면 아래와 같이 적용된 화면이 노출됩니다. 이를 Activity에서 활용하려면 다음과 같이 적용해 주면 됩니다. 해당 소스는 SeekBar를 반정도 Active 된 상태로 SeekBar를 수정 시 LogCat에 현재 Progress값을 호출되도록 작업한 소스입니다. @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.test); // STEP01. layout의 See..

반응형