전체 글
-
JWT, Access Token, Refresh Token 알아보기카테고리 없음 2022. 5. 15. 19:39
토큰기반인증이란? 토큰은 사용자 인증을 위한 정보를 서명한 것으로, 토큰 기반 인증 방법은 토큰에 사용자 인증을 위한 정보가 담겨져 있기 때문에 서버에 사용자 정보를 서버에 저장하지 않고, 전달받은 토큰의 서명과 데이터를 검증하는 것만으로도 인증이 가능한 방식입니다. JWT란? JWT(JSON Web Token)은 현재 토큰 인증에서 가장 많이 사용되는 인터넷 표준으로 두 개체 사이에서 JSON 객체를 사용하여 정보를 안전하게 전달 할 수 있습니다. 주로 애플리케이션의 액세스 토큰을 만드는데 주로 사용됩니다. JWT의 구조는 크게 3가지로 나뉩니다. 1 . Header : JWT 토큰 유형 해시 알고리즘 2. Payload : 클라이언트 정보 3. Signature : 서명 정보 Header는 보편적으로..
-
[ERROR]Cocopod 설치 - You may have encountered a bug in the Ruby interpreter or extension libraries. 해결 방법카테고리 없음 2022. 5. 7. 00:39
오류 M1맥북에서 pod install 을 하니 다음과 같은 오류가 떴다. [NOTE] You may have encountered a bug in the Ruby interpreter or extension libraries. Bug reports are welcome. For details: https://www.ruby-lang.org/bugreport.html [IMPORTANT] Don't forget to include the Crash Report log file under DiagnosticReports directory in bug reports. 해결 방법 $ sudo arch -x86_64 gem install ffi $ arch -x86_64 pod install -> 설치 완료!
-
[iOS]ViewController의 생명주기카테고리 없음 2022. 4. 25. 20:13
앱에 나타나는 하나의 화면은 하나의 ViewController를 가지고, 뷰 컨트롤러는 하나의 루트 뷰를 관리하며, 그 자체에는 임의의 수의 하위 뷰가 포함될 수 있습니다. 이러한 뷰컨트롤러는 생명주기를 가지고 있습니다. 이때의 생명주기는 화면이 보여졌다가 사라지는 주기를 말합니다. 아래 이미지의 각 메소드를 override하여 각 타이밍에 맞게 원하는 작업을 수행할 수 있습니다. 뷰컨트롤러의 생명주기는 다음과 같습니다! 1. loadView 컨트롤러가 관리하는 뷰를 만듭니다. 뷰 컨트롤러에 연결된 nib 파일이 있는 경우 이 메서드는 Nib 파일에서 뷰를 로드합니다. **이 메소드는 직접 호출 불가! 2. viewDidLoad : 뷰의 컨트롤러가 메모리에 로드되고 난 후에 호출됩니다. 이 메소드는 뷰가..
-
[iOS]Xcode 프로젝트 다른 이름으로 저장하는 방법카테고리 없음 2022. 4. 15. 17:09
Xcode프로젝트 다른 이름으로 저장하기 1단계. 프로젝트 파일의 복사본 만들고 원하는 이름으로 폴더명 변경하기 일단 프로젝트명이 바뀐것이 아닌 폴더명만 바뀐 거랍니다. 이제 본격적으로 바꿔보면! 단계2. 프로젝트 파일 열고 Inspector창에서 원하는 이름으로 바꿔주기 Rename선택! 당황하지 말고 Continue 선택해주세요! 왼쪽을 보면 프로젝트명이 바뀌어 있을겁니다! 여기서 그냥 실행시키면 이런 오류가 뜹니다! 예리한 분이라면 이미 바꾸셨겠지만 전 Packaging부분을 바꿔주지 않아서 이런 에러를 만났습니다 .. ㅎㅎ 마지막으로! Build Settings > Packaging 에서 Info.plist File, Product Bundle Identifier부분을 이렇게 바꿔주면 빌드 성공!..
-
[빅데이터처리]필기체 인식 오류율School/Bigdata 2022. 2. 8. 20:44
import sys from os import listdir import numpy as np import operator def createDataSet(dirname): labels = [] trainingList = listdir(dirname) m = len(trainingList) matrix = np.zeros((m, 1024)) for i in range(m): fileName = trainingList[i] answer = int(fileName.split('_')[0]) labels.append(answer) matrix[i, :] = imgVector(dirname + '/' + fileName) return matrix, labels def classify0(inX, dataSet, ..
-
[알고리즘]BucketSchool/Algorithm 2022. 2. 8. 20:44
import java.util.HashMap; import java.util.Scanner; public class Student20191023 { static int minerror = 0; static int check = 0; public static void main(String[] args) { Scanner scan = new Scanner(System.in); String in = scan.nextLine(); String [] inputarr = in.split(" "); int i, j; int input = Integer.parseInt(inputarr[0]); int bucket = Integer.parseInt(inputarr[1]); int[] numbers = new int[in..
-
[알고리즘]SYNCHRONZING CLOCKSchool/Algorithm 2021. 11. 25. 22:07
import java.util.*; public class Student20191023 { static int switches[][] = new int[10][]; //스위치 static int clock[] = new int[16]; //시계 final static int MIN = 99999; public static void main(String[] args) { // TODO Auto-generated method stub scan(); int result = solve(clock, 0); if(result >= MIN) { result = -1; } System.out.println(result); } public static void scan() { Scanner scan = new Scann..