The Pursuit of Happyness

현재 Oracle 홈페이지에서 다운로드 가능한 XE 의 버전은 11이라서 상당히 오래되었지만,


조만간 출시될 Oracle 18 버전을 준비하며, 테스트용으로 간단히 설치해 보았습니다.


(참고로 클라우드 버전은 이미 출시했고, autonomous 하다고 해서 Oracle DBA 들 사이에서 논란이 많았었습니다..)


XE 버전은 상용서비스도 가능하지만 최대 11GB 까지의 데이터 저장이 가능하며, 최대 1GB 메모리만 사용하고, 하나의 CPU만 사용한다고 되어 있습니다.  


--------------------------------------


설치 환경 : Windows 10 Pro 1709 (64bits)


@ 다운로드


오라클 홈페이지에서 XE 버전을 다운로드 합니다.


http://www.oracle.com/technetwork/database/database-technologies/express-edition/downloads/index.html


약관이용에 동의하고 로그인한 후에 Windows x64 버전을 다운로드 합니다.


@ 설치


압축파일을 풀고 DISK1 폴더에 setup.exe 파일을 실행해서 설치를 합니다.


설치 위치를 지정하고, SYS / SYSTEM 계정의 비밀번호를 설정하고 설치를 합니다.


@실행


윈도우의 경우 Installer를 통해서 설치하면, Oracle 이 설치된 경로가 자동으로 Path로 지정이 됩니다.


윈도우키를 누르고, cmd 를 입력해서, 명령 프롬프트를 실행합니다.


명령 프롬프트에서 sqlplus 를 입력합니다.


user-name 에 SYSTEM 을 입력하고, password 에는 설치시 입력한 비밀번호를 입력합니다.


@ 사용자 등록


create user [username] identified by [password];


@ 권한 부여


접속 권한

grant connect to [username];


DB 권한

grant resource to [username];


그 외의 권한은 아래 링크 참조

https://docs.oracle.com/cd/E17781_01/admin.112/e18585/toc.htm


exit 명령어로 sqlplus 종료


sqlplus를 다시 실행해서 새로 생성한 계정 테스트


@ 개발 테스트


XE는 설치시 TNS 정보에 서비스명 XE로 등록이 됩니다.


TNS 정보는 설치 경로에 \app\oracle\product\11.2.0\server\network\ADMIN\tnsnames.ora 파일에서 확인이 가능합니다.


ex) node.js 연결 정보

var config = {

  user : [username],

  password : [password],

  connectString : "localhost/XE"

};


Comment +0

MSSQL 을 사용할 일이 생겨서 간단한 설치 과정을 적어 봅니다.


MSSQL을 테스트할 때는 개발자용으로 설치를 하거나 express 버전 (10GB 제한) 으로 설치해서 사용할 수 있습니다.


Express 버전은 아래의 링크에서 런처 파일을 다운로드 할 수 있습니다. 


https://www.microsoft.com/ko-kr/sql-server/sql-server-editions-express


테스트 환경 : Windows 10 Pro (1709) / MSSQL EXPRESS 2017 


런처 파일을 다운로드 후 실행을 하면, 다시 실제 설치 파일을 다운로드하고 MSSQL 서버를 설치할 수 있습니다.


MSSQL은 서버 로그인 방식은, 윈도우 기반의 네트워크에서 사용하는 인증방식으로 로그인을 하는 Windows 인증 방식과 ID / Password 를 입력해서 로그인하는 SQL 서버 인증방식이 있습니다. 필요에 따라 Windows 인증 혹은 SQL 서버 및 Windows 인증을 선택해서 사용할 수 있습니다.


서버 설치 후에는 클라이언트에 해당하는 MSSQL Server Management Studio 를 추가로 설치합니다.


-----------------------------


