顯示具有 小技巧 標籤的文章。 顯示所有文章
顯示具有 小技巧 標籤的文章。 顯示所有文章

2022年1月1日 星期六

Sonoff Basic R2 1.3刷Tasmota

從網拍上買兩個Sonoff Basic R2,想要接臥室的嵌燈。使用ESPhome透過網頁界面把韌體刷入後,接上電源發現沒動作,LED也不會亮,改用Tasmota用網頁界面刷韌體也是同樣的情況。

之後在網路上搜尋找到有人使用同樣硬體版本的R2刷入韌體可以使用,他是用esptool這個指令界面工具去刷,參數部份特別指定刷入模式使用dout (Dual Output),我也用同樣的指令刷入後就可以正常運作了。

2019年8月19日 星期一

使用pytz為datetime物件加上時區的注意事項

使用Python的datetime產生的物件是不會包含時區資訊的,在網路上搜尋加上時區的方式,一般都是建議用pytz,大概類似以下的作法。
import datetime
import pytz

mytz = pytz.timezone('Asia/Taipei')
mytime = datetime.datetime.now().replace(tzinfo=mytz)

print(mytime)
2019-08-19 14:56:50.450396+08:06
結果的確會顯示時區,不過好像哪裡怪怪的?台北所在的時區應該是+08:00,怎麼會變成+08:06,多加了六分鐘?

pytz的文件在開頭有提到,因為與Python內建的tzinfo API有實做上的差異,如果要顯示當地的時區,需使用localize()這個方法,範例如下。
import datetime
import pytz

mytz = pytz.timezone('Asia/Taipei')
mytime = mytz.localize(datetime.datetime.now())

print(mytime)

2019-08-19 14:56:50.450396+08:00
這樣就會顯示正確的時區。

2018年10月30日 星期二

Linux桌面多使用者登入,類似LTSP的作法

LTSP就是Linux版本的Terminal Server,可以讓多個使用者共用一台伺服器的資源去使用桌面環境,但是Client端OS必須也要是Linux是缺點。

之後找的方案是在Ubuntu Mate 18.04中啟用LightDM的XDMCP功能,在Linux上使用Xephyr連線非常順暢,但是在Windows上試了好多種軟體(包含Xming),都會出現畫面顯示異常或卡住,程式啟動當掉的問題,只能放棄。

再來則是XDMCP + VNC,網路上許多文章都會提到這個替代方案,我參考這一篇做設定,但是不透過SSH連線。設定完成,連上去看起來都沒什麼問題,直到我發現fctix的選字框無法顯示。 Orz

根據Ubuntu社群WIKI關於VNC Server的文章,其中提到只有TigerVNC支援compositing window managers像是Gnome Shell,原本我安裝的是vnc4server,換成tigervnc-standalone-server問題就解決了。而且換成TighterVNC Server還有個好處,Client也使用TigerVNC的話,就支援動態變更桌面尺寸,變更TigerVNC Viewer視窗的尺寸就會連帶變更Linux桌面的尺寸。

2018年6月7日 星期四

4G連線裝置的遠端管理

最近碰到一個情況是需要在特定地點放置網路設備,上面建置的服務需要連外,但又無法連接有線網路,看起來比較簡單而且立即可用的方案就是租用4G網路。

上網的問題解決了,但是又冒出其他問題。因為IPv4的IP可用數量不足的關係,4G網路大多是採用Carrier-grade NAT的技術去解決IP不足的問題,但這也代表著無法在遠端主動連入這個4G連網裝置進行管理。

為了解決遠端管理的問題,我最後想到使用SSH Tunnel,讓這些裝置主動開啟逆向SSH Tunnel連線到我的主控端伺服器,那我就可以從主控端伺服器連入這些設備進行管理。

不過之後發現SSH Tunnel建立一段時間之後就會沒有回應,看起來應該是4G不穩定,連線已經中斷,但是主控端的ssh server沒有把連線關閉。因此我在ssh server加上keep alive的設置,每30秒會發送封包給client進行檢查,如果連續三次都無回應就會關閉連線。設置此設定後連線都正常。

2017年12月13日 星期三

GCE的TCP Health Check不支援換行符號

