어제는 사정이 있어서 수업을 듣지 않았습니다.


어제 2일차 수업은 대부분이 이론수업이었다고 합니다. 강의자료의 2장에 해당하는 부분을 자세하게 읽어보기를 2일차 수강하신 회사 직원분께서 권해주셨습니다.





===========================================     1     ===========================================


[19 : 06 ~ 19 : 55]



실습자료는 우선 Error가 없는 버전으로 다시 올리셨다고 합니다. 


API를 설계하는 요령에 대해서 알려주신다고 합니다.


강의자료 4장의 내용을 수업을 진행하였습니다.


유일성이 보장되지 않는것으로 URI를 만들면 안된다고 하셨습니다.


URI를 가져오고 삭제하고 Update 할 수도 있습니다.



간결하고 직관적인 URL에 대한 예시로 아래의 이미지를 보여주셨습니다.


실용적인 RESTful 디자인의 첫번째 원칙이 간결하고 직관적인 URL을 유지하는 것 이라고 합니다.



(밀어야 한다고 "PUSH" 라고 쓰여져있지만, 당기는 손잡이가 되어있습니다.) 

*설계행동유도성과 문서와의 충돌 이라고 설명 해 주셨습니다.


가장 훌륭한 설계는 더이상 뺄 것이 없는 설계라고 했습니다.




===========================================     2     ===========================================


식사시간이 조금 빠듯하였습니다.



[20 : 06 ~ 21 : 06]


간단하게 이론수업 4장을 마무리하고 실습에 대한 설명을 진행 해 주셨습니다.


Web Front 는 사용자(집단)을 위한 것 입니다.


그림을 그려가며 웹서비스의 구조를 설명을 또 해 주셨습니다. 해당 웹서비스는 실습 진행 방법과도 관련이 있습니다.



서버 설치를 어제 진행했다고 하는데 서버 설치가 진행되지 않아서 조금 당황을 했습니다. 우선 포트번호가 8180인데 해당 포트의 앞에서 가로채서 확인하는 용도의 포트번호로 9688을 사용한다고 합니다. 


== 실습!! ==


웹애서의 Data를 확인하는 프로그램은 Mac의 경우 Post man 이라는 프로그램을 쓴다고 하셨습니다.


pr.jersey에 들어가보면 확인을 할 수 있다고 하셨습니다.


삭제, 업데이트등을 해 보고 패킷을 확인해보라고 하셨습니다.



우선 tomcat 8.5버전을 사용하시는 것 같아 아래의 주소에서 다운을 받아보았습니다.

http://tomcat.apache.org/download-80.cgi#8.5.8 



혹시 몰라 설치도중의 설정값을 캡쳐하여두었습니다.


설치 후 화면입니다 .


----------------------------------------------------


이제 정상적으로 톰캣(WAS)이 실행되는지 웹으로 확인 하면 된다.

http://localhost:8080/  URL 을 이동하였을때 아래와 같은 고양이 그림이 나온다면

정상적으로 설치 된 것이다. 만약 설치하지 않았거나 톰캣 start 안했다면 고양이가 없을것이다.


출처 : http://dkatlf900.tistory.com/35 <다른분 블로그인데 인용합니다.>
----------------------------------------------








===========================================     3     ===========================================


[21 : 14 ~ 22 : 00]



우선 1개는 실행이 되었습니다.

뛰어서 겨우 강의실에 늦지 않고 도착!


같이 강의듣는 회사분은 QR을 정확히 찍지 못하는 에피소드도 발생....


우선 강사님의 강의자료는 아래의 주소에서 받을 수 있습니다.


https://github.com/namooio/edu-kosta-api


===========================================     1     ===========================================


[19 : 00 ~ 19 : 55]


우선 강사님께서는 필요한 강의


가으의 필요도 조사에서 4번째로 등록했을일은 없지만 호명이 되어 간단하게 강의를 수강하게 된 동기에 대해 이야기를 하였고 통신에 대해서 알아두면 좋은 강의가 될 것이라고 생각합니다.


강사님께서도 통신에 대한 일괄적인 이론에 대해 알 수 있을것이라고 하였습니다.


Web을 잘 쓰고있다면 RESTful은 반은 알고있다고 보면 된다고 하였습니다.



강의는 구조를 위에서 아래로 내려가면서 보고, 코드단부터 개념을 위로 올리는 방식으로도 진행을 한다고 하셨습니다.


Open API는 public과 private으로 나눌 수 있다고 하셨습니다.


