לגלישה באתר בגירסה המותאמת לסלולאר
| הוספת הודעה
הגדרות תצוגה

הגדרות עץ הודעות

מאפייני צפייה

הצג טקסט בתצוגה
הצג תגובות באופן
עדכן

פורום תכנות net.

בשנת 2002 השיקה מיקרוסופט טכנולוגיה חדשה, NET. היה חוסר במקום בו ניתן לשאול שאלות בנושא NET. בארץ, ולכן הוחלט לפתוח את פורום זה. 
פורום NET. (שנחשב כיום לפורום המוביל בארץ) הוא המקום בו יכולים מפתחים לשאול שאלות ולנהל דיונים בנושאים שונים.  לפני ששואלים בפעם הראשונה, יש לקרוא את תקנון הפורום.
 
 
 

הנהלת הפורום:

אודות הפורום תכנות net.

בשנת 2002 השיקה מיקרוסופט טכנולוגיה חדשה, NET. היה חוסר במקום בו ניתן לשאול שאלות בנושא NET. בארץ, ולכן הוחלט לפתוח את פורום זה. 
פורום NET. (שנחשב כיום לפורום המוביל בארץ) הוא המקום בו יכולים מפתחים לשאול שאלות ולנהל דיונים בנושאים שונים.  לפני ששואלים בפעם הראשונה, יש לקרוא את תקנון הפורום.
 
 
 
הוספת הודעה

צרף
תמונה וידיאו קובץ
קבצים המצורפים להודעה

לצפיה ב-'איך אני מעדכן קובץ'
איך אני מעדכן קובץ
25/04/2017 | 06:04
1
7
XML אוטומטית פעם ביום
לצפיה ב-'קובץ XML מוכב מתגים, עדיף לעדכן את כל הקובץ'
קובץ XML מוכב מתגים, עדיף לעדכן את כל הקובץ
25/04/2017 | 12:06
2
להכנס לתוך הקובץ ולשנות חלקים בדידים מתוכו עלול להרוס את המבנה\פורמט של XML ולהפוך את הקובץ להיות בלתי-קריא
 
אם יש לך שאלות, אשמח אם תוכל להיות קצת יותר ספציפי מאשר בשאלה המקורית
 
בברכה,
זיו
לצפיה ב-'לוח מערכת שעות שבועי בWinforms'
לוח מערכת שעות שבועי בWinforms
21/04/2017 | 22:17
1
16
שלום חברים. במסגרת קורס בתואר, אני עושה פרויקט של מערכת לניהול מערכת שעות. דרוש לי מערכת שעות שתוצג בצורה שבועית ושעתית. כלומר עמודות של ימים ושורות של שעות כמו מערכת שעות סטדנרטית, שתשלוף נתונים מאוחר יותר מתוך מסד נתונים.
 
יש למישהו רעיון איך לבנות דבר כזה? באיזה פקדים להשתמש?
מצאתי כל מיני דברים מוכנים בגוגל. אבל מאוד ישנים ויש לומר גם מכוערים. הייתי שמח לבנות משהו כזה בעצמי, רק צריך הכוונה.
 
הפרויקט נכתב בשפת c# בעיצוב של Windows forms.
לצפיה ב-'מה אתה רוצה להשיג?'
מה אתה רוצה להשיג?
25/04/2017 | 14:09
2
1. אם המטרה היא לימודית ואתה מעוניין לצבור ידע ב UI - לבנות משהו ב WINFORMS זה טעות. זו שפה מתה, ללא כל שימוש בפרדיגמות שנפוצות היום בשפות UI חדשות (אנגולר\WPF\מובייל) והידע שתצבור לא יואיל לך בהמשך.
 