我打算在Google Compute Engine上建置Redis Slave個體群組,並使用GCP的負載平衡服務來連接,但是碰到一個問題,Health Check永遠都是失敗,導致個體群組裡頭的VM一直被重建。

檢查了許多地方,確認Health Check的IP可以連進VM,從netstat -an也可以看到連線。使用nc -l -p 6379的確也能看到Health Check送進來的要求字串 PING\r\n,但是透過redis-cli下monitor指令卻沒看到。

我在Health Check設置的要求字串是 PING\r\n,檢查字串是 +PONG,用nc的確是看到傳進來的是PING\r\n....等等,換行字元應該不會顯示?然後又用PYTHON參考別人寫的範例做了一個TCP SOCKET SERVER,結果顯示出來的是 PING\\r\\n...... Orz。redis一定要接收到換行符號才算接收到指令,否則就會停在那裡。看起來GCE的Health Check會過濾特殊符號。

Google Groups上的GCE論壇也有人有相同的問題,Google的人回答都指向stackoverflow上的某個連結:
https://stackoverflow.com/questions/43228878/health-check-to-detect-redis-master-from-google-tcp-load-balancer
下面回答得很長,其實結論是在同一台VM裡頭去跑另一隻程式來處理Health Check請求與回傳結果,我最後是用PYTHON寫了一個TCP SOCKET SERVER,當Health Check傳入PING,就使用subprocess去跑redis-cli PING,然後把結果回傳。


2017年9月22日 星期五

foobar2000使用usb dac播放音樂

因為最近買了KECES的DA151MK3,想研究一下怎樣的設置才能得到最好的效果。

軟體需求
  • Windows 7以後的作業系統(其實是Vista以後,但是誰還用Vista?)
  • foobar2000最新版
  • WASAPI plugin
foobar2000的設置說明
  1. 在Preference/Playback/Output/Device裡選擇『WASAPI (event):喇叭 (USB DAC)』。選擇DS (Direct Sound) 的話有可能會受Windows Mixer與Resampler影響,而WASAPI則是直接輸出未更動的位元流給USB DAC。WASAPI支援兩種模式:push跟event,音效裝置可能只支援其中一種方式,大多數裝置都支援event,如果不支援再改用push,可參考WASAPI plugin的文件
  2. 下面的Output data format要依照硬體規格設置,否則會出現無法播放,格式不支援的錯誤。以DA151MK3為例,最大支援到16-bit。至於Dither是否要啟用,如果播放的音樂需要轉換,如24-bit->16-bit則可以開啟,但是HydrogenAudio的Wiki上則認為,大多數人其實聽不出來差異,是否需要開啟則是依照喜好決定。
  3. 在Playback/DSP Manager/Active DSPs裡,如果播放的音樂檔案格式硬體不支援,則需要啟用Resampler做轉換。以DA151MK3為例,播放格式為24bit/96kHz的檔案,就需要使用Resampler並設置為44或48kHz,否則同樣會出現音訊裝置無法支援的問題。以內建的Resampler來說,SSRC的品質比較好但是硬體需求較高,PPHS雖然比不上SSRC但是也比Windows的Resampler好太多。這部份也是依照喜好決定。如果不須轉換則無須使用,減少Resampler所帶來的影響。

2017年8月16日 星期三

更新到Firefox 55反而變慢的情況

如果更新到Firefox 55之後出現開網頁停滯或變慢的情況,試試調整『偏好設定/一般』的效能選項,預設是使用推薦的效能設定,建議關閉並修改內容處理數量限制跟CPU核心數一致,如果是4核心CPU就選4。

2016年11月15日 星期二

在PowerDNS 4.x設置fake domain

情境:需要在某個正式運行的網域做測試,但又不能直接在上頭修改,雖然可以用ISC BIND去做這些事,但是又需要在網域頂層(apex domain,例如example.org)設置CNAME,而RFC又不允許…。

解:使用PowerDNS 4.x

PowerDNS 4之後開始支援Alias,可以在網域頂層設置類似CNAME的Alias。在文件中提到,要使用Alias需要在pdns.conf中設置recursor這項,指定遞迴查詢的名稱伺服器, 但是這會有個副作用,假設PowerDNS有一筆紀錄是
aaa.example.org. IN CNAME bbb.example.org.
但是在正式運作的網域裡頭,有設置一筆A record
aaa.example.org. IN A xxx.xxx.xxx.xxx
用DNS查詢工具去查詢PowerDNS有關aaa.example.org的紀錄時,只會得到A record而不會出現CNAME。要解決這個問題,需要安裝PowerDNS Recursor。詳細設定如下:

