發表文章

Python 基礎 語法筆記 (迴圈 - for loop) [ 二 ]

這篇是紀錄基本Python語法的紀錄,有了基本的基礎後續就能更快處理更多的事情。 Python的迴圈就和大多數的語言一樣 for 迴圈 for iterating_var in sequence: statements(s) 基本例子 用 for 迴圈把1~11給列印出來 for i in range ( 1 , 10 ): print (i) 印出來的結果會是, 0 1 2 3 4 5 6 7 8 9 10 範例二用for 迴圈,檢查有多少個相同字串 names = [ 'liou' , 'mary' , 'andy' , 'lisa' , 'lily' , 'jason' , 'liou' ] z = {} for n in names: if not n in z: z[n] = 0 z[n] += 1 print (z) 這時候就會印出 : {'liou': 2, 'mary': 1, 'andy': 1, 'lisa': 1, 'lily': 1, 'jason': 1} while 迴圈 while迴圈會一直執行到條件成立才結束 用while 算出1-10總和 (也就是while  迴圈會一直執行到 n = 10才停止) n = 1 sum = 0 while n <= 10 : # print(n) sum = sum + n n+= 1 print ( sum ) 印出來的會是 55

Python 基礎 語法筆記 (變數 註解) [ 一 ]

Python 基礎語法筆記 這篇是紀錄基本Python語法的紀錄,有了基本的基礎後續就能更快處理更多的事情。 在各種語言最重要的就是輸出內容,而Python的輸出非常簡單和 swift 語言一樣,即為print函式。例如print(' Hi ', ' My name is Terry') 變數 變數在程式語言中有儲存的功能,把資料存下來在需要時取出來使用。而在每個變數中都會有自己的型別,這跟 swift 語言是一樣的,這個型別可決定這個變數可以存什麼樣型態的變數。 而在Python常見的基本有: str(字串) int(整數) float(浮 點數) 在Python和swift一樣的地方還有,宣告變數的時候可以不用先給他型別,他會依照我們所給的初始值來判斷這變數是個什麼樣的型別。 a = 6 b = 1.833 d = 'hello python' e = True f = None print (a, b, , d, e) print ( type (a)) print ( type (b)) print ( type (d)) print ( type (e)) print (f) print ( isinstance (d, str )) 從上面這個範例裡可以看到基本的觀念 1.可以用 =   來給定變數初始值 2.可以從 type 這個函式和 print 來得知變數的型別 3.而在Python的空值的表示方法是 None  而在swift 則是nil 註解 這個不管在哪個語言中最常會使用的就是寫註解啦。 而在Python寫註解的方式就是在#後面的文字都會變成註解,跟swift的方式還是有所不同的。 # user information name = "Terry" age = 30 language = Chinese 使用者輸入資料 在app使用上還是Python的運用上都會有使用者輸入的資料環節這個時候就可以透過  input  這個函式來回傳外部所接受的訊息。 userInformation = input ( 'Terry' ) print ( 'Name is,...

MVC 模式 ( MVC基本架構 )

圖片
MVC 設計模式 (Model - view -controller)  這篇主要是關於這個MVC模式的筆記,也是最常看到的基本的設計模式。 而MVC(Model - view - controller) 這個架構主要分成三個部分(模型 視圖 控制) 主要是用來實現動態的程式設計,使後續修改和擴充簡化,並使部分程式碼可以重覆使用。而也透過這個模式對複雜度的簡化,以及結構更加直覺。 控制器 - 就如字面上的意思,負責進進行 轉發請求和請求處理 視圖 - 介面設計的部分 模型 - 編寫程式應有的功能(實現演算法),資料庫管理和資料庫設計(可以實現具體功能) 這個MVC模式主要的優點是,降低程式碼的耦合度。 而這個也是我自己接觸寫程式的時候第一個學習的模式... 以過去經驗來說在寫 發票 App的過程中,可以將程式碼分成這三個部分,   視圖 - 主要使用者會看到的畫面。 模型 - 就是關於兌獎發票所需要的各種功能,打api,拿資料,比對資料。 控制器 - 使用者點擊了什麼功能,要請求Model拿資料,然後轉發拿到的資料到View上去呈現給使用者。

關於 Python 學習

