본문 바로가기

운동하는 개발자

(86)
lazarus dcpcrypt 암호화 오작동 (use external debug symbols file) 소스 merge후부터 http 통신이 100%실패하는 문제가 있었다 서버측에서 확인해보니 복호화 후 데이터가 비정상적이였으며 결론적으론 암호화에 실패한것이다 (별도로 에러가 발생하지도 않았다..) merge할 때 놓친 코드가 있나 몇번을 다시 찾아봐도 찾을 수 없었고 전문 생성시 잘못된것이 있나 로그를 엄청나게 추가해봐도 특이점이 없었다 그럼 정상작동하는 프로젝트와 프로젝트 옵션을 하나하나 비교해보는데.. 최근 merge작업 후 각각의 프로젝트가 다른 모드에서 빌드되도록 빌드모드를 추가했었다 project->project options->compiler Options에서 추가하였는데 이때 단순히 +버튼을 눌러 추가 생성하면 기존 설정을 복사해와 추가 생성되는데 'Create Debug and Releas..
http server와 TCP server 포트 중복이 가능할까? (http port & TCp Port) 기존에 TCP와 UDP는 포트가 중복으로 동시 사용이 가능한것으로 알고있었으나 Http(웹통신)과 TCP는 포트 중복이 가능한지 여부는 모르고있었기에 직접 실험해보았다 FWebServer:TIdHTTPServer; //indy 웹서버 FTCPServer:TIdTCPServer; //indy tcp 서버 FTCPServer.DefaultPort := 2080 FTCPServer.Active := True; FWebServer.DefaultPort := 2080 FWebServer.Active := True; 결과는 active True에서 excption이 발생했다 포트 중복은 불가능 원인을 찾아보니 Http통신도 파고파고 들어가다보면 결국 TCP기반이며 TCP통신 종류 중 하나라고 볼 수 있는것이였다 T..
라자루스 스레드 종료 기다리기 / lazarus wait for thread terminate 종종 특정 스레드가 확실히 종료되고 메인 프로세스가 진행되야 하는 경우가 있습니다 예를들어 버튼을 누르면 파일을 읽고 다른버튼을 누르면 파일을 쓰는 프로그램이 있다면 write하는중에 또 write명령이 오면 동일 파일 접근으로 충돌이 발생하겠죠 이럴 때 write쓰레드가 종료되길 기다릴때 사용가능합니다 //리눅스 환경 WaitForThreadTerminate(FFileWriteWorker.ThreadID, 0); //윈도우 환경 WaitForThreadTerminate(FFileWriteWorker.Handle, 0); 함수 자체는 쓰레드아이디를 넘기든 핸들을 넘기든 상관없다고 되어있는데 윈도우10 환경에선 ThreadID를 넘길경우 동작하지 않는것을 확인하였습니다
델파이 windows10 한글 깨짐 / edit 창 한글 커서 오류 (d2codingfont) ● 발생 환경 - 델파이 2010, XE5 - 윈도우7에서는 문제없으나 윈도우10으로 사용시 문제 발생 ● 현상 위와 같이 문자열을 한글로 입력시 커서가 딴데 있을때는 정상적으로 표출됨 위와같이 커서가 해당 라인에 들어가면 커서의 위치와 괄호의 위치가 비정상적으로 표시 TMI 더보기 괄호의 위치로 추측하건데 한글도 똑같이 1바이트로 계산하여 괄도 닫는곳이 한글 글자수x칸 만큼 앞으로 당겨져 보였다 ● 문제해결 결과적으로 기본 폰트의 오류 였다 Tools-> Options 를 들어가서 Editor Options->Display탭에서 Editor font를 보면 디폴트로 Courier New가 설정되어있는데 이를 변경시켜주면 된다 나는 네이버의 D2Coding폰트가 가독성이 좋다 하여 해당폰트를 다운받았다 ..
android studio AVD Waiting For Debugger / Run 무한대기 증상 안드로이드 스튜디오에서 AVD(Android Virtual Devices)를 사용하여 Run App 명령을 하였는데 Debug App을 한것처럼 멈춰있는 경우 (아래사진) 상세 내용 원래는 디버깅모드때 잠시 떴다가 사라지는 창인데 Run App을 하였는데도 무한대기하며 앱이 실행이 안됬다 Debug App을 하면 정상적으로 디버그모드로 정상적으로 동작이 된다 빠르게 Run만 해보고 싶을때 여간 불편한게 아니여서 확인해 본 결과 AVD를 디버깅중에 코드를 수정하여 다시 빌드하여 Run App을 동작시키면 간헐적으로 생기는 버그로 보였다 해결책 Tools -> AVD Manager를 실행 시킨 후 오류가 발생한 Virtual Device의 가장우측에 아래방향 화살표를 누른 뒤 'Cold Boot Now..
라자루스 dll 델파이에서 로드 / how use Lazarus dll in delphi ● 문제사항 라자루스를 이용해 만든 DLL파일이 델파이에서 LoadLibrary에서 실패하는 경우 발생 var H: THandle; // Init ... H := LoadLibrary('D:\temp\lazarus.dll'); //H의 값은 0 ● 확인사항 라자루스 프로젝트에서 DLL을 로드시 정상적으로 호출 되는것을 확인 ● 해결방안 라자루스 Project -> Project Options -> Compliler Options -> Config and Target을 보면 Target Os와 CPU가 기본적으로 디폴트로 되어있다 이를 아래와 같이 Tartget OS를 Win32, CPU를 i386으로 바꿔주니 정상적으로 로드에 성공했다 DLL을 사용하는 PC에 따라 다를꺼 같기도한데 내 피시는 윈도우10..
gitignore 자동생성 페이지 소개 https://www.toptal.com/developers/gitignore gitignore.io Create useful .gitignore files for your project www.toptal.com 위 페이지에서 gitignore를 자동생성해준다 위와같이 사용 OS, 언어, IDE를 입력해주고 [생성] 버튼 입력 위 사진과 같이 자동으로 gitignore일을 만들어준다 신규 언어나 IDE를 사용할 때 뭘 뺴야할지 잘 몰라서 통채로 다 올리는 경우가 있었는데 세상편하다
android createnewfile Operation not permitted 해결 이미지파일을 내부저장소에 저장하는 기능이 있는데 어느순간부터 File에서 createnewfile 함수 호출시 Operation not permitted 라는 에러가 발생하였다 File file = new File(fullPath, fileName); file.createNewFile(); //exception 발생부분 원래 정상 작동하던 코드인데 갑자기 안되서 당황하였고 권한 관련해서 이것도 넣어보고 빼보고 아무리 하다 해결이 안됬다가 디버깅중 이상하다 싶어 결국 해결된게 파일의 확장자가 없으면 create를 실패한다 간단하게 filename에서 확장자가 없다면 확장자를 넣어주는 로직을 추가 후 정상작동하는것을 확인하였다 구글링 대충해봤는데 확장자가 꼭 필요하다 라는말 정도만 있고 그 이유는 못찾았다 ..