2016年10月13日 星期四

Ruby - Sequel - 善用Dataset Filtering

這是前陣子在處理API的時候發現的,雖然大概大多數人都知道QQ



有時候要將前端要求的Filter加入到程式裡面,當初我會寫成
if params['filter'] == 1
   DB[:table].where(:column => :a).join(:table_c,:id => :table_c_id).order(:column)
else
   DB[:table].where(:column => :a).join(:table_b,:id => :table_b_id).order(Sequel.desc(:column))
end



有時候東西一多整個版面會很亂,後來就發現原來Dataset可以再單獨做Filter


dataset = DB[:table].where(:column => :a)

if params['filter'] == 1
   dataset = dataset.join(:table_c,:id => :table_c_id).order(:column)
else
   dataset = dataset.join(:table_b,:id => :table_b_id).order(Sequel.desc(:column))
end



有時候可以將近百行的CODE濃縮成二三十行,一點小發現

Ruby - Sequel - 將Dataset轉化為Array

從資料庫取出資料之後


一般都是
DB[:table].where(:column => :data).select(:column)


如果想要在取出資料後轉變為Array來處理資料,可以使用

DB[:table].where(:column => :data).select(:column).map {|data| data.values}


如此一來取出的資料將會變為陣列格式,可以使用迴圈處理,將Dataset轉成Hashes好像會有點問題,希望有比較熟的人可以幫忙回答一下

2015年11月24日 星期二

Unity - 使用iOS推播功能

需要先將LocalNotification實例化

UnityEngine.iOS.LocalNotification localNotification = new UnityEngine.iOS.LocalNotification();




  •  localNotification.fireDate  = 發送時間,APP開啟時不會出現推播訊息
  • localNotification.alertBody = 推播內容
  • localNotification.applicationIconBadgeNumber = APP圖示上的數字
  • localNotification.soundName = 提示聲音
記得要將權限開給APP

完整CODE如下



    public static void NotificationMessage(string message, System.DateTime newDate, bool isRepeatDay)
    {
        if (newDate > System.DateTime.Now)
        {
            UnityEngine.iOS.LocalNotification localNotification = new UnityEngine.iOS.LocalNotification();
            localNotification.fireDate = newDate;
            localNotification.alertBody = message;
            localNotification.applicationIconBadgeNumber++;

            localNotification.soundName = UnityEngine.iOS.LocalNotification.defaultSoundName;
            UnityEngine.iOS.NotificationServices.ScheduleLocalNotification(localNotification);
        }
    }


    public void Awake()
    {
        UnityEngine.iOS.NotificationServices.RegisterForNotifications(UnityEngine.iOS.NotificationType.Alert | UnityEngine.iOS.NotificationType.Badge | UnityEngine.iOS.NotificationType.Sound);
        CleanNotification();
    }