圖片
關於 Python來說,是一個高階語言。 高階語言,根據維基百開來講: 高 階語言(High-level programming language)是高度封裝了的程式語言,與低階語言相對。它是以人類的日常語言為基礎的一種編程語言,使用一般人易於接受的文字來表示,使程式編寫員編寫更容易,亦有較高的可讀性,以方便對電腦認知較淺的人亦可以大概明白其內容。 像現在常看到討論的程式語言多是高階語言,如C、C++、Python、Java等等,都是更易被大眾所理解,也可以容易地移植到不同的平台中使用,使開發成本跟學習難道亦大大降低。 那麼  Python 又是一個怎樣的程式語言? 根據維基百科來看: Python,是一種物件導向、直譯式的電腦程式語言。它包含了一組功能完備的標準庫,能夠輕鬆完成很多常見的任務。它的語法簡單,與其它大多數程式設計語言使用大括弧不一樣,它使用縮排來定義語句塊。 Python是完全物件導向的語言。函式、模組、數字、字串都是物件。並且完全支援繼承、重載、衍生、多重繼承,有益於增強原始碼的複用性。 這就跟我們之前 Blogger 所接觸的 Objective-c 和 Swift有類似的元素... 個人展望: 接下來希望在 Python 領域學習運用到的方向,這陣子收尋了關於 Python 學習的資料,理解到 Python 所運用的範圍可以很廣,而我希望能在學習玩耍過程中,在爬蟲數據和財經能有關聯。 最後,感謝網路上的各位前輩!因為有你們的付出,才能讓我們學習到關於 Python 的知識。 我將用工作之餘時間,在這個語言裡盡情玩耍學習分享。 學習資料:(在網路上看到學習到的資料,這個部分會一直新增) Runoob.com (Python 中文學習網站) 政治大學磨課師 (python 自學課程)

HTTP 協定

HTTP是網際網路上應用最廣泛的一種網路協定。 設計HTTP最初幕的士為了提供一種發布和接收HTML頁面的方法。 HTTP定義了八種方法: app 開發程用的是,GET 和 POST ,少部分用  PUT DELETE。 GET :向特定資源發出請求。           跟伺服器 要求資料回來 ,只適合傳少量資料。因為資料傳遞在網址上 POST:向指定資源送出資料 進行處理請求。            例如送出表單或者上傳檔案。資料被含在請求中。            POST 請求可能會導致新的資源的建立和既有資源的修改。          ( 通常用這個上傳檔案,比較適合傳完大量資料 ) 資料在傳輸過程中,資訊安全就顯得更加重要。 HTTPS 就是可以提供 HTTP 協定 SSL/TSL的加密保護。    註:TCP/UDP 網際網路基礎

[ iOS _ 筆記 ] GCD 多執行緒

GCD (Grand Central Dispatch)多執行緒     一種平行處理的機制,可以充分有效運用多核心的優勢,並減少記憶體使用。 執行效能也會比 NSThread 更好。     主要觀念是,Apple 把工作分成好幾個 queue,然後放進去裡面執行,因此也不用管有幾核心,系統會自動分配要如何執行,讓系統執行效率更好。(不用管有幾核心,讓系統自己處理)。     若自己寫的 dispatch queue 同等於背景的 Thread ,這時候不能碰 UI ,否則最造成問題。 因此要碰 UI 時要切回 main_queue 執行 。 同步執行: dispatch_sync() 使用同步執行時,Block 中的程式碼執行完畢後,原有的程式碼才會接下去繼續執行。 非同步執行: dispatch_async() 是異步執行 註記:影音串流,影音會解碼封包的順序性 因此會用到這種方式處理。

Swift - Category Extension

圖片
    在用 OC 寫App的時候,想要在現有的類別裡添加新的方法,又不想要用繼承的方式,那麼可以透過 Category 的方式來解決。     而在 Swift 中做到一樣的效果的時候,可以透過 Extension 的方式來達成。 例如:我要新增一個屬於我的顏色在 UIColor 裡面。 就可以透過 extension 一個屬於我的自訂顏色。 因此在 UIColor 中 就可以新增一個我們自訂的顏色。

iOS class 和 struct 的差異

這篇是整理一些 class 與  struck 差異文章,而且這個觀念在於面試時候也是一個特別喜歡問的問題。 而  class  與 struct 差異在哪裡,而我們會常看到所提出的點,大致是以下這三點:  struct 不能被繼承  struct 是 value type , class 是 reference type  struct 有 memberwise initializer   從下面一個例子來看 class A {     var number = 1 } var a = A () var b = a b . number = 2 這時候  a.number 和 b.number  都會是 2 當 var b = a 的這個時候是也將 a.number  也改變了 struct AA{     var number = 1 } var aa = AA () var bb = aa bb . number = 2 這個時候 aa.number 和 bb.number 個會是 1 和 2 而會有這個差異原因是, struct 是 value type 它不會去改變到其他值

