發表文章

python figure & ax

圖片
fig = plt.figure("name")   #最好取個名字, 以後可以在多個figure之間分換 ax0 = fig.add_subplot( 221 )   ax1 = fig.add_subplot( 222 , sharex=ax0)   ax2 = fig.add_subplot(22 3 , sharex=ax0)    ax2 = fig.add_subplot(224, sharex=ax0, sharey=ax0)     如果有多個figure,只要在plot之前先指定 plot.figure("name") 即可,如下。 plot.figure("a") plot.plot(x,y,'-') plot.figure("b") plot.plot(x,y,'v')

查看 MAC 上 JAVA 版本

圖片
查看 JAVA 版本 在terminal 中輸入  java -version 查看有哪一些版本在電腦上 在terminal 中輸入  /usr/libexec/j ava_home -V

隱私權政策 Privacy Policy

1.  隱私權政策簡介  本人所創作之軟體(APP),為尊重您的隱私權、保護您的個人資訊,我們將遵循以下基本原則: 1.蒐集您的個人資訊時,我們會清楚指出目的。 2.個人資訊將被蒐集時,我們會事先通知您且徵詢您的同意。 3.除非經您的同意或基於法律要求,否則我們不揭露您的個人資訊。 4.我們會安全的保護您的個人資訊。 5.您可以對以上的隱私權政策提出意見。 2. 本人APP中所收集的資訊為何?  a.  您提供的資訊  - 交易及付款資訊 為處理購物與支付服務的相關交易服務或付款程序,因應相關服務所生之交易資料、付款金額與方式、用戶的信用卡資訊可能會被取得。請注意,購物程序應由適當的付款機構完成,我們不會保留任何信用卡資訊。此資料為Google play所收集。   b. 您使用本人軟體時被收集的資料  - 記錄 不收集個人帳戶資訊,個人帳號的情形下,記錄最常使用之功能。本人使用Googlef所提供的Google Analytics協助此記錄的完成。 - 裝置資訊 我們可能取得您的裝置資訊(如應用程式版本、作業系統版本、語言與國家設定、裝置型號)。此資訊只用於軟體功能的開發,提昇軟體使用體驗,不會有其它非法使用。 硬體權限之取得專為app正常功能運作所需。app作者不會使用硬體權限在app功能以外之範圍。 相機、麥克風、帳戶、聯絡人或電話 功能之取得,如為錄音功能,app中可以直接明顯了解錄音之目的。不會有使用者未知之功能實踐。   3. 本人開發之軟體會如何利用蒐集到的資訊?  - 為用戶提供平穩流暢的使用體驗 - 遵守相關法律與法定義務。    4. 本人開發之APP是否分享蒐集到的資訊?  未經您的同意,我們不會向第三人提供您的資訊。我想我也沒有這個能力。   5. 本公司是否與其他服務供應商合作?  無   6. 個人資訊會保存多久?  本人開發之軟體都是教學跟知識傳播之軟體。所以不會保留任何人之資訊。   7 . 外部連結 - 外部資料連結 app中有任何連結,若為app作者所提供,皆為安全之連結且 無色情、成人、賭博,酒精等不合兒童之內容。 。無任何惡意程式。使用者可安心使用。app作者亦會盡到監督之責。 -廣告 本人使之用廣告SDK為ADMOB。無色情、成人、賭博,酒精等不合兒童之廣告。 13. 是否有意見?是否有疑問?  若對我們的隱私權政策或處理個

Notification 改新寫法

Notification Noti=new Notification(); Intent i = new Intent(this, MainActivity.class);    i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP|Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);               Noti.icon =   R . drawable . notification_icon ; // notification icon id Noti.tickerText=mc.getResources().getString(R.string.app_name); Noti.when=System.currentTimeMillis();      Noti.flags=Notification.FLAG_ONGOING_EVENT;     // setLatestEventInfo 已被放棄 Noti.setLatestEventInfo( mc, mc.getResources().getString( "My notification" ), mc.getResources().getString( "Hello World!" ) , PendingIntent.getActivity(this, 0,i, 0) ); NotificationManager myNM = (NotificationManager)this.getSystemService(Context.NOTIFICATION_SERVICE); myNM.notify(0,Noti); 改成如下 NotificationCompat . Builder mBuilder =         new NotificationCompat . Builder ( this )         . setSmallIcon ( R . drawable . notification_icon )         . setCont

android studio signed apk

圖片
有時候我們會希望每次編譯出來的 apk 都是有 sign 過的,Android Studio 提供了這樣的選擇。 方法如下,當然也可以直接在Gradle中寫好。 不過我們還是用用圖形介面比較方便。 一、點擊左下方的Build Variants,會跳出側邊欄位如下。在跳出來的欄位裡面Build Variant中選release。 二、我們到app資料匣,點右鍵,選Open Module Settings。如下 三、先選Signing,自己新增一個認證。 Name,key Alias,key Password, Store File, Store Password, 這幾項都填一填。 四、再選Build Types, 先選release ,在 Signing Config 中選第三個步驟中自己新增的認證,剛剛的 Name 會出現在下拉選單中。 五、最後,按OK。這樣就大功告成。接下來每次編譯就會直接給出 sign 過的 apk。

android studio 查看繼承的原始碼

圖片
Navigate  menu >  Type Hierarchy 出現如圖。就可以點進去看每個繼承的原始碼。

Unsupported major.minor version 52.0 報錯

其一 一般來說,Unsupported major.minor version 52.0出現時,為什麼會有這個錯誤呢?這是java版本的問題,52.0是主要版本號.次要版本號(major.minor)。每一個被編譯程式都會有其適用的版本號的資訊,可以用 javap -verbose XXXX 就可以看到適用的版號。如果不是目前JDK的適用範圍,當我們執行時就會出錯了。 我們可以在terminal中打上 java -version 看看目前的java 版本 要轉移平台或環境,確認版本有其必要。 我們可以先用 jdk 1.8 編釋一個小程式,然後再把jdk換成1.7執行看看,就會出現 Unsupported major.minor version 52.0 所以我們可以在 https://en.wikipedia.org/wiki/Java_class_file#General_layout 找到各版本支援的版本號,這樣就不會弄錯了。簡單記錄一下。 java SE 9 = 53 (0x35 hex), Java SE 8 = 52 (0x34 hex), Java SE 7 = 51 (0x33 hex), Java SE 6.0 = 50 (0x32 hex), Java SE 5.0 = 49 (0x31 hex), JDK 1.4 = 48 (0x30 hex), JDK 1.3 = 47 (0x2F hex), JDK 1.2 = 46 (0x2E hex), JDK 1.1 = 45 (0x2D hex). 其二 在android studio上可能就是compileSdkVersion跟buildToolVersion版本有所不同。如下,將兩者改為一樣的版本 24,問題即可解決。 android{ compileSdkVersion    24 buildToolVersion         24.0.1