2. במידה וזה המצב ואתה נדרש לבנות את זה רק ב WINFORMS - הכל שאלה של כמה מודולרי אתה צריך שהפקד שלך יהיה. יש כמות קבועה של שעות ? (כל שיעור הוא חצי שעה ? הפסקה תמיד במקום הקבוע, וכו') או שהכל דינמי ?
בסופו של דבר אתה יכול להשתמש באיזה פקד גריד כלשהו, אבל שידרוש הרבה התאמות למה שאתה מנסה להשיג, או לחילופין ליצור בצורה דינמית (או סטטית) פקדי טקסט שירכיבו את המערכת שעות...
 
 
לצפיה ב-'עזרה בתרגום מונחים מתחום עיבוד הנתונים הממוחשב'
עזרה בתרגום מונחים מתחום עיבוד הנתונים הממוחשב
17/04/2017 | 12:24
1
29
איך הייתם מתרגמים לעברית את
Create Replication Document Outbound Metadata
האם התרגום
צור מטא-נתונים יוצאים של מסמך שכפול
מעביר לדעתכם את המסר?
תודה
לצפיה ב-'ועוד שאלה: inherited'
ועוד שאלה: inherited
17/04/2017 | 14:20
20
מהם המונחים שמשתמשים בהם בעברית לנושאים של 'ירושה' - inherited כמו בטקסט הבא או זה שאחריו:
 
Warning: this action will unshare collections with the base form.  Future changes to collections on base forms may require manual changes to inherited forms in order to work correctly.  Do you want to continue?
 
View Attributes Inherited From Property
 
האם טקסטים מקצועיים בתחום זה משתמשים במילה ירושה או לרשת?
לצפיה ב-'איך אני מוצא את שם העיר בה אני נמצא עכשיו'
איך אני מוצא את שם העיר בה אני נמצא עכשיו
14/04/2017 | 09:46
5
33
c# asp.net
לצפיה ב-'בעיקרון באמצעות חיפוש קצר בגוגל...'
בעיקרון באמצעות חיפוש קצר בגוגל...
14/04/2017 | 23:15
23
אתה יכול למצוא בצד שרת את המיקום באמצעות ip geolocation
או שאתה יכול לבקש מהמשתמש לשתף את המיקום שלו באמצעות ה geolocation API של הדפדפנים.
 
שוב חיפוש בגוגל מביא לך את כל התשובות (לדעת לנסח את השאלה ולחפש אותה בגוגל זה 50% מהדרך לפיתרון)
 
לצפיה ב-'השתמשתי ב- navigator.geolocation'
השתמשתי ב- navigator.geolocation
14/04/2017 | 23:35
3
16
האם זה בסדר ?
לצפיה ב-'אם זה עושה את מה שרצית אז כן...'
אם זה עושה את מה שרצית אז כן...
15/04/2017 | 00:22
2
13
לצפיה ב-'הבעיה היא שהדפדפן מבקש'
הבעיה היא שהדפדפן מבקש
15/04/2017 | 11:26
1
24
אישורים להפעלת ה- JS
האם אפשר לעקוף זאת ?
לצפיה ב-'לא נראה לי שאפשר, זה פונקציונליות של הדפדפן...'
לא נראה לי שאפשר, זה פונקציונליות של הדפדפן...
16/04/2017 | 11:55
17
את גוגל שאלת?
לצפיה ב-'לא מאפשר לי לשלוח הודעה'
לא מאפשר לי לשלוח הודעה
14/04/2017 | 09:44
20
לצפיה ב-' חג שמח מתפוז '
חג שמח מתפוז
( לעמוד שלי בתפוז )
09/04/2017 | 17:01
1
חג פסח שמח וכשר לכולם 
 
בברכה,
תפוז אנשים
לצפיה ב-'כתיבת קוד ב C'
כתיבת קוד ב C
03/04/2017 | 18:49
1
39
היי קיבלתי תרגיל
את התכנית הבאה עליכם לממש ללא שימוש בהוראת  if, אופרטור טרינארי(:?), switch.
כתבו תכנית המבקשת וקולטת 2 מספרים A ו-B
התוכנית מדפיסה 1 אם A מתחלק ב B , או B מתחלק ב A ללא שארית. אחרת יודפס 0. עבור הפלטים הבאים.
כתבתי קוד בויזאול , אין לי מושג אם הקוד הזה הגיוני ,ז"א אם הוא יעשה את מה שמתבקש בתרגיל. הויזאול רושם לי כמה הערות שגויות לגבי הקוד .
להלן הערות: 
Warning    1    warning C4013: 'scanfs' undefined; assuming extern
returning int
Error    2    error C2106: '=' : left operand must be l-value     
בבקשה תעזרו לי עם הפתרון של התרגיל ועם מה עשיתי לא בסדר. (יצאתי מנקודת הנחה שאם הביטוי הוא אמת המחשב יתן 1 ואם הוא שקר הוא יתן 0.
 #include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
int main(){
int a, b;
double x;
printf("enter two numbers");
scanfs("%d%d", &a, &b);
x = (a / b % 10 = 0 || a / b % 10 = 0);
printf("%lf", x);
getch();
return 0;
}


     
 
לצפיה ב-'לגבי השגיאה'
לגבי השגיאה
05/04/2017 | 19:17
21
את משתמשת ב-= (השמה) במקום == (השוואה).
לגבי הלוגיקה, אם את רוצה לבדוק האם מספר מתחלק באחר ללא שארית, אפשר לעשות עליהם מודולו ולראות אם חזר 0.
למשל:
 int a = 8;
int b = 4;
int r = a % b;

// r == 0? we're good to go.
 
לצפיה ב-'עזרה במונחי תכנות עבור ריאיון עבודה.'
עזרה במונחי תכנות עבור ריאיון עבודה.
26/03/2017 | 15:34
2
57
באחד החברות שאליהן אני אמור להתראיין, נתנו לי למלא באינטרנט טופס פרטים ובו הם שואלים באנגלית על ניסיון שלי בכל מיני תחומים.
אחד התחומים הוא:
SPs, functions
מה זה?
 
 
בנוסף אני אמור לענות בשורה אחת על
Academic Graduation From?
 
האם הם מתכוונים לאיזה תואר עשיתי באוניברסיטה? הציון שבו סיימתי את התואר? קישור לתעודה הרלוונטית שמעידה על התואר שעשיתי?
 
בתודה מראש לכל המסייעים.
 
לצפיה ב-'SP יכול להיות הרבה דברים.. תלוי מה סוג המשרה..'
SP יכול להיות הרבה דברים.. תלוי מה סוג המשרה..
26/03/2017 | 18:16
1
46
אולי Stored Procedures?
 
לגבי השאלה השניה, אני חושב שהכוונה היא מאיפה קיבלת תעודת סיום תואר [מניחים שאולי התחלת לימודים במקום אחד וסיימת במוסד אקדמי אחר]..
לצפיה ב-'תודה רבה!'
תודה רבה!
26/03/2017 | 18:24
14
לצפיה ב-'thread vs async await תהייה לגבי אסינכרוניות ב C#'
thread vs async await תהייה לגבי אסינכרוניות ב C#
21/03/2017 | 13:24
11
93
אני מפתח ב C# מערכת חדשה ותוהה לגבי נקודה שם
אני יודע להשתמש ב thread/threadPoll/ async -await אבל חסר לי סגירה של הנושא.
אני רוצה לפתח ב C# מעבר על רשימה של תיקיות ומחיקה של כל הקבצים בתיקיות האלה שמתחילים באות a (לדוגמא)
אז נניח שיש לי list של נתיבים.
בנוסף, אני רוצה לשלוט על כמות ה THREAD שירוצו
מספר שאלות בנושא
1- הרי כל ה THREAD שרצים , הם ירוצו תחת אותו פרוסס,
אז מה ההבדל במהירות אם ארוץ עם כמה THREAD או שרוץ עם THREAD אחד אבל כאשר אני מוחק קובץ אמחוק בפונקציה שהיא async ועל המחיקה אעשה await ?(ואז בזמן במחיקה ה thread שלי ימשיך לפעולות אחרות?)
אם ארוץ עם כמה THREAD הרי יש contex switch בניהם וזה אומר בזבוז זמן(כלשהו) במעבר בניהם.
 
 
2-
 אם אני עושה קוד כזה
 public static class FileExtensions {
  public static Task DeleteAsync(this FileInfo fi) {
     return Task.Factory.StartNew(() => fi.Delete() );
  }
}

FileInfo fi = new FileInfo(fileName);
await fi.DeleteAsync(); // C# 5
מה זה אומר בפועל?
אני עושה AWAIT על הפעולה deleteAsync אבל בפועל יפתח THREAD (מתוך THREADPOOL ) שיעשה זאת, וידרוש זמן CPU שהוא מחכה.
זה אומר שיהיה לי בסוף בזבוז זמן CPU על המתנה למחיקה , נכון?
לא כמו פעולה async אמיתית שאם אני עושה עליה AWAIT אני נשאר ב THREAD שלי(וממשיך לעבוד על דברים אחרים) ומקבל התראה כאשר הפעולה האסינכרונית נגמרה
 
3-לא ראיתי דרך ב C#  לעשות מחיקת קובץ בצורה אסינכרונית ( שבאמת יהיה אסינכרוני עד ממש ה KERNEL )
תודה רבה!
לצפיה ב-'-->'
-->
21/03/2017 | 15:33
10
51
1. קשה לראות את זה ברמה של מחיקה
בוא נדבר על פעולת IO אחרת
בוא נגיד שבמקום למחוק היית עושה כתיבה של קובץ
אין שום בנפיט אם תפעיל כמה THREADS ביחד
זה סתם יגרום לאיטיות
מצד שני אם זה יהיה SEQUENTIALLY אז לא יהיה לך את ה"בואו כולנו נלך לכתוב ויתהפך העולם"
אותו דבר במחיקה אבל בקטנה
 
את המחיקה עצמה כן הייתי עושה( או לא עושה) עם AWAIT כי זה פעולת IO.
אבל(!) זה לא חוק ברזל. צריך לבדוק את זה. יכול להיות שמשתלם לך לא לעשות את זה ASYNCיש - בגלל שמחיקה היא פעולה מאד מאד קצרה. כמובן שאם חשוב לך מאד  רספונסיביות אז תעשה את זה ASYNCיש.
 
 
 
2. נכון. לא הרווחת כלום ואפילו בזבזת THREAD. וגם החלק השני  נכון.
 
לצפיה ב-'TIL מזל שאמרתי שצריך לבדוק את זה -> הנה הסיבה'
TIL מזל שאמרתי שצריך לבדוק את זה -> הנה הסיבה
21/03/2017 | 16:26
9
42
מסתבר שעבודה ב PARALLEL גם במערכת קבצים ( SSD אצלי לפחות) יותר משתלם לעבוד עם PARALLEL.  ועל כן אני לוקח בחזרה את מה שאמרתי בסעיף 1  - אבל לא את החלק שצריך לבדוק.
 
בחלק הראשון של המבחן הנל אני קורא(!) פרללית ולא פרללית הרבה קבצים
 
ובחלק השני אני כותב(!) פרללית ולא פרללית 1000 קבצים שכל אחד בגודל 100000 בייטים.
 
בשניהם ( ולאחר כמה ניסיונות) התוצאות היו חד משמעית לטובת הפרללי !
כמובן שזה לא מבחן 100% משקף אבל נותן לך פחות או יותר תמונה .
 
הסתכל כאן במבחן : 
 
עכשיו לגבי האם ASYNC יאיץ את זה עוד יותר ? תבדוק ותחזיר תשובה:)
 
 
לצפיה ב-'בדקתי גם את החלק האחרון'
בדקתי גם את החלק האחרון
21/03/2017 | 16:50
8
34
ו ASYNC מאיט את זה
זה הגיוני כי הוא יוצר STATEMACHINE
 
 
 
לצפיה ב-'תגובה'
תגובה
21/03/2017 | 16:55
7
33
א- התמונה-הקישור שבור-אשמח לראות את הקוד שהרצת שאנסה לעשות זאת גם במחיקה
ב- לגבי האם הרווחתי בלעטוף את DELETE ב TASK RUN,  
מה שהבנתי שזה כן מקצה לו THREAD מתוף הTHREADPOOL אבל הTHREAD הזה לא תופס CPU(חוץ מלתפוס ולשחרר אותו)
ככה שהTHREAD הראשי שלי יכול להמשיך ולבצע פעולות(באמת במקביל למחיקה), ולכן ה CPU לא מחכה למחיקה
ג- ASYNC מאט את הכתיבת קבצים? מוזר, חשבתי שלתפוס כל פעם THREAD מה THREADPOOL יקח יותר זמן מאשר המכונת מצבים שהוא יוצר- אשמח לראות את הקוד המקבילי שלך שאמרת שהוא הכי יעיל
לצפיה ב-'>'
>
21/03/2017 | 17:00
6
31
א- התמונה לא שבורה אצלי (מוזר)
אני מדביק אותה שוב כאן
 
ב- לא מבין . TASK RUN כן פותח THREAD נוסף מה POOL. וזה שהוא לא משתמש ב הרבה CPU זה לא אומר כלום
כל THREAD נוסף זה עוד זיכרון.
א תתאר לך ש100K באים לעשות לך את זה ...אז 100K ט'רדים יפתחו ? נראה לך הגיוני? אפשרי אבל הוא יחנק.
 
 
ג - זה לא ASYNC מאט. המערכת ב RUNTIME יוצרת STATEMACHINE של לפני ה AWAIT ואחרי ה AWAIT והמעבר הזה - מאט את הפעולה בכללותה.
וקןדם כל השתמשנו כאן ב ASPARALLEL
ופה ה CATCH.
ASPARALLEL לא יצור לך THREADS יותר מ כמה CORES שיש לך
אצלי יש 8 CORES.
אז 8 THREADS עבדו.
(אתה יכול שהוא יצור לך יותר מ 8 אבל זה כבר משהו אחר)
 
לסיכום ולפי המבחו - אם אתה רוצה PERFORMANCE - זה עם ASPARLLEL  ( בלי ASYNC).
לצפיה ב-'תגובה'
תגובה
22/03/2017 | 09:08
5
18
א- AsParallel.
 למה שהוא יהיה יותר מהיר מאשר סידרתי? הרי בסוף אי אפשר למחוק 2 קבצים בו זמנית
 ואם הוא מחלק THREAD אחד לכל CORE זה מוזר, כי תמיד חשבתי שפרוסס רץ בתוך CORE אחד , ואי אפשר שפרוסס יחולק בין כמה CORE (מעניין..למדתי)
אז גם אם יש חלוקה לCORE , בסוף ה I/O יכול למחוק רק קובץ אחד בו זמנית
 
ב- אשמח אם תראה לי את הקוד שכתבת עבור ה AWAIT
 
תודה
לצפיה ב-'בוודאי'
בוודאי
22/03/2017 | 09:36
4
19
א-למה שהוא יהיה יותר מהיר מסדרתי ? לא יודע. אני אצטרך לברר את זה. כנראה זה קשור ל SSD יחד עם FW4. ( שוב כנראה)
מעניין יהיה לראות את המבחן עם HDD מחטים. פרוסס זה מרחב זיכרון .
בתוך כל פרוסס יש לפחות THREAD אחד שהוא תכלס רץ על CORES.
 
שוב - פרוסס זה וירטואליזציה של זיכרון , ט'רד זה וירטואליזציה של CPU.
תחשוב על CORE אחד עם תוכנית עם 5 ט'רדים.
כל אחד מקבל את ה TIME שלו על ה CPU. כלומר כל ט'רד רץ בזמן משלו ( ורק הוא) על ה CORE . אז אם אתה מסתכל עכשיו על הרבה פרוססים עם הרבה טרדים - אתה יכול להבין למה זה וירטואליזציה של CPU.
 
ASPARALLEL  - זה מה שכיף בו - שהוא פותח THREAD עבור כל CORE.
 
 
ב -  בוודאי הנה הקוד. שים לב שבניתי פונרציה קריאה וכתיבה אסינכית ולא אסינכית.  
רץ ב LINQPAD
לצפיה ב-'תגובה'
תגובה
22/03/2017 | 09:56
3
14
חשבתי בהתחלה ש AsParaller זה כיביכול "תיכנות ישן" ועדיף תמיד ASYNC שזה הרי החידוש של הדוטנט הדי חדש(3/4 שנים)
 
ב.
. אז מה דעתך?
יש לי WIN SERVICE בלי UI והוא עובר על רשימה של תיקיות(יש בהם המון קבצים)ורוצה למחוק קבצים בתנאי מסויים(גודל גדול מ X בתים)
איך עדיף לעשות זאת?
לעשות
 foreach directoryPath in ListOfDirectoriesPath
{
 Directory.EnumerateFiles(directoryPath , "*.*", SearchOption.AllDirectories).Where(item=>item.Length>1000).AsParallel().ForAll(T=>T.DELETE)


}
חושב שזה הכי מהיר?
לצפיה ב-'ממש לא'
ממש לא
22/03/2017 | 10:12
2
19
כל הקטע ב ASYNC זה לחסוף ב THREADING עבור פעולות שלא צריכות אותם
 
ASYNC תמיד היה
ב APM
EAP
TAP
 
פשוט עכשיו עשו את זה יותר קל למתכנת
 
לגבי ב' - צריך לבדוק
כמו תמיד תריץ בדיקה
לצפיה ב-'תגובה'
תגובה
22/03/2017 | 11:34
1
17
עזרת לי מאוד בהבנה כללית, אחזור כל על כמה שאמרת כדי ללמוד שנית
ברשותך כמה נקודות אחרונות
1- ASYNC זה לפעולות שיש מימוש להם כבר כASYNC כמו  readasync וכו' שאין בהם TASK.RUN ( לפחות לא בטוח כי אנו לא יודעים את המימוש) ולכן לא צריך לפתוח THREAD אלא כשהם יגמרו הם יודיעו לTHREAD שלי,
זה הכי טוב שיש
צודק?
2- AsParaller   בדוגמא שנתתי למעלה, (ונגיד שהגדלתי את כמות הTHREAD שלי מעבר לכמות הCORE ע"י MaxDegreeOfParallelism) מה יעשה?
ישלח כל ITEM לTHREAD נפרד, ואם נגמרו לי הTHREAD שהגבלתי אותו הם ימתינו עד שיתפנה THREAD ?
נשמע בזבזני לשלוח כל ITEM ל THREAD זה אומר שעבור כל ITEM אני תופס ומשחרר THREAD .
3- כאשר אני שולח ITEM ל THREAD דרך ה AsParaller   הרי הTHREAD ננעל מייד כי הוא מחכה ל I/O ואז ה THREAD הזה לא מקבל זמן CPU אלא ממתין עד שהפעולה תיגמר ?
אם כן למה שלא אגביל את כמות הTHREAD לפעולה הזאת לכמות עצומה?
 
4- לגבי הבדיקה, הסביבה שלי לא עובדת כרגע, נקווה שאצליח לשחזר אותה( אם ממש ישעמם לך אשמח אם תריץ בדיקה :) )
 
ממש תודה רבה על הכל
לצפיה ב-' >'
>
22/03/2017 | 13:18
21
1- 95% מדוייק. לפעמים יש פעולות שהם לא IO , לדוגמא חישוב מאד מסובך  ואתה ב יישום GUI ולא רוצה לתקוע את ה UI. אז אתה פותח TASK.RUN תחת מתודה שנקראת נגיד DOCALC - ואז שם אתה עושה AWAIT ( שים לב אין כאן IO)  ואז זה לא משפיע על ה GUI ( גם בלי ה AWAIT זה לא ישפיע כי פתחת ט'רד) אבל מה שכן זה יתן לך  CONTINUATION לתוצאה : 
 
 
somehere in the gui app you call this :

await DoCalc();


async DoCalc()
{
var t=    await Task.Run<int>(()=> some heavy CPU calculation);
       //now - do something with that t result

}

 
 
2- לא. MAXDEGREE OF PARALLELISM  יגדיל את מספר ה THREDINGS שהוא יפתח.  אתה לא חייב לפתוח כמה THREDS בשביל להוריד במקביל.
 
  //psuedo





await Task.WhenAll(listOffiles.Select( async f=> {await DownloadAsync(f); __doSomethingWithF__();}  ));
3- כאשר אתה שולח ITEM ל THREAD  על ידי ASPRALLEL ואתה לא עובד שם ASYNC , אז ה THREAD מחכה. והוא לא משרת אף אחד אחר ומחכה לתוצאה שתחזור. בשביל זה משתמשים בפעולות IO  עם ASYNC.
שוב לא צריך לפתוח THREAD בשביל לעשות פעולת IO במקביל ( ראה קוד עליון) אבל שאלת ספציפי אז אני עונה ספציפי.
 
4- בדיקה על מה ?
 
 
לצפיה ב-'interface ומחלקות אבסטרקטיות'
interface ומחלקות אבסטרקטיות
19/03/2017 | 09:40
2
58
אני מבין מה כל אחד עושה ואיך עובד אבל גם אחרי שחיפשתי לא מעט באינטרנט לא הצלחתי להבין .. האם interface יכול לרשת ממחלקה אבסטרקטית וההיפך האם interface יכול לממש מחלקה אבסטרקטית
תודה
לצפיה ב-'לא'
לא
19/03/2017 | 12:46
40
אינטרפייס לא יכול לרשת ממחלקה, כי הוא בסך-הכל הצהרה על members ציבוריים ולא מכיל בעצמו שום קוד בר-ביצוע.
 
זה כמובן גם היתרון שלו, הוא לא קוד אלא אוסף הצהרות בלבד. יתרון אחר נוסף חשוב של אינטרפייסים הוא שאפשר לרשת כמה מהם, להבדיל ממחלקות שכל מחלקה יכולה להיות לה מחלקה-אם אחת בלבד, אינטרפייס או מחלקה יכולים לממש אפס או יותר אינטרפייסים שונים.
 
בברכה,
זיו
לצפיה ב-'עצם השאלה מראה שאינך מבין מה זה Interface...'
עצם השאלה מראה שאינך מבין מה זה Interface...
02/04/2017 | 16:03
8
לצפיה ב-'יש לי פרויקט מורכב להגיש ולא מוצאת את הידיים והרגליים'
יש לי פרויקט מורכב להגיש ולא מוצאת את הידיים והרגליים
17/03/2017 | 17:35
69
אין לי שאלה מסויימת לשאול, ואני ממש מבקשת שמישהו יפנה אליי בפרטי ויעזור לי צעד צעד עם הפרוייקט. זה מאד מאד יעזור לי.
תודה!
לצפיה ב-'הפצת תוכנה מבוססת vb.net עם MySql למחשבים אחרים'
הפצת תוכנה מבוססת vb.net עם MySql למחשבים אחרים
15/03/2017 | 09:22
28
בוקר טוב חברים,
בניתי תוכנה מבוססת VB.Net עם VS2010 עם רפרנס ל MySql.Data.Dll מConnector בגירסה 6.9.8 שהתקנתי במחשב עם מערכת הפיתוח.
לאחר סיום בנייה של התוכנה בניתי גם תוכנת התקנה לצורך הפצה של התוכנה למחשבים אחרים.
כאשר אני מתקין את התוכנה על מחשב אחר, אני מקבל שגיאה שהוא לא מוצא את ה DLL של MYSQL, למרות שבתוכנת ההתקנה הוא מעתיק גם את הDLL לתיקיית התוכנה.
מישהו יכול לעזור מה אני מפספס בשלב ההתקנה במחשב האחר? 
האם הייתי צריך לבצע עוד פעולה?
האם צריך להתקין את ה Connector של MySql  בכל מחשב בו אני רוצה שהתוכנה תעבוד ?
לצפיה ב-'קבלת גודלקובץ כאשר הוא longPath'
קבלת גודלקובץ כאשר הוא longPath
12/03/2017 | 10:37
4
40
אני רוצה מתוך C# לקבל גודל קובץ כאשר הנתיב אליו הוא long PATH (לדעתי מעל 260 תווים)
כאשר אני עושה 
 
 FileInfo f = new FileInfo(fileName);
long s1 = f.Length;
 
אני מקבל EX שאי אפשר כי זה נתיב ארוך מידי
 
אשמח לפתרון איך לעשות זאת
תודה
לצפיה ב-'כן היה לי את זה , FILEINFO לא תמך בזה אבל יש את הספריה הנל'
כן היה לי את זה , FILEINFO לא תמך בזה אבל יש את הספריה הנל
13/03/2017 | 09:24
3
36
לצפיה ב-'מעדיףבלי סיפריות כאלה'
מעדיףבלי סיפריות כאלה
14/03/2017 | 23:48
2
21
יש משהו עם INTEROP שאפשר להשתמש בפונקציה בנמצאת ב WIN API DLL
רק לא הצלחתי למצוא את זה
לצפיה ב-'אני לא רואה שם דוגמא לשימוש'
אני לא רואה שם דוגמא לשימוש
15/03/2017 | 00:13
25
האם ב GetFileSizeEx ?
אם כן אשמח בבקשה לדוגמא לשימוש(לא ראיתי שאומרים שזה פותר בעיה של LONG PATH)
לצפיה ב-'asp.net - אי המתנה לפונקציה'
asp.net - אי המתנה לפונקציה
06/03/2017 | 18:18
8
47
יש לי פונקציה שמקבלת משתנים, ושולחת מייל למשתמשים לפי פרמטרים שונים.
הפונקציה לוקחת הרבה זמן וכתוצאה מזה המשתמש ממתין עד שהדף עולה.
 
התהליך הוא כזה - המשתמש לוחץ על שמירה בטופס, בשרת מתבצעים כל מיני עידכונים לטבלאות ועוד (כשניה), ואז מופעלת הפונקציה למשלוח מייל - שהיא בתורה עוברת על כל מיני חוקים ואוספת נמענים למייל - חלק מהנמענים מגיעים לפי שאילתות על הActiveDirectory - וזה לוקח זמן.
 
האם יש אופציה לשגר-ושכח לפונקציה, ולמנוע מהמשתמש את זמן ההמתנה לסיום ריצת הפונקציה?
לצפיה ב-'-'
-
06/03/2017 | 20:31
2
66
יותר מומלץ : 
אתה כותב ל DB  ( או לכל מנגון אגירה אחר חיצוני) את כל המיילים שאומרים להישלח ( כלומר כל הפרמטרים וכו)
ואז  תבנה JOB  שפשוט ישלח את המיילים  ( אם מוגדר לך MAIL AGENT ב SQL)
או שפשוט יהיה קובץ חיצוני ( הרצה) EXE או SERVICE שפשוט דוגם את ה QUEUE ב DB ( את הטבלת של האימיילים  , עבור כל אלה שעוד לא נשלחו) ופשוט שולח אותם.
 
 
פתרונות אחרים כאן : 
 
לצפיה ב-'נחזור לשולחן השירטוטים'
נחזור לשולחן השירטוטים
07/03/2017 | 10:38
1
36
זאת מערכת ביצור, ועד היום הפונקציה עבדה טוב ומהר.
 
וכרגיל במערכות כאלו מישהו היכן שהוא החליט שחייבים לסבך את הפונקציה, ולהוסיף לה איתור נמענים בזמן אמת ועוד - וזה האריך את זמן הריצה.
 
מהפוסט של סטפן אני מבין שפיתרונות שגר ושכח לא מומלצים בasp.net מסיבות שונות.
 
נאפיין פיתרון של Queue או DB - ונקווה שהלקוח יבין שהוא גם צריך לשלם על זה
 
 
לצפיה ב-'כן'
כן
07/03/2017 | 13:22
29
הם לא מומלצים מהסיבה של RECYCLE שיכול להעיף את העבודה שלך
ולכן יש את האופציה השלישית שכן מאפשרת את זה ( ויש גם ספריות בנושא)
 
אבל עזוב
הכי נכון זה שמישהו אחר שהתפקיד שלו זה לקרוא מה QUEUE - אימיילים , לשלוח אותם
ןזה יכול להיות CMD או SERVICE או כל ישום אחר
וכמובן שה QUEUE יכול להיות כל מנגנון אחסון. לשם ההפשטה בחרתי בתשובתי להגיד SQL SERVER ( גם בגלל הסיבה שיש לו JOBS ובכלל אופציה הגדרת שרת MAILS)
אבל אם תשאל אותי - SQL SERVER לא אמור לשלוח מיילים
למרות שאני רואה א זה הרבה אבל אני לא מסכים עם זה
SQL SERVER זה מסד נתונים ומסד נצונים צריך להחזיק נתונים
את הנתונים של שליחת אימייל - שמישהו אחר יקרא ויעשה.
 
 
 
לצפיה ב-'לדעתי'
לדעתי
08/03/2017 | 08:54
4
35
כדי לא להמתין אפשר להריץ Task שלא מחכים לו (לא עושים לו await או result) זה הדרך המלוכלכת.
 
הדרך היותר יפה זה להבין שיש לך פה 2 משימות שלא קשורות אחת לשניה:
1. שמירת המידע ב DB
2. שליחת המיילים לנמענים
 
אז מה עושים? separation of concerns
האתר (בין אם זה MVC או webApi) מקבל את הבקשה מהלקוח, מעדכן את הבסיסי נתונים וכל הדברים שבאחריותו. ברגע שהשלב הזה הסתיים אתה מוסיף הודעה לאיזשהו queue, כזה שהמאזין יכול לעשות עליו block או לקבל הודעה על זה שנכנס לqueue הזה איזשהו פריט. לדוגמא rabbitmq, azure storage queue+webjobs/functions וכד'.
כאשר הצרכן של התור הזה קורא את ההודעה הוא יאסוף את כל המידע של המיילים וישלח אותם.
 
זה נשמע קצת מסובך יותר - בפועל זה מפשט מחלק קוד גדול לחתיכות קטנות שיותר קל לתפעל אותן.
 
לצפיה ב-'אם ה IIS רוצה לעשות RECYCLE'
אם ה IIS רוצה לעשות RECYCLE
08/03/2017 | 09:45
2
33
(בהנחה שאתה תחת IIS) - הוא ממש לא יתחשב ב TASK שלך
אז לא הייתי הולך על זה.
לגבי ה QUEUE , בהחלט שכן הייתי הולך על זה ( וגם המלצתי על זה)
לצפיה ב-'קראתי לזה הדרך המהירה והמלוכלכת והדרך השניה עדיפה עלי'
קראתי לזה הדרך המהירה והמלוכלכת והדרך השניה עדיפה עלי
08/03/2017 | 15:03
1
27
אם לא היה ברור - אני לא ממליץ לעשות fire-and-forget tasks בקונטקסט הנוכחי!
פיתרון שמחלק את המשימות הוא הנכון יותר והעדיף יותר מבחינת ארכיטקטורה.
לצפיה ב-'לא רוצה להיות nitpick אבל כתבת "הדרך היותר יפה"'
לא רוצה להיות nitpick אבל כתבת "הדרך היותר יפה"
08/03/2017 | 15:11
31
זה לא קשור למלוכלך או יפה
יש מצב שמה שהוא כותב בכלל לא יעבוד
אז זה קשור לזה שאם זה חשוב לו שהעבודה תתבצע ב 100% אז הוא לא אמור בכלל ללכת לכיוון הזה.
 
בכל מקרה אני ואתה מכוונים לאותו כיוון :)
 
 
לצפיה ב-'זו מערכת ותיקה בASP.NET FORM.'
זו מערכת ותיקה בASP.NET FORM.
08/03/2017 | 11:22
28
 
נכון לעכשיו ירדנו מהTASK - מכיון שהפונקציה משתמשת במשאבים שמשתחררים בסוף ריצת הדף (DB Connection ואובייקטים שונים) - ולשנות את הפונקציה יעלה לא פחות ממעבר לתור ושליחת מייל מתהליך חיצוני.
 
 
לצפיה ב-'ניתן להגדיר מחדש את תפקיד כפתורי הF1-F12 ?'
ניתן להגדיר מחדש את תפקיד כפתורי הF1-F12 ?
08/03/2017 | 08:40
2
30
כך שיבצעו פעולה אחרת ממה שהוגדרה במקור?
למשל שדווקא כפתור הF7 יגביר את עוצמת השמע?
לצפיה ב-'כן'
כן
08/03/2017 | 14:29
1
26
הגדרתי ש f3 יקפיץ את כפתור המערבל כך שאוכל לשנות את הווליום עם הלחצנים ללא מגע בעכבר.
 
לצפיה ב-'יפה! ואם אני רוצה להגדיר שאחד הFים יזין את כתובת המייל שלי?'
יפה! ואם אני רוצה להגדיר שאחד הFים יזין את כתובת המייל שלי?
08/03/2017 | 14:55
17
או את אחת מססמאות הכניסה לאתר כלשהו?
אפשרי?
לצפיה ב-'gridview user control עם כפתור Edit'
gridview user control עם כפתור Edit
03/03/2017 | 19:16
1
22
שלום חברים
אני מנסה לייצר USER CONROL של גריד דינאמי שיכלול בתוכו כפתור EDIT. הבעיה שלי שכאשר הקונטרול מוצג בדף הכפתור מבצע רק פוסטבק ולא מגיע לאיוונט שנקבע לו.
זה הקוד:
Gridforedit.ascx.cs
public partial class UserControl_GridForEdit : System.Web.UI.UserControl
{
    public event EventHandler ButtonEditClick;
 
    protected void Page_Load(object sender, EventArgs e)
    {
        if(!IsPostBack)
        {
            Session["LastDt"] = Session["LastColums"] = null;
            lblError.Visible = false;
            alink.Visible = false;
        }
        
    }
    protected void OnPaging(object sender, GridViewPageEventArgs e)
    {
    }
        
    public void BindDataForEdit(DataTable dt, string GridName = "", object[] Columns = null)
    {
        if (dt != null && dt != (DataTable)Session["LastDt"])
            Session["LastDt"] = dt;
        if (Columns != (object[])Session["LastColums"])
            Session["LastColums"] = Columns;

        if (Session["LastDt"] == null)
            return;
        if (GridName == "")
            GridName = "grd" + Guid.NewGuid().ToString().Replace("-", string.Empty).Substring(0, 8);

        GridView gvGeneral = new GridView();
        gvGeneral.ID = "GridName";
        gvGeneral.CssClass = "table table-striped table-bordered table-hover";
        gvGeneral.AutoGenerateColumns = false;
        gvGeneral.EmptyDataText = "אין נתונים להצגה";
        Columns = (object[])Session["LastColums"];
        dt = (DataTable)Session["LastDt"];
        try
        {
            if (Columns != null)
            {
                for (int i = 0; i < Columns.Length; i = i + 2)
                {
                    {
                        BoundField boundfield = new BoundField();
                        boundfield.DataField = dt.Columns[Columns[i].ToString()].ToString(); //Columns[i].ToString() ;
                        if (dt.Columns[Columns[i].ToString()].DataType.Name.ToString() == "Double")
                        { boundfield.DataFormatString = "{0:C}"; }
                        boundfield.HeaderText = Columns[i + 1].ToString();
                        gvGeneral.Columns.Add(boundfield);
                  }
                }
                TemplateField tfield = new TemplateField();
                tfield.HeaderText = "Edit";
                tfield.ItemTemplate = new CreateItemTemplate(ListItemType.Item);
                
                gvGeneral.Columns.Add(tfield);
           }
            else
            {
                for (int i = 0; i < dt.Columns.Count; i++)
                {
                    BoundField boundfield = new BoundField();
                    boundfield.DataField = dt.Columns[i].ColumnName.ToString();
                    if (dt.Columns[Columns[i].ToString()].DataType.Name.ToString() == "Double")
                    { boundfield.DataFormatString = "{0:C}"; }
                    boundfield.HeaderText = dt.Columns[i].ColumnName.ToString();
                    gvGeneral.Columns.Add(boundfield);
                }
            }
            gvGeneral.DataSource = dt;
            gvGeneral.DataBind();
        }
        catch (Exception ex)
        {
&n
לצפיה ב-'נראה שלא כל ההודעה שלי נקלטה, אז הנה שוב'
נראה שלא כל ההודעה שלי נקלטה, אז הנה שוב
03/03/2017 | 19:42
27
שלום חברים
אני מנסה לייצר USER CONROL של גריד דינאמי שיכלול בתוכו כפתור EDIT. הבעיה שלי שכאשר הקונטרול מוצג בדף הכפתור מבצע רק פוסטבק ולא מגיע לאיוונט שנקבע לו.
זה הקוד:
Gridforedit.ascx.cs
public partial class UserControl_GridForEdit : System.Web.UI.UserControl
{
    public event EventHandler ButtonEditClick;
    protected void Page_Load(object sender, EventArgs e){ }
    public void BindDataForEdit(DataTable dt, string GridName = "", object[] Columns = null)
    {   GridView gvGeneral = new GridView();
        gvGeneral.ID = "GridName";
        for (int i = 0; i < Columns.Length; i = i + 2)
                    {
                        BoundField boundfield = new BoundField();
                        boundfield.DataField = dt.Columns[Columns[i].ToString()].ToString();
                        boundfield.HeaderText = Columns[i + 1].ToString();
                        gvGeneral.Columns.Add(boundfield);
                  }
                TemplateField tfield = new TemplateField();
                tfield.HeaderText = "Edit";
                tfield.ItemTemplate = new CreateItemTemplate(ListItemType.Item);
                gvGeneral.Columns.Add(tfield);}
            gvGeneral.DataSource = dt;
            gvGeneral.DataBind();}
            }
    public class CreateItemTemplate : ITemplate{
        public event EventHandler ButtonEditClick;
        private ListItemType myListItemType;
        public CreateItemTemplate(){}
        public CreateItemTemplate(ListItemType Item){myListItemType = Item;}
        public void InstantiateIn(System.Web.UI.Control container){
             LinkButton lb = new LinkButton();
                lb.ID = "btmEdit";
                lb.Text = "Edit";
                lb.Click += new EventHandler(btnClick_Click);
                container.Controls.Add(lb);
        }
        protected void btnClick_Click(object sender, EventArgs e){
            if (sender != null)  ButtonEditClick(sender, e);
        }
    }
}
TESTCONTROL.aspx
<%@ Register Src="~/UserControl/GridForEdit.ascx" TagName="u_ccE" TagPrefix="uccE" %>
<div><uccE:u_ccE ID="u_cc2" Title="cc" runat="server" /></div>
TESTCONTROL.aspx.cs
    public partial class testcontrol : BasePage{
        cDBAccess db = new cDBAccess();
            protected void Page_Load(object sender, EventArgs e) {
            u_cc2.ButtonEditClick += new EventHandler(ucc2_ButtonClick);
            object[] par = { "@ContractId", 1003, "@type", 1 };
            DataTable DT = db.GetDataTable("spListPayments", par, ref Error);
            if (DT != null && DT.Rows.Count > 0)            {
               
                    object[] Columns = { "PaymentDate",  Resources.Resource.Date,
                     ....};
                   u_cc2.BindDataForEdit(DT, "", Columns);}
               }
        }
        public void ucc2_ButtonClick(object sender, EventArgs e)
        {Response.Write("I did it");}
    }
הגריד עולה עם הנתונים והכפתורים, אבל לחיצה על הכפתור EDIT לא מגיעה לאיוונט ucc2_ButtonClick
מה אני עושה לא נכון :)
ותודה לעוזרים
לצפיה ב-'הקשר/ההבדל בין .net ל- #c'
הקשר/ההבדל בין .net ל- #c
01/03/2017 | 09:40
1
41
האם אחד מכיל את השני?
עד היום חשבתי שסי שארפ הוא חלק מתוך עולם ומלואו שנקרא דוט נט.
היום מישהו אמר לי ש-.net הם סך הכל ספריות בסי שארפ.
אשמח לקצת סדר בנושא.
תודה!
 
