전체 글

개발은 좋은데 뭘로 개발할까
알고리즘 문제/BOJ (Python3, C++)

[백준] 17371 - 이사

www.acmicpc.net/problem/17371 17371번: 이사 $(\frac{2}{3}, \frac{1}{3})$으로 이사를 가면 가장 가까운 편의시설은 (0, 1)으로 거리는 $\frac{2\sqrt{2}}{3}$이고, 가장 먼 편의시설은 (-4, 1) 혹은 (4, -3)으로 거리는 둘 다 $\frac{10\sqrt{2}}{3}$이다. 두 거리의 www.acmicpc.net 그리디 알고리즘 연습문제로 풀게된 '이사' 문제이다. 고민끝에 다른 분의 풀이를 봤다. burningjeong.tistory.com/293 17371 이사 이런 문제가 기하인가? 원 공식이랑 비슷하니 원을 사용하나? 고민 많이 했는데 그리디 문제였다. 길이의 평균을 구하는 거라 집이 편의점 위에 가도 값의 차이는 없다. ..

Android/Java

[안드로이드] getWidth() 와 getMeasuredWidth()

안드로이드 뷰의 getWidth 메소드와 getMeasuredWidth 메소드의 차이를 정리하고자 합니다. 본 메소드의 차이점을 명확하게 이해하기 위해 EditText를 활용해보겠습니다. 커스텀 레이아웃에 EditText를 넣고, 레이아웃의 width 값은 wrap_content로 EditText의 가로폭에 맞춥니다. 그러면 EditText 내부의 값이 바뀔 때마다 커스텀 레이아웃의 width 값이 달라집니다. 이때 값이 바뀌고나서 바뀐 width값을 가져오는 과정을 보면 두 메소드의 차이를 명확하게 이해할 수 있습니다. 사용한 코드와 레이아웃은 현재 진행중인 개인프로젝트에 사용된 소스코드의 일부입니다. 커스텀 레이아웃의 xml 파일은 다음과 같습니다. EditText의 값이 바뀔 때마다 변경된 커스텀 ..

Android/Java

[안드로이드] Constraint Layout 동적 생성 후 동적으로 뷰 추가하기

Constraint Layout을 동적으로 생성한 후에 동적으로 뷰를 추가해보겠습니다. 이걸 해보겠다고 8시간을 구글링 했는데 결국 스택오버플로우에서 답을 찾았습니다. (앞으로 구글링은 영어로 해야하려나 봅니다...ㅋㅋ) stackoverflow.com/questions/45263159/constraintlayout-change-constraints-programmatically ConstraintLayout: change constraints programmatically I need help with ConstraintSet. My goal is to change view's constraints in code, but I cant figure out how to do this right. I hav..

개인 프로젝트/[2021] 코드악보 공유APP

7. 악보 검색 / 등록 페이지 제작 (5) - 악보 추가 기능 만들기(1)

개인적으로 구상에 가장 많은 시간을 쏟았던 부분이다. 지난 포스팅이후로 지금 포스팅을 쓰는 시점까지 계속 구상만 했다.. 처음에 UI를 참고하려고 했던 어플리케이션은 Chordify 라는 앱이다. 박자칸을 나눠두고 각각의 칸에 코드를 적어둔다. 노래가 나오면 노래에 맞게 박자가 이동하며 코드가 적혀있는 칸의 배경이 바뀐다. 이 앱의 단점은 몇가지가 있다. 사실 지금 만드는 앱을 구상하게된 계기이기도 하다 1. 유튜브 음원으로부터 추출한 코드의 정확도가 떨어진다. 2. 코드가 단순하다. 3. 박자가 단순하다. 4. 코드와 박자를 수정할 수 없다. 그래서 맨 처음 생각한 것은 1. 음원에서 추출하지 말고 집단지성을 이용하자. 2. 더 복잡한 코드를 입력할 수 있게 하자. 3. 더 복잡한 박자에 맞게 입력할 ..

개인 프로젝트/[2021] 코드악보 공유APP

6. 악보 검색 / 등록 페이지 제작 (4) - 검색기능 구현 & 악보 뷰어 제작

