2/27

  예전부터 살까말까 하다가 오토데스크 사가 만든 웹에서 3D 모델링을 하는 것을 보고

이 정도면 3D 프린터를 사서 뭔가 만들어 찍을 수 있을 것 같다는 생각이 듬

https://www.tinkercad.com/


알리익스프레스에서 3D 프린터 구매 220$에 구매

(지금 다시 아래 사이트에 가지 275$나 되었네 ^^;)

Updated Big size 220*220*240mm High Quality Precision Reprap Prusa i3 DIY 3d Printer kit with 2 Rolls Filament 8GB SD card & LCD

3/5


 관세

전날 관세를 지불하면 물건을 받을 수 있는다는 문자를 받고 아침에 페덱스에 전화해서 관세 지불

관세 지불하면 월요일에 물건 받을 수 있다고 했는데 당일에 처리해 주어 토요일에 받음

관세로 51,510원 지불


3D 프린터 도착

 개봉

 플라스틱 패널에 붙여있는 보호용 종이 뜯기

     생각보다 시간이 많이 걸림

 플라스틱 패널은 레이저 커팅을 했는지는 모르겠는데 전반적으로 깨끗하게 잘려있고 한 두군데 표면이 살짝 탄 곳이 있었음

 부품 중에 3D 프린트를 한 부품이 잘 동작할까 조금은 의심쩍었음(나중에 조립하거나 동작하는데 문제없었음)


3/6


 동영상을 보면서 조립시작

     처음에는 내가 동영상을 찍으면서 하려다가 4시간 정도 그렇게 작업하다가 도저히 귀찮아서 도중에 포기

     동영상을 보면서 하는데 대충 보고 조립하다가 3번 정도 다시 풀었다 조립함

     애들이랑 밖에서 놀아주다 조립하다가 놀아주다 하니 거의 하루 종일 걸림

     여하튼 조립은 일요일에 마침


 마지막에 보드에 각 케이블을 꽂는데 있어서 동영상 만 보고 이해하기가 조금 힘들었음

     어느 축이 X축이고 Y축이고 Z축인지 Extrude가 무엇인지 확인 작업이 필요했음

     (다른 사람들은 쉽게 이해하려는지 모르지만 난 힘들었음)


         핫베드를 앞뒤로 움직이는 축이 Y축

         출력을 하기 위해 노즐을 좌우로 움직이는 축이 X축

         노즐을 상하로 움직이는 축이 Z축

         필라멘트를 노즐에 밀어넣어주는 Extrue


 전원입력

     잘못 커넥터를 연결해서 기구적으로 망가지면 어떻게 하나 하는 생각이 들었음

     전원을 넣었는데 팬이 두개 달려있는데 한쪽만 동작해서 팬이 망가졌나 하는 생각이 들었음

         동작하지 않는 다른 팬은 실제로 인쇄할 때 동작함

     전원은 넣었는데 다음에 무엇을 해야할찌 멍해짐

     시간이 너무 늦어 작업 종료


