The Pursuit of Happyness

반응형

얼마전 Mavericks 가 무료로 배포되어 업그레이드를 했는데, 

즐겨쓰던 VritualBox (4.2.x) 에서 문제가 생겼습니다.

어플을 실행하여 인스턴스를 실행하려하면, 


Kernel driver not installed (rc=-1908) 


이라는 에러를 던져주고 실행이 되지 않았습니다.

virtualbox.org 에 가보니 4.3.0 버전이 출시되어 있길래 이걸 써야 된다고 생각하여 프로그램을 업데이트!

예상되로 잘 되는가 보다 싶었는데..

리붓을 하고 나면 다시 똑같은 에러를 던져주고 실행이 되지 않았습니다.


구글님의 힘을 빌어 여기저기 수소문해보았으나..

대부분 다시 인스톨 하면 해결된다 혹은 특정 스크립트를 실행해랴 라는 식의 답변이었는데,

아쉽게도 저의 경우는 그렇게 해서 해결이 되진 않았습니다.


아마도 기존에 설치되었던 파일 중에 무언가가 충돌을 일으키고 있다는 판단하에 이런 저런 방법을 살펴보다가,

/Liberary/Extensions 폴더에서 VBoxDrv.kext / VBoxNetAdp.kext / VBoxNetFlt.kext / VBoxUSB.kext 커널을 발견

날짜가 한달 전인것을 확인하고 다른 곳에 백업후 삭제하였습니다.

그리고 나서 4.3.0 을 재설치 (덮어쓰기) 하고 나니, 잘 돌아가는 것을 확인!

리부팅 후에도 잘 돌아가는 것을 확인하였습니다!


참고로 Retina, 15 inch, Early 2013 MBP 사용중이고, Mountain Lion 에서 Mavericks 로 업데이트 했었습니다.


반응형

반응형

1. 하드 디스크 연결 확인

> lsblk

새로 장착된 하드 디스크의 이름을 확인한다. 

ex) sdb


2. 하드 디스크 파티션 생성

> fdisk /dev/[하드 디스크 이름]

ex) fdisk /dev/sdb


fdisk 상에서의 커맨드

p : 파티션 정보 보기

n : 새 파티션 생성

e : extended

p : primary partition

파티션 아이디 입력 [1-4]

first cylinder : [시작 Cylinder]

last cylinder : [파티션에 사용할 사이즈 or 마지막 Cylinder] ex) 20G

w : 저장 후 종료

q : 저장하지 않고 종료


3. 하드 디스크 포맷

> mkfs -t [파일 시스템] /dev/[하드 디스크 이름 + 파티션 아이디]

ex) mkfs -t ext4 /dev/sdb (단일 파티션인 경우)

mkfs -t ext4 /dev/sdb1


4. 하드 디스크 마운트

마운트 할 폴더를 미리 지정한다.

ex) /home

> mount /dev/[하드 디스크 이름] [마운트 할 폴더]

ex) mount /dev/sdb /home

cf. unmount 는 umount 명령어를 사용한다.

ex) umount /home


5. 부팅시 자동 마운트

/etc/fstab 파일을 수정해서 필요한 내용을 추가한다.

<file system> : 마운트 하려는 파티션 이름 - 하드 디스크 변경이 잦은 경우 UUID=xxx 식으로 적어 주는 편이 안전함. UUID는 lsblk -f 명령어로 확인이 가능하다. 

UUID는 하드 디스크 이름을 아는 경우 

blkid /dev/[하드 디스크 이름]

ex) blkid /dev/sdb

하드 디스크 이름을 모르는 경우

ls -l /dev/disk/by-uuid/

명령어로 확인이 가능하다.


<dir> : 마운트 하려는 위치

<type> : 타입 혹은 파일 시스템

<options> : 파티션 옵션, 잘 모르면 defaults 를 적어준다. (자세한 옵션은 http://linux.die.net/man/8/mount 에서 Mount Option 부분을 참조)

<dump> : dump utility 로 백업할지를 결정 (0 : 끄기)

<pass> : fsck에 의해 파일 시스템을 체크할 순서 (0 : skip), root 파티션에 1을 적는다.

ex)

/dev/sdb        /home        ext4        defaults        0        0




반응형

반응형

