INFioT C,JAVA 디바이스 등록

개발자 포털을 통해 SDK를 다운로드 한 후 개발 환경을 설정하고 나면 다음 단계는 장치를 등록하는 것입니다 등록 된 계정으로 로그인하십시오

"Experience"를 선택하십시오 "내 장치", "장치 데이터", "장치 제어", "대시 보드"및 "펌웨어 관리" 장치를 등록하려면 "내 장치" 현재 등록 된 장치, 장치 모델 이름, 장치 ID 및 등록 날짜 목록을 확인할 수 있습니다 장치를 등록하려면 "새 장치"를 클릭하십시오 가이드 문서에 제공된 "자율 차량"시나리오에 적합한 장치를 등록합시다

유스 케이스에서는 탑승 인원 센서와 인승 검지 용 속도 센서가 사용됩니다 동일한 유스 케이스를 등록하고 사용 방법을 살펴 보겠습니다 장치 이름은 "LG BUS5"입니다 자치 차량의 이름은 "LG BUS5"입니다 기본 프로토콜로 http를 사용하겠습니다

장치 모델 이름의 경우 기존 등록 모델 이름을 사용하거나 새 모델 이름을 등록하고 사용할 수 있습니다 이제 두 개의 센서를 등록합시다 두 개의 센서가 있습니다 승객 검출 센서 및 속도 센서를 포함한다 메타 데이터 정보에 센서 정보를 등록 할 수 있습니다

레이블에 사용할 이름을 입력하십시오 설명에 추가 설명을 추가 할 수 있습니다 "추가"버튼을 눌러 다른 센서를 추가하십시오 이제 레이블을 "count"로 설정하고 설명에 "Occupant Detector"를 입력합니다 장치 등록에 빨간색 별표가있는 필수 입력란이 모두 입력되었습니다

선택 사항이 더 이상 없음을 확인했습니다 "저장"을 클릭하여 장치가 성공적으로 등록되었는지 확인하십시오 장치 목록을 보면 방금 등록 된 "LG BUS5"에 등록 된 것을 볼 수 있습니다 장치 등록이 완료되면 "장치"를 클릭하여 자세한 정보를 확인하십시오 자세한 정보를 확인하는 이유는 INFioT Device SDK에서 제공하는 구성 파일이이 정보를 사용하기 때문입니다

infiot_devicconf와 비교해 보겠습니다 이것은 개발자가 코딩 한 양을 최소화하기 위해 제공되는 구성 파일입니다 장치를 등록 할 때마다 관련 정보를 코드화하고 적용하면 개발 생산성이 떨어집니다 그래서 별도의 구성 파일을 사용했습니다

장치 정보 페이지의 장치 이름 "device_id"는 장치 등록 키 "device_enrollment_key"와 유사하게 만들어졌습니다 리소스 이름으로 "resource_name"을 사용하고 센서 정보 인 메타 데이터 정보로 "meta_data_id"를 사용합시다 여기에는 두 개의 메타 데이터가 있으므로 두 개를 입력했습니다 그런 다음 등록 된 "LG BUS 5"장치 정보를 infiot_deviceconf에 입력하십시오

장치 ID를 복사하여 "device_id"에 붙여 넣으십시오 장치 등록 키를 복사하여 "device_enrollment_key"에 붙여 넣으십시오 자원 이름을 복사하여 "resource_name"에 붙여 넣으십시오 센서 데이터 인 메타 데이터 ID를 복사하여 "meta_data_id"에 붙여 넣으십시오 이 시점에서 infiot_device

conf 파일 구성이 완료되었습니다 추가 장치가 등록되었습니다 샘플 코드를 변경하지 않고 infiot_deviceconf의 설정을 변경하면 예제에 구현 된 더미 감지 데이터를 전송할 수 있습니다 현재 수정중인 구성 파일의 위치는 D : //cygwin/infiot_device_c/build/infiot_device

conf입니다 방금 구성 파일을 수정했으며 소스 코드를 변경하지 않았습니다 infiotexe를 실행하십시오 감지 데이터가 서버로 전송됩니다

성공 응답 코드 2002를 받았습니다 센서 날짜가 이제 서버에서 전송됩니다 화면에서 감지 데이터 전송 로그와 수신 로그를 확인하십시오 개발자 포털로 전송 된 데이터를 확인하십시오 "Experience"를 선택한 다음 "Device Data"를 클릭하여 방금 장치로 전송 된 감지 데이터를 확인하십시오

장치 모델 이름을 선택하고 모델 이름을 선택하십시오 그것은 "LG BUS5"였습니다 "속도"라고 표시된 속도 센서를 선택하십시오 시간을 선택한 후 "보기"버튼을 누르면 전송 된 데이터가 화면에 표시됩니다 샘플 코드에서 "main

c"를 열고 전송 된 데이터와 비교하십시오 example1 ()은 감지 데이터를 전송하기위한 기본 소스 구조입니다 infiotInit ()는 infiot_deviceconf 구성 파일을 읽습니다 infiotCheckAEnCNT ()는 자원 및 메타 데이터가 서버에서 제대로 작성되었는지 여부를 확인합니다

샘플에서, 전송 될 speed_data 및 count_data는 더미 데이터로 변환된다 infiotInsertData ()로 더미 데이터를 전송 중입니다 서버에서 수신 한 데이터와 비교하면 그 데이터가 동일하다는 것을 알 수 있습니다

deepsleep – 쉽다의 다형성 (PHP VS JAVA)