MSSQL 서버는 기본 설치시 네트워크 연결이 허용되지 않습니다. 따라서 새 사용자를 추가하기 위해서는 다음의 과정으로 네트워크 연결을 허용해 줍니다.


  1. SQL 서버 구성 관리자 실행 (SQL Server Configuration Manager)
  2. (좌측메뉴) SQL Server 네트워크 구성 > SQLEXPRESS에 대한 프로토콜 
  3. (우측메뉴) TCP/IP 를 사용으로 변경
  4. (좌측메뉴) SQL Server 서비스 선택 
  5. (우측메뉴) SQL Server (SQLEXPRESS) 선택
  6. 다시시작


참고로 TCP/IP 항목에서 바인딩된 IP 주소나 포트를 체크할 수 있습니다. 

(Windows 10 에서 MSSQL EXPRESS 버전을 설치한 경우 기본 1433 포트가 아닌 임의의 포트로 설정이 됩니다. 시스템 권한의 문제인지 EXPRESS 라서 그런건지는 잘 모르겠습니다. 추후에 알게되면 업데이트 하도록 하겠습니다.)


그리고 나서 인증 모드를 체크합니다.

  1. MSSQL Server Management Studio 실행
  2. 설치시 입력한 인증 방식을 이용해서 로그인
  3. 연결된 서버의 개체 탐색기에서 서버를 마우스 오른쪽 클릭해서 속성을 선택
  4. 페이지 선택에서 보안을 선택
  5. 오른쪽 영역에서 서버 인증 방식 확인 (SQL Server 및 Windows 인증 모드)
  6. 확인


사용할 데이터 베이스를 생성합니다.

  1. MSSQL Server Management Studio 에서 개체 탐색기 > 서버 > 데이터베이스 오른쪽 클릭
  2. 새 데이터베이스 선택 후 적당한 이름을 입력하고 확인


유저를 생성합니다.

  1. MSSQL Server Management Studio 에서 개체 탐색기 > 서버 > 보인 > 로그인 오른쪽 클릭
  2. 새 로그인 선택 후 
  3. 페이지 선택에서 일반 선택
  4. SQL 서버 인증
  5. 로그인 이름에 사용할 아이디 입력
  6. SQL 서버 인증 선택
  7. 암호 / 암호 확인 입력
  8. 기본 데이터베이스 설정
  9. 페이지 선택에서 사용자 매핑 선택
  10. 사용할 데이터 베이스 체크
  11. 데이터베이스 역할에서 필요한 권한을 할당
  12. 확인


생성된 유저는 MSSQL Server Management Studio 에서 로그인이 되는지 확인해 봅니다.

외부에서 접속하는 경우 방화벽 설정도 체크해 봅니다.



Summary 

설치 후 확인 사항
  1.  TCP/IP 연결 허용 여부 및 바인딩 된 IP 와 포트
  2. SQL 서버 로그인 인증 방식
  3. 데이터베이스 권한 등..
  4. 설정 변경 후 SQL 서버 재시작 필요
  5. 기타 방화벽 설정 등..





Comment +0

예전에 node.js에서 Oracle DB를 연결해서 사용하는 프로젝트를 해봤었는데, Oracle 이 node.js 를 제대로 지원하지 못한다는 느낌을 강하게 받았었습니다.


그때는 node.js oracledb 모듈을 설치할 때, 컴파일 과정이 들어가면서 의존성이 있었기 때문에 은근히 번거로웠었는데, oracledb 2.0 부터는 그러한 과정들이 필요 없게되어서 상당히 편리해졌습니다.


다만 새로운 모듈의 특성상 Oracle 혹은 instant client 을 설치하고, 라이브러리 경로를 설정해 줘야지만 제대로 동작합니다. node.js oracledb 와 Oracle 혹은 instant client 의 설치순서는 상관이 없습니다. 런타임 시점에 라이브러리 경로만 인식되면 됩니다.


또 다른 장점으로는 상당히 많은 수정을 통해서 메모리 관리 등에서 훨씬 안정적인 모듈이 되었다는 것입니다.


--


이쯤에서 node.js oracledb 모듈을 설치해 보겠습니다.


