הייתי אמור למצוא כמה פעולות עשה כל לקוח בשעה האחרונה, כדי לזהות פעילות חריגה. אז לאחר משיכת המידע מבסיס הנתונים יש לי DataTable. קודם כל חילצתי את מספרי החשבונות
var accounts= table.Rows.Cast<DataRow>().Select(a => Convert.ToInt32(a["CustomerId"], CultureInfo.InvariantCulture));
עכשיו כדי למצוא כמה פעמים מופיע כל ערך ברשימה, נשתמש ב LINQ פשוט:
var items = accounts.GroupBy(a => a);
foreach (var group in items)
{
int customerId= group.Key;
int numberOfActions= group.Count();
}
Be the first to rate this post
- Currently 0/5 Stars.
- 1
- 2
- 3
- 4
- 5
Posted by
talgiladi on
7/5/2010 2:30 PM |
Comments (0)
לאחרונה הייתי צריך להוציא את תיעוד הקוד לקבצי HTML, לא תהליך מסובך אבל בכל זאת צריך לעקוב אחר כמה צעדים כדי להימנע מעצבים מיותרים…
1. הורדת והתקנת HtmlWorkShop – התוכנה שמאפשרת לייצר קבצי עזרה מסוג chm (הגירסה האחרונה הייתה 4.74.8702.0)
http://download.microsoft.com/download/0/A/9/0A939EF6-E31C-430F-A3DF-DFAE7960D564/htmlhelp.exe
2. אפשרי ורצוי להוריד ולהתקין את ערכת הפיתוח של ויזו’אל סטודיו. אני עובד עם גירסת 2008
http://download.microsoft.com/download/c/2/0/c20073e0-c842-44a8-a4e9-7dd5d289eafe/VsSDK_sfx.exe
3. הורדת והתקנת SandCastle ממיקרוסופט (הגירסה האחרונה הייתה 2.4.10520)
http://www.microsoft.com/downloads/details.aspx?familyid=e82ea71d-da89-42ee-a715-696e3a4873b2&displaylang=en#Instructions
4. הורדת והתקנת הממשק של SandCastle (הגירסה האחרונה הייתה 1.8.0.3)
http://shfb.codeplex.com/
5. הרצת הממשק. יש לבחור בחלונית ProjectExplorer תחת Sources את קבצי הקוד. אפשר לבחור גם סולושן שלם.
לחיצה על Build תיצור את הקבצים. אם עדיין יש בעיה תנסו לתת לו את הערך HtmlHelp1xCompilerPath ידנית – שזה הנתיב לקבוץ HtmlWorkshop שהתקנתם בסעיף 1, שבברירת מחדל יהיה ..\..\Program Files\HTML Help Workshop\
Be the first to rate this post
- Currently 0/5 Stars.
- 1
- 2
- 3
- 4
- 5
- Find the path to the 'InstallUtil.exe' program.
It should be found on the .NET framework path, usually on
'C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727'
- Browse to the directory with your service
files
- Open a command prompt
- To install, write the 'InstallUtil' path and 'MyService.exe'. For example :
"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe" MyService.exe
- To uninstall, write the 'InstallUtil' path, /u , and 'MyService.exe'. For example :
"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe" /U MyService.exe
Be the first to rate this post
- Currently 0/5 Stars.
- 1
- 2
- 3
- 4
- 5
הפעם נדבר על הצפנה אסימטרית. מה הכוונה? ובכן, החיסרון הכי גדול של הצפנה סימטרית הוא כיצד להעביר לצד השני את המפתח/סיסמא. הרי הסיבה העיקרית שרצינו להשתמש בהצפנה היא כי אנחנו לא בוטחים בדרך שהמידע עובר בה ובאנשים שיראו אותו בדרך, אז איך נעביר את המפתח באותו הדרך??אז יש פיתרון... הצפנה אסימטרית. הפעם אין מפתח אחד שיכול גם להצפין וגם לפתוח את ההצפנה, אלא יש מפתח אחד (מפתח פרטי) שיכול גם להצפין וגם לפענח את ההצפנה, ויש מפתח אחד (מפתח ציבורי) שיכול רק להצפין. אז מה יצא לנו מזה? ככה, אנחנו מפרסמים לכולם את המפתח הציבורי שלנו, אז הם יכולים כעת להצפין את המידע מאצלהם, ואז לשלוח אלינו, ורק אנחנו עם המפתח הפרטי יכולים לפענח את ההצפנה... נחמד...ואם אני רוצה לשלוח להם תשובה מוצפנת בחזרה? אז שוב, או שהצד השני ישלח לי מפתח ציבורי משלו, ואז לאחר שאצפין את התשובה עם המפתח שלו, אחזיר לו את המידע המוצפן והוא יפענח אותו עם המפתח הפרטי שלו, או, שבעזרת המפתח הציבורי ששלחתי לצד השני בהתחלה, הוא יצפין לי מפתח/סיסמא להצפנה סימטרית ואז פשוט נמשיך את השיחה שלנו בעזרת הצפנה סימטרית(שזו השיטה הסטנדרטית שבה עובד SSL) . למה שיטה זו עדיפה? ובכן, ההצפנה האסימטרית דורשת הרבה מאמץ מהמעבד והיא מאוד איטית ביחד לשיטה הסימטרית.ועכשיו לקצת קוד:
קודם ניצור זוג מפתחות , אם עדיין אין לנו:המחלקה ב C# שמשמשת להצפנה אסימטרית נקראת RSACryptoServiceProvider (שלוש אותיות ראשונות על שם בוני האלגוריתם...)
ניצור אובייקט חדש, והוא כבר ייצר עבורנו זוג מפתחות:
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider ();
את המפתח הפרטי (שלנו, שיכול לגם לפענח וגם להצפין) ניצור באמצעות הפונקציה ToXmlString עם פרמטר true להוספת המידע של מפתח פרטי בסטרינג שמתקבל:
string privateKey= rsa.ToXmlString(true);
את המפתח הציבורי ניצור באותה שיטה אך על ידי שליחת ערך false כדי שלא להוסיף את המידע על מפתח פרטי לה
string publicKey = rsa.ToXmlString(false);
כעת נפרסם את המפתח הציבורי שלנו, ומי שירצה להצפין לנו הודעה ישתמש בו בעת ההצפנה:
ניצור אובייקט הצפנה:
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider ();
נאתחל אותו עם המפתח הציבורי:
rsa.FromXmlString(publicKey);
נהפוך את המידע שאנו רוצים להצפין למערך בתים:
byte[] clearData=Encoding.UTF8.GetBytes(clearText);
נבצע את ההצפנה :
byte[] encryptedData = rsa.Encrypt(clearData, false);
ונהפוך חזרה לסטרינג שניתן לשליחה בתור טקסט באימייל או דף אינטרנט:
string encryptedString = Convert.ToBase64String(encryptedData);
כעת לאחר שהצד השני שלח לנו את הסטרינג המוצפן, נשתמש במפתח הפרטי לפענח את ההודעה :
ניצור אובייקט הצפנה חדש ונאתחל אותו עם המפתח הפרטי שלנו:
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider ();
rsa.FromXmlString(privateKey);
נהפוך את המידע המוצפן שקיבלנו למערך בתים:
byte[] encryptedData = Convert.FromBase64String(encryptedString);
נבצע את הפיענוח:
byte[] clearData = rsa.Decrypt(encryptedData, false);
ונהפוך לטקסט קריא:
string clearText = Encoding.UTF8.GetString(clearData);
זהו... די פשוט
להורדת קבצי מקור ופרוייקט
Be the first to rate this post
- Currently 0/5 Stars.
- 1
- 2
- 3
- 4
- 5