지금부터 '쉽다'라는 말이 상당히 다양한 얼굴을 가지고 있을 수 있다, 라는 이야기를 php와 java라는 언어의 비유를 통해 해보려고 합니다 우선 php는 처음부터 큰 포부를 가지고 시작한 언어는 아니었어요 원래 이름도 상당이 소박했습니다 Personal Homepage Tools 였습니다 개인의 홈페이지를 만드는 도구라는 뜻이죠 나중에는 이 이름이 좀 없어 보이잖아요 그래서 php가 이름을 바꿉니다 약자는 같지만 그 의미를 Php는 Hypertext Preprocessor이다, 라는 이름으로 그 이니셜을 바꿉니다 그 안에 또 php라는 말이 들어 있으니까 다시 php는 hypertext preprocessor다, 라는 뜻이 되죠 재귀적인 유머라고 할 수 있는데 이 얘기를 이해하실 수 있을지는 모르겠습니다 글로 보면 더 편하실 텐데 그런데 예상 외로 큰 성공을 해서 지금은 컴퓨터 언어 중에서 10위 권 안에는 꼭 들어가 있고 이걸 웹과 인터넷으로 범위를 좁힌다면 그 영향력은 더욱 더 커집니다 말하자면 php는 작게 시작해서 크게 성공한 말하자면 자수성가형 언어라고 할 수 있습니다 그런데 php는 처음에는 그냥 가벼운 마음으로 시작했고 또 그 언어가 발전해 나가는 과정에서 정교한 검증 과정을 거쳐서 발전한 언어가 아니기 때문에 일관성 같은 것들이 많이 부족합니다 그래서 자연스럽게 php가 성장하면서 많은 시스템에서 사용되면서 php는 그 언어가 갖고 있는 정통 언어가 가져야하는 엄격함, 또 일관성같은 것들이 부족했기 때문에 그런 것들에 대한 요구를 받게 됩니다 그래서 그런 요구를 하나하나 받아들이면서 지금의 상태에 도달했습니다 예를 들어 php는 처음에 객체지향 기능이 없었어요 근데 나중에 객체 지향을 도입했죠 반면에 java는 '썬'이라고 하는 아주 큰 회사의 엄선된 엔지니어들에 의해 정교하게 설계되어 만들어진 언어입니다 그리고 처음부터 기존의 언어들이 갖고 있었던 객체지향이라고 하는 특성과 여러 가지 특성들을 언어들이 다양하게 가지고 있었는데 java는 처음부터 '우리는 객체지향 언어를 만들겠어'라고 선언을 하고 만든 언어이기 때문에 java라는 언어는 객체 지향의 화신 같은 언어입니다 그래서 이 언어는 객체지향이라고 하는 것을 강제합니다 그래서 java는 '객체지향'이라는 산을 어떻게든 대충이라도 꼭 넘어야만 이 언어를 쓸 수 있다는 점에서 초심자한테는 상당히 어려운 언어라고 할 수가 있습니다 하지만 이 언어는 객체지향이라는 목적성을 처음부터 세팅해서 그 외의 것들은 다 배제했기 때문에 비교적 일관된 언어적 특성을 가지고 있습니다 그 얘기는 뭐냐하면 이 언어는 일단 잘 다루게 되면 제가 생각하기에 php같은 언어보다 기억해야 할 것이 오히려 적다, 라는 그런 장점을 가지고 있습니다 말하자면 php는 진입하기는 쉽지만 진입 후에는 어려울 수 있는 측면이 있고 java 같은 경우는 진입하기는 어렵지만 진입한 후에는 오히려 쉬운 면이 있는 것 같습니다 그런데 오해하시지 않으셨으면 좋겠다는 생각이 드는 것은 처음에 진입하기 쉬운 것도 굉장히 중요한 특성입니다 그리고 진입한 후 나중에 중급자가 되어서 쉽다라는 것도 굉장히 중요한 특성이기 때문에 php와 java 중 어떤 언어가 더 좋다, 라는 얘기를 이 글에선 하지 않습니다 java와는 다르게 php는 원래는 없었던 객체지향을 나중에 채택했습니다 그래서 기본적으로 함수를 중심으로 해서 언어가 설계되어 있어요 자연스럽게 여러분이 함수까지만 알면 이 언어를 충분히 사용할 수 있습니다 객체 지향은 선택사항이에요 여러분이 쓰고 싶으면 쓰고, 쓰기 싫으면 안 쓰면 되거든요 그래서 초심자는 php를 사용하는 것이 이론적으로는 쉽습니다 왜냐하면 객체지향이라는 것은 나중에 필요할 때 쓰면 되니까요 생각해보면 객체지향이라는 것이 하늘에서 뚝 떨어진 것이 아니고 역사적인 발전 과정을 통해서 함수가 먼저 있었고 함수가 많아짐에 따라 연관된 함수를 그룹핑해서 정리정돈 하기 위해서 만들어진 것이 객체지향의 중요한 측면 중 하나라고 생각하기 때문에 처음에는 함수로 시작해서 나중에 실력이 좋아짐에 따라 객체지향을 채택할 수도 있고 채택하지 않을 수 있다, 라고 하는 것은 제 생각에는 php가 가진 중요한 장점입니다 하지만 객체지향 이전의 프로그래밍 패러다임 그리고 객체지향 이후의 패러다임이 동시에 공존하고 있는 상태이기 때문에 그러면서도 함수형 언어가 갖고 있는 클로저 같은 특성들도 채택하고 있기 때문에 어떻게보면 php라는 언어는 문법적인 표면적이 상당히 낮은 편입니다 그래서 이것은 코드를 쓰는 쪽, 즉 초심자가 자기가 알고 있는 범위에서 자기가 아는 문법을 사용해서 코드를 작성하는 것은 유리하지만 다른 사람이 만들어 놓은 코드를 보고 그 코드가 어떤 내용인지를 읽는 쪽에서는 불리한 면이 있는 것 같아요 다르게 말하면 초심자 입장에선 진입하기 쉽지만 진입 후에는 어려운 면이 있는 것 같습니다 그래서 제가 생각하기에 '쉽다'라는 말은 사실은 다양한 '쉬움'이 있을 수 있다고 봅니다 어떤 '쉬움'은 초심자에게 쉬운 걸 수도 있구요 어떤 '쉬움'은 중급자에게 쉬운 것일 수도 있죠 자신이 어떤 상황에 있느냐에 따라서 그 사람의 상황에 따라 그 사람에게 적합한 언어가 있을 수 있고 환경이 있을 수 있다라는 생각도 듭니다

A 12-year-old app developer | Thomas Suarez

번역: Yunhi Maeng 검토: Mira Park 전 항상 컴퓨터와 기술을 매력을 느껴왔습니다 아이폰, 아이팟 터치, 아이패드의 몇몇 앱도 만들었죠

이 중 몇가지를 여러분과 함께 얘기하고자 합니다 제 첫번째 앱은 사람들의 미래운에 따라 다른 색의 지구 를 나타내는 지구 운세라고 하는 점쟁이 앱이었습니다 가장 성공적이었고 제가 제일 좋아하는 앱은 버스틴 지버라는 (웃음) 저스틴 비버 두더지 잡기 앱이었습니다 학교 애들이 저스틴 비버를 좀 싫어하길래 그 앱을 만들었죠 우선 그런 앱을 만들기로 결정하고, 프로그램 작업을 했습니다

