본문 바로가기

반응형

분류 전체보기

다음 메인 화면에 선정된 블로그 포스트들 아래, 캡쳐한 이미지들은 최근 몇 년 사이 다음 메인화면에 선정된 내 바느질 블로그의 글들이다. 운 좋게도 다음 편집자는 내 포스트에 관심을 많이 보였다. 노출이 많이 된 덕분에 많은 사람들에게 내 블로그를 알리는 데 도움이 되었으리다. 이 포스트에 나는 20 여 개의 이미지를 업로드했는데, 사실 이것보다도 더 많다. 그 사이, 기념으로 캡쳐해서 모아놓은 것인데 이것들도 쌓이니까 자리를 너무 많이 차지한다. 이곳에 담아놓고 구경을 해야겠다. 참고로 내 블로그의 이름은 '바느질공방 여우비' 이다. 아이디는 '찌꺼'나 '바느질하는찌꺼'로 등록되어 있다. 몇몇은 아이콘에 가려서 내 것인지 알 수 없는 것도 있는데, 바느질과 관련된 것이 내 포스트들이다. 더보기
유튜브 4천 시간 채우기 이건 내 유튜브 스튜디오의 수익창출과 관련된 페이지이다. 내 유튜브 채널은 현재 구독자는 1천 명이 넘은 상태이다. 구독자를 1천명 확보하는 데 3년 이상이 걸렸다. 그러나 거기서 끝이 아니다. 1천명 구독자에 도달했을 때, 나의 충족 시간은 2,300대에 머물러 있었다. '산너머 산!'이라는 조상님들의 말이 실감나는 순간! 그러나 나는 포기하지 않고 열심히 영상을 업로했다. 그 사이 구독자는 좀더 늘어 1,280명이 넘었고 시간도 꾸준히 늘고 있다. 위 사진은 며칠 전 내가 확보한 시간을 스크린샷 한 것이다. 4,000시간은 커녕, 2,999시간에 불과한 데도 반가웠다. 딱 1시간만 확보하면 3천 시간이다. 3천이란 숫자는 아직 1천 시간이 필요한 어이없는 시간이지만, 여기에 도달하는 것도 쉽지가 않았.. 더보기
KT 멥버십의 다양한 혜택들 나는 스마트폰을 10년도 넘게 KT를 사용하고 있다. 그런 만큼 KT 멤버십 혜택도 잘 알고 있고 최대한 멤버십 혜택을 이용하려고 애쓰고 있다. 이 포스트에 담긴 이미지들은 현재 KT멤버십 포인트로 혜택을 받을 수 있는 기업들이다. 소소한 혜택이지만, 잘 이용하면 조금씩 돈을 절약할 수 있어서 나쁘지 않다. KT멤버십 제휴사들은 조금씩 변하고 그 혜택도 조금씩 변해왔다. 이것들이 현재 2023년도의 혜택기준이다. 내가 가장 잘 이용하는 것은 빠리바게트와 GS25시이다. 얼마 안되는 금액이라도 이곳에 갈 때면 꼭 포인트 혜택을 챙긴다. 더보기
구글킵(Goggle Keep), 편리한 메모 앱 구글킵(Google Keep)은 구글에서 출시된 메모앱이다. 내가 이 앱을 즐겨 쓰는 것은 메모를 할 때, 사진을 같이 담을 수 있기 때문이다. 실제로 다양한 기억할 거리들 중에는 이미지 정보들이 많다. 사진이나 캡쳐한 정보들이 중요한 메모거리일 때가 종종 있는데, 구글킵은 이것들을 자유롭게 저장할 수 있다. 위 화면은 내 구글킵의 한 장면 모습이다. 실제로 내가 적어 넣은 글씨보다 캡쳐한 이미지들이 더 많다. 또 구글킵이 메모장으로 좋은 것은 구글의 한 서비스이기 때문에 컴퓨터와 스마트폰을 오가며 자유롭게 활용할 수 있다. 이런 자유로운 연동 때문에 그 어떤 메모앱보다 잘 사용하고 있다. 더보기
인터페이스 Interface 확장 인터페이스는 객체 사용 방법(메소드 호출 방법)을 기술한 타입이다. 따라서 메소드 선언부만 있으면 된다. 그러나 자바8부터는 실행내용을 가지고 있는 디폴트 메소드를 작성할 수 있다. 이 디폴트 메소드는 인터페이스에 선언 되지만, 인터페이스만으로 사용할 수 없다. 디폴트 메소드는 구현 객체의 인스턴스 메소드이다. 그렇다면, 인터페이스에서 왜 디폴트 메소드가 필요한 걸까? 그것은 인터페이스의 확장을 위해 필요하다. 기존 인터페이스에서 추상메소드(method2();)를 추가할 수는 없다. 추상메소드를 추가하면, 기존 구현 클래스들이 모두 에러가 난다. 그런데 디폴트 메소드(default methode2() {...})는 추상 메소드가 아니다. 디폴트 메소드는 구현 클래스에서 꼭 구현할 필요도 없다. 디폴트 메.. 더보기
인터페이스 Interface 상속 인터페이스 간에도 상속이 가능하다. 클래스( class)는 상속을 하나만 할 수 있는데, 인터페이스는 다중 상속을 할 수 있다. 그것을 작성하는 코드는 다음과 같다. public interface 하위 인터페이스 extends 상위인터페이스1, 상위인터페이스2 {...} 그런데 하위인터페이스를 구현하는 클래스는 아래 추상 메소드를 모두 재정의해야 한다. 예를 들어, 하위인터페이스의 추상 메소드와 상위인터페이스1의 추상 메소드, 상위인터페이스2의 추상메소드가 존재한다고 한다면, 이것들을 모두 재정의 해 줘야 한다는 것이다. 그 코드는 다음과 같이 작성한다. 하위인터페이스 변수 = new 구현클래스(...); 상위인터페이스1 변수 = new 구현클래스(...); 상위인터페이스2 변수 = new 구현클래스(... 더보기
인터페이스 강제타입변환 Casting 인터페이스 강제타입변환(Casting)이란 인터페이스 타입으로 자동 타입변환 된 후, 다시 구현 클래스 타입으로 변환되는 것을 일컷는다. 구현클래스 타입에 선언된 다른 멤버를 사용하기 위해서 캐스팅이 꼭 필요할 때가 있다. 선언은 다음과 같이 해준다. 구현클래스 변수 = (구현클래스) 인터페이스 변수; 이렇게 하면, 인터페이스 변수가 구현클래스의 변수로 강제 타입변환이 이루어진다. 이제, 코드로 확인해 보자! 이것은 Vehicle 인터페이스 클래스이다. 여기에는 run 메소드만 있다. Vehicle 을 구현한 버스클래스를 만든다. Bus 클래스는 Vehicle에서 호출한 run메소드 외에 독자적으로 checkFare메소드를 갖고 있다고 해보자. 그러고 나서 실행클래스를 보자! 인터페이스 타입으로 변환을 .. 더보기
인터페이스 배열로 구현객체 관리 인터페이는 선언하는 필드가 여러개가 있을 경우, 배열로 관리하면 참 간단하다. 예를 들어, 타이어의 경우 4개의 필드가 필요하다. 그것을 각각 선언한다면, 다음과 같은 코드를 작성하게 된다. 아래는 실행 클래스이다. 보시다 시피, 처음에는 한국타이어로 4개의 타이어를 다 굴러가게 했다. 그러나 실행 클래스에서 앞타이어 두개를 금호타이어로 바꾸었다. 한국타이어가 굴러가고 뒤이어 앞바퀴가 금호타이어로 변환되었음을 알 수 있을 것이다. 그럼, 이번에는 배열로 바꾸어 코드를 짜보자! 배열로 바꾸면, 코드가 이렇게 간단해진다. 비교하기 쉽게 필드를 각각 선언한 것을 주석처리했다. 게다가 위에서 확인할 수 있듯이 run 메소드는 for문으로 더 간단하게 표현된다. 그럼, 결과는 어떨까? 실행 클래스를 확인해 보자!.. 더보기

반응형