달력

52024  이전 다음

  • 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

AWS 에서 제공하는 AMI2 정보 / 링크 클릭시 자세한 설명을 확인 할 수 있다.

 

 

 

아래 명령어를 통해 php 버전 확인.

sudo amazon-linux-extras |grep php

 

 

ami 확장 리포지토리에서  php 7.3 버전 설치

yum 명령어를 통해 아래 내용 추가 설치 

sudo amazon-linux-extras install php7.3
sudo yum install  php-cli php-common php-gd php-mbstring  php-mysqlnd php-pdo php-fpm php-xml php-opcache php-zip php-bcmath

 

 

php 버전 확인

php -v
Posted by 무심법
|

정부 에서 제공하는 공공데이터

지역코드(lawdcd) 와 년월(ymd)를 입력받아 지역의 매매 자료를 조회한다.

 

이후 KakaoChg 함수는 공공데이터에서 주소를 분리하여 좌표로 변환하는 역할을 가지고 있으나,

테스트로 작성된 코드여서 임시 값으로 테스트만 진행 하였다.


@RestController
public class DataController {

    @GetMapping("/test")
    public String callApiGate(String lawdcd, String ymd) {
        String jsonPrintString = null;
        String apiUrl = "";
       
        // 국토교통부_오피스텔 매매 신고 조회 서비스
        apiUrl = "http://openapi.molit.go.kr/OpenAPI_ToolInstallPackage/service/rest/RTMSOBJSvc/getRTMSDataSvcOffiTrade?"
                + "LAWD_CD=" + lawdcd + "&DEAL_YMD=" + ymd
                + "&serviceKey=******************************";
        // serviceKey 는 공공데이터 포털을 가입후 발급 신청 하여야 한다.
        jsonPrintString = callApiWithJson(apiUrl);
        
        // 받은 데이터 출력 
        System.out.println(jsonPrintString);
        
        // 수신한 공공데이터의 주소 부분한 잘라내어, 맵(카카오,네이버)에 표시 할 수 있는 좌표계로 변환.
        jsonPrintString = KakaoChg("강남대로 100");

        return jsonPrintString;
    }

    private static String GEOCODE_URL="http://dapi.kakao.com/v2/local/search/address.json?query=";
    
    // 카카오 개발자 센터 에서 api 키를 발급 받아야 하며, 아래와 같이 한칸 띄우고 사용한다.
    private static String GEOCODE_USER_INFO="KakaoAK *******************"; 
  
    private String KakaoChg(String args) {
      
        URL obj;
        String jsonPrintString = null;

        try{
            System.out.println(args);
            String address = URLEncoder.encode(args, "UTF-8");
            
            obj = new URL(GEOCODE_URL+address);
         
            HttpURLConnection con = (HttpURLConnection)obj.openConnection();
            
            con.setRequestMethod("GET");
            con.setRequestProperty("Authorization",GEOCODE_USER_INFO);
            con.setRequestProperty("content-type", "application/json");
            con.setDoOutput(true);
            con.setUseCaches(false);
            con.setDefaultUseCaches(false);
         
            Charset charset = Charset.forName("UTF-8");
            BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream(), charset));
            
            String inputLine;
            StringBuffer response = new StringBuffer();
            
            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }
            JSONParser json= new JSONParser();
            org.json.simple.JSONObject jsonObject = (org.json.simple.JSONObject)json.parse(response.toString());
            
            jsonPrintString = jsonObject.toString();
      } catch (Exception e) {
         e.printStackTrace();
      }
        return jsonPrintString;
   }

    private String callApiWithJson(String apiUrl) {
        StringBuffer result = new StringBuffer();
        String jsonPrintString = null;
        try {
            URL url = new URL(apiUrl);
            HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
            urlConnection.connect();
            BufferedInputStream bufferedInputStream = new BufferedInputStream(urlConnection.getInputStream());
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(bufferedInputStream, "UTF-8"));
            String returnLine;
            while ((returnLine = bufferedReader.readLine()) != null) {
                result.append(returnLine);
            }

            JSONObject jsonObject = XML.toJSONObject(result.toString());
            jsonPrintString = jsonObject.toString();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return jsonPrintString;
    }
}

