Quantcast
Channel: 可丁丹尼 @ 一路往前走2.0
Viewing all 79 articles
Browse latest View live

Arch Linux 安裝 X 圖形介面

$
0
0

Arch Linux 安裝 X 圖形介面

Linux 中關於圖形都是利用X Window System的架構去完成的,整個發展與說明參考鳥哥X Window 設定介紹,這裡不再說明,依照下面步驟進行安裝。

安裝 X Server

X Windows System為Server/Client架構,所以必需要先安裝Server端,在安裝時看一下官方建議套件如下:

pacman -S xorg-server xorg-server-utils xorg-xinit

但因安裝時也需要安裝相應的驅動程式像:顯示卡、滑鼠(筆電的觸控板類的),所以採用全部安裝的方式:

pacman -S xorg

按下Enter安裝全部(all),完成後就結束X Server基本安裝,接下來進行相關套件的安裝。

安裝 X 相關套件

pacman -S xorg-twm xterm xorg-xclock

這裡主要的是安裝xorg-twm,它是個視窗管理員,負責最基本的X視窗的管理,xterm為在X視窗中的終端機軟體,xorg-xclock是一支簡易的X時鐘應用程式,安裝完成後會使用它。

安裝 X 啟動工具

pacman -S xorg-xinit

xorg-xinit主要是在X Windows Sytem啟動後要初始化的管理程式,主要是在執行startx之後它會讀取~/.xinitrc,你只要將需要執行的程式或Script指令寫於此檔就能靈活運用。整個安裝完成後可以直接執行

startx

啟動X Window。

上圖是一個很基本的X Windows System安裝完成的畫面,這裡您可以執行基本X基礎的程式,像是xclock,執行後會拖動滑鼠可以選擇它的位置,

確定位置後按下滑鼠左鍵讓程式進行繪圖將視窗顯現:

此時就能看到一個視窗時鐘顯示於畫面中,這就能確定你的X Windows System安裝正確,在Linux中,所有的桌面環境像:KDE、GNOME、LXDE…這類的都是基於X Window System的桌面系統,後續以個人偏好的Cinnamon進行安裝的說明。

參考資料

Beginners’ guide

Arch Linux:安裝圖形界面(X)

Installing GUI (Cinnamon Desktop) and Basic Softwares in Arch Linux


Arch Linux 安裝桌面環境

$
0
0

Arch Linux 安裝桌面環境

Linux中程現圖形介面操作都是建立在X Window System之上,所以安裝桌面環境視窗管理員是時都必需要先安裝X Window System才能正常運作,安裝方式參考Arch Linux 安裝 X 圖形介面,不過桌面環境是一個經過包裝過與使用者互動的介面,有的包括通知列、控制台…等,但視窗管理員則只有繪製視窗外觀及視窗的功能,如:視窗的移動、重疊時的繪製、放大、縮小與視窗有關的,所以安裝視窗管理員為最主要的,桌面環境則視個人喜好來決定是否要使用都是可接受的。 然而除了這些外還有另一個顯示管理員(Display Manager),一個具有圖形化的登入介面,一些桌面環境啟動必需要透過顯示管理員登入號再帶起桌面環境才是整套啟動流程,當然這是指一開機後就選擇進入桌面環境,如果你是手動Console登入後再自行進入桌面環也是可行的,下面例子會先以Console登入後再進入桌面環境做示範。

安裝桌面環境

此時要先安裝的桌面環境是基於GNOME而衍生出來的Cinnamon,它有著GNOME 2的相似外觀,使用上也很簡潔。

pacman -S cinnamon

安裝好後執行:

cinnamon

結果發生問題無法啟動:

這主要Cinnamon是基於X Window System下的桌面環境,所以必需先啟動X Server再啟動Cinnamon,但X Server無法自帶參數來啟動Cinnamon:

startx cinnamon

執行後仍然發生無法啟動:

結論是以上的命令是無法順利啟動Cinnamon的,但Cinnamon啟動還是必需先將X Server啟動,所以我們使用已安裝好的xorg-xinit套件,它會在X Server啟動後,執行使用者家目錄(Home)中的.xinitrcScript,透過此機制將要執行的Cinnamon寫入,所以在自已的Home下建立.xinitrc,並且將執行Cinnamon的命令寫入。

建立.xinitrc

vi ~/.xinitrc

填入

exec cinnamon-session

執行startx

startx

此時就會順利的將Cinnamon啟動成功:

參考資料

Beginners’ guide

Installing GUI (Cinnamon Desktop) and Basic Softwares in Arch Linux

OS X工具列上查看藍牙詳細資訊

$
0
0

OS X工具列上查看藍牙詳細資訊

OS X上查看藍牙的資訊能夠透過工具列上的圖示點一下之後看到資訊:

已連線的週邊有中斷連線與週邊連線進行中斷。

但,如果您是OS X資深玩家應該會知道Option鍵的其一用途就是能透過它看到更多的資訊,此時按下Option鍵後再利用滑鼠點一下藍牙的圖示:

這次能看到藍牙的MAC Address之外,如果你有已連線的週邊還能看到更多詳細資訊:

連訊號強度(RSSI)、週邊的MAC Address都能看到,還提供"移除"功能快速的將配對好的週邊刪除。

按下Option確實提供較詳細的功能,不過OS X上提供的不僅如此,再增加一鍵Shift就能再提供更多功能,也就是按下Option + Shift + 點擊藍牙圖示

這次又多了在桌面上建立診斷報告除錯功能,不過看一下除錯功能子項目:

您可以透過此功能進行

  • 重置藍牙模組

    模組支援的話進行藍牙模組的重置(reset),重置會進行類似software reset及清掉一些暫存值

  • 啟用藍牙記錄

    將藍牙使用的詳細記錄下來並存成記錄檔

  • 移除所有裝置

    清除在藍牙列表上已配對的週邊資訊全部清楚,意指下次使用該週邊時要重新配對

  • 將所有連接的Apple裝置重置為出廠值

    如果你的週邊是Apple原廠的藍牙週邊會進行裝置重置為出廠值

Arch Linux 使用Network Manager管理網路

$
0
0

Arch Linux 使用Network Manager管理網路

