<?xml version="1.0"?>
<rss version="2.0">
   <channel>
      <title>טעויות תוכנה בפייתון (שרת HTTP) by צבי שירן</title>
      <link>https://padlet.com/zvishiran/57u4kb287ky47xlo</link>
      <description>לכל טעות יש להגדיר את סוג הטעות, מה ההשפעה בזמן ריצה ומה יש לעשות כדי להמנע משגיאה מסוג זה בעתיד.</description>
      <language>en-us</language>
      <pubDate>2021-01-24 07:50:19 UTC</pubDate>
      <lastBuildDate>2025-11-04 16:18:43 UTC</lastBuildDate>
      <webMaster>hello@padlet.com</webMaster>
      <image>
         <url></url>
      </image>
      <item>
         <title>טעות בניהול משאבים</title>
         <author>zvishiran</author>
         <link>https://padlet.com/zvishiran/57u4kb287ky47xlo/wish/1118119778</link>
         <description><![CDATA[<div><br><strong>טעות</strong>: client.close לא מבוצע בכל המקרים בפעולה handle_client/<br><strong>השפעה</strong>: calc-next עובד בפעם הראשונה ונכשל בפעם השנייה.<br><strong>מה אפשר לעשות</strong>: יש לוודא שבכל נקודות היציאה מהפעולה מתבצע סגירה connection<br>אם יש מצב שתהליך נתקע ללא תגובה, יכול להיות שזה קשור למשאב תפוס/לא משוחרר.<br><br></div>]]></description>
         <enclosure url="" />
         <pubDate>2021-01-24 07:51:19 UTC</pubDate>
         <guid>https://padlet.com/zvishiran/57u4kb287ky47xlo/wish/1118119778</guid>
      </item>
      <item>
         <title>שגיאות שונות- </title>
         <author>nogaklein00</author>
         <link>https://padlet.com/zvishiran/57u4kb287ky47xlo/wish/1118162042</link>
         <description><![CDATA[<div>הקבוצה: עדי, נוגה ומאיה.<br><br>• כפילויות בקוד- יש לכתוב קוד מסודר על מנת להימנע מכפילויות.<br>• אי סגירה של משאבים- יש לסגור משאבים שנפתחו במידת הצורך על מנת למנוע תקיעה של הקוד.<br>• בנייה לא נכונה של header- לשים לב למבנה הנכון שדרוש על פי הפרוטוקול כדי שהדברים יעבדו.<br>• כניסה ללולאת אין סופיות- שגיאת זמן ריצה שתוקעת את הקוד. פתרון: לוודא שעבור כל מקרה בקוד בסופו של דבר יוצאים מהלולאה.<br>• לא הוספנו בדיקה לgif. פתרון: לשים 🤍 שישנה התייחסות בקוד לכל המקרים האפשריים והדרושים.<br>• סדר לא נכון של תנאים- הפתרון הוא לבדוק מה צריך להיות הסדר הנכון מבחינה לוגית של הקוד בכלל ושל תנאים מסוימים בפרט.<br>• טעויות syntax- הפתרון הוא לשים לב לסינטקס הנכון ולחפש באינטרנט במידת הצורך.<br>• קריאה למשתנים בשמות של פונקציות- לשים לב לקרוא למשתנים בשמות ייחודיים ומשמעותיים מה שיעשה גם יותר סדר בקוד.<br>• חוסר התייחסות למקרי קצה- יש לקחת בחשבון את כל המקרים האפשריים ולבדוק שקיימת התייחסות אליהם בקוד.</div>]]></description>
         <pubDate>2021-01-24 08:13:28 UTC</pubDate>
         <guid>https://padlet.com/zvishiran/57u4kb287ky47xlo/wish/1118162042</guid>
      </item>
      <item>
         <title>עידו נועם ואגם</title>
         <author></author>
         <link>https://padlet.com/zvishiran/57u4kb287ky47xlo/wish/1118175031</link>
         <description><![CDATA[<div>1. לא שמנו לב שפונקציה מסוימת לא קיבלה משתנה ולכן הקוד קרס בזמן ריצה.<br>2. בלבול בין עבודה עם בייטים לעבודה עם סטרינגים<br>3. כיכוב לא נכון של קוד.<br>4. קריאה לפונקציות ברצף א-לוגי<br>5. לא כיסינו את כל המקרים האפשריים ולכן הקוד קרס</div>]]></description>
         <enclosure url="" />
         <pubDate>2021-01-24 08:20:08 UTC</pubDate>
         <guid>https://padlet.com/zvishiran/57u4kb287ky47xlo/wish/1118175031</guid>
      </item>
      <item>
         <title>עומר רביב, אופק ויונתן זונטג</title>
         <author></author>
         <link>https://padlet.com/zvishiran/57u4kb287ky47xlo/wish/1118199851</link>
         <description><![CDATA[<div><strong>שגיאה1:<br></strong><br></div><pre>while len_content &lt; content_length - 2048:  # get all of the remaining data
    content_data = client_socket.recv(2048)
    file.write(content_data)
    len_content += len(content_data)
try:
    content_data = client_socket.recv(2048)
    file.write(content_data)
except:
    pass
finally:
    file.close()</pre><div>שמנו לב שלפעמים המידע של הקובץ לא עובר בשלמותו. לכן, השתמשנו בtry ו excpet כדי להתחמק מהשגיאה של לנסות להכניס מידע שלא קיים.<br><strong>שגיאה 2:<br></strong><br></div><pre>if field.startswith('Content-Length'.encode()):

    content_length = int(field.split(':')[1].replace(" ", ""))</pre><div>&nbsp;<br><br></div><div>הfield&nbsp; מקודד, ולכן שמחפשים בו או מנסים להחליף בו דברים יש לעשות למחרוזות encode. עשינו זאת בif אך בשורה מתחת לא עשינו encode.&nbsp; <br><strong>שגיאה 3:<br></strong>.<br><br></div><pre>def handle_client(client_socket):
 <em>      </em><strong><em>:param</em></strong><em> client_socket: the sockets
     Handles client requests: verifies client's requests are legal HTTP, calls function to handle the requests
     """
</em><strong><em>     while True:
</em></strong>         print('Client connected')
         # get client request
         client_request = client_socket.recv(2048)  # recieve from client the data
         valid_http, resource = validate_http_request(client_request)
         if valid_http:
             print('Got a valid HTTP request')
             handle_client_request(resource, client_socket, client_request)
         else:
             print('Error: Not a valid HTTP request')
             header_500 = "HTTP/1.1 500 \r\n\r\n".encode()
             client_socket.send(header_500)
             break
     print('Closing connection')
     client_socket.close()
     
 
 def main():
     # Open a socket and loop forever while waiting for clients
     server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)#open a server socket
     server_socket.bind((IP, PORT))
     server_socket.listen(10)
     print("Listening for connections on port %d" % PORT)
 
<strong>     while True:
</strong>         client_socket, client_address = server_socket.accept()
         print('New connection received')
         client_socket.settimeout(SOCKET_TIMEOUT)#set a timeout
         try:
             handle_client(client_socket)
         except:
             print("Request did not succeed, continue.")</pre><div><br></div><div>השגיאה בקוד פה היא שקיימים שני while true&nbsp; גם בפונקציית הmain וגם בhandle_client כך שהבקשות לא יסגרו כמו שצריך, ולא נוכל לטעון את האתר כולו, בגלל עומס בקשות.<br><strong>שגיאה4 :<br></strong><br></div><pre>with open(os.path.abspath("webroot/uploads") + "\\" + unquote(name_for_file), "w") as file:</pre><div>&nbsp;<br><br></div><div>פה פתחנו את הקובץ כw, ולא כwb, ומכיוון שאנו מקבלים את המידע של התמונה מהsocket&nbsp; בצורה בינארית, התמונה לא תוצג בצורה טובה.</div>]]></description>
         <enclosure url="" />
         <pubDate>2021-01-24 08:31:55 UTC</pubDate>
         <guid>https://padlet.com/zvishiran/57u4kb287ky47xlo/wish/1118199851</guid>
      </item>
      <item>
         <title>מתן נועם ועומר</title>
         <author>1001020233</author>
         <link>https://padlet.com/zvishiran/57u4kb287ky47xlo/wish/1118200887</link>
         <description><![CDATA[<div>1. אם הdata -&nbsp; הוא לא מסוג בייט אז הפונקציה handle_client_request לא תעבוד מפני שלא ניתן&nbsp;<br>לשלוח מחרוזות דרך סוקט (יש להמיר אותן לבייטים).<br><br>2. בפונקציה validate_http_request יש לבדוק מקרי קצה.<br>למשל, לא מספיק לבדוק רק אם ("list1[2].startswith("HTTP/1.1\r\n אלא יש לבדוק גם מקרה שבו<br>("list1[2].startswith("HTTP/1.0\r\n<br><br>3. בפונקציה handle_client יש לסגור את הסוקט.<br><br>4. בפונקציה handle_client_request יש לבדוק קודם את התנאים של הסעיפים לפני שבודקים אם&nbsp;<br>ה - url קיים.</div>]]></description>
         <enclosure url="" />
         <pubDate>2021-01-24 08:32:23 UTC</pubDate>
         <guid>https://padlet.com/zvishiran/57u4kb287ky47xlo/wish/1118200887</guid>
      </item>
      <item>
         <title>יואב לוין ונועם הראל</title>
         <author>yoavlevin10</author>
         <link>https://padlet.com/zvishiran/57u4kb287ky47xlo/wish/1118201821</link>
         <description><![CDATA[<div>טעות : אי הפיכת הheader לבייטים <br>השפעה: חיבור של הדטה והheader במשתנה אחד לא אפשרי<br>מה אפשר לעשות: לשנות את הheader לבייטים כמו הדטה.<br><br>טעות:כתיבת if במקום elif<br>השפעה: הelse האחרון ייכנס למרות שיכול להיות מצב שהif שלפני הelse אכן נכנס<br>מה אפשר לעשות: לוודא שהelif נמצאים במקום הנכון לפי מטרת הקוד.<br><br>טעות:לולאת while מיותרת<br>השפעה: זמן טעינה ארוך מן הרצוי.<br>מה אפשר לעשות: לשים לב האם הלולאה הכרחיתת אם לא להוריד אותה.<br><br>טעות: כתיבת wb במקום rb<br>השפעה: הפעולה שאחרי פתיחת הקובץ ( file.read( לא תעבוד<br>מה אפשר לעשות: לדעת את סוגי פתיחות הקובץ השונות ולוודא שהן אכן מתאימות לפעילות שאנו רוצים לבצע עם הקובץ שפתחנו.<br><br><br><br></div>]]></description>
         <enclosure url="" />
         <pubDate>2021-01-24 08:32:48 UTC</pubDate>
         <guid>https://padlet.com/zvishiran/57u4kb287ky47xlo/wish/1118201821</guid>
      </item>
      <item>
         <title>מיקה כהן, אורי בינרט, עמית קרן, נועם רונן</title>
         <author></author>
         <link>https://padlet.com/zvishiran/57u4kb287ky47xlo/wish/1118202379</link>
         <description><![CDATA[<div>בדיקת תאימות למספר בCALCULATE NEXT<br>בדיקת תאימות למספר ב CALCULATE AREA<br>EXECPTION HANDELING ספציפי במקרים יחדניים וEXPECTION HANDLE כללי לוודא סגירה מלאה של הSOCKET<br>בדיקה יחידנית של סוג הקובץ המועלה בPOST<br>החזרת שגיאות מתאימות וספציפיות לבעיות<br>לשים לב לENCODING מתאים</div>]]></description>
         <enclosure url="" />
         <pubDate>2021-01-24 08:33:05 UTC</pubDate>
         <guid>https://padlet.com/zvishiran/57u4kb287ky47xlo/wish/1118202379</guid>
      </item>
      <item>
         <title>שחר ואריאל</title>
         <author></author>
         <link>https://padlet.com/zvishiran/57u4kb287ky47xlo/wish/1118202824</link>
         <description><![CDATA[<div><strong>הטעות</strong>: חסר \r\n אחד במעטפת ההודעה <br><strong>סוג השגיאה</strong>: בניית מבנה נתונים לפי הכללים (לפי הפרוטוקול) <br><strong>פתרון</strong>: להתאקלם עם מבנה הנתונים הדרוש ולדאוג לבצע אותו בשלמותו ובדיוק<br><br><strong>הטעות</strong>: שימוש ב encoding לא נכון עבור סוגי קבצים מסוימים<br><strong>סוג השגיאה</strong>: אי טיפול במקרי קצה<br><strong>פתרון</strong>: לבדוק שכל אחד מהמקרים מקבל טיפול נכון ומתאים לו! כל אחד הוא מיוחד במקרה שלנו מדובר בקריאה מקבצים<br><br><strong>הטעות: </strong>הכנסת פרמטר מטיפוס לא מתאים <strong><br>סוג השגיאה: </strong>טיפול בקבלת פרמטר מטיפוס לא נכון, טיפול במקרי קצה<strong><br>פתרון: </strong>אין לסמוך על המשתמש הוא ינסה להכשיל את הפרוצדורה ולכן יש לשמור על הקוד מפניו!<strong><br><br>הטעות: </strong>מקרה קצה של חיבור תוכן בינארי עם תוכן טקסטואלי<strong><br>סוג השגיאה: </strong>טיפול במקרי קצה, בעיות בטיפוס של עצמים חיבור של עצמים בטיפוסים שונים<strong><br>פתרון: </strong>תמיד יש לוודא שהפעולה שנעשית על העצמים מתאימה לטיפוסם ולא תניב שגיאות!<strong><br><br>הטעות: </strong>אי חלוקה למנות את הקבלה של הודעת הפוסט, אי קבלת המידע<strong><br>סוג השגיאה: </strong>תקשורת לקויה ולא תואמת לדרך המסירה של הלקוח<strong><br>פתרון: </strong>יש להתאים את דרך קבלת המידע לדרך המסיר כדי שכל המידע יועבר בצורה נכונה!<br><br><strong>הטעות:</strong> חוסר התאמה בין גודל תוכן ההודעה המופיע במעטפת לבין גודלה האמיתי<br><br></div>]]></description>
         <enclosure url="" />
         <pubDate>2021-01-24 08:33:20 UTC</pubDate>
         <guid>https://padlet.com/zvishiran/57u4kb287ky47xlo/wish/1118202824</guid>
      </item>
      <item>
         <title>יונתן קדים, איתי פדרובסקי, גיא אביב, דן נמש</title>
         <author></author>
         <link>https://padlet.com/zvishiran/57u4kb287ky47xlo/wish/1118203817</link>
         <description><![CDATA[<div>לופ בתוך MAIN ובתוך handle client שגרם לקוד לא לעבוד מדי פעם.<br><br>המספר ב-client_socket.recv נמוך מדי ולכן אין מספיק בייטים כדי לקבל את התמונה.<br><br>מנסים לעבוד על משתנה כבייט כאשר הוא מסוג סטרינג או ההפך.<br><br>לא סגרנו את הsocket לאחר השימוש<br><br>חוסר תמיכה בfiletypes מסוגים שונים(jpeg, PNG, jpg)</div>]]></description>
         <enclosure url="" />
         <pubDate>2021-01-24 08:33:48 UTC</pubDate>
         <guid>https://padlet.com/zvishiran/57u4kb287ky47xlo/wish/1118203817</guid>
      </item>
      <item>
         <title>איתי קבנובסקי ורון לוינר</title>
         <author>itaykbn</author>
         <link>https://padlet.com/zvishiran/57u4kb287ky47xlo/wish/1118208604</link>
         <description><![CDATA[<div>1.- פתיחה של הקובץ כ "r" ולא כ "rb"&nbsp; - גרמה לאיבוד מידע בתהליך ה decoding<br><br>2.-&nbsp; לא סגרנו את החיבור בסוקט לאחר שהקליינט התנתק ולכן נגרמו שגיאות.<br><br>3.- לא שמנו /r/n/r/n בסוף ה header אלא שמנו רק פעם אחת. גרם לפרוטוקל לא לזהות את המפריד ובכך תפעול לא נכון של השרת.</div>]]></description>
         <enclosure url="" />
         <pubDate>2021-01-24 08:36:08 UTC</pubDate>
         <guid>https://padlet.com/zvishiran/57u4kb287ky47xlo/wish/1118208604</guid>
      </item>
      <item>
         <title></title>
         <author></author>
         <link>https://padlet.com/zvishiran/57u4kb287ky47xlo/wish/1118211862</link>
         <description><![CDATA[     valid_http, resource = ]]></description>
         <enclosure url="" />
         <pubDate>2021-01-24 08:37:45 UTC</pubDate>
         <guid>https://padlet.com/zvishiran/57u4kb287ky47xlo/wish/1118211862</guid>
      </item>
      <item>
         <title></title>
         <author></author>
         <link>https://padlet.com/zvishiran/57u4kb287ky47xlo/wish/1118214545</link>
         <description><![CDATA[טיפול בקבלת פרמטר מטיפוס לא נכון, טיפול במקרי קצה]]></description>
         <enclosure url="" />
         <pubDate>2021-01-24 08:39:04 UTC</pubDate>
         <guid>https://padlet.com/zvishiran/57u4kb287ky47xlo/wish/1118214545</guid>
      </item>
      <item>
         <title>בר לבובסקי ואופיר וולק</title>
         <author>barlvovski</author>
         <link>https://padlet.com/zvishiran/57u4kb287ky47xlo/wish/1118214565</link>
         <description><![CDATA[<div>&nbsp;בטעות שכחנו לכתוב&nbsp; not&nbsp; בתוך if &nbsp; והלולאה החזירה שגיאה כאשר היא לא הייתה אמורה<br>&nbsp;2. בלבול בין הוספת משתנה int ל string<br><br><br></div>]]></description>
         <enclosure url="" />
         <pubDate>2021-01-24 08:39:04 UTC</pubDate>
         <guid>https://padlet.com/zvishiran/57u4kb287ky47xlo/wish/1118214565</guid>
      </item>
      <item>
         <title>צריך עזרה בפרויקט הצפנה.😬😬😬🦍</title>
         <author></author>
         <link>https://padlet.com/zvishiran/57u4kb287ky47xlo/wish/3112334484</link>
         <description><![CDATA[<p>שלום, אני נאלץ לכתוב פרויקט כזה גם בעצמי. בתור אנשים שכבר עשו את הפרויקט בעבר. האם אתם יכולים להעניק לי חלק מהחוכמה שלכם.</p><p><br></p><p>תודה מראש. </p><p>לא תקבל</p>]]></description>
         <enclosure url="https://padlet-uploads.storage.googleapis.com/2721613668/93e3a3f4cc9f6d006c02f9d5ab3cb7bd/WIN_20230117_13_36_36_Pro.jpg" />
         <pubDate>2024-09-10 15:17:33 UTC</pubDate>
         <guid>https://padlet.com/zvishiran/57u4kb287ky47xlo/wish/3112334484</guid>
      </item>
      <item>
         <title>לירון ספקטור</title>
         <author></author>
         <link>https://padlet.com/zvishiran/57u4kb287ky47xlo/wish/3339003784</link>
         <description><![CDATA[<p>אני ערס</p>]]></description>
         <enclosure url="" />
         <pubDate>2025-02-23 11:42:29 UTC</pubDate>
         <guid>https://padlet.com/zvishiran/57u4kb287ky47xlo/wish/3339003784</guid>
      </item>
      <item>
         <title>ניגר</title>
         <author></author>
         <link>https://padlet.com/zvishiran/57u4kb287ky47xlo/wish/3339004128</link>
         <description><![CDATA[<p>ניגר ניגר ניגר ניגר ניגר ניגר ניגר</p><p><br></p>]]></description>
         <enclosure url="" />
         <pubDate>2025-02-23 11:43:19 UTC</pubDate>
         <guid>https://padlet.com/zvishiran/57u4kb287ky47xlo/wish/3339004128</guid>
      </item>
      <item>
         <title>אור ויזנר</title>
         <author></author>
         <link>https://padlet.com/zvishiran/57u4kb287ky47xlo/wish/3339004892</link>
         <description><![CDATA[<p>האף שלי גדול מאוד, אסטרונומי. הוא גם עקום ב65 מעלות שמאלה. כל הגולגולת שלי בנויה כמו מצולע ואני מזוקן כמו הומלס</p>]]></description>
         <enclosure url="" />
         <pubDate>2025-02-23 11:45:13 UTC</pubDate>
         <guid>https://padlet.com/zvishiran/57u4kb287ky47xlo/wish/3339004892</guid>
      </item>
   </channel>
</rss>
