전체 글 (30)
워치와인더 구입

 

 

최근 오토매틱 시계에 관심이 생기면서 어쩌다보니 워치와인더까지 구매하게 되었다.

 

 

 

 

예전에 관심이 없었을 때는 SNS에 올라온 워치와인더를 보고

뱅글뱅글 돌아가는 시각효과를 주는 보관함 정도로 생각을 했는데 알고나니 신기한 세상.

오토매틱 시계를 뱅글뱅글 돌려가면서 밥 주는 거다.

2분 돌고 6분 쉬고, 2분 반시계 방향 돌고 6분 쉬고 반복.

시계 하나만 사용하면 괜찮은데 돌아가면서 여러개를 착용한다면

사용하지 않는 시계는 동력이 없어서 멈추어 버리니 흔들어서 밥 주고 용두로 시간도 다시 맞춰줘야 한다.

용두를 자주 조절하면 시계 수명도 줄어들고 여러모로 좋지 않겠단 생각이 들어서 결국 와인더를 구매하게 됨.

알리에서도 구매할 수 있는 중국 생산 제품인데

네이버 스토어에서 알리보다 배송이 훨씬 빠르고 가격도 더 저렴하여 구매.

중국에서 도매로 사서 공항에서 다시 개인에게 발송하는 듯 하다.

가격대비 쓸만하고 괜찮음.

 

 

 

 

 

 

 

또 돈 들어가는 취미가 새로 생겼다.

조금씩 사모아야 하는데 갖고 싶은건 많고 마음이 급해서 매달 지를 판.

당장 에어컨도 사야하는데 ㅎㅎㅎ 그에 준하는 가격대의 시계를 그냥 턱턱 사고 있다.

아무래도 정품 가격을 생각하니 싸다고 생각이 되서 그냥 막 사는 듯.

정작 에어컨을 지를라 치면 왠지 너무 비싼 것 같고 손이 안 간달까 ㅋ

다음달에 환율이 떨어져야 사는데..

밥도 줘야 하고 일주일에 시간 오차가 2~3초씩 나기도 하지만

그래도 오토매틱 시계 어딘가 매력이 있다.

  Comments,     Trackbacks
클립쉬(Klipsch) 북셸프 스피커 R-15M with Pioneer XC-HM86





합리적인 소비생활에 도움을 주고 계신 회사 대리님 덕에 블랙프라이데이 핫딜로 장만한 앰프 Pioneer XC-HM86, 
그리고 운 좋게도 앰프 구입 후 오래 지나지 않아 클립쉬 북셸프 스피커 R-15M의 핫딜 출현으로 인해 
요즘 즐거운 음악생활을 만끽하는 중이다.
앰프는 120v to 220v 변압기가 필요하기 때문에 모두 합쳐 약 43만원 정도에 구매했다.
제 가격 주고 구매하였더라면 약 7~80만원 정도 지출되지 않을까 짐작해 본다만.

황금귀는 아니지만 막귀도 아니기에 폰 스피커로는 평소 만족이 안 되었고 답답한 헤드폰 착용에서 벗어나서 
자유롭게 음악을 감상할 목적으로는 아마도 보스 사운드링크(이것도 쪼꼬미 주제에 만만치 않은 가격이긴 하지만..) 등 
소형 블루투스 스피커를 고려해 보고 있었던 터였는데...

앰프씩이나 장만해서 원룸에서 감당도 안되는 사이즈의 스피커를 연결해서 쓰는 것은 다소 오버스럽다고 생각,
이런 음향 시스템을 구성하리라곤 상상도 하지 못했다.

여하튼, 평소 그런 말도 안 되는 회사 선배의 제안(=뽐뿌)을 몇 시간도 안 되어 바로 수용했던 것이 바로 '가격'.
좌표 받고 국내 가격을 비교해 보고.. 아.. 이건 사야됨!

요즘 물건 지를 때 패턴.

링크를 받는다 -> 한 번 들어는 가 본다 -> 창을 닫는다 -> '에이 이건 무리예요' 라고 말한다  -> 국내 판매 가격을 본다 -> 응? 
-> 링크를 다시 들어가 본다 -> 결제 완료.









하여간에 블프라 주문 물량이 좀 쌓였는지 발송이 늦어져 결제 후 거진 2주 만에 받았다.
배송료만 4만원.......
성능만큼이나 중요한건 바로 와꾸지. 사진은 실물보다 다소 붉게 나왔지만, 구리색 우퍼는 클립쉬만의 매력.
블랙 앰프와의 색상 매치도 나쁘지 않다.









