728x90

나무가 가장 푸르른 5월 주말 내내 비가 오던 5월초와 달리 요즘 주말은 날씨가 무척이나 화창하다. 파란 하늘에 푸른 나무들에 빨간 장미는 사진으로 기록하기에 좋은거 같다. 기장에는 공원이 많은 편인데 그중에 구목정공원 윗골 공원은 근처에 있어서 걷는걸 좋아 한다면 걸어서 공원을 둘러 보기에 좋다. 너무 뜨거운 날은 많이 걸어야 해서 힘들지만 요즘 같은 25 정도의 온도는 걷기에 꽤 좋은거 같다. 

 

여름이면 야외물놀이장도 개장하는데 운영기간이 따로 있다. 

 

야외물놀이장

운영기간 :  6/1 ~ 8/31 

운영시간 : 오전 10시 ~ 오후 5시 

 

아이들과 야외 물놀이장을 이용하고 싶다면 윗골공원을 이용해보아도 좋을거 같다. 벤치나 파라솔 같은 자리가 잘 되어 있어서 도시락을 싸들고 와서 소풍처럼 즐기기에도 좋다. 돗자리도 깔고 먹을 수 있는 자리가 있어서 더 좋은거 같다. 

윗골공원 야외물놀이장

수십종의 장미도 구경 할수가 있고 밤에는 조명이 더해져 낮과는 또다른 분위기의 사진을 찍을 수 있다. 노란색, 핑크색, 빨간색, 흰색 장미 까지 다양하게 구경 할수 있고 빨간색도 모두 느낌이 다른 빨간색인거 같다. 

윗골공원

밭으로 넓게 낮게 있는 장미도 있지만 아래 사진 처럼 터널 처럼 덩굴을 타고 올라가 우리의 키를 훌쩍 넘게도 자라고 있어서 요 터널을 지날때면 파란하늘아래 꽃길을 걷는거 같아 더 기분이 좋다. 아마 요기가 주로 포토존이 되지 않을까 싶다. 장미의 송이도 굉장히 커서 보는 재미가 있는거 같다. 

 

5월 세째주 주말이었는데 다음주면 꽃은 더 많이 필듯 하다. 아직 전체가 다 핀건 아니었으니 말이다. 

장미터널

전체가 다 활짝 피지도 않았는데 입구부터 장미향은 굉장하다. 장미는 한송이만 있어도 가까이 가면 향이 굉장히 진하게 나니 말이다. 5월의 장미 구경 하고 싶다면 도심지에서 그리 멀지도 않고 기장 정관에서는 아파트 근처여서 아마도 아파트 사시는 분들은 더 자주 가시지 않을까 싶다. 

에밀놀드

에밀놀드는 왠지 마법이라도 부려질거 같은 노란색의 장미라 하나 더 담아와 본다. 주로 노란색인데 약간의 붉은 색도 띄고 있지만 어딘가 모르게 조금 묘한 노란색인거 같다. 

728x90
728x90

이마트 장바구니는 야채를 담아 오기에 공간이 커서 꽤 유용하다. 바퀴가 조금 소리가 시끄럽긴 하지만 대파도 요렇게 세워서 한 번에 가져올 수 있어서 좋다. 재송시장에는 아직 야채가게가 알맹이만 파는 곳이 많아서 요렇게 비닐 초장 없이 담아 오기에 좋다.

대파 담아가영

대파는 없으면 서운하고 있으면 다 못 먹고 상하기도 해서 냉동실에 얼려두기도 하는데 신선한 대파의 아삭함을 좋아 하기에 그때그때 사는 편이다. 요즘 야채가 너무 비싸서 특히 대파도 마트에서는 한단에 5천 원씩 하니 말이다. 예전에는 천 원에도 살 수 있는 게 대파였는데 요럴 때 집에 남는 화분이 있다면 남는 유리병이 있다면 한번 더 먹을 수 있다.

대파

대파는 뿌리가 커서 흙에 심으려면 화분이 제법 커야 하지만 쿨피스 통에는 세로로 길어서 반정도만 채워도 괜찮은 거 같다. 혹시나 해서 유리병에 물에도 하나 담아 봤는데 대파도 물을 좋아하는 식물인가 보다. 물에 담아둔 대파가 가장 많이 자라고 있다. 꽃처럼 생긴 대도 나오고 말이다.

