בסופו של דבר וייב קודינג הינו דרך קצרה שהיא ארוכה - כלומר כדאי לכל אחד שעושה וייב ללמוד קצת תכנות (אם הוא יכול)ולעשות גם חלק מהדברים בעצמו כי בסופו של דבר זה יחסוך לו המון זמן.
כבר רמזו לזה כמה בפוסטים למעלה רק חשבתי שזה נקודה חשובה להדגיש.
pcinfogmach
-
MaPraqti: תובנות על vibe coding בבקשה 🙏 -
קוד להצגת התקדמות ב-statusbar של וורדהקוד ב-C# אבל אפשר להמיר ל-vba די בקלות (אולי לא הכל אבל את העיקרון) למי שירצה.
הקוד מציג התקדמות בסרגל התחתון של וורד.
היה לי את זה באחד מהפרוייקטים הישנים שלי, פעם שלחתי את זה למישהו והיה לו בזה שימוש, עכשיו נתקלתי בזה אמרתי אולי יהיה למישהו אחר שימוש.public static void ReportProgress(string actionDescription, int Currentvalue, int maxValue, int timePerIteration) { var progressPercent = (int)((double)(100 * Currentvalue) / maxValue); string timeLeft = TimeSpan.FromSeconds((maxValue - Currentvalue) * timePerIteration).ToString(@"hh\:mm\:ss"); string[] progressBars = new string[] { "●○○○○○○○○○", "●●○○○○○○○○", "●●●○○○○○○○", "●●●●○○○○○○", "●●●●●○○○○○", "●●●●●●○○○○", "●●●●●●●○○○", "●●●●●●●●○○", "●●●●●●●●●○", "●●●●●●●●●●", }; Globals.ThisAddIn.Application.StatusBar = $"- {timeLeft} - {progressPercent}% {progressBars[Math.Max((progressPercent / 10) - 1, 0)]} {actionDescription} {Currentvalue} \\ {maxValue}"; } -
מבנה נתונים גלובלי עבור Checked TreeView ב-Wpf
כידוע, הדרך הטובה ביותר להתנהל עם TreeView ב-WPF היא עם מבנה נתונים הררכי, ו-HierarchicalDataTemplate ב-WPF נבנה במיוחד למטרה זו.
אחרי שמצאתי את עצמי בפעם השלישית בונה מבנה נתונים עבור Checked TreeView (ראה תמונה), החלטתי לשבת כמה דקות ולבנות משהו יותר גלובלי שיאפשר לי להשתמש בו גם בעתיד. הרעיון הוא לייצר מחלקה בסיסית המכילה את כל מה שדרוש עבור מטרה זו, כך שאוכל לרשת אותה ולהשתמש בה עבור כל מבנה נתונים הררכי באופן כללי עם הדרישה הזו של Checked TreeView.שימו לב! אני הגדרתי את ה-Default של ה-IsChecked כ-false ייתכן ותרצו לשנות את זה ל-true תלוי באמפלמנטציה שלכם.
אם לא הבנתם את הנושא דיו והוא מעניין אתכם? אנא קיראו כתבה זו כהקדמה:
https://www.codeproject.com/Articles/26288/Simplifying-the-WPF-TreeView-by-Using-the-ViewModeלהלן הקוד:
///sample usage //public class MyCheckedItem : TreeItemBase<MyCheckedItem> //{ // // Custom properties if needed //}using System.Collections.Generic; using System.Linq; namespace WpfLib.ViewModels { public class CheckedTreeItemBase<T> : TreeItemBase<T> where T : CheckedTreeItemBase<T> { bool? _isChecked = false; public bool? IsChecked { get => _isChecked; set => SetCheckedValue(value, true); } public void SetCheckedValue(bool? isChecked, bool updateChildren) { if (SetProperty(ref _isChecked, isChecked, nameof(IsChecked))) { if (updateChildren && Items != null) { foreach (var child in Items) { if (child.IsChecked != isChecked) child.IsChecked = isChecked == true; } } if (Parent != null) { var siblings = Parent.Items; var parentCheckedValue = siblings.All(c => c.IsChecked == true) ? true : siblings.All(c => c.IsChecked == false) ? (bool?)false : null; Parent.SetCheckedValue(parentCheckedValue, false); } } } public IEnumerable<T> EnumerateCheckedItems() { if (Items != null) { foreach (var child in Items) { if (child.IsChecked == true) yield return child; foreach (var item in child.EnumerateCheckedItems()) yield return item; } } } } }המודל יורש ממודל treeitembase שמשמש כבסיס לכל מודל היררכי בעץ נתונים
using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Text.Json.Serialization; namespace WpfLib.ViewModels { public class TreeItemBase<T> : ViewModelBase where T : TreeItemBase<T> { string _name; ObservableCollection<T> _items = new ObservableCollection<T>(); [JsonIgnore] public T Parent { get; set; } public virtual string Name { get => _name; set => SetProperty(ref _name, value); } public ObservableCollection<T> Items { get => _items; set => SetProperty(ref _items, value); } public override string ToString() => Name; public void AddChild(T item) { if (Items == null) Items = new ObservableCollection<T>(); Items.Add(item); item.Parent = (T)this; } public IEnumerable<T> EnumerateItems() { if (_items == null) yield break; foreach (var item in _items) { yield return item; foreach (var child in item.EnumerateItems()) yield return child; } } } }המודל יורש מודל אחר שימושי בשם ViewModelBase המהווה בסיס טוב עבור כל viewModle ב-Wpf
using System.Collections.Generic; using System.ComponentModel; using System.Runtime.CompilerServices; namespace MyModels { public class ViewModelBase : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; protected virtual void OnPropertyChanged(string propertyName) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } protected bool SetProperty<T>(ref T field, T value, [CallerMemberName] string propertyName = null) { if (EqualityComparer<T>.Default.Equals(field, value)) return false; field = value; OnPropertyChanged(propertyName); return true; } } } -
מדריך: איך לייצר לוקליזציה ב-wpf בצורה פשוטה וקלילהפתרון פשוט וקליל ללוקליזציה באפליקציות WPF
(הקוד נמצא בסוף הכתבה)
קראתי הרבה מדריכים בנושא לוקליזציה ונתקלתי בהרבה ספריות מתקדמות ומורכבות. בסופו של דבר, רוב הפתרונות הללו הופכים את ניהול התרגום למשימה מסובכת, במיוחד כאשר יש צורך לבצע תרגום מחדש או להוסיף שפות חדשות בשלב מאוחר יותר.
לאחר שחיפשתי פתרון פשוט ויעיל, הגעתי לגישה הבאה. יש לציין כי פתרון זה מתאים בעיקר לאפליקציות קטנות ובינוניות, מאחר שהוא טוען את כל המידע לזיכרון בבת אחת. עבור אפליקציות גדולות, המצריכות פתרון מתוחכם יותר, כמו שימוש במסד נתונים, פתרון זה לא יתאים. (ייתכן שיישום Dictionary מסוג חסכוני יותר בזכרון יפתור את הבעיה ללא צורך במסד, אבל לא בדקתי את זה)
למעשה, עבור יישומים שאינם דורשים מורכבות כזו, גישה זו יכולה לחסוך הרבה זמן ומאמץ.
השלבים לבניית הפתרון:
א. שימוש בקובץ JSON
קובץ JSON מאפשר לנו לנהל ולערוך את כל המחרוזות של האפליקציה בצורה מסודרת ונוחה. המפתח (Key) מייצג את שם הפריט, והערך (Value) מייצג את המחרוזת המתורגמת.
עבור כל שפה נייצר קובץ נפרד עם הקידומת של השפה בתוך התיקייה הייעודית (בקוד להלן אני בחרתי "Asstes//Locale").
הקידומת תהיה בת שני אותיות בלבד ובאותיות קטנות למשל "he" או "en".
שימו לב! בקוד שכתבתי שפת המערכת מזוהה באופן אוטומטי ייתכן וגישה זו איננה מתאימה לכם.
ב. שימוש במבנה Dictionary סטטי
אנו נטען את תוכן ה-JSON לקובץ זיכרון באמצעות מילון (Dictionary) סטטי, שיהיה זמין לכל רכיבי האפליקציה.
ג. שימוש ב-Markup Extension
ניצור הרחבה מותאמת אישית (Markup Extension) שתאפשר לנו לגשת למחרוזות מתוך ה-JSON ישירות מתוך ה-XAML. (כמו"כ נוכל לצפות בתוצאות בתצוגה המקדימה של עורך ה-Xaml).דגשים חשובים לניהול הפתרון:
-
שמות זהים לשמות הפקדים: הקפידו על כך ששמות המפתחות ב-JSON יהיו זהים לשמות הפקדים שאותם הם מתארים. כך, תוכלו לשמור על עקביות ולמנוע טעויות.
-
מבנה עם תיאור ברור: הוסיפו תיאור לכל מפתח בקובץ ה-JSON, כך שיהיה קל להבין מה הוא מייצג. מומלץ לצורך זה להשתמש בתיאורים המובנים של WPF. לדוגמה:
{ "Tooltip.MinimizeButton": "Minimize", "Tooltip.CloseButton": "Close", "Title.MainWindowTitle": "My Application" }העיקרון הזה יקל עליכם גם בכתיבת ה-JSON וגם בייחוס המפתחות ישירות מתוך ה-XAML.
סדר אלפא ביתי של המפתחות ייקל על עריכת שינויים והתמצאות כללית ב-JSON.להלן הקוד:
using System.Globalization; using System.IO; using System.Text.Json; using System.Text.RegularExpressions; using System.Windows; using System.Windows.Markup; namespace Assets.Locale { public class LocalizedStringExtension : MarkupExtension { public string Key { get; set; } public LocalizedStringExtension() { } public LocalizedStringExtension(string key) { Key = key; } public override object ProvideValue(IServiceProvider serviceProvider) { if (string.IsNullOrEmpty(Key)) return "[Missing Key]"; else return LocaleHelper.LocaleDictionary.TryGetValue(Key, out var value) ? value : $"[{Key}]"; } } public static class LocaleHelper { private static readonly string LocaleDir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Assets", "Locale"); private static string LocalePath => Path.Combine(LocaleDir, $"{CultureInfo.CurrentCulture.TwoLetterISOLanguageName}.json") is string path && File.Exists(path) ? path : Path.Combine(LocaleDir, "en.json"); private static Dictionary<string, string>? _localeDictionary; public static Dictionary<string, string> LocaleDictionary => _localeDictionary ??= LoadLocaleDictionary(); private static Dictionary<string, string> LoadLocaleDictionary() { if (!File.Exists(LocalePath)) return new Dictionary<string, string>(); try { string json = File.ReadAllText(LocalePath); return JsonSerializer.Deserialize<Dictionary<string, string>>(json) ?? new Dictionary<string, string>(); } catch { // Return an empty dictionary if reading or deserialization fails return new Dictionary<string, string>(); } } } }ובתוך ה-xaml יש להוסיף
xmlns:locale="clr-namespace:Assets.Locale"ואז תוכלו למשל לעשות כך
<Button x:Name="MinimizeButton" ToolTip="{locale:LocalizedString Key='Tooltip.MinimizeButton'}"> -
-
קוד ל- treeview ב- html כולל חיפושקוד ל- treeview ב- html כולל חיפוש - אשמח לקבל משוב - תודה
עריכה: עשיתי המון שיפורים מצו"ב דוגמא מליאה.
בגירסה זו ה-treeview נוצר באופן דינאמי לפי הכותרות שבמסמך
(נחסם לי משום מה בנטפרי ה-jsfiddle שלו תוכלו להעתיק את הקוד לכאן כדי לראות את התוצאה).<!DOCTYPE html> <html lang="he"> <head> <meta charset="UTF-8"> <style> html, body { height: 100%; margin: 0; padding: 0; } .container { display: flex; height: 100%; } .textContentBox { background-color: white; flex: 1; height: 100%; margin: 5px; padding: 5px; overflow-y: auto; } .treeView-container { -webkit-touch-callout: none; /* iOS Safari */ -webkit-user-select: none; /* Safari */ -khtml-user-select: none; /* Konqueror HTML */ -moz-user-select: none; /* Firefox */ -ms-user-select: none; /* Internet Explorer/Edge */ user-select: none; /* Non-prefixed version, currently supported by Chrome and Opera */ max-width: 35%; background-color: whitesmoke; display: flex; flex-direction: column; margin: 5px; padding: 5px; height: 100%; } #treeView-SearchInput { height:25px; border: 1px solid #ccc; } #treeView-SearchInput:focus { outline: none; } .treeView { height:100%; overflow: auto; margin-top: 5px; white-space: nowrap; text-indent: -40px; } .treeView details { border-top: 1px solid #eaeaea; border-bottom: 1px solid #eaeaea; } .treeView summary::-webkit-details-marker { display: none; } .treeView summary { transition: background-color 0.3s ease; list-style: none; } .treeView summary:hover { background-color: #eaeaea; } .treeView Button { background: none; border: none; cursor: pointer; font-weight: 500; margin: 5px; transition: background-color 0.3s ease; border-radius: 50px; } .treeView button:hover { background-color: #eaeaea; } </style> </head> <body dir="rtl"> <div class="container"> <div class="treeView-container"> <input type="text" id="treeView-SearchInput" onkeyup="findAndSelectItem()" placeholder="חפש כותרת..."> <div class="treeView" id="treeView"> </div> </div> <div class="textContentBox" id="contentBox"> <h2 id="בעל הטורים בראשית המאור, פרק א">פרק א</h2> <h3 id="בעל הטורים בראשית המאור, פרק א, פסוק א">פסוק א</h3> בראשית ברא. בגימטריא בראש השנה נברא (העולם), בראשית נוטריקון בראשונה ראה אלהים שיקבלו ישראל תורה.<p> בראשית ברא אלהים ס''ת אמת מלמד שברא העולם באמת כמו שנאמר ראש דברך אמת וכן יש הרבה פסוקים ס''ת אמת:<p> <h3 id="בעל הטורים בראשית המאור, פרק א, פסוק ב">פסוק ב</h3> "תֹהוּ וָבֹהוּ" – ב'. הכא, ואידך: "רָאִיתִי אֶת הָאָרֶץ וְהִנֵּה תֹהוּ וָבֹהוּ" (ירמיהו ד כג). מלמד שצפה הקב"ה בבריאת העולם בחורבן הבית, שנחרב בשנת תה"ו, שהרי הבית הראשון עמד ת"י שנה, ונחרב בשנת תי"א. ובית שני עמד כמנין הית"ה, וזהו "וְהָאָרֶץ הָיְתָה". ואחר כך "חֹשֶׁךְ", רמז לגלויות. וכן דורש בבראשית רבה. דבר אחר: "וְהָאָרֶץ הָיְתָה תֹהוּ וָבֹהוּ" – בגימטריא "אלפים שנה בלי תורה".<p> "וְרוּחַ אֱלֹהִים מְרַחֶפֶת" – בגימטריא: "זו היא רוחו של מלך המשיח".<p> "וְחֹשֶׁךְ עַל פְּנֵי תְהוֹם" – ב' במסורת. הכא, ואידך: "וְחֹשֶׁךְ אֵי זֶה מְקֹמוֹ" (איוב לח יט). זה הוא שאמרו (חגיגה יא ב), שאין לשאול: "מה לפנים? מה לאחור?" "וְחֹשֶׁךְ אֵי זֶה מְקֹמוֹ", פירוש, שאין לשאול אי זה היה מקום החושך תחילה.<p> "וְרוּחַ אֱלֹהִים" – ב' דסמיכי. הכא, ואידך: "וְרוּחַ אֱלֹהִים לָבְשָׁה אֶת זְכַרְיָה" (דברי הימים ב כד כ). קרי ביה הכא נמי: "וְרוּחַ אֱלֹהִים לָבְשָׁה". פירוש, שעל ידי לבושו אמר "וַיְהִי אוֹר", דכתיב בתריה: "וַיֹּאמֶר אֱלֹהִים יְהִי אוֹר". וזה הוא שדרשו רז"ל (ב"ר פרשה ג): ממעטה לבושו נבראת האורה.<p> <h2 id="בעל הטורים בראשית המאור, פרק לח">פרק לח</h2> <h3 id="בעל הטורים בראשית המאור, פרק לח, פסוק טו">פסוק טו</h3> פרק לח, טו <p> ויחשבה. ג' במסורה. הכא. ואידך: בפרשת לך לך (לעיל טו, ו) ויחשבה לו צדקה. ואידך: ויחשבה עלי לשכורה (ש"א א, יג): <p> לזונה. ב' במסורה. ויחשבה לזונה. איכה היתה לזונה (ישעיה א, כא). מה תמר בבזיון ולבסוף בכבוד אף ירושלים סופה בכבוד, כדכתיב (זכריה ב, ט) ולכבוד אהיה בתוכה. וזהו זאת קומתך דמתה לתמר (שה"ש ז, ח).<p> <h2 id="בעל הטורים בראשית המאור, פרק מד">פרק מד</h2> <h3 id="בעל הטורים בראשית המאור, פרק מד, פסוק יח">פסוק יח</h3> ויגש אליו יהודה: ס"ת שוא. שאמר לו אני שוה לך שכמו שאתה מלך גם אני מלך. ועל זה דורש במדרש (ברשית רבה צ"נ:ב') כי הנה המלכים נועדו (תהילים מ"ח:ה'):<p> <h2 id="בעל הטורים בראשית המאור, פרק מט">פרק מט</h2> <h3 id="בעל הטורים בראשית המאור, פרק מט, פסוק א">פסוק א</h3> ויקרא יעקב אל בניו: שביקש לגלות להם הקץ ונסתם ממנו (פסחים נו.). אמר יעקב שמא יש בכם חטא. אמרו לו תדקדק בשמותנו ולא תמצא בהם אותיות חט. ואמר להם קם אין בהם אותיות קץ (עיין ירושלמי יומא ס״פ ז׳, בבלי שם עג:).<p> </div> </div> <script> function populateTreeView() { const contentBox = document.getElementById('contentBox'); const treeView = document.getElementById('treeView'); let currentDetails = treeView; let currentIndentLevel = 0; // Loop through each heading element in contentBox contentBox.querySelectorAll('h1, h2, h3, h4, h5, h6').forEach(heading => { const indentLevel = parseInt(heading.tagName[1]); // If the current heading has a lower or equal indent level to the previous one, // we need to move up the tree to the appropriate parent details element while (currentIndentLevel >= indentLevel) { currentDetails = currentDetails.parentElement; currentIndentLevel--; } // Create a new details and summary elements const details = document.createElement('details'); const summary = document.createElement('summary'); const button = document.createElement('button'); summary.style.paddingRight = 20 * indentLevel + 'px'; button.textContent = '👁'; button.setAttribute('onclick', `treeViewSelection('${heading.id}')`); button.setAttribute('title', 'הצג'); summary.appendChild(button); summary.appendChild(document.createTextNode(heading.textContent)); details.appendChild(summary); // Append the new details element to the currentDetails currentDetails.appendChild(details); // Update the currentDetails and currentIndentLevel for the next iteration currentDetails = details; currentIndentLevel = indentLevel; }); } function treeViewSelection(id) { // Scroll the corresponding heading into view const heading = document.getElementById(id); if (heading) { heading.scrollIntoView({ behavior: 'smooth', block: 'start' }); } } // Populate the tree view on page load window.onload = populateTreeView; // //treeView-Search // function findAndSelectItem() { var input = document.getElementById("treeView-SearchInput"); var filter = input.value.trim().toUpperCase().replace(/,/g, ''); var details = document.querySelectorAll("details"); var firstMatchFound = false; // Collapse all details if filter is empty if (filter === "") { for (var i = 0; i < details.length; i++) { details[i].open = false; var summary = details[i].querySelector("summary"); details[i].style.display = ""; } return; // Exit function } for (var i = 0; i < details.length; i++) { var summary = details[i].querySelector("summary"); if (summary) { var parentPath = getParentText(details[i]).replace(/👁/g, '').toUpperCase(); var summaryPath = summary.textContent.replace(/👁/g, '').trim().toUpperCase(); var fullPath = parentPath + " " + summaryPath; // Highlight matching summaries if (fullPath.includes(filter)) { details[i].open = true; details[i].style.display = ""; if (!firstMatchFound) { summary.scrollIntoView({ behavior: 'smooth', block: 'center' }); firstMatchFound = true; } // Open parent details elements recursively var parentDetails = details[i].parentNode; while (parentDetails.tagName === 'DETAILS') { parentDetails.open = true; parentDetails.style.display = ""; parentDetails = parentDetails.parentNode; } } else { details[i].open = false; details[i].style.display = "none"; } } } } function getParentText(element) { var text = ""; var parent = element.parentNode; while (parent && parent.tagName.toLowerCase() === 'details') { var summary = parent.querySelector("summary"); if (summary) { text = summary.textContent.trim() + " " + text; } parent = parent.parentNode; } return text.trim(); } </script> </body> </html> -
איך יוצרים את האייקון הזה בhtml?@Sara-Rivka כתב באיך יוצרים את האייקון הזה בhtml?:
שלום וברכה.
אין לי ידע בספריות בhtml.
ואני צריכה לשים את האייקון הזה (החץ הכחול):

משהו יוכל לכתוב לי קוד לזה?
תודה מראש.הכוונה לא ברורה מספיק:
אתם מנסים לשים bullet או סתם אייקון או ליצור treeview?אם הכוונה רק לאייקון אפשר בקלות על ידי יוניקוד
<span style="color: blue;">◂</span>נלקח מכאן
https://www.compart.com/en/unicode/search?q=Triangle#characters
יש שם גדלים שונים וגם כיוונים שונים. למעשה אפשר לשחק עם הגדלים גם בcss font size -
רעיונות תעסוקה לחופשבמהלך הקורונה עלו המון רעיונות, צריך למצוא מישהו ששמר אותם.
חפרתי קצת הנה מה שמצאתי
https://drive.google.com/drive/folders/1FTf3m7tlXn5cVP20tIY2vAzfFPjrNf_i?usp=drive_link
https://drive.google.com/drive/folders/12hDLhw9GHSfQraUCVDqvY_2ElyHyjRHZ?usp=drive_link
https://drive.google.com/drive/folders/11oFrrfWzT42Xb2TB2pqlhC2CZoe04UYy?usp=drive_link
הנה כמה רעיונות לפעילויות שעשיתי עם הילדים לאחרונה:
באולינג עם בקבוקי מים וכדור
השתמשנו בבקבוקי מים ריקים במקום הפינים, ובכדור רגל כדי להפיל אותם. זה היה כיף גדול לכל המשפחה!בניית "מכונית" סביב לבמבה
לקחנו קרטון גדול ועטפנו את הבמבה מלמטה. הוספנו קרטון קטן יותר מעליו בשביל הראש, חיברנו את הקרטון של הראש לקרטון הגדול כך שיוכל להיפתח, וחתכנו בו חלון. זה הבסיס, ומשם אפשר להמשיך לקשט ולהוסיף אלמנטים לפי הדמיון.בניית מכונית מונעת בלון
החומרים הדרושים: קופסת נעליים, שני קשים, שני מקלות שיפוד, בלון וארבע פקקים.
א. יוצרים חורים בקופסת הנעליים ומשחילים דרכם את הקשים, או מדביקים אותם בתחתית הקופסה עם דבק חם.
ב. משחילים את מקלות השיפוד בתוך הקשים ומדביקים את הפקקים בקצוות שלהם עם דבק חם.
ג. יוצרים חור בחלק האחורי של המכונית ומשחילים דרכו את פיית הבלון. מנפחים את הבלון, מניחים את המכונית על הרצפה, ומשחררים. המכונית תיסע קדימה בעזרת האוויר היוצא מהבלון!ציור הצורה של הילד על דף גדול
אפשר לחבר כמה דפים קטנים אם אין לכם דף גדולציור עם גיר על המדרכה
החומרים הדרושים: גירים צבעוניים ומדרכה פנויה. (מאוד מלכלך).אורגמי
דרוש ליווי מבוגר,
יש הרבה אתרים מדהימים בשביל זה.עוד רעינונות מאת ידידנו chatgpt
(הבאתי אותם כדי להוכיח שהוא יודע איך לענות על שאלה זו - ולתועלת מי שאין לו גישה).
בניית מצנח מבקבוק פלסטיק
החומרים הדרושים: בקבוק פלסטיק, נייר או בד למצנח, חוטים ומספריים.
א. חותכים את הבקבוק לחצי ומשאירים רק את החלק התחתון.
ב. יוצרים מצנח מנייר או בד, וקושרים אותו לחוטים.
ג. מחברים את החוטים לבקבוק. זורקים את הבקבוק מלמעלה ורואים אותו נוחת בעדינות כמו מצנח.הכנת קצף צבעוני למשחק באמבטיה
החומרים הדרושים: סבון כלים, מים, צבעי מאכל, בלנדר.
א. מערבבים סבון כלים, מים וכמה טיפות של צבעי מאכל בבלנדר עד שמתקבל קצף סמיך וצבעוני.
ב. מכניסים את הקצף לאמבטיה ומאפשרים לילדים לשחק עם הצבעים.
שימו לב שצבע מאכל לא יורד בקלות מהבגדים!הכנת גלידה ביתית בשקית
החומרים הדרושים: חלב, סוכר, וניל, קרח, מלח גס, שתי שקיות ניילון (אחת קטנה ואחת גדולה).
א. בשקית הקטנה שמים את החלב, הסוכר, והווניל, וסוגרים היטב.
ב. בשקית הגדולה שמים קרח ומלח גס.
ג. מכניסים את השקית הקטנה לתוך הגדולה, מנערים היטב למשך כ-10 דקות, והגלידה מוכנה!יצירת חותמות מתפוחי אדמה
החומרים הדרושים: תפוחי אדמה, צבעים, ניירות, סכין (אפשר להשתמש עם חותך צורות של עוגיות).
א. חותכים תפוח אדמה לחצי ומגלפים בו צורות שונות בעזרת סכין (כוכבים, לבבות וכו').
ב. טובלים את החותמת בצבע ומדפיסים על הנייר.משחקי מים עם ספוגים
החומרים הדרושים: ספוגים, דליים עם מים.
תנו לילדים ספוגים ודליים מלאים במים. הם יכולים לשחק בהשפרצת מים, להעביר מים מדלי אחד לאחר, או אפילו לבנות מגדלי ספוגים רטובים.משחקי בנייה עם קוביות קרח צבעוניות
החומרים הדרושים: מים, צבעי מאכל, מגשי קרח.
א. מערבבים מים עם צבעי מאכל שונים ומקפיאים במגשי קרח.
ב. נותנים לילדים לבנות מבנים שונים עם קוביות הקרח הצבעוניות ולראות איך הן נמסות באיטיות. -
גמ"ח עזרה בvba מאקרו - עבור תוכנת וורדמכיוון שלא ראיתי מישהו שסידר את הנושא לכן אמרתי אעלה פה קצת מה שאספתי מנסיוני.
מי שיש לו שאלות יכול לפנות אלי במייל (שם משתמש בגימייל) - ללא התחייבות. וכמובן שאפשר גם לפתוח פוסט כאן בפורום ולהרוויח את הידע הכללי של החברים היקרים.תוכלו לעיין בנושאים אלו בתור התחלה.
- קורסים למתחילים VBA
- איך ליצור יוזרפורם userform
- איך להכין תוסף לוורד בקלות מהקודים שלכם
- איך להתקין קוד מאקרו בתוך תבנית
- אוסף קודים שימושיים
- אוסף תבניות מאקרו
- תוסף לוורד עם המון קודים שימושיים (התוסף חינמי ואפשר להשתמש בקודים ללא הגבלה)
- ידיעה חשובה ב-VBA: ביטול פעולה אחרונה למאקרו שלם כיחידה אחת
- איך למנוע מסך לבן מפקודות מאקרו ארוכות: VBA
מי שמכיר עוד קישורים שימושיים שיכתוב לתועלת הציבור אשמח להוסיף בפוסט המקור בלי נדר.
-
מדריך טוב לjs עדיף התמקדות בnode ועוד יותר עדיף - עבריתמשהו אישי שחוויתי בלימוד JS – אולי יש עוד אנשים שמרגישים כמוני, ולכן אני משתף.
מאוד מאוד התקשיתי ללמוד JS.
ואני דווקא דובר 'קורא וכותב באנגלית שוטפת, ובכל זאת גם המדריכים המומלצים ביותר לא ממש קידמו אותי.עד שבשלב מסוים הבנתי שהקושי שלי נובע מכך שחסר לי המבנה הכללי של הדברים.
במקור JS נועדה בעיקר עבור frontend, וזה השפיע מאוד על הפרדיגמות של השפה ועל הדרך שבה עובדים איתה.
ברגע שתפסתי את זה – זה הקל עלי מאוד.
נכון שהיום JS היא הרבה מעבר לזה, אבל לדעתי אם אין את הבסיס וההבנה של הרקע הזה, מאוד קל לטבוע מהר בים הגדול שנקרא JS.
הערה נוספת:
css מודרני הוא כלי ממש עוצמתי ובהרבה מקרים הוא תפס את המקום של js- של פעם. חשוב ללמוד css בצורה טובה כדי לא לעבוד קשה סתם עם js -
וירטואליזציה ב-Html גדוליםיש לא מעט ספריות שמאפשרות לממש וירטואליזציה של רשימות בצד הלקוח.
חלקן טובות יותר וחלקן פחות.
למשל tan-stack מהווה בחירה מועדפת אצל הרבה מפתחים
אם אתם מפתחים ב-vue תוכלו ולמצוא רשימה עדכנית כאןבכל אופן מה שחשוב לדעת הוא שב-CSS מודרני קיימת גם אפשרות פשוטה יותר, שבמקרים רבים עושה את העבודה בצורה טובה מאוד:
content-visibility: autoלמיטב הבנתי זה לא בדיוק אותו דבר כמו וירטואליזציה מלאה (כמו שעושות ספריות), כי האלמנטים עדיין קיימים ב-DOM. אבל מבחינת ביצועים במקרים רבים זה מספיק טוב ואף פשוט יותר ליישום.
-
על כתיבה טבעית, השלמה אוטומטית, ומה שביניהם@NH.LOCAL כתב בעל כתיבה טבעית, השלמה אוטומטית, ומה שביניהם:
העבודה כעת היא התכנון והגדרה ברורה של המשימה הרצויה, לא הכתיבה בפועל
נקודה למחשבה - אם אני יודע לתכנת ואני צריך לחשוב טוב טוב איך להתנסח האם לא ייקח לי פחות זמן לכתוב את הקוד בעצמי מאשר לחשוב איך להתנסח טוב טוב?
זה לא נכון לכל מקרה אבל.... -
איך שוכרים מתכנת?להבא אתה יכול פשוט לכתוב דרוש מתכנת טוב בפלאטר. מישהו מכיר? או משהו כזה.
בכל אופן אני שמח שהסתדרת. -
עזרה ב git@Sara-Rivka
לתשומ לבכם
עבודה ישירה עם Github בתוך Visual Studio Code היא הרבה יותר נוחה וכוללת תמיכה אינטגרטיבית שמפשטת את התהליך. -
תוסף חיפוש רגקס בוורדעקב בקשת הציבור
ערכתי מדריך לתוסף ובתוכו גם המדריך הנפלא של @dovid עבור ביטויי רגקס מכאןכמו כן הוספתי 2 לחצנים חשובים לתוסף:
להורדת הגרסה המעודכנת לחצו כאן
https://github.com/pcinfogmach/RegexInWordPublish/releases/tag/v2.3- לחצן עזרה – לחצן זה פותח את המדריך של התוסף הכולל בתוכו גם מדריך על איך לערוך חיפוש רגקס.
- לחצן "קידודון רגקס" - הפותח רשימה פעילה של קודי רגקס מצויים ושימושיים עם הסברים ודגמאות קצרות. לחיצה על כל פריט בתפריט זה מזינה את אותו הפריט (קוד רגקס) אל תוך התיבה הפעילה הנוכחית חיפוש או החלפה.

-
מראה יותר אחיד ויפה לפקד ב-wpfממש מרגש כל העזרה שקיבלתי פה מחברי הפורום המיוחדים - תודה!
להלן התוצאה לבינתיים:


-
תוסף חיפוש רגקס בוורד@pcinfogmach
לכל מי שביקש נוסף כעת אפשרויות החלפה ברגקס
תודה רבה לכל העוזרים ובפרט ל-@מד ול-@dovid שללא העצות שלהם לא יודע אם הייתי יכול להשלים את המלאכה
-
כיצד להשוות ערך range.Font.Color לצבע הקסדצימלי ב-VSTO?@yossiz
וואו! תודה רבה.
להלן תקציר תוכן הכתבה:
(אפשר לעשות דוקטורט בוורד רק מהנושא הזה
)בכתבה מוצג קוד לחישוב דינאמי של הערכים השונים של גווני ערכת הנושא (בערכים דצימליים המומרים ל-hex מיוחד לוורד).
בנוסף, מופיע קוד לקבלת ערכי ה-hex הקלאסיים של צבעי ערכת הנושאהעיקרון של הקודים הללו מוסבר בתת-כתבה, והוא קצר וברור.
כמו כן, מוצג קוד המדמה את הגוונים ב-hex באמצעות HSL. מדובר בקוד מעט מורכב, ולא בהכרח חיוני — שכן בדיאלוג של Word יש רק ערכים סטטיים מסוימים. הדרך היחידה לייצר גוונים אחרים היא באמצעות הקוד שבכתבה, שרוב המשתמשים כלל אינם מכירים או מתעניינים בו.
כמו"כ אין קוד המחשב כיצד הדיאלוג ב-Word מפיק את הגוונים ועבור אלו צבעים. למעשה, קיימים שלושה סוגי חישוב גוונים בדיאלוג: רקע, טקסט והדגשה. ואפשר לעשות זאת בצורה סטטית. -
תוסף חיפוש רגקס בוורדבס"ד יש עדכונים
עוד לא הספקתי את ההחלפה אבל החיפוש מוכן
תודה לכל המסייעים.
אשמח מאוד לשמוע על באגים אם יש.שימו לב! אם התקנתם את הגירסה הישנה יש להסיר אותה ולהתקין את החדשה. עקב העובדה שהייתי צריך להחליף את הפרוייקט באמצע העבודה.
זוהי פשלה חד פעמית בעז"ה ומכאן ואילך יהיה אפשר להתקין עדכונים ברגע בלי לדאוג אחר הסרת הקודם. איתכם הסליחה.כמו"כ יצרתי גיטהאב והוספתי קוד בתוכנה עבור בדיקת עידכונים אוטומטית.
https://github.com/pcinfogmach/RegexInWordPublish/releases/tag/v1
-
עזרה בביטוי רגולארילגופו של עניין:
אין לי היכרות עם מדיה-ויקי או עם הפורמט שלו, והמשמעות של הנקודה ושל ה-"|" אינן ברורות לי דיו. עם זאת, אני מניח שמדובר בפורמט מסודר עם כללים, ואם תלמד איך הוא בנוי, אני בטוח שתוכל לנתח כל טקסט בסגנון הזה די בקלות הכל שאלה של כמה זמן אתה מוכן להשקיע.אם נתעלם לרגע מהנקודה ומה-"|", נוכל להשתמש בשילוב של רג'קס וקוד רקורסיבי עם מבנה נתונים פשוט (@dovid רמז לזה כבר).
אבל חשוב לציין שזה בהנחה שהטקסט לא מכיל שגיאות או אי-עקביות – אחרת זה כאב ראש * 20.
להלן דוגמא ב-C# שהזנתי ל-LinqPad, הקוד הינו סקיצה בעלמא תוכל לשפר אותו כיד ה' הטובה עליך:void Main() { string content = "{{some content{{some more content{{some more content{{some more content}}}}}}}}"; var root = new NestedContent(content, null); root.Dump(); // Dump the root object to view its structure } class NestedContent { public string Content { get; set; } public NestedContent Child { get; set; } public NestedContent(string content, NestedContent parent) { // Trim only the outermost braces (single pair at start and end) if (content.StartsWith("{{") && content.EndsWith("}}")) { content = content.Substring(2, content.Length - 4); } var match = Regex.Match(content, @"\{\{.*\}\}"); if (match.Success) { string nestedContent = match.Value; this.Content = content.Replace(nestedContent, ""); // Replace inner braces content Child = new NestedContent(nestedContent, this); // Recursive call for nested content } else { this.Content = content; // Set content when no more nested structures } } }והתוצאה:

-
עזרה בביטוי רגולארי@האדם-החושב
זה יפה שכולם פיענחו מה אתה רוצה לי זה לקח קצת זמן עד שקלטתי שאני צריך לקרוא את מה שכתבת בפנים בקונטקסט של הכותרת ולנחש שבעצם אתה שואל איך לעשות רגקס שיפתור את הבעיה.
אתה כותב הבעיה מתחילה מבלי לפרט מה עשית לפני שהבעיה התחילה.אישית לא הייתי שואל ככה אלא איך לפתור את הבעיה והאם רגקס הוא כיוון טוב.