-
오늘의 IT 뉴스 (19년 4월 4일)
오늘의 뉴스 (19년 4월 4일) 1. 보안 한국 대형 포털에 가짜 로그인 페이지가? 워터링 홀 비상 (보안뉴스) 영국, 화웨이 장비 분석 후 “도저히 믿을 수 없다” 비판 (보안뉴스) 야놀자펜션앱 개인정보 7만여 건 유출! 숙박앱 수난시대 (보안뉴스) 2. IT 시사 [단독]카카오, 準대기업→대기업 등극한다…벤처 ICT 첫 사례 (전자신문) 3. 에너지 정부, 재생에너지 ‘탄소인증제·최저효율제’ 도입 (전자신문)
lynn.baek's profile imagelynn.baek
2019-04-04 09:11
-
오늘의 IT 뉴스 (19년 3월 19일)
오늘의 뉴스 (19년 3월 19일) 보안 “이 전화는 보이스피싱이 의심됩니다” 보이스피싱 방지 앱 나온다 (매일경제) AI 현대차 신형 쏘나타에 카카오 ‘AI 비서’ 태운다 (매일경제) 택시기사님 종로에 손님 많아요… AI가 알려주네 (매일경제) 코딩교육 아두이노스토리, 8분 코딩 입문 ‘코딩 어레이’ 스타터 키트 출시 (매일경제)
lynn.baek's profile imagelynn.baek
2019-03-19 23:00
-
Visual Studio 2008 프로젝트 Visual Studio 2005에서 열기
Visual Studio 2008 프로젝트를 Visual Studio 2005에서 열고 싶다면, 다음과 같이 2008 프로젝트의 .proj 파일과 .sln 파일을 수정해주면 됩니다. 1. .proj 파일의 Version을 변경한다. 변경 전 변경 후 2. .sln 파일의 Version을 변경한다. 변경 전 변경 후
lynn.baek's profile imagelynn.baek
2018-12-19 09:34
-
Credential Provider 자동 로그인(AutoLogon) 구현
MS에서 Windows 로그인 화면을 사용자가 Customizing 할 수 있는 Credential Provider라는 dll을 제공하고 있습니다. 저는 V2 Credential Provider Sample을 사용하였고, 이는 MS에서 제공하는 Credential Provider의 샘플입니다. V2 Credential Provider Sample은 Windows8 이상의 OS부터 사용가능하고, 이전 버전의 Windows에서 사용할 Credential Provider를 구현하시려면, V2가 붙지 않은 Credential Provider Sample을 사용하시면 됩니다. AutoLogon 부분 관련해서는 Windows Dev Center에 올라와 있는 글을 보고 도움을 많이 받았습니다. 자동 로그인(AutoLogon) 테스트는 꼭 VM환경에서 해주세요! 잘못하다가 영영 로그인 화면에서 넘어갈 수 없을지도...
lynn.baek's profile imagelynn.baek
2018-12-17 11:22
-
NW.js(node-webkit) 설치 방법
설치하기 https://github.com/rogerwang/node-webkit#downloads 다운받은 파일을 압축 해제한 후, 폴더 내의 nw.exe를 실행한다. 다음과 같이 크로미움 기반의 웹뷰 화면이 나오게 됩니다. Hello World 띄워보기 임의의 폴더를 하나 생성한다. ex) app index.html 만들기 <!DOCTYPE html> <html> <head> <title>Hello World!</title> </head> <body> <h1>Hello World!</h1> We are using node.js <script>document.write(process.version)</script>. </body> </html> package..json 만들기 { "name": "nw-demo", "version": "0.0.1", "main": "index.html" } 아까 생성한 폴더(app)에 index.html과 package.json을 넣는다. 폴더를 통째로 nw.exe로 드래그 다음과 같이 nw.js가 열리면서 Hello Wolrd!를 출력하게 된다....
cross-platform node-webkit nw.js
lynn.baek's profile imagelynn.baek
2018-12-17 10:56
-
Ubuntu run 파일 설치 방법
우분투에서 확장자가 run인 파일을 설치하는 방법입니다. run 파일 설치 방법 chmod a+x test.run ./test.run
lynn.baek's profile imagelynn.baek
2018-11-01 17:15
-
Ubuntu 한글 설치 방법
우분투를 처음 설치했을 때, 한글은 기본으로 설치되어 있지 않아서, 한글을 사용하기 위해서는 별도의 설치 과정이 필요합니다. 우분투 한글 설치 방법 한글 설치 sudo apt-get install fcitx-hangul Language Support > Install/Remove Languages > Korean 체크 > Apply 버튼 클릭 설치 후 Language for menus and windows 항목에 한국어가 있는 지 확인 한국어가 보이지 않는다면 Language Support > Install/Remove Languages > Korean 체크 해제 > Apply 버튼 클릭 (Korean 제거) 2번 항목 반복 (Korean 다시 설치) 한국어보이면...
lynn.baek's profile imagelynn.baek
2018-11-01 14:21
-
Ubuntu SVN cleanup 안될 때
Ubuntu에서 svn 사용 중에 간혹 cleanup이 안될 때가 있습니다. 그럴 땐 다음과 같은 방법을 사용해보세요. Ubuntu Cleanup 에러 해결 방법 문제가 생긴 svn 폴더(checkout한 root 경로)로 이동 숨김폴더로 되어있는 ./svn 폴더로 이동 wc.db 파일있는지 확인 sqlite3 browser 설치(GUI 형태, CUI에서 나는 안되는 증상이 있었다.) sudo add-apt-repository ppa:linuxgndu/sqlitebrowser-testing sudo apt-get update && sudo apt-get install sqlitebrowser 데이터베이스 열기 버튼 클릭하여 wc.db 파일 열기 SQL 실행(Execute SQL) 탭에서 delete from work_queue 이라는 SQL문 작성. 위에 ▶ 버튼...
lynn.baek's profile imagelynn.baek
2018-10-17 17:59
-
Ubuntu SVN 추천 :: RabbitVCS 설치하기
기존에 Ubuntu 환경에서 svn으로 rapidSVN을 사용하고 있었습니다. 그런데 폴더나 파일에 직접 우클릭하여(tortoiseSVN 처럼) update나 commit등을 할 수 없기도 하고, 자꾸 svn이 꼬이는(?) 증상이 발생하여 svn을 다른 툴로 변경해보기로 했습니다. 그래서 찾아보던 중, RabbitVCS라는 svn이 tortoiseSVN와 비슷한 UI를 제공한다길래 사용해보았습니다. 아직 설치하고 checkout만 해본 상태인데, 확실히 rapidSVN보다는 편한 것 같습니다. Ubuntu에서 RabbitVCS 설치 다운로드 페이지 : http://wiki.rabbitvcs.org/wiki/download 우선 update를 한 번 진행해줍니다. sudo apt-get update RabbitVCS를 설치합니다. sudo apt-get install rabbitvcs-nautilus nautilus -q nautilus & 적용이...
lynn.baek's profile imagelynn.baek
2018-10-11 11:41
-
C/C++ 배열의 요소 개수 구하기
C/C++에서 배열의 요소 개수를 구하기 위해서 다음과 같은 매크로를 선언하여 사용할 수 있습니다. #define _countof(_array) sizeof(_array) / sizeof(_array[0])
lynn.baek's profile imagelynn.baek
2018-08-14 14:59
-
MFC 메인 다이얼로그 실행하자마자 숨기기
mfc 다이얼로그 기반 프로젝트에서 메인 다이얼로그를 실행하는 순간부터 숨기고 싶을 때가 있다. OnInitDialog에서 SHOW_HIDE로 숨기면, 깜빡이면서 다이얼로그가 잠깐 나타났다가 숨겨지게 된다. 그래서 그 방법 보다는 WM_WINDOWPOSCHANGING 메시지를 추가하여 다이얼로그를 숨기는 방법이 좋다. 헤더파일(.h) public: afx_msg void OnWindowPosChanging(WINDOWPOS* lpwndpos); 소스파일(.cpp) BEGIN_MESSAGE_MAP(CMyDialog, CDialog) ON_WM_WINDOWPOSCHANGING() END_MESSAGE_MAP() void CMyDialog::OnWindowPosChanging(WINDOWPOS* lpwndpos) { lpwndpos->flags &= ~SWP_SHOWWINDOW; CDialog::OnWindowPosChanging(lpwndpos); }
lynn.baek's profile imagelynn.baek
2018-08-14 14:31
-
MFC 다이얼로그 선언되지 않은 식별자입니다
mfc 다이얼로그 리소스를 추가하고, 클래스 파일을 생성했을 때, 다음과 같은 에러를 만나는 경우가 있다. 식별자 "IDD_XXXXX"이(가) 정의되어 있지 않습니다. 'IDD_XXXXX' : 선언되지 않은 식별자입니다. 이런 경우, 다이얼로그가 정의되어있는 resource 헤더를 추가해주면 해결된다. 소스에 다음 헤더를 추가해주자. #include "resource.h"
lynn.baek's profile imagelynn.baek
2018-08-14 14:31
-
MFC Control 배경(background) color 투명하게 바꾸기
mfc 다이얼로그는 기본적으로 바탕색이 회색입니다. 그런데 UI를 꾸미다보면 흰색 테두리가 있는 이미지를 자연스럽게 다이얼로그에 입히고 싶거나 할 때 다이얼로그 색을 흰색 바탕으로 해줄 수 있습니다. 헤더파일(.h) afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor); 소스파일(.cpp) BEGIN_MESSAGE_MAP(CLoadingDlg, CDialog) ON_WM_CTLCOLOR() END_MESSAGE_MAP() HBRUSH CLoadingDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); UINT nID = pWnd->GetDlgCtrlID(); switch (nID) { case IDC_STATIC_LOADING: case IDC_PIC_LOADING: pDC->SetBkMode(TRANSPARENT); hbr = (HBRUSH)GetStockObject(NULL_BRUSH);; break; } return hbr; }
lynn.baek's profile imagelynn.baek
2018-08-03 09:31
-
Unicode환경에서의 CString to LPWSTR
Unicode환경에서 CString을 LPWSTR로 형변환 하는 방법입니다. LPWSTR ConvertToUnicode(CString cString) { int nBufSize = cString.GetLength() + 1; LPWSTR lpws = new wchar_t[nBufSize]; if (lpws != NULL) { #if defined(_UNICODE) lstrcpy(lpws, cString); // If Unicode is defined, just copy the string. #else // mbstowcs() would work here as well... MultiByteToWideChar(CP_ACP, 0, cString, nBufSize, lpws, nBufSize * 2); #endif // _UNICODE } return lpws; // Caller must delete! }
lynn.baek's profile imagelynn.baek
2018-07-09 14:37
-
MFC 다이얼로그 아이콘 변경 및 추가
MFC 다이얼로그의 아이콘을 변경하고 추가하는 방법입니다. Source Code BOOL TestApp::OnInitDialog() { HICON hIcon = LoadIcon(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_MAIN_ICON)); //icon 변경 this->SetIcon(hIcon, FALSE); //icon 셋팅 }
lynn.baek's profile imagelynn.baek
2018-06-20 13:26
-
MFC 프로그램 중복 실행 방지
MFC 프로그램의 중복 실행을 방지하는 방법입니다. Dialog base 프로젝트도 [프로젝트명].cpp 파일의 InitInstance() 에 코드를 삽입해 줍니다. Source Code BOOL CTestApp::InitInstance() { HANDLE hMutex = NULL; hMutex = CreateMutex( NULL,TRUE, _T("mtx_running_test_app")); if ( GetLastError() == ERROR_ALREADY_EXISTS ) { AfxMessageBox(_T("프로그램이 이미 실행 중입니다.")); } }
lynn.baek's profile imagelynn.baek
2018-06-20 11:49
-
MFC 윈도우 최상위에 나타나도록 설정
MFC 윈도우를 최상위에 나타나도록 설정하는 방법입니다. ::SetWindowPos(GetSafeHwnd(), HWND_TOPMOST , 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
lynn.baek's profile imagelynn.baek
2018-06-19 18:19
-
[링크] Visual C++ 버전별 재배포 패키지 런타임 다운로드
Visual C++ 버전별 재배포 패키지 런타임 다운로드에 관련하여 잘 정리된 사이트입니다. http://zypper.tistory.com/85
lynn.baek's profile imagelynn.baek
2018-06-19 14:44
-
[스크랩] MFC 트레이 아이콘 잔상 없애기
출처 : http://cpueblo.com/programming/api/contents/197.html Source Code struct TRAYDATA { HWND hwnd; UINT uID; UINT uCallbackMessage; DWORD Reserved[2]; HICON hIcon; }; static HWND FindTrayToolbarWindow() { HWND hWnd_ToolbarWindow32 = NULL; HWND hWnd_ShellTrayWnd; hWnd_ShellTrayWnd = ::FindWindow(_T("Shell_TrayWnd"), NULL); if (hWnd_ShellTrayWnd) { HWND hWnd_TrayNotifyWnd = ::FindWindowEx(hWnd_ShellTrayWnd, NULL, _T("TrayNotifyWnd"), NULL); if (hWnd_TrayNotifyWnd) { HWND hWnd_SysPager = ::FindWindowEx(hWnd_TrayNotifyWnd, NULL, _T("SysPager"), NULL);// WinXP // WinXP 에서는 SysPager 까지 추적 if (hWnd_SysPager) hWnd_ToolbarWindow32 = ::FindWindowEx(hWnd_SysPager, NULL, _T("ToolbarWindow32"), NULL); // Win2000 일 경우에는 SysPager 가 없이...
lynn.baek's profile imagelynn.baek
2018-06-19 10:31
-
[스크랩] MFC 프로그램 안전하게 종료하는 방법
출처 : https://blog.naver.com/ziralist/8325535 응용 프로그램을 종료한다는 의미는 해당 프로그램의 가장 기본이 되는 윈도우를 종료 시키는 것과 같다. 따라서 MFC로 작성한 응용 프로그램의 기본 골격이 되는 윈도우는 CFrameWnd(CWnd, CDialog) 계열의 클래스일 것이고 이 윈도우를 종료 시키면 응용 프로그램은 종료하게 된다. 기본 골격이 되는 윈도우를 종료하는 가장 일반적인 방법은 해당 윈도우에 WM_CLOSE 메시지를 전달하면 된다. 이 메시지가 Main Frame 윈도우에 전달되면 처리기가 OnClose 함수를 호출하게 되고 OnClose함수는 저장하지 않은 작업을 저장하도록 요구하며 프로그램을 종료 시킨다. 아래의 코드는...
lynn.baek's profile imagelynn.baek
2018-06-19 10:31
-
[스크랩]MFC에서 UI Thread를 이용한 Dialog 호출 방법
http://aladdin07.blog.me/150074142378 1.목적 메인 프로그램에서 메뉴 항목을 선택하면 별도의 Dialog가 생성되어 거기서 정보를 입력 받는다. 단, 메인프로그램과 생성된 Dialog는 상호 독립적으로 구동되어야 한다. (즉, 메인프로그램에서 DoModal()로 Dialog를 구동시키지 않고 별도 Thread로 구동 시켜야 한다) 2.방법 CWinThread Class를 활용한다. Class Wizard를 사용하여 CWinThread를 Base Class로하는 Class(CDlgThread)를 정의한다. Header File(DlgThread.h)에는 DECLARE_DYNCREATE(CDlgThread); Source File(DlgThread.cpp)에는 IMPLEMENT_DYNCREATE(CDlgThread ,CWinThread) ClassWizard에 의해 자동으로 추가됩니다. DlgThread.h를 수정한다. protected로 정의된 Constructor DlgThread()와 Deconstructor ~DlgThread()를 public으로 바꾸어 준다. (이유는 해보면 안다) public: DlgThread(); ~DlgThread(); Dialog...
lynn.baek's profile imagelynn.baek
2018-06-15 15:49
-
void*에 구조체 넘기기
void*에 구조체를 넘기는 방법입니다. #include <stdio.h> typedef struct{ int b; }STRUCT_A; void test_func(void * d){ int a; a = ((STRUCT_A*)d)->b; printf(""); } void func(void *c){ printf(""); test(c); } int main(void){ STRUCT_A a; a.b = 7; func(&a); printf(""); return 0; }
lynn.baek's profile imagelynn.baek
2018-05-11 09:42
-
Ubuntu 64bit에서 32bit 바이너리 실행하기
http://blog.northfield.ws/32bit-chroot-environment-on-64bit-ubuntu/
lynn.baek's profile imagelynn.baek
2018-04-16 15:01
-
Ubuntu에서 CURL 라이브러리 설치하기
Install $sudo apt-get install libcurl4-openssl-dev Code::Blocks에서 라이브러리 링크 링크 옵션에 다음과 같이 옵션을 준다. -lcurl
lynn.baek's profile imagelynn.baek
2018-04-16 14:06
-
실행 중인 프로세스 리스트(Process List)가져오기
실행 중인 Process List를 가져와서 Process ID와 Process Name을 stl map에 저장하여 리턴 해주는 함수입니다. Source Code #include <iostream> #include <map> #include <string> #include <Windows.h> #include <Tlhelp32.h> using std::map; using std::string; map<DWORD, string> EnumProcs() { map<DWORD, string> m; HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if (snapshot != INVALID_HANDLE_VALUE) { PROCESSENTRY32 pe32 = { sizeof(PROCESSENTRY32) }; if (Process32First(snapshot, &pe32)) { do { m.insert(map<DWORD, string>::value_type(pe32.th32ProcessID, string(pe32.szExeFile))); } while (Process32Next(snapshot, &pe32)); } CloseHandle(snapshot); } return m; } int main()...
lynn.baek's profile imagelynn.baek
2018-04-13 13:49