3/7


 홈포지션 확인

   3D 프린터를 켜면 상당의 LED 패널에 정보가 표시된다.

   처음에 전원을 넣으면 LED 패널 프린터의 정보가 표시된다.

   가운데 버튼을 누르면 메뉴 버튼이 나오고 상하 버튼을 눌러서 Position을 선택해서

   Home X,Y,Z을 눌러서 각 축이 홈 위치로 이동하는데 각 축이 구동하는데 간섭이 없는지 확인한다.

   (로봇에 대한 개념이 없으면 홈 위치가 이해하기 쉽지않은데)


 핫배드의 높이 설정

   대충 맞춤


 드라이버 설치

   드라이버 설치는 했는데 다음에 무엇을 해야될지 모르겠음



 CURA 설치

   설치는 했는데 무엇을 해야할지 몰라 순간 당황했음

   설치관련 문서 중에 CURA 설정 관련 문서가 있어서 그것대로 했음


       왜 이것을 설정하는지 전혀 설명이 없음

       (영어를 읽어봐도 처음이라 전혀 감이 없었음 무엇을 위한 설정인지...)

       설정 중에 잘못된 설정도 있었음

          잘못된 설정으로 출력이 각축의 홈위치에서 시작해서 많이 당황함


        몇일이 지난 오늘(3/10) 생각해 보니 일반 프린터에서 출력할 때에도 용지 선택을 하듯이

        CURA에서도 프린터에 대한 설정, 필라멘트에 대한 설정이 필요한 것이 좀 감이 왔다.



   그 다음에 무엇을 해야할지 몰라 또 당황했음

   (3D 프린팅을 한번도 해보적이 없는 쉽지 않았음)

   CURA에 샘플 파일을 열어서 출력 버튼을 찾아봤지만 없었다.


 필라맨트

   필라맨트를 Extrude 모터에 있는 구멍에 꽂기

   (처음에는 꽂지도 않고 출력함 : 종이를 넣지도 않고 프린트하는건데 -.-)


 SD카드로 첫 출력


   SD 카드에 출력하는 버튼이 있어서 눌렀더니 SD 카드에 출력 파일이 만들어짐

   마이크로 SD 카드를 3D 프린터의 보드에 꽂고 3D 패널의 Print를 선택하여 SD 카드에 들어있는 프린트 파일을 선택한다.

   출력을 홈포지션에서 시작해서 홈에서 계속 왔다갔다 해서 정말 많이 당황함


   출력을 한다가 바로 출력되지않음 핫베드 온도를 70도로 올리고

   노즐쪽 온도를 200도 정도까지 올리고 나서 프린팅을 시작함

   (출력 시작했는데 움직이지 않아서 당황함)    


   평일이라 시간이 별로 없어 작업 종료



3/8


검색하면서 알게된 사실

Reprap Prusa i3는 오픈 소스 하드웨어라는 것을 알게되었다.

그래서 중국에서 이렇게 찍어 팔 수 있구나


 왜 홈포지션에서 출력하는지 인터넷 검색

    다 모르니 어떻게 검색할지를 몰름 -.-;;

    결국 알아낸 것은 CURA의 설정에서 출력 시작 포지션을 홈으로 설정해서 이 문제가 발생함

    검색하는데 시간이 너무 많이 걸림


 재출력 시작

     설정이 고치고 나서 출력이 핫베드 가운데서 부터 시작함

     투명한 필라맨트를 꽂아서 출력하는데 필라멘트가 녹아서 출력이 안됨

     검정 필라맨트를 꽂어사 다시 재출력

     갑자기 공중에서 출력되기 시작함

     (겨드랑이 털같은 첫 출력 작품 -.-;;)


 핫배드의 높이 설정

   대충 맞추었던 것을 다시 잘 맞춤

   Z 축의 홈 센서의 위치를 조정하여 Z축의 원점이 될때 노즐이 홈배드에 닿도록 함

   전원을 끈 상태에서 X축과 Y축을 움직여 가며 핫배드의 구석 구석이 노즐과의 간격이 동일하게 베드의 높이 조절 함

       (Z 축의 높이를 변경 스크류를 조정할 필요도 있었음)


 재출력 노즐 막힘

   핫베드와 Z축 높이를 제대로 맞추고 출력을 시작했다.

   노즐이 핫베드에 밀착해서 움직이기 시작하는데 필라멘트가 노즐에서 나오지를 않는다.

   왜지 왜지 왜지 궁금함을 가득 안은채 작업 종료


3/9


 노즐이 막혔을 때 어떻게 해야되는지 인터넷을 막 찾아봤다.

    참 찾기 힘드네 -.-

    동영상을 보내 노즐의 온도를 높이고 Extrude쪽 모터를 구동하면 된다고 한다.

    우선 Extrude쪽 모터를 분해하고 노즐쪽 온도를 240 높였다.

        LED 패널에 Extrude의 노즐에 온도를 조절하는 것이 있음

    그리고 바늘로 노즐을 콕콕 찔러 주었다.

    그러자 필라맨트가 녹아 내렸다.


    노즐이 막혔을 때는 필라맨트가 녹아내리지 않고 Extrude 모터에서 필라맨트를 노즐에 넣어려하는데 넣지 못하여 헛도는 소리가 난다.


 재출력 시작

     드디어 출력이 됨 3mm 정도의 높이를 쌓고 노즐이 또 막힘

     왠지 왠지 왜지 궁금함과 짜증을 가득 안은채 작업 종료