לצפיה ב-'סי-שארפ זו שפת-תכנות, דוט-נט זה runtime'
סי-שארפ זו שפת-תכנות, דוט-נט זה runtime
01/03/2017 | 12:03
41
אפשר (תאורטית) לכתוב תוכניות בסי-שארפ שיפעלו על ה-runtime של ג'אווה (עם כמה התאמות נדרשות כמובן)
כמו-כן אפשר (וגם קורה בפועל) לכתוב תוכנה לדוט-נט בכמה שפות אחרות נוספות כמו F#, Visual-Basic, Python וג'אווה-סקריפט
כשלוקחים את התוכנית שכתובה בשפה כלשהי ורוצים להריץ אותה, אז מקמפלים אותה והטקסט של הקוד הופך ל-byteCode שזה שפה של הוראות שהדוט-נט יודע להפעיל
 
בברכה,
זיו
לצפיה ב-'הבדלים בגירסאות של visual studio'
הבדלים בגירסאות של visual studio
27/02/2017 | 00:34
1
54
שלום.
אני מחפש גירסת visual studio המתאימה לעסק.
 
באתר: https://www.visualstudio.com/vs/pricing/ מתוארים מספר חבילות וקצת הצלחתי להתבלבל.
מה הייתרונות המהותיים בין החבילות השונות? האם גירסה של 500$ המתוארת היא מספקת?
בכל מקרה אני מתכוון בכלל להשתמש ב-git במקום ה-tfs וגם משתמש ב-jira.
 
