(입력 시)git push origin master 

(출력)

remote: Permission to <저장소 주소> denied to <현재 push를 시도하는 저장소 주소>

fatal: unable to access 'repository 주소' : The requested URL returned error: 403

 

 

git config username , email 그리고 git remote로 원격저장소를 연결했음에도 위처럼

에러가 발생했다.

 

이는 자격 증명이 다른 사용자로 등록이 돼있어서 발생한다.

다른 사용자가 해당 PC에서 git을 연결하면서 등록된 것이다.

 

이를 해결하기 위해서는, 해당 자격 증명을 지우는 방법이 있다.




제어판 > 사용자 계정 > 자격 증명 관리자 > Windows 자격 증명

 

들어가면, 일반 자격 증명란이 있다.

https://github.com와 관련된 증명을 펼쳐보면 git push 를 했을 당시, deny 했던 사용자가 등록 돼있을 것이다.

'제거'를 해주고 git remote를 이미 연결했다면, 다시 연결할 필요없이 git push를 다시 실행시키면

비밀번호를 입력하고 git push가 정상적으로 진행된다.

'Git' 카테고리의 다른 글

마지막 commit 상태로 코드 되돌리기  (0) 2021.05.21

 

 

- HTTPS는 HTTP보다 Secure

 

: 안전(secure)하다는 것은, 사용자가 해당 사이트에 입력한 정보를 제3자가 볼 수 없다는 것과

 해당 사이트가 신뢰할만한 사이트라는 것을 의미.

 

 

1) 어떻게하면 입력한 정보가 보안상 안전할까?

: 기존의 대칭키만 사용하는 방식은 어떤 정보를 암호화, 복호화하는 것이 대칭키 하나를 통해 동시에 가능하다.

 만약 이 대칭키를 누군가 가로챈다면, 해당 유저의 정보가 복호화를 통해 노출되는 것이다.

 HTTPS는 비대칭키 방식을 사용하는데, 암호화만 가능한 공개키를 모든 유저에게 제공하고, 복호화만 가능한

 개인키를 해당 웹사이트가 보관하는 것이다. 그러므로, 유저의 정보는 서버 보안 수준의 보안성을 갖게 된다.

 

2) 신뢰할만한 사이트라는 걸 어떻게 알까?

: 민간 CA(Certificate Authority) 기업이 보장한다. 

  클라이언트의 브라우저는 접속한 웹사이트로부터 인증서를 응답받게 되는데, 브라우저는 CA 정보를 통해

  해당 인증서를 검증한다.

  이 인증서는 CA에서 개인키로 암호화한 상태이고, 브라우저에 저장된 CA의 공개키를 통해 복호화하여 

  확인한다. 만약, 복호화가 되지 않는다면, 해당 사이트에 대한 경고가 나타나게 된다.

  

- 비대칭키의 실질적 활용

 

   실제로 모든 데이터를 주고 받을 때 비대칭키 방식을 사용하는 것은 컴퓨터의 연산에 무리가 있다.

   그래서 대칭키 방식을 사용하고, 이 대칭키를 브라우저와 서버가 공유할 때, 비대칭키 방식을 사용한다.

 

 

Scope에 관한 영상(www.youtube.com/watch?v=HsJ4oy_jBx0) 내용에 대한 개념 정리

 

Scope라는 개념은 JAVA로 직접 코드를 짜보면서 익히게 된 개념이다. 변수의 선언 등 메모리와 관련된 내용은 현재 공부 중인 자료구조에서 개념을 파악한 뒤,포스팅 할 예정이다.

 

Java를 처음 사용할 때, scope의 개념이 없어서 값을 언제 어디서든 수정하도록 전역변수(static)으로만사용한적이 있다.이게 문제가 된다는 이유를 들어본적은 있지만, 그 이유는 파악하지 못했다.

 

javascript에서 var라는 변수는 호출한 뒤에 선언과 할당이 가능하다.이것은 let, const 변수보다 자유도가 높다고 할 수 있다.영상에서 이야기하듯이, var 변수처럼 자유도가 높다면 어느 위치에서 선언이 되고 할당이 되었는지파악하기가 어려울 것이고, 에러가 발생했을 때 수정하는데 또한 애를 먹을 것이다. 즉, java의 static , javascript의 var처럼 전역변수의 성질을 띠는 것은, 당장 코드를 짤 때는 편하지만,이후 수정 등의 유지, 관리가 어려울 것이다.

