์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 |
- java
- ์๋ฐ์ด๋ณด๊ณต๋ถ
- ์๋ฐ์คํฌ๋ฆฝํธ ๊ณต๋ถ
- ํ์ด์ฌ๊ณต๋ถ
- MySQL
- streamlit
- Pandas
- RESTful API
- Streamlit๊ธฐ์ด
- ์น๋์๋ณด๋ ์ ์
- ์๋ฐํ๋ก๊ทธ๋๋ฐ
- ์คํธ๋ฆผ๋ฆฟ
- ํ๋ค์ค
- ํ๋ค์ค๋ฐ์ดํฐํ๋ ์
- Streamlit๊ธฐ๋ณธ
- ํ๋ค์ค๊ณต๋ถ
- ์๋๋ก์ด๋ ์คํ๋์ค
- ์๋ฐ์ด๋ณด
- ํ์ด์ฌ
- db
- ์๋ฐ์คํฌ๋ฆฝํธ
- ์๋ฐ๊ณต๋ถ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- serverless
- ์๋ฐ
- JavaScript
- Matplotlib ๊ธฐ์ด
- ์คํธ๋ฆผ๋ฆฟ ๊ธฐ๋ณธ
- ์๋ฐ๊ธฐ์ด
- ์น๋์๋ณด๋ ๊ธฐ์ด
- Today
- Total
๋ชฉ๋ก๐คAndroid (53)
ruriruriya
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/t2ql5/btsDiOgJEIy/NRGNZerg88uJFXwyA30SQ1/img.jpg)
์๋๋ก์ด๋ ์ฑ ๊ฐ๋ฐ ์ ์นด๋ฉ๋ผ์ ์จ๋ฒ ์ฒ๋ฆฌ์ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์. 1. AndroidManifest.xml ๋งจ ์์์ ์ธํฐ๋ท ๊ถํ์ค์ ๊ณผ permission ์ค์ ์ ํด์ค๋ค. android:authorities="com.sunny.cameraapp๋ณธ์ธ ํจํค์ง๋ช .fileprovider" ์์ ๋ณธ์ธ ํจํค์ง ๋งค๋ฒ ๋ฐ๊ฟ์ผ ํ๋ค
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dgMQvM/btsC8QT6bsm/KcSHpgsrNkP0rF3RRl5Spk/img.jpg)
์๋๋ก์ด๋ ์ฑ ๊ฐ๋ฐ ์ ํ๋จ ํญ๋ฐ๋ฅผ ์ด๋ ต์ง ์๊ฒ ๋ง๋ค ์ ์๋ค. ํญ๋ฐ๋ ์ฃผ๋ก ๋ค๋น๊ฒ์ด์ ์ ๊ธฐ๋ฅ์ํ์ฌ ์ฌ์ฉ์์ ํธ์๋ฅผ ๋๋๋ค. 1. build.gradle.kts ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น ์ต์ ๋ฒ์ ์ผ๋ก ์ ๊ทธ๋ ์ด๋ ๋์ด ์์ ์ ์์ผ๋ ๋ฒ์ ๋ฒํธ๋ฅผ ํ์ธํ์ฌ ๋ณ๊ฒฝํ ์ ์๋๋ก ํ๋ค. dependencies { implementation("androidx.navigation:navigation-fragment:2.7.6") implementation("androidx.navigation:navigation-ui:2.7.6") } 2. activity_main.xml 2.1. ๋ ์ด์์ ๋ณ๊ฒฝ ConstraintLayout์ RelativeLayout์ผ๋ก ๋ณ๊ฒฝํด์ค๋ค. 2.2. BottomNavigationView ์์ฑ ๋ค๋น๊ฒ์ด..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ceGb8D/btsC30bPVKB/pCR7L8B33hVLQVSIpyPNbk/img.jpg)
์๋ฐ์์ Serializable๋ ๋ฐ์ดํฐ๋ฅผ ์ง๋ ฌํํ๋ ์ธํฐํ์ด์ค๋ค. ์ด๋ฅผ ํตํด ๊ฐ์ฒด์ ์ํ๋ฅผ ๋ฐ์ดํธ ์คํธ๋ฆผ์ผ๋ก ๋ณํํ์ฌ ๋คํธ์ํฌ๋ฅผ ํตํด ์ ์กํ๊ฑฐ๋ ํ์ผ๋ก ์ ์ฅํ ์ ์๋ค. ์๋๋ก์ด๋ ์ฑ ๊ฐ๋ฐ์์๋ Serializable ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด๋ฅผ ์ง๋ ฌํํ ์ ์๋ค. 1. ํ๋ฉด ์ค๊ณ 2. Data.java Serializable ์์ import java.io.Serializable; public class Data implements Serializable { public String name; public int age; public Data() { } public Data(String name, int age) { this.name = name; this.age = age; } } 3. MainAc..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dmtA8C/btsC303DfKl/qf5z28F4eHIZX8cwekuDnK/img.jpg)
์๋๋ก์ด๋ ์ฑ ๊ฐ๋ฐ ์ ํ์๊ฐ์ ๋๋ ๋ก๊ทธ์ธ์ ํ ๋, ์ด๋ฉ์ผ๋ก ์ ์์ ํ ์ ์๋ค. ํ์ง๋ง ์ด๋ฉ์ผ์ ์๋ชป ์ ๋ ฅํ์ ๋ ์ฌ์ฉ์์๊ฒ ์๋ ค ์ ๋๋ก ๋ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅ๋ฐ์ ์ ์๋๋ก ํด์ผ ํ๋ค. Pattern ํด๋์ค๋ ์๋๋ก์ด๋ ์ฑ์์ ์ ๊ท ํํ์์ ์ฌ์ฉํ์ฌ ๋ฌธ์์ด ํจํด์ ๊ฒ์ฌํ๋ ๋ฐ ๋์์ ์ฃผ๋ ํด๋์ค๋ค. ์ด๋ฅผ ํตํด ํน์ ํ ํ์์ด๋ ๊ท์น์ ๋ง๋ ๋ฌธ์์ด์ ์ฐพ๊ฑฐ๋ ๊ฒ์ฆํ ์ ์๋ค. ์ด๋ฉ์ผ ์ ํจ์ฑ์ ๊ฒ์ฌํ๋ ๊ฒฝ์ฐ, ์ด๋ฉ์ผ ์ฃผ์๊ฐ ํน์ ํ์์ ๋ถํฉํ๋์ง ํ์ธํ ๋ ์ ์ฉํ๊ฒ ์ฌ์ฉ๋ ์ ์๋ค. ์๋ฅผ ๋ค์ด, ์ด๋ฉ์ผ ์ฃผ์์ ํ์์ด "example@example.com"๊ณผ ๊ฐ์ ํจํด์ ๋ฐ๋ฅด๋์ง ํ์ธํ๊ณ ์ ํ ๋ Pattern ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ํด๋น ํจํด์ ์ ์ํ๊ณ ๊ฒ์ฌํ ์ ์๋ค. Pattern ํด๋์ค ์ฌ์ฉ๋ฒ Matche..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dhXHT3/btsC4el15XT/ldkcjkjAyA3KRiJFVogr51/img.jpg)
Retrofit2 ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ด์ฉํด์ POST๋ก API ํธ์ถํ์ฌ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด์. Retrofit2 ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๋จผ์ ํ๊ฒฝ ์ค์ ์ ๋จผ์ ํด์ผ ํ๋ค. ์๋ ๋งํฌ ์ฐธ๊ณ ! https://ruriruriya.tistory.com/161 [Android] ์๋๋ก์ด๋ - Retrofit2 ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ ์ํ ์ค์ ๋ฐฉ๋ฒ Retrofit์ ์๋๋ก์ด๋ ์ฑ์์ ๋คํธ์ํฌ ํต์ ์ ๊ฐํธํ๊ฒ ์ฒ๋ฆฌํ ์ ์๋๋ก ๋์์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ Square์ฌ์์ ๊ฐ๋ฐ๋์์ผ๋ฉฐ, ์๋๋ก์ด๋ ์ฑ์์ RESTful API์์ ํต์ ์ ํจ์จ์ ruriruriya.tistory.com ํด๋น Activity ์ค์ retrofit ์ฌ์ฉ์ ์ํ ๋ณ์๋ฅผ ์์ฑํ๋ค. api ํจํค์ง์ ์๋, Interface๋ฅผ ์์ฑํ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/IwJCt/btsC39x4W4V/3IIpwKEEj2NRCosTbecWW1/img.jpg)
Retrofit์ ์๋๋ก์ด๋ ์ฑ์์ ๋คํธ์ํฌ ํต์ ์ ๊ฐํธํ๊ฒ ์ฒ๋ฆฌํ ์ ์๋๋ก ๋์์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๋ค. ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ Square์ฌ์์ ๊ฐ๋ฐ๋์์ผ๋ฉฐ, ์๋๋ก์ด๋ ์ฑ์์ RESTful API์์ ํต์ ์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ๊ณ ๊ตฌํํ๋ ๋ฐ ์ฌ์ฉ๋๋ค. Retrofit์ ์ฃผ์ ๊ธฐ๋ฅ API Interface ์ ์: Retrofit์ ์ฌ์ฉํ๋ฉด REST API์ ์ํธ์์ฉํ๊ธฐ ์ํ ์ธํฐํ์ด์ค๋ฅผ ์ ์ํ ์ ์๋ค. ์ด ์ธํฐํ์ด์ค์์ API ์๋ํฌ์ธํธ, HTTP ์์ฒญ ๋ฉ์๋, ์์ฒญ ์ ํ์ํ ๋งค๊ฐ๋ณ์ ๋ฑ์ ๋ช ์ํ ์ ์๋ค. HTTP ํด๋ผ์ด์ธํธ ์ค์ : Retrofit์ OkHttp์ ํจ๊ป ์ฌ์ฉ๋ ์ ์์ด, HTTP ํด๋ผ์ด์ธํธ๋ฅผ ์์ฑํ๊ณ ์ค์ ํ๋ ๋ฐ ๋์์ ์ค๋ค. ์ด๋ฅผ ํตํด ๋คํธ์ํฌ ์ฐ๊ฒฐ ์ค์ , ํ์์์ ๋ฑ์ ๊ด๋ฆฌํ ์ ์๋ค. ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bU698P/btsC4dNO3Wx/BqlrTwgaialUe7gQIpo1xK/img.jpg)
ํํ๊ณ API๋ฅผ ์ฌ์ฉํ๋ฉด์ ์ํฌ๋ฆฟ ํค๋ฅผ Volley Header์ ๋ฐ์ดํฐ๋ฅผ ์ธํ ํด๋ณด์. 1.Config ํจํค์ง - config.java ์์ฑ ์๋๋ก์ด๋ ์ฑ์์ Config.java ๋๋ Constants.java์ ๊ฐ์ ํ์ผ์ ์ฑ ์ ๋ฐ์ ๊ฑธ์ณ ์ฌ์ฉ๋๋ ์์, ์ค์ ๊ฐ, ํค, URL ๋ฑ์ ๋ด๋ ๋ฐ ์ฌ์ฉ๋๋ค. ์ด ํ์ผ์ ์ฑ์ ๊ตฌ์ฑ์ ๊ด๋ฆฌํ๊ณ ๋ณ๊ฒฝ์ด ํ์ํ ๊ฐ๋ค์ ํ ๊ณณ์ ๋ชจ์๋์ด ๊ด๋ฆฌํ๊ธฐ ์ฝ๊ฒ ํ๋ค. 2. config.java ๋ค์ด๋ฒ ํด๋ผ์ด์ธํธ ์์ด๋์ ์ํฌ๋ฆฟ ํค๋ฅผ ์ด๋ค. ์ด๋ ๋ณ์๋ช ์ ๋๋ฌธ์์ ์ธ๋๋ฐ๋ฅผ ์ฌ์ฉํ๋ค. public class Config { public static final String X_NAVER_CLIENT_ID = "X-Naver-Client-Id"; public static final..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bJZIuZ/btsC4uaIaTR/PUsb80ps36SvEDzACWQaM1/img.jpg)
Volley ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํด์ POST ๋ฐฉ์์ผ๋ก body์ json์ ๋ณด๋ด๋ณด์. ํํ๊ณ API๋ก ์งํํ๋ค. 1. ๋ฒํผ ์์ฑ ๋ฐ setOnClickListener ํจ์ ์์ฑ ๋ฒํผ์ ๋ง๋ค๊ณ setOnClickListener ํจ์๋ฅผ ๋ง๋ ๋ค. ๊ทธ๋ฆฌ๊ณ onClick ํจ์ ์ค๋ฒ๋ผ์ด๋ฉ button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { } }); 2. ์ ๋ณด ๊ฐ์ ธ์ค๊ธฐ ์ด๋ค ์ธ์ด๋ก ๋ฒ์ญํ ์ง ์ ๋ณด๋ฅผ ๊ฐ์ ธ์จ๋ค. public void onClick(View v) { // 1. ์ด๋ค ์ธ์ด๋ก ๋ฒ์ญํ ์ง์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์จ๋ค. int radioButtonId = radioGroup.getCheckedRadioBut..