안녕하세요 워누입니다. 

 

오늘은 IOS 앱을 만들기 위한 필수도구,

Xcode를 설치하는 과정을 포스팅해보고자 합니다ㅎㅎ

 

맥북의 앱스토어에 들어갑시다!!

 

앱스토어를 실행하면 위와 같이 화면이 나옵니다!

여기서 왼쪽 상단의 검색창에 xcode를 검색해볼까요?

 

Xcode 검색 결과가 바로 나오네요..!

오른쪽 Xcode 앱을 Get합시다!

 

다른 앱과 마찬가지로 앱스토어에 로그인되어야 앱을 다운받을 수 있습니다. 

 

다운받기 시작...!

 

핫스팟 써서 그런지 다운받는 동안 시간이 너무 오래 걸리더라구요...

(그래도 한시간은 좀 오바아니냐고...)

 

설치가 드디어 끝났습니다!

열기 버튼을 클릭하니 라이센스 동의여부를 묻는 창이 나오네요! 

 

"Agree" 버튼을 클릭해서 넘어갑시다.

 

 

맥북 활성화 암호를 입력하는 창이 뜨네요!

비밀번호 입력해서 넘어가줍시다.

 

Intel 베이스의 어플리케이션이라

M1 프로세서 사용자라면 로제타(Rosetta)를 설치해야 한다고 하네요!!

.

로제타만 있다면 Intel 베이스 어플리케이션들도 대부분은 M1에서 사용가능하다고 합니다!

(이젠 끝났겠지.....?)

 

네.. 드디어 끝났습니다!!

새로운 Xcode 프로젝트를 이것저것 다뤄볼 수 있겠습니다 ㅎㅎ

 

IOS 앱개발 포스팅에 관한 내용도 많이 기대해주시길 바라며 

오늘 포스팅은 여기서 마치도록 할게요!

 

감사합니다ㅎㅎ

안녕하세요 워누입니다! 

(오...카카오 이모티콘...!)

.

.

저는 보통 PHP나 기타 간단한 소스코드 편집을 할 때 주로 Notepad++을 사용했었는데요,

회사 동료들 및 개발자로 일하는 지인들이 Visual Studio Code(이하 VS Code)를 추천하더라구요!!

 

그래서 이번에 산 맥북에는 Notepad++ 대신 VS Code를 설치해보기로 하였습니다!

 

우선 VS Code 다운로드 경로로 이동해야겠죠?

아래 링크로 이동합니다!

 

https://code.visualstudio.com/

 

Visual Studio Code - Code Editing. Redefined

Visual Studio Code is a code editor redefined and optimized for building and debugging modern web and cloud applications.  Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows.

code.visualstudio.com

 

맥에서 링크를 이동하면 아래와 같이 화면이 나오는데요~

 

 

"Download Mac Universal"을 클릭해주세요!

 

 

페이지 이동과 함께 zip 파일이 다운로드가 됩니다!

 

 

다운로드가 완료되면  "Finder"에서 압축파일을 확인하실 수 있는데 윈도우와 똑같이 압축을 풀어줍시다~

 

 

응용프로그램이 바로 보이죠?

그대로 클릭해서 실행하시면 됩니다!

 

'열기' 버튼 클릭!

 

 

생각보다 설치가 쉽죠? 

자 이제, 기본설정을 진행해봅시다!

.

오른쪽 아래 종모양에 흰색 동그라미 점이 찍혀있죠?! 한번 클릭해볼까요?

 

 

오... 한글 팩을 지원하네요 ㅎㅎ

"설치 및 다시 시작" 버튼을 클릭해주세요!

 

 

첫 화면에서 보이던 영어가 한글로 바뀐 것을 볼 수 있습니다!

.

색 테마가 밝음, 어두움, 고대비 3가지 뿐 아니라 '더 많은 테마 보기...'를 클릭하시면 다양한게 나와요!

여러분이 찾아 보시고 맘에 드는거 선택하시면 되어요 ㅎㅎ

 

 

제가 적용한 색은 "내일 밤 푸른색"이라는 색 테마입니다! 

적용이 완료되었다면 다음 항목을 체크해보죠!

 

 

'모든 언어에 대한 다양한 지원' 항목을 클릭하면 마켓플레이스를 통해 원하는 개발언어를 찾아 설치할 수 있어요!

VS Code의 가장 큰 강점이라고 하네요!

 

 

저는 우선 HTML/CSS Support를 설치해보았습니다!

추후 다른 언어들도 여기에서 찾아서 적용해보면 좋겠네요 ㅎㅎ 

 

 

그외 확장 기능들을 하나씩 체크해보시고 체크할게 없다면 "다음 섹션"을 한번 클릭해보세요!

 

우선 저는 별다른 특정 기능을 사용하지 않을 거라 '완료로 표시' 클릭하였습니다. 

 

tmi : "플레이그라운드"란 어떤 코드를 입력하면 실시간으로 결과가 실행되는 인터랙티브 환경을 뜻해요! 

코드 문법을 배울때 유용하게 써먹을 수 있다고 하네요!!

