반응형



안녕하세요~ 발전소장 에르입니다 :D

Hello This is Ele. :D

이번 시간에는 저번 시간에도 다뤄봤던 

글을 이어서 재도전기를 올려보고자합니다.

2018/11/23 - [정보발전소♫] - 2015년 맥북 13인치 서멀그리스 자가-재도포 , Thermal Compound Self re-apply to 2015 Macbook early 13-inch

i would like to re-try to apply thermal compound to my Mac.

Model : MacBook Pro (Retina, 13-inch, Early 2015)

기존의 마하링크 제품을 버리고, 

써멀 컴파운드 계의 손흥민 " MX-4 "를 구매했습니다. 

i dropped previous thermal compound which is called Mach Link(?). .

i purchased " MX-4" from Coupang as 9bugs with Rocket Delivery Service.

( 가격 약 9000원 쿠팡 로켓배송)

늘 그렇듯이 하판을 분리해주시고,

Please disjoint bottom of Mac.

맥북 각인 위쪽 2개의 나사는 몸통이 짧아 따로 보관해야된다고 말씀드렸죠?

i mentioned you might want to keep two screw above of MacBook Pro print

cuz their length are shorter than others.

대충 슥슥 분해하면, 뚝 나옵니다. 

이전 재도포때의 결과물입니다.

상태가 저러니 온도가 떨어질수가 없던 환경이었던거죠.

You can see the result from last time.

thermal compound could perform its own role properly and awful skill to apply.

다시 알콜솜으로 슥-삭 슥! 닦아줍시다.

물티슈를 사용해도되나, 매우 섬세한 컨트롤이 필요하며,

알콜솜으로 닦을때도 힘 조절에 신경써야합니다.

힘을 많이 주게되면, 알콜이 솜에서 나와 

뚝-뚝 떨어집니다.

Please wipe out with alcohol cotton that you have.

Don't Press To hard, Cuz Alcohol might leak out into hardware.

You can use water wipes if you don't have one 

but have to wipe very cautiously. 

이전에 저는 펜 청소를 결심했습니다.

일단 빨간색 화살표가 가르키는 두 나사를 풀어주시고 위로 살살 올리시면 분해가 됩니다.

그럼 비로소, 파란 화살표가 가르키는 나사를 풀 수 있습니다만,

너무 높게들어버리면 부러질수도있으니 매우 주의하세요.

This time, i decided to clean the fan as well.

disjoint the component which is red arrow point.

then you can disjoint the screw that blue arrow point.

Do not band it over too much.

(사진은 청소 후의 사진입니다.)

( Photo from cleaning up)

안쓰는 솔로 다 긁어내고, 청소기로 다 빨아들였습니다!

i used un-use brush, and sucked it with vacuums


자 이제 재-도포의 시간이왔습니다.

패스츄리가 동봉되어 있네요.

now it's time to unpack the thermal compound which is packed with scoop.

뒷면에는 우리 짱짱 좋으니 더 사주세요! 하는 소개문구네요.

적당히 재도포 후 결합을 하는데,

이때 cpu 주위의 4개 나사들을 0.5~0.9바퀴정도 모자르게 결합하세요.

그 이유는 나사들을 꽉 조이게되면, cpu와 동판사이에 써멀 컴파운드가 밀려나

재 역할을 하고싶어도 할 수가 없습니다.

그럼 바르나마나, 말짱 도루묵인거죠.

apply the thermal compound with scoop whatever way you want.

then. re-joint 4 screw surround cpu and left 0.5~0.9 turns left.

The reason is thermal compound will be pushed by pressure than you provide to cpu cover if you turned them all.

Thus left the space between cpu and cover to let thermal compound can be existed between them.

자 이제 온도 1시간과 7일치 그래프입니다.

아무리 헤비하게, 작업을 돌려도 쉽게 80도가 넘어가지않습니다.

(Node.js + Vscode + Docker + Chorme Devtools )

스타크래프트 정도는 돌려줘야 85~90도가 나옵니다.

now you can see the result from the graph.

Mac can eject the heat properly while i'm running Node.js + Vscode + Docker + Chrome Devtools.

cpu might hit 85~95 if you played StarCraft. :)

이제 발열에 여유가 생겨, 사용시 마다 수동으로 최고 RPM인 6199로 설정해줄 필요가 없어졌습니다.

덤으로 펜을 청소하고나서 소음도 사라지고 발열도 빠릿빠릿 잘잡아주네요.

써멀 컴파운드 두번 사서 쓰세요! 만원 투자할 가치가 매-우 충분합니다.

Now we can be relaxed from the heat. 

don't need to set the fan speed as maximum manually every time when you use Mac.

Please re-appliy Themal Compound if your Mac have fever abnormally.

it have much valuable than 9bugs.




반응형
by 발전소장 에르 :) 2018. 12. 4. 01:01
반응형

안녕하세요~ 에르의 생각발전소입니다 :)

이번 시간에는 옵셔널의 마지막편입니다!

Force Unwrapping

Optional Binding

Implicitly Unwrapped Optional 

위 세가지 중  옵셔널과 임플릭시티 언렙 옵셔널에 대해서 알아보겠습니다:)

지난번 다뤄보았던 코드들 그대로 가지고 계신가요?!

시작해보죠.





if let conratings = ratings {

    

    //  if let conratings = ratings 새로운 상수 선언 대입!

    

    movieInfo += "has \(conratings.count) ratings."

    

    //ratings.count 또한 conratings.count 변경!

}


if let conofficial = officialUrl { // 홈페이지주소가 값이 아니라면,


  movieInfo += "/r/n let's contact our page : \(conofficial)"

    

    // 무비인포에 위의 문장을 더한다. /r/n 한줄 띄움임.

    

}


print("\(movieInfo)")


// 포스언렙핑 말고 다른 방법도 있음!

// Optional binding : if var , if let 으로 옵셔널사용을 최소화하기 위해 변수나 상수를 새로 만드는 것임.


var officialUrl : String! = nil


// 처음에는 nil이지만 나중에 어떻게든 무조건 값을 받을 경우는 implicity unwrapped optional방식을 사용하여

     

     타입뒤에 ! 붙임! 그렇게 되면?!

officialUrl = "www.deathnote.com"


// if let conofficial = officialUrl { // 홈페이지주소가 값이 아니라면,


//  movieInfo += "/r/n let's contact our page : \(conofficial)"

    

    // 무비인포에 위의 문장을 더한다. /r/n 한줄 띄움임.

    

// }


movieInfo += "/r/n let's contact our page : \(officialUrl)"


// 위에 if let conofficial 필요없이 바로 옵셔널이 아닌것 마냥 쉽게 사용이     가능함!


print("\(movieInfo)")


// 포스언렙핑 말고 다른 방법도 있음!

// Optional binding : if var , if let 으로 옵셔널사용을 최소화하기 위해 변수나 상수를 새로 만드는 것임.


// 마지막으로 Implicitly Unwarrped Optional 있음!

// 옵셔널 선언 나중에는 반드시 값을 가지게 값에게 방법을 사용할 있음!

// 보다 효과적임.


// 옵셔널은 스위프트에서 매우 중요한 부분이니, 다시 한번 제대로 되새겨주세요!


반응형
by 발전소장 에르 :) 2016. 5. 7. 21:50
반응형

안녕하세요~ 에르의 생각발전소입니다! :)

이번 시간에는 스위프트의 꽃!

옵셔널을 빼고 스위프트를 안다고 절대 할 수 없죠!?

드디어 이번 시간에는 Optional 에 대해서 알아보겠습니다!


시작해볼게요 :)










// 스위프트의 꽃인, optional


// Nil 값이 없는 무의 상태를 의미함.


// 특히 0 NIL 개념은 다름. 0 정수가 있다는 얘기임.


// Optuonal : 프로그래밍의 안전벨트, 실행 Nil 돠어 프로그램 크래쉬를 일으킬 있는 변수를 특별히 관리한다는 것임


