@dovid כתב בהדפדפן ככלי אולטמטיבי לפיתוח GUI:
אם אתה רוצה לשלב ממשק WEB אתה לא יכול לעשות את זה בלי ללמוד פיתוח לWEB
מה בעצם אני צריך ללמוד כדי ללמוד פיתוח WEB
@dovid כתב בהדפדפן ככלי אולטמטיבי לפיתוח GUI:
אם אתה רוצה לשלב ממשק WEB אתה לא יכול לעשות את זה בלי ללמוד פיתוח לWEB
מה בעצם אני צריך ללמוד כדי ללמוד פיתוח WEB
עוד שאלה בנושא הנ"ל:
מה קורה אם אני מפתח תוכנה שאני לא רוצה שהקוד יהיה זמין וקריא ככה בקלות? אם הכל זה קבצי JS ו-html?
@dovid כתב בהדפדפן ככלי אולטמטיבי לפיתוח GUI:
כיום נהייתה אפשרות חדשה, להשתמש בפקד WebView2 המטורף של מייקרוסופט. זה בעצם edge (שזה כרום) עם המון מאפיינים אירועים ופונקציות לשליטה מוחלטת עליו. אפשר להגיש שפקד תיקיית HTML סטטית, ולתקשר דרך הJS עם התוכנה המארחת שיכולה להיות WPF עם C#, אני עשיתי את זה וזה ממש עובד נהדר.
אני משתמש באופציה זו הרבה - מה שמעניין לי שאתה מגדיר אותה כאופציה נהדרת בזמן שאצלי זה רק מקל עלי בגלל סיבה אחת שאני מתעסק עם מסמכים על בסיס טקסט (כלומר מאגרים תורניים).
לולא זה אני מרגיש שאני מפסיד מדאי הרבה כשאני עובר לדפדפן - אני מפסיד את הקלות של ה-debugging, את ה-intellisense העוצמתי של C#, את ההתמשקות העוצמתית של C# עם WPF.
טוב, כתבת שזה קשה אולי לזה התכוונת.
בכל אופן עדיין נותרו לי כמה שאלות ברמה כללית:
א. האם זה לא מאט את זמן הטעינה - לעבוד ככה?
ב. האם יש לי את הגמישות של ה-layout שאני מכיר ב-wpf?
ג. באיזה IDE אוכל להשתמש כדי לייצר אפליקציות בזרימה שאני מכיר מ-C#.
@צדיק-תמים
האם ספריות צד ג' עובדים אופליין? אם כן אשמח לשמוע כיוונים טובים בנושא.
כבר מזמן רציתי לעבור לפיתוח בדפדפן אבל לא מצאתי לכך דרך משביעה רצון. (אני בבורותי מכיר C# wpf - וזהו).
@dovid כתב בשיתוף להערות - maPraqti תוכנה ליצירת מפת מקומות בבית כנסת:
@pcinfogmach שום כלי ושום פלטפורמה כיום לא טובה מספיק כמו הסטאק של הדפדפן.
למשל אם משתמשים בכלי UI שעובד עם פייתון ורוצים שיהיה עיצוב בעת מעבר עכבר (:hover בCSS), זה פי כמה (עשרות? ואולי מאות?) עבודה, תחזוקה, ואי יעילות, מהשורת עיצוב הקלילה בCSS.
הדפדפן זה הכלי האולטימטיבי לפיתוח GUI היום, גם של תוכנות אופליין (כמו VSCODE)
מאוד מעניין מה שאתה אומר: חושבני שזה תלוי מאוד מה אתה עושה דברים פשוטים כמו שתיארת זה נכון. יש גמישות אדירה בדפדפן שאין פשוט אין בנמצא.
מאידך (תתקן אותי אם אני טועה) פקדים מורכבים - צריך הרבה יותר יצירתיות. או ספריות צד שלישי.
אנקוט שני דוגמאות למשל שבבורותי אינני יודע אם הם קשים או לא:
ועוד שאלה: כמדומני שהביצועים של JS מוגבלים אם עושים פעולות כבדות
ועוד שאלה: כמדומני שיש הגבלות חמורות בהרשאות גישה על הדפדפן מסיבות בטיחות.
ועוד שאלה: כמדומני שדפדפן זולל זיכרון - לא?
בקיצור אשמח לשמוע איך בעצם אפשר לתכנת על מלא על בסיס JS -HTML.
@שוהם307
האם התקנת פונטים אחרים לאחרונה?
אם יצא לכם לעבוד עם TreeView ב-WPF ולהציג בו הרבה נתונים, אולי נתקלתם בהאטה בביצועים — במיוחד כשיש הרבה Nodes טעונים מראש.
בפקדים מבוססי רשימות (כמו ListBox), ניתן לפתור זאת על ידי שימוש ב-Virtualization, שמונעת טעינה של פריטים שלא מוצגים כרגע. אך TreeView, בשל המבנה ההיררכי שלו, לא תומך ב-Virtualization בצורה יעילה.
לכן, יצרתי פתרון פשוט שמדמה את ההתנהגות הזו על ידי טעינה עצלנית (Lazy Loading) של התוכן. זה לא רעיון חדש, אבל שווה להזכיר למי שלא מכיר או שכח שיש דרך לשפר את הביצועים בצורה ניכרת.
איך זה עובד בפועל:
כשפריט נטען לראשונה (Loaded), מוצג רק placeholder כדי להימנע מטעינה מיותרת.
רק בעת פתיחה (Expanded), נטענים בפועל הנתונים מה-ViewModel.
בעת סגירה (Collapsed), הנתונים מתחלפים שוב ב-placeholder — שחרור פשוט של משאבים.
שימו לב! במקרה זה אל תשתמשו ב-itemsource עבור HierarchicalDataTemplate ב- Xaml
להלן קוד דוגמא שמיישם את ההתנהגות הזו:
אשמח לקבל הצעות לשיפור:
כמו"כ אשמח לשמוע רעיונות איך להפוך את זה למשהו יותר כללי (כרגע הוא מגבל לסוג datacontext מסויים מאוד.
using System.Windows.Controls;
using System.Windows;
using Otzarnik.FsViewer;
using System.Collections.Generic;
namespace Oztarnik.Helpers
{
public static class TreeItemVirtualizationBehavior
{
public static bool GetEnableVirtualization(DependencyObject obj) =>
(bool)obj.GetValue(EnableVirtualizationProperty);
public static void SetEnableVirtualization(DependencyObject obj, bool value) =>
obj.SetValue(EnableVirtualizationProperty, value);
public static readonly DependencyProperty EnableVirtualizationProperty =
DependencyProperty.RegisterAttached("EnableVirtualization", typeof(bool), typeof(TreeItemVirtualizationBehavior),
new PropertyMetadata(false, OnEnableVirtualizationChanged));
private static void OnEnableVirtualizationChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
if (d is TreeViewItem item && e.NewValue is bool enabled)
{
if (enabled)
{
item.Expanded += OnItemExpanded;
item.Collapsed += OnItemCollapsed;
item.Loaded += Item_Loaded;
}
else
{
item.Expanded -= OnItemExpanded;
item.Collapsed -= OnItemCollapsed;
item.Loaded -= Item_Loaded;
}
}
}
private static void Item_Loaded(object sender, RoutedEventArgs e)
{
if (sender is TreeViewItem treeViewItem &&
treeViewItem.DataContext is TreeItem treeItem &&
treeItem.Items?.Count > 0)
treeViewItem.ItemsSource = new List<string> { "" };
}
private static void OnItemExpanded(object sender, RoutedEventArgs e)
{
if (sender is TreeViewItem treeViewItem &&
treeViewItem.DataContext is TreeItem treeItem &&
treeItem.Items?.Count > 0)
treeViewItem.ItemsSource = treeItem.Items;
}
private static void OnItemCollapsed(object sender, RoutedEventArgs e)
{
if (sender is TreeViewItem treeViewItem &&
treeViewItem.DataContext is TreeItem treeItem &&
treeItem.Items?.Count > 0)
treeViewItem.ItemsSource = new List<string> { ""};
}
}
}
בעניין החלפות עבור שמות הקדושים במאגר תורני
יש לי קוד רגקס שמחליף שם הו-יה די בקלות השאלה מה עם שאר השמות הקדושים:
למשל ענין מורכב הרבה יותר הוא החלפת שמות אחרים [כגון א-להים ב'אלקים' וכיו"ב].
הבעיה הגדולה שהם 'שמות משותפים' המופיעים גם בהקשר של חול, ואפילו 'אלהים אחרים' [את זה עצמו קל למצוא, אבל ישנם מקומות שלא כתוב 'אחרים'...]
יש מקומות שאפשר לזהות על ידי ההקשר, ישנם מקומות מסופקים או שהם תלויים במחלוקת.
האם יש רעיון איך להגדיר כלל ברור להחלפתם?
כמו"כ האם יש צורך להחליף גם את שאר השמות כמו שם אדנות וכו'
אם אתם עובדים עם Regex.Match או לולאות שמחזירות מופעים של Match, חשוב שתדעו: אובייקט ה-Match שומר הפניה למחרוזת המקורית שנבדקה. המשמעות היא שכל עוד אתם שומרים את אובייקט ה-Match בזיכרון — גם המחרוזת המקורית תישמר.
@shraga כתב באיך נכון לעבוד עם AI ללא ידע בקוד? האם אני עובד בצורה עקומה?:
בממשקים שדורשים DB עדיין לא נגעתי , אני חושש מזה ולכאורה ישתמש בהוראה לקלאוד שירשום נתונים לקבצי CSV
הכל תלוי מה גודל הנתונים שלך ובאיזה מהירות אתה צריך לגשת אליהם מסבר מאוד שבשבילך זה מספיק מה שאתה עושה.
@shraga כתב באיך נכון לעבוד עם AI ללא ידע בקוד? האם אני עובד בצורה עקומה?:
יש IDE כמו cursor או cline או windsurf, שמבצעים את השינוי בקבצים עצמם. הבעיה היא שבשביל לראות בפועל את הממשק והאם הוא עובד אני צריך בכל מקרה להריץ את זה בשרת.
יש תוספים שיאפשרו לך לראות במחשב בwinsurf ודאי.
@shraga כתב באיך נכון לעבוד עם AI ללא ידע בקוד? האם אני עובד בצורה עקומה?:
תלוי לכאורה באיזה כמות מדובר כלומר אם מדובר בכמה דברים ממוקדים מה רע במה שאתה עוזה אבל אם זה הולך להפוך למשהו קבוע בחיים שלך - כדאי שתלמד קצת על מה שאתה עושה זה בסופו של דבר זה יחסוך לך המון זמן ומאמץ.
בקיצור אתה צריך לחשב מהי הדרך הכי קצרה והכי יעילה עבורך.
@NH-LOCAL כתב בעצות לשיפור מראה של אתר אניטרנט:
ישור עקבי למרכז עבור פריטי התוכן.
אתה מתכווין לpadding מהצד או למשהו אחר?
אשמח לתמונה שממחישה אם מישהו יכול.
ושוב תודה לך ולכולם פשוט מדהים מה שהולך פה כל העזרה שאני מקבל והכל בטוב לב שכזה