תודה.
לצפיה ב-'תשתמש בגרסה החינמית'
תשתמש בגרסה החינמית
28/02/2017 | 02:57
41
נדמה לי שנקראת community. היא עושה את כל מה שאתה צריך, ולא עולה כסף. וכמובן שאין בעיה לבנות איתה פרויקטים מסחריים לגמרי. הייתרונות של הגרסאות בתשלום הם באמת למתקדמים. כשתגיע לצרכים האלה, אז תשקול לקנות.
לצפיה ב-' Scroll Direction Detector'
Scroll Direction Detector
24/02/2017 | 14:01
43
היי רציתי לשתף איזה משהו שבניתי שלא מצאתי לי פתרון יעיל ברשת בנושא מציאת כיוון ה SCROLL שיוזר עושה  .
 
הבעיה היא שכל מה שמצאתי זה דגימת ה SCROLL של ה WINDOW וחישוב מחדש
אבל זה בעייתי
כשאתה עושה SCROLL של שנייה- האוונט הזה רץ לפחות 30 פעם ו30 פעם החישוב (של כיוון ה SCROLL) מתחשב.
לא יעיל בעליל.(!)
 
 
כאן נכנסים 2 מושגים של ויסות  : 
THROTTLE
AND
DEBOUNCE
 
במילים פשוטות
THROTTLE - אם אני מזיז במשך דקה את ה SCROLL ( ולא עוזב ) אז הEVENT שלי , יקפוץ כל שניה ( או מה שמגדירים)
אם לא הייתי משתמש בזה הוא היה קופץ אלפי פעמים.
השני , DEBOUNCE , תפקידו : כל עוד אני עושה את ה SCROLL - לא קורה כלום , אבל ברגע שהפסקתי , מיד אחרי זמן T מהנקודה הזו - יקפוץ ה EVENT שלי.
 
