728x90

ChatGPT와 같은 대화형 인공지능 API를 React에서 사용하려면 다음과 같은 단계를 수행해야 합니다.

  1. ChatGPT API를 사용하기 위해 API 키를 발급받습니다. API 키는 OpenAI 사이트에서 발급받을 수 있습니다.
  2. React 프로젝트에서 Axios나 Fetch API와 같은 HTTP 클라이언트를 사용하여 ChatGPT API를 호출합니다.
const axios = require('axios');

const prompt = "Hello, how are you?";

axios.post('https://api.openai.com/v1/engines/davinci-codex/completions', {
    "prompt": prompt,
    "temperature": 0.5,
    "max_tokens": 60,
    "top_p": 1,
    "frequency_penalty": 0,
    "presence_penalty": 0
}, {
    headers: {
        'Content-Type': 'application/json',
        'Authorization': 'Bearer YOUR_API_KEY'
    }
})
.then((response) => {
    console.log(response.data.choices[0].text);
})
.catch((error) => {
    console.log(error);
});
  1. 위 코드는 Axios를 사용하여 ChatGPT API를 호출하는 예시입니다. API 호출 시 https://api.openai.com/v1/engines/davinci-codex/completions URL을 사용하며, prompt 속성을 통해 인공지능 모델에 전달할 문장을 지정합니다. 그리고 다양한 옵션들을 설정하고, headers를 통해 API 키를 인증합니다.
  2. API 호출 결과는 response.data 속성을 통해 접근할 수 있습니다. 위 코드에서는 response.data.choices[0].text를 통해 반환된 답변을 출력하고 있습니다.
  3. 이제 ChatGPT API를 사용하여 React 애플리케이션에서 인공지능 대화 시스템을 구현할 수 있습니다.

목동코딩학원 : 온라인코딩교육, 유니티게임개발교육, 로블록스게임개발교육, 한국서비스산업진흥원, 플랫폼프로젝트수업

