분류 전체보기
-
Dart의 컴파일 방식 - AOT, JIT,Memo/Dart & Flutter 2024. 1. 1. 16:39
✅ AOT (ahead-of-time) 여러 아키텍쳐로 컴파일 하려면 많은 시간이 소요 무언가 변경할 때 마다 결과를 보기 위해서 전체 프로젝트를 컴파일하는 것은 비효율적 ✅ JIT (just-in-time) '즉시'라는 뜻으로 실시간 컴파일 방식 작성한 코드의 결과를 바로 화면으로 볼 수 있음 Dart VM에서 작동. 가상머신 위에서 작동하다보니 AOT 방식 보다는 느리다 ⭐ Dart는 AOT, JIT 두 가지 컴파일 방식을 모두 사용. ⭐ 개발 중에는 즉각적인 피드백을 위해 Dart VM이 JIT 컴파일러를 이용 ⭐ 배포 시에는 AOT 컴파일러 방식을 이용 Dart overview A short introduction to Dart. dart.dev
-
형 변환 - 업 캐스팅 / 다운 캐스팅Memo/Java 2023. 12. 29. 23:34
나는 참조변수의 형 변환을 공부하면서 자손 클래스를 조상 클래스로 형 변환하거나, 조상 클래스를 자손 클래스로 강제 형 변환하는 이유가 궁금했다. 이후 검색을 하면서 업캐스팅과 다운캐스팅이라는 용어와 사용 목적 알 수 있었다. ✅ 업 캐스팅(Upcasting) 자손 → 조상으로 형 변환 하위 클래스에 상위 클래스의 자료형을 부여해 상위 클래스처럼 사용하게 하는 것 부모 클래스로 캐스팅된다는 것은 멤버의 개수 감소를 의미 → 자식 클래스에서만 있는 멤버는 실행하지 못한다는 의미 공통의 자료형 사용으로 관리 용이 및 가독성 향상 ✅ 다운 캐스팅(Downcasting) 조상 → 자손으로 형 변환 이미 업캐스팅한 객체를 되돌릴 때 사용 업캐스팅 되었던 객체의 자료형을 다시 하위 클래스 본래의 자료형으로 다시 되..
-
동기, 비동기 / 싱글 스레드, 멀티 스레드Memo/Others 2023. 12. 29. 23:10
✅ 동기 (Synchronous) 코드가 순차적. 작성한 순서대로 실행된다. 함수를 호출(요청)하고 결과(응답, 종료)가 돌아와야만 다음 함수(요청)를 실행할 수 있다. 다음 함수는 선행 작업이 끝나기를 기다려야 한다. ✅ 비동기 (Asynchronous) 코드(작업)가 언제 실행될지 순서를 예측할 수 없다. 함수를 호출(요청)하고 결과(응답, 종료)을 기다리지 않고 다음 함수(요청)을 실행할 수 있다. 예외적으로 'await'로 선언된 메서드는 해당 메서드의 처리가 완료될 때 까지 대기 → 처리 결과를 다른 곳에 넘겨줘야 하는 상황에 사용 ✅ 스레드 (Thread) 프로세스 내에서 실행되는 흐름의 단위 모든 프로세스는 하나 이상의 스레드를 가진다. ✅ 싱글 스레드 (Single Thread) 하나의 프..
-
형 변환 시 toString과 String.valueOf 차이점Memo/Java 2023. 11. 23. 21:02
자바에서 자료형을 변환할 때 toString( ) 또는 String.valueOf( ) 메소드를 이용하게 된다. 나는 문득 두 메소드의 차이점이 궁금했다. toString( )과 String.valueOf( )는 주로 Object값을 String형으로 형변환할 때 주로 사용하는 메소드들이다. 두 메소드의 차이점은 null값에 따른 NullPointException 발생의 유무이다. toString( ) : null 값을 형 변환 시 NullPointerException(NPE)이 발생 / Object의 값이 String이 아니여도 출력 String.valueOf( ) : 파라미터로 null이 오면 "null"이라는 문자열을 출력 즉, toString( )은 null값을 형변환 하면 NPE가 발생하기 때문..
-
[GitHub] 이미 Push한 commit 메시지 수정Memo/Git 2023. 10. 24. 21:53
원격 저장소에 Push를 하고 난 후에 오타 등으로 commit 메시지를 수정해야 하는 일이 종종 생긴다. 검색 결과 아래와 같은 방법으로 commit 메시지를 수정할 수 있었다. 하지만, 협업 중인 프로젝트에 강제로 Push하는 행위는 굉장히 위험하다. 개인 프로젝트라면 상관없겠지만, 다른 사람의 commit 유실되는 등의 문제가 발생할 수 있기 때문이다. 따라서, 이러한 작업을 수행하기 위해서는 팀원과의 충분한 상의가 필요하다. # 가장 최근 commit 메시지 수정 $ git commit --amend # 이전 또는 여러 commit 메시지 수정 $ git rebase -i HEAD~1 // 숫자는 n개의 이전 커밋을 뜻함 변경하려는 commit 앞의 'pick'을 'reword'로 변경 후 저장...
-
Primitive type(int) vs Reference type(Integer)Memo/Java 2023. 10. 2. 15:59
자료형 비교 과정에서 "Type may be primitive" 라는 Warning 문구를 보게되었다. ✅ Primitive type : 원시 타입, 원시(기본) 자료형 - 정수, 실수, 문자, 논리 리터럴 등의 실제 데이터 값을 저장하는 타입 - int, long, double, float, boolean, byte, short, char * 산술 연산 가능 * null로 초기화 불가 ✅ Reference type : 참조 타입, 참조 자료형 - 객체(Object)를 참조(주소를 저장) 하는 타입으로 메모리 번지 값을 통해 객체를 참조하는 타입 - Integer, Long, Double, Float, Boolean, Byte, Short, Char * Wrapper class 라고도 한다. * Unbo..
-
(Patch) 알림 누락과 실수Project/셔틀버스 결행 알리미 2023. 9. 26. 23:53
셔틀버스 결행 알림 서비스를 반년 정도 운영하면서 현재까지 다행히 아무런 문제 없이 잘 서비스 중이었다. 그러던 어느 날, 아침에 일어나 에브리타임 앱을 보던 중 오늘 셔틀버스가 결행이라는 글을 보게 되었다. 그런데 이상하게도 텔레그램 채널에는 아무런 소식이 없었다. 이상함을 느낀 나는 곧장 학교 홈페이지 공지사항을 확인해 보았는데, 아뿔싸. 셔틀버스 결행 공지가 떡하니 떠 있었던 것이었다.. 심지어 해당 문제를 확인한 것은 22일. 즉 셔틀은 이미 전 날부터 결행되고 있었던 것이었다.. 원인은 평소 양식과는 다른 제목으로 게시글이 등록되어 크롤러가 이를 감지하지 못해 발생한 일이다. 나는 오늘(22일)자 결행 사실이라도 빨리 알리기 위해 서버에 접속해 황급히 코드를 수정하였다. 그런데 여기서 두 번째 ..
-
(Update) 다중 계정 출석 체크Project/자동 출석체크 2023. 9. 26. 22:54
자동 출석 체크 시스템을 제작하고 사용한 지 언 6개월이다. 이 시스템을 통해 지금까지 적립하여 사용한 적립금이 6만원을 돌파하였다 👏 그러던 중 최근 친구 한 명이 차를 뽑았다는 소식을 듣게 되었는데, 세차 용품 구매에 관심을 갖고 있었다. 그래서 나는 출석체크 포인트가 굉장히 쏠쏠하다는 것을 알려주고, 친구 계정까지 자동 출석 체크를 해주기로 하였다. 처음에는 귀찮아서 그냥 계정만 다른 소스파일을 2개 만들어 각각 작동되게 할까 생각도 해보았다. 하지만 서버 크론탭 설정, 로그 파일 관리 등 차후 유지 보수에 문제가 있을 것 같아 소스코드를 손보게 되었다. 기존에는 함수만 사용하여 코드를 구성했었는데, 차후 계정이 더 늘어날 것을 대비해 클래스를 사용해 코드를 재 구성 하였다. 이로써 앞으로는 인스턴..