剛接觸Arch Linux後,因所需要的套件都要自行安裝,最基本的圖形介面都安裝完成後才發現無法透過管理程式設定網路,查詢一番後才了解到需要再安裝一個套件為Network Manager,接下來就說明一下安裝的過程。

指令啟動網路功能

在未安裝網路管理套件時,網路功能必需要手動開啟,現在示範的網路環境是IP自動取得(DHCP)有線網路,查詢一下網路狀態:

ip link

圖中eno16777736為網路裝置名稱,手動啟動取得IP,讓網路能有IP進行上網:

systemctl start dhcpcd@eno16777736

等待一段時間後檢查是否有取得IP

ip addr

確定有IP後基本上網路就能使用,接下來進行套件安裝。但接下來之前或許有人會提出來如何手動設定無線網路而不是有線的?關於無線的設定非常的煩鎖,建議先使用有線的環境,待Network Manager安裝好後透過它來設定會更方便許多,此文不對手動設定無線部分做加強。

安裝相關套件

安裝網路管理的服務:

pacman -S networkmanager

安裝網路管理服務的UI

pacman -S network-manager-applet

無線網路

如果您有無線網路那必需要另外安裝無線工具

pacman -S wireless_tools

註:現在內建會將wpa_supplicant安裝,所以此文中不另外說明。

啟動網路管理服務

在此之前必需要將之前啟動的IP自動取得服務(dhcpcd)停止並確定沒有開機自行啟動服務。

停止有線網路IP自動取得(DHCP)服務:

systemctl stop dhcpcd@eno16777736

停止開機啟動IP自動取得(DHCP)服務

systemctl disable dhcpcd.service

確定上述都完成且無錯誤訊息後,將網路管理(Network Manager)服務啟動進行一開機就自行啟動:

systemctl enable NetworkManager.service

一切都完成後進行重開機動作(reboot):

reboot

檢查網路狀態

經過重新開機後,網路管理(Network Manager)正常運作時,執行ip addr查看網路是否有配發到IP

ip addr

如此一來IP有正常發配到,經過ping指令也確定是正常的:

ping -c 5 tw.yahoo.com

啟動桌面環境

前面整個過程中是在一般的console下操作,如果您已經進入桌面環境,那可以執行xterm或其他的相容終端機進行上述操作依然是可行的,但全部操作完成記得要重開機進入重新進入桌面環境功能才會生效。

上圖秀出在螢幕右下角工具列會有網路圖示,點擊後能選擇網路網開、關或是進行設定,下圖則是按下Network Settings後出現的網路設定畫面。

ESXi 開啟VNC功能

$
0
0

ESXi 開啟VNC功能

使用過VMware Workstation都會知道能在VM設定中指定VNC Port來透過VNC協定取得VM的畫面,這能使得一些系統即使不用開啟或另外安裝軟體行使遠端搖控也是能操作,例如:DOS、Linux console。

那ESXi呢?當然是可行的,不過只有VNC的部分功能,像是複製、貼上這是無法實現的,但畫面、操控是能使用的,下面要介紹最簡單的方式來處理。

防火牆設定

首先利用vSphere Client登入ESXi Server後,進入ConfigurationSecurity Profile

再到FirewallProperties

之後看到的就是已內建的服務對應的Ports,經過勾選的方式就能開啟該Port讓防火牆放行,但看完列表卻沒發現VNC相關的,

不過,VNC所使用的Port是從5900開始,此細找一下剛好有內建設定有包含5900 Port及之後的Port,請在列表中找到gdbserver

並且將它勾選後按下OK開啟設定。

VM設定檔設定

這裡要透過手動的方式進行設定參數的增加,啟動VNC的參數如下:

remotedisplay.vnc.enabled = "TRUE"
remotedisplay.vnc.port = "5900"
remotedisplay.vnc.password = "1234"

每個設定檔對應一個VNC Port,它從5900開炲,自行自定Port,如:5901….。

首先將要更改設定的VM關閉,並點選它進行設定:

選擇Configuration Parameters..進行細項設定:

所有相關的設定檔資訊以Name/Key為一組,此時按下Add Row新增一行空白的Name/Key,

並輸入參數值,總共新增三行參數:

remotedisplay.vnc.enabled = "TRUE"
remotedisplay.vnc.port = "5900"
remotedisplay.vnc.password = "1234"

新增完成後如下圖:

註:透過vSphere Client來設定與增加參數才能自動的新增remotedisplay.vnc.key,它是password的hash值,如果您是透過文件編輯的方式要將其key值補上其密碼才是有效的。

VNC登入

Windows

要操作VNC之前必需要手動的將VM啟動,之後透過VNC Client並將位址設定為ESXi Server再加上指定的Port或display number,

其實display number會轉成 5900 + display number:

輸入密碼:

登入成功:

OS X

OS X內建VNC Client,在網址列上輸入vnc://address:port就能叫出內建的螢幕共享程式:

自動啟動螢幕共享程式:

輸入密碼:

登入成功:

參考資料

Using a VNC Client to Connect to VMs in ESXi 5

Compute hashed password for use with RemoteDisplay.vnc.key

iOS 9 Xcode7 http 錯誤

$
0
0

iOS 9 Xcode7 http 錯誤

之前的專案重新Build後突然發現網路要求無法使用,看到Log中的提示:

The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.

 App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file.

經過一番了解後才知道,iOS 9新增App Transport Security(ATS)的項目,重點是你在APP中如果有網路的要求時,其網址必定要是加密協定(https),否則連線要求會被禁止。主要是保護您的APP在進行網路通訊時一切資料都是加密,防止被嗅探。

因為此專案是與Arduino + Ehternet Shield配合,並暫無實現加密請求,所以利用另外設定Info.plist的方式將App Transport Security取消。首先在您的專案中找到Info.plist

新增一組Key/Value:

選擇App Transport Security Settings,此為(ATS)功能項目:

選擇後再新增子Key/Value,項目名稱Allow Arbitrary Loads

並將Value選擇為YES

以上都確定無誤後,再重新Build專案就解除ATS功能。

Arch Linux安裝Yaourt非官方套件管理員

$
0
0

Arch Linux安裝Yaourt非官方套件管理員