שילוב של שניהם מוביל למשהו מאד יעיל ומעניין שאני יכול לקבל מידע מבלי להכביד על ה BROWSER.
 
מקרים שימושיים : 
 
תתארו לכם כפתור שכשלוחצים עליו הוא הולך ל SERVER להביא מידע.
עכשיו תתארו לכם שלוחצים 10 פעמים על הכפתור הזה הוא ילך 10 פעמים
אבל עם THROTTLE הוא ילך כל T זמן שתגדירו  , מבלי להתחשב בהפגזות , כל עוד שאתפם מפגיזים כמובן.
 
בקיצור הנה הקוד +דמו: 
 
Throttle : execute this function at most once every T milliseconds
Debounce : execute this function only if T milliseconds have passed without it being called
 
חייב לציין שאכן מצאתי פיתרון אחד שכן משתמש ב INTERVAL - אבל יש שם בעיה.
שם לא השתמשו ב DEBOUNCE. ( שטוב למקרי קצה)
ולמה ? 
 
בואו נגיד שאני רואה סקרול ענק
ואני שם שה THROTTLE יהיה כל 3 שניות ( לא הגיוני אבל בואו נגיד)
אני מתחיל לגלול במשך 3 שניות -> קופץ EVENT  אחד
ממשיך עוד 3 שניות -> קופץ EVENT שני
ממשיך למשך שניה אחת לגלול אבל הפעם למעלה  ועוצר .
 
