기본 콘텐츠로 건너뛰기

5월, 2019의 게시물 표시

개발 공부 - 이클립스 JavaDoc 단축키

메소드 내에 대고 alt+shift+j 인데 windows -> preferences -> Java -> Code Style -> Code Templates 에서 메소드/코드/클래스 이런 별로 설정 할 수도 있음. 개인 프로젝트 작성시에는 그냥 /** * @Author ${user} * @Date ${date} * * ${tags} */ 이 템플릿으로 쓴다(기본에 시간만 붙인 것)

국가기간전략산업 수료 정보

개발 블로그 자료 이동. 과정명 Java 데이터베이스 응용 SW 구직자 과정 훈련기관명 (주) 솔데스크 홈페이지 http://www.soldesk.com 주소 서울 종로구 관철동 13-13번지 코아빌딩 5층 훈련일수/훈련시간 120일/960시간 공부 내역 개인 홈페이지 http://pc-cat.tistory.com/ 수료 프로젝트 https://github.com/bowies/ITClan   프로젝트명 Gold Star 프로젝트 정보 잡코리아를 모사이트로 한 구인/구직 홈페이지 프로젝트 팀원 팀장1, 수석1, 팀원5 팀장 - 김*( https://www.bubblecat.co.kr , github ID: bowies) 수석 - 홍*미(github ID: seesha2461) 팀원 - 강*철(github ID: pp16xla) 김*경(github ID: alsrod93) 김*기(github ID: mm9418) 전*수(github ID: mohyen16) 지*길(github ID: chipo312) 프로젝트 개발 도구 Spring STS, Eclipse Tomcat 8.0 ER-Win 프로젝트 개발 언어  Java, Java Script, jsp, jQuery, Ajax, Bootstrap, EL&JSTL 등 프로젝트 데이터베이스 Oracle 11g XE  프로젝트 프레임워크  Spring 3.6.4, myBatis 프로젝트 발표 자료 https://github.com/bowies/ITClan/blob/master/GoldStar%20PPT.pptx

개발 공부 - 자바로 Thread 생성하기

1. 람다 표현식 Thread thr = new Thread(() -> {    내용을 쓰세요 }); 2. Thread를 상속 public class Cert_Thread_Extends extends Thread { public Cert_Thread_Extends() { } public Cert_Thread_Extends(int numbers) { } public void run() {                     내용 } } 3. Runnable 인터페이스를 구현 public class Cert_Thread_Interface implements Runnable { public Cert_Thread_Interface() { } public Cert_Thread_Interface(int numbers) { this.cert_Num = numbers; } @Override public void run() { } } 4. 이름도 넣을 수 있음 String threadName = Thread.currentThread().getName(); 스레드명.setName("이름도 넣을 수 있지"); 스레드명.start();

개발 공부 - Java에서 Request 생성하기

JSP 에서 받아올 수 없을 때 or 임시로 테스트 해야 할 때 Spring에서 제공하는 함수를 쓰면 된다. HttpServletRequest 못 사용해서 피땀눈물로 짜낸 코드... MockHttpServletRequest request = new MockHttpServletRequest(); request.addParameter("아이디", "값"); 해서 Parameter도 Set 해줄 수 있다. SetParameter가 없어서 스트레스 받는데 의외로 addParameter가 있더라...

개발 공부 - 도메인 설정 후 www 안 붙이면 이동 불가 현상

블로그에서 제공하는 설명에 따라 CNAME 호스트 및 값 설정 후에도  www을 안 붙였을 때 리다이렉트가 되지 않는 현상이 있어 검색 해 보았다. bubblecat.co.kr 이고 www.bubblecat.co.kr 이어야 하는데 구글 블로거에서 제공하는 기능이 있으나 출처:  https://help.garanntor.com/hc/en-gb/articles/115004201465-Fix-Custom-Domain-not-working-without-www-in-Blogger 위와 같이 설정시에도 적용되지 않을 경우 CNAME 설정시 값을 @로 두고 값을 www.자신의도메인주소 로 두면 리다이렉트가 적용된다. 출처:  http://www.15minutemondays.com/2015/02/02/blogger-doesnt-work-without-www/