(이것도 VS Code의 강점이라고 할 수 있겠습니다!)

 

대충 설정을 끝냈네요~

더 추가 설치할게 있거나 설정이 필요하다면 왼쪽 상단의 '확장' 버튼 혹은 왼쪽 하단의 톱니바퀴 모양을 통해 

추가 설치 및 설정을 할 수 있습니다!!

.

VS Code에서 작업한 내용 중 블로그에 포스팅할만한 내용이 있다면 업로드 해보겠습니다 ㅎㅎ 

 

오늘 포스팅은 여기서 마무리 하겠습니다!

감사합니다!

'기타' 카테고리의 다른 글

VS Code(비주얼 스튜디오 코드)에서 FTP 연결하기!  (0) 2021.12.31

안녕하세요 워누입니다.

오늘은 지난 포스팅에 이어 Mac OS에서 git을 설치하는 방법을 포스팅하겠습니다!
.
우선 제 MacOS 정보는 이렇습니다..!

.
앱개발 용도 및 필요 시 영상편집 용도로도 사용할 예정이다보니 조금 좋은 사양으로 구매했답니다 ㅎㅎ
자세한 스펙은 아래 링크에서 참조해주세요!

https://blog.naver.com/wonwoo9276/222470396365

Apple Macbook Pro 13 / 맥북프로 13인치 (M1) 구매후기 _ 1탄

안녕하세요 워누입니다! 오랜만에 구매리뷰를 남겨보네요..! . 오늘 포스팅할 리뷰는...바로!!! "맥....

blog.naver.com


아..아니 암튼.. 맥에서 깃설치 하는걸 포스팅해야하나 싶기도 하죠..?
.
'아니.. 윈도우랑 별반 다를게 있나..? 윈도우랑 똑같이 설치하면 되는거 아닌가..??'
라고 저도 생각했는데요..

쉽게 생각하고 윈도우에서 깃을 설치할 때처럼 git 다운로드 링크에 들어갔습니다.
(다운로드 링크는 아래에 접속하시면 돼요!!)

https://git-scm.com/downloads

등장한 깃다운로드 화면을 따라 'Download for Mac'을 클릭했는데...

이런 화면이 뜨고 설치파일은 다운받아지지 않네요..???
정말 당황스러운 순간이었어요..ㅜ
.
윈도우처럼 좀 쉽게 다운받게 해주지 이게 뭐람..

그래서 git을 설치 못하는 와중에 문득
'맥북에서는 설치되지 않은 명령어 입력할 때 어떻게 나오나?' 생각하며
터미널로 접근해보았어요..!

tmi : 터미널로 접근하는 방법은 우상단 돋보기 모양 클릭한 다음 검색창에 '터미널' 검색하면 된답니다.

오른쪽 위 보이는 돋보기 모양

git 버전을 확인하는 명령어인 'git --version'을 입력했는데요..
결과는 당연히..


.....???
네..?
설치하라구요??
그럼요!!!??!
바로 설치버튼 클릭합니다!!

허가된 사용자에 대한 약관 동의내용이군요!
이런건 당연히 "동의"해줘야 인지상정!

오.. 설치가 진행되는데..?
시간이 18시간..???
....
인줄 알았으나 5분정도밖에 안걸리더라구요ㅋㅋㅋㅋ

완료가 되면 닫아주시고 아래 명령어를 입력해주세요!

$ git

.

오... 정상적으로 설치가 되었군요...
당황스럽지만 일단 되었으니.. 깃에 사용자 정보를 입력해보겠습니다!


git에서 사용자 정보를 입력하려면, git config 명령을 사용하는데요, 여기서 --global 옵션을 추가하면 현재 컴퓨터에 있는 모든 저장소에서 같은 사용자 정보를 사용하도록 설정하게 되어 있어요!
.
저는 제 깃 계정에 설정된 이름과 메일인 seoneu, wonwoo9276@naver.com으로 설정해주었답니다!

..
오늘의 포스팅 내용 세줄 정리..

1. 깃 설치 페이지에서 윈도우처럼 다운로드 버튼 클릭한다고 설치파일 다운로드 안됨.
2. 터미널 실행해서 git 명령어 입력하고 엔터쳐서 git 설치 안되어있으면 설치할거냐고 물어봄.
3. git 설치할거면 동의하면 알아서 설치되고 완료되면 Mac OS에서 깃 사용 가능.

.. 그렇습니다 ㅎㅎ
어렵게 돌아가지 마시고 저렇게 설치해보시는 것도 방법입니다!

뭔가 좀 헛고생한거 같지만.. 나름 맥 적응기라고 생각해야겠죸ㅋㅋㅋㅋ
포스팅은 여기서 마무리하도록 하겠습니다!!

그럼 20000!

'git&github' 카테고리의 다른 글

Windows에 git 설치하기!  (0) 2021.09.02

안녕하세요 워누입니다. 

.

깃(Git) 혹은 깃허브(Github)에 대하여