[ iOS _ Swift 學習筆記 ] Dictionary 取值排序 (use Dictionary key value)

圖片
Swift DictionAry 取值排序 近期在開發專案的時候,遇到一個問題... 就是在取出 JSON 格式的物件時候,每一次取出來的時候是不會按照順序的, 因此在於資料的處理上就會變成,每次放的位置順序不一至。 所以在把拿到的 JSON 資料轉成物件存放記憶體後,再處理排序的問題。 解決方式是透過幫 Dictionary 排序來完成。 因此在快速 google 後參考了別人的文章後解決這個, Dictionary key 值排序的問題。 主要是透過以下這個方法  public func sorted(by areInIncreasingOrder: ((key: Key, value: value), (key: key, value: Value)) -> Bool ->[(key: Key, value: Value)] 這樣就能順利拿到排序好的  Dictionary 值了。 然後 Swift 3 和 Swift 4 的語法有變動。 因此在 firstKeyRealValue 和 second KeyRealValue   會和參考的文章有所不同。 參考資料來源 Developmnt of the app have a question. When i use JSON get objuct; Every time can't get same  order. So dispose data  first need get JSON data change objuct put in memory and  second solve order. But i get solve question means is use Dictionary. so i goole other people solve. Use Dictionary key value solve.  public func sorted(by areInIncreasingOrder: ((key: Key, value: value), (key: key, value: Value)) -> Bool ->[(ke...

iOS_開發 拿到 Tableview Cell 上的按鈕是哪一個 (Tableview Cell Button)

圖片
近期在開發 iOS App 時候使用到, tableview 而且在我的 tableview 上面會有 一個 Button 和一個 ImageView, 當我點選到圖案時會外跳出一個新的 ViewController 按下 Button 可以類似 加到我的最愛的功能。 這時候就是需要,去知道現在點到的是哪一個 tableview Cell,  一開始的想法是 透過 didSelectRowAt 來看到點選是哪一個 cell   (但這個是無法成功的) 因此在網路上查了資料。 學習到 可以透過 寫自己的 Protocol 來用自己的 delegate 來完成 首先開啟專案與一般的 tableview 一樣, 然後在 cellForRowAt 這個一個方法 要多添加一個 cell.delegate = self 然後再寫一個自己的  Protocol 這裡我們取名,SwiftTableViewDelegate, 這裡面有一個 func 來告訴我們按到哪一個 cell上的按鈕。 接下來在cell的那個 Class 裡面, 把 cell 按下去的按鈕 Action  添加我們剛才的 delegate 最後我們在這個 TableViewController 裡面添加這個自己的delegate 就可以透過這個自定義的方法拿到 目前點選到哪個cell 的 button  參考網頁: Swift: Using Protocols to Add Custom Behavior to a UITableViewCell

iOS _ 閉包 ( Closures )

圖片
Closures 的學習筆記 Closures 和 Function 的功能很相似,而從 Closures 就像似一個沒有名稱的 Function, 所以 Closures 可以定義一段程式碼,也可以接受參數和回傳資料。 然而以下是兩者之間的差異! 首先在 Apple Closures的語法是 { ( parameters ) -> ( return type)  in   ( statements ) } 從兩者的格式來看就能更清楚, Function func 方法名 (參數一,餐數二) -> 回傳值 {    程式碼區域  } Closures { (參數一, 參數二) -> 回傳值 in  程式碼區域 } 從這兩個格式來看, Function 把前面的方法名稱拿掉, 然後把參數和回傳型別拿到大括弧內 但 Closures 沒辦法像 Function 可以單獨定義, 因此必須指派為 變數 或是 常數 或 當作參數傳入 Function ( 將 Closures 指派為常數 ) ( 將 Closures 指派當做參數傳入 Function ,而這個也是最常看到的用法) 通常如果沒有重覆需要呼叫需求時 就 closures 來處理, 在執行方法後要立即執行其他事情時使用, ( 例如 網路下載資料後,去更新呈現的畫面內容 ) 以上是基本的 Closures 的 基本寫法。 接下來是 Closures 的簡寫,這個也是常常每個不同專案較長看到的。 當 Closures 是 Function 的最後一個參數的時候, 可以 移除 Function 中 Closures 的『 參數 』和『 冒號 』, 然後最後的『 小括號 』 移到前面 。 如同上面的是 簡寫 過的方式 birthday(month: 3, day: 1 ) { ( ) -> String in    return " Happy Birthday " }...

iOS 生命週期 ( iOS ViewController Life )

生命週期主要是以下幾個: viewDidLoad :  view被載入記憶體時候,但畫面未被顯示之前,就會呼叫viewDidLoad 這時候我們會在這個時候 override 方法來增加對 view 的初始化。 viewWillAppear: 這個方法是當在 view 將呈現在畫面,且還沒有任何動畫呈現在畫面上的時候被呼叫。 可透過 overriding 這個方法來執行與 view 關聯的自定義任務。 ( 例如: 透過這個 viewWillAppear 把 status bar 樣式方向或樣式改變,改變 status bar 將在 view 呈現的樣式) viewDidAppear: 這個是在viewWillAppear 後,即 view  載入 view controller 後,就會載入這個方法。 可以透過 overriding 這個方法來增加任務到已呈現的 view   viewWillDisappear: 當 view 被移除前,且動畫開始執行前所呼叫的。 這時候可以透過 overriding 這個方法來改變 view 的各種狀態。 (例如: 可以把改變的 status  bar 改回原來) viewDidDisappear: 當 view 被移除後。

iOS - UIView的 clipsToBounds 筆記

UIView 的  clipsToBounds 屬性 今天在專案看到 cliosToBounds 的這個屬性  self.taBar.clipsToBounds = true 這個 cliosToBounds 屬性是決定子視圖的範圍,而這個預設值是 true 假設: 有個圖是A為父類別 和 B是子類別,而子類別父類別圖還要大。 因此,也就是說當值為 true 的時候 子類別的視圖如果超過父類別的視圖的時候,會被裁切到和父類別一樣。 而如果設定是 false  時候,那麼子類別的視圖會不被父類別圖的影響呈現出來。

iOS - ScrollView的學習筆記

圖片
ScrollView的學習筆記 這個ScrollView的元件是到了公司後,因為需求關係而找資料來所學習的。 在用這個元件的時候的確很奇妙也摸索了一陣子,在找方法把它加到storyboard裡面。 看了很多參考資料,總結出一句最簡單的用法 就是 ScrollView 不用設定寬高,透過裡面的 View 的寬高來把它撐出來。 ScrollView在設置的時候,Constrain 只用設計貼齊螢幕而在寬高的部分不用進行設定,只需要透過裡面的view  設定高度 然後在 設定 scrollView 的寬與 view 的寬一樣。 這麼一來上面出現的紅色就可以解決了! 讓我們圖解來看一下 首先,我先把 ScrollView 放在畫面上然後依照需求來設定 ( 在於 ScrollView 的寬高不要去進行設定 ) 接下來把我們要的View放上去, 只需要設定高度就好(而這個高度就依照個人需求設置) 最後再把在把 ScrollView 設定與我們的View 同寬(Equal Widths),那麼出現的紅字出錯就會消失了。

Swift 字串的處理 _ strSample.characters.split (separator: )

圖片
把字串分拆,放入陣列 有個字串是 "25,09,37.8" 要把它分別拆開成為一個一個放入陣列的時後 可以透過 strSample.characters.split(separator: ",").map(String.init)  方式來分拆 let useString = "25,09,52.20" func useSample(strSample: String!) -> [String]{     let arrSample = strSample.characters.split(separator: ",").map(String.init)     return arrSample } print("change UseString \(useSample(strSample: useString))") 這時候就可以做其他相關運用了.....

IOS_Object-C 學習筆__ UITextField 限制文字框字數 ( Convert button text )

圖片
限制文字框字數 UITextField 的方法 想要的功能,限制文字框的字數! 如果想要使用者輸入帳號密碼且要在輸入的長度做限制。 最近剛有用到這個功能,起在網路上收尋的時候找到的資料,是可以限制字數! 但是與想要呈現的方式還是有些許不同,最後解決的方法如下。 首先要先把這個文字框的IBOutlet 給建立起來! 接下來我們會用到兩個方法來實現這個行為  - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string; -(void)textViewDidEndEditing:(UITextField *)textField; 接下來要在 viewDidLoad 上幫文字框做標記,  _useTextTwo.tag = 1;  _useText.tag = 2; 上把監聽器放上去!  接下來透過 shouldChangeCharactersInRange 這個方法來  來判斷目前使用者選到哪一個文字框和把輸入的文字給存起來  然後在透過 textViewDidEndEditing 這個方法來實踐,限制文字框字數的事情

IOS_Object-C 學習筆__ Button 按下後換 Button 文字 ( Convert button text )

圖片
Button 按下後換 Button 文字 ( Convert button text )       改變按鈕上呈現的文字內容,例如我們要按下按鈕後改變 Button 物件文字內容。 首先,要給這個按鈕拉 IBOutlet 傳遞要改變的內容和 IBAction 要執行的事情。             第二,透過設置布林值來判斷按鈕是否在被按下一次。    第三, setTitle 按下去後要呈現的文字。 //======= @interface ViewController () @property (weak, nonatomic) IBOutlet UIButton *textButton; @property (nonatomic, assign) BOOL buttonTouch; @end - (void)viewDidLoad {     [super viewDidLoad];     // Do any additional setup after loading the view, typically from a nib.     [_textButton setTitle:@"按一下" forState:UIControlStateNormal]; } - (IBAction)oi:(id)sender {     self.buttonTouch = !self.buttonTouch;     if (self.buttonTouch ) {         [_textButton setTitle:@"再按一下" forState:UIControlStateNormal];     }else{         [_textButton setTitle:@"按一下" forState:UIControlStateN...

IOS_Object-C 學習筆__ NSString 轉換成 NSData ( Convert NSString to NSData )

圖片
如何把一個字串的格式內容   如何把一個字串格式內容, 轉換成時間的格式!   從這個範例來看,先初始化我們要用的物件   然後在設定它的格式   接下來透過 dateFromString 來把要轉換的字串帶進去   這樣就能把文字轉換成 Date 的格式 Convert NSString to NSData  Change NSString type to NSData!  First need initialized object use NSDateFormatter.  Second setting data format.  Third use "dateFromString" change the NSString type. //=====================//     NSString *dateStr = @"2017-8-3";      //sample1       NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];     [dateFormat setDateFormat:@"YY-MM-dd"];     NSDate *date = [dateFormat dateFromString:dateStr];     NSLog(@"dateFormat1 :%@",date); //sample2     [dateFormat setDateFormat:@"MM-dd-YYYY"];     NSString* temp = [dateFormat stringFromDate:date];       NSLog(@"dateFormat2 :%@",temp); //sample3     NSString *Date = ...

IOS_Object-C 學習筆__ 日期時間處理使用 (NSDate)

圖片
日期時間處理使用 (NSDate) 使用方式 NSDate 物件是表示特定的時間點。而且這裡面記錄的時間是自2001/01/01 以來的時間, 時區是GTM+0 。 因此取得目前的時間方式可以透過 NSDate 來得到!  NSDate *today = [NSDate date];  NSLog(@"  拿到的時間是 :  %@",today); 而在模擬器跑出來的結果是 拿到的時間是 :  2017-07-24 10:18:48 +0000 後面這個 +0000 ,的意思是用GCM+0 的時區來列印的,因為這個是美國時間!而在台灣的我們時區是  GMT+8 ,所以如果是要印出台灣的時間,就要先作轉換!! 因此可以透過以下兩種方式來轉換! 1. 用  NSDateFormatter 直接轉換 2. 用   setLocale  和  setTimeZone   時區位置和哪個城市的時間 第一種方式:    //透過 NSDateFormatter 來轉換成台灣時區     NSDateFormatter *taiwan = [[NSDateFormatter alloc] init];     [taiwan setDateStyle:NSDateFormatterShortStyle];     //印出年月日     [taiwan setTimeStyle:NSDateFormatterMediumStyle];    //印出台灣時間     NSString *taiwanTime = [taiwan stringFromDate:today];     NSLog(@" 台灣的時間是 : %@",taiwanTime); 第二種方式:   //不管位置如何,只限定台灣時區   // setup date format     NSDateFormatter *formatter...

IOS_Object-C 學習筆記__Navigation Controller 用程式碼 完成

圖片
Navigation Controller 用程式碼 完成 註記:在NavigationController上的按鈕是  UIBarButtonItem 用程式碼完成NavigationConTroller設定! 到ViewController畫面後 ,我們可以依序設定 Title ,Button   透過幾行程式碼,就可以完成設定