git reset --hard origin/master 한거 취소하기(git reflog)

|

개인적인 연습 내용을 정리한 글입니다.
더 좋은 방법이 있거나, 잘못된 부분이 있으면 편하게 의견 주세요. :)


문제상황

개발을 하던 중 대박 실수를 하나 했었다.

  • local에 있는 파일을 깃헙에 push하려고 하는데 reject가 되었다.
  • 이전에도 비슷한 충돌은 많아가지고 git conflict해결 요거 참고하며 진행하는순간
  • 초기 파일만 남은채 그냥 다 사라져버렸다. 아니지 초기파일도 아니고 그냥 텅빈 파일 이름들만 남아있었다….
  • 구글링하며 설명을 찾아보니
  • “만약, 로컬에 있는 모든 변경 내용과 확정본을 포기하려면 아래 명령으로 원격 저장소의 최신 이력을 가져오고, 로컬 master 브랜치가 저 이력을 가리키도록 할 수 있어요”
  • 즉, 내 로컬은 텅 비어있던 깃헙을 역 push 해버려 텅빈 파일들만 남아있게 되었다…

git reflog

ref는 reference를 의미한다 > reference log

  • 사진을 보면 우선 위에서부터 아래로 커밋이 진행된 것을 볼 수 있다.
  • 내가 뭐가 뭔지를 몰라서 reset이 좀 남발이 되어있는데
  • 여튼 53d8에 있어야 할 HEAD가 잘못사용한 reset으로 인해 1b31까지 갔던 것을 볼 수 있다

이때 git reset -hard HEAD@{몇번전의 행동} 명령어를 통해 각각의 커밋 id를 대체할 수 있다.

즉 나는 git reflog를 통해 본 HEAD{3}행동으로 돌아가야 하니까(현재 HEAD{1}에 있고)
git reset -hard HEAD@{3}이라는 명령어를 통해 커밋을 돌려놓았다.

즉 이 명령어를 통해 우리가 할 수 있는 일은 아래와 같다.

  1. 원하는 몇번째 전의 행동으로 해당 과정을 되돌려 놓거나
  2. reset으로 잘못 삭제한 커밋을 되살리기 위해 사용한다.

Terminal에서 git 언어 설정 변경하기

|

개인 공부 내용을 정리한 글입니다.
잘못된 내용이 있다면 편하게 댓글 남겨주세요!


문제 상황

  • 터미널에서 git이 계속 한글로 출력되어 나왔다.
  • git을 사용할때 한글로 나오면 물론 편한점도 있겠지만 에러가 나는 경우
  • 구글링을 해야하는 경우가 많은데, 한글로 나오는 에러는 구글에서 찾기가 쉽지 않다.
  • 따라서 무엇을 사용하든 영어로 사용하는 것이 훨씬 좋다.

해결 방법

나는 zsh을 사용하기 때문에 zsh에서의 해결방식을 보여줄 것이지만
bash에서도 설정 명령어는 같기에 그대로 진행해도 괜찮을 것이다.

우선 터미널에서 zshrc로 진입한다.

vi ~/.zshrc

그리고 아래 명령어를 적어준다

# Set Git language to English
alias git='LANG=en_GB git'

위 명령어 저장 후 나와서 터미널에 아래를 작성하면 끝!

source ~/.zshrc

app Transport Security has blocked a cleartext HTTP 에러 해결하기

|

개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.


app Transport Security has blocked a cleartext HTTP

iOS 앱 개발 시 http 서버와 통신하려고 하면 구동중에 이런 에러가 발생한다.
ATS 문제임을 알 수 있다.

App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure.
Temporary exceptions can be configured via your app's Info.plist file.

Solution

Apple 측에서 앱 자체의 보안성을 위해 ATS(App Trasport Secuirty)라는 정책을 통해 기본적으로 https 통신을 하도록 유도하고 있는것이다.
ATS란 무엇인가? > ATS가 무엇인지 모르겠다면 해당 포스팅을 읽어보도록 하자!

