發表文章

目前顯示的是 10月, 2016的文章

Angular 2 with Third Party files

來紀錄一下最近遇到的一些小問題 用新的工具就是踩坑加上撞牆 對於在typescript上面使用外部的模組就是會有許許多多的狀況以及需要適應的地方 拿剛剛做的小東西來說明好了 import { Component , OnInit , ElementRef , Inject , AfterViewInit } from '@angular/core' ; declare let jQuery : any ; @ Component ({ ... }) export class test implements OnInit , AfterViewInit { elementRef : ElementRef ; logs = new Array(); constructor ( @ Inject ( ElementRef ) elementRef : ElementRef ) { this . elementRef = elementRef ; } ngOnInit() { let $button = jQuery ( this . elementRef . nativeElement ). find ( ".btn" ); $button . click (() => { let log = jQuery ( this ). attr ( 'log' ); ... logPush ( log ); function logPush ( log ){ this . logs . push ( log ); } }) } } 這只是一個簡易的示範使用jquery來實做button當被點擊到的時候進行處理 當然在ng2有提供(click)="onClick()&

AngularJS $http 同步處理

今天在修改angularjs踩到顆地雷 主要是因為以下的code function init () { $scope . item . list = getList (); } function getList () { var items = new Array(); $http . get ( URL ). then ( function ( data ) { items = data ; }, function ( res ) { items = [{ "error" : "queryFailed" }] }); return items ; } 這樣在console.log叫出來看,$scopr.item.list會變成 [] 中間沒有東西 原因是在呼叫函式後,$http做的是Ajax的動作,他要去從遠端把資料拉出來 可是問題是這樣的傳輸需要時間,結果在傳輸狀態下return先被啟用了 花了有點長的時間去查詢解決辦法 我之前就有發生過這樣的問題,然後用callback解決掉,可是這樣搞總不是辦法,而且也不是我要的東西 後來採用了promise以及宣告的順序解決掉這個問題 這個例子中就是模仿我專案的情況,首先先開始init的function再進行getList的請求 執行後$scopr.item.list就會出錯 於是我將它改成以下的方式 function pre (){ getList (). then ( function ( data ){ onInit ( data ) }); } function onInit ( items ) { $scope . item . list = getList (); } function getList () { var items = new Array(); var deferred = $q . defer (); $http . get ( URL

TypeScript

開始用typescript做開發了((目前還是先練習當中 使用情況還算OK,不過對於裝飾器(decorator)的東西,我不是很熟悉可能還要再多練習 Definition files也是還沒有開始動手寫過 目前大概都是非常前面的那種HelloWorld等級的東西 宣告部分來說大概類似底下的 let a: number = 1 ; let b: string = "helloworld" ; function部份為了回傳值,也是更進化了 function returnNumber (i: number ) : number { return i ; } function returnString(str: string ) : string { return str; } 也添加了class的應用,我記得ES6才會有支援 class test{ private m_a: string ; b: number ; constructor (q: string ){ this .m_a = "Hello" + q; this .b = 50 ; } returnA() : string { return this .m_a + this .b; } } let a = new test( "world" ); console.log(a.returnA()); 也添加了很多新概念進去,比原本的JS應該是可以讓其結構更清楚了一些 要不然全程用function+closure做類的處理...做的時候我會真的會回頭看不懂我寫啥鬼... Reference : https://blogs.msdn.microsoft.com/ericsk/2012/10/01/typescript/ https://www.gitbook.com/book/zhongsp/typescript-handbook/details

Ubuntu Xwindow 再啟動

無言到爆炸,之前就有發生過我還一直忘記怎樣處理 以下是情況發生 打算要把滑鼠加速用掉,結果重新啟動竟然無法進入圖形界面了 檢查log cat /var/log/Xorg.0.log 發現是剛剛滑鼠加速的文件錯誤導致xwindows崩潰再起不能 OK remove之後再重啟一遍,這下又有情況發生 登入界面資訊正確卻又一直重複登入 還好之前有發生過 檢查一下確認是home底下的.Xauthority 的權限出問題 ctrl+alt+f1進入terminal把home底下的.Xauthority 刪除掉讓它重新自建一個 sudo rm -f .Xauthoruty 成功登入! 媽呀...真的有種一不小心它就會說掰掰給我看啊...

Ubuntu 16.04 install on asus bx310 紀錄

圖片
紀錄一下一些在ubuntu當中使用到的一些指令和工具,以及安裝ubuntu 的過程 使用機器 ASUS BX310 core-i5 6200u, Ubuntu 16.04 這台一開始就有256G SSD + 1T HDD 我從HDD切了500G來裝ubuntu((好像有點多... 一開始要先將Ubuntu燒成USB 開機碟 例如說Rufus Asus的bios沒有預設usb boot on的模式 所以我從Win10下手 Win10 > 設定 > 更新與安全性 > 復原  > 進階重新啟動 > 立即重新啟動 usb在點選之前就要先插在機器上, 然後點選usb開機的選項, 這樣就可以使用usb開機了 如果要從bios啟用,就要先create option把usb的path設定進去,不過這部份不熟我沒有用~ 接下來選擇語言及一些有的沒的,我語言界面全程使用英文避免以後會有問題出現,有些程式編碼不吃中文+空格就會很麻煩... 到這邊選擇Something else如果選擇了windows boot manager聽說會有問題,不過我都切了就沒有必要啦 接下來會到選擇disk的部份在freespace的地方切一個swap出來 大小我用8192MB 剩下的space就是根目錄安裝啦 >> 點選freespace兩下可以選擇詳細對這空間做什麼指令, 最底下有個Mount Point,如果對它做更為細緻的調整就在那邊進行,我只有切swap 和根目錄(就是一個/的符號)的設定 接下來也是在硬碟設定那邊最下面有個device for bootloader 的選項  我這台的HDD竟然是在sda, windows bootloader在sdb....... 選項選取sda不要選到sda1 2 3之類的,來建立開機選項,這樣就可以install now了 安裝完畢後因為我這台跟16.04用的linux kernel 4.4有點不合,用沒多久滑鼠鍵盤沒有反應,似乎xwindow哪邊crash了... 幸好主管即時救援, 發現了也有些人會出現同樣問題, 升級了linux kernel到4.7後就沒有問題了 OK, 立刻求救google大神 how to update linux k