Web기반의 프로젝트는 100이면 99는 단순한 구조로 설계가 되어있었다고 합니다. 


프로젝트 사례를 통해서 의뢰받은 시스템의 구조를 설명해주셨습니다.


Port : 정보가 시스템으로 들어오거나 정보가 나가는 일종의 통로!


예로 든 시스템에서의 문제점과 성능이 비 정상적으로 나오게 설계가 된 부분에 대한 설명, 심심하면 죽게 되어있는 이유는 여러 회사에서 서로 다른 작업을 진행하였기때문이었습니다. 


왜 Parameter를 Map으로 만드는가? 사용자가 계속 인자를 바꾸기 때문에. 

Map안에 Map안에 Map안에... 와 같은 식으로 설계를 하여 어떤 오브젝트든지 넣을 수 있게 설계를 하였지만 해당 설계는 메모리를 잡아두는 식이라 많은 메모리의 낭비를 가져왔다고 합니다.


API 설계의 경우에는 정말 특별한 경우를 제와하고는 MAP을 인자로 주는 경우가 없다고 하셨습니다. MAP이 Memory를 훨씬 더 사용합니다.


Map의 일부에만 Data를 넣어도 모든 객체가 만들어 져 Map은 Memory를 낭바하게 됩니다. 작업 한 사람은 확장성을 주로 하여 작업했다고 합니다.


모든것이 JSON[ JavaScript Object Notation ]으로 작업된다고 합니다.


JSON이란!

JSON은 경량의 DATA교환 형식이다. 이 형식은 사람이 읽고 쓰기에 용이하며, 기계가 분석하고 생성함에도 용이하다. JavaScript Programming LanguageStandard ECMA-262 3rd Edition-December 1999의 일부에 토대를 두고 있다.

[네이버 지식백과] JSON [JavaScript Object Notation] - 제이슨 (지형 공간정보체계 용어사전, 2016. 1. 3., 구미서관)


RESTful 호출방식?


port를 그대로 두고 Adapter를 변경하는 방식의 시스템 구성이 유연하도 좋은 설계라고 하셨습니다.



===========================================     2     ===========================================


간단하게 그리고 오랜만에 김밥집의 참치주먹밥(빅)을 먹고 2교시 수업을 들으러 왔습니다.


[20 : 05 ~ 20 : 57]


하드웨어/OS 이기종성 극복

연결방식의 변화로 운영체제를 만들어 Proting에 대한 이슈가 사라졌습니다. JVM은 정말로 큰 발견이었고 이기종성[Heterogeneous]을 극복하는데 큰 공을 세웠다 할 수 있습니다.


기업형 SW 이기종성 극복

J2EE를 통해서 극복은 벤더의 의존성을 줄였습니다. 


어플리케이션 이기종성 극복

인터페이스 기술 의존성과 에플리케이션간의 의존성을 줄여주었습니다.


EAI - (Enterprise application integration)

 

Web Service 는 아래 두가지로 분류됨 


1) WebService =>3가지

- HDDE

- WSDL   

- SOAP


2) RESTful


최근의 추세는 1)의 WebService는 쓰이지 않는 추세입니다. 2) RESTful은 비표준이라고하여 이전에는 주로 쓰이지는 않았지만 현재 각광받고 있습니다.


RESTful이란?     

Representational state transfer (REST) or RESTful web services are one way of providing interoperability between computer systems on the Internet. 


요즘의 추세는 DB, DBMS에 기대지 않고 각 서비스 구성업체에서 자신들의 스타일로 트렌젝션의 비정상 처리에 대해서 대비를 하고있다고 하셨습니다. 


웹서비스가 필요한 이유는 내부의 어떤 지적 제산을 서비스하기 위함입니다. 



오늘 남은 시간은 예제 코드를 확인해보기로 했습니다.


===========================================     3     ===========================================


3교시를 준비하며 커피를 한잔하였습니다.


[21 : 10 ~ 21 : 57]


정교하게 설계된 작은 코드를 예제로 배포한다고 하셨습니다.


DB를 어떤것을 쓸 수 있도록, 설계가 되어있습니다.


SP.jersey => 서비스 퍼블리싱을 jersey로 한 버전, 



설치 예제의 구조!


SP : jersey

CP : POJO

dom : POJO

DB : DAO

DATA : Memory



클라이언트


UI                       : JSP 서블릿 / CMD line.

presentation          : REST client




