전체 글 64

Swift) Error Handling(오류 처리)를 알아보자

안녕하세요 :) 바로 시작해보겠습니다 개발에 있어서, 오류 처리는 아주 아주 중요한 부분임!! 안정성을 위해서도 사용자 경험에 있어서도 중요한 부분이기 때문에 예상치 못한 오류를 막기 위해 꼭 알아야함! 아래와 같은 PrintError라는 열거형을 예로 들면 enum PrinterError: Error { case outOfPaper case noToner case onFire } 아래 코드의 메소드 send 안에서 에러를 처리해주려면 에러가 발생할 가능성이 있는 메소드의 제목 옆에 throws를 써준 후 오류가 발생하는 구간에 throw를 써주면 된다. 여기서 throws 키워드는 오류를 던질 수 있음을 나타내고 throw 키워드를 사용해서 오류를 던짐 func send(job: Int, toPrint..

Swift 2024.01.31

Swift) Struct와 Class: mutating의 역할

Swift에서는 struct와 class라는 중요한 두가지 타입이 있는데 mutating 키워드 사용에 중요한 영향을 미친다! mutating: 돌현변이, 변하게 만들다 뜻에서 부터 딱 감이 잡히지 않는가??? 뭔가 안의 내용물을 바꿔준다는 느낌을 준다. 먼저 아래 코드를 살펴보자 class SimpleClass: ExampleProtocol { var simpleDescription: String = "A very simple class." var anotherProperty: Int = 69105 func adjust() { simpleDescription += " Now 100% adjusted." } } var a = SimpleClass() a.adjust() let aDescription = ..

Swift 2024.01.30

Swift) Enum: RawValue와 Optional 값 처리

