분류 전체보기
![[이력핏] 사용감 개선기 : Polling -> Long Polling -> WebSocket](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FcoA1fT%2FbtsO5EVhElP%2FAAAAAAAAAAAAAAAAAAAAAAQfWncYs8oO6PEDRh7wBCYLOGD4WZI9dG4InbpJo4aa%2Fimg.gif%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3D%252Fdu%252F9F0sZkHPTuZuI2DFtgsulzE%253D)
[이력핏] 사용감 개선기 : Polling -> Long Polling -> WebSocket
들어가며 안녕하세요. 백엔드 개발자 박준형입니다.😀 최근 개발중인 이력핏의 PoC 단계를 거치며, 여러 주변인으로부터 피드백을 받아 개선해 나가고 있는데요, 이번 포스트에서는 실제 사용자 관점에서 제기된 사용성 피드백을 바탕으로, 서비스 흐름을 어떻게 기술적으로 개선해 나갔는지에 대해 작성해보려 합니다. 문제 상황 이번 포스트에서 다룰 피드백은 다음과 같습니다. 이를 요약하면, 이력서를 한 번에 하나씩만 업로드할 수밖에 없고, 피드백이 끝날 때까지 아무것도 할 수 없어 불편하다. 라는 경험의 문제입니다. 문제 원인 현재 이력핏의 새 이력서 업로드 과정은 다음과 같습니다. 1. 새 이력서 업로드를 위한 모달 창 생성2. 채용 공고 URL과 이력서 파일을 입력받아 크롤링 및 텍스트 추출3...
![[이력핏] 로드밸런싱 확장기 : 가중치 기반 분산 처리](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FzMqxX%2FbtsO6jorf7R%2FAAAAAAAAAAAAAAAAAAAAAA_5Uqz1G-_SFFBRuTmDm9FS5TditOm6-YY7LfKt7BYj%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3D08k9d2RCxRLimVEGJHon6YZgXJw%253D)
[이력핏] 로드밸런싱 확장기 : 가중치 기반 분산 처리
들어가며 안녕하세요. 백엔드 개발자 박준형입니다.😀2023년 저의 목표가 '서버 구축'이었다면, 2024년 저의 목표는 '서버 확장'이었는데요. (서버 구축에 관한 포스팅은 아래에 남겨두겠습니다!)https://highandbrightdev.tistory.com/entry/홈서버-구축-서버-컴퓨터-조립-및-OS-설치 홈서버 구축 : 서버 컴퓨터 조립 및 OS 설치내 방에 내가 운영하는 나만의 서버가 있었으면 좋겠다! ... 개발을 처음 시작하면서부터 마음 한 켠에 계속 품고 있던 로망. 지난 1년 간 회사에서 백엔드 개발 인턴으로 근무하며,서비스 운영에highandbrightdev.tistory.com 올해 초 AI 기반 이력서 피드백 서비스인 이력핏 서비스를 운영하면서, 단일 서버 구조에서 멀티 서버..