예제코드는 받아서 프로젝트 2개 임포트 하고, 메이븐 프로젝트 업데이트를 실시하면 된다고 하셨습니다.

프로그래밍을 하면 할 수록 형상관리의 중요성을 무시할 수 없습니다. 프로그램의 규모가 커지거나 프로젝트의 인원이 많아지면 많이질 수록 무시할 수 없습니다.


Tortoise SVN은 git과 같이 상당히 많이 사용하는 형상관리 프로그램의 하나입니다. 형상관리 프로그램을 사용하다가 파티션 변경 URL변경등을 하여 서버(코드를 관리하는 컴퓨터)에 경로의 변화를 초래하는 사건이 발생 할 경우 아래의 화면을 보실 수 있습니다.




저의 경우에는 로컬 드라이브에 개인코드관리하던 프로젝트가 SSD로 메인 드라이브를 교체하면서 문제가 발생하였습니다. 이런 문제를 막는 방법으로 현재 근무하고 있는 회사에서는 하나의 네트워크 드라이브로 고정적으로 잡아서 관리를 하는 방법을 사용하고 있습니다. 타겟 레퍼지토리가 공유폴더로만 설정되어있다면 간단하게 처리를 할 수 있는 문제이지만 서버의 변화에 전적으로 맞춰야 하는 경우라면 아래의 방법을 활용하여 확인을 할 수 있습니다.


경로를 찾을 수 없습니다. 


저의 경우를 확인해보니 F드라이브로 잡혀있는데 그 드라이브가 SSD를 추가로 설치하면서 H드라이브가되었습니다.


그래서 설정값을 간단하게 바꾸어 주면 되지 않을까 여기저기 찾아 보았습니다.


SVN의 설정에서 간단하게 고쳐보고 싶었지만 우선 저는 실패하였습니다.


그래서 어딘가 경로를 저장하고 있는 파일의 내용을 찾아보았습니다.


검색한 키워드는  "F:"로 하였습니다.


파일은 아래의 파일을 찾아서 



.SVN폴더 폴더 숨김을 해제하여야 해당 반투명 폴더를 확인할 수 있습니다.


wc.db라는 파일이 눈에 띄는데요, 해당 파일을 notepad++이라는 편집기로 열어보았습니다.


열어보니 알아볼 수 있는 내용은 극히 일부분인 것 같습니다.


F:로 되어있는 부분을 찾아보았습니다.


찾아바꾸기! F:으로 되어있는 모든 부분을  H:으로 변경하는 작업입니다.



위와 같이 정상적으로 Log를 불러오는 것을 확인할 수 있습니다.

회사 PC를 쓰다가 SSD를 구매해서 새로 OS를 설치를 하고 쓰다보니 몇몇 문제가 있었습니다. 지금은 설정을 조금 변경하여 작업을 하다가 한번 날려먹고 OS를 또 설치하다 보니 저의 PC에 3개의 OS가 보이는 문제가 발생을 하였습니다.


최근 Multi booting을 하지 않게 하는 방법을 확인하여 부팅 시 자동으로 현재 주로 사용하는 OS로의 바로 부팅은 설정을 하였지만 이전에 사용하던 경로들을 그대로 사용하기에는 사용하지 않는 OS가 드라이브를 잡고 있어서 불편합니다. 아래는 지금 저의 PC의 파티션 현황입니다. 참 많네요...


텅 비어있는 50GB짜리 파티션은 최근 설치하였던 OS가 있던 파티션입니다. 하드를 밀었지만 남아있는 시스템 예약(F:)등 거슬리는 파티션이 있어서 확인을 해 보겠습니다.


"diskmgmt.msc"를 실행창(윈도우키 + R)에 입력을 하시면 디스크 관리 창을 확인할 수 있습니다.



< 시스템 예약 파티션 없애기 >


위에 보시다시피 지금 지저분 한 파티션들도 있고 이미 500GB의 SSD와 1TB짜리 HDD가 있기 때문에 가장 아래의 파티션을 모두 포맷하고 하나로 합쳐보도록 하겠습니다.


삭제 할 파티션에 우클릭을 하여 위와 같이 볼륨 삭제를 선택하시면 하나의 경고창이 뜹니다. 잘확인하시고 클릭하시면 파티션이 지워집니다.


<경고 : 지금 사용중인 파티션에 해당 작업을 할 경우 문제가 생길 수 있습니다.>


모든 파티션을 지워 하나로 합친 사용하지 않는 기본 디스크를 하나 만들었습니다. 합쳐진 디스크의 크기는 대략 186GB가 되었습니다.