2010년 명절 전에 어플을 출시했습니다 많은 분들이 어떻게 이렇게 했는지를 질문하십니다 대개, 이런 질문을 하시는 분들도 앱을 만들고 싶어하는 분입니다 많은 어린이들이 게임을 좋아하기도 하지만, 게임을 만들고 싶어 하기도 합니다 그것이 쉽지 않죠

왜냐하면, 대다수가 프로그래밍을 배우러 어디로 가야할 지를 모르기 때문입니다 축구를 배우고 싶으면, 축구팀에 가입하면 되고, 바이올린을 배우고 싶으면, 레슨을 받을 수 있습니다 앱을 만들려면, 어떻게 해야할 까요? 부모님들이 해주실 수도 있지만, 우리부모님들이 어릴 때는 앱을 만들거나 하지는 않았잖아요 (웃음) 앱을 만들려면, 어디로 가야할까요? 저는 다음 같이 접근했습니다 첫번째, 기본적인 틀을 알기위해 파이손, 자바같은 여러 프로그래밍 언어들로 프로그래밍을 했습니다

그때 애플사가 아이폰을 출시했고 아이폰에는 아이폰앱을 프로그램하고 만들 수 있는 아이폰 소프트웨어 개발 키트라는 툴이 있었습니다 이것이 저에게 새로운 기회의 문을 열어주었습니다 이 소프트웨어 개발 키트를 가지고 놀다가 작은 두개의 테스트 앱을 만들게 되었습니다 그 중 하나가 바로 지구운세였습니다 앱스토어에 그 앱을 내 놓을 준비가 된 것이죠

부모님을 설득하여, 앱스토어에 이 앱을 내놓을 때 필요한 99달러의 가입비를 낼 수 있었습니다 그리고 앱스토어에서 출시할 수 있었습니다, 가족, 친구, 선생님, 심지어 엡스토어 분들로 부터 관심과 격려를 받았습니다 그것이 저에게는 큰 도움이었습니다 스티브 잡스 회장님에게서 많은 영감을 얻었습니다

학교에서는 앱 클럽을 만들었고, 선생님들께서는 많은 후원을 해주셨습니다 우리 학교 학생은 누구나 가입해서 앱 디자인을 배울 수 있습니다 이렇게 다른 사람들과 제 경험을 나눌 수 있게 된 것입니다 아이패드 파이럿이라고 하는 프로그램들이 있습니다 어떤 지역은 이런 프로그램을 가지고 있는데, 전 운좋게 그 일원이 될 수 있었습니다

우리의 과제는 아이 패드를 어떻게 사용해야 되며, 아이패드를 위해 어떤 앱을 만들어야 하느냐 입니다 그래서 학교 선생님들의 사용후기도 듣고 어떤 앱을 좋아하는지도 파악합니다 우리가 앱을 디자인하여 팔때, 우리 지역이나 다른 지역에서 이 애으로 부터 오는 모든 수익금은 우리 지역의 교육 재단으로 들어갑니다 요즘 기술적인 부분에 대해서는 선생님들 보다 학생들이 조금 더 잘 알고 있습니다 (웃음) 그래서 (웃음) 죄송해요, 선생님

(웃음) 그래서 이런 앱이 선생님들에겐 교육자료가 되고, 다른 분들도 알아보고 잘 이용합니다 미래에 제가 뭘 하고 싶은지를 말씀드리며, 끝내겠습니다 첫째, 더 많은 앱과 게임을 만들고 싶습니다 앱을 만들기 위해 다른 제3의 회사와 함께 일하고 싶고, 안드로이드 개발에도 참여하고 싶으며, 앱클럽을 계속 하고 싶고, 학생들과 지식을 함께 나눌 다른 방법도 찾아보고 싶습니다 감사합니다

(박수)

코딩 독학 어떻게 시작하면 좋을까? 코딩 공부법!

많은 분들이 코딩 공부를 시작하고는 싶은데 어떻게 시작해야 할지 몰라 선뜻 시작을 못하곤 합니다 그래서 이번에는 코딩 독학을 어떻게 시작하면 좋을지 좋은 코딩 공부법에는 어떤 것이 있을지 소개해보려 합니다 프로그래밍 독학을 효율적으로 진행하기 위해서는 1 코딩 공부의 목표를 설정하고 2