대파 키우기

요렇게 대파는 뿌리 부분만 두어도 대가 계속 자라기 때문에 여러 번은 아니지만 한두 번은 더 잘라서 먹을 수 있다. 물은 하루에 한 번 정도 주고 있는데 흙이 말라 보일 때 조금씩 주고 유리병의 물은 매일 갈아 준다.

요렇게 해두면 한번 잘라낸 걸 먹는 동안 또 자라기에 두세 번 장 볼걸 한번 정도에 해결할 수 있어서 좋은 거 같다. 나중에 대파 뿌리는 또 야채 육수 낼 때 말려서 사용하면 굉장히 시원한 맛이 나니까 육수로도 활용할 수 있고 말이다.

728x90
728x90

우연히 라디오에서 듣게 된 미나리 이야기는 나의 호기심을 자극하였다. 사실 미나리를 즐겨 먹는 편은 아니다. 향은 좋지만 잘못 조리하면 질긴 식감에 다 먹지 못하는 경우가 많으니 말이다. 그런데 한 뭉치를 사면 집에서 유리병에 꽂아 두면 계속 자라서 마디마다 잘라서 심게 되면 수경재배가 가능하다는 걸 라디오에서 듣게 되었다. 
 
그러고 보니 나혼자산다에서도 키가 미나리를 유리병에 꽂아 둔 게 얼핏 화면에서 지나가는 게 아닌가. 엇 저 정도 유리병이면 나도 집에 몇 개 있는데 한번 해볼까? 하는 생각에 이마트 쓱배송을 미나리 한 뭉텅이를 주문했다. 이마트 쓱배송은 요즘 신선 그대로라는 신선 제품들의 문구가 붙은 건 실제로 구매를 해보면 꽤 신선한 상태 그대로 받아 볼 수가 있어서 어느 정도 신뢰도가 올라갔다. 예전에는 '역시 마트는 마트구만' 하며 재래시장이 바로 코앞에 있는 나에게는 그다지 신선하게 느껴지지 않았는데 요즘 장바구니는 이마트 쓱배송도 야채가 상당히 신선하다. 과일의 당도도 의외로 높은 게 많고 말이다. 

 

미나리 효능

미나리는 이미 많이 알려져 있듯 피를 맑게 하고 독소를 배출해서 혈관을 맑게 해준다고 한다. 그래서 삼겹살이나 고기와 함께 구워 먹기도 한다. 알싸한 향이 입맛을 더 살려주기도 하고 깔끔하게 정리를 해주기도 한다. 
 

  1. 비타민A, 비타민C, 칼슘, 철분 등의 다양한 영양소가 풍부하게 함유되어 있다. 
  2. 식유섬유가 풍부해서 소화를 촉진하고 변비 예방에도 도움을 준다.
  3. 칼륨 함량이 높아 혈압을 조절하는데도 도움이 된다. 
  4. 다양한 항산화물질이 함유되어 있어 세포 손상을 예방해서 노화 방지에도 도움을 준다. 
  5. 또한 항산화물질은 혈관 벽에 쌓이는 콜레스테롤의 증가를 억제하여 혈관을 맑게 해준다. 

 

미나리 뿌리

수경재배

미나리는 대에서 싹이 분리되어 자리는 식물이어서 일부만 잘라서 물 위에 띄워 주면 대를기준으로 뿌리가 다시 자라면서 싹이 위로 계속 자라난다. 그래서 미나리를 처음에는 사고 일부는 물을 담은 병에 꽂아 두면 대가 상하지 않고 조금 더 오래 먹을 수도 있고 싹을 한 번씩 더 먹을 수도 있다. 
 
또한 미나리는 산소도 많이 배출 한다고 하니 방안 한편에 두어도 약간의 공기정화는 되지 않을까 싶기도 하다. 처음에 심어 보니 미나리 향도 굉장히 많이 나서 은은한 방향제 역활도되어서 좋았다. 
 