이제 위와같이 포맷 및 볼륨삭제 한 디스크를 저장 드라이브로 쓸 수 있도록 해 보겠습니다. 

빈 볼륨을 우클릭 하여 새 단순 볼륨을 클릭합니다. 클릭하면 아래와 같은 창이 뜨게 됩니다.




< 새 파티션 만들기 >



우클릭 하여 새 단순볼륨을 위의 과정을 거쳐 누르면 가장 먼저 보이는 화면입니다.


그 후 용량을 지정할 수 있습니다. 특정 드라이브를 저의 경우는 지금 1개로 만드는 과정입니다. 하지만 2개로 나누고자 하신다면 볼륨 크기를 적절하게 계산하여 분배하셔야 합니다. 단위는 MB라 요즘 사용하는 GB와는 1000가량 차이가 난다는 것을 기억 해 두시기 바랍니다.


다음을 클릭하여 용량을 결정하고 넘어오면 드라이브 문자열을 할당할 수 있습니다.



저는 잘 쓰지 않는 빈 Data드라이브로 쓰기 위해 J를 할당하였습니다.


용도에 맞게 포맷도 진행을 하였습니다. 파일 시스템의 NTFS외의 다른 것들도 있지만 해당 내용에 대해서는 추가로 검색해보고 선택하시기 바랍니다. FAT계열로 선택을 하면 4GB이상 단일파일의 사용? 혹은 이동 복사등에 문제가 있는 것으로 알고있습니다.


포멧까지 완료하면 결과 화면을 볼 수 있습니다.


내 컴퓨터에서도 보다 깔끔한 드라이브 정리와 기존에 사용하지 않던 137GB(?)를 사용하면서 시스템 예약(F:) 파티션도 없어진 것을 확인할 수 있습니다.


디스크 관리자에서도 확인 할 수 있습니다.


<TIP>



디스크 관리자에서 앞의 1번의 디스크 번호 표시된 부분에서 우클릭을 하고 2번의 속성을 클릭하면 해당 디스크가 물리적으로 어떤 디스크인지 이름도 확인하실 수 있습니다.

위와 같이 물리적인 장치 이름을 확인할 수 있습니다. 해당 내용을 확인하여 의도치 않은 드라이브의 포맷은 하지 않도록 !!!! 하시기 바랍니다.

출발이 많이 늦었습니다. 교육수강을 회사에 보고하지 않아서 정시퇴근을 하려고 하였지만 오늘도 역시 실패하였습니다.


강사님께서 양해를 구하시고 7시 15분부터 수업을 진행하였습니다.


===========================================     1     ===========================================


(19 : 15 ~ 20 : 30)


수업 시작 전, 서피스는 쓸만하냐고 물으셔서 간단하게 이야기를 하였습니다.


레노버의 유사 제품에 대한 이야기도 살짝.


애플 개발자 site와 스위프트 공식 site에 방문을 하였습니다.



오늘은 강사님께서 하루종일 코딩만 해 보자고 하셨습니다. 


간단하게 만들것은 <게시판>입니다.


구현할 내용은 글쓰기, 글 목록, 글 수정, 글 삭제 등...


스위프트가 생각보다 쉽게 될 지 모르겠지만,.,


ESC키를 누르면 코드 도우미 기능이 재 활성화되기도 합니다.


쭉 코딩을 하면서 이런저런....




< 오늘도 컴퓨터가 날아가버려 블로그 글이 날아가버렸습니다. 자동 저장이 된 것 까지 컴퓨터 베터리가 나가면서 블루스크린과 함께 저 멀리 사라졌습니다.


하지만 기억을 더듬어 하나라도 더 기록을 남겨두겠습니다.


새 프로젝트를 만드는 과정입니다.

콘솔을 선택한 후 (콘솔용 Test 프로젝트입니다.) 다음으로 넘어갑니다.


프로젝트 이름 사용자 이름 등을 설정합니다.


프로젝트 이름, 페키지 이름등을 입력하고 다음으로 넘어갑니다.






그룹은 다른 IDE의 페키지나 Folder처럼 사용할 수 있습니다.





코드에 ?를 써서...


위의 화면은 만약에 다른 버전의 Swift Code를 불러 올 경우에 변환을 해 주는 기능입니다.




위의 화면은 Test시에 혹시 콘솔 창이 보이지 않을 경우에 콘솔창을 활성화 하는 방법입니다.