개발자이시거나, 개발자로 취업을 원하신다면, 혹은 IT업계 종사자나 학생분들이라면 

무조건 들어보셨을거에요!

 

Git은 오픈소스 프로젝트로 많이 공유도 되어있고 회사 내에서도 자주 사용할 뿐 아니라

개발쪽 취업하시는 분들은 Git으로 포트폴리오를 만들기도 하더라구요 ㅎㅎ

 

그래서 이제 막 Git에 관심가지기 시작한 저희 회사 후배들을 포함

이 블로그가 도움이 되실 법한 분들을 위해 부족한 글솜씨지만 포스팅해볼게요:)

.

오늘은 Windows에 Git을 설치하는 것부터 시작해보겠습니다!

 

Git 설치 파일은 아래 경로에서 다운로드 받을 수 있어요!

 

https://git-scm.com/downloads

 

Git - Downloads

Downloads macOS Windows Linux/Unix Older releases are available and the Git source repository is on GitHub. GUI Clients Git comes with built-in GUI tools (git-gui, gitk), but there are several third-party tools for users looking for a platform-specific exp

git-scm.com

 

해당 링크에 접속하시면 아래 화면이 나타나실 거에요! 

저는 OS가 윈도우이므로 오른쪽 모니터에 있는 "Download for Windows" 버튼을 클릭하겠습니다!

(다른 운영체제를 사용하시는 분들은 다른 운영체제 버전으로 다운받아 주시면 되어요!) 

버튼을 클릭하면 위와 같이 다운로드가 시작되었다면서 파일이 다운받아질 것입니다. 

다운로드가 완료되면 exe 파일을 확인하실 수 있는데요. 

9월 1일 기준 가장 최신 버전은 2.33.0.2네요! 

.

exe 파일을 다운받았다면 그대로 더블클릭해서 실행해줍시다!

첫번째로는 라이선스를 묻는 질문이에요! 그렇구나...하며 "NEXT"를 눌러서 넘어갑시다!

가장 중요한 경로설정 타임!

저는 C드라이브가 꽉차서 D드라이브에 설치할거에요!

(경로 잘못 설정하면 재설치해야 할수도 있으니 꼭!꼭! 확인하세욥)

컴포넌트를 선택하라는데.. 

기본적으로 제공하는 컴포넌트 사용하겠습니다! 

어차피 다 모르니.. 바로 "Next" 클릭!

시작할 매뉴 폴더를 선택....?

이것도 그냥 작성되어 있는 그대로 하고 "Next"!

Git 편집기 선택하라는 내용이네요! 

기본이 Vim 편집기인데요, 선택 옵션이 생각보다 많으니 자신이 쓰기 좋은 편집기를 선택하시면 됩니다!

선택 완료하고 "Next" 버튼 클릭!

오...오.. 새 저장소(Repository)에서 초기 branch 이름...?

선택지에 Git이 결정하라는게 있네요. 선택하고 "Next" 버튼 클릭합시다 ㅎㅎ

설치하는데 많은 영어가 나오는군요ㅜ

커맨드라인에서 어떤 방법으로 깃을 사용할지 선택하라는데..

기본값이 가운데 선택되어 있으니 선택된 그대로 "Next" 누르겠습니다. 

 

ssh 실행파일을 선택하라는군요!

이건 외부에서 불러오지 말고 선택된 그대로 git에 내장된 ssh 실행파일을 선택하겠습니다. 

"Use bundled OpenSSH" 선택 후 "Next"!

 

보안 서버에 접속하기 위한 방법을 선택하는군요! 

이것도 기본값 "Use the OpenSSL library"을 선택하고 "Next" 눌러서 넘어갑니다. 

 

이번에는 텍스트 파일에서 줄 끝부분을 어떻게 처리할 것인지 선택합니다. (별걸 다 체크하네)

이것도 기본값 선택 후 "Next" 눌러줍시다.

 

터미널 에뮬레이터를 구성하기 위한 옵션이군요.

저는 여기서 기본값 "Use MinTTY"가 아닌 "Use Windows' default console window"를

선택하였어요! 다음!!

 

git pull에 대한 기본 동작도 기본값 "Default"로 선택하고 "Next" 버튼 클릭합니다. 

이건 또 뭐람... 자격 증명 도구..?

이것도 기본값 선택해서 넘어갑시다! 

기타옵션을 선택하는 화면이 나왔네요!

기본값 선택 후 "Next" 버튼 클릭해주세요!

기타 옵션이 뭐가 많네요... 이거는 아무것도 체크되어 있지 않은 상태여서 

저도 체크하지 않았답니다!

바로 "Install" 버튼 클릭해서 설치를 진행하도록 할게요!

설치가 원활하게 진행되고 있군요...!

인내심을 갖고 1분정도만 기다려보아요 ㅎㅎ

설치가 완료되었네요! "Finish" 버튼을 클릭합시다!

.

그래도 잘 설치되었는지 한번은 확인해 보아야겠죠?

시작 매뉴에서 "git bash"를 검색해서 실행합니다. 