간단히 위와 같이 api 를 수신하여 결과를 확인 할 수 있다.

Posted by 무심법
|
ln -sf ../usr/share/zoneinfo/ROK /etc/localtime


일케 로컬 타임시간을 엎어치고

로컬 시간을 조정해줍니다.

네 그렇습니다.

Posted by 무심법
|

# cvs 계정 생성 ( CVS 서버 실행 root 계정 )
1. /home 에 mkdir [ID]
2. useradd [ID] -d /home/[ID] -g CVS ID
3. passwd [ID] (pass 2회 입력)
4. vi /etc/group     가장 하단 cvs : 계정추가
5. cd /[ID]

 - 아래는 정상일때 해야할 필요 없음 자동 생성
6. cp 다른계정의[ID] /.bashrc ./
7. cp 다른계정의[ID] /.vimInfo ./
 - 복사한 파일의 내용 추가되는 아이디로 수정

# cvs 계정 생성 ( 소스 작업 서버 )
1. useradd [ID] -d /[ID]
2. cvs /[ID]
3. vi /.bashrc 에 cvs서버의 해당 ID 디렉토리의 vi .bashrc 의 CVSROOT 내용 추가
4. cvs login [ID]
   cvspass 파일이 정상 생성되었는지 확인
5. 클라이언트 컴퓨터의 루트 계정으로 해당ID 비번 서버와 같이 셋팅
Posted by 무심법
|

개인 키를 내 작업 컴퓨터에 저장하고 서버컴퓨터에 동일 계정으로 접속할때

다시 패스워드 입력을 묻지 않는다.
----------------------------------------------------------------------------------


1. 내 작업 컴퓨터 에서 실행

[linux@linux ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/jinynet9/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):                             ==>
Enter same passphrase again:                                            ==>
Your identification has been saved in /home/jinynet9/.ssh/id_rsa.       ==>
Your public key has been saved in /home/jinynet9/.ssh/id_rsa.pub.       ==>
The key fingerprint is:
63:42:23:50:38:08:e9:35:28:90:79:1d:00:10:b0:d3 linux@linux


 "-t" 옵션을 줄수도 있지만 먼지 모른다.


 2. 서버에서 실행

 [jinynet9@Jinux ~]$ scp .ssh/id_rsa.pub 165.133.13.199:~/.ssh/authorized_keys
linux@아이피">jdkim@아이피's password: 입력

 100%  224     0.2KB/s   00:00


Posted by 무심법
|

single linked list

develop life/c 2009. 8. 17. 10:41

작성자 : 김정덕


#include <stdio.h>
#include <malloc.h>
#include <unistd.h>
#include <string.h>
#include <sys/time.h>
#include <errno.h>
#include <stdlib.h>

#define DUP_METER   1000000

typedef int             INT;
typedef unsigned int    UINT;
typedef long long       INT64;
typedef time_t          TIME_T;

typedef unsigned long long TIME_64;
typedef unsigned long long UINT64;


unsigned long long timestamp( void )
{
    struct timeval  tv;
    unsigned long long ullRetval;

    memset( &tv, 0, sizeof( struct timeval ) );
    gettimeofday( &tv, NULL );
    ullRetval = ( tv.tv_sec * DUP_METER ) + tv.tv_usec;

    return ullRetval;
}

typedef struct _st_linkdata
{
    INT64   llkey;
    char    body[1024];
//  int     d_num;
    struct _st_linkdata *next;

}st_linkdata, *pst_linkdata;

pst_linkdata pnode; //  전역 구조체로 선언
pst_linkdata ptmp;