'강의노트' 카테고리의 다른 글

[RESTful] 3일차  (0) 2016.11.30
[RESTful] 1일차  (0) 2016.11.28
[Swift] Swift 기반 iOS프로그래밍 초급 2일차  (0) 2016.10.18
[Swift] Swift 기반 iOS프로그래밍 초급 1일차  (0) 2016.10.17
[DB(DA)] MyBatis 4일차  (0) 2016.10.07

출발이 많이 늦었습니다. 교육수강을 회사에 보고하지 않아서 정시퇴근을 하려고 하였지만 오늘도 역시 실패하였습니다.

===========================================     1     ===========================================

(19 : 09 ~ 19 : 50)

 

 

 

Xcode를 수행하여 가장 위의 항목, 플레이 그라운드로 시작하는 실습을 하였습니다. 그 전 간단하게 반복문 관련 이론 수업을 진행하였습니다.

 

스위프트의 한가지 이상한점?!!

 

Main 함수, , 엔트리함수가 없습니다. 설명하시기를 오히려 스크립트 언어와 유사하다고 하셨습니다.

 

맥 키보트의 command 키는 윈도우 키의 control과 유사한 기능을 수행합니다

스위프트는 스위치문에서는 브레이크문을 쓰지 않는다고 합니다.

 

 

 

강의 끝 무렵 너무 졸려서 잠시 기절을 했습니다.


===========================================     2     ===========================================

 

핫바를 하나 먹고 핫식스와 함께 두번째 시간을 시작합니다.


(20 : 05 ~ 20 : 57)


함수의 선언과 호출을 볼 때, 스위프트의 경우에서는 C와 같이 미리 선언을 하여 사용을 할 수 있습니다


하지만 우선적으로는 함수의 선언을 먼저 하고 그 코드 부분 이후에 호출을 하는것을 권하셨습니다.


로컬 변수와 상수 모두 유니코드를 지원하며, command  + control + space를 누르면 xcode에서 이모티콘(이모지)을 사용할 수 있는데 해당 이모티콘을 변수의 이름으로도 지정하는 것이 가능합니다


무한대를 이용하여 의미없는 값으로 초기화를 할 수도 있습니다.


 

 스위프트는 함수의 결과로 함수를 반환할 수도 있습니다. c언어에서 함수의 반환은 함수포인터를 반환하는 것이 있습니다.

 자바에서는 람다라는 것으로 유사하게 처리를 할 수 있다고 하셨습니다.


또한 스크립트 언어와 같이 함수안에 함수를 작성할 수 있습니다. 


mordern, fast, safety - 스위프트의 3대 슬로건입니다. 어제 4대라고 했는데 잘 못들었던 것 같습니다. 


<강의자료 4장 16페이지>


- 클로저는 함수와 같은 독립적인 코드블록이다. 

- 클로저는 자신이 정의된 콘텍스트로부터 임의의 상수 및 변수의 참조를 획득하고 저장할 수 있다.

- 이처럼 상수와 변수를 제약하는 특징 때문에 클로저라는 이름이 붙여졌다. 

- 기본적으로 클로저는 프로그램이 생성되는 시점의 상태를 보전한다.

- 클로저는 일반적으로 람다라고 불린다.

- 사실 함수는 클로저에 이름을 붙인 특별한 클로저다.


- 함수가 클로저의 특별한 타입이라면 왜 클로저를 사용하는가?


- 함수는 여기여기 전달될 수 있는 간단하고 빠른 코드블록을 만들 수 있지만 불필요한 이름을 항상 넣어야 한다.

- 그러나 클로저는 이름없이 사용할 수 있다.



===========================================     3     ===========================================

 (맥 기능!!)

컨트롤 + 방향키 / 3점 터치 후 좌우로 밀기 -> 데스크톱 전환! 


(21 : 03 ~ 21 : 50)


<핵심만 골라 배우는 iOS 프로그래밍 9> 라는 책을 소개해주셨습니다. 972페이지의 약간 성경과 같은 느낌의 두꺼운 책이라는 이야기도 해 주셨습니다.


핵심만골라배우는iOS9프로그래밍_sample.pdf



간단하게 셈플 PDF를 구해보았습니다.


책 욕심 이야기를 하시더니, 공자 이야기를 하시며 <논어> 관련 서적(마흔, 논어를 읽어야 할 시간)을 몇권 추천해 주시며 이야기 보따리를 조금 풀어주셨습니다. 


