이제 막 개발을 한 지 2년 정도가 되었다. 새삼... ... 참 시간이 빠른 것 같기도 하고 느린 것 같기도 하다는 생각이 든다.회사에 들어온 지는 10개월! 이제 2월이면 1년차 개발자가 된다는 사실이 요상하다. ... ...작년 이맘 때 취준을 하고 있었다는 사실이 더 이상할지도 모르겠다. 아무튼. 2023년 한 해는 도전하고, 배우는 데 시간을 모두 쏟았고 2024년은 배우고, 또 적응하는 데 시간을 많이 쓴 것 같다. 왜 이렇게 시간이 빨리 갔지?! 싶을 정도로 순식간에 지나갔던 2024년이라고 해야 할까. :32023년은 유독 많은 걸 했고, 느리게 갔던 것 같은데 24년은 눈 한번 깜빡하니 지나간 느낌이다. 처음 회사에 들어왔을 때는 해당 코드를 쓴 사람의 의도나 방향보다는 단순히..
Application Specific Information: CoreFoundation: *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIButton lbText]: unrecognized selector sent to instance 0x1052ce370' 이 오류가 왜 나는지는 알고 있었다.보통 swift 프로젝트에서 ObjC 라이브러리를 사용하게 되었을 때, other linker flag에 `-ObjC`를 추가 안 해 주면 해당 ObjC 파일을 스위프트 컴파일러가 찾지 못해 해당 오류가 발생하는 경우가 잦다. 하지만? 이번에는 그런 경우는 아니었따 . . ..
요즘에는 SwiftTest라고 SwiftUI에서 하는 테스트가 따로 있던데 우리 회사는 UIKit을 기반으로 Objc / Swift를 혼합하여 사용하고 있어 XCTest를 사용해야 했다.WWDC 즈음부터 공부하던 거라 ㄱ- 알고 보니 SwiftTest는 2024WWDC에서 새로 나온 거더라?! 전혀 몰라따 .... :3 XCTest의 처음과 끝먼저, 기본적인 순서는 다음과 같다.setUp(): 앱 실행test_something(): 기능 테스트tearDown(): 종료첨에 이런 순서를 알고 테스트를 했는데 갑자기? 막 오류가 나고? 이상하게 테스트가 진행되는 것이다.그러니까, 나는 … … setUp() → test_1() → test_2() → … → tearDown() 이런 순인 줄 알았는데 아니었다..
하게 된 계기팀 내에서 암호 고도화 프로젝트를 진행하는데, 관련하여 어떤 부분까지 암호화되어야 안전한지에 대해 의문이 생겼다. iOS 사용자의 입력 정보를 탈취하거나 하려면 어떻게 해야 할까? 탈취하면 어떤 정보가 나오는가? 간단히 시도해보았을 때 해커가 어느 부분까지 침투할 수 있는지를 살펴보고자 했다. (말은 거창하지만 실은 그닥 거창하지는 않다) 이용한 방법두 가지 방법을 이용하였다.memory dumpmethod hooking먼저, Memory Dump는 정적인 방법으로, 특정 시점의 메모리 상태를 알 수 있다. fridump를 이용하여 현재 메모리 상태를 dump 뜨고 관찰하는 방법은 조금 노가다에 가까웠다. (물론 내가 느끼기에는….) 아무래도 요며칠 동안 잡고 있으면서 가볍게 공부를 한..
$ python3 -m pip install requests # or any other moduleerror: externally-managed-environment× This environment is externally managed╰─> To install Python packages system-wide, try brew installxyz, where xyz is the package you are trying toinstall.If you wish to install a non-brew-packaged Python package,create a virtual environment using python3 -m venv path/to/venv.Then use path/to/venv/bin/pyt..
Kotlin Multiplatform의 특징Kotlin을 공통 언어로 사용android / iOS에서 KMP를 통해 작성한 부분은 framework 형태로 동작함비즈니스 로직부터 UI까지 공통 개발 가능현재 iOS 및 UI 공통 개발 기능은 Beta Kotlin 컴파일러의 경우, 소스 코드를 입력으로 가져오고 플랫폼별 바이너리 세트를 생성함. 동일한 코드에서 여러 바이너리를 실행하게 됨.ex) 동일한 코틀린 파일에서 JVM 파일과 기본 실행 파일 생성 java 코드가 어떻게 Native 코드로 동작할 수 있지? 하고 내부 구조를 찾아봤는데 Kotlin -> ObjC로 변환되는 구조인가봄 Swift로도 변환은 가능하지만 ObjC보다 제한적으로 가능함자세한 건 이쪽 참고https://kotlinlang..
이번 주 근황QA 준비를 하면서… … 이제는? 테스트 자동화를 프로젝트에 도입하고 있어요! 이전에 새싹에서 테스트 방법을 배우기는 했지만 이렇게?!?!?! 코드로 … 본격적으로? 하는 건 처음이라서 공부도 오래 하고 삽질도 많이 한 것 같아요 ^__^ … 그치만 잘 돌아가는 테스트 코드를 보면 절로 뿌듯해진답니다 Xcode 오류나서 아이폰 디바이스에 하얀 화면 뜨고 Xcode 강제 종료되면 절로 폭력성이 올라오지만요…. 😓😓다들 WWDC는 보셨나요?! 이번에 많은 것이 변한 것 같다가도 또? 작년처럼 많은 건 안 변한 것 같기도 하고…. 아리송한 기분이 드네요. 제가 생각했던 많이 바뀐 부분은 아래와 같았어요.자리를 많이 차지할 것 같아 접어놓자면….AI의 도입!Xcode에도 코파일럿처럼 자동으로 코..
이번 주 근황요즘 회사에서는 QA 준비를 하고 있어요! 저번 주까지는 QA 리스트를 만들고 설정을 상세히 정리했는데, 이번 주는 해당 정리한 것을 바탕으로 테스트 앱을 만들었습니다. ㅎㅎ해당 앱을 만들면서, 테스트 앱이지만 사용성과 개발의 편의성 중 뭘 우선으로 여겨야 할까 대해서 고민하게 되더라구요. 무조건 키보드가 올라올 때 TextField를 올려주는 게 아니라 TextField가 키보드에 가려지는 위치라면 올려줘야 한다든가. tableView에서 키보드를 자동으로 내려주려고 onDrag를 설정하려고? 했다가도 … … 그렇게 되면 처음 작성했던 textField와 키보드 관련 코드와 tableView의 코드가 얽혀 버려서 곤란했어요. 너무 깊게 고민하기 싫어서 그냥 tableView의 onDrag를..