// 스위프트의 장점이자, 단점인데 결론적으론 좋은 장점임!


// 옵셔널을 만드는 방법은 TYPE뒤에 ? 붙이면 .


// EX: NAME:TYPE? = VALUE


let Movie : String = "Death Note"


// 데스노트라는 값은 가진 스트링타입의 무비네임을 가짐 변수임.



var ratings : [Double]? = nil


// 평점을 더블타입으로 nil값을 주어서 선언함.

var ratings : [Double]? = nil


// 평점을 더블타입으로 nil값을 주어서 선언함.


// 허나 포스 언렙핑을 사용했음에도 불구하고 코드가 확실히 죽어버림.

왜냐하면, 값이 결국은 없기 때문임.

고로 이 방법을 사용하면, 빠른 길을 머어어어어얼리 돌아가야하는 결과가 나옴. :(


officialUrl = "www.deathnote.com"


// 일단 홈페이지 주소를 부여함.


var movieInfo: String = "\(Movie)"


// 무비지인포라는 스트링타입의 변수를 선언하고 무비인포는 무비라고 초기화함.


// ratings != nil 에서 ratings는 nil이 아니다! 라는 연산자입니다! (!= NOT)

// 그래서 ratings는 nil값이 아니라고 선언을 했으니!! 문제가 없음!


// /r/n는 한줄 띄움임! 앞으로 자주 사용하실거에요 :)

// officialUrl != nil 이 nil값이 아니라면,

movieInfo에 위 문장을 더한다~!


// 앞에 Optional이 보기 싫고 불완전하게 코딩이 되었으니!


// 짜잔!. officialUrl에 ! 를 붙여서 포스 언렙핑을 시켜서

// 완변히 만들어줍니다 :)

다음 시간에는 ~ ? Optional binding 과 Implicity Wrapped Optional 에 대해서 

다루어보도록하겠습니다!

2016/05/05 - [프로그래밍발전소 ♫] - 160505 Swift 구문편! if, for, switch 까지!


2016/05/05 - [프로그래밍발전소 ♫] - 160505 Swift Collection: Dictionary 와 Set


2016/04/25 - [프로그래밍발전소 ♫] - 160424 collection Array 편 :)


2016/04/23 - [프로그래밍발전소 ♫] - 160423 Swift Tuple, Typealias 편 ! :) 튜플과 타입얼라이어스


2016/04/20 - [프로그래밍발전소 ♫] - 160419 Swift part.2 String과 Numbers에 대해서


2016/04/19 - [프로그래밍발전소 ♫] - 160418 swift 란? 스위프트 언어에 대해서 알아봅시다. let과 var편



반응형
by 발전소장 에르 :) 2016. 5. 7. 03:23
반응형

안녕하세요~ 에르의 생각발전소입니다!

저번 시간에 다뤄보았던 Dictionary, Set, Array에 이어,

이번에는 코드의 생명. 

연산자 파트에 속하는 구문에 대해서 살~~짝 알아보도록 하겠습니다! :)\











// if = 조건의 따른 분기문임.


//    if condtion {  ...

//    } else {

//       ...

//     }    //

//  위와 같은 구조를 가짐.


// if 조건이 참이면 else 앞의 구문이 실행되고,

// 거짓일 경우 else 뒤의 구문이 실행된다.


// 전편에 사용했던 변수를 이용하여, if문을 만들어보겠습니다.



if intersect.count > 0 {

    print("두개의 팀에 모두 소속돤 학생은 \(schoolTripTeam1) 입니다.")

} else {

    print("두개의 팀에 모두 소속된 학생은 없습니다.")

}


// intersect 학생수가 0보다 많으니 참이므로, else 앞의 구문이 실행됨.


// 위와 같은 조건식으로 if문을 작성하여 구동하실 있습니다.


// for 구문 : 범위 또는 컬렉션의 반복 구문.


/* for ; 반복조건 ; 증가값 {...

    

 } for item in collection { ...

 

 }   

  */


for studentName in schoolTripTeam1 {


    print("\(schoolTripTeam1) 1 소속된 학생이 맞습니다.")


}