맥에서 부트캠프를 설치하려고 하는데, USB 메모리를 이용해서 Windows 를 설치하기 위한 방법.

최근의 맥은 ODD가 없어서 USB 메모리를 이용한 Windows 설치가 지원되지만, 

ODD가 있는 구형 맥은 ODD를 이용해서 설치해야 하기 때문에 Windows CD 혹은 DVD 가 있어야 설치가 가능하지만,

아래의 방법을 이용하면 구형 맥에서도 USB 메모리를 이용해서 Windows 를 설치할 수 있다.


Terminal 에서 아래 파일을 편집한다.

/Applications/Utilities/Boot Camp Assistant.app/Contents/Info.plist

Terminal 이 익숙치 않은 경우, Applications > Utilities 에 가서,

Boot Camp Assistant 아이콘을 오른쪽 클릭하여, 

"Show Package Contents" 를 선택하면 Contents 폴더를 열면 Info.plist 파일이 있음.

TextEdit 등의 프로그램을 이용해서 편집하면 됨.


1. Boot Camp 4.x (Lion)

파일을 열어서 아래 내용을 검색한 후,

<key>USBBootSupportedModels</key>

하단에 나오는 array 내용 중에 사용중인 맥 타입을 찾아서 변경해 주면 됨..

<array>

<string>IM130</string>

<string>MM50</string>

<string>MP60</string>

<string>MB80</string>

<string>MBP90</string>

<string>MBA40</string>

</array>


IM : iMac

MM : Mac Mini

MP : Mac Pro

MB : Macbook

MBP : Macbook Pro

MBA : Macbook Air


맥 타입은 Applications > Utilities > System Information 에 있는 Boot ROM Version 에서 "." 으로 구분했을 때, 제일 앞에 오는 키워드를 사용하면 됨

(혹은 화면 왼쪽 상단의 사과마크 > About This Mac > More Info > System Report)

ex) Boot ROM Version 이 "MB41.00C1.B00" 으로 나오는 맥은 "MB41" 을 사용하면 됨.

<string>MB80</string> => <string>MB41</string> 로 수정


2. Boot Camp 5.x (Mountain Lion)

파일을 열어서 아래 내용을 검색한 후,

<key>PreUSBBootSupportedModels</key>


하단에 나오는 array 내용 중에 사용중인 맥 타입을 찾아서 Identifier 를 변경해 주면 됨..

<array>

<string>MacBook7,1</string>

<string>MacBookAir3,2</string>

<string>MacBookPro8,3</string>

<string>MacPro5,1</string>

<string>Macmini4,1</string>

<string>iMac12,2</string>

</array>


맥 Identifier는 Applications > Utilities > System Information 에 있는 Model Identifier 값이다.

(혹은 화면 왼쪽 상단의 사과마크 > About This Mac > More Info > System Report)

ex) Model Identifier "MacBookPro7,3" 의 맥북프로를 가진 사람은 아래 내용을

<string>MacBookPro8,3</string>    =>     <string>MacBookPro7,3</string> 

이런식으로 본인의 맥에 맞춰서 버전을 수정하면 됨.


반응형

반응형

PHP mail 보내기 - 파일첨부하기 / 이미지 보여주기

기본적인 메일 보내는 방법은 아래 링크 참고하세요.

http://shineum.tistory.com/56


1. 파일 첨부하기

$mail->AddAttachment("첨부파일 경로 혹은 파일 리소스", "첨부파일 이름");    //  해당 경로의 파일을 지정한 파일 이름으로 첨부


2. 메일에 이미지를 보여주기

- 보여줄 이미지를 유니크한 키를 사용해서 embeded image 로 추가를 해준다.

- embeded 할때 지정한 유니크 키를 src 태그를 사용해서 이미지 링크로 걸어준다.

$mail->AddEmbeddedImage("첨부파일 경로 혹은 파일 리소스", "유니크 키1");

$mail->AddEmbeddedImage("첨부파일 경로 혹은 파일 리소스", "유니크 키2");