미나리 싹

수경재배가 가능한식물

셀러리는 뿌리가 작고 물을 흡수하는 능력이 뛰어나고 높은 습도와 온도를 선호하는 특성이 있어 수경재배에 적합하다.
파슬리는 비교적 빠르게 성장하고 섬세한 뿌리 구조를 가지고 있다.
레타스는 적은 양의 토양으로도 잘 자라고 빠르게 성장하는 특성이 있어 수경재배에 매우 적합하다.
래디시는 빠른 성장과 비교적 단순한 뿌리 구조를 가지고 있어 수경재배에 적합하고 특히 씨앗으로도 싹이 나는 과정이 빠르고 쉽게 발아가 되기 때문에 수경 시스템에서 재배하기에 이상적이다. 
대파도 뿌리 부분만 물에 담가 두면 대를 잘라먹어도 계속 자리기에 유리병에 뿌리를 담가 두거나 화단 한편에 심어 두면 꽤 여러 번 먹을 수 있다. 
 

미나리 수경재배

주의할 점 

2주 정도 키워 보니 주의할 점은 깨끗한 물을 잘 갈아주는 것이 좋고 해도 봐야 할거 같아 해가 있는 곳에 노출해 두었더니 잎이 마르는 걸로 봐서 미나리는 직사광선보다는 간접적으로 햇살을 쐬는 것이 좋은 거 같다. 또한 너무 습도가 높으면 병이 들수도 있다니 습도는 적당하게 유지하는 것이 좋은거 같다. 물은 하루에 한 번 갈아 주고 말이다. 
 
한 가지 병 입구가 조금 넓은 게 바람이 잘 통해서인지 조금 더 잘라는 듯해 보였다. 여러 병에 해보았는데 입구가 좁고 기다란 병에 미나리를 병에 습기도 차면서 잘 자라지 못했는데 낮은 유리병에는 지금 더 잘 자라고 있다.
 
식물이 없을 때는 몰랐는데 하나둘 테이블 위에 남는 유리병에 키우다 보니 싹이 틀 때 식물도 꽤나 힘겹게 대를 뚫고 나오는 모습을 보니 나도 모르게 힘내하며 응원을 하게 되고 반려식물이라는 단어에 맞게 가족애 같은 것이 생긴다. 1인가구라면 조금 적적하다면 무언가 조금씩 움트는 것이 보고 싶다면 미나리 수경재배도 좋은 거 같다. 
 
자리를 많이 차지 않는 것도 아니고 흙이 많이 필요한 것도 아니고 물과 약간 길쭉한 병이 있으면 되니 말이다. 

728x90
728x90

새해가 되면 적금을 넣어봐야지 하고 여기 저기 이율을 알아 보기도 한다. 월급은 통장을 스칠 지언정 잠깐 머무르는 돈이라도 조금이라도 이율이 높은 곳에 돈이 스쳐갈수 있도록 해두면 10원 20원 이라도 이자를 받을 수 있다. 요즘은 카카오뱅크나 토스뱅크 같은데서는 적금도 이율이 높은 순으로 모든 은행 적금을 찾아 주기에 적금 이율은 그렇게 파악하면 되지만 우대금리라는 것이 있기에 실제로는 그 금리를 다 받을 수 있는것은 아니어서 이번에 찾아본 내용을 정리해 본다.

파킹통장

카카오뱅크

저금통 : 연 8% (10만원 한도) [월이자]
카카오뱅크에 저금통은 돈을 직접적으로 넣을수는 없다. 천원 미만 금액을 저금하기를 저장해 두면 12시에 알아서 저금통으로 짜투리 돈을 입금해주는 시스템이다. 그래서 하루에 한번 최대 999원을 저금 할수 있고 10만원까지 채우기는 생각보다 꽤 많은 시간이 소요 된다. 이자도 한달에 한번 지급되는 단점이 있지만 연 8%로 상당히 큰 금액이므로 10만원정도는 넣어 두는것이 좋은거 같다.  

카카오페이

카카오페이증권 : 연 5% (30만원 한도) [매일이자]