3/10


 새벽 6시에 일어나서 다시 3D 프린터를 켰다.

 문제가 뭘까 왜 노즐이 또 막혔을까?


 필라맨트 롤 옆에 보니 필라멘트를 높이는 온도가 씌여있었다.

 240~260도 였다.

 지금까지 출력할 때 온도는 200도였다.


 그럼 도대체 출력 온도는 어디서 정하는거지 한참 생각을 했다.

 CURA다 CURA에서 설정하는거 아닐까?


 맞았다. CURA였다.

 처음 설정 메뉴얼에 씌여있던 대로 입력했는데 그것은 200도였다. ㅜㅜ

 하기야 조금만 생각하면 생각할 수 있는 것일 수 있지만

 처음하는 사람에게는 이 온도가 뭔 온도인지 쉽지 않을 것 같다.


 지금까지 200도에 녹아져 내린 것이 신기하다.

 (아마도 노즐이 막혀서 필라맨트를 녹인다고 240로 맞추어 놓았다가

 출력을 해서 처음에만 온도가 높아서 출력이 된게 아닐까 싶다.)


 지금 생각해 보면 CURA가 프린터 설정이나 용지설정을 하는 프로그램이네

 오늘 저녁은 성공할 수 있을지 궁금하다.




드디어 성공했다.


성공하기 전에 한 작업

CURA에서 260도로 설정하고 핫배드도 80도로 설정했다.

내가 가지고 있는 프린터의 핫배드는 73도까지 밖에 안올라 감 다시 핫배드 온도 72도로 변경

CURA에서 260도로 설정해도 노즐에서 필라멘트가 잘 녹아 나오지 못함


좀더 얇은 핀으로 노즐의 온도를 올린 뒤에 쑤셨더니 필라멘트가 녹아 내림


그리고 출력을 했더니 드디어 샘플 로봇이 출력됬다.

(출력은 되었는데 아직도 노즐의 홈위치에서 노즐과 핫배드의 간격이 좀 문제가 있음)




여하튼 5일간 삽질한 결과 3D 프린터를 조금이나마 이해할 수 있는 시간을 갖게 되었다.

시간이 날때 다시 사진을 첨가해서 삽질한 이력을 다시 정리해야될 것 같다.



오늘 전시회에 가서 300만원짜리 3D 프린터를 봤는데 정말 품질의 차이가 많이 났다.

그 프린터는 후가공을 없이도 내 기준에서는 훌륭해 보였다.


우선은 이번에 산것으로 뭔가를 만들어 봐야지 ^^;;

    

   

   


Posted by 떡잎

이전에는 안드로이드를 이클립스에서 개발하는 것이 당연했다고 한다.

하기야 나는 어제부터 안드로이드를 시작해봐서 아는게 없고

안드로이드 스투디오도 나쁘지 않다고 해서 안드로이드 스투디오를 설치하는 것을 해본다.


http://d.android.com


위의 사이트에 가서 아래 방법대로 Android Studio를 다운로드 받는다.







다운로드 받은 파일을 실행하여 안드로이드 스투디오를 설치한다.

기본적으로 다음을 누르면 문제없이 안드로이드 스투디오가 설치된다.




경우에 따라 Android SDK를 별도로 먼저 설치한 경우에는 여기에서 Android SDK를 선택하지 않는다.

여기서 SDK는 최신 버전만 다운로드 하므로 기존 버전 대응을 한다면 별도로 해당 SDK 버전을 다운로드 해야된다.










이렇게 설치를 마친 후 안드로이드 스투디오를 실행한다.