728x90
728x90
<?php
$oCurl = curl_init();
        curl_setopt($oCurl,CURLOPT_URL,$url);
        curl_setopt($oCurl,CURLOPT_RETURNTRANSFER, true);
        curl_setopt($oCurl,CURLOPT_NOSIGNAL, 1);
        curl_setopt($oCurl, CURLOPT_SSL_VERIFYHOST, false);
        curl_setopt($oCurl, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($oCurl, CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($oCurl, CURLOPT_VERBOSE, true);
        curl_setopt($oCurl, CURLOPT_TIMEOUT, 3);
        $response = curl_exec($oCurl);
        $curl_errno = curl_errno($oCurl);
        $curl_error = curl_error($oCurl);

        curl_close($oCurl);
?>
이와 같이 php source를 실행하려는데 error 가 난다. 원인을 찾아보니 추가로 설치해야 하는가 보다 ㅎㅎ
=============

Fatal error: Uncaught Error: Call to undefined function curl_init() 에러는 PHP에서 cURL 확장을 로드하지 않은 경우 발생합니다. 이 에러를 수정하려면 다음과 같은 단계를 수행해야 합니다.

도커 컨테이너 안에 들어가서 PHP와 cURL을 설치해야 합니다. 컨테이너에 들어가는 방법은 docker exec 명령어를 사용하는 것입니다. 예를 들어, docker exec -it <container_name> bash 명령어를 사용하면 <container_name> 컨테이너에 bash 셸로 들어갈 수 있습니다.

컨테이너 안에서 다음과 같은 명령어를 실행하여 PHP와 cURL을 설치합니다.

sql
Copy code
apt-get update
apt-get install -y php-curl
이 명령어는 컨테이너 안에서 apt-get을 실행하여 패키지를 업데이트하고, php-curl 패키지를 설치합니다. 이 패키지는 PHP에서 cURL을 사용할 수 있도록 해 줍니다.

PHP-FPM 서비스를 재시작합니다. 이 작업은 도커 컨테이너를 다시 시작하여 수행할 수 있습니다.

php
Copy code
docker restart <container_name>
이제 다시 PHP를 실행하면 Fatal error: Uncaught Error: Call to undefined function curl_init() 에러가 발생하지 않아야 합니다.
728x90
728x90

내 개인 서버에 Docker를 설치해서 잘 사용하고 있다.

그런데 오늘 외부에서 사이트 접속을 하는데 연결이 되지 않는다.

급하게 노트북을 열고 명령어를 몇개 쳐봤는데

이런 메시지가 나와서 나는 재시작만 하면 될거로 생각했는데 되질 않는다.

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

 

$sudo systemctl status docker

위의 명령어로 상태를 보니 Active로 상채가 표시된다. 어쨌던

$sudo systemctl start docker 를 다시 실행하고 사이트를 실행해 보지만, 역시 에러가 난다.

이것 저것 해봐도 안되기에 결국 재부팅을 했다.

이제 docker ps -a 명령어가 먹는다.

원인을 알고 싶은데 너무 쉬게 재부팅 한게 조금 아쉽다.

아마도 메모리 문제가 아니었을까 싶은 생각이 든다..

$reboot now.....

728x90
728x90

목동코딩학원:

리눅스 서버를 관리 하려면 직접 해결해야 할것이 많다.

예전에 호스트 컴퓨터로 작업을 할때엔 업무일지에 잘 적혀있는 명령어가 아주 큰 Know-How 였다

반면에 지금은 구글과 유튜브가 그역활을 대신 해준다.

중요한 내용이 암기가 실력이 아니라는 얘기다. 학습 능력이 정말 중요한 포인트인 것이다.

학원에서 수업을 하다 보면 아직도 선생님 수업만 받아적으려는 학습태도를 가진 학생을 볼때 마음이 답답하다

아래의 내용도 몇번의 구글 검색으로 해결했다.

볼륨추가 << 1000Giga

ubuntu@ubuntu1:~$ sudo su
root@ubuntu1:/home/ubuntu# fdisk -l

#파티션을 나눈다
root@ubuntu1:/home/ubuntu# fdisk /dev/vdc

Welcome to fdisk (util-linux 2.34).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x452e13e9.

Command (m for help): n
Partition type
p   primary (0 primary, 0 extended, 4 free)
e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-2097151999, default 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-2097151999, default 2097151999):

Created a new partition 1 of type 'Linux' and of size 1000 GiB.

Command (m for help): p
Disk /dev/vdc: 1000 GiB, 1073741824000 bytes, 2097152000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x452e13e9

Device     Boot Start        End    Sectors  Size Id Type
/dev/vdc1        2048 2097151999 2097149952 1000G 83 Linux

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

root@ubuntu1:/home/ubuntu# df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            2.0G     0  2.0G   0% /dev
tmpfs           394M 1004K  393M   1% /run
/dev/vda1        97G  1.8G   95G   2% /
tmpfs           2.0G     0  2.0G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/loop0       62M   62M     0 100% /snap/core20/1270
/dev/loop1       68M   68M     0 100% /snap/lxd/21835
/dev/vda15      105M  5.2M  100M   5% /boot/efi
tmpfs           394M     0  394M   0% /run/user/1000
/dev/loop3       50M   50M     0 100% /snap/snapd/18357
/dev/loop4       64M   64M     0 100% /snap/core20/1822
/dev/loop5       92M   92M     0 100% /snap/lxd/24061

#파티션을 포맷한다
root@ubuntu1:/home/ubuntu# mkfs.ext4 /dev/vdc1

#UUID를 확보한다
root@ubuntu1:/home/ubuntu# blkid

#디랙토리를 만든다
root@ubuntu1:/home/ubuntu# mkdir -p /home/ubuntu/storage

#재부팅시 자동 연결하기 위해서 파일에 설정한다
root@ubuntu1:/home/ubuntu# vi /etc/fstab
	LABEL=cloudimg-rootfs   /        ext4   defaults        0 1
	LABEL=UEFI      /boot/efi       vfat    umask=0077      0 1
	/dev/vdb        none    swap    sw,comment=cloudconfig  0       0
	UUID=0a76a959-85d1-4e8c-8fe6-6e8d036017f7 /home/ubuntu/storage ext4 defaults 0 0


root@ubuntu1:/home/ubuntu# mount -a
root@ubuntu1:/home/ubuntu# df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            2.0G     0  2.0G   0% /dev
tmpfs           394M  992K  393M   1% /run
/dev/vda1        97G  1.9G   95G   2% /
tmpfs           2.0G     0  2.0G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/loop0       62M   62M     0 100% /snap/core20/1270
/dev/loop1       68M   68M     0 100% /snap/lxd/21835
/dev/vda15      105M  5.2M  100M   5% /boot/efi
tmpfs           394M     0  394M   0% /run/user/1000
/dev/loop3       50M   50M     0 100% /snap/snapd/18357
/dev/loop4       64M   64M     0 100% /snap/core20/1822
/dev/loop5       92M   92M     0 100% /snap/lxd/24061
/dev/vdc1       984G   77M  934G   1% /home/ubuntu/storage

#볼륨을 해제하고 다시 사용할때 사용한다
umount /home/ubuntu/storage << 마운트 해제시
728x90
728x90

목동코딩학원 : 온라인코딩교육, 유니티게임개발교육, 로블록스게임개발교육

목동코딩학원:누시스템 , 플랫폼프로젝트수업을 통한 비지니스창업과정 진행

실력있는 미래 인재를 육성하기 위해 한국서비스산업진흥원과 인공지능을 활용한 플랫폼 비지니스 프로젝트 수업을 같이 하기로 업무협약서를 체결했습니다.

과정을 수료한 분들에게는 제가 지금 준비하는 비지니스에 참여하도록 진행할 계획입니다. 

수업 대상중 적성에 맞는 지원자를  1차 평가를 통해서  선출한뒤, 프로젝트를 진행을 함께할 계획입니다 

 

목동코딩학원 한국서비스산업진흥원과 인공지능교육에 관한 업무협약서체결
목동코딩학원:누시스템 , 플랫폼프로젝트수업을 통한 비지니스창업과정 진행

728x90
728x90

목동코딩학원,

 

부모님들이 엔트리는 코딩수업이고 로블록스는 게임인줄 아는 경우가 많다.

엔트리도 블록코딩 없이 오브젝트만 나열한다면 코딩공부가 아니다, 로블록스도 LUA 스크립트 없이 이것 저것 불러다 사용한다면 게임인 것이 맞다고 본다.

 

이번에 고등학교 신입생으로 1학면이 된 상민이는 유니티로 게임 개발을 하기 위해서 C#공부에 열심이고, 이번에 초등학교에 입학한 태준이는 LUA 스크립트를 적용하느라 아주 열심이다.

 

오늘 태준이는 수업을 한 주만 거르자는 아빠의 말에 대성 통곡을 해서 부리나케 학원에 보냈다면서 엄마의 카톡을 받았다 ㅎㅎ. 

아마도 태준이는 1주일간 쌓아논 말을 일요일에 다 푸는거 같다  아마 선생님 소리를 한 천번은 하는것 같다 ㅎㅎ.

10년, 20년 뒤가 기대되는 어린 학생들이다.....

  

목동코딩학원 : 온라인코딩교육, 유니티게임개발교육, 로블록스게임개발교육
목동코딩학원 : 온라인코딩교육, 유니티게임개발교육, 로블록스게임개발교육
목동코딩학원 : 온라인코딩교육, 유니티게임개발교육, 로블록스게임개발교육
목동코딩학원 : 온라인코딩교육, 유니티게임개발교육, 로블록스게임개발교육

 

 

목동코딩학원 : 온라인코딩교육, 유니티게임개발교육, 로블록스게임개발교육

 

목동코딩학원 : 온라인코딩교육, 유니티게임개발교육, 로블록스게임개발교육

 

728x90
728x90

목동코딩학원 :

날자 계산을 해야할 프로젝트는 항상 헤메게 된다.

자바스크립트, mysql, php 각기 문법이 조금씩 다르다.

그래서 이제는 기억할 생각을 안한다. 구글이 없었다면, 엄청 메모를 해야했을 걸 생각하면 아찔하다 ㅎㅎ

 

    <?php
    for($i=0;$i<7;$i++){
        $timestamp = strtotime("Now");
        $timestamp = strtotime("-$i days");

        // echo date("Y-m-d 00:00:00   ", $timestamp);
        $sDate =  date("Y-m-d 00:00:00   ", $timestamp);
        $tDate =  date("Y-m-d 23:59:59   ", $timestamp);
        // echo($sDate."    ");
        $data[] = Get7($tb,$sDate,$tDate);  
    }
    
    ?>
728x90
728x90
SELECT DAYNAME(date_column) as day, COUNT(*) as count
FROM table_name
WHERE date_column BETWEEN DATE_SUB(NOW(), INTERVAL 1 WEEK) AND NOW()
GROUP BY DAYNAME(date_column)

위 쿼리에서, table_name은 데이터를 가져올 테이블 이름을 나타내며, date_column은 날짜 정보가 저장된 컬럼 이름입니다. DAYNAME(date_column)을 통해 날짜 정보에서 요일 정보를 추출하고, COUNT(*)을 통해 해당 요일의 데이터 개수를 계산합니다. WHERE절에서 BETWEEN을 사용하여 1주일 전부터 현재까지의 데이터를 선택하고, GROUP BY절을 사용하여 요일별로 데이터를 그룹화합니다.

이렇게 작성한 쿼리를 실행하면, 각 요일별 데이터 개수를 나타내는 결과가 출력됩니다. 결과에서 day 열은 요일을 나타내는 문자열(예: Monday)이고, count 열은 해당 요일의 데이터 개수입니다. 필요에 따라 쿼리를 수정하여 요일별로 다른 계산을 수행할 수도 있습니다.

728x90

+ Recent posts