평소 팍팍 잘 뜨던 웹 사이트가 어느 날 갑자기 로딩 속도가 확 느려지거나, 아예 접속이 뻗는 상황이 발생하곤 합니다.
이때 사이트 관리자나 인터넷 회사에 문의하면 "정상적으로 서버가 작동하고 있으니 고객님의 컴퓨터를 점검해 보세요" 같은 답변을 돌아오기 일쑤입니다. 다른 컴퓨터에서는 잘 뜨는데 유독 한 컴퓨터에서만 문제가 발생하면 이에 뭐라고 대꾸하기도 어렵습니다.
인터넷 접속 관련 문제는 변수가 워낙 다양하므로 정확히 원인을 집어내기 어렵지만, 시스템 내 저장된 DNS 캐시를 초기화하는 것으로 문제를 단번에 해결할 수 있는 경우가 많습니다. 원리를 간단하게 설명하면, 웹 브라우저에 "www.apple.com"과 같은 도메인 이름을 입력하면 인터넷 회사의 DNS 서버에 질의를 보내 실제 IP 주소(예: "17.149.160.49")를 받아옵니다. 사용자가 IP 주소를 일일이 외울 수 없기 때문인데, DNS 서버는 인터넷 서버의 도메인 이름과 IP 주소를 미리 저장해 놨다가 사용자로부터 도메인 이름을 전송받으면 IP 주소를 재전송하는 역할을 담당합니다.
이때 사용자가 한 번 찾아갔던 웹 사이트는 이미 시스템 내부에 있는 DNS 캐시에 IP 주소가 저장되어 있어서 일정 기간 DNS 서버에 다시 질의를 보내지 않습니다. 인터넷 속도가 아무리 빠른들 시스템에 저장되어 있는 데이터를 이용하는 것보다는 느리기 때문입니다.
그런데… DNS 캐시에 오류가 발생하거나(흔히 캐시가 'corrupt' 됐다고 하죠), DNS 캐시가 새로 갱신되기 전에 서버 주소가 변경되면 기존 DNS의 흔적 때문에 실제 IP 주소로 제대로 연결하지 못하는 문제가 발생합니다. 증상은 첫 단락에 소개한 것처럼 잘 접속되던 사이트에 갑자기 느려지거나 아예 접속이 안 되는 것입니다.
이런 문제는 시스템을 재부팅하거나 시간이 지나면 저절로 해결되곤 하지만, 마치 화장실 변기를 내리듯(flush) 사용자가 임의로 DNS 캐시를 비워 문제를 신속하게 해결할 수 있습니다. (부가적으로 육중한 DNS 캐시가 깨끗하게 청소되면서 인터넷 속도가 향상되는 효과까지 볼 수 있는데, 요즘처럼 메모리/디스크 속도가 빠른 시기에 과연 통용되는 이야기인지는 모르겠습니다.)
이런 문제로 적지 않은 사용자가 불편을 겪는 만큼 애플도 공식 홈페이지를 통해 'OS X: DNS 캐시를 재설정하는 방법'이라는 고객지원 문서를 제공하고 있습니다. 설명은 장황하지만 별로 복잡할 것은 없고, 터미널을 열고 아래와 같은 명령어를 입력하는 것이 전부입니다. 다만, OS X 버전에 따라 명령어가 약간씩 다릅니다.
아래 최신 맥 운영체제인 OS X 10.11 엘 캐피탄부터 10.3 팬서까지 DNS 캐쉬를 초기화하는 명령어를 정리했으니 차후 이러한 문제를 겪을 때 참고하시기 바랍니다.
Sub AddNewCB() '메뉴만들기 Dim myCommandBar As CommandBar, myCommandBarCtl As CommandBarControl On Error GoTo AddNewCB_Err
Set myCommandBar = CommandBars.Add(Name:="DAWOO Toolbar", Position:=msoBarFloating) myCommandBar.Visible = True
Set myCommandBarCtl = myCommandBar.Controls.Add(Type:=msoControlButton) 'Top버튼 만들기 With myCommandBarCtl .Caption = "Top" .Style = msoButtonCaption .OnAction = "Selected_Area_SUM_Top" End With
Set myCommandBarCtl = myCommandBar.Controls.Add(Type:=msoControlButton) 'Bottom버튼 만들기 With myCommandBarCtl .Caption = "Bottom" .Style = msoButtonCaption .OnAction = "Selected_Area_SUM_Bottom" End With
Set myCommandBarCtl = myCommandBar.Controls.Add(Type:=msoControlButton) 'Trim버튼 만들기 With myCommandBarCtl .Caption = "Trim" .Style = msoButtonCaption .OnAction = "trim_text" End With
Set myCommandBarCtl = myCommandBar.Controls.Add(Type:=msoControlButton) 'Picture버튼 만글기 With myCommandBarCtl .Caption = "Picture" .Style = msoButtonCaption .OnAction = "Picture_Insertion" End With
Exit Sub AddNewCB_Err: Debug.Print Err.Number & vbCr & Err.Description Exit Sub End Sub
모듈을 추가 하여 코드를 넣는다. My_Module
버튼을 클릭시 실행되는 VB 코드임.
Sub Selected_Area_SUM_Top() '선택 맨 위에 합계 넣기 Dim C As Range, T As String For Each C In Selection If C.Address <> Selection.Cells(1).Address Then If Len(T) Then T = T & "+" T = T & C.Address(0, 0) End If Next Selection.Cells(1) = "=" & T End Sub
Sub Selected_Area_SUM_Bottom() '선택 맨 아래 합계 넣기 Dim C As Range, T As String For Each C In Selection If C.Address <> Selection.Cells(Selection.Count).Address Then If Len(T) Then T = T & "+" T = T & C.Address(0, 0) End If Next Selection.Cells(Selection.Count) = "=" & T End Sub
Sub trim_text() '문자열 Trim 하기 Dim rngText As Range, i As Long On Error GoTo er Set rngText = Selection.SpecialCells(xlCellTypeConstants, 2) Select Case MsgBox("문자열을 Trim합니다. 문자열 뒷부분만 Trim할려면 아니오를 " _ & "클릭하세요.", vbYesNoCancel) Case vbYes For i = 1 To rngText.Areas.Count rngText.Areas(i) = Application.Trim(rngText.Areas(i)) Next i Case vbNo For i = 1 To rngText.Areas.Count rngText.Areas(i) = Application.Evaluate("IF(" & _ rngText.Areas(i).Address & "=" & rngText.Areas(i).Address & _ ",REPT("" "",FIND(LEFT(TRIM(" & rngText.Areas(i).Address & "),1)," & _ rngText.Areas(i).Address & ")-1)&TRIM(" & rngText.Areas(i).Address & "))") Next i End Select Exit Sub er: MsgBox "지정된 범위에 문자가 없습니다." End Sub
Sub Picture_Insertion() '사진 넣기 Dim p As Picture Dim i As Integer i = ActiveSheet.Pictures.Count
Application.Dialogs(xlDialogInsertPicture).Show
If i = ActiveSheet.Pictures.Count Then Else Set p = ActiveSheet.Pictures(i + 1) With ActiveCell.MergeArea p.ShapeRange.LockAspectRatio = msoFalse ' 가로세로비율 마춤 해제 p.Left = .Left + 0 p.Top = .Top + 0 p.Width = .Width - 0 p.Height = .Height - 0 End With End If
End Sub
Function AddColor(Rng, CRng) '같은 색만 더하기 For Each C In Rng
If C.Font.ColorIndex = CRng.Font.ColorIndex Then S = S + C.Value
Next
AddColor = S
End Function
다른이름으로 저장
파일이름 : 적당히
파일형식 : Excel 97-2003 추가기능
추가기능 등록은 검색하면 나옴.
이렇게 하고, 엑셀을 다시 시작해도 메뉴가 않나온다. 나도 고생 중.......
VBA 코드 편집기에 가서
현재_통합_문서 더블클릭 후 아래 코드를 넣어줘야. 생깁니다.
Private Sub Workbook_Open() Call AddNewCB End Sub
다시 저장 (VBA 에서 저장)
엑셀 닫고, 다시 열면 짜잔.........
그리고 하나더 팁.
addcolor 추가 하였습니다.
셀에서 =sum(영역선택) 을 하면 합계가 됩니다. 모두 아실내용.
셀에서 =addcolor(A1:A10,A1) 이렇게 하면 A1에 있는 글자색과 같은 것만 합을 구합니다.
.DS_Store 파일은 사용자가 OS X 를 사용하면서 설정한 다양한 정보(예: 아이콘 위치, 폴더 정렬 방식 등의 파일 메타 정보)를 기록하는 파일로서, 원래는 보이지 않아야 정상입니다. (참고로, OS X 는 유닉스 기반의 운영체제이기 때문에 기본적으로 . 으로 시작하는 파일은 보이지 않아야 정상입니다.)
숨겨진 파일이 보이도록 강제로 설정을 변경했다면, 다음 명령을 실행하면 원래대로 숨긴 파일이 표시되지 않도록 할 수 있습니다.
응용프로그램 폴더 > 유틸리티 폴더 > 터미널 실행 후, 아래 명령을 실행합니다.
defaults writecom.apple.FinderAppleShowAllFiles NO
위와 같은 명령을 실행하면, 일단 데스크탑 및 다른 폴더에서 . 으로 시작하는 파일은 보이지 않을 겁니다.
그리고, 로컬 드라이브 상에서 .DS_Store 파일 삭제는 의미가 없습니다. 삭제해 봐야 또 생성되어 집니다. 그래도, 일단 삭제를 원한다면, 터미널에서 다음과 같은 명령을 실행합니다. (아래 명령을 실행하면, OS X 시스템 볼륨의 전체를 검색해서, 모든 .DS_Store 파일 삭제합니다.)
sudo find/-name".DS_Store"-depth-execrm{}\;
위 명령을 실행하면, 로그인된 계정에 대한 암호를 물어보는데, 설정한 암호를 입력하면 됩니다.
만약 자동으로 일정 시간 간격으로 .DS_Store 파일을 검색 및 삭제하고자 한다면, 터미널 실행 후, 다음 명령을 차례로 실행합니다.
sudo crontab-e
암호입력
화살표키로가장마지막줄로커서이동
i키입력후,아래명령어삽입
151***root find/-name".DS_Store"-depth-execrm{}\;
esc키
wq!
위와 같은 명령을 입력하면, 매일 1시 15분에 .DS_Store 파일을 찾아 자동으로 삭제합니다. (Crontab 파일의 마지막 줄은 분, 시간, 날짜, 월, 주간날짜, 명령 순으로 정의합니다. 필요에 따라 변경하면 됩니다.)
마지막으로, 네트워크 볼륨에서 아예 .DS_Store 파일 생성을 차단하려면, 터미널에서 아래 명령을 실행하면 됩니다. (단, 로컬 드라이브는 영향을 받지 않습니다.)