餐飲業POS走向智慧餐飲的幾個方向

隨著疫情的關係,消費者越來越習慣透過網路去滿足自己在飲食上的需求。而且著重在效率以及體驗上~餐飲業相關的系統以及POS都面臨到不再只能把自己局限在收銀上面而已,而是能集合線上點餐、外送/外賣平台整合、線上預購、團購等功能於一體為商業需求的綜合管理系統。

要達到能實現智慧餐飲的要點應該有:

一、自助點餐-無論是使用kiosk或是手機點餐系統去做點餐以及付費,重要是不需要排隊,節省收銀員人力以及時間,也提升翻桌率與整體服務時間。

二、透過LINE或會員平台去留住客戶-如果使用外賣外送平台的話,使用者都會留在平台,店家無法直接與客戶聯繫,可以透過LINE或自有會員平台留住自己的使用者數據。

三、大數據分析-透過累積的用戶資料,去描繪與瞭解自己的客戶畫象,可以有效的做精準行銷。

四、會員管理-建立積分/積點模式,留住老客戶。

五、系統流程的自動化-例如客戶下單後,訂單自動同步的後端廚房,減少溝通,降低出錯

六、流量為王-透過FB、LINE做為入口,從大魚池拉進自己的小魚池中,進而提升線上銷售量。

系統商應該具備功能:

一、行動化點餐

二、預約排隊、自動叫號

三、線上訂位

四、折扣、積分/積點、儱惠券等方式提高忠誠度與二次消費

五、外賣/外送-結合uber eats/Foodpanda等功能

對 Azure DevOps 導入有興趣值得一聽的~Azure DevOps導入與數位轉型祕辛

這是 ‧NET Walker 大內行者 董大偉老師舉辦的一場很棒的線上課程,除了二位老師外還有 Will 保哥的技術交流中心 的保哥。在FB還可以看到 安德魯的部落格 Andrew Wu 的留言,大約2個小時多的直播中。從一開始為何導入Azure DevOps 是為了Sprint週期變短以及Dev+Ops等指標。討論交付時間延長就等於安全交付?實際開發狀況是專案時間就夠緊迫了,我要有辦法去做TDD?CodeReview?重構?技術債改善這些事嗎? 接著探討頻繁交付的適當性等議題。 大家可以聽一聽實務界技術大老討論,不過說真的沒有對錯,能夠讓自己公司團隊做出質量好產出的就是適合自己的方法。

不知不覺與Delphi 結緣了22年了

89年從豐原高商商業經營科畢業後,進入勤益就讀時接觸到的程式是Delphi 5,因為直觀以及強大的資料庫功能就深深的愛上這個語言後,當兵時在中華民國海軍陸戰隊遇到寫軍內進銷存系統的也是用Delphi,退伍後就業待過張鐵工廠做廠內MIS也是用Delphi,接著進入國興資訊開發廣三sogo、美華泰等系統也是delphi,接著進入中醫醫療整合軟體公司國泰電腦,除了中醫系統外,檢驗系統、驗檢儀器連線等相關系統也是以D3~D5為主要的開發主力。甚至當初民宿管理pda系統也是透過Delphi轉換到.net上。

然後就這樣,89年到111年的22年,幾乎都把delphi當作主力的開發工具。

雖然現在已經將重心從Delphi移到.net c#為主,但許多小工具或是資料庫系統還是可以很快先從delphi做出雛型再做驗證。

可惜在推廣的部份以及使用的普及性大不如前了,不過只要它還活著的一天,我還是喜歡delphi這門語言就是了!雖然說近幾年.net 在台灣比較盛行,不過追根究柢的話,.net 的首席架構師Anders Hejlsberg 其實也是 Delphi 也就是turbo Pascal的主設計師。也難過常常覺得.net 上有delphi 的影子(自己錯覺)。這麼一想就安慰多了xddd

第四方金流高鉅初體驗

最近跟第四方金流高鉅做串接服務,主要是以金流以及訂閱式服務開發為需求。

串接上倒是沒有很多特別要注意的地方,我想大部份的模式都與其他金流服務綠界~

等搞定後再分享程式碼出來

相關資源:

高鉅第四方金流模擬串接服務

https://pay.usecase.cc/simulator/payment/orders

高鉅第四方金流交易設計概要

https://doc.usecase.cc/Payment/Store/?php#paypage

Delphi 結合地牛Wake Up!使用line notify做地震速報

過年期間新竹的地震頻繁,因為有裝地牛Wake Up!這個電腦版的程式,所以可以第一時間預測得知地震的訊息以及地震震央、地震深度、地震震度等資料。

地牛Wake Up!地震速報警報

在它的設定裡面發現可以使用程式做連動,於是結合上次曾經Delphi拿Line Notify來當通知程式。

然後就可以收到像以下的地震即時訊息透過line了。

C# RabbitMQ模擬Producer與Consumer

最近系統考量可靠性問題,在中間加上一層 Message Queue(MQ)的架構,採用的是目前最多人使用的RabbitMQ當作server服務。順便直接以百萬筆資料為單位塞入MQ來測試一下效能。

Producer程式

System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();//引用stopwatch物件
            sw.Reset();//碼表歸零
            sw.Start();//碼表開始計時
            //
            string queue = "info";
            try
            {
                var factory = new RabbitMQ.Client.ConnectionFactory();
                factory.HostName = "localhost";
                factory.UserName = "guest";
                factory.Password = "guest";

                using (var connection = factory.CreateConnection())
                {
                    using (var channel = connection.CreateModel())
                    {
                        bool durable = true;
                        channel.QueueDeclare(queue, durable, false, false, null);
                        RabbitMQ.Client.IBasicProperties properties = channel.CreateBasicProperties();
                        properties.DeliveryMode = 2;
                        for (int i = 1; i <= 100; i++)
                        {
                            LogInfo info = new LogInfo();
                            info.SYS_ID = "系統";
                            info.COMPANY_ID = "公司";
                            info.STORE_ID = "店別";
                            info.Content = "訊息";
                            string m1 = Newtonsoft.Json.JsonConvert.SerializeObject(info);
                            var body = Encoding.UTF8.GetBytes(m1);
                            channel.BasicPublish("", queue, properties, body);
                        }

                    }
                }
            }
            catch (System.Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
            sw.Stop();
            string result1 = sw.Elapsed.TotalMilliseconds.ToString();
            Console.WriteLine("共花費:" + result1 + "毫秒");
            Console.ReadLine();

Consumer端程式

    string queue = "info";
            try
            {
                var factory = new ConnectionFactory();
                factory.HostName = "localhost";
                factory.UserName = "guest";
                factory.Password = "guest";
                var connection = factory.CreateConnection();
                var channel = connection.CreateModel();
                channel.QueueDeclare(queue, true, false, false, null); // 定義處理那一個queue
                channel.BasicQos(0, 1, false);  // 每次處理1則

                var consumer = new RabbitMQ.Client.Events.EventingBasicConsumer(channel); 
                // 定義收到queue的內容處理方式
                consumer.Received += (sender, e) =>
                {
                    byte[] body = e.Body.ToArray();
                    string message1 = Encoding.UTF8.GetString(body); 
                    LogInfo log = JsonConvert.DeserializeObject<LogInfo>(message1);  // 將queue中的json轉回物件
                    // 以下可以更改為自己要處理的事項
                    Console.WriteLine(log.DateTime.ToString("yyyy/MM/dd HH:mm:ss:FFF")+" "+log.Content );  // 先顯示畫面上
                    //
                    channel.BasicAck(e.DeliveryTag, false); // 處理完手動回應    

                };
                channel.BasicConsume(queue, false, consumer);  // 開始處理
                Console.ReadLine();
                connection.Close();
                channel.Close();
            }
            catch (System.Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }

自然人憑證作為公文系統、簽核系統簽章用憑證

最近要用.net c#去開發憑證簽證、加解密的功能,於是下午跑去申請了自然人憑證。然後瞭解一下卡片中的資料~繼續努力中,似乎自然人憑證與未來的新式晶片身份證都會當做很重要的憑證以及加解密的依據。

內政部憑證 網址: https://moica.nat.gov.tw/index.html

電子簽章法 https://law.moj.gov.tw/LawClass/LawAll.aspx?pcode=J0080037

跨平台網頁元件下載 網址: https://moica.nat.gov.tw/rac_plugin.html

HiPKI Local Server範例 網址: https://gpkiapi.nat.gov.tw/PKCS7Verify/

http://localhost:61161

HiPKI Local Server (version:1.3.4.103339) at 127.0.0.1:61161

http://127.0.0.1:61161/pkcs11info


http://127.0.0.1:61161/sign

http://127.0.0.1:61161/decrypt

ODP.net 支援 .net 6與Entity Framework Core 6

Oracle開發團隊釋出新的ODP.NET 支援Oracle Database 11g Release 2 (11.2.0.4) 以上的版本,包括免費的21c xe、21c ee跟 Autonomous DB.

ODP.NET Core for .NET 6  以及 ODP.NET EF Core for EF Core 6 都免費透過 NugetNU取得。

來源

Announcing Oracle Support for .NET 6 and Entity Framework Core 6