יש לך שני מסלולים:
א. לקחת איש טכני חובב או מקצועי שיעזור לך
ב. להשתדל להיות טכני ולהבין בדיוק מה יש לך, ולכתוב פה שאלה מפורטת שכוללת את הפרטים הטכניים המינימליים בשביל שאי מי יוכל לעזור לך.
dovid
-
איך ניתן לצפות במצלמות אבטחה דרך הרשת הביתית -
איך בנוי קובץ זיכויים של מס"ב?@מעלה-ומוריד טכנית זה לא הכרחי, אבל מבחינת מדיניות כפי שאתה מראה אז זה כן.
המשמעות שלך זה שקובץ יכול להיפסל כי יש שמה מספר חשבון אחד לא תקין, במילים אחרות אתה תרצה בהחלט לבדוק לפני כן תקינות.
בדיקת התקינות של חשבונות הבנק היא מורכבת בגלל הוריאציות ויוצאי הדופן. פעם אחרונה שניסיתי לכתוב מאפס פשוט לא הצלחתי. אבל כן הצלחתי להשתמש בקוד של אחרים, וגם אתה יכול. -
איך בנוי קובץ זיכויים של מס"ב?זה סתם קובץ טקסט בתבנית מסויימת, הולידציה של החשבונות זה טובה שנדרים עושה.
-
מדריך: איך להציג עברית ב- C# Console APP@Mordechai-0 זה מה שהוא עשה.
@pcinfogmach תנסה למצוא נוסח לכותרת ולהודעה שיבינו שאתה מסביר ומדריך ולא שואל.
-
ספריית Sequelize: איך למנוע שליחת שדות מסויימות לצד לקוחשאלה דומה בסטאק:
https://stackoverflow.com/questions/27972271/sequelize-dont-return-password
אני חושב שזו דוגמה טובה לבלגן ה"איך" ששורר בnodejs.
בעוד בC# יש עומס מרגיז של שיטות וכללי עצוב, בנוד חסר מאוד כאלו.
אגב הרבה לא שמים לב למשהו שיותר מסוכן - הכיוון ההפוך של קבלה מלקוח,
כשמקבלים מהלקוח אובייקט יש סכנה יותר הפוכה שנקראת Mass Assignment או Overposting שזה מתי שהקוד בצד שרת מקבל אובייקט ולמשל מעדכן על פיו את מסד הנתונים בדינמיות, אך בעוד לקליינט מותר לערוך רק את כתובותו האישית, הוא מוסיף שדות שהוא בכלל לא אמור להיות יכול לשנות (את שמם הוא מנחש או יודע דרך הבעיה של @yossiz).
בexpress למשל, מצוי שרואים קוד בסגנון הזה:app.post('/update', async (req, res) => { if(req.body.id != req.seesion.user.id) return res.status(403); await connection.query('UPDATE users SET ? WHERE id = ?', [req.body, req.body.id]); ... });
הקוד הזה שהוא ממש קסום מבחינת פשטותו, הוא פרצת אבטחה בה משתמש יכול לשנות כל שדה, כולל את הID (ל1 למשל ואז הוא בטוח מנהל...)....
ראיתי מלא קוד דומה בפרודקשיין! יש פה טענה קצת על ספריית mysql שעשתה חיים מידי יפים בלי שום התרעה או אזהרה בתיעוד, אבל בnosql המצב הרבה יותר חמור.
בנוסף, בגלל שאין טיפוסיות קשוחה בJS המשתמש יכול לנצל את זה ולשלוח טיפוס שמצד אחד ייתמך במסד נתונים כדי שלא תהיה שגיאה בהכנסה או העדכון, אבל יהיו לכך השלכות לא טובות לגבי הלוגיקה בהמשך. אפילו מחלקה בנויה יפה בtypeScript לא תעזור פה שהרי בזמן ריצה הוא JS והוא מסכים הכל.
יש ספריות לזה, כמו express-validator אבל מי משתמש בה ביחס לכלל? זה אחת הבעיות של הטכנולוגיות המדליקות והחופשיות, אין שמה נורמות בסיסיות מרוב שרוצים לתת את ההגה למפתח.
מאמרים על Mass Assignment בנוד:
https://snyk.io/blog/avoiding-mass-assignment-node-js/
https://knowledge-base.secureflag.com/vulnerabilities/inadequate_input_validation/mass_assignment_nodejs.html -
ספריית Sequelize: איך למנוע שליחת שדות מסויימות לצד לקוחלאובייקט שחושפים ללקוח קוראים DTO או ViewModel.
בC# מתמודדים עם זה על ידי אטריביוטים ש"מסתירים" מאפיינים נבחרים, או מחלקה נפרדת עם מילוי על ידי Auto Mapper.
במקרים רבים שליחה עיוורת של האובייקט ממסד הנתונים חושפת דברים שקשה לחשוב עליהם, כמו למשל כמות הלקוחות לפי הID רץ וכולי. -
קוד עבור ProgressDialog ב-C#@pcinfogmach אוי... אם טוב לך אני לא אטריד אותך.
-
קוד עבור ProgressDialog ב-C#@pcinfogmach כתב בקוד עבור ProgressDialog ב-C#:
הוא אשר דיברתי לא ראיתי שום הבדל בין שני שיטות מצג עידכון ה-UI
לא מדוייק שאתה אומר "הוא אשר דיברתי" בעוד כתבת שהוא סבור שיש לעדכן באחוזים ולא במספר מוחלט.
-
קוד עבור ProgressDialog ב-C#@pcinfogmach לא ראית הבדל כי אולי במקרה שלך אין שטף עדכונים, הוא מראה בחוש שיש הבדל.
תביא לי מקרה שיש בעיה, אשמח לטפל בו.
הרעיון שלי עם טיימר תמיד יעבוד כי הוא לא מתחשב במה השתנה אלא בכמה מהירות רוצים שהעין תתעדכן בשינויים. את הנתון על המצב הנוכחי זה ייקח ממשתנה שמתעדכן כל הזמן. -
קוד עבור ProgressDialog ב-C#@pcinfogmach
אף אחד לא ניסה לטעון שדיווח באחוזים שונה מכל ערך מספרי אחר.
עיקר הנקודה שלו (וכנראה הטעות שלך) זו שורת הקוד הזאת:if (i % 1500 == 0)
זה תו אחוז של תכנות שמשמעותו מודולו, כלומר שארית של המספר הנוכחי בחלוקה ל1500, שבעצם זה אומר שכל פעם שזה אפס עברו 1500 פעימות. אין לזה קשר למושג אחוזים במובן המקובל (למרות שבמקרה גמור בדוגמה שלו הוא בחר להציג אחוזים).
הרעיון הוא לא לעדכן יותר מידי מהר את הUI, המאמר הזה מציג קוד שרירותי מידי וצריך לשנות אותו בהתאם למקרה ומה שצפוי להיות הזמן של כל פעימה. יותר גנרי ואלגנטי זה לעשות את זה עם טיימר של חצי שניה או 200 מילי שניות. -
עזרה | פתיחת דף אינטרנט בחלון מלא@yossiz ממה שהוא כתב:
@מטעמים כתב בעזרה | פתיחת דף אינטרנט בחלון מלא:
אדגיש: לא מסך מלא (F11) אלא חלון מלא.
נראה לי שהוא רוצה קיצור דרך בדומה לקיוסק.
-
קוד C# לחילוץ טקסט מקבצי וורד@yossiz כתב בקוד C# לחילוץ טקסט מקבצי וורד:
@pcinfogmach באיזה מקרה לא עובדת השיטה הראשונה בגלל IOException וצריך לעבור לשיטה השניה?
אולי doc או פורמטים שאינם openXml?
-
WPF איך לייצר DataGrid כולל ה- Headers באופן דינאמיאתה רוצה DataGrid בגלל שהצורה הויזואלית נראת כטבלה, אבל בWPF הפקדים מייצגים רעיון לוגי ולא צורה ויזואלית - כי אפשר להציג הכל בכל צורה.
הויזואל שאתה רוצה הוא רשת, כלומר Grid פשוט. למעשה אני לא חושב שאתה צריך גריד, אתה צריך נטו רשימת מילים אופקית ובכל רשימה אפשרויות חילופיות ברשימה אנכית. אני הכנתי לך קוד לדוגמה, זה המחלקות:class Word { public string OriginalWord { get; set; } public List<AlternativeWord> AlternativeWords { get; private set; } = new List<AlternativeWord>(); } class AlternativeWord { public string Word { get; set; } public bool Include { get; set; } }
זה הXAML להציג את המבנה:
<ItemsControl x:Name="wordsAltPanel" > <ItemsControl.ItemsPanel> <ItemsPanelTemplate> <StackPanel Orientation="Horizontal"/> </ItemsPanelTemplate> </ItemsControl.ItemsPanel> <ItemsControl.ItemTemplate> <DataTemplate> <StackPanel Margin="4"> <TextBlock Text="{Binding OriginalWord}" FontWeight="Bold" /> <ItemsControl ItemsSource="{Binding AlternativeWords}"> <ItemsControl.ItemTemplate> <DataTemplate> <CheckBox Content="{Binding Word}" IsChecked="{Binding Include}" /> </DataTemplate> </ItemsControl.ItemTemplate> </ItemsControl> </StackPanel> </DataTemplate> </ItemsControl.ItemTemplate> </ItemsControl>
זה קוד לדוגמה:
var textBox1 = new TextBox() { Text = "איסתרא בלגינא אכל נונא" }; var input = textBox1.Text.Split(' ', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries); var words = new List<Word>(); var rnd = new Random(); foreach (var word in input) { var wordItem = new Word { OriginalWord = word }; for (var i = rnd.Next(0, 4); i > 0; i--) wordItem.AlternativeWords.Add(new AlternativeWord { Word = word + "-" + i }); words.Add(wordItem); } wordsAltPanel.ItemsSource = words;
תוצאה:
-
WPF איך לייצר DataGrid כולל ה- Headers באופן דינאמיאם מוגדר AutoGenerateColumns כtrue אז נוצרות עמודות אוטומטית לכל מאפיין כאשר השם הוא כשם המאפיין:
dataGrid1.AutoGenerateColumns = false; dataGrid1.ItemsSource = Enumerable.Range(1, 10).Select(i => new DataExample { Name = "Name" + i, Age = i });
ידנית אתה יכול להוסיף עמודות ככה:
dataGrid1.AutoGenerateColumns = false; dataGrid1.ItemsSource = Enumerable.Range(1, 10).Select(i => new DataExample { Name = "Name" + i, Age = i }); dataGrid1.Columns.Add(new DataGridTextColumn { Header = "שם העמודה", Binding = new Binding("Name") });
את התאים אף פעם אל תוסיף ידנית, תחבר את הDataGrid למקור נתונים כל שהוא (למשל List<t>) כפי שהדגמתי.
בשביל ההדגמה עשיתי קוד C# אבל בWPF בריא אתה אמור תמיד לעבוד חזק עם הXAML ולחבר אותו לקוד על ידי בינדינג. אכן את רשימת העמודות נראה לי שאי אפשר ליצור בצורה פשוטה עם Binding (אלא אם כן מרחיבים את הפקד DataGrid).
-
סגירת פתחים - צוואת ר"י החסידממה שאני מכיר מקרוב משפחה, הסתפקו בפתח של סנטימטר (נראה לי שמו בין הבלוקים צנרת פלסטיק לחשמל מצד לצד ודאגו שיישאר פתוח אחרי כל הטיח והצביעה).
-
שליחת מייל מ JavaScriptלא, אי אפשר לשלוח מייל בלי עזרה של תוכנה על מחשב או שירות מרוחק.
אבל אפשר לפתוח טאב חדש עם קישור של סכמת mailto אפשר לכלול שמה נמען, נושא ,ותוכן טקסטואלי, ואם המטפל של mailto מוגדר זה יפתח את האתר המשמש כדוא"ל ויפתח הודעה חדשה עם הפרטים האלו, למשל הנה קישור כזה: -
אודיו בhtml שמופעל ע"י פונקציהלא מוכרחים להחזיק בכלל את האודיו בדף, אפשר ליצור אותו גם בJS:
const audio = new Audio('/static/success.mp3'); audio.play();
-
פתיחת קובץ PDF על ידי מאקרו באקסל -
פתיחת קובץ PDF על ידי מאקרו באקסלנכון, המילה start בשורת הפקודה לא עוזרת בshell שמצפה לקובץ בר הרצה (exe וכדומה).
פתרון טוב שאני רואה פה: https://stackoverflow.com/a/39903527/1271037
הוא להשתמש בexplorer.exe כתוכנה שתריץ את הקובץ.Shell "explorer.exe C:\sun\cc.pdf"
-
פתיחת קובץ PDF על ידי מאקרו באקסל