요즘 할때마다 검색하게 되는거같아서

JsonEncoder

JsonDecoder

JSONSerializtion.jsonObject

JSONSerializtion.data

에 대해 사용한 예제를 적어봤다.


struct Person:Codable{
    let id:Int
    let name:String
    let sex:String
}

let person = Person(id: 0, name: "홍길동", sex: "male")

do {
    //struct to jsonData
    let jsonData:Data = try JSONEncoder().encode(person) // data
    print(jsonData)
    print()
    
    //jsonData to string
    let jsonString:String = String.init(data: jsonData, encoding: .utf8) ?? "err"
    print(jsonString)
    print()
    
    //string to jsonData
    let jsonData2:Data? = jsonString.data(using: .utf8)
    print(jsonData2)
    print()
    
    //jsonData to dictionary
    let jsonDic = try JSONSerialization.jsonObject(with: jsonData, options: []) as? Dictionary<String, Any> ?? [:]
    print(jsonDic)
    print()
    let jsonDic2 = try JSONSerialization.jsonObject(with: jsonData2!, options: []) as? Dictionary<String,Any> ?? [:]
    print(jsonDic2)
    print()
    
    //dictionary to jsonData
    let jsonData3:Data = try JSONSerialization.data(withJSONObject: jsonDic, options: .sortedKeys)
    print(jsonData3)
    print()
    
    //jsonData to struct
    let structForm:Person = try JSONDecoder().decode(Person.self, from: jsonData)
    print(structForm)
    
} catch let err{
    print("err:\(err.localizedDescription)")
}

 

struct 를 jsonData로 JSONEncoder

string 을 jsonData로 String.data(using: .utf8)//다른 형식으로 지정하면 어떻게 될지 안해봤다.

dictionary 를 jsonData로 JSONSerialization.data

 

jsonData를 string으로 String(data:,encoding:)

jsonData를 struct로 JSONDecoder

jsonData를 dictionary로 JSONSerialization.jsonObject

 

아 헷갈려....

 

반응형

/Library/Developer/CoreSimulator/Profiles/Runtimes

해당 위치에 저장된다.

 

여러가지 지원 정보및 파일들이 패키지형태로 압축된것으로 보인다.

 

일단 사용안하는 tv용 시뮬레이터도 지우고 

사용안하는 버전도지우고

 

마지막으로

아래 명령어를 치면 현 xcode에서 실행불가능한 애들도 지워준다.

xcrun simctl delete unavailable

 

용량이... 부족하다.......

 

반응형

일단 이슈는 생성자가 삭제할 수 있는게 아니라 해당 레포지토리 생성자만 삭제할 수 있다.

 

;;;;

 

 

공동작업자로 들어간 레포지토리에 고쳐야할 버그들 메모장용으로 쓸까하다가 생성했더니 삭제가 안되서 그 경험으로 남겨보는 글이다.

 

 

 

우선 삭제 하고자하는 이슈페이지에 들어간다.

그리고 오른쪽 하단의 메뉴란을 살펴보면

 

Delete issue 라는 메뉴가 보인다.

 

상단에서 말했듯이 레포지토리 생성자만 있는 메뉴다

 

공동작업자는 해당 메뉴가 없다라고..... 망했어

 

그리고 해당 메뉴를 선택하면 아래 사진과 같은 경고창이 뜬다.

 

delete this issue 를 눌러주면 깔끔하게 이슈가 날라간다.

반응형

이글은 제목과같은 문제가 생겨 남긴 기록이다. 

아마 타 공간에서 이 프로젝트를 돌리면 똑같은 문제가 발생하겠지.

 

 

우선 이 문제를 해결한 아주 고마우신분의 글이다

 

https://stackoverflow.com/questions/49505446/main-jsbundle-does-not-exist-this-must-be-a-bug-with-echo-react-native

 

main.jsbundle does not exist. this must be a bug with + echo 'react native

I tried to archive my react native project using Product > Archive on XCode9.2. But Xcode produce this error: File /Users/louis/Library/Developer/Xcode/DerivedData/Scavenger-

stackoverflow.com

 

역시 스택오버플로우는 날버리지않았어...

 

rn으로 작성된 프로젝트의 여러 기본 설정이 들어가는 package.json 파일에 해당 스크립트를 추가한다.

"build:ios": "react-native bundle --entry-file='index.js' --bundle-output='./ios/main.jsbundle' --dev=false --platform='ios'"

 

없다고 뭐라한 파일은 사실 rn에서 빌드하면 생기는 파일이였다.

해당 파일을 빌드후 원래 있어야할 폴더에 생성해주는 스크립트이다

 

아래와 같이 스크립트 란에 추가하면된다.

 "scripts": {
    "build:ios": "react-native bundle --entry-file='index.js' --bundle-output='./ios/main.jsbundle' --dev=false --platform='ios'",
    등등 여러가지 스크립트
  },

 

해당 파일을 작성만 해주면되는데 (프로젝트 루트에서 yarn build:ios)

이래도 안된다면 xcode 프로젝트 설정의 빌드패스에 생성된 해당 파일을 추가해준다.

 

 

사실난 스크립트란에서 안됐는데 해당문제는 깃에 올라온 파일을 압축해서 다운받았으나 빠진 파일들이 있었다.... 그렇게 오류난 파일들을 다운로드해주고 스크립트를 돌리고 해결..

반응형

단어를 찾기전에 잠시 인덱스에 대해 이야기를 해보자

 

스위프트의 문자열 내부는 인덱스로 찾는다

아래 10글자의 문자열이 담긴 text변수는

let text = "가나다라마바사아자차"

기본적으로 startIndex와 endIndex라는 속성을 가지고있다.

 

그래서 내부 인덱스를 검색해서 문자열 안에서 문자열을 빼내려면 인덱스범위를 포함하고있는

Range라는 녀석을 만들어서 배열에서 인덱스로 뽑아내듯 문자열 옆에 붙여주면 뽑아진다.

 

그래서 아래와 같이 처음과 끝을 지정해서 뽑아주면 처음 문자열과 같은 내용이 출력된다.

 

 

조금 특이한게 끝의 인덱스를 포함을 안시켜야 나온다.

 

이제 다시 원래 하려던 문자열 내부의 단어를 찾아라라는 주제로 돌아오면

 

문자열 내부에 어떠한 단어가 있는지만을 판단하기에는 매우 좋은 함수가있다

String 클래스에는 contains()라는 함수가 있는데

 

이를 이용하면 

let isContains = text.contains("다라")

위 코드는 text에 만약 "다라"가 포함되어있다면 true를 아니라면 false를 반환해준다.

 

단어가 있는지는 검사할 수 있으나 이 방법으론 단어가 어디에 있는지도 찾지 못한다.

위에서 문자열 내부에 값을 뽑아내려면 인덱스로 찾는다고했다.

 

그리고 그 인덱스는 range로 만들어내야 한다. 

 

그리고 String 클래스는 인덱스를 만들어주는 함수중 range() 라는게 있다

 

let range0 = text.range(of: "다라")

 

이렇게 하면 text 내부에 "다라" 라고 적힌 녀석중 가장 처음녀석의 위치(인덱스)를 반환하게 된다.

위치일뿐이지 아직 단어 자체는 없다.

 

이 범위, range는 다양하게 쓸 수 있으나 여기서는 별 의미없이 해당 단어 위치만을 뽑아와 서브로 만들어줄꺼다.

총 세개의 범위에서 뽑아낼건데

 

1. 단어 시작전까지 : w0

2.단어 : w1

3.단어 이후 부터 끝까지 : w2

 

 

해당 소스를 돌리면

 

가나

다라

마바사아자차

 

라고 출력이 된다 

위부터 w0 ~ w2 순이다.

 

위 소스들을 좀 정리하자면 

 

 

guard로 "다라"가 없으면 nil을 있다면 해당 세부분을 String으로 변환해서 반환하는 함수로 만들었다.

참고로 문자열에서 Range를써서 뽑은 값은 SubString으로 String으로 변환해줘야 편하게 쓸 수 있다.

 

 

 

 

그냥 문자열을 쪼개는건 split이 편하다.

 

String.range는 아래와 같이 조건을 줘서

검색범위(range), 검색조건(아래소스는 뒤에서부터 검색), NSLocal.... 어느때 사용하는지를 모르겠다.

let range = text.range(of: "다라", options: .backwards, range: text.startIndex ..< text.endIndex, locale: nil)

 

위 코드처럼 조건을 줘서 위치검색이 가능하다.

 

 

 

반응형

https://github.com/chrislgarry/Apollo-11/blob/master/README.ko_kr.md

 

chrislgarry/Apollo-11

Original Apollo 11 Guidance Computer (AGC) source code for the command and lunar modules. - chrislgarry/Apollo-11

github.com

 

위 링크는 한국어로된 readme 파일주소

 

원본은 따로있는거 같으나 일종의 미러 레포지토리라고합니다

 

yayul이라는 처음들어본 어셈블리어로 만들어진 소스들인데

 

못읽어도 신기해보이네요

반응형

https://placeholder.com/

 

Placeholder.com: Placeholder.com – The Free Image Placeholder Service Favoured By Designers

What Is Placeholder.com? Placeholder.com generates custom placeholder images on the fly, like these examples:-     How To Use Our Placeholders Just specify the image size after our URL (https://via.placeholder.com/) and you'll get a placeholder image.

placeholder.com

아주 멋진 사이트

placehold.it/ <width x height> / < 배경색 > / < 글자색 > & text=<텍스트> 

이런 식으로 써넣으면 자동으로 이미지를보여주는 재미난 사이트

 

ex) 100x100 크기의 노란배경에 파란색글씨로 1이 적힌 사각형 그림을 보여줘!

http://placehold.it/100x100/ffff00/0000ff&text=1

 

 

// 수정

주소가 변경됐습니다.

 

https://via.placeholder.com/

로 기존사용방법과 동일합니다.

 

https://via.placeholder.com/100x100/ffff00/0000ff&text=1

반응형

+ Recent posts