%#%#%@#%@
לא קורה כלום ולא יהיה לך חיווי של SCROLL UP !!!!!
למה ? 
כי עוד לא עבר ה 3 שניות פעולה בשביל שה THROTTLE יקפוץ
 
וכאן נכנס ה DEBOUNCE !
אחרי שתסיים את השניה האחרונה ( שחסר לה 2 שניות בשביל THROTTLE) - יקפותץ ה DEBOUNCE ואז תראה את ה חיווי הנכון לגבי כיוון ה SCROLL ( שזה UP עכשיו)
 
ז"א חייבים DEBOUNCE ( וחייבים שהערך T שלו יהיה קצת יותר גדול מערך ה THROTTLE)
 
 
לצפיה ב-'AppDomain ב C# כמה שאלות'
AppDomain ב C# כמה שאלות
22/02/2017 | 20:22
6
50
ראיתי את הסרטון
לפי מה שהוסבר שם כאשר אני משתמש ב DLL חיצוני שאני מפחד שהוא יעשה לי ביעות אבטחה(לדוגמא שיצור/ימחק קבצים שהוא לא צריך) אני מעדיף לא להכניס אותו מתוך ה AppDomain עם ההרשאות שלי אלא אפתח לו AppDomain עם ההרשאות המינימאליות שהוא צריך
 
