분류 전체보기
-
if let 구문 이해하기 [ TIL / Rust ]웹개발/Rust 2023. 9. 18. 17:36
배경 아직도 Rust 언어로 구현된 프로그램을 봤을 때 생소한 표현을 확인하게 되는 경우가 많다. 사실 이번 if let 구문 같은 경우는 분명 Rust Book에서도 확인했었던 문법인데 사용하는 방식이 낯설었다. 이번 기회에 이 문법에 대해서는 정확하게 짚고 넘어가기 위해서 정리해본다. match if let은 사실 match 문법하고 밀접한 관련이 있다. match는 사실 C언어에서 switch 문법과 많이 닮아있다. 예제를 보며 간단히 살펴보도록 하겠다. enum Transfortation { Taxi, Bus, Subway, Train, Airplane } // calculate cost let vehicle = Transfortation::Taxi; let cost = match vehicle ..
-
솔라나 최신 버젼, Rustc 빌드 문제 해결 과정 [ TIL / Solana ]블록체인 공부/솔라나 2023. 9. 7. 01:40
문제상황 Rust 스터디를 하는 중, 스마트 컨트랙트를 러스트 기반으로 코드를 작성하는 곳에서 공부한 rust를 활용하여 간단한 프로그램을 만들어보려고 했다. Rust 컨트랙트 작성을 지원하는 여러 체인이 있지만, 그 중에서 솔라나가 채택되어서 개발을 진행해보기로 했다. 많은 다른 체인들도 그렇지만, 솔라나 또한 solana-cli라고 컨트랙트를 작성하고 배포하는 데 필요한 툴들을 직접 제공하고 있다. 이를 통해서 로컬 환경에서 컨트랙트를 배포하고 작동시키는 작은 블록체인 서버도 만들 수 있다. 본인은 솔라나 측에서 제공하는 공식 문서의 시작하기를 참고하면서 간단하게 hello_solana 컨트랙트를 만들어 배포해보려고 했다. 참고로 솔라나에서는 컨트랙트를 프로그램으로 지칭하기 때문에 아래에서는 프로그램..
-
자바스크립트 정규표현식으로 문자열 검증하기 [ TIL / JavaScript ]웹개발/JavaScript 2023. 8. 24. 22:21
배경 유저들에게 간단한 입력을 받을 때, 클라이언트-서버 둘 다 입력을 검증해야될 필요가 있다. 이를테면 이메일을 입력받으면, 이메일 형식의 입력이 필요하다. 이 때 이메일은 반드시 '@'가 포함되어 있어야 하고, 뒤따라오는 도메인 형식의 확인도 필요하다. 비밀번호도 보안을 위해 대문자나 특수문자의 입력을 요구하기도 한다. 이렇게 문자를 입력받을 때 필요에 의해서 검증을 하는 것을 구현을 해야될 때 어떻게 해야할지 알아보려고 한다. 사실 한 글자, 한 글자 입력이 들어오고 삭제될 때마다 체크하는 방법도 있다. 비밀번호 정도는 이렇게 구현할 수 있을 것이다. 하지만 이메일 같이 패턴을 요구하는 검증에는 알고리즘을 짜기 어려울 수 있다. 정규표현식 이를 간편하게 구현할 수 있는 것이 정규표현식이다. 정규표현..
-
React Native ios Build Failed 해결 과정 - 2 [ TIL / React Native ]앱개발/React Native 2023. 8. 16. 12:28
문제 파악 제각기 다른 해결책 제시로 문제 해결에는 난항을 겪고 있던 와중, 지속적으로 똑같은 Error 메시지를 보면서 생각한게 있다. 이를 정리해보도록 하겠다. 위의 에러 로그는 이전에 작성한 포스팅에서도 제시한 적이 있다. yarn ios 명령을 터미널에 입력했을 프로젝트를 빌드하면서 생기는 문제였다. 사실 이 로그의 하단 부에는 엄청난게 긴 에러 로그가 더 있다. 근데 모두 하나같이 Compile C라는 문제가 발생했다. 그리고 위 로그의 상단부에서도 clang-12가 문제를 일으키고 있는 것을 확인할 수 있다. C언어로 컴파일하는 문제가 발생하고 있는 거라면, 어쩌면 시스템이 컴파일 하기 위한 도구를 캐치하지 못하고 있는 것일 수도 있다는 생각을 했다. 우선 가장 많이 제공되었던 해결책이 xco..
-
React Native ios 빌드 실패 해결과정 [ TIL / React Native ]앱개발/React Native 2023. 8. 16. 00:51
배경 새로운 프로젝트를 웹이 아닌 앱으로 유저에게 제공할 기획을 세우게 되어서 앱을 개발할 방법을 찾고 있었다. 특히 본인이 React를 사용해서 여러 웹개발 프로젝트를 진행해 왔기 때문에 이 상황을 유리하게 사용하고 싶었다. 그래서 생각해낸 것이 바로 React Native이다. 이미 많은 사람들이 알고 있을지 모르지만 React Native는 ios와 Android의 앱 개발을 React 프레임워크를 기반으로 개발을 해낼 수 있게 만든다. 표면적으로는 React 기반의 JavaScript 코드가 돌아가면서, 브릿지를 두어 ios나 Android의 Native 컴포넌트들과 메시지를 통해 상호작용을 한다고 한다. Flutter를 사용할까 잠깐 고민했지만, 이제 막 커뮤니티가 성장하는 단계라 이후 새로운 ..
-
react-router-dom 라이브러리 사용법웹개발/React.js 2022. 9. 23. 19:22
리액트, 첫 문을 'react-router-dom' 라이브러리 설명으로 열게 되었다. 아직 딥하게 공부한 것은 아니어서 간단히 소개만 하는 글이 될 것 같다. 'react-router-dom'을 이해하기 위해서는 SPA 개념에 대해서 이해하고 있어야 한다. SPA 과거 웹 어플리케이션은 여러 HTML 페이지를 두어 제공하는 형식이었다. 클라이언트에 측에서 URL을 이용하여 서버에 있는 자원을 요청하면, 서버는 요청한 자원이 있는지 확인하고 클라이언트에게 자원 통째로 제공한다. 이런 결과로 클라이언트는 매번 요청 때마다 이전 페이지를 새로 갱신하여 현재 페이지를 확인해야 했다. 지금이야 인터넷 속도가 빨라져서 눈 깜짝할 새에 요청/응답이 진행된다고 하지만, 그렇지 않은 때는 불필요한 갱신 때문에 시간을 써..
-
1급 객체, 콜백 함수, 고차 함수웹개발/JavaScript 2022. 9. 22. 01:04
JavaScript를 공부하면서 놀라웠던 것은 엄청난 자율성이다. '이게 될까?'라고 생각한 것은 생각보다 잘 작동한다. 그 중에서 한 몫 하는 건 JavaScript의 함수 개념이다. 1급 객체 /* 함수 선언식 */ function declaration() { console.log("Hello"); } declaration(); /* 함수 표현식 */ let expression = function(){ console.log("World!"); } expression(); /* 1급 클래스 */ function firstClass(paramFunc){ return function(){ paramFunc() console.log("Wake Up!") } }; 줄곧 기본적으로 봐왔던 '함수 선언식' 외에 ..
-
git을 공부할 때마다 처음 배우는 것 같아 정리해보는 글(내용 추가 예정)웹개발 2022. 9. 17. 17:34
협업이 필수라는 개발자 생태계에서 github을 사용하는 것은 필수라고 한다. 학교에서도 그렇고, 한 번 참여했었던 프론트엔드 개발 교육에서도 그렇고 프로그래밍을 가르치는 모든 과정에서 한 번씩은 git 사용을 가르쳐준다. 하지만 매번 git을 배우고도 다시 사용할 때마다 기억이 리셋된다. 그 이유 중 첫 번째, 제대로 개념을 정리하지 않고 넘어갔기 때문일 것이다. 그 때마다 git으로 간단한 과제를 해결하는데만 치중하다보니 git에 대한 제대로 된 개념이 자리잡지 못하고 심화로 넘어갔다. 이유 두 번째, git이 제대로 작동하는 상황들만 가정하다보니 문제 상황을 풀어나갈 능력을 갖추질 못했다. git의 실질적인 효력은 이 문제 상황을 돌파하는데에 있다는 것이 지금와서 생각이 된다. 정리1. 아직도 헷갈..