테스트 환경은 CentOS 7.4.1708 , node.js 6.12.3 입니다.


1. 적당한 폴더를 생성합니다.

# mkdir test 


2. 폴더에서 node 프로젝트를 생성합니다. 프로젝트 정보는 적당히 입력합니다.

# npm init 


3. 다음 명령어로 oracledb 모듈을 설치합니다.

# npm install --save oracledb 

현재 2.0.15 버전으로 설치가 됩니다.


4. instant client 를 설치합니다. Oracle 다운로드 페이지에서 적당히 다운로드 받습니다.

http://www.oracle.com/technetwork/database/database-technologies/instant-client/downloads/index.html

아래 명령어로 설치를 합니다.

# rpm -ivh  oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64.rpm

혹은 yum install 명령어를 이용해도 설치가 됩니다.


5. 환경변수를 설정합니다.

# vi /etc/environment


다음의 두줄을 추가합니다 원래 instant client 만 설치할 경우 "/usr/lib/oracle/12.2/client64/network/admin" 경로는 존재하지 않는데, XE 등을 설치시의 tns 설정경로와 비슷하게 하기 위해서 "network/admin" 폴더를 생성해 주었습니다.

TNS_ADMIN=/usr/lib/oracle/12.2/client64/network/admin

LD_LIBRARY_PATH=/usr/lib/oracle/12.2/client64/lib


6. tnsnames.ora 파일을 생성합니다.

# touch /usr/lib/oracle/12.2/client64/network/admin/tnsnames.ora 

생성한 파일을 편집해서 tns 정보를 입력합니다.


7. oracledb에 연결해서 테스트하는 예제들 입니다.

https://github.com/oracle/node-oracledb/tree/master/examples


webapp.js 나 webapppromises.js 파일을 참조하시면 pool 설정 등에 대한 예시를 볼 수 있습니다.



Comment +0

Lenovo 엔트리 노트북 ideapad 120s 에 대한 간단한 리뷰 입니다.


이 모델은 미국에서 모델명 81A40025US 으로 팔리고 있는 제품 입니다.


지난 블랙 프라이데이 때, Best Buy에서 $99 + tax 에 구매를 했습니다.


박스 모양이 110s 에 비해서 두께가 얇아지고 크기가 살짝 커졌습니다.



상자에 적힌 스펙입니다.

스크린 사이즈 11.6인치

CPU : N3350 (1.1GHz)

메모리 : 2GB

스토리지 (HDD) : 32GB eMMC

무선랜 : 802.11ac + BT4.0

기타 : HDMI 포트 / USB 3.0 포트(2) / USB-C 포트(1) / 헤드폰 잭 / 마이크로 SD 슬롯



구성품 사진 입니다.



크기 비교를 위해 로지텍 M510 마우스와 같이 찍어 보았습니다.


제품의 하단 입니다.


키보드 레이아웃 입니다. 110s와 비교해 보면 몇몇 변화가 눈에 띄는데요,


먼저 전원 버튼이 키보드 우측 상단에 배치 되어 있습니다. 맥의 키보드를 연상시키는 부분이네요..


그리고, 좌우 버튼 위에 있던 페이지 업 / 다운 버튼이 사라졌습니다.


마지막으로 키 감이 미묘하게 바뀌었습니다.



크기 비교를 위해서 12인치 서피스 프로3 과 같이 찍어 보았습니다.


제품에 기본으로 설치되어 있던 윈도우의 버전입니다. Windows 10 Home 1703 으로 되어 있었는데, 이 부분은 살짝 아쉬운 것이, 스토리지가 32GB 정도로 나오는 제품은 OS의 큰 업데이트를 처리하기 쉽지 않습니다. 1709 버전으로 출시 되기를 기대했었는데, 1703 이었습니다.. 


110s와 마찬가지로 박스에서 꺼냈을 때 배터리가 완전히 방전되어 있었습니다.