카카오페이증권 통장을 만들어 두면 30만원 한도 까지는 연5%를 주기 때문에 일반 정기예금이나 적금보다 이율이 높다. 그래서 카카오 저금통 다음으로 채워야 할곳은 카카오페이 증권 계좌에 두면 이자도 매일 지급을 해주기에 하루에 50원 정도씩 계속 적립이 된다. 약간의 단점은 이자 받기를 눌러야 실제로 이자가 들어 온다. 

네이버페이

미래에셋증권CMA계좌 : 연 3.55% (1000만원 한도)[매일이자]

네이버페이에도 cma 계좌를 만들어 두면 여기는 1000만원 한도로 여기는 이자받기 같으거 없이 매일 알아서 이자가 쌓이는 구조여서 카드값 나가기 전에 금액을 잠시 넣어 두기에 좋은거 같다. 예전에는 돈을 다 쓸까봐 카드 결제일이 아님에도 미리 선결제를 다 하곤 했는데 생각해보면 카드값이 나가는 결제일 전까지는 이자가 나가는 것이 아니기에 그 돈을 먼저 낼 필요는 없다. 그래서 요즘은 그 돈을 일주일이라도 잠시 넣어 두면 몇백원은 적립이 되곤 한다. 

왠만한 적금 이율이기에 괜찮은거 같다. 

그외 2% 통장

토스뱅크 : 연 2%
카카오뱅크 > 세이프통장 : 연  2%

 

그외 토스뱅크, 카카오뱅크의 세이프통장은 2%로 이자를 주기에 위 통장이 다 채워졌다면 요런 곳에도 채워 두면 좋은거 같다. 

적금

신한은행

은행명 상품명 최고금리 기본금리 우대금리
신한은행 2024 신한 프로야구 연 4.2%   2.5%  1.7%
신한 알쏠 적금 연 4.3% 3%  1.3%

 

신한 쏠 퀴즈는 야구 문제가 매일 나오는 컨텐츠로 생각보다 하루 하루 풀어 보면 쏠 point 도 주고 재미가 있다. 어떤날은 1000점이 적립 되기도 하니 말이다. 신한은행을 급여 통장으로 사용하고 있다면 야구적금으로 넣고 쏠퀴즈를 풀면 우대금리를 받을수 있다. 단지 응원하는 팀이 우승을 하면 1% 를 더 주기 때문에 사실상은 3.2% 인거 같기도 하다. 

컨텐츠를 보는걸 그리 좋아 하지 않는다면 급여통장이 신한은행이고 신용카드도 신한카드를 사용하고 청약통장도 신한은행에 있다면 신한 알쏠 적금의 우대금리가 거의다 충족이 되기에 4.3% 로 좋은거 같다. 

 

기업은행

은행명 상품명 최고금리 기본금리 우대금리
기업은행 d-day 적금 연 5.35%   3.85%  1.5%
IBK 탄소제로적금 연 7% 3%  4%

 

기업은행은 d-day 적금은 우대그리 조건이 그리 까다롭지 않다 설정한 목표 금액을 다 채우면 되고 최초 거래 고객에게는 0.5%를 더 플러스해 준다. 

6개월 미만 : 3.45% , 12개월 미만 : 3.65%, 12개월 3.85% 로 1년으로 가입하면 조금 더 이율이 높고 기념일 같은걸 메모 할수도 있어서 기념일에 맞춰서 또는 휴가비 같은 명목으로 d-day 날짜를 설정해서 넣어 보는것도 좋은거 같다. 다른 적금과 달리 목표금액을 먼저 설정하고 매달 내야하는 금액을 계산해주기에 그 부분도 편리한 부분인거 같다. 

 

탄소제로적금은 아파트 아이로 관리비를 납부하고 있다면 월별 전기사용량이 줄어든 횟수에 따라 우대금리를 주고 있다. 3회이상 연 1%, 5회 이상 2% 로 전기료를 조금 절약해볼 생각이 있다면 가입해보는것도 좋은거 같다. 기본금리도 3% 여서 그리 낮은 금리는 아니니 말이다. 

 

 

카카오뱅크

카카오뱅크 >  춘식이한달적금 : 연 8% (우대금리 있음)

