賈伯斯:極度聰明的人都有一個特徵
學生時代會唸書的人,出社會後在真實世界未必能吃得開。如果成績不足以證明一個人的聰明才智,那世界上最成功的人怎麼看?
亞馬遜的貝佐斯尋求不拘一格的創意,特斯拉的馬斯克重視驗證想法的能力勝過學位,蘋果狂人賈伯斯也有不同的想法。
已故蘋果共同創辦人賈伯斯,1982年曾在美國成就學院(Academy of Achievement)定義所謂「真正的智慧」。
在賈伯斯眼中,要顯露真正的智慧,關鍵不是專精單一領域的專業知識,而是能以意想不到的方式結合不同領域的能力。
賈伯斯當時說:「聰明很大一部分在於縱觀全局,就像你能夠從 80 樓俯瞰一整座城市的全貌。其他人只是看著那些小笨地圖,想著該怎麼從 A 點到 B 點的時候,在你眼前一覽無遺。你可以看穿一切。」
那麼問題來了,你該怎麼培養能力,擁有洞察局勢的鷹眼?
賈伯斯的回答是,你要做個知識上的雜食動物,以獨一無二、難以預料的方式去探索世界。
賈伯斯表示:「你必不能與其他人擁有相同的經歷,否則你與他人的想法如出一轍,就沒辦法創新。」
「你可能會考慮去巴黎當個幾年詩人,或者去一趟第三世界國家,我高度推薦。或者一次戀上兩個人也行。華特迪士尼是嗑迷幻藥。」
註定毀滅的愛情或迷幻藥可能不是你的菜,重點是你要想辦法培養出能結合看似無關專業領域的能力,磨練你的洞察力,用更寬廣的視野去解決問題。
賈伯斯的想法很合邏輯,如果你跟周遭所有人的興趣都一樣,就很難替你的工作帶來嶄新的觀點。不過很多人在職場工作愈久,就愈淡忘這件事,只聚焦在磨練主專業領域的能力,放棄那些「漫無目的」的思索,但單一的興趣只會限制你的知識與創造力。有時候你會發現,一開始害你走神分心的東西,最後卻能帶你從截然不同的角度思考。
科學也支持賈伯斯的看法,數項研究發現,心理學家稱為「開放性」的人格特質,與優異的大腦之間密切相關。
1960年代,科學家抓來一群天才,把他們關起來,研究他們是否具有同樣的特質。結果發現,不論是詩人、企業家還是科學家,每個成就非凡的人,都對新點子與新的經驗態度非常開放。
另一項較近期的研究顯示,對新想法與新體驗抱有高度興趣的特質,不但展現在非常聰明的年輕人身上,也能協助老人對抗心智衰退。
全球下載量破億的APP公司,竟藏身台南
https://today.line.me/tw/v2/article/NGy0j1?utm_source=lineshare
公司總部、研發都在台南,最大好處就是團隊超級穩定。台北雖然人才充沛,但流動率也高,新創公司難與大企業搶人,反不如在台南相對穩定。
團隊穩定,意味著人員不用重新訓練,營運效能可以不斷提升。蘇柏州說,「這群人會推著你,讓你可以去做更大、更困難的事。」
凱鈿從台南吃到美、歐用戶
同樣經營軟體服務市場的區塊鏈新創 BiiLabs 創辦人朱宜振則觀察,凱鈿一開始就選定最能跨國界的工具型軟體,走海外市場,甚至建海外團隊,是最聰明的一點。
凱鈿創業至今一直以美歐用戶為大宗,目前美國營收佔比40%,仍是最大市場,其次是歐洲25%、中國20%、日本5%,以及其它地區佔10%。
能吃到美、歐市場,關鍵在於凱鈿的App,看起來、用起來,就像是個不折不扣的英語原生產品。
「我們行銷手法一切以西方為背景做思考,」人在美國的凱鈿行銷副總王爲中也越洋告訴《天下》。
凱鈿一開始就把市場重點放在英語世界,官網最早甚至只有英文版,宣傳也是全英文。就算到現在歷經多次改版,但王爲中強調,英文網站仍「看起來就像間普通美國公司,這很關鍵。」
王爲中長期坐鎮美國賓州,在當地招聘外籍行銷團隊,仿效國外科技新創,主動經營 reddit、quora 等美國的知識和技術論壇,讓用戶評價從技術宅的圈子開始擴散。
除了行銷宣傳,更重要是第一手取得用戶反饋,再回饋產品團隊進行優化,讓App使用介面越來越像英語原生。
台灣繁體與香港繁體的差別
香港繁體和台灣繁體99%都是一樣的,那1%的不同主要表現在一些字的寫法上。
另外,港澳繁體是一樣的。
https://kknews.cc/zh-tw/other/pknv42e.html
https://zh.wikipedia.org/wiki/%E7%B9%81%E4%BD%93%E5%AD%97
台灣繁體 - 香港繁體
峰 - 峯
群 - 羣
為 - 爲
只有 - 衹有
夢裡 - 夢裏
米線 - 米綫
鉤子 - 鈎子
啟發 - 啓發
麵 - 麪
衛 - 衞
著 - 着
說 - 説
銳 - 鋭
閱 - 閲
醞 - 醖
| 原文 | 中國大陸 | 香港、澳門 | 臺灣 |
|---|---|---|---|
| information | 信息 | 資訊 | 資訊 |
| ballpoint pen | 圆珠笔 | 原子筆 | 原子筆 |
| calculator | 计算器 | 計數機 | 計算機 |
| hard disk | 硬盘 | 硬碟 | 硬碟 |
| video | 视频 | 影片 | 影片 |
| Michael Jordan | 迈克尔·乔丹 | 米高·佐敦 | 麥可·喬登(喬丹) |
| software | 软件 | 軟件 | 軟體 |
| Optical disc | 光盘 | 光碟 | 光碟 |
| The Matrix | 《黑客帝国》 | 《廿二世紀殺人網絡》 | 《駭客任務》 |
| Titanic | 《泰坦尼克号》 | 《鐵達尼號》 | 《鐵達尼號》 |
| ウルトラマン | 《奥特曼》 | 《超人吉田》 | 《超人力霸王》 |
| 仮面ライダー | 《假面骑士》 | 《幪面超人》 | 《假面騎士》 |
| カードキャプターさくら | 《魔卡少女樱》 | 《百變小櫻》 | 《庫洛魔法使》 |
| ブリーチ | 《境·界》 | 《漂靈》 | 《死神》 |
| ガンダム | 敢达 | 高達 | 鋼彈 |
| ベジータ | 贝吉塔 | 比達 | 達爾 |
iOS 開發:國際化、多語化
https://www.itread01.com/content/1549666469.html
https://kennc.github.io/2020/ios-localization/
開啟專案的國際化選項會有一個開關 Use Base Internationlization,在 Localizable.strings 中也會有 (Base) 檔案。許多人很自以為是地以為 Base 的意思是如果專案並沒有對某個語言做國際化,那麼就使用 Base 語言,然而事實並非是這樣的,實際上 Base Internationlization 是為 xib 和storyboard 服務的。
那麼iOS系統中語言選取的原則究竟是什麼呢?
舉個例子:假設一個應用使用的開發語言 (development language) 是英語,同時對法語、日語、阿拉伯語做了國際化。然而用戶的系統語言設定的是中文,那麼開啟應用會顯示什麼語言呢?
答案是根據用戶系統的首選語言列表而定,在系統設定-語言設定的介面,有一欄列表叫做首選語言列表,假設用戶當前系統語言是中文,但是之前一次選擇過阿拉伯文為系統語言,那麼這種情況下,該應用將會顯示阿拉伯文。
iOS 對應用語言的判定遵循的原則是:
1. 檢視應用是否針對系統語言做國際化,如有,選擇系統語言
2. 遍歷系統的首選語言,如果存在對首選語言做國際化,選擇該首選語言
3. 全部沒有的情況下使用 development language
設定好要顯示在不同語系的字串
格式固定是 Key = String,實作上這部分會是最花時間的,因為要把專案裡所有的文字都取一個Key 抽出來。
Key 沒有固定格式,一般會使用畫面做分類,用底線拆開單字,全大寫或全小寫。
這裡 Key 的命名有點小技巧,建議以畫面+元件+功能,比如:loginVC_login_button_login = "登入",這樣的命名可以幫助理解。
保證 UILabel 和 UITextField 等完美適應不同語言的不同長度
- 利用 AutoLayout 讓 UILabel 根據內容自適應長度
- 如果對 UILabel 或者 UITextField 有硬性的 MaxWidth 設定,達到了最大寬度但是無法顯示全,可以採用 AutoShrink 的方案。
針對 UILabel 可以在 xib 或者 storyboard 中設定 AutoShrink 屬性,該屬性的作用是如果 Label 內容顯示不下,使用何種策略來適應,
iOS 提供了多種選項,包括按比例縮放、最小字型、減小字間距。當然在程式碼中可以統一設定 UILabel 的 adjustsFontSizeToFitWidth、minimumScaleFactor、allowsDefaultTighteningForTruncation 等屬性,這些屬性預設都是 NO。
針對 UITextField,也有一個 Min Font Size 的屬性可以調整
- 配合 Pseudolocalizations 提早發現介面溢位的問題
- 特別需要注意的地方可以提前跟翻譯人員說明,控制字元長度
讓你的應用適配不同的佈局方向,將是個大坑
簡單說就是語系分為「從右到左」或「從左到右」,
若需要同時支援兩類語系,將會有許多眉眉角角需要處理。
如果需要手動獲取系統語言和地區環境,得留意當 iOS 改版時,取值的方法可能會改
當初 iOS 9 剛出來時,微博、微信等應用(這些應用都有一個共同的特點:可以在應用內手動設定系統語言)都出現了語言錯亂的問題,問題的根源就是 iOS 9 中取值的方法改變了。
在 iOS 9 以前,如果當前語言版本是英文,那就是 en,阿拉伯文就是 ar,中文就是 zh-Hans,
然而在 iOS 9 中,假設當前語言是簡體中文,當前地區是埃及,取出來的值就是:zh-Hans-EG,在 iOS 9 新的 API 中,同一個方法返回的引數會帶上地區的字尾。
所以原先對語言的判斷就不能單單 isEquasToString 了,起碼要使用 hasPrefix 方法或者做一下split。
罕見!央行對黃金長期投資示警
央行理監事會議的相關資料,今(2020 Sep 17)日首度見到央行對黃金投資示警。
央行總裁楊金龍提醒民眾,投資黃金應注意風險,他認為,長期投資的人,投資黃金不見得是最好選擇,只有很短期的人可能投資黃金是好的,但是波動度非常大。
央行特別對黃金走勢做了研究,比較黃金、美國投資級公司債,以及S&P500指數的總報酬。發現從1989年1月到今年8月底,黃金的長期投資年報酬率只有5.1%,報酬率波動度達15.2%,在四大類中,報酬率最低且波動度最高。
換算每單位風險得到的報酬率,黃金只有0.3%,遠低於美國公債的1.4%、美元投資級公司債的1.3%,以及S&P500指數的0.7%。
央行表示,持有黃金不會產生利息,投資報酬只能靠資本利得,近年來雖然報酬率亮眼,但長期報酬率不是最好,且不管長期或短期,黃金的報酬率波動度明顯高於其他資產類別,每單位的投資風險所換得的報酬率偏低。
Google Cloud Platform (GCP):主機類型之效能比較
使用 Wakacoin 開源碼 (20200927 釋出的版本) 測試,
區塊高度大約在 22,000 的情況,
運算速度的參數設定在未全速運轉的情況,
然後以相同的執行檔,在不同類型、相同地區的 GCP 主機上運作,
得到資料如下:
n1-standard-1 (1 個 vCPU,3.75 GB 記憶體)
n1-standard-1 (1 個 vCPU,3.75 GB 記憶體)
iOS 開發:UItabBarController 和 UINavigationController 混合使用
https://segmentfault.com/a/1190000010432191
当app中有多个控制器的时候,就需要对这些控制器进行管理,用一个控制器去管理其他多个控制器;如图所示:
IOS UIView 提供了两个特殊的控制器,UINavigationController和UITabBarController去管理其它控制器。
本文以下面的一个简单例子加以说明基本用法:
UIWindow 和 UIViewController 的基本内容
新建一个 Single View Application 工程,在iOS应用中,每个程序得main函数中都调用了UIApplicationMain函数。
#import <UIKit/UIKit.h>
#import "AppDelegate.h"
int main(int argc, char * argv[]) {
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}先来看看UIApplicationMain函数的原型:
UIKIT_EXTERN int UIApplicationMain(
int argc,
char *argv[],
NSString * __nullable principalClassName,
NSString * __nullable delegateClassName
);前面的argc和argv是ISO C标准的main函数的参数,直接传递给UIApplicationMain进行相关处理,principalClassName是应用程序类的名字,该类必须继承自UIApplication类,而delegateClassName是应用程序类的代理类。如果主要nib文件(在info.plist文件中指定,key是NSMainNibFile)存在,就会在nib文件对象里寻找Application对象和连接它的delegate。此函数会根据principalClassName创建UIApplication对象,然后根据delegateClassName创建一个delegate对象,并将UIApplication对象中的delegate属性设置为delegate对象,接着会建立应用的main runloop,进行事件的处理,首先调用application:didFinishLaunchingWithOptions。程序正常退出时才返回(如今iOS支持后台运行,系统在必要时会强行杀死不用的进程,一般这个函数不等返回进程就终止了)。
// 程序启动完成调用
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// 创建Window
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// 设置Window的背景颜色
self.window.backgroundColor = [UIColor whiteColor];
// 设置根控制器
ViewController *vc = [[ViewController alloc] init];
self.window.rootViewController = vc;
// 设置并显示主窗口
[self.window makeKeyAndVisible];
return YES;
}UIWindow是一种特殊的UIView,通常在一个应用中只会有一个UIWindow。在ios程序启动完成后,建立的第一个视图控件就是UIWindow,接着创建一个控制器的View,最后将控制器的View添加到UIWindow上,于是控制器的View就是显示到屏幕上了。一个ios程序之所以能显示在屏幕上,完全是因为它有UIWindow,也就是说没有UIWindow就看不到任何UI界面。
控制器的创建:
UIViewController *vc = [UIViewController alloc] init];可以用isViewLoaded方法判断一个UIViewController的view是否已经被加载;控制器的view加载完毕就会调用viewDidLoad方法。
将view添加到UIWindow:
- 直接将view添加到UIWindow中,并不理会view对应的控制器。
- (void)addSubView:(UIView *)view;- 通过设置根控制器,自动将rootViewController的view添加到UIWindow中,负责管理rootViewController的生命周期。
@property(nonatomic,retain) UIViewController *rootViewController;获取 RootViewController:
第一种方法:
UIWindow *window = [UIApplication sharedApplication].keyWindow;
UIViewController *rootViewController = window.rootViewController;第二种方法:
AppDelegate *appdelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
UIViewController *rootViewController = appdelegate.window.rootViewController;UINavigationController 和 UITabBarController 的基本内容
UINavigationController以栈的形式保存子控制器,使用push方法能将某个控制器压入栈,使用pop方法可以移除栈顶控制器。
打开 ViewController 的方式:
- (void)pushViewController:(UIViewController*)viewController animated:(BOOL)animated;三种移除 ViewController 的方式:
将栈顶的控制器移除
- (UIViewController*)popViewControllerAnimated:(BOOL)animated;
回到指定的子控制器
- (NSArray*)popToViewController:(UIViewController*)viewController animated:(BOOL)animated;
回到根控制器(栈底控制器)
- (NSArray*)popToRootViewControllerAnimated:(BOOL)animated;初始化UINavigationController:
方法一:
UINavigationController *nv = [[UINavigationController alloc] init]; 方法二:
UINavigationController *nv = [[UINavigationController alloc] initWithRootViewController:rootViewController];UITabBarController和UINavigationController类似,UITabBarController也可以轻松地管理多个控制器,轻松完成控制器之间的切换,典型的例子就是QQ、微信等应⽤。但是UITabBarController其管理的视图一直存在,而UINavigationController在pop后会销毁掉,释放内存。UITabBarController通常作为整个程序的rootViewController,而且不能添加到别的container viewController中。
UITabBarController的使用步骤:
- 初始化UITabBarController
- 创建子控制器(viewcontroller)
- 把子控制器添加到UITabBarController
- 设置UIWindow的rootViewController为UITabBarController
将子控制器添加到UITabBarController:
方法一:添加单个子控制器
- (void)addChildViewController:(UIViewController*)childController;方法二:添加多个子控制器
view.viewControllers = NSArray *childController;UITabBarController中嵌套UINavigationController:
上方截圖來源為下列課程影片 (9:50):
課程中,講師比較推薦使用 UITabBarController 中嵌套 UINavigationController 這個模式。
UINavigationController中嵌套UITabBarController:
项目实战
将UITabBarController的逻辑提取到一个独立的ViewController中。可以新建一个继承于UITabBarController的ViewController。
AppDelegate.m:
// 程序启动完成调用
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// 创建Window
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// 设置Window的背景颜色
self.window.backgroundColor = [UIColor whiteColor];
// 设置根控制器
ViewController *vc = [[ViewController alloc] init];
self.window.rootViewController = vc;
// 设置并显示主窗口
[self.window makeKeyAndVisible];
return YES;
}ViewController.h:
@interface ViewController : UITabBarController
@endViewController.m:
- (void)viewDidLoad {
[super viewDidLoad];
// 创建子控制器
HomeViewController *homeVC=[[HomeViewController alloc] init];
[self setTabBarItem:homeVC.tabBarItem
title:@"首页"
titleSize:13.0
titleFontName:@"HeiTi SC"
selectedImage:@"i_tab_home_selected"
selectedTitleColor:[UIColor redColor]
normalImage:@"i_tab_home_normal"
normalTitleColor:[UIColor grayColor]];
BlogViewController *blogVC=[[BlogViewController alloc] init];
[self setTabBarItem:blogVC.tabBarItem
title:@"博文"
titleSize:13.0
titleFontName:@"HeiTi SC"
selectedImage:@"i_tab_blog_selected"
selectedTitleColor:[UIColor redColor]
normalImage:@"i_tab_blog_normal"
normalTitleColor:[UIColor grayColor]];
UINavigationController *homeNV = [[UINavigationController alloc] initWithRootViewController:homeVC];
UINavigationController *blogNV = [[UINavigationController alloc] initWithRootViewController:blogVC];
// 把子控制器添加到UITabBarController
self.viewControllers = @[homeNV, blogNV];
}我们通常需要对tabBarItem进行设置,可以封装一个setTabBarItem方法,只需要进行简单的配置即可。
- (void)setTabBarItem:(UITabBarItem *)tabbarItem
title:(NSString *)title
titleSize:(CGFloat)size
titleFontName:(NSString *)fontName
selectedImage:(NSString *)selectedImage
selectedTitleColor:(UIColor *)selectColor
normalImage:(NSString *)unselectedImage
normalTitleColor:(UIColor *)unselectColor
{
//设置图片
tabbarItem = [tabbarItem initWithTitle:title image:[[UIImage imageNamed:unselectedImage]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] selectedImage:[[UIImage imageNamed:selectedImage]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]];
// S未选中字体颜色
[[UITabBarItem appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName:unselectColor,NSFontAttributeName:[UIFont fontWithName:fontName size:size]} forState:UIControlStateNormal];
// 选中字体颜色
[[UITabBarItem appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName:selectColor,NSFontAttributeName:[UIFont fontWithName:fontName size:size]} forState:UIControlStateSelected];
}然后对每个子ViewController进行自定义即可,如BlogViewController.h可以这样写:
- (void)viewDidLoad {
[super viewDidLoad];
UIButton *helloBtn = [[UIButton alloc] initWithFrame:CGRectMake(100, 100, SCREEN_WIDTH - 200, 50)];
helloBtn.backgroundColor = [UIColor redColor];
[helloBtn setTitle:@"hello world" forState:UIControlStateNormal];
[helloBtn addTarget:self action:@selector(showToast) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:helloBtn];
}
- (void)showToast{
// 打开新ViewController
BlogDetailViewController *blogDetail = [[BlogDetailViewController alloc] init];
blogDetail.hidesBottomBarWhenPushed=YES;
[self.navigationController pushViewController:blogDetail animated:YES];
}
一個 App 值多少錢?用什麼方式保護智財權最划算?
http://www.naipo.com/Portals/1/web_tw/Knowledge_Center/Industry_Economy/publish-193.htm
著作權保護
美國版權局(The U.S. Copyright Office)將電腦軟體定義為文創作品(literary work),表示新電腦程式的原創者會受到著作權法的保護,而且,當一個創作者完成一項電腦程式的創作時,他便會自動取得作品的著作權。換句話說,一個軟體創作者只要是第一個把軟體創作出來的人,他不需要額外做什麼事便可自動獲得作品的著作權。
不過,美國版權局也允許原創者註冊登記他的著作權。註冊登記著作權的好處是可以取得官方的公開紀錄,在發生著作權糾紛或是侵權訴訟時,這便會成為一項強而有力的武器。一旦發生侵權糾紛時,被侵權人必須證明(1)自己為著作權所有人,如果曾經註冊登記的話,這就是強而有力的證明;(2)被侵權人作品中受保護的原素被抄襲。如果被侵權人在作品完成時並沒有註冊登記著作權,他便必須提出其他證據來證明他是原創者,如草稿、研發日記、創作筆記等等,相當耗時費力。因此,註冊登記著作權可以讓原創者更容易捍衛他的作品,減低被抄襲的風險。
美國版權局提供了線上註冊登記著作權的服務,電腦軟體的創作者可以透過eCO Online System來註冊登記著作權,只需要申請一個帳號、填寫一些申請表格後,即可連同35美元的申請費用一起遞交。
智慧型手機APP也屬於軟體的一種,因此,也可以申請著作權保護。由於註冊登記著作權的費用相對的低廉,而且年限很長,因此,建議APP的開發者都應該將其原創作品註冊登記著作權。其他地區如中國大陸的版權局、台灣智慧財產局等等,電腦程式亦是納入著作權的保護範圍,接受原創者註冊登記著作權的。
商標保護
早在2013年2月,推出極受歡迎遊戲Candy Crush Saga APP的King公司,為不同的產品(從浴帽到電子遊戲都有)提出了單字「Candy」的商標申請;在2014年1月15日,美國專利商標局批準了這項申請,不過,仍須經過30天的公告期,如無異議或是被要求延長公告期,King公司才能正式擁有此商標。此外,King公司同時也取得了「Candy」在英國地區電動遊戲類產品的商標權。另一方面,蘋果公司已代表King公司發信給一些在APP Store上架的APP遊戲應用程式開發商,表示如果他們的APP含有「Candy」字樣的話,可能需要改名,否則會引起侵權訴訟。不過,此舉引起許多軟體開發商的不滿,甚至推出一個名為「Candy Jam」的網站,刻意在網站上推出許多使用多個「Candy」字樣,以及「scroll」、「saga」、「apple」、「edge」字樣的遊戲。他們不滿的原因很簡單:因為他們認為將普通常用字申請作為商標是很荒謬的。
雖然「Candy」商標的爭議很多,但卻是有前例可循的,USPTO在2010年1月5日就公告了蘋果公司的「APP STORE」商標(77525433),但在公告後因有爭議,故目前仍是懸而未決的狀態。
雖然「Candy」的商標仍未塵埃落定,但King的IP策略卻給了我們很好的啟示:如果你認為你的APP的名稱或是標示有強烈的識別效果,用商標保護是一個不錯的選擇,除了成本較低外,也可以在比較短的時間內取得;同時也可以降低被競爭對手魚目混珠或是搭便車的風險。
專利保護
智慧型手機APP是軟體的一種,受著作權保護,但同時也可以申請專利。由於目前沒有軟體專利的項目,所以申請專利時就得在發明專利或是設計專利中擇一申請(當然也可同時申請),端視保護的目標而定。設計專利主要是以外觀為主,所以適用於保護一些使用者介面或是圖示等,而發明專利則主要是技術上的創新。如果要為一個APP申請發明專利,必須要把它視為一個「處理過程」(Process)或是方法 (Method)來保護,當然,專利三要件(產業利用性、新穎性與進步性)也不能忽略。
舉個簡單的例子,以Angry Bird為例,如果要保護不同種類的憤怒鳥及豬的外觀造型不被抄襲,可以考慮以外觀設計(或是商標)來保護,但如果要保護憤怒鳥攻擊豬的方式或是過程,則應考慮發明專利。
究竟什麼樣的APP應該申請專利保護呢?以下有幾點建議可供參考:
- 該APP所包含的核心技術會被採用超過3年以上;
- 基於該APP的核心技術,會繼續研發系列相關產品;
- 該APP之核心技術可應用在廣泛的領域;
- 有大量的競爭者在其APP產品上採用此核心技術,或是在此技術基礎上加以研發改良,再應用在自家APP產品上。
最後,值得一提的是,以上提到的智財權保護策略不是單純擇一而行的,有時候可以循序漸進,從著作權到專利保護,分段進行;也可於同一時間同時並進,給予產品最周延的保護。
Google Cloud (GCP):Compute Engine 擴大硬碟空間
https://snippetinfo.net/mobile/media/2770
執行之前先備份、製作快照
官方文件與參考文件交互參照,理解後再進行操作。
整理後結論:
(1) 先在網頁 UI 操作,加大硬碟容量
再進入 CLI 下指令
(2) 如果需要在 CentOS 服务器上安装 growpart,运行:
(新的實例可能尚未安裝 growpart)
$ sudo yum -y install cloud-utils-growpart
(3) 使用 df -kh, df -Th, lsblk 這 3 個 CLI 指令
查看硬碟掛載的編號、確認結果等
(4) 擴大分割區
比如說
$ sudo growpart /dev/sda 1
sda 跟 1 之間要有空格
sda 是指 設備 ID
1 這個編號 是 該設備的分區號
實際上的編號要透過上述使用 df -Th 和 lsblk 這兩個 CLI 指令查看
(5) 擴大檔案系統空間
如果是 ext2, ext3, ext4 的 file system,則用 resize2fs
如果是 xfs,則用 xfs_growfs
比如說
$ sudo resize2fs /dev/sda1
$ sudo xfs_growfs /dev/sda1
iOS 開發:獲取狀態欄、導航欄、tabBar 的高度
https://blog.stormbirds.cn/articles/2019/12/17/1576569283226.html
状态栏、导航栏 和 tabbar 高度(pt)
| iPhone型号 | 状态栏 | 状态栏 | 导航栏 | 导航栏 | tabBar | tabBar |
|---|---|---|---|---|---|---|
| iPhone型号 | 竖屏 | 横屏 | 竖屏 | 横屏 | 竖屏 | 横屏 |
| 5s/SE/6/6s/7/8(iOS10) | 20 | 20 | 44 | 32 | 49 | 49 |
| 5s/SE/6/6s/7/8(iOS11) | 20 | 20 | 44 | 32 | 49 | 32 |
| 6/6s/7/8 Plus | 20 | 20 | 44 | 44 | 49 | 49 |
| X/XS | 44 | 0 | 44 | 32 | 83(49+34) | 53(32+21) |
| XR/XS Max | 44 | 0 | 44 | 44 | 83(49+34) | 70(49+21) |
(对于原生TabBar,iPhoneX会在其底部增加34pt,为的是不影响所谓的HomeBar,从而整个TabBar的高度变为49+34=83pt)
| bar | 高度总结 |
|---|---|
| 状态栏 | 全面屏iPhone竖屏44,全面屏iPhone横屏0,普通iPhone为20 |
| 导航栏 | 屏幕宽度小于400的设备横屏时为32,其余情况为44 |
| tabbar | 屏幕宽度小于400的设备在iOS11以上的系统横屏时为32,其余情况为49 |
| 安全区域 | 竖屏34,横屏21 |
| iPad型号 | 状态栏 | 导航栏 | tabBar |
|---|---|---|---|
| 普通iPad(iOS11) | 20 | 44 | 49 |
| 普通iPad(iOS12) | 20 | 50 | 50 |
| 全面屏iPad | 24 | 50 | 65(50+15) |
获取状态栏、导航栏、tabBar高度
//获取状态栏的高度
CGFloat statusHeight = [[UIApplication sharedApplication] statusBarFrame].size.height;
NSLog(@"状态栏高度:%f",statusHeight);
//获取导航栏的高度
CGFloat navHeight = self.navigationController.navigationBar.frame.size.height;
NSLog(@"导航栏高度:%f",navHeight);
//获取tabBar的高度
//1.在tabBarController中使用(你的继承自UITabBarController的VC)
CGFloat tabBarHeight = self.tabBar.frame.size.height;
NSLog(@"tabBar高度:%f",tabBarHeight);
//2.在非tabBarController中使用
UITabBarController *tabBarVC = [[UITabBarController alloc] init];//(这儿取你当前tabBarVC的实例)
CGFloat tabBarHeight = tabBarVC.tabBar.frame.size.height;
NSLog(@"tabBar高度:%f",tabBarHeight);
定义状态栏、导航栏、tabBar高度
#define kIs_iphone (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
#define kIs_iPhoneX kScreenWidth >=375.0f && kScreenHeight >=812.0f&& kIs_iphone
/*状态栏高度*/
#define kStatusBarHeight (CGFloat)(kIs_iPhoneX?(44.0):(20.0))
/*导航栏高度*/
#define kNavBarHeight (44)
/*状态栏和导航栏总高度*/
#define kNavBarAndStatusBarHeight (CGFloat)(kIs_iPhoneX?(88.0):(64.0))
/*TabBar高度*/
#define kTabBarHeight (CGFloat)(kIs_iPhoneX?(49.0 + 34.0):(49.0))
/*顶部安全区域远离高度*/
#define kTopBarSafeHeight (CGFloat)(kIs_iPhoneX?(44.0):(0))
/*底部安全区域远离高度*/
#define kBottomSafeHeight (CGFloat)(kIs_iPhoneX?(34.0):(0))
/*iPhoneX的状态栏高度差值*/
#define kTopBarDifHeight (CGFloat)(kIs_iPhoneX?(24.0):(0))
/*导航条和Tabbar总高度*/
#define kNavAndTabHeight (kNavBarAndStatusBarHeight + kTabBarHeight)还在用宏定义 “iphoneX” 判断安全区域 (safe area) 吗? 下文教學改用 Safe Area
https://www.jianshu.com/p/5bebc28e0ede
<iOS螢幕適配> iPhoneX SafeArea - 安全區域 宏定义
https://www.itread01.com/content/1541935567.html
/** 裝置螢幕寬度 */
#define LCLScreenWidth [[UIScreen mainScreen] bounds].size.width
/** 裝置螢幕高度 */
#define LCLScreenHeight [[UIScreen mainScreen] bounds].size.height
/** iPhoneX判斷 */
#define LCLIsIphoneX (CGSizeEqualToSize(CGSizeMake(375.f, 812.f), [UIScreen mainScreen].bounds.size) || CGSizeEqualToSize(CGSizeMake(812.f, 375.f), [UIScreen mainScreen].bounds.size))
/** 狀態列高度 */
#define LCL_StatusBar_Height ((LCLIsIphoneX) ? 44 : 20)
/** 導航欄高度 */
#define LCL_NavBar_Height ((LCLIsIphoneX) ? 88 : 64)
/** 標籤欄高度 */
#define LCL_TabBar_Height ((LCLIsIphoneX) ? 83 : 49)
/** 底部橫條高度 */
#define LCL_HomeIndicator_Height ((LCLIsIphoneX) ? 34 : 0)
https://codertw.com/%E7%A8%8B%E5%BC%8F%E8%AA%9E%E8%A8%80/605821/
適配iPhone X相關的坑,總的來說有兩類坑,一個是導航欄+狀態列的高度發生了變化,一個是一些沒有實現實現-tableView: viewForHeaderInSection:和-tableView: viewForFooterInSection:等代理方法的UITableView會出錯位的問題。
iOS 開發:導航欄顯示和隱藏的坑
混合使用 UINavigationController 和 UITabBarController 後,
如果有些畫面需要隱藏『導航欄』,而有些畫面又需要顯示『導航欄』,
動畫切換過程的瑕疵,如何解決:
https://www.itread01.com/content/1550558164.html
隱私政策 (最簡化版)
1. Mobile app
2. 發布者身分是個人
3. 應用名稱是『壞寶寶學中文』
4. App 沒有收集使用者的個人資訊和位置資訊
5. App 沒有利用任何工具分析使用者的行為
6. How can users contact you for any questions regarding your privacy policy? => by email
7. Free Privacy Policy (不包含 International Privacy Policy 或 GDPR Privacy Policy 等等)
Privacy Policy
Effective date: October 02, 2020
壞寶寶學中文 ("us", "we", or "our") operates the 壞寶寶學中文 mobile application (hereinafter referred to as the "Service").
This page informs you of our policies regarding the collection, use and disclosure of personal data when you use our Service and the choices you have associated with that data.
We use your data to provide and improve the Service. By using the Service, you agree to the collection and use of information in accordance with this policy. Unless otherwise defined in this Privacy Policy, the terms used in this Privacy Policy have the same meanings as in our Terms and Conditions.
Definitions
Service
Service is the 壞寶寶學中文 mobile application operated by 壞寶寶學中文
Personal Data
Personal Data means data about a living individual who can be identified from those data (or from those and other information either in our possession or likely to come into our possession).
Usage Data
Usage Data is data collected automatically either generated by the use of the Service or from the Service infrastructure itself (for example, the duration of a page visit).
Cookies
Cookies are small files stored on your device (computer or mobile device).
Information Collection and Use
We collect several different types of information for various purposes to provide and improve our Service to you.
Types of Data Collected
Personal Data
While using our Service, we may ask you to provide us with certain personally identifiable information that can be used to contact or identify you ("Personal Data"). Personally identifiable information may include, but is not limited to:
- Cookies and Usage Data
Usage Data
When you access the Service with a mobile device, we may collect certain information automatically, including, but not limited to, the type of mobile device you use, your mobile device unique ID, the IP address of your mobile device, your mobile operating system, the type of mobile Internet browser you use, unique device identifiers and other diagnostic data ("Usage Data").
Tracking & Cookies Data
We use cookies and similar tracking technologies to track the activity on our Service and we hold certain information. Cookies are files with a small amount of data which may include an anonymous unique identifier. Cookies are sent to your browser from a website and stored on your device. Other tracking technologies are also used such as beacons, tags and scripts to collect and track information and to improve and analyse our Service. You can instruct your browser to refuse all cookies or to indicate when a cookie is being sent. However, if you do not accept cookies, you may not be able to use some portions of our Service. Examples of Cookies we use:
- Session Cookies. We use Session Cookies to operate our Service.
- Preference Cookies. We use Preference Cookies to remember your preferences and various settings.
- Security Cookies. We use Security Cookies for security purposes.
Use of Data
壞寶寶學中文 uses the collected data for various purposes:
- To provide and maintain our Service
- To notify you about changes to our Service
- To allow you to participate in interactive features of our Service when you choose to do so
- To provide customer support
- To gather analysis or valuable information so that we can improve our Service
- To monitor the usage of our Service
- To detect, prevent and address technical issues
Transfer of Data
Your information, including Personal Data, may be transferred to - and maintained on - computers located outside of your state, province, country or other governmental jurisdiction where the data protection laws may differ from those of your jurisdiction.
If you are located outside and choose to provide information to us, please note that we transfer the data, including Personal Data, to and process it there.
Your consent to this Privacy Policy followed by your submission of such information represents your agreement to that transfer.
壞寶寶學中文 will take all the steps reasonably necessary to ensure that your data is treated securely and in accordance with this Privacy Policy and no transfer of your Personal Data will take place to an organisation or a country unless there are adequate controls in place including the security of your data and other personal information.
Disclosure of Data
Legal Requirements
壞寶寶學中文 may disclose your Personal Data in the good faith belief that such action is necessary to:
- To comply with a legal obligation
- To protect and defend the rights or property of 壞寶寶學中文
- To prevent or investigate possible wrongdoing in connection with the Service
- To protect the personal safety of users of the Service or the public
- To protect against legal liability
Security of Data
The security of your data is important to us but remember that no method of transmission over the Internet or method of electronic storage is 100% secure. While we strive to use commercially acceptable means to protect your Personal Data, we cannot guarantee its absolute security.
Service Providers
We may employ third party companies and individuals to facilitate our Service ("Service Providers"), provide the Service on our behalf, perform Service-related services or assist us in analysing how our Service is used. These third parties have access to your Personal Data only to perform these tasks on our behalf and are obligated not to disclose or use it for any other purpose.
Links to Other Sites
Our Service may contain links to other sites that are not operated by us. If you click a third party link, you will be directed to that third party's site. We strongly advise you to review the Privacy Policy of every site you visit. We have no control over and assume no responsibility for the content, privacy policies or practices of any third party sites or services.
Children's Privacy
Our Service does not address anyone under the age of 18 ("Children").
We do not knowingly collect personally identifiable information from anyone under the age of 18.
Changes to This Privacy Policy
We may update our Privacy Policy from time to time. We will notify you of any changes by posting the new Privacy Policy on this page. We will let you know via a prominent notice on our Service, prior to the change becoming effective and update the "effective date" at the top of this Privacy Policy.
You are advised to review this Privacy Policy periodically for any changes. Changes to this Privacy Policy are effective when they are posted on this page.
Contact Us
If you have any questions about this Privacy Policy, please contact us:
- By email: 壞寶寶學中文
隱私政策範例
https://www.privacypolicies.com/privacy/view/c363f2a10a7cd0d95f603eee66224222
內容存檔如下:
Privacy Policy
Effective date: October 02, 2018
小兔英文單字 ("us", "we", or "our") operates the 小兔英文單字 mobile application (hereinafter referred to as the "Service").
This page informs you of our policies regarding the collection, use and disclosure of personal data when you use our Service and the choices you have associated with that data. This Privacy Policy is managed by Privacy Policy Generator.
We use your data to provide and improve the Service. By using the Service, you agree to the collection and use of information in accordance with this policy. Unless otherwise defined in this Privacy Policy, the terms used in this Privacy Policy have the same meanings as in our Terms and Conditions.
Definitions
Service
Service is the 小兔英文單字 mobile application operated by 小兔英文單字
Personal Data
Personal Data means data about a living individual who can be identified from those data (or from those and other information either in our possession or likely to come into our possession).
Usage Data
Usage Data is data collected automatically either generated by the use of the Service or from the Service infrastructure itself (for example, the duration of a page visit).
Cookies
Cookies are small files stored on your device (computer or mobile device).
Information Collection and Use
We collect several different types of information for various purposes to provide and improve our Service to you.
Types of Data Collected
Personal Data
While using our Service, we may ask you to provide us with certain personally identifiable information that can be used to contact or identify you ("Personal Data"). Personally identifiable information may include, but is not limited to:
- Cookies and Usage Data
Usage Data
When you access the Service with a mobile device, we may collect certain information automatically, including, but not limited to, the type of mobile device you use, your mobile device unique ID, the IP address of your mobile device, your mobile operating system, the type of mobile Internet browser you use, unique device identifiers and other diagnostic data ("Usage Data").
Tracking & Cookies Data
We use cookies and similar tracking technologies to track the activity on our Service and we hold certain information. Cookies are files with a small amount of data which may include an anonymous unique identifier. Cookies are sent to your browser from a website and stored on your device. Other tracking technologies are also used such as beacons, tags and scripts to collect and track information and to improve and analyse our Service. You can instruct your browser to refuse all cookies or to indicate when a cookie is being sent. However, if you do not accept cookies, you may not be able to use some portions of our Service. Examples of Cookies we use:
- Session Cookies. We use Session Cookies to operate our Service.
- Preference Cookies. We use Preference Cookies to remember your preferences and various settings.
- Security Cookies. We use Security Cookies for security purposes.
Use of Data
小兔英文單字 uses the collected data for various purposes:
- To provide and maintain our Service
- To notify you about changes to our Service
- To allow you to participate in interactive features of our Service when you choose to do so
- To provide customer support
- To gather analysis or valuable information so that we can improve our Service
- To monitor the usage of our Service
- To detect, prevent and address technical issues
Transfer of Data
Your information, including Personal Data, may be transferred to - and maintained on - computers located outside of your state, province, country or other governmental jurisdiction where the data protection laws may differ from those of your jurisdiction.
If you are located outside and choose to provide information to us, please note that we transfer the data, including Personal Data, to and process it there.
Your consent to this Privacy Policy followed by your submission of such information represents your agreement to that transfer.
小兔英文單字 will take all the steps reasonably necessary to ensure that your data is treated securely and in accordance with this Privacy Policy and no transfer of your Personal Data will take place to an organisation or a country unless there are adequate controls in place including the security of your data and other personal information.
Disclosure of Data
Legal Requirements
小兔英文單字 may disclose your Personal Data in the good faith belief that such action is necessary to:
- To comply with a legal obligation
- To protect and defend the rights or property of 小兔英文單字
- To prevent or investigate possible wrongdoing in connection with the Service
- To protect the personal safety of users of the Service or the public
- To protect against legal liability
Security of Data
The security of your data is important to us but remember that no method of transmission over the Internet or method of electronic storage is 100% secure. While we strive to use commercially acceptable means to protect your Personal Data, we cannot guarantee its absolute security.
Service Providers
We may employ third party companies and individuals to facilitate our Service ("Service Providers"), provide the Service on our behalf, perform Service-related services or assist us in analysing how our Service is used. These third parties have access to your Personal Data only to perform these tasks on our behalf and are obligated not to disclose or use it for any other purpose.
Analytics
We may use third-party Service Providers to monitor and analyse the use of our Service.
Firebase
Firebase is an analytics service provided by Google Inc.
You may opt-out of certain Firebase features through your mobile device settings, such as your device advertising settings or by following the instructions provided by Google in their Privacy Policy: https://policies.google.com/privacy
We also encourage you to review the Google's policy for safeguarding your data: https://support.google.com/analytics/answer/6004245
For more information on what type of information Firebase collects, please visit the Google Privacy & Terms web page: https://policies.google.com/privacy
Links to Other Sites
Our Service may contain links to other sites that are not operated by us. If you click a third party link, you will be directed to that third party's site. We strongly advise you to review the Privacy Policy of every site you visit. We have no control over and assume no responsibility for the content, privacy policies or practices of any third party sites or services.
Children's Privacy
Our Service does not address anyone under the age of 18 ("Children").
We do not knowingly collect personally identifiable information from anyone under the age of 18. If you are a parent or guardian and you are aware that your Child has provided us with Personal Data, please contact us. If we become aware that we have collected Personal Data from children without verification of parental consent, we take steps to remove that information from our servers.
Changes to This Privacy Policy
We may update our Privacy Policy from time to time. We will notify you of any changes by posting the new Privacy Policy on this page. We will let you know via email and/or a prominent notice on our Service, prior to the change becoming effective and update the "effective date" at the top of this Privacy Policy.
You are advised to review this Privacy Policy periodically for any changes. Changes to this Privacy Policy are effective when they are posted on this page.
Contact Us
If you have any questions about this Privacy Policy, please contact us:
- By visiting this page on our website: http://apppeterpan.strikingly.com
程式語言編年史
程式語言編年史原文 下面這張圖片描繪了整個程式語言的歷史。包括各種程式語言的發明人、程式語言的特點和適用領域、被什麼網站或公司使用等 (檢視 完整高清圖 )。 之所以會有那麼多不同的程式語言是因為設計程式語言的初衷不同、對語言學習曲線的追求不同、不同程式之間的執行成本差異...











