요즘 급 빠져버린 토트넘 마그넷 모으기

우선 손흥민은 기본이고 엠블럼에 신구장 마그넷까지





신구장 마그넷은 나오자마자 품절되었따가 다시 입고 되었는데

얼른 구매했더니 금새 또 품절이 떴다.

그런데 우측에 좀 깨져있는건 아쉽..



챔스에서 우승하면 또 어떤 기념 마그넷이 나올진 모르겠지만 기대가 된다.

얼마 전 나왔던 챔스 열쇠고리도 살려고 했지만 또 매진이 되어버렸는데 재입고가 되었으면 좋겠다




 

 

AIA Vitality x T건강걷기 앱을 알고 난 이후부터 내 삶이 달라졌다.

걸음 수로 포인트만 채우면 통신요금 할인을 받을 수 있다니..

운동도 하고 할인도 받고 일석이조! 이걸 왜 뒤늦게 알았을까. 이 앱을 추천해준 친구에가 감사를 표한다

 

앱 설명 페이지 https://www.tworld.co.kr/poc/html/product/TS3.6.1T.1.html

 

T건강걷기 X AIA Vitality < 제휴혜택 | T world

SK텔레콤 고객만을 위한 '걷기 리워드 프로그램'입니다. "T건강걷기 X AIA Vitality 앱"을 통해 주간단위 걷기 목표를 달성하면, 보상으로 통신비 할인 및 다양한 혜택을 받을 수 있습니다. 단, [마케팅 활용을 위한 개인정보 수집 및 이용동의/ 개인정보 제공 동의]를 완료해야 주간미션 달성에 따른 혜택을 받을 수 있으며, 향후 AIA 보험 관련 마케팅 전화를 받을 수 있습니다. Google Play 또는 Apple App Store에서 T건강걷

www.tworld.co.kr

참고로 SKT사용자만 가능함

4가지 보상을 받을 수 있으나 통신비 할인이 가장 현명한 선택

 

미션은 매주 월요일부터 시작되며 일주일동안 진행되고 한달에 총 4번 도전 가능하며 할인도 중복으로 된다고 한다.

통신비 할인의 경우 다음달 청구요금에 바로 적용됨.

이런식으로 중복 할인도 가능

처음에는 250포인트를 달성해야 보상획득이 가능하며 하루 최대 100p 획득가능

단 7500걸음을 걸어야 50p, 12500 걸음을 걸어야 100p 획득 가능하다

목표를 달성하면 획득해야하는 포인트가 250p에서 300p , 350p 이런식으로 점점 늘어난다. 

최대 제한이 몇 포인트인지는 모름

 

참고로 7000 걸음을 걸어보았는데 영등포역에서 마포대교 끝까지 정도면 7000 걸음을 채울 수 있었다

 

 

평일은 출퇴근 하느라 7500걸음은 채울 수 있었는데 주말은 집에서 마냥 쉬고 싶었다. 

하지만 걸음 수는 채워야 하고 그렇다고 손으로 마냥 흔들고 있을 수도 없는 일

 

그래서 고안해낸 장치

30cm 자, 신발 끈, 폰 케이스로 만든 걷기 장치

물론 나는 걷지 않는다

 

고무줄을 생각했으나 마땅한 고무줄이 없었고 뒤적거리다 찾은 도구들로 만들어보았다

 

자를 책상에 끼워 자의 탄성을 이용한다

 

핑거스냅으로 자를 한번 튕겨주면 탄성으로 폰이 흔들린다. 그럼 걸음 수가 늘어난다.

 

 

시연 영상

 

한번의 핑거스냅으로 평균 4~50걸음을 획득할 수 있다.

 

그런데 사실 해보면 생각만큼 유용하진 않다. 왜냐하면 수시로 계속 튕겨줘야 하기 때문.

자동으로 계속 흔들어주는게 아닌 이상 결국 본인이 계속 해줘야 한다. 물론 팔로 흔드는 것 보단 편하겠지만.

 

 

 

 

 

 

샤오미 보조배터리를 살까 하다가 어차피 갤10을 쓰고 있으니 같은 삼성으로 써보자 해서 구입

 