어떤 프로그래밍 언어를 배우기 시작할지 선택하고 3 코딩 공부 방법을 선택하고 진행하는 것을 추천합니다 각 단계에 대해 조금 더 자세히 설명해보도록 하겠습니다 어떤 것이든 목표 혹은 동기가 있다면, 훨씬 재밌고 신속하게 진행할 수 있습니다 코딩 역시 마찬가지입니다 어떠한 목표를 가지고 코딩 공부를 시작하는 것과 그렇지 않은 것에는 큰 차이가 있습니다 예를 들어, OO 앱이라는 구체적인 목표를 갖고 코딩 공부를 시작한 A 군과 단순히 코딩 분야가 유망해서 코딩 공부를 시작한 B 군은 전혀 다를 것입니다 기초적인 코딩 공부로 시작하는 것은 똑같겠지만 A 군은 OO 앱을 만들기 위해 그에 관련된 추가적인 공부를 당연하게 이어서 하게 될 것이고 B 군은 기초 공부를 끝냈다면 다시 어떤 공부를 추가적으로 해야 할지 고민하기 시작할 것입니다 그뿐만 아니라, 자신의 목표에 한 걸음 한 걸음 다가가는 느낌을 받으며 공부를 한다면, 훨씬 흥미로울 것입니다 한마디로, 소박하더라도 만들고 싶은 무언가를 정하라는 것입니다 그것이 웹 애플리케이션이 됐든, 아이폰 혹은 안드로이드 앱이 됐든 말입니다 만들고 싶은 무엇인가를 설정했다면 그것을 만들기에 적합한 프로그래밍 언어가 있을 것입니다 예를 들어, 아이폰 앱을 만들기 위해서는 스위프트 언어가 필요할 것이고 안드로이드 앱을 만들기 위해서는 자바나 코틀린 언어가 필요할 것입니다 어떤 프로그램을 만들기 위해 어떤 언어가 필요하다를 일일이 설명하기에는 만들 수 있는 프로그램의 종류가 워낙 다양하기도 하고 의미도 없습니다 스스로 검색해서 이 프로그램을 만들기 위해서는 이 프로그래밍 언어가 필요하겠구나를 찾아내는 것도 하나의 능력입니다 결론적으로, 목표를 만들기 위한 프로그래밍 언어를 검색해서 조사합니다 이제 본격적으로 코딩 공부를 할 때입니다 코딩 공부를 하는 방법에는 크게 두 가지가 있습니다 독학하는 것과 학교 또는 학원에서 수강하는 것입니다 둘 중에 무엇을 더 추천하지는 않습니다 사람마다 자신에게 적합한 방법이 다르기 때문이죠 저는 학교 수업, 학원 강의, 독학 모두 해봤는데요 독학이 가장 잘 맞았습니다 학교 또는 학원을 통해 공부하다 보면 1차적으로 내용을 받아들이고 2차적으로 혼자 다시 학습해야 하기 때문에 효율적이지 못했습니다 하지만 독학은 내용을 받아들이는 동시에 내 것을 만들 수 있어 직접 코딩 작성하는데 집중할 수 있었습니다 코딩 독학도 크게 두 가지로 나눌 수 있습니다 책으로 하는 독학과 영상으로 하는 독학으로 말입니다 책과 영상 중에서 저는 책을 더 선호합니다 빨리 진행하고 싶을 때는 빨리 진행하고 천천히 진행하고 싶을 때는 천천히 진행할 수 있어 속도 조절이 가능했기 때문이죠 하지만 진도가 더디거나 흥미를 잃었을 때는 영상도 도움이 많이 되었습니다 개인적으로, 모든 방법을 시도해보고 본인에게 가장 잘 맞는 방법을 선택하는 것을 추천합니다 여기서부터는 개인의 참을성과 꾸준함이 큰 영향을 미칠 것입니다 공부하는 과정이 지루할 수도 있고 목표한 앱을 만들다가 막힐 수도 있습니다 하지만 설정한 목표를 향해 어떠한 어려움이 있어도 묵묵히 참고 공부하며 개발한다면 한 단계 성장하게 될 것입니다 개발이 지루하거나 막히는 것이 생길 때 우리에게는 구글과 인터넷이라는 아주 큰 도우미가 있다는 것을 잊지 않았으면 좋겠습니다 구글을 검색하면 시간은 조금 걸릴 수도 있겠지만 웬만한 문제를 해결할 수 있습니다 인터넷 각 코딩 분야의 커뮤니티에서는 응원이나 문제에 대한 도움을 받을 수도 있습니다 첫 번째로 목표한 무엇인가를 완성했다면 새로운 또 다른 프로젝트를 기획하고 진행해서 새로운 분야를 탐구하는 것을 추천합니다 하지만 이가 조금 싫증 난다면 팀을 구성해 그룹 프로젝트를 진행하거나 네트워킹 기회가 주어진다면 자신에게 적합한 멘토를 구하는 것도 적극 추천합니다 이것으로 이번 콘텐츠를 마무리하겠는데요 인스타그램에도 올렸듯이 저는 최근에 머신러닝을 iOS에 적용하는 방법에 대해 공부하고 있는데요 관련 콘텐츠도 조만간 올려보겠습니다 그럼 MacKer 사이트, 유튜브, 페이스북, 인스타그램에서 더 많은 콘텐츠 만나보시고 구독 및 팔로우 그리고 소통하는거 잊지 말아주세요 다음 콘텐츠에서 만나 뵙겠습니다

맥 vs 윈도우! 최고의 코딩 노트북은?

제 주변의 개발자 같은 경우 대부분 맥을 사용하는 경향이 있습니다 미국에서 대학 생활을 하고 있어서 그럴 수도 있지만 오랫만에 한국을 와보니 한국도 예외는 아니라는 생각이 들더군요

프로그래밍을 하는 개발자들에게 맥을 사용하기 위한 좋은 이유가 있습니다 이번 영상에서는 맥과 윈도우를 비교해보고 프로그래밍을 하기 좋은 노트북은 어떤 것인가에 대해 알아보려고 합니다 미리 답변을 드리자면 맥을 추천 합니다 자세한 이유는 알아보도록 하죠 # 유닉스 기반의 맥 중학생때 이후로 저는 애플에 빠져 살았고 유독 애플을 좋아하는 사용자 입니다

그럼에도 객관적으로 맥이 적어도 개발자에게 있어서는 윈도우보다 낫다고 주장할 수 있는 이유는 맥 은 유닉스 기반이기 때문입니다 그리고 유닉스 기반이기 때문에 터미널이라는 앱이 존재합니다 터미널은 개발자에게 있어 필수적인 존재입니다 대부분의 개발자는 터미널을 많이 사용하고 사용할줄 알아야만 합니다 물론 윈도우에도 맥의 터미널과 비슷한 것이 존재합니다

cmd라고 불리는데요 이것의 문제는 ms-dos 기반이라는 것이고 이것은 마이크로소프트 를 제외하고는 많이 사용하지 않습니다 파워쉘이라는 터미널도 새로 생겼 지만 이것 역시 비슷한 문제점을 갖고 있습니다 그렇다면 왜 유닉스 기반의 터미널 만 많이 사용되는 것일까요 그 이유는 요즘의 웹 서버 백엔드 데이터베이스 등 대부분의 것들이 유닉스 기반 에서 작동되기 때문입니다 이것들은 주로 무료이고 오픈소스 인 리눅스 위에 설치되어 있습니다

윈도우에서 유닉스의 터미널을 에뮬레이션을 통해 설치할수는 있습니다 문제는 매번 업데이트에 신경 써야 하고 많은 경우에 잘 작동하지 않습니다 최근 들어 마이크로소프트가 윈도우 10에서는 유닉스 기반의 터미널 을 지원하기 시작한것으로 알고 는 있습니다 하지만 그럼에도 아직까지 대부분의 개발자는 마음 편하게 맥을 사용 합니다 # 여러가지로 우월한 맥 그 외에도 ios 혹은 macos 등 애플 제품을 개발하고 싶다면 맥은 필 수입니다

디자이너에게도 sketch 같은 앱이 맥에만 있는 경우가 많습니다 백엔드 개발자에게도 루비가 네이티브 로 작동하는 맥이 좋을 것입니다 요즘 같은 크로스 플랫폼 시대에는 무엇이든 개발 가능한 맥이 좋을 것입니다 그리고 이 부분은 개발자에게만 해당하는 내용은 아닙니다만 맥 이 최근들어 qcquality control가 낮 아지고 완성도가 떨어졌다고는 하지만 다른 노트북에 비하면 여전히 압도적으로 품질이나 마감이 훌륭 합니다 이는 하드웨어에만 해당하는 내용이 아닙니다