처음 안드로이드 스투디오를 실행하면 이전에 개발환경이 있었다면 그 개발환경을 설정을 가져올 수 있다.

없다면 그냥 밑에 것을 선택한 채로 OK 버튼을 클릭하면 된다.





새로운 안드로이드 스투디오 프로젝트를 시작한다.



어플리케이션 이름을 주고

회사 도메인은 특별히 없으면 우선은 대충 적으면 된다.



여기서는 폰이나 타블렛을 선택하고 안드로이드의 어떤 버전까지 지원할 것인지를 선택하고 다음 버튼을 클릭한다.



Blank Activity를 선택하고 다름 버튼을 클릭한다.



엑티비티 이름을 변경하지 않는다면 그냥 마침 버튼을 클릭한다.



이렇게 하면 우선 최신 안드로이드 폰을 개발할 수 있는 환경을 갖추게 된다.

Posted by 떡잎

[C#] WCF 초간단 예제

2014.11.14 20:13



WCF(Windows Communication Foundation) 

나도 잘 몰라서 설명을 잘 못하겠다.

그래도 우선 아래 소스는 이해가 갔다.


프로세스간 통신을 하려면 이전에는 여러가지 방법이 있었다.

그런데 WCF는 그것을 간단하게(?) 해결하여준다.


WCF를 이해하기 위해서는 몇가지 알아야할 개념이 있다.

난 복잡한 것을 잘 모르니까 그냥 내가 이해한 대로 나를 위해 적어본다.


WCF로 프로세스간 통신을 하기위해서는 서버와 클라이언트가 필요하다.

WCF는 서버의 함수들을 클라이언트에서 호출할 수 있게 해준다.


서버의 함수를 클라이언트에서 호출을 할 수 있게 하기 위해서 해야되는 몇가지 작업이 있다.

우선 EndPoint라는 것을 서버에도 클라이언트에도 만들어주어야한다.

어떤 프로세스간 통신을 하더라도 서로 통신을 하기위해 무언가 준비해야된다.

WCF에서 프로세스간 통신을 하기위해서 반드시 필요한 것이 EndPoint이고

EndPont는 서버와 클라이언트간에 통신을 하기위한 양쪽 터널의 끝점같은 것이다.

양쪽 EndPoint를 제대로 설정해야 제대로 통신할 수 있다.


EndPoint는 ABC로 구성되어있다.

A는 Address, B는 Binding, C는 Contract로

Address는 어디에 접속할지를 설정한다.

Binding은 어떻게 접속할지를 설정한다.

Contract는 접속에서 무엇을 할지를 설정한다.


음... 설명하려했는데 이 설명으로 WCF를 이해하는 사람이 있으면 그 사람은 분명히 천재이다. ㅜㅜ

여하튼 WCF는 서버쪽 함수를 클라이언트 쪽에서 쉽게 호출할 수 있게 만들어 준다는 것만을 알아도 WCF를 반이상 안거라고 생각한다.


기본적으로 wCF 관련 자료를 인터넷에서 검색하면 이것저것 설정해야되는 것이 많은데 개인적으로는 아래와 같이 특별히 설정하지 않고 소스에서 Address나 Binding을 처리하는 것이 좋다.



WCF Server 쪽 소스


버튼 두개를 폼에 추가 한다.

솔루션 탐색기의 참조에서 오른쪽 클릭으로 참조 추가를 하여 선택하여

.NET 탭에서 System.ServiceModel을 선택하여 확인 버튼을 누른다.

그리고 소스를 열어 아래 내용들을 추가한다.



using System;
using System.Windows.Forms;

using System.ServiceModel;

namespace wcfSimpleServer
{
    public partial class Form1 : Form
    {
        ServiceHost host;

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {

            // Address 
            string address = "net.tcp://localhost:8080/myAddress";

            // Binding : TCP 사용
            NetTcpBinding binding = new NetTcpBinding();

            // Service Host 만들기
            host = new ServiceHost(typeof(MyService));

            // End Point 추가
            host.AddServiceEndpoint(typeof(IMyContract), binding, address);

            // Service Host 시작
            host.Open();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            // Service Host 종료
            host.Close();

        }
    }

    // Client 쪽에서 호출될 함수 Interface
    [ServiceContract]
    public interface IMyContract
    {
        [OperationContract]
        string Hello(string name);
    }

    // 실제로 Client에서 호출될 함수
    public class MyService : IMyContract
    {
        public string Hello(string name)
        {
            return "Hello " + name + "!";
        }
    }
}





WCF 클라이언트 쪽 소스


버튼 한개를 폼에 추가 한다.

솔루션 탐색기의 참조에서 오른쪽 클릭으로 참조 추가를 하여 선택하여

.NET 탭에서 System.ServiceModel을 선택하여 확인 버튼을 누른다.

그리고 소스를 열어 아래 내용들을 추가한다.




using System;
using System.Windows.Forms;

using System.ServiceModel;

namespace wcfSimpleClient
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            this.Text = "";

            ChannelFactory<IMyContract> factory = new ChannelFactory<IMyContract>();

            // Address
            string address = "net.tcp://localhost:8080/myAddress";
            factory.Endpoint.Address = new EndpointAddress(address);

            // Binding : TCP 사용
            factory.Endpoint.Binding = new NetTcpBinding();

            // Contract 설정
            factory.Endpoint.Contract.ContractType = typeof(IMyContract);

            // Channel Factory 만들기
            IMyContract channel = factory.CreateChannel();

            // Server 쪽 함수 호출
            string result = channel.Hello("World");

            // Close Channel
            ((ICommunicationObject)channel).Close();

            this.Text = result;
        }

        // Server 쪽 함수 호출용 Interface
        [ServiceContract]
        public interface IMyContract
        {
            [OperationContract]
            string Hello(string name);
        }
    }
}