git bash를 실행하면 cmd 창처럼 출력될텐데요 

여기서 명령어 "git"만 입력해줍시다. 

 

$ git

Enter 쳐서 아래와 같은 화면이 나오면 성공입니다!

여기까지 잘 마무리 되셨나요?ㅎㅎ

그럼 설치가 완벽히 되신 겁니다!

 

다음 포스팅은 맥에서 설치하는 방법도 한번 같이 포스팅해볼게요~

오늘은 여기서 이만 마무리하겠습니다!!

'git&github' 카테고리의 다른 글

Mac에 git 설치하기  (0) 2021.09.05

안녕하세요 워누입니다. 

 

너무 오랜만에 tistory 블로그를 작성해보네요 ㅎㅎ

오늘은 그동안 바쁘다는 핑계로 이리저리 미루다가 드디어 PHP8을 설치하고 체험해보는 내용으로 포스팅해보겠습니다!

 

PHP로 개발을 하려면 웹 서버인 아파치, PHP 언어, DB를 사용한다면 MySQL 등 여러가지를 설치해야 하는데요, 

요즘에는 여러 회사들에서 이를 하나로 묶어

WAMP(Windows+Apache+MySQL+PHP), WAPP(Windows+Apache+PostgreSQL+PHP), MAMP(MacOS+Apache+MySQL+PHP) 등을 출시해서 서버부터 언어, DB를 한번에 통합으로 설치할 수 있게 배포하고 있습니다!

 

저는 윈도우로 사용할 예정이라 Bitnami사에서 제공하는 WAMP 스택으로 설치해보겠습니다. 

.

사실 Bitnami에서 제공하는 WAMP는 제가 PHP 관련해서 짧게나마 소개했었는데요!

 

https://seoneu.tistory.com/16

 

PHP 맛보기

안녕하세요 워누입니다! . 직장에 다닌다는 핑계로, tistory를 방치하고 있었네요..ㅜ 그래도 나름 자료가 유용했는지 방문자님들이 계셔서 감사한 마음입니다ㅎㅎ . 저는 직장에서 주로 PHP를 쓰

seoneu.tistory.com

 

오늘은 Bitnami 사이트에서 설치하는 방법을 제대로 소개해드리도록 해볼게요 ㅎㅎ

우선, Bitnami 사이트로 이동해서 통합버전 파일을 다운받아야겠죠?

 

https://bitnami.com/stack/wamp/installer

 

Install WAMP, Download WAMP

show MD5 4b221c61594ee6098ddc156acef7efc4 SHA1 799d7f122a3236f648effd6c4de77e3fcdf91a41 SHA256 a816b29ac59df47c1e9ceef4b546086ba40b7922446f603baa6d533c0d19e202

bitnami.com

 

저는 검색했지만 이 글을 보고 PHP8 설치하시려는 분은 위 사이트 클릭해서 바로 들어가세요 ㅎㅎ

.

여튼 위 사이트를 들어가면 아래와 같이 화면이 나올겁니다!

8월 22일 기준 가장 최신 버전은 PHP 8.0.9 입니다!

(PHP 메이저버전을 차용한듯 합니다.)

 

저는 최신버전인 8.0.9를 바로 다운로드 하겠습니다.

버전이 업데이트된다면 새로운 버전 다운받으셔도 될 것 같아요..!

.

주황색 다운로드 버튼을 클릭하면 아래 화면이 나오는데요,

 

Bitnami 커뮤니티에 의견을 제시하거나, 뉴스레터를 굳이 전달받지는 않을거라 

"No thanks, just take me to the download" 버튼을 클릭해서 다운로드를 진행하면 됩니다.

.

.

다운로드가 완료되면 exe 파일을 바로 실행해줍니다!

클릭하면 아래와 같이 설치 시작 화면을 볼 수 있어요

 

묻지도 따지지도 않고 "Next" 버튼을 클릭합니다!

 

다음 화면은 컴포넌트 선택화면인데요,

PHP하면 유명한 라라벨(Laravel) 프레임워크, 젠드(Zend) Framework 등 여러가지가 있네요ㅎㅎ

 

저는 바로 "Next" 버튼 눌러주겠습니다!

(필요없는 기능이라고 생각되면 빼셔도 상관은 없답니다 ㅎㅎ)

.

설치 경로를 설정할 수 있는데요,

저는 D 드라이브에 공간이 넉넉해서 "D:\Bitnami\wampstack-8.0.9-0"로 경로를 바꿨어요!

 

경로를 지정해줬다면 "Next" 버튼을 클릭합니다!

.

데이터베이스 비밀번호를 설정하는 화면이네요!

자신만의 비밀번호를 설정하고 "Next"를 클릭합니다. 

.

DB 포트 설정입니다.

저는 이미 사용하는 DB의 포트가 각각 3306, 3307로 설정되어 있어서 3308로 지정되어 있구요!

아마 각자 DB포트 설정에 따라 번호가 지정될거에요!

.

그대로 "Next" 버튼을 클릭해줍니다.

 여기서는 그냥 "Next" 버튼을 클릭해주세요!