몇년 전에 비해 격차가 많이 줄어 들기는 했지만 소프트웨어 역시 맥이 윈도우에 비해 좋다고 생각합니다 윈도우 10이 급속도로 최적화되며 격차가 많이 좁혀진것이 사실이지 만 느려지는 속도나 여러가지 체감 성능은 여전히 맥이 낫다고 생각합니다 또 맥은 나중에 중고로 판매할때 도 좋습니다 흔히 가격 방어라고 하는데요 중고 제품의 가격이 상대적으로 높게 책정됩니다

# 마무리 이렇게 말하고나니 맥을 사라고 강요하는 느낌인데요 사실 사용자의 필요에 따라 최고의 노트북은 바뀔수도 있다고 생각합니다 예를들어 닷넷 개발자나 게임 개발자 에게는 윈도우가 더 좋을 수 있습니다 맥과 윈도우 둘다 장단점이 있습니다 하지만 개인적으로 두 운영체제 를 모두 사용해봤을때는 개발자 에게 있어 맥이 주는 장점이 윈도우 가 주는 장점보다 훨씬 많다고 생각합니다

이것으로 이번 영상을 마치겠는데 요 이런 영상이 더 보고 싶다면 좋아요 구독 그리고 알림 설정을 해주세요

자바? 파이썬? 어떤 프로그래밍 언어를 배워야하나요?

저는 프로그래밍이 처음인 혹은 막 입문한 사람인데요 어떤 프로그래밍 언어를 배워야 하나요 어디서든 가장 많이 사용되는 자바 부터 배워야합니다

자바라구요 c언어를 통해 기본부 터 배워야죠 c언어라뇨 누가 뭐래도 요즘 가장 핫한 파이썬 을 배워야죠 무슨 소리에요 저는 스위프트가 가장 잘 만들어진 언어라고 생각합니다 제 솔직한 의견 저는 개인적으로 사람에 따라 다르다 고 생각합니다

어떠한 목적을 가지고 프로그래밍 언어를 배우려고 한다면 그 목적 에 맞는 프로그래밍 언어는 당연히 존재할 것입니다 그러나 정해진 특별히 없이 프로그래밍 을 처음 시작하셨다면 어떤 언어로 배우기 시작하느냐보다는 어떤 언어에든 대부분 공통적으로 존재하는 기본적인 내용을 학습하고 코딩 에 익숙해지는 것이 더 중요하다 고 생각합니다 어떠한 프로그래밍 언어든지 기본적으로 해당 언어를 실행하는 방법 해당 언어의 문법 디버깅 하는 방법을 익히는 것이 매우 중요합니다 그리고 이러한 것들은 어떤 프로그래밍 언어에서든 비슷하거나 유사할 겁니다 개인적으로는 자바를 통해 프로그래밍 에 입문했습니다

학교의 컴퓨터 싸이언스 수업이 자바를 통해 진행되었기 때문이 죠 자바에서는 반복문 조건문 변수 함수 자료구조 등을 배웠고 자바 를 실행하기 위한 환경 세팅 등 도 배웠습니다 자바를 통해 기본을 익히고 나서 는 자바의 이해를 돕기 위해 c언어 도 배워봤고 html css 자바스크립트 등 웹 분야의 언어도 배워봤습니다 그러다 결국 가장 좋아하는 애플 제품의 앱을 만들기 위해 스위프트 를 배우기 시작했습니다 이렇듯 사람마다 본인에게 가장 적합한 프로그래밍 언어가 있고 모두에게 공통되게 좋은 프로그래밍 언어는 존재하지 않습니다

다만 저는 개인적으로 현재 많이 사용되고 있는 프로그래밍 언어로 입문하시는 것을 추천합니다 그 이유는 많이 사용되고 있어야 배울때 도움 받을 곳이 많기 때문 입니다 2018 프로그래밍 언어 순위 보여주 며 2018년 현재 가장 핫한 프로그래밍 언어에는 파이썬 자바스크립트 스위프트 등이 있고 전통적으로 많이 사용되고 있는 언어에는 자바 c++ php 등이 있습니다 그 다음으로는 각 상황에 적합한 프로그래밍 언어를 추천해보려고 합니다 ios 앱이나 macos 앱 등 애플 에 관련한 앱을 만들고싶다면 당연히 스위프트를 배워야할 것입니다

안드로이드 앱을 만들고 싶다 자바 나 코틀린을 추천합니다 데이터 사이언스를 위한 데이터 분석을 하고 싶다면 파이썬을 추천 합니다 웹사이트를 개발하고 싶다면 하나의 언어로 서버쪽과 클라이언트쪽 을 모두 만들 수 있는 자바스크립트 를 추천합니다 네 이렇게해서 처음 프로그래밍 을 시작하거나 프로그래밍에 막 입문한 분이 배워야할 프로그래밍 언어에 대해 알아봤는데요 다시 한번 간단히 정리하자면 프로그래밍 언어는 종류와 목적이 다양하기 때문에 모두에게 절대적으로 좋은 프로그래밍 언어란 없습니다

물론 저도 프로그래밍을 처음 시작할때 어떤 언어로 시작해야 할지 굉장히 고민도 많이하고 많이 물어보고 다녔습니다 그러나 지금 생각해보면 당시 어떤 언어를 배우느냐보다는 어떤 언어 이든 잘 배우는 것이 중요하다는 생각이 들어 해당 영상을 이렇게 만들게 되었습니다 하나의 언어를 제대로 배웠다면 앞으로 어떤 언어를 추가적으로 배워야할지 조금 더 쉽게 선택할 수 있을 것입니다 네 이것으로 이번 영상을 마치도록 하겠습니다 영상이 좋았다면 좋아요와 구독 을 눌러주시고 궁금한 점이 있다면 댓글로 남겨주세요

INFioT JAVA SDK 사용법

INFioT는 장치 개발자 용 SDK의 C 및 JAVA 버전을 제공합니다 "https://infiot

lgcnscom/"에 연결하십시오 먼저 로그인을 해주세요 "지원"을 클릭하십시오 "다운로드"를 선택하십시오

"SDK 다운로드"를 선택하십시오 INFioT SDK for Java 개발자를 다운로드 할 수 있습니다 infiot_device_java_sdk_10zip을 다운로드했습니다

