728x90
300x250
[MS C++(MFC)] Visual C++ 샘플 사이트 소개 및 백업 안내

 

소개하고자 하는 사이트는 Microsoft에서 공식적으로 배포하고 있는 Visual C++ 샘플에 관한 페이지이다.

(The site I want to introduce is a page about the Visual C ++ samples that are officially distributed by Microsoft.)

https://docs.microsoft.com/ko-kr/cpp/overview/visual-cpp-samples?view=vs-2019

 

 

 

그림 1) MS Doc 공식 홈페이지

 

MFC 샘플 페이지를 보면, MSDN 코드 갤러리라는 페이지가 사용 중지될 예정이라고 코드를 백업하라는 메시지가 출력되어 있다.

Visual Studio 2019에서 C++ MFC를 사용해보면, 리소스(Resource) 부분에서 오류가 발생해서 튕기는 경우가 자주 발생한다.

(In the MFC sample page, you are prompted to back up your code that the page called MSDN Code Gallery will be deprecated.

When using C ++ MFC in Visual Studio 2019, you'll often see errors and bounces in the Resource section.)

 

 

그림 2) MSDN 홈페이지

 

반응형
728x90
300x250

[GNU(리눅스)] 데비안, 우분투 국내 미러사이트(Debian, Ubuntu domestic mirror site)

 

데비안, 우분투 국내 미러사이트이다.(Debian and Ubuntu are domestic mirror sites.)

'/etc/apt/source.list'에서 변경할 수 있다. (You can change it in '/etc/apt/source.list'.)

 

번호

사이트 주소

OS

상태 

 확인

비고

1

 ftp.kaist.ac.kr

 

접속 안됨

2019-11-15 05:35

 

2

ftp.kr.debian.org

 

접속 안됨

2019-11-15 05:35

ftp.kaist.ac.kr로 연결되어 있음.

3

 http://mirror.kakao.com/debian/

데비안(Debian)

접속 가능

2019-11-15 05:37

 

4

http://mirror.kakao.com/debian-security/

데비안(Debian)

접속 가능

2019-11-15 05:38

 

5

 http://mirror.kakao.com/debian-cd/

데비안(Debian)

접속 가능

2019-11-15 05:38

 

6

 http://mirror.kakao.com/ubuntu/

우분투(Ubuntu)

접속 가능

2019-11-15 05:39

 

7

 http://mirror.kakao.com/ubuntu-releases/

우분투(Ubuntu)

접속 가능

2019-11-15 05:39

 

8

http://ftp.neowiz.com/ubuntu/

우분투(Ubuntu)

접속 가능

2019-11-15 05:41

 

9

 http://ftp.harukasan.org/

 

접속 가능

2019-11-15 05:41


10

 http://ftp.harukasan.org/debian/

데비안(Debian)

접속 가능

2019-11-15 05:44

 

11

http://ftp.harukasan.org/debian-archive/

데비안(Debian)

접속 가능

2019-11-15 05:45

 

12

http://ftp.harukasan.org/debian-cd/

데비안(Debian)

접속 가능

2019-11-15 05:45

 

13

http://ftp.harukasan.org/debian-cd-weekly/

데비안(Debian)

접속 가능

2019-11-15 05:46

 

14

 http://ftp.harukasan.org/debian-ports/

데비안(Debian)

접속 가능

2019-11-15 05:46

 

15

 http://ftp.harukasan.org/debian-security/

데비안(Debian)

접속 가능

2019-11-15 05:49

 

16

 http://ftp.harukasan.org/ubuntu/

우분투(Ubuntu) 

접속 가능

2019-11-15 05:51

 

17

 http://ftp.harukasan.org/ubuntu-cdimage/

우분투(Ubuntu) 

접속 가능

2019-11-15 05:51

 

18

 http://ftp.harukasan.org/ubuntu-ports/

우분투(Ubuntu)

접속 가능

2019-11-15 05:51

 

19

 http://ftp.harukasan.org/ubuntu-releases/

우분투(Ubuntu)

접속 가능

2019-11-15 05:51

 

20

 

 

 

 

 

21

 

 

 

 

 

22

 

 

 

 

 

23

 

 

 

 

 

 

반응형
728x90
300x250

[이야기(Story)] 웹 어플리케이션과 웹 프로그래밍([Story] Web Applications and Web Programming)

 

'웹 어플리케이션'은 웹을 기반으로 실행되는 어플리케이션을 의미한다.
('Web application' means an application that runs on the web.)

 