악보의 세부 내용을 입력받기 전에 간단하게 검색부터 후딱 구현해보았다. 우선 검색 버튼의 이벤트를 읽어올 리스너를 달아주고, 검색 이벤트가 발생했을 때 검색을 수행할 코드를 작성하였다. @Override public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) { super.onCreateOptionsMenu(menu, inflater); inflater.inflate(R.menu.menu_tab_sheet, menu); mSearch = menu.findItem(R.id.tab_sheet_top_search); SearchView searchView = (SearchView)mSearch.getActionVie..

개인 프로젝트/[2021] 코드악보 공유APP

5. 악보 검색 / 등록 페이지 제작 (3) - DB연동하여 데이터 추가/조회하기

이제 본격적으로 악보를 추가하고, 현재 DB에 존재하는 악보를 조회하는 기능을 추가하고자 한다. 2번째 포스팅에서 테스트했던 내용을 실제 기능으로 옮기는 것으로 볼 수 있다. 우선 데이터를 추가하기 위해 상단 액션바에 검색버튼과 추가 버튼을 넣어주었다. 검색 아이콘과 추가 버튼 아이콘을 어떻게 가져올까 고민하다가 검색의 경우 안드로이드에서 기본으로 제공하는 기능을 쓰기로 했다. 팔레트에 이렇게 'Search Item' 이 있다. 이 아이템을 활용하면 검색 아이콘이 자동으로 만들어지고, 검색 아이콘을 클릭하면 상단바에 검색창이 생성된다. 검색창에 검색어를 입력하고 키보드의 돋보기 아이콘을 누르면 검색이 된다. 상단 액션바의 메뉴 리소스로 들어간 xml 코드이다. 아이콘의 경우 안드로이드에서 기본으로 제공하..

개인 프로젝트/[2021] 코드악보 공유APP

4. 악보 검색 / 등록 페이지 제작 (2) - 프래그먼트에 리사이클러 뷰 추가

학교 수업이 끝나고 저녁을 먹고나서부터 5시간을 넘게 씨름한 끝에 첫번째 탭에 프래그먼트를 넣고, 프래그먼트에 리사이클러 뷰를 넣는 것을 성공했다. Do It 안드로이드 프로그래밍의 예제 코드를 거의 베끼다시피해서 만든 앱이지만, 익숙해지면 혼자서도 곧 만들 수 있을 것 같다. 리사이클러 뷰에는 카드뷰를 활용해 앨범아트, 노래제목, 가수 3가지의 정보를 저장하도록 하였다. 나중에는 노래의 원키를 같이 저장하는 것을 고려중이다. 첫번째 악보탭의 xml 코드는 다음과 같이 바뀌었다. 프레임 레이아웃을 틀로하여 프래그먼트를 동적으로 생성하여 넣도록 하였다. 이 코드는 첫번째 탭에 들어가는 리사이클러 뷰의 xml 코드이다. package com.everdu.chordshare; import androidx.an..

Infra/오라클 클라우드

오라클 클라우드(Oracle Cloud)로 SVN 개인서버 만들기

오라클 클라우드로 개인 svn 서버 만드는 방법을 정리해보고자 한다. 다른 여타 클라우드와 사용법은 비슷하다. 오라클 클라우드로 가상 머신을 만드는 방법은 이미 많은 정보글이 올라와있어 정보를 찾는데 큰 어려움은 없었다. 오라클 클라우드로 원격 접속, SVN만들기를 하면서 포트의 개념을 좀 더 몸으로 이해할 수 있었다. 우선 서버에 svn을 설치해야 한다. itlearningcenter.tistory.com/entry/%E3%80%90SVN%E3%80%91%EC%84%9C%EB%B2%84-%EC%84%A4%EC%B9%98-%EB%B0%8F-%EC%A0%80%EC%9E%A5%EC%86%8C-%EC%84%A4%EC%A0%95?category=846302 【SVN】서버 설치 및 저장소 설정 안녕하세요. 김두규..

개인 프로젝트/[2021] 코드악보 공유APP

3. 악보 검색 / 등록 페이지 제작 (1) - 바텀 네비게이션 추가

전에 샀던 Do It 안드로이드 프로그래밍 책 내용과 인터넷을 검색하면서 공부한 내용을 토대로 버텀 네비게이션을 추가하였다. activity_main.xml 파일 코드는 다음과 같이 하였고, 하단 탭은 단순하게 '악보, 그룹, 마이페이지' 3개로 나누었다. 악보 탭에서는 악보의 작성과 검색을 할 수 있도록 만들고 그룹 탭에서는 같은 악보집을 공유할 유저들의 그룹을 만들 수 있고 마이페에지 탭에서는 내 정보와 내가 담은 악보, 나만의 악보집을 관리할 수 있도록 할 예정이다. 그래서 res/menu 폴더에 들어있는 bottom_nav_menu.xml 파일의 코드는 다음과 같다. 아래는 현재까지의 코드를 적용했을 때의 실행결과이다. 하단 탭이 선택되지 않았을 때는 정보를 알 수 없다는 점, 하단 탭에 아이콘이..

개인 프로젝트/[2021] 코드악보 공유APP

2. 안드로이드로 DB에 데이터를 저장하는 테스트

webnautes.tistory.com/828 Android PHP MySQL 예제 - 데이터베이스에 데이터 입력하기 안드로이드 앱이 PHP 프로그램을 매개로 하여 MySQL 데이터베이스 서버에 데이터를 저장하는 간단한 예제입니다. 1. Apache2, MySQL, PHP7 설치 2. 데이터베이스 및 테이블 생성 3. 웹브라우저로 PHP 동작 webnautes.tistory.com Do It! 안드로이드 프로그래밍으로 안드로이드를 조금 공부해보고 예제만 따라서 몇번 만들어봤을 뿐, 제대로 앱을 만들어본 적이 아직은 없기 때문에 위 사이트를 참고하여 테스트해보았다. 위 사이트에서는 Apache를 사용했는데, 나는 Nginx를 사용해서 과연 될까 걱정이 되었지만 다행히 작동이 잘 되었다! 위 게시글을 참고하..

에버듀
Blog. 에버듀