728x90
300x250

[컴퓨터(PC활용)] 데이터로 살펴보는 날씨 - (1/2) (2019년)]

 

데이터로 살펴보는 날씨에 대해서 다뤄보고자 한다.

프로그래밍 언어 자바(Java), 마이크로소프트 오피스 (엑셀VBA)

* 소개

데이터로 살펴보는 날씨에 대해서 소개하고자 한다.

 

 


* 2부에서 만나요.

[컴퓨터(PC활용)] 데이터로 살펴보는 날씨 - (2/2) (2019년)], 2021-04-02 22:57
http://yyman.tistory.com/1524

 

반응형
728x90
300x250

[JSP] 7. JSP, Servlet(JDBC) 프로그래밍

 

간결하고 쉽게 작성해보았다.

일반 게시판에서 사용되는 페이징 기법은 제거하고 JSP, Servlet(서블릿) 사용 방법에 대해서 소개한다.

(I tried to write concise and easy.)

(Removes the paging technique used in general bulletin board and introduces how to use JSP, Servlet.)

 

 

* Apache Tomcat-9.0.27
* Microsoft Windows 10
* MariaDB 10.4

 


1. 아파치 톰캣 실행하기

 

톰캣을 실행한다. startup.bat 배치 파일을 실행하면 된다.

(Run Tomcat. Just run the startup.bat batch file.)

 

 

Figure 1) Tomcat folder

그림 1) 톰캣 폴더의 모습

 

 

Figure 2) Tomcat external library folder

그림 2) 톰캣 외부 라이브러리 폴더

 

"C:\apache-tomcat-9.0.27\lib"는 tomcat의 서블릿, DBCP, Catalina 등이 담겨져 있는 라이브러리 폴더이다.

("C:\apache-tomcat-9.0.27\lib" is a library folder containing tomcat's servlets, DBCP, Catalina, and so on.)

 

 

Figure 3) Tomcat run

그림 3) 톰캣 실행의 모습

 


2. 이클립스의 모습(Eclipse)

 

이클립스 웹 작업에 있어서 가장 중요한 것은 아무래도 환경설정을 꼽겠다.

(Perhaps the most important thing when working with Eclipse web is configuration.)

 

 

Figure 4) Programming work in Eclipse

그림 4) 이클립스에서의 프로그래밍 작업 모습

 

 

 

Figure 5) Adding "MariaDB-Java-client-2.4.4.jar" and "Tomcat Jars" to Libraries tab in Java Build Path

그림 5) Java Build Path에 Libraries 탭에 "MariaDB-Java-client-2.4.4.jar", "Tomcat Jars" 추가 모습

 

[첨부(Attachment)]

mariadb-java-client-2.4.4.jar

 

초기 작업할 수 있도록 프로젝트 파일도 첨부해서 올려놓도록 하겠다.

(We will also attach a project file for the initial work.)

 

[첨부(Attachment)]

Stone.z01

Stone.z02

Stone.z03

Stone.zip

 


3. HeidiSQL 10.2.0.5599에서 게시판 DB 설계하기(Designing board DB in HeidiSQL 10.2.0.5599)

 

예제에 사용한 게시판 DB 설계를 하였다.

가볍게 따라서 작성하면 될 것이다.

(Designed bulletin board DB used in the example.)

(Simply follow along.)

 

 

Figure 6) "board_list" Board Design Example

그림 6) "board_list" 게시판 설계의 예

 


4. 프론트엔드에서 사용자 접속의 예(Example of User Connections at the Front End)

 

아래의 그림은 프론트엔드에서의 웹 사이트이다.(The figure below shows a Web site at the front end.)

http://localhost:8080/Stone/Board/list.jsp

http://localhost:8080/Stone/Board/write.jsp

 

Figure 7) Example of list.jsp

그림 7) list.jsp의 예

 

 

Figure 8) Example of write.jsp

그림 8) write.jsp의 예

반응형
728x90
300x250
[프로그래밍 퀴즈(Quiz)] 프로그래밍 기초 퀴즈(C++)


초급적인 문제입니다.



(입력1)


입력

출력

12345

5,4,3,2,1



(소스코드)


#include <iostream>
#include <string>
#include <vector>
#include <math.h>

using namespace std;