서버쪽 프로그램 실행하여 버튼1 클릭하고

클라이언트쪽 프로그램 실행하여 버튼1 클릭하면 

클라이언트쪽 폼의 캡션에 "Hello World!"가 출력되면 성공


단언컨데 이 소스보다 간단한 WCF 소스는 별로 없을 것 같다.




Posted by 떡잎

Xcode에서 프로젝트 만들어서 간단한 프로그램을 만드는 것은 패스

구구단 2단 출력하는 소스스


ViewController.m 화일에 소스를 입력한다.

#import "ViewController.h"


@interface ViewController ()


@end


@implementation ViewController


- (void)viewDidLoad

{

    [super viewDidLoad];

    // 사용할 라벨 배열 정의

    UILabel *lb[9];

    

    for(int i=1; i < 10; i++){

        // 라벨 초기화

        lb[i] = [[UILabel alloc] init];

        // 라벨 위치 설정(라벨 x좌표, 라벨 y좌표, 라벨 , 라벨 높이)

        lb[i].frame = CGRectMake(10, i * 20, 400, 20);

        // 라벨 문자열 설정

        lb[i].text = [NSString stringWithFormat:

                      @" 2 * %d = %d", i, 2 * i];

        [self.view addSubview:lb[i]];

        

        self.view.backgroundColor = [UIColor whiteColor];

    }

}


- (void)viewDidUnload

{

    [super viewDidUnload];

    // Release any retained subviews of the main view.

}


- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

{

    return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);

}


@end


Posted by 떡잎

C#으로 ASP.NET 웹 응용 프로그램을 만들기

파일 > 새로 만들기 > 프로젝트 를 선택한다.

아래의 그림에서 ASP.NET 웹 응용 프로그램을 선택하고 이름에 적당한 이름을 넣고 확인 버튼을 누른다.

그러면 아래와 같은 화면이 표시된다.

Default.aspx에서 오른쪽 클릭을 하고 디자이너 보기를 선택한다.


그러면 웹 디자인 화면이 아래와 같이 표시된다.
그리고 Default.aspx에서 오른쪽 클릭을 하고 브라우저에서 보기를 선택한다.