$mail->MsgHTML("

<p><img src='cid:유니크 키1'></p>

<p><img src='cid:유니크 키2'></p>

");







반응형

반응형

터미널에서 다음 커맨드를 순차적으로 실행

sudo chown root:admin /

sudo kextcache -prelinked-kernel

sudo kextcache -system-caches

diskutil repairPermissions /



반응형

반응형


1. 먼저 소스 설치시 필요한 모듈을 설치합니다. (install modules) 

이미 설치된 모듈은 건너 뛰어도 상관 없습니다.

> yum install wget pcre pcre-devel make


2. 최신 아파치 소스를 다운로드 받습니다. (download httpd source from this link)

http://httpd.apache.org/download.cgi

> wget http://URL/httpd-NN.tar.gz


3. 압축을 적당한 폴더에 압축을 풀어 둡니다. (extract source code)

> tar zxvf httpd-NN.tar.gz

> cd httpd-NN/srclib


4. 필요한 경우 apr, apr-util 소스를 다운로드 받아서 srclib 폴더에 풀어 둡니다. (download apr and apr-util source from this link)

http://apr.apache.org/


> wget http://URL/apr-NN.tar.gz

> wget http://URL/apr-util-NN.tar.gz


5. 압축을 풀고 폴더 이름을 다음과 같이 변경합니다. (extract source code on srclib folder and change folder name)

> tar zxvf apr-NN.tar.gz

> mv apr-NN apr

> tar zxvf apr-util-NN.tar.gz

> mv apr-util-NN apr-util


4. 이제 컴파일 해서 설치를 하게 되는데 경로는 "/usr/local/httpd" 에 설치하도록 하겠습니다. (install to "/usr/local/httpd")

> cd ..

> ./configure --prefix=/usr/local/httpd --with-included-apr

> make

> make install


5. 아파치 서버에 필요한 설정을 변경합니다. (configuration)

> vi /user/local/httpd/conf/httpd.conf


6. 다음과 같이 아파치를 실행합니다. (run)

> /user/local/httpd/bin/apachectl -k start





반응형

반응형


import java.util.Properties;


import javax.mail.Message;

import javax.mail.MessagingException;

import javax.mail.PasswordAuthentication;

import javax.mail.Session;

import javax.mail.Transport;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeMessage;


public class GmailSMTP

{

    public static void sendMail(String account, String auth, String to, String subject, String msg, boolean isSSL, boolean isHtml)

    {

        final String username = account;

        final String password = auth;


        String mailFrom = username;

        String mailTo = to;


        Properties props = new Properties();

        props.put("mail.smtp.auth", "true");

        props.put("mail.smtp.host", "smtp.gmail.com");


        if (isSSL)

        {

            props.put("mail.smtp.socketFactory.port", "465");

            props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");

            props.put("mail.smtp.port", "465");

        }

        else

        {

            props.put("mail.smtp.starttls.enable", "true");

            props.put("mail.smtp.port", "587");

        }


        Session session = Session.getInstance(props, new javax.mail.Authenticator()

        {

            protected PasswordAuthentication getPasswordAuthentication()

            {

                return new PasswordAuthentication(username, password);

            }

        });


        try

        {

            Message message = new MimeMessage(session);

            message.setFrom(new InternetAddress(mailFrom));

            message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(mailTo));

            message.setSubject(subject);


            if (isHtml)

                message.setContent(msg, "text/html");

            else

                message.setText(msg);


            Transport.send(message);

        }

        catch (MessagingException e)

        {

            throw new RuntimeException(e);

        }

    }

}

 


ps. mail.jar 가 필요함


반응형

반응형


PHPMailer 에 대한 새로운 사용법을 새로운 포스트에 남겨두었습니다. 참고하세요.


1. 다음 링크에서 필요한 모듈을 다운로드 받는다. (PHPMailer)

http://code.google.com/a/apache-extras.org/p/phpmailer/

개발자가 코드를 github 로 옮겼습니다. 아래 링크에서 다운로드 받으세요..

=> https://github.com/PHPMailer/PHPMailer

 

2. 다운로드 받은 파일을 적당한 경로에 압축을 푼다.

ex)

/var/www/html/inc/PHPMailer

 

3. 메일 보낼 코드 작성

/var/www/html/mailSample.php

 

<?php

require_once("inc/PHPMailer/class.phpmailer.php");

 

$mail = new PHPMailer(true);

$mail->IsSMTP();