6회 납입 : 3.3% 

 

카카오뱅크는 사실 적금의 이율이 그리 높지는 않다. 매일 적금 도 높아 보이지만 매일 조금씩 넣기 때문에 실제로 평균 금리로 따져보면 그리 높은 금리는 아니다. 기간도 한달로 짧기 때문에 말이다. 

 

 

728x90
728x90

vue 컴포넌 중 아주 유용하게 쓸만한 것이 달력 컴포넌트다. vuetify 에는 수많은 기능이 있지만 그중 실제 실무에서 많이 사용하기도 했고 사용하면서 우와 이것도돼? 하며 달력을 아주 간단하게 만들어 볼수 있는 장점이 있다. 이벤트 핸들링도 상당히 간소한 편이다. 

처음 템플릿 작업이 조금 복잡하긴 하지만 한번 만들어 두면 유용하게 쓸수 있고 달력 내부에 div 조작도 html 코드 그대로 사용 할수 있어서 상당한 이점이 있다. 

 

아래는 간략하게 달력 노출 부분만 메모를 하고 오늘 찾은 기능은 상단에 년도를 클릭하면 년도/월을 선택 해서 바로 이동할 수 있는 기능을 추가 하며 코드 메모를 남겨 본다. 예전에는 셀렉트박스로 배열에 담아 불러 왔던 부분이 이제는 컴포넌트 호출 만으로도 가능하다니 참말로 신기한 부분이다. 

<v-calendar
  ref="calendar"
  v-model="focus"
  color="primary"
  :type="type"
  :locale="'ko-KR'"
  :events="events"
  :format="customFormat"
  @click:date="viewDay"
  @change="updateRange"
>
</v-calendar>

 

이때 아무 설정도 하지 않으면 모두 영어로 나오기에 한국에서 개발중이라면 locale 옵션을 사용해 보면 년도와 월 뒤에 한글도 넣을 수 있다. 아주 간단하게 한글로 샤라락 변환이 된다. 따지고 보면 변환이라기 보다는 날짜 뒤에 월 / 년 같은 글자를 붙이는 효과 이지만 말이다. 

 

v-date-picker 은 여러가지 타입이 있어서 년도/월만 선택 하는 month 도 있고 일수 까지 모두 선택 하게 하려면 type 정보를 빼면 기본은 우리가 알고 있는 현재 월의 모든 일수가 노출 되는 달력이 뜬다. 

<v-date-picker
  v-model="selectedPickerDate"
  type="month"
  @input="setFirstDayOfMonth"
  :locale="localeOptions"
/>

<script>
export default {
  data() {
    return {
      selectedPickerDate: null,
      localeOptions: {
        firstDayOfWeek: 1, // 월요일부터 시작하는 경우
        masks: {
          L: 'YYYY년 MM월', // 한글로 월을 표시하는 포맷
          l: 'YYYY-MM' // 기본 포맷
        },
        // 다른 locale 옵션들...
      }
    };
  },
  methods: {
    setFirstDayOfMonth(selectedDate) {
      // 선택된 날짜를 처리하는 로직
    }
  }
};
</script>

 

아래 코드는 년도월을 선택 후 해당 월로 이동하는 스크립트 예시다. v-model="focus" 로 캘린더에 명시 했기 때문에 해당 일자를 this.focus 에 넣어 주기만 하면 달력을 자동으로 선택된 달로 변경 된다. 참말로 편리한 세상이다.

async setFirstDayOfMonth(selectedPickerDate) {
  if (selectedPickerDate) {
    const dateParts = selectedPickerDate.split('-');
    const year = parseInt(dateParts[0], 10);
    const month = parseInt(dateParts[1], 10);
    const firstDayOfMonth = new Date(year, month - 1, 1);
    this.focus = firstDayOfMonth; 
  }
},

 

너무 예스러운 애기지만 예전에는 한국에 맞게 날짜 타입을 바꿀려면 맨붕이 오기도 하는데 요즘은 옵션 설정이 상당히 좋은거 같다. 달력도 참말로 계산법으로 한땀한땀 스크립트를 만들고 달력스크립트 있어요? 물어 보기도 하고 말이다. 달력 스크립트를 보유한 사람은 꽤 실력자 였으니 말이다.

 