int main (int argc, char *argv[])
{
    int ch1; //첫케이스문 사용 변수

    while (1)
    {
        fflush(stdin);//  입출력 버퍼 초기화

        print_Menu(); // 메뉴 함수  호출
        scanf("%d", &ch1);

       if (ch1 < 0 || ch1 > 5) 지정 값 이외의 수가 입력 되었을때 에러
       {
            fprintf(stderr, "SCANF ERROR : %d\n", ch1);
            continue;
       }
      switch(ch1){ // 스위치 문 실행

            case 1:
                makeNew_link();//데이터 생성 함수
                print_list();// 화면 결과 출력 함수
            break;

            case 2:
                search_link();// 서치
            break;

            case 3:
                free_link();// 데이터 삭제 함수
                print_list();// 화면 결과 출력 함수
            break;

            case 4:
                print_list(); // 화면 결과 출력 함수
            break;

            case 5:
                return 0;
            break;
        }
    }
    return 0;
}

 

int makeNew_link()
{
    int dt;// 실행문에서 데이터 값을 직접 입력 받기 위해 사용 하였으나 삭제 비실행 변수
    fprintf(stdout,  "###CREATE NEW DATA### \n" , NULL);
    pst_linkdata pdata;

    pdata = (pst_linkdata)malloc(sizeof(st_linkdata));// 메모리 할당 부분
    pdata->next  = NULL;// 할당된 pdata의 다음 가르켜야 할 구조체를 를 NULL표시
    pdata->llkey = timestamp();// 키값을 타임 스탬프로 고유 값 입력

 

    if (pdata == NULL) // 메모리 할당 실패시 에러
    {
        fprintf(stdout, "MALLOC ERROR (%d:%s)\n", errno, strerror(errno));
        return -1;
    }
    ptmp = pnode;// 조작을 위해 pnode 첫번째를 임시에 저장
    sleep(1);// 그냥 그럴싸 하게 보일려고 슬립 삽입
    fprintf(stdout,  "###   COMPLETE   ### \n"  , NULL);
    sleep(1);
    while(1)// 무한루프를 위해 조건을 1 로 하고 시작
    {
        if(!ptmp)// ptmp가 처음 일 경우 pnode 에 생성된 pdata 저장
        {
            pnode = pdata;
        }
        else
        {
            for(; ptmp->next; ptmp = ptmp->next);// 임시에서 다음 까지 계속 돌며 확인
            {
                if(ptmp->llkey == pdata->llkey)// 키값이 같으면 에러
                {
                    fprintf(stdout, "SAME DATA ERROR!!!!! \n", NULL);
                    return 0;
                }

                ptmp->next = pdata;// 같은 것이 없다면 임시의 다음은 pdata로 지정
            }
        }
        return 0;
    }
    return 0;
}

 

 

int search_link()
{
    INT64 dt;// 키값이 되는 변수 입력 받기 위해 사용
    int j=0; // 에러 처리를 위해 삽입된 변수
    fprintf(stdout,  "###Insert Data For Search: \n"    , NULL);
    fflush(stdin);// insert buffer init// 입력 버퍼 초기화
    scanf("%llx", &dt);

    ptmp = pnode; // 조작을 위해 임시에 저장

    if(pnode == NULL)// 데이터가 없다면 에러
    {
        fprintf(stdout, "NON DATA \n", NULL);

        return 0;
    }

    for(; ptmp != NULL; ptmp = ptmp->next)// 임시에서 다음으로 계속 돈다
    {
        if(ptmp->llkey == dt)// 키값이 입력값과 같다면
        {   j=1; // 동일 키값이 있다면 j는 1로 바뀐다.
            fprintf(stdout, "FIND DATA llkey -> %llx\n",  ptmp->llkey);// 키를 찾았으므로 출력
        }
    }
    if(j == 0) // 아까 선언 했던 것이 키값이 없으면 그대로 0 이다. 에러 화면
    {
        fprintf(stdout, "HAVE NOT PLACE !!!!", NULL);
        return 0;
    }
        return 0;
}

 