try {

  $mail->Host = "smtp.gmail.com";    // email 보낼때 사용할 서버를 지정

  $mail->SMTPAuth = true;              // SMTP 인증을 사용함

  $mail->Port = 465;                        // email 보낼때 사용할 포트를 지정

  $mail->SMTPSecure = "ssl";        // SSL을 사용함

  $mail->Username   = "GMAIL ACCOUNT";    // Gmail 계정

  $mail->Password   = "PASSWORD";            // 패스워드

 

  $mail->SetFrom('from email address', 'Display Name'); // 보내는 사람 email 주소와 표시될 이름 (표시될 이름은 생략가능)

  $mail->AddAddress('to email address', 'Display Name'); // 받을 사람 email 주소와 표시될 이름 (표시될 이름은 생략가능)

  $mail->Subject = 'Email Subject';        // 메일 제목

  $mail->MsgHTML("Email Content");    // 메일 내용 (HTML 형식도 되고 그냥 일반 텍스트도 사용 가능함)

 

  $mail->Send();                                // 실제로 메일을 보냄

  echo "Message Sent OK<p></p>\n";

} catch (phpmailerException $e) {

  echo $e->errorMessage(); //Pretty error messages from PHPMailer

} catch (Exception $e) {

  echo $e->getMessage(); //Boring error messages from anything else!

}

?>

 

 

 

반응형

반응형

웹서버로 많이 사용하는 Apache-Tomcat 에서 tomcat 기본적으로 8080 포트에서 동작하는데,

기본 웹서버 포트인 80 포트로 동작시키기 위해서는 mod_proxy mod_jk 이용해서 포트를 연결해 줘야 한다.

 

mod_proxy mod_jk 장단점은 다음과 같다.

@ mod-proxy

- 장점

                1. 추가 모듈이 따로 필요 없다.  (Apache 2.2 이상에서는 mod_proxy, mod_proxy_http, mod_proxy_ajp, mod_proxy_balancer 모두 포함되어 있다.)

                2. http, https 혹은 AJP 사용가능

- 단점

                1. mod_proxy_ajp 8K+ 크기의 패킷을 지원하지 않는다.

                2. 기본 load balancer 사용한다.

                3. Domain model clusterig 지원하지 않는다.

@ mod_jk

- 장점

                1. 향상된 load balancer

                2. 향상된 node failure detection

                3. 패킷 사이즈의 AJP 지원

- 단점

                1. 별도의 모듈을 설치해야 한다.

 

위의 내용은 아래 링크에서 가져온 내용임.

 https://community.jboss.org/people/mladen.turk/blog/2007/07/16/comparing-modproxy-and-modjk

 


@ mod_proxy 설정

                1. Apache 설치되어 있으면 별다른 설치는 필요없다.

                2. 설정

httpd.conf

 

                    ProxyPass /app http://127.0.0.1:8080/app

                    ProxyPassReverse /app http://127.0.0.1:8080/app

 

 

@ mod_jk 설정

                1. Httpd Developer 버전을 준비한다. (yum install httpd-devel)

                2. Connector 모듈을 다운로드 한다.  (http://tomcat.apache.org/connectors-doc/)

                3.  설치

 

                    cd native/

                    ./configure --with-apxs=/usr/sbin/apxs

                    make

                    sure make install

 

                4. 설정

httpd.conf

 

                    LoadModule jk_module modules/mod_jk.so


                   <IfModule jk_module>

                         JkWorkersFile  conf.d/workers.properties

                         JkMountFile  conf.d/uriworkermap.properties

                         JkShmFile  logs/mod_jk.shm

                         JkLogFile  logs/mod_jk.log

                         JkLogLevel  info

                         JkLogStampFormat  "[%a %b %d %H:%M:%S %Y] "

                    </IfModule>

 

 workers.properties

 

worker.list=ajp

worker.ajp.port=8009

worker.ajp.host=localhost

worker.ajp.type=ajp13

worker.ajp.lbfactor=1

worker.ajp.socket_timeout=60


uriworkermap.properties

 

/*.do=ajp

/*.jsp=ajp

/*.js=ajp

/*.gif=ajp

/*.jpg=ajp

/*.css=ajp



반응형

반응형

Cached memory purge

@ Check memory status with top command

> top


@ purge cached memory

> sync

> echo 3 > /proc/sys/vm/drop_caches


반응형