제11회 대한민국 융합SW 해커톤 예선 발표 영상입니다.
발표한지는 좀 됐는데 이제야 블로그에 작성하네요.

 

들어가는 글

구름톤 유니브의 가장 큰 행사인 단풍톤 11월 23일 ~ 11월 24일에 이루어졌습니다.

이번 해커톤은 특히나 기억에 남는데요 굿즈 제작, 데모 부스 등등.. 기존에 겪어보지 못한 경험이었습니다.
장소 자체도 카카오 AI 캠퍼스를 사용했기 때문에 시설에 있어서도 매우 만족했습니다.

활동

데모 부스를 운영한 적은 처음인데요 생각보다 매우 재밌는 경험이었습니다.
이전에 경험한 해커톤은 발표로 결과가 정해지는 시스템이었기 때문에 더욱 그랬던 것 같아요

학생들이 만드는 프로젝트의 특성상 실제 사용자를 받기는커녕 알파테스트 단계에서 QA 진행도 없이 개발 완료 처리를 하고
서버 비용의 문제로 서비스가 내려가는 경우가 대부분인 것 같습니다.

하지만 데모 부스를 운영 시 해커톤 조직 안의 구성원들이 한 번 정도는 사용하거나 서비스의 전반적인 모습들을 보고 가기 때문에
그 자체로도 가치가 있는 것 같습니다.

저희가 운영했던 데모부스입니다. 이것 이외에도 팀 티셔츠를 맞췄는데 그것도 좋은 추억으로 남는 것 같습니다.

뒤에 QR을 찍게 되면 저희 서비스의 도메인으로 이동하게 됩니다. 이게 생각보다 호응이 좋았습니다.
기억에 남을만한 해커톤을 준비하고 계시다면 추천드립니다.

또 체력도 잘 분비해서 가길 바랍니다.. 안 그럼 얘처럼 자요

 

마무리

개발을 하면서 여러 프로젝트를 진행했지만 그중에서 실제로 유의미한 사용자를 받아낸 경험은 없는 것 같습니다.
이 점이 너무 아쉽게 느껴지고 목표인 "프로덕트를 이해하고 사용자 중심의 개발을 하는 개발자"와는 거리가 있어 보입니다.

해커톤과 같은 행사를 계속해서 나가는 것도 위에서 말한 목표에 다가가는 과정이라 생각합니다.
수십 개의 기획과 디자인을 공짜로 볼 수 있는 경우는 많지 않다고 생각해요

이번 연말에는 또 다른 해커톤에 참가하면서 일 년을 마무리할 것 같습니다.
제 블로그를 방문해 주시는 분들은 대부분 회고의 글을 보시는데 기억할 만한 일 년이었기를 바랍니다.

나머지 사진들 올리고 마무리하겠습니다.

감사합니다.

들어가는 글

안녕하세요 오랜만에 글을 쓰네요 12월 11일 정보처리기사를 취득했습니다.
개발자에게 자격증이 필요한가?에 대해서는 그럴 수도 있고 아닐 수도 있다고 생각합니다.

서비스 기업에 지원하는 경우 자격증이 채용에 있어 유의미한 영향을 줄 것 같진 않습니다만 SI/SM 혹은 전통적인 기업들(제조, 금융..)은 기사 자격증에 대한 채용 우대가 존재하기 때문에 지원하고자 하는 기업의 성향에 따라서는 필수적으로도 따야 할 수도 있습니다.

하지만 요즘 채용시장을 보면 빅 테크는 신입 채용문을 아예 닫아버렸고 스타트업도 혹한기를 겪고 있기 때문에 SI/SM이 대부분의 공고를 차지하고 있습니다.

따라서.. 개인적으로 기사 자격증은 필요하다고 생각합니다.

공부시간/느낀점

이번 시험을 보면서 느낀 것은 전공/비전공의 차이가 극심하게 갈릴 것 같다였습니다.