배송비 합쳐 18000원에 구입(정가 21000원)

 

EB-P1100 전면

 

재질은 플라스틱이 아닌 금속 느낌의 재질로 모서리에 폰이 긁힐 경우 기스가 날 수도 있을 것 같아 케이스를 씌우면 좋을 것 같다

 

10000 mAh의 용량이지만 실사용용량은 6300 mAh. 같은 용량의 샤오미는 7000mAh를 조금 넘는다고 한다.

배터리

삼성 공식 홈페이지 : https://www.samsung.com/sec/mobile-accessories/10000mah-battery-pack-eb-p110c/EB-P1100CPKGKR/)

  • 용량10000 mAh
  • 사용 가능 용량 (일반 충전)6300 mAh, 31.5 Wh
  • 사용 가능 용량 (고속 충전)3100 mAh, 27.9 Wh
  • 갤럭시S9 2.1 회 충전, 갤럭시노트9 1.6회 충전 가능

 

듀얼 충전도 가능한 2개의 포트

* 배터리팩 상단에 위치한 '배터리 체크' 버튼을 눌러 고속 충전 모드에서 듀얼 충전 모드로 변경하세요.
* 고속 충전은 하나의 기기를 충전할 때만 사용 가능합니다.
* 내장된 충전 케이블은 약 20 cm 길이의 Type-C 케이블로 1개만 제공됩니다. 
* 상기 이미지의 케이블 외 부속품은 연출용이며, 내장 케이블 외의 별도 케이블은 추가로 구매가능합니다.
별도로 판매 하는 케이블 사양은 국가별로 다를 수 있습니다.

 

배터리 체크 버튼을 누르면 듀얼충전모드로 변경이 가능하다는데

테스트해보니 딱히 안눌러도 2개의 기기 충전이 가능했다.

 

또 1개의 기기만 충전할 때도 눌러보았는데 고속충전은 유지되었다.

딱히 저 배터리 체크 버튼의 기능이 뭔지는 모르겠다.

 

배터리 잔량 표시

 

 

구성품은 20cm C 타입 케이블이 전부이다.

 

사이즈는 갤S10과 비슷한 크기이며

약 14cm x 7cm의 크기이다.

 

다른 제품으로 무선 충전도 지원하는 삼성 무선충전 보조배터리도 있는데 그건 5만원이 넘기 때문에

굳이 살 필요 없이 이걸로도 충분하다고 본다.

 

배터리 스펙

 

기본 코드는 이 링크를 참고하였습니다.

https://javaslave.tistory.com/78

 

POI Library를 이용한 Excel Read

Apache POI Grid 형태의 데이터를 핸들링 하는 화면에는 보통 '엑셀다운로드', '엑셀업로드' 버튼이 존재한다. 이를 구현하기 위해서 Apache에서 제공하는 POI 라이브러리를 이용하는 방법을 알아보도록 하자. Jav..

javaslave.tistory.com

 

POI 버전은 3.11을 사용하였습니다. (최신 poi 4점대 버전에서는 코드가 동작하지 않습니다)

poi 3.11 라이브러리 파일

lib (2).zip
7.51MB
lib.zip
3.21MB

용량 제한으로 압축파일 2개로 나뉘어 첨부함

 

사용 용도 

엑셀 내용( 확장자 xlsx 필수)
account.xlsx
0.01MB

위와 같은 엑셀 내용에서 각 열 별로 데이터를 긁어와 각 ArrayList에 저장함

로그인시

ID에는 ArrayList1.get(0)

암호에는 ArrayList2.get(0) 

이런 식을 1:1 매칭해서 로그인에 활용하는 단순 용도

총 6개의 ArrayList  선언 (액셀에 총 6개의 열이 있기 때문)

 

스위치 문에서 각 열마다 1개의 ArrayList에 값을 넣음

발생하는 문제점

첫 열의 개수에 따라 나머지 열의 개수가 결정됨

첫 열이 10개고 나머지 열이 20개,16개 등등 제 각기라면 첫 열 기준으로 모두 10개의 데이터만 가져오게 되는 문제가 존재함

 

전체 코드

