Xpreia S (LT26i) 升級 Android 6.0

Xpreia S 真是個長生機種,拿它來做 Android APP 開發因為可以用很久所以 CP 值極高,持續有不同的團隊放出最新版本的 ROM,這次在 xda-developers 上看到的這一個則是放出了 Android 6.0 的版本。之前在 Xperia Z5C 上就體驗過從 5.x 升級到 6.0 之後的速度改進,當然最主要的還是應用程式權限的細分更能讓機主擁有更多的自主性。

安裝過程國外網友做了一個不錯的教學,測試過不會變磚。

How to install Android 6.0 Marshmallow in Xperia S

先玩玩再看看以後有沒有機會升到 N… 🙂

加碼提醒,看到很多朋友用 刷機大師刷各種 ROM, 它上面推薦的 ROM 如果拿來開發你會在 Android Monitor 上看到很多有趣的現象,建議還是卸載用 xda 上的方式及 ROM 刷機吧,對那些號稱國內高手修改的 ROM 還是保持點距離。

 

在已執行的 Docker 容器服務中獲得 Shell

獲得 Shell 後可以對容器內容做一些修改及監控,或是進一步了解作者在 Image 中包了哪些東西,Docker 容器服務若已經啟動,在不影響服務正常運行的情況下想要獲得 Shell 的話,最方便的應該就是容器開發模式中使用 nsenter 的方式。網路上眾多安裝 nsenter 方式以這個命令最簡便,不需額外套件與編譯直接安裝:

安裝方法
docker run -v /usr/local/bin:/target jpetazzo/nsenter

其 Github 的項目地址在:https://github.com/jpetazzo/nsenter 有興趣的朋友可以多多關注這個項目。

使用方式

先取得容器的 PID

PID=$(docker inspect --format {{.State.Pid}} <container_name_or_ID>)

根據 PID 獲得 Shell

$ sudo nsenter --target $PID --mount --uts --ipc --net --pid

簡化為 Shell Script <enter-cnt.sh>:

#!/bin/bash
 echo "Looking PID for $1: "
 PID=$(docker inspect --format {{.State.Pid}} $1)
 echo $PID
 sudo nsenter --target $PID --mount --uts --ipc --net --pid

ss_2016-02-28_21-08-56

 