스타트업 관련 이야기를 하시면서 리더쉽과 커뮤니케이션이 가장 중요하며, 그 외에도 경영, 회계등에 대한 지식의 중요성을 이야기 해 주셨습니다.


그리고 그런 의미에서 영상을 하나 보여주신다고 하시면서 Kosta 133이라는 네이버 카페에서 지하철이 나오는 영상을 하나 보여주셨습니다. 지하철에서 한 청년이 사람들에게 굉장히 일상적이고 사소한 내용에 대해 감사인사를 하며 탑승객의 호응과 참여를 유도하여 같이 over the rainbow~를 부르는 영상이었습니다. 



5장 클래스와 구조체


Swift에서는 클래스와 구조체가 차이가 없습니다.


매개변수가 없는 기본 생성자는 Code에 명시적으로 선언하지 않을 수 있으며 new라는 키워드 없이 생성자 함수를 사용할 수 있습니다. 


스위프트는 함수에 장점과 객체지향의 장점을 혼용하여 만든 언어라고 하셨습니다. 

self라는 키워드가 나오는데 이것은 다른 언어의 this와 유사합니다.


고정된 크기로 한번 할당하고 읽으면 구조체가, 그렇지 않고 유동적으로 사용한다면 클래스가 더 낫다고 하셨습니다. 


C언의 구조체 안에 함수가 들어갈 수 있는지 강사님께서도 햇갈려 하셨습니다. 


value의 복사와 Address의 복사가 주는 차이가 있습니다. 일괄처리에는 구조체가 빠르게 처리가 가능하며 유동적으로 처리를 해야하면 Call by reference인 Class를 사용해야 한다고 하셨습니다. 


내일 예고 !!


프로토콜은 자바의 인터페이스와 유사한 개념이라고 하셨습니다. 익스텐션은 확장입니다. 확장은 기본적으로 상속을 통해 할 수 있습니다. 하지만 상속은 코드를 또 만드는 것 입니다. 또다를 클래스를 생성하는 것입니다. 하지만 그렇지 않고 일시적으로 확장했다 프로그램 종료시 그 확장을 없에고 싶다면 익스텐션이라는 기능을 사용하면 된다고 하셨습니다. 


숙제가 하나 있습니다. 콘솔에 데이터를 출력할 때 print를 사용했는데 입력을 받을 때 C의 scanf와 


'강의노트' 카테고리의 다른 글

[RESTful] 1일차  (0) 2016.11.28
[Swift] Swift 기반 iOS프로그래밍 초급 3일차  (0) 2016.10.19
[Swift] Swift 기반 iOS프로그래밍 초급 1일차  (0) 2016.10.17
[DB(DA)] MyBatis 4일차  (0) 2016.10.07
[DB(DA)] MyBatis 3일차  (0) 2016.10.06

오늘은 덥지만 빨리 왔습니다.

===========================================     1     ===========================================

(19 : 05 ~ 19 : 46)




강의 시작에 압서서  강사님께서 자기소개를 진행하였습니다.


오브젝트 씨와 스위프트 중에 어느것을 쓰는것이 좋은지를 많이 질문을 한다고 하셨고, 그에 대한 강사님의 답변은 현재는 오브젝트 씨를 사용하는 것을 권장하셨습니다.


Apple의 공식입장은 Language를 소개 할 정도로 훌륜하기는 하지만, 스위프트에서 아직 안정화가 덜 된 부분이 있어서 아직은 오브젝티브 씨를 추천한다고 하셨습니다.

 스위프트를 만드는데 4년이 걸렸다고 2년전에 출시 당시 발표를 하였으며 현재는 과도기라고 이야기를 하셨습니다.


 또한 현재는 스위프트와 오브젝티브 씨의 코드를 현재는 공용하여 작업할 수 있지만 추후에는 Apple의 입장에서는 차츰 Swift로 통합진행을 할 것이라고 하셨습니다.


스위프트는 C#과 자바와는 매우 흡사하다고 하셨습니다.



. 연산자등을 지원한다고 하셨습니다.


 강사님께서 포트란과 코볼이라는 언어로 프로그래밍을 시작하셨다고 하셨습니다. C언어의 경우 포인터에서 역시나 맨탈이 .... 그렇지만 스위프트에서는 포인터를 쓰지 않는다는 희소식도 전해주셨습니다.


 현재 강의는 Swift 3.0으로 진행을 하며 추후 공부를 할 때에도 검색을 할 때에도 해당 사항을 참고하여 주기를 당부하셨습니다.