미디어 재생시의 발열을 체크해 봐야 하는데, 사정상 지금 TV 연결을 할 수가 없어서 그 부분은 아직 체크를 못해봤습니다.


키보드에 대해서 잠시 이야기를 하자면, 110s 의 경우 딸깍이는 느낌의 전원 버튼이 참 맘에 들었었는데, 맥과 비슷한 형태의 전원 버튼으로 바뀐 점은 살짝 향수가 느껴지는 아쉬움이 있고요..


키 감은 쫀득한 느낌에서 부드러운 느낌으로 바뀌었습니다.


뭔가 예전에 X30 키보드에서 X40 키보드로의 변화 같은 느낌이랄까..


개인적으로 Page Up / Page Down 버튼이 없어져서 좋았고요, 


터치패드는 여전히 살짝 왼쪽으로 치우쳐져 있네요..


그리고 화면의 시야각은 좁은 편입니다.



110s 와 비교했을 때, CPU 성능이 약간 개선 되었다고 하는 부분을 살짝 기대했었는데, (싱글 쓰레드 기준 40% 정도, 멀티쓰레드 환경에서 13% 정도 성능 향상) , 큰 차이를 느끼기는 힘듭니다.


N3060 CPU 벤치마크 vs N3550 CPU 벤치마크


다만 TDB는 같지만 베이스 클럭 스피드가 낮아져서 (1.6GHz -> 1.1GHz) 발열이 조금이라도 적지 않을까 하는 기대감이 있습니다.


----------


이 제품을 메인 작업용으로 쓰기에는 약간의 인내심이 필요할 것 같지만, 


간단한 웹브라우징 등의 용도로 쓰기에는 나쁘지 않은 거 같습니다.


원래 가격이 $199 정도지만 적당히 세일할 때 사서 거실에  두고 쓰는 용도로도 괜찮을 듯 합니다.


아이패드는 키보드가 없어서 불편하고, 메인 노트북은 책상에서 주로 써서 가지러 가기 귀찮을 수 있는데,


이럴 때, 120s 같은 엔트리 급 노트북을 거실에 하나 비치해 두고 활용하는 것도 생각보다 편리합니다.







Comment +0

예전에 포스팅했던 [PHP] Gmail SMTP를 이용하여 메일 보내기를 업데이트 합니다.



먼저 예전에 구글코드에서 관리하던 PHPMailer는 github를 통해서 소스가 관리되고 있습니다.


현재 릴리즈 된 버전은 6.x 인데, composer로 설치할 경우 PHP 버전에 따라서 5.2.x 버전이 설치되기도 합니다.


모듈을 로딩하는 방식이 조금 다르기 때문에 버전에 따라 사용법을 살펴보겠습니다.



0. PHP 는 설치되어 있다고 가정합니다.


1. PHPMailer를 설치하기 위해서 composer를 설치합니다.


참고 사이트

https://getcomposer.org/download/


CLI 설치 

$ php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"

$ php -r "if (hash_file('SHA384', 'composer-setup.php') === '544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

$ php composer-setup.php

$ php -r "unlink('composer-setup.php');"


위의 명령들을 차례대로 실행하면, 명령어를 실행한 경로에 composer.phar 파일이 생성됩니다.


2. PHPMailer 설치 


참고 사이트

https://github.com/PHPMailer/PHPMailer   (최신 버전)

https://github.com/PHPMailer/PHPMailer/tree/5.2-stable  (5.2 버전)


composer.phar 파일이 있는 곳에서 다음의 명령으로 phpmailer 를 설치합니다.

$ php composer.phar require phpmailer/phpmailer


php 버전에 따라서 호환이 되는 PHPMailer 모듈이 설치됩니다.



3. 메일 보내기


6.x 버전에서는 사이트에 나와있는 샘플대로 아래와 같이 코드를 작성하면 됩니다. 

 

<?php
// Import PHPMailer classes into the global namespace
// These must be at the top of your script, not inside a function
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

//Load composer's autoloader
require 'vendor/autoload.php';