vue 로 달력으로 삽질하고 있다면 도움이 되길 바란다. 

 

728x90
728x90

php 에서 작업을 하다 보면 예전에는 엑셀 다운로드가 많았지만 요즘에는 pdf 로 다운 받기를 원한다.  tcpdf 사이트에서 무료로 다은 받을 수 있지만 한글이 깨지는 오류가 있다. 한글 폰트가 있어야지만 한글이 깨지지 않기 때문에 nanumbarungothicyethangul.php 파일과 폰트를 다운로드 해서 설정해주고 아래와 같이 코딩해주면 html 코드 그대로 pdf 파일로 다운로드가 가능하다. 

 

 

단 css 파일에 정의된 스타일은 사용이 되지 않고 태그 자체에 style 을 하드코딩으로 해주어야 한다. 그래서 테이블 코딩으로 하는것이 레이아웃이 깨지거나 하지 않아서 해당 출력물은 테이블 코딩을 별도로 진행하는 것이 좋다. 

<?php
	require_once "./tcpdf/tcpdf_import.php";  

/**
 * 헤더 변경을 위한 class 상속 후 재 정의
 */
class MYPDF extends TCPDF {

    //Page header
    public function Header() {
        // Logo
        $image_file = K_PATH_IMAGES.'logo_example.jpg';
        $this->Image($image_file, 10, 10, 15, '', 'PNG', '', 'T', false, 300, '', false, false, 0, false, false, false);
        // Set font
        $this->SetFont('helvetica', 'B', 15);

        // Title
        //$this->Cell(0, 15, 'www.example.com', 0, false, 'C', 0, '', 0, false, 'M', 'M');
    }
}

$pdf = new MYPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, "UTF-8", false);
$pdf->SetCreator(PDF_CREATOR);

// set default header data
$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE, PDF_HEADER_STRING);

// set header and footer fonts
$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));

// set default monospaced font
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);

// set margins
$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);

// set auto page breaks
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);

// set image scale factor
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);

$pdf->SetFont('nanumbarungothicyethangul', '', 12);
$pdf->AddPage();
//$pdf->writeHTMLCell(0, 0, "", "", $html, 0, 1, 0, true, "", true);










include $_SERVER["DOCUMENT_ROOT"]."/include/dbopen.php";
$sql = " select * from dual";

ob_start();
?>

<!doctype html>
<html><head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=Edge"/> 
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>PDF 다운로드 예제</title>
</head>
<body>

<style type="text/css">
.table th, .table td {
    padding: 10px 16px;
    font-size: 15px;
    border: 1px solid #cccccc;
}	
</style>
				<p style="text-align:center; margin-bottom:50px; font-size:30px;">견적서</p>
 
                <table class="table">
                  <colgroup><col width="10%"><col width="10%"><col width="50%"><col></colgroup>
                  <tr>
                    <th style="padding: 10px 16px; font-size: 15px; border: 1px solid #cccccc;"rowspan="2">확인란</th>
                    <td rowspan="2">
                      <img src="도메인경로부터/img/img_confirm.png" style="width:80px;">
                    </td>                        
                    <td>데이터 내용 </td>
                  </tr>
                </table>
  
            </div>

</body>
</html>
<?php
$pdfData = ob_get_contents();
ob_end_clean();
 

// 테이블을 출력할 때 사용하는 방법
$pdf -> writeHTML($pdfData, true, false, false, false, '');

$pdf->Output(getcwd()."/example_test_01.pdf", "FI");

?>
728x90
728x90

온누리상품권은 원래 종이 상품권으로 전통시장에서만 사용이 가능한 상품권이었는데 작년부터 인가 사용을 더 늘리고자 신용카드에 충전해서 사용 할수 있는 제도가 도입 되었다. 처음에는 이게 뭔말인가 하여 보다가 사용 할수 있는 곳이 전통시장이다 보니 제한적이라 설치 했다가 지웠는데 그사이에 어딘가 응모한 것이 당첨이 되었나 보다.
3만원에 당첨 되었는데 메세지에 다시 설치를 해보니 생각보다 신용카드만 들고 다녀도 결제를 하면 온누리상품권이 먼저 차감이 되는 구조라 꽤 편리한 부분도 있는거 같다.

실제로 사용하기 전까지는 진짜 차감이 되는것인지도 의심스러웠던 부분도 있는데 차감이 잘 된다.

온누리상품권 앱을 먼저 설치 하고 본인이 소지하고 있는 신용카드를 해당 앱에 등록을 해두면 등록된 카드로 결제를 하면 잔고가 있을시 상품권 금액이 먼저 차감되고 아래와 같이 알림으로 얼마가 차감 되었는지 알려준다. 그리고 부족한 금액은 신용카드로 결제가 되는 시스템이다.

요렇게 알림을 받고 보니 등록된 신용카드로 결제를 해도 상품권의 잔고가 있으면 그 부분이 먼저 차감 되니 안심하고 사용 할수 있는거 같다. 참말로 신통한 세상이다.

온누리상품권은 전통시장에서 사용 했을때 주었던 소득공제 40% 혜택이 그대로 적용 되기 때문에 소득공제가 필요한 사람이라면 적절하게 현금을 쓰기 보다는 카드를 등록해두고 사용해야할 금액을 충전하고 사용하는 것이 더 이득인거 같다. 신용카드 실적도 동일하게 올라가니 말이다.

단 환불은 60% 이상 사용했을때만 가능하기에 그 부분을 염려해 두고 너무 많은 금액을 한번에 충전하지 말고 사용할 범위 내에서 충전하는 것이 좋은거 같다. 사용기간은 대략 5년정도 되니까 말이다.

종종 이벤트도 많이 하고 있어서 온누리상품권에 당첨이 되었다면 귀찮다고 그냥 두지 말고 요렇게 앱설치 한번 해서 등록해두고 신용카드를 이용하는 것이 좋은거 같다.

한창 앱테크를 할때 온누리상품권이 경품으로 있으면 참여를 하지 않았었는데  앱이 느리고 가입하는 과정이 매끄럽게 한번에 되지 않아서 말이다. 그런데 실제로 이렇게 한번 등록해두고 사용해보니 생각보다 편한거 같아서 정보를 공유해 본다.

이후는 온누리상품권 이벤트도 참여를 더 해보아야 겠다.


728x90
728x90

산출물 작석시 파일명세서는 폴더내에 파일명을 모두 출력하고 메모를 해야 해서 php 코드로 파일명을 모두 출력하게 하면 조금 더 작성하기가 편해진다. root 기준의 폴더명을 적어 주고 해당 디렉토리에 아래 파일을 올리면 파일 리스트를 모두 출력 받을 수 있다. 

<?php
// 제외할 폴더와 경로를 배열로 정의합니다.
$excludedPaths = array(
    '/upload',
    '/plugin',
    '/assets/front/img',
    '/assets/front/fonts',
    '/assets/front/scss'
);

// 디렉토리 경로를 절대 경로로 설정합니다.
$directory = realpath('foldername');

// 디렉토리 내의 파일 및 폴더 목록을 가져옵니다.
listDirectoryContents($directory, $excludedPaths);

// 재귀적으로 디렉토리 내의 파일 및 폴더 목록을 출력하는 함수
function listDirectoryContents($dir, $excludedPaths) {
    $files = scandir($dir);
    foreach ($files as $file) {
        // 현재 디렉토리(.)와 상위 디렉토리(..)는 제외합니다.
        if ($file != '.' && $file != '..') {
            // 파일 또는 폴더의 전체 경로
            $filePath = $dir . '/' . $file;

            // 제외할 경로에 포함되어 있거나 파일인 경우 스킵합니다.
            if (in_array($filePath, $excludedPaths) || is_file($filePath)) {
                continue;
            }

            // 디렉토리인 경우 디렉토리명을 출력합니다.
            if (is_dir($filePath)) {
                echo $filePath . "<br>";
                // 하위 폴더가 있는 경우 해당 폴더를 탐색합니다.
                listDirectoryContents($filePath, $excludedPaths);
            }
        }
    }
}
?>

 

