목록대학교/Android (12)
SW
0. 변수 값을 담는 상수, 변수는 val, var로 시작한다. val은 final로 값을 바꿀 수 없다. var는 값을 바꿀 수 있다. 타입을 정해줄때는 var hello2: String = "hello world2" 와 같이 :뒤에 붙여준다. 그런데 var hello2 = "hello world2"는 타입이 String임을 짐작할 수 있다. 따라서 :String을 생략할 수 있다. var hello3: String? 에서 ?는 null값이 올 수 있음을 알려주는 기호이다. 1. 배열 & 반복 & 캐스팅 listOf를 사용하여 배열을 만들 수 있다. 수정이 불가능하다. mutableListOf를 사용하여 배열을 만들 수 있다. 수정이 가능하다. 반복문의 기본 형태 : for(요소 in 배열) for문의..
0. 라우팅 라우팅은 한 곳에 소스가 너무 많아지면 복잡해져 관리가 힘들어지므로 분리해주는 것이다. API가 index.js 파일 내에 모두 들어가 있으면 복잡하고 각 목적에 맞지 않다. Rest API는 웹에서 API 통신을 할 때 규약으로 정형화해서 깔끔하게 구분이 가능하도록 만든 후 범용성이나 확장성에 유용하게 하려는 구조로 만드는 API이다. API는 뭘까? API는 TV의 리모콘과 같다. 볼륨 키우기와 같은 버튼(기능)의 집합이 리모콘이고 그것이 API라고 볼 수 있다. 1. API 설계 GET : 가져오기 POST : 추가 PUT : 수정 DELETE : 삭제 설계 : 특정 URL 주소로 API접속을 요청하면 각 주소에 따라 각각 CRUD되게 할 것이며, 그 방식은 RestAPI에서 사용하는 ..
0. 샘플소스 구성 폴더는 다음과 같이 구성되어 있다. index.js는 실제 logic이 들어가는 문법파일(javascript)이다. /view/pages/index.ejs는 화면을 나타내는 파일이다. ejs는 기존 정적인 값만 담을 수 있던 html에서 동적인 값(db에서 가져온 값 등)도 함께 표시할 수 있는 템플릿 엔진이다. package.json은 nodejs에서 필요한 파일들이 json형식으로 나열되어 있다. 1. DB 세팅 MongoDB를 사용할 것인데 MongoDB는 NoSQL이다. 테이블 형식이 아닌 JSON형식을 사용한다. DB에 접속하는 방법은 3가지가 있다. 콘솔창에서 명령어로 접속하는 방법 웹으로 접속(확인하는 용도) 코드로 접속(이 앱에서는 코드로 접속하는 방법을 사용하겠다.) ..
0. 사전 지식 다이어리 앱 자체만으로는 동작이 되지 않는다. 왜냐하면 일기를 썼으면 어딘가에 저장을 해야하고 불러올 수 있어야 하고 수정할 수 있어야 하기 때문이다. 방법은 있다. 단말기 자체에 있는 DB를 이용하는 것이다. 그러나 다른 핸드폰을 사용하게 되면 전에 있던 데이터를 사용할 수 없다. 그래서 서버가 필요한 것이다. 먼저 서버는 어떻게 만들까? 일단 서버사이드 언어로는 nodejs, JSP, php, django 등이 있다. 여기서는 Nodejs 를 사용할 것이다. 서버 언어는 데이터베이스에서 정보를 가져온 후 정보를 표시하는 뷰쪽으로 정보를 전달해준다. 뷰에서 사용자가 가져온 정보를 볼 수 있다. Nodejs는 Client, Server 두 역할을 모두 할 수 있다. 라이브러리와 프레임워크..
0. 꼬리 재귀 함수 기존의 재귀함수는 모든 재귀 호출이 완료될 때까지는 결과를 얻을 수 없었으나, 꼬리 재귀에서는 계산이 먼저 수행되고, 재귀 호출이 수행되는 구조이다. 컴파일러가 stackoverflow가 발생하지 않도록 효율적인 순환 기반의 버전으로 최적화 해준다. 마지막으로 수행하는 구문이 자신을 호출하는 구문이어야 하며 재귀 호출 후 다른 코드가 있으면 사용할 수 없다. 꼬리 재귀 함수를 사용하지 않는 경우는 아래와 같은 경우인데 n*factorial(n - 1) 이 마지막 작업이 아니기 때문이다. 다음은 fibonacci(n-1, b, a+b)를 마지막 작업으로 두고 작성한 함수이다. 이미지 2에서 n에 100을 대입하면 정상 작동한다. 그러나 10000을 대입하면 StackOverflow가 ..
0. 구글 앱스토어 개발자 등록 구글 앱스토어에 25달러를 내면 개발자로 등록할 수 있다. 1. 개선할 점 데이터베이스를 다시 모델링 하면 좋을것 같다. 기숙사는 메뉴를 이미지로 제공한다. 그래서 이미지를 띄워주는 방식으로 해결하였는데 더 효율적인 방법이 있나 찾아봐야겠다. 디자인에 조금 더 노력을 기울여서 사용자들이 보았을 때 디자인이 안좋다는 생각이 들지 않도록 해야겠다. 안드로이드 사용자뿐만 아니라 iOS 사용자들도 이용할 수 있도록 Swift를 공부하여 iOS 버전도 만들어야겠다.
0. 사용 이유 매주 바뀌는 메뉴를 띄워주기 위해서는 데이터를 제공해주는 서버가 필요하였다. 크롤링한 결과를 저장한 DB를 저장하기 위한 공간이며 사용자가 앱을 업데이트하지 않아도 바뀐 내용을 볼 수 있도록 해준다. 식당의 운영시간 변경이라던지 위치 변경같은 상황에서도 내가 데이터를 바꾸기만 하면 되기때문에 문제에 대한 빠른 대처가 가능하다. 1. 사용 방법 1년간 프리티어가 가능하므로 VISA카드를 등록한 후 회원가입하였다. 인스턴스를 만들고 보안그룹 인바운드 설정에서 MySQL 접속이 가능하도록 설정한다. HTTP의 접속도 가능하도록 설정하고 내가 터미널에서 SSH를 사용해서 접속 할 수 있도록 SSH에 나의 IP도 접속 가능하도록 설정한다. 한가지 불편한점은 노트북을 사용해서 네트워크가 항상 바뀌기..
0. Android 사용 먼저 사용자들에게 보여질 아이콘 모양을 설정하였다. 그 후 안드로이드로 화면 가장 처음에 나오는 Splash Screen을 만들었다. Splash 이후에 나오는 본 화면을 Grid View를 이용하여 만들었다. Grid View 에서 클릭하면 해당 장소의 식당 메뉴가 나오도록 하였다. 그 과정에서 php 파일에 있는 JSON 형태의 데이터를 불러오는 과정이 필요하였다. 1. 결과 버튼 클릭을 하면 오늘 날짜가 위에 뜨고 밑에 메뉴가 뜬다. 운영하지 않는 요일에는 운영하지 않는다는 메세지를 띄워준다. 정보에는 식당 정보와 앱 정보를 표시해준다.
0. PHP 사용이유 Database 에 크롤링 결과를 저장하였다. MySQL을 사용하였는데 안드로이드로 MySQL DB를 사용하려면 PHP를 거쳐야 한다. 즉, MySQL - PHP - Android 이런 식으로 데이터가 전달되는 것이다. 1. 사용 방법 전달되는 형식은 JSON 형식을 사용하였다. 서버에 접속하여 sudo vi library.php 와 같은 방식을 사용하여 파일을 작성한다. php 파일에서 RDS 접속이 가능하도록 한 후 JSON 형식으로 만들어 주었다. 날짜마다 보여주는 메뉴를 다르게 하기 위해서 date를 사용하였다.
0. 사용방법 python에서 크롤링 결과를 DB에 저장하는 과정이다. pymsql.connect 를 사용하여 host, port, user, password, db 등을 접속할 수 있도록 한 후 저장한다. 저장한 후 commit 하면 된다. 1. DB 저장 결과 먼저 터미널로 서버에 접속한 후 DB 결과를 보면된다. Workbench로도 서버와 연결시킨 후 확인 가능하다. 2. 개선해야할 점 중복을 없애고 Data Modeling 을 다시 해야할 것같다. 그냥 데이터를 다 넣어버렸으니 좋은 결과라고 할 수 없는 것 같다. 모델링을 하게 되면 테이블도 간단해지고 용량도 적게 사용할 수 있다. date테이블을 만들고 그 테이블의 컬럼에 corner_id 를 추가 하는 등 다시 모델링 해볼 것이다.