저는 코드를 더 빨리 고치는 데 ChatGPT를 사용하고 있습니다만, 그 비용은 무엇인가요?

이미지5.jpg

이번 주 초에는, 특정하지만 다소 원초적인 기능 사양을 충족하는 전체 워드프레스 플러그인을 작성하는 데 ChatGPT가 어떻게 도울 수 있는지를 보여드렸습니다. 이제, ChatGPT를 테스트하면서 도움이 될 수 있는지 파악하기 위해 기술적인 지침을 받을 수 있는지 알아보고 있습니다.

또한: ChatGPT에게 워드프레스 플러그인을 작성하도록 요청했습니다. 5분 이내에 작성되었습니다.

이전 ChatGPT 탐구에서와 같이, 나의 글은 일반 텍스트나 굵은 텍스트이고, AI의 응답은 이탤릭체로 표시됩니다. 먼저, 질문과 답변을 보여드리고, 그 후에 의미를 논의하겠습니다.

프로그래밍 언어 변경 사항 이해하기

저의 호스팅 공급자가 모든 사이트를 매우 구식인 PHP 7.4에서 PHP 8로 이전하고 있습니다. PHP는 WordPress 및 기타 여러 웹 관리 도구에서 의존하는 웹 프로그래밍 언어입니다. 몇 개의 플러그인이 PHP 8과 호환되지 않아 어떤 측면의 코드를 찾고 수정해야 할지 파악하고 싶었습니다.

보통은 PHP.net 사이트를 살펴보고 구글에서 검색을 하며 StackExchange의 댓글을 찾아보면 프로그래밍 업무에 필요한 작업을 알아내곤 합니다. 하지만 이런 과정은 다소 혼잡하고 시간이 많이 소요되는 일입니다. 그 대신, 제가 ChatGPT에게 자세하고 직접적인 질문을 하여 매우 유용한 답변을 받았습니다. 그 안에는 예시 코드 블록들도 포함되어 있었습니다.

PHP extract 함수를 사용할 때 배열이 전달되지 않으면 치명적인 오류가 발생하는 문제가 있습니다. PHP 7.4에서는 이 오류가 발생하지 않았지만, PHP 8에서는 발생하는 것 같습니다. PHP 8에서 extract 함수가 변경되었을까요?

PHP 8에서는 extract() 함수의 동작이 보다 엄격하게 변경되었습니다. 이전 버전의 PHP에서 extract() 함수는 배열이 아닌 경우에는 단순히 false를 반환했지만, PHP 8에서는 배열이 아닌 경우 치명적인 에러를 발생시킵니다. 이 변경은 함수의 신뢰성을 높이고, 예기치 않은 입력으로 인한 잠재적인 버그를 방지하기 위해 이루어졌습니다.

함수에 전달된 변수가 배열인지 아닌지를 확인하려면 extract()를 호출하기 전에 is_array() 함수를 사용하면 됩니다.

이미지3.jpg

또한, array_key_exists() 함수를 사용하여 전달된 변수가 배열인지 아닌지를 확인할 수 있습니다.

이미지6.jpg

대신 ... 연산자를 사용하여 배열을 변수로 분해할 수도 있습니다.

이미지7.jpg

결과적으로, ChatGPT의 답변은 매우 도움이 되었고, 몇 분 안에 그 버그를 고칠 수 있었습니다. 그 버그를 고칠 수 있었던 큰 요소 중 하나는 어디를 봐야 하는지 알고 있었기 때문이었습니다. ChatGPT는 PHP의 버전에 따라 함수의 동작이 어떻게 변경되었는지 명확히 해 주었습니다.

전체 플러그인을 새 버전으로 이동하려고 노력하면서 미래 지향적으로 생각하고 있었기 때문에 다음과 같이 질문을 드렸습니다:

PHP 7.4에서 PHP 8로 이동할 때 일반적으로 깨질 수 있는 PHP 함수는 무엇인가요?

