목록전체 글 (191)
여정의 기록
버블 정렬은 정렬을 배울 때 가장 처음 순서로 배웠던 것 같다.여기저기 구경하다가 버블 정렬 코드를 못짜면 주니어라는 걸 보고 한 번 코드를 짜보기로 했다. Python 이용한 코드... for j in range(len(a)-1): if a[j] > a[j+1]: a[j] , a[j+1] = a[j+1] , a[j] 처음 a[j] > a[j+1] 비교하는 건 알겠는데 생각해보니 언제까지 이 비교를 해야하지? 싶었다.우선 두 개의 값만 비교하므로 배열의 맨 마지막 요소가 맨 앞으로 이동할 수 있을만큼 하면 되겠다 싶었다. 예를 들어서 a = [3,7,1,6,12,7,22,64,1] 라는 값에서 맨마지막 요소인 1이 맨 앞으로 갈 수 있을 만큼의 횟수.항상 1의 ..
현재 Flutter와 React를 이용해서 개발을 하고있습니다.사용자 인증 방식을 JWT token으로 사용하고 있습니다만, 가만 생각해보니 Flutter와 React가 token값이 다르면 문제가 생길 수 있지않나? 라는 생각이 들었습니다.그래서 Flutter와 React의 토큰을 동기화하는 작업을 시작했습니다.Flutter - WebView Token Sync우선 새로운 access token 을 발급받는 과정은 이러합니다.인증이 필요한 API요청 -> 401 에러 반환 -> 401 에러이면 refresh token을 이용해서 access token 요청 -> access token 발급 성공! -> 새로운 token으로 다시 API요청 혹은 access token 발급 실패 -> 자동 로그아웃 및 ..
Flutter 에서 웹뷰로 구성된 React 프로젝트 부분을 lighthouse 를 이용해서 성능 측정을 해보았다. 3.0초 이상인 경우 Poor 등급에 해당되는데 상태가 매우 안좋은 것을 알 수 있었다 (...) 그래서 개선한 사항으론,1. 필요없는 이미지 삭제, google cloud 에서 받아오는 형식으로 변경2. 사용하지 않는 provider 삭제3. index.html 파일에 rel="stylesheet" 만 있던 상황. 이것은 첫 렌더링을 막아 외부 CDN을 통해 폰트를 가져오는 경우 네트워크가 밀리는 경우가 발생할 수 있음.- preconnect 로 CDN 서버와 연결을 열어두고 (DNS/TLS 연결 시간 단축),- preload 로 CSS 파일 우선 다운로드 후- onload 에서 실제 ..
문득 SEO에 대해서 찾아보다가 title 에도 권장 기준이 있다는 사실을 알게되었다. 태그에 대해서.1. 텍스트만 포함할 수 있다2. 로 닫지 않으면 브라우저 페이지가 나머지 내용을 무시한다3. 태그가 포함되면 태그는 무시한다4. 전역 특성만 포함한다5. 안에서 사용해야 한다 title 안에 작성할 내용에 대해서.1. 단어가 아닌 문장을 사용할 것2. 콘텐츠를 설명할 것3. 사전, 참고 문서의 경우 용어와 정의를 짝지어 사용할 것4. 긴 제목의 경우 중요한 부분을 앞에 배치할 것5. 키워드 뭉치는 검색 알고리즘에서 순서를 내린다6. 웹 사이트 내에서 제목을 최대한 겹치지 않도록 할 것 지금 회사에서 Next.js를 사용중이라 궁금해서 SEO 설정이 어떻게되어있나 확인해보았다. 비즈니스가 B2B라 ..
Flutter App 에 WebView 를 넣어서 개발 작업을 하고 있는데,모달을 연다거나 특정 페이지에 들어갔을 때 네비게이션 색상이 달라 보이는 문제가 있었다. url 이 달라질 때 트리거를 놓는 다면 onUrlChange 에 걸어두면 되겠지만 url이 달라지지 않고 모달을 열고 닫을 때도 적용이 되어야 했기 때문에 react 측에서 신호를 보내는 방식으로 구현해 보았다. React 의 어떤 화면이 뜰 때, 네비게이션 색상이 Black 이어야 한다.-> 해당 화면 접속시 'Black' 색상 정보를 React - Flutter Channel 을 통해 Flutter 로 신호를 보낸다-> Flutter 는 색상 정보와 함께 신호를 받는다-> 해당 색상 정보를 systemNavigationBarColor 설..
3월의 마지막 날, 상큼하게 수정사항을 반영하기 위해 푸시를 진행했다. 가끔 깃허브 액션이 실패할 때도 있지만, 에러는 고치면 되는 것. 이제 잘 올라가겠지 하고 빌드를 기다렸는데, 아니 갑자기 웬 import 에러가? 도저히 이해할 수가 없었다. 그 동안 문제가 없던 부분들이 문제가 되었다고? 그럴리가 없는데 사실 import 문제라는게, 그 부분들만 좀 고쳐서 올리면 됐는데, 그동안 문제가 없었던게 문제가 된다고 하니까! 뭔가 import 자체의 문제는 아니라는 생각이 번뜩 들었다. 그래서 docker 관련된 파일들을 보게 되고, 괜히 최근 푸시된 다른 글들을 보게 되고 (탓하게 되고) ...아무튼 결론은 다른 것들을 보다보다 시간을 조금 소비하였고, 결국 다른 문제점을 찾을 수 없어 나타나는 문제..
동기성, 비동기성 (sync, async) void main() async { await dotenv.load(fileName: ".env"); runApp(MyApp());} async , await 는 왜 쓰는 것일까요? 1. JavaScript도 그렇지만, Flutter 는 Main isolate라는 Single-Thread 로 작동된다.2. Single-Thread라는 건 동기성으로 작동된다는 것을 의미한다. 모든 코드 라인이 한 줄 시행된 뒤 그 다음줄이 시행된다.3. Flutter는 UI를 그려서 보여주는 역할을 한다. Flutter 코드에는 UI 를 그리는 코드 뿐만 아니라, [ 데이터를 불러오는 코드 , UI 를 그리는 코드, 기타 등 ] 이 있다.4. 사용자는 데이터를 불러오는 동안 ..
Dart Constructors 를 살펴보다가 아래와 같은 코드를 마주했습니다.const double xOrigin = 0;const double yOrigin = 0;class Credit { final double x; final double y; Credit(this.x, this.y); Credit.origin() : x = xOrigin, y = yOrigin;} Credit.origin() ? 그 옆에 : 는 뭐지?Credit.origin() : x = xOrigin, y = yOrigin; // Named constructor 위 코드를 풀어 쓰자면 다음과 같습니다.Credit.origin() : x = xOrigin, y = yOrigin; // Named constructor인스턴..