쇼핑 후기 - 멜킨 스포츠 노라인 줄넘기(스탠다드)

최근 열심히 운동을 해도 체력이 남아서 줄넘기를 시작하려 했다. 왜인지 집에 있는 걸로 사용하기 싫어서 최첨단 문물을 구매했다. 끈이 없는 줄-넘기 [노-라인 로-프] 구매 URL은  https://smartstore.naver.com/melkinsports/products/2447978427  여기다. 최근에 가품 스트레스에 데여서 가급적 정품을 구매하려고 본사에서 구매했다. 사실 끈이 아주 없지는 않고 무게 추 용으로 달려 나오긴 한다. 2019-05-26 주문했는데 2019-05-28에 도착했으니 배송도 빠르고 마음에 들었다. 후기 쓰면 사은품도 준다니 좋은 회사다. 요즘 식단 조절이 잘 되고 있으니 운동을 병행해서 더 열심히 할 예정이다. 값도 만원 이내로 저렴하고 훌륭한 도구라고 생각한다. 멜킨 스포츠 번창하십시오.

개발 공부 - 소스 맵 오류: request failed with status 404

Highcharts 적용한 뒤 파이어폭스에서 계속 오류 나면서 화면단이 안 보이는 현상이 있어서 소스 맵 오류: request failed with status 404 검색해 보니 소스 맵 오류: request failed with status 404 자원 URL: http://********************highcharts.js 소스 맵 URL: highcharts.js.map[더 알아보기] map 파일을 다운받아서 넣어주니 오류가 수정되었다. 참고 사이트:  https://www.crosslife.kr/1

개발 공부 - Tibero JDBC-90401:Connection refused by the server 오류

Caused by: java.sql.SQLException: JDBC-90401:Connection refused by the server. - Connection timed out: connect at com.tmax.tibero.jdbc.err.TbError.makeSQLException(Unknown Source) at com.tmax.tibero.jdbc.err.TbError.newSQLException(Unknown Source) at com.tmax.tibero.jdbc.comm.TbStream.<init>(Unknown Source) at com.tmax.tibero.jdbc.comm.TbCommType4.createStream(Unknown Source) at com.tmax.tibero.jdbc.TbConnection.openConnection(Unknown Source) at com.tmax.tibero.jdbc.TbDriver.connectInternal(Unknown Source) at com.tmax.tibero.jdbc.TbDriver.connect(Unknown Source) at org.springframework.jdbc.datasource.SimpleDriverDataSource.getConnectionFromDriver(SimpleDriverDataSource.java:140) at org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnectionFromDriver(AbstractDriverBasedDataSource.java:196) at org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnection(AbstractDriverBasedDataSource.java:159) at org.springframework.jdbc

영상 편집 - 프리미어 프로(1)

2019/05/18 1 회차 강의 컴퓨터가 별로 안 좋음 . ( 데이터 개인이 관리 필요 ) 다음 시간에는 이어폰 가져오기 ! ( 소리가 안들림 ) 1 교시 (9 to 11) Facebook 으로 강의안 공유한다 하여 가입 함 . (medium 용 계정으로 가입 ) ( 비공개 그룹 ) - 영상 문의 및 공유  ( 비밀번호는 페이스북에 공유 ) 공부한 파일은 네이버 클라우드에 올림 루트 폴더명 : [2019_ 영상교육 ] 영상은 영상자료 + 소리 + 인코딩이 중요함 . 인코딩 - 프로그램 설치하여 추후에 해결 할 수 있음 . 프리미어 , 애프터이펙트 버전은 램 & 하드에 맞춰서 설치 - CS6 or CS5 사용 해상도 4:3 비율 - 720x480 해상도 16:9 비율 - 640x360, 1280x720, 1920x1280 NTSC 방식으로 작업 할 예정이다 . 프레임은   Tv - (30fps) / 29.97fps ( 흑백 tv 호환 목적으로 교류 전력을 맞추기 위해 0.1% 느림 ) 영화 - 24fps 비디오 다운로드 할 수 있는 프로그램은 - 알툴바에서 영상 다운로드 - 4K Video Downloader - 프리미어는 60 일 trial 로 사용해서 작업 할 예정 프리미어 실행 안 될 경우 곤란함 ( 문의 할 것 ) assembly - 각각 보기 editing - 편집 color - 색상값 effects - 영상 효과 삽입 타인이 사용했던 화면 Template 도 보이기 때문에 기본 값 초기화 방식 기재 애프터이펙트 layout 초기화 하는 법 : 옆에 햄버거 버튼 누르고 [ 저장된 레이아웃으로 재설정 ] 하면 됨 . 참고 : https://itrum.tistory.com/81 Editing 메뉴를 누르면 4 가지 서브 창이 있음 . (Editing 을 주로 사용 ) 또한 창마다 있는 메뉴들 이동 가능함 . - 인코딩이