$mail = new PHPMailer(true);                              // Passing `true` enables exceptions
try {
    //Server settings
    $mail->SMTPDebug = 2;                                 // Enable verbose debug output
    $mail->isSMTP();                                      // Set mailer to use SMTP
    $mail->Host = 'smtp1.example.com;smtp2.example.com';  // Specify main and backup SMTP servers
    $mail->SMTPAuth = true;                               // Enable SMTP authentication
    $mail->Username = 'user@example.com';                 // SMTP username
    $mail->Password = 'secret';                           // SMTP password
    $mail->SMTPSecure = 'tls';                            // Enable TLS encryption, `ssl` also accepted
    $mail->Port = 587;                                    // TCP port to connect to

    //Recipients
    $mail->setFrom('from@example.com', 'Mailer');
    $mail->addAddress('joe@example.net', 'Joe User');     // Add a recipient
    $mail->addAddress('ellen@example.com');               // Name is optional
    $mail->addReplyTo('info@example.com', 'Information');
    $mail->addCC('cc@example.com');
    $mail->addBCC('bcc@example.com');

    //Attachments
    $mail->addAttachment('/var/tmp/file.tar.gz');         // Add attachments
    $mail->addAttachment('/tmp/image.jpg', 'new.jpg');    // Optional name

    //Content
    $mail->isHTML(true);                                  // Set email format to HTML
    $mail->Subject = 'Here is the subject';
    $mail->Body    = 'This is the HTML message body <b>in bold!</b>';
    $mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

    $mail->send();
    echo 'Message has been sent';
} catch (Exception $e) {
    echo 'Message could not be sent.';
    echo 'Mailer Error: ' . $mail->ErrorInfo;
}


5.2.x 버전에서도 기존 사이트에 나와있는 샘플과 비슷하게 작성하면됩니다.

(샘플에서 require 부분의 경로만 살짝 변경해 주었습니다.)


<?php
require 'vendor/phpmailer/phpmailer/PHPMailerAutoload.php'; $mail = new PHPMailer; //$mail->SMTPDebug = 3; // Enable verbose debug output $mail->isSMTP(); // Set mailer to use SMTP $mail->Host = 'smtp1.example.com;smtp2.example.com'; // Specify main and backup SMTP servers $mail->SMTPAuth = true; // Enable SMTP authentication $mail->Username = 'user@example.com'; // SMTP username $mail->Password = 'secret'; // SMTP password $mail->SMTPSecure = 'tls'; // Enable TLS encryption, `ssl` also accepted $mail->Port = 587; // TCP port to connect to $mail->setFrom('from@example.com', 'Mailer'); $mail->addAddress('joe@example.net', 'Joe User'); // Add a recipient $mail->addAddress('ellen@example.com'); // Name is optional $mail->addReplyTo('info@example.com', 'Information'); $mail->addCC('cc@example.com'); $mail->addBCC('bcc@example.com'); $mail->addAttachment('/var/tmp/file.tar.gz'); // Add attachments $mail->addAttachment('/tmp/image.jpg', 'new.jpg'); // Optional name $mail->isHTML(true); // Set email format to HTML $mail->Subject = 'Here is the subject'; $mail->Body = 'This is the HTML message body <b>in bold!</b>'; $mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; if(!$mail->send()) { echo 'Message could not be sent.'; echo 'Mailer Error: ' . $mail->ErrorInfo; } else { echo 'Message has been sent'; } 







Comment +0

테스트 환경 : MacOSX (High Sierra) + Oracle JDK9 + Eclipse (Oxygen)


Eclipse 설치 후 실행하면, "An error has occurred, see the log file null" 이라는 메세지가 나오면서 eclipse 가 강제로 종료되는 현상이  발생


해결 방법


아래 경로에 가서


/Applications/Eclipse.app/Contents/Eclipse 


eclipse.ini 파일을 편집


-vmargs 항목에 파라미터를 하나 추가해 준다.

-vmargs

