본문 바로가기

분류 전체보기117

SwiftUI TextField 에서 placeholder color 변경하기 안녕하세요 오랜만에 글을 올립니다~ 그동안 나이만 먹고 살림살이는 나아지지 않아 슬프지만.. 오늘도 저처럼 힘겨운 날을 보내고 계실 개발자분들을 위해 조금이라도 힘내시라고 작은 지식 하나 공유해 봅니다 이번 포스팅은 SwiftUI TextField 에서 겪은 삽질? 에서 비롯되었는데요.. 문자를 입력하기 전 디폴트로 뜨는 희미한 도움말인 placeholder 의 글자색이 변경이 안되는 겁니다!! UIKit에선 오래전부터 알려진 방식으로 손쉽게 할수 있었는데, SwitfUI 이넘은 아직 생긴지 얼마 안되서 그런지 구글신의 힘도 미약하고, 잘 안되서... SwiftUI의 특성을 최대한 이용해 아래와 같이 만들어 봤습니다. textfield costom 뷰... import SwiftUI struct Plac.. 2022. 7. 29.
View를 서서히 나오고 사라지게 하는 간단 방법 Activity를 전환할때 서서히 나오고 사라지는 등의 애니메이션을 넣을 수 있다 당연히 Activity가 아닌 일반 View 도 가능하다 하지만 View 에서는 한가지 주의할 점이 있다. Activity는 전환 애니메이션을 마치면 자동으로 생성되거나 없어지지만 View는 그렇지 않다는 것이다. 즉, 애니메이션이 시작 또는 끝날때 View를 부모뷰에서 빼고 넣거나 보이게 또는 보이지 않게 처리 해주어야 한다. 애니메이션을 불러와 시작하는 코드 //나오기 fun startAnimationWithShow(context: Context, view: View, id: Int) { view.visibility = View.VISIBLE //애니메이션 전에 뷰를 보이게 한다 view.startAnimation(An.. 2022. 3. 13.
지성,행동,성장 ... 착한 사람이 이긴다 여차여차해서 A+에셋(보험관련 금융사)에서 우리 아이템을 발표 할 기회가 있었다. 물론, 좋은 결과는 없었지만 뜻밖에도 책을 선물받았다. 착한 사람이 이긴다 ... A+그룹의 관근호 회장님의 책이었다. 마침 읽을책을 한권 사야겠다고 생각하던차여서 바로 읽어보았다. 아무래도 직접 경험하신 보험과 회사 이야기가 많았다. 그리고 적절한 비유를 성경 이야기로 덧붙여 설명한것도 인상적이었다. 착한 사람이란 그저 이타적인 사람일까? 도와주었는데 오히려 피해만 주었다면? 내 식구는 외면하고 남만 도와준다면? 과연 착하다고 할 수 있을까? 그렇다. 이것은 그냥 착한척 하는 멍청한 호구다 착해질려면 남을 도울정도로 지성과 능력을 갖추어야 한다. 또한, 행동할 줄 알아야한다. "행동하지 않는 양심은 악의 편이다." 대통령.. 2021. 8. 15.
어떤 주식이 오를까? 알수 없다... 현명한 투자자 1년전에 읽었던 책인데 이제야서 리뷰를 올린다. 그동안 새 개정판도 나왔다고 하는데.. 요즘 투자에 대한 관심이 높긴 한것 같다. 뭐, 워낙 유명한 투자 고전 서적이기도 해서 겠지만ㅎㅎ 이 책은 워런버핏의 스승으로 더 알려진 벤저민 그레이엄의 명저이다 또한 가치투자를 창설한 분이 바로 이분이니, 가치투자 교과서라고도 할수 있다. 내용이 길어지면 지루할테니 내가 가장 주목한 부분이자 가장 핵심이라고 생각 했던 챕터 2곳만 소개하겠다. 첫번째는 7장 "적극적인 투자자를 위한 포트폴리오 전략: 긍정적인 면" 이다. 여기서 저자가 말하고자하는 바는 공식에 의한 투자 시기 선택은 불가능하다는 것이다. 즉, 우리가 차트 분석을 해서 지금이 살때다!! 하는건 그렇게 믿고 싶을뿐이지 확률적으로는 5:5... 맞으면 좋.. 2021. 8. 1.
seekbar로 만든 진행바에 터치가 안되게 하기 진행바를 seekbar로 만드는 경우, 터치 했을때 바가 움직여 버린다. 다음과 같이 간단히 막아버리자 class TouchlessSeekBar: SeekBar { private var seek: Int constructor(context: Context) : super(context) constructor(context: Context, attrs: AttributeSet) : super(context, attrs) constructor(context: Context, attrs: AttributeSet, defStyle: Int) : super(context, attrs, defStyle) init { seek = 0 thumb = ColorDrawable(Color.TRANSPARENT) //터치아.. 2020. 3. 24.
전문경영인?의 탄생... 종횡무진 서양사1 서양과 동양의 차이는 어디서 왔을까? 순전히 나의 관심사 안에서 찾아보았다. 책 속의 내용중 일부를 정리해 가면서 살펴보자 이집트에서 메소포타미아까지의 초승달 지역을 오리엔트라고 하는데 여기서 서양의 역사가 시작된다. 아프리카의 이집트와 메소포타미아의 히타이트가 맞붙은 세기의 전쟁에서 세계 최초의 국제조약(여기서 서양의 조약 문화가 시작된다)이 이루어지고, 500년 후 강력한 군사국가 아시리아가 최초의 통일을 이룬다. 아시리아의 뒤를 이은 페르시아는 대제국을 건설하지만, 도시국가(폴리스) 연합체인 그리스와의 전쟁에서 패배하면서 문명의 중심은 그리스로 넘어간다. 동 지중해를 장악한 그리스는 아테네를 중심으로 특별한 번영을 누린다. 민주정의 탄생이 그것이다. 사실 동양의 중국처럼 확실한 구심점이 없어서 가능.. 2020. 2. 26.
날짜 텍스트에 일수를 더해보자 우리는 종종 string형 날짜에 int형 일수를 더하는 작업을 하게 된다. 이때, 다음과 같이 간단한 함수를 하나 만들어 사용하자 코틀린으로 작성했다. fun afterDate(date: String, day: Int, pattern: String = "yyyy-MM-dd"): String { val format = SimpleDateFormat(pattern, Locale.getDefault()) val calendar = Calendar.getInstance() format.parse(date)?.let { calendar.time = it } calendar.add(Calendar.DAY_OF_YEAR, day) return format.format(calendar.time) } date에 날짜 .. 2020. 1. 31.
Int 난수 함수로 Float 난수 깔끔하게 발생시키기 php 에는 float 난수를 발생시키는 함수가 따로 없다. 그래서 int 난수 함수인 rand() 함수를 이용해 float로 변환해야 한다. 다음은 float 변수형의 최소, 최댓값을 인수로 받아 float 난수를 반환하는 함수이다. 자주 사용할것 같아 만들어 보았다. function randOnFloat($min, $max) { //최소,최대값중에 소수점 자리수가 더 큰쪽을 선택 $radix_min = radix($min); $radix_max = radix($max); $radix = $radix_min[front] > $radix_max[front] ? $radix_min : $radix_max; //입력된 float값을 int값으로 변환후 int난수를 발생시키고 다시 float로 변환한다 ret.. 2019. 12. 26.
우리 역사속 일상과 상상 사이... 한국괴물백과 불확실한 미래에 대한 작은 위로로써 공상은 오랫동안 인류와 함께 했다. 두려움은 무지에서 온다는 말처럼 무서운 괴물은 아직 알수 없는 것에서 생겨나기 마련이다 그래서 옛날 사람들이 특히, 우리 선조들이 일상에서 어떤 어려움을 겪어 왔는지 괴물 이야기를 통해 알수 있다. 농업사회에선 역시 흉년이 가장 큰 어려움이 아니었을까? 흉년이나 풍년에 관한 괴물들이 많이 나온다. 죽음은 옛날이나 지금이나 큰 두려움이다. 크고 작은 자연재해 또한 당시에는 예측이 더 불가능했을 것이다. 날씨에 관한 괴물도 꽤 보인다. 위생이 좋지 않았던 과거에는 불쾌한 환경이나 질병도 걱정의 대상이었다. 이 책은 제목처럼 백과 형식의 짧은 글로 엮어 있어 틈틈히 가볍게 읽기 좋다. 자신만의 관점으로 상상하며 읽어보면 더욱 좋을듯 하다... 2019. 11. 30.
삼각 분포로 난수 발생시키기 가우시안 분포 즉, 정규분포로 난수를 발생시켜야 하는 경우가 종종 있다. 하지만 우리가 흔히 사용하는 rand() 함수는 균일 분포로 난수를 가져오므로 따로 구현해야 한다. 다행히 정규분포 난수 발생 소스는 인터넷상에서 쉽게 구할수 있기 때문에 별 문제 될 건 없다. 한 가지 딴지를 걸자면 정규분포는 피 적분이 안되기 때문에 반복문을 사용해 난수를 만들어야 한다. 만약, 아주 많은 난수를 한꺼번에 발생시킨다면, 부하가 걸릴 수 있다는 말이다. 물론, 아주 쓸데없는 걱정이다. 그정도로 21세기의 컴퓨터는 나약하지 않다ㅎㅎ 어쨌거나 반복문이 없는 확률 밀도 기반 난수를 쓰고 싶다는 어리석은 생각에 다음과 같은 삼각 분포 난수 함수를 만들어 보았다. 삼각형 그래프는 정적분이 쉬워서 면적을 비율 삼아 난수를 발.. 2019. 10. 28.