본문 바로가기

전체 글

[꾸준i-os] Memory Leak Monitoring Tools 메모리릭 발생을 감지하는 방법 c11.kr/jp9o iOS 메모리 뜯어보기, 메모리 이슈 디버깅하기, 메모리 릭 찾기 좋은 사용자 경험을 제공하기 위해서 메모리 관리는 아주 중요합니다. iOS의 메모리는 한정된 자원이며, 여러 프로세스가 공유하는 공유 자원입니다. 만약 메모리 누수가 계속 일어나서 현재 앱 seizze.github.io 좋은 글을 찾아서 공유드립니다. 더보기
[Too Swfit] 시즌1 4회. 스위프트의 캐릭터를 알고싶어. Want to know Swift's character 1. 'Character' type 문자 representation 체계 중에는 ASCII가 있습니다. 아스키는 문자를 7비트로 표현하는 최대 128개의 문자를 나타낼 수 있는 체계입니다. 이것에 대한 super (char) set으로 나온 UTF-8은 이 아스키 표현 관계를 그대로 상속한채로, 문자 스펙트럼을 넓힌 캐릭터 세트입니다. 2. Operation on Character // 이거 공백문자 맞니? let space: Character = " " space.isWhitespace -> true or false // 이 캐릭터는 아스키 체계에 있는 거니? let aChar = "a" aChar.isASCII // 이거 16진법 표현하는 체계 중 하나니( 0-9, a.. 더보기
[Too Swift] 시즌1 2화 How Swift deals with Strings 스위프트가 스트링을 다루는 방법 1. A String as a collection of a Grapheme cluster or clusters : 스위프트에게 스트링은 그래핌 클러스터의 컬렉션이다. let cafeNormal = "café" let cafeCombined = "cafe\u{0301}" // \u0000001100000001 => hexacoded unicode code point 예를 들어, 위에서 첫 번째 상수의 두 번째 상수 유니코드 상 코드 포인트 갯수는 4개와 5개로 상이하나, 스위프트는 영어 알파벳 e와 발음기호를 클러스터로 묶어 하나의 캐릭터로 봅니다. // 그렇기 때문에 cafeNormal.unicodeScalars.count // 4 cafeCombining.unicodeScalars.count // 5 더보기
[Too Swift] 시즌1 2화 How Swift deals with Strings 스위프트가 스트링을 다루는 방법 : 너무 중요한 자료형 !! 1. [ A String as a collection of a Grapheme cluster or clusters ] : 스위프트에게 스트링은 그래핌 클러스터의 컬렉션이다. let cafeNormal = "café" let cafeCombined = "cafe\u{0301}" // \u0000001100000001 => hexacoded unicode code point 예를 들어, 위에서 첫 번째 상수의 두 번째 상수 유니코드 상 코드 포인트 갯수는 4개와 5개로 상이하나, 스위프트는 영어 알파벳 e와 발음기호를 클러스터로 묶어 하나의 캐릭터로 봅니다. // 그렇기 때문에 cafeNormal.unicodeScalars.count // 4 cafeCombining.unicodeScalars.count /.. 더보기
[컴구학개론] 시즌1 2회 : Addressing for Wide Immediates and Addresses 1). Wide Immediate Operands 많은 비트가 필요한 즉치값을 이용해서, 주소 지정해서 저장, 로드하려면? 12비트 밖에 못쓰면, 주소 지정, 엄청난 라인을 건너뛰는 브랜치는 어떻게 하자는 건데? => 새로운 인스트럭션 타잎이 필요해 2). 32비트 상수를 로드하고, 저장하고 해보자 미션 : 즉치값 더하기로, 다음의 64비트 즉치 값을 비어있는 레지스터 16번에 로드해봐 어떻게 할 거 같나요? 어차피 생각 못해내니까 바로 답으로 이야기 할게요. 1). 13번째 비트 ~ 32번째 비트 값을 별도의 인스트럭션으로 로드하기 step1. lui x19,976 (976이 => 저 위 숫자의 13th ~ 32nd 비트를 10진법으로 바꾼 수에요 ^^) 2). 나머지는 I-type으로 더하기 step.. 더보기
[Too Swift] 시즌1 1화. 클로저가 누군데 ? (who's mr. closure?) Collection Iteration with Closure : Mr. closure와 함께하는, 컬렉션 이터레이션 일련의 프로시져를 재사용하는, func이외의 또 다른 방법이 되는 ... 특히, 컬렉션들을 다룰 때 특히 유용한 ... 변수에 할당해, 다른 value들 처럼 "주고 받을 수 있는" ... 그 분 ... 이름 없는 함수 ... Mr. closure를 소개합니다. 참고 : Raywenderlich "Swift Apprentice" https://store.raywenderlich.com/products/swift-apprentice Closure Basics 클로저 쌩기초 + training 클로져는 둘러싼 환경의 변수나 상수를 자신의 scope으로 "close over"할 수 있어서, 클로.. 더보기
[컴구학개론] 시즌1 1화 : [2-8] 함수 호출과 메모리 관리 Supporting Procedures in Computer Hardware 1. 레지스터 사용 관례 참고 : [내 공부용] 글로벌 포인터의 경우 DRAM에서 static data의 주소를 가리킵니다. 언제나 접근 가능한 변수들의 위치를 포인터가 잘 가리키고 있어야합니다. 글러벌 변수들이 저장되는 곳이죠. 8,9번과 18-27번에 해당하는 saved register의 경우에는, 다른 프로시져 호출이 끝난 후에도 그대로 이어서 사용해야 되기 때문에, 반드시 "복원해 주어야 할" 로컬 변수들이 저장됩니다. 이것의 경우 호출한 프로시져에서 리턴 시에 해당 레지스터로 램으로 스필한 데이터를 복원해줍니다. 그렇지 않은 변수들은 temporaries에 저장됩니다. 2. 중첩 함수 호출 스택의 경우에는 높은 메모리 주소에서 낮으 메모리 주소로, 즉, 하방으로 자라납니다. (Dynamic da.. 더보기