// for switch 구문, 다양한 변수의 경우를 집어 넣을 사용.


for (name, scale) in SeminaRooms  {

    // SeminaRomms 스트링값을 name 인트값을 scale 할당받음.

    

    let roomInformation:String

    //새로운 스트링 타입 상수를 만들어 케이스를 가정하나, print 사용해도됨.

    switch scale { // scale 스위치로 사용하겠다~


    case 4:

        // 스케일이 4라면!?

        roomInformation = "\(name) 작은 방이며. \(scale)명을 수용할 있는 규모의 방입니다."

    

    case 5...10:

        //스케일이 5~10까지라면?

        roomInformation = "\(name) 중간 규모의 방이며, \(scale)명을 수용할 있는 규모의 방입니다."

    

    case 11...20:

        // 스케일이 11~20까지라면?

        roomInformation = "\(name) 규모의 방이며, \(scale)명을수용할 있는 규모의 방입니다."

    

    case 21...30:

        //스케일이 21~30까지라면?

        

        roomInformation = "\(name) 별도의 예약이 필요한 방이며, \(scale)명을 수용할 수있는 규모입니다."


    default:

        // 디폴트를 통해서 네가지 이외의 변수가 발생할

        // 해당값을 실행한다! 라고 모든 변수를 충족시켜줘야만 !

        roomInformation = "\(name) 이하의 방은 없습니다."

        

    }

}


for (name, scale) in SeminaRooms  {

    

    let roomInformation:String

   

    switch scale { 

    case 4:

        

        roomInformation = "\(name) 작은 방이며. \(scale)명을 수용할 있는 규모의 방입니다."

    

    case 5...10:

       

        roomInformation = "\(name) 중간 규모의 방이며, \(scale)명을 수용할 있는 규모의 방입니다."

    

    case 11...20:

       

        roomInformation = "\(name) 규모의 방이며, \(scale)명을수용할 있는 규모의 방입니다."

    

    case 21...30:

  

        

        roomInformation = "\(name) 별도의 예약이 필요한 방이며, \(scale)명을 수용할 수있는 규모입니다."

    default:

       

        roomInformation = "\(name) 이하의 방은 없습니다."

        

    }

}


// 주석을 삭제한 코드 전문입니다.!


// 도움 되셨길 바랍니다!



반응형
by 발전소장 에르 :) 2016. 5. 6. 02:10
반응형

안녕하세요~ 에르의 생각발전소입니다 :)

이번 시간에는 OS X용 포토샵의 레티나 패치를 알아보도록 하겠습니다!

포토샵을 사용하시지만, 내 컴퓨터가 레티나 디스플레이를 지원함에도

레티나의 혜택을 포토샵에서는 전혀 누리지 못한 분들을 위해서!

포토샵 레티나 패치를 다뤄보도록 하겠습니다!

포토샵 cs6를 사용하시는 유저분들이라면! 

아래 링크에서 패치 파일을 다운로드해주세요 :)





어도비공홈에 배포된 차례대로 " 포토샵 과 일러스트 " 입니다.

Proceed to Download 를 클릭하여, 

다운받아주세요.

우측에 dmg파일이 보이실 겁니다.

저는 포토샵이 필요하기 때문에, 포토샵 dmg를 실행하였습니다.

CS6폴더가 나오네요.

더블클릭


AdobePatchInstller 를 실행시켜주세요.

Open을 클릭해주시구요~

본인 계정의 비밀번호를 입력하시고 1분 덜 기다리시면~?

업데이트가 끝났습니다 ! :)



약간의 계단현상이 있지만, 괜찮네요..?

만족합니다. ㅎ 

PS.

Photoshop CS6 버전에서 업데이트를 실패했을 경우!


Adobe Application Manager 를 업데이트하면 됩니다.


www.creative.adobe.com/apps 에서 메니져프로그램을 업뎃시키시길! 


http://tv.adobe.com/watch/cs6-creative-cloud-feature-tour-for-design/installing-desktop-apps-from-creative-cloud/?go=13695




