Projects 25

개인앱 배포하고 실사용자 실제로 만난썰

방학에 앱을 하나 혼자서 만들었었다 (https://star-peanuts.tistory.com/131)대학생 등하교 택시 엔빵앱이라고 보면 된다.내가 등하교하면서 버스에 끼는게 정말 너어어무 힘들었어서 이걸 조금이라도 개선해보고 싶었다. 그리고 이왕 만든 김에 에브리타임에 홍보글을 하나 쓰게되는데... 이게 추천을 거의 250개를 받으면서 완전 핫게에 가버렸다 그리고 그 하루만에 택시메이트에 회원가입한 학우님들이 170명이 넘어가게 된다... 학교 이메일로 인증 후 가입해야 해서 정말 귀찮은 과정일텐데 이걸 해주신 학우분들 한분한분께 정말 감사했고, 내가 그만큼 누군가에게 필요한 앱을 만들었다는게 너무 기뻐서 밤에 잠을 못잤다 그리고 다음날.. 택시메이트를 아무리 새로고침해도 올라오는 글이 없어서 좀 ..

[택시메이트] 대학생 택시공유앱 출시

나는 북한산 바로 밑에있는 학교에 다니고있다.. (공기가 정말 맑다 ^^)우리 학교로 들어오는 버스 노선이 극히 제한되어있어서 등하교때마다 사람들사이에 정말 납작하게 끼어서 다녀야하고 정말 너무너무 힘들었다... (지옥의 7211, 1213, 171......) 택시를 타고 다닌다면 진짜 좋겠다고 생각했지만 용돈 받아쓰는 대학생에게 택시비는 넘 부담스러웠다.. ㅜ^ㅜ그래도 만원 지하철을 타고 만원 버스로 갈아타서 학교다니는건 정말 너무 힘들었다...하지만 이대로 계속 졸업까지 매일 고통받으며 등하교를 할 수는 없었다!! 그때 문득 이런 생각이 들었다.내가 사는 곳에 사는 국민대 학우들이랑 택시비를 엔빵해서 다니면 얼마나 좋을까? 그래서 이걸 실행에 옮겼는데,,, 바로 학교별로 모여서, 등하교시에 원하는 ..

캡스톤 졸업 프로젝트 (2024.02~06) +앱스토어 138위로 차트인+_+

2월부터 시작해서 한학기동안 열심히 달린 학교 졸업 프로젝트가 끝났다...!그런데 팀원들과 마음이 너무 잘 맞아서 방학동안 UI 개선하고 2학기에 실제로 운영을 해보기로 해서, 회고록 겸 스스로를 격려하기 위한 목적으로 글을 작성한다! +_+ 어느 프로젝트든 그렇지만 팀원 잘 만나는게 정말 중요한데, 역대급으로 마음이 잘맞고 개발도 잘하는 팀원들을 만나서 팀장으로서 너무너무 감사한 한학기였다. 어떤 문제가 생겨도 항상 든든하게 같이 고민해주는 웅배오빠, 마르지않는 아이디어 뱅크 홍현이, 우리팀의 화기애애한 분위기 담당 동윤오빠한테 이글을 통해 함께해줘서 늘 고맙다는 말을 전하고싶다. 일단 우리 팀의 주제는 학과 중심 커뮤니티 서비스로, 전국의 대학생들이 학과별로 묶여서 소통할 수 있는 어플인데, 내 개인..

Postman environment에 Response값을 등록하는 방법

jwt등 토큰을 활용한 인증정보를 요청에 담아 보낼 때 헤더에 하나하나 담아 전달해도 되지만 더 편리한 방법이 있다. 바로 Postman environtment에 환경 변수를 등록해놓고 사용하는 것이다. 아래는 응답으로 들어온 토큰을 환경변수에 저장할 수 있게 해주는 Test scripts이다! 1. 토큰이 body에 담겨온 경우 pm.environment.set("accessToken", pm.response.json().accessToken); pm.environment.set("refreshToken", pm.response.json().refreshToken); 2. 토큰이 header에 담겨온 경우 pm.environment.set("accessToken", pm.response.headers...

[Thanks] 플러터 앱 출시 후기

평소에 플러터를 한번 배워보고싶다 생각만 하다가 이번 방학에 한번 공부해봤다. 그런데 배우다보니까 이게 생각보다 너무 재밌고 좋아서 개인적으로 만든 앱을 출시까지 해보게 되었다. 땡스는 하루의 감사한일을 적고 월별로 조회할 수 있는 아주 간단한 앱이고, 플러터로 개발했기 때문에 애플 앱스토어와 구글 플레이스토어 양쪽에 모두 올릴 수 있었다..! 다운로드는 아래 링크에서 가능하다! https://apps.apple.com/kr/app/%EB%95%A1%EC%8A%A4/id6458731401 ‎땡스 ‎* 주요 기능 안내 * 1. 홈 - 캘린더를 통해 날짜를 선택하고 우측 하단의 +버튼을 통해 오늘의 감사한 일을 기록할 수 있어요. - 생성된 감사카드를 클릭하면 수정과 삭제가 가능해요! 2. 모아보 apps...

학교 공지사항 웹 크롤링 하기

학교 정보를 편리하게 제공해주는 웹사이트를 만들면서, 사용자의 전공에 맞춰서 해당학과의 공지사항을 우리 서비스의 메인페이지에서 보여주려고 했다. 그래서 학과별 홈페이지의 공지사항을 크롤링할일이 생겼는데 생각보다 재밌었다!! 아래는 예시 코드이당 import re import requests from bs4 import BeautifulSoup as bs from rest_framework.generics import ListAPIView from rest_framework.response import Response # 예술대학 (음악학부, 미술학부, 공연예술학부) def arts(self): result = [] baseUrl = 'https://art.kookmin.ac.kr/community/not..

국민은행 소프트웨어 경진대회(2022.07.17~2022.09.18)

이번 여름방학에 아이디어톤 끝나고 한달정도 있다가 국민은행 소프트웨어 경진대회 공모전을 발견하고 너무 출품해보고싶어서 동아리 친구들을 꼬셔서 플젝을 같이 했다! 백엔드 파트로 drf를 처음 써보는 플젝이었는데 공부할만한 한국어 자료가 엄청 많지는 않아서 처음에 공부하는 단계에서 좀 어려웠는데, 그래도 여기저기 나와있는 강의 이것저것+폭풍검색+질문으로 어떻게 잘 마무리했다ㅋㅋㅋㅋㅋㅋ 나도 나지만 다른 팀원들도 거의 drf나 리액트 처음 써봐서 고생이 많았는데 그래도 다같이 마지막까지 안놓고 열심히 해줘서 너무 고마운 마음이 든다. 솔직히 개강하기 전에 끝나는게 목표였는데 개강을 넘겨버려서 플젝이 흐지부지될까봐 좀 걱정했었는데 다들 마지막까지 같이 열심히 작업해서 제출까지 무사히 할 수 있었던것같다. 우리는..

생활코딩 리액트 2022 ver (2)

* 본 포스팅은 생활코딩 리액트(2022)의 요약본입니다! 강의 링크는 포스팅 아래에 첨부하겠습니다 ^__^ **useState 추가개념 내가 상태로 만드려는 데이터가 원시타입일 경우에는 지금까지 하던것처럼 그냥 하면된다. 그런데 데이터가 범객체(객체, 배열 등)인 경우에는 좀 다른 방식으로 진행해야하는데 우선 데이터를 복제해놓고(newValue), 복제한 데이터를 변경한다. 다시말해 원본 데이터(value)를 바꾸는 것이 아니라, 복제본을 바꾸는 것이다. 그리고 setValue에 newValue를 넣어주면 그 때 비로소 컴포넌트가 재실행된다. 리액트는 setValue를 호출했을때, 원본 데이터와 새로운 데이터가 같은 데이터인지를 확인하고 만약 같다면 굳이 컴포넌트를 다시 렌더링하지 않는다. 그래서 배열..

생활코딩 리액트 2022 ver (1)

* 본 포스팅은 생활코딩 리액트(2022)의 요약본입니다! 강의 링크는 포스팅 아래에 첨부하겠습니다 ^__^ 리액트란? 사용자 정의 태그를 만드는 기술이다! 이 사용자 정의 태그를 리액트에서는 '컴포넌트'라고 부른다. import React from "react"; import "./style.css"; function Header() { return ( Header! ) } function Nav() { return ( 1.html 2.css 3.js ) } function Article() { return ( Hello! Welcome to my Blog! ) } function App() { return ( ); } export default App; props html태그의 속성과 같은 개념을 리..

다차원 배열의 복제

자바에서 다차원 배열의 복제는 최상위 1레벨만 수행한다. 예를 들어 1차원배열의 복제를 생각해보면, int[] a = {1, 2, 3}; int[] b = a.clone(); 이 경우에 b는 a의 배열을 공유하는 것이 아니라 복제한다. (깊은 복사, Deep copy) int[][] a = {{1, 2, 3, 4}, {5, 6, 7}}; int[][] b = a.clone(); // 1차원배열만 복제되어 b[0], b[1]의 주솟값만 따로가지고, 그 아래 레벨의 배열은 복제되지않고 공유된다. 하지만 2차원 배열에서는 최상위 1레벨 즉, 1차원만 복제하고 그 아래 레벨에 대해서는 그냥 공유만 한다. (얕은 복사, Shallow copy)