X-Code라는 통합 IDE를 설치한다고 하셨습니다.


X-code를 설치해야 한다고 하셨습니다. 그리고 그 방법은 App Store에 가서 설치를 하면 된다고 하셨습니다. 

 핵킨토시?? 이야기를 간단히 하시면서 Apple의 기기가 아닌 다른 기기에 맥의 OS를 설치하는 것을 간단히 이야기 하셨습니다.


Xcode를 설치할 때 Apple 계정이 필요합니다. 저는 사내에서 사용하는 개발용 Macbook을 이용하여 Xcode설치는 진행하지 않았습니다.


그리고는 설치 확인을 진행하였습니다. 강의자료 8페이지의 내용입니다.


REPL : 


REPL은 간단한 코딩만 하는 용도로 사용을 할 것을 권장하셨습니다.


맨 마지막에 Xcode의 GUI를 이용한 코딩을 하시겠다고 하셨습니다.


Swift도 Data Type이 없다고 하셨습니다. Data Type을 값에 맞게 추론하는 형식추론 언어라고 합니다.




===========================================     2     ===========================================

(19 : 59 ~ 20 : 42)


소프트웨어 노임 단가? 이야기를 잠시 다른 교육생과 하는 것을 듣고 강의를 시작하셨습니다.


모든 변수 앞에는 var을 사용!!


Swift는 모든 데이터 타입이 구조체로 되어있다고 하셨습니다. 그래서 타입의 첫 스펠은 대문자로 입력을 합니다. 속성이나 메서드를 추가할 수도 있으며 그러한 것은 확장이라고 표현한다고 하셨습니다.


변수의 할당에 있어서도 초기 입력된 값에 대해 이미 타입이 설정이 되지만 Swift는 초기 설정한 값을 갖고 추론하여 타입을 지정 해 버립니다. 해당 내용은 변수를 할당할 때 마다 타입을 바꾸는 것은 아닙니다.


강의 자료 19페이지의 내용은 데이터 타입에 대해 정리가 되어있습니다.


Swift 의 4대 슬로건은 쉽고, 빠르고, 안전하고, 모던한 것입니다.


변수의 타입 뒤에 ? 가 들어가는 경우에는 Optional 변수라고 합니다.

변수의 초기화를 반드시 해 주어야 합니다.


문자가 들어가는 경우에는 자동으로 String으로 추론을 합니다.

스트링을 사용하는 다른 언어에서 String의 재 할당시 메모리에 새로운 스트링을 추가하고 변수는 주소만을 갖는 식으로 사용한다고 하셨습니다.




강의자료 35페이지까지 쭉 설명 및 수업을 진행하셨습니다.




===========================================     3     ===========================================

(20 : 52 ~ 20 : 42)

let iOS, var swift


옵셔널에 대해서는 추후에 수업을 한다고 넘어가셨습니다. 




챕터 2. Swift 컬렉션


1. 배열 ~ 5. 컬렉션의 반복


[]을 사용하여 배열 요소를 초기화 합니다. 배열 요소추가!


기존의 프로그래밍 언어에서는 배열이 정적 할당되는 경우가 많으므로 요소 추가가 불가능 했지만, 스위프트의 경우는 append를 통해서 배열의 요소를 추가할 수 있습니다. 


ns 라는 API의 Class앞에 있는 문구에 대한 일화를 알려주셨습니다.


스티브잡스가 다른 회사에 나가있을 때의 회사 이름인 Next Step의 약어라고 합니다. 오브젝티브 씨 언어를 Appliction단에서 OX X를 만들 때 사용 했다고 합니다.


REPL을 지원하기 때문에 학습할 때 자료구조등을 확인할 수 있어서 도움이 된다고 하셨습니다.  


반복문의 사용을 보여주셨습니다. 다른 언어와 달리 for문의 조건에  ( ) 가 없습니다.



정리


Xcode설치 시 OS 버전을 자동으로 체크하여 설치한다는 것과 시간이 오래 걸린다는 것, 그리고 이론 수업을 진행 했던 내용을 쭉 한번 훑어주셨습니다.


App으로 만드는 경우에는 DB접근이 직접 불가능 하다는 것, 따라서 Json, xml등으로 주고 받아야 한다고 하셨으며, 해당 내용에 대하여 처리할 수 있다고 합니다.

오늘은 아주 간단한 해결책으로 해결을 할 수 있지만 본인 환경에서 어처구니 없는 문제가 발생하여 애를 먹었던 사항을 편하게 기록하려고 합니다.