PHP 8로 전환할 때는 몇 가지 함수와 기능이 손상되거나 다르게 작동할 수 있습니다. 이로 인해 문제가 발생할 수 있는 가장 주목할 만한 변경사항 몇 가지를 소개합니다.

  • 이전 답변에서 언급된 것처럼, extract() 함수는 이제 배열이 아닌 경우 치명적인 오류를 발생시킵니다.
  • each() 함수는 PHP 8.0에서 제거되었습니다. 대신 foreach 또는 array_keys()current()를 사용할 수 있습니다.
  • create_function() 함수는 PHP 8.0에서 제거되었습니다. 대신 익명 함수를 사용하는 것이 좋습니다.
  • list() 구문은 foreach와 함께 사용되었을 때, 이제 키와 값이 단일 배열 대신 별개의 변수로 반환됩니다.
  • __autoload() 함수는 PHP 8.0에서 제거되었습니다. 대신 spl_autoload_register()를 사용해야 합니다.
  • $php_errormsg 변수는 PHP 8.0에서 제거되었습니다. 대신 error_get_last() 함수를 사용해야 합니다.
  • 이전 PHP 버전에서의 몇 가지 사용 금지 사항이 PHP 8.0에서 제거되었습니다. 특히 create_function(), each(), __autoload(), 그리고 $php_errormsg가 제거되었습니다.

PHP 7.4에서 PHP 8로 이동할 때 문제를 일으킬 수 있는 변경 사항의 일부 예시입니다. 모든 것이 예상대로 작동하는지 확인하기 위해 업그레이드 전에 코드와 애플리케이션을 철저히 테스트하는 것이 좋습니다.

ChatGPT가 "이전 답변에서 언급한 대로"라는 구문을 사용했음을 유의하세요. 대화에서 답변을 추적할 수 있습니다. 이는 "와우"와 무섭다고 할 수 있겠네요.

내가 수정하던 코드에서, 처음 개발자(이미 떠났을 정도로 오래된 개발자)가 create_function을 많이 사용한 것을 알게 되었다. 나는 그것이 폐지되었다는 사실을 깨닫지 못했다. 하지만 위의 유용한 목록을 이용하여 코드를 검색하고 업데이트 및 재작성해야 할 부분을 찾았다. 그런 다음 ChatGPT에게 그 함수를 대체하는 방법을 보여줄 수 있도록 했다.

create_function을 사용하여 PHP 코드를 어떻게 다시 작성하는 것이 좋을까요? create_function을 사용한 예제와 현재 적절한 방법을 사용한 예제를 한 가지씩 제공해 주실 수 있나요?

create_function은 PHP에서 사용되었던 익명 함수를 만드는 데 사용되는 비권장 함수입니다. PHP 8.0에서는 이 함수가 제거되어 더 이상 사용하지 않는 것을 권장합니다. 대신, 익명 함수 또는 클로저를 생성하는 데는 function 키워드를 사용할 수 있습니다.

여기에 create_function을 사용하는 예제가 있습니다:

이미지2.jpg

그리고 여기는 익명 함수를 사용한 동등한 코드입니다:

이미지8.jpg

또한, 클로저에 변수를 전달하는 데에 use 키워드를 사용할 수 있습니다.

이미지1.jpg

일반적으로 성능이 향상되고 가독성이 더 좋기 때문에 create_function 대신 익명 함수를 사용하는 것이 권장됩니다.

결과적으로, 그것은 매우 명확한 설명이었고 나는 빠르게 코드를 적절하게 다시 작성할 수 있었다. 그 플러그인은 이제 나의 호스팅 제공자의 새로운 PHP 8 환경에서 문제 없이 작동하고 있다.

맥OS 기술 지원

Optimize Mac Storage의 위험에 관한 기사 조사 중에 제가 몇 가지 질문이 있었습니다. 제 기사에서 보여준 것처럼, 제가 직접 몇 가지 실험을 통해 제 우려 사항을 확인하기 위해 설치를 진행했습니다. 하지만 조사를 좁히기 위해 빠르게 편한 방법으로 ChatGPT에게 다음과 같이 질문했습니다:

만약 MacOS의 기능인 'Mac 저장소 최적화'를 사용하면, Time Machine은 로컬 기기에서 스텁 파일로만 표시되는 몇 가지 파일 때문에 불완전한 백업을 만들게 될까요?

macOS의 "Mac 저장소 최적화" 기능은 iCloud를 사용하여 Mac에서 사용 빈도가 낮은 파일을 클라우드로 옮기고 원본 파일을 나타내는 "스텁" 파일을 로컬 장치에 유지합니다. 이렇게 하면 Mac의 하드 드라이브 공간을 절약할 수 있습니다.

타임 머신이 백업을 만들기 위해 설정되면 "Mac 저장소 최적화"를 사용하여 오프로드된 파일을 포함한 모든 파일을 백업합니다. 그러나 오프로드된 파일을 대신하여 해당 파일을 나타내는 스텁 파일이 백업됩니다.