網路上也有網友提供一個較複雜的 Shell 腳本 (轉自 http://www.hjue.me/post/docker-nsenter) 需要的朋友也可以參考:

#!/bin/sh
if [ -e $(dirname "$0")/nsenter ]; then
 # with boot2docker, nsenter is not in the PATH but it is in the same folder
 NSENTER=$(dirname "$0")/nsenter
 else
 NSENTER=nsenter
 fi
if [ -z "$1" ]; then
 echo "Usage: `basename "$0"` CONTAINER [COMMAND [ARG]...]"
 echo ""
 echo "Enters the Docker CONTAINER and executes the specified COMMAND."
 echo "If COMMAND is not specified, runs an interactive shell in CONTAINER."
 else
 PID=$(docker inspect --format "{{.State.Pid}}" "$1")
 if [ -z "$PID" ]; then
 exit 1
 fi
 shift
OPTS="--target $PID --mount --uts --ipc --net --pid --"
if [ -z "$1" ]; then
 # No command given.
 # Use su to clear all host environment variables except for TERM,
 # initialize the environment variables HOME, SHELL, USER, LOGNAME, PATH,
 # and start a login shell.
 "$NSENTER" $OPTS su - root
 else
 # Use env to clear all host environment variables.
 "$NSENTER" $OPTS env --ignore-environment -- "$@"
 fi
 fi

[SOLVED] Shadowsocks – “500 Internal Privoxy Error”

ISSUE:

500 Internal Privoxy Error

Privoxy encountered an error while processing your request:

Could not load template file no-server-data or one of its included components.

Please contact your proxy administrator.

If you are the proxy administrator, please put the required file(s)in the (confdir)/templates directory. The location of the (confdir) directory is specified in the main Privoxy config file. (It’s typically the Privoxy install directory).

SOLUTION:

iptables -F

真糗… @#%&&
好啦,這一篇是個 KUSO, 記得把該加上的 iptables 限制加上。

iptables -I INPUT -p tcp -m tcp –dport 8388 -j ACCEPT
iptables-save

Docker 自啟動容器

建立好一個容器後把它轉成服務,並設定在每次開機時自動啟動。在 CentOS 上我們使用的是 Systemd 而不是之前 Ubuntu 的 Upstart,Systemd 的約定中設定文件應放置在 /etc/systemd/system 或是 /usr/lib/systemd/system 下,由於某些系統預設安全性修改 /etc 下的檔案權限問題比較多,為了各系統間相容建議都放在 /usr/lib/systemd/system。

以下以 Dockerize 的 OpenVPN 容器設定為服務為例,容器確定已經可以正常運行之後,在上述目錄下建立一個 docker-openvpn.service 檔案:

sudo vi /usr/lib/systemd/system/docker-openvpn.service

內容為:

[Unit]
Description=OpenVPN Docker Service
Author=Coolfire
After=docker.service

[Service]
TimeoutSec=300
Restart=always
ExecStart=/usr/bin/docker start openvpn

[Install]
WantedBy=multi-user.target

然後測試是不是可以跑起來:

sudo systemctl start docker-openvpn
docker ps

如果已經跑起來了,那麼把它設定開機自啟動:

sudo systemctl enable docker-openvpn

如果需要確認可以重開機看看服務是否不需人工干預自動跑起來了。

CoreOS 可參考:
http://chuansong.me/n/1067253

dpkg 安裝軟體列表的備份方式

/* 刪除電腦中不用的小紙片 */
我們每個人都有過重裝系統的經歷,在安裝好系統之後,如何才能快速重裝原來那些自己所鍾愛的軟件?nixCraft 提供了一個有用的技巧。它的原理是在系統完好無損的時候,就做好已安裝軟件的備份工作。然後,在重裝系統後就可以利用先前備份的文檔來執行還原操作了。下面是相關的實施步驟(以 Debian 為例):

  1. 執行備份操作:
dpkg --get-selections > installed-software.log

這將當前系統中已安裝的軟件保存到 installed-software.log 中。

  1. 在還原時使用
dpkg --set-selections < installed-software.log

導入軟件列表,再利用 dselect 工具安裝軟件。
上述方法同樣適用於 Ubuntu。另外,原文也介紹了基於 RPM 包管理器的發行版如何執行的步驟,有興趣的可以直接去看。

sudo dpkg --set-selections /home/package.selections && apt-get dselect-upgrade

關於「人件經歷」

這個類別的產生與一本叫做「人件 (PeopleWare)」的書有關,讀這本書的時候驚奇的發現在自身工作經歷上有那麼多的畫面與書中描述雷同,拿到的這個翻譯版本雖然翻譯得不太好 (機器翻譯式中文),但是透過文字所表達出來的意念與自己無法用文字或口述言語表達出來的「感覺」是那麼地貼切,很快發現自己與作者是心靈契合的 (這個版本的翻譯者與校對者應該沒有這樣的感覺)。也許可以把自己相同的經歷透過一些簡短的文字傳達出來,引發某些朋友的共鳴。

[簡記] Mac 的 Fusion Drive 建立方式

  1. 硬碟與 SSD 各分割一個扇區
  2. diskutil list
  3. diskutil cs create Fusion disk0 disk1
  4. diskutil cs list (Copy UUID)
  5. diskutil coreStorage createVolume [UUID] jhfs+ “Macintosh Fusion” 100%

另外,Disk Sensei 這個工具可以協助在 EI Capitan 中 Enable Trim Support,據 這篇 說明是不用再 Disabling kext signing 因此更加安全。我在 Fusion Drive 環境測試過沒有問題,免購買試用版本可操作 Trim Enable,推薦。

新增解除 Fusion Drive 的方法,硬碟中資料會完全遺失請先備份:

  1. diskutil cs list (Logic Volume Group 後面那一串就是 UUID)
  2. diskutil coreStorage delete [UUID]

 

冰雹過後

img_7290
前ㄧ晚狂風大作下過冰雹後樓頂的太陽能板已經歪七扭八,後面還有幾排被掀翻了,雖是天災,但此等工程質量令安全堪憂。

Migrate from Parallels to VirtualBox (.hdd to .vdi format)

因為 Parallels Desktop 每次換新的版本都要 $$,每次 OSX 更新都要換版本,從版本 6 到 9 後已經對他失去了耐心,網路上一片討伐,也覺得對不起以前被我推薦使用 PD 的朋友,這次升級 Yosemite 後雖然 PD9 升級到最新版本後還是可以用,但準備開始把 PD 的虛擬機都轉到 VirtualBox 上做測試了。發現以前使用網路上的轉換方法需要多做一個步驟,新的方法可以直接轉為 VDI 格式,因此寫這篇文章分享一下方法。

舊的方法如下:
1. 正常的將虛擬機關機,而不要在 Suspend 的狀態操作。
2. 開啟 Parallels 虛擬機存放資料夾,所有虛擬機副檔名應為 .pvm
3. 右鍵點選欲轉換目標虛擬機 -> Show Package Content
4. 找到 .hdd 檔案,一樣右鍵 -> Show Package Content
5. 找到 .hds 檔案複製到 VirtualBox 虛擬機路徑 … (喝杯咖啡去)
6. 打開 VirtualBox 新建虛擬機,使用 “use existing virtual HDD file” 選項

這個方法仍使用 HDD 格式,若想要用 VirtualBox 原生的 VDI 格式 需要轉換…

新的方法:
還是需要定位到 .hds 檔案,然後直接轉換為 VirtualBox 的 VDI 格式:

VBoxManage clonehd Windows 8.1-0.hdd.0.{5fbaabe3-6958-40ff-92a7-860e329aab41}.hds ~/VMs/Win8.1.vdi --format VDI

仍在測試中,不曉得經過了這幾年 VirtualBox 在 Oracle 下的進步情況如何。

Copyright © 2016. Powered by WordPress & Romangie Theme.