(그림 1). 웹 브라우저에 서비스를 제공하기 위해 필요로 하는 구성 요소들
(Figure 1). Components needed to provide services to a web browser)

 

그림 1에 표시한 구성 요소들은 웹 어플리케이션을 구축하는데 있어 기본이 되는 것들로서, 각 구성요소는 [표1]과 같은 역할을 수행하게 된다.

The components shown in Figure 1 are the basics for building web applications. Each component plays the role shown in [Table 1].

 

 구성 요소(Component)

역할(Roles)

 주요 제품들(Main products)

웹 서버

(Web server)

웹 브라우저의 요청을 받아서 알맞은 결과를 웹 브라우저에 전송한다.

만약 프로그램 처리가 필요하다면 어플리케이션 서버를 사용하거나 프로그램을 직접 호출하여 결과를 생성한다.

주로 정적인 HTML, 이미지, CSS, 자바 스크립트 파일을 웹 브라우저에 제공할 때 웹 서버를 사용한다. 

 

It accepts a request from a web browser and sends the appropriate result to the web browser.

If you need to process the program, use the application server or call the program directly to generate the result.

A web server is often used to serve static HTML, image, CSS, and JavaScript files to web browsers.

아파치(Apache), nginx 등 

어플리케이션 서버

(Application server)

게시글 목록, 로그인 처리와 같은 기능을 실행(처리)하고, 그 결과를 응답으로 웹 서버에 전달한다.

It executes (processes) functions such as post list and login processing, and sends the result to the web server in response.

PHP, 톰캣(Tomcat), JBoss 등 

데이터베이스

(Database)

웹 애플리케이션이 필요로 하는 데이터를 저장한다. 예를 들어, 회원 정보, 게시판 글 데이터 등을 저장한다.

Store the data required by the web application.

For example, it stores member information and bulletin board post data.

 오라클(Oracle), MySQL(MariaDB), MSSQL 등

웹 브라우저

(Web browser)

웹 서버에 서비스 실행을 요청하며, 웹 서버의 처리 결과를 사용자에게 보여준다.

Requests the service to the web server and shows the processing result of the web server to the user.

 인터넷 익스플로러(IE), 구글 크롬(Chrome), 파이어폭스(Firefox) 등

 

어플리케이션 서버도 웹 서버와 마찬가지로 정적인 HTML이나 CSS, 이미지 등을 제공할 수 있는데, 웹 서버에서 정적인 HTML과 이미지 등을 제공하고 어플리케이션 서버가 프로그램(기능)을 제공하는 이유는 성능 때문이다. 일반적으로 아파치와 같은 웹 서버는 정적인 HTML과 CSS를 제공하는데 초점이 맞춰져 있고, 톰캣이나 웹로직과 같은 어플리케이션 서버는 JSP, 서블릿과 같은 프로그램을 실행하여 결과를 제공하는데 초점이 맞춰져 있다.

(Like a web server, an application server can provide static HTML, CSS, and images.

The reason why a web server provides static HTML and images, and an application server provides a program (function) is due to performance.

 In general, web servers like Apache are focused on providing static HTML and CSS, and application servers like Tomcat and Web Logic are focused on running programs such as JSPs and servlets to provide results.)

 

[첨부(Attachment)]

webApplication.odp

 

반응형
728x90
300x250
[JSP] 4. 우분투 18.04(이하 "리눅스 환경")에서 개발하기?, WAR 배포하기 및 적용
([JSP] 4. Developing on Ubuntu 18.04 ("Linux Environment") ?, Deploying and Applying a WAR)


[개발(Development)]

개인적인 의견이지만, 윈도우 환경에서 개발 하는 것이 정신 건강에 이롭다.
(In my opinion, developing in a Windows environment is beneficial for mental health.)

개발 자체가 전혀 불가능한 건 아니지만 조금 그렇다.
(Development itself is not impossible at all, but a little.)



1. Eclipse WAS 배포파일 만들기(Create Eclipse WAS Distribution File)


* 1단계: File->Export를 클릭한다.
* 2단계: Web을 클릭한 후, WAR File을 클릭한다.

* 3단계: WebProject 위치와 Destination을 지정한 후 Finish를 누른다.
(Step 1: Click File-> Export.)
(Step 2: Click Web, then click WAR File.)
(Step 3: After specifying the WebProject location and destination, click Finish.)