아무튼 http 서버로 테스트하기 위해선 Info.plist 에서 ATS 부분을 추가해주어야 한다.
NSAppTransportSecurity의 NSAllowsArbitraryLoads 값을 true로 지정해준다.

그러면 해당 에러가 해결될 것이다!

Xcode에 Custom Font 추가하기

|

개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.


Xcode에 Custom Font 추가하기

xcode에서 기본으로 제공해주는 폰트가 아닌 커스텀 폰트를 적용하고 싶을 때 아래와 같은 방법을 사용하자!

1. 프로젝트 파일에 폰트 파일을 import

우선 원하는 폰트 파일을 다운로드한다.
.ttf .otf 파일 모두 지원되지만 .wotf 파일은 인식하지 못한다.

이때 중요한 것은 import시킬 때, 아래와 같은 창이 생기는데, Add to targets 에 자신이 만든 프로젝트를 반드시 체크해야한다는 것이다. target 설정을 하지 않으면 폰트 파일을 프로젝트 내부에서 인식하지 못하기 때문이다.

(추가로 폰트 파일은 디렉토리 depth 상관없이 인식시킬 수 있기 때문에 나는 {프로젝트 디렉토리}/SupportingFiles/Fonts/디렉토리 에 위치시켰다.

2. Info.plist에 폰트파일 정의

Info.plist파일은 프로젝트의 내용을 요약해놓은 파일이기 때문에 우리가 어떤 커스텀 폰트가 사용되는지 정의해줘야 한다.

Info.plist파일 내부 > Information Property List > Fonts provided by application 항목이 존재한다면 해당 리스트에 새로운 아이템을 추가하고 없다면 Fonts provided by application 항목을 생성해준다.

생성한 Fonts provided by application에 사용한 커스텀 폰트 파일명을 정의해주고, 정의할 때 주의할 점은 파일명의 확장자 까지 다 적어줘야 한다는 것이다. (Apple SD Gothic Neo Bold.otf 와같이 다 적어줘야 폰트인식을 한다.)

3. 코드에 적용

@IBOutlet 를 통해 UIFont를 잡아줘야한다.
잘 모르겠지만 위와 같은 방식으로만 하면 스토리보드상에서 글꼴이 나타나지 않는것 같다. (내가 잘못한 걸수도..)

Extensions/UIFont.swift

import UIKit

extension UIFont {
    class func AppleSDGothic(type: AppleSDGothicType, size: CGFloat) -> UIFont! {
        guard let font = UIFont(name: type.name, size: size) else {
            return nil
        }
        return font
    }

    public enum AppleSDGothicType {
        case Bold

        var name: String {
            switch self {
            case .Bold:
                return "AppleSDGothicNeo-Bold"

            }
        }
    }
}

ViewControllers/UserCell.swift

func initUI() {
    self.name.font = UIFont.AppleSDGothic(type: .Bold, size: 16)
    self.contact.font = UIFont.AppleSDGothic(type: .Bold, size: 13)
//        self.contact.textColor = UIColor(red: 134, green: 142, blue: 150, alpha: 0)
    self.regdate.font = UIFont.AppleSDGothic(type: .Bold, size: 13)
}

CGPoint, CGSize, CGRect, CGFloat

|

개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.


  • CGPoint: 위치를 나타냄. 2차원 좌표계의 점(x,y)
  • CGSize: 크기만을 나타냄.(width, height)
  • CGRect: 크기와 위치를 나타냄. (CGPoint + CGSize) > (x, y, width, height)

CGPoint

2차원 좌표계의 점을 나타내는 구조체

public struct CGPoint {
  public var x: CGFloat
  public var y: CGFloat
  public init()
  public init(x: CGFloat, y: CGFloat)
}

CGSize

width와 height의 값을 나타내는 구조체

public struct CGSize {
  public var width: CGFloat
  public var height: CGFloat
  public init()
  publit init(width: CGFloat, height: CGFloat)
}

CGRect

위치와 크기를 나타내는 구조체

public struct CGRect {
  public var origin: CGPoint
  public var size: CGSize
  public init()
  public init(origin: CGPoint, size: CGSize)
}