리사이클러뷰 어댑터를 만들어보고추후 업무하게될 UI만들기에 도움이 되고자 한다.일반적으로 어플을 만들시 Linear Layout에 RecyclerView를 연동한 뷰를 많이 사용한다.한정된 핸드폰 스크린 화면에, 많은 정보를 담아내기에 적절한 뷰이기 때문인것으로 보인다
이번 시간에는 브로드캐스트리시버에 대해서 알아보자..BroadCastReceiver 는 4대 컴포넌트 중에 하나이다. BroadCastReceiver 의 역할은 단말기 안에서 이루어지는 수많은 일들을 대신해서 알려준다.예를들어 배터리부족,SMS문자메시지,전화가온다거나
android 에서는 java 언어를 이용한다.java 언어는 OS위에 바로 돌아가는 다른 언어와 달리 소스코드를 바이트 코드라는 중간 언어로 변환한후 실행시에 OS위에 존재하는 VM(virtual machine)을 기반으로 동작한다.이 VM이OS와 응용프로그램을 연
TextView title에 R.id.title을 할당하기 위해서 기존에는 아래와 같이 하였다.하지만 Butter Knife를 사용하면 아래와 같이 사용이 가능 하다.Advantagecontrol 객체를 가져오거나 resource 등을 가져오는 방식을 일관된 방식으로
보통 컴에서 context 는 cpu 의 레지스터값들을 말합니다.그래서 cpu 가 A 프로세스를 실행하다 타임쉐어링 정책에 의해 B 프로세스로 실행이 변경되어야 할 때 A용 cpu 의 레지스터 값을 특정 어딘가에 저장하고, B 프로세스 레지스터 값을 복원한 후 B의 코
Fragment는 Activity와 View의 특성을 동시에 갖고 있다.Fragment는 Activity의 변경 없이 View를 변경하고자 할 때 사용된다.https://milkye.tistory.com/60
코드 분석을 위해 안드로이드 아키텍쳐의 종류와 각 아키텍처의 특성을 알아보도록 하자.앱을 만든다는 것은 사용자가 원하는 정보를 화면으로 잘 찾아보고, 잘 입력할 수 있게 하는 소프트웨어를 만드는 것이다. 앱을 만들 때 필요한 요소는 크게 2가지이다. 흔히 비즈니스 로직
싱글톤클로저데코레이터스태틱메소드클래스메소드
Service 의 필요성Service는 Android의 4대 컴포넌트(Activity, ContentProvider, BroadcastReceiver, Service)중 하나입니다. 도큐먼트에는 Service의 주된 목적이 오래 걸리는 작업을 백그라운드에서 처리하는 것
//권한 //오디오 녹음 //카메라 접근 //부팅시 앱 자동실행?, 부팅완료를 확인 //인터넷 사용 //WIFI 연결 확인 //네트워크 연결 확인 //통신상태 변경 //
AndroidManifest.xml에 설정하는와 같은 태그는,앱에 대한 명세가 됩니다.대표적인 기능으로는, 해당 앱이 무슨 기능을 사용하는지에 대해 미리 알려주어 앱스토어에서 설치 대상을 선별할수 있게 되는 것이죠.예를들어이렇게 선언해두면,해당 앱이 카메라를 사용하니
강제종료하지 않는 한 계속 살아있는 부분이다.
AndroidManifest.xml에 내에 android:name으로 된 attribute가 있어서 정확하게 뭔지 궁금해서안드로이드 디벨로퍼 사이트에서 찾아봤습니다.어플리케이션을 위해 구현된 어플리케이션 서브클래스의 이름. 어플리케이션 프로세스가 시작될 때, 어플리케
안드로이드 3.0 부터 하드웨어 가속 기능을 지원한다. 하드웨어 가속은 그래픽 처리를 할 때 GPU를 사용하여 그리는 방식이다.출처: https://gakari.tistory.com/entry/안드로이드-하드웨어-가속-기능 가카리의 공부방
AndroidManifest.xml 파일의 부분에 android:usesCleartextTraffic="true" 로 설정cleartext HTTP와 같은 cleartext 네트워크 트래픽을 사용할지 여부를 나타내는 flag로 이 플래그가 flase 로 되어 있으면,
//FAB implementation 'com.github.clans:fab:1.6.4'//Rx implementation 'io.reactivex.rxjava2:rxandroid:2.0.1' implementation 'io.reactivex.rxja
https://berkbach.com/android-rxjava%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EB%B0%98%EC%9D%91%ED%98%95-%EA%B5%AC%EA%B5%AC%EB%8B%A8-%EB%A7%8C%EB%93%
소켓(Socket)만약 네트워크와 관련된 프로젝트를 진행하면서, 사용자(User)의 관점이 아닌, 개발자(Developer)의 관점에서 네트워크를 다뤄본 경험이 있다면, "소켓(Socket)"이라는 용어가 아주 낯설게만 느껴지는 단어는 아닐 것입니다. 하지만 이제 막
Git에 대해 알아보도록 하겠다.작년 모의외주 프로젝트때 한 번 사용해본 경험이 있었는데, Git을 이용해 코드를 클라우드?에 올려둔다고 생각하면 될 것 같다.근데 이게 계속 수정이되고 업데이트가 된다고 해도 수정된 일부 부분만 올리는 것도 가능하고 전부 올리는 것도
Dialog의 입력값에 따른 버튼 활성화, 비활성화그리고 그에 따른 CustomDialog이해와 적용Theme 색상에 따른 버튼 색상 불일치 해결 등의 방법을 배우게 되었다.먼저 Dialog 입력값에 따른 버튼 활성화와 비활성화는위와 같이 기존 Custom_Dialog
https://leipiel.tistory.com/7
이슈에는 개발해야할 기능이나 개발하는데 발생한 버그 등 수행해야할 과제 위주로 올린다. 보통은 수행해야할 목적을 바탕으로 제목을 작성하고 관련된 주제에 대해 라벨을 연결한다. 제목에 모든 내용을 포함하기보다 겹치는 내용은 라벨로 분리하여 가독성을 높이고 검색도 용이하게
정리할 것https://leipiel.tistory.com/7
Git에 있던 프로젝트를 안드로이드스튜디오로 연동시켜 빌드까지 무사히 하고나서,갤럭시로 Run해 보려는데 문제가 발생했다.오류명은 Execution failed for task ':app:validateSigningDebug'.Keystore file 'C:\\User
RxJava에는 Backpressure라는 개념과 이를 처리하는 Flowable class가 존재한다.Backpressure가 무엇이고 Flowable은 어떻게 쓰는 것인지 알아보자.배압이란 데이터 생산과 소비가 불균형적일 때 일어나는 현상이다. 만약 10,000개의
.so 파일은 NDK 의 C/C++ 파일이 컴파일된 파일입니다.NDK 를 사용하기 위해서는 그냥 JNI 로 구성된 C/C++ 파일이 있으면 됩니다..SO 파일 확장자 가있는 파일 은 공유 라이브러리 파일입니다. 여기에는 하나 이상의 프로그램에서 리소스를 오프로드하여 S
안드로이드 스튜디오작업을 하다보면특정 폴더에는 (generated)가 붙어있다.이게 무슨 말일까 알아보자Android Studio에 의해 만들어진 java code이고, 빌드 시점에 생성된 폴더 및 파일들이다.generated가 붙은 폴더를 다 지우고 다시 빌드해도,
https://recipes4dev.tistory.com/172위 블로그가 정리가 잘 되어있어 올린다.하지만 뚜렷하게 이해가 가지 않아 머릿속을 한번 정리해 보도록 하겠다."Only the original thread that created a view hie
https://jw910911.tistory.com/56
https://www.beemo.co.kr/entry/%EC%B9%B4%EC%B9%B4%EC%98%A4-sdk-v2-%EA%B5%B3%EC%9D%B4-%EC%9E%90%EB%B0%94%EB%A1%9C-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8
코드분석 도중 위와 같은 코드를 보게 되었다.우선 제네릭(Generic)을 이해해보자JDK1.5 에 처음 도입되었다.Generics add stability to your code by making more of your bugs detectable at compile
람다식이란 "식별자없이 실행가능한 함수"함수인데 함수를 따로 만들지 않고 코드한줄에 함수를 써서 그것을 호출하는 방식이라고 생각하시면 되겠습니다.\-> 기호는 매개 변수를 이용해서 중괄호 { } 바디를 실행한다는 뜻으로 해석하면 됩니다.두개의 숫자 더하기두개의 숫자중
public class LoginAppbarDeco extends AppbarDecorator { public LoginAppbarDeco(@StringRes int titleRes, @DrawableRes int imageTitleRes, Runnable l
너무나도 잘 정리해두신 분이 계셔서 퍼옴제네릭 : 지금은 이 타입을 모르지만, 이 타입이 정해지면 그 타입 특성에 맞게 사용하겠다!와일드 카드 : 지금도 이 타입을 모르고, 앞으로도 모를 것이다!기능면에서는 완전히 똑같기 때문에 이왕이면 보기에 조금 더 간결한 와일드
git initgit statusgit add .git commit -m "내용"git remote add origin {remote repository 주소}git push origin mastergit push origin {브랜치명}작업한 코드 올리기git add
안드로이드 스튜디오에서BuildConfig를 수정하려고하여 private static final 상수를 추가하려고하면, 추가가 안되는 경우가 있다.정확히 말하면 추가는 되는데 빌드를 하면 사라져버리는 경우가 있다. 그리곤 레퍼런스가 없다고 한다.그럴때는 모듈단위의 bu
Consumer 함수적 인터페이스는 리턴값이 없는 accept() 메소드를 가지고 있다.Consumer는 단지 매개값을 소비하는 역할만 하며, 소비한다는 말은 사용만하고 리턴값이 없다는 뜻이다.
자바 시스템 내부에서 사용되는 Object 또는 Data를 외부의 자바 시스템에서도 사용할 수 있도록 byte 형태로 데이터를 변환하는 기술.JVM(Java Virtual Machine 이하 JVM)의 메모리에 상주(힙 또는 스택)되어 있는 객체 데이터를 바이트 형태로
만약에 메뉴 1 -> 메뉴 2로 넘어가는 스택의 경우 상관 없지만, 메뉴 1- > 메뉴 1로 움직이는 경우 두 액티비티를 동시에 올리면 스택의 낭비가 심해진다. 따라서, 같은 액티비티로 넘어갈 때 같은 액티비티를 띄우지 않게끔 스택관리를 해야한다.다음 코드는 네비게이션
OnNewIntent에 관해 정리해 보겠습니다.화면 전환을 하실떄 위와같은 기본 화면 전환 인텐트입니다. 기본적인 Activity 생명주기에 따라, OnCreate -> OnResume -> .... 이런식으로 시작이되죠?위와같이 foreground 상태(Bactivi
웹뷰를 사용하는 앱을 개발하다 보면 웹뷰와 앱간의 통신이 필요한 경우가 있습니다. 더 자세히 말하자면 웹뷰의 자바스크립트와 안드로이드의 클라이언트 코드의 통신이 필요합니다. 이를 위한 방법으로 javasriptInterface를 사용할 수 있는데요. 그럼 이와 관련된
받아온 데이터의 텍스트 문자열이 null인지 여부를 검사 할 때,저도 처음에 위와 같은 방식으로 검사를 했었습니다.하지만 안드로이드 자체에서 제공하는 TextUtils 가 존재하고 있었습니다. TextUtils 를 사용하면 해당 TextView 의 null 체크 및 빈
안드로이드 > Webview - WebViewClient의 메서드
WebView 에서 특정 URL을 호출 할 때, shouldOverridingLoading 함수를 통해 가로챌 수가 있습니다.이때 KakaoLink 같은 scheme를 통한 앱을 실행하고자 할 경우아래 소스에서 "intent:" 부분을 넣어주시면 됩니다.
AtomicBoolean는 boolean 자료형을 갖고 있는 wrapping 클래스입니다. AtomicBoolean 클래스는 멀티쓰레드 환경에서 동시성을 보장합니다.자바에서 동시성 문제를 해결하는데 3가지 방법이 있습니다."volatile" 은 Thread1에서 쓰고,
implements ComponentCallbacks2 => 메모리 관리에 필요한 콜백 함수와 인터페이스를 제공함.=> override onTrimMemory (=> 메모리 상태를 체크하여 시스템에서 메모리 정리가 필요할때 호출됨)=> parameters (int le
onCreate : 애플리케이션 생성시 호출, 모든 상태 변수와 공유 리소스를 초기화 onTerminate : 애플리케이션 객체가 종료될 때 호출(항상 호출 된다는 보장을 할 수 없음)리소스 회수를 위한 목적으로 커널에 의해 종료되는 경우 이 함수는 호출되지 않는다.o
//현재 서버 시간을 long 타입으로 가져오기long nowTime = System.currentTimeMillis();System.out.println("1 : nowTime == "+nowTime);//밀리세컨드를 초단위로 가져오기 long nowTime1 = S
설계한 클래스를 혼자 사용하거나,1회성으로 사용할 경우는 필요가 없습니다( 바람직하다고 생각지는 않지만 )저는 private, protected 역시 const 와 쓰는 마찬가지인 이유로 쓴다고 생각합니다.그런것들은 코드상에서 잠재적인 버그를 만들 수 있는 확률을 확실
http://labs.brandi.co.kr/2019/05/30/gojs.html#ju1
매개 변수 :시간 (ms)사용자가 처음에 눌러 시작위치 이벤트 스트림. 이에서 얻어야합니다SystemClock.uptimeMillis ().시간 (ms)이 특정 이벤트가 생성되었습니다.이것은에서 얻어야합니다SystemClock.uptimeMillis().행동의 종류수행
https://jupiny.com/2020/04/22/rxjava-subscribeon-observeon-2/
펜딩인텐트 (Pending Intent) 는 인텐트의 일종이다. 그러면 일반 인텐트와의 차이점은 무엇인지 알아보는 것부터 시작해보자.컴포넌트에서 다른 컴포넌트에게 작업을 요청하는 인텐트를 사전에 생성시키고 만든다는 점과 "특정 시점"에 자신이 아닌 다른 컴포넌트들이 펜
Semaphoresemaphore는 다수의 thread 사이의 병행성 유지를 위해 OS 단위에서 제공되는 기법이다. 기본적인 작동 원리는 특정 thread가 특정 signal을 수신할 때까지 정해진 위치에서 wait하도록 강제하는 것이다.
'ViewfinderView'는 카메라의 뷰파인더 ( 사진을 찍기 위해 혹은 초점을 맞추기 위해 들여다보는 )와 같은 역할이며 기본적으로 BarcodeView보다 커야합니다.
HSV는 Hue, Saturation, Value의 약자로 위의 그림과 같이 원기둥 또는 원뿔 모양으로 표현한다.H : 색상, 색의 종류S : 채도, 색의 탁하고 선명한 정도V : 명도, 빛의 밝기.색상(H)은 0~360도의 범위를 갖지만, 8비트 범위내에서 표현할 때
안드로이드 위젯에 많은 경우 알파(투명) 값을 줘서 위젯을 투명하게 만들기도 한다. 대부분의 경우 프로젝트에서 사용하는 컬러는 /values/colors.xml 파일에 기술한다. 이 파일에 기술하는 컬러는 이 형태는 자신이 가지고 있는 색을 표현하기 위해서 16진수의
OpenCV(Open Source Computer Vision)은 실시간 컴퓨터 비전을 목적으로 한 프로그래밍 라이브러리이다. 원래는 인텔이 개발하였다. 실시간 이미지 프로세싱에 중점을 둔 라이브러리이다. 인텔 CPU에서 사용되는 경우 속도의 향상을 볼 수 있는 IPP
처음 이름을 보면 뭔가 했는데, 설명들 보고나니 이름이 그럴 듯하다. 2byte로 1pixel을 표현하는 방식이고 16bit ( 2byte ) 를 쪼개서 R(5bit), G(6bit), B(5bit) 로 표현하는 방식이다. 2의 5승은 32이므로 Red와 Blue는 3
contour란 이미지에서 같은 값을 가진 곳을 연결한 선을 말한다.마치 등고선이나 등압선처럼동일한 색 또는 색상의 강도를 연결하는 선을 말한다.
Image에는 여러개의 Contours가 존재하고, 그 사이에는 서로 포함하는 관계가 존재합니다. 그 관계를 Contours Hierarchy라고 합니다. 이전, 이후, Parent, Child 관계를 파악할 수 있습니다. 이런 관계를 파악하기 위해서는 cv2.find
플러그인 설치ctrl + alt + S 를 눌러 왼쪽의 탭에 플러그인으로 간다.Type/to see options의 검색창에 kotlin을 검색한다.이미 설치되어있으면 말고, 설치가 안되어있다면 설치하도록 한다.나는 설치가 되어있었다.빌드 스크립트에 플러그인 추가프로젝
자바로 작성된 CameraActivity 부분을 코틀린으로 새로 작성하게 되어 2가지 코드를 분석해보고 공부해보는 시간을 갖도록 하겠다.가장 먼저 눈에 띄는 부분은 상속부분자바는 extends와 implements로 상속이 구분이 된다.부모에서 선언 / 정의를 모두하며
늦은 초기화 lateinit말 그대로 초기화를 늦게 시킨다는 말이다.프로퍼티를 null 허용으로 선언하지 않고 프로퍼티 초기화를 미루는 방법, 이 방법은 lateinit 예약어를 이용하며, '늦은 초기화'라고 부릅니다.아래의 예시코드를 보면 이해에 도움이 됩니다.위의
Android Project에 OpenCV 환경 구성이 되었는지 기본적인 확인을 할 때는 OpenCVLoader.initDebug() 메소를 호출하여 확인할 수 있다.
? 연산자는 좌항이 null이면 null을 반환합니다.코드를 작성하다 보면 null인 경우 default 값을 주고 싶은경우가 있습니다.이때 ?: 를 사용할 수 있습니다. (생긴게 엘비스 프레슬리 헤어를 닮았다고 해서 붙여진 이름이랍니다.)아래의 예시처럼 사용 가능합니
Casting은 주조(鑄造)라는 뜻. 금속을 녹여서 만들어 둔 틀에 부어서 식혀 금속 제품을 만드는 것이다.마찬가지로 코틀린에서도 금속을 녹여서 새로운 제품을 만든다. 주조가 주물의 다양성을 추구한다고 한다면, 코틀린은 클래스와 함수의 다형성을 추구한다.따라서 프로그래
코틀린에서 클래스를 정의하는 키워드는 class인데, object로 클래스를 정의하는 경우도 있다.2가지 경우에서인데,싱글톤익명 클래스 객체 생성먼저 싱글톤에 대해 알아보자면, 인스턴스를 단 하나만 생성하는 방법이다.자바에서는 static을 이용하여 단 하나의 인스턴스
먼저 public은 알고있는대로 public이며 어디서도 접근이 가능합니다.코틀린에서는 아무 변경자도 없는 경우(생략된 경우) 선언은 모두 public이 기본입니다.자바에서는 클래스에 final이 붙지 않으면 모두 다른 클래스에서 상속이 가능합니다.하지만 코틀린에서의
코틀린에서 자주 사용되는 annotation 정리@JvmName@JvmStatic@JvmField@Throws@JvmOverloads@JvmName은 코틀린을 바이트코드로 변환할 때 JVM 시그니쳐를 변경할 때 사용합니다. 즉, 자바에서 호출되는 코틀린 함수의 이름이
일반적으로 객체를 변경하려면 이런 방식을 사용한다.(예제에서 println()의 내용을 보기 위해 Person을 data class로 정의했다.)person 객체의 name과 age를 각각 호출해주는데, 이러한 부분을 블럭으로 묶어서 간결한 코드로 정리할 수 있다.객체
createCameraPreviewSession()에서 프리뷰 세션 생성 하는 순서Preview 세션을 만들기 위해서 TextureView가 가지고 있는 SurfaceTexture를 가져옵니다. SurfaceTexture에 대한 내용은 이전 포스트로 대체합니다.Surf
출처 : https://jvvp.tistory.com/1081erode는 기존 객체의 영역을 깎아내는 연산으로 객체의 크기가 감소합니다.dilate는 기존 객체의 영역을 확장하는 연산으로 객체의 크기가 증가합니다.이번 프로젝트에서는 dilate를 이용해 이미지
인텔에서 개발한 실시간 컴퓨터 비전을 목적으로 한 실시간 이미지 프로세싱에 중점을 둔 프로그래밍 라이브러리이다.C/C++ 언어로 개발되었으며, 파이썬, 자바 및 매트랩 / OCTAVE를 지원한다.OpenCV는 TensorFlow, Torch / PyTorch 및 Caf
imread()이미지를 흑백으로 읽기imread() - COLOR = RGB로 읽기imread() - GRAYSCALE = Grayscale로 읽기imread() - unchanged = 파일 속성 그대로 읽기이미지 개체 속성, 픽셀 접근객체의 타입, 원소의 데이터 타
참조 : https://jvvp.tistory.com/1082?category=879041GradientGradient 연산은 엣지를 검출할 때 사용합니다.Gradient = 팽창(dilation) - 침식(erosion)TophatTophat 연산은 밝기 값
외곽선 검출(contours)외곽선을 검출할 때는 findContours를 사용하고 그릴 때는 drawContours를 사용합니다.검은색 배경에 흰색 객체를 식별하여 검출합니다.RETR_TREE외부 영역부터 계층적 구조를 추출합니다.Labeling라벨링은 이진화된 이미
안드로이드 스튜디오에서 context가 들어가야 할 곳에 this를 넣을때도 있고, getApplicationContext()를 넣을때도 있습니다.신기한게 둘중 뭘 넣더라도 대부분 잘 돌아갑니다.둘의 차이는 뭘까요?getBaseContext(), getApplicati
안드로이드 앱은 publish-subscribe 디자인 패턴과 비슷하게, 안드로이드 시스템이나 다른 안드로이드 앱으로부터 브로드캐스트 메시지를 받거나 보낼 수 있다. 브로드캐스트는 어떤 이벤트가 발생했을 때 보내진다. 예를 들어, 안드로이드 시스템은 시스템이 부팅되었을
메모리누수(Memory leak) 란 보통 참조가 완료되었지만 할당한메모리를 해제하지않아서 발생합니다. 특히 강한 참조의 경우 가비지 컬렉터가 메모리에서 객체를 제거할 수 없으므로 라이프사이클에 맞게 참조를 끊어야 사용하지 않는 메모리를 해제할 수 있습니다. 메모리누수
기존 프로젝트의 일부를 따라서 만들어보기 위해 새 프로젝트를 열어서 환경을 만들던 중시작부터 build.gradle에서 오류가 났다.이번 오류도 지난번과 마찬가지로butterknife 8.8.1 : Plugin with id 'com.jakewharton.butterk
프로젝트에 기본적인 템플릿? 처럼다른 기본 구성요소 프로젝트를 추가하는 방법프로젝트를 같은 레벨의 위치에 올려두고,예를들어 현 프로젝트가 DetectAntiBody이고 추가하려는 프로젝트가 Common이라면,이렇게 같은 레벨의 위치에 올려두고프로젝트의 Build.gra
Plugin with id 'com.android.application' not found.처음에 이 오류가 떠서 build.gradle 을 수정해보다가openCV 를 불러오는 부분에서 인식을 못하면서 널포인터 익셉션 오류가 발생했다.openCV NullPointerE
해당 오류 메시지와 함께 프로젝트 빌드가 되지 않았다.내가 했던 행동은 라이브러리와 dependencies의 버전 업데이트버전을 다시 낮추고 편안한 마음을 가져볼까 했지만, 그렇게 도망쳐서야 배울 수 없고, 회피하는 습관을 만들기 싫어 버전을 업데이트하고 돌아가게 만들
Android Issue Error Key was created with errors: 경고: 다른 저장소 및 키 비밀번호는 PKCS12 KeyStores에 대해 지원되지 않습니다.https://hankyo-dev.tistory.com/entry/Android
react-image-marker리액트 이미지 마커를 이용하여 이미지 위에 x,y좌표를 구한뒤,해당 좌표를 배열 오브젝트에 데이터를 추가하는 과정에서 무한루프가 돌았다.디버깅을 해본 결과, CustomMarker가 반복되어 불러와지는 현상 때문이었는데억지로 데이터를 비
react-image-marker를 이용하여 구현하였더니클릭된 위치의 정확한 좌표보다 오차가 발생하며 좌표를 가져오는것을 확인하였다.https://myhappyman.tistory.com/158해당 블로그를 참고하여 라이브러리 없이 재구현할 것을 고려할 것
Mac에서 lvim path 설정시, documentation에 있는대로 bash_profile에 접근하려면 잘 안된다Users/User_name/위치에서 nano ~/.zshrc로 접근하여 path를 추가하였더니,수정 후, 소스파일 실행 명령어 쳐주고,lvim 하면
project를 pull받고, main branch에 curr인 상태에서,work_branch를 만들고 작업을 한 후, stash에 임시 저장 후,main branch로 잠시 이동하여,origin의 main에 있는 코드를 당겨받아 최신화 하고,다시 work_branch
During 'push Trial', met "Updates were rejected because the tip of your current branch is behind its remote counterpart." message.also During 'pull Tr
settings페이지의 UI 정렬을 수직정렬로 변경해달라는 업무를 받았다.먼저fix-settings-ui branch를 만들고,작업을 하다가\~~ 보면,main브랜치가 업데이트 되어있을 것이다.그럼 push 전에 main 브랜치를 최신화해두고 push 해야하는데,mai
Partial은 말 그대로 객체의 부분집합으로 객체를 구성할 수 있게 해주는 것입니다.유틸리티 타입, 제네릭 타입 이라도 불립니다.파셜 타입은 특정 타입의 부분 집합을 만족하는 타입을 정의할 수 있습니다.부분집합 예시부분집합을 인터페이스를 사용한 예시Partial 구현
Double Check ListGraphQL var name related to its pathIs it necessary to use this UI component? or has better way to use another?Indent!, How to check
수정한 코드를 staging and deploy 하는 절차에 대해 간단하게 적어두려고 한다.담당PM분께 컨펌(via DM..)한 후, tribe-supplier-directory(해당 카테고리 채널)에이런 식으로 deploy 의사를 밝혀 동의를 구한다.part-fron
https://github.com/airbnb/javascript#ecmascript-6-es-2015-styles
When you access a primitive type you work directly on its value.stringnumberbooleannullundefinedsymbolbigintWhen you access a complex type you work on
avoid using var.eslint: prefer-const, no-const-assignWhy? This ensures that you can’t reassign your references, which can lead to bugs and difficult t
Why? They allow you to define all the properties of an object in one place.Why? It is shorter and descriptive.Why? It’s easier to tell which propertie
무슨 말인지 이해가 안감 - 22.08.11It’s ok to omit the return if the function body consists of a single statement returning an expression without side effects, f
Why? Destructuring saves you from creating temporary references for those properties, and from repetitive access of the object. Repeating object acces
eslint: quotesWhy? Broken strings are painful to work with and make code less searchable.eslint: prefer-template template-curly-spacingWhy? Template s
eslint: func-styleWhy? Function declarations are hoisted, which means that it’s easy - too easy - to reference the function before it is defined in th
eslint: prefer-arrow-callback, arrow-spacingWhy? It creates a version of the function that executes in the context of this, which is usually what you
Why? class syntax is more concise and easier to reason about.Why? It is a built-in way to inherit prototype functionality without breaking instanceof.
Why? Modules are the future, let’s start using the future now.Why? This makes sure you have a single default export.Why? Although the one-liner is con
eslint: no-iterator no-restricted-syntaxWhy? This enforces our immutable rule. Dealing with pure functions that return values is easier to reason abou
eslint: dot-notationeslint: no-restricted-properties.출처 : https://github.com/airbnb/javascript#ecmascript-6-es-2015-styles
We want to avoid polluting the global namespace.Captain Planet warned us of that.eslint: no-undef prefer-consteslint: one-varWhy? It’s easier to add n
const and let declarations are blessed with a new concept called Temporal Dead Zones (TDZ).It’s important to know why typeof is no longer safe.출처 : ht
eslint: eqeqeqObjects evaluate to trueUndefined evaluates to falseNull evaluates to falseBooleans evaluate to the value of the booleanNumbers evaluate
eslint: nonblock-statement-body-positioneslint: brace-styleeslint: no-else-return출처 : https://github.com/airbnb/javascript#variables--no-chain-as
Why? Requiring operators at the beginning of the line keeps the operators aligned and follows a pattern similar to method chaining. This also improves
Place single line comments on a newline above the subject of the comment. Put an empty line before the comment unless it’s on the first line of a bloc
eslint: indenteslint: space-before-blockseslint: keyword-spacingeslint: space-infix-opseslint: eol-lasteslint: newline-per-chained-call no-whitespace-
eslint: comma-styleeslint: comma-dangleWhy? This leads to cleaner git diffs. Also, transpilers like Babel will remove the additional trailing comma in
eslint: semiWhy? When JavaScript encounters a line break without a semicolon, it uses a set of rules called Automatic Semicolon Insertion to determine
eslint: no-new-wrapperseslint: radix no-new-wrappersWhy? The parseInt function produces an integer value dictated by interpretation of the contents of
eslint: id-lengtheslint: camelcaseeslint: new-capeslint: no-underscore-dangleWhy? JavaScript does not have the concept of privacy in terms of properti
Instead, if you do make accessor functions, use getVal() and setVal('hello').출처 : https://github.com/airbnb/javascript#variables--no-chain-assign
출처 : https://github.com/airbnb/javascript#variables--no-chain-assignment
출처 : https://github.com/airbnb/javascript#variables--no-chain-assignment
출처 : https://github.com/airbnb/javascript#variables--no-chain-assignment
Arrow FunctionsClassesObject ShorthandObject ConciseObject Computed PropertiesTemplate StringsDestructuringDefault ParametersRestArray SpreadsLet and
The Standard Library contains utilities that are functionally broken but remain for legacy reasons.eslint: no-restricted-globalsWhy? The global isNaN
기존 오픈소스 LazyLoad출처 : https://github.com/twobin/react-lazyload/blob/master/src/index.jsx위 코드를 리팩토링 하는 작업을 했다기존 소스는 class형 컴포넌트로 구성되어 있고, 클래스변수를 이용
기존의 UI컴포넌트인 Tags 컴포넌트를 리팩토링하는 Task를 진행하였다.아래 기존코드를 보면 renderTag prop이 Tag컴포넌트의 children을 render하도록 작성이 되어있는데, renderTag라 함은 tag 자체를 render하는 것이 더 합리적이
트레이딩뷰(Trading View) 라이브러리 사용 이슈사용하는 트레이딩 뷰라이브러리 공식 웹사이트 : 영어 : https://www.tradingview.com/HTML5-stock-forex-bitcoin-charting-library/한글 : 업그레이드
Xcode에서 프로젝트빌드 하려는데 위 에러 발생시,디렉토리의 경로를 받아오지 못하는 오류임을 확인했다.프로젝트 폴더에서 > ios > Pods > ${에러가 발생하는 라이브러리 이름} > ~.sh > copy_dir() 검색아래처럼 변경한다.rsync 명령어가 잘 동
/.zshrc에 위 코드를 추가하면 된다
GetX example_nav2를 돌려보려는데위 오류가 발생했다위 오류는 src/main/Manifest.xmlactivity 항목에 android:exported="true" 를 추가하고gradle-wapper.properties 파일에 gradle 버전을 7.6.1
캐시 삭제하고 라이브러리 삭제 후 재설치 후 실행시 문제가 해결되는 경우가 종종 있다터미널을 실행하여 프로젝트 폴더 경로에서 clean 후 패키지 다시 설치하기이어서 ios 폴더 경로에서 clean 후 패키지 다시 설치하기혹시 모르니까 xcode Product - Cl
위 에러가 발생할 경우,제 경우엔 allauth의 Docs를 보면,위와 같이 나와있으나, serviceID를 넣으면 안되고 APPID를 넣어줘야 한다.APP ID를 넣으니 성공