본문 바로가기

프로그래밍/이것저것 일하면서

(55)
모바일 브라우저에서 앱 실행하기 대작전(Android, iOS) 이 문서의 최종 수정일: 2020.12.24 Merry Christmas 웹개발자의 칼퇴근을 늦추는 원흉 중에 같은 코드 OS/Browser 별 다른 동작이 있다. 예전에는 최악의 브라우저 Internet Explorer 때문에 발생하는 경우가 많았다. IE가 거의 사장된 지금은 예전보다 다변화된 디바이스 환경 때문에 가끔 발생한다. 앱 랜딩 페이지가 하나 있는데, OS와 브라우저 별로 다르게 동작해서 골치였다. 어떤 OS와 브라우저 조합에서는 마음대로 앱을 실행시킬 수 없다. 그래서 앱 실행하기 버튼을 추가해야 했다. OS + Browser 조합별 테스트 결과 Android + Chrome: 페이지 로딩 시 코드로 앱을 실행시킬 수 없으며, 반드시 사용자의 액션(클릭 등)이 있어야 한다. Android..
모바일 크롬 브라우저에서 안드로이드 인텐트(Intent) 링크하기 브라우저에서 특정 페이지에 접속하면 앱을 실행시켜 달라고 하는데, iOS는 잘 되는데 안드로이드가 말썽을 부렸다. 그래서 관련 문서를 몇 개 찾아보았다. 우선 아래 링크는 안드로이드 앱에서 설정해줘야 할 내용이다. 안드로이드 앱 - 인텐트 및 인텐트 필터 설정 다음은 브라우저에서 보여질 화면에서 링크할 URI이다. host, scheme, package 등은 앞서 설정한 내용을 참고한다. Android Intents with Chrome 주의 화면 접속 시 앱을 실행하는 기능이 안되서 확인해보니 두 번째 참고 링크 마지막에 다음과 같은 문구가 있었다. And Chrome doesn’t launch an external app for a given Intent URI in the following case..
http 응답 헤더에서 아파치 서버 버전 정보 삭제 보안조치 중 흔히 나오는 웹서버 정보 삭제에 대한 요구사항이다. 엉뚱한 곳에 값을 넣었다가 서버가 죽어서 식겁 했지만 다행히 금방 고쳤다. 방법 httpd.conf 파일에 아래 설정을 추가한다. 다른 포스트에 온통 아래 값을 변경하라고 하는데 우리 서버에는 설정이 아예 없어서 당황했다. 다행히 그냥 한 줄 추가하니까 잘 적용됐다. 어쩌고 저쩌고 원래 있는 설정 정보 ... ServerTokens Prod 어쩌고 저쩌고 원래 있는 설정 정보 ... 참! 적용 전에 기존 파일을 백업해두는 것을 절대 잊지 말자. 사람 앞 일은 모른다 ㅜㅜ 기존 설정 파일 백업해두기 cp httpd.conf httpd.conf.origin 결과 확인 현재 curl로 헤더를 요청해보면(-I 옵션) 아래처럼 서버 정보가 나오고 있..
jquery ajax 응답이 빈값일 때 parseError 발생하는 경우 오랜만에 공부(?) 하다가 하나 발견했다. $.ajax 응답이 빈값일 때 http 200에서도 오류로 떨어지는 현상 ##오류 jQuery ajax로 parseError가 발생한다. DB를 조회 했는데 값이 없어서 서버에서 null을 리턴했더니 jQuery .done으로도 들어오지 않고 .error로 들어가버렸다. 에러 내용은 parseError가 들어 있었다. 원인 $.ajax 옵션의 dataType이 원인이었다. dataType: json을 써놨더니 응답값이 올바른 json 값이 아니라 empty text라서 파싱할 수 없었던 것이다. 해결 해당 옵션을 삭제해주니 정상적으로 떨어졌다. 이렇게 처리는 성공했지만 응답값이 없을 경우 200이 아니라 204를 써야 할까? '옳은' 값이 무엇인지..
[PostgreSQL] numeric = character varying 오류 자동 형변환 방법 auto casting 문제 postgresql 9.x를 사용하는데 java에서 넘기는 파라미터가 String이고 컬럼 데이터타입이 numeric 이니까 다음과 같은 오류가 발생했다. 해결 postgresql에 CAST를 생성해주면 된다. 생성하면 스키마에 만들어지는지, database에 일괄 적용 되는지는 확인해봐야 할 것 같다. CREATE CAST (varchar AS numeric) WITH INOUT AS IMPLICIT;
리눅스 n라인으로 파일 자르기 (head 혹은 tail) # head -1000000 origin.csv >> million.csv head나 tail 등으로 파일 자를 수 있다.
리눅스 텍스트 줄 수 세기 (wc -l 옵션) 실행결과 줄 세기 ifconfig | wc - l 텍스트 파일 줄 세기 # cat sample.csv | wc -l
AbstractExcelView 를 쓰지 마세요. 대신.. -Spring Boot 엑셀 다운로드 구현 Spring 프로젝트에서 엑셀 다운로드를 구현할 때 아파치 poi를 사용하여 파일을 만들고 직접 response에 쓸 수도 있지만, ViewResolver를 구현하는 것이 여러모로 편리하다. 그런데 최근에 작성한 코드를 수정해 달라는 요청을 받고 열어보니 AbstractExcelView를 사용한 코드를 보았다. AbstractExcelView는 이미 @Deprecated 된 메소드로써, 다른 것을 사용하는 것이 좋다. 결론 각각 다음 것을 사용하면 된다. xls(hssf): AbstractXlsView - 엑셀 2003 (.xls) / 최대 65,535행 xlsx(xssf): AbstractXlsxView - 엑셀 2007 (.xlsx) / 최대 1,048,576행 xlsx streaming(sxssf)..