압축 파일을 압축 해제하십시오 압축 파일의 압축을 풀 때 maven에서 제공 한 샘플 프로젝트 (UseCase)와 샘플 프로젝트를 사용하는 local_repositoryzip 파일을 확인할 수 있습니다 Eclipse를 실행할 준비가되면 Eclipse를 실행하십시오 내가 사용하고있는 Eclipse 버전을 공유 할 것이다

스프링 도구 모음 버전 394를 사용하고 있습니다 이제 프로그램을 닫으십시오 Eclipse를 사용하기 전에 다운로드 한 샘플 프로젝트를 복사하십시오

Eclipse에서 사용중인 작업 공간으로 이동하십시오 기존 프로젝트를 삭제합니다 한 번 더 보여줘 프로젝트를 붙여넣고 UseCase를 다음과 같이 추가하십시오 UseCase를 추가 한 후, 식 Eclipse에서 제공하는 샘플 프로젝트를 가져옵니다

필요한 부품을 수정하고 제작하는 과정을 계속 진행하십시오 마우스 오른쪽 버튼을 클릭하고 "import"를 선택하면, Maven의 기존 Maven 프로젝트가 표시됩니다 프로젝트를 선택하십시오 "다음"을 클릭하십시오 루트 디렉토리로 이동 작업 영역에서 "UseCase"를 선택하십시오

프로젝트가 제대로 추가되었는지 확인하려면 "완료"버튼을 클릭하십시오 UseCase를 사용하지 않도록 선택할 수 있습니다 그리고 직접 maven 프로젝트를 만들어 개발을 진행하십시오 그러나이 경우에는이 부분을 놓치지 않도록주의하십시오 먼저

프로젝트를 만든 후 pomxml 파일을 엽니 다 종속성 및 저장소 부분을 그대로 복사하십시오 복사가 끝나면, 당신의 maven 프로젝트 아래에 local_repository 파트를 복사하고 그대로 사용하십시오 내부 local_repository는 장치 SDK 1

0 jar 파일입니다 우리는 pom을 사용하여이 개발에 필요한 종속 라이브러리와 관련된 항목을 관리합니다 pom을 처음 수정할 때 추가 된 부분을 사용하여 관리되는 pom을 maven 업데이트로 일괄 적으로 업데이트 할 수 있습니다 두 작업이 완료되면, "UseCase"를 선택하십시오 마우스 오른쪽 버튼을 눌러 메이븐의 "프로젝트 업데이트"를 선택하십시오

이것을 선택하면 중요한 부분이 나타납니다 "스냅 샷 / 릴리즈 강제 업데이트"를 선택하십시오 그런 다음 확인을 누릅니다 Maven이 업데이트 중입니다 Maven 종속성에있는 device-sdk-1

0jar 파일을 개발하는 동안 사용 된 종속성 부분을 가져 왔는지 확인할 수 있습니다 이것이 일어날 때, SDK를 작성할 준비가 된 환경이 있습니다 준비가 되었다면, 샘플 코드를 살펴 보겠습니다 UseCase 아래에 UseCase1

java 파일이 있습니다 이 파일에서, 우리는 InfiotService 객체를 만들고, 생성 된 객체로부터 센싱 데이터를 전송하기위한 speedSensorPath를 검색하고, 그런 다음 두 번째 countSensorPath를 검색합니다 검색된 패스는, 최초의 infiotInsertData 메소드의 최초의 파라미터에 격납됩니다 두 번째로 임의의 더미 데이터를 전송합니다 숫자를 바꾸자

나는 그들을 150과 280에 세울 것이다 탑승자의 수가 30 명과 10 명이라고 가정 해 보겠습니다 다음으로해야 할 일은 configproperties 파일을 만드는 것입니다 Resource 폴더 아래에 config

properties 파일을 작성하십시오 장치 ID 저장 장치의 등록 키 저장 센서의 메타 데이터 ID 저장 버스의 자원 이름을 저장하십시오 이 정보를 얻을 수있는 곳이 궁금 할 것입니다 이전 프로세스를 통해 장치를 등록했습니다 등록 된 장치를 확인하려면, 개발자 포털에서 "Experience"를 선택하십시오

그런 다음 "등록 장치"를 클릭하여 등록 된 장치를 확인하십시오 장치 등록 프로세스를 진행하지 않은 경우, 등록 장치 비디오를 다시 참조하고 장치를 등록하십시오 이미 등록 된 "LG BUS TEST"라는 장치의 정보를 확인해 봅시다 확인할 기기 세부 정보보기 장치 아이디 장치 등록 키 리소스 이름 메타 데이터 ID 이제 방금 작성한 configproperties 파일을 살펴 보겠습니다

화면 레이아웃을 절반으로 나눕니다 장치 ID 부분은 다음과 같이 나타납니다 장치 ID 복사 기기 ID 붙여 넣기 장치 등록 키를 복사하여 deviceEnrollmentKey에 붙여 넣으십시오 마찬가지로, "Resource Name"을 복사하여 resourceName에 붙여 넣으십시오 하단의 센서 데이터에 해당하는 메타 데이터 ID를 복사합니다

먼저 속도 센서를 복사합니다 둘째, 주행 감지 센서를 복사합니다 이런 방식으로 복사하면, INFioT 개체가 생성되는 동안, configproperties 파일이 읽혀집니다 메타 데이터 ID 정보는 getContainerPath를 통해 검색 할 수 있습니다

그런 다음, 우선, 0 번째 배열은 속도 센서의 경로입니다 첫 번째 배열은 탑승자 센서의 정보 다음으로 우리는 두 개의 속도 데이터와 두 명의 점유자 데이터를 INFioT 서버에 보냅니다 INFIOT 서버에 데이터가 제대로 등록되어 있는지 확인하십시오 "useCase"를 선택하십시오 오른쪽 클릭 버튼을 누릅니다

"Run As"에서 Java Application을 선택하십시오 "확인"을 클릭하십시오 저장해 시작하다 순차적으로 로그 파일이 나타납니다 여기 화면에, 이 방향으로가는 화살표가있는 부분 (<<)은 서버에서받은 부분입니다

이 부분 (>>)은 우리가 요청한 부분입니다 데이터 삽입이 완료되면, 장치로부터 전송 된 센서 데이터가 서버에 삽입 된 경우, 우리는 로그에 "데이터 삽입 완료"를 볼 수 있습니다 이 경우 INFIOT 서버로 센서 데이터를 전송하는 작업이 완료되었습니다 작업이 완료되면 서버의 데이터를 확인하십시오 INFioT 개발자 포털에 다시 액세스하면, "Experience"에 대한 장치 데이터를 선택합시다

