본문 바로가기

분류 전체보기84

[Flutter] 패키지 pub.dev에 배포하기 문득 pub.dev에 올라와있는 패키지들은 어떤 방식으로 배포된 것인지 궁금해졌다. 마침 앱에서 pdf관련 기능을 개발해야 했는데, 이 기능을 패키지로 만들고 pub.dev에 배포까지 해보면 어떨까 생각이 들었다. 아직 패키지는 완성되지 않았지만 우선 배포한 뒤 천천히 관리를 해나가면 좋을 것 같다.  패키지 만들기 플러터에서 제공하는 기본 템플릿으로 패키지(package)와 플러그인(plugin)이 있다. 패키지란 특정 기능이나 라이브러리의 모음을 제공하는 코드 라이브러리이다. 주로 Dart 언어로 구현되며 UI에 직접적인 영향을 미치지 않고 로직이나 데이터를 처리하는 데 사용된다.ex) provider, http, sqflite 등 플러그인은 Flutter와 네이티브 코드 간 상호작용을 가능하게 하는.. 2025. 1. 16.
[C#] 비동기 프로그래밍 가이드(Async and Await) 비동기 프로그래밍은 정말 쉽지 않은 것 같다. 개념을 어느정도 익히고 사용하더라도 실제 개발을 진행하다보면 내 마음같이 움직이지 않는 것이 비동기 프로그래밍인 것 같다. 이왕 괴롭힌 받은 김에 비동기 프로그래밍을 정리해본다.  동기 프로그래밍비동기 프로그래밍에 대해 알아보기 전에, 동기 프로그래밍을 먼저 살펴보자.동기 프로그래밍 방식에서는 이전 작업이 완료되기 전까지 다음 작업이 시작되지 않으며, 요청과 요청에 대한 결과가 동시에 일어난다. 즉, 순차적으로 하나의 작업이 실행되는 방식이다. 때문에 여러가지 작업을 동시에 처리할 수 없다. 예를 들어 아침식사를 준비하는 과정을 동기적으로 진행해보자.  1번부터 7번까지의 작업을 순차적으로 진행하는데 총 30분이라는 시간이 소요되었다. 각 작업은 동기적으로 .. 2024. 12. 21.
[Flutter] 중첩 조건문 방지하기 Guard Clause 배경최근에 유니티로 서비스하고 있는 앱에서 기능 추가를 위해 불가피하게 레거시 코드를 리팩토링하고 있다.기존에도 다른 사람이 작성한 코드를 수정해야할 일이 당연히 있었지만, 이렇게 레거시 코드를 뜯어 고치다보니 남의 코드를 수정하는 일이 정말 쉽지 않다는 것을 다시 한번 느끼게된다. 리팩토링을하며 소소한 버그도 발견하거나 이해할 수 없는 로직을 분석하는 것도 힘들었지만, 나를 은은하게 열받게(?)하는 포인트는 중첩으로 사용된 if문이었다. 잘 못된 코드는 아니지만 묘하게 보기 불편한 이 중첩 조건문들을 보며 '혹시 나도 이런 코드를 짜지 않았나?' 반성하게 되었다.   문제 중첩 조건문의 문제가 뭘까? void someFunction() { if (isLogin) { if (isUser) .. 2024. 12. 6.
Gitlab(폐쇄망) CI/CD로 .net core 프로젝트 배포 자동화 만들기 배경 지금 운영중인 서비스에서 업데이트가 진행되는 경우 배포해야할 어플리케이션은 3~5개이다. 지금까지 업데이트를 할 때마다 직접 배포파일을 만들고, 서버에 옮긴 뒤 IIS APP풀을 내리고 파일을 교체하고 다시 풀을 재시작하는.. 노가다를 반복했었다. 시간이 부족하다는 핑계로 생산성이 떨어지는 미련한 짓을 거의 1년 넘게 반복하다 보니 이제는 정말 자동화된 배포 프로세스가 필요하다고 느꼈다. 배포 자동화를 해야겠다는 마음을 먹으니 자동화 프로세스 구축으로  배포가 간단해지는 것 이외에 다른 부가적인 효과들도 기대할 수 있을 것 같았다.  과정 우선 서버에서 나를 대신해 열심히 빌드부터 배포까지 진행해 줄 gitlab-runner를 설치해주어야 한다. - 프로젝트 레포지토리 => Settings => C.. 2024. 11. 25.