홈서버 구축 : 서버 컴퓨터 조립 및 OS 설치
내 방에 내가 운영하는 나만의 서버가 있었으면 좋겠다! ... 개발을 처음 시작하면서부터 마음 한 켠에 계속 품고 있던 로망. 지난 1년 간 회사에서 백엔드 개발 인턴으로 근무하며,서비스 운영에 필요한 다양한 개발 업무에 참여했고그중 하나는 특정 서버를 직접 다루고 운영을 담당했던 일이었다. 그 경험을 계기로, 리눅스 서버를 개인적으로도 직접 다뤄보고 싶다는 생각이 들었다. 업무에 대한 이해도를 높이는 동시에 오래된 로망도 실현해보고자 작년 말, 처음으로 홈서버를 조립하고 구축했다. (이제 와서야 이렇게 기록으로 남긴다.)그 돈이면 클라우드?클라우드 서비스로 인스턴스를 띄우는게 훨씬 효율적이고 경제적인건 누구나 아는 사실. 그럼에도 불구하고, 굳이 컴퓨터를 새로 조립하면서까지 홈서버를 구축하려 했던..
[DataStructure] Dynamic Array 구현 (with Java, TDD)
DynamicArray.javaimport java.util.ArrayList;import java.util.Arrays;public class DynamicArray implements List { protected static final int DEFAULT_CAPACITY = 16; protected static final String INDEX_BOUNDS_ERROR_MESSAGE = "The index must be gte to zero and lte to size"; private int size; private int capacity; private int[] elements; public DynamicArray() { this(DEFAULT_CA..
![[Algorithm] LeetCode 670. Maximum Swap (java)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FrbmnH%2FbtsKbScSs7d%2FAAAAAAAAAAAAAAAAAAAAAIIWzTUvrm-N2axcYtZCfShAG-ctDqoQtT7fO-EHOj2B%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3D32vTAP4mBK4fIFplTbHKLrlwmYE%253D)
[Algorithm] LeetCode 670. Maximum Swap (java)
풀이 코드class Solution { public int maximumSwap(int num) { char[] numArr = Integer.toString(num).toCharArray(); int n = numArr.length; int[] maxRightIndex = new int[n]; maxRightIndex[n - 1] = n - 1; for (int i = n - 2; i >= 0; --i) { maxRightIndex[i] = (numArr[i] > numArr[maxRightIndex[i + 1]]) ? i : maxRightIndex[i + 1]..
![[Algorithm] LeetCode 63. Unique Paths 2 (java)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FeBQEQR%2FbtsGB0F5NPf%2FAAAAAAAAAAAAAAAAAAAAACdwqm4PZSIKdbjKDLfsKNzYEia1wHekfXETgi5J4GHP%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3Dd60KmOtDN6TRt1o6JDLv%252Fc1ZAH4%253D)
[Algorithm] LeetCode 63. Unique Paths 2 (java)
풀이 코드 class Solution { public int uniquePathsWithObstacles(int[][] obstacleGrid) { int m = obstacleGrid.length; int n = obstacleGrid[0].length; if (obstacleGrid[0][0] == 1) return 0; obstacleGrid[0][0] = 1; for (int x = 1; x 사고 과정 https://leetcode.com/problems/unique-paths-ii 앞서 풀었던 Unique Paths 1과 동일하지만, 중간에 장애물이 있다는 조건이 추가되었다. (이전 1편에서도 중학교 수학 길찾기 문제에서..
[AWS EC2] EC2로 클라우드 서버 생성하기
클라우드 컴퓨팅 : AWS EC2 개인적인 취향은 아니지만, 물리 서버 말고 클라우드 서비스로 서버를 쉽게 만들어 쓰는 방법도 있긴 하다. 학습자인 현재 내 위치에서 봤을 때, 구축부터 유지보수까지 뭐든 다 떠먹여주는 클라우드 서비스의 편리함이 개인적인 취향이 아니라는 뜻이다. 클라우드 서버든, 물리 서버든 상황에 맞는 적절한 인프라를 구축하고 설계하는 능력은 개발자로서의 중요한 역량이기에. 오늘은 간략하게 클라우드 컴퓨팅 서비스를 제공해주는 AWS EC2를 통해 서버를 만들어보겠다. 단일서버 생성 먼저 가장 기본적인 단일 서버를 생성해보자. 각자 구매 스펙은 자신의 필요에 맞게 구매 혹은 설치하길 바란다. 1. AWS console 가입https://portal.aws.amazon.com/b..
![[Algorithm] LeetCode 62. Unique Paths (java)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2F2jY9a%2FbtsGsWC5GkC%2FAAAAAAAAAAAAAAAAAAAAAM7dYDoHsHf6_GDdZE54iHRLIlTvTA7FehqqBwXUqCeB%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DJektmoPGe0STOEYJeblhvaqcZW8%253D)
[Algorithm] LeetCode 62. Unique Paths (java)
풀이 코드 import java.util.Arrays;class Solution { public int uniquePaths(int m, int n) { int[][] memo = new int[m][n]; for(int[] arr : memo) { Arrays.fill(arr, 1); } for(int col = 1; col 사고 과정 https://leetcode.com/problems/unique-paths/description/ 오늘은 midium 난이도 치고 상당히 쉬우면서 DP의 진가를 엿볼 수 있는 문제로 풀어보았다. 단순히 점화식만 만들면 되었던 문제.. 시작하기 앞서, 다음 constraint에 주목하면 좋..
[Algorithm] D.P 기본 : Fibonacci
오늘은 DP 본격적으로 들어가기 전, 기본 중의 기본 FIbonacci로 가자!! 특별히 내놓을 정답 코드는 없다. 여러 방면으로 생각해보고 풀어볼 수 있었던 문제. 문제 : LeetCode 509. Fibonacci Number https://leetcode.com/problems/fibonacci-number/ LeetCode - The World's Leading Online Programming Learning PlatformLevel up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.leetcode.com..
[A100C day 8] LeetCode 55. Jump Game (java)
풀이 코드//Greedyclass Solution { public boolean canJump(int[] nums) { int n = nums.length - 1; int reach = 0; for(int i = 0; i 사고 과정 굳이.. 정말 굳이 dp로 풀라면 풀 수는 있는 문제지만, dp보다는 greedy 알고리즘으로 푸는게 훨씬 직관적이고 간편했던 문제. 확실히 문제에 따라서 가장 효과적인 알고리즘을 빠르게 파악 후 적용할 수 있는 능력은 엔지니어에게 중요한 덕목인듯..!! Solution 1. Greedy우선 greedy하게 접근해보면.. 각 인덱스를 순회하며 최대로 갈 수 있는 거리를 reach 변수에 초기화해주면서 판단하면 되..
[Algorithm] LeetCode 647. Palindromic Substrings (java)
사고 과정 https://leetcode.com/problems/palindromic-substrings/ LeetCode - The World's Leading Online Programming Learning PlatformLevel up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.leetcode.com 기본적인 palindrome 문제. 다만, 해당 String이 회문인지 아닌지 여부를 반환하는 것이 아닌, 해당 문자열 내에서 회문이 될 수 있는 연속된 문자열의 조합 수를 반환해야 했던 문제! Constrai..
[Algorithm] Leetcode 200. Number of Islands (java)
풀이 코드 class Solution { private static final int[][] DIRECTION = { {-1, 0}, {1, 0}, {0, -1}, {0, 1} }; public int numIslands(char[][] grid) { int m = grid.length; int n = grid[0].length; int ans = 0; for (int y = 0; y = grid.length || x = grid[0].length) return; if(grid[y][x] == '1'){ grid[y][x] = '0'; for(int[] ..
![[Algorithm] Leetcode 1. Two Sum(java)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fb3ppa3%2FbtsD3G3igwp%2FAAAAAAAAAAAAAAAAAAAAAJooOn7PCKI1BYHBK-LKJmJC98dx97EExveIX61qzsv3%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DJDfZZK809XLr8p4GECRWZG03kaY%253D)
[Algorithm] Leetcode 1. Two Sum(java)
풀이 코드class Solution { public int[] twoSum(int[] nums, int target) { Map map = new HashMap(); for (int i = 0; i 사고 과정오늘은 무려 LeetCode 1번 문제..투썸! https://leetcode.com/problems/two-sum/ LeetCode - The World's Leading Online Programming Learning PlatformLevel up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next..
![[Algorithm] Leetcode 34. Find First and Last Position of Element in Sorted Array (java)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FkLGJB%2FbtsD0KTdTNB%2FAAAAAAAAAAAAAAAAAAAAALo6GsSbJltQMZQpfpm1zSmeJ7YZ2RnzwEwg5y8ucM7v%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DNqx7gnyn0WYyrM2FZNFJ3I%252B0%252Beo%253D)
[Algorithm] Leetcode 34. Find First and Last Position of Element in Sorted Array (java)
풀이 코드class Solution { public int[] searchRange(int[] nums, int target) { boolean isStart = true; int[] ans = new int[2]; ans[0] = getStartOrEnd(isStart, target, nums); ans[1] = getStartOrEnd(!isStart, target, nums); return ans; } public int getStartOrEnd(boolean isStart, int target, int[] nums){ int left = 0; in..
![[A100C_day 3] Leetcode 79. Word Search (java)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FcXh7HR%2FbtsDZ4EnzQJ%2FAAAAAAAAAAAAAAAAAAAAAOjJYguH7L6Fbgk1WiGBAuwIxRMfSY3tGhznFB7b0Xz0%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DuvU72HlKD25J61kFoC05VBJmEGY%253D)
[A100C_day 3] Leetcode 79. Word Search (java)
정답 코드 class Solution { private static final int[][] DIRECTION = { {-1, 0}, {1, 0}, {0, -1}, {0, 1} }; public boolean exist(char[][] board, String word) { int m = board.length; int n = board[0].length; boolean[][] visited = new boolean[m][n]; for(int y = 0; y < m; ++y){ for(int x = 0; x < n; ++x){ if(searchWord(y, x, board, visited, word)) return true; } } return false; } public boolean searchWor..
[Linux]UBUNTU SERVER - ssh 접속 구현 (외부 접속, port-forwarding, DDNS)
우분투 서버 설치 후, 이것저것 만지고 있는 도중, 매번 본체를 모니터에 연결해서 마우스, 키보드를 추가로 연결하는 과정이 너무 번거로웠다!! 외부에서(노트북으로) 서버에 접속해서 관리해주면 되지 좋지 않을까..? 에 대한 답을 ssh에서 제공해주고 있다!! (telnet도 비슷한 기능을 제공해주지만, ssh를 추천한다. 통신 과정의 암호화 여부 차이일 뿐인데, 해킹 위험을 조금이라도 줄이고 싶다면 암호화하여 통신하는 ssh가 더 안전하기 때문이다.) SSH 설치, port 변경 먼저 ubuntu server에 ssh 설치부터 해주자. sudo apt update sudo apt-get install openssh-server SSH의 기본 포트번호는 22번인데, (telnet의 경우 23번) 보안을 ..
![[A100C_day 2] Leetcode 88. Merge Sorted Array (java)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FvbFqK%2FbtsDRJeMqWv%2FAAAAAAAAAAAAAAAAAAAAAIgyqYhKYCW12qOs7UDeV-g6cu3r8jqhaejzgJ_UMnm4%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DG7musuT4A816UR0qwqMT%252F4wTEpk%253D)
[A100C_day 2] Leetcode 88. Merge Sorted Array (java)
문제 링크 https://leetcode.com/problems/merge-sorted-array/ LeetCode - The World's Leading Online Programming Learning Platform Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 문제 분석 1. 주어진 인자는 sorted array인 nums1, nums2 그리고 각각이 이들의 요소 개수인 m, n 2. 앞으로 보나 뒤로 보나 two pointer로 풀면 될 것 같다! 3. 중요한 점은 새..
![[A100C_day 1] Leetcode 704. Binary Search (java)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FdcYj77%2FbtsDKbiRW9u%2FAAAAAAAAAAAAAAAAAAAAAJRCYij3zkpMkT2vEwtjexDjDa067Ce8oM_QqCUtZFfo%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DBqnSvhXcZoCmhVarPYry%252BJrgiSI%253D)
[A100C_day 1] Leetcode 704. Binary Search (java)
문제 링크 https://leetcode.com/problems/binary-search/ LeetCode - The World's Leading Online Programming Learning Platform Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 문제 분석 1. 먼저 주어진 nums는 sorted array -> 이제 기본적으로 Binary Search가 가장 먼저 떠올라야 한다. 2. 1
알고리즘 시작!
알고리즘 시작!이번 챌린지를 통해 얻고 싶은 것은 세 가지 1. 문제를 빠르고 정확히 파악하고 그에 따른 가장 효과적인 해결책을 제시할 수 있는 능력2. 코드를 논리적, 효율적 짜는 습관3. 내가 짠 코드를 제 3자가 납득가능토록 글로 풀어낼 수 있는 소통능력 올해부터 같은 개발자를 꿈꾸는 친구와 알고리즘 스터디를 열어 함께 하게 되었는데,내년에는 블로그 차원에서 블로그 이름을 건 집단 스터디를 모집하고 싶다!! 지금 하고 있는 서버 관리도 그 때 도움이 될 것 같기도 하고!(지금 만들고 있는 서버는 아직 활용 방안을 못정해서 미정이다..일단 유입될 사람이 많이 필요해..) 모집 시 많관부..
![[PHP] 연관 배열 키값 확인 array_key_exists()](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FcjqXYo%2FbtsuGmfPhCo%2FAAAAAAAAAAAAAAAAAAAAACTmXoyYGbQhaMxXMXbb6T_n9DEm8P41hkvbuuunUXEZ%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3D5msD%252FHYaLi0IbbmLLm2qTNn3u6c%253D)
[PHP] 연관 배열 키값 확인 array_key_exists()
array_key_exists()란 PHP 에는 연관배열 내의 특정 Key값이 있는지 여부를 확인할 수 있는 함수인 array_key_exists()가 있습니다. array_key_exists(string|int $key, array $array): bool // $key : 확인할 key값 // $array : 확인할 key값이 있는 배열 주어진 키가 배열에 있으면 true를 반환합니다. key는 배열 인덱스에 대해 가능한 모든 값이 될 수 있습니다. PHP에서는 문자열형을 배열 내 요소의 인덱스로 사용할 수 있는 연관 배열(Associative Array) 를 지원합니다. 이때, 특정 Key 값이 연관 배열 내의 Key값으로 존재하는지 여부를 반환해주는 array_key_exists() 함수가 용이하..
[맥북 Unbuntu Desktop 설치 ] 가상 머신으로 맥북에 Ubuntu Desktop 설치하기(intel, arm)
최근 Ubuntu 환경에서 개발하고 있는데,, 쓰면 쓸 수록 Mac과는 다른 의미로 정이 들고 있다! 그래서 내 개인 맥북중 하나를 우분투 환경으로 세팅해 사용해보려 한다!! (조금 더 다양한 환경에서 개발하는 경험을 쌓기 위함도 있다.) Ubuntu 실행을 위한 가상 머신으로는 VMware Fusion을 사용할 것이다. 상업적 용도로 쓰지 않는 개인에게는 무료로 제공해준다! 각설하고.. 설치 시작! VMware Fusion 다운로드 먼저 해당 사이트에서 회원가입을 하자! https://www.vmware.com/ Introducing VMware Cross-Cloud Services Discover how VMware Cross-Cloud services give organizations freedom..
![[java] Stack 구현해보기(ft. LinkedList)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FJhTt6%2Fbtsmz0Fzyvi%2FAAAAAAAAAAAAAAAAAAAAAELhW7nJRn7SasTyvDZP3HrJQNJf0PIzPfZfaDGBCWyV%2Fimg.jpg%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3Dj6dpiAjBb7FuiocWoqtgkzyYPtc%253D)
[java] Stack 구현해보기(ft. LinkedList)
LIFO 구조의 Stack.. LinkedList를 활용해 Java로 구현해보겠습니다!!! LinkedList(Doubly)구현을 위한 Node 구현 class StackOfLinkedList{ private Node top; int size; class Node{ String value; Node prev; Node next; } } Node 클래스를 생성후, (Doubly Linked List로 구현할 것 이기에, prev, next 두 개의 변수를 설정해줬어요.) 가장 최근 Node를 참조할 수 있도록 Pointer 개념으로 top노드를 선언해주었습니다. 또 Stack에 담긴 값의 개수를 나타내는 변수 size도 함께 선언해주었습니다. isEmpty( ) 구현 boolean isEmpty(){ re..
![[Java] 변수(Variable)_(1) : 변수의 선언, 초기화, 종류(지역, 클래스, 인스턴스)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fc1FsuE%2FbtrXIjawr8n%2FAAAAAAAAAAAAAAAAAAAAAIs_ts56sJ1Tul9aqYB3l1odgcm64xpHB6wtBFQQp2ye%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3D0efRPFbVDtaK9ABUO3hWlGpOOv8%253D)
[Java] 변수(Variable)_(1) : 변수의 선언, 초기화, 종류(지역, 클래스, 인스턴스)
1. 변수란? 흔히 수학에서 '변하는 수'를 나타내는 변수(變數) 와 달리, 프로그래밍 언어에서의 변수(Variable)란, '값을 저장할 수 있는 메모리상의 공간'을 나타냅니다. 자바 역시 마찬가지죠. 이 변수의 특징 중 가장 중요한 것은, 하나의 변수에는 하나의 값만 저장가능하다는 점입니다. 즉, x 라는 변수에 2라는 정수형을 저장한 상태에서, 4라는 정수형을 새로 저장한다면, 기존의 2는 사라지고 4만 남게되는 것이죠. 변수 : 값을 저장할 수 있는 메모리상의 공간 변수의 특징: 하나의 변수에는 단 하나의 값만 저장할 수 있다. 2. 변수의 선언과 초기화 변수를 사용하기 위해서는 우선, 1) 선언 과, 2) 초기화 의 단계를 거쳐야 합니다. 2-1) 변수의 선언 변수의 선언은, 변수의 타입(typ..
![[Pandas] 자료구조(3): 데이터프레임(DataFrame) 정보 수정, 정렬](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FPovYW%2FbtrUh49wQt9%2FAAAAAAAAAAAAAAAAAAAAAJezW1NzcaNHErG0p1gLAftRhCb7q37psdZplZaVyVly%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DOM3xU2duLimlSZ%252FJPLYHFWbVLk4%253D)
[Pandas] 자료구조(3): 데이터프레임(DataFrame) 정보 수정, 정렬
*본 게시물은 한양대학교 컴퓨터소프트웨어학과 정소희 교수님의 수업 수강 후, 그 일부를 재구성하여 작성된 게시물입니다. * [DataFrame 예시] 앞선 게시물에서 사용했던 menu 데이터프레임을 동일하게 사용하겠다. menu = pd.DataFrame(data = {'제품명' : ['커피', '주스','밀크티'], '가격' : [5000, 6000, 6500], '판매량' : [60, 45, 30]}) [03. 데이터프레임(DataFrame) 정보 수정] 행인덱스 변경: DataFrame객체.index = [새인덱스리스트] 열 이름 변경: DataFrame객체.columns = [새컬럼명리스트] 행인덱스 변경: DataFrame객체.rename(index={기존인덱스명:새인덱스명,...}) 열 이름 ..
![[Pandas] 자료구조(2): 데이터프레임(DataFrame) 생성, 정보추출](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FbrHJio%2FbtrShHIRxuo%2FAAAAAAAAAAAAAAAAAAAAAIFYQpUAr06wVHiTJAeAr5NRv9pKrgDNv_O6rhdXq59c%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3D%252FuWO%252FsepxuuMrPot2qvubvSxgKI%253D)
[Pandas] 자료구조(2): 데이터프레임(DataFrame) 생성, 정보추출
*본 게시물은 한양대학교 컴퓨터소프트웨어학과 정소희 교수님의 수업 수강 후, 그 일부를 재구성하여 작성된 게시물입니다. * [DataFrame의 구조] 데이터프레임(DataFrame)은 행과 열로 이루어진 2차원 배열 구조로 이루어져 있다. 시리즈(Series)가 여러개 모여 구성되었다고 보면 편할 것 같다. 즉, 인덱스만을 기준으로 데이터가 분류되었던 시리즈와 달리, 데이터 프레임은 가로 행을 나타내는 '행인덱스(Row Index)' 와, 새로 열을 나타내는 '컬럼명(Columns)'을 기준으로 데이터가 분류된다. (따라서 2차원 배열 구조..) [DataFrame 예시] 다음과 같은 DataFrame을 생성하려고 한다. [Pandas 모듈 임포트] import pandas as pd :역시나 동일하게..
![[Pandas] 자료구조(1): 시리즈(Series) 제어 명령어 모음](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FrRbhv%2FbtrSmr5t8mN%2FAAAAAAAAAAAAAAAAAAAAAO6dN5E9gDjkqpcfFO6LyaFDsz1ImnU9T1iXdA61gXzW%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DSzHGgGOmTa%252Ba2UI4rYhZO5HYXkM%253D)
[Pandas] 자료구조(1): 시리즈(Series) 제어 명령어 모음
*본 게시물은 한양대학교 컴퓨터소프트웨어학과 정소희 교수님의 수업 수강 후, 그 일부를 재구성하여 작성된 게시물입니다. * [Series의 구조] 시리즈는 기본적으로 Python의 딕셔너리(Dictionary) 자료형과 구조가 유사하다. Key : Value형식으로 구성된 딕셔너리형과 같이, 각각의 데이터와 이에 대응하는 인덱스로 구성되어 있다. 결국, 시리즈는 데이터로 구성된 1차원 배열 형태!! [Series 예시] 다음과 같은 Series를 생성하려 한다. [Pandas 모듈 임포트] import pandas as pd :판다스 모듈을 alias를 통해 import 해주기 1. Series 생성 [Series 생성] 1) 인덱스 미지정 menu = pd.Series(data = ['data1', '..
![[Pandas] Pandas란 무엇이고, 왜 쓰는것일까?](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fp4TQ3%2FbtrQYOvRcWP%2FAAAAAAAAAAAAAAAAAAAAAKHdArS6s-RoegSH_0AyNH4oxJEImI_nuI0Hz9AJ5Ffs%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DottBdy%252FYuL8ggwKpz84Eu6G%252BF2M%253D)
[Pandas] Pandas란 무엇이고, 왜 쓰는것일까?
Pandas란? 데이터 분석 및 관리를 위한 Python의 라이브러리 중 하나인 Pandas. Pandas의 공식 깃헙 페이지에서는 Pandas에 대해 이렇게 소개한다. 요약하자면, 관계형또는 레이블이 된 데이터로 쉽고 직관적 으로 작업할 수 있도록 설계되었고 빠르고, 유연한 데이터 구조를 제공하는 Python 라이브러리. Pandas 공식 문서 확인하기 왜 Pandas 인가? 데이터 관리를 위한 소프트웨어에는 많은 종류가 있다. 하지만 세계적으로 가장 많이 사용되는 데이터 분석 도구는 당연 Python 계열의 라이브러리들이라고 할 수 있다. (위에 나온 예시로는 Pandas, Scipy, matplotlib들이 이에 해당한다. ) 무엇을 근거로? 다음 표를 보자. 다음은 프로그래밍 언어들의 인기 지표를..
![[CatCoDog] 마지막 : 프로젝트 회고록](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fevxlra%2FbtrJ7nR6rlC%2FAAAAAAAAAAAAAAAAAAAAAHOgeqRf04yq9ZnhDsUxrycooMmGctTdVK0T2hDpr4ZN%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DPaKni2d%252BkkBWdZqVFm4aV8nLRHM%253D)
[CatCoDog] 마지막 : 프로젝트 회고록
팀 프로젝트 CatCoDog : 반려동물 식품 판매 사이트 프로젝트 기간 : 2022년 05월 23일 ~ 2022년 06월 03일 참여 인원 Front-end : 김철회, 남하임, 안성주, 윤경연, 정재성 Back-end : 강세영, 박준형 기술 스텍 Front-end : HTML/CSS, JavaScript, React, React-Router Back-end : Python, Django, MySQL 깃헙 주소 프론트엔드 깃헙 주소 백엔드 깃헙 주소 사이트 시연 영상 팀 프로젝트 발표때 사용했던 프로젝트 시연 결과물!! 협업 도구 슬렉(Slack) 카카오톡 단톡방을 이용하려다가, 현업에서 많이 사용한다는 슬렉을 통해 의사소통을 많이 했었다. 요금제에 따로 가입하지 못해 일정 시간이 지나면 이전 대화..