# core

[Git] filePath:Zone.Identifier
발생 배경 Git clone을 진행하던 중 복사는 완료되었지만 checkout이 불가능하다는 로그 발견. Git issues 2777 core.protectNTFS : 잠재적인 잘못된 파일 이름으로부터 NTFS 시스템을 보호. system에 위협이 될만한 path를 check하는 것으로 경로에 제제를 가하게 된다. 위 github의 토론을 보았을 때 core.protect가 종종 문제를 일으키는 것으로 예상된다. 해결 git config core.protectNTFS false 위 방법이 권한에 문제가 발생 관리자 권한으로 cmd창을 열어 아래의 command를 입력. git config --system core.protectNTFS false 주의 clone에서 이슈가 발생했지만 checkout(분기점 이동)에서도 발생하는 것으로 파악된다. path 관련
CPU 스레드?
스레드 설명 **Cpu 내부에서 작업을 수행하는 가장 작은 단위 코어는 물리적으로 구별 쓰레드는 논리적으로 나뉜 가상의 코어 ** **CPU 코어갯수=쓰레드 갯수가 맞지만 ** 하이퍼쓰레딩(Hyper Threading) **하이퍼스레딩은 운영체제에서 CPU 코더 한 개당 스레드가 하나씩 추가되어 싱클 코어에서 두개의 CPU가, 듀얼 코어에서 네 개의CPU가 장착된 것으로 인식(코어 당 X2)하는 기술 해당 기술 사용 시 물리 코어의 개념은 없어지고 논리 코어로만 작동하게 되는데 사용 환경과 프로그램에 따라 성능이 향상되기도하고 다중 작업에서 유리 ** **예시 코어갯수 × 2 가상화된 쓰레드 갯수 쿼드코어에 하이퍼쓰레딩이면 8쓰레드가될것이고 기술적용이 안되있으면 4쓰레드 그대로 ** [참고 링크 1](https://m.blog.naver.com/PostView.naver?blogId=lghlove0509&logNo=140208205604&searchKeyword=%EC

7. JSP - JSTL(JSP Standard Tag Library)
JSTL(JSP Standard Tag Library)은 해당 라이브러리에 내장되어 있는 태그를 사용할 수 있도록 해주는 확장 태그입니다. JSTL을 사용하기 위해서는 이클립스 기준 WEB-INF → lib 내부에 해당 jar 파일을 추가 해준 뒤 아래와 같이 taglib로 선언해주어야 합니다. jstl에서 가장 자주 사용하는 core를 통해 설명드리도록 하겠습니다.
core.eol
core.eol은 Git이 저장소 내에서 사용하는 줄바꿈 문자의 형식을 설정하는데 사용됩니다. core.eol 설정에는 다음과 같은 옵션이 있습니다. native: 운영체제에 맞는 줄바꿈 문자를 사용합니다. 이 옵션은 .gitattributes 파일을 이용하여 소스 파일 별로 줄바꿈 문자를 설정하는 것과 함께 사용됩니다. lf: 줄바꿈 문자를 LF로 설정합니다. 이 설정은 모든 운영체제에서 동일한 줄바꿈 문자를 사용하도록 강제하는데 사용됩니다. crlf: 줄바꿈 문자를 CRLF로 설정합니다. 이 설정은 윈도우에서 개발하는 경우에 유용합니다. core.eol 설정은 전역 설정뿐만 아니라 .gitattributes 파일을 통해 소스 파일 별로 설정할 수도 있습니다. core.eol 설정은 core.autocrlf와 비슷한 역할을 수행하지만, core.autocrlf는 저장소에 커밋된 파일의 줄바꿈 문자를 변환해주는 반면, `
core.autocrlf
core.autocrlf는 Git에서 사용되는 줄바꿈 문자를 자동 변환해주는 설정입니다. 윈도우와 유닉스 계열 시스템에서 줄바꿈 문자의 형식이 다르기 때문에, Git을 사용할 때 파일을 Windows에서 작성하고, Linux나 Mac에서 작업을 하면 줄바꿈 문자가 변경되어 문제가 발생할 수 있습니다. core.autocrlf 설정은 이러한 문제를 해결하기 위해 Git이 자동으로 줄바꿈 문자를 변경해주는 기능입니다. 설정값에는 다음과 같은 옵션이 있습니다. true : 커밋 시에는 LF를 CRLF로 변환하고, 체크아웃 시에는 CRLF를 LF로 변환합니다. 윈도우 사용자에게 권장되는 설정값입니다. false : 줄바꿈 문자 변환을 하지 않습니다. macOS, Linux 등 Unix 계열 사용자에게 권장되는 설정값입니다. input : 커밋 시에는 LF로 변환하고, 체크아웃 시에는 변환하지 않습니다. Windows에서 Unix 계열로

[Flutter] Firebase In App Message 사용해 보기
Firebase In App Message 사용해 보기 Firebase Cloud Message Documentation firebase_core | Flutter Package firebaseinapp_messaging | Flutter Package firebase_messaging Firebase 세팅하기 - Flutter 3.0 이후 [Firebase 세팅하기 -
[RN] Core Components #1
0. react와 react-native의 차이 > 우선 react와 react-native의 차이에 대해 먼저 집고 넘어가고자 한다. react와 react-native의 가장 큰 차이라면 역시 웹이냐 앱이냐의 차이이다. react-native로 웹을 개발할 수도 있고 react로 웹앱을 개발해 앱처럼 쓸 수 도 있지만, 기본적인 부분을 따져보겠습니다. react : Virtual DOM을 통한 렌더링으로 Javascript를 이용해 HTML과 비슷한 문법을 이용해서 웹 애플리케이션을 구축하기 위한 라이브러리이다. react-native : react의 컴포넌트 기반 아키텍쳐를 활용, Javascript를 사용하여 모바일 애플리케이션을 개발하기 위한 프레임워크이다. 1. Basic Components > [공식홈페이지의 Basic Components에 대해 이야기해볼까 합니다.](https://reactnative.dev/docs/comp

[Flutter] Firebase Authentication 사용해 보기 2편
Firebase Authentication 사용해 보기 2편 Firebase Authentication Documentation firebase_core | Flutter Package firebase_auth | Flutter Package Firebase Authentication 사용해 보기 1편 Firebase 세팅하기 - Flutter 3.0 이후 [Firebase 세팅하기 - Flutter 3.0 이전
JSTL :: Core Library
Core Library >변수와 조건문, 반복문 등의 로직과 관련된 문법을 제공한다. # 변수(속성) 선언 >변수를 선언하고 초기값을 대입하는 기능을 제공한다. > 해당 변수를 어떤 scope 영역에 담아둘 것인지 지정 가능하다. (생략 시 기본 pageScope에 담긴다.) > 즉, 해당 scope 영역에 setAttribute라는 메소드를 이용하여 key + value 형태로 데이터를 담는 것과 같다. > c:set 을 통해 선언된 변수는 EL로 접근하여 사용가능하다. (단, 스크립팅 원소는 접근이 불가하다.) >주의사항 변수의 타입을 지정하지 않는다. 반드시 해당변수에 담아두고자 하는 초기값을 세팅해야 한다.(선언과 동시에 초기화 필수) 코드 : 출력 : >num1의 값을 10으로, num2의 값을 20으로 초기화한 뒤 출력 코드 : 출력 : >result의 값을 num1+num2로 초
JSTL :: Library 다운 및 추가
JSTL > JSP Standard Tag Library의 약자로 JSP에서 사용되는 커스텀 액션 태그 > 공통적으로 사용되는 코드들의 집합을 보다 쉽게 사용할 수 있도록 태그화하여 표준으로 제공하는 라이브러리 library 다운로드 및 추가 >1. https://tomcat.apache.org/download-taglibs.cgi 접속 >2. Download > Taglib 선택 >3. Standard Taglib 선택 >4. 네가지를 전부 다운 받는다. 
CPU와 메모리
CPU (Central Processing Unit) 컴퓨터 내부 프로그램의 명령어를 해석하고 연산처리를 하여 외부에 출력하는 역할을 맡고 있는 CPU는 컴퓨터에 없어서는 안 될, 사람으로 치면 두뇌에 해당하는 장치로 중앙 처리 장치라고도 한다. 컴퓨터의 성능은 CPU에 의해 결정된다고 볼 수 있는데, 이때 중요하게 여기는 요소에는 코어, 스레드, 클럭이 있다. Core 코어는 CPU의 핵심적인 역할을 수행해내는 중심부 역할을 한다. 이 코어에서 모든 연산을 처리한다. 즉 코어의 개수가 많을 수록 일을 수행하는 로봇이 많다고 생각 할 수 있다. 코어가 하나인 경우 단일코어(싱글코어)라고 하며, 그 이상의 경우 멀티 코어라는 개념으로 각각의 명칭은 아래 표를 통해 자세히 살펴보자. 참고 사이트 : h
이더리움 go-etheruem Nonce 관련 Issue submit
이전 게시글에서 GetTransactionCount(), 즉 Nonce값을 가져오는 메서드를 분석했었다. 간단히 다시 한번 보자면 s.b.GetPoolNonce(ctx, address) txNoncer라는 구조체의 nonces라는 map에서 address에 대한 nonce값이 존재하면 그 값을, 존재하지 않으면 fallback(stateDB)에서 nonce 값을 리턴해준다. s.b.StateAndHeaderByNumberOrHash(ctx, blockNrOrHash) 위 메서드는 state.StateDB를 db로부터 생성해주게 된다. 때문에, txNoncer의 map에서 nonce 값을 가져오는 것은 물론, 존재하지 않을 경우에도 이미 state.StateDB가 존재하여 따로 생성해주는 과정이 없기 때문에 훨씬 빠를 것이다. 그렇다면 최대한 txNoncer로 부터 값을 가져와 리턴해주는 것이 성능으로 좋지 않을까? 란 의문부터 시작한다. txNoncer의
이더리움 코어 get Nonce 과정 (txNoncer)
한동안 typescript로 ethers를 사용하다가 최근에는 ethclient를 사용하여 코드를 작성하다 보니, 트랜잭션에 필요한 account nonce를 얻어오는 getTransactionCount()를 썼다. 그 과정에서 갑자기 궁금증이 생긴 것이, 매번 db에서 가져오나? 그러면 성능이 괜찮을까? 어디 캐싱을 해놓았을 수도 있지 않을까? 싶어 코드를 분석해본다. 시작 지점은 찾기 쉽다. geth client를 쓰는 경우에는 NonceAt(), web3.js나, ethers.js를 쓰는 경우에는 rpc 요청으로 getTransactionCount()를 호출하게 된다. 공통적으로 호출되는 메서드 getTransactionCount()를 보자. 파라미터를 보면 address, blockNrOrHash 를 넘겨 받고 있다. 그러나, 실제로 GetTransactionCount()를 호출할 때는 아래와 같이 호출할 것이다. 즉, address 파라미터 뒤, 블록번호를 넣어주는

JSP - JSTL
JSTL JSP Standard Tag Library JSP 표준 라이브러리 JSP 에서 자주 사용하는 기능 (반복문, 조건문, 데이터 표현 등) 을 미리 구현한 라이브러리 JSTL 은 EL 을 사용 스크립트 릿으로 작성해야할 로직을 태그로 대신 처리 JSTL 사용법 build.gradle 설정 Core Tags 출력문을 만드는 태그 변수를 다룰 때 사용 JSP 로컬 변수가 아니라 서블릿 보관소 (JspContext, ServletRequest, HttpSession, ServletContext) 에 저장 scope 기본값은 page 객체 프로퍼티 값 설정 객체 프로퍼티 값을 설정할 때 사용 Java Bean 값 설정 가능 test 조건식이 true 면 본문 내용 표시

DI
🎁 스프링 컨테이너 개념 다른 말로 스프링 IoC 컨테이너 또는 IoC 컨테이너, DI 컨테이너라도도 부른다. 스프링 프레임워크의 핵심 컴포넌트로 애플리케이션 빈의 생명주기를 관리한다. 여기서 말하는 빈이란 스프링 컨테이너가 관리하는 객체를 의미한다. 여기서 말하는 컨테이너란 무엇인가? >### 컨테이너의 의미 소프트웨어 개발 용어의 관점에서 컨테이너란 내부에 또 다른 컴포넌트를 가지고 있는 어떤 컴포넌트를 의미 컨테이너는 먼저 객체를 생성하고 객체를 서로 연결 객체를 설정하는 단계를 지나 마지막으로 생명 주기 전반을 관리 객체의 의존성을 확인해 생성한 후 적절한 객체에 의존성을 주입 BeanFactory 스프링 컨테이너의 최상위 인터페이스이다. `BeanFactory`는 빈을 관리하는 역할을 한다. `@Bean` 어노테이션이 붙은 메서드 명을 스프링

ASP.NET Core Restfull API 및 postman 호출 with visual studio 2022
A. 웹 프로젝트 만들기 파일 메뉴에서 새로 만들기>프로젝트를 선택합니다. 검색 상자에 Web API를 입력합니다. ASP.NET Core Web API 템플릿을 선택하고 다음을 선택합니다. 새 프로젝트 대화 상자 구성에서 TodoApi 프로젝트 이름을 지정하고 다음을 선택합니다. 추가 정보 대화 상자에서 다음을 수행합니다. 프레임워크가 .Net 6.0(장기 지원)인지 확인합니다. 컨트롤러 사용(최소 API를 사용하려면 선택 취소) 확인란을 선택합니다. 만들기를 선택합니다. B. launchUrl 업데이트 Properties\launchSettings.json에서 launchUrl을 "swagger"에서 "api/todoitems"로 업데이트합니다. C. 모델 클래스 추가 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭합니다. 추가>새 폴더를 선택합니다. 폴더 이름을 Models서 무료 평가판 계정을 등록할 수 있습니다
[Golang] ToLower() 분석
string을 소문자로 바꿔주는 메서드인 ToLower()를 할 때, 애초에 소문자를 넣으면 어떻게 될까? 미리 체크를 해보고 메서드를 호출해야 할까? 결론은 소문자에 ToLower()를 해도 소문자가 리턴된다. (이 글에서는 타깃 string이 ASCII 코드인 경우만 다루겠습니다.) strings 에서는 소문자 변환을 수행하기 전에 모든 캐릭터를 순회하며 ASCII 범위값을 벗어나는지, 대문자가 하나라도 존재하는지 확인한다. ToLower() 조건에 부합하는 경우, Builder라는 타입을 선언한다. 예상해봤을 때는 캐릭터를 하나하나 소문자로 바꾸며 string에 + operator를 수행할 줄 알았는데 생각과는 많이 다르다. Builder의 주석에서는 > A Builder is used to efficiently build a string using Write methods. It minimizes memory copying. The zero value is r
이더리움 코어 API 등록 과정
위와 같은 Rpc API를 호출하면 이더리움 코어 안에 GetTransactionCount() EstimateGas() GetBalane() 이와 같은 메서드가 호출이 되는데, 어느 부분에서 포팅이 되는지 평소에 알 수 가 없던 터라 이번 기회에 한번 알아 본다. 파라미터로 받은 node에 API를 Register해준다. 위 API중 예시로 NewPublicEthereumAPI를 예시로 보겠다. 위와 같은 형태의 Service가 Node.rpcAPIs에 추가되며, startInProc() 메서드로 api를 등록한다. 예시로 PublicEthereumAPI 를 들어 보자면, registerName("eth", *PublicEthereumAPI) 이며 suitableCallbacks를 메서드를 통하여 PublicEthereumAPI의 메서드를 재구성한다. for문을 돌며 callback이라는 구조체와 메서드 name을 파싱한다. 예시로 P
이더리움 코어 Event 분석
최근에는 배포된 스마트 컨트랙트 event를 구독하여 데이터를 가져오는 로직을 짜고 있다. 그러다 보니, 자연스럽게 event를 어떻게 가져오는지 궁금해져서 알아보았다. [다루는 내용은 geth 기준] web3, ethers, eth-client ... 등 에서 contract에 대한 event listen 요청은 이더리움 노드의 eth_newFilter 요청이고, 이는 NewFilter()를 호출한다. logs를 받는 채널을 선언하고, 노드에 filters라는 map 자료구조에 filter{}를 넣는다. 조금 더 들어가보자. SubscribeLogs()를 먼저 본다. 사용자가 요청한 filter의 값을 사용하여 from ~ to 블록 범위를 정한다. (비어있으면 최근 블록 넘버를 넣어준다) 그 후, 원하는 log 타입에 따라 메서드를 호출해준다. 여기서는 내가 유일하게 써본 from, to 가 비어있는 filter, 즉 새롭게 생성된 블록의 로그를 갖고 오는 l