PC 조립하며 당황했던 순간 3가지

2018. 4. 1. 16:53

PC 부품들의 호환성을 따지는 부분이 어렵지 실제 부품 조립은 쉽다.

이렇게 생각했는데 당황하는 부분들이 생기더군요.


조립한지 오래되어 그 사이 H/W와 인터페이스가 발전했으니까요.

조립하면서 3번 정도 당황했던 것 같네요.


사실 가장 첫 스텝부터 당황합니다.


1. Main Board(Mother Board)에 APU(CPU+GPU) 결합


Ryzen 이 녀석이 정사각형..

방향이 고민되기 시작하였습니다.

다행히도 방향을 맞출 수 있는 힌트가 존재하더군요.


1) APU 모퉁이의 금색 삼각형과 소켓의 삼각형 음각 부분을 맞춥니다.

2) 소켓 문구(SOCKET AM4)와 APU의 문구의 방향을 일치시킵니다. 


RYZEN APU 방향 파악하기


APU를 결합하고, 쿨러를 달고 나서 또다시 당황합니다.


2. PCI-E SSD


이전의 SATA 케이블 방식과는 다른 너무나도 작은 SSD 입니다.

어렵사리 슬롯을 찾아 꽂으니, 경사지게 들려버립니다.

Motherboard와 동봉된 자그마한 나사가 필요해지는 순간이지요.


1) PCI-E라고 쓰여진 Slot을 찾아 끼웁니다.

2) 경사지게 들린 SSD를 보드에 나사로 고정시켜줍니다.


SSD를 PCI-E Slot에 끼우고 고정 


보드가 거의 다 완성되어갈 즈음 케이스를 결합합니다. 


3. 전원 제어 버튼 및 Audio 연결부 보드와 결합


Desktop 케이스에 제어 버튼과 Audio 관련 잭이 있습니다.

보드에 직접 꽂을 필요 없이 케이스 전면부에 연결하죠.


그런데 PIN 구성이 익숙한 모양이 아니었습니다.

Audio와 Function Panel이 따로 분리되어있더군요.

Mother Board의 Manual이 필요해지는 순간이 온거죠.


1) HD AUDIO는 AAFP를 찾아 구멍에 맞게 연결합니다.

2) F_Panel의 구성에 맞게 전원과 LED를 꽂습니다.


Function Panel Pin(Power, Reset, LED)과 HD Audio Pin


나머지 부분들 (Power연결, 쿨러, USB Slot 등)은 쉽죠.

연결이 되는 모양에 맞추어 끼우면 되기 때문입니다.

안맞는 곳에는 연결이 안되요.


모니터를 연결하고 전원을 켜면 BIOS화면이 반갑게 맞아줍니다.

TechTrip 놀면서 배우기.

개발용 PC 조립!

2018. 3. 31. 23:56

오랫동안 사용하던 노트북을 Desktop으로 바꾸기로 결심하였습니다.

Dell Studio 1558 안녕....

거의 10년을 함께 해온 PC 하나도 아쉽지 않아요. ㅋㅋㅋ

베터리도 수명이 다했고, 너무 느렸거든요.


오늘은 제가 조립한 PC부품과 완성 사진만 올려보려구요.

사양은 아래와 같습니다.


 CPU

 AMD RYZEN 5 2400G(RAVEN RIDGE)

 MAINBOARD

 ASUS PRIME B350M-A

 RAM

 SAMSUNG DDR4 8G PC4 19200* 2

 SSD

 ADATA XPG SX6000 M.2 2280(256GB)

 POWER

 스카이디지털 파워스테이션4

 CASE

 마이크로닉스 Bohemian Delfino


RYZEN에 내장된 그래픽을 사용할 예정이라 그래픽 카드는 없습니다.

조립 후 이상없이 빠르게 잘 돌아가고 있네요.


PC 부품 사진


메인보드와 CPU, SSD는 아래와 같이 생겼습니다.


메인보드, CPU, SSD


조립을 하고, OS를 설치하여 드디어 블로그를 작성하고 있습니다.


조립 후


조립하면서 당황했던 부분들 추후 공유하도록 하겠습니다.

TechTrip 놀면서 배우기.

