Category: 筆記

  • Nexus 5X 誤改 無線電頻帶 解決辦法

    很多人都知道 Android 有個測試選單,只要在電話按 *#*#4636#*#* 就可以進入 這個選單的右上角有個「選取無線電頻帶」,裡頭會有美國和日本兩個選項 如果你不小心選了任何一個,會從自動模式切換到固定的頻帶 以中華電信來說,選擇美國會不能打電話(無法fallback到3G網路),選日本則是上網速度非常慢 這時想要改回去會發現沒有其他選項,解法只有刷客製ROM去改回來一途 接著就來說明怎麼解決這個情況 注意!刷機會造成資料遺失,請先備份手機 在開始之前要確定系統已安裝Android SDK commandline tool,已經安裝的話系統裡會有fastboot可以用 然後到這個網頁下載 Nexus 5X 6.0.0 (MDB08M) 這個版本的映像 接著還需要刷機用的輔助工具:TWRP 跟要刷的系統檔案(由XDA的bitdomo製作):ROM 到這邊就完成準備作業了! 首先把手機接上電腦,然後關機,按住「音量下+電源鍵」把它打開,此時會進入一個機器人肚子被打開的畫面,底下會有小字寫著fastboot mode 到電腦上的終端機,使用以下指令確認已連線到手機,成功的話會顯示手機序號 接著進行解鎖,如果失敗的話,要先回到系統內,進到「開發人員選項」,把「OEM解鎖」打開 然後將 6.0.0 (MDB08M) 檔案解壓縮,會得到一個資料夾,切換進去然後執行flash-all 執行完之後手機會重開機,把它關機,然後再按「音量下+電源鍵」把它打開 回到fastboot mode再將TWRP寫入到還原區 好了之後按音量鍵選restart bootloader,按電源鍵確認,接著再選recovery mode,再按電源鍵確認 就會進到TWRP裡面,一開始會有一個確認要不要唯讀,直接滑底下那條忽略他進去 此時手機的MTP會和電腦動作,用MTP把剛剛下載好的ROM丟到手機裡 然後在TWRP的選單按install,找到剛剛丟進去的zip檔做刷機 等他跑完後就可以重開機進去系統,然後打開電話進入*#*#4636#*#*去把頻帶調成automatic,如此一來就恢復原本的設定了 如果要刷回新的原廠系統,就是在剛剛下載 6.0.0 (MDB08M) 的地方,改下載其他版本 然後重做一遍flash-all的步驟 最後再把bootloader鎖回去就和原廠系統一樣了 資料來源:http://forum.xda-developers.com/nexus-5x/help/baseband-error-china-t3238867

  • 五倍紅寶石 HTML課

    課程詳細:https://5xruby.tw/talks/css-html-2016-3 這門課的老師是Amos,我覺得他對html和css的了解算是非常深入,滿推薦他的 1. 課程一開始是在講html tag的語意,用了解語意的方式去記憶,除了不容易忘記,在編寫網頁的時候也能挑出最符合情境的tag使用 要做好SEO就和無障礙設計一樣,盲人看不到畫面,只能靠閱讀器判斷內容,搜尋引擎也是一樣的 盡量讓網頁的語意和輔助標籤完整,就不用太擔心SEO的問題 2. 在標籤的使用上不能亂包,例如用<p>去包<div>,在Chrome的parser裡面他會認為你寫錯了,然後幫你修正而產生非預期的結果,造成css失效的問題 3. 再來就是切版,規劃版面大小的時候要計算pixel數,如果超過大小就會跑版 主要會影響版面大小的東西是width、margin、padding、border width不用說,就是內容物要用的大小 border和padding會把元素往外展開,造成他佔位的空間變大 margin則是將其他元素推開,一樣會改變元素們在整個容器裡面可用的大小,但本身佔用的空間沒變 4. 元素在畫面上有分block和inline兩種類型 block的元素會直接用margin佔掉右邊整塊區域,並強迫下一個元素換行 inline則是類似<a>、<img>或<span>這種可以以一行呈現的東西 inline的高度不太能調整,通常會用line-height去操作 5. 排版的時候可以透過float或是display:inline-block將子容器進行橫向排列 float要避免後面的元素浮上來被擋住可以用clear:both,將左右的float消除 inline-block在使用的時候要注意,將block轉換成inline時,會繼承inline的特性,而出現所謂的4px space 6. html在比較後面的元素,render時處在比較高的位置,可以蓋過前面的東西 7. position有四種static、absolute、relative、fix static就是你沒去設定他時的預設值 relative則是會以原本的位置當基準進行移動,原本所佔的位置則保留下來 absolute首先會往上層容器開始找,先找到任一容器不是position:static時,以他為基準進行移動,此時元素原來佔的位置會消失,由後面的元素替補 fixed直接跳到最上層,用視窗作為他的基準來移動

  • React Native Android原生模組

    因為老闆叫我要幫專案上Auth0,所以就在研究如何插入原生的java模組 新版React Native的MainActivity會繼承ReactActivity onCreate的方法就會被他包起來而無法使用 所以要透過他內建的getPackages來新增模組 剛剛在getPackages插入的物件是ReactPackage的實作 這三個方法都是必須實作的對象 但我們不需要提供JS模組和View 所以直接傳空的回去給他 createNativeModules則是用來插入真正存放模組內容的物件 因為物件在getPackages的時候會new一次 所以constructor就相當於原來Android的onCreate onCreate的時候程式還沒載入完成,所以不能getApplicationContext,要等到React開起來之後從JavaScript來叫 如果方法要給JavaScript叫的話,上面要加@ReactMethod才行 接著來到JavaScript的方面 從react-native那邊就可以直接引入模組 但模組的名字要看剛剛LockReactModule那邊寫的getName回傳了什麼 只要執行上面那兩行把模組輸出之後就可以呼叫LockReactModule裡面寫的@ReactMethod了

  • Rails ActiveJob filter arguments

    最近在寫activejob時,發現log裡會用info level記錄傳到queue backend的參數 如果傳很大的東西或是暫存的密碼等,會造成log混亂和資安問題 解決辦法就是在config/initializers/新增一個檔案來覆蓋那個method 使用ActiveSupport.on_load去hook的原因是logger會lazyload 如果沒有這樣做直接等after_initialize就上,會造成enqueue時無法覆蓋的問題

  • CentOS 7 安裝 PostgreSQL

    首先到 http://yum.postgresql.org/repopackages.php 去找對應的repo rpm 使用yum安裝完repo以後,改用以下指令安裝 安裝完成後,用以下指令初始化 背景服務的操作則是以下兩個 另外需注意,如果有需要build extension,會用到 pg_config 這隻程式 例如 rubygem 的 pg 就會使用到,如果找不到會發生錯誤 預設是沒有link到$PATH的位置,必須手動拉過去 除此之外,repo 的安裝位置為 資料庫和設定檔則是在 socket預設在

  • Rails systemd unit file

    適用於Capistrano部屬的CentOS 7

  • PHP編譯 筆記

    找不到libmysqlclient: configure參數加上–with-libdir=lib64 找不到pspell: 安裝aspell-devel

  • Postfix 與 DKIM

    接續上一篇mail server的文章 這邊要來說DKIM的設定 安裝套件同樣是第一件事情,但記得要先裝EPEL 主設定檔 因為這個服務僅有內部可以使用,所以要限制存取來源 這個檔案是以refile的形式讀取,意思是可以用Regex表示,例如*.example.com 接著來產生Keypair 接著告訴opendkim哪些key是要給哪些網域用的 如此一來,opendkim本身就設定好了 剛剛產生Keypair的時候,除了myselector.private之外,還會有一個txt檔,內容大概像這樣 裡頭有兩組字串,把中間兩個雙引號去掉,將兩個字串接在一起,然後把那一串新增到DNS的TXT記錄 主機名稱填「myselector._domainkey」,內容就是那一串 好了之後就可以用dig查到 最後剩下與postfix整合 最後重開postfix和opendkim服務就行了

  • Apache httpd 2.4.10 支援 Fastcgi via Unix Socket

    今天收到更新的通知,仔細看了一下發現fcgi有新功能,是之前討論很久的unix socket 找了找官方文件,只有這一篇有提到相關的東西 經過測試,確實只要將範例的unix socket path改掉就可以用了 另外,因為是FilesMatch,所以”pic.jpg/index.php”這種路徑不會通過,可以避免cgi.fix_pathinfo的攻擊 目前使用起來還滿正常的,唯一要注意的是socket權限是不是正確,不然會無法和後端溝通。