pdns.conf(PowerDNS的設定檔)
recursor=127.0.0.1:5300 #指定查詢的DNS為本機上安裝的PowerDNS Recursor。

recursor.conf(PowerDNS Recursor的設定檔)
local-address=[::1] 127.0.0.1 #如果沒用到IPv6可以把[::1]拿掉
local-port=5300 #預設是53,會跟已安裝的PowerDNS衝突
forward-zones=example.org=127.0.0.1 #轉送查詢的網域與伺服器,格式是 網域=伺服器ip,多個網域以逗點分隔
要使用forward-zones而不是forward-zones-recurse,如同字面上的意思forward-zones-recurse會進行遞迴查詢而導致迴圈。

2015年8月2日 星期日

Windows 10與存取網路芳鄰的問題

昨天把家裡的電腦升級到Windows 10,使用起來都還蠻順暢的,除了一點:我在也不能連接到Synology DS413的共用資料夾,在網路搜尋了一下,發現只要有使用Microsoft帳戶登入就會發生這樣的問題。解決方案是在登入共用資料夾時,登入的帳號要使用 主機名稱\帳戶 這樣的格式。

來源:
http://forum.synology.com/enu/viewtopic.php?f=49&t=98792&sid=6dda792dba35d3c5807d6d6cfa6d490d#p385856

2015年5月22日 星期五

在Centos 7上安裝389 Directory Server

一定要跑一台DNS做名稱解析,直接在hosts檔案裡頭做解析,在執行

setup-ds-admin.pl到最後一步就會出現
Error: Could not create directory server instance 'ds'.
的錯誤。

最簡單的方式,開一台VM跑dnsmasq做名稱解析就可以完成設定。

2015年1月5日 星期一

Roundcube使用password plugin (chpasswd driver)的方式

基本上參考這一篇
http://www.roundcubeforum.net/index.php?topic=21861.0
之前實作的時候一直碰到密碼更改失敗的情況,看log也看不出所以然,只看到Unable to execute sudo。原來sudoers裡頭預設有"Defaults    requiretty"這個設定,php在執行chpasswd是沒有console的,所以無法執行,照這篇文章修改就行。
1) enable password function

vi /var/www/html/roundcube/config/config.inc.php

- alter the following line as follows:

$config['plugins'] = array('password');

cd /var/www/html/roundcube/plugins/password
cp config.inc.php.dist config.inc.php

2) enable the password plugin

cd /var/www/html/roundcube/plugins/password
cp config.inc.php.dist config.inc.php

vi config.inc.php

- alter the following as follows:

$config['password_driver'] = 'chpasswd';

3) allow apache to run the script

visudo

- add to bottom

Defaults:apache !requiretty
apache ALL=(root) NOPASSWD: /usr/sbin/chpass-wrapper.py

4) add blacklisted users and minimum UID below

vi /var/www/html/roundcube/plugins/password/helpers/chpass-wrapper.py

BLACKLIST = (
    # add blacklisted users here comma separated
    'root'
)

if user.pw_uid < 494:
    sys.exit('Changing the password for user id < 494 is forbidden')

5) copy the helper to executable directory & set make it executable
   
cp /var/www/html/roundcube/plugins/password/helpers/chpass-wrapper.py /usr/sbin
chmod 755 /usr/sbin/chpass-wrapper.py

6) alter the driver to run the helper which in turn runs the driver (wraps it)

vi /var/www/html/roundcube/plugins/password/config.inc.php

old:
$config['password_chpasswd_cmd'] = 'sudo /usr/sbin/chpasswd 2> /dev/null';
new:
$config['password_chpasswd_cmd'] = 'sudo /usr/sbin/chpass-wrapper.py 2> /dev/null';

2013年12月27日 星期五

修正ownCloud 6.0/6.0a無法顯示檔案動作選單的問題

因為ownCloud 最近釋出6.0,就下載來試試,沒想到檔案動作選單無法顯示,但是切換到英文語系卻可以。