--add-modules=java.se.ee 


이렇게 해서 해결이 되는 경우가 대부분인데 해결이 되지 않는 경우도 있다고 함..





Comment +0

CSS 플렉서블 박스에 대한 간단 사용법 입니다.


기본 속성

display : flex / inline-flex

  • flex: 박스를 블록 수준의 플렉서블 박스로 작동하게 함
  • inline-flex: 박스를 인라인 수준의 플렉서블 박스로 작동하게 함


아이템의 배치 방향 설정하기

flex-direction : row / row-reverse / column / column-reverse

  • row : 기본 설정 값. 박스를 왼쪽에서 오른쪽으로 배치. 주축은 가로 / 교차축은 세로
  • row-reverse : 박스를 오른쪽에서 왼쪽으로 배치
  • column : 박스를 위에서 아래로 배치
  • column-reverse : 박스를 아래에서 위쪽으로 배치


아이템을 여러 줄로 배치하기

flex-wrap : nowarp / wrap / wrap-reverse

  • nowrap : 기본 설정 값. 박스를 한줄로 배치
  • warp : 박스를 여러 줄로 배치
  • wrap-reverse : 박스를 여러 줄로 배치하는데 순서는 wrap 의 반대 (주축이 가로인 경우 아래에서 위로, 주축이 세로인 경우 오른쪽에서 왼쪽으로 배치)


배치 방향과 여러 줄 배치 설정을 같이 하기

flex-flow : [flex-direction] [flex-wrap]


주축 방향의 아이템 배치 / 정렬

justify-content : flex-start / flex-end / center / space-between / space-around

  • flex-start : 기본 설정 값. 박스틀을 주축의 시작점부터 쌓아서 배치
  • flex-end : 박스들을 쌓아서 주축의 끝점으로 배치
  • center : 박스들을 쌓아서 주축의 중앙에 배치
  • space-between : 박스들 사이에 공백을 넣어서 배치
  • space-around : 박스들 사이와 시작, 끝에 공백을 넣고 배치


교차축 방향의 아이템 배치 / 정렬

align-items : stretch / flex-start / flex-end / center / baseline

  • stretch : 기본 설정 값. 박스를 교차축 방향으로 늘려서 배치
  • flex-start : 박스를 교차축 시작점 기준으로 배치
  • flex-end : 박스를 교차축 끝점 기준으로 배치
  • center : 박스를 교차축의 중앙에 배치
  • baseline : 박스들을 교차축의 시작점에 배치되는 자식 박스의 글자 베이스라인에 맞춰서 배치

교차축 방향으로 아이템들을 개별적으로 배치하기
align-self : auto / stretch / flex-start / flex-end / center / baseline
  • auto : 부모의 align-items 속성을 상속
(나머지는 align-items 설명을 참조)


여러 줄의 아이템을 교차축 방향으로 배치 / 정렬 하기
align-content : stretch / flex-start / flex-end / center / space-between / space-around
(justify-content, align-items 의 설명을 참조)


플렉스 아이템의 배치 순서 지정하기
order : 정수 (기본값 0)

큰 숫자가 뒤쪽으로 배치되며, 숫자가 같은 경우 먼저 작성된 태그가 앞에 배치
음수는 0으로 간주됨


플렉스 아이템의 크기 비율 지정
flex : [flex-grow] [flex-shrink] [flex-basis]
  • flex-grow : 여백이 있는 경우 아이템의 크기를 비율대로 늘려주는 속성
  • flex-shrink : 아이템의 크기가 지정한 박스 크기 보다 큰 경우 줄여주는 속성
  • flex-basis : 아이템의 기본 크기를 설정하기 위한 속성






Comment +0

Lenovo 에서 가장 저렴한 윈도우 노트북 ideapad 110s 에 대한 간단한 리뷰 입니다.



모델명은 80WG0001US 로 미국에서 판매되는 제품입니다.


구성품은 본체와 어댑터, 그리고 간단 매뉴얼이 전부였습니다.