scope가 한정적인 것과 한정적이지 않은 것. 둘 다 장단점이 있는 것이다.

'Reviews' 카테고리의 다른 글

객체지향 디자인 패턴 1  (0) 2021.04.29
DTO와 VO  (0) 2021.04.29
재귀함수  (0) 2021.04.19
REST API  (0) 2021.04.18
포인터  (0) 2021.04.18

REST API에 관한 영상(www.youtube.com/watch?v=u65F4ECaKaY) 내용에 대한 개념 정리

 

- REST API ( Representational State Transfer / Application Programming Interface )

 

REST API에 관한 정보를 찾는 과정에서 아키텍쳐(Architecture)라는 단어를 접하게 되어,

먼저 정의하고 REST API에 대해 알아보겠다.

 

1) 프로그래밍에서 아키텍처란?

 

- 시스템 목적을 달성하기위해 시스템의 상호작용 등의 시스템디자인에 대한 제약 및 설계

: 최적화를 목표로 두고 시스템 구성과 동작원리 그리고 시스템의 구성환경 등을 설명 및 설계하는 청사진 또는 설계도.

  컴퓨터 공학 지식을 기반으로 주변 환경 등을 고려하여 최상의 소프트웨어를 구상하기 위함.

 

 

 

 

2) REST API

- (공식화된 표준이 존재하지 않는) 분산 시스템 설계를 위한 아키텍처 스타일

: 이에 해당하는 아키텍처 스타일을 만족하는 API를 RESTful 하다고 표현한다.

 

 

 * 특징

 

1) 유니폼 인터페이스 ( Uniform Interface

: resource에 대한 조작을 통일되고 한정적인 interface로 실행.

 

2) 무상태성 ( Stateless )

: 작업을 위한 상태 정보를 따로 저장하여 관리하지 않고, 단순히 서버에 들어오는 요청만 처리.

 

3) 캐시 가능 ( Cachable )

: HTTP 웹 표준을 그대로 사용하기 때문에 기존의 웹 인프라( cache )를 그대로 사용 가능.

 

4) Self-descriptiveness

: REST API의 message만으로도 어떤 의미인지 이해할 수 있음.

 

5) 클라이언트 - 서버 구조

: 서버는 클라이언트에게 API를 제공하고, 클라이언트는 서버에 사용자 인증(로그인) 등을 하도록 역할이 구분됨.

 

6) 계층형 구조

:  암호화 계층을 추가하거나, proxy, gateway 등의 네트워크 간 중간 역할을 하는 요소를 사용할 수 있다.

 

 

 

 

 * REST API가 필요한 이유(장점)

 

1) REST API 메시지의 의도를 명확하게 파악할 수 있다. 

: 의도가 명확하므로 필요한 데이터만 요청, 응답하면 된다.

 

2) JSON, XML 등 다양한 언어로 작성이 가능.

: Header에 URI 처리 메소드를 명시함으로써, 필요한 실제 데이터를 페이로드(body)에 표현.

 

'Reviews' 카테고리의 다른 글

객체지향 디자인 패턴 1  (0) 2021.04.29
DTO와 VO  (0) 2021.04.29
재귀함수  (0) 2021.04.19
Scope  (0) 2021.04.18
포인터  (0) 2021.04.18

포인터에 관한 영상(www.youtube.com/watch?v=u65F4ECaKaY) 내용에 대한 개념 정리

 

주안점 : 포인터와 주소값의 정의.

 

 - 포인터( Pointer )

 

 포인터란, 메모리의 주소값을 저장하는 변수이다.

 

변수 등의 데이터는 이진수로 메모리에 저장되는데, 이 데이터를 참조하기 위해서는

주소값을 반드시 알아야한다.

주소값이란, 데이터가 저장된 메모리의 시작 주소를 의미한다.

 

예) int형 데이터는 4byte의 크기를 가지지만, int형 데이터의 주소값은 시작 주소 1byte를

    의미한다.

 

'Reviews' 카테고리의 다른 글

객체지향 디자인 패턴 1  (0) 2021.04.29
DTO와 VO  (0) 2021.04.29
재귀함수  (0) 2021.04.19
Scope  (0) 2021.04.18
REST API  (0) 2021.04.18

 

 

 

 * 주안점 : 어떤 이유로 사용하고, 어디에 사용하는가?

 

 

1) 쿠키( Cookie )

사용자의 브라우저에 저장되고, 통신할 때 HTTP 헤더에 포함되는 텍스트 데이터 파일