위 코드를 실행하면 웹페이지에 아래와 같이 하위폴더의 내역까지 모두 출력이 된다. 

foldername/views/front/your/mento.php
foldername/views/front/your/mento_view.php

 

디렉토리 명을 모두 출력하려면 아래와 같이 작성하면 된다.

<?php
// 제외할 폴더와 경로를 배열로 정의합니다.
$excludedPaths = array(
    '/upload',
    '/plugin',
    '/assets/front/img',
    '/assets/front/fonts',
    '/assets/front/scss' 
);

// 디렉토리 경로를 절대 경로로 설정합니다.
$directory = realpath('foldername');

// 디렉토리 내의 파일 및 폴더 목록을 가져옵니다.
listDirectoryContents($directory, $excludedPaths);

// 재귀적으로 디렉토리 내의 파일 및 폴더 목록을 출력하는 함수
function listDirectoryContents($dir, $excludedPaths) {
    $files = scandir($dir);
    foreach ($files as $file) {
        // 현재 디렉토리(.)와 상위 디렉토리(..)는 제외합니다.
        if ($file != '.' && $file != '..') {
            // 파일 또는 폴더의 전체 경로
            $filePath = $dir . '/' . $file;

            // 제외할 경로에 포함되어 있거나 파일인 경우 스킵합니다.
            $skip = false;
            foreach ($excludedPaths as $excludedPath) {
                if (strpos($filePath, $excludedPath) === 0) {
                    $skip = true;
                    break;
                }
            }
            if ($skip || is_file($filePath)) {
                continue;
            }

            // 디렉토리인 경우 디렉토리명을 출력합니다.
            if (is_dir($filePath)) {
                echo $filePath . "<br>";
                // 하위 폴더가 있는 경우 해당 폴더를 탐색합니다.
                listDirectoryContents($filePath, $excludedPaths);
            }
        }
    }
}
?>

 

$directory 를 기준으로 하위에 포함된 디렉토리까지 모두 출력해주니 폴더명으로 정리를 해야 할때 편리하다. 

728x90
728x90

class 를 참조하기 전 자동으로 매칭 시켜 주는 함수 

path 로 클래스를 로드 할때 유용함 

spl_autoload_register(function ($class) {
    include 'classes/' . $class . '.class.php';
});

$obj = new MyClass();

 

위의 코드에서 MyClass를 호출할 때, PHP는 spl_autoload_register에 등록된 함수를 호출하여 MyClass를 로드하려고 시도합니다. 그리고 이 함수는 classes/MyClass.class.php 파일을 포함시켜 클래스를 로드합니다.

728x90
728x90

vue.js numeric and string conversion 

Numeric to String Conversion:

// Numeric to String Conversion
let numericValue = 123;
let stringValue = `${numericValue}`; // String interpolation
// Or
let stringValue = numericValue.toString(); // Using toString() method

 

String to Numeric Conversion:

// String to Numeric Conversion
let stringValue = "123";
let numericValue = parseInt(stringValue); // For integers
// Or
let floatValue = parseFloat(stringValue); // For floats

 

Rounding:

let number = 10.6;

let rounded = Math.round(number); // Rounds to the nearest integer
// Output: 11

let roundedDown = Math.floor(number); // Rounds down to the nearest integer
// Output: 10

let roundedUp = Math.ceil(number); // Rounds up to the nearest integer
// Output: 11
let number = 10.6789;
let decimalPlaces = 2;
let rounded = Math.round(number * Math.pow(10, decimalPlaces)) / Math.pow(10, decimalPlaces);
// Output: 10.68

Template Example:

<template>
  <div>
    <p>Numeric to String Conversion: {{ numericValue.toString() }}</p>
    <p>String to Numeric Conversion: {{ parseInt(stringValue) }}</p>
    <p>Rounded Number: {{ Math.round(number) }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      numericValue: 123,
      stringValue: "123",
      number: 10.6
    };
  }
};
</script>

 

Result:

<p>Numeric to String Conversion: 123</p>
<p>String to Numeric Conversion: 456</p>
<p>Rounded Number: 11</p>
728x90

+ Recent posts