설치 직전 화면입니다!!

준비가 되었다면 "Next" 버튼 클릭!

자 이제 설치를 시작합니다!

설치하는 동안 다른 거 잠깐 하고 오셔도 될거 같네요 ㅎㅎ

 

설치하던 도중 아파치 경고창이 떴습니다!

어차피 개인용으로 사용할 거라 둘다 체크하고 "엑세스 허용"하면 될거 같아요.

 

설치가 마무리되었습니다!

체크박스에 체크를 하고 "Finish" 버튼을 클릭해볼까요?

 

인터넷 브라우저에 이렇게 뜨면 설치 완료입니다!

 

설치 경로인 "D:\Bitnami\wampstack-8.0.9-0" 폴더도 정상적으로 세팅되었네요!

마지막으로, PHP 버전을 확인해봐야겠죠?

웹서버에 phpinfo() 함수를 걸어봅시다.

 

<?php
phpinfo();
?>

 

위 소스코드를 "phpinfo.php" 라는 파일명으로 저장한 후 브라우저에서 실행해보면.. 

정상 설치되었네요! 

이제 PHP8을 제대로 사용해보도록 하겠습니다!

간간히 PHP7과 PHP8 비교해보는 포스팅도 올려보도록 해볼께요 ㅎㅎ

 

오늘 포스팅은 여기서 마무리하도록 하겠습니다!

안녕하세요 워누입니다. 

오늘은 PHP에서 사용하는 비교연산자 중 헷갈릴만한 요소를 포스팅해보고자 합니다!

.

우선 소스부터 함께 보시죠!

.

:: 소스코드 - equalTest.php ::

<?php 

$int5 = 5;				// 정수형 숫자 5
$str5 = '5';				// 문자열 5

if ($int5 == $str5){		
	echo "true"."<br>";
} else {
	echo "false"."<br>";
}

if ($int5 === $str5){
	echo "true"."<br>";
} else {
	echo "false"."<br>";
}
?>

위 소스코드는 숫자 5와, 문자열 5를 비교하여 같으면 true, 다르면 false를 출력하는 소스코드입니다. 

아래 결과를 보기 전 결과가 어떨지  미리 생각해보아요~

.

결과는 어떤지 이제 한번 보도록 하죠!

.

:: 결과화면 ::

equalTest.php 실행화면

 

비교연산자 중 '==' 으로 비교한건 true가 나오고, '===' 으로 비교한건 false가 나왔네요! 

이유는 '=='으로 비교할 땐 값의 일치여부만 판단하지만,

'==='으로 비교하게 되면 자료형의 일치여부까지도 판단하기 때문인데요!

즉, 변수 int5와 str5의 값은 동일하게 '5'이므로 '=='으로 비교하였을 땐 같다고 판단하여 true를,

'==='으로 비교하였을 땐 자료형이 각각 정수, 문자열로 서로 다르기에 false를 출력하였습니다!

.

그렇다면 부정을 의미하는 !=, !==은 어떤지 같이 살펴 볼까요?

 

:: 소스코드 - equalTest2.php ::

<?php 

$int5 = 5;				// 정수형 숫자 5
$str5 = '5';				// 문자열 5

if ($int5 != $str5){		
	echo "true"."<br>";
} else {
	echo "false"."<br>";
}

if ($int5 !== $str5){
	echo "true"."<br>";
} else {
	echo "false"."<br>";
}

?>

 

이번엔 반대로 다르면 true, 같으면 false를 출력하도록 바꿨습니다.

결과를 바로 보시죠!

 

:: 결과화면 ::

equalTest2.php

 

예상대로 '!='로 비교하였을 땐 두 변수 모두 같은 값을 가지고 있어 false를 출력하였고, 

'!=='으로 비교하였을 땐 두 변수의 자료형이 다르니 true를 출력하였네요!

 

!= 연산자는 값의 다름만을 판별하지만,

!== 연산자는 값은 물론 자료형의 다름까지 판별한다는 점을 알게 되었네요 ㅎㅎ

.

위에서 언급한 '==', '===', '!=', '!==' 비교연산자는 javascript에서도 동일하게 적용된다고 하네요!

php가 웹에 특화된 언어인 만큼 javascript를 같이 사용하시는 분도 많을테니 참고하시면 도움이 될 듯합니다!

 

이번 포스팅도 유용한 글이 되었기를 바라며, 여기서 마무리 하겠습니다!

그럼 2만~

 

안녕하세요 워누입니다!

방통대 학업과 회사 일을 병행하다 보니 꾸준히 포스팅하겠다는 의지가 꺾여버렸네요..

그동안 포스팅해야 하는 내용들을 산더미처럼 쌓아놓고 정작 쓰질 않아 귀찮음이 좀 많이 생겼지만,

이제라도 하나씩 풀어야겠습니다!  

.

오늘 포스팅할 내용은 PHP로 JSON data를 다루는 법을 포스팅하겠습니다! 

PHP에서 JSON data를 처리할 수 있도록 json_encode(), json_decode() 함수를 지원합니다.

 