서피스를 구매한 후 사용을 하다보니 편리한 점도 있고 불편한 점도 물론 있습니다.


타이핑커버를 사용을 하니 저는 개인적으로 키감이 나쁘지 않지만 Fn(Function) Key를 정말로 랩탑의 FunctionKey 처럼 쓰는 것과 역시 Function Key이지만 F1 ~ F12까지를 Fn키를 눌러 토글식으로 사용해야 하는 것이 너무나도 불편합니다. 차라리 키 배열을 6열로 늘리고 마우스 대용의 터치패드를 줄였으면 하는 지극히 개인적인 의견을 갖고 이번 문제에 대해 게시를 시작합니다.



간단한 문제로 해결이 되지만 조언을 받은 스토어의 Surface 트랙패드 설정이라는 앱을 받아보았습니다. 이 앱은 설명만 있을 뿐, 전혀 기능적인 부분이 없는 것으로 보였습니다. 안내 페이지에서는 무슨 기능을 하는 것 같지만 제가 설치를 한 화면에서는 아니였습니다.


아래는 해당 앱의 안내페이지입니다.


앱을 받아서 수행을 하자 위와같은 안내 페이지만 나왔습니다. Google검색만 해도 나오는 내용이며 제가 지금 작성하는 내용을 글로 풀어 둔 것입니다. 정상적인 연결이면 위의 방법으로도 해결이 됩니다.


위의 앱에서 설명한 과정입니다. 1번으로 설정 화면을 여는 것입니다.



2번으로는 장치를 선택하는 것 입니다.



3번으로는 "마우스 및 터치 패드"를 선택하여 터치패드 옵션 부분을 확인 합니다.


4번으로 지금 화면과 같이 붉은색으로 표시한 옵션을 끔!!! 으로 설정해줍니다. 물론 반대로 켜서 두가지 장비에서 모두 마우스를 컨트롤 할 수도 있습니다.



하지만 저의 경우에는 어떤 이유에서인지 터치 패드부분을 전혀 확인할 수 없었습니다.


같은 설정 화면에서 장치를 누르시면 위의 화면이 보이고 저의 경우에는 위의 화면의 붉은 표시의 순서대로 새로 Type Cover를 한번 장치제거 후 다시 물리적으로 타입커버를 분리한 후 다시 연결을 하니 위의 터치패드 설정 옵션을 확인할 수 있었습니다.


비오늘 날 완전 대박 지각....


===========================================     1     ===========================================



(19 : 40 ~ 19 : 46)













===========================================     2     ===========================================

 

 키친커리김밥과 커피믹스로 1잔을 먹고, 2개를 탄 진한 믹스커피와 함께 2번째 시간을 시작합니다.


 첫째시간을 통으로 날려서 수업을 따라가기 어려운 상황이 되어버렸습니다.


(20 : 06 ~ 20 : 46)


실습을 진행하였지만 이번에도 역시 오타가 많이 났는지 수행이 정상적으로 되지 않습니다.

어제 작성했던 글에 아무것도 저장이 되어있지 않은것을 확인하였습니다. 수업 마치고 너무 피곤해서 급하게 집에 갔습니다.


하....





===========================================     1     ===========================================



(19 : 10 ~ 19 : 44)




mybatis는 자동매핑을 구현합니다.



실습 3. 은 이론수업을 조금 더 한 뒤에 진행을 하기로하였습니다.








===========================================     2     ===========================================

하영씨가 사준 핫씩쓰! 자몽맛을 먹고 얼굴에 물좀 퍼 풋고와서 다시 자리에 앉았습니다.


(20 : 05 ~ 20 : 47)



resultMap


함수 자동완성 기능을 사용하는 방법은 붉은 밑줄이 생기면





===========================================     3     ===========================================


(21 : 00 ~ 21 : 46)



SQL 조각으로 바꾸어 붙여넣으셔도 됩니다.


1:1 매핑과 1:다 매핑에 대한 이론수업 진행 후 실습을 계속 이어간다고 하셨습니다.


이클립스에서 Alt + 위/아래 방향키를 누르면 선택된 Line의 코드를 통채로 위/아래로 이동할 수 있습니다.


===========================================     4     ===========================================

스위프트 ios 관련 강의를 힘겹게 신청을 하고 이어서 수업을 들었습니다.



(22 : 00 ~ 22 : 33)


실습을 계속 이어서 진행하였습니다.


+ Recent posts