2021年12月23日 星期四

Xamarin.form 如果你用的是shell架構,如何 handle "back button"事件

 最近因為要在back (< ) button事件中加上動畫(沒辦法,資料總是要從網路下載)

真的是試破頭殼了

其原因是因為我忘了是套用了shell架構,所以content page上方的back button點擊時是不會觸發OnBackButtonPressed 事件的 (但如果是用螢幕下方的 "<" button,是會觸發這個事件的)

好在先進有類似的情境(如,回上一頁時要先做確認的動作)

這時就可以參考這篇文章了

在此介紹給xamarin form的同好

一起加油吧!!

2021年12月21日 星期二

OSM圖資概念相關連結

 osm的技術官網:

https://wiki.openstreetmap.org/wiki/API

在的網頁內嵌入osm,ref https://noob.tw/openstreetmap/

tile的觀念: http://blog.changyy.org/2012/05/openstreetmap-api.html 

(觀念很重要,因為日後從緯經度推算tile一定會用到)

就static map而言,就應該是緯經度推算成tile,所以請參考以下網址

https://wiki.openstreetmap.org/wiki/Slippy_map_tilenames


有了tile,那推算出大致位置的方式,就用比例去推算了

參考這則討論


如果,你真的只是要產出幾張圖,那就到

https://www.openstreetmap.org 用右手側工具區有個「分享」icon 
就可把你目前看到的地圖輸出成png/jpeg/pdv/svg 了
(有了底圖了,那在上面加些圖示標記就是你的事了)
大不了時辰到了,不,時間到了,再叫值日生來這下載圖片來用
(如果卡骨力一點,你直接用browser的debuger去看reuqest送出什麼,自己包api也行)

如果貴公司的用量(請求數)每月不超過15000次請求的話,那就去MapQuest註冊API來用吧
https://business.mapquest.com/pricing-plans


O.S.明明專案只是要幾張可能不會異動的地圖,居然花了半個月來study這東西,沒辦法,Google map是要錢的啊....





2021年12月10日 星期五

how to resize an existing vdi disk in vbox + resize an Ubuntu 18.04/20.04 LVM disk

step 1..to resize vdi of VBox ,please refer to :

https://www.howtogeek.com/124622/how-to-enlarge-a-virtual-machines-disk-in-virtualbox-or-vmware/

 File > Virtual Media Manager in the main VirtualBox window

step2 .extend to 100 free space.

ref:
https://kb.vander.host/operating-systems/how-to-resize-an-ubuntu-18-04-lvm-disk/

用sudo -i  (root身份去執行)

其中,

-------------------------------------

user@server:~# parted
GNU Parted 3.2
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) resizepart
Partition number? 3
End? [26.8GB]?   <--這地方要自己輸入,不能只按enter,
因為parted 是不知道你有多少空間可以用 
(在上一個指令「fdisk -l」裡「Disk /dev/sda: 30.25 GiB」就是我們可用(用步驟1改的vdi大小)的大小,
所以請在此填入32.25G)
(parted) quit
Information: You may need to update /etc/fstab.
----------------------------------------------
接著用
 pvresize /dev/sda3
上述才會生效
又,我是直接用「lvextend -l +100%FREE /dev/mapper/ubuntu--vg-ubuntu--lv」
確定它出現以下訊息
------------------------------------------
 Size of logical volume ubuntu-vg/ubuntu-lv changed from <9.00 GiB (2303 extents) to 29.24 GiB (7486 extents).
  Logical volume ubuntu-vg/ubuntu-lv successfully resized.
---------------------------------------------
才是正確地完成了lvextend指令,
當然別忘了之後的「resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv」指令,再用df -h 確定LVM有擴充
才是真的功德圓滿了
以上,加油了!!

------------------------------------

apt-update時遇到「Err:1 http://tw.archive.ubuntu.com/ubuntu focal InRelease Splitting up /var/lib/apt/lists/tw.archive.ubuntu.com_ubuntu_dists_focal_InRelease into data and signature failed」錯誤訊息

 最近在用ubuntu 安裝sql server 時出現以問題
-------apt update後----
Hit:1 http://tw.archive.ubuntu.com/ubuntu focal InRelease
Hit:2 http://tw.archive.ubuntu.com/ubuntu focal-updates InRelease
Hit:3 http://tw.archive.ubuntu.com/ubuntu focal-backports InRelease
Hit:4 http://tw.archive.ubuntu.com/ubuntu focal-security InRelease
Err:1 http://tw.archive.ubuntu.com/ubuntu focal InRelease
  Splitting up /var/lib/apt/lists/tw.archive.ubuntu.com_ubuntu_dists_focal_InRelease into data and signature failed
Err:2 http://tw.archive.ubuntu.com/ubuntu focal-updates InRelease
  Splitting up /var/lib/apt/lists/tw.archive.ubuntu.com_ubuntu_dists_focal-updates_InRelease into data and signature failed
Err:3 http://tw.archive.ubuntu.com/ubuntu focal-backports InRelease
  Splitting up /var/lib/apt/lists/tw.archive.ubuntu.com_ubuntu_dists_focal-backports_InRelease into data and signature failed
------------------------------------------
google了一下,有些解法
1.直接用「apt-get clean」在這討論的內容
2.dhcp問題  ,參考這裡
我是用apt-get clean解決的
為了怕日後遇到又要查很多,特此誌之

2021年12月1日 星期三

Dictionary to Dynamic class object

在轉成json時常常有動態屬性的必要,這時dictionary是很需要的

以下是個不錯的extension,來源在此 

直接copy paste 了

-----------------------------------------------

public static class Extensions
{
    public static void AddRange<T>(this ICollection<T> collection, IEnumerable<T> items)
    {
        foreach (var item in items)
        {
            collection.Add(item);
        }
    }

    public static dynamic ToDynamicObject(this IDictionary<string, object> source)
    {
        ICollection<KeyValuePair<string, object>> someObject = new ExpandoObject();
        someObject.AddRange(source);
        return someObject;
    }
}
----------------------------------------------

很好用,推薦給c# codder們