제품의 주요 스펙은 다음과 같습니다.

스크린 사이즈 : 11.6인치

CPU : N3060 (1.6GHZ)

메모리 : 2GB

스토리지 (HDD) : 32GB eMMC

무선랜 : 802.11ac

기타 : HDMI 포트 / USB3.0 포트(1) / USB 2.0 포트(2) / 헤드폰 잭 / 마이크로 SD 슬롯




다음은 맥북 프로 15인치 (2014년 형) 와의 크기 비교 입니다.



처음 박스에서 꺼냈을 때, 배터리가 완전히 방전되어 있어서 어댑터를 꽂아야만 사용이 가능했습니다.




간단한 테스트를 거치고나서 불필요한 소프트웨어도 제거할 겸 한글 윈도우 10으로 클린 설치를 했습니다.


몇몇 드라이버는 자동으로 설치가 되지 않아서  수동으로 설치해줬고, 그래픽 드라이버와 무선랜 드라이버는 따로 업데이트를 했습니다.


그리고 나서 윈도우 업데이트를 하는데도 시간이 은근히 걸렸습니다.


참고로 부팅시간은 대략 30초 내외였습니다.




이 노트북은 TV에 연결해서 NAS에 있는 미디어 파일들을 재생하는 용도로 사용할 예정이었고,


주로 사용하는 동영상 재생 프로그램은 다음 팟 플레이어 최신버전 (2017-09-02 기준)이었습니다. 




TV는 4K를 지원하지만 보통 1080P 정도로 연결을 해서 사용합니다.


처음에는 동영상이 깔끔하게 재생되나 싶었는데, 시간이 지나면 어느 순간 말이 끊기는 현상이 나타났습니다.


원인은 10여분 이상 동영상을 재생하면 HDMI 포트 쪽으로 열이 많이 나서 그런지, 


CPU 점유율이 올라가면서 재생이 재대로 되지 않는 것으로 생각됩니다.


그냥 노트북 화면으로 보는 경우 10분 이상 재생해도 큰 문제가 생기지는 않았습니다.




문제가 하나 더 있었는데, 부팅시에 무선랜 어댑터를 제대로 찾지 못하는 현상이 종종 발생했습니다.


모든 110s 제품에 발생하는 문제인지는 알수가 없었습니다.





CPU를 많이 써야 하는 용도로는 추천하고 싶지 않고요,


웹서핑이나, 가벼운 문서 작업 등의 용도로 쓰기에는 상당히 괜찮아 보입니다. 


그리고 기본 스토리지가 32GB 이지만 OS 영역이 절반 이상 차지하기 때문에 실제로 사용가능한 용량은 그리 크지 않습니다.


그리고 화면 시야각도 좁은 편입니다.


가벼운 무게 (대략 1Kg) 와 상당히 깔끔한 디자인은 상당히 매력적입니다.


흰색 제품이고 플라스틱 마감이라서 그런지 맥북 보다 따뜻한 느낌이 들어서 좋습니다.


키 감은 다소 주관적인 부분이라 직접 체험해 보시는 것이 좋을 듯 합니다.


개인적으로는 살짝 쫀득한 느낌이 좋았고, 전원 버튼 누를때 살짝 딸깍하는 느낌도 괜찮았습니다.


키 배열에 있어서는 개인적으로 Page Up / Page Down 키가 없었으면 더 좋았을 거 같다는 생각이 들지만 그 외에는 대략 만족이었습니다.


터치 패드가 살짝 왼쪽으로 치우쳐 있는데, 중심이었으면 베스트였을 것 같습니다.



~








Comment +0

윈도우에서 npm으로 oracledb 모듈을 설치하던 중에 다음과 같은 에러가 발생했습니다.


MSBUILD : error MSB4132: The tools version "2.0" is unrecognized. Available tools versions are "4.0".


모듈 설치를 위해서 Python 2.7 과 Visual Studio 2017 CE 를 설치해 두었는데, 위와 같은 에러가 발생했습니다.


