전체 글 (195)

  • 2018.01.09
  • 2018.01.09
  • 2018.01.04
  • 2018.01.03
  • 2018.01.03
  • 2017.12.31
  • 2017.12.31
  • 2017.12.31
  • 2017.06.05
  • 2017.02.08
  • 2016.08.15
  • 2016.08.15
  • 01
    09

    서적에 주어진 예제는




    표시된 자동차를 스와이프하여, 깃발을 향해 달려나가게 하고,


    자동차는 점점 느려져 멈춥니다.


    깃발에 가까울 수록 고득점인 게임이에요.




    1단계 : 오브젝트의 나열


    - 🚙


    - 🏁


    - 지면


    - 떨어진 거리(안내문구)



    2단계 : 컨트롤러 스크립트(오브젝트를 움직인다)


    - 자동차에 적용할 스크립트



    3단계 : 제너레이트 스크립트(오브젝트를 생성한다)


    - 없음



    4단계 : 감독 스크립트(UI의 갱신)


    - 떨어진 거리



    5단계 : 스크립트를 만드는 흐름을 생각한다.


    - 자동차 컨트롤러를 만든 후 게임 씬 감독 스크립트를 만든다.





    이번 게임에서의 주된 과제는


    - 스와이프의 거리에 따라 자동차의 시작속도 결정 : 스와이프에 관한 코드


    - 텍스트로 이루어진 UI의 변동을 나타내는 방법


    - 뒷 내용을 보니 효과음도 들어간다고 하네요


    이렇게 세 가지가 될 것 같습니다.

    반응형
    COMMENT
     
    01
    09

    본인이 APK 파일을 생성하는 과정에서 발생한 오류를 해결한 방법 세 가지




    1.


    일단 경고창으로 


    gradle build failed. see the console for details


    뜨고 콘솔창을 확인하면


    package name has not been setup correctly


    메시지를 확인한 경우


    참고 : https://answers.unity.com/questions/162141/android-bundle-identifier-has-not-been-setup.html


    문제 : 패키지 이름의 잘못된 설정


    해결 : Player Setting - Other Settings - Package Name 의 수정


    과정 : [Ctrl + Shift + B]의 빌드 세팅 창에서 Player Setting으로 들어가 패키지 이름을 수정. 


    패키지 이름의 형태는 [com.개발팀명.앱이름]의 세 파트로 나눠진 형태를 따라야 하며, 알파벳/숫자/언더바(_)만을 사용 가능하다





    2.


    빌드 오류 후 콘솔창 확인


    unable to list target platforms. please make sure the android sdk path is correct


    참고 : http://www.devkorea.co.kr/bbs/board.php?bo_table=m03_qna&wr_id=79671


    문제 : 안드로이드 스튜디오 업데이트 과정에서 Unity가 사용하던 기능이 사라진 것으로 추정


    해결 : 안드로이드 스튜디오 SDK 설치폴더(C:\Users\user\AppData\Local\Android\Sdk) 내 tools 폴더를 다운그레이드한다.


    다운로드 : http://dl-ssl.google.com/android/repository/tools_r25.2.5-windows.zip


    과정 : 기존 tools폴더의 이름을 바꿔주거나 지워준 후 , 다운받은 압축파일 안의 tools 폴더를 기존 tools 위치에 대체한다.





    3. 


    빌드 오류 후 콘솔창 확인


    CommandInvokationFailure: Gradle build failed. 


    could not determine java version from '9.0.1' unity


    등의 메시지를 발견한 경우


    참고 : 여러곳. 유니티가 아닌 경우의 사례도 빈번.


    문제 : 아마도.... 유니티에서 최신 자바 버전과 연동이 잘 안된 듯 함.


    해결 : 자바의 다운그레이드.


    과정 : 자바 9.0.1 관련 제어판에서 삭제, 자바 8 버전 재설치






    이제.. APK 파일 빌드 됩니다 흑흑.....




    안드로이드 기기를 찾을 수 없다는 에러는 해결 못하고 미지수로 남은 상태여서 Build And Run은 하지 못하는 상태이구요...



    보통 이렇게 여러가지가 꼬인 상태면 해결 과정중에도 꼬이고 꼬여 실패했는데, 이번에는 어떻게 잘 넘겼네요

    반응형
    COMMENT
     
    01
    04

    평범하게 유니티 실행 후 2D로 프로젝트를 생성한다.



    생성 후, Project 탭의 Assets으로 리소스 파일(이미지 파일)을 Import한다. 불러온다.



    이게, 드래그해서 되는 줄 알았는데, 프로젝트 탭의 Assets 내에서 우클릭으로 Import해야 되는 것 같다...



    안드로이드에서 동작하는 게임을 만들도록 설정한다.


    [File - Build Settings] 메뉴로 들어가 플랫폼을 Android로 선택 후 밑의 Switch Platform 버튼을 눌러준다.



    본인의 안드로이드 기기에 맞도록 화면 크기도 설정 해 주자. 



    현재 사용하고 있는 씬(Scene)을 저장하자.


    [File - Save Scene as]를 선택 후 씬 이름을 작성 후 저장하자.


    저장 위치는 기본으로 설정된 Assets 으로 적당하다.




    씬에 오브젝트를 배치한다


    Project 탭에 불러왔던 리소스들(이미지들)을 씬에 드래그하여 배치하자.


    각 스프라이트(개체)를 선택 후 우측의 Inspector 탭에서 위치, 회전, 스케일 조절이 가능하다.


    포지션을 0, 0, 0 으로 맞춰주고 작업을 시작한다.



    메인 카메라를 선택 후 Inspector 탭에서 배경색을 바꾸어준다.






    원형 룰렛을 회전시킬 스크립트를 작성한다.


    스크립트 작성의 최종 목표는


    Assets 에서 우클릭 후 C# 스크립트를 생성한다.


    using System.Collections;

    using System.Collections.Generic;

    using UnityEngine;


    public class Kaiten : MonoBehaviour {


        float rotSpeed = 0; //회전속도

        

    void Start () {

    }

    void Update () {

            //클릭 시 회전속도를 10으로 바꾼다

            if (Input.GetMouseButtonDown(0))

            {

                this.rotSpeed = 10;

            }


            //룰렛을 회전시킨다

            transform.Rotate(0, 0, this.rotSpeed);

    }

    }


    작성한 코드는 마우스를 클릭했을 경우 회전속도 10으로 회전을 시작하도록 한다.


    스크립트 작성이 완료되었으면 유니티로 돌아와 스크립트 파일을 Hierarchy 탭의 Circle 객체로 드래그&드랍하여 스크립트를 적용한다.


    스크립트가 제대로 적용되었는지 확인한다.



    마우스가 녹화되지는 않았지만 화면을 마우스로 클릭 시 회전을 시작하는 모습이다.



    스크립트의 편집을 계속 진행 해 보자.



    룰렛을 감속시킬 것이다. 


    여기에서는 회전속도에 수시로 감속계수를 곱하는 방법으로 속도를 줄여 보자.



    using System.Collections;

    using System.Collections.Generic;

    using UnityEngine;


    public class Kaiten : MonoBehaviour {


        float rotSpeed = 0; //회전속도

        

    void Start () {

    }

    void Update () {

            //클릭 시 회전속도를 30으로 바꾼다

            if (Input.GetMouseButtonDown(0))

            {

                this.rotSpeed = 30;

            }


            //룰렛을 회전시킨다

            transform.Rotate(0, 0, this.rotSpeed);


            //룰렛을 감속시킨다.

            this.rotSpeed *= 0.99f;

    }

    }


    속도에 프레임마다 0.99가 곱해지며 속도가 줄어들게 된다.





    안드로이드 기기에서 실행 해 보자.



    안드로이드는 '터치'하는 구조이지만 스크립트에서 쓰인


    Input.GetMouseButtonDown(0)


    를 마우스때와 같이 사용할 수 있다.



    [File - Build Settings] 에서 Platform 이 Android로 스위치 되어있는 것을 확인 후 Player Settings를 클릭한다.


    Other Settings - Identifier 에 com.Company.Circle(프로젝트명)을 입력한다.


    Build Settings 창으로 돌아와 Build And Run을 클릭하면 Apk파일의 생성과 동시에 안드로이드 기기에 넣기를 같이 할 수 있다.

    (본인은 실패)




    /////////////////////이후 이 프로젝트는///////////////////


    반응형
    COMMENT
     
    01
    03

    tmp

    반응형
    COMMENT
     
    01
    03

    제어문(if문, if~else문, for문, while문)에 관한 내용은 간단한 설명으로 넘어가겠다.



    제어문은 주어진 조건이 참인 경우 명령을 수행하게 된다.



    예를 들어 if문의 경우


    if(조건) {

    명령1;

    명령2;

    또다른명령3;

    {


    if 다음에 있는 소괄호 안의 조건이 '참'이라면 중괄호 { } 안의 명령들을 수행하게 된다.


    if(내가 민수보다 강의실에 먼저 왔다) {

    민수가 앉을 자리를 맡아놓는다;

    민수의 커피도 준비한다;

    민수가 올 때까지 기다린다;

    {


    와 같이, 내가 강의실에 먼저 도착했을 경우 다음과 같은 명령들을 수행하게 되는 것이다.


    실제로 쓰이는 것처럼 바꿔본다면,


    if(A<B) {

    A = B+1;

    B = 0;

    }


    위 내용은 A가 B보다 작은 경우 A는 B보다 1 크게 만들어주고, 그 후 B는 0이 되도록 한다.



    else문은 if의 다음에 쓰여 if문의 조건이 거짓인 경우 사용한다.



    if(조건) {

    명령1;

    명령2;

    {

    else {

    명령3;

    명령4;

    }


    else문 오른쪽에는 소괄호 ( ) 가 붙지 않는다. else 속 중괄호 { } 의 명령이 수행되는 경우는 오직 if문 옆의 (조건)이 '참'이 아닐 경우 수행하게 된다.


    if(오늘도 민수보다 먼저 왔다) {

    민수의 자리를 맡는다;

    민수의 커피도 준비한다;

    민수가 올 때까지 기다린다;

    {

    else {

    민수의 옆자리에 앉는다;

    인사를 한다;

    }


    else문에 포함된 명령 두 개는 민수보다 먼저 오지 않는 경우 수행하도록 프로그램되어 있다.



    else if문은 if문 이후에 쓰인다.


    if(조건) {

    명령1;

    {

    else if(또 다른 조건) {

    명령2;

    }

    else if(또 다른 조건) {

    명령3;

    }

    else {

    명령4;

    }


    else if문은 if문 이후에 쓰인다.


    if문의 조건이 거짓일 경우 else문으로 내려가듯이, 이 경우는 if문의 조건이 거짓이면 else if문의 조건을 따지게 된다.


    else if문이 else문과 다른 점은 또 다른 조건이 붙는다는 것이고


    이게 참이라면 역시 중괄호 { } 안의 내용을 수행하게 된다.


    else if문의 조건이 거짓이라면 중괄호 안의 내용은 무시하고 다음 제어문을 진행하면 된다.


    else문은 없어도 상관 없다.


    if(오늘도 민수보다 먼저 왔다) {

    민수의 자리를 맡는다;

    민수가 올 때까지 기다린다;

    {

    else if(민수와 동시에 도착했다) {

    함께 자리를 찾아 앉는다;

    }

    else {

    민수의 옆자리에 앉는다;

    인사를 한다;

    }






    for문은 반복형 제어문이다.


    for(변수 초기화 ; 조건 ; 갱신내용) {

    명령;

    }


    변수 초기화 : int number=1; 과 같이 변수 선언과 그 값을 지정해준다.


    조건 : 참일 경우 중괄호 { } 안의 명령을 수행하도록 조건을 넣는다.


    갱신내용 : number++; 처럼 반복 한 차례가 끝날 때마다 갱신할 내용을 넣는다.



    for( 배속이 거지이다 ; 만족스럽지 못하다 ; 싸이버거를 먹는다 ) {

    불평을 한다;

    싸이버거를 주문한다;

    }



    초기 상태 : 배속이 거지이다.

    조건 : 만족스럽지 못하다 → 참일 경우 중괄호 { } 내의 명령을 수행한다.

    싸이버거를 먹는다 : 중괄호 내 명령을 수행한 후 행할 명령이다.


    불평을 하고

    싸이버거를 주문하고

    싸이버거를 먹은 후에


    다시 조건문으로 돌아간다.


    ' 나는... 만족스럽지 못한가...? '


    이것이 참일 경우 다시 불평을 하면 된다.


    만족스러울 경우에는 그 시점에서 for문을 종료하면 된다.



    조건문이 참이 아니게 될 때까지 이것을 반복하는 게 for문이다.


    숫자로 예를 들면


    for ( int number=0 ; number<10 ; number++ ) {

    Debug.Log("I have "number" Apples");

    }


    number가 하나씩 증가하며 0Apple부터 9Apple을 출력하는 콘솔창을 볼 수 있게 된다.




    while문은 for문보다 간단하다. 


    while(조건) {

    명령;

    {


    조건이 참인 경우 명령을 수행하며 반복하고 조건이 참을 유지할 경우 계속 반복해주면 된다.


    이 경우, while의 중괄호 { } 안에서 조건을 바뀌게 해주는 명령을 넣는 게 보통이다.


    조건이 바뀌지 않는다면... 무한반복을 하게 될 테니까...





    배열은 변수의 상위호환정도로 생각하면 되겠다.



    변수가 많이 필요한 경우가 있다.


    int number1;

    int number2;

    int number3;
    int number4;
    int number5;
    int number6;
    int number7;
    int number8;
    .

    .


    이런 경우를 포함한 프로그래밍의 단순화를 위해 고안된 것이 '배열'개념이다.


    예를 들어 정수형(int형) 배열의 선언은 다음과 같이 한다.


    int[] number = new int[100];


    여기에서 new는 새롭게 만든다, 마련한다 라는 뜻으로 쓰여 이것을 풀어 쓴다면


    int형 배열number에게 새로운 int형 자리 100개마련한다


    정도가 되겠다.


    위와 같은 문장으로 100개의 정수형 변수를 얻을 수 있고 각각 변수의 이름은


    number[0] 부터 number[99]가 된다.


    number[1]부터가 아님에 주의한다. number[100]은 존재하지 않음에도 주의한다.




    반응형
    COMMENT
     
    12
    31

    유니티에서 사용할 수 있는 스크립트 언어는


    - C#

    - 자바스크립트

    - Boo


    세가지이고, 실습에는 C#을 사용할 예정.




    1. 2D형의 새 프로젝트를 만든다.



    2. 스크립트 파일을 만든다.


    Project뷰에서 마우스 우클릭 후, [Create - C# Script]를 선택


    파일명은 Test로 만들어보자.



    3. 스크립트를 적용할 빈 오브젝트를 생성한다.


    Hierarchy 탭에서 우클릭하여 Create Empty 클릭하여 빈 오브젝트를 생성한다.


    생성했던 Test 스크립트 파일을 GameObject로 드래그 앤 드랍하여 스크립트가 적용되도록 한다.






     스크립트의 편집


    스크립트 파일(Test)의 더블클릭으로 스크립트 편집을 할 수 있다.



    // Use this for initialization 처럼 앞에 [//]를 붙이면 스크립트에 영향을 미치지 않도록 글을 쓸 수 있다.


    1행부터 3행은 유니티에서 스크립트가 동작할 수 있도록 써 주는 것


    5행은 Test 라는 클래스로 스크립트를 관리한다는 의미


    수정할 부분은 8행부터 10행 사이, 그리고 13행부터 15행 사이이다.



    8행~10행에는 스크립트가 시작할 때 '한 번만' 실행하는 명령을 넣고


    13행~15행에는 그 이후 반복적으로 실행할 명령을 넣는다.




    ※ Hello World를 출력하는 스크립트를 작성 해 보자 (파란 글씨 : 추가 또는 수정할 부분)


    void Start() {

    Debug.Log("Hello, World");

    }



    다음과 같이 Debug.Log() 함수는 텍스트를 출력해주는 함수이다.


    큰따옴표 ( " " ) 세미콜론 ( ; ) 과 괄호를 빠뜨리지 않도록 주의한다.


    수정하였으면 [Ctrl + S] 또는 [파일 - 저장]으로 저장해준다.


    유니티 에디터로 돌아와 Console 탭을 클릭 후 상단의 실행 버튼(▶)을 클릭한다.


    콘솔 탭에 Hello, World가 출력된 것을 확인할 수 있다.





    ※ 정수값을 넣을 변수 'number'를 생성 후 숫자값을 넣어 출력 해 보자


    void Start() {

    int number;

    number = 15;

    Debug.Log(number);

    }


    int 는 정수가 들어갈 자리(공간, 박스)를 만들어주고, number은 그 이름이다.


    number = 15; 에서 '='는 '같다' 라는 뜻이 아니다.


    우변의 15를 좌변의 number라는 변수에 대입해준다는 의미이다.


    Debug.Log() 는 마찬가지로 콘솔창에 내용을 출력하는 역할을 한다.


    Hello, World를 출력할 때와 다른 점은, Debug.Log(number) 처럼 변수 그 자체를 넣는 경우는 큰 따옴표( " " )를 넣지 않는다는 것이다.


    int : 정수형

    float : 부동소수점형

    double : 배정도소수점형

    bool : 참/거짓

    string : 문자열


    등 변수로 사용할 수 있는 형태는 여러가지가 있다.




    ※ 정수값의 변수를 이용해 연산을 해 보자


    void Start() {

    int number;

    number = 2 * 8;

    Debug.Log(number);

    }


    void Start() {

    int number1, number2;

    number1 = 3;

    number2 = 8;

    int number3 = number1 * number2;


    Debug.Log(number1 * number2);

    Debug.Log(number3);

    }


    위와 같이 변수끼리의 덧셈, 곱셈 등 사칙연산이 가능하다.


    여기에서 number들은 모두 int 정수형 변수로 선언을 하였으므로 정수값이 답으로 나오게 된다.


    int형끼리의 나눗셈 연산으로


    정수A = 9

    정수B = 2

    정수A / 정수B 를 하게 된다면

    9 나누기 2가 되어 4.5가 답이 되지만


    int 정수C = 정수A / 정수B 로 출력된는 것은

    4.5에서 내림을 한 4이다.


    숫자형 변수의 계산에서 주의해야 할 점이다.



    ※ 몇개 더 쓰이는 연산자들을 알아보자


    A += B;



    A = A + B;


    와 같다.  A에 B를 합산하여 A가 되는 꼴.


    마찬가지로


    -=, *=, /= 도 같은 방법으로 사용한다.




    A++;


    는 A에 1을 더해준다는 의미이다.


    int number=3;

    number++;

    Debug.Log(number);


    와 같이 코드를 입력한다면 출력되는 것은 4가 될 것이다.


    마찬가지로 --도 같은 방법으로 사용할 수 있다.




    string형 문자열끼리 연결하는 연산자는 +를 사용한다.




    문자열과 숫자를 연결하는 연산자도 + 를 사용할 수 있는데, 이 경우 결과로 나오는 것은 문자열로 취급한다.


    string str="Hello, ";

    int number=123;


    string str2 = str + number;

    Debug.Log(str2);


    출력되는 내용은 Hello, 123 일 것이다. 이런 경우 문자열과 숫자를 연결하여 오류는 나지 않는다.

    반응형
    COMMENT
     
    12
    31

    - 오브젝트 생성(큐브 등)

    - 카메라 시점 전환

    - 레이아웃의 변경

    - 물체의 이동, 회전, 크기조절


    등 간단한 조작법

    반응형
    COMMENT
     
    12
    31

    유니티를 사용하여 안드로이드에서 실행할 3D 게임을 만들겁니다.



    유니티 설치

    https://store.unity.com/kr


    JDK 설치

    http://www.oracle.com/technetwork/java/javase/downloads/index.html


    안드로이드 스튜디오 설치

    https://developer.android.com/studio/index.html?hl=kr




    1. 유니티 다운로드 후 설치!


    2. 유니티 설치 중 체크박스에서


     □ Android Build Support


     를 체크!


    3. 유니티 / JDK / 안드로이드 스튜디오 설치를 완료한다!


    4. 유니티 실행해서 Account(계정) 생성 또는 로그인!


    5. 유니티에 Android Studio 경로 설정


      - 유니티 실행 후 도구막대에서

      - 맥일 경우 [Unity] - [Preferences]

      - 윈도일 경우 [Edit] - [Preferences]

      - External Tools 탭에서 Android 밑의 SDK 경로를 입력하는데

      - 맥일 경우 /Users/사용자명/Library/Android/sdk

      - 윈도일 경우 /Users/사용자명/AppData/Local/Android/sdk



    반응형
    COMMENT
     
    06
    05

    유튜브 원본 동영상 및 음원 다운로드가 가능한 프로그램입니다.


    (유튜브 주소 앞에 ss 붙여서 받는 방법 있었는데, 원본영상은 이제 다운로드 못하더군요....)



    매우 직관적인 프로그램이라 사용법 읽을 필요도 없는 프로그램입니다.



    4K Video Downloader 다운로드 https://www.4kdownload.com/download








    반응형
    COMMENT
     
    02
    08

    본 가이드의 90프로 이상은 다음 사이트(https://dive2freenet.appspot.com/)의 번역으로 작성되었음을 알려드립니다.

    현재 작업중인 포스팅입니다

    ▒▒▒▒▒목차▒▒▒▒▒

     시작하며

     프리넷의 설치

     프리넷의 초기 설정

     FMS

     Frost

     다운로드와 업로드

     Freemail

    ※ 관련 사이트

     한글로 작성된 프리넷 관련 정보

     참고 사이트



    ❏ 시작하며

    프리넷에 대해 일본어, 한국어로 작성된 정보를 인터넷에서 거의 찾을 수 없기 때문에 가이드를 만들어 보았습니다.

    본 가이드는 「일단 실행만 되면 좋겠다」는 사람들을 위해 만들어졌습니다.

    가이드를 읽고 난 후에는

    º  프리넷의 설치와 초기설정 완료

    º  프리사이트(freesite : 프리넷 기반 사이트)에 엑세스

    º  파일의 다운로드와 업로드 가능

    º  익명게시판 시스템(FMS, Frost)의 이용

    º  익명 이메일 시스템(Freemail)의 이용

    을 할 수 있게 됩니다. 아마.

    윈도우즈 기반의 사용자를 위한 가이드지만 맥과 리눅스 사용자에게도 참고가 될 것이라고 생각합니다.


    ※ 주의

    프리넷을 사용하여 저작물을 무단 업로드, 다운로드 하는 것은 불법입니다. 절대로 하지 말아주십시오. 프리넷은 어디까지나 검열이 없는 자유로운 정보공유를 위해 만들어졌음을 알립니다.

    본 사이트는 익명네트워크를 통해 이루어지는 위법행위를 조장하는 것이 아닙니다.본 사이트의 정보가 당신의 표현의 자유, 자유로운 정보공유에 도움이 되기를 바랍니다.

    프리넷의 이용 중 발생한 트러블에 대해서는 본 사이트 관리인은 일절의 책임을 지지 않습니다. 이용에 대해서는 본인이 책임을 져 주시기 바랍니다.



    ❏ 프리넷의 설치

    자바 실행환경(JRE)의 인스톨

    프리넷은 자바가 사용된 소프트웨어이기에 실행에는 JRE가 필요합니다.

    JRE의 인스톨이 완료되지 않았다면 JAVA공식페이지(http://java.com/ja/download/)에서 RE인스톨러를 다운로드하여 설치해 주시기 바랍니다.


    ※ JRE의 설치 여부 체크

    (http://java.com/ja/download/installed.jsp)


    프리넷 인스톨러의 다운로드

    먼저 프리넷 공식페이지(https://freenetproject.org/)에서 프리넷 인스톨러를 다운로드합니다.


    프리넷의 설치

    인스톨러를 실행하여 프리넷의 설치를 시작합니다.


    1. 설치폴더 지정(Installation directory)

    여기서 프리넷을 설치할 폴더를 지정합니다.

    「Browse」를 클릭하여 설치폴더를 지정해 주십시오.


    ※ 기본값으로 「C:¥Users¥유저명¥AppData¥Local¥Freenet」에 설치되지만 프리넷은 HDD에 과부하가 걸리므로 시스템 드라이브(C드라이브) 이외의 장소에 설치하는 것을 추천합니다. 가능하다면 프리넷용 HDD를 별도로 준비하여 그곳에 설치하는 것이 제일입니다.


    2. 그 외의 설정(Additional settings)

    프리넷을 시작프로그램으로 등록하고 싶지 않다면 「Start Freenet on Windows startup」의 체크를 해제하여 주십시오.


    3. 설치 시작

    설정을 모두 하였다면 「Install」을 클릭하여 설치를 시작합니다.

    「Installation finished successfully!」의 안내창이 표시된다면 설치 성공입니다.


    ❏ 프리넷의 초기 설정

    설치가 끝났다면 다음은 초기설정을 합니다.


    1. 프리넷을 실행

    시작메뉴의 「Start Freenet」를 클릭하여 프리넷을 기동합니다.


    2. 프리넷의 관리페이지를 연다

    시작메뉴의 트레이창에서 토끼모양()의 아이콘을 우클릭하여 「Open Freenet」을 클릭합니다. 프리넷의 관리페이지(http://localhost:8888/)가 인터넷 브라우저에서 열리게 됩니다.


    3. 초기설정 위자드에 따라 설정을 진행한다

    「세큐리티를 수동으로 설정한다」를 클릭합니다.

    환경에 따라서는 브라우저 세큐리티 권고창이 뜨게 되는데 무시하고 넘어가도 상관 없습니다.

    자동갱신은 기본값(Freenet을 자동으로 최신버전을 유지)인 채로 괜찮습니다. 플러그인은 「Universal Plug and Play (UPnP)를 적용한다」의 체크를 해제해 줍니다.

    ※ UPnP는 자동으로 포트를 개방하는 기능이지만 환경에 따라 작동하지 않을 수 있습니다. 그래서 기능을 무효화하고 수동으로 포트를 개방합니다.

    (수동으로 포트개방 하는 방법을 어떻게 해도 모르겠다면 UPnP 적용에 체크를 하여 자동개방기능이 제대로 작동되기를 기도합시다.)

    「제3자와의 접속」을 선택합니다

    「표준」을 선택합니다

    「낮음」을 선택합니다

    HDD의 여유공간을 생각하며 적절한 용량을 설정합니다. 데이터 저장공간은 여유가 된다면 가능한 많은 용량을 선택하는 것을 추천합니다.

    프리넷은 대역폭 제한을 두는 것이 가능하나 이번에는 「No」를 선택합니다.

    「전송 레이트 제한」은 인터넷 회선속도에 따라 적절한 것을 선택합니다.

    어지간히 느리지 않다면 100메가비트(광섬유)를 선택하셔도 괜찮습니다.

    초기설정 위자드는 이것으로 끝입니다.


    4. 포트 개방

    관리페이지의 상단 메뉴의 「상태」 → 「인터넷 접속」 으로부터 「인터넷 접속 상황 페이지」(http://localhost:8888/connectivity/)를 엽니다.

    페이지 하단의 「접속」에 표시되어 있는 「Darknet port」와 「Opennet port」의 두개의 UDP포트를 개방 해 봅시다. 프로토콜이 TCP가 아니라 UDP라는 점을 주의하여 주십시오.

    포트개방의 방법은 루터의 기종에 따라 달라지므로 그에 관한 설명은 루터의 메뉴얼이나 포트 개방 가이드을 참고해 주시기를 바랍니다.

    (초기설정 위자드의 플러그인 설정에서 「UPnP를 적용」에 체크하였다면 포트 개방 작업은 필요 없습니다.)

    포트를 개방하였다면 다시 「인터넷 접속 상황 페이지」(http://localhost:8888/connectivity/)를 엽니다.

    「UDP Opennet Port」의 상태가 「아마도 포트를 불러오는 중입니다(おそらくポートフォワードされています)」라고 표시된다면 포트의 개방은 성공입니다.


    5. 동작확인

    여기까지 프리넷의 설치와 초기설정은 모두 끝났습니다. 마지막으로 프리넷이 정상적으로 작동하는지 확인 해 봅시다.

    포트를 개방한 상태로써 곧(수 분에서 수십분) 프리넷을 실행하면 관리페이지 하단에 있는 접속수를 표시하는 수치(사진에서 70)가 서서히 증가합니다.

    접속수가 어느정도 증가했다면 관리페이지에는 처음부터 등록되어있는 프리사이트 몇몇에 엑세스 해 봅시다.

    「Freenet Message System」을 클릭 해 봅시다.

    ※ 프리사이트는 익명네트워크 기반으로 작성된 웹사이트를 말합니다. 통상의 웹사이트가 존재하는 인터넷 공간과 단절된 네트워크 공간에 존재하기 위해 프리넷이 실행되고 있지 않은 상태에서는 엑세스가 불가능합니다.

    통상의 웹 사이트의 접속과 비교하면 프리사이트의 접속은 더 시간이 오래 걸립니다. (수초에서 수분)

    조금 더 기다려 프리사이트가 제대로 화면에 나타났다면 프리넷이 정상적으로 동작하고 있는 것입니다.


    6. 정리

    여기까지 프리넷의 설치, 초기설정, 동작확인을 완료했습니다. 수고하셨습니다. 이것으로 당신은 프리사이트에 자유롭게 엑세스하는 것이 가능해졌습니다.

    프리넷의 설치만으로는 간단한 네트워크 기능 (프리사이트를 열람한다던가 하는)밖에 할 수 없습니다. 게시판 등의 커뮤니케이션도구를 이용하고 싶다면 아래에 설명하고 있는 FMS나 Frost같은 프론트엔드의 설치가 필요합니다.


    ❏ FMS(게시판 시스템 1)

    FMS(Freenet Message System)는 프리넷의 익명네트워크를 이용한 게시판 시스템입니다. 스팸이나 DoS공격에 더 안전하도록 설계되어있습니다. 

    프리넷 개발자는 FMS의 이용을 추천하고있습니다만 현재 FMS를 사용하는 일본인과 한국인은 적은 듯 합니다.


    FMS의 도입

    FMS의 도입 방법은 프리넷 일본어위키(프리사이트)FMS의 소개(프리사이트)에 설명되어있습니다.

    프리사이트는 프리넷을 기동하고있지 않다면 사용할 수 없습니다.


    FMS의 보드(게시판)

    FMS에는 여러가지의 보드(게시판)이 존재하고 있습니다만 가볍게 시작할 수 있도록 일본인이 많은 게시판을 추천 해 드리겠습니다.

    보드명

    용도

     jp.junk 

     의논, 잡담

     jp.test

     투고를 테스트한다

     jp.boards

     게시판 공지

    보드에 올라온 메시지의 내용을 알기 위해서는 시간이 걸립니다.(수 분에서 수십분) 또한 과거의 메시지를 모두 불러오기 위해서는 상당히 (몇주에서 1개월가량) 오랜 시간이 걸립니다. 프리넷과 FMS 둘 다 기동한 상태에서 기다려봅시다.

    보드의 열람은 「Board Maintenance」페이지(http://localhost:8080/boards.htm)에 자동적으로 표시됩니다. 여기도 메시지를 불러오는 것과 같이 시간이 걸립니다.

    일본어 보드의 열람은 FMS의 「jp.boards」의 과거에 투고한 내용이나 '프리사이트의 정리'같은 글도 투고되므로 참고 바랍니다. 「jp.boards」에 '~~에 대해 이야기하는 보드를 알고 싶습니다'정도의 제목으로 메시지를 쓰셔도 괜찮습니다. 친절한 누군가가 알려줄테니까요.


    FAQ

    Q. 아무리 기다려도 메시지가 나오지 않습니다.

    A. FMS관리화면()의  Option > Advance 페이지()를 열어 「Freenet Connection」의 항목에 있는 「DefaultRequestPriorityClass」를 「0 - Emergency」로 설정하여 화면 최하단에 있는 「Save」 버튼을 클릭하여 설정을 보존한 후에 FMS를 재기동 해 봅시다.


    ❏ Frost(게시판 시스템 2)



    ❏ 다운로드와 업로드


    ❏ Freemail






    https://namu.wiki/w/Freenet

    https://ko.wikipedia.org/wiki/%ED%94%84%EB%A6%AC%EB%84%B7

    https://kldp.org/node/112917

    http://www.rfa.org/korean/help/Censorship-05272011164246.html


    https://dive2freenet.appspot.com/




    반응형
    COMMENT
     
    08
    15

    MenuT.java


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    //상단에 메뉴바를 생성한다
    //메뉴 아이템 >> 메뉴 항목 >> 메뉴바 >> 프레임
     
    import java.awt.*;
    import java.awt.event.*;
     
    public class MenuT{
        private Frame f;
        private MenuBar bar;
        private Menu file, edit;
        private MenuItem open, save, saveas, printexit;
        private MenuItem cut, paste, clear;
        
        public MenuT(){
            //프레임 생성 및 윈도우 종료
            f=new Frame("Menu Test");
            f.addWindowListener(new WindowAdapter(){
                public void windowClosing(WindowEvent e){
                    System.exit(0);
                }
            });
            
            //메뉴바, 메뉴항목, 메뉴아이템을 초기화한다
            bar=new MenuBar();
            
            file=new Menu("File");
            edit=new Menu("Edit");
            
            open=new MenuItem("Open");
            save=new MenuItem("Save");
            saveas=new MenuItem("Save as");
            print=new MenuItem("Print");
            exit=new MenuItem("Exit");
            cut=new MenuItem("Cut");
            paste=new MenuItem("Paste");
            clear=new MenuItem("Clear");
            
            //메뉴항목에 아이템과 구분선을 넣는다
            file.add(open);
            file.add(save);
            file.add(saveas);
            file.addSeparator();
            file.add(print);
            file.addSeparator();
            file.add(exit);
            edit.add(cut);
            edit.add(paste);
            edit.addSeparator();
            edit.add(clear);
            
            //메뉴바에 메뉴항목을 추가한다
            bar.add(file);
            bar.add(edit);
            
            //프레임에 메뉴바를 추가하고 프레임의 설정을 한다
            f.setMenuBar(bar);
            f.setSize(400,200);
            f.setVisible(true);
        }
        
        public static void main(String[] args){
            MenuT mt=new MenuT();
        }
    }
    cs


    <실행결과>



    반응형

    'Dev > JAVA' 카테고리의 다른 글

    mvn명령어(Maven 설치)  (0) 2020.08.08
    [JAVA] 스크롤바 생성  (0) 2016.08.15
    [JAVA] 선택창 생성  (0) 2016.08.15
    [JAVA] 체크박스 생성  (0) 2016.08.11
    [JAVA] 리스트 생성  (0) 2016.08.10
    COMMENT
     
    08
    15

    ScrollbarT.java


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    //프레임에 스크롤바를 생성한다
     
    import java.awt.*;
    import java.awt.event.*;
     
    public class ScrollbarT{
        private Frame f;
        Scrollbar bar1, bar2, bar3, bar4, bar5;
        
        public ScrollbarT(){
            f = new Frame();
            f.addWindowListener(new WindowAdapter(){
                public void windowClosing(WindowEvent e){
                    System.exit(0);
                }
            });
            
            //좌측부터 차례대로 (스크롤 할 방향,초기위치,스크롤바가 표시하는 화면 크기,화면의 넓이 최소값,화면의 넓이 최대값)
            bar1=new Scrollbar(Scrollbar.HORIZONTAL, 010025);
            bar2=new Scrollbar(Scrollbar.HORIZONTAL, 0300300);
            bar3=new Scrollbar(Scrollbar.HORIZONTAL, 0100300);
            bar4=new Scrollbar(Scrollbar.VERTICAL, 01500250);
            bar5=new Scrollbar(Scrollbar.VERTICAL, 0500250);
            
            f.add(bar1,"North");
            f.add(bar2, "South");
            f.add(bar3, "Center");
            f.add(bar4, "East");
            f.add(bar5, "West");
            
            f.setSize(500400);
            f.setVisible(true);
        }
        
        public static void main(String[] args){
            ScrollbarT sbt=new ScrollbarT();
        }
    }
    cs






    <실행결과>







    반응형

    'Dev > JAVA' 카테고리의 다른 글

    mvn명령어(Maven 설치)  (0) 2020.08.08
    [JAVA] 프레임에 메뉴를 생성  (0) 2016.08.15
    [JAVA] 선택창 생성  (0) 2016.08.15
    [JAVA] 체크박스 생성  (0) 2016.08.11
    [JAVA] 리스트 생성  (0) 2016.08.10
    COMMENT