개발 공부 - ClassNotFoundException 고치기

Eclipse Class Not Found Exception 고치는 법은 1. Class 가 없나 확인해본다. 2. Class 가 있는데도 실행이 안 될 경우에는 1) Workspace가 있는 경로의 build 파일을 D:\javadb\web\workspace_mvc\mvc_board\build\classes 2) Metadata가 있는 경로에서 확인해 보면 아마 폴더만 있거나 생성이 안 되어 있을 것이니까 저 빌드 파일을 여기에 복사 붙여넣기 한다. D:\javadb\web\workspace_mvc\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\mvc_board\WEB-INF

개발 공부 - OracleXETNSListener 서비스가 로컬 컴퓨터에서 시작했다가 중지되었습니다.

여러 가지 요인이 있지만 PC 이름 변경시 OracleXETNSListener 서비스 시작이 불가능합니다. 고치는 법은 C:\oraclexe\app\oracle\product\11.2.0\server\network\ADMIN 와 같은 설치 경로에서 listener.ora와 tnsnames.ora 의 pc명을 바꾼 PC명으로 바꿔주면 됩니다. 그래도 안 된다면 cmd 창에서 services.msc 를 입력 후 OracleXETNSListener 서비스를 시작 시키면 됩니다. 오류명: OracleXETNSListener 서비스가 로컬 컴퓨터에서 시작했다가 중지되었습니다. 일부 서비스는 다른 서비스 또는 프로그램에서 사용되지 않으면 자동으로 중지됩니다. 참고한 사이트들 1. http://blog.naver.com/visioner7/120165951652 2. http://database.sarang.net/?inc=read&aid=6819&criteria=oracle&subcrit=&id=&limit=20&keyword=ora-12560&page=5 이런 걸 보면 오라클은 앙칼진 시골 아가씨야

개발 공부 - Eclipse 자동 저장 주기 변경

Preferences -> General -> Workspace -> Workspace save interval (in minutes) 를 수정해주면 자동 저장 기능이 수정됩니다. default는 5분입니다.

카카오 계정 삭제 - 카카오 계정 탈퇴 하는 법

몇일 동안 카카오톡 계정 삭제를 하려고 신경질이 나 있었습니다. 간단하게 말하면 그냥 https://accounts.kakao.com/weblogin/deactivate 이 링크만 알려줬으면 될 걸 왜 이렇게 어렵게 만들어!! 안녕하세요. kakao입니다. 문의해주신 내용 관련하여 답변 드리겠습니다. 카카오톡을 이용해 주셔서 감사합니다. 카카오에서는 고객님의 카카오계정을 임의로 탈퇴 처리 해드리기어려운 점 양해 부탁드리며,  번거로우시더라도 탈퇴를 원하시는 카카오계정으로 로그인 하시어  아래의 방법을 통해 직접 탈퇴 하실 수 있습니다. 카카오계정은 카카오톡을 포함하여 카카오스토리, 카카오게임, 카카오페이지 등  다른 카카오 서비스를 모두 이용할 수 있는 통합 계정입니다.  따라서, 카카오톡을 탈퇴하여도 카카오계정에 연결된 다른 서비스가 있다면  카카오계정은 자동으로 탈퇴되지 않습니다.  카카오톡, 카카오스토리 서비스를 이용하고 계신 경우  카카오계정에 연결된 카카오 서비스를 모두 탈퇴하신 후  마지막으로 카카오스토리, 카카오톡을 탈퇴하시면 카카오계정이 함께 탈퇴됩니다.    ※ 카카오계정에 연결된 서비스는      ' 카카오톡, 카카오스토리 앱> 더보기> 내 프로필> 카카오계정> 연결된 서비스 관리' 에서       확인하실 수 있습니다.  ※ 카카오톡, 카카오스토리 탈퇴 시에 '카카오계정은 탈퇴되지 않는다'는 안내를 받으셨다면     카카오톡, 카카오스토리 탈퇴한 이후에 카카오계정 탈퇴 페이지에서     별도로 카카오계정 탈퇴를 진행하시면 됩니다. 단, 카카오계정 탈퇴 시 금전적인 문제가 발생할 수 있거나,  타인의 서비스 이용에 영향을 줄 수 있는 경우에는 바로 탈퇴할 수 없으며,  해당 서비스를 해지하거나 설정을 변경하신 후 카카오계정을 탈퇴하실 수 있습니다.  ※ 이미 카카