The Swift Programming Language를 읽어보던 중 enum의 rawValue를 사용하면 왜 옵셔널 값으로 나오는지가 궁금해서 알아봤다 아래는 해당 코드 enum Rank: Int { case ace = 1 case two, three, four, five, six, seven, eight, nine, ten case jack, queen, king func simpleDescription() -> String { switch self { case .ace: return "ace" case .jack: return "jack" case .queen: return "queen" case .king: return "king" default: return String(self.rawValue..

Swift 2024.01.30

XCode) 커스텀 단축키: 커서 바로 밑, 위에 라인 추가하기

안녕하세요 큐컴벌입니다! ! 단축키를 애용하는 저에게 iOS 개발을 하면서 굉장히 불편했던 점 중 하나 바로 Visual Studio 에 있는 단축키인 ⇧ + ↩ 를 누르면 작동하는 커서 바로 밑 라인 추가! XCode만 쓰신 분들은 잘 모르실 수도 있는데 이 단축키 없이 이 작동을 하려면 ⌘ + -> 를 눌러 해당 라인 끝으로 간 후 Enter 를 눌러야 해당 커서 바로 밑에 라인을 추가할 수 있다. ...? 이게 무슨 귀찮은 짓이람 그래서 이 기능을 추가하고 싶었으나..! XCode의 설정, 키 바인딩에는 이 기능이 없는 것ㅠㅠ 그래서 이 기능을 추가하기 위해선 키 바인딩을 커스텀 해줘야한다. open /Applications/Xcode.app/Contents/Frameworks/IDEKit.fram..

Swift 2024.01.21

분산원장기술에 대해 Araboja

블록체인 기술의 핵심인 분산원장기술, 일단 이름에 담긴 뜻부터 나눠보자면 분산 + 원장인데 분산되어있는 원장(데이터, 거래 내역) 이라고 보면된다. DLT라고도 불린다 (Distributed Ledger Technology) 블록체인이 널리 알려지고 대중적이기 전에 기존의 금융이나 여타 다른 시스템들은 중앙집중원장의 형태를 띄고 있다. 당연히 중앙화된 데이터 관리 형태라고 보면 되는데. 이게 원래까지 아무 문제없이 잘 굴러갔던 이유는 당연히 거대한 기업들이 제공했던 시스템을 수수료(신뢰비용)를 지불하면서까지 보안에 철저하게 보관하며 잘 관리해줄 것이라고 아주 '굳게' 믿고 있었던 터인데, 이게 점점 문제가 생기기 시작한다. 비용문제 제 3자인 중앙관리시스템 들의 관리시스템이자 주체들은 거래자들 사이에서 ..

BlockChain 2022.04.05

[Rust for Solana] Cargo

Cargo란 npm 처럼 러스트의 빌드 시스템 및 패키지 매니저다! 버젼 확인을 위해서는 cargo --verison으로 확인! 프로젝트 생성하기 cargo new hello_cargo --bin --bin은 바이너리. 이는 라이브러리가 아닌 실행가능한 앱으로 만들어줌 프로젝트를 생성하면 요로케 Cargo.toml과 main.rs 그리고 gitignore이 생기며 git 저장소도 초기화됨 Cargo.toml을 열어보면 이 파일은 toml(tom's obvious, minimal language)포맷으로 작성, 이것이 Cargo의 환경설정 포맷. 마지막 라인 [dependencies]은 우리의 프로젝트의 의존성들의 리스트를 적을 수 있는 섹션의 시작점. 러스트에선 코드의 패키지를 크레이트(Crate)라고 ..

Rust/Basics 2022.04.05

[Rust For Solana] 첫번째 프로그램의 해부

어려운건 아니지만 조금 더 자세하게 살펴보자면 println! 은 러스트 매크로 라고 불린다. 함수라고 불리려면 ! 없이 println으로 입력되어야했음. 즉 !은 보통의 함수 대신에 매크로를 호출하고 있다고 이해하자. + 그리고 러스트 스타일은 텝이 아닌 스페이스 네개로 들여쓰기를 함. 이걸 실행하기 위해선 rustc 명령어가 필요한데 보자마자 모르겠어서 rustc 는 컴파일러란다. 모르겠으면 바로 구글선생님에게 물어보자 암튼 컴파일러는 우리의 코드를 가져가서 실행가능한 바이너리 코드로 만들어준다 그래서 바로 ./main 을 넣어주면 실행이 되는 것. 무슨 exe파일같은 파일이 생겼다 저 파일을 더블클릭하거나 터미널에서 ./main 명령어를 입력해주면 추가로 자바스크립트와 같은 동적 언어에 더 친숙하다..

Rust/Basics 2022.04.04

[iterm] 특정 파일을 실행 시 바로 종료되는 현상

아니 이게 무슨 일이지???? 이렇게 되기 전에 무슨 경고창이 떠서 별 생각없이 수락한게 이렇게 되나보다.. 암튼,, 뭘 어떻게 찾아봐도 잘 안나온다. 이럴 경우엔 코드의 문제라기보단 내부적인게 더 큰거같아서 올려놓은 스크린샷은 iterm에서 실행되는 것인데 기본 터미널에서 확인을 해보면 이렇게 끝나는 것을 확인할 수 있는데 음... 이렇게 봐선 잘 모르겠는데 iterm 환경설정에서 확인해보자. 어쩌라는거지 암튼 조금 더 둘러봤는데 Saving session... completed를 보고 나서 생각난게 이거다! 프로그램 돌리는? 것을 세션이라고 하나보다 이게 saving session...completed 후에 윈도우가 닫힌게 생각나서 After a session ends가 눈에 들어왔나보다 이걸 No ..

Error 2022.04.04

거래소간 차익거래를 위한 텔레그램 봇

최근에 잠시 역프가 잠깐 생기면서 이전에 구상하고 싶었던 프로그램이 있었는데, 이전엔 전부 손으로 옮겨다니면서 눈으로 그 가격차이를 확인하고,, 직접 계산하면서 차이를 포착하면서 이거저거 시도해보곤 했는데 이걸 굳이 손으로 해야하나..? 싶어서 구글링을 좀 해보니 이미 내가 생각했던 것들은 당연히 다 패키지로 만들어져있다 ㅎ 중간중간에 실패하긴 했지만 만들고나니 너무 뿌듯하다,, 일단 최근에는 이런 기회가 잘 포착이 (수익이 나는) 안나기도하고 근데 이걸 실제로 거래를 하기에는 살짝 무리가 있지 않을까 싶어서 거래가 체결되고 다른 계정으로 보내는 기능은 넣지 않았다. 바이낸스 - FTX 동시상장 되어있는 크립토 중에 가격 차이가 0.25 퍼 이상인 것들을 불러오면서 그 정보를 그대로 내 텔레그램으로 보내..

IT 2022.03.31