장치 데이터에서 장치 모델명을 선택하고 선택한 LG BUS TEST 및 메타 데이터 속도 정보를 확인하십시오 View를 사용하여 이전에 누적 된 데이터와 방금 전송 한 데이터가 정상적으로 도착했는지 확인하십시오 이전에 입력 한 속도 데이터는 150과 280로 올바르게 저장되었습니다 30 및 10에 대응하는 카운트 정보가 적절히 저장되었다

[Fusetools]퓨즈 스터디를 원하다[Wonhada] – 06. 자바스크립트 01 (변수, 조건, 반복)

안녕하세요 원하다닷컴의 원강민입니다

이번 시간에는 자바스크립트에 대해서 알아보겠습니다 여기 보시는 것처럼 자바스크립트는 퓨즈의 비즈니스 로직을 구현하기 위해 사용하는 언어입니다 비즈니스 로직이란 텀즈와 위키백과에서 이렇게 정의하고 있습니다 비즈니스 로직에 대한 정의는 사람마다 다르고 또 플랫폼마다 다르기 때문에 이 내용을 가지고서 참고하시기 바랍니다 퓨즈의 경우 비즈니스 로직은 UI를 제외한 나머지라고 볼 수 있습니다

UI는 UX라고 불리는 XML을 이용하고 그 외의 부분은 자바스크립트로 처리합니다 현재 퓨즈는 ES6 즉, ECMAScript 6를 지원합니다 ES6는 ES2015라고도 불립니다 직접 코딩하면서 자바스크립트에 대해 알아보겠습니다 자바스크립트를 알아보기 위해서 JavaScript 태그를 만들겠습니다

자바스크립트는 UI가 아니기 때문에 콘솔창에서 확인할 것입니다 consolelog를 찍고서 이렇게 할 수 있습니다 저는 consolelog가 길기 때문에 log라는 변수에 console

log를 담아보겠습니다 이와 같이 하여도 동일하게 적용됩니다 우선 변수에 대해서 알아보겠습니다 자바스크립트의 변수는 var 라고 하는 키워드가 있습니다 그런데 ES6부터는 let이라는 키워드와 const라고 하는 키워드가 더 추가되었습니다

처음 하시는 분들은 그냥 var와 let과 const라는게 있다고 알아두시면 될 것 같습니다 차이점에 대해서 알아보겠습니다 var는 이렇게 하고 저장해 보겠습니다 22라고 나옵니다 즉, 11이라고 하는 숫자를 a라고 하는 변수에 넣고 다시 a에 22를 다시 넣어서 그 변수의 값을 바꿉니다

이렇듯이 어떤 데이터를 지칭하는 이름이라고 생각할 수 있습니다 그러면 let과 const는 어떻게 다른지 알아보겠습니다 우선 const를 해보겠습니다 저장하면 다음과 같이 에러가 나옵니다 그 이유는 const라고 된 것은 이 변수에 다른 값을 다시 넣지 못하는 것입니다

이 부분을 주석 처리해 보겠습니다 저장하면 수정되었다고, 고쳐졌다고 나옵니다 즉, const는 바꿀 수 없는 값입니다 그것을 상수라고 부릅니다 이번에는 let을 해보겠습니다

let도 동일하게 22가 나왔습니다 var와 let은 거의 같습니다 하지만 차이점이 하나 있습니다 예를 들어서, 동일하게 var라고 하는 변수를 넣었을 때 22가 나왔습니다 하지만 처음에 let으로 변수를 만들었다면

저장하면, 다음과 같이 에러가 나옵니다 그 이유는 이미 변수가 정의되어 있기 때문에 다시 정의할 수 없다는 것입니다 이와 같이 let은 좀 더 엄격합니다

그래서 실수하지 않기 위해서 let을 사용하는 것을 권장합니다 조금전에 알아봤던 const의 경우 이와 같이, 배열을 사용하게 되면 그 배열 자체를 바꿀 순 없습니다 즉, 이와 같이 사용하면 에러가 납니다 하지만, 배열의 요소에 접근하는건 가능합니다 요소를 변경해 봅니다

에러가 사라졌습니다 즉, 배열을 사용하는 경우에는 const로 정의하는 것이 안전합니다 기억할 것은, 변수는 var와 let과 const가 있다는 것입니다 이번에는 조건문에 대해서 알아보겠습니다 조건이라고 하는 것은 무언가를 할 때 혹은 하지 않을 때와 같은 우리가 흔히 얘기하는 조건과 같은 의미입니다

예제를 하나 만들어 보겠습니다 mathrandom을 이용해서 0 이상 1 미만의 임의의 수를 가져옵니다 거기에 10을 곱하고 mathfloor라고 하는 것으로 절삭해주면 0부터 9까지의 값이 나옵니다

이것을 이용해서 얻어진 결과가 짝수이면 짝수라고 출력하고 홀수이면 홀수라고 출력하는 조건문을 만들어 보겠습니다 i를 2로 나눈 나머지가 0이라면 짝수라고 출력합니다

그게 아니라면 홀수라고 표기합니다 자바스크립트에서는 같다는 표시를 이퀄 두 개를 쓸 수 있지만, 정확하게 하기 위해 세 개를 쓸 수도 있습니다 저장해 보면 홀수입니다 그 값을 알기 위해서 i를 찍어보겠습니다 3은 홀수입니다

한번 더 해보겠습니다 9도 홀수입니다 4는 짝수입니다 이와 같이 조건을 통해서 실행되는 코드를 달리할 수 있습니다 지금 이 코드는 조금 줄여쓴 것인데, 원래는

이와 같이 또 이와 같이 브레이스({ })를 이용해서 구간을 정해줄 수 있습니다 다만, 한 줄일 경우 이와 같이 줄여쓰기도 합니다 지금은 이 경우와 그렇지 않은 경우에 대해서만 출력했지만 다른 경우가 있을 수 있습니다

예를 들면 이와 같이 3 미만이라면 001, 또는 3 이상부터 6 미만이라면 002, 그 나머지 값들은 003을 찍도록 했습니다 실행해 보겠습니다 2는 짝수입니다 그리고 2는 3 미만이기 때문에 001 이라고 나왔습니다 다시, 0은 짝수고 001 입니다

5는 홀수고, 002 입니다 3 이상, 6 미만이기 때문입니다 이와 같이 여러개의 조건일 경우 else if 구문으로 사용할 수 있습니다 이번에는 반복문에 대하여 알아보겠습니다 반복이라는 말은 여러번을 한다는 뜻입니다