도움이 되셨길 바라면서! 그럼 20000! :)

반응형
by 발전소장 에르 :) 2016. 4. 26. 22:48
반응형

안녕하세요 ~ 에르의 생각발전소 입니다 :)

이번 시간에 비교해볼 건, ielts입니다!

요즘에는 공신력이 ielts에 많이 몰리는 추세입니다.

고로 영향력 또한 강해지고있는데, 

작년에 ielts의 카테고리가 나뉘게됩니다.

UKVI와 Normal 타입인데요.

이 둘의 차이점을 알아보도록 하겠습니다.

www.ieltskorea.org <<==  시험을 위해서 주로 찾으시는 사이트 일 겁니다. :)


대학, 대학원을 위한 ACAMEDIC MODULE.

취업을 위한 GENERAL TRAINING

비자와 이민을 위한 A1 / B1

A1은 초기 비자신청을 위해 주로 응시하시고

B2는 영주권과 시민권을 워해 응시합니다.


시험 신청을 위해 볼 수 있는 선택화면입니다.

UKVI라는 시험 카테고리가 생겼는데...

얘가 골 때립니다.

이 글을 포스팅하고 있는 이유도 이놈 때문이죠.

그지같은 뭐가 다른거야.

영국정부에서 지정한 환경하에서 응시하는게 UKVI인데 환경을 제외하곤 문제 난이도 등이

normal ielts와 일치합니다. 제기랄


YES 를 클릭하면 위 화면이 표출됩니다.

비자나 이민 목적을 위한 영어증명을 위해선 UKVI를 응시하라고 하는데,

심지어 더 비싸요,.



UKVI IELTS의 종류도 4개

NORMAL IELTS의 종류도 4개입니다.

UKVI의 타이틀이 달렸느냐, 안달렸느냐의 차이입니다.

고작 시험 환경 기준만 충족시켜놓고선,

UKVI IELTS 시험은 동국대학교에서 실시됩니다.



NO를 누르면 바로 위 화면으로 이동하는데 강북, 강남, 부산, 서울대, 경인교대 등등

다양한 곳에서 응시가능하며, 1주일마다 시험이있고

추가모집으로 시험을 응시하시면, 시험 당일날 스피킹 시험을 못 보실 수도 있습니다.

그래서 왠만하면 급하지않는 한 추모는 피하는 것이 좋습니다.


결론은 그냥 UKVI IELTS 보라는 얘기입니다.

점점 대학들도 UKVI IELTS 를 요구하는 대학들이 증가하고 있으며,

앞으로는 UKVI IELTS가 대중화될 것 같습니다.

가장 골때리는 부분인데, UKVI IELTS를 부정 행위 때문에 만든건지 뭔지 모르겠는데,

더 비쌉니다.

14만원 차이입니다.

환율로 따지면 200파운드는 33만원인데 무슨 이유인지 36만원으로 고정이 되어있어요.

환율 반영을 안하나봐요.

하지만 다행이도 나름의 희소식이 있습니다.

2015년4월5일 이전에 응시한 분들은 11월 5일까지 사용할 수 있는데,

뭐 이렇게 되버리면, 무용지물이나 마찬가지죠.

이런식으로 가격이 굳어져버린다면,,,

참 골떄리네요 영국 

다 먹고 살자고 하는건데 말이죠..

반응형
by 발전소장 에르 :) 2016. 4. 25. 23:25
반응형

안녕하세요~ 에르의 생각발전소입니다 :)

저번 시간에는 tuple과 typealias를 알아보았는데요.

이번 시간에는 collection을 다뤄보도록 하겠습니다.

array는 dictionary, set 등의 친구인데요.

 콜렉션 범주안에 속하는 녀석입니다.

자 그럼 본격적으로 시작해볼까요?









var children:Array<String> = ["a", "b", "c", "d", "f" ,"g"]


// children이라는 이름의 스트링 타입을 가진 어레이를 정의하고


// 인스턴스는 a,b,c,d,f,g 입니다. 아이들의 이름이죠?