Yaourt(Yet AnOther User Repository Tool)是基於pacman的外殼(前導程式),它外加了AUR的支持,幫助使用者從AUR上下載軟件的相關訊息的PKGBUILD再經過makepkg產生安裝套件的準備工作,最後利用pacman完成安裝,省下許多步驟,接下來會說明一下安裝方式,雖然官方已經有完整的安裝教學,不過還是依照Danny親身安裝完成的方式說明一下。

設定pacman.conf

安裝之前必需設定內容,將AUR加入才能利用pacman安裝Yaourt,否則要使用手動安裝的方式先將PKGBUILD資訊下載後並建立環境再手動使用pacman安裝,開啟/etc/pacman.conf並加入:

[archlinuxcn]
SigLevel = Never
Server = http://repo.archlinuxcn.org/$arch

此設定使用cn的伺服器,依照你的速度可以另外加其他伺服器,加入完成後將以下內容的註解(#)取消:

[multilib]
Include = /etc/pacman.d/mirrorlist

加入鏡象伺服器,避免過程中有問題時可以利用其他的伺服器當備援。

安裝base-devel

未來一些經過AUR伺服器下載回來的可能是原始碼要進行直接編譯成可執行程式時就需要base-devel 群組套件,它是經過官方所整理出來的套件群組(Group)先來看看內容有包含什麼:

群組套件的好處是一次就將相關的套件都安裝完成,你的環境需要有開發環境時安裝此群組套件,其他群組套件參照官方網站 Group Details,現在進行安裝:

pacman -Sy --needed base-devel

註:參數y找最新的套件安裝;--needed需要時再重新安裝

安裝Yaourt

經過上述的修改與新增設定後就能透過pacman安裝Yaourt

pacman -S yaourt

耐心等待一段時間後就能將Yaourt安裝完成,此時執行幫助了解它的參數:

yaourt -h

[danny@nb-a1410 /]$ yaourt -h
Usage: yaourt <operation> [...]
operations:
    yaourt (search pattern|package file)
    yaourt {-h --help}
    yaourt {-V --version}
    yaourt {-Q --query}       [options] [package(s)]
    yaourt {-R --remove}      [options] <package(s)>
    yaourt {-S --sync}        [options] [package(s)]
    yaourt {-U --upgrade}     [options] <package(s)>
    yaourt {-C --clean}       [options]
    yaourt {-B --backup}      [save directory|restore file]
    yaourt {-G --getpkgbuild} [options] <package(s)>
    yaourt {--stats}
[danny@nb-a1410 /]$


其中有options參數不在幫助說明中,必需要使用man了解細節:

man yaourt

YAOURT(8)                                                                                                     Yaourt Manual                                                                                                    YAOURT(8)

NAME
       yaourt - more than a frontend to pacman

SYNOPSIS
       yaourt <operation> [options] [packages]

       yaourt (search pattern|package file)

DESCRIPTION
       Yaourt is a pacman frontend with a lot of features.

       AUR/ABS support, colorized output, interactive search/install, save/restore Alpm database, orphans detection, manage .pac* files, ...

OPERATIONS
       Since the majority of those options are the same as pacman’s (pacman(8)), this manual page will focus on the yaourt-specific ones.

       -B, --backup
           Backup or restore alpm local database. See Backup Options.

       -C
           Manage .pac* files. See Clean Options.

       -G, --getpkgbuild <package>
           Get PKGBUILD for ABS or AUR.

       -Q, --query
           Query local database + Can sort packages by installation date, possibility to delete orphans. See Query Options.

       -R, --remove
           Remove package(s) from the system.

       -U, --upgrade
           Upgrade or add package(s) to the system.

       -S, --sync
           Synchronize packages + AUR support, building from sources. See Sync Options.

       --stats
           Show some statistics about your packages.

       -V, --version
           Display version and exit.

       -h, --help
           Display a short help.

OPTIONS
       --color
           Force color.

       --export <dir>
           Export built packages and their sources (makepkg(8)) to <dir>.

       --force
           Force installation or updates.

       --insecure
           Allow curl & package-query to perform "insecure" SSL connections

       --nocolor
           Disable color.

       --noconfirm
       --pager
           Use $PAGER to show search results.

       --tmp <dir>
           Use <dir> as temporary folder. default to /tmp

BACKUP OPTIONS
       yaourt -B
           Backup alpm local database in current dir.

       yaourt -B <dir>
           Backup alpm local database in <dir>/pacman-date.tar.bz2

       yaourt -B <file>
           Restore alpm local database from <file>.

CLEAN OPTIONS
       Manage .pacnew, .pacsave and .pacorig files.

       -c, --clean
           Clean all these files.

QUERY OPTIONS
       --backupfile <file>
           Query <file> instead of alpm/aur.

       --date
           List queries result sorted by installation date.

       -d, --deps
           Filter output to packages installed as dependencies.

       -t, --unrequired
           Filter output to packages not required by any currently installed package. With -d, yaourt list all real orphans and ask for deletion.

SYNC OPTIONS
       -a, --aur
           Also search in AUR database. With -u or --sysupgrade, upgrade aur packages that are out of date. With -Qm, display more info about foreign package.

       -A, --ignorearch
           Pass -A or --ignorearch option to makepkg(8) to ignore PKGBUILD(5) arch field.

       --aur-url <AUR url>
           Specify a custom AUR url (default to https://aur.archlinux.org).

       --conflicts
           Show packages that conflicts with one of the targets.

       -b, --build
           Build from sources, ABS for official packages, or AUR if packages is not found. Specify this option twice to build all dependencies.

       --depends
           Show packages that depends on one of the targets.

       --devel
           With -u or --sysupgrade, search an update for devel packages.

       -i, --info
           Display dependency and other information for a given package. This will search through all repositories and AUR database for a matching package.

       --m-arg <opts>
           Pass additional options to makepkg(8). To pass more than one option, put them in quotes.

       --provides
           Show packages that provides one of the targets.

       --replaces
           Show packages that replaces one of the targets.

       -u, --sysupgrade
           Upgrade all packages that are out of date.

HANDLING CONFIG FILES
       With AUTOSAVEBACKUPFILE (yaourtrc(5)), yaourt will search and save all files marked as backup. These files can be used later with yaourt -C to automerge current configuration files with new ones.

CONFIGURATION
       See yaourtrc(5) for more details on configuring yaourt using the yaourtrc file.

ENVIRONMENT VARIABLES
       MAKEPKG
           Set an alternative makepkg(8) command.

       PACMAN
           Set an alternative pacman(8) command.

       TMPDIR
           Set a temporary folder to use.

       YAOURT_COLORS
           Set a user defined colors. (see package-query(8))

SEE ALSO
       yaourtrc(5), makepkg(8), pacman(8)

       See the yaourt website at http://archlinux.fr/yaourt-en/ for more info.

BUGS
       https://github.com/archlinuxfr/yaourt

AUTHORS
       Julien MISCHKOWITZ <wain@archlinux.fr>

       Current maintainers:

       Tuxce <tuxce.net@gmail.com>

       Skunnyk <skunnyk@archlinux.fr>

Yaourt 1.6                                                                                     

Yaourt 安裝AUR套件

在寫此文時,印象中haroopad也有Linux版本,不過上官網才知它只提供rpmdeb的安裝方式,並無給archlinux用的,不過利用指令查詢結後已經有網友提供安裝套件 :

yaourt -Ss haroopad

查詢結果:

[danny@nb-a1410 /]$ yaourt -Ss haroopad
aur/haroopad 0.13.1-4
    A markdown enabled document processor
[danny@nb-a1410 /]$

yaourt必需在非root帳號上執行,過程中會需要輸入sudo密碼:

yaourt -S haroopad

自動下載相關檔案並進行編譯

安裝過程一樣需要一段時間,等待安裝完成後就能看到應用程式:

iOS9 APP 上下黑邊(iOS9 App has black bars on top and bottom)

$
0
0

iOS9 APP 上下黑邊(iOS9 App has black bars on top and bottom)

當你的轉案是從Xcode 5、Xcode 6一路升級上來時,在新版的Xcode編譯專案並下載至手機或模擬器時卻發生App上下有黑邊,也就是App被置中而不是像之前的置頂:

此時您檢查一下設定,是不是未指定Launch Screen File,在Xcode會檢查您是否有Launch Screen File來判斷你的App設定是否為舊解析度(3:2)的App,未設定會依照(3:2)的解析度與大小顯示,加上iOS 9的關系會將App置中:

所以新增建立Launch Screen

選擇Launch Screen

建立好預設之後,到General->App Icons and Launch Images將Launch Screen File指定成你新建立的檔案,如下圖:

重新編譯並下載至模擬器或實機就不會有上下黑邊,但你的佈局如果不是用Auto Layout與Size Classes時,您的佈局畫面與螢幕大小不符合時,多於的空間就會顯示白邊或黑邊像這樣:

所以不管如何,舊專案建議還是啟動Auto LayoutSize Classes

參考資料

iOS9 App has black bars on top and bottom

iOS 9 status bar appears below black bar


Arch Linux開啟winmail.dat檔案

$
0
0

Arch Linux開啟winmail.dat檔案

關於這個檔案不知該如何是好,如果您是使用Outlook寄件卻未變更預設傳送的格式為:純文字網頁格式,那Outlook就會使用RTF(richtext formatted)傳送,所以RTF會封裝Transport Neutral Encapsulation Format (TNEF)的內容,如果你使用的收信軟體不支援的話,那就會看到附件檔名為winmail.dat

不過經過許多人的努力,已經有套件可以提供解決,有能進入終端機使用命令的方式與視窗軟體的套件供使用。

終端機

    pacman -S tnef

方法:

    tnef winmail.dat

使用很簡單,但要記得它會將包含的所有檔案全解壓,如果檔案很多或不確定會有什麼檔案名稱時務必將檔案至於一空目錄再執行命令,如果還是想先看首有什麼內容時可以加-t查看:

    tnef -t winmail.dat

此命令會將包含的檔案列出來:(windows big5的關系會亂碼)

[danny@lab]$ tnef -t winmail.dat
105�`�N�ƶ�(�p�ǰ���).JPG |   105�`�N�ƶ�(�p�ǰ���).JPG


 視窗軟體

上述除此之外你使用gnome/kde還能另外安裝視窗軟體來達到此功能,還能與收信軟體配合:

 pacman -S ktnef

安裝好後執行程式:

 

點擊Open選擇要查看的檔案,之後就可以看到檔案列表:

選擇你要的檔案再點擊Extract To

或是按下Action->Extract All To解所有的檔案:

以上為2種開啟winmail.dat的方法,但你有安裝kTnef後就能直接在收信軟體中直接開啟它:

資料參考

 使用 Outlook 的寄件者收到的電子郵件包含 Winmail.dat 附件

How to open winmail.dat files on Ubuntu and Debian Linux

Arch Linux Wine支援中文顯示

$
0
0

Arch Linux Wine支援中文顯示

Wine支援Linux、OS X,能在其平台上以接近原生方式執行Winodws應用程式,目前發展已經很成熟,蠻多Windows程式都能執行的蠻順利的,但因Wine由非中文語系開發者開發的,在中文支援上雖然有改進,不過安裝完成後依然需要做一些設定才能顯示的更順利。

安裝

主程式容量蠻大的,需要等待一段時間才會安裝完成。

    pacman -S wine

或是使用Pamac套件管理員安裝:

安裝完成後一些設定會自動完成,此時可以直接任意點擊Widnows執行檔*.exe就會利用wine執行此程式,也能用手動方式執行:

    wine [windows執行檔]

例如:

    wine epp400.exe

此為EdisPlus編輯器的安裝執行檔,順利執行成功就能看到安裝畫面:

進行一連串的安裝後,Wine也會自行產生可執行的連結:

中文支援

中文支援有蠻多方法,主要都是字型支援的關系,所以您可以準備所有的字型自行放入 ~/.wine/drive_c/windows/Fonts中,但也能使用字型連結方式將字型共同指定1種字型:

    [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink]
    "Lucida Sans Unicode"="mingliu.ttc"
    "Microsoft Sans Serif"="mingliu.ttc"
    "MS Sans Serif"="mingliu.ttc"
    "Tahoma"="mingliu.ttc"
    "Tahoma Bold"="mingliu.ttc"
    "SimSun"="mingliu.ttc"
    "Arial"="mingliu.ttc"
    "Arial Black"="mingliu.ttc"

mingliu是指細明體中文字型,您也可以指定某個習慣的字型,並將字型copy至~/.wine/drive_c/windows/Fonts中,並將這些註冊檔資訊貼入~/.wine/user.reg,重新啟動或執要wine時,預設的註冊檔內容就會自行加入:

除此之外,視您的需要自行決定是否要取消反鋸齒功能,有時平滑功能會讓字型較模糊:

    [Software\\Wine\\X11 Driver]
    "ClientSideAntiAliasWithRender"="N"

一樣將它加入~/.wine/user.reg之中就能發揮效果:

參考資料

Wine的中文顯示與字體設置

wine20050628 設定字型

Wine on ubuntu wiki

OS X El Capitan 10.11.3 更新

$
0
0

OS X El Capitan v10.11.3 更新提升了 Mac 的穩定性、相容性和安全性,建議所有使用者安裝。 此更新: 修正了當連接至特定 4K 顯示器時,可能阻止某些 Mac 電腦從睡眠中喚醒的問題。

安全性更新列表

Arch Linux 指令控制數字鍵鎖定(Num Lock)

$
0
0

Arch Linux 指令控制數字鍵鎖定(Num Lock)

數字鍵鎖定(Num Lock)燈亮起時代表鍵盤上一鍵兩用的鍵盤上具有數字功能的按鍵功能啟用,此時該按鍵為數字鍵,關閉時則為原本按鍵預設功能,像我們常看到的就是位於鍵盤最右側方向鍵與數字鍵整合的地方:

Num Lock啟用時就會是數字鍵,關閉時就會是上下左右鍵及Page Up/Down ….等功能,但您開機時如果想要讓數字鍵鎖定功能預設為開啟或關閉時該如何使用?Arch中依照你使用的純console或是X環境提供2個方法:

console

利用內建的setleds達到此功能:

開啟

setleds +num

關閉

setleds -num

X

在X環境必需要另外安裝套件:

pacman -S numlockx

安裝完成後利用參數命令開啟或關閉:

開啟

numlockx on

關閉

numlockx off

參考資料

Activating Numlock on Bootup

Enable Numlock on Login

ArchLinux Arduino 無法使用串列埠(Serial Port)

$
0
0

Arch Linux Arduino 無法使用串列埠(Serial Port)

平常都是在OS X上使用Arduino開發,後續因為接觸到Arch Linux後想把平常的操作看看能不能搬到Arch Linux上,結果程式上傳至Arduino板子時發生問題:

訊息中了解到沒有權限能開啟,查證後發現一般將USB裝置連接時,系統會有預設的權限,但這個權限並非讓使用者本身能使用: (以Arduino Leonardo為例)

    [danny@nb-a1410 dev]$ ls -l /dev/ttyACM0
    crw-rw---- 1 root uucp 166, 0 Mar 18 15:05 /dev/ttyACM0
    [danny@nb-a1410 dev]$

所以只要將此裝置連接後讓使用者能有權限使用它就可解決問題,以下提供2個方法。

加入群組

Arch官方有提供它的做法點這裡,只要將使用者加入群組也能擁有此權限,官方建議加入2個群組uucplock

gpasswd -a 使用者名稱 uucp
gpasswd -a 使用者名稱 lock

如果再不行的話就加入tty

gpasswd -a 使用者名稱 tty

加入後能利用id命令對使用者查詢目前所屬的群組:

id 使用者

結果:

    uid=1000(danny) gid=1000(danny) groups=1000(danny)

確定無誤後重新啟動Arduino IDE就解決問題,不過還有另外的方法,就是在USB裝置連接後,將USB裝置名稱的屬性變更為使用者能使用的屬性就行,下面會進行了解。

變更週邊名稱屬性

Linux中管理一些裝置連接的都使用udev,這是與kernel有關的功能,這主要是讓你在連接裝置設備後會產生對應的名稱讓應用程式去使用,像我們硬碟會有sdasdb或是USB串列的ttySUSB0…等,當然會提供一些規則(rule)做客製化的功能,接下來要利用此功能讓USB裝置連接後變更它的屬性。

建立規則檔後放入/etc/udev/rules.d/後功能就會啟用,在這不說明udev的功能,直接將規則內容列出:

建立新規則檔案

sudo nano /etc/udev/rules.d/52-arduino.rules

將下面規則貼入檔案中並存檔

    SUBSYSTEMS=="usb", KERNEL=="ttyACM[0-9]*", MODE="0777"
    SUBSYSTEMS=="usb", KERNEL=="ttyUSB[0-9]*", MODE="0777"


此規則功能主要將USB裝置中所產生的ttyACM0~ttyACM9、及ttyUSB0~ttyUSB9的屬性變0777,開放所有人可以存取使用。

規則重新生效

存檔完成後執行命令讓規則生效

    sudo udevadm trigger

查看屬性

之後再重新將Arudino重新連接,此時可以看一下屬性:

ls -l /dev/ttyACM0

應該就能看到屬性都變了:

    crwxrwxrwx 1 root uucp 166, 0 Mar 18 15:39 /dev/ttyACM0

接下來重新啟動Arduino IDE就能順利使用。

ESXi 手動刪除磁區

$
0
0

ESXi 手動刪除磁區

某些時候你將磁碟加入成為DataStore時,可能會出現錯誤:

A specified parameter was not correct.
vm.Host.DiskPartitionInfo.spec
...
...

意指你加入的磁碟可能已經有其他分割無法進行刪除成為DataStore,會有這狀況可能是ESXi使用fdisk指令來管理磁碟,在你的分割是GPT或是fdisk本身無法管理的都會出現類似的錯誤,所以你必需要使用其他指令進行手動刪除。

partedUtil

使用ssh登入ESXi Server時,執行partedUtil不加參數會出現指令的使用方法:

Usage:
 Get Partitions : get <diskName>
 Set Partitions : set <diskName> ["partNum startSector endSector type attr"]*
 Delete Partition : delete <diskName> <partNum>
 Resize Partition : resize <diskName> <partNum> <start> <end>
 Get Partitions : getptbl <diskName>
 Set Partitions : setptbl <diskName> <label> ["partNum startSector endSector type/guid attr"]*
 Fix Partition Table : fix <diskName>
 Create New Label (all existing data will be lost): mklabel <diskName> <label>
 Show commonly used partition type guids : showGuids
 Get usable first and last sectors : getUsableSectors <diskName>
 Fix GPT Table interactively : fixGpt <diskName>


稍後會使用Delete Partition : delete <diskName> <partNum>進行刪除。

尋找磁區

刪除磁區前首先尋找該磁區的磁碟名稱:

ls -l /vmfs/devices/disks

所以與磁碟、磁區有關的都會在disks這目錄內,使用ls -l列出很多資訊

total 4896061644
-rw-------    1 root     root     1978895695872 May 16 15:52 mpx.vmhba1:C0:T0:L0
-rw-------    1 root     root     1978894630400 May 16 15:52 mpx.vmhba1:C0:T0:L0:1
-rw-------    1 root     root     7849115648 May 16 15:52 mpx.vmhba32:C0:T0:L0
-rw-------    1 root     root       4161536 May 16 15:52 mpx.vmhba32:C0:T0:L0:1
-rw-------    1 root     root     262127616 May 16 15:52 mpx.vmhba32:C0:T0:L0:5
-rw-------    1 root     root     262127616 May 16 15:52 mpx.vmhba32:C0:T0:L0:6
-rw-------    1 root     root     115326976 May 16 15:52 mpx.vmhba32:C0:T0:L0:7
-rw-------    1 root     root     299876352 May 16 15:52 mpx.vmhba32:C0:T0:L0:8
-rw-------    1 root     root     107374182400 May 16 15:52 naa.600140501e76a67dcf27d3813d82ded1
-rw-------    1 root     root     107373116928 May 16 15:52 naa.600140501e76a67dcf27d3813d82ded1:1
-rw-------    1 root     root     60022480896 May 16 15:52 t10.ATA_____EZLINK_Seraphim_MLC_60GB________________201203071200279_____
-rw-------    1 root     root     60020490240 May 16 15:52 t10.ATA_____EZLINK_Seraphim_MLC_60GB________________201203071200279_____:1
-rw-------    1 root     root     256060514304 May 16 15:52 t10.ATA_____EZLINK_T34_256GB________________________201410300108________
-rw-------    1 root     root     256051917824 May 16 15:52 t10.ATA_____EZLINK_T34_256GB________________________201410300108________:1
-rw-------    1 root     root     40019582464 May 16 15:52 t10.ATA_____INTEL_SSDSA2M040G2GC____________________CVGB00330014040GGN__
-rw-------    1 root     root       4161536 May 16 15:52 t10.ATA_____INTEL_SSDSA2M040G2GC____________________CVGB00330014040GGN__:1
-rw-------    1 root     root     4293918720 May 16 15:52 t10.ATA_____INTEL_SSDSA2M040G2GC____________________CVGB00330014040GGN__:2
-rw-------    1 root     root     34781265920 May 16 15:52 t10.ATA_____INTEL_SSDSA2M040G2GC____________________CVGB00330014040GGN__:3


t10.開頭的主要是你機器上的磁碟,以例子中要找的是EZLINK T34這個256GB SSD,它先前在windows使用過,所以要進行手動刪除才能成為DataStore,重新執行指令將所有EZLINK T34的都列出來:

ls -l /vmfs/devices/disks/t10.ATA_____EZLINK_T34_256GB*

列出相關的:

-rw-------    1 root     root     256060514304 May 16 15:16 t10.ATA_____EZLINK_T34_256GB________________________201410300108________
-rw-------    1 root     root     367001600 May 16 15:16 t10.ATA_____EZLINK_T34_256GB________________________201410300108________:1
-rw-------    1 root     root     255158087168 May 16 15:16 t10.ATA_____EZLINK_T34_256GB________________________201410300108________:2
-rw-------    1 root     root     532676608 May 16 15:16 t10.ATA_____EZLINK_T34_256GB________________________201410300108________:3
/dev/disks # ls -l t10.ATA_____EZLINK_T34*

其他名稱後面以:冒號與數字組合的名稱為磁區,以這個列表看來總共分割成3個磁區,現在要一一的將三個磁區刪除。

刪除磁區

承上已經列出要刪除磁碟資訊:

t10.ATA_____EZLINK_T34_256GB________________________201410300108________
-rw-------    1 root     root     367001600 May 16 15:16 t10.ATA_____EZLINK_T34_256GB________________________201410300108________:1
-rw-------    1 root     root     255158087168 May 16 15:16 t10.ATA_____EZLINK_T34_256GB________________________201410300108________:2
-rw-------    1 root     root     532676608 May 16 15:16 t10.ATA_____EZLINK_T34_256GB________________________201410300108________:3

此時利用partedUtil的Delete Partition : delete <diskName> <partNum>進行刪除:

cd /vmfs/devices/disks

partedUtil delete "t10.ATA_____EZLINK_T34_256GB________________________201410300108________" 3

partedUtil delete "t10.ATA_____EZLINK_T34_256GB________________________201410300108________" 2

partedUtil delete "t10.ATA_____EZLINK_T34_256GB________________________201410300108________" 1

以上執行正確後,重新再查看一下時,應該會看到只剩磁碟名稱:

ls -l /vmfs/devices/disks/t10.ATA_____EZLINK_T34_256GB*

結果:

-rw-------    1 root     root     256060514304 May 16 16:04 /vmfs/devices/disks/t10.ATA_____EZLINK_T34_256GB________________________201410300108________

確定刪除後就可以利用vSphere Client進行重新加入成為DataStore的動作。

參考資訊

來上電腦課!- PartedUtil VMware ESXi 磁區管理指令

Vim.Host.DiskPartitionInfo.spec – VMware can’t add extra drive.

ESXi PSOD E1000 當機

$
0
0

ESXi PSOD E1000 當機

這次將之前試驗用的ESXi主機更換機殼及重新安裝ESXi試用,此次發生電源供應器供電不穩外,還另外遇到當機:

從圖中能看到關鍵字為e1000,此為intel e1000系列的驅動程式,但再研究一下跟查詢資料後才了解到這是虛擬驅動程式產生的問題,在ESXi的環境中,網路卡可分為模擬實體Intel E1000系列網卡還有VMXNET,資料查詢結果後連官方也都建議盡量改用VMXNET網卡才能徹底解決此問題,但要更改成此網卡時要注意到驅動程式是否有支援該環境!

參考資料

ESXi 5.5 PSOD w/ E1000 NICs

E1000 網卡造成 ESXi PSOD 死當?

ESXi 5.1 PSOD 紫屏 E1000 PollRxRing 與 DevRx 溢位問題

VMware ESXi 5.x host experiences a purple diagnostic screen mentioning E1000PollRxRing and E1000DevRx (2059053)


ESXi 開啟免密碼SSH登入 (速記)

$
0
0

ESXi 開啟免密碼SSH登入 (速記)

產生SSH Public Key

SSH 使用上會有Public與Private Key,在使用免密碼登入時必需要將自已的Public存放在另一端,這裡以RSA加密來說明,首先您必需要有SSH相關程式:

Arch Linux

    pacman -S openssh


Debian / Ubuntu

    apt-get install openssh-server

Linux產生的過程參考4.3 伺服器上的 Git – 生成 SSH 公開金鑰

Windows

在 Windows 使用「非對稱金鑰」來遠端登入 SSH 的方法

存放Public Key

SSH Server(openssh)在使用者登入時會依照登入名稱及設定好的絕對路徑中查看是否有authorized_keys,有的話會檢核內容中的public key,符合的話就能完成免密碼SSH登入, Linux中的路徑為~/.ssh/authorized_keys,ESXi中使用的也是openssh,所以原理也是相同,只是存放的路徑已經變更至/etc/ssh/keys-root/authorized_keys。 我們只需將產生好的public key存入至相應路徑就完成,此例產生rsa的加密public key例如:

    cat ~/.ssh/id_rsa.pub | ssh root@<ESXi ip> 'cat >> /etc/ssh/keys-root/authorized_keys'

快速建立ESP8266 Linux開發環境

$
0
0

快速建立ESP8266 Linux開發環境

Toolchain

引言

官方提供的開發環境是利用現成的VM檔案進行二次開發,此篇目的為使用已經編譯好的開發工具直接在Linux上執行,不需要像其他教學文章需要另外將開發工具編譯好後才能使用。

安裝套件

在使用之前必需要確認你的環境是否具備一些工具,像:make、git…等:

Ubuntu

  • x32
apt-get install git autoconf build-essential gperf bison flex texinfo libtool libncurses5-dev wget gawk libc6-dev-i386 python-serial libexpat-dev


  • x64
apt-get install git autoconf build-essential gperf bison flex texinfo libtool libncurses5-dev wget gawk libc6-dev-amd64 python-serial libexpat-dev


Arch

Arch的base-devel group package已經包含許多需要的套件,簡單的指定三個套件名稱:

pacman -S base-devel python-pyserial gperf


下載編譯工具

ESP8266 Community Forum在Github上有提供在Linux建立自已的開發環境,不過另外它們還有提供ESP8266 for Arduino讓ESP8266相容於Arduino IDE進行類似Arduino的開發,因此利用此過程將其中已編譯好的開發工具提取出來,該工具不需要另外透過下載crosstool-NG及編譯的過程中才能取得ESP8266的開發環境。

x64

http://arduino.esp8266.com/linux64-xtensa-lx106-elf-gb404fb9.tar.gz


x32

http://arduino.esp8266.com/linux32-xtensa-lx106-elf.tar.gz


下載完後自行解開至自已的環境並記住路徑。

下載標頭檔與函數庫

下載並解壓後必需要再補一些標頭檔與函數庫才能正確的編譯ESP8266 FW,首先先至解壓後會產生xtensa-lx106-elf目錄並將工具放至於此。

  • 進入開發工具所在目錄
cd xtensa-lx106-elf


進入後查看目錄結構

ls -l


    danny@EDY-X301A:~/xtensa-lx106-elf$ ls -l
    total 1660
    drwxrwxr-x 2 danny danny   4096  8月  4 14:47 bin
    -rw-rw-r-- 1 danny danny 691490  5月 13  2015 build.log.bz2
    drwxrwxr-x 7 danny danny   4096  8月  4 14:47 include
    -rw-rw-r-- 1 danny danny 979111  8月  2 13:50 include.tgz
    drwxrwxr-x 4 danny danny   4096  8月  4 14:47 lib
    drwxrwxr-x 3 danny danny   4096  8月  4 14:47 libexec
    drwxrwxr-x 4 danny danny   4096  8月  4 14:47 share
    drwxrwxr-x 9 danny danny   4096  8月  4 14:47 xtensa-lx106-elf
    danny@EDY-X301A:~/xtensa-lx106-elf$ 

再進入第二層目錄

    cd xtensa-lx106-elf


此時下載函數庫將缺少的補齊至lib目錄:

    wget -O lib/libc.a https://github.com/esp8266/esp8266-wiki/raw/master/libs/libc.a
    wget -O lib/libhal.a https://github.com/esp8266/esp8266-wiki/raw/master/libs/libhal.a


標頭檔的下載與解壓:

wget -O include.tgz https://github.com/esp8266/esp8266-wiki/raw/master/include.tgz
tar zxvf include.tgz


解壓後會將標頭檔全部解壓至include目錄。以上過程就已經將開發環境建置完成,接下來移動您解壓後的xtensa-lx106-elf目錄至您所放的位置,之後進入xtensa-lx106-elf目錄後將裡面的目錄bin加至環境變數中的路徑PATH: (假設檔案放在/home/danny/xtensa-lx106-elf)

PATH="/home/danny/xtensa-lx106-elf/xtensa-lx106-elf/bin:$PATH"

如此一路環境總算建置成功,之後就下載官方SDK依照官方的方式就能將ESP8266 fw建置完成。

ESP8266 ESP-01 Quick Reference

$
0
0

ESP8266 ESP-01 Quick Reference

ESP-01

ESP8266在IoT是不可缺少的話題,然而由安信可所推出的ESP-01更是在Arduino Wifi Module有一定的佔有率,所以會將原有的Module加工成自已所需要的,以Danny為例,DIY板子對我來說是個很不熟的工作,所以在接線時需要背面的Pinout標示,還有Flash upgrade的接線方式..等。

有其他的資訊與ESP-01有關的再直接更新此文章。

Justified or Natural text alignment before iOS 7.0

$
0
0

這個問題應該是老問題,不過這一年來主力暫時放在Linux的環境,最近剛好要維護仍然停留在iOS6的Project,並新增許多功能後才發生問題。 點擊查看一下發現主要是Storyboard上的問題,那問題在哪呢?原來是後來有新增Label,但未對於Label中的Text文字對齊做選擇:

所以選擇一下對齊方式:

![](

選擇完成後就馬上會看到警告消失!

Arduino 使用 SCT013 量電流(ADS1115)

$
0
0

Arduino 使用 SCT013 量電流(ADS1115)

量電流方式有串聯方式與非接觸式,一般非接觸式都是使用霍爾電流感應方式量測,但因為使用感應電流方式取得一定比率的電流再回推實際值,這會因為環境因素影響準確性,但非接觸式有個好處如其名稱一樣,我們不需要變更線路設計就能量測到電流此篇為Arduino 使用 SCT013 量電流進階版本,主要是加上16位元解析度的ADC模組,及差分輸入解決電流只能只能量超過0.5A。

準備工作

下面列出硬體方面的準備工作如下:

  • Arduin UNO

  • SCT013

  • ADS1115

這是一款4通道 ADS1115 16位元解析度ADS類比轉數位模組,細節規格可以參考Adafruit ADS1115或是TI官網ADS1115

此次是要利用它具有差分輸入的方式輸入具有正負波型的資訊,省掉像Arduino 使用 SCT013 量電流文中需要增加提升電壓的電路,加上高解析度16位元可以讓量測的電流更精確。

  • SCT013 with ADS1115 for Arduino 電路

SCT013輸出是電流的方式,但ADS1115 IN是量電壓方式,所以需要另外接電路將電流轉換成電壓,而且電流帶有正負電壓的正弦波,最後會以差分輸入的方式取得轉換值:

實際連接如下:

安裝 Adafruit ADS1X15 Library

下載Adafruit_ADS1X15,解壓後安裝至Arduino的Library中,成功的話可以看到如下圖:

如果不清楚Library怎麼下載及安裝可以參考Arduino遙控大金(daikin)冷氣中的下載Arduino_IRremote_Daikin說明。

撰寫範例程式

範例程式如下,將它貼至新建的專案

//-----------start-----------
//
#include <Wire.h>
#include <Adafruit_ADS1015.h>

Adafruit_ADS1115 ads;
//
double sqI,sumI;
double sampleI;
double Irms;

double squareRoot(double fg)
{
    double n = fg / 2.0;
    double lstX = 0.0;
    while (n != lstX)
    {
        lstX = n;
        n = (n + fg / n) / 2.0;
    }
    return n;
}

double calcIrms(unsigned int Number_of_Samples, float multiplier,double ical)
{

    for (unsigned int n = 0; n < Number_of_Samples; n++)
    {
        sampleI = (double)ads.readADC_Differential_0_1();
        sqI = sampleI * sampleI;
        sumI += sqI;
    }
    Irms = squareRoot(sumI / Number_of_Samples) * multiplier * ical;
    sumI = 0;
//--------------------------------------------------------------------------------------

    return Irms;
}



void setup()
{
    Serial.begin(115200);
    Wire.begin();
    /* ADS1115 @ +/- 4.096V gain (16-bit results) 0.125mV Step*/
    ads.setGain(GAIN_ONE);
    ads.begin();
    Serial.println();
    Serial.println("current meter");

}

void loop()
{
    double Irms = calcIrms(64, 0.125F,4.5) / 100;
    Serial.print(Irms*110.0);        // Apparent power
    Serial.print(" ");
    Serial.println(Irms);            // Irms
    delay(1000);
}




//------------end------------

電流計算使用calcIrmsFunction,參數依序為:

  • 取樣次數 輸入為64以上階行,愈小速度愈快

  • 解析度最小電壓 依照ADS115的模式來決定解析度最小電壓,Library範例中所提示:

//
  ads.setGain(GAIN_TWOTHIRDS);  // 2/3x gain +/- 6.144V  1 bit = 3mV      0.1875mV (default)
  ads.setGain(GAIN_ONE);        // 1x gain   +/- 4.096V  1 bit = 2mV      0.125mV
  ads.setGain(GAIN_TWO);        // 2x gain   +/- 2.048V  1 bit = 1mV      0.0625mV
  ads.setGain(GAIN_FOUR);       // 4x gain   +/- 1.024V  1 bit = 0.5mV    0.03125mV
  ads.setGain(GAIN_EIGHT);      // 8x gain   +/- 0.512V  1 bit = 0.25mV   0.015625mV
  ads.setGain(GAIN_SIXTEEN);    // 16x gain  +/- 0.256V  1 bit = 0.125mV  0.0078125mV


Danny使用GAIN_ONE,所以解析度最小電壓為:0.125mV。

  • 校正值,範例使用4.5,使用時可以利用勾表配合調整該數值大小,例如:先將校正值輸入1,再依照勾表量出的值/量電流輸出大小所得的值為校正值輸入。

輸出結果:

左邊數據為使用計算後使用的瓦數(W),右邊值為電流大小(A)

注意事項

如果你量測的電流小於60A,可以更換成100歐姆的電阻讓ADS1115讀取電壓的範選大一點會更準。

參考資料

使用前可以看一下如何使用鉤錶來量測電流?影片了解勾表型的互感器使用方式:

Arduino ADS1115 Module Getting Started Tutorial

ADS1115 Module with CT/Grove Connectors from whatnick on Tindie

ESP8266 and Emoncms

更新資訊

日期 內容
2016/12 新增文章
Viewing all 79 articles
Browse latest View live