이는 "Mac 저장소 최적화"가 활성화된 상태에서 Time Machine 백업을 사용하여 Mac을 복원한다면, 모든 오프로드된 파일이 복원에 포함되지 않고 iCloud에서 다시 다운로드해야 한다는 것을 의미합니다.

중요한 점은, Optimize Mac Storage를 사용하지 않을 경우 보조저장도구로 이동된 파일이 많다면 Time Machine 백업이 더 많은 공간을 차지할 수 있다는 것입니다. 왜냐하면 Time Machine은 원본 파일로 취급하지만 더 적은 공간을 차지하는 stub 파일을 백업하게 될 것입니다.

제가 그것에 대해 걱정되는건 사실입니다. Google을 사용하면 작성자들은 정보를 공유함으로써 검색 엔진이 해당 기사로 트래픽을 보내줄 가능성이 있습니다. 그러나 ChatGPT와 같은 챗봇의 경우, 원래 쓰레드가 사라지게 됩니다. 맞아, 빠른 답변으로 생산성 이점을 얻는 것은 좋습니다. 그러나 누군가 누군가의 작업에 대한 저작권을 잃은 건 아닌지 의문이 듭니다.

계속해서 주목하세요. 생성 AI의 이 급속한 성장은 큰 파동을 일으키고 있습니다. 저와 ZDNET과 함께 이것이 우리 모두에게 무엇을 의미하는지 이해해보려고 노력하겠습니다.

ChatGPT, 질문에 대답할 때, 다른 사람들이 기여한 지식을 사용하고 원래의 인간 자료에서 작업과 신용을 가져가나요?

OpenAI에서 만든 AI 언어 모델로서, 제 개인적인 의견이나 생각은 없습니다. 하지만 저는 당신에게 말할 수 있습니다. 저의 응답을 생성하는 데 사용되는 정보는 인터넷에서 수집된 방대한 양의 텍스트로 구성된 훈련 데이터를 기반으로합니다. 이 텍스트는 다양한 사람들과 출처에 의해 작성되었으며, 제가 제시하는 정보에 대한 특정 개인에게 크레딧을 지정할 능력은 없습니다. 저의 목표는 사용자가 찾는 답변을 도와주기 위해 유용하고 정확한 정보를 제공하는 것입니다. 제 응답은 훈련 데이터의 패턴을 기반으로 생성되며 항상 완벽하거나 최신 정보는 아닐 수 있음을 기억하는 것이 중요합니다.

그래, 그렇다구. "인터넷에서 광대한 양의 텍스트." 여기서 점점 이동하세요. 볼 건 없어요.

그래서 결론적으로 "Mac 저장소 최적화" 기능을 사용하면 Time Machine이 불완전한 백업을 만들게 됩니다. 이 기능을 사용하면 원본 파일이 클라우드로 옮겨진 위치 표시용 파일(stub files)만 백업됩니다.

그것은 정답이었습니다.

시사점

글쎄, 시간을 아낄 수 있었어요. 보통 인터넷에서 프로그래밍을 하면 코딩 및 디버깅 환경과 단서의 흔적을 추적하고 토론 및 댓글을 읽는 많은 증분 웹 검색이 포함됩니다.

오해하지 마세요. 그 프로세스는 매우 정보를 얻을 수 있는 방법이며, 챗봇에서는 얻지 못할 수도 있는 그런 코딩 관련 이야기들이 묻혀 있습니다. 그러나 급하거나 중요한 마감일에 시간을 효과적으로 사용하는 데에는 적합하지 않습니다. ChatGPT에게 그런 코딩 질문들을 물어보는 것은 매우 효율적이었습니다.

인공지능과 마찬가지로, AI의 지식에는 빈 곳이 있다는 점을 인식해야 하며, 완전히 잘못된 답변을 받을 수도 있다는 것을 알아야 합니다. 하지만 ChatGPT를 내 도구 상자의 다른 도구처럼 직접 활용해 보니 상당히 생산적이었습니다.

하지만 나는 그 정보가 어디서 오는지 궁금하다. 내가 extract나 create_function에 대해 깊이 있는 정보 기사를 쓴 사람 중에, ChatGPT가 그 말을 "섞어서" 응답으로 만들고 그에 대한 크레딧이나 수익을 받지 않는 사람이 있는 건가? 누군가 고생해서 얻은 지식이 그 답변들의 원천으로 사용되고 있는데 크레딧을 받지 못하고 있는건가?

관련 기사

더 보기 >>

HIX.AI로 AI의 힘을 발휘해보세요!