예제
-
Nginx를 Istio Gateway로 expose하는 예제K8S 2023. 8. 11. 16:16
다음은 Nginx를 Istio Gateway로 expose하는 예제다. 플로우는 다음과 같다. apiVersion: networking.istio.io/v1alpha3 kind: Gateway metadata: name: nginx-gateway namespace: default spec: selector: istio: gateway # gateway 컨트롤러의 label을 명시한다. servers: - port: number: 80 name: http protocol: HTTP hosts: - "*" # 이 호스트에 대한 트래픽을 제어 --- apiVersion: networking.istio.io/v1alpha3 kind: VirtualService..
-
안드로이드: 간단한 데이터를 저장하고 싶을 때(SharedPreferences 사용예제)안드로이드 스튜디오 2020. 12. 18. 17:27
앱이 종료되면 메모리에 저장되어 있던 데이터는 사라진다. 때때로 간단한 데이터를 앱에 저장해서 쓰고 싶을 때가 있다. (예를 들면 로그인 정보) 물론 DB나 파일을 이용하면 데이터를 읽고 써서 상태를 유지할 수 있지만 SharedPreferences를 사용한다면 간단한 방법으로 필요한 데이터를 저장해 놓을 수 있다. package org.techtown.myapplication; import androidx.appcompat.app.AppCompatActivity; import android.app.Activity; import android.content.SharedPreferences; import android.os.Bundle; import android.view.View; import andro..
-
머신러닝: Loss function이란? (Multiclass SVM loss, Softmax Classifier )머신러닝 2020. 10. 1. 20:40
다음과 같이 이미 classifer가 된 결과물이 있다. 하지만 보시다시피 각각의 이미지 값에 대해서 해당 label(cat, car, frog)들은 최고의 값을 갖지 못한다. 이러한 문제점들을 개선하기 위해 만들어낸 개념이 loss function이다. (Loss를 줄이는 Optimization에 대해서는 이번 포스팅에서 다루지 않는다) loss란 쉽게 말해서 들어온 인풋 이미지가 머신러닝 결과 잘 들어 맞을수록 낮고, 반대로 잘 들어맞지 않는다면 높다. 즉, 현재 내가 판단하는게 얼마나 좋은 위치인가임을 알려준다. Loss function은 다음과 같이 나누어진다. - Multiclass SVM loss - Softmax Classifier . 위와 ..
-
안드로이드: 간단 그림판 만들기!(Canvas, Paint 클래스 사용하기)안드로이드 스튜디오 2020. 9. 23. 18:20
Canvas클래스와 Paint클래스를 이용해서 간단한 그림판을 만들었다. 메뉴를 버튼을 이용해 직선, 원, 직사각형을 그릴 수 있게 했고 서브 메뉴로 색 변경 버튼을 달아 빨강, 파랑, 초록을 선택할 수 있도록 했다. 디폴트 값은 직선, 빨강이다. 메뉴버튼을 달아서 색을 변경할 수 있다. MyShape 클래스를 추가로 설정해서 다른 그림을 그려도 지워지지 않고 남아있다. 또한 xml파일을 따로 두지 않고 클래스만으로 만들었다. package org.techtown.minipaint; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import android.content.Context; import a..
-
안드로이드: xml파일 만들어서 사용하기 (대화상자, 토스트메시지 커스텀)안드로이드 스튜디오 2020. 9. 22. 16:26
대화상자와 토스트 메시지의 xml파일을 직접 만들어서 커스텀 해보았다. (기존과는 다른 대화상자 메시지) (기존과는 다른 토스트 메시지) layout 디렉토리에 다음과 같이 dialog.xml 과 toast.xml을 만들어 주었다. package org.techtown.prac02; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatActivity; import android.app.Activity; import android.app.Dialog; import android.content.DialogInterface; import android.os.Bundle; import android.view.View;..
-
알고리즘: 예제를 풀어보자! (feat. 투자의 귀재 규식이)(Brute force, Divide and conquer)알고리즘 2020. 7. 13. 20:04
규식이는 친구들 사이에서 투자의 귀재로 알려져 있습니다. 페이스북과 인스타그램에 자신의 성과를 과시하기 때문인데요. 사실 규식이가 그 정도의 실력자는 아닙니다. 성과가 좋을 때에만 SNS에 공유해서 그렇게 비춰질 뿐이죠. 계속해서 멋진 모습을 보여주기 위해, 특정 기간 중 수익이 가장 큰 구간을 찾아내는 함수 sublist_max를 작성해 보려고 합니다. 우선 함수 sublist_max는 파라미터로 며칠 동안의 수익이 담겨 있습니다. 예를 들어서 profits가 [7, -3, 4, -8]이라면 첫 날에는 7달러를 벌었고, 둘째 날에는 3달러를 잃었고, 셋째 날에는 4달러를 벌었고, 마지막 날에는 8달러를 잃은 거죠. 먼저 이 문제를 Brute Force 방법을 이용해서 이 문제를 한 번 풀어봅시다! 1...
-
알고리즘: 그리디 알고리즘(Greedy Algorithm) 공부하고 예제 한번 풀어보자!알고리즘 2020. 7. 13. 13:51
그리디 알고리즘이란(Greedy Algorithm)이란? 뜻 그대로 탐욕스런 알고리즘이라고 생각하면 쉽다. 미래를 내다 보지 않고 당장 눈 앞에 보이는 최적의 선택을 하는 방식이다. 그리디 알고리즘은 간단하고 빠르지만, 항상 최적의 답이 보장되지는 않는다. 그래서 보통 최적의 답이 필요 없는 경우에 사용하지만 그리디 알고리즘이 최적의 답을 보장해 주는 문제도 있다. 그리디 알고리즘은 다음과 같은 조건을 만족할때 최적의 답을 보장한다. (다음과 같은 조건이 없어도 그리디 알고리즘을 사용할 수는 있다.) → 최적 부분 구조가 있을 때 문제를 부분 문제로 나누어 해결하여 기존 문제의 답을 찾아낼 수 있는 경우 → 탐욕적 선택 속성을 갖고 있을 때 다이나믹 프로그래밍처럼 답의 모든 부분을 고려하지 않고 탐욕적 ..