package poi;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class POIReader {
    public static List<String> account1 = new ArrayList<String>();
    public static List<String> account2= new ArrayList<String>();
    public static List<String> account3 = new ArrayList<String>();
    public static List<String> account4 = new ArrayList<String>();
    public static List<String> account5 = new ArrayList<String>();
    public static List<String> account6 = new ArrayList<String>();
    
   /**
    * XLSX 파일을 분석하여 List<poi> 객체로 반환
    * @param filePath
 * @return 
    * @return
    */
   public static void xlsxTopoiList(String filePath) {
       // 반환할 객체를 생성
       FileInputStream fis = null;
       XSSFWorkbook  workbook = null;
       
       try {
           
           fis= new FileInputStream(filePath);
           // XSSFWorkbook은 엑셀파일 전체 내용을 담고 있는 객체
           workbook = new XSSFWorkbook (fis);
           
           // 탐색에 사용할 Sheet, Row, Cell 객체
           XSSFSheet curSheet;
           XSSFRow   curRow;
           XSSFCell  curCell;
//           poiList vo;
           
           // Sheet 탐색 for문
           for(int sheetIndex = 0 ; sheetIndex < workbook.getNumberOfSheets(); sheetIndex++) {
               // 현재 Sheet 반환
               curSheet = workbook.getSheetAt(sheetIndex);
               
               // row 탐색 for문
               for(int rowIndex=0; rowIndex < curSheet.getPhysicalNumberOfRows(); rowIndex++) {
                   // row 0은 헤더정보이기 때문에 무시
                   if(rowIndex != 0) {
                       // 현재 row 반환
                       curRow = curSheet.getRow(rowIndex);
//                       vo = new poiList();
                       String value;
                           // row의 첫번째 cell값이 비어있지 않은 경우 만 cell탐색
                       System.out.println("---"+curRow.getCell(0));
                       if(curRow.getCell(0) != null){ // 첫번째열 모자를 때 구분
                    	   if(!"".equals(curRow.getCell(0).getStringCellValue())) {
                               
                               // cell 탐색 for 문
                               for(int cellIndex=0;cellIndex<curRow.getPhysicalNumberOfCells(); cellIndex++) {
                                   curCell = curRow.getCell(cellIndex);
                                   
                                   if(true) {
                                       value = "";
                                       // cell 스타일이 다르더라도 String으로 반환 받음
                                       if(curCell != null){ //각 열의 목록 길이에 따라 분기
                                    	   switch (curCell.getCellType()){
                                           case XSSFCell.CELL_TYPE_FORMULA:
                                               value = curCell.getCellFormula();
                                               break;
                                           case XSSFCell.CELL_TYPE_NUMERIC:
                                               value = curCell.getNumericCellValue()+"";
                                               break;
                                           case XSSFCell.CELL_TYPE_STRING:
                                               value = curCell.getStringCellValue()+"";
                                               break;
                                           case XSSFCell.CELL_TYPE_BLANK:
                                               value = curCell.getBooleanCellValue()+"";
                                               break;
                                           case XSSFCell.CELL_TYPE_ERROR:
                                               value = curCell.getErrorCellValue()+"";
                                               break;
                                           default:
                                               value = new String();
                                               break;
                                           }
                                       }
                                       switch (cellIndex) {
                                       case 0: // name
                                    	   account1.add(rowIndex-1, value);
                                           break;
                                           
                                       case 1: // 암호                                	   
                                    	   account2.add(rowIndex-1, value);
                                           break;
                                           
                                       case 2: // 여기서 하나씩 분류
                                    	   account3.add(rowIndex-1, value);
                                           break;
           
                                       case 3: // 여기서 하나씩 분류
                                    	   account4.add(rowIndex-1, value);
                                           break;
                                           
                                       case 4: // 여기서 하나씩 분류
                                    	   account5.add(rowIndex-1, value);
                                           break;
                                           
                                       case 5: // 여기서 하나씩 분류
                                    	   account6.add(rowIndex-1, value);
                                           break;
                                       default:
                                           break;
                                       }
                                   }
                               }
                           }
                       }
                       
                   }
               }
           }
       } catch (FileNotFoundException e) {
           // TODO Auto-generated catch block
           e.printStackTrace();
       } catch (IOException e) {
           // TODO Auto-generated catch block
           e.printStackTrace();
           
       } finally {
           try {
               // 사용한 자원은 finally에서 해제
               if( workbook!= null) 
            	   workbook.close();
               if( fis!= null) fis.close();
               
           } catch (IOException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
           }
       }
   }
}

 

 