그림 1) Export를 클릭한 후 War 파일을 클릭한 모습
Figure 1) Click on War file after clicking Export



그림 2) Export 화면
Figure 2) Export Screen


2. 웹 서버에 적용하기(Apply to web server)


사용한 명령어의 예는 다음과 같다.
(An example of the command used is as follows.)

$ mv helloWorld.war /var/lib/tomcat9/webapps
$ service tomcat9 restart




그림 3) 명령어 사용하는 모습의 예 - 도도(Dodo)
Figure 3) Example of Command Usage - Dodo

아래는 실제 WAR가 서버에 적용된 것이다. 참고하면 도움이 될 것이다.
(Below is the actual WAR applied to the server. Reference will help.)


그림 4) 웹 사이트에서 war 파일을 읽어온 모습
Figure 4) War file read from web site


3. 호기심이 생길 수 있는 질문 유형


Q1) Eclipse에서 배포 등에 사용되는 Server를 정의할 수 있는가?
      (Can I define a server used for deployment in Eclipse?)



그림 5) Servers의 "No servers are ..."을 클릭하기 전의 모습
Figure 5) Servers before clicking "No servers are ..."



그림 6) 아파치 톰캣이 존재하지 않는 모습
Figure 6) Apache Tomcat does not exist

반응형
728x90
300x250

[JSP] 3. Hello World - 실제 서버에 올리기(index.jsp) // Hello World-Post to Real Server (index.jsp)


실제 서버에 처음으로 index.jsp를 작성하여 올려보겠다.

리눅스 배포판은 우분투 18.04에서 진행하였다.

(Hello World-Post to Real Server (index.jsp)
Linux distributions was performed in Ubuntu 18.04.)



1. index.jsp 작성하기(Write index.jsp)


아래의 명령어처럼 입력한다.(Enter the following command.)



그림 1) index.jsp 생성하기
Fig 1) Create index.jsp


$ sudo nano /var/lib/tomcat9/webapps/ROOT/index.jsp


아래처럼 내용을 입력한다.



그림 2) index.jsp 내용 작성하기
Fig 2) Write the contents of index.jsp



2. 홈페이지 시연하기(Demonstrate homepage)


시연은 웹 사이트에 접속하면 간단하게 할 수 있다. (eg: 127.0.0.1:8080/index.jsp)
Demonstrations can be made simple by accessing the website (eg: 127.0.0.1:8080/index.jsp).


그림 3) 웹 페이지 시연
Fig 3) Web Pages demonstration

반응형
728x90
300x250

[JSP] 2. 우분투 18.04에서의 아파치, 아파치 톰캣 - 서버 경로, JSP란 무엇인가?

([JSP] 2. Apache, Apache Tomcat on Ubuntu 18.04-What is the server path, JSP?)


여는 글로 웹 디렉토리 경로에 대해서 정리해보고, JSP란 무엇인지 특징을 가지고 간단하게 소개한다.
(The opening article summarizes the Web directory paths and briefly introduces what JSP is.)

1. 아파치 2.4, 아파치 톰캣 9 디렉토리(Apache 2.4, Apache Tomcat 9 directory)


 Apache 2.4

 Apache Tomcat 9

 웹ROOT 디렉토리 : /var/www/html/
 CONF 디렉토리 : /etc/apache2
 LOG 디렉토리 : /var/log/apache2

 HOME 디렉토리 : /usr/share/tomcat9/

 CONF 디렉토리 : /etc/tomcat9/

 LOG 디렉토리 : /var/log/tomcat9/

 웹ROOT 디렉토리 : /var/lib/tomcat9/


