2021年3月1日 星期一

初探保險 - MY83保險網 / Finfo保險資訊站

來源:FINFO.TW 30歲罐頭保單的年費變化

差不多該研究保險了,之前一直偷懶是認為健保已非常夠用了!然而,對於家庭角色來說,保險有其特別的意義,如果有玩過遊戲 太空戰士七 的話,其寶石搭配的設計非常豐富,其中有一招是被敵人KO時,招喚不死鳥讓全體成員復活的機制,保險就是類似這種效果,核心設計是降低身旁親人的壓力,在經濟許可上,播一些擺在保險上當作理財規劃的一環作為保護。

這次研究保險時,主要透過了 MY83保險網FINFO保險資訊站 ,兩者的罐頭保單體驗都在伯仲之間,後來就留言跟專業的保險員互動,果真,很多事還是交給專業的來吧!保險員他們有的優勢:
  • 考過試
  • 比一般人熟悉保單設計、優惠和組合搭配
  • 有些專屬保險產品不是一般人可以買到的,屬於獨家商品
其實,這就跟開證券戶一樣,在網路可以痛快的申請完畢,但取得的交易手續費是公定價。如果透過證券營業員幫忙開戶,就可以拿到優惠的交易手續費。而透過保險員,有一些保險產品是獨家販售的。

我認為有興趣的可以大膽一點留訊息,實在是這些網站為了給網站使用者有更佳的服務體驗,有做了以下事務:
  • 網站平台透過考試/面試挑選配合的保險業務員
  • 每個業務員是被網站平台分配到客戶的
  • 網站平台還會時時數據追蹤,以確認保險業務員成交的轉換率為何
  • 保險業務員本身需要這類網站來取得來源
透過上述架構,有機會被分配到不錯的保險業務員,且業務員為了能夠有成交/業績/永續配分配到客戶,服務品質不會太差的。當然,也要花點心思去看對方配置的保險方案,去理解保險員配置思維。例如有次保單保險員配了兩個台灣人壽的主約,仔細去看才發現配置兩個主約的目的是讓其中一個附約的保障金額可以拉高,有些附約的保障金額限制不能超過主約保障金額的五倍價格,而通常主約都保得很低,靠附約搭配提升不少值。這時拆分多個主約就有其設計架構。

這些便是我這次接觸保險的心得,套句以前有當過保險業務的長輩分享,可以著重意外跟失能即可,而實支實付也可以考慮,但投資理財保單則不用花太多心思,因為投資類的方式有太多了,像是自我投資也是一種。

最後一提,失能可以分成意外失能跟疾病失能,後者的保費貴跟條件嚴謹,像是身體狀況有定期回診的,通常就無法用一般合理的保險額度來保疾病失能,但也存在非常昂貴的疾病失能險或是不保證能年年續保的失能險可挑選的。有興趣可以多多利用 FINFO保險資訊站 服務,可以觀看年紀與保費變化走勢囉。

2021年2月21日 星期日

[動畫] 弱角友崎同學 , 輕小說

農曆年節開始玩起了 DOS GAME 大富翁三 ,溫習了一下 XD 有了社會歷練後,玩起大富翁遊戲時,停留在銀行時,立馬辦貸款、辦信用卡並借好借滿(遊戲內是幾乎無風險的操作),經過股市立刻買好買滿,隨著戰況激烈,物價指數攀升,當然,股價也有對應的成長的。這大概就是長大後才懂的事,小時玩這遊戲還沒這種企圖心。

接著就回憶起在 bilibili 看到的 動畫 弱角友崎同學 這齣輕小說 動漫化的作品,提醒自己要好好進攻現實生活 XD 

這故事讓人想起自己國中時期,國一時段考都考個四百多名吧,全校 670 人,也就是全班 60人中,大概 35名之後。成天也在玩 PC Game ,倒也想不起自己有沒認真唸書過。但是,進入國二後,很神奇地在 物理 得到了解題興趣,彷彿不用花太多時間,只需理解又不用花時間背,極爽 XD 就這樣因為單一科物理的學習優勢,讓我整體學習心態改變,開始會用力花時間也把歷史和地理也背好,如此讓政體成績進入到全校排名 100 內。

這些過程,就像小說/漫畫 弱角友崎同學 的情節有那麼一點點近似,在人生中找到一點回饋感,進而把握去攻略人生。一樣的思維在十多年前也可以用在寫 Blog、研究技術等等,要再來找找生活回饋感了!

2021年2月18日 星期四

[開箱] ADONIT NOTE+ 觸控筆 與 iPad 8 ,使用 SketchBook app 測試傾斜效果

之前買了像 小米液晶手寫板 給小孩塗鴉,非常開心。最近在想怎樣引導小孩產生高質量的塗鴉,想著想著手邊就蹦出一台 iPad 8 跟第三方觸控筆 ADONIT NOTE+ 了!!說真的太久沒買 iPad ,第一次買是2011年的 iPad2 (代號 A1395) ,第二次買是 2013 年的 iPad Air (代號 A1474),最近才發現 iPad 第七代已經來到 10.2 吋。而添購 iPad 8 的主因之一是追求觸控筆支援,以及福利機價差不多,就乾脆買新的了!

