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

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

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. ארכיון code613m
  4. עדכונים שוטפים מהפורום - קוד פתוח

עדכונים שוטפים מהפורום - קוד פתוח

מתוזמן נעוץ נעול הועבר ארכיון code613m
26 פוסטים 5 כותבים 1.4k צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • K מנותק
    K מנותק
    kingyes
    כתב ב נערך לאחרונה על ידי
    #3

    לא בשביל משהו.. אבל אם היית כותב את זה בתסריט פייטון.. היית רושם את כל זה ב-4-8 שורות.. ואולי בשביל Notification.. היית מוסיף עוד 2 שורות.
    (כמובן בלי טעינה של כל ה-GUI וכו'.. אלא קוד נקי בלי פקדים מיותרים).

    פורסם במקור בפורום CODE613 ב13/02/2014 13:50 (+02:00)

    תגובה 1 תגובה אחרונה
    0
    • dovidD מנותק
      dovidD מנותק
      dovid ניהול
      כתב ב נערך לאחרונה על ידי
      #4

      @KingYes

      לא בשביל משהו.. אבל אם היית כותב את זה בתסריט פייטון.. היית רושם את כל זה ב-4-8 שורות.. ואולי בשביל Notification.. היית מוסיף עוד 2 שורות.
      (כמובן בלי טעינה של כל ה-GUI וכו'.. אלא קוד נקי בלי פקדים מיותרים).

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

      פורסם במקור בפורום CODE613 ב13/02/2014 15:30 (+02:00)

      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

      בכל נושא אפשר ליצור קשר dovid@tchumim.com

      תגובה 1 תגובה אחרונה
      0
      • dovidD מנותק
        dovidD מנותק
        dovid ניהול
        כתב ב נערך לאחרונה על ידי
        #5

        רחמים, קוד ממש מוצלח ויפה!!
        אבל הערות קטנות:
        א. הסיפור של הlen והbyte כנראה במקורו נועד לחסוך ריענון במקרה שלא השתנו הנתונים, אך בפועל הוא לא עושה זאת, שים לב.
        ב. אתה מקבל את הנתונים לבתים>XML>ואז לDataSet. מבחינת קריאות עדיף לקצר. ניתן לקרוא ישירות מXML ואפשר להוריד ישירות כטקסט ועוד.

        עריכה: שאלה א' מתרצת את שאלה ב', בשביל לקבל מס' בתים עדיף להוריד בתים וDataSet מיקל על קריאת XML. אבל בינתיים האמור בשאלה א' לא מיושם.

        בע"ה אני אעלה בהמשך גירסה משלי אם תיקונים שונים.

        פורסם במקור בפורום CODE613 ב13/02/2014 15:40 (+02:00)

        מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

        בכל נושא אפשר ליצור קשר dovid@tchumim.com

        תגובה 1 תגובה אחרונה
        1
        • K מנותק
          K מנותק
          kingyes
          כתב ב נערך לאחרונה על ידי
          #6

          יאללה דוד.. בזרימה..

          """
          @author Yakir Sitbon <http://www.yakirs.net/>
          """
          import feedparser
          
          
          def main():
              d = feedparser.parse('http://code.613m.org/feed.php')
              for post in d.entries:
                  print post.title + ": " + post.link + "\n"
          
          main()
          

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

          פורסם במקור בפורום CODE613 ב13/02/2014 16:40 (+02:00)

          תגובה 1 תגובה אחרונה
          0
          • K מנותק
            K מנותק
            kingyes
            כתב ב נערך לאחרונה על ידי
            #7

            רחמים.. מה הקטע של השורה הזאת:

            'מנסה להוריד נתונים עד 10 שניות
                        For I = 0 To 10
                            Threading.Thread.Sleep(1000)
                            If DownloadThread.IsAlive = False Then
                                Exit For
                            End If
                        Next
            

            אי אפשר לרשום ישירות ב-Sleep את המספר 1000 * 10 (10,000) וזהו? למה צריך פה לולאה בשביל זה?

            פורסם במקור בפורום CODE613 ב13/02/2014 16:46 (+02:00)

            תגובה 1 תגובה אחרונה
            0
            • dovidD מנותק
              dovidD מנותק
              dovid ניהול
              כתב ב נערך לאחרונה על ידי
              #8

              @KingYes

              רחמים.. מה הקטע של השורה הזאת:

              'מנסה להוריד נתונים עד 10 שניות
                          For I = 0 To 10
                              Threading.Thread.Sleep(1000)
                              If DownloadThread.IsAlive = False Then
                                  Exit For
                              End If
                          Next
              

              אי אפשר לרשום ישירות ב-Sleep את המספר 1000 * 10 (10,000) וזהו? למה צריך פה לולאה בשביל זה?

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

              פורסם במקור בפורום CODE613 ב13/02/2014 16:48 (+02:00)

              מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

              בכל נושא אפשר ליצור קשר dovid@tchumim.com

              תגובה 1 תגובה אחרונה
              0
              • K מנותק
                K מנותק
                kingyes
                כתב ב נערך לאחרונה על ידי
                #9

                אני מנסה להבין רגע משהו..
                למה הסקריפט לא יכול פשוט לרוץ בצורה כזאת:
                כל 10 שניות להכנס להוריד למחשב את ה-XML שנוצר בשרת, לעבור עליו.. ואם יש אלמנט חדש.. להציגו. למה צריך בתוך 10 שניות לעשות בדיקה חוזרת כזאת?

                יותר מזה לדעתי, במיוחד שזה RSS בודד, למה הפעולה הזאת לא יכול לעבוד פעם ב-5 דקות לכל המוקדם? 10 שניות זה ממש ממש "להציק" לשרת ולמחשב שלך.

                פורסם במקור בפורום CODE613 ב13/02/2014 16:52 (+02:00)

                תגובה 1 תגובה אחרונה
                0
                • רחמיםר מנותק
                  רחמיםר מנותק
                  רחמים מורחק
                  כתב ב נערך לאחרונה על ידי
                  #10

                  הטיימר בודק כל דקה מה חדש ב RSS
                  בתוך ה10 שניות ניתנת הזדמנות להוריד את ה XML

                  פורסם במקור בפורום CODE613 ב13/02/2014 16:53 (+02:00)

                  תגובה 1 תגובה אחרונה
                  0
                  • clickoneC מנותק
                    clickoneC מנותק
                    clickone
                    כתב ב נערך לאחרונה על ידי
                    #11

                    @KingYes

                    אני מנסה להבין רגע משהו..
                    למה הסקריפט לא יכול פשוט לרוץ בצורה כזאת:
                    כל 10 שניות להכנס להוריד למחשב את ה-XML שנוצר בשרת, לעבור עליו.. ואם יש אלמנט חדש.. להציגו. למה צריך בתוך 10 שניות לעשות בדיקה חוזרת כזאת?

                    יותר מזה לדעתי, במיוחד שזה RSS בודד, למה הפעולה הזאת לא יכול לעבוד פעם ב-5 דקות לכל המוקדם? 10 שניות זה ממש ממש "להציק" לשרת ולמחשב שלך.

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

                    פורסם במקור בפורום CODE613 ב13/02/2014 16:58 (+02:00)

                    אין טסט כמו פרודקשן.

                    המייל שלי urivpn@gmail.com

                    תגובה 1 תגובה אחרונה
                    1
                    • dovidD מנותק
                      dovidD מנותק
                      dovid ניהול
                      כתב ב נערך לאחרונה על ידי
                      #12

                      יקיר, במקרה זה ניצחת.
                      הנה הכי קומפקטי בC#:

                      using System;
                      using System.Xml.Linq;
                      
                      namespace CsConsole
                      {
                          class RssReader
                          {
                              public RssReader()
                              {
                                  XNamespace ns = "http://www.w3.org/2005/Atom";
                                  foreach (var item in XDocument.Load("http://code.613m.org/feed.php").Descendants(ns + "entry"))
                                      Console.Write("Title: {0} /n Link: {1}", item.Element(ns + "title").Value, item.Element(ns + "link").Value);
                      
                              }
                          }
                      }
                      

                      פורסם במקור בפורום CODE613 ב13/02/2014 17:29 (+02:00)

                      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                      בכל נושא אפשר ליצור קשר dovid@tchumim.com

                      תגובה 1 תגובה אחרונה
                      1
                      • dovidD מנותק
                        dovidD מנותק
                        dovid ניהול
                        כתב ב נערך לאחרונה על ידי
                        #13

                        @KingYes

                        אני מנסה להבין רגע משהו..
                        למה הסקריפט לא יכול פשוט לרוץ בצורה כזאת:
                        כל 10 שניות להכנס להוריד למחשב את ה-XML שנוצר בשרת, לעבור עליו.. ואם יש אלמנט חדש.. להציגו. למה צריך בתוך 10 שניות לעשות בדיקה חוזרת כזאת?

                        יותר מזה לדעתי, במיוחד שזה RSS בודד, למה הפעולה הזאת לא יכול לעבוד פעם ב-5 דקות לכל המוקדם? 10 שניות זה ממש ממש "להציק" לשרת ולמחשב שלך.

                        לא הבנת. ה10 שניות זה טווח שבו מרשים למחשב להמתין לקובץ אח"כ מוותרים (timeout).
                        אם הכל הולך כשורה המחשב לא מוטרד כלל ומייד מגיע הקובץ.
                        [u:2rxfif2e]קצב העדכון[/u:2rxfif2e] כלל לא מופיע בקוד שרחמים הביא!

                        פורסם במקור בפורום CODE613 ב13/02/2014 17:32 (+02:00)

                        מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                        בכל נושא אפשר ליצור קשר dovid@tchumim.com

                        תגובה 1 תגובה אחרונה
                        0
                        • dovidD מנותק
                          dovidD מנותק
                          dovid ניהול
                          כתב ב נערך לאחרונה על ידי
                          #14

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

                          Public Class RssForumRead
                          
                              Public Class ItemRss
                                  Public Property authorname As String
                                  Public Property categoryTitle As String
                                  Public Property categoryLink As String
                                  Public Property Content As String
                                  Public Property UpdateAt As Date
                          
                                  Public Sub New(author As String, Cat As String, CatLink As String, Cont As String, At As Date)
                                      authorname = author
                                      categoryTitle = Cat
                                      categoryLink = CatLink
                                      Content = Cont
                                      UpdateAt = At
                                  End Sub
                              End Class
                          
                              Public Property Address As String = "http://code.613m.org/feed.php"
                          
                              Public Property IntervalUpdate As Integer
                                  Get
                                      Return Timer.Interval
                                  End Get
                                  Set(value As Integer)
                                      Timer.Interval = value
                                  End Set
                              End Property
                          
                          
                              Private ns As XNamespace = "http://www.w3.org/2005/Atom"
                              Private lastDate As Date
                              Private Timer As Timers.Timer
                          
                              Public Sub New()
                                  Timer = New Timers.Timer(10000)
                                  DownloadData()
                                  AddHandler Timer.Elapsed, AddressOf DownloadData
                                  Timer.Start()
                              End Sub
                          
                              Private Function DateFromForumFormat(str As String) As Date
                                  Dim extStr = str.Split("+")(0)
                                  If String.IsNullOrEmpty(extStr) Then Return #1/1/1900#
                                  Return Date.ParseExact(extStr, "yyyy-MM-dd\THH:mm:ss", Globalization.CultureInfo.InvariantCulture)
                              End Function
                          
                              Private Sub DownloadData()
                                  Dim xmlDoc = System.Xml.Linq.XDocument.Load("http://code.613m.org/feed.php")
                                  Dim s = xmlDoc.Root.Name
                                  Dim NewEl = From item In xmlDoc.Element(ns + "feed").Elements(ns + "entry")
                                              Let datePub = DateFromForumFormat(item.Element(ns + "published"))
                                              Where datePub > lastDate
                                              Let cat = item.Element(ns + "category")
                                              Select New ItemRss(item.Element(ns + "author").Elements().First().Value,
                                                                 cat.Attribute("label"),
                                                                 cat.Attribute("scheme"),
                                                                 item.Element(ns + "content").Value,
                                                                 datePub)
                          
                                  If NewEl.Any Then
                                      RaiseEvent NewItems(NewEl)
                                      lastDate = NewEl.First().UpdateAt
                                  End If
                              End Sub
                          
                              Public Event NewItems(items As IEnumerable(Of ItemRss))
                          
                          End Class
                          

                          פורסם במקור בפורום CODE613 ב13/02/2014 18:14 (+02:00)

                          מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                          בכל נושא אפשר ליצור קשר dovid@tchumim.com

                          תגובה 1 תגובה אחרונה
                          0
                          • K מנותק
                            K מנותק
                            kingyes
                            כתב ב נערך לאחרונה על ידי
                            #15

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

                            פורסם במקור בפורום CODE613 ב13/02/2014 18:22 (+02:00)

                            תגובה 1 תגובה אחרונה
                            0
                            • M מנותק
                              M מנותק
                              magicode
                              כתב ב נערך לאחרונה על ידי
                              #16

                              למה שלא תורידו את זה.
                              http://clients2.google.com/service/update2/crx?response=redirect&x=id%3Dpnjaodmkngahhkoihejjehlcdlnohgmp%26uc%26lang%3Den-US&prod=chrome

                              זה תוסף לכרום שקורא rss מכל אתר שתומך בזה.

                              פורסם במקור בפורום CODE613 ב13/02/2014 18:28 (+02:00)

                              תגובה 1 תגובה אחרונה
                              0
                              • רחמיםר מנותק
                                רחמיםר מנותק
                                רחמים מורחק
                                כתב ב נערך לאחרונה על ידי
                                #17

                                ואם כרום סגור? או אם משתמשים בדפדפן אחר ?

                                פורסם במקור בפורום CODE613 ב13/02/2014 18:29 (+02:00)

                                תגובה 1 תגובה אחרונה
                                0
                                • dovidD מנותק
                                  dovidD מנותק
                                  dovid ניהול
                                  כתב ב נערך לאחרונה על ידי
                                  #18

                                  @KingYes

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

                                  תראה זה שאלה שלישית שלך על הקוד, תירגע...
                                  דבר ראשון זה לא ממש timeout. timeout של סוקט אני סבור שזה הזמן שבין בקשה לתשובה, ואילו במקרה הורדת קובץ יכול להיות שיש תשובה מהירה אבל זה קובץ גדול, ואז זה ממומש בזרם (stream), שזה בקשות קטנות (אני חושב, לא יודע איך כתבו את המחלקה של webclient). גם במקרה כזה בקוד של רחמים ההורדה תיקטע עקב איטיותה.

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

                                  פורסם במקור בפורום CODE613 ב13/02/2014 18:33 (+02:00)

                                  מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                                  בכל נושא אפשר ליצור קשר dovid@tchumim.com

                                  תגובה 1 תגובה אחרונה
                                  0
                                  • K מנותק
                                    K מנותק
                                    kingyes
                                    כתב ב נערך לאחרונה על ידי
                                    #19

                                    אני יעצור פה עם ה"שאלות"..
                                    יש פרוייקט מאוד מומלץ.. ואני מאוד מרוצה ממנו, עושה עבודה ממש טובה.. אז הנה השיתוף: http://www.feednotifier.com/

                                    אתם תהנו 🙂

                                    פורסם במקור בפורום CODE613 ב13/02/2014 18:39 (+02:00)

                                    תגובה 1 תגובה אחרונה
                                    1
                                    • רחמיםר מנותק
                                      רחמיםר מנותק
                                      רחמים מורחק
                                      כתב ב נערך לאחרונה על ידי
                                      #20

                                      קצת שיפצתי את הקוד שלי על פי הקוד של דוד:

                                      1. בקריאת ה XML
                                      2. בדיקה על פי תאריך אחרון
                                      3. הרווחנו בקוד הזה שגם אם תוכנת נתיב סגורה זה לא מפריע לקרא את ה RSS

                                      שימו לב!
                                      יש להגדיר את ה Interval של הטיימר ל 60 שניות לפחות.

                                      Private ns As XNamespace = "http://www.w3.org/2005/Atom"
                                          Private lastDate As Date = Date.MinValue
                                          Private xmlDoc As XDocument
                                          Private href As String
                                      
                                          Private Sub Timer2_Tick(sender As System.Object, e As System.EventArgs) Handles Timer2.Tick
                                              Try
                                                  Dim DownloadThread = New Threading.Thread(Sub()
                                                                                                Try
                                                                                                    xmlDoc = XDocument.Load("http://code.613m.org/feed.php")
                                                                                                Catch ex As Exception
                                                                                                End Try
                                                                                            End Sub)
                                                  DownloadThread.Start()
                                                  'מנסה להוריד נתונים עד 10 שניות
                                                  For I = 0 To 10
                                                      Threading.Thread.Sleep(1000)
                                                      If DownloadThread.IsAlive = False Then
                                                          Exit For
                                                      End If
                                                  Next
                                                  'יוצא אם עד אחר 10 שניות לא הצלח להוריד
                                                  If DownloadThread.IsAlive Then
                                                      DownloadThread.Abort()
                                                      Exit Sub
                                                  End If
                                      
                                                  Dim XEl As XElement = xmlDoc.Element(ns + "feed").Elements(ns + "entry")(0)
                                                  If Date.Parse(XEl.Element(ns + "published").Value) > lastDate Then
                                                      lastDate = Now
                                                      Dim sb As New StringBuilder
                                                      sb.AppendLine("המחבר: " & XEl.Element(ns + "author").Value)
                                                      sb.AppendLine("נושא: " & XEl.Element(ns + "title").Value)
                                                      sb.AppendLine("תוכן ההודעה: " & XEl.Element(ns + "content").Value)
                                                      href = XEl.Element(ns + "link").Attributes("href")(0).Value
                                                      sb.AppendLine("לחץ כאן למעבר להודעה החדשה")
                                                      NotifyIcon1.ShowBalloonTip(5555, "הודעה חדשה בפורום", sb.ToString, ToolTipIcon.Info)
                                                  End If
                                              Catch ex As Exception
                                                  MsgBox(ex.Message, MsgBoxStyle.Exclamation +
                                                                   MsgBoxStyle.MsgBoxRight +
                                                                   MsgBoxStyle.MsgBoxRtlReading)
                                              End Try
                                          End Sub
                                          Private Sub NotifyIcon1_BalloonTipClicked(sender As Object,
                                                                                    e As System.EventArgs) Handles NotifyIcon1.BalloonTipClicked
                                              Try
                                                  Process.Start(href)
                                              Catch ex As Exception
                                                  MsgBox(ex.Message, MsgBoxStyle.Exclamation +
                                                                       MsgBoxStyle.MsgBoxRight +
                                                                       MsgBoxStyle.MsgBoxRtlReading)
                                              End Try
                                          End Sub
                                      

                                      פורסם במקור בפורום CODE613 ב14/02/2014 13:40 (+02:00)

                                      תגובה 1 תגובה אחרונה
                                      1
                                      • dovidD מנותק
                                        dovidD מנותק
                                        dovid ניהול
                                        כתב ב נערך לאחרונה על ידי
                                        #21

                                        רחמים, טיימר וטריד, זה כפל.
                                        אחד מהם מיותר.

                                        פורסם במקור בפורום CODE613 ב16/02/2014 09:37 (+02:00)

                                        מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                                        בכל נושא אפשר ליצור קשר dovid@tchumim.com

                                        תגובה 1 תגובה אחרונה
                                        0
                                        • רחמיםר מנותק
                                          רחמיםר מנותק
                                          רחמים מורחק
                                          כתב ב נערך לאחרונה על ידי
                                          #22

                                          @דוד ל.ט.

                                          רחמים, טיימר וטריד, זה כפל.
                                          אחד מהם מיותר.

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

                                          פורסם במקור בפורום CODE613 ב16/02/2014 09:40 (+02:00)

                                          תגובה 1 תגובה אחרונה
                                          0

                                          • 1
                                          • 2
                                          בא תתחבר לדף היומי!
                                          • התחברות

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

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