우선 json_encode() 부터 볼까요? 

.

1. json_encode()

:: php에서 배열 데이터를 json 데이터로 바꿔주는 역할을 합니다. 

사용 방법은 아래와 같이 사용하시면 됩니다!

 

json_encode(변수);

.

그럼 거두절미하고 바로 사용예시부터 볼까요?

:: 소스 코드(example) / jsonEncode.php :: 

<?php

//배열 데이터 생성 
$arrData = array(
	'ID' => 'testID',
	'buyerNm' => 'testName',
	'buyerPhoneNum' => '01012345678',
	'goodsData' => array(
		'goodsNm' => 'testGoods',
		'price' => 1000
	)
);

var_dump($arrData);
echo "<br>";

// json 데이터로 변경
$jsonData = json_encode($arrData); 

var_dump($jsonData);

?>

:: 출력 결과 ::

jsonEncode.php 실행 결과

보이시나요?

배열 데이터가 저장된 arrData를 json_encode()라는 함수 하나만으로 json 데이터 형식으로 변경이 되었습니다!!(박수)

변수의 저장 타입도 배열(array)에서 문자열(string)으로 변경된 것을 알수 있습니다 ㅎㅎ

 

그럼 이번엔 반대의 경우로 가볼까요?

우선 json data 파일을 만들어봅시다. json data 파일을 만드는 방법은 간단합니다!

json data 형식을 툴 아무데서나 작성한 뒤, 확장자를 json으로 저장해주시면 되거든요!!

.

:: json data 파일 (ex.json) ::

{
	"ID":"testID",
	"buyerNm":"testName",
	"buyerPhoneNum":"01012345678",
	"goodsData":{
		"goodsNm":"testGoods",
		"price":1000
	}
}

 

이렇게 작성된 json 파일을 file_get_contents() 함수로 불러와서 사용 예정입니다!

(file_get_contents()에 대한 설명은 아래 링크 참조해주세요!)

https://seoneu.tistory.com/25

 

API 통신할 때 file_get_contents(), curl은 무슨 차이일까?

안녕하세요 워누입니다! 오늘은 제가 회사에서 개발하다가 궁금한 점이 부딪혀서 직접 알아본 내용을 포스팅하고자 합니다. . 상황은 API 호출 시 특정 URL로 form-data를 post로 던지고 그 결과를 받

seoneu.tistory.com

 

그리고 아래와 같이 json data를 json_decode() 함수를 이용해 배열 데이터로 바꾸어봅시다!

json_decode(변수, true)

true..? 왜 들어갔는지는 글 아래에 후술해드릴게요!

간략하게만 설명드리면 json_decode에서 true로 지정이 되지 않으면 다른 파일 형태로 변경되더라구요!

그러니 우선은 꼭 true로 설정해주세요!! 

.

이제 사용 예시를 보여드릴께요!

.

:: 소스 코드(example) / jsonDecode.php :: 

<?php

//json data
$jsonData = file_get_contents("ex.json");
var_dump($jsonData);
echo "<br>";

// 배열 타입으로 변경
$arrData = json_decode($jsonData, true);

var_dump($arrData);

?>

:: 출력 결과 ::

jsonDecode.php 출력 결과

 

어떠신가요? 생각보다 간단하죠??

이렇게 json_encode(), json_decode() 사용 방법을 알아보았습니다!

근데 위에서 제가 json_decode()를 사용할 때, 2번째 매개변수로 true를 반드시 입력해야 한다고 했죠??

그 이유가 무엇인지 jsonDecode.php 파일에 코드를 추가하여 다시 실행해보도록 하겠습니다!

 

:: 소스 코드(example) / jsonDecode.php ::

<?php

//json data
$jsonData = file_get_contents("ex.json");
var_dump($jsonData);
echo "<br>";

$arrData = json_decode($jsonData, true); // true 입력
$arrData2 = json_decode($jsonData); // true 미입력 (false)

var_dump($arrData);  // true 입력한 결과
echo "<br>";
var_dump($arrData2); // true 미입력 결과 (false 결과)

?>

:: 출력 결과 ::

jsonDecode.php 출력 결과

....? 

true 값을 없애니, type이 array가 아닌 object(stdClass)라는 값이 왔네요??

이게 무엇인지 몰라 구글신께 검색하여 object라는 type이 PHP에 따로 있어서 찾아본 결과... 

 

일단 뜻은 흔히 알고 있는 객체(클래스의 '객체'할 때 그 객체가 맞습니다!)를 의미하고, 

stdClass는 PHP에서 일반적으로 쓰이는, 비어있는 클래스를 의미하며 다른 object를 캐스팅할 때 쓴다고 합니다. 

.

정리하면 변수 $arrData2는 stdClass에 캐스팅된 object 타입의 변수라 합니다..

(어려워서 좀더 찾아봐야 알 것 같지만 일반적인 배열이 아닌 object 타입의

클래스 기반 배열이라고 보시면 될 것 같네요.. 이거 때문에 회사에서 시간낭비한건 안비밀..)

 