Angular Material Icon

2018. 3. 18. 20:23

이번에는 밋밋한 디자인에 아이콘을 넣어보겠습니다.

아이콘을 직접 디자인 한다는 것은 쉽지 않으므로...

잘 디자인 된 아이콘을 가져오도록 하겠습니다.


Material Design에는 오픈소스 아이콘이 있습니다.

https://material.io/icons/

Angular에도 물론 사용할 수 있지요.


전체 Component에서 아이콘을 사용할 수 있도록 추가합니다.

그러기 위해서 index.html의 header에 다음과 같이 추가합니다.

<head>
    ...
    <link href="https://fonts.googleapis.com/icon?family=Material+Icons"
          rel="stylesheet">
</head>


웹 상의 material icon font를 가져오는 링크입니다.

아이콘을 사용하기 위해 모듈을 추가합니다.

import { MatIconModule } from '@angular/material/icon';

@NgModule({
    ...,
    imports: [
        MatIconModule
    ],
    ...
})
export class AppModule { }


html에서 아이콘 이름을 이용하여 아이콘을 추가할 수 있습니다.

<mat-icon>account_balance</mat-icon>


아이콘 이름은 material icon 사이트의 아이콘을 선택하여 확인 가능합니다.

아이콘 폰트 이름 확인 방법


Angular에서 아이콘을 쉽게 추가할 수 있는 방법이었습니다.

아이콘을 추가한 화면은 아래와 같습니다.


아이콘 추가된 화면


좀 더 그럴듯 해졌죠?

다음에는 화면에 추가된 테이블에 대해 이야기해보겠습니다.


소스주소: https://github.com/jsrho1023/account-book

'IT Tech > Angular' 카테고리의 다른 글

Angular 테스트(Test) 하기  (0) 2018.04.11
Angular Material Table  (0) 2018.04.02
Angular Material Header Toolbar  (0) 2018.03.11
Angular Directive (Structural Directive)  (0) 2018.02.12
Angular Directive (Attribute Directive)  (2) 2018.02.04

TechTrip IT Tech/Angular

Angular Material Header Toolbar

2018. 3. 11. 15:53

명절 이후 한동안 게을러졌습니다.

다시 마음을 잡고, Application에 모양을 좀 내볼까 합니다.


사이트 상단에 늘 떠있는 제목을 한 번 만들어볼게요.

이번에도 Material 디자인을 이용합니다.

header라는 컴포넌트를 하나 만듭니다.

복습차원에서 되짚어보자면 명령어는 아래와 같습니다.

ng generate component header (ng g c header)


app.component.html에 header 컴포넌트를 넣어줍니다.

<app-header></app-header>
<app-budget></app-budget>


MatToolbar를 사용하기 위해 Module을 import 하구요.

import { MatToolbarModule } from '@angular/material/toolbar';

@NgModule({
    ...,
    imports: [
        MatToolbarModule
    ],
    ...
})
export class AppModule { }


이제 header 컴포넌트를 작성해봅니다.

mat-toolbra라는 태그를 사용합니다.

<mat-toolbar color="primary">
  <span class="application-title">Daily Account Log</span>
  <span class="fill-remaining-space"></span>
  <span>To be added</span>
</mat-toolbar>


색상은 지정하지 않으면 기본적인 배경색인데요.

저는 primary라는 값을 넣었습니다.

mat-toolbar는 기본적으로 flex row 형태의 display를 사용합니다.

좌측에 타이틀 우측에 메뉴 영역을 배치해보겠습니다.

header.component.css에 스타일을 넣어볼게요.

.application-title{
    font-size: 20px;
}
.fill-remaining-space {
    flex: 1;
}


위처럼 넣으면 가운데 영역이 채워집니다.

결과물은 아래와 같습니다.


angular material toolbar 적용


실제 적용해보면 상단, 좌, 우에 하얀 테두리가 보일 수 있습니다.

body에 기본적인 margin과 padding이 들어있어서 그렇습니다.

style.css 에 body의 margin, padding을 없애주면 됩니다.

body{
    margin: 0;
    padding: 0;
}


소스주소: https://github.com/jsrho1023/account-book

'IT Tech > Angular' 카테고리의 다른 글