그러면 아래와 같이 브라우저에 내용이 표시된다.


어느 버전부터는 잘 모르겠지만 IIS가 설치되어있지 않아도 바로 브라우저에서 볼 수 있다.
아래와 같이 개발 서버가 탑재되었다.






Posted by 떡잎

C#으로 WPF 응용 프로그램을 만들기

파일 > 새로 만들기 > 프로젝트 를 선택한다.

아래의 그림에서 WPF 응용 프로그램을 선택하고 이름에 적당한 이름을 넣고 확인 버튼을 누른다.

그러면 아래와 같은 화면이 표시된다.
WPF는 화면이 XAML로 되어있어 기존 폼 처럼 컨트롤을 가져다 놓을 수도 그리고 XAML 파일을 직접 변경해서도 작업할 수 있다.

도구 상자에서 버튼을 선택하여 폼에 버튼을 그려 넣는다.

라벨도 추가한다.
그러면 XAML에도 버튼과 라벨이 추가된다.

버튼을 더블 클릭하면 아래와 같이 버튼 클릭 이벤트에 대한 소스가 자동으로 만들어진다.

label1.Content = "Hello";

위 소스를 추가한다.
WPF에서는 윈도우 폼의 Text 속성이 Content로 바뀌였다.

실행 버튼을 누르면 아래의 화면이 표시된다.


버튼을 누르면 라벨에 Hello가 표시된다.




Posted by 떡잎

C#을 전혀 해보지 않은 상황에서 콘솔 응용 프로그램 만들어보기

이 예제는 윈도우즈 XP에서 Visual Studio 2010 Professional을 사용했다.

먼저 C#을 실행시킨다.


파일 > 새로 만들기 > 프로젝트 를 선택한다.


Visual C#을 선택하고 콘솔 응용 프로그램을 선택한 후에 적당한 이름을 넣고 확인 버튼을 누른다.

그러면 아래와 같이 소스가 자동으로 만들어진다.

C#에서는 아래와 같이 Con만 입력하더라도 아래의 그림과 같이 자동입력 기능이 지원되어 리스트에서 선택한 것이 자동으로 입력된다.

아래의 그림과 같이 Console.WriteLine("Hello"); 를 입력한다.
Console.WriteLine는 콘솔에 지정한 라인을 출력하는 함수이다.

빌드 > 솔루션 빌드 를 선택하여 빌드를 한다.

그러면 아래 그림과 같이 그림 아래의 출력창에 빌드에 대한 결과가 나온다.

그리고 실행 버튼 [] 을 클릭하면 프로그램이 실행된다.

이 프로그램을 실행하면 그냥 사라져 버린다.

이 것을 사라지지않고 콘솔에서 출력된 상태를 보려면 Console.WriteLine 줄 밑에 Console.ReadLine();을 추가하면 입력을 대기하기 때문에 출력 결과를 볼 수 있다.

그리고 아무 키를 입력하면 콘솔창이 사라진다.


using System;

namespace Hello
{
class Program
{
        static void Main(string[] args)
           {
        Console.WriteLine("Hello");
        }
}
}
 

위의 소스처엄 using을 사용하는 방법과 밑의 소스처럼 using을 사용하지 않고 직접 기술하는 방법도 있다.


//using System;

namespace Hello
{
class Program
{
        static void Main(string[] args)
        {
      System.Console.WriteLine("Hello");
        }
}
}







Posted by 떡잎

아파치, PHP, MySQL를 설치해봤다.
첨에는 아무것도 모르고 그냥 인터넷에서 뒤져서 깔아봤다.
제대로 알기 쉽게 씌여있는 곳을 못찾았다.
내가 검색 능력이 좀 부족한가보다.

이것저것 파일을 고쳐야된다고 씌여있었지만
막상 깔아보니까 아파치와 PHP를 얹히고 PHP에 MySQL은 연동하는 방법은
프로그램 설치만으로 끝났다.