깜빡 하면서 실행되지 않는다

최신 버전의 이클립스를 사용하다가 플러그인이 지원을 하지 않아 구 버전(Neon) 이클립스를 받아서 실행하였다

그런데 실행이 되지 않는다. 또 한참을 삽질을 했다.

이 현상을 해결하기 위해 구글링을 해보면 eclipse.ini 파일 수정하라는 얘기가 제일 많이 나온다

-vm 에 자바 경로를 추가해라..

java.se.ee 였나 이거 추가해라.. 등등이 있는데 전혀 해결되지 않았다

결론은 자바 버전이 문제였다

자바를 11.0.2 최신 버전을 설치했었는데 이게 이클립스 구버전에서 지원이 안되는 것이었나보다.

자바를 지우고 구버전 JDK 1.8.0을 설치하였따

그랬더니 단번에 해결..

오늘도 역시나 최신 업데이트는 함부로 하는게 아니라는 진리를 깨달았다..

String 배열을 사용해서 콤보박스에 값들을 보여줬었는데

ArrayList를 사용해서 콤보박스에 보여주고 싶었따.

스트링 배열은 String[] account1 = { id,id1,id2}

이런식으로 콤마로 이루어진 값이었는데 ArrayList는 배열마다 각 값을 가지고 있기 때문에 나중에 관리하기 편할 것 같았다.

기존 String 배열(account1)을 콤보박스에 넣었을 때 코드

JComboBox<?> comboBox = new JComboBox<Object>(account1);

ArrayList(account1)를 콤보박스에 넣을 때 코드

JComboBox<?> comboBox = new JComboBox(account1.toArray(new String[account1.size()]));

이렇게 하면 account1 배열의 사이즈만큼 알아서 콤보박스에 값이 노출되었다

나이키 토트넘 핫스퍼 아카데미 드릴탑 트레이닝 세트 구매

신제품이지만 날씨는 점점 더워지고 있다. 다시 추워질 때 입으면 되니 구매

상하의 세트로 S 사이즈를 주문. 드릴탑은 기모처리가 되어있다

그런데 전에 구매한 스쿼드 드릴탑(https://yonoo88.tistory.com/1230) 과 사이즈 비교했을 때 상의는 좀 더 작게 나왔는지 타이트했다. 지퍼도 올리면 목이 조이는 느낌이 들 정도. 하의는 만족

그런데 스쿼드 드릴탑보다는 신축성은 조금 떨어진다. 그래서 사이즈가 작게 느껴지는 것 같기도 하다.

그래도 디자인은 스쿼드 드릴탑 보다 낫다고 생각됨.

NVY S Spurs Nike Adult THFC Academy Drill Top
NVY S Spurs Nike Adult THFC Academy Drill Top 뒷모습
NVY S Spurs Nike Adult THFC Academy Drill Top 안감 기모처리
NVY S Spurs Nike Adult THFC Academy Pant

이번에 새로 나온 아카데미 THFC 트레이닝 

여름을 대비하여 구매하였다. 사이즈는 M으로 주문했는데 티셔츠는 사이즈가 맞는데 바지가 생각보다 허리가 컸다

이전에 구매했던 트레이닝 반바지(https://yonoo88.tistory.com/1254)는 M이면 딱 좋았는데 이거는 줄로 좀 조여줘야 했다.

옷 마다 또 사이즈가 다른 건 여전한가 보다. 

그리고 이 제품을 산 건 디자인 또한 마음에 들었다. 17 18 어웨이를 연상시키는 디자인이고 그냥 캐주얼하게 입고 다녀도 무난한 색상이라 구매하였다.

NVY M Spurs Nike Adult THFC Academy T-Shirt
NVY M Spurs Nike Adult THFC Academy Shorts

+ Recent posts