PHP 개발자 분들 중 혹시 자세히 알고 계신 분이 있다면 댓글로 남겨주세요!! 

저도 더 정리할 수 있는 내용이 있다면 수정해서 올리거나, 댓글로 남기도록 하겠습니다!!

오늘 포스팅은 여기서 마치도록 할게요 ㅎㅎ 그럼 이만!

 

 

안녕하세요 워누입니다! 

오늘은 PHP로 이미지 파일을 업로드하는 방법을 포스팅하도록 하겠습니다!

거두절미하고 바로 가보도록 하죠~

.

여러분들도, 저도 인터넷에서 사진이나 문서 파일을 웹에서 업로드한 경험이 있을 것입니다!

이런 폼을 html에서 제공하는데요,

html 폼에서 파일을 업로드하기 위해서는 <input> 태그 내 type 속성 값으로 "file"을 사용하고, 

<form> 태그에 enctype 속성을 적용하고 값으로 "multipart/form-data"를 지정해야 합니다.

 

아래 예시코드처럼 작성을 해주시면 됩니다. 

(편의를 위해서 구분선을 작성했습니다!)

.

[fileUploadRequest.html]

<!DOCTYPE html>
<html>
<head>
</head>
<title>파일 업로드 테스트</title>
<body>
<form name="reqform" method="post" action="fileUploadResult.php" enctype="multipart/form-data"> 
 <p>이미지 파일 업로드 테스트</p>
 <hr> <br>
 <input type="file" name="imgFile" /><br>
 <input type="submit" value="업로드" />
</form>
</body>
</html>

.

이렇게 html로 요청 폼을 만들었으면 요청을 받는 응답 페이지도 만들어주어야 겠죠?

PHP에서는 파일을 어떻게 받아서 처리하는지 한번 보도록 합시다.

 

바로 PHP 응답 페이지 코드 보시죠!!

.

[fileUploadResult.php]

<?php 

/*********************************************
* 넘어오는 데이터가 정상인지 검사하기 위한 절차
* 실제 페이지에서는 적용 X
**********************************************/

//$_FILES에 담긴 배열 정보 구하기.
var_dump($_FILES);

// php 내부 소스에서 html 태그 적용 - 선긋기
echo "<hr>";

/*********************************************
* 실제로 구축되는 페이지 내부.
**********************************************/

// 임시로 저장된 정보(tmp_name)
$tempFile = $_FILES['imgFile']['tmp_name'];

// 파일타입 및 확장자 체크
$fileTypeExt = explode("/", $_FILES['imgFile']['type']);

// 파일 타입 
$fileType = $fileTypeExt[0];

// 파일 확장자
$fileExt = $fileTypeExt[1];

// 확장자 검사
$extStatus = false;

switch($fileExt){
	case 'jpeg':
	case 'jpg':
	case 'gif':
	case 'bmp':
	case 'png':
		$extStatus = true;
		break;
	
	default:
		echo "이미지 전용 확장자(jpg, bmp, gif, png)외에는 사용이 불가합니다."; 
		exit;
		break;
}

// 이미지 파일이 맞는지 검사. 
if($fileType == 'image'){
	// 허용할 확장자를 jpg, bmp, gif, png로 정함, 그 외에는 업로드 불가
	if($extStatus){
		// 임시 파일 옮길 디렉토리 및 파일명
		$resFile = "./img/{$_FILES['imgFile']['name']}";
		// 임시 저장된 파일을 우리가 저장할 디렉토리 및 파일명으로 옮김
		$imageUpload = move_uploaded_file($tempFile, $resFile);
		
		// 업로드 성공 여부 확인
		if($imageUpload == true){
			echo "파일이 정상적으로 업로드 되었습니다. <br>";
			echo "<img src='{$resFile}' width='100' />";
		}else{
			echo "파일 업로드에 실패하였습니다.";
		}
	}	// end if - extStatus
		// 확장자가 jpg, bmp, gif, png가 아닌 경우 else문 실행
	else {
		echo "파일 확장자는 jpg, bmp, gif, png 이어야 합니다.";
		exit;
	}	
}	// end if - filetype
	// 파일 타입이 image가 아닌 경우 
else {
	echo "이미지 파일이 아닙니다.";
	exit;
}
?>

이렇게 코드를 작성해보았습니다.

.

이전 PHP 포스팅에서 $_POST 필드를 이용해 form 태그의 method가 post인 data를 가져온 것을 볼 수 있습니다. 

즉, $_POST 필드는 요청 시 method 속성의 값이 post 방식인 데이터를 배열 형태로 가져온다는 것을 알 수 있습니다.

 

일반적인 데이터라면 $_POST 필드를 이용해 값을 가져왔겠지만, 파일 데이터는 조금 다릅니다. 

$_FILES라는 필드를 이용해 파일에 대한 데이터 값을 배열로 가져옵니다. 

 

자세한 내용을 설명드리기 위해 var_dump() 함수를 이용해 $_FILES 필드에 담긴 배열 데이터를 모두 print하였습니다. 