XC-HM86에는 크롬캐스트가 내장 되어 있어서 휴대폰에서 송출이 가능하다.
블루투스와의 음질 차이, 처음엔 몰랐는데 크롬캐스트로 듣다가 다시 블루투스로 들어보니 차이가 제법 있다.
이제 블루투스로는 못 듣겠음.









클래식한 R-15M의 자태.

플랫한 성향의 레퍼런스 스피커라는 점. 알고 샀고, 그래서 샀음.
다만 플랫한 모니터링 이어폰들이 그랬듯 스피커도 그런 것인지 
역시 평소 잘 들을 일은 없지만 가끔씩 땡겨서 듣는 메탈, 비트 빠른 록, 약간 깨발랄한 EDM 같은 것에서는 역동성이 부족한게 좀 아쉽다.
보컬이 약간 묻히는 경향도 있는 듯 한데 이게 이퀄 설정에 의한 차이인지는 잘 모르겠다.

내가 듣는 대부분의 장르에서 좋은 음을 뽑아준다.
R&B, 빠르지 않은 비트의 기계음 많이 없는 모던 혹은 얼터너티브 록.
특히 재즈 듣는 맛이.. 악기음 듣는 맛이 좋다.
음악적 지식이 편협하여 무슨 악기인지는 모르겠으나...
찰랑찰랑, 둥둥, 뒹뒹, 티링티링 ㅋㅋㅋ 아.. 어딘가 쾌감이 느껴지는데 표현이 잘 안됨.
베이스는 따듯하고 풍부한 느낌이며 타격감도 좀 있는 편인 듯 하다.

이걸 들여놓은 요즘엔 책 읽거나 자기 전에 벅스 재즈 라디오만 틀어 놓고 있다.
TV에 광케이블 물려서 Digital In 으로 TV볼 때, 컴퓨터 할 때 범용적으로 쓸 수 있어서
블루투스 스피커 안 사길 참 잘했다는 생각임.
다음 이사 때는 프론트 스피커, 서브 우퍼 추가로 장만해얄듯. ㅎㅎ


'Review > IT Device' 카테고리의 다른 글

워치와인더 구입  (0) 2019.04.23
B&O(뱅앤올룹슨) Beoplay H8  (1) 2018.02.15
  Comments,     Trackbacks
B&O(뱅앤올룹슨) Beoplay H8










일마존에서 프라임 회원 30% 할인 및 추가 할인 쿠폰 찬스를 통해 구입한 뱅앤올룹슨(B&O) Beoplay H8.
아 이 것도 구매 경위를 낱낱이 설명하자면 본인이 너무 충동적으로 비추어 질 것 같아서 자제하기로 ㅋ
여튼저튼 국내가 대비 너무 저렴하게 풀렸기에 사볼만 하다 싶었다.

프라임 제품 치고 발송이 느려서 속 좀 태운 듯.











어마무시한 가격대를 자랑하시는 분의 익스테리어가... 넘나 심플.
견고하게 만들어지기는 했지만 개인적으로 마음에 드는 디자인은 아니다. 어쨌든 예쁘고 잘 빠진 디자인이긴 하다. (뭔가 모순?)
가죽 폼은 당연하게도 돌려서 탈부착이 가능하다.















밴드 길이 조절도 깔끔하고 직관적이다.

처음에는 떨어지는 블루투스 음질에 많이 실망하였으나
핫딜로 구매한 피델리오 X2, AKG  K618과 여러 음악 청음하며 비교 끝에 만족하여 팔지 않고 사용하기로.
AKG는 동생에게 주어야겠다.

피델리오 X2와 비교하면,
역시 유닛 자체가 보다 훨씬 작은 관계로 스테이징이 좀 좁긴 하지만
중저음이 굉장히 강조되어 있으면서도 보컬이 뒤로 밀리지 않고 또렷해서 답답함이 없다.
짤깍짤깍한 느낌이 괜찮다. 음색은 조금 차갑다는 느낌...
다만 이 비교는 블루투스가 아닌 앰프에 유선으로 연결해서 음감했을 때 기준...
패키지에 유선으로 연결해서 사용할 수 있는 케이블을 제공하는데
이거 가격이 얼만데.. 어디 전파상에서나 돈 1-2천원 주고 살만한 싸구려 재질.....