저의 경우 필기 3일 실기 2일의 공부시간을 가졌는데요 실기의 경우에 코딩 문제가 절반 이상이 출제됐기 때문에 기출만 풀어보고 이론 암기에 집중했습니다. 그래서 필기를 준비한 시간이 실기 준비 시간보다 더 깁니다.

정처기 시험 자체가 이론은 쉽게, 코딩은 어렵게 출제해 변별력을 갖추려 하기 때문에 비전공자에게는 정말 어려운 시험이 될 것 같습니다.
만약 1달 이상의 시간 투자가 필요해 보인다면 개인적으로는 다른 것에 투자하는 게 더 좋아 보입니다. 필요한 건 맞아도 그 정도의 가치는 없다고 생각해요

전공자분의 경우에는 안 딸 이유가 없다고 생각합니다. 어차피 공부에 많은 시간이 필요하진 않을 테니
"개발자는 자격증 필요 없어~"이러시지 말고 꼭! 필수로 따시길 바랍니다.
나중에 원서 쓸 때 우대사항에 기사 자격증 있는 거 보면 괜히 기분 나빠요..

마지막으로 공부하면서 참고했던 자료 올리고 마무리하겠습니다.
감사합니다.

 

뉴비티 기출문제 문제은행 - 완전 새로운 CBT, iBT 문제풀이 시스템

기사, 공무원, 공인중개사 등 로그인 필요 없는 수백가지 시험 기출문제 문제은행 시험 자격증 족보 2024년 최신

newbt.kr

 

 

흥달쌤

흥달쌤과 함께하는 IT 채널입니다. 정보처리기사 자격증 관련된 강의 및 실무 노하우, 프로그래밍 언어(JAVA, C언어, Python) 특강 등이 진행됩니다. 앞으로 진행 예정인 동영상은 IT 관련된 이야기

www.youtube.com

 

'자격증' 카테고리의 다른 글

AWS Solutions Architect Associate (SAA)합격 후기  (0) 2024.12.22

AWS 아키텍처와 관련한 발표 영상입니다.
발표한지는 좀 됐는데 이제야 블로그에 작성하네요.

 

JWT 사용과 관련한 발표 영상입니다.
발표한지는 좀 됐는데 이제야 블로그에 작성하네요.

 

이전 포스팅에서 Issue를 중심으로 한 오픈소스 읽기 훈련에 대해 말하였습니다.

 

우당탕탕 개발 인생 첫 오픈소스 Contribution

누구나 할 수 있는 오픈소스 Contribution이전 포스팅에서 SIPE 합격 후기를 올렸었습니다.이번엔 SIPE에서 진행하는 미션의 일부인 오픈소스를 활용한 읽기 훈련에 대해 말해보려 합니다.저는 현재

masiljangajji-coding.tistory.com


이번에 선택한 오픈소스는 lombok인데요 자바진영에서 매우 높은 인기를 가지며 보일러 플레이트 코드를 줄여주는 귀인이라 생각됩니다.
항상 사용해왔던 것인데 막상 실제 코드레벨에서 어떻게 구현됐는지를 찾아본 적은 없었기 때문에 이번 기회를 통해 읽어봤습니다. 

흥미로운 Issue

Missed null checks in record constructor when non-Lombok annotations are used

 

 

[BUG] Missed null checks in record constructor when non-Lombok annotations are used · Issue #3743 · projectlombok/lombok

Describe the bug Lombok does not generate record constructor with nullability checks for a record with annotated fields - if non-Lombok annotations are used for. The following annotations are affec...

github.com

 

record에서 non-Lombok annotations 사용시 null 체크가 안되는 문제가 있다 합니다.
또 찾아보니 이와같은 이슈를 겪는 사람들이 많은 것 같습니다.

테스트 코드를 실행해보니..

실제로 null 체킹이 안되는 문제를 발견했습니다.