개발 공부 - 이미지 크기 변경하기

컴퓨터에 Adobe 사의 제품들이 안 깔려 있을 때 기본 내장된 그림판(mspaint) 보다 덜 깨지게 이미지 크기를 조정하고 싶다면. http://picresize.com/ 에서 무료로 변환할 수 있습니다. 사용법은 간단하지만 동영상을 보면 더 쉬울 듯 합니다. 간단한 이미지 톤 변경이나 편집도 할 수 있습니다.

개발 공부 - Eclipse에서 프로젝트 전체를 export 하는 방법

Eclipse에서 프로젝트 전체를 export(내보내기)하는 방법 1. 왼쪽의 Package Explorer 창에서 vm패키지 이름 (20071004홍길동_5주) 위에서 마우스 오른쪽 클릭하여 export 선택 2. General - Archive File 선택 3. Browse 버튼을 클릭하여 To archive file: 이름을 지정 (적당한 디렉토리에 프로젝트이름.zip으로 설정, 예를 들어 D:\20071004홍길동_5주.zip) 4. Finish D:\20071004홍길동_5주.zip 압축파일이 만들어짐 위 방법으로 export된(내보내진) 프로젝트를 Eclipse로 import(가져오기)하는 방법 Eclipse에서, 1. File - Import - General - Existing Projects into Workspace -Next 2. Select archive file: - Browse - 압축파일 선택 (가령 D:\20071004홍길동_5주.zip) - Finish 출처: http://dmrl.kangwon.ac.kr/lecture/0801/data/EclipseImportExport.html

개발 공부 - Spring STS, Eclipse에서 Git Branch 생성하기

이렇게 생성 하고 Commit을 한번 해 주면 됩니다.  

개발 공부 - 크롬 뒤로가기 기능 살리기, Chrome Backspace로 뒤로가기 활성화

크롬 뒤로가기 기능 살리기, Chrome Backspace로 뒤로가기 활성화 2016년 기준이긴 합니다... 왜 업데이트를 하면서 잘 쓰던 기능을 막은 걸까 차라리 선택권을 줘라! 라고 생각해봤자 alt + backspace로 뒤로가기를 하라니 확장 프로그램을 사용합시다. 크롬 브라우저를 시작한 뒤 우측 상단의 三 을 누르고 도구 더보기 -> 확장 프로그램 을 누릅시다. 내가 설치한 Back to Backspace 나 다른 backspace 관련 프로그램을 설치할 겁니다. 하단의 더 많은 확장 프로그램 다운로드 를 누릅시다. 좌측 상단에서 backspace를 검색 한 뒤 하단의 확장 프로그램 칸에서 back to backspace나 backspace로 이전 페이지 이동을 활성화시켜주는 프로그램 을 chrome에 추가 합니다. 그리고 크롬 브라우저를 종료한 뒤에 켜면 잘 됩니다. 개인적으로 이 기능을 하루에 천번은 쓰는 거 같은데 없으면 매우 불편하다고!

개발 공부 - Ubuntu ipv6 끄는 법

