본문 바로가기

분류 전체보기71

[ Android ] 안드로이드 개발에서 HtmlCompat.fromHtml을 이용한 HTML 태그 적용: CDATA와 이스케이프 문자 활용법 다음과 같이 텍스트의 색상이 달라지는 레이아웃을 구현을 해야 하는 상황이었다. "비상 버튼을 3초이 눌러\n 발생 또는 해제" 위와 같은 한 문장의 레이아웃을 만들기 위해서 TextView를 세 개씩 사용하는 방식은 레이아웃구조를 지나치게 길어지게 만들어 비효율 적이라는 생각이 들었다. 레이아웃 구조를 늘리지 않고 텍스트의 색상을 바꿔줄 수 있는 방법이 없을 지 찾아 보았고, HtmlCompat.fromHtml(html, HtmlCompat.FROM_HTML_MODE_LEGACY);를 사용하여 코드상으로 구현을 할 수 있다는 것을 알아내었다. 사용 방법은 private String unmodeDesHtmlText = "5회 연속 빠르게 탭하여 시각 장애인 모드를 해제"; private String cal.. 2024. 3. 21.
[ Java ] Integer.parseInt(String s, int radix)를 활용한 자바에서의 진법 변환 기술 2진수를 10진수로 바꿔주는 로직을 짜다가 알게 된 메서드이다. 처음에는 char[] stringArray = str.toCharArray(); String binaryNumber = String.valueOf(stringArray); int decimalNumber = 0; int power = 0; for (int i = binaryNumber.length() - 1; i >= 0; i-- ){ int digit = Character.getNumericValue(binaryNumber.charAt(i)); decimalNumber += digit * Math.pow(2, power); power++; } 이런식으로 일일히 반복문을 돌며 2의 제곱수를 곱해주는 방식으로 구현을 해 줬었는데, 자바에 주어.. 2024. 3. 20.
[ Java ] 자바에서 "1"과 '1'의 차이점: 문자열과 문자 할당 이해하기 알고리즘을 풀다가 알게 된 사실을 정리 해 두고자 한다. 다음과 같이 String 값을 char[]로 바꾼 상황에서 반복문을 돌며. 문자 c가 "#"과 같을 경우 이진수인 "1"로 바꿔주고자 한 로직이었는다. 발견한 의문점은 stringArray[i] = '1'; 로 할 경우에는 에러가 뜨지 않는데, stringArray[i] = "1"; 로 했을 경우에는 다음과 같이 Type mismatch 에러가 난다는 것이었다. 위 현상이 왜 일어나는 것인지 찾아보니, stringArray[i] = '1';은 문자형(char)으로 '1'을 할당하는 것이므로 작은 따옴표 안에 있는 문자는 문자형으로 인식되며, char 타입에 저장이 된다. 반면에 stringArray[i] = "1";은 큰 따옴표(")로 감싸진 문자.. 2024. 3. 19.
[ JavaScript ] 클로저: 캡슐화 예시를 통해 클로저 개념 쉽게 이해해보기 클로저 개념은 자바스크립트 공부에서 어려움을 느끼게 했던 주제 중 하나인데, 개인적으로 이해하기 쉬웠던 방법을 정리 해 보고자 한다. 클로저 개념을 쉽게 이해하기 위해서는 먼저, 스코프 개념을 이해하는 것이 중요하며 다음으로, 클로저가 되기 위한 조건을 파악하는 것이 필요하다. 클로저란? 클로저란 자신이 생성될 때의 스코프에서 알 수 있었던 변수 중 언젠가 자신이 실행될 때 사용할 변수들만 기억하여 유지시키는 함수이다. - 출처: 함수형 자바스크립트 프로그래밍 - 위에서 말했듯이, 클로저를 이해하기 위해서는 클로저가 되기 위한 조건을 파악하면 명확하게 이해가 가능해 진다. 다음은 클로저가 되기 위한 조건이다. 1. 내부 함수가 외부 함수 내에서 정의되어야 한다. (함수 내부에 정의된 함수) 2. 내부 함.. 2023. 5. 24.
[ JavaScript ] 호이스팅: 변수와 함수의 동작 방식 및 결과의 차이점 비교 호이스팅이란? 변수나 함수가 어디서 선언되든지 해당 스코프 최상단에 위치하게 되어 동일 스코프 어디서든 참조할 수 있는 것을 말한다. 호이스팅은 변수와 함수의 동작 방식에 따라 출력 결과가 다르게 나타나는데, 이러한 차이점에 흥미를 느껴 각각의 경우를 자세히 정리하고자 한다. 먼저, 호이스팅에 따른 출력값이 각각 다르게 나타나는 것을 이해하기 위해서는 선언 과 참조, 초기화 개념을 알아야 한다. 선언이란, 변수나 함수를 정의하고 해당 이름을 사용할 수 있도록 식별자(변수 이름)을 지정하는 것이다. 변수선언은 var, let, const를 사용할 수 있고, 함수선언은 function을 사용할 수 있다. 참조란, 선언된 변수나 함수에 접근하여 값을 읽거나 변경하거나 함수를 호출하는 것을 의미한다. 변수나 함.. 2023. 5. 22.
[ JavaScript ] var와 let의 유효범위 및 스코프 동작의 차이 "var를 사용하지말고 let•cosnt를 사용해라."는 말은 코딩공부를 시작하면서 많이 들었던 조언 중 하나였다. 그러나 var를 사용하지 말아야 하는 이유에 대해 깊게 이해하지 않고 그냥 사용하지 않았던거 같다. 그런데 '자바스크립트의 코딩의기술' 책을 읽으면서 var와 let의 유효범위로 인한 차이점에 대한 설명을 보게 되었다. 읽다보니 스코프와 관련해서 아주 중요한 개념이 담겨있다는 생각이 들었다. 그 예시를 이해하기 쉽게 정리 해 두고자 한다. 위 두 로직을 보면 for문 내 변수 i를 var로 할당했는지 let으로 할당했는지에 따라 결과값이 다르는게 나오는것을 확인 할 수 있다. 왜 이런 결과가 나오는 것일까? 결론적으로 var와 let의 유효범위가 다르기 때문이다. var는 함수스코프를 따르.. 2023. 5. 21.
[ JavaScript ] 자바스크립트의 핵심: 스코프와 렉시컬 스코프 완벽 이해하기 클로저나 호이스팅 개념을 공부하려고하니 스코프 개념이 빠지지 않고 나왔다. 렉시컬스코프, 스코프, 전역스코프, 지역스코프, 함수스코프, 블록스코프 ... 여러 스코프 개념이 복합적으로 등장했고 그에 대한 이해가 기본이 된 상태여야 다른 개념을 이해할 수 있겠다는 생각이들어 이참에 확실하게 스코프 개념을 정리 해 두고자 글을 쓴다. 개념이해를 확실히 하기전에 포함관계를 한눈에 확인 가능하면 이해가 쉬워지겠다는 생각이 들어 위 이미지와 같이 도식화 해 두었다. 1. 스코프와 렉시컬스코프 이해하기 스코프란 무엇일까? 스코프는 참조대상 식별자, 쉽게 말해서 변수명•함수명을 찾아내기 위한 규칙이다. 일반적으로 스코프는 중첩된 구조를 형성하는데 동작방식을 설명하자면, 내부 스코프는 외부 스코프에 접근할 수 있지만,.. 2023. 5. 19.
[ WebFrontend ] styled-components의 동작방식을 통한 호이스팅의 원리 이해 호이스팅이란? 변수나 함수가 어디서 선언되든지 해당 스코프 최상단에 위치하게 되어 동일 스코프 어디서든 참조할 수 있는 것을 말한다. -함수형 자바스크립트 프로그래밍- 호이스팅의 개념은 여러번 듣고서 알고는 있었지만 실제로 호이스팅을 사용한 적이 없다는 생각에 어렵게만 다가왔던 개념이었다. 그런데 문득, 사실을 나도 모르게 호이스팅을 이용해서 코드를 지금까지 짜 왔다는것을 깨달았다. 스타일 작업을 할 때 주로 styled-components를 이용해서 작업을 해 왔었는데, 함수컴포넌트의 아래에 스타일을 정의 하는 방법으로 나도 모르게 이미 호이스팅을 사용하고 있었다는 생각이 문득 들었다. 위 코드와 같이 StyledButton이 선언 된 곳은 버튼컴포넌트의 아래인데 에러를 발생시키지 않고 코드를 실행 할.. 2023. 4. 20.
리덕스 툴킷(Redux Toolkit) 설정 기본 가이드: 설치부터 사용까지 단계별 정리 리덕스 툴킷 세팅 후, 다음 세팅시 참고하기 위해 순서를 정리 해 보았다. 1. 먼저, 터미널에서 yarn add @reduxjs/toolkit react-redux 을 해주어 리덕스 툴킷을 설치 해 준다. 2. root 경로에 store 폴더를 생성, 위 와 같이 configureStore 함수를 만들어 준다. 초기상태에서 reducer는 빈오브젝트 상태로 남겨주면 된다. 3. store를 Provider를 통해 앱에 공급 해 준다. 4. Store폴더 안에서 CounterSlice 함수를 생성 해 준다. 5. 이후, 2번에서와 같이 아까 만들어 둔 store/index.ts에 reducer를 추가 해 주면, 리덕스 툴 킷 세팅이 끝난다. 6. useAppDisatch와 useAppSelector를 사.. 2023. 1. 5.