Angular Material Table  (0) 2018.04.02
Angular Material Icon  (0) 2018.03.18
Angular Directive (Structural Directive)  (0) 2018.02.12
Angular Directive (Attribute Directive)  (2) 2018.02.04
Angular Material 디자인  (0) 2018.01.27

TechTrip IT Tech/Angular

Angular Directive (Structural Directive)

2018. 2. 12. 23:27

이번에는 Angular의 두 번째 Directive를 보겠습니다.


Attribute Directive는 DOM에 스타일과 동작을 부여했죠?

Structural Directive는 DOM 자체를 추가 제거합니다.


짧은 설명으로는 이해가 어려우니 예제를 살펴보겠습니다.

ngIf 라는 Directive를 사용해볼게요.

ngIf 를 이용하면 조건에 따라 DOM을 추가/제거할 수 있습니다.


<h3 
  [ngStyle]="{
    'color':budget<=1000?'red':'black',
    'background-color':budget<=1000?'yellow':'transparent'}">
      My Budget: 
      <span *ngif="buget!==""">&#8361;</span>{{budget}}</h3>


'원'표시를 span 태그로 감싸주었습니다.

그리고 *ngIf 라는 directive를 안에 넣어주었죠.

그 안에는 조건문이 들어갑니다.

조건을 만족시키면 span을 보여주고, 아니면 제거하는 겁니다.

budget 값이 빈문자열이라면 가격표시가 사라집니다.


재미난 것은 span 태그가 숨겨지는게 아니라 실제로 사라집니다.

크롬의 개발자 도구에서 보면 정확히 보이는데요.


ngIf를 활용한 DOM의 생성과 삭제


위와 같이 필요에 따라 DOM의 생성, 제거를 제어할 수 있습니다.

Structural Directive의 활용은 다양할 수 있겠죠?

Validation Message를 띄워준다든지 하는 것들이요.


참고로 ngIf 앞의 *표시는 Structural Directive임을 나타내는 syntax 입니다.

대표적으로 *ngFor라는 녀석도 있습니다.

다음에 필요시 사용해보도록 할게요.


소스주소: https://github.com/jsrho1023/account-book


'IT Tech > Angular' 카테고리의 다른 글

Angular Material Icon  (0) 2018.03.18
Angular Material Header Toolbar  (0) 2018.03.11
Angular Directive (Attribute Directive)  (2) 2018.02.04
Angular Material 디자인  (0) 2018.01.27
Angular 데이터 바인딩 III (ngModel)  (0) 2018.01.21

TechTrip IT Tech/Angular

Angular Directive (Attribute Directive)

2018. 2. 4. 20:31

알게 모르게 계속 사용했던 Directive에 대해서 살펴보겠습니다.

Directive를 번역하자면 지시자 라고 할 수 있겠네요.

HTML에 Angular가 간섭할 부분을 표시한다라고 이해하면 쉽습니다.

Component 역시 template이 포함된 Directive로 정의하는데요.

<app-root> 기억하시죠?

이 부분에 app-component를 표출해달라는 표시였습니다.


Component는 별도로 치고, Directive에 2가지가 더 있습니다.

Structural Directive와 Attribute Directive입니다.


2가지 Directives의 차이는 DOM을 다루는 방식입니다.

Structural Directive는 DOM을 추가하거나 제거합니다.

Attribute Directive는 이미 있는 DOM에 스타일이나 동작을 부여합니다.

Angular가 간섭해야함을 표시한다는 걸 기억해주세요.


오늘은 먼저 Attribute Directive를 살펴볼게요.

Angular의 Directive는 마치 HTML에 존재하는 속성처럼 사용됩니다.

스스로 custom directive를 정의할 수도 있습니다.

하지만 이미 만들어진 ngStyle을 보며 directive를 이해해보죠.


<h3 
  [ngStyle]="{
    'color':budget<=1000?'red':'black',
    'background-color':budget<=1000?'yellow':'transparent'}">
      My Budget: &#8361;{{budget}}</h3>


h3 태그에 ngStyle Directive를 추가하였습니다.

마치 html 속성에 property binding을 한 모양새죠.

ngStyle의 값으로 css와 같이 key, value 쌍을 넣었습니다.