1-מה הייתרון של זה לבין ליצור לו פרוסס נפרד עם הרשאות(מתוך הקוד)? 
2- לפי מה שנראה שם כאשר אני רוצה לפתוח AppDomain  ל DLL הוא חייב להיות עם אטריביוט של Serializable  מדוע? וזה נראה חסרון רציני, לא כל EXE או DLL שארצה לעשות לו את זה יהיה לו את האטריביוט הזה.? 
3-ברגע מפעיל את המתודה CreateInstanceAndUnwarp  ה AppDomain מתחיל לרוץ וה AppDomain שהפעיל אותו לא מחכה לו,נכון? רצים כאילו במקביל כמו 2 תהליכונים?
4- האם זה אפשרי לפתוח AppDomain מ C# ולהפעיל קובץ פייתון/שנכתב ב CPP או רק קבצים שנוצרו ב C#
 
רב תודות
לצפיה ב-'>'
>
22/02/2017 | 21:02
5
32
1 - הייתרון של זה הוא בכך שאתה יכול לטעון DLLS שלמים שאתה לא יודע בדיוק מה קורה שם ואתה רוצה לוודא שהוא לא יעשה דברים מסויימים. אז אתה טוען ומצמיד לו הרשאות.
יש עוד דרך שאתה יכול לעשות זאת בכך שאתה יכול ליצור THREAD עם הרשאות  - IMPERSONATION.
עוד יתרון זה שאם ה APPDOMAIN הזה נופל - CRASH - אז הוא לא מפיל לך את ה APP POOL שלך. ( כמובן שתוכל גם על ידי TRY CATCH מסביב ל THREAD שדיברתי עליו - אבל יש EXCEPTIONS שמפילים APP POOL אם תירצה או לא תרצה כגון STACKOVERFLOW.
 
2 - ה SERIALIZEABLE הוא בשביל ש ה APP DOMAIN שלך ידבר עם החדש שיצרת  ע"י MARSHALL BY REF.
 
3 - נראה לי שכן. תוכל לבדוק זאת בעצמך אם תריץ את הקןד עם BREAKPOINT ואז תראה ב TASKMANAGER אם יש לך שם 2 EXE של APP POOL.
 
4- השאלה הזאת מתנקזת להאם אפשר לטעון קוד UNAMANGED מ #C. התשובה היא כן.
לצפיה ב-'שאלה שלא הבהרת'
שאלה שלא הבהרת
22/02/2017 | 21:27
4
28
ראשית תודה על תשובתך
לא הבנתי מה הייתרון בלהפעיל את ה DLL או ה EXE על אפ-דומיין נפרד מאשר על פרוסס נפרד
2 האפ-דומיין רצים בתוך אותו פרוסס משמע הם חולקים את אותו זמן CPU , מאשר אם הייתי נותן ל DLL הזה פרוסס נפרד התהליך היה מסתיים מהר יותר(בהנחה סבירה שיש לי פרוסס פנוי)
לא מצליח להבין מה החילוק בין להריץ משהו חיצוני על אפ-דומיין /פרוסס נפרד
 
בנוסף, אם אני לא רוצה שהוא ידבר איתו, עדיין זה קצת בעייתי שמחוייב שהצד שלישי שאני מפעיל יהיה Serializable  
 
תודה
לצפיה ב-'התבלבלתי ובילבלתי אותך'
התבלבלתי ובילבלתי אותך
22/02/2017 | 21:46
3
42
אני כותב לך ואני חשוב בכלל על APPPOOL
 
יהיה לך EXE אחד - פרוסס
ובו יש כמה כמה APPDOMAINS.
היתרון בזה הוא שאתה יכול להצמיד הרשאות ל DLL שאתה מעלה
 
נניח ולאפליקציה שלך יש הרשאות לגעת בכל התיקיות ואתה רוצה שהAPPDOMAIN שאתה יוצר  - לא יוכל לגעת בשום תיקיה ( כמו שבסרטון)  - במקרה הזה אתה טוען את ה APPDOMIAN ומצמיד לו הרשאות שאתה בוחר  - ואז אתה לא צריך לפחד או לחשוש שהוא יגע לך בקבצים בC.
 
אין כאן 2 פרוססים
 
יהיו לך 2 פרוססים אם יהיהו לך 2 APP POOL.
 
עוד משהו.
PROCESS זה וירטואליזציה של זיכרון
THREAD זה וירטואליזציה של CPU
לשניהם אתה יכול לתת  PRIORITY
 
אז אם יש לך EXE אחד של APPPOOL ( כי לא נוצר עוד EXE אחד  - כפי שבילבלתי אותך ממקודם) - אתה עם EXE אחד.
אז אין לך לתת ל PROCESS האחר עדיפות
 
עוד יתרון זה שאתה יכול לעשות UNLOAD ל ASSEMBLY ישר אחרי שסיימת להשתמש בו. ( דבר שלא אפשרי אילולא היית טוען אותו באופן רגיל - אלא אם כן אתה סוגר את ה אפליקציה שלך)
 
 
 
 
 
לצפיה ב-'זו השאלה'
זו השאלה
22/02/2017 | 21:52
2
39
הרי אני יכול מהאפליקציה שלי לעשות יצירה של פרוסס חדש ולהריץ בו מה שאני רוצה
השאלה שלי היא מה ההבדל אם אריץ את ה DLL החיצוני ע"י פרוסס שאצור או ע"H אפ-דומיין שאצור
בשניהם אפשר לתת הרשאות
לצפיה ב-'שלא תעיז'
שלא תעיז
22/02/2017 | 21:57
55
צריכה להיות סיבה מאד מאד טובה שאתה נותן לאפליקציה שלך הרשאות להריץ EXE.
תחשוב על העיתיות שבה. HACKER יכול לנצל את זה ולקחת לך את הקונפיג  ובכלל לעשות לך כל מה שהוא חושק. אתה אשכרה נותן לו גישה ל מחשב שלך
אל תעשה את זה - כי לא עושים את זה.
 
לגבי ההבדלים אני חושב שעניתי לך
אבל אתה נכנס בשאלתך לעולם שבו אתה יכול לתת גישה להאקר לגעת לך ב FILE SYSTEM - ועם זה  - אני פשוט לא יכול לעזור לך כי זה דברים שלא עושים
 
בדיוק כמו שתשאל אותי , איפה קוברים גופות אחרי שרוצחים אותם
אין לי תשובות לזה.
 
לצפיה ב-'תשובה'
תשובה
23/02/2017 | 14:04
40
AppDomain מאפשר לך ״להתחיל מאפס״.
זה אומר, למשל, שמשתנים סטטיים וסינגלטונים - מאותחלים מחדש, כי אתה מקבל מרחב זיכרון (וירטואלי) שהוא נקי לגמרי.
בנוסף, יכול להיות שבמסגרת AppDomain תוכל לטעון DLLים מגירסאות שונות מאלו שנטענו לך ב AD הראשי.
כל זה, מבחינת ביצועים, עדיף על פני פרוסס חיצוני. ובנוסף, כמו שרועי ציין קודם, ברמת ההרשאות זה נשמע פירצה רצינית להריץ פרוסס חיצוני.
 
HTH

חם בפורומים של תפוז

אירוח בנושא פוריות והפריה חוץ גופית
אירוח בנושא פוריות...
ביום שלישי יתארח ד``ר שי אליצור, מנהל היחידה...
אירוח בנושא פוריות והפריה חוץ גופית
אירוח בנושא פוריות...
ביום שלישי יתארח ד``ר שי אליצור, מנהל היחידה...
בפייסבוק שלנו כבר ביקרתם?
בפייסבוק שלנו כבר...
רוצים להיות תמיד מעודכנים במה שקורה בתפוז?
בפייסבוק שלנו כבר ביקרתם?
בפייסבוק שלנו כבר...
רוצים להיות תמיד מעודכנים במה שקורה בתפוז?

בעלי מקצוע

repair-lab מעבדת מחשבים
repair-lab מעבדת מחשבים

מקרא סימנים

בעלת תוכן
ללא תוכן
הודעה חדשה
הודעה נעוצה
אורח בפורום
הודעה ערוכה
מכיל תמונה
מכיל וידאו
מכיל קובץ