3월, 2016의 게시물 표시

맥 파일시스템(HFS) 우분투에서 읽고 쓰기 하기

맥북에 USB를 꼽아 맥용으로 포맷을 하고 그 안에 파일을 담아서 그 USB를 우분투에 꼽아서 파일을 읽고 쓰게 하는 방법이다. 먼저 우분투에서 맥용 파일을 읽을 수 있는 게 필요하다. $ sudo apt-get install hfsprogs 그런 다음 USB가 설치된 위치를 알아야 한다 $ fdisk -l 이 명령어를 치면 리스트가 나온다 /dev/sdb2 1024 1024 1024 af HFS/HFS+  이런식으로 나온다 이제 HFS 파일을 체크한다. $ sudo fsck.hfsplus -f /dev/sdb2 ** /dev/sdb2 ** Checking HFS Plus volume. ** Checking Extens Overflow file. ** Checking multi-linked files. ** Checking Catalog hierarchy. ** Checking Extended Attributes file. ** Checking volume bitmap. ** Checking volume information. ** The volume Macintosh appears to be OK. 위 화면이 나오면 이제 기존 마운트를 해제한다. $ sudo amount /media/ooo 이제 읽고 쓰기 권한으로 다시 마운트를 한다 $ sudo mount -o force,rw /dev/sdb2 /media/ooo 해당 파일을 보면 chmod 가 400으로 되어 있는 경우가 있다 이를 777로 풀어서 사용하면 된다 $ sudo chmod 777 file 나 같은 경우는 위와 같이 했을 때 되었다.

Ubuntu Server 15.10 GUI 최소 설치

우분투 서버를 설치한 다음 최소 형태의 GUI 를 설치하는 방법이다. 1. 먼저 우분투 서버를 설치한다. 2. 이제 저장소 파일을 최신화 한다. $ sudo apt-get update $ sudo apt-get upgrade 3. 이제 최소 형태의 GUI를 설치한다 $ sudo apt-get install --no-install-recommends ubuntu-desktop 4. GUI 모드로 실행한다 $ startx 5. 터미널을 뜨운다.   Ctrl + Alt + T 키를 이용하면 터미널이 뜬다. 6. 필요한 애플릿을 설치한다 앱이 뜨는 메뉴를 설치한다 $ sudo apt-get install indicator-appmenu-tools 세션 관련 메뉴를 설치한다 $ sudo apt-get install indicator-session 나는 이정도면 나머지는 필요할때마다 설치하면 된다.

맥북 랜섬웨어 조치 기록

맥북에서 유토렌트를 이용하여 파일을 받곤 하였는데 유토렌트의 광고가 눈에 거슬려서 광고 없는 토렌트 클라이언트를 찾아보았다. 리눅스에서만 지원하던 Transmission 이 맥용으로 있었다. 그걸 설치한게 화근이었다. 이어 평상시와 같이 프로그램 수정을 하며 지냈다. 그러던 어느날 모든 파일이 암호화가 되어 있었다. 영문으로 된 텍스트 파일을 대충 해석하니 RSA 방식으로 암호화를 했으며 2048 비트 암호화 이고 비트코인을 주면 해독키를 준다는 것이었다. 친절하게도 몇개의 파일만 풀 수 있는 맛보기도 할 수 있는 안내도 있었다. 몇번의 검색으로 내용을 파악했다. Trasmission 2.90 버전에서 kernel_service 파일이 암호화를 한다는 것이었다. 공개홈페이지에서 다운 받아 설치했는데 그 서버가 탈취되었었다는 방증 아닌가. 일단 암호화된 파일을 풀 길은 포기하기로 했다. 다행인건 맥북 에어라 용량이 작아서 중요 파일이 10기가 미만이었다. 구글 드라이브와 연동해놓았는데 3기가 정도의 파일이 있었다. 맥북을 밀고 다시 설치하기로 했다. 많은 시간이 걸려 다시 설치하고 업데이트를 했다. 그런 다음 구글 드라이브에서 파일을 다운 받았더니 최신 파일이 그대로 유지되었다. 새삼 구글 드라이브의 강력함을 알게 되는 순간이었다.

[swift 2] for (index, item) in list.enumerate 구문 사용하는 방법

스위프트 언어에서 for-in 구문은 매우 강력하다. 하지만 리스트의 객체에서 해당 객체가 몇번째인지 알아야 할때가 종종 발생한다. 이럴때 이 방법을 사용하면 된다 for (index, item) in list.enumerate() {   // 일단 어떻게 나오는지 찍어보자   print("index:\(index), item:\(item)")   item.해야할 일()   list.removeAtIndex(index) } 나 같은 경우는 list 내에서 item이 해야할 일이 있고 해당 item이 들어 있는 list 배열에서 삭제해야 했다. 위와 같은 코드로 해결이 되었다.