試用了一下還滿順的,可惜的 2013 年 iPad Air 如預期的完全無法用,不然我也想添購一隻筆來輔助一下 XD 像是變成另一個畫板等等

2021年2月9日 星期二

Clubhouse 體驗心得


大概六天前剛拿到朋友的邀請,上去體驗了一下,非常新鮮。

聽到了海外大陸人在跟台灣人聊政治,且是很有理性的論述民主的好壞,像是台灣人說民主也沒因此比較多選擇(藍綠兩黨),還是會被媒體給包裝起來,但是!若選錯市長時,民主至少可以罷免!對於過去不認同的政治,可以身體力行去表達自己的心聲。而常說的民主會拖累經濟的議題,恰好有位在德國的大陸人在分享北上廣深的 GDP 其實跟台灣差不多,再加上自己老鄉連廁所都沒有,以此驗證民主也不會拖累經濟,講得還滿不錯的。

聽了在紐約的大陸人,在聊在美國或 App 朋友交際認識,不如線上遊戲那般親,線上遊線連討論個攻略,大家都毛起來教學 XD 而其他則是提到自己遠離曼哈頓,特不愛曼哈頓的急促、到時都要記得去抗爭(類似被欺負要去哪邊回報?!),聊仍在疫情中,跟大家介紹 crowdcow.com 可以買好吃又便宜的牛肉 XD 以及自己住的地方偏郊區,卻有什麼類似快捷大眾運輸,快速到市中心以及還可以轉乘到機場,且交通費便宜啊。是個很讚的聊天內容。

聽了一位台灣女生到北京外商 SaaS 發展,之前看了幾篇質量還不錯的科普文章,沒想到一年多沒更新是到北京發展了!聊了不少在 SaaS 的步調,包括公司估值方式或為何 SaaS 總是高估值、聊了訂閱制的經營方式,會有客戶經理在負責維護客戶忠誠度等等,也滿有意思的。途中也吸引到有一位從事投資的,回饋他在業界中常見的估值法,如同業比較法、評估新創的事業成長率等等,這段就還滿像 Youtuber 財經網紅 CK 的部分,就 CK 是一名在澳洲精算師,前陣子除了分享對總體經濟外,也分享她是怎樣評估股價(市值),過程就包括猜測成長率、套用估值公式等等,因此聽負責投資其他間公司的VC說話,特別有共鳴。

聽了葉丙成教授在那邊台語五四三,也滿逗趣的。不知哪個時間點自己也會變成那樣,喜歡跟幾位老友聊是非。讓我想起以前在工研院的老闆,英文很強,但總是愛台語,還會請特休去參加抗議活動,實在熱血 XD

聽了財報狗產品經理在分享他的工作方式,包括大老闆很挺他,也讓他去經營數個月的 podcast ,最終因為數據上並沒有顯著帶給財報狗對應的流量,再加上一集至少要五小時處理,每週一集的時間消耗也是很恐怖的。比較特別的是財報狗 PM 提到了一切都是數據導向,就算花兩週開發服務,最後的數據是差的,仍是會捨棄不上線的!而在招聘 RD 時,從一開始就會溝通可能高達 2/3 的 coding 都不會上線!大量專注在實驗、數據、決策等 growth hack 路線,對我而言是滿強化一些已知的手段,非常醒腦。而聊天提到了一些粗略的表單,沒想增加設計美感後,出現轉換率變差時,該怎樣去檢驗一直猜想,若拉不起來也不會上線的!核心 KPI 就是轉換率,轉換率沒變好就不會採用。非常專注。

也聽了一些早晨的新聞台,這我反而記憶最淺,而快速體驗後,感受到網路上的財經網紅會盡可能想搶流量,也不少在該領域非第一的網紅很努力地連續幾天都在開講,我一想到上班日都在做工作的事情,週末還要跑去聽工作相關的,而聊天品質又無法確定,實在累。

我想,嘗試過 clubhouse 後,對於一些尚未深入到 podcast 用戶,應當會感受非常新鮮。但對於已熟悉 podcast 來源者,可能會像我一樣又回味起 podcast 的高品質體驗。包括 podcast 可以快轉、可以看別人的評價,而 clubhouse 就是直播,且很有機會快速跟名人親近,是一種老早就存在的需求,但又重新被詮釋出來。然而 clubhouse 滿殺時間的,若參加到一場不錯的聊天,那心中會很充實,但如果加入到一場主持人不佳,講者也佳,想詮釋自己的想法也說不清時,那真的會聽不下去的 XD