비슷한 Issue를 조금 더 찾아보니

record의 경우에는 Compact Constructor를 기본으로 생성하기 때문에
이런 문제가 발생한다고 합니다

근데 lombok은 record에 대해서도 null 체킹을 하니까...
lombok의 NonNull은 record에 대해서 별도 처리를 한다는 가설을 새울 수 있습니다.

 

lombok의 NonNull은 record에 대해서 추가적인 처리를 하는가?

lombok의 프로젝트 구조입니다.
core안에 익숙해 보이는 이름의 파일이 존재합니다.

우리가 사용하는 lombok 어노테이션은 src/core 아래에 있는것으로 보입니다.

lombok은 기본적으로 컴파일 타임때 AST(Abstract Syntax Tree)를 순회하면서 어노테인션을 인지하고 코드를 주입합니다.

그래서 컴파일과 관련있어 보이는 javac패키지를 확인했고
javacAST , javacASTAdatprer , javacASTVisitor 등을 확인했습니다.

 

구조를 보니 Visitor는 스펙을 명시해놓은 인터페이스고 Adapter가 Visitor를 상속받아 실질적인 동작을 하는 것 처럼 보였습니다.
이름과 visitField , visitAnnotationOnField 등의 메서드 이름으로 추측하건데
AST를 순회하는 역할을 맡고있구나! 라고 생각했습니다.

JavacAST도 확인해보니

 

 

LombokNode -> AST -> JavacAST로 이어집니다.
따라서 JavacAST가 실질적으로 SyntaxTree를 구성하며 그 Tree를 이루는것은 각각의 Node겠구나 생각했습니다.

여기까지 읽은 후 나머지 키지를 클릭해보던 중 익숙한 이름을 발견합니다.

 

어라? 이거 클래스네? -> 그럼 실질적으로 동작이 일어나나보다 그리고...

이름으로 추측하건데 JavacAST를 Adapter가 순회하면서 어노테이션 확인하면 그에 맞는
Handler가 동작해 어노테이션을 처리하는 것 같다


또한 private 메서드는 안읽고 그냥 넘겼습니다
어차피 private이면 밖으로 오픈 안한다는 소리기 때문에 public으로 열려있는 메서드만 읽으면 충분하다 생각해요

그렇게 모든 private메서드를 넘기고 처음 나오는 public는 handle메서드 입니다.

근데 이거... @override 돼있습니다 그말은 표준화된 스펙을 구현한 메서드란 소리며
이는 곧 handle메서드에서 실질적인 처리가 일어남을 의미합니다. 그렇게 쭉 읽다보면...

record에 대해서 추가적인 처리를 하는것을 볼 수 있습니다.

아마 record인 경우에는 lombok이 Modify할 수 있도록 record에 의해 생성되는 compact constructor를 사용하지 않고
따로 만들어 넣어주는 것 같습니다.

따라서 우리는 lombok의 NonNull은 record에 대해서 추가적인 처리를 해주며 다른 벤더에서 제공하는 어노테이션들은
record에 대한 추가적인 처리가 없기 때문에 이런 Issue가 발생한다는 결론을 내릴 수 있습니다.

이전 글과 마찬가지로 단서를 통해 추측하고 읽어내야 할 부분을 최소화 하여 빠르게 결론에 다달하는 읽기 연습을 하는 중입니다.

같이 보시면 좋은 발표 영상입니다.

 

'오픈소스' 카테고리의 다른 글

우당탕탕 개발 인생 첫 오픈소스 Contribution  (4) 2024.11.20

누구나 할 수 있는 오픈소스 Contribution

이전 포스팅에서 SIPE 합격 후기를 올렸었습니다.

이번엔 SIPE에서 진행하는 미션의 일부인 오픈소스를 활용한 읽기 훈련에 대해 말해보려 합니다.

저는 현재 인턴으로 근무중인데요 처음으로 일을 해보니
코드를 작성하는 시간보다 무언가를 읽는 시간이 더 큰 것 같다는 생각을 했습니다.