vector<int> solution(long long n) {
    vector<int> answer;
    string strNumber;

    long long conversionNumber;
    int div = 10;
    int size = 0;
    int tmp = n;

    while (tmp > 0) {

        tmp = tmp / 10;
        size++;
    }

    strNumber = to_string(n);

    while (size > 0) {

        conversionNumber = std::stoll(strNumber.substr((size - 1), 1));
        //cout << strNumber.substr( (size - 1), 1) << endl;
        answer.push_back(conversionNumber);
        size--;
    }

    return answer;
}

int main() {

    solution(12345);

}


반응형
728x90
300x250

[MFC] 윈도우 프로그래밍 기초 - (라디오 버튼) + 그룹박스

 

정말 쉽습니다.

 

http://yyman.tistory.com/506 / [MFC] 윈도우 프로그래밍 기초 - 체크 박스 + 버튼 응용 실습 예제

 

오늘 글의 초점은 아래의 결과물을 만드는 것입니다.

 


1. 결과물

 

결과물 먼저 볼까요?

 

 


2. 실습

 

a. 레이아웃 디자인

 

 

 

 

 앞에 글의 레이아웃 모습

 우리가 만들 레이아웃

 

현명하고 지혜로운 사람들은 잘 아시겠지만, 기존꺼 그대로 이어서 하시면 됩니다.

Radio 박스 레이아웃 설계만 하나 알려드리겠습니다.

 


a-1) Radio 박스 설계

 

* 이해를 위한 큰 나무 보기

 

 

* 주의사항 - Radio 박스는 체크박스 컨트롤과 달리 Group 항목을 설정해주지 않으면,

CButton 클래스 형식의 맴버 함수를 만들 수 없습니다.

추가된 라디오 버튼들을 하나씩 선택하여 속성 창에 있는 속성 항목에서 Group 항목을 True로 변경해야 합니다.

 

전 귀찮아서 위의 그림처럼 전체 다 선택했습니다. 그래도 상관없습니다.

 

 

 

 Group -> False 항목을

 

 True로 바꿔주고 변수 추가합니다.

 

 

컨트롤 ID 

 변수명

 Control 유형

 범주(T)

 변수 유형

 IDC_RADIO1

 m_RadioButton1

 라디오 박스

 Control

 CButton

 IDC_RADIO2 

 m_RadioButton2 

 라디오 박스 

 Control 

 CButton 

 IDC_RADIO3

 m_RadioButton3

 라디오 박스

 Control

 CButton

 IDC_STATIC1 

 

 그룹박스

 

 

 IDC_STATIC2 

 

 그룹박스

 

 

 

추가해서 만들 아이템의 구성요소입니다.

다 만들고 나면, 다시 Radio 1, 2, 3을 선택합니다.

 

아래와 같이 설정합니다.

 

 

 

 

 Group -> True 항목을

 

 False로 바꿔줍니다.

 

그러면 Radio 버튼 설계는 끝났습니다.

 


b. 코드

 

 

 

 (사용자 프로젝트명)ControlDlg.cpp

 

 

 

 

  (사용자 프로젝트명)ControlDlg.cpp 내에 BOOL CMFCControlDlg::OnInitDialog() 내부에 구현

 지난 번 강의에선 SetDlgItem( )로 컨트롤 Caption을 변경하였는데,

 이번에는 우리가 만든 변수를 직접 접근하여 변경하는 방법을 넣었습니다.

 같은 동작을 하니깐 오해하지 말고 두 가지 방법이 있구나 이 정도로 아셨으면 합니다.

 

 

 

 void CMFCControlDlg::OnBnClickedButton1()
 {
        // TODO: 여기에 컨트롤 알림 처리기 코드를 추가합니다.

         CString szMsg_Name;
         CString szMsg_Menu;
         CString szMsg;

 

         if (m_CheckBox1.GetCheck() == BST_CHECKED)
         {
              GetDlgItemText(IDC_CHECK1, szMsg_Name);
              szMsg_Name.Append(_T("님\n"));
         }

         else if (m_CheckBox2.GetCheck() == BST_CHECKED)
         {
              GetDlgItemText(IDC_CHECK2, szMsg_Name);
              szMsg_Name.Append(_T("님\n"));
         }

         else if (m_CheckBox3.GetCheck() == BST_CHECKED)
        {
              GetDlgItemText(IDC_CHECK3, szMsg_Name);
              szMsg_Name.Append(_T("님\n"));
        }

 

         // 추가 - Radio 예제

        if (m_RadioButton1.GetCheck() == BST_CHECKED)
        {
              //GetDlgItemText(IDC_RADIO1, szMsg);
               m_RadioButton1.GetWindowTextW(szMsg_Menu);
               szMsg_Menu.Append(_T("- 요리 형"));
        }

         else if (m_RadioButton2.GetCheck() == BST_CHECKED)
        {
              //GetDlgItemText(IDC_RADIO2, szMsg);
               m_RadioButton2.GetWindowTextW(szMsg_Menu);
               szMsg_Menu.Append(_T("- 요리 형"));
         }

 

          else if (m_RadioButton3.GetCheck() == BST_CHECKED)
         {
               //GetDlgItemText(IDC_RADIO3, szMsg);
               m_RadioButton3.GetWindowTextW(szMsg_Menu);
               szMsg_Menu.Append(_T("- 요리 형"));
         }

 

         szMsg_Menu.Append(_T("\n음식하세요."));

         szMsg.Append(szMsg_Name);
         szMsg.Append(szMsg_Menu);

         AfxMessageBox(szMsg);

 

 }

 (사용자 프로젝트명)ControlDlg.cpp 내에 void CMFCControlDlg::OnBnClickedButton1() 내부에 구현

 

 지난 번 글에서는 GetDlgItem( )로 컨트롤 Caption의 값을 CString 형 변수에 전달하였는데,

 이번에는 만든 변수를 접근하여 가져오는 방법을 넣었습니다.

 

 

구현 끝... 수고하세요.

반응형
728x90
300x250

[MFC] 윈도우 프로그래밍 - 대화 상자(Dialog)

 


1. Introduce

 

Dialog -> 영어시간에 많이 들어보셨을 겁니다.

 

 

Dialog Box는 응용 프로그램과 사용자의 의사소통을 하는 통로라고 설명할 수 있습니다.

 

 

 Figure 1) Visual Basic 6.0 (Visual Basic for Application으로 시연함)

 

대부분 Visual Studio의 C++ 모달 환경을 처음 접하게 되면, 프로그래밍을 접고 싶다는 생각을 종종할 수 있습니다.

왜냐하면, 초보자분들 입장에선 위에 그림과 같은 환경에서 개발하면 편하고 해볼만하다는 생각을 할 수 있습니다.

하지만, MFC는 조금 복잡합니다. 만져야 할 게 조금 있습니다. (코드 부분, 화면 부분, 컨트롤러 부분)

 

 

 

 Figure 2) 코드 환경 ( C++ MFC )

 

 

 

 

 Figure 3) 모달 영역

 

모달 영역은 모달 영역대로 분리되어 있습니다.

 


2. 큰 나무를 그려보면,

 

 

 

실제로는 별거 없습니다.

화면 작업이라는 영역은,

 

 

 

 리소스 뷰의 영역 -> Dialog

 

여러분이 만든 버튼의 이벤트 코드는?

 

 

 

 

 버튼 예시 - 실제 화면 캡처함

 이벤트 처리기 추가(A) 마법사

 

마법사를 이용하면, 자동 생성됩니다.

 

 

이벤트 마법사의 예 - 이미 추가된 이벤트 버튼이므로 '추가 및 편집'이 비활성화되어 있음.

 

 


3. 대화상자의 예를 소개합니다.

 

 

 

 

 

 Dialog의 예1) 인터넷 익스플로러 - 파일-> 열기

 Dialog의 예2) 실행 - Dialog

 

 

 

 

 Dialog의 예3) 파일 열기

 Dialog의 예4) 찾기 및 바꾸기

 

이렇게 많은 다이얼로그가 존재하는지 알았으면, 대화상자를 구현할 준비가 된 것입니다.

한번 일상 속에서 다이얼로그가 어떤게 존재하는지 탐구해보셨으면 합니다.

반응형
728x90
300x250

[MFC] 윈도우 프로그래밍 기초 - 팝업메뉴 만들기(리소스의 이해)

 

오늘 실습은 팝업 메뉴 만드는 방법에 대해 실습할 계획입니다.

실습과 더불어 간단하게 리소스의 큰 그림을 이해할 수 있도록 작성하였습니다.

 

 

 

 출력 결과

 


1. 프로젝트 생성하기

 

1. Visual Studio 2013을 켭니다.

2. 새 프로젝트를 만듭니다.

 

 

프로젝트 명은 Lecture로 하겠습니다.

 

3. 다음은 MFC 프로그램에 대한 기본 환경 설정입니다.

아래와 같이 설정하고 마침을 누르겠습니다.

 

 


2. 리소스 뷰에 대한 설명(숲 그리기)

 

2-1. 리소스란?

사전적 의미로 자원이란 의미를 가지고 있습니다.

전쟁으로 비유하면,

 

 

 

리소스는 위의 그림과 같은 관계가 될 수 있습니다.

 

Figure 2-1. <Source And Resource> - Relational Model

 

 

소스코드와 리소스는 각각 컴파일되어서, 소스코드는 *.obj로 변환되고, 리소스 파일은 *.rc로 컴파일이 됩니다.

이들이 Link 단계에서 결합 후에 Execution File로서 결합됩니다.

 

이번 실습에서의 큰 그림은 아래와 같이 소개할 수 있습니다.

 

 

2-2. 리소스 뷰

 

앞서 설명한 이야기를 이해하였으면, 실제 리소스가 MFC에서 어떻게 사용되는지 소개하겠습니다.

프로젝트를 앞서 생성했으면, 왼쪽에 리소스 뷰란 탭을 클릭하면 아래와 같은 창을 살펴볼 수 있습니다.

 

 

 

 

 리소스 뷰

 리소스 파일의 위치 (솔루션 탐색기)

 

리소스 파일 생성에 관해 말씀드리면, MFC 라이브러리를 이용하지 않는 프로그램이면 이용하면 리소스에 대해 관리가 될 수 있다고 보이나 MFC를 이용한 파일이면 굳이 자동으로 생성되는 만큼 별도로 추가 구성을 할 필요가 없습니다.

 

.rc라는 파일은 즉, 다수의 리소스를 모아놓은 하나의 집합이라고 정의할 수 있습니다.

 

2-3. 리소스 식별 접두어 (관례)

* 사용자 정의 리소스 식별 매크로의 접두어

 

설명

접두어

아이콘

IDI_

커서

IDC_

비트맵

IDB_

문자열 항목

IDS_ 또는 IDM_

메뉴

IDR_

메뉴 항목

IDM_

엑셀러레이터

IDR_

엑셀러레이터 키

IDM_

도구 모음

IDR_ 

도구 모음 버튼

IDM_

대화 상자

IDD_

컨트롤

IDC_

 

* MFC 내장 리소스 식별 매크로의 접두어

 

설명

접두어

아이콘 

AFX_IDI_

커서

AFX_IDC_

비트맵

AFX_IDB_

버전

VS_VERSION

문자열 항목

AFX_IDS_ 또는 ID_

메뉴 항목

ID_

엑셀러레이터

AFX_IDR_

엑셀러레이터 키

ID_

도구 모음 버튼

ID_

대화 상자

AFX_IDD_

컨트롤

AFX_IDC_ 또는 ID_

 

2-4. 리소스 뷰 간단하게 살펴보기

 

 


3. 실습(팝업 메뉴 만들기)

 

이번 실습은 "팝업 메뉴 만들기"라는 주제로 실습을 하겠습니다.

 

3-1. 메뉴 만들기

 

 

리소스 추가를 클릭합니다.

 

 

Menu를 선택하고 새로 만들기(N)을 클릭합니다.

 

 

 

3-2. 아래와 같이 메뉴를 꾸며주기.

 

 

 

 

 

 메뉴 구성하기

 리소스뷰 - 방금 만든 메뉴 리소스 ID 변경 -> IDR_POPUP

 

3-3. 클래스 뷰의 CMainFrame 설정하기

WM_CONTEXTMENU라는 영역에 OnContextMenu를 생성하는 방법을 실습해보겠습니다.

 

 

 

 

 

 

<Add> OnContextMenu를 클릭하면

MainFrm.cpp과 MainFrm.h의 파일에 자동 생성되어 구현할 수 있는 상태로 코드가 생성됩니다.

즉, MainFrm.cpp의 함수 원형을 변경할 경우, MainFrm.h 쪽도 저장하셔야합니다.

 

(참고)

 

 

 

 기본 생성된 MainFrm.h의 OnContextMenu 원형 구조

 

 

 

 

 기본 생성된 MainFrm.cpp의 구현 구조

 

3-4. 코딩하기

 

 
void CMainFrame::OnContextMenu(CWnd *pWnd, CPoint point)
{
      CMenu popup;
      CMenu* pMenu;

      popup.LoadMenuW(IDR_POPUP);
      pMenu = popup.GetSubMenu(0);

      pMenu->TrackPopupMenu(TPM_LEFTALIGN || TPM_RIGHTBUTTON, point.x, point.y, this);

}

수정) MainFrm.cpp

 void CMainFrame::OnContextMenu(CWnd *pWnd, CPoint point);

수정) MainFrm.h

 

(참고) 팝업 메뉴 소스코드 분석

 

* < LoadMenu() >의 원형

 

* BOOL CMenu::LoadMenu(LPCTSTR lpszResourceName) 

 

메뉴 리소스를 읽어오는 함수를 의미합니다.

 

* < GetSubMenu() >의 원형

 

* CMenu *CMenu::GetSubMenu(int nPos) const 

 

GetSubMenu() 함수는 메뉴 표시줄에서 하위 메뉴를 구하는 함수입니다.

즉, 구하고자 하는 함수의 하위 메뉴는 0부터 시작함.

 

 

* <TrackPopupMenu() > 의 원형

 

* BOOL CMenu::TrackPopupMenu( UINT nFlags, int x, int y, CWnd *pWnd, LPCRECT lpRect = NULL ) 

 

uFlags에는 여러가지 조합으로 사용가능

인수 uFlags에는 여러 가지 값을 조합하여 설정할 수 있는데, 팝업 메뉴의 정렬과 동작 설정 값을 비트 OR 연산자로 연결해 지정할 수 있음.

 

<팝업 메뉴의 정렬 설정 값>

값 

내용 

TPM_LEFTALIGN

팝업 메뉴를 지정한 위치에서 좌측 정렬 

TPM_RIGHTALIGN

팝업 메뉴를 지정한 위치에서 우측 정렬 

TPM_CENTERALIGN

팝업 메뉴를 지정한 위치에서 가운데 정렬

TPM_TOPALIGN

팝업 메뉴를 지정한 위치에서 위쪽 정렬

TPM_BOTTOMALIGN

팝업 메뉴를 지정한 위치에서 바닥 정렬

TPM_VCENTERALIGN

팝업 메뉴를 지정한 위치에서 수직 중앙 정렬

 

<팝업 메뉴의 동작 설정 값>

 

내용

TPM_LEFTBUTTON

마우스 왼쪽 버튼 클릭시 메뉴 수행

TPM_RIGHTBUTTON

마우스 오른쪽 버튼 클릭시 메뉴 수행

TPM_NONOTIFY

메뉴 항목이 선택되었을 때 통지 메시지를 보내지 않음

TPM_RETURNCMD 

메뉴 항목이 선택되었을 때 선택된 메뉴 항목의 ID를 반환 

 

* int x, int y

-> Point의 좌표 (eg: point.x, point y)

 

* pWnd

pWnd는 팝업 메뉴를 소유하고 있는 윈도우를 지정해주면 됨.

-> pWnd

 

3-5. 컴파일 해보기

마우스 오른쪽 버튼을 클릭해보면, 아래와 같이 정상 동작함을 확인할 수 있습니다.

 

 

반응형
728x90
300x250

[PC활용] 쉬운 IDE - Small Basic

이 프로그램은 Microsoft에서 학생을 대상으로 프로그래밍을 쉽게 접할 수 있도록 만든 프로그램입니다.


1. 소개



아래에 첨부된 Introducing Small Basic.pdf 파일은 69쪽으로 구성되어 있는 데 프로그래밍에 필요한 기본 문법은 다 적어놓았습니다.

[첨부(Attachment)]
Introducing Small Basic.pdf



위의 사진은 GraphicsWindow.Show()이라는 간단한 명령어에 의해 Window 창이 호출되는 사진입니다.


2. 프로그램 설치

 

en_SmallBasic을 내려받아서 설치하면 될 것입니다. 단, 윈도우 환경에서만 동작합니다.

[첨부(Attachment)]
en_SmallBasic.7z

사용 운영체제: Microsoft Windows 7, Vista 등.


3. 참고자료(Reference)

 

 

1. http://smallbasic.com/
2. http://www.microsoft.com/ko-kr/download/details.aspx?id=46392

반응형
728x90
300x250

[C#.NET] foreach 문
 

 

using System;
class Program
{

    static void Main(string[] args)
    {

        string[] studylang = { "C#", "Java", "Scala", "Powershell", "C", "Assembly", "XML" };

        foreach (string lang in studylang)
            Console.WriteLine(lang);

    }

}


데이터베이스 핸들링할 때 많이 사용합니다.
개념은 이렇습니다.

 C# Java Scala  Powershell  Assembly  XML 

studylang의 배열이 lang이라는 변수에 각각 한 번씩 들어가서 출력합니다.

반응형

+ Recent posts