설치한 버전
 Apache Ver 2.2.8
 PHP Ver 5.2.5
 mySql Ver 5.0.45
 
나중에 혹시 다시 깔찌 모르니까 간단히 정리해 놓는다.
버젼이 틀려지면 설치방법이 또 틀려질찌 모르겠지만
더 편해지는 것은 있어도 불편해 지는 것은 없겠지...

설치하는 순서는
 아파치 MySQL 그리고 PHP가 좋은 것같다.
 난 아파치 PHP 그리고 MySQL을 설치했지만...

  아파치 http 서버(Ver 2.2.8) 설치방법
  MySQL 5.0 Community Server(Ver 5.0.45) 설치방법
  PHP5 (Ver 5.2.5) 설치방법

위에 있는 방법대로만 하면 파일을 직접 건드리지 않고 모든 것을 다 설치할 수 있다.
그대신 웹서버에서 index.php같은것이 자동으로 표시는 안된다.

Posted by 띠리

이 아파치 서버 설치방법은 실운용을 위한 셋업이 아니고 웹서버를 한번 공부해보고 싶은 초짜를 위한 설치방법이다. 실운용을 위한 셋업을 알고 사람은 다른 사이트를 보는 것을 좋을 것같다.

사용자 삽입 이미지

아파치 홈페이지에서 Apache HTTP Server를 다운로드 한다.

apache_2.2.8-win32-x86-openssl-0.9.8g.msi 파일을 실행하여 셋업을 시작한다.

사용자 삽입 이미지

넥스트 버튼을 클릭하여 셋업를 시작한다.

사용자 삽입 이미지

동의를 선택하고 넥스트 버튼을 클릭한다.

사용자 삽입 이미지

시간이 많고 영어에 관심이 많은 사람은 한번 읽어주고 넥스트 버튼을 클릭한다.

사용자 삽입 이미지

localhost로 네트워크 도메인과 서버 이름에 입력하고
이메일 어드레스에는 대충 이메일을 입력한다.
실운용에서 사용되는 것이 아니기에 이런 설정의 각 의미는 나도 잘 모른다. -.-;;

사용자 삽입 이미지

Typical을 선택하고 넥스트 버튼을 클릭한다.
Custom을 선택을 안해봐서 어떤 것들이 나오는지 모르겠다.

사용자 삽입 이미지

Typical을 선택한 이유가 Typical에서도 설치 패스를 바꿀수 있어서 그냥 Typical을 선택했다.
체인지 버튼을 클릭하여 아파치가 셋업될 폴더를 선택한다.

사용자 삽입 이미지

체인지 버튼을 클릭하면 폴더를 선택하고 만들수 있는 위의 화면이 나타난다.
나는 웹관련된 프로그램을 D:\home에 몰아넣기 위해 설치 폴더를 바꾸었다.
폴더를 정하고 OK 버튼을 클릭하면 아래 화면이 나타난다.

사용자 삽입 이미지

넥스트 버튼을 클릭하여 다음 단계로 넘어간다.

사용자 삽입 이미지

인스톨 버튼을 클릭하면 인스톨을 시작한다.

사용자 삽입 이미지

인스톨을 시작하면 파일이 카피되며 아파치가 셋업된다.

사용자 삽입 이미지

셋업이 끝나면 위 화면이 나타나고 Finish버튼을 클릭하여 셋업을 끝낸다.

사용자 삽입 이미지

아파치 웹서버가 잘 셋업되면 오른쪽 하단의 시스템 트레이에 위의 아이콘같은 것을 볼수있다.

사용자 삽입 이미지

시스템 트레이의 아파치 아이콘에서 오른쪽 클릭을 하고 오픈 아파치 모니터를 선택하면 위의 아파치 서비스 모니터가 표시된다.
여기서 아파치 웹서버를 종료하거나 시작하거나 재시작할 수 있다.

사용자 삽입 이미지

아파치 웹서버가 제대로 동작하는지 보고 싶으면 웹브라우저에서 http://localhost/를 치거나
자신의 아이피 어드레스를 입력하면 위의 화면이 표시되면 문제없이 아파치가 설치된 것이다.

이 디폴트 페이지가 위치하는 패스는 아파치가 설치된 폴더 밑에 htdocs 폴더 밑이 root가 된다.
나의 경우는 아파치를 d드라이브의 홈폴더 밑에 깔아서 아래의 폴더가 root가 되었다.
 
  D:\home\Apache2.2\htdocs

이 root폴더는 Config 파일에서 바꿀수 있다.
Config 파일은 아파치가 설치된 폴더 밑에 conf폴더 밑에 있고 파일 이름은 httpd.conf 이다.

  D:\home\Apache2.2\conf

Config 파일에 보면 DocumentRoot "D:/home/Apache2.2/htdocs" 라는 것이 있다.
여기 쌍따옴표에 설정된 패스가 root가 된다.


참고용 httpd.conf
Posted by 띠리

윈도우가 없는 실행 파일을 만들려면 어떻게 하면 될까?
어제 좀 고민했었다.

인터넷에서 찾아봤는데 잘 안찾아졌었다.
너무 쉽고 너무 당연한거여서 인터넷에 올린 사람들이 없는가보다.
그래도 나같이 혹시 찾는 사람들이 있을까 해서 만들어본다.

윈도우가 없는 실행 파일을 만드는 법은 생각보다 쉬웠다.

새 프로젝트를 만들때 프로젝트 형식에서
다른 언어의 Visual C++를 선택해서 Win32를 선택한다.
템플릿의 Win32프로젝트를 선택해서
이름에 프로젝트 명을 쓰고 「확인」버튼을 누른다.
다시 「다음>」버튼을 누른다.
응용 프로그램 종류에서 Windows 응용 프로그램을 선택하고
□빈 프로젝트를 선택하고 「마침」버튼을 누른다.

Ctrl+Shift+A를 눌르면 새항목추가에서
C++파일을 적당한 이름을 주어 추가한다.
C++파일에 아래 소스를 붙여 넣는다.

(내 개발 환경은 지금 VS2005를 쓰고 있다.)

======================================================================

#include <windows.h>


int WINAPI WinMain(HINSTANCE hInstance,

                   HINSTANCE hPreInst,

                   LPSTR lpszCmdLine,

                   int nCmdShow)

{

    // 처리할 내용

    while(1)

    {

        Sleep(1);

    }


    return TRUE;

}


======================================================================

이렇게 하면 윈도우가 없는 프로세스를 만들 수 가 있다.

이 방법외에도 몇가지 더 있기는 한 것같다.

예를들어Win32콘솔 응용 프로그램을 선택해서 만들어도 되기는 하지만
Win32콘솔 응용 프로그램으로 실행 파일을 만들면 콘솔창이 한번 뜬다.
다른 프로세서에서 Win32콘솔 응용 프로그램을 실행시킬때 콘솔을 표시안하게 하는 법을 쓰면 되기는 하젰지만...

아니면 서비스로 만들거나 COM으로 만들 수 도 있나보다.
Posted by 띠리
BLOG main image
프로그래밍 공부하면서 써가는 개인 노트 (따라서 여기에 씌여있는 소스의 신빙성을 보장 못함 -.-;;) 이 블로그 보면서 틀린 점이 있으면 꼬옥 알려주세요. by 띠리

공지사항

카테고리

분류 전체보기 (323)
Win32 SDK 초보 (27)
통신관련 (11)
MFC TIP (20)
C/C++ TIP (10)
개발기타 (10)
링크 (2)
견물생심 (24)
이것저것 (8)
용어메모 (3)
데이터베이스 (32)
비주얼 베이직 (10)
하드웨어 (3)
C# (42)
Xcode (3)
델파이 (82)
홈페이지 (5)
MindStorm (0)
낙서 (5)
스크래치 (0)
기타 (6)
아두이노 (1)
라즈베리파이 (2)
안드로이드 (6)
파이썬 (0)
WEB (2)
Total : 964,050
Today : 65 Yesterday : 370