블루투스의 한계이겠지만 음질이 좀 떨어지는건 어쩔 수 없나보다.
음원마다 차이가 있긴 한데 엄청나게 거슬리는 노이즈....
게다가 블루투스 헤드폰을 사용하는 이유가 되는 휴대용 기기와의 페어링을 생각했을 때,
휴대용 앰프 사용 불가한 점으로 휴대폰에서 쏘는 구린 소리를 들어야하는.. ㅜㅜ
거추장스러운 선에서 해방됨에 대한 보상으로 음질에서 적당히 타협을 본다고 생각하면 
괜찮은 수준이긴 하지만 아쉬운건 어쩔 수가 없다...
휴대용 앰프(있는 것 없는 것 차이가 크더라..)를 구매해서 그냥 유선으로 들을까 싶다가도 그럼 애초에 
이 고가의 제품을 쓰는 이유는 무엇인가 하니 또 망설이게 됨.
노이즈 캔슬링 기능이 있는건 처음 써보는데 이 정도면 훌륭하지 않나 싶다.

60만원대에 형성된 국내가는 지나치게 비싸고, 일마존에서 구매한 가격이 합리적인 듯 싶다.

여튼 나는 팔지 않고 잘 쓸 생각.
집에는 스피커가 있고, 밖에선 H8 쓰고.. 피델리오 X2가 소외되겠구나 ㅜㅜ




'Review > IT Device' 카테고리의 다른 글

워치와인더 구입  (0) 2019.04.23
클립쉬(Klipsch) 북셸프 스피커 R-15M with Pioneer XC-HM86  (1) 2018.02.15
  Comments,     Trackbacks
슬라피 조의 샌드위치 하우스, 메뉴 랜덤하게 만들기(배열 연습)

[설명]

고기, 빵, 소스를 랜덤하게 선택하여 메뉴를 만들어 봄으로써 배열을 연습

 

[실행화면]

 

[소스코드]

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace SloppyJoeMenu
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            MenuMaker menu = new MenuMaker() { Randomizer = new Random() };
            this.label1.Text = menu.GetMenuItem();
            this.label2.Text = menu.GetMenuItem();
            this.label3.Text = menu.GetMenuItem();
            this.label4.Text = menu.GetMenuItem();
            this.label5.Text = menu.GetMenuItem();
            this.label6.Text = menu.GetMenuItem();
        }

        public class MenuMaker
        {
            public Random Randomizer;

            string[] Meats = { "Roast beef", "Salami", "Turkey", "Ham", "Pastrami" };
            string[] Condiments = { "yellow mustard", "brown mustard", "honey mustard", "mayo", "relish", "french dressing" };
            string[] Breads = { "rye", "white", "wheat", "pumpernickel", "italian bread", "a roll" };

            public string GetMenuItem()
            {
                string randomMeat = Meats[Randomizer.Next(Meats.Length)];
                string randomCondiment = Condiments[Randomizer.Next(Condiments.Length)];
                string randomBreads = Breads[Randomizer.Next(Breads.Length)];
                return randomMeat + " with " + randomCondiment + " on " + randomBreads;
            }
        }
    }
}

  Comments,     Trackbacks
인스턴스의 속성을 맞바꾸기

[설명]

코끼리 인스턴스를 두 개 만든 다음 어떤 인스턴스도 가비지 컬렉션이 되지 않으면서도 두 인스턴스의 속성을 맞바꿀 수 있게 만들어 보자.
그냥 Iloyd=lucinda라고 하면 더 이상 어떤 참조변수도 Iloyd를 가리키지 않는 상태가 되어 그 객체는 사라지므로, temp라는 이름으로 잠시 그 객체를 객체를 챙겨둘 참조변수를 만들어서 Lucinda가 그 객체를 참조할 때까지 지켜줘야 한다.

 

[실행화면]

 

 

[소스코드]

  Comments,     Trackbacks
Mileage Calculator

[설명]

이동거리를 계산해 환급액을 알려주는 프로그램.
환급율은 0.39 (39%).


[실행화면]


[소스코드]

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace MileageCalc
{
    public partial class Form1 : Form
    {
        int startingMileage, endingMileage;
        double milesTraveled, amountOwed, reimburseRate = 0.39;

        private void btn_calcMiles_Click(object sender, EventArgs e)
        {
            MessageBox.Show(milesTraveled + " miles", "Miles Traveled");
        }

        private void btn_Calc_Click(object sender, EventArgs e)
        {
            startingMileage = (int)numericStart.Value;
            endingMileage = (int)numericEnd.Value;
            if (endingMileage > startingMileage)
            {
                milesTraveled = endingMileage - startingMileage;
                amountOwed = milesTraveled * reimburseRate;
                lbl_result.Text = "$" + amountOwed.ToString();
            } else
            {
                MessageBox.Show("출발 시 주행거리는 도착 시 주행거리보다 작아야 합니다!");
            }
        }

        public Form1()
        {
            InitializeComponent();
        }
    }
}



  Comments,     Trackbacks