詢問了Google大神,原來是bug。這個bug已經被修正,但是要在下個版本才會包含此修正。目前要解決這個問題,可以從github下載已經被修正的版本。

下載這個版本
https://raw.github.com/owncloud/core/77af1a71274f970436a14718e8d19a4cf3ea5f48/core/js/js.js

覆蓋 owncloud/core/js/js.js 的原始檔案,修正完成!

2013年10月19日 星期六

調整Firefox在Kubuntu的滑鼠滾輪捲動速度

Firefox與Chrome這些以GTK toolkit為基礎的瀏覽器,在Qt4/KDE的桌面上,滑鼠滾輪的捲動速度總是很慢。雖然在KDE的設定中可以調整滾動速度,但會變成在KDE桌面的捲動速度太快。還好Firefox有內部設定可以調整,而Chrome則仍是無解。以下說明在Firefox修改的作法。

開一個新分頁,在網址列上輸入 about:config 開啟設定畫面。在設定畫面中的搜尋列中輸入 mousewheel.system_scroll_override_on_root_content,應該會出以下三個結果。
  • mousewheel.system_scroll_override_on_root_content.enabled
  • mousewheel.system_scroll_override_on_root_content.horizontal.factor
  • mousewheel.system_scroll_override_on_root_content.vertical.factor
點兩次 mousewheel.system_scroll_override_on_root_content.enabled把它的值改成 enabled,然後點兩下mousewheel.system_scroll_override_on_root_content.vertical.factor 修改垂直捲動的速度,預設值是200,建議先修改到300試試。如果你想修改水平捲動的速度,就點兩下 horizontal.factor 修改。

2012年2月12日 星期日

在Kubuntu 11.10裡頭正確啟動ibus輸入法

首先確定你的Kubuntu已經作過更新,並安裝gnome-icon-theme。

編輯此檔案 /etc/alternatives/xinput-zh_TW,確認內容如下:
(簡體語系請改成zh_CN,以此類推)
XIM=ibus
XIM_PROGRAM=/usr/bin/ibus-daemon
XIM_ARGS="--xim"