果真核心項目是有限的時間資源,大家都在搶,搶人眼球、搶人耳朵、搶人時間,早已進入到任何的新創服務,就是要硬生生地佔領用戶的時間資源。而我,應該還是會回歸到 podcast 服務上,像是對岸的 得到app 也滿不錯的。這種專業的聲音產出內容,有那麼一種可預期的體驗感,有那麼可以快轉省時間的沾沾自喜感,而資訊/知識,其實也不打折的。

2021年2月3日 星期三

Flutter 開發文件之 iOS 與 Android 實作筆記 - 使用 Admob 以 Interstitial ads 為例


關於 flutter 使用 Admob 的架構,可參考網路上數篇文章:
此例筆記 iOS & Android 的設定方式,並且記錄碰到的錯誤訊息。

Android app 設定方式:

1. 更新 flutter_app/pubspec.yaml 添加 dependencies (記得要運行 flutter pub get)

firebase: ^8.0.0
firebase_admob: ^0.11.0+1

2. 安置從 Firebase 建立專案時得到的 google-services.json 檔案,擺在 flutter_app/android/app/ 中

3. 更新 flutter_app/android/build.gradle 的 buildscript -> dependencies 設定

//classpath 'com.android.tools.build:gradle:3.5.0'
// 為了修正錯誤訊息:error: unexpected element <queries> found in <manifest>.
classpath 'com.android.tools.build:gradle:4.0.0'
classpath 'com.google.gms:google-services:4.3.3'

4. 更新 flutter_app/android/gradle/wrapper/gradle-wrapper.properties 的 gradle 版本至 6.1.1

#為了修正錯誤訊息:Minimum supported Gradle version is 6.1.1. Current version is 5.6.2. If using the gradle wrapper
distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip

5. 增加 flutter_app/app/build.gradle 的 apply 項目

apply plugin: 'com.google.gms.google-services'

6. 更新 flutter_app/android/app/src/main/AndroidManifest.xml 添加 meta data (僅範例程式數值)

<meta-data android:name="com.google.android.gms.ads.APPLICATION_ID" android:value="ca-app-pub-3940256099942544~3347511713"/>

7. 更新 flutter_app/lib/main.dart (此改自於範例程式,讓 add Button 可以產生一個插頁廣告)

iOS app 設定方式:

1. 更新 flutter_app/pubspec.yaml 添加 dependencies(記得要運行 flutter pub get)

firebase: ^8.0.0
firebase_admob: ^0.11.0+1

2. 安置從 Firebase 建立專案時得到的 GoogleService-Info.plist ,用 Xcode 打開專案,把 GoogleService-Info.plist 拖拉擺入跟 Info.plist 的同階目錄位置。

% open flutter_app/ios/Runner.xcworkspace
% ls flutter_app/ios/Runner/GoogleService-Info.plist

3. 更新 Info.plist 內容,添加資訊 GADApplicationIdentifier 等資訊(僅範例程式數值)

<key>GADApplicationIdentifier</key>
<string>ca-app-pub-3940256099942544~1458002511</string>
<key>SKAdNetworkItems</key>
  <array>
    <dict>
      <key>SKAdNetworkIdentifier</key>
      <string>cstr6suwn9.skadnetwork</string>
    </dict>
  </array>

4. 更新 Podfile ,上方添加 platform :ios, '10.0'

為了修正錯誤訊息: 
Automatically assigning platform `iOS` with version `9.0` on target `Runner` because no platform was specified. Please specify a platform for this target in your Podfile.

5. 更新 flutter_app/lib/main.dart (此改自於範例程式,讓 add Button 可以產生一個插頁廣告)

如此就收工啦!而 flutter_app/lib/main.dart 內容如下:

import 'package:flutter/material.dart';

import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_admob/firebase_admob.dart';

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  MobileAdTargetingInfo targetingInfo = MobileAdTargetingInfo(
    keywords: <String>['flutterio', 'beautiful apps'],
    contentUrl: 'https://flutter.io',
    childDirected: true,
    nonPersonalizedAds: true,
  );

  InterstitialAd _interstitialAd;

  InterstitialAd createInterstitialAd() {
    return InterstitialAd(
      adUnitId: InterstitialAd.testAdUnitId,
      targetingInfo: targetingInfo,
      listener: (MobileAdEvent event) {
        print("InterstitialAd event $event");
      },
    );
  }

  @override
  void initState() {
    super.initState();
    FirebaseAdMob.instance.initialize(appId: FirebaseAdMob.testAppId);
    //_interstitialAd = createInterstitialAd()..load();
  }

  @override
  void dispose() {
    _interstitialAd?.dispose();
    super.dispose();
  }

  void _incrementCounter() {
    _interstitialAd?.dispose();
    _interstitialAd = createInterstitialAd()..load()..show();
    setState(() {
      _counter++;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'You have pushed the button this many times:',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headline4,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: Icon(Icons.add),
      ), // This trailing comma makes auto-formatting nicer for build methods.
    );
  }
}