메서드를 만들 때 정적(static) 키워드를 사용하는 이유

[관련 Page : 159]

정적(static) 키워드로 선언한 메서드는 객체 인스턴스(instance)를 생성하지 않고도 호출이 가능하다.
정적 메서드가 아닌 메서드는 객체 인스턴스를 생성(new 인스턴스 이름)하면 힙(heap)이라는 메모리 공간 안에 객체가 생성되므로, 인스턴스를 생성할 때 마다 별도의 객체가 생성이 된다.
정적(static) 키워드를 사용하는 이유는, 값을 공유하기 위한 용도로 사용하기 위함이다. (참조페이지 : https://wikidocs.net/228)


[연습코드]

* static 메서드의 경우는 바로 호출이 가능하지만, non-static 메서드의 경우는 인스턴스를 생성해 주어야만 호출이 가능한 것을 알 수 있었다.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace StaticTest
{
    class Program
    {
        static void Main(string[] args)
        {
            StatTest.StatPrn();
            StatTest nonTest = new StatTest();
            nonTest.Prn();
            // StatTest.Prn(); 빨간 밑줄!
        }
    }

    class StatTest
    {
        public static void StatPrn()
        {
            Console.Out.Write("Static에서 작동하는 Method\n");
        }

        public void Prn()
        {
            Console.Out.Write("non-Static에서 작동하는 Method\n");
        }
    }
}


  Comments,     Trackbacks
ExchangeMoney, 돈 송수금 하기

[설명]

Bob과 Joe의 돈을 은행을 통해 송금하자.
송금할 때 마다 수수료가 1달러씩 은행에 지불됨.
계속 송금하다 보면 결국 은행만 수수료로 돈을 벌고 Bob과 Joe는 거지가 됨.
Head First에 있는 예제와는 코드가 다소 다름.
어딘가 헛점이 많고 더 단축할 수 있는 코드이나 수정하기엔 할 일이 많다~

 

[실행화면] 

 

[소스코드]

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace ExMoney
{

    public partial class Form1 : Form
    {

        int bank = 0;
        int interest = 1;
        Guy bob = new Guy();
        Guy joe = new Guy();

        public Form1()
        {
            bob.cash = 100;
            joe.cash = 100;
            InitializeComponent();
            UpdateForm(); // InitializeComponent() 보다 먼저 수행하면 레퍼런스 에러!

        }

        private void btn_1_Click(object sender, EventArgs e)
        {
            int temp = bob.GiveCash(5, interest);
            if (temp != 0) // GiveCash()에서 0이 리턴될 경우는 송금한 돈이 없는 것이므로, 0이 아닐 때 수행되어야 함!
            {
                bank += temp;
                bank -= joe.ReceiveCash(temp - interest);
            }
            UpdateForm(); // Form 내용 갱신
        }

        private void btn_2_Click(object sender, EventArgs e)
        {
            int temp = joe.GiveCash(10, interest);
            if (temp != 0) // GiveCash()에서 0이 리턴될 경우는 송금한 돈이 없는 것이므로, 0이 아닐 때 수행되어야 함!
            {
                bank += temp;
                bank -= bob.ReceiveCash(temp - interest);
            }
            UpdateForm(); // Form 내용 갱신
        }
        
        public void UpdateForm()
        {
            bobMoney.Text = "Bob은 " + bob.cash + " 달러를 가지고 있습니다.";
            joeMoney.Text = "Joe는 " + joe.cash + " 달러를 가지고 있습니다.";
            bankMoney.Text = "은행은 " + bank + " 달러를 가지고 있습니다.";
        }
    }

    public class Guy
    {
        public string Name;
        public int cash;

        public int GiveCash(int amount, int interest)
        {
            if(cash >= amount+interest)
            {
                cash -= amount + interest;
                return amount + interest;
            }
            else
            {
                MessageBox.Show("송금할 돈이 부족합니다!");
                return 0;
            }

        }

        public int ReceiveCash(int amount)
        {
            cash += amount;
            return amount;
        }

    }
}

  Comments,     Trackbacks