이름, 값 만료기간(지정 가능), 경로 정보가 있고 key와 value로 구성.

서버에서 받은 정보를 local에 저장.

 

사용 예) 자동로그인 , 오늘그만보기 팝업창

 

2) 세션 ( Session )

고유의 세션 ID를 사용자에게 부여함으로써 사용됨.

보안성은 local에 저장되는 cookie보다 나으나, server에서 데이터를 전달하기 때문에

cookie보다 속도가 느림.

 

사용 예) 로그인 여부 판별(페이지 이동 시, 다시 로그인하지 않도록)

 

3) 캐시 ( Cache )

Cookie와 동일하게 local에 데이터가 저장됨.

자주 사용되는 resource 파일들을 local에 저장해서 페이지 내 로딩, 렌더링 속도를

높이기 위해 사용됨.

 

 



 

  파이썬에 입문하고 코딩 테스트, 알고리즘 문제를 접하게 됐는데, 리스트(list), 튜플(tuple), 딕셔너리(dictionary) 등

  각각 어떻게 CRUD(생성, 읽기, 수정, 삭제) 해야 하는지 헷갈려서 글로 남기게 되었다.

 

 

 

* 추천 링크 - 인덱싱에 대한 자세한 내용 (kjh0816.tistory.com/23

   ps : 인덱스를 역순으로 가져올 때 주의점.

  

 

 

 

 

  (본론)

 * Sequence 자료형

1) Python에서 sequence 자료형이란?

 

     - 순서를 가진 객체들의 집합.

       

      

2) Python에서 sequence 자료형에 속하는 것

 

    - 문자열 ( String )

    - 리스트 ( list ) 

    - 튜플 ( tuple )

 

 

3) 가능한 연산

 

  1) 인덱싱 ( Indexing )

 

      - 순서가 존재하므로, index를 통해 index[0]부터 값을 불러올 수 있다.

 

      ※ 참고로, dictionary는 sequence가 아닌 { key : value, ...} 형태로 저장

         되므로 index를 통해 값을 불러올 수 없다.

str1 = '가, 나'

print(str1[0], str1[1], str1[2], str1[3])
>>>
가, 나

# 공백(띄어쓰기)을 포함한 모든 문자는 하나의 index를 갖는다.

 

 

2) 슬라이싱 ( Slicing )

 

    - 일부를 잘라내거나, 일부를 삭제할 수 있다.

 

university = ['고', '려', '대']
creature = ['생', '물']

	# 1) 일부 잘라내기
    
ancient = university[0:1] + university[2:3]
print(ancient + creature)
>>>
['고', '대', '생', '물']



	# 2) 일부 삭제하기

del university[1:2]
print(university+creature)
>>>
['고', '대', '생', '물']

 

 

3) "+"연산자로 연결 ( Concatenation )

   

    - 같은 자료형끼리  "+" 연산자를 통해 합칠 수 있다.

    

   

str1 = 'Good'
str2 = 'Morning'
print(str1 + str2)
>>>
GoodMorning



# 아래처럼, tuple(또는 string) + list 등 같은 sequence 자료형이라도 합칠 수 없다.

  
list1 = [1, 2]
tuple1 = (3, 4)
print(list1+tuple1)
>>>
TypeError: can only concatenate list (not "tuple") to list

 

4) "*" 연산자로 반복 ( Repetition )

 

    - 하나의 sequence 자료형 객체를 "*"를 통해 반복시킬 수 있다.

str1 = '간다'
print(str1*3)
>>>
간다간다간다

5) "in" 연산자로 값(value) 조회

 

    - 특정한 값이 있는지 "in" 연산자를 통해 True/False 값을 얻을 수 있다.

 

computer = ['screen', 'keyboard']

print('screen' in computer)
>>>
True

print('cellphone' in computer)
>>>
False


# "in" 연산자와 조건문 사용

if 'mouse' not in computer :
    computer.append('mouse')
print(computer)
>>>
['screen', 'keyboard', 'mouse']

 

 

 

 

'Programming languages > Python' 카테고리의 다른 글

for문과 if문 한 번에 ( list comprehension )  (0) 2021.05.06
슬라이싱, 인덱스  (0) 2021.04.21
fun main() {
   for(i in 1..9) {
        for(j in 2..9){
            println("${i} * ${j} = ${i*j}")
        }
        println()
        
    }
}

 

'Programming languages > Kotlin' 카테고리의 다른 글

NumberFormatException 예외처리  (0) 2021.04.30

+ Recent posts