// 위에 설명했듯이 대괄호가 값을 감싸야하며, 스트링일 경우 따옴표가 따라옵니다.


var age:[Int] = [10,15,20,30,40]


// age라는 이름을 가진 인트타입의 어레이를 만들었으며,


// 10,15,20,30,40 이라는 값을 가지고 있습니다.


// 위와 같이도 어레이를 만들 있습니다.


// age 방식이 쉽지요?


// 그리고 array 되있다고해도 let으로 정의된 값은 수정 불가능합니다.


children += ["z"]


// children 어레이에 값을 추가했습니다.


// 역시 대괄호가 필요하고, children var이니 수정 가능합니다 .



let maxMemory:Int = 128


// maxMemory라는 인트타입의 상수 클레스를 만들었으며, 값은 128입니다.


// 어레이가 아닙니다.


var presentMemory:Int = 54


// presentMemory 인트타입이며 갑은 54입니다.


presentMemory += 10


// 어레이가 아니기 때문에 그냥 편하시게 더하시면 됩니다.


let UpgradeMemory1 = 250.5


// UpgradeMemory1 라는 더블값을 가진 클레스를 만들고,



var MemoryBackUp:[Int] = []


// MemoryBackUp 이라는 인트형의 어레이를 만들었고 값은 없습니다.


MemoryBackUp.append(UpgradeMemory1)


// 에러가 났습니다. 에러가 난걸까요..?


MemoryBackUp.append(Int(UpgradeMemory1))


// 왜냐하면 UpgradeMemory 타입이 더블이기 때문입니다.(형태를 정해주지않으면 자동으로 더블.)


// Int Double 친구가 됩니다.


// 그래서 하나의 형태로 통일을 시켜줘야 진행이 가능합니다.


// 스위프트는 타입에 엄격합니다.


// 엄격한만큼 안전성은 올라가며, 개발자와 사용자에게도 여러모로 이득입니다.




// 어레이를 다른 어레이에 할당했을 기존 어레이 안에 값이 있으면 복사가 .


let copy = MemoryBackUp


// copy라는 어레이를 만들고 어레이에 MemoryBackUp이라는 어레이를 할당함.



MemoryBackUp += [128]


// 그리고 MemoryBackUp 새로운 값을 추가하면?


copy


// copy MemoryBackUp 새로운 값이 추가되기 전의 값이 남아있슴.


// 아무때나 복사가 되는 것은 아니고, 


// 어레이의 값이 재초기화되는 순간 복사가 .


// 일종의 잔상같은 개념임! :)


var test1:[Int] = [10]


// 테스트1 인트형의 어레이로 10 값을 가짐.


var test2:[Int] = [20]


// 테스트2 인트형의 어레이로 20 값을 가짐.


var copytest1 = test1


// 카피테스트1 테스트1이며, 어레이는 카피테스트1 할당됨.


copytest1 += [23]


// 아까와는 역으로 카피테스트1 값을 추가했음.


test1


copytest1


// 아까의 예시와 반대의 경우도 가능함! :)





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







여기까지 Array에 대해서 알아보았습니다.


다음 시간에는 Dictionary 와 Set에 대해서 알아보겠습니다.!


P.S 작성하다가 점검할 때 본건데,,, 존대에서 음슴체로 바뀌네요...ㅎㅎ


Have a lovely DAY~ :))))


2016/05/05 - [프로그래밍발전소 ♫] - 160505 Swift Collection: Dictionary 와 Set


2016/04/25 - [프로그래밍발전소 ♫] - 160424 collection Array 편 :)


2016/04/23 - [프로그래밍발전소 ♫] - 160423 Swift Tuple, Typealias 편 ! :) 튜플과 타입얼라이어스


2016/04/20 - [프로그래밍발전소 ♫] - 160419 Swift part.2 String과 Numbers에 대해서


2016/04/19 - [프로그래밍발전소 ♫] - 160418 swift 란? 스위프트 언어에 대해서 알아봅시다. let과 var편





반응형
by 발전소장 에르 :) 2016. 4. 25. 08:22
| 1 |