티스토리

정윤아빠
검색하기

블로그 홈

정윤아빠

sondra.tistory.com/m

개발자로 살아가기.

구독자
0
방명록 방문하기

주요 글 목록

  • [git] 프로젝트 초기 업로드 및 관리 새로운 프로젝트를 깃에 업로드 하려고 하는데, 소스트리가 자꾸 종료된다.... 비어 있는 프로젝트를 다운받으려고 해서 그런 것 같은데..... 일단 이 문제는 나중에 다시 보기로 하고... 그럼 프로젝트를 먼저 올리자. 비어 있는 프로젝트를 생성해 놓긴 했으니... 업로드 하고 싶은 프로젝트 폴더를 마우스 오른쪽 버튼으로 클릭하면 > Git GUI Here / Git Bash Here 메뉴가 나타난다. 물론 윈도우에서 git을 설치하고 경로가 제대로 설정되었을 때 나타나겠지. Git Bash Here를 선택해서 콘솔 창을 띄운다. git init --initial-branch=main git remote add origin http://000.000.000.000/dev/project.git git ad.. 공감수 0 댓글수 0 2022. 3. 22.
  • [git] push 나눠서 하기 git 서버에 문제가 생겨서, 다른 곳에 서버를 새로 만들었을 경우. 로컬의 git 프로젝트를 업로드해야 한다. git push --all 터미널에서 위와 같이 모든 브랜치를 푸시하도록 하면 될텐데... github나 azure 같은 경우에 한번에 올릴 수 있는 용량에 제한이 있는 경우가 있다. 이 경우 unity 프로젝트 같이 큰 프로젝트는 한꺼번에 올릴 수가 없는데... git push origin [commit no]:refs/heads/[branch] 위와 같이 특정 브랜치까지 푸시할 수 있는데, 이렇게 단계적으로 모든 브랜치를 다 올릴 수 있다. 공감수 0 댓글수 0 2021. 11. 29.
  • [git] http.postBuffer 관련 오류 요즘 git 서버 관련하여 문제를 많이 겪다보니,,, 관련되어 정리할 내용이 계속 생긴다. RPC 오류가 발생할 경우, http.postBuffer 용량을 늘려서 해결하곤 했는데... error: RPC failed; result=22, HTTP code = 404 error: RPC failed; result=22, HTTP code = 411 Unable to rewind rpc post data - try increasing http.postBuffer error: RPC failed; result=56, HTTP code = 0 대표적으로 위와 같은 오류 들이다. http.postBuffer 크기를 크게 설정하여 문제가 해결되기도 하지만, 어떤 경우는 해결이 안되기도 한다. 또한 큰 푸시에 대한 .. 공감수 0 댓글수 0 2021. 11. 29.
  • [WSL2] 디스크 용량 늘리기 WSL2 기반으로 Docker를 사용하고 있는데.... 어느 순간 쓰기 에러가 발생하고 있다. WLS2는 VHD를 사용하여 리눅스 환경을 구성하는데, 초기 최대 크기가 256GB이다. 확인해보니 이미 240GB를 차지하고 있었다. 이 오류는 VHD 크기를 확장하면 해결된다. 1. WSL 인스턴스 종료 wsl --shutdown 파워쉘을 열어서 위의 명령어를 사용하여 WSL 인스턴스를 종료한다. 2. VHD 위치 찾기 WSL2 기반의 도커를 사용할 경우, 도커 볼륨을 확인하면 VHD 위치를 확인할 수 있다. VHD 위치를 알고 있다면 이 단계를 넘어가도 된다. WSL2 가 설치된 VHD를 찾을 경우, 일단 배포 설치 패키지 이름을 찾는다. Get-AppxPackage -Name "*Ubuntu*" | Se.. 공감수 0 댓글수 0 2021. 11. 27.
  • [git] 오류 관련 처리 2 remote: aborting due to possible repository corruption on the remote side. 라는 에러가 발생하면서 pull이 안되는 상황이 발생하였다. stackoverflow 검색의 대부분은 아래와 같이 설정하면 해결이 된다는 것이었는데. git config --global pack.window "0" git config --global pack.windowMemory "100m" git config --global pack.packSizeLimit "100m" git config --global pack.threads "1" 음. 문제가 해결이 외지 않는다. sourcetree 관련 사이트에서는 아래와 같은 명령어를 사용하여 문제가 해결되었다고 한다. git.. 공감수 0 댓글수 0 2021. 11. 16.
  • [python] 엑셀 파일을 JSON으로 변환하기 엑셀 파일 내용을 데이터로 사용하기 위해 JSON으로 변환하여 사용 중인데... 귀찮아서 변환 프로그램을 만들었다. 처음엔 xrld를 사용하여 로딩하였는데... xlsx를 지원하지 않는단다. OpenPyXL이라는 라이브러리가 xlsx를 지원하는데, pandas에서 openpyxl을 사용하여 로딩이 된다고 하여 pandas를 베이스로 적용해 보았다. from collections import OrderedDict import json import re import pandas as pd excel_path = r'대충 예제 바일 경로.xlsx' #excel_path = sys.argv[1]; sheet_no = 0 all_data = [] df = pd.read_excel(excel_path, engine.. 공감수 0 댓글수 0 2021. 10. 1.
  • [git] Filename too long 에러 관련 소스트리 프로젝트를 사용하다 보면, 꼬이고 시간 걸리고 하는 일이 많이 생긴다. 그러다 강제 종료라도 시키면 다시 열리기를 하루 왠종일 기다리기도 한다. 그러다 발생한 문제 중에 "Filename too long" 에러가 뜨면서 변경 사항 폐기가 안되는 상황이 발생한다. git config core.longpaths true 그럴 때, 깃 터미널을 열어서 위와 같이 설정을 하면 되는 것 같다. 공감수 0 댓글수 0 2021. 9. 22.
  • [git] 저장소 이동하기 서버를 변경하거나, 서버가 터졌을 때 저장소 이동이 필요해진다. 이를 위한 과정이다. 1. 기존 저장소 복사 우선 필요한 것은 기존 저장소 복사. 저장소의 내용을 다운로드 받는다. 깃을 이용하는 것이 좋은데, 나는 소스트리를 사용하고 있으니 소스트리의 깃 터미널을 사용한다. 소스트리의 아무 프로젝트에서 깃 터미널을 실행한다. cd 명령어를 사용하여 원하는 로컬 경로로 이동 git clone 명령어를 사용하여 다운로드 받는다. --mirror 옵션은 기존의 tracking branches, notes, tags 등 모든 것을 그대로 복제하라는 명령이다. git clone --mirror http://XXXXXXXXXXX/project.git 다운로드가 완료되면 생성된 폴더로 이동한다. cd project... 공감수 0 댓글수 0 2021. 9. 15.
  • [git] 오류 관련 처리 소스트리를 사용하면 git 명령어를 잘 몰라도 git을 잘 활용할 수 있는거 같다. 그러나 가끔 용량이 큰 파일이 포함되어 있거나, 전체 용량이 큰 프로젝트에서 에러가 발생한다. 이럴때 아래 명령어로 대부분 에러가 해결된다. 1. 메모리 부족 git push fatal: Out of memory, malloc failed git config --global http.postBuffer 2097152000 2. 메모리 부족 + nmap failed warning: suboptimal pack - out of memory fatal: mmap failed: Invalid argument git config --global pack.windowMemory 500m 3. nmap failed fatal: mma.. 공감수 0 댓글수 0 2021. 4. 12.
  • [vcpkg] 필요한 라이브러리를 자동으로 설치해 보자. 1. vcpkg 개요 vcpkg 공식 홈페이지에는 다음과 같이 설명되어 있다. vcpkg는 C 및 C++ 라이브러리용 플랫폼 간 명령줄 패키지 관리자입니다. vcpkg는 Windows, Linux 및 macOS에서 타사 라이브러리 다운로드 및 설치를 간소화합니다. 프로젝트에서 타사 라이브러리를 사용하는 경우 vcpkg를 사용하여 설치하는 것이 좋습니다. vcpkg는 오픈 소스와 독점 라이브러리를 모두 지원합니다. vcpkg Windows 카탈로그의 모든 라이브러리가 isual Studio 2015, Visual Studio 2017 및 Visual Studio 2019와의 호환성 테스트를 거쳤습니다. vcpkg는 이제 Windows 카탈로그와 Linux/macOS 카탈로그 간에 수천 개의 라이브러리를 지.. 공감수 0 댓글수 0 2021. 3. 15.
  • [MFC] Dialog에서 Enter, ESC 키 처리 다이얼로그에서 Enter키를 누르면 기본 버튼이, ESC 키를 누르면 취소 버튼이 눌러진다. 모덜리스로 만들 경우, 이런 자동 처리가 불편할 때가 있다. 1. 메시지로 처리하는 방식 BOOL CManagerClientDlg::PreTranslateMessage(MSG* pMsg) { if (pMsg->message == WM_KEYDOWN) { if (pMsg->wParam == VK_RETURN || pMsg->wParam == VK_ESCAPE) { // VK_RETURN : Enter Key // VK_ESCAPE : ESC key return TRUE; } } return CDialog::PreTranslateMessage(pMsg); } 2. 이벤트 처리 방식 Enter Key : OnOK 함수.. 공감수 0 댓글수 0 2021. 3. 14.
  • [MFC] 현재 실행되는 프로그램의 경로 얻기 의외로 자주 필요하게 되는 기능이다. TCHAR path[_MAX_PATH]; GetModuleFileName(NULL, path, sizeof path); CString strPath = path; int i = strPath.ReverseFind('\\'); strPath = strPath.Left(i); 공감수 0 댓글수 0 2021. 3. 14.
  • [SQL] Table 복사하기 Oracle에서는 create table NEW_TABLE as select * from OLD_TABLE 이라고 하면 되는데... Visual Studio (MS SQL 이겠지..) 에서는 위 코드가 동작하지 않는다. OLD_TABLE의 모든 내용을 NEW_TABLE을 만들며 복사한다. SELECT * INTO NEW_TABLE FROM OLD_TABLE OLD_TABLE의 특정 칼럼들을 NEW_TABLE을 만들며 복사한다. SELECT A, B INTO NEW_TABLE FROM OLD_TABLE OLD_TABLE의 row 중에서 prod_id가 'BR01' 인 것들만 NEW_TABLE을 만들며 복사한다. SELECT * INTO NEW_TA.. 공감수 0 댓글수 0 2021. 3. 14.
  • [MFC] CString Unicode 멀티바이트 프로젝트를 유니코드로 설정해야할 일이 많아진다. 참조하는 프로젝트가 유니코드로만 되어 있을 경우 등.... 가장 기본적인 함수들이 문제가 될 때가 많은데. 대충 커버가 될 것 같다. 공감수 0 댓글수 0 2021. 3. 14.
  • [Xerces] XML 파일로 저장하기 Xerces 라이브러리를 사용한 XML 파일로 저장하기 코드 참조. try { XMLPlatformUtils::Initialize(); } catch (const XMLException& toCatch) { std::cout getDocumentElement(); // node 생성와 값에 대한 값을 넣는다. // 노드 생성 XMLString::transcode("product", tempStr, 99); DOMElement* prodElem = doc->createElement(tempStr); rootElem->appendChild(prodElem); // 그 노드에 맞는 값 XMLString::transcode("Xerces-C", tempStr, 99); DOMText* prodDataVal = .. 공감수 0 댓글수 0 2021. 3. 13.
  • [Xerces] XML 생성 Xerces 라이브러리를 사용한 XML 생성하기 코드 참조. XMLCh tempStr[100]; static const XMLCh gLS[] = { chLatin_L, chLatin_S, chNull }; auto impl = DOMImplementationRegistry::getDOMImplementation(gLS); XMLString::transcode("company", tempStr, 99); //(Root )노드 생성 xercesc::DOMDocument* doc = impl->createDocument( 0, // root element namespace URI. tempStr, // root element name 0); // document type object (DTD). DOMElem.. 공감수 0 댓글수 0 2021. 3. 12.
  • [Xerces] XML 읽기 Xerces를 이용한 XML 읽기 예제 소스이다. Xerces는 많이 사용하는 라이브러리이지만, 의외로 자료 찾기가 쉽지 않네... 그래도 읽기는 어렵지 않은 듯... try { XMLPlatformUtils::Initialize(); } catch (const XMLException& toCatch) { std::cout setDoNamespaces(false); parser->setValidationScheme(XercesDOMParser::Val_Auto); parser->setCreateEntityReferenceNodes(false); try { parser->parse(file_path); } catch (...) { XMLPlatformUtils::Terminate(); return; } x.. 공감수 0 댓글수 0 2021. 3. 12.
  • [C#] 파일 및 폴더 이동 자주 사용하게 되는 코드 // Simple synchronous file move operations with no user interface. public class SimpleFileMove { static void Main() { string sourceFile = @"C:\Users\Public\public\test.txt"; string destinationFile = @"C:\Users\Public\private\test.txt"; // To move a file or folder to a new location: System.IO.File.Move(sourceFile, destinationFile); // To move an entire directory. To programmatically.. 공감수 0 댓글수 0 2021. 3. 12.
  • [C#] 파일 및 폴더 삭제 자주 사용하게 되는 코드 // Simple synchronous file deletion operations with no user interface. // To run this sample, create the following files on your drive: // C:\Users\Public\DeleteTest\test1.txt // C:\Users\Public\DeleteTest\test2.txt // C:\Users\Public\DeleteTest\SubDir\test2.txt public class SimpleFileDelete { static void Main() { // Delete a file by using File class static method... if(System.IO.F.. 공감수 0 댓글수 0 2021. 3. 12.
  • [C#] 파일 및 폴더 복사 파일 및 디렉터리 복사 방법 자주 사용하는 코드라 저장용. // Simple synchronous file copy operations with no user interface. // To run this sample, first create the following directories and files: // C:\Users\Public\TestFolder // C:\Users\Public\TestFolder\test.txt // C:\Users\Public\TestFolder\SubDir\test.txt public class SimpleFileCopy { static void Main() { string fileName = "test.txt"; string sourcePath = @"C:\User.. 공감수 0 댓글수 0 2021. 3. 12.
  • [C#] 현재 실행되는 실행 파일의 경로 얻기 실행 파일의 경로가 필요한 경우가 종종 발생한다. Application.ExecutablePath 위 속성을 이용하면 실행 파일 경로를 쉽게 얻을 수 있다. string sExecutableFolder = Application.ExecutablePath; int n = sExecutableFolder.LastIndexOf(@"\"); sExecutableFolder.Substring(0, n+1); 이렇게 하면 실행 파일이 존재하는 Folder 경로를 얻을 수도 있게 된다. 공감수 0 댓글수 0 2021. 3. 12.
  • [OGRE] ManualObject to Mesh ManualObject를 생성한 후, 다시 사용하고 싶을 때, Mesh로 만들어 놓으면, 나중에 mesh만 호출하면 되니 편리한 것 같다. ManualObject mo = scenMgr.CreateManualObject("test"); ... MeshPtr temp_mesh = mo.ConvertToMesh("unit.mesh"); 동일한 형상을 재활용하기 위해서는 instance를 만드는게 제일 좋은데, 그렇게 동작하는지, 복사해서 생성하는지는 테스트가 필요할 것 같다. 공감수 0 댓글수 0 2021. 3. 12.
  • [OGRE] Loading Meshes From Any Path 리소스 경로는 resource.cfg 파일에 정의되어 있어야 한다. 임의의 경로에 있는 mesh를 읽어들이는 코드는 다음과 같다. // "source" should contain the pathname to your mesh file Ogre::String source; /* An alternate (better) way of doing the following would be to use the FileStreamDataStream class, which avoids having to use the more esoteric "stat" struct and stdio APIs. For more, see http://www.ogre3d.org/docs/api/html/classOgre_1_1FileStre.. 공감수 0 댓글수 0 2021. 3. 12.
  • [C#] 속도 측정용 간단 코드 using System.Diagnostics; Stopwatch sw = new Stopwatch(); sw.Start(); RenderScene(); sw.Stop(); Console.WriteLine(sw.Elapsed.ToString()); 간단하게 처리 가능. 공감수 0 댓글수 0 2021. 3. 12.
  • [MFC,OGRE] MFC에서 OGRE 사용하기 원문 1 : http://blog.naver.com/xtar/70000770469 원문 2 : http://blog.naver.com/xtar/70000770626 원문 3 : http://blog.naver.com/xtar/70000770830 10년전 기준 코드이므로, 현재 버전에서는 다를 것 같다. Ogre는 잘 사용하지 않지만, 기록 차원에서 정리한다. Ogre를 초기화 하는데 필요한 과정을 정리해 보면 다음과 같다. 1. Ogre::Root 객체 생성 및 초기화 1.1. Ogre::Root 객체 생성 1.2. Resource 경로 설정 1.3. Ogre::RenderSystem 선택 (DirectX or OpenGL 같은 것들) 1.4. Ogre::Root 초기화: initialise() 호출 .. 공감수 0 댓글수 0 2021. 3. 12.
  • [OGRE] 매뉴얼 객체로 좌표축 만들기 원문 http://cafe.naver.com/ogre3d/1556 매뉴얼 객체로 좌표축을 만드는 코드이다. 좌측 하단으로 위치를 고정해주는 코드. Vector3 AppCamera::getScreenPos(SCREEN_POS sp) { Vector3 pos = getPosition(); Quaternion ori = getOrientation(); float x=20, y=13, z=40; if (sp == LT) return pos + ori * Vector3(-x, y,-z); else if (sp == LB) return pos + ori * Vector3(-x,-y,-z); else if (sp == RT) return pos + ori * Vector3(x,y,-z); else //RB retur.. 공감수 0 댓글수 0 2021. 3. 12.
  • [VisualStudio] 빌드 후 이벤트 복사 DLL을 생성하는 프로젝트와 같은 경우, 빌드된 dll을 특정 폴더로 자동으로 이동하고 싶을 경우가 생긴다. 프로젝트 속성 > 구성 속성 > 일반 > 출력 디렉토리 위 속성에 원하는 폴더와 파일 이름을 지정하면 빌드 결과물이 해당 폴더에 생긴다. 그러나, 생성되는 결과물은 그대로 두고 다른 위치에 복사하고 싶을 경우도 발생한다. 이때는 빌드 후 이벤트를 지정해서 해결한다. 프로젝트 속성 > 구성 속성 > 빌드 이벤트 > 빌드 후 이벤트 copy “$(TargetDir)output.dll” “복사할 경로”; 이렇게 지정해 주면 빌드가 완료된 이후 복사할 경로로 파일이 복사된다. 공감수 0 댓글수 0 2021. 3. 12.
  • [MFC] 한글 바이트 세기 영문은 1바이트, 한글을 2바이트를 차지하는 경우, 전체 문자열의 바이트 수를 알아야 한다. WideCharToMultiByte 함수를 사용하면 간단하게 해결. int GetByteCount(CString str_text) { char* cStr = NULL; _bstr_t _bstr_(str_text); int temp_length = WideCharToMultiByte(CP_ACP, 0, _bstr_, -1, cStr, 0, NULL, 0); return temp_length-1; } 일단 몇 가지 테스트를 통한 결과를 봐서는 잘 동작하는 것 같다. ㅋ 공감수 0 댓글수 0 2021. 3. 12.
  • [MFC] Active Directory 계정 정보 얻기 사용자가 계정을 입력하고 프로그램을 사용할 수 있도록 해야 하는데, AD 인증을 받으란다. Active Directory..... 많이 들어보긴 했는데... 아무튼 AD 계정 정보를 얻어오는 소스가 있다.. code project에 Simple Active Directory Browsing 이걸 이용하면 되지 않을까 한다. 어디 또 써먹을 때가 있으려나.... 공감수 0 댓글수 0 2021. 3. 12.
  • [MFC] 콘트롤의 사이즈나 위치 변경시 깜박임 현상 줄이기 콘트롤들의 위치나 크기를 변경하고자 할 때 통상 SetWindowPos()나 MoveWindow() 함수를 이용한다. 그런데 이 함수들은 각각의 콘트롤들이 개별적으로 그려지기 때문에 화면 깜박임이 심하다. 특히, FormView나 Dialog를 사용하면 더 심해진다. 이럴때 BeginDeferWindowPos(), DeferWindowPos(), EndDeferWindowPos()라는 Window API 함수를 쓰면된다. 자세한 사용법은 Help를 보시면 되지만 간단히 요약하면 HDWP hdwp = ::BeginDeferWindowPos (2); ::DeferWindowPos (hdwp, ctrl1.GetSafeHwnd (), HWND_TOP, Rect1.left, Rect1.top, Rect1.Widt.. 공감수 0 댓글수 0 2021. 3. 12.
    문의안내
    • 티스토리
    • 로그인
    • 고객센터

    티스토리는 카카오에서 사랑을 담아 만듭니다.

    © Kakao Corp.