if [ -e /usr/lib/gtk-3.0/*/immodules/im-ibus.so ] \
   && [ -e /usr/lib/*/gtk-2.0/*/immodules/im-ibus.so ]
then
    GTK_IM_MODULE=ibus
else
    GTK_IM_MODULE=xim
fi

if [ -e /usr/lib/qt4/plugins/inputmethods/libqtim-ibus.so ]; then
        QT_IM_MODULE=ibus
else
        QT_IM_MODULE=xim
fi

if [ -e /usr/lib/clutter-imcontext/immodules/im-ibus.so ]; then
        CLUTTER_IM_MODULE=ibus
fi

DEPENDS="ibus, ibus-gtk|ibus-qt4|ibus-clutter"
重新開機後,應該能在通知列上看到ibus的圖示。

2010年7月23日 星期五

使用Gcin輸入時,禁用Compiz的飛入效果

在開啟Compiz時,用Gcin輸入文字會出現文字飛入的特效,雖然看起來很炫,但有時會感覺蠻煩的,如果想要關閉這樣的效果,該怎麼做呢?

首先,你必須安裝compizconfig-settings-manger (CCSM)。
用Synaptics安裝CCSM
在「系統/偏好設定」啟動CCSM,點選特效/Animations。
CCSM
在Open Animation與Close Animation這兩頁的Animation Selection,編輯每一個項目,在最後加上 & !(name=gcin)。
CCSM - Animations
如此一來就完成。

2009年7月8日 星期三

解決Ubuntu在休眠後啟動失敗的方法

在核心的啟動參數加上

noresume

就行了。這方法也適合其他的Linux發行套件

在這方面 Windows Vista / Windows 7 就比 Ubuntu 友善多了,如果從休眠後啟動出問題,再次啟動時就會詢問是否要刪除休眠啟動檔案,而Ubuntu得在Grub的開機選單中編輯核心啟動參數才行,選救援模式仍然不行。

Reblog this post [with Zemanta]

2008年12月9日 星期二

改善Google Earth 4.3 Linux版的文字顯示

※此解決方案只針對Ubuntu 8.10 + Google Earth 4.3,如果你沒有以下的問題,請不要更動系統檔案。

第一次使用Google Earth 4.3 Linux版的人都會發現,介面上的文字過小,而且有缺字破損的情況,但是在4.2版卻不會。早期有人提出修改設定檔的作法,但結果卻是差強人意。後來在Google Earth Help論壇上頭,有人提出了另一種解法,根據文章中所提到,可以推測出文字顯示問題是跟QT4函式庫有關。

文章中說明的解法,大致是安裝QT4的函式庫,然後將系統中的檔案覆蓋Google Earth 4.3附帶的QT4函式庫。不過這樣的作法僅適用於32位元的環境,如果是AMD64的環境,就不能這樣做了。在64位元的環境下,必須自行下載i386版的QT4 deb檔,自行解壓縮再覆蓋檔案。

  1. 以Ubuntu 8.10 AMD64為例,安裝Medibuntu的Google Earth 4.3。

  2. 下載我整理好的i386版QT4函式庫,並解壓縮。

  3. 覆蓋Google Earth附帶的QT4函式庫
    cd /usr/lib32/googleearth
    sudo cp /解壓縮位置/libQt4/* .

  4. 完成


[caption id="attachment_291" align="alignnone" width="300" caption="Google Earth 4.3 Linux with Qt4 Library fix"]Google 4.3 Linux with Qt4 Library fi[/caption]

這個就是成果,文字顯示效果被大幅度的改善。

2008年12月1日 星期一

解決foobar2000在Ubuntu 8.10破音、跳針的問題

這個問題的原因是Ubuntu 8.10上,使用pulseaudio作為系統音源處理的backend,而Wine尚未完全支援pulseaudio。

要解決這個問題,首先開啟終端機視窗,輸入 padsp winecfg ,開啟Wine設定之後,在音效/音效驅動程式這,只選擇「OSS驅動」。



然後變更foobar2000啟動圖示的屬性,更改指令這一行,在 wine foobar2000.exe 前面加上 padsp。



理論上這個解決方式,適用於透過Wine發聲的Windows程式。

2008年8月7日 星期四

在Ubuntu分割、格式化、掛載分割區

1. 用fdisk分割磁區,如果你嫌fdisk太複雜、沒人性,也可以改用cfdisk、spfdisk,或圖形介面的gparted。
sudo fdisk /dev/sdb

這邊是以核心抓到的第二個硬碟作例子

2. 用mkfs.xxxx格式化分割區
sudo mkfs.jfs /dev/sdb1

這邊是以sdb上頭的第一個分割區作例子,檔案系統我偏好JFS,JFS是由IBM所開發,原本用於自家AIX作業系統上,特色是無論是處理大檔案或小檔案都有不錯的效能,對於CPU的使用量很低。如果你的檔案都很大,隨便一個都是數百MB到數GB,可以試試對大檔案最佳化,由SGI所開發的XFS(mkfs.xfs),XFS對CPU的使用量也很低,僅次於JFS。至於EXT3嘛(mkfs.ext3),最多人使用,出問題相對會比較容易解決,不過效率不佳,因為EXT3只是EXT2加上日誌的功能,沒有徹底的最佳化。如果你都是存放小檔案,那麼Reiser FS最適合你(mkfs.reiserfs),Reiser FS最常使用的地方就是Proxy Server,因為Proxy儲存的都是數KB到數MB的小檔案。

3. 編輯fstab

在Ubuntu 8.04,不再直接使用/dev來掛載硬碟分割區,而改以UUID。當然,你要使用/dev來掛載檔案系統也是可以的。
sudo vol_id /dev/sdb1

使用vol_id指令來獲得分割區的UUID,結果會顯示在 ID_FS_UUID= 這一行。然後編輯fstab,並加上新分割區的設定。
sudo gedit /etc/fstab

# /dev/sdb1
UUID=46b87e7e-6dfc-40b8-ac71-ee0e27fc5947 /data           jfs     relatime        0       2

這是我的設定,僅供參考,UUID每個分割區都不同,請不要照抄。

4. 掛載分割區
sudo mount -a

-a 代表著自動掛在fstab所定義的分割區,不過已經被掛載的將會被忽略。