All(264)
-
flutter upgrade를 실행한 뒤, flutter로 뭘 해도 building flutter tools...와 함께 에러가 발생한다면...?
flutter upgrade를 사용하여 flutter를 업데이트 하는 중, 에러가 발생하는 경우가 있다. 다시 업데이트를 시도해서 정상적으로 동작하면 다행이지만, 간혹가다가 flutter를 실행하려고만 하면 building flutter tools...라는 문구와 함께 빌드를 시도하다가 에러를 주르륵 내뱉는 경우가 있다. flutter upgrade를 실행하는 중 필요한 파일들을 /.pub-cache에 저장한 뒤, flutter tools를 빌드하기 때문으로 추정된다. 플러터를 설치한 위치로 이동하여 지우고 다시 설치해도 마찬가지라면, /.pub-cache를 지우고 다시 flutter upgrade를 실행해보도록 하자.
2020.10.18 -
[Programmers/sort] H-index
문제의 내용은 프로그래머스/정렬/H지수에서 확인할 수 있다. 이 문제는 사실상 국어 문제라고 봐도 무방하지 않을까싶었다. 우선 문제를 풀기 전에, H지수가 뭔지에 대해 정확하게 짚고 넘어가는게 중요하다. 이것은 H 지수에 대한 내용이다. 어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 이 과학자의 H-Index입니다. 문제를 유출하면 법적인 책임을 물을 수 있다고 명시되어있지만, 위의 글은 위키 백과를 참고한 내용이라니까 상관 없겠지. H지수에 대한 내용을 변수 h에 대해 정리하면 다음과 같다. n편의 논문이 있다. 이 중에 h번 이상 인용된 논문은 h편 이상이다. h편 이상 인용된 논문을 제외하고 남은 논문의 인용 횟수 중..
2020.10.18 -
Flutter에서 Native로 작성한 Android/iOS View 사용하기
Flutter에서 Native(Android/iOS)로 작성한 UI Component 사용하기 Flutter를 사용해서 하이브리드 앱을 만들 때, 성능상 한계로 인해 네이티브를 사용해 UI를 작성해야 할 때가 있다. 혹은 이미 Kotlin/Swift를 사용해서 만들어진 컴포넌트 UI가 있어서, Flutter로 코드를 재작성하지 않고 네이티브로 작성된 UI를 불러와야 할 때가 있다. 이러한 경우 어떻게 하면 되는지 살펴보도록 하자. 현재 테스트는 안드로이드만 해봤기 때문에, 이 글은 안드로이드 기준으로 작성한다. 안드로이드는 v2로 업데이트 되면서 사용법이 좀 달라졌기 때문에 삽질을 했지만, iOS는 아마 별 문제 없으리라 생각한다. 사실 공식 문서 Hosting native Android and iOS ..
2020.10.12 -
Flutter에서 C/C++로 Pointer를 전달하여 연산하기
flutter의 ffi 라이브러리의 사용 ffi 라이브러리를 사용하면 C/C++로 작성된 코드를 사용할 수 있다. 아래와 같이 ffi_test 프로젝트를 생성해보자. flutter create ffi_testlib/main.dart에 플로팅 버튼을 누르면 카운트가 1씩 증가하는 샘플 코드가 작성되어있을 것이다. 이제 C의 malloc을 사용해서 int의 사이즈만큼 메모리를 할당한 뒤, 값을 변경하여 카운트를 증가시키도록 수정해보자. ffi 패키지는 기본으로 포함되어있지만, ffi 라이브러리는 pubspec.yaml 파일에 의존성을 추가해줘야한다. 아이러니하게도 ffi만 있으면 C 함수와 연동은 가능하지만, 포인터에 직접 메모리를 할당하는 동작을 할 수 없다. pubspec.yaml의 dependencie..
2020.09.25 -
Kotlin에서 JSONObject .get*의 확장 함수를 만들어봤다. (reflection, generics, reified)
반복 구문의 발생 Java, Kotlin에서 JSONObject을 사용하여 JSON으로 작성된 데이터 구조를 파싱할 때, getInt, getString 등을 사용하는 경우가 많았다. 이 메서드는 문자열 키를 받아서 매칭되는 값을 반환하는데, 매칭되는 값이 없을 경우 Exception을 던지게 되어있다. Exception이 발생한 경우에는 null을 반환하도록 코드를 작성하면, 아래와 같다. try { JSONObject.getInt("key") } catch (JSONException e) { e.printStackTrace() null } try { JSONObject.getString("key") } catch (JSONException e) { e.printStackTrace() null }위에서..
2020.09.07 -
libcrypt.so와 glibc의 크로스 컴파일에 대하여
libcrypt.so(crypt 라이브러리)에 대하여 이전에 OpenResty(NGINX)를 크로스컴파일하는 과정을 기록한 글에서, 글의 말미에 libcrypt.so에 관련된 내용을 잠깐 기록했었다. 별도의 글을 남기는 이유는 라이브러리 자체가 특정 서버에만 영향을 끼치는 게 아니며, 리서치 시 glibc의 libgcrypt.so, openssl의 libcrypto.so등 비슷한 라이브러리로 인해 파악이 어려웠기 때문이다. 간략하게 libcrypt.so에 대해 알아보자. Crypt 라이브러리 crypt 라이브러리를 구글에서 검색해보면, 위키피디아의 crypt(c)페이지가 나온다. 페이지 상단의 몇 줄을 읽어보면, 비밀번호 해쉬값 생성시 사용되는 녀석임을 알 수 있다. 이제 왜 이 녀석이 없으면 HTTP_..
2020.05.18