(참고로 node oracledb를 설치하기 위해서는 Oracle Instant Client 혹은 XE 등이 필요하고, 그 외에 Python 과 C++ 컴파일러가 필요합니다.)



관련해서 검색을 하다가 아래 링크에서 답을 찾았습니다.


https://github.com/chjj/pty.js/issues/60



요점만 적어보면, 


1. 관리자 권한으로 명령 프롬프트를 실행합니다.


2. 다음 명령으로 빌드 관련 툴을 설치합니다.


 npm install --global --production windows-build-tools 


3. 다음 명령으로 빌드 툴에서 사용할 visual studio 버전을 설정합니다.


 npm config set msvs_version 2015 --global


그리고 나서 창을 닫고 새 창을 열어서 다시 시도하니 설치가 잘 되었습니다.







Comment +0

테스트 환경

Ubuntu 16.04.2 LTS


Oracle DB를 이용할 일이 생겨서 Ubuntu에 Oracle XE를 설치해 보았습니다.


설치하는데 아래 링크를 참조했습니다.

http://www.gokhanatil.com/2016/04/how-to-install-oracle-11gr2-xe-on-ubuntu.html


먼저 설치 패키지를 아래 링크에서 다운로드 합니다. 

(2017년 3월 30일 현재 2014년에 배포한 11gR2 가 최신버전 입니다.)

http://www.oracle.com/technetwork/database/database-technologies/express-edition/downloads/index.html


Oracle 홈페이지에서는 리눅스 용으로는 rpm을 zip으로 압축해서 배포하고 있습니다.


다운로드 완료 후에는 다음 명령으로 압축을 풀어 줍니다.


$ unzip oracle-xe-11.2.0-1.0.x86_64.rpm.zip


압축이 풀리면 Disk1 폴더가 생성되고 그 안에 rpm 파일이 있습니다.


rpm 파일을 Ubuntu 에서 쓰는 deb 파일로 변환을 해 주어야 합니다.


rpm을 deb로 변경할 때는 alien 을 사용하게 됩니다. 


만약 alien 이 설치되어 있지 않다면 다음 명령으로 설치합니다.


$ sudo apt install alien 


그리고 오라클 사용에 필요한 라이브러리를 설치합니다. (사용자의 환경에 따라 이미 설치되어 있을 수도 있습니다.)


$ sudo apt install libaio1


Disk1 폴더에서 아래 명령으로 rpm을 deb로 변경합니다. (시간이 상당히 걸리는 작업입니다.)


$ sudo alien --scripts oracle-xe_11.2.0-1.0.x86_64.rpm


deb 파일을 다음 명령으로 설치를 합니다.


$ sudo dpkg -i oracle-xe_11.2.0-2_amd64.deb


설치 도중에 /sbin/chkconfig 가 없다는 메시지가 나오게 되는데, redhat 계열에서 사용하는 설정인데 무시하셔도 상관 없습니다. 그래도 설정을 하고 싶다면, 아래 링크를 참조하세요.

http://meandmyubuntulinux.blogspot.com/2012/05/installing-oracle-11g-r2-express.html


그리고 설치 후에는 설정을 위해서 스크립트를 실행해야 합니다. 실행시에 발생할 에러를 막기 위해서 아래와 같이 링크를 설정하고 폴더를 생성합니다. (폴더가 이미 존재하는 경우도 있습니다.)


$ sudo ln -s /usr/bin/awk /bin/awk

$ sudo mkdir /var/lock/subsys


그리고 스크립트를 돌려서 초기 설정을 합니다.


$ sudo /etc/init.d/oracle-xe configure


초기 설정을 위해 몇가지 질문을 하는데, 성실히 대답해 주면 됩니다.


아래 명령으로 시작합니다.


$ sudo /etc/init.d/oracle-xe start


아래 명령으로 서버를 종료합니다.


$ sudo /etc/init.d/oracle-xe stop




Comment +0