Archive/캡스톤디자인
-
Passport를 이용한 로그인 작업Archive/캡스톤디자인 2022. 6. 25. 17:19
Passport.js Node JS를 이용하여 웹서버를 구성할 때, 로그인 기능을 구현하기 위해 passport라는 라이브러리를 사용할 수 있다. Passport Passport is authentication middleware for Node.js. Extermely flexible and modular, Passport can be unobtrusively dropped in to any Express-based web application. A comprehensive set of strategies support authentication using a username and password, Facebook, Twitter, and more. Passport.js Simple, unobtrus..
-
MongoDB 데이터베이스 연결 (Express JS + Mongoose)Archive/캡스톤디자인 2022. 5. 20. 02:43
Mongo DB Atlas mongo DB 데이터베이스를 클라우드로 사용하기 위해, Mongo DB에서 제공하는 Atlas 서비스를 이용한다. MongoDB Atlas | Multi-cloud Application Data Platform MongoDB Atlas is the only multi-cloud application data platform that accelerates and simplifies how you build with data. Get started for free today! www.mongodb.com 회원가입 후 새로운 Project와 Cluster를 생성한다. 이번 프로젝트에서는 Free Tier 옵션을 사용해서 무료로 클라우드 데이터베이스 서비스를 사용하였다. 이후 Net..
-
API 서버 구축 (with Node JS + Express JS)Archive/캡스톤디자인 2022. 4. 19. 20:45
Node JS 프로젝트 준비 Node JS 이번 프로젝트에서는 웹서버를 구축하기 위해 Node JS와 Express JS를 사용한다. 이를 위해 가장 기본적으로 Node JS를 설치한다. Node.js Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. nodejs.org npm init 프로젝트를 진행할 디렉터리를 하나 생성하고, 그곳에서 npm init을 실행하여 Node JS 프로젝트를 시작한다. npm init시 물어보는 옵션은 모두 기본값으로 설정하였다. Express JS 이번 프로젝트에서 웹서버를 구현하는 핵심기능은 Express JS 라이브러리를 이용할것이다. 이를 위해 npm을 이용해 Express를 설치한다...
-
안드로이드 앱 개발 연습 - 12 | CoroutineArchive/캡스톤디자인 2022. 4. 4. 17:21
Coroutine Coroutine 안드로이드에서 사용하는 스레드를 경량화한 새로운 도구 하나의 스레드에 여러 개의 코루틴이 존재할 수 있으며, 작업이 각 코루틴으로 넘어가더라도 해당 공간을 제공하는 스레드는 멈추지 않고 계속 움직일 수 있음 build.gradle (:app) dependencies { implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.9" ... } Coroutine Scope GlobalScope.launch { // 여기에 작성된 코드가 코루틴으로 실행됨 } CoroutineScope(Dispatcher).launch { // 여기에 작성된 코드가 코루틴으로 실행됨 } GlobalScope 앱의 생명 주기와 ..
-
안드로이드 앱 개발 연습 - 11 | Thread (Looper & Handler)Archive/캡스톤디자인 2022. 4. 4. 16:23
Thread Thread 시스템상의 실행 중인 프로그램인 각 프로세스에서 동작하는 독립적인 실행 흐름을 의미 Main Thread Main Activity를 비롯한 모든 컴포넌트가 동작하는 Thread로 아래와 같은 특징과 제약사항이 있다. 화면의 UI를 그리는 처리를 담당 안드로이드 UI 툴킷의 구성 요소와 상호작용하고, UI 이벤트를 사용자에게 응답 작업에 대한 응답이 수 초 내에 이루어지지 않으면 'ANR(Application Not Responding; 응답 없음)' 팝업창이 뜨게 됨 Background Thread 메모리 이외의 다른 곳에서 데이터를 가져오는 등의 처리 시간이 걸리는 모든 작업은 Background Thread에서 처리하는 것을 권장한다. 이때 Background Thread의 ..
-
안드로이드 앱 개발 연습 - 10 | Camera & Gallery (with Permission)Archive/캡스톤디자인 2022. 4. 3. 00:38
Camera & Gallery (with Permission) build.gradle (:app) ... android { buildFeatures { viewBinding true } ... } dependencies { implementation "androidx.activity:activity-ktx:1.3.1" implementation "androidx.fragment:fragment-ktx:1.3.1" ... } MainActivity.kt class MainActivity : AppCompatActivity() { val binding by lazy { ActivityMainBinding.inflate(layoutInflater) } lateinit var cameraPermission: A..
-
안드로이드 앱 개발 연습 - 9 | DatabaseArchive/캡스톤디자인 2022. 4. 1. 22:41
SQLite DB.kt class DB(context: Context, name: String, version: Int): SQLiteOpenHelper(context, name, null, version) { override fun onCreate(db: SQLiteDatabase?) { val create = "create table memo ('no' integer primary key, 'content' text, 'datetime' integer)" db?.execSQL(create) } override fun onUpgrade(db: SQLiteDatabase?, oldVersion: Int, newVersion: Int) { } fun insertMemo(memo: Memo) { val va..
-
안드로이드 앱 개발 연습 - 8 | StorageArchive/캡스톤디자인 2022. 4. 1. 19:34
내부 저장소 FileUtil.kt object FileUtil { fun readTextFile(fullPath: String): String { val file = File(fullPath) if (!file.exists()) return "" val reader = FileReader(file) val buffer = BufferedReader(reader) var temp = "" val result = StringBuffer() while (true) { temp = buffer.readLine() if (temp == null) break; else result.append(buffer) } buffer.close() return result.toString() } fun writeTextFil..