@yossiz
בעיקר במקרה שהמסמך כבר פתוח ב-office
תכלס שיניתי כעת את הקוד שיעבור לשיטה השניה על כל שגיאה כדי שיכלול את מה ש-DOvid כתב להלן
pcinfogmach
-
קוד C# לחילוץ טקסט מקבצי וורד -
קוד עבור ProgressDialog ב-C#הערה חשובה:
לאחר חקירת הנושא גיליתי שצריך לעבוד עם אחוזים ולא כמו שעשיתי
עיין כאן להסבר מפורט
https://brianlagunas.com/does-reporting-progress-with-task-run-freeze-your-wpf-ui/עריכה:
בדיקות שעשיתי יוצא שבעל הכתבה איננו צודק לא היה שום שיפור באחוזים לעומת מה שאני עשיתי
מה שכן מצאתי ששימוש ב- אפשרות של -Background ב-Dispathcer מועיל קימעאApplication.Current.Dispatcher.BeginInvoke(new Action(() => { }), DispatcherPriority.Background); -
באיזה תוכנת אינדקס גוגל משתמשים?@yossiz כתב בבאיזה תוכנת אינדקס גוגל משתמשים?:
עיין כתבה זו על האתגרים המיוחדים בעברית
הכתבה הנ"ל לבסוף הובילה לפרוייקט יפה מאוד שקורים לו HEBMORPH.
ברצוני לכתוב כמה השגות שהיו לי על פרוייקט זה - בעצם כמנוע חיפוש כללי הוא באמת משדרג את החיפוש בהמון. חשוב לציין שהמילון שהוא משתמש בו נמצא בשימוש על ידי מנוע החיפוש של גוגל ועוד כמה מנועי חיפוש מפורסמים והעקרונות שלו ה עקרונות חזקים ומנוסים.יחד עם זאת כשמדברים על HEBMORPH ודומיו, חשוב להבין שמדובר בפרויקט שמנסה לבנות חיפוש חכם בעברית. אבל האם חיפוש חכם מתאים תמיד לצרכי המשתמש? אני לא בטוח. ניקח לדוגמה את הסרת ה-stopwords (מילים כמו "כי"). בחיפוש כללי, זה מייעל את האינדוקס והחיפוש, אבל בחיפוש תורני, לעיתים עדיף לחפש את המשפט כולל "כי", במיוחד בחיפוש פסוקים. בנוסף, הפרויקט HEBMORPH מבוסס על מילון עברי כללי, מה שמפחית את ביצועיו בחיפוש תורני.
עריכה: כל זה נכון אם יש לך אמפמינציה אישית של lucene אבל אם אתה משתמש בו כמות שהוא אתה רק מרוויח אם אתה משתמש ב-HEBMORPH למה? כי Lecene הינו מנוע חיפוש ולשכך הוא בנוי על אלגוריתמים שמחשבים רלוונטיות וממילא כל כלי שמתעל את הרלוונטיות מתעל את המנוע.
הנקודה היא שקשה לייצר מנוע חיפוש כוללני כי הצרכים משתנים ממקרה למקרה.
אישית בתוכנות שלי ב-C# אני לא משתמש ב- HEBMORPH מחמת סיבה צדדית, כי הוא לא מעודכן לגרסה האחרונה של Lucene, מה שמקשה מאוד על השימוש בו. אציין גם שיש חלקים בקוד שהם ממש לא אינטואיטיביים, כך שהתייאשתי לבינתיים מלנסות להתאים את HEBMORPH לגרסה הנוכחית. זה יצריך ממני ללמוד לעומק את הגרסה הישנה ואז לתרגם אותה לחדשה, ואין לי את הזמן או את העצבים לזה.
-
ספריית החיפוש meilisearch ב-בC#@אלף-שין
כשזהו החיסרון היחיד זה מתגמד לעומת כל שאר התועליות -
C#: כיצד ליצור אינדקס ברקע באמצעות שירות Windowsמישהו יכול להדריך אותי איך ליצור שירות ברקע ב-C# עבור פעולת אינדוקס בתוכנת FullTextSearch? האינדוקס יכול לקחת כמה שעות טובות, ואני רוצה שהוא ימשיך לפעול גם אם התוכנה נסגרת או שהמשתמש מפעיל את המחשב מחדש.
כמו"כ איך אני מתקשר בין התוכנה שלי לשירות? אני רוצה להעביר לשירות מידע על המסמכים שצריך לאנדקס, ולקבל מידע על התקדמות האינדוקס שישוקף בתוכנה
-
ספריית החיפוש meilisearch ב-בC#@dovid כתב בספריית החיפוש meilisearch ב-בC#:
וזה הגיוני במידה והתוכנה שלך היא עם צד שרת.
כלומר לא הגיוני בתוכנה שלי תורת אמת בוורד?
-
ספריית החיפוש meilisearch ב-בC#@dovid
אוקיי אולי קפצתי מדאי מהר מדאי אני קצת מבין יותר טוב עכשיו איך זה עובד בעצם meiliserach הינה "תוכנה" שאני יכול לגשת אליה דרך api ב-C#
אבל לא מדובר בספרייה של C# כלל -
ספריית החיפוש meilisearch ב-בC#מישהו מכיר את ספריית החיפוש meilisearch
האם מישהו יכול להמליץ לי עליה.
כמו:כ הייתי שמח לדעת האם היא מתאימה לתוכנה שלי תורת אמת בוורד -
ספרייה להמרת קבצי ורד ל- C# pdf@חגי
הממ.. מחיקה של תוכן תיקייה זו עזר נראה אם זה צץ שוב -
איך להסיר ניקוד וטעמים מטקסט בc#איך להסיר ניקוד וטעמים מטקסט בc#
מצאתי שני דרכים אשמח לקבל המלצות איזה עדיף ולמה.
# אפשרות א על ידי רגקס
public static string RemoveDiactricts(string input) { return Regex.Replace(input, @"\p{M}", ""); }
# אפשרות ב על ידי ספריית Diactricts
דרך ה-NuGet התקינו את ספריית Diactricts

