Categories
Technical

Meta Programming with Roslyn

Meta Programming with Roslyn

a video in Arabic explaining the #.Net Compiler Platform SDK aka. #Roslyn and how to use it to analyze and refactor code.

Categories
Technical

How to design your bot to handle commands commands like cancel and help

How to design your bot to handle commands commands like cancel and help

The Sample’s Repo:

https://github.com/ShawkyZ/MsBotFrameworkSample

Principles of design.. BotFramework Documentation:

https://docs.microsoft.com/en-us/bot-framework/bot-service-design-navigation

Global Message Handling Sample Repo from Microsoft:

https://github.com/Microsoft/BotBuilder-Samples/tree/master/CSharp/core-GlobalMessageHandlers

Categories
Technical

Connecting a bot with RaspberryPi running Windows IoT Core.

في الفيديو ده بشرح ازاي تربط ال Raspberry Pi بـ Bot معمول بـ Microsoft Bot Framework عشان يبدا يفهم امر معين من ال user زي مثلا “Turn the yellow led on”.

Categories
Technical

Creating a feedback form for the Weather Bot and connecting it with Facebook and Telegram.

في الفيديو ده بشرح ازاي تبني للـ Weather Bot زي Feedback dialog، و ازاي تربطه بـ Facebook و Telegram.

Categories
Technical

Building A Weather Bot Using LUIS and MS BotFramework

الbot المفروض في الاخر ياخد الرسالة من الuser و يبعتها لل Cognitive Services تحللها و منها يعرف لو ال user متضايق مثلا او لا و على اساس كده ممكن يرد عليه رد معين.

 

Categories
Technical

Building A Simple Bot Using Microsoft Bot Framework

في الفيديو ده بشرح ازاي تبني bot بسيط باستخدام ال Microsoft Bot Framework و Microsoft Cognitive Services.

الbot المفروض في الاخر ياخد الرسالة من الuser و يبعتها لل Cognitive Services تحللها و منها يعرف لو ال user متضايق مثلا او لا و على اساس كده ممكن يرد عليه رد معين.

 

Categories
Technical

Backup and Restore MSSQL DB Using C#

ازاي تاخد Database Backup من البرنامج بتاعك و ازاي تعمل Restore

مدبأيا ازاي نعمل Backup لـ Database MSSQL اصلا ؟

لو عندنا مثلا Database اسمها TestDB و عايز اعملها Backup على ال C:\TestDB.bak

هنكتب الامر ده ف ال SQL

BACKUP DATABASE TestDB TO DISK ='C:\TestDB.bak'

طيب نعملها ازاي ف ال App بتاعنا

ممكن ببساطة نضيف folderBrowserDialog عشان بس نحدد مكان ال Folder اللي الـ User عايز يحفظ فيه ال BackUp

و ناخد بعد كده ال path اللي اختاره و نشتغل عليه احنا

مثال بسيط

انا عامل كلاس اسمه Database فيه كل ال Functions الخاصة بالتعامل مع ال Database بتاعتي

و واخد من الكلاس ده object اسمه db و فيه Function اسمها BackUpDB و بتاخد parameter هو string path

دلوقتي لما ال user يدوس على button بتاع ال Browse اللي هيفتحله ال folderBrowserDialog

ده هيكون code ال button click

private void button6_Click(object sender, EventArgs e)
{
folderBrowserDialog1.ShowDialog();
string path = folderBrowserDialog1.SelectedPath;
if(path!="")
{
 
db.BackUpDB(path);
MessageBox.Show("تم الحفظ بنجاح");
}
else { MessageBox.Show("خطأ في الحفظ"); }
}

ببساطة باخد منه ال path و بديه لل BackUpDB Function

ايه اللي بيحصل ف ال BackUpDB Function بقى

public void BackUpDB(string path)
{
con.Open();
SqlCommand cm = new SqlCommand("USE master", con);
cm.ExecuteNonQuery();
SqlCommand cmd = new SqlCommand("BACKUP DATABASE TestDB TO DISK = '" + path + "\\TestDB" +DateTime.Now.ToShortDateString().Replace('/','-') + ".bak'", con);
 
cmd.ExecuteNonQuery();
con.Close();
}

طيب دلوقتي انا عايز اعمل restore

ال restore هيجيلك exception غبي كده هيقولك ان فيه connection لل database مفتوحة و انها بتستعمل دلوقتي .. طب عشان نخلص من الحوارات دي نعمل ايه ؟

هنعمل 4 حاجات

1- هنشتغل على Master بدل ال Database بتاعتنا بمعنى اني هعمل Use master

2- هخلي ال database بتاعتي Single_User

3-هعمل Restore With Replace بأمر زي ده كده

RESTORE DATABASE TestDB FROM DISK=’C:\TestDB.bak’ With Replace

4- هرجع ال database بتاعتي تاني Multi_User

طيب نعملها ازاي ف ال App بتاعنا

هنعمل المرادي SaveFileDialog عشان نحدد ال path اللي عايز يحفظ فيه ال Backup و ناخد ال path ده و نعمل restore منه

مثال بسيط

الكلاس بتاع ال Database في Function اسمها RestoreDB بتاخد string path برضه

دلوقتي لما ال user يدوس على button عشان يفتح ال SaveFileDialog هاخد ال FileName من ال SaveFileDialog ده و هبعته للـFunction

private void button7_Click(object sender, EventArgs e)
{
openFileDialog2.Filter = "Backup File (*.bak)|*.bak";
openFileDialog2.FileName = null;
openFileDialog2.ShowDialog();
string path = openFileDialog2.FileName;
if (path != "")
{
try
{
db.RestoreDB(path);
MessageBox.Show("تم ");
Application.Restart();
}
catch { MessageBox.Show("خطأ"); }
}
else
{
MessageBox.Show("خطأ في الاسترجاع");
}
}

و ده اللي بيحصل جوة ال Function بتاعت RestoreDB

public void RestoreDB(string path)
{
 
con.Open();
SqlCommand cm = new SqlCommand("USE master", con);
cm.ExecuteNonQuery();
string Alter1 = @"ALTER DATABASE [TestDB] SET Single_User WITH Rollback Immediate";
SqlCommand Alter1Cmd = new SqlCommand(Alter1, con);
Alter1Cmd.ExecuteNonQuery();
try
{
SqlCommand cmd = new SqlCommand("RESTORE DATABASE TestDB FROM DISK='" + path + "' With Replace", con);
cmd.ExecuteNonQuery();
}
catch { }
string Alter2 = @"ALTER DATABASE [TestDB] SET Multi_User";
SqlCommand Alter2Cmd = new SqlCommand(Alter2, con);
Alter2Cmd.ExecuteNonQuery();
con.Close();
}