그리고 조건문도 들어갔죠.

budget 값이 1000이하면 노란배경에 빨간글씨가 됩니다.


ngStyle 적용 화면



ngStyle이라는 건 원래 html에 정의되어있지 않습니다.

즉 태그에 ngStyle이라고 표시되면 Angular가 간섭을 한다는 의미죠.

ngStyle의 실제 코드를 대략 살펴보면 아래와 같습니다.


@Directive({ selector: '[ngStyle]' })
class NgStyle implements DoCheck {
  set ngStyle: {...}
  ngDoCheck()
}


마치 Component에서처럼 selector가 존재하죠.

Anguar는 저 selector를 찾아서 HTML에 스타일을 입히는 겁니다.

ngStyle 뿐 아니라 ngClass와 같이 정의된 directive가 더 있습니다.

기회가 되면 차차 사용하면서 배우구요.

다음에는 Structural Directive를 사용해보면서 익혀보겠습니다. 


소스주소: https://github.com/jsrho1023/account-book

TechTrip IT Tech/Angular

Angular Material 디자인

2018. 1. 27. 12:01

서비스를 개발할 때 디자인에 대한 고민을 하게 됩니다.

각 요소의 컬러나 자잘한 인터랙션 등도 포함해서요.


이미 전문가가 고민한 디자인을 입힐 수 있다면 어떨까요?

그래서 Angular에 Material 디자인을 적용해보려합니다.

고맙게도 Angular 팀이 구글의 Material 디자인을 준비해두었어요. 


아래의 명령어를 통해 기본적인 설치를 진행합니다.

Material 디자인이 적용된 Module을 받는 거에요.

npm install --save @angular/material 
npm install --save @angular/cdk
npm install --save @angular/animations

Angular Module이기 때문에 사용하기 위한 설정이 필요합니다.


1. import


데이터바인딩을 위해 ngModel을 사용할 때 FormsModule을 썼죠?

동일하게 사용하고자 하는 component를 import해야 합니다.

현재 사용하고 있는 input과 button에 적용해보겠습니다.


import { MatInputModule } from '@angular/material/input';
import { MatButtonModule } from '@angular/material/button';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';

@NgModule({
    ...,
    imports: [
        BrowserAnimationsModule,
        MatInputModule,
        MatButtonModule
    ],
    ...
})
export class AppModule { }


위와 같이 해당하는 MatInput, MatButton 모듈을 import 해야합니다.

transition 효과를 위한 BrowserAnimation 모듈도 마찬가지죠.

@NgModule의 imports에 추가합니다.

그러면 첫 번째 설정이 완료됩니다.



2. style


디자인 관련하다보니 style 부분을 처음 이야기하게 되네요.

오늘 이야기할 부분은 src폴더 아래의 style.css 입니다.

angular-cli로 생성한 컴포넌트에도 css 파일이 있었죠?

그 파일에는 각 component에 적용될 디자인이 들어갑니다.

캡슐화되어 다른 component에는 적용되지 않죠.

그렇다면 component 전체적으로 적용할 디자인은 어디에 넣을까요?

바로 src폴더 아래에 style.css에 넣어줍니다.

Material 디자인 Theme과 같은 것들 말이지요.


@import "~@angular/material/prebuilt-themes/indigo-pink.css";


style.css에 위와 같이 추가해주면 material theme이 적용됩니다.

총 4가지 theme이 있어요. 맘에 드는 걸 고르시면 됩니다.


1) deeppurple-amber.css

2) indigo-pink.css

3) pink-bluegrey.css

4) purple-green.css


이름은 Primary-Accent 컬러의 조합으로 되어있습니다.

이미지로 보면 아래와 같아요. 


angular pre-built theme


마음에 드는 걸 사용하면 됩니다.

스스로 color를 정의할 수도 있어요.

Basic, Primary, Accent, Warn, Disabled, Link 컬러를 바꾸면되죠.

저는 아직 그쪽은 약하니 이미 정의된 걸 사용하겠습니다.


이제 Material 디자인을 사용하기 위한 설정은 마쳤습니다.


html코드에 적용해보도록 할까요?


