본문 바로가기

분류 전체보기

(161)
[TIL] 24.04.08 팀 프로젝트 회고 1. 팀 프로젝트 팀 프로젝트가 우여곡절 끝에 마무리 됐다. 완벽한 완성도는 아니었지만, 의미 깊은 프로젝트였다고 생각한다. 발표를 위해 만들어둔 프레젠테이션 자료를 보며 되돌아볼까 한다. 일단 목표가 여기 적어둔 것처럼, 온전한 팀 프로젝트를 경험하는 것에 초점을 맞췄다. 그래서 팀원들에 여건에 맞춰 적용할 기술을 선택했고, 구현할 기능도 욕심내지 않았다. 역할 배분에 내 의견이 많이 반영됐는데, 그래도 팀원들이 모두 본인 역량을 조금 웃도는 수준으로 경험하면 좋겠다 싶어서 그 정도의 선을 기준으로 분배했다. 내가 처음 안드로이드를 공부할 때 그게 도움이 많이 됐기 때문인데, 러닝 커브가 가파르니까 일단 부딪혀서 조금 어렵다 싶은 것들을 어떻게든 해내다 보면 지나고 봤을 때 많이 성장해 있었던 것 같다..
[TIL] 24.04.04 팀 프로젝트, 챌린지반 과제 1. 팀 프로젝트 오늘 늦은 저녁이 돼서야 병합에 성공했다. 디테일한 부분 픽스는 미루고 주요 로직들이 돌아가게 하는 것을 우선으로 해서 병합했다. 아무래도 남은 기간이 얼마 남지 않았고, 슬슬 남은 필수 구현 사항을 적용하고 모든 코드가 병합된 채 점검해야하는 것들이 있었기 때문에 어쩔 수 없는 선택이었다. 그래도 일단 코드 리뷰를 꽤나 열심히 진행해서, 큰 결함은 없는 상태로 병합할 수 있었다. 그리고 다음 단계로 나아가기 위해 다시 각각 파트를 나누었다. -UI수정 및 UI 위주의 부가기능 구현 -유저 등록하는 시스템 및 로그인 시 실제 검증 절차 적용하기, String 리소스 수정 -각 액티비티 간 전환 시에 트랜지션 적용하기( overridePendingTransition()을 이용하라고 했는데..
[TIL] 24.04.03 팀 프로젝트 1. 팀 프로젝트 원래 오늘 PR 다 받아서, 코드 리뷰까지 끝냈어야 했는데 조금 늦어졌다. 그래도 우여곡절 끝에 오늘이 지나기 전에 반절의 코드는 병합했고, 반절의 코드는 PR까진 받아서 이정도면 심각할 정도로 차질이 생긴건 아니지 싶다. 회원가입 및 로그인 UI, 모든 글이 보여지는 메인, 메인의 각 아이템을 클릭했을 때 나타나는 디테일 페이지, 그리고 메인에서 버튼을 눌러 확인할 수 있는 마이 페이지로 이루어진 간단한 SNS 앱이다. 일단 정규 커리큘럼의 진도상, 실제 통신을 한다든지 아키텍처를 이용한다든지 할 필요는 전혀 없다. 오히려 사용하면 안된다. 그래서 대부분의 동작이 더미 데이터를 이용해서 동작하고, 그 때문에 아쉬움이 남는 부분도 있다. 사실상 CRUD의 R만 구현한 구조에 가깝다. 과..
[TIL] 24.04.02 팀 프로젝트 1. 팀 프로젝트 오늘은 거의 하루종일 팀 프로젝트만 진행한 것 같다. 다른 팀원들의 코드를 봐줄 일이 잦았는데, 나는 의도가 옳았다면 나쁜 코드는 아니라고 생각하는 편이라, 되도록 의도가 맞지 않은 부분 위주로 피드백하려고 했다. 조금 더 나아가서, 개선할 수 있겠다 싶으면 개선점을 첨언하기도 했다. 안드로이드 자체가 상대적으로 러닝커브가 완만하지는 않은 느낌이라, 초심자들이 고생하는 것도 이해는 간다. 그래도 잘 설명해서 팀원들이 이해하면 그거대로 기분 좋은 경험인 것 같다. 그리고 형상 관리 이슈부터, 코틀린 문법, 안드로이드 구현에 이르기까지 다양한 질문을 받고 답을 하다보면, 내 베이스 지식도 한결 단단해지는 느낌이고.. 그러는 동시에, 내가 맡은 부분의 코드도 작성해야 했는데 일단 과제의 제약..
[TIL] 24.04.01 챌린지반 세션, 앱개발 입문주차 팀 프로젝트 1. 챌린지반 세션 저번 주에 이어서 ViewModel을 이용할 때 유의해야하는 점들에 대해서 배웠다. 도중에 알게된 것이지만 DataBinding을 되도록 지양해야한다는 것은 조금 놀랐다. MVVM과 함께 썼을 때 정말 강력한 방법이라고 생각했는데, 지금에 와서는 득보다는 실이 많은듯 했다. 보일러 플레이트 코드를 줄여주고, 양방향 바인딩이나 LiveData를 손쉽게 이용하게 해주는 것은 분명히 장점이지만, 협업 시에 코드 가독성을 해치고 디버깅이 어렵게 만든다는 것이 주요 골자였다. 더해서, Jetpack Compose가 구글의 권장사항이 된 이후로, 여러 기술적인 지원(KSP를 비롯)이 제대로 이루어지지 않아서 불안한 요소도 있다고 한다. 듣고 보니, 충분히 납득할만한 이유들이었고, 나도 XML을 ..
[TIL] 24.03.29 알고리즘, 사이드 프로젝트, CS 리마인드 1. 알고리즘 문제 해결 특정한 최단 경로(백준 1504): 시작 정점이 정해져있고, 각 edge의 비용에 음수가 존재하지 않으므로 다익스트라 알고리즘을 통해 최단거리(최소비용)를 구할 수 있다. 대신 주어진 두 정점을 반드시 거쳐야 한다. 요즘 계속 풀었던 그 패턴인데, 이번 문제도 마찬가지로 조건 별로 나누어서 비용 배열을(코드의 visited vector) 처리해줄 필요가 있다. 등장할 수 있는 조건은 두 정점 중 아무것도 거치지 않은 경우, v1만 거친 경우, v2만 거친 경우, 두 정점 모두 거친 경우로 총 4가지이다. 주어지는 정점의 수가 작기 때문에, 비용 배열의 크기는 문제되지 않을 것이다. 다익스트라 알고리즘에 사용할 우선순위 큐의 경우, 비용이 적은 선택지를 최우선으로 두었고 비용이 같..
[운영체제] 2. OS 서비스 본 내용들은 전공수업으로 배운 내용들을 스스로 리마인드하기 위한 목적으로 작성되었으며, 누군가에게 지식을 전달하기 위한 목적으로 작성한 것이 아닙니다. 대부분의 내용은 제가 수강했던 전공수업 및 Operating System Concepts, 10th Edition에 근거하고 있습니다. 1. OS 서비스 - OS는 프로그램 실행을 위한 환경 및 프로그램과 유저에게 서비스들을 제공한다 (아래의 6 + 3 서비스가 대표적) 유저에게 유용한 기능을 제공(6) - User interface, Progream execution, I/O operations, File-system manipulation, Communications(Internal & External), Error Detection Resource ..
[TIL] 24.03.28 알고리즘, CS 리마인드 1. 알고리즘 문제 해결 알고스팟(백준 1261): 어제 맥락이 같다고 했던 유형의 문제가 바로 나왔다. 결과적으로는 다익스트라 문제긴한데, 사실 BFS(Best-First Search, 이하 BFS) 문제라고 봐도 무방하다. Best의 판단 기준은 당연히 진행하면서 부순 벽의 수이다. 문제의 입력으로 인접 노드가 아닌 미로의 평면 정보가 주어지고, 그 수 또한 많지 않으므로(최대 100*100개의 데이터가 주어지며 심지어 데이터는 0또는 1이다) 인접 정보는 2차원 배열에 그대로 저장한다. 이렇게 하면 각종 DFS, BFS( Breadth-First Search) 문제를 풀 때 자주 사용하던 방식으로 dx와 dy배열을 만들어 좀 더 간결한 코드를 작성할 수 있다. BFS를 사용하기로 했으므로 우선순위 ..