전체 글

전체 글

    a태그 target="_blank"와 rel="noreferrer noopener"

    a태그의 target="\_blank"옵션은 보안상의 취약점이 있기에 rel="noreferrer noopener"와 함께 사용한다. referrer(document.referrer)는 이전 페이지, opener(window.opener)는 새 페이지에 대한 정보. 이전 페이지와 새 페이지에 대한 정보를 없앤다. 즉 rel="noreferrer noopener"를 설정하여 새창을 누가 열었는지에 대한 정보를 지운다. https://developer.mozilla.org/en-US/docs/Web/API/Document/referrer Document.referrer - Web APIs | MDN The Document.referrer property returns the URI of the page th..

    error Failed to build iOS project. We ran "xcodebuild" command but it exited with error code 65, duplicate symbols for architecture x86_64 해결하기

    /ios/Podfile 의 :flipper_configuration => FlipperConfiguration.enabled, 을 주석 처리한 뒤 cd ios pod deintegrate pod install 를 실행한다. flipper에서 발생하는 오류로, 비활성화하여 오류를 해결한다. 다만, flipper를 사용하지 못하면 네트워크와 같은 디버깅에 있어서 대체제가 별로 없다. 디버깅과 관련된 툴은 공식문서에서 확인할 수 있다. https://reactnative.dev/docs/debugging Debugging · React Native Accessing the In-App Developer Menu reactnative.dev duplicate symbols for architecture x86_..

    @solana/web3.js를 사용하여 솔라나 계정 생성하기 (in React native)

    필요한 라이브러리를 설치한다. npm i @solana/web3.js react-native-get-random-values react-native-url-polyfill babel.config.js를 다음과 같이 수정한다. module.exports = { presets: [ [ 'module:metro-react-native-babel-preset', {unstable_transformProfile: 'hermes-stable'}, ], ], }; 프로젝트 최상단 (index.js)에 다음과 같이 설정한다. import 'react-native-get-random-values'; import 'react-native-url-polyfill/auto'; 설정이 끝난뒤 다음과 같이 계정을 생성할 수 있다..

    토큰 기반 인증 (Token-based Authentication)에 대하여

    세션 기반 인증은 서버/DB에 유저 정보를 담는 방식이었다. 매번 서버에 민감한 정보를 요청할 때 마다, 서버에서는 올바른 접근인지를 확인하는 과정이 필요하고, 이는 서버에 부하를 줄 수 있다. 🚋 때문에, 하나의 서버에서 인증 정보를 관리하게 되고 이는 하나의 서버에 큰 부담을 주게 된다. 토큰 기반 인증은 서버의 인증 정보를 클라이언트에 저장하는 방법이다. 클라이언트가 토큰을 가지고 있다면, 서버의 민감한 정보에 접근할 수 있다. 🗺 서버에 요청을 보낼 때 마다 토큰을 보내어 유효한지 확인한 뒤에 response를 받을 수 있다. 🍟 토큰은 유저의 민감한 정보를 암호화했기에 안전하게 클라이언트에 저장할 수 있다. JWT (JSON Web Token) JWT에는 두 가지 종류의 토큰이 있다. 🍔 Acc..

    자바스크립트 클로저(Closures)란?

    자바스크립트는 기본적으로 함수 내부에서 선언된 변수를 외부에서 접근할 수 없다. 함수 내부의 변수는 함수의 실행이 끝나면 메모리 할당이 해제되기 때문이다. 하지만 일급객체의 속성으로 변수에 할당된 함수는 곧바로 할당이 해제 되지 않고, 이때 함수 내부의 변수의 값 역시 남아있게 된다. 🥘 일급객체는 변수에 할당될 수 있으며, 다른 함수의 인자로 사용될 수 있고, 다른 함수의 결과로서 리턴될 수 있다. 함수 내부에서 이 선언된 변수에 접근할 수 있는 함수를 클로저 라고 한다. 이 클로저를 통해서 Java의 객체의 private 함수처럼 외부에서 메서드를 통해서만 변경이 가능한 함수 내부의 변수를 만들 수 있다. const closure = () => { let count = 0; function showC..

    Promises의 all, race, allSettled 사용하기

    Promises는 자바스크립트에서 비동기를 처리하기 위해서 사용된다. Promises는 처음에는 pending 상태였다가 처리에 성공하면 fulfilled, 실패하면 rejected 상태가 된다. Promises 성공하거나 실패하기만 한다. Promises.race, Promises.all, Promise.allSettled 에 대해서도 알아본다. 기본적인 Promise 사용법 const fn = () => { return new Promise((resolve, reject) => { try { setTimeout(() => resolve("Good!"), 5000) } catch (err) { reject(err); } }); } fn() .then(el => console.log(el)) .catch..

    프로그래머스 코딩테스트 연습 - 숫자 카드 나누기 JavaScript

    function solution(arrayA, arrayB) { arrayA.sort((a, b) => b - a); arrayB.sort((a, b) => b - a); const getMax = (x, y) => { for(let i = x[0]; i > 1; i--) { if(x.every(el => el % i === 0) && !y.some(el => el % i === 0)) { return i; } } return 0; } const x = getMax(arrayA, arrayB); const y = getMax(arrayB, arrayA); return x > y ? x : y; } 이번 문제를 푸는 데, 다른 사람의 코드를 보고 여러 번 수정하였다. 처음에는 공약수를 구하여 문제에 접근하..

    비대칭키 암호화와 전자 서명, 해시

    비대칭키 암호화 비대칭키 암호화는 같은 키로 암호화와 복호화를 한 번에 하는 대칭키 암호화는 다르게, 암호화하는 키와 복호화하는 키가 별도로 존재하는 방법이다. 💨 즉, 대칭키 암호화와는 다르게, 복호화하는 키와 암호화하는 키가 다르다. 공개키 암호화 방법에 비해서 암호화와 복호화에 시간이 많이 걸리지만, 키 관리가 더 용이한 장점이 있다. 공개키는 말 그대로 공개되어도 상관없는 키이며, 개인키만 유출되지 않도록 하면 되는 장점이 있다. 일반적으로는 발신자가 수신자의 공개키로 암호화를 하고, 수신자는 자신의 개인키로 복호화하여 메세지를 확인한다. 전자 서명 🌪️ 전자 서명은 데이터의 무결성, 송신자의 신원을 보장하기 위해서 사용한다. 전자 서명을 하기 위해서 데이터를 해싱하여 해시값을 생성한 뒤, 이를 ..