<div class="mat-app-background">
    <h3>My Budget: &#8361;{{budget}}</h3>
    <mat-form-field>
        <input matInput 
               placeholder="budget" 
               type="text" 
               [(ngModel)]="budget"/>
    </mat-form-field>
    <button mat-raised-button 
            color="primary" 
            (click)="onAddIncome()">Add Income</button>
</div>


보기 쉽도록 줄바꿈을 좀 해봤습니다.

div 태그로 전체를 싸줬구요.

Theme의 배경색을 위해 mat-app-background 클래스를 추가합니다.

제가 고른 배경은 흰색이라 딱히 변화는 없어요.

그리고 input 태그는 mat-form-field 라는 태그로 싸줍니다.

Theme이 적용되기 위해서지요.

그리고 matInput 이라는 directive를 넣어주면 input은 완성입니다.

button의 경우 다른 별도의 태그가 필요없습니다.

mat-button이나 mat-raised-button directive를 넣으면 됩니다.

color는 라는 attribute를 사용하여 색을 입힙니다.

결과 화면은 아래와 같습니다.


angular-material theme 적용


Placeholder가 움직이는 마이크로인터랙션은 덤.

material angular에는 여러가지 component가 더 있습니다.

아래 출처에서 참고할 수 있어요.

저도 진행하면서 더 사용해보도록 하겠습니다.


소스주소: https://github.com/jsrho1023/account-book


출처:

Angular Material(https://material.angular.io/)


TechTrip IT Tech/Angular

고무나무 물꽂이 번식

2018. 1. 24. 20:56

얼마전(3달전..) 고무나무가 키가 너무 자랐다는 생각이 들었습니다.

가만 두면 왠지 화분이 못버틸 것 같았어요.

그래서 가지치기를 하기로 결심했습니다.


집에 남는 화분도 있고 가지치기한 부분이 아깝기도 하더군요.

그래서 물꽂이로 번식을 시켜보기로 결심합니다.

고무나무 가지를 자르면 하얀액이 나옵니다.

그 상태 그대로 300ml 물병에 꽂아두었어요.

물은 1주에 한 번씩 갈아주면서 기다립니다.

10월인지라 날이 추워서 걱정을 했어요.

그런데 기특하게도 점같은 뿌리가 나옵니다.(3주)


고무나무 물꽂이


그 후, 4~5주 정도 기다리니 그 점같았던 뿌리가 자라납니다.

조금 더(1~2주) 기다리니 뿌리가 심을만큼 길어졌어요.

10월 초에 고무나무 가지를 정리하고 12월 말이 되었습니다.

거의 2달 반이 넘게 기다렸네요.


물꽂이 후 화분에 심기


마트나 주변 화원에 가면 흙을 팝니다.

그리고 화분 밑에 물빠짐 바닥망도 팔아요.

고무나무에 좋은 관엽식물용 흙과 바닥망을 샀습니다.

적당히 흙을 넣고 뿌리가 나온 고무나무 가지를 심었습니다.

현재 화분 3개에 가지 3개를 심었어요.

그늘에서 2~3주 정도 요양을 하면 된다고 합니다.

포스팅하는 지금 시점까지 모두 잎이 건강해서 기뻐요.

무럭무럭 잘자랐으면 좋겠습니다.

'놀면서 배우기.' 카테고리의 다른 글

PC 조립하며 당황했던 순간 3가지  (0) 2018.04.01
개발용 PC 조립!  (0) 2018.03.31
물 새는 싱크대 배수구 교체  (0) 2017.12.23
오스트리아 여행 너무 깨알 팁~  (2) 2016.06.04
뮤지컬 배우 콘서트?!  (4) 2015.02.08

TechTrip 놀면서 배우기.

Angular 데이터 바인딩 III (ngModel)

2018. 1. 21. 22:24

html과 ts파일 간 바인딩을 살펴보고 있는데요.

지금까지는 단방향의 바인딩을 사용해보았습니다.

요약하면 아래 3가지네요.


{}: String Interpolation 

[]: Property Binding 

(): Event Binding 


이번에는 양방향 데이터 바인딩을 보겠습니다.

ngModel 이라는 directive를 이용하는 건데요.


생소한 용어가 2가지 있습니다.

ngModel은 html과 ts가 양방향으로 묶여있다는 개념입니다.

사용 예시를 보면서 좀 더 설명하구요.

directive는 나중에 자세히 다뤄보겠습니다.


ngModel을 사용하기 위해서는 FormsModule이 필요합니다.

import { FormsModule } from '@angular/forms';

@NgModule({
    ...,
    imports: [ 
        FormsModule
    ],
    ...
})
export class AppModule { }

위와 같이 app.module.ts 파일에 이를 명시해주도록 하죠. 

(불필요한 코드는 생략하고 추가된 코드만 넣었습니다.)


그리고 html 파일에 ngModule을 이용하기 위한 코드를 추가하겠습니다.

<h3>My Budget: ₩{{budget}}</h3>
<input type="text" [(ngModel)]="budget">
<button (click)="onAddIncome()">Add Income</button>

위 코드에서 중요한 부분은 [(ngModel)] 입니다.

일명 banana syntax 라고 하는 [()]로 ngModel을 감싸줍니다.

결과 화면은 아래와 같습니다.


ngModel을 활용한 바인딩


위와 같이 html의 input 값이 바뀌면 ts의 budget 값이 바뀝니다.

마치 html과 ts의 값이 바로 엮여있는 듯한 느낌이 들죠.


하지만 엄밀히 말하면 양방향 바인딩은 존재하지 않습니다.

내부적으로 프로퍼티 바인딩과 이벤트 바인딩을 쓰죠.

[(ngModel)]은 내부적으로 아래와 같이 동작합니다.

[ngModel]="budget", (ngModelChange)="budget =$event"

양방향 바인딩은 개발 편의를 위한 syntax라고 봐야겠죠.


진행하고 있는 코드는 github에서 자유롭게 볼 수 있습니다.


소스주소: https://github.com/jsrho1023/account-book


TechTrip IT Tech/Angular

스마트폰 좀 그만 봐~ 눈 나빠져!

2018. 1. 17. 22:00

얼마 전 점심 시간 식사하러 가는 길이었습니다.

사무실부터 엘리베이터를 지나 식당까지 스마트폰을 보고 있었지요. 

회사 선배분이 걱정 어린 한 마디 하십니다.

"야~ 스마트폰 그만 봐 눈나빠져."

"안그래도 매일 컴퓨터 앞에 앉아있는데.."


문득 생각이 드는 의문점.

스마트폰을 보면 정말로 눈이 나빠질까?


스마트폰 아니더라도 눈은 계속 사용합니다.

책을 보거나 컴퓨터를 사용하는 것 처럼 말이죠.

책과 스마트폰이 무엇이 다를까요?


안구건조증 환자 수 증가 추이



위 데이터를 보면 확실히 안구건조증이 증가하고 있습니다.

물론 안구건조증을 유발하는 요인은 많은데요.

스마트폰도 그 중 하나라고 전문가들은 이야기합니다.


스마트폰 화면이 눈에 직접적으로 병을 유발하는 건 아닙니다만.

스마트폰을 사용하는 습관이 눈에 좋지 않은 영향을 줄 수 있습니다.


즉, 스마트폰을 보면 정말로 눈이 나빠질까?

결론은 스마트폰 사용 습관으로 인해 나빠질 수 있다.


스마트폰의 작은 화면에 장시간 집중하여 눈의 근육이 약해지구요.

스마트폰에 집중하면서 눈 깜빡임이 줄어듭니다.


근육이 약해지면서 노안이 오고, 눈 깜빡임이 줄어 건조해집니다.


스마트폰 사용 습관을 달리하여 눈의 건강을 지킬 수 있습니다.

눈을 의식적으로 자주 깜빡이고, 자주 눈에 휴식을 취해줍니다.

먼 곳을 보거나 눈을 감는 등으로 말이지요.


눈 뿐만 아니라 스마트폰을 보며 걷다가 다치기도하니 주의하세요!

편리함을 가져다주는 스마트폰 조심할 점도 있다는 걸 기억하세요!


정보출처:

사이언스 타임즈

아주대병원

파이낸셜타임즈 (의학, 과학)

TechTrip 스압없는 소소한 Ep.