int free_link()// 삭제 함수
{
    INT64 dt;// 입력 을 받기 위해 선언 된 변수
    fprintf(stdout,  "###Insert Data For Datafree: \n"  , NULL);
    fflush(stdin);// insert buffer init// 입력 버퍼 초기화
    scanf("%llx", &dt);

    pst_linkdata pdel;// 삭제시만 사용 되는 임시 구조체
    ptmp = pnode;// 조작을 위해 pnode 를 임시에 저장

    if(pnode == NULL)// pnode 가 없으면 당연히 에러
    {
        fprintf(stdout, "NULL DATA \n", NULL);
        return 0;
    }
    if(pnode->llkey == dt)// 처음 값인pnode 가 키값이 동일 하다면 삭제
    {
        fprintf(stdout, "llkey :  %llx\n", dt);
        fprintf(stdout, "llkey :  %llx\n", pnode->llkey);
        fprintf(stdout, "firt delete\n", NULL);
        pnode = ptmp->next;// pnode는 pnode의 다음 값이 된다.
        free(ptmp); // 그리고 임시에 저장된 pnode 를 삭제 한다.
        return 0;
    }

    pdel = ptmp;// 처음이 아닐경우 사용 되는 임시 구조체에 ptmp 를 저장

    for(; ptmp != NULL; pdel=ptmp, ptmp = ptmp->next)// ptmp 가 NULL아닌 곳에서 부터  next 로 증가 pdel에 ptmp를 계속 받으면서 이동이 중요.
    {
        if(ptmp->llkey == dt)// 동일값 찾은 상태
        {
            fprintf(stdout, "llkey :  %llx\n", dt);
            fprintf(stdout, "llkey :  %llx\n", pnode->llkey);
            fprintf(stdout, "delete complete\n", NULL);

            pdel->next = ptmp->next;// 서치된 임시구조체의 next를 pdel 에 연결하고 ptmp를 삭제 
            free(ptmp);//ptmp삭제
            return 0;
        }

    }
        return 0;
}

int print_list()
{
    int i=0;
    ptmp = pnode;

    printf("RESULT ----\n");
    for(; ptmp != NULL; ptmp = ptmp->next)
    {   i++;
        fprintf(stdout,"No.%d  llKey : %llx\n", i, ptmp->llkey);
        fprintf(stdout,"-----------------------------------\n", NULL);
    }
    fprintf(stdout, "TOTAL : %d DATA SEARCH\n", i);
    return 0;
}
int print_Menu()
{
    fprintf(stdout, "\n-----LINKED LIST TEST-----\n\n", NULL);
    fprintf(stdout, "1.MAKE NEW LINKED DATA\n", NULL);
    fprintf(stdout, "2.SEARCH DATA\n", NULL);
    fprintf(stdout, "3.FREE DATA(DELETE)\n", NULL);
    fprintf(stdout, "4.PRINT LIST\n", NULL);
    fprintf(stdout, "5.FINISH\n", NULL);
    fprintf(stdout, "WHAT DO U WANT?(1~4) : ", NULL);
    return 0;
}


 

Posted by 무심법
|
작성 : 090806

오류 확인

[jdkim@...]$ ulimit -c unlimited
일케 해제하고 컴파일 하면

세그멘테이션 등의 오류가 파일의 오류위치 정보등 상세하게 저장된다.

보는 방법은
gdb JDK(filename) core.26460(err no)

ex) [jdkim@...]$ file JDK(filename) core.801021(err no)
gdb 진입후
'where' 명령을 입력하면 에러줄 이동

끝낼때는 quit 입력




코어 파일 일곽 삭제
rm core.*
rm core.25612






//에러 위치 구문에 직접 라인이 어디 까지 출력되는지 확인
 fprintf(stdout, "TEST : %d\n", __LINE__);



Posted by 무심법
|
xcopy 네트워크드라이브 잡기 백업 등등등 [S] 백업



g***** 

내가 작성한 파일

@echo off
cls
color 0f
echo ------------------
echo BBQWORLD DB Backup
echo ------------------
xcopy D:\database_bak\BBQWORLD_DB_BAK\BBQWORLD_DB_BAK_REAL\*.* w:\backup\ /c /d /e /y
 

echo ------------------
 성공
echo ------------------  
Posted by 무심법
|