Today I Learned 6

[TIL] 컴파일러와 인터프리터

번역기 컴파일러와 인터프리터는 고급 언어로 작성된 프로그램을 실행이 가능한 프로그램으로 번역하는 번역기이다. 즉 고급 언어로 작성된 프로그램이 CPU, 메모리 상에서 실행되기 위해서는 컴퓨터가 알 수 있는 언어로 번역하는 과정이 필요한데 이때 사용할 수 있는 것이 컴파일러와 인터프리터이다. 어떻게 번역하는지에 따라 컴파일러와 인터프리터를 구분한다. 컴파일러 컴파일러는 고급 언어로 작성된 프로그램 전체를 목적 프로그램으로 번역하고 링킹 작업을 통해 컴퓨터에서 실행 가능한 실행 프로그램을 생성한다. 번역하는 과정을 거쳐야하기 때문에 시간이 오래 걸리지만 한 번 번역하면 다시 번역하지 않아도되기 때문에 실행 속도가 빠르다. 대표적으로 C, JAVA는 컴파일러를 사용한다. 인터프리터 인터프리터는 고급 언어로 작..

Today I Learned 2021.11.23

[TIL] 소프트웨어 품질 평가를 위한 ISO25000

국제 표준화 기구(ISO)에서 소프트웨어 품질 평가를 위해 소프트웨어 품질 평가 통합 모델인 ISO25000을 제정하였다. 그렇다면 소프트웨어의 품질이 무엇이고 품질 평가가 왜 필요한지 알아보자. 또한 품질 평가를 하기위한 몇 가지 항목들을 자세히 알아본다. 소프트웨어 품질이란 소프트웨어 품질에 대한 개념은 사람마다 의견이 다르다. 또한 소프트웨어의 품질을 정량적으로 평가하기는 어렵다. 하지만 IEEE(전기 전자 기술자 협회)는 소프트웨어 품질에 대해 다음과 같이 정의하고 있다. 기능명세서의 적절한 구현성 등 주어진 요구사항을 만족시킬 수 있는 SW의 총체적인 특징과 제품의 특성들 SW가 요구하는 특성이나 속성들을 융합할 수 있는 SW 프로세스 정도 SW가 고객의 기대에 만족해야 하며 이를 사용자나 고객..

Today I Learned 2021.10.17

[TIL] 시큐어 코딩

OWASP에서 가장 리스크가 큰 것은 SQL 인젝션 암호화 실무에서는 복호화 불가능한 SHA256을 많이 쓰임 시큐어 코딩은 개발된 소프트웨어의 소스 코드에서 보안 취약점을 제거하고 설계 및 구현 단계에서 보안 약점을 고려하여 시스템을 안전하게 유지할 수 있도록 코딩하는 것이다. 그렇다면 어떠한 보안 취약점을 고려하여 설계해야하는지 대표적인 취약점들과 방어할 수 있는 방법들을 알아보자. SQL 인젝션 OWASP(오픈소스 웹 어플리케이션 보안 프로젝트)에서는 웹에 대한 보안 취약점 10개를 발표했다. 그 중 가장 취약한 것은 인젝션에 관한 내용이다. 대표적으로 SQL 인젝션은 사용자가 입력한 데이터에 대해 검증 단계를 거치지않아 공격자가 데이터 입력 후에 DB 쿼리 로직을 변경하는 것이다. 이를 예방하기 ..

Today I Learned 2021.08.18

[TIL] 토큰 기반과 세션 기반의 인증

프로젝트를 진행하면서 사용자 인증을 위해 JWT 토큰 기반의 인증을 하였다. 하지만 JWT 토큰 기반은 제한시간을 설정해둘 수 있는데 배포 전에 테스트할 때는 굉장히 오랜 시간으로 설정을 해두었다. 하지만 실제 배포했을 때는 적당한 시간을 고려하여 JWT 토큰을 변경해줘야 하는데 이렇게 되면 서비스를 이용하다가 갑자기 로그아웃이 되는 이슈가 발생하지 않을까?라는 생각을 하였다. 그리고 토큰 기반의 인증 이외에 어떠한 사용자 인증 방법이 있는지 알아봤고 세션 기반의 인증 방식도 있다는 것을 알 수 있었다. 이번에는 토큰 기반의 인증과 세션 기반의 인증의 차이점을 알아보고 각각의 인증 방식의 장점과 단점을 알아보기로 하였다. 먼저 인증 방법에 대해 알아보기 전에 HTTP의 특징을 간단하게 알면 좋을 것 같다..

Today I Learned 2021.08.11

[TIL] CORS에 대한 정리

오늘은 React에서 API 서버에 데이터를 요청하였는데 CORS에 의해 데이터를 받을 수 없는 이슈가 발생했었다. 이전에도 Vue와 Django로 웹 개발을 진행할 때 두 개의 서버(View 서버, API 서버)를 모두 로컬 환경에서 켜놓고 프로젝트를 진행했었다. 초기에 CORS 때문에 요청한 데이터를 받지 못하는 이슈가 발생했었다. 하지만 그 당시에 정확한 개념을 파악하지 않았고 어떻게 해결해야 하는지만 급급했다. 따라서 이번 기회에 정확한 개념을 짚고 넘어갈 필요가 있었기 때문에 CORS가 무엇이고 왜 이러한 이슈가 발생하는지 알아보자. 먼저 CORS가 무엇인지 기본적인 개념을 보자. CORS는 서로 다른 출처에서 리소스를 공유하는 것을 의미한다. 먼저 위와 같은 이슈가 발생한 원인은 서로 다른 출..

Today I Learned 2021.08.03

[TIL] CSS 전처리기를 사용하는 이유

프로젝트를 하면서 SASS를 처음 사용하게되었다. 아직까지 굳이 CSS가 아닌 SASS를 사용해야하는 필요성을 느끼지 못했다. 이번 기회에 SASS를 공부하고 익숙해지면서 SASS의 장점을 파악할 수 있는 좋은 기회라고 생각한다. 이를 위해 먼저, CSS 전처리기의 개념과 사람들이 많이 사용하는 이유를 알아보았다. CSS 전처리가 무엇일까? MDN에서는 자신만의 특별한 syntax를 통해 CSS를 생성하는 프로그램이라고 한다. 이를 위해 믹스인, 중첩 셀렉터, 상속 셀렉터 등을 사용할 수 있다고한다. CSS 전처리기는 CSS를 사용하면서 불편한점을 해결하기위해 탄생하였고 CSS를 쉽게 작성하고 다른 사람들이 쉽게 이해할 수 있도록하기 적합하다. CSS의 불편한 점은? 구조가 복잡하고 큰 서비스를 개발할 ..

Today I Learned 2021.07.28
728x90
반응형