ipv6을 왜 끄냐면 이거 때문에 firefox가 네트워크 연결이 안됬다고 뜨는 경우가 있기 때문ㅇㅣ다. 우분투에서 firefox가 default이기 때문에 고쳤음... 어쨌든 예전 os에서는 sudo sysctl net.ipv6.conf.eth0.disable_ipv6 = 1 이 됬는데 이제는 cd /etc/default 로 디렉토리 이동한 후에 sudo gedit grub, sudo nano grub, sudo vi grub 등을 통해서 GRUB_CMDLINE_LINUX_DEFAULT = "quiet" 부분을 GRUB_CMDLINE_LINUX_DEFAULT = "quiet splash ipv6.disable = 1" 로 고쳐주면 됨 그다음에 새로 grub.cfg 생성하기 위해서 sudo grub-mkconfig -o /boot/grub/grub.cfg 생성하면 됨 그리고 왜인지 껐다 키면 이게 없어져야 하는데 왜 ipv6 폴더가 있지... /proc/sys/net 디렉토리에 있으면 안 되는데 있음. 이거 sudo 대신 root 쓰면 다른 리눅스에서 쓸 수 있음. 출처는 http://nightshadow.tistory.com/482

개발 공부 - 안드로이드 스튜디오 clean 방법

Build -> Clean Project 하면 됩니다.

개발 공부 - 안드로이드 스튜디오 전체 import 하는 법

alt + enter 하다가 지쳐서 ctrl + shift + o 같은 걸 찾아봤는데 없고 그냥 auto import 라는 기능을 찾아야 함. File -> Settings -> 검색 auto import 한 뒤에 Add unambiguous import on the fly 같은 거 눌러주면 됨 출처:  http://answerofgod.tistory.com/entry/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%EC%8A%A4%ED%8A%9C%EB%94%94%EC%98%A4-Auto-import

개발 공부 - 안드로이드 스튜디오 단축키

shift + shift = search Everywhere ctrl + shift + F = Find in Path shift + shift 는 클래스명/파일명 입력하면 바로 이동 ctrl + shift + F 는 전체 검색 그리고 Alt + Insert = Generate Navigation Menu 이건 Getter/Setter 생성시 잘 사용할 것 같지만 나는 왜 별로 안 쓸까 Ctrl+ alt + L = Reformats Code Line 이건 맨 위에 메뉴바에 Code 로도 들어갈 수 있는 자동정렬 기능이다. 나는 자꾸 Ctrl + shift + F를 누른다. 그런데 저거 왜 엔터 친 건 안 없애주는 지 모르겠다!!

개발 공부 - 안드로이드 Assets를 이용한 Database 활용

package 패키지명1.오픈헬퍼가위치할패키지명; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class DBOpenHelper extends SQLiteOpenHelper { //The Android’s default system path of your application database. private static String DB_PATH = "/data/data/패키지명/databases/" ; private static String DB_NAME = "DB파일명" ; public static final int DB_VERSION = 1 ; private SQLiteDatabase myDataBase ; private final Context myContext ; /** * Constructor * Takes and keeps a reference of the passed context in order to access to the application assets and resources. * @param context */ public DBOpenHelper(Context context) { super (context, DB_NAME , null , DB_VERSION ); this . myContext = context; } @Override public synchronized void close() { } @Override public void onCreate(SQLiteDatabase db) { } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } } ------------

개발 공부 - 안드로이드 Cursor 예제

@Override public List<Location> getLocations() { List<Location> list = new ArrayList<>(); Cursor cursor = null ; sqLiteDatabase = dbsqLiteOpenHelper .getReadableDatabase(); String sql = "select loca_id, loca_name from location where loca_id not null" ; try { cursor = sqLiteDatabase .rawQuery(sql, null ); cursor.moveToFirst(); int i = 0 ; if (cursor.getCount() > 0 ) { for (i = 0 ; i < cursor.getCount(); i++) { list.add( new Location(cursor.getString( 0 ), cursor.getString( 1 ))); } } } catch (Exception e) { e.printStackTrace(); Log. e ( "" , e.getMessage()); } finally { if (cursor != null ) cursor.close(); } return list; } 이런 메소드를 짜 놓으면 0만 들어간다. 이유는 커서도 증가를 시켜야 하는 걸 내가 몰랐기 때문이지. @Override public List<Location> getLocations() { List<Location> list = new ArrayList<>

개발 공부 - 안드로이드 rawQuery와 execSQL 차이

데이터베이스.rawQuery(String sql, String [] selectionArgs) 결과값을 받아와야 하는 경우에 사용한다. 예시: SELECT @Override public List<Emp> getEmps() { List<Emp> list = new ArrayList<>(); Cursor cursor = null ; sqLiteDatabase = dbsqLiteOpenHelper .getReadableDatabase(); String sql = "select emp_id, emp_name, dept_id from emp where emp_id not null and emp_name not null" ; try { cursor = sqLiteDatabase .rawQuery(sql, null ); cursor.moveToFirst(); int i = 0 ; if (cursor.getCount() > 0 ) { for (i = 0 ; i < cursor.getCount(); i++) { list.add( new Emp(cursor.getString( 0 ), cursor.getString( 1 ), cursor.getString( 2 ))); cursor.moveToNext(); } } } catch (Exception e) { e.printStackTrace(); Log. e ( "" , e.getMessage()); } finally { if (cursor != null ) cursor.close(); } return list; } 데이터베이스.exec

개발 공부 - Delete 대신 Update

DELETE 하면 아예 데이터가 지워지기 때문에 UPDATE를 사용해서 한 컬럼의 값을 변경하여 삭제된 데이터라고 인식하게 만드는 것이 낫다.     <named-native-query name="Emp.deleteByName" result-class="com.example.domain.Emp">     <query>     <![CDATA[     update emp set EMP_DEL_FLG = 1 where emp_name = :empName     ]]>     </query>     </named-native-query>

개발 공부 - 안드로이드 지니모션(Genymotion)에 파일 넣기

File Manager 에서 Setting으로 가서 아! 난 갤럭시 노트2 로 세팅했는데 옆에 세팅 메뉴가 안 떠서 왼쪽의 설정 바에서 문서처럼 생긴 모양의 버튼을 눌러서 활성화 시켰습니다. 그리고 나서 General settings - Access mode를 Root Access mode로 바꿔주고 파일 매니저 껐다 킨 다음에 슈퍼유저 권한 받은 토스트 메시지 확인하고 윈도우에 있는 파일을 드래그 앤 드롭 해주면 다운로드 폴더에 들어갑니다. 다운로드 폴더 경로가 sdcard - sdcard0 - Download 인데 이걸 클릭하고 다른 경로에다가 카피 셀렉션 해주면 됩니다.

개발 공부 - 파일 형식 일괄 변환하는 법

윈도우에서는 cmd창을 열어서 cd 로 경로에 접근한 다음에 ren 명령어를 사용해서 변경하면 됩니다. 파일 형식의 데이터를 ren *.* *.png 명령어를 사용해서 변경했는데. *(모든 이름의 파일).*(모든 확장자) 를 *(파일 이름).png(이 확장자)로 변경한다는 뜻입니다. RENAME 파일이름1 파일이름2  REN 파일이름1 파일이름2  형식인데 파일이름 1과 같은 경우에는 [드라이브:][경로]파일이름1 과 같이 경로를 지정할 수 있지만 변경 대상의 파일로 새 드라이브나 경로를 지정할 수는 없습니다.

개발 공부 - 그림에서 글씨체 추출하기, extract fonts from image

http://www.myfonts.com/WhatTheFont/ 여기에 그림 업로드하면 비슷한 글씨체 찾아서 보여줌. 예쁜 것은 거의 유료 폰트라 슬픈 것.

개발 공부 - Android ListView 선택시 색 변경하기

커스텀 리스트뷰 의 한 줄짜리 코드 때문에 1시간 헤맴... Selector 안 쓰고 xml에서는 listview의 옵션에 android:listSelector = "#000000" 하면 끝임 소스에서는 m_listview.setSelector(new PaintDrawable(0xfff0000)); 하면 됩니다. 출처: http://arabiannight.tistory.com/entry/363 이 블로그의 출처: http://blog.daum.net/haha25/5387804

개발 공부 - 안드로이드 SqlLite에서 like절 쓸 때 따옴표 위치

'%?%' 도 해보고 %% ? %% 도 해보고 '%' ? '%' 도 해봤지만 결국 sql = " select a.loca_name, a.loca_id, ifnull(b.surv_id, 0) " + " from location as a " + " left outer join( " + " select loca_id, count(surv_id) as surv_id " + " from survey_his " + " group by loca_id " + " ) as b " + " on (a.loca_id = b.loca_id) " + " where a.loca_name like '%" +searchValue+ "%' " + " group by a.loca_id " ; 이런 식으로 직접 삽입하는 방법으로 해결했음 작은 따옴표가 들어가야 해서 곤란하군.

개발 공부 - 안드로이드 rest 서버 http 통신에서 like절 parameter 입력

@NamedNativeQuery( name = "F_getSurveyListDept.surveyListDeptAllFind", query = " SELECT l.loca_name name " + " , l.loca_id id " + " , COUNT(b.surv_loca_id) cnt " + " FROM location l " + " LEFT OUTER JOIN surveyH b " + " ON l.loca_id = b.surv_loca_id " + " WHERE l.loca_name like '%:locaName%' " + " GROUP BY l.loca_id, l.loca_name " + " ORDER BY l.loca_id" rest 이런 식으로 하면 searchValue를 인식하지 못함 @NamedNativeQuery( name = "F_getSurveyListDept.surveyListDeptAllFind", query =   " SELECT l.loca_name name " + " , l.loca_id id " + " , COUNT(b.surv_loca_id) cnt " + " FROM location l " + " LEFT OUTER JOIN surveyH b " + " ON l.loca_id = b.surv_loca_id " + " WHERE l.loca_name like :locaName " + " GROUP BY l

개발 공부 - Android Studio Gradle 사용시 모듈 에러

DAVID 2017.03.16 14:15 수정 공개 삭제 unspecified on project app resolves to an APK archive which is not supported as a compilation dependency 안드로이드 스튜디오에서 모듈 분리를 할 때 다른 모듈의 Activity 라던지 안의 속성을 사용하기 위해 추가하는 경우 이런 오류가 날 때가 있다. 그러면 Gradle 에 가서 Build.Gradle에서 apply plugin: 'com.android.application' 을 apply plugin: 'android-library'로 바꿔준다. 그리고 defaultConfig의 applicationId 를 지워준다. 그러면 Warning:WARNING: Dependency org.apache.httpcomponents:httpclient:4.5.1 is ignored for debugAndroidTest as it may be conflicting with the internal version provided by Android.          In case of problem, please repackage it with jarjar to change the class packages Warning:WARNING: Dependency org.apache.httpcomponents:httpclient:4.5.1 is ignored for release as it may be conflicting with the internal version provided by Android.          In case of problem, please repackag

개발 공부 - JPA 쿼리 생성

용어 뜻:   JPA Repository 사용해야 하고 버전 1.6 이상이어야 합니다. findBy deleteBy countBy removeBy readBy QueryBy getBy   등이 있습니다.   참고 자료: 3.4.2. 쿼리 생성 3.4.2. Query creation 쿼리 빌더 메커니즘은 스프링 데이터 리파지토리 인프라스트럭쳐로 짜여져, 리파지토리의 엔티티들에 맞는 쿼리들을 만들어내는 데 유용합니다. 이 메커니즘은 find…By , read…By , query…By , count…By , 와 get…By 같은 접두어들을 메소드에서 떼어내고 나머지부분을 파싱하기 시작합니다. 다음 소개하는 절은 Distinct (쿼리가 생성될지 결정하는 flag를 설정)같은 더 깊은 표현을 포함하고 있습니다. 그러나 처음의 By 는 실제 크리테리아의 시작을 가리키는 구별자로 동작합니다. 기본레벨에서 당신은 엔티티의 속성을 결정할 조건을 정의할 수 있으며, 그것들을 And 와 Or 로 연결할 수 있습니다. The query builder mechanism built into Spring Data repository infrastructure is useful for building constraining queries over entities of the repository. The mechanism strips the prefixes find…By , read…By , query…By , count…By , and get…By from the method and starts parsing the rest of it. The introducing clause can contain further expressions such as a Distinct to set a distinct flag on the query to be created. However, the first By acts as del

개발 공부 - SQL Where 1=1

용어 뜻: where 1=1 은 where 절은 그대로 두고 추가로 and 절을 사용할 때 상황에 따라서 where 절이 빠지는 상황을 방지하기 위해서 의미없는 조건절을 넣어주는 것이다. 1=1은 항상 참이므로 무조건 true 인 경우를 만드는 것이다.   이와 같이 1=2나 100=200 같이 무조건 false인 상황을 만들어서 검색이나 List 조회 기능을 막을 때 사용할 수 있다. 출처: 개발을 해보자, 2017-09-19, http://ghstylus.tistory.com/6 2019-05-15에 뱀꼬리 달아보자면 1=1은 안 쓰는 편이 좋다고 하더라. sql injection 공격에 취약해 질 수 있음.

개발 공부 - iBatis/myBatis sql 공유하기(= include 태그로 다른 곳에서 사용하기)

용어 뜻: <sql>로 sql문을 선언해 두고 <select> 등에서 <include> 를 사용해서 가져다 씁니다. 이 때 <sql>은 id값이 없으면 못 가져다 쓰니 id를 꼭 정의해야 합니다. 그리고 가져다 쓸 select tag 보다 sql tag가 앞에 있어야 합니다. (상위 라인) 만약 파일이라면 sql-map-config에서 resource 순서가 앞에 있어야 합니다.   예> 한파일 내에서 공유 sql-map-config.xml   <sqlMap resource="./sql.xml"/> sql.xml  <sql id="CODE.SQL">   SELECT    CODE, CDNM   FROM CODEST    WHERE CODE_GROP_ID = #codeabbrnm#  </sql>   <select id="selectCode" resultMap="codeMap">   <include refid="CODE.SQL"/>  </select> TestClient.java     Map range = new HashMap();   range.put("codeabbrnm", "B001");   List rltList = sqlMapClient.queryForList("selectCode", range);    확장> 별도의 파일로 분리 sql-map-config.xml   <sqlMap resource="./sql.xml"/>   <sqlMap resource="./sqlmap1.xml"/> sql.xml  <sql id="CODE.SQL">   SELECT    COD

개발 공부- Gmail 2단계 인증 사용시 Outlook 연동 비밀번호

용어 뜻: 기본 설정에서는 비밀번호를 사용하면 되는데 2단계 인증 때문에 추가 비밀번호 비슷한 것이 필요함. https://security.google.com/settings/security/apppasswords 여기로 이동한 뒤에 앱 비밀번호를 생성해서 2단계 인증을 지원하지 않는 앱이나 기기에서 로그인할 수 있도록 하면 아웃룩 사용 가능하다.   다른 설정은 https://support.google.com/mail/answer/7126229?visit_id=1-636418946966709130-3781912640&hl=ko&rd=1 여기를 참고하여 사용하면 된다.   수신 메일(IMAP) 서버 imap.gmail.com SSL 필요: 예 포트: 993 발신 메일(SMTP) 서버 smtp.gmail.com SSL 필요: 예 TLS 필요: 예(사용 가능한 경우) 인증 필요: 예 SSL용 포트: 465 TLS/STARTTLS용 포트: 587 이름 또는 표시 이름 이름 계정 이름, 사용자 이름 또는 이메일 주소 전체 이메일 주소 비밀번호 Gmail 비밀번호   출처: Google 계정 고객센터 검색, 2017-09-25, https://support.google.com/accounts/answer/185833?hl=ko  

개발 공부 - Git 용어

용어 뜻: git clone : 원격 저장소 내용 모두 로컬 저장소로 복사 git remote : 로컬 저장소를 원격 저장소와 연결 git push : 로컬 저장소의 내용을 보내거나 변경 사항을 원격 저장소로 보냄 git fetch :  로컬 저장소와 원격 저장소가 다를 때 대조/비교해서 데이터를 반영하거나 충돌문제 등을 해결 git pull : git remote 명령을 통해 서로 연결된 원격 저장소의 최신 내용을 로컬 저장소로 가져오면서 병합 (git push와 반대 - 가져오는 거니까 )   tag 생성시 한번 commit을 해줘야 함. 출처: Sticky Note에 정리해뒀던 것 옮김, 2017-09-29