(PHP에서 데이터를 체크하기 위해 자주 사용하는 함수이니 꼭 알아두세요!!)

실행된 예시 화면을 보면서 조금 더 상세하게 설명드릴게요ㅎㅎ

.

1) fileUploadRequest.html 실행

fileUploadRequest.html 실행 화면

 

2) fileUploadRequest.html 페이지와 동일 경로 내 img 폴더 임의 생성

img 폴더 생성

 

빈 폴더

** 이미지가 업로드되는지 확인하기 위해 빈 폴더로 생성해 놓았습니다!

 

3) fileUploadRequest.html 페이지에서 "파일 선택" 버튼 클릭 후 첨부할 이미지 선택

첨부할 이미지 선택
"파일 선택" 버튼 옆에 선택한 이미지의 파일명이 체크됨.

 

4) fileUploadRequest.html 페이지에서 "업로드" 버튼 클릭 후 결과 확인

fileUploadResult.php 결과 화면

5) fileUploadResult.php 페이지에서 설정한 경로에 선택한 이미지가 업로드 되었는지 확인.

img 폴더 재확인, 선택한 파일이 업로드된 부분 확인.

.

이런 식으로 테스트가 진행되었습니다. 

 

1-3번 과정은 요청하는 페이지에 대한 과정이니 추가 설명을 생략하고, 바로 4번부터 상세하게 설명을 드리겠습니다. 

 

fileUploadResult.php 소스 내 9번째 라인에서 "var_dump($_FILES);"로 체크한 부분을 통해

파일 데이터가 어떻게 저장되어 넘어오는지 알수 있습니다. 

 

넘어온 데이터 형식을 보면 아래와 같은데요,


array(1) { ["imgFile"]=> array(5) { ["name"]=> string(10) "watch3.jpg" ["type"]=> string(10) "image/jpeg" ["tmp_name"]=> string(48) "C:\Bitnami\wampstack-7.2.14-0\php\tmp\phpFC9.tmp" ["error"]=> int(0) ["size"]=> int(367171) } }


imgFile이라는 배열 데이터 안에 name, type, tmp_name, error, size라는 필드들이 또 배열로 들어가 있는 것을 확인 할 수 있습니다. 아래 표를 통해 각 필드에 대한 설명을 드립니다. 

 

Field value
imgFile 요청 시 input 태그 내 name 속성으로 지정한 값을 그대로 받아옴.
Field in "imgFile" name 파일명
type 파일 타입과 확장자명을 받아옴 (구분자: /)
tmp_name 업로드한 파일을 임시로 저장할 폴더와 파일명
error 에러 여부
size 파일 사이즈 (단위: byte)

위 표에 대해서 인지를 하고 fileUploadResult.php 소스를 보시면 조금 더 이해가 되실 겁니다ㅎㅎ

다만 소스 내에서 언급한 것처럼 var_dump로 찍은 데이터는 어디까지나 개발할 때 데이터를 체크하기 위한 용도로 쓰기 때문에 만약 실제로 개발하실 때에는 위 데이터가 실제 서비스하는 페이지에서는 보이지 않게 반드시 주의해주세요!

 

다음부터는 주석을 참고하시면서 이런 의미구나 하고 소스를 이해해주시면 되겠습니다!

 

제작된 샘플 소스의 동작 구조는 임시로 저장된 파일경로를 변수에 담아두고 확장자를 검사해서 이미지 파일이 맞으면 

임시 파일 경로에 두었던 파일을 실제 서버 내 폴더에 업로드하고,

허용된 확장자를 쓰지 않았거나 이미지 파일이 아니라면 실패 처리를 알리는 문자열을 출력하는 형태로 구성됩니다!

 

이 소스에서 중요하게 사용된 함수는 아래 설명을 참고 바랍니다!

 

**

explode : PHP에서 하나의 구분자를 가지고 배열 데이터를 만드는 기능을 제공하는 함수

-> syntax : explode("구분자", "데이터");

 

move_uploaded_file : 임시적으로 업로드된 파일을 새로운 경로로 옮겨주는 기능을 제공하는 함수

-> syntax : move_uploaded_file("업로드한 파일의 임시 위치", "옮길 위치 및 파일명");

**

 

이렇게 제가 작성한 코드와 그에 대한 설명을 담아보았는데요. 

제가 드린 샘플 소스를 그대로 사용해도 좋지만 변형도 해보고,

일부러 다른 파일도 올려서 오류가 어떻게 나는지도 직접 시도해보는 것을 권장합니다!

 

저처럼 초보개발자라면 반드시 이렇게 직접 자신의 코드를 써보고, 설명해보고, 일부러 오류도 내보시면 

실력이 더 많이 향상될 것 같아요 ㅎㅎ

제 코드와 설명도 완벽하지는 않아서 언제나 피드백을 주시면 반영하도록 하겠습니다 ㅎㅎ 

 

오늘 포스팅은 여기서 마치도록 하겠습니다~

그럼 20000!!!

 

+ Recent posts