Loading [MathJax]/jax/output/CommonHTML/jax.js
💕
후원
본문 바로가기

분류 전체보기113

[리액트] 지뢰찾기 만들기 우선 맵을 만들어봅시다. const sz = 9; const [mp, setMp] = useState(Array.from({ length: sz }, () => Array.from({ length: sz }, () => 0))); const [ms, setMs] = useState(Array.from({ length: sz }, () => Array.from({ length: sz }, () => 0))); 지뢰가 있는 위치를 설정할 mp변수와 근처 지뢰의 개수를 설정할 ms변수를 만들었습니다. const setMap = () => { const initMp = Array.from(mp); initMp[0][2] = 1; initMp[2][1] = 1; initMp[2][2] = 1; initMp[1][.. 2022. 7. 31.
[리뷰] 2022 제1회 YCC × KUCC 교류 해커톤 후기 벌써 3번째.. 회장을 맡고 있는 고려대학교 중앙 컴퓨터동아리 KUCC와, 연세대학교 중앙 컴퓨터동아리 YCC가 함께 해커톤을 개최했습니다. 두 동아리는 몇십년 간(!) 교류를 이어오다가 잠깐 중단된 이후로 올해부터 다시 활발하게 교류하고 있어요. 외부 기업들에 컨택하고 후원받는 것은 2021 고카톤 이후로 처음인데.. 한번 해보고 나니 좀 더 수월하게 할 수 있었던 것 같습니다. 저는 6조로 참여하여 강의메이트라는 서비스를 만들었습니다. 강의메이트는 각 강의를 듣는 수강생들끼리 모일 수 있는 커뮤니티 서비스입니다. 오픈채팅이나 에브리타임 등, 폐쇄적이고 찾기 힘든 기존 강의 커뮤니티들의 단점을 보완하였습니다. 또, 질문 모아보기 탭을 이용하여 자신이 듣지 않는 수업이라도 질문에 답변해 지식을 공유할 수.. 2022. 7. 31.
[리뷰] 2022 KUCC 게임잼 후기 - 개발 이번에는 정말 운영만 하려고 했는데, 팀 배분을 한 이후 인원 변동이 생겨 결국 땜빵으로 참가하게 되었습니다. 팀명도 땜빵과 동아리원들.. 이렇게 할까도 잠깐 이야기가 나왔었네요. 아무튼 신영훈 선배님, 류한욱 선배님과 팀을 하게 되었습니다. 팀명은 나중에야 정해졌지만, 저는 민초가 싫어요가 되었습니다. 이런 팀명이 된 이유는 만든 게임이 민트초코에 관한 게임이기 때문입니다. 땜빵으로 들어온 거라 만나자마자 어떤 게임을 만들지 정해야 했습니다. 우선 프론트엔드를 제가 담당해야 했는데, 백엔드 가능 인원이 없었고 저는 프론트만 하기에도 벅차서 싱글 플레이 게임을 만들기로 했습니다. 여러 아이디어가 나왔는데 결론적으로는 제가 낸 카드형 RPG 게임이 선택되었습니다. MBTI가 S라서 상상력이 부족해 아이디어.. 2022. 5. 9.
[리뷰] 2022 KUCC 게임잼 후기 - 운영 고려대학교 중앙 컴퓨터동아리 KUCC에서 제 2회 게임잼을 개최했습니다. 사실 회장을 중임한 이유도 게임잼을 한번 더 개최하고 싶어서가 컸어요. 이전과 달리 인원이 늘어 총 11팀, 30명이 참가하였습니다. 그래서 동아리방에서 진행할 수 없었기 때문에 장소를 확보해야 했습니다. 30명 이상이 들어갈 수 있는 파티룸 중 테이블과 의자가 많은 곳을 추려 장소를 선정했습니다. 1박 2일 이상의 행사는 밤샘 대관이 가능한 곳을 찾아야 하는데 참 쉽지 않죠😅 처음에는 유스호스텔을 고려했었는데 혼숙 문제때문에 패스. 아무튼 적당한 장소를 찾아서 다행이었습니다. 인원은 딱 30명이었는데 적당했습니다. 사실 다른 부분들은 2020년 제 1회 게임잼 때 준비했던 것들을 그대로 차용해와서 크게 준비할 부분이 없었습니다. .. 2022. 5. 9.
[포스터] 동아리 행사를 위해 만든 포스터들 마지막 해커톤은 폰해커톤입니다. (개최 안 함) 2022. 3. 16.
[독립 출판] 내 만화책을 세상에 내보내기까지 회사에서 인턴 생활을 하며 겪은 재밌는 에피소드들을 꾸준히 만화로 그려 회사 블로그와 인스타그램 등에 일상툰의 형식으로 연재해왔는데요. 처음에는 장난식으로 그렸던 만화지만, 회차가 쌓이고 주변인들의 반응이 좋아 오랜 꿈이었던 출판을 해보자는 생각이 들었습니다. 우선 지금까지 그린 만화들을 편집해 인디자인으로 편찬했습니다. 기존 만화 파일을 포토샵 액션을 이용해 일괄적으로 편집했습니다. 페이지 번호도 넣고, 책 정보도 넣습니다. 그림판 만화다 보니 화질이 떨어질까 걱정했는데 인쇄해보니 글씨가 생각보다 잘 보여서 다행이었습니다. 다만 책의 안쪽 접히는 부분을 고려하지 않고 만화를 가운데에 배치했더니 보기에 조금 불편해서, 이 부분을 개선하고 다시 샘플본을 주문했습니다. 구청에 방문해 출판사를 신고하고, 만화.. 2022. 3. 4.
[후기] 첫 인턴 생활을 마치며 2021년 3월부터 2022년 2월까지 총 1년간의 인턴 생활을 끝마치게 되었습니다. 3월부터 8월까지는 휴학 후 풀타임 인턴으로, 9월부터 2월까지는 학교 비대면 수업 18학점 수강과 병행하며 파트타임으로 일했습니다. 처음 입사하고 나서는, 피그마 API를 이용해 피그마 작업물을 그대로 바닐라 자바스크립트 및 HTML, CSS 파일로 변환해주는 Figma to app이라는 프로그램을 만들었습니다. 이 프로그램을 이용해 디자인을 그대로 웹으로 컨버팅한 것이 Medimages입니다. 그 후에는 피그마에서 번역 작업을 용이하게 해주는 피그마 플러그인을 Typescript로 만들었습니다. 이 또한 Medimages에 적용되어 한국어, 영어, 스페인어를 지원할 수 있게 되었습니다. 그 후에는 회사 메인 홈페이지.. 2022. 3. 3.
[Flutter] Stateless 위젯과 Stateful 위젯 플러터에서 위젯은 크게 두 가지 종류가 있습니다. Stateless 위젯과 Stateful 위젯입니다. Stateless 위젯 불변(immutable)한 위젯입니다. 최초에 만들어져 화면에 그려지고 나면, 위젯을 삭제하고 새로운 위젯을 만들지 않는 이상 수정되지 않습니다. 그래서 생명주기(life cycle)를 거의 고려하지 않아도 괜찮습니다. material.dart 파일을 import하고 Stateless 위젯을 만들어 봅시다. import 'package:flutter/material.dart'; class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'F.. 2022. 1. 15.
[Flutter] 개발 환경 설정 및 Dart 언어의 특징 알아보기 제가 맥이 없으므로 안드로이드 개발에 대해서만 다루겠습니다. 개발환경 설정 (맥을 제외한 OS에서) Git을 설치해주세요. 여기에서 최신 버전의 안드로이드 스튜디오를 다운받아 설치해주세요. 여기에서 Flutter SDK 최신 버전을 다운받아 설치해주세요. 환경 변수의 Path에 Flutter SDK를 설치한 곳의 bin 폴더 주소를 추가해주세요. 안드로이드 스튜디오에서 SDK 매니저를 연 후 원하는 안드로이드의 버전을 설치해주세요. 터미널에서 flutter doctor --android-licenses 를 입력하고 각 항목에 동의해줍니다. flutter doctor을 입력해봅니다. 이렇게 뜨면 잘 된 것입니다. 안 된 것이 있으면 잘 고쳐봅시다. Dart 구글에서 개발한 다트는 자바스크립트의 자율성과 자.. 2022. 1. 11.
[디자인] 뉴모피즘(neumorphism), 글래스모피즘(glassmorphism) 뉴모피즘(neumorphism) https://dribbble.com/shots/9517002--Light-Mode-Simple-Music-Player 빛과 그림자, 그라데이션를 이용해 UI를 만드는 방식입니다. https://neumorphism.io/#e0e0e0 에서 css 코드를 만들어볼 수 있습니다. https://dribbble.com/shots/6629008-DailyUI-004-Calculator/attachments, https://dribbble.com/shots/9157457--Nuemorphism-Calculator-UI/attachments/1199825?mode=media 스큐어모피즘(UI 요소가 실제 세상에 있는 요소들의 세부 사항까지 반영하는 스타일), 플랫 디자인(미니멀리즘.. 2021. 12. 17.
[알고리즘] 허프만 코딩 허프만 코딩 원본 데이터에서 자주 출현하는 문자를 적은 비트, 출현 빈도가 낮은 문자를 많은 비트로 부호화해 데이터를 효과적으로 압축하는 방법입니다. Cn개의 문자로 이루어진 집합으로 두고 cC, c.freq=c의 빈도 수라고 둡니다. Q라는 freq가 key인 최소 우선순위 큐도 둡니다. HUFFMAN(C) n = |C| // n은 C의 크기 Q = C // Q를 C에 대해 초기화 for i=1 to n-1 let z = new node; // 새로운 노드 z 할당 z.left = x = EXTRACT_MIN(Q) // Q에서 최소 노드를 뽑아 x, z.left에 할당 z.right = y = EXTRACT_MIN(Q) // Q에서 최소 노드를 뽑아 y, z.right에.. 2021. 12. 16.
[클린 코드] 클린 코드 9~10 9 9.1 TDD 법칙 실패하는 단위 테스트를 작성할 때까지 실제 코드를 작성하지 않는다. 컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위 테스트를 작성한다. 현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성한다. 9.2 지저분한 테스트 코드를 쓰나 테스트를 안 하나 오십보백보다. 테스트 코드도 실제 코드 못지 않게 중요하다. 깨끗하게 짜야 한다. 테스트 코드가 지저분하면 실제 코드를 변경하는 능력이 떨어지고, 개선하기 어려워진다. 9.3 테스트 코드는 가독성이 가장 중요하다. 9.4 테스트 함수마다 개념 하나만 테스트해야한다. 각 개념마다 테스트를 쪼갠다. 9.5 F.I.R.S.T. Fast: 테스트는 빨라야 한다. 자주 돌려야 하기 때문이다. Indepandent: 각 테스트는 서로 .. 2021. 11. 6.