דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
pcinfogmachP

pcinfogmach

@pcinfogmach
אודות
פוסטים
695
נושאים
186
שיתופים
0
קבוצות
0
עוקבים
3
עוקב אחרי
1

פוסטים

פוסטים אחרונים הגבוה ביותר שנוי במחלוקת

  • ספרייה להמרת קבצי ורד ל- C# pdf
    pcinfogmachP pcinfogmach

    מישהו מכיר ספרייה חיניית להמרת קבצי ורד ל-pdf? (ללא צורך בהתקנת וורד במחשב)...
    ב- C#
    תודה מראש

    תכנות

  • בעיה | אדובי רידר גרסה בעברית - שפת התפריטים רק באנגלית
    pcinfogmachP pcinfogmach

    @חייםיודלביץ
    אתה יכול להתשמש עם pdfxchange זוהי תוכנה משולבת של קריאה ועריכת pdf עובדת ממש נפלא
    החלק של העריכה בתשלום וא מתשמשים בו אז הוא מוסיף סימנים למסמך שקשה להסיר אבל אתה יכול פשוט לככוץ את סרגל הכלים ויהיה לך קורא pdf נפלא עם ביצועים מדהימים
    וזה תומך גם בעברית מלאה

    תוכנה

  • C# ב-multiplatform?
    pcinfogmachP pcinfogmach

    אשמח לעזרתכם בשאלה בנושא פיתוח מרובה פלטפורמות בשפת C#.

    נתקלתי במספר מסגרות עבודה (Frameworks) התומכות בפיתוח מרובה פלטפורמות ב-C#. עם זאת, אני תוהה כיצד נושא הקריאה והכתיבה של קבצים מטופל בספריות השונות. האם גם ספריות אלו תומכות בפיתוח מרובה פלטפורמות?

    הספריות שמעניינות אותי במיוחד הן:

    Lucene.NET
    TikaOnDotNet
    Docnet
    

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

    בנוסף, אשמח לשמוע על המלצות לפריימוורק שכדאי לי לשקול.

    תכנות

  • מחשב מומלץ לרכישה...
    pcinfogmachP pcinfogmach

    @קינג-קומפיוטר
    @ek0583232948

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

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

    מצד הביצעים לא יהיה לך בעיות עם הדל יש לו ביצועים יפים למה שאתה צריך.

    בהצלחה

    עריכה:
    שאלתי את באב שלי שוב אם הוא מרוצה מהמחשב הזה הוא אמר לי שהוא ממש לא מרוצה המחשב לא זורם לו....
    הפליסטיקה העיצוב הכל לא נעשה טוב....

    חומרה

  • רג'קס להסרת גרשיים מטקסט מלבד ר"ת
    pcinfogmachP pcinfogmach

    אינני בקי ברגקס של JS
    אבל ב-C# הייתי עושה כך:

    ^"|"$|" | "
    

    ההחלפה קצת יותר מורכבת כי אתה צריך להיזהר לא להחליף את הרווח. ולכן ייתכן שה-lookahead וה-lookbehind עדיף במקרה הזה כמו שצדיק תמים כתב
    https://regex101.com/r/CajTc0/1

    תכנות

  • איך לתקשר בין חלקים שונים של תוכנה ב-C# wpf?
    pcinfogmachP pcinfogmach

    מצאתי כתבה שבעצם מתארת את הבעיה בצורה יפה ומציעה פתרון שלכאורה אפשר ליישם ב-c#
    הייתי שמח לשמוע אם זה הכוון הנכון

    https://betulnecanli.medium.com/how-to-pass-data-between-viewmodels-f8be320de7ab

    תכנות

  • איך לתקשר בין חלקים שונים של תוכנה ב-C# wpf?
    pcinfogmachP pcinfogmach

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

    אגב תודה על ההערה החשובה עם ה-dependencyproperties עשית לי מוטיבציה ללמוד על הנושא.

    תכנות

  • תוכנה לאנשי קשר
    pcinfogmachP pcinfogmach

    @שוקי-הרשלר
    נשמע שאתה מחפש משהו מאוד ספיציפי אולי תפרט קצת יותר מה אתה מחפש

    תוכנה

  • איך לתקשר בין חלקים שונים של תוכנה ב-C# wpf?
    pcinfogmachP pcinfogmach

    יש לי שני חלקים בתוכנה

    1. פקד שאחראי להציג מידע מתוך db
    2. פקד שאחראי להציג מידע שקשור למידע בפקד א' אבל רק בצורה עקיפה

    מה בעצם הצורה הכי טובה לעשות את הקוד שמגשר ביניהם

    מה שעולה לי בראש לבינתיים הם כמה אפשרויות

    1. ליצור ViewModel שיקושר לשני הפקדים.
    2. שימוש ב-delgates ו-events
    3. שימוש באירועים ולהעביר instance של פקד א' לפקד ב' או הפוך
    4. ראיתי מישהו שכתב להשתמש ב-Dependency Properties (אין לי מושג מה זה).

    עד היום כמתכנת מתחיל התשמשתי עם אפשרות 3. כעת אני שוקל את הדברים מחדש.
    אשמח לשמוע מהמומחים. תודה מראש.

    תכנות

  • איך להסיר ניקוד וטעמים מטקסט בc#
    pcinfogmachP pcinfogmach

    @dovid
    פשוט אין מילים!
    אפשר לשאול איך עשית את הבדיקות? זה נראה שהתשמשת באיזשהו תוכנה לא visual studio

    כמו"כ אפשר לשאול למה בעצם על ידי string builder הוא הכי מהיר מכולם?

    תכנות

  • מדריך בסיסי עבור מנוע החיפוש הפופולרי lucene ב-C#
    pcinfogmachP pcinfogmach

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

    כדי להשתמש בספרייה זו תצטרכו להתקין דרך ממשק ה-nuget ב-Visual Studio כמה ספריות. הספרייה הנוכחית של Lucene עדיין בשלבי בטא ולכן תצטרכו לסמן בחלונית ה-nuget את האפשרות "Include prerelease".

    להלן הספריות שתצטרכו:

    Lucene.Net
    Lucene.Net.QueryParser
    

    שלב א' - יצירת analyzer

    כל מנוע חיפוש בנוי על אינדקס, כלומר הוא מפרק את הטקסט לחלקים ובונה לעצמו אינדקס בו רשום היכן כל מילה נמצאת. Lucene משתמש במחלקה שנקראת Analyzer בכדי לפרק את הטקסט.

    לכן, שלב ראשון עלינו לייצר Analyzer:

    Analyzer analyzer = new StandardAnalyzer(LuceneVersion.LUCENE_48);
    

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

    אם ברצונכם לתמוך בחיפוש גם בטקסט מנוקד תצטרכו לייצר analyzer משלכם שמסיר את הניקוד כדלהלן:

    public class DiacriticsAnalyzer : Analyzer
    {
        LuceneVersion version;
        public DiacriticsAnalyzer(LuceneVersion luceneVersion)
        {
            version = luceneVersion;
        }
        protected override TokenStreamComponents CreateComponents(string fieldName, TextReader reader)
        {
            var tokenizer = new StandardTokenizer(version, reader);
            TokenStream filter = new HebrewTokenFilter(tokenizer);
            filter = new LowerCaseFilter(version, filter);
            filter = new StopFilter(version, filter, StopAnalyzer.ENGLISH_STOP_WORDS_SET);
            return new TokenStreamComponents(tokenizer, filter);
        }
    
        sealed class HebrewTokenFilter : TokenFilter
        {
            private readonly ICharTermAttribute termAttr;
    
            public HebrewTokenFilter(TokenStream input) : base(input)
            {
                this.termAttr = AddAttribute<ICharTermAttribute>();
            }
    
            public sealed override bool IncrementToken()
            {
                if (m_input.IncrementToken())
                {
                    string token = termAttr.ToString();
                    string cleanedToken = Regex.Replace(token, @"\p{M}", "");
    
                    if (!string.Equals(token, cleanedToken))
                    {
                        termAttr.SetEmpty().Append(cleanedToken);
                    }
    
                    return true;
                }
                return false;
            }
        }
    }
    

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


    שלב ב' - יצירת האינדקס

    להלן קוד דוגמא ליצירת אינדקס מתוך מערך של קבצי טקסט

    public void IndexFiles(List<string> files)
    {
        using (var directory = FSDirectory.Open(new DirectoryInfo(indexPath)))
        {
            var indexConfig = new IndexWriterConfig(LuceneVersion.LUCENE_48, analyzer);
            using (var writer = new IndexWriter(directory, indexConfig))
            {
                foreach (string file in files)
                {
                    string content = File.ReadAllText(file);
                    var doc = new Document
                    {
                        new StringField("Path", file, Field.Store.YES),
                        new TextField("Content", content, Field.Store.YES)
                    };
                  
                    var term = new Term("Path", file); // Create a term to search for the existing document by its path
    
                    writer.UpdateDocument(term, doc);  // Update the document if it exists, otherwise add it
                }
    
                writer.Flush(triggerMerge: true, applyAllDeletes: true);
            }
        }
    }
    
    מאוד חשוב להקפיד על ה-using כדי למנוע מצב בו האינדקס נשאר נעול במצב כתיבה.

    כדי למחוק קבצים מהאינדקס תוכלו להתמש עם הקוד דלהלן:

     public void RemoveFiles(List<string> files)
     {
         using (var directory = FSDirectory.Open(new DirectoryInfo(indexPath)))
         {
             var indexConfig = new IndexWriterConfig(Lucene.Net.Util.LuceneVersion.LUCENE_48, analyzer);
             using (var writer = new IndexWriter(directory, indexConfig))
             {
                 var parser = new QueryParser(Lucene.Net.Util.LuceneVersion.LUCENE_48, "Path", analyzer);
    
                 foreach (string file in files)
                 {
                     Query query = parser.Parse(file);
                     writer.DeleteDocuments(query);
                 }
                 writer.Flush(triggerMerge: false, applyAllDeletes: false);
             }
         }
     }
    

    שלב ג' חיפוש באינדקס

    כדי לחפש באינדקס קודם כל תצטרכו ליישם QueryParser אשר תפקידו לעשות parsing למחרוזת הטקסט של החיפוש.
    ישנם כמה וכמה סוגים של QueryParsers תלוי מאוד מה הצורך שלכם תוכלו לקרוא על כך בהרחבה בלינק שהבאתי בתחלילת הפוסט, עבור חיפוש עם אפשרויות מגוונות אני ממליץ לכם להתשמש עם ComplexPhraseQueryParser מה שיאפשר למשתמש אפשרויות חיפוש מגווונות כגון חיפוש טבלאי וחיפוש עם wildcards חיפוש מטושטש ועוד ועוד. תוכלו לקרוא על הסינטקס של חיפוש lucene בקישור שבתחילת הפוסט.

     Analyzer analyzer = new StandardAnalyzer(LuceneVersion.LUCENE_48);
    ComplexPhraseQueryParser queryParser = new ComplexPhraseQueryParser(LuceneVersion.LUCENE_48, "Content", analyzer);
    

    שימו לב! חיפוש מילה עם ראשי תיבות יחזיר שגיאה יש להזין את הראשי תיבות בתוספת slash ככה

    אא\"כ
    

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

      public List<string> Search(string queryText, List<string> checkedTreeNodes)
      {
          using (var directory = FSDirectory.Open(new DirectoryInfo(indexPath)))
          {
              var searcher = new IndexSearcher(DirectoryReader.Open(directory));
              var parser = new CostumeQueryParser(Lucene.Net.Util.LuceneVersion.LUCENE_48, "Content", analyzer);
    
              var query = parser.Parse(queryText);
    
              var topDocs = searcher.Search(query, int.MaxValue);
    
              List<string> results = new List<string>();
              foreach (var scoreDoc in topDocs.ScoreDocs)
              {
                  var path = searcher.Doc(scoreDoc.Doc).Get("Path");
                  results.Add(path);
              }
              return results;
          }
      }
    

    שלב ג' -2 איך לייצר גזירים

    כדי לייצר גזירים תצטרכו להתקין את חבילת ה-nuget
    Lucene.Net.Highlighter

    לאחמ"כ תוכלו להשתמש עם הקוד הזה

     string[] GetFragments(int docId, IndexSearcher searcher,  Query query)
     {
    
    //create fragmenter
         var reader = searcher.IndexReader;  
         var scorer = new QueryScorer(query);
         var fragmenter = new SimpleSpanFragmenter(scorer, 250); // 250 is the fragment size 
    
    // create highlighter
         var formatter = new SimpleHTMLFormatter("<", ">"); //define how to mark found keywords if left empty <b> tags is the default
         var highlighter = new Highlighter(formatter, scorer);         
         highlighter.TextFragmenter = fragmenter;
    
    //extract snippets
         var content = searcher.Doc(docId).Get("Content");
         var tokenStream = TokenSources.GetAnyTokenStream(reader, docId, "Content", analyzer);
         var fragments = highlighter.GetBestTextFragments(tokenStream, content, false, 10); // 10 is the number of snippets
    
    // return filters the list and converts to string filtering is needed only if number of fragments is set to more then 1
         return fragments.Where(fragment => fragment.Score > 0).Select(fragment =>  fragment.ToString()).ToList().ToArray();
     }
    

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

    תכנות

  • איך להסיר ניקוד וטעמים מטקסט בc#
    pcinfogmachP pcinfogmach

    איך להסיר ניקוד וטעמים מטקסט בc#
    מצאתי שני דרכים אשמח לקבל המלצות איזה עדיף ולמה.


    # אפשרות א על ידי רגקס


      public static string RemoveDiactricts(string input)
      {
          return Regex.Replace(input, @"\p{M}", "");
      }
    

    # אפשרות ב על ידי ספריית Diactricts


    דרך ה-NuGet התקינו את ספריית Diactricts
    83681b5d-4110-4701-9f7a-9d0e93b958b9-image.png
    לאחמ"כ תוכלו להתשמש עם ה-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);
         }
     }
    
    תכנות

  • רשימה מדורגת בוורד
    pcinfogmachP pcinfogmach

    @שואף-לדעת
    הוראות לשימוש בשדה SEQ דרך רצועת הכלים ב-Word:

    • מקם את הסמן במקום שבו אתה רוצה שהמספר הממוספר יופיע.
    • עבור ללשונית "הוספה" (Insert) ברצועת הכלים.
    • לחץ על "חלקים מהירים" (Quick Parts).
    • בחר "שדה" (Field) מהרשימה.
    • בחלון שנפתח, בחר "SEQ" מהרשימה "שמות שדות" (Field names).
    • בתיבת הטקסט "קוד שדה" (Field codes) הוסף את שם הרצף. לדוגמה:
    SEQ דוגמה
    

    לחץ על "אישור" (OK).

    הוספת שדות SEQ נוספים:

    חזור על שלב 1 עבור כל מקום בו אתה רוצה להוסיף את השדה SEQ, והשתמש באותו שם רצף ("דוגמה" הינו שם הרצף שהתמשנו בו במדריך זה אתה יכול גם לבחור שם רצף אחר).

    אם אתה מעונין במשהו קצת יותר מתקדם עיין כאן
    https://www.techrepublic.com/article/10-steps-to-creating-inline-numbering-in-a-word-document/
    הכתבה באנגלית אבל תוכל הלריץ על זה תרגום דפדפן די בקלות

    תוכנה

  • רשימה מדורגת בוורד
    pcinfogmachP pcinfogmach

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

    f96047d8-c561-4ca1-84f8-729dd961c9dd-image.png

    ff708844-70bd-4a16-9c42-575300ac8573-image.png

    תוכנה

  • תוכנה לאנשי קשר
    pcinfogmachP pcinfogmach

    @שוקי-הרשלר

    אולי זה יכול להיות התחלה טובה בשבילך?
    https://tchumim.com/topic/16090/ספר-טלפונים-ב-html/9

    תוכנה

  • שני גלמודות מסכנות - האם ישנם ארגונים שיכולים להתערב ולעזור במקרים כאלה?
    pcinfogmachP pcinfogmach

    @Whenever כתב בשני גלמודות מסכנות - האם ישנם ארגונים שיכולים להתערב ולעזור במקרים כאלה?:

    אני חושב שאפשר לפנות למחקלת רווחה בעירייה.

    סליחה על הבורות איך פונים למחלקת הרווחה?

    גומלין - כללי

  • שני גלמודות מסכנות - האם ישנם ארגונים שיכולים להתערב ולעזור במקרים כאלה?
    pcinfogmachP pcinfogmach

    אינני יודע אם זה מקום טוב לשאול את השאלה שלי, בכל אופן אני רוצה לשתף אתכם במצב קשה שמתרחש בבניין שלנו, בתקווה שאולי למישהו כאן יש מידע או ידע כיצד לעזור.

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

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

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

    האם ישנם ארגונים, עמותות או גורמים ממשלתיים שיכולים להתערב ולעזור במקרים כאלה? כל מידע או הכוונה יתקבלו בברכה.

    גומלין - כללי

  • הצגת מספר חלונות גם שהמחשב נעול
    pcinfogmachP pcinfogmach

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

    תוכנה

  • הצגת מספר חלונות גם שהמחשב נעול
    pcinfogmachP pcinfogmach

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

    בקיצור, אם זה מתאים לך, הייתי מציע לך לשקול לשלם למישהו שיבנה לך תוכנה ייעודית. זה לא אמור לעלות יותר מדי.

    תוכנה
  • 1 / 1
  • התחברות

  • אין לך חשבון עדיין? הרשמה

  • התחברו או הירשמו כדי לחפש.
  • פוסט ראשון
    פוסט אחרון
0
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום