카테고리

asm (27) bootloader_x86_grub (1) C (92) compile (11) config (76) CPP (13) CSS (1) debugging (7) gimp (1) Go (1) html (1) Java (1) JavaScript (1) kernel (19) LibreOffice (3) Linux system progamming (21) MFC (1) opencv (4) OpenGL (1) PHP (1) Python (4) qemu (29) shell (3) socket (7) troubleshooting (2) ubuntu18.04 (2) windows (1)

2018/12/07

asm NASM 64 구조


NASM 구조


section .text
_start: mov rax, 1 ;쓰기 시스템 호출
  mov rdi, 1 ;stdout=1 모니터 출력
  mov rsi, message ;출력 할 문자열 주소
  mov rdx, 13 ;몇 바이트 사용 수
  syscall ;운영체제 쓰기 호출
  mov rax, 60 ;종료를 위한 시스템 호출
  xor rdi, rdi ;종료 코드 0
 syscall ;종료(운영체제 자원 회수)

section .data
message: db "hello, Wrold", 10 ;숫자 10 개행 문자 \n



레이블 명령 피연산자
지시어

global start
분류 Start: Sction .text
mov Rax, 1
mov Rdi, 1
mov Rsi, message
mov Rdx, 13
syscall

mov Rax, 60
xor Rdi, rdi








Message:
Section .data
Db Hello, World”, 10






section .data
text db "Hello, World!",10

section .text
global _start


_start:
mov rax, 1
mov rdi, 1
mov rsi, text
mov rdx 14
syscall

mov rax, 60
mov rdi, 0
syscall

;compile
;nasm -f elf64 -o hello.o hello.asm
;ld hello.o -o hello

지시어 정리
db: 코드에 삽입 할 데이터의 원시 바이트를 정의한다.
"Hello, World!",10: 정의하는 데이터의 바이트, 텍스트 문자열의 각 문자는 단일 바이트이고, "10"은 "\n" 개행 문자를 타나낸다.

text
데이터가있는 메모리의 주소에 할당 된 이름이다.
나중에 코드에서 "text"를 사용할 때마다 코드가 컴파일 될 때 컴파일러는이 데이터에서 메모리의 실제 위치를 확인하고 "text"의 모든 인스턴스를 해당 메모리 주소로 바꾼다.

text db "hello, world!",10
text: 메모리 주소의 이름
db: 바이트 정의
"hello, World!",10: 정의 된 바이트

LibreOffice Impress GUI 구성


사용 설명 팁 설정
일반 → 설명 체크
마우스로 이미지 위로 이동, 사용 용도 요약 정보 확인

아이콘 화면 구성


보기 선택
  • 아이콘 크기 작게, 자동(Tarngo), 메뉴 내 이이콘 보이기 또는 자동 설정 선택
  • 자동(Tarngo) → Galxy 선택 후 아이콘 화면 구성이 달라진다.
슬라이더 창 제거


슬라이더 창 복원

보기 → 슬라이더창 선택

사이드 바 제거
보기 → 사이드 바 체크 해제

사이드 바 복원
보기 → 사으드 바 체크

LibreOffice Writer


1. 문서 화면 구성.

1.1 바닥글 사용
오른쪽 창 T 스타일 및 서식 선택
→ 문서 아이콘 탭 선택
→ 기본 스타일 오른쪽 마우스 선택
→ 변경
→ 바닥글 탭 선택
→ 바닥글 사용 체크.

1.2 머리글 사용
오른쪽 창 T 스타일 및 서식 선택
→ 문서 아이콘 탭 문서 선택
→ 기본 스타일 오른쪽 마우스 선택
→ 변경
→ 머리글 탭 선택
→ 머리글 사용 사용 체크 .


1.3 첫 페이지 설정 :
오른쪽 창 T 스타일 및 서식 선택
→ 첫 페이지 선택 or 상단 메뉴 바 삽입 선택
→ 페이지 나누기 선택(단축키 ctrl + enter

1.4 기본 글자 크기 및 형식 지정
1.4.1 상단 메뉴 바[기본 스타일 화살표 클릭]

1.4.2 상세한 설정
오른쪽 창 T 스타일 및 서식 선택

1.4.2.1 글꼴 설정
오른쪽 창 T 단락 스타일 선택
→ 제목 1
→ 오른쪽 마우스
→ 변경
→ 글꼴
→ 사용하고 싶은 글꼴 선택 후 크기 조정
Heading(표제) 1
Heading(표제) 2
Heading(표제) 3
text body(텍스트 본문) : 본문 작성 시 적용되는 글자에 대한 설정이다.
default(기본)


1.5 머리글 표 작성
1.5.1 상단 머리글 선택
→ 상단 메뉴 이미지 바 표 형식 화살표 선택
→ 표 배열 지정
1.5.2 테두리 선 지정
→ 오른쪽 창 T 표 스타일 선택
→ 머리글 표 선택
→ 하단 마우스 이동
→ 파업 창 생성
→ 테두리 유형 화살 표 선택
→ 테두리 없음 선택

1.5.3 테두리 지정
→ 오른쪽 창 T 표 스타일 선택
→ 머리글 표 선택
→ 하단 마우스 이동
→ 파업 창 생성
→ 테두리 화살표 선택 
→ 사용하고 싶은 테두리(경계) 선택

1.5.4 인쇄 미리 보기
→ 상단 메뉴 바 파일 클릭 → 인쇄 미리 보기 선택(Ctrl + Shfit + O)
→ 종료 키보드 Exc 키 또는 마우스 미리보기 닫기 x 선택

1.5.5 문장 들여쓰기(시작 위치 설정)
1.5.5.1 왼쪽 맞춤
→ 상단 이미지 메뉴 문자 위치 이미지 이동
→ 왼쪽 맞춤 이미지 선택(CTRL + L)
1.5.5.2 가로로 가운데 맞춤
→ 상단 이미지 메뉴 문자 위치 이미지 이동
→ 가로로 가운데 맞춤 이미지 선택(CTRL + E)
1.5.5.3 오른쪽 맞춤
→ 상단 이미지 메뉴 문자 위치 이미지 이동
→ 오른쪽 맞춤 이미지 선택(CTRL + R)
1.5.5.4 양쪽 맞춤
→ 상단 이미지 메뉴 문자 위치 이미지 이동
→ 양쪽 맞춤 이미지 선택(CTRL + J)

1.5.4 이미지 로고 추가
→ 사용할 로고 이미지 편집
→ 이미지 이동 복사
→ 머리글 상단 표로 위치에 붙여 넣기
→ 인쇄 미리 보기 확인(ctrl + shift + o)
테투리 지정
→ 오른쪽 창 T 표 스타일 선택
→ 머리글 표 선택
→ 하단 마우스 이동
→ 파업 창 생성
→ 테두리 화살표 선택 
→ 사용하고 싶은 테두리(경계) 선택
→ 테두리 없는 이미지 선택
→ 인쇄 미리 보기 확인(ctrl + shift + o)

1.6 바닥글
→ 하다 바닥글 마우수 이동 선택
→ 상당 이미지 표 선택
→ 사용할 문장 영문 사용시 첫 글자 대문자 자동 완성, 첫 글자 하나를 더 쳐 해결한다.
→ 가운데 정력(ctrl + E)
테투리 지정
→ 오른쪽 창 T 표 스타일 선택
→ 머리글 표 선택
→ 하단 마우스 이동
→ 파업 창 생성
→ 테두리 화살표 선택 
→ 사용하고 싶은 테두리(경계) 선택
→ 테두리 없는 이미지 선택
→ 인쇄 미리 보기 확인(ctrl + shift + o)

2. 본문 작성
2.1 본문 글 시작 위치 지정
→ 상단 이미지 메뉴 → 문자 형식 화살표 선택 →기본 스타일 지정
2.1 왼쪽 맞춤
→ 상단 이미지 메뉴 문자 위치 이미지 이동
→ 왼쪽 맞춤 이미지 선택(CTRL + L)
2.2 가로로 가운데 맞춤
→ 상단 이미지 메뉴 문자 위치 이미지 이동
→ 가로로 가운데 맞춤 이미지 선택(CTRL + E)
2.3 오른쪽 맞춤
→ 상단 이미지 메뉴 문자 위치 이미지 이동
→ 오른쪽 맞춤 이미지 선택(CTRL + R)
2.4 양쪽 맞춤
→ 상단 이미지 메뉴 문자 위치 이미지 이동
→ 양쪽 맞춤 이미지 선택(CTRL + J)

2.1 본문 글꼴 지정
This will be a title for this document
이 것은 문서의 제목이 될 것입니다.

2.1.1 글꼴 사용자 지정
스타일 및 서식
→ 기본 스타일
→ 제목 1 선택 마우스 오른쪽 클릭
→ 변경
→ 사용하고 싶은 글꼴 및 크기 지정

2.1.2 기본 글꼴 사용
상단 이미지 메뉴 → 글꼴 선택 화살표 선택 → 제목 1 선택

2.2 날짜 지정
문장 시작 오른쪽 시작 위치 변경 CTRL + R
Date: 30/09/2018
미리보기 ctrl + shift + o

This will be a title for this document
2.3 본분 글꼴 지정
2.3.1 상단 이미지 글꼴 메뉴 텍스트 본문 선택
2.3.2 스타일 및 서식 창이 자동으로 메뉴 선택 됨
→ 텍스트 본문 오른쪽 마우스 클릭
→ 글꼴 탭 10 pt 지정
This is a sample paragraph for the content of this document.
이 문서의 내용에 대한 샘플 단락입니다.
구글 검색 :lorem ipsum

2.4 굵게 문자 처리
Lorem Ipsum 은 단순히 인쇄 및 조판 업계의 거짓 텍스트입니다. Lorem Ipsum은 알 수없는 프린터가 유형의 조리실을 가져다가 형식 표본을 만들기 위해 뒤섞어 놓았던 1500 년대 이래로 업계 표준 더미 텍스트였습니다. 5 세기뿐만 아니라 전자 조판으로 도약했으며, 본질적으로 변하지 않았습니다. 1960 년대에 Lorem Ipsum 구절이 포함 된 Letraset 시트가 출시되었고, 최근에는 Lorem Ipsum 버전을 비롯하여 Aldus PageMaker와 같은 데스크톱 게시 소프트웨어가 대중화되었습니다.

2.4.1 CTRL + B, 강조 
Lorem Ipsum 은 단순히 인쇄 및 조판 업계의 거짓 텍스트입니다. Lorem Ipsum은 알 수없는 프린터가 유형의 조리실을 가져다가 형식 표본을 만들기 위해 뒤섞어 놓았던 1500 년대 이래로 업계 표준 더미 텍스트였습니다. 5 세기뿐만 아니라 전자 조판으로 도약했으며, 본질적으로 변하지 않았습니다. 1960 년대에 Lorem Ipsum 구절이 포함 된 Letraset 시트가 출시되었고, 최근에는 Lorem Ipsum 버전을 비롯하여 Aldus PageMaker와 같은 데스크톱 게시 소프트웨어가 대중화되었습니다.

2.5 제목 2 적용
This will be a main title for this document
일반적인 신념과는 달리 Lorem Ipsum은 단순히 임의의 텍스트가 아닙니다. 그것은 기원전 45 년부터의 고대 라틴 문학 작품에 뿌리를두고 있으며, 2000 년이 넘었습니다. 

2.6 소 제목 자동 완성 기능
→ 상단 이미지 메뉴 글머리 기호 목록 표시 전환(Shift + 12)
테스트 1
테스트 2
엔터 두번 입력 자동 기능 해제
2.6.1 자동완성 단계 내리기
테스트 1
테스트 2
테스트 3
하단 오른쪽 화살표 선택 클릭 적용 된다
해제 하려면 왼쪽 화살표 선택 클릭
두 단계
1
2
3

unsplash 이미지 많은 곳
검색: business

2.6.2 이미지 위치 변경 시 문장들 위치 자동 변경
  • 이미지 다운로드
  • 이미지 복사 붙여넣기
  • 오른쪽 스타일 및 서식 선택
  • 상단 탭 틀 스타일 선택
  • 이미지 선택
  • 수식 오른쪽 마우스 선택
  • 변경
  • 자동 줄 바꿈 탭
  • 적용
2.6.3 표 생성
  • 상단 이미지 메뉴 표 화살표 선택
  • 사용자 원하는 크기 표 작성






















2.6.4 표 추가 및 수정













  • 표 선택
  • 하단 제어 표 이미지 명령어 생성 됨
  • 분할, 삭제, 변경 등을 할 수 있다.
2.6.5 표 내용 작성
File Name
Field Type
Comment
First Name
Text Field

Last Name
Text Field

Email Address
Text Field
Default Validation
Telephone Number
Text Field
External Validation
Type of Product
Drop Down List
Custom Website, Ecommerce Website, WordPress
Comment
Text Field
Customer Comment Section
  • 전체 영역 표 선택
  • 하단 제어 표 이지지 명령어 생성
  • 크기 최적화 선택
  • 같은 간격으로 열 분할
  • 마지막 행, 열에서 탭 키 사용 다음 행 생성 됨.
  • 색상 지정
    • 표 영역 선택
    • 하단 이미지 명령어 배경색 선택
    • 원하는 색상 지정
This will be a 3 title for this document
일반적인 신념과는 달리 Lorem Ipsum은 단순히 임의의 텍스트가 아닙니다그것은 기원전 45 년부터의 고대 라틴 문학 작품에 뿌리를두고 있으며, 2000 년이 넘었습니다

2.6.7 사이트 링크
Thank you

C 형변환

#include <stdio.h>
#include <string.h>

main(){
char middleInitial;

printf("\n");

int numberEx = 12;

int numberEx2 = 14;

printf("number Ex/ numberEx2 %f\n\n", (float) numberEx2);

}

C 증감 연산

#include <stdio.h>
#include <string.h>

main(){
char middleInitial;

printf("\n");

int randomNum = 1;

printf("1 += 2 : %d\n\n", randomNum += 2);

printf("%d += 2 : %d\n\n", randomNum, randomNum +2);

int exNum = 1;

printf("++%d : %d\n\n", exNum, ++exNum);

exNum = 1;

printf("%d++ : %d\n\n", exNum, exNum++);

}

C 사칙연산

#include <stdio.h>
#include <string.h>

int globalVar = 100;

main(){
char middleInitial;

printf("\n");

int num1 = 12, num2 = 15, numAns;
float decimal1 = 1.2, decimal2 = 1.5, decimalAns;

printf("Interger Calculation %d\n\n", num2 / num1);

printf("Float Calculation %f\n\n", decimal1 / decimal1);

printf("Modules %d\n\n",num2 % num1);

printf("Without Parentheses %d\n\n", 3 + 6 * 10);

printf("With Parentheses %d\n\n", (3 + 6) * 10);

}

C input scanf output printf

#include <stdio.h>
#include <string.h>

#define MYNAME "Nautilus"

int globalVar = 100;

main(){
char middleInitial;

printf("wat is your middle initial? ");

scanf(" %c", &middleInitial);

char firstName[30], lastName[30];

printf("What is your name? ");

scanf(" %s %s", firstName, lastName);

printf("Your Name is %s %c %s\n\n", firstName, middleInitial, lastName);

int month, day, year;

printf("What's your birth dat? ");

scanf(" %d%d%d", &month, &day, &year);

printf("\nBirth Date %d%d%d\n\n", month, day, year);
}

c output printf

#include <stdio.h>
#include <string.h>

#define MYNAME "Nautilus"

int globalVar = 100;

main(){
char firstLetter = 'D';

int age = 38;

long int superBignum= -327670000;

float piVaule = 3.14159;

double reallyBigPi = 3.1415914159141591415914;

printf("\n");

printf("This will print to screen\n\n");

printf("I am %d years old\n\n", age);

printf("Pi = %.5f\n\n", piVaule);

printf("The first letter in my name is %c\n\n", firstLetter);

printf("My Name is %s\n\n", "Nautilus");

char myName[] = "Nautilus Jang";

strcpy(myName, "Linux lee");

printf("My Name is %s\n\n", myName);
}

socket client programming

/*
 * filename server_ipaddress portno
 *
 * argv[0] filename
 * argv[1] server_ipaddress]
 * argv[2] portno */

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>

void error(const char *msg)
{
perror(msg);
exit(0);
}

int main(int argc, char *argv[]){
int sockfd, portno, n;
struct sockaddr_in serv_addr;
struct hostent *server;

char buffer[256];
if (argc < 3) {
fprintf(stderr, "usage %s hostname port\n", argv[0]);
exit(0);
}
portno = atoi(argv[2]);
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0)
error("ERROR opening socket");

server = gethostbyname(argv[1]);
if(server == NULL){
fprintf(stderr, "Error, no such host");
}

bzero((char *) &serv_addr, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
bcopy((char *) server->h_addr, (char *) &serv_addr.sin_addr.s_addr, server->h_length);
serv_addr.sin_port = htons(portno);
if(connect(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0)
error("Connection Failed:");

int num1, num2, choice, ans;
S: bzero(buffer, 256);
   n = read(sockfd, buffer, 255); //Read Server String
   if (n < 0)
   error("Error reading from socket");
   printf("Server - %s\n", buffer);
   scanf("%d", &num1); //Enter No 1
   write(sockfd, &num1, sizeof(int)); //Send No 1 to Server

   bzero(buffer, 256);
   n = read(sockfd, buffer, 255); //Read Server String
   if (n < 0)
           error("Error reading from socket");
   printf("Server - %s\n", buffer);
   scanf("%d", &num2); //Enter No 2
   write(sockfd, &num2, sizeof(int)); //Send No 2 to Server

   bzero(buffer, 256);
   n = read(sockfd, buffer, 255);
   if (n < 0)
   error("ERROR reading from socket");
   printf("Server - %s", buffer);
   scanf("%d", &choice);
   write(sockfd, &choice, sizeof(int));

   if(choice == 5)
   goto Q;

   read(sockfd, &ans, sizeof(int));
   printf("Server - The answer is: %d\n", ans);

   if(choice != 5)
   goto S;

Q :
   printf("You have selected to exit.Exit Successful.");
close(sockfd);
return 0;

}

// compile: gcc -o client client.c
// ./client 127.0.0.1 9999

socket Server Select programming

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>

void error(const char *msg)
{
perror(msg);
exit(1);
}

int main(int argc, char *argv[])
{
if(argc < 2){
fprintf(stderr, "Port No not provided. Program terminated\n");
exit(1);
}


int sockfd, newsockfd, portno, n;
char buffer[255];

struct sockaddr_in serv_addr, cli_addr;
socklen_t clilen;

sockfd = socket(AF_INET, SOCK_STREAM, 0);
if(sockfd < 0)
{
error("Error opening Socket.");
}

bzero((char *) &serv_addr, sizeof(serv_addr));
portno = atoi(argv[1]);

serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = INADDR_ANY;
serv_addr.sin_port = htons(portno);

if(bind(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0)
error("Binding Failed.");

listen(sockfd, 5);
clilen = sizeof(cli_addr);

newsockfd = accept(sockfd, (struct sockaddr *) &cli_addr, &clilen);

if(newsockfd < 0)
error("Error on Accpt");

int num1, num2, ans, choice;

S : n = write(newsockfd, "Enter Number 1 : ", strlen("Enter Number 1")); // Ask for Number 1
if (n < 0)
error("Error writing to socket");
read(newsockfd, &num1, sizeof(int)); // Read No1
printf("client - Number 1 is : %d\n", num1);

n = write(newsockfd, "Enter Number 2: ", strlen("Enter Number 2"));  // Ask for Number 2
if (n < 0)
error("Error writing to socket");
read(newsockfd, &num2, sizeof(int)); //Read No2
printf("client - Number 2 is : %d\n", num2);

n = write(newsockfd, "Enter your choice : \n1.Addition\n2.Subtraction\n3.Multiplication\n4.Division\n5.Exit\n", strlen("Enter your choice : \n1.Addition\n2.Subtraction\n3.Multiplication\n4.Division\n5.Exit\n")); // Ask Choice
if (n < 0)
error("Error writing to socket");
read(newsockfd, &choice, sizeof(int)); //Read choice
printf("client - Choice is : %d\n", choice);

switch(choice){
case 1:
ans = num1 + num2;
break;
case 2:
ans = num1 -num2;
break;
case 3:
ans = num1*num2;
break;
case 4:
ans = num1/num2;
break;
case 5:
goto Q;
break;
}

write(newsockfd, &ans, sizeof(int));
if(choice !=5)
goto S;

Q: close(newsockfd);
close(sockfd);
return 0;

}

// compile gcc -o server server.c
// server 9999

socket client programming

/*
 * filename server_ipaddress portno
 *
 * argv[0] filename
 * argv[1] server_ipaddress]
 * argv[2] portno */

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>

void error(const char *msg)
{
perror(msg);
exit(0);
}

int main(int argc, char *argv[]){
int sockfd, portno, n;
struct sockaddr_in serv_addr;
struct hostent *server;

char buffer[256];
if (argc < 3) {
fprintf(stderr, "usage %s hostname port\n", argv[0]);
exit(0);
}
portno = atoi(argv[2]);
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0)
error("ERROR opening socket");

server = gethostbyname(argv[1]);
if(server == NULL){
fprintf(stderr, "Error, no such host");
}

bzero((char *) &serv_addr, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
bcopy((char *) server->h_addr, (char *) &serv_addr.sin_addr.s_addr, server->h_length);
serv_addr.sin_port = htons(portno);
if(connect(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0)
error("Connection Failed:");

while(1){
bzero(buffer, 255);
fgets(buffer, 255, stdin);
n = write(sockfd, buffer, strlen(buffer));
if(n < 0)
error("Error on writing");
bzero(buffer, 255);
n = read(sockfd, buffer, 255);
if(n < 0)
error("Error on reading.");
printf("Server: %s", buffer);

int i = strncmp("bye", buffer, 3);
if (i == 0)
break;
}
close(sockfd);
return 0;

}
// compile: gcc -o client client.c
// client 127.0.0.1 or IP 9999

socket server programming

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>

void error(const char *msg)
{
perror(msg);
exit(1);
}

int main(int argc, char *argv[])
{
if(argc < 2){
fprintf(stderr, "Port No not provided. Program terminated\n");
exit(1);
}


int sockfd, newsockfd, portno, n;
char buffer[255];

struct sockaddr_in serv_addr, cli_addr;
socklen_t clilen;

sockfd = socket(AF_INET, SOCK_STREAM, 0);
if(sockfd < 0)
{
error("Error opening Socket.");
}

bzero((char *) &serv_addr, sizeof(serv_addr));
portno = atoi(argv[1]);

serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = INADDR_ANY;
serv_addr.sin_port = htons(portno);

if(bind(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0)
error("Binding Failed.");

listen(sockfd, 5);
clilen = sizeof(cli_addr);

newsockfd = accept(sockfd, (struct sockaddr *) &cli_addr, &clilen);

if(newsockfd < 0)
error("Error on Accpt");

while(1)
{
bzero(buffer, 256);
n = read(newsockfd, buffer, 255);
if(n < 0)
error("Error on reading.");
printf("Client :%s\n", buffer);
bzero(buffer, 255);
fgets(buffer, 255, stdin);

n = write(newsockfd, buffer, strlen(buffer));
if(n < 0)
error("Error on Writing\n");

int i = strncmp("Bye", buffer, 3);
if(i == 0)
break;

}

close(newsockfd);
close(sockfd);
return 0;

}

// compile : gcc -o server server.c
// server 9999