목록프론트엔드 (45)
기술 블로그
작성중
정확한 알람 예약은 기본적으로 거부됨 https://developer.android.com/about/versions/14/behavior-changes-all?hl=ko 안드로이드 14부터 정확한 알람 권한이 비활성화 되어 사용자로 부터 권한을 받아야 한다. 사내에서 운영 중인 어플리케이션은 rn 서드파티 라이브러리를 통해 권한을 요청하고 관리해왔지만 현 시점 대응한 라이브러리가 없어 직접 네이티브 모듈을 구축해야했다. SCHEDULE_EXACT_ALARM은 선택적 권한이 아니기 때문에 알림상자로 권한 승인은 불가능하고 해당 앱의 설정으로 이동시켜주는것이 최선이다. // android/app/src/main/AndroidManifest.xml . . // android/app/src/main/java/..
axios와 fetch모두 데이터 패칭을 위한 도구이다. 가장 큰 차이점은 axios는 외부 라이브러이인 반면 fetch는 자바스크립트에서 기본으로 제공한다. fetch fetch('https://cataas.com/cat') .then(response => { if (!response.ok) { throw new Error('Network response was not ok'); } return response.blob(); }) .then(blob => { document.getElementById('catImage').src = URL.createObjectURL(blob); }) .catch(error => { console.error('There was a problem with the fetc..
코테중 제곱수를 확인하는 문제가 있어 아래와 같이 구현했다. parseInt(parseInt(n).toString(2).split('').reverse().join(''))===1 2의 제곱수 특성을 활용해 2진수 문자열로 변환 후 리버스 후 1과 같은지 확인했다. 다른 아래와 같은 방법도 있다. 1.비트연산 위의 이진수를 활용한 개념와 유사하지만 더 명료하게 비트연산을 활용한다. function isSquare(n) { return n > 0 && (n & (n - 1)) === 0; } 만약 n이 8이라면 8 & 7의 and연산을 수행한다. 즉 1000과 0111의 and == 0000이므로 2의 제곱수가 맞다 만약 9일경우 1001 and 1000 = 1000 != 0이므로 2의 제곱수가 아니다. ..
const readline = require("readline"); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); let input = [] rl.on("line", function(line) { if(!line) { rl.close() } else { input.push(line) } }).on("close", function() { sol(input); process.exit(); }); function sol(input){ console.log(input+"hello") } https://forgottenknowledge.tistory.com/entry/%EC%95%8C%EA%B3%A0%EB..
코딩테스트 문제 복기 문제 조건 배열로 아이템이 제공된다. 각 아이템은 name, score 쌍의 데이터를 가진다. score을 기준으로 들어온 아이템을 정렬해야한다. score, 들어온 순으로 우선순위를 가진다. 만약 같은 name으로 기존보다 더 높은 score가 들어온다면 업데이트한다. score순으로 정렬되었을때 특정 갯수(이하 K) 안에서 순위에 변동(순위에 영향을 끼치지 못하는 정도의 score변동은 미해당)이 있을 때 count를 +1 한다. 알맞은 count를 반환하시오 분석 위 문제에 대해 주요 포인트는 2가지 이다. 중복된 name값을 가진 아이템은 업데이트 할것 score값에 따라 정렬할 것 이전 값과 비교하여 변화를 count 할것 3번의 경우에는 최신 업데이트한 rank값과 직전..
클로저는 함수와 그 함수가 선언된 렉시컬 환경의 조합- mdn function outer(){ const name = 'kyle'; console.log(name) return function inner(){ const greeting = 'hello!' console.log(greeting,name) } } const getKyle = outer() //kyle getKyle() //hello!kyle inner함수는 자신이 생성될 때의 환경을 "기억"한다. 이 환경은 클로저가 선언된 시점의 변수뿐만 아니라, 그 변수들이 존재했던 외부 함수의 스코프를 포함한다. 여기서 스코프는 변수가 가지는 유효 범위를 의미한다. 렉시컬 환경(Lexical Environment)은 코드가 작성된 구조와 위치에 기반하여..
자바스크립트에서 객체의 최상단 레벨만 값으로서 복사되는 것을 얕은 복사라고 하고 모든 레벨에서 값으로서 복사되는 것을 깊은 복사라고 한다. 깊은 복사를 위한 방법으로는 다음과 같은 방법이 있다. JSON.stringyfy JSON.stringify()와 JSON.parse()를 이용한 깊은 복사(deep copy) 방법은 JavaScript 객체를 복사할 때 사용할 수 있는 간단한 방법 중 하나이다. 이 방법은 객체의 모든 내용을 문자열로 변환한 다음, 그 문자열을 다시 객체로 파싱하여 복사본을 생성하는 방법이다. 단점 경우에 따라 다를 수 있으나 크기가 클 경우 성능 문제가 있다. 함수와 메서드는 문자열로 변환되지 않기 때문에 복사된 문자열에는 포함되어있지않다. 객체가 순환참조를 가지고 있다면 에러가 ..
https://developer.mozilla.org/ko/docs/Web/HTTP/Status 작성중
브라우저 유저 인터페이스: url 입력창을 포함한 웹페이제 외적 클라이언트 요소 브라우저 엔진: 유저 인터페이스와 렌더링 엔진을 중재 렌더링 엔진: 리소스를 파싱하고 결과물을 바탕으로 페이지를 그려냄 webkit, gecko 등 네트워크 레이어: http(s)프로토콜을 이용해 외부 리소스를 얻어오고 서버에 요청을 보낼 때 사용 js 인터프리터: 자바스크립트를 해석하고 실행 ui 백엔드: 렌더트리를 기반으로 운영체제의 인터페이스를 따르는 ui를 처리 자료 저장소: 데이터를 브라우저 자체 로컬에 저장하기 위한 레이어 접근 및 저장에 활용 로컬스토리지 등 동작 유터 인터페이스에서 url 입력받음 브라우저 엔진에서는 검색어인지 url인지 검증 렌더링 엔진을 거처 네트워크 레이어에서 리소스 요청 리다이렉션(3xx..