לאחמ"כ תוכלו להתשמש עם ה-class דלהלןpublic class HebrewDiacriticsMapping : IAccentMapping { private readonly Dictionary<char, MappingReplacement> mappings; public HebrewDiacriticsMapping() { mappings = CreateMappings(); } public IDictionary<char, MappingReplacement> Mapping => mappings; private Dictionary<char, MappingReplacement> CreateMappings() { var mappings = new Dictionary<char, MappingReplacement>(); // Remove all Hebrew diacritics by mapping them to an empty string // Diacritics in Hebrew range from U+0591 to U+05BD, U+05C1, U+05C2, U+05C4, U+05C5 // U+0591 - U+05AF (excluding U+05BE - U+05C0, which are vowels and other symbols) // U+05B0 - U+05BD, U+05C1, U+05C2, U+05C4, U+05C5 (including additional diacritics) for (int i = 0x0591; i <= 0x05AF; i++) { char diacriticChar = (char)i; mappings[diacriticChar] = new MappingReplacement(); } for (int i = 0x05B0; i <= 0x05BD; i++) { char diacriticChar = (char)i; mappings[diacriticChar] = new MappingReplacement(); } mappings['\u05C1'] = new MappingReplacement(); mappings['\u05C2'] = new MappingReplacement(); mappings['\u05C4'] = new MappingReplacement(); mappings['\u05C5'] = new MappingReplacement(); return mappings; } } public static class HebrewDiacriticsRemover { private static readonly DiacriticsMapper mapper = new DiacriticsMapper(new HebrewDiacriticsMapping()); public static string RemoveHebrewDiacritics(this string input) { return mapper.RemoveDiacritics(input); } } -
לימודי תכנות -
FolderPicker מתקדם ב-C# עבור .Net FrameWorkכלומר לאפוקי אם אם משתמשים ב-
net FrameWork.
שמה זה תמיד מראה את המיושן
רק ב-
NET Core 3.1 ומעלה זה מראה את העדכני -
הדגמה פשוטה של MVVM ב-C# WPFיש לכם הערות? אנא כתבו אותם לתועלת כולם!
הערה: אישית אני ראיתי תועלת גדולה ב-mvvm, למרות שביישום של commands לא כל כך ראיתי תועלת בפרוייקטים שלי כי לרוב זה לא היה נצרך ורק הפך את הקוד למסורבל, בכל אופן הדוגמא דלהלן כוללת אותם לצורך ההדגמה ואפשר לראות כיצד הם 'מחליקים' את פעולת התוכנה, כמו"כ הוספתי קיצורי מקשים דרך ה-commands מה שמדגים את השימושיות שלהם.
-
הדגמה פשוטה של MVVM ב-C# WPFהדגמה פשוטה של MVVM
עיין כאן להסבר על המושג MVVM:
להרחבה על הנושא עיין כאןהיה לי צורך להדגים את המודל mvvm עבור ידיד אז יצרתי את הפרוייקט דלהלן על בסיס כתבה זו (הפרוייקט רחוק מלהיות מושלם אבל הוא מספיק בשביל הדגמה לדעתי):
התוכנה מיישמת מחשבון (כלשהו) שיניתי קצת מהכתבה לצורך ההדגמה.
- קוד ל-view
<Window x:Class="WpfTestProject.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:WpfTestProject" mc:Ignorable="d" Background="WhiteSmoke" SizeToContent="WidthAndHeight" FocusManager.FocusedElement="{Binding ElementName=FirstValueTextBox}"> <Window.DataContext> <local:CalculatorViewModel/> </Window.DataContext> <Window.InputBindings> <KeyBinding Key="A" Modifiers="Control" Command="{Binding AddCommand}"/> <KeyBinding Key="S" Modifiers="Control" Command="{Binding SubTractCommand}"/> <KeyBinding Key="T" Modifiers="Control" Command="{Binding TimesCommand}"/> <KeyBinding Key="D" Modifiers="Control" Command="{Binding DivideCommand}"/> <KeyBinding Key="P" Modifiers="Control" Command="{Binding PercentCommand}"/> </Window.InputBindings> <Window.Resources> <Style TargetType="TextBox"> <Setter Property="Margin" Value="5"/> <Setter Property="HorizontalContentAlignment" Value="Center"/> <Setter Property="VerticalContentAlignment" Value="Center"/> <Setter Property="BorderBrush" Value="LightGray"/> </Style> <Style TargetType="TextBlock"> <Setter Property="Margin" Value="5"/> <Setter Property="VerticalAlignment" Value="Center"/> </Style> <Style TargetType="Label"> <Setter Property="Margin" Value="5"/> <Setter Property="HorizontalContentAlignment" Value="Center"/> <Setter Property="VerticalContentAlignment" Value="Center"/> <Setter Property="BorderBrush" Value="LightGray"/> <Setter Property="BorderThickness" Value="1"/> <Setter Property="Background" Value="White"/> </Style> <Style TargetType="Button"> <Setter Property="Margin" Value="5"/> <Setter Property="Background" Value="{x:Null}"/> <Setter Property="BorderBrush" Value="LightGray"/> <Setter Property="Height" Value="38"/> <Setter Property="Width" Value="{Binding Path=Height, RelativeSource={RelativeSource Self}}"/> </Style> </Window.Resources> <StackPanel> <TextBlock Text="Calculator" HorizontalAlignment="Center" FontSize="34" Foreground="BlueViolet"/> <Grid Margin="5,10,5,5" KeyboardNavigation.TabNavigation="Cycle"> <Grid.ColumnDefinitions> <ColumnDefinition Width="*"/> <ColumnDefinition Width="auto"/> <ColumnDefinition Width="*"/> <ColumnDefinition Width="auto"/> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <TextBox x:Name="FirstValueTextBox" Grid.Column="0" Text="{Binding FirstValue}" /> <TextBlock Text="{Binding MathMethod}" Grid.Column="1"/> <TextBox x:Name="SecondValueTextBox" Grid.Column="2" Text="{Binding SecondValue}"/> <TextBlock Text="=" Grid.Column="3" VerticalAlignment="Center" Margin="5"/> <Label Grid.Column="4" Margin="5" Content="{Binding ResultValue, BindsDirectlyToSource=True}"/> </Grid> <StackPanel Orientation="Horizontal" Margin="5"> <Button Content="+" Command="{Binding AddCommand}"/> <Button Content="-" Command="{Binding SubTractCommand}"/> <Button Content="*" Command="{Binding TimesCommand}"/> <Button Content="/" Command="{Binding DivideCommand}"/> <Button Content="%" Command="{Binding PercentCommand}"/> </StackPanel> </StackPanel> </Window>
- קודים המהווים בסיס ל-viewmodel
using System; using System.Windows.Input; namespace WpfTestProject { public abstract class ICommandBase : ICommand { public event EventHandler CanExecuteChanged; public virtual bool CanExecute(object parameter) { return true; } public abstract void Execute(object parameter); protected void OnCanExecuteChanged() { CanExecuteChanged?.Invoke(this, new EventArgs()); } } public class RelayCommand : ICommandBase { private Action commandTask; public RelayCommand(Action action) { commandTask = action; } public override void Execute(object parameter) { commandTask(); } } } public class INotifyPropertyChangedBase : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; protected void OnPropertyChanged(string propertyName) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } }
- ה-viewmodel
using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Input; namespace WpfTestProject { public class CalculatorViewModel : INotifyPropertyChangedBase { #region members string _mathMethod; double _firstValue; double _secondValue; double _result; #endregion #region properties public string MathMethod { get => _mathMethod; set { _mathMethod = value; OnPropertyChanged(nameof(MathMethod)); } } public double FirstValue { get => _firstValue; set => _firstValue = value; } public double SecondValue { get => _secondValue; set => _secondValue = value; } public double ResultValue { get => _result; set { _result = value; OnPropertyChanged(nameof(ResultValue)); } } #endregion #region Commands public ICommand AddCommand { get { //return plusCommand; return new RelayCommand(Add); } } public ICommand SubTractCommand { get { return new RelayCommand(SubTract); } } public ICommand TimesCommand { get { return new RelayCommand(Times); } } public ICommand PercentCommand { get { return new RelayCommand(Percent); } } public ICommand DivideCommand { get { return new RelayCommand(Divide); } } #endregion #region Methods public void Add() { MathMethod = "+"; ResultValue = FirstValue + SecondValue; return; } public void SubTract() { MathMethod = "-"; ResultValue = FirstValue - SecondValue; } public void Times() { MathMethod = "*"; ResultValue = FirstValue * SecondValue; } public void Divide() { MathMethod = "/"; ResultValue = FirstValue / SecondValue; } public void Percent() { MathMethod = "%"; ResultValue = FirstValue * SecondValue; } #endregion } }- שמתם לב? ה-model חסר.... בתוכנה זו לא היה צורך ב-model בעיקרון ה-model היה יכול להיות אחד משני דברים. או class עם מבנה נתונים. או class עם קוד חיצוני.
-
קוד להצגת שינויים בין טקסטים ב-C# (השוואת טקסטים) -
תבנית ברעיון של MVVM עבור VSTO XML RIBBON?@dovid
אה
הייתרון לעניין הסדר הוא העובדה שאני מפריד את המתודות של ה-פעולות משאר המתודות שלא נוגעות לפעולות אלא ל-view
כאשר יש מאות לחצנים זה מאוד משמעותי -
קוד להצגת שינויים בין טקסטים ב-C# (השוואת טקסטים) -
עזרה עם בעיה בהתחברות לגיטהב@קומפיונט
תודה רבה!
עזרת לי מאוד! -
איך לזהות על ידי תוכנה קישורים בספרי קודש ?בגדול אם אני יכול לזהות שם ספר בצורה נכונה זזה כבר ייעל את זה בהרבה - איפה הסיבוך:
יש ספרים עם שמות זהים: לדוגמא - ברכות
יכול הליות בבלי ברכות או משנה ברכות
או יותר גרוע בראשית
יש המון ספרים שכוללים בתוך השם שלהם את המילה בראשית (בהצחלה בסוף או באמצע). איך התוכנה תידע באיזה בראשית מדובר?? במקרה הזה כמובן אפשר לעשות ברירת מחדל שיצביע לחומש אבל שוב זה אומר הרבה hardcoding אני מחפש צורה דינאמית שתחפה על המקרים שלא עשיתי בצורה ישירה -
טיפ לבוני תוכנות באקסס - שימו לב לתאימות שפהלפעמים כאשר בונים תוכנה באקסס והגדרת האיזור של המערכת הוא ישראל עברית מה שקורה הוא שאם מישהו עם מחשב אמריקאי מנסה להריץ אותה - הוא יראה גיבריש - המחשב מתבלבל ולא מצליח להציג את העברית.
ההצעה שלי תתכנתו עם מחשב עם הגדרת איזור באנגלית אולי זה יעזור.