- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |
- DB 계정생성
- Activity 전체화면
- pid 찾아 kill
- 가변영역 스크롤
- springboot 재가동
- kill -9
- vc++
- 텍스트컬러
- SQL 마지막날
- richedit 색상
- MySQL
- 말줌임 CSS
- 스크롤적용
- c언어
- MFC
- 코드로 서버 재실행
- sql exception
- MariaDB
- Back 키 클릭 감지
- ffmpeg
- 피쉬랜드
- 터치좌표 view
- CSS
- CentOS
- SQL 첫날
- rn
- reactnative
- springboot
- view 획득
- mybatis exception
목록전체보기 (108)
개발은 하는건가..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cb3CRS/btrY5lq5wCo/S90dEREw08JBd1oKnttT50/img.png)
springboot 로 tomcat 내장 형태의 jar 생성 후 윈도우용 application exe 형태의 파일로 만들어서 배포할 경우 유용한 방법입니다. 아래 주소에 접속하여 윈도우용 최신 Launch4J 를 다운로드 받아 설치 합니다. https://launch4j.sourceforge.net/ 실행 후 [Output file] 에는 exe 가 생성될 경로와 파일명을 지정하고 jar 에는 원본 jar 파일을 지정합니다. 필요에 따라 [icon], [change dir], [command line args] 를 설정합니다. 필요없을 경우 안해도 됩니다. header 탭에서 jar application 타입을 설정 합니다. springboot jar 이므로 [console] 를 선택합니다. JRE 탭에..
tail 명령으로 로그 파일의 갱신 내용을 실시간으로 확인 > tail -n 20 -f 로그파일.log -n [라인수] : 마지막 라인수에 해당하는 로그를 보여준다. (라인수 옵션을 주지 않을 경우 기본 10줄만 보여짐) -f : 파일 내용이 변경되면 지정된 라인수 만큼 계속 보여준다. (명령 재실행 하지 않아도 계속..) - c [바이트수] : -n 옵션을 안쓰고 이 옵션을 사용할 경우 지정한 바이트 수 만큼만 내용이 보여진다. 파이프를 이용해 grep 과 같이 사용할 수 있는다 다음과 같은 경우 ERROR 문자열이 포함된 라인만 출력 된다. > tail -n 20 -f 로그파일.log | grep ERROR
1. sh 확장자를 가진 파일을 생성한다. > vi run.sh 2. 생성된 파일에 실행 권한을 부여한다. > chmod +x run.sh 3. 파일 내용을 작성한다. 파일 작성 예) #!/bin/sh echo $1 "run to background.." nohup java -jar "$1" >> "$1.log" 2>&1 & read -t 5 -p "wait 5 second..." cat "$1.log" 4. 생성된 파일을 실행한다. > ./run.sh app.jar
파일 다운로드 예) @GetMapping({"/api/photo/download"}) public void photoDownload(@RequestParam(required = false, defaultValue = "0") int paramKey, HttpServletResponse response) throws IOException { if (paramKey == 0) { response.setStatus(HttpServletResponse.SC_BAD_REQUEST); return; } File photoFile = new File("파일경로/" + paramKey + ".jpg" ); if (photoFile.exists() == false) { response.setStatus(HttpServl..
사진 파일 업로드 예) @ResponseBody @PostMapping("/api/photo/upload") public String photoUpload(@RequestParam(required = false) MultipartFile uploadFile) throws IOException { String extFileName = uploadFile.getOriginalFilename().toUpperCase(); if (extFileName.endsWith("JPG") == false) { return "Jpg 파일만 지원합니다"; } int fileSize = uploadFile.getBytes().length; try { File dirFile = new File("파일 저장 경로"); if (d..
기본적으로 파일 업로드는 1MB 로 설정되어 있어 그 이상의 파일 업로드 시 아래와 같은 오류는 발생한다. The field file exceeds its maximum permitted size of 1048576 bytes. 아래와 같이 application.properties 에 최대 사이즈를 설정해준다. spring.servlet.multipart.max-file-size=4MB spring.servlet.multipart.max-request-size=4MB spring.servlet.multipart.enabled=true
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bXuLrQ/btrVo5fsPAW/l8hEkVTh0WjIDSZN6CC911/img.png)
Setting 에 들어가서 Build, exec.. > Build Tool > Gradle 의 아래 부분이 Gradle 로 되어 있다면 'IntelliJ IDEA' 로 변경해 준다. Lombok 을 사용중이라면 추가적으로 아래 부분이 체크한다.
From 절의 왼쪽 테이블 기준으로 JOIN 을 하여 왼쪽 테이블에 값이 존재하지 않더라도 결과 레코드셋의 갯수는 변화가 없음. SELECT * FROM account A LEFT JOIN (SELECT pKey, areaName FROM area) B ON (A.workAreaId = B.pKey) WHERE A.level = 7 ORDER BY id, regDate
Springboot 를 배포 후 종종 변경되는 일부 컨텐츠 파일만을 교체해야 할 경우 static 리소스 안에 뒀을 경우 다시 빌드 하고 배포를 해야하기 때문에 그런 파일들을 별로도 외부의 고정된 경로에 두어 파일만 교체 할 수 있도록 할 경우의 방법이다. 아래와 같이 임의 클래스를 생성후 @Configuration 어노테이션 추가 후 WebMvcConfigurer 인터페이스를 상속 후 ResourceHandler 와 ResourceLocations 를 등록해주면 된다. import java.util.concurrent.TimeUnit; @Configuration public class ResourceConfiguration implements WebMvcConfigurer { @Override publ..
CSkinSliderCtrl 을 상속받아 원하는 클래스를 만든 후 아래와 같이 CustomDrawSliderBg, CustomDrawThumb, OnSliderPosChange 를 override 하여 원하는 형태로 DC 에 그리고 필요한 이벤트를 연결하면된다. 이벤트를 연결하면된다 #pragma once #include "SkinSliderCtrl.h" class CTestSliderCtrl :public CSkinSliderCtrl { public: CGCSSliderCtrl(); virtual ~CGCSSliderCtrl(); struct CSCallback { void(*OnSliderPosChange)(CGCSSliderCtrl *pSlider, int pos, void *pOwner); voi..
윈도우의 배율에 따라 컨트롤의 크기나 위치가 변경되는 것을 막으려고 DPI 인식을 높은 DIP 인식으로 변경해도 리소스 에디터에서 배치한 컨트롤의 위치가 배율에 영향을 받아 변경된다. 찾고 찾아도 한방에 처리할 수 있는 방법은 못찾았고 그나마 내가 생각한 쉬운 방법을 정리해본다. 우선 윈도우 배율을 변경하지 말고 100% 상태로 리소스 에디터에서 컨트롤들의 크기와 위치를 맞춘 후 실행해서 맞게 배치되었는지 확인한다. SetCtrlMove, PrintCtrlArrangePos 함수를 추가하고 OnInitDialog 에서 호출한다. PrintCtrlArrangePos 함수를 통하여 현재 윈도우의 자식 컨트롤 윈도우들을 모두 찾아 해당 위치를 로그로 출력한다. void CBaseDialog::SetCtrlMo..
HDC hDc = ::GetDC(0); FLOAT fDPIScaleX = GetDeviceCaps(hDc, LOGPIXELSX) / 96.0f; FLOAT fDPIScaleY = GetDeviceCaps(hDc, LOGPIXELSY) / 96.0f; ::ReleaseDC(0, hDc); fDPIScaleX, fDPIScaleY 에 각 가로 세로 비율이 저장되는데 보통은 가로세로 비율을 동일하게 나온다. 디스틀레이 설정에서 125% 또는 150% 로 설정했을 경우 각 1.25, 1.5 값을 반환한다. 배율되지 않은 원본 좌표가 필요할 경우 해당 좌표 / fDPIScaleX 해서 얻으면 되겠다.
디스크 단위 용량 확인 - df : 남은용량 확인(기본 명령어) - df -h : 깔끔하게 정리해서 보여줌 - df . : 현재 경로의 디스크용량만 확인 - df -m, -k : megabyte, kilobyte단위로 확인 현재 경로 아래의 사용량 확인 - du : 현재경로 아래 확인(기본명령어) - du -sh * : 현재 경로 아래 사용량 확인 1depth - du -a : 파일단위로 사용량 확인 출처 : https://gun0912.tistory.com/22
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/6yZWn/btrPFXUaZdU/rXO4WaFN51RbqOE9gMxBA1/img.png)
카메라의 Pan Tilt 조정에 모바일 게임에서 사용되는 가상 조이스틱 패드 같은 컨트롤이 필요하여 만들어 보았다. 사용방법 // GDI+ 를 사용하므로 Application 클래스에서 GDI+ 를 사용할 수 있도록 초기화 한다. // 리소스 편집기에서 Static 컨트롤을 올리고 컨트롤 변수를 생성하여 CPantTiltCtrl 로 서브클래싱한다. //CStaticm_PanTiltCtrl; CPanTiltCtrlm_PanTiltCtrl; // 컨트롤 변수를 통해 초기화 함수 호출 m_PanTiltCtrl.InitControl(GetAppImagePath(), this); m_PanTiltCtrl.SetBackgroundColor(RGB(32, 35, 54)); 컨트롤에서 사용되는 2개의 png 파일이 필..
설정 시간 이후 깨어나서 필요한 동작을 수행하도록 한다. 요즘 추세는 WAKEUP 을 하지 않고 WorkManager 를 이용하라고는 하지만 여전히 잘 동작하고 옛날 방식이 더 편한 감도 있다. AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); Intent newIntent = new Intent(Constants.DELAYED_ALARM_WAKE_UP); newIntent.setPackage(getPackageName()); PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, newIntent, PendingIntent..