반복을 위해서는 for 구문을 사용합니다 이와 같이 i를 출력해 보겠습니다 2부터 9까지가 출력이 되었습니다 여기 안에다가 하나의 반복문을 더 넣어보겠습니다 이번에는 j라는 이름으로 넣겠습니다

이 값을 1부터 9까지로 만들고, 여기다가 넣어보겠습니다 이 내용은 지우고요 그러면 i, x 곱하기 입니다 j i 곱하기 j, 실행하면 뭐가 나올까요? 구구단 입니다 이와 같이 2단부터 9단까지, 2 곱하기 1부터 2 곱하기 9까지 이런식으로 쭉 출력할 수 있습니다

이렇게 숫자 혹은 어떤 조건을 계속해서 반복하는걸 반복문이라고 합니다 while 문에 대해서 알아보겠습니다 while 문은 어떤 조건일 때 계속해서 반복하는 것입니다 예를 들면, 이런 것입니다 카운트(cnt)라고 하는 변수에 1을 주고, while 문에 카운트가 10 미만인 경우에 카운트 값을 찍습니다

그리고 카운트를 1씩 증가시키면 저장해 보겠습니다 1부터 9까지 반복됩니다 즉, 처음에 들어온 값이 1이고, 10보다 작기 때문에 출력을 하고 하나 증가시킵니다 그런 방식으로 계속해서 돌다가 마지막에 10이 되고 10은 10 미만이 아니기 때문에 바깥으로 빠져 나갑니다 이곳에 이와 같이 로그를 찍으면 마지막에 10이 되어서 완료된 것을 볼 수 있습니다

while 문의 경우, 조건이 잘못되면 무한정 루핑되는 상황이 생길 수 있습니다 즉, 어떤 조건이 항상 true인데 이와 같이 그 true인 값을 while문에 넣게 되면 계속해서 출력되면서 멈추지 않는 현상이 발생합니다 이렇게 계속 돌게 되고, 프로그램은 정지가 된 것처럼 보입니다 더 이상 사용할 수 없게 되는거죠 이 부분을 조심해야 합니다

다음 시간에는 함수, 모듈, 옵저버블에 대해서 알아보겠습니다 감사합니다

jnizz(Android application fuzzer framework using JNI spoofing) 시연 영상

jnizz를 이용한 간단한 퍼저 제작 실습을 보여드리겠습니다 기존에 아무 파일이 없는 디렉토리를 확인할 수 있습니다 "init" 명령을 통해 새로운 퍼저 프로젝트를 생성할 수 있습니다 새롭게 프로젝트 디렉토리가 생성된 것을 확인할 수 있습니다 이번엔 "add-apk" 명령을 통해 퍼징할 apk를 관리할 코드를 생성해줍니다 입력한 apk이름의 새로운 소스 파일이 생성된 것을 확인할 수 있습니다 이제 apk관리 소스 코드를 수정합니다 퍼징할 apk파일이 있는 경로로 코드를 대체해줍니다 다음으로 runpy를 수정합니다 방금 제너레이팅 되었던 apk 클래스를 임포트해줍니다 그 후 객체를 하나 생성해줍니다 이 객체는 생성됨과 동시에 경로에 있는 apk파일을 분석할 것입니다 분석한 뒤 해당 apk에서 사용하는 JNI 함수를 이용하여 JNI call을 흉내내는 퍼징용 apk를 만들어낼 것입니다 이렇게 만들어진 퍼징용 apk와 분석된 함수 명세로 avdmanager 객체를 생성합니다 간단한 run

py 수정이 완료되었습니다 이제 runpy를 실행하여 퍼징을 실시합니다 1 먼저 apk를 분석하여 JNI call 이루어지는지 확인합니다 2 이를 기반으로 퍼징용 apk를 빌드합니다 3 빌드가 완료되면 퍼징용 샌드박스가 되는 안드로이드 이미지를 생성합니다 4

또한 대시보드가 활성화 돼 퍼징 상태를 간단히 확인할 수 있습니다 5 이제 안드로이드 VM을 올립니다 6 안드로이드 VM에 랜덤 input 생성기, 동작할 쉘 스크립트를 주입합니다 이러한 쉘 스크립트 역시 JNI 함수 명세에 맞게 자동으로 제너레이팅 됩니다 7 그 후 생성된 퍼징용 apk를 설치하여 줍니다 첫 구동에는 컴퓨터 성능에 따라 다소 시간이 소요됩니다 8 모든 구동이 완료되었으므로 이제부터 본격적인 퍼징이 시작됩니다 퍼징용 apk가 크래시가 날 때마다 CLI와 대시보드에서 바로 확인을 할 수 있습니다 방금 첫 크래시가 발생하였습니다!! 또 한 번의 크래시가 발생하였습니다!! 이런 식으로 퍼저는 계속해서 크래시를 쌓아나갈 것입니다 퍼징을 시작한지 5분 정도가 지났으므로 어떤 크래시들이 쌓였나 확인해보도록 하겠습니다 9

crash table에서 크래시들을 한눈에 파악할 수 있습니다 10 또한 각 크래시들마다 Exploitable Level을 확인할 수 있습니다 이러한 Exploitable Level은 생성된 Tombstone을 분석하여 eip의 값이나 fault 종류를 보고 파악합니다 11 퍼저를 종료하면 Tombstone 파일을 프로젝트 디렉토리에 저장해줍니다 그동안 발생했던 크래시들에서 생성된 톰브스톤들을 확인할 수 있습니다 그 중 하나를 열어보겠습니다 12 어떤 함수에 어떤 인자를 넣었을 때 발생한 크래시인지 알 수 있고 각 레지스터의 값들을 알 수 있습니다 여기까지 jnizz를 활용한 간단한 퍼저 제작 시연이었습니다 감사합니다

Multi Chatting App

멀티 채팅 프로그램 시연 1 프로그램 소개 2

시스템 구성 3 시연 3-1 서버 동작 및 종료 3-2 클라이언트 접속 및 채팅 #클라이언트1 접속 #접속 시 채팅 창 확장 #클라이언트2 접속 #클라이언트3 접속 #채팅 메시지 전달 및 수신 #스크롤 기능 #출력 창 초기화 기능 # 클라이언트 접속 종료 #서버 접속 종료 3-3 메시지 DB 저장 및 출력 시연을 마치겠습니다

감사합니다