따라서, 한번도 해본적 없는 "읽기"훈련을 해보려 합니다.

왜 오픈소스?

제가 생각하는 오픈소스의 장점은 다음과 같습니다.

  1. 우리가 많이 사용하지만 실제 코드는 모른다
    (사용안해본 개발자가 없는 SpringBoot , React..)
  2. 이리 올라와 있는 Issue를 중심으로 읽기 가능
  3. Contribution을 통한 지식공유와 피드백

특히나 지식공유가 가능하다는게 매우 마음에 들었습니다.

제가 블로그를 운영하는 이유도 제 나름의 지식공유 목적이며
나의 경험을 통해 누군에게 도움을 줄 수 있다는 것에 큰 가치를 두기 때문입니다.

오픈소스를 고른 기준

  1. 실제로 사용해 본 것
  2. 활성화된 업데이트와 커뮤니티
  3. JVM기반 프로젝트
  4. Fork , Star 500++
  5. 실제로 Contribution 할 수 있는 것

제가 사용해봤던 서비스중 오픈소스인 것들을 리스트업했고 이중 실제로 Contribution까지 할 수 있는 것을 찾아봤습니다.
(SpringBoot, Spring Data JPA....등 정말 거대하고 복잡한 것들은 전부 제외했습니다)

또한 이미 등록돼있는 Issue를 중심으로 Contribution에 적합해 보이는 것을 찾았습니다.

 

 

#48in24: Add approaches to Parallel Letter Frequency · Issue #2710 · exercism/java

The Parallel Letter Frequency exercise on the Java track is being featured in the #48in24 challenge, which means that we expect an influx of students attempting to solve it during that week. It wou...

github.com

 

필요한 부분을 가려내는 "메타읽기"

막상 시작해보니 생각보다 읽어야 할 내용이 방대했습니다.
커밋 자체도 3000개가 넘으며 구조를 확인하기 위해서는 상당한 시간이 필요해 보였습니다.

그래서... 비슷해 보이는 PR을 확인해 봤습니다.

 

 

#48in24: Add approaches to Knapsack · Issue #2712 · exercism/java

The Knapsack exercise on the Java track is being featured in the #48in24 challenge, which means that we expect an influx of students attempting to solve it during that week. It would be nice if the...

github.com

 

.approaches 아래의 파일들이 PR로 올라온 내용입니다.

그렇게 읽어보던중 다음의 링크를 발견합니다.

링크를 좀 확인해보니 knapsack/introduction.md의 내용은
Dig deeper 아래의 내용을 담당하며

https://exercism.org/tracks/java/exercises/knapsack/dig_deeper 다음의 url을 가짐을 확인했습니다.

또한 .approaches/dynamic-programming는 Dig deeper옆에 보이는 Approaches의 내용이며 https://exercism.org/tracks/java/exercises/knapsack/approaches/recursive 다음의 url을 가집니다.

 

이를 통해...
내가 기여할 부분은 https://exercism.org/tracks/java/exercises/parallel-letter-frequency/dig_deeper 의 url을 가질 것이며

.approaches 아래에 페키지를 추가한다면
https://exercism.org/tracks/java/exercises/parallel-letter-frequency/dig_deeper/{내가 생성할 페키지이름} 의 url일 것임을
유추할 수 잇었습니다.

또한 snippet.txt는 예시코드 , content.md는 approaches의 내용을 의미하겠네요

그럼 이 Issue에 기여하기 위해 필요한 구조에 대한 이해는 끝났습니다.
내용만 작성하면 되는것이죠

 

 

Add approaches for Parallel Letter Frequency by masiljangajji · Pull Request #2863 · exercism/java

pull request Approaches for Parallel Letter Frequency, ready for review! Resolves #2710 Reviewer Resources: Track Policies

github.com

 

사실... PR만 올리면 끝날 줄 알았는데 생각보다 리뷰를 정말 꼼꼼하게 해주더라구요 그래서

코멘트를 31개 받아본건 처음인것 같은데.. 결국엔 제가 이겼습니다.

영어로 작업해야 하는 부분이 많아서 개인적으로는 시간이 좀 걸렸네요

이렇게 Contribution까지 해보니...

일하는 방식과 비슷하다는 생각을 했습니다.

  1. 거대한 코드베이스에서 내가 필요한 부분만 확인
  2. 전체 프로젝트를 읽기보다는 추측을 통한 메타 읽기
  3. 실질적인 기여


프로젝트 구조를 파악하고 코드를 읽는 훈련을 하고싶다면 오픈소스의 Issue를 중심으로 읽어내는 것이 정말 좋은 방식인 것 같습니다.

또 내가 작업한 작업물이 많은 사람들에게 공유되어 도움일 된다고 생각하면 뿌듯하기도 합니다 

https://exercism.org/tracks/java/exercises/parallel-letter-frequency/dig_deeper


같이 보시면 좋은 발표 영상입니다.

 

'오픈소스' 카테고리의 다른 글

Lombok과 Record - Null 체크 이슈 파헤치기  (3) 2024.11.20

안녕하세요 SIPE에 합격해 OT를 다녀왔습니다.
https://sipe.team/

 

SIPE

개발자들이 함께 교류하며 성장하는 IT 커뮤니티

sipe.team

 

사실 붙을거라곤 생각은 못했는데요 지원 동기를 1줄로 작성했거든요 

귀찮아서 이렇게 작성했다...기 보다는 실제로 제가 생각하는 지원동기는 저게 다였거든요
따라서 양을 채우기 위해 억지로 길게 늘여서 쓸 필요는 없겠다 생각했습니다.

난 나를 소개하는 글을 작성하는 것 뿐이고 평가는 당신들의 몫이다. 정도겠네요
서류 합격 후에 간단한 면접과 더불어 최종적으로 합격하게 됐고 OT또한 다녀왔습니다.


처음 구성원들을 만나는 시간이다보니 SIPE라는 조직에 대한 이해가 부족했는데요 만나 보고서 느낀 것은
동아리보다는 "동호회"에 가깝지 않나? 였습니다.

왜냐하면 제가 OT에서 만났던 모든 분들은 대부분 경력3~4년차의 현직자 분들이셨거든요 
실제로 이번 기수가 대학생을 받은 최초의 기수기도 했습니다.

또 구성원들의 수준또한 굉장히 높다는 생각이 들었습니다.
꿈의 직장이라 생각하는 기업에 재직중이신 분들 또한 많았고 그런 타이틀이 없다 하더라도
대학생인 저의 고민과 경험으로는 그들과 공감할 수 없는 차이가 있다고 느껴졌거든요

그러다보니 괜히 위축되고 "내가 너무 모자라 보이면 어떡하지?" 라는 생각도 들었습니다.

 

그런데... 사실 어찌보면 당연하거거든요 내가 그들과 비슷하면 대학생안하고 판교에서 개발하고있겠지...
깔끔하게 인정하기로 했습니다. 

누가 나를 멍청하게 보면 어떡하지? -> 나보다 다 똑똑한 사람 밖에 없어?? 완전 럭키비키잖아~

20살때는 술먹고 토해도 누구나 봐주듯이, 대학생 신분을 방패삼아 현업에서 질문하면 큰일날 질문을 하기로 마음먹었습니다.

이제 동아리의 첫 발을 막 디뎠는데요  앞으로 "나"다운 모습을 많이 보여주는 것을 목표로 활동할 것 같습니다.

우잉... 판교 개발자들 부럽당..



사진 첨부하고 마치겠습니다. (직접 만드셨다 들었는데 퀄리티가 좋아서 놀랐습니다)

 

+ Recent posts