2. "JSP란 무엇인가"에 대해서 잠깐 소개한다.
(Let's take a quick look at "What is JSP?")
'웹 어플리케이션'은 웹을 기반으로 실행되는 어플리케이션을 의미한다.
흔히 인터넷 익스플로러, 파이어폭스, 크로미니엄(크롬) 등의 웹 브라우저를 사용해서 사이트에 접속하며, 사이트에 접속한 결과를 웹 브라우저를 통해서 보게 된다.
('Web application' means an application that runs on the web.
You often access the site using a web browser, such as Internet Explorer, Firefox, or Chromium (Chrome), and see the results of accessing the site through a web browser.)

JSP는 JavaServer Pages의 약자로 스크립트 언어이다.
* 자바 언어를 기반으로 하는 스크립트 언어로서 자바가 제공하는 기능을 그대로 사용할 수 있다.
* HTTP와 같은 프로토콜에 따라 클라이언트의 요청을 처리하고 응답한다.
* HTML, XML 등 클라이언트가 요청한 문서를 생성하는데 주로 사용된다.
* 서블릿/EJB 등의 엔터프라이즈 기술들과 잘 융합된다.
* 표현언어, 표현식, 스크립트릿 등 다양한 스크립트 요소와 액션 태그 등을 제공함으로써 보다 쉽게 웹 어플리케이션을
  프로그래밍 할 수 있도록 도와준다.

JSP stands for JavaServer Pages. It is a scripting language.
(* A scripting language based on the Java language that allows you to use the features provided by Java.
* Processes and responds to client requests according to protocols such as HTTP.
* It is mainly used to generate documents requested by clients such as HTML and XML.
It integrates well with enterprise technologies such as Servlets / EJBs.
* Provides various script elements and action tags such as expression language, expression, scriptlet, etc. to help you program web application more easily.)


반응형
728x90
300x250

[JSP] 1. 우분투 18.04에서 아파치, 톰캣 9 설치하기(Installing Apache, Tomcat 9 on Ubuntu 18.04)


아래의 명령어로 아파치 환경과 아파치 톰캣 환경을 설치할 수 있습니다.
(You can install Apache and Apache Tomcat with the following command.)



1. Apache2 설치, Apache Tomcat 설치(Install Apache2, install Apache Tomcat)


아래처럼 설치하는 것을 패키지 설치라고 합니다.(Installation as below is called package installation.)


# sudo apt-get install apache2

# sudo apt-get install tomcat*



그림 1) 아파치 2.4 설치 진행 모습
Figure 1) Installation of Apache 2.4)



그림 2) 아파치 톰캣 9 설치 진행 모습
Figure 2) Apache Tomcat 9 installation progress



2. localhost(아파치 2.4), localhost:8080(아파치 톰캣)
    (Localhost (Apache 2.4), localhost: 8080 (Apache Tomcat))


아파치 2.4는 http://localhost에 접속해서 살펴볼 수 있으며, 아파치 톰캣은 http://localhost:8080에서 살펴볼 수 있습니다.

(Apache 2.4 can be found at 'http://localhost' and Apache Tomcat can be found at 'http://localhost:8080'.)



그림 3) 아파치 2.4 우분투에서 설치했을 때의 모습
Figure 3) Apache 2.4 installs on Ubuntu


그림 4) 아파치 톰캣 9를 설치했을 때의 모습
Figure 4) When Apache Tomcat 9 is installed



3. Apache 재단의 Apache httpd 사이트와 Apache Tomcat 사이트 접속하기
(3. Access the Apache Foundation's Apache httpd Website and Apache Tomcat Website)


apt에 의해 편리하게 설치를 하였지만, 수동 컴파일, 매뉴얼 등도 살펴볼 일이 있을 수 있기 때문에 소개합니다.
(Although it was installed by apt conveniently, it may be introduced to manual compilation, manual, etc.)


https://httpd.apache.org



그림 5) Apache 재단의 HTTP Server Project 공식홈페이지
Figure 5) Apache Foundation's HTTP Server Project Official Website


http://tomcat.apache.org


그림 6) 아파치 재단의 Apache Tomcat 공식 홈페이지
Figure 6) Apache Tomcat official homepage of Apache Foundation



4. 서버의 시작과 종료(Start Up and Shut Down the server)


서버의 시작과 종료는 간단한 명령어로 수행할 수 있다.(Starting and stopping the server can be done with simple commands.)


$(debian 스타일) - 우분투에서도 지원함. // $(debian style)-Also supported on Ubuntu.

# systemctl stop apache2

# systemctl restart apache2

# systemctl start apache2

$(ubuntu 스타일) // $ (ubuntu style)

# service tomcat9 stop

# service tomcat9 start

# service tomcat9 restart



5. 서버 포트 변경하기(Changing Server Ports)


아파치 서버 포트 바꾸는 방법과 아파치 톰캣 서버 포트를 바꾸는 방법에 대해서 소개합니다.

(How to change the Apache server port and how to change the Apache Tomcat server port.)


* 아파치에서 서버 포트 변경하기(Changing Server Ports in Apache)

 # /etc/apache2/site-enabled

 # nano 000-default.conf

 


* 아파치 톰캣에서 서버 포트 변경하기(Changing Server Ports in Apache Tomcat)

# sudo -i (debian에서는 su)
# /etc/tomcat*/
# nano server.xml
.......
Catalina 찾기 8080포트를 찾아서 변경해줄 것(Find Catalina Find port 8080 and change it)

 

 




6. 참고자료(Reference)


1. 주소와 포트 지정 (Binding) - Apache HTTP Server Version 2.4, Last Modified, Accessed by 2019-11-14, https://httpd.apache.org/docs/2.4/bind.html

2. java - How to change tomcat port number - Stack Overflow, Last Modified, Accessed by 2019-11-14, https://stackoverflow.com/questions/18415578/how-to-change-tomcat-port-number

반응형
728x90
300x250

[프로그래밍 퀴즈(Quiz)] C언어의 구조체 문제(Structure Problems in C Language)


구조체는 서로 관계가 있는 변수들을 한 데 모아 하나의 묶음으로 표현한 자료 형식을 말한다.

이러한 구조체는 여러 가지 상황에서 유용하게 쓰인다.

첫째로 함수는 하나의 값만을 리턴할 수 있지만, 구조체 변수를 리턴하게 되면 여러 변수의 값을 되돌리는 것도 가능하게 된다.

둘째로 다양한 자료구조의 표현이 가능하게 된다.


"스택(Stack), 큐(Queue), 트리(Tree)" 등을 만드는 데 있어서 구조체는 필수적이다.


구조체는 다음처럼 선언한다.


(A structure is a data format that represents a set of related variables.
This structure is useful in many situations.
First, a function can return only one value, but returning a structure variable also makes it possible to return the values of several variables.
Second, various data structures can be represented.

Structures are essential in creating "stacks, queues, and trees."

The structure is declared as follows:)


typedef struct{

      char name[30];

      int age;

} STUDENT;


typedef는 사용자가 임의의 문자열을 원하는 문자열로 치환해 주는 명령어이다.
(typedef is a command that replaces an arbitrary string with a string you want.)


typedef unsigned int UINT;

      UINT a;


struct는 이 변수들의 모음이 구조체임을 선언하는 것이다.

마지막의 STUDENT는 구조체 변수의 이름이다. 따라서 실제도 선언된 구조체를 사용할 때는 다음처럼 사용하면 된다.
(struct declares that this collection of variables is a structure.
The last STUDENT is the name of the structure variable. Therefore, when using a structure that is actually declared, you can use:)


STUDENT lee;

     lee.name = '이철수';

     lee.age = 22;


구조체 변수 안에 반드시 일반 자료형만을 넣을 수 있는 것은 아니다. 배열, 포인터, 구조체도 구조체 변수의 멤버로 선언할 수 있다.
(You can't just put generic data types in structure variables.
Arrays, pointers, and structures can also be declared as members of structure variables.)


* 구조체 연산(Structure operations)

구조체 변수를 사용할 때는 다음처럼 사용하면 된다. (When using a structure variable, use.)


STUDENT one;

     one.math = 100;

     printf("Math Score = %d", one.math);


(참고로 포인터는 C언어 카테고리에서 게시물을 확인할 수 있음. 찾아보기 바람.)

(Note that the pointer can be found in the C language category. Please browse.)


위와 같이 구조체 변수, 멤버 변수의 형태로 사용할 수 있다. 하지만 구조체 변수가 포인터 변수로 선언되었다면 다르게 사용해야 한다.


STUDENT *two;

     two->math = 100;
     printf("Math Score = %d", two->math);


typedef struct{
     char name[30];
     int kor, eng, math, total;
     float ave;
} STUDENT;

void main(void){
        STUDENT y, *py;

       
        py = &y;

        strcpy(y.name, "lee");

        y.kor = 100;
        y.eng = 90;
        y.math = 80;

        y.total = y.kor + y.eng + y.math;
        y.ave = (float)y.total / 3;

       printf("Name: %s\n", py->name);
       printf("Korean = %d\n", py->kor);
       printf("English = %d\n", py->eng);
       printf("Mathematics = %d\n", py->math);

       printf("Total = %d\n", py->total);
       printf("Average = %f\n", py->ave);
}


구조체 포인터를 매개 변수로 쓰는 방법(How to write a structure pointer as a parameter)

void func(STUDENT *one);


포인터 변수 선언하듯이 변수 앞에 *만 붙여주면 된다.(Just like * declares a pointer variable, just put * before the variable.)

반응형

+ Recent posts