לגלישה באתר בגירסה המותאמת לסלולאר
| הוספת הודעה
הגדרות תצוגה

הגדרות עץ הודעות

מאפייני צפייה

הצג טקסט בתצוגה
הצג תגובות באופן
עדכן
1722617,226 עוקבים אודות עסקים

פורום שפות תכנות

ברוכים הבאים לפורום שפות תכנות!
פורום זה נועד לסייע בידיכם, המפתחים המתחילים והמנוסים.
ישנן שפות כמו PHP שלהן פורומים משלהם, אך עדיין נשתדל לתת תשובה לכל שאלה עניינית שתוצג.
 
נא לשים לב: איננו נוהגים לפתור את שעורי הבית שלך. אם נתקלת בבעיה ללא פתרון זה דבר אחד אולם שליחת דף שאלות לא תענה ואף תמחק.
פרסומות, קללות, הערות גזעניות, תגובות מזלזלות ואיומים אסורים וגולשים שיעברו על חוקים אלו יורחקו.
כמו שאסורות תגובות מזלזלות, אסורות שאלות מזלזלות.
אנא ממך, לפני שאילת שאלה, יש לבדוק אם לא נשאלה בעבר, או אם חיפוש פשוט בגוגל יכול לפתור אותה.
פורום תכנות מיועד לפלפולים ובהחלט יש כאן מקום לדיונים מעמיקים על קוצו של ;...
אם השרשור מתארך - זאת לא בעיה כל עוד התוכן ענייני, אל תחששו לשאול משהו שלא הבנתם,
כל עוד טרחתם לחפש פתרון (חבר'ה, גוגל. ברצינות) ולא מצאתם.
הודעות אישיות הן מחוץ לעיניינו של הפורום, אבל אם בדעתכם לשלוח הודעה אישית למי מהעונים לשרשור,
אולי כדאי שתמשיכו בשרשור לטובת גולשים אחרים ולטובת ניצול הזמן של העונים.
 
הפורום הוא התנדבותי, הבה לא נשחית את זמנם של הכותבים בו לריק.

הנהלת הפורום:

אודות הפורום שפות תכנות

ברוכים הבאים לפורום שפות תכנות!
פורום זה נועד לסייע בידיכם, המפתחים המתחילים והמנוסים.
ישנן שפות כמו PHP שלהן פורומים משלהם, אך עדיין נשתדל לתת תשובה לכל שאלה עניינית שתוצג.
 
נא לשים לב: איננו נוהגים לפתור את שעורי הבית שלך. אם נתקלת בבעיה ללא פתרון זה דבר אחד אולם שליחת דף שאלות לא תענה ואף תמחק.
פרסומות, קללות, הערות גזעניות, תגובות מזלזלות ואיומים אסורים וגולשים שיעברו על חוקים אלו יורחקו.
כמו שאסורות תגובות מזלזלות, אסורות שאלות מזלזלות.
אנא ממך, לפני שאילת שאלה, יש לבדוק אם לא נשאלה בעבר, או אם חיפוש פשוט בגוגל יכול לפתור אותה.
פורום תכנות מיועד לפלפולים ובהחלט יש כאן מקום לדיונים מעמיקים על קוצו של ;...
אם השרשור מתארך - זאת לא בעיה כל עוד התוכן ענייני, אל תחששו לשאול משהו שלא הבנתם,
כל עוד טרחתם לחפש פתרון (חבר'ה, גוגל. ברצינות) ולא מצאתם.
הודעות אישיות הן מחוץ לעיניינו של הפורום, אבל אם בדעתכם לשלוח הודעה אישית למי מהעונים לשרשור,
אולי כדאי שתמשיכו בשרשור לטובת גולשים אחרים ולטובת ניצול הזמן של העונים.
 
הפורום הוא התנדבותי, הבה לא נשחית את זמנם של הכותבים בו לריק.
הוספת הודעה

צרף
תמונה וידיאו קובץ
קבצים המצורפים להודעה

לצפיה ב-'מחפש קוד קריאת מידע מחשבון בנק'
מחפש קוד קריאת מידע מחשבון בנק
19/10/2017 | 10:32
1
9
שלום וברכה,
אני מחפש הרבה זמן ברשת קוד לדוגמא שמשתמש באחת הספריות החינמיות לקבלת מידע מחשבון בנק, כמו OFX.
 
בכל מקום מצאתי רק את האפשרות הארוכה של להתחיל ללמוד על הנושא ולכתוב הכל בעצמי.
 
אשמח אם מישהו מכיר ספריה וקוד לדוגמא שאפשר פשוט להכניס את הנתונים וכבר לראות משהו עובד...
כמובן שאחרי זה צריך להשתמש בקוד כדי לייצר מה שאני רוצה אבל לא מצאתי משהו בסיסי שכן עובד Out of the box.
לצפיה ב-'על מה אתה מדבר בדיוק?'
על מה אתה מדבר בדיוק?
19/10/2017 | 13:38
7
OFX זה כלי מסחרי בתשלום (רק גרסת התנסות שלו חינמית), והם מספקים דוגמאות קוד במגוון שפות יחד עם ההתקנה של הכלי:
 
מן הסתם, אין שום ספרייה וקוד אוניברסליים לגישה לחשבונות בנקים.
כל בנק מנהל מערכת משלו, ורובם לא מציעים דרך לגורמים צד ג' להתממשק אליה, היות והנושא כרוך בהמון רגולציה (וטוב שכך).
לצפיה ב-'התייעצות '
התייעצות
18/10/2017 | 23:48
1
12
שלום לכולם,
אני מחפשת תחילת תדרכי בתחום. חשבתי קצת על QA.
בהתחשב בעובדה שאני מתעניינת יותר בתחום האוטומציה ופחות בתחום הידני, רציתי לשאול לאן לדעתכם כדאי לי ללכת, לQA? אולי לקורס תכנות מסוים? אולי למשהו אחר?
אשמח גם לשמוע אנשים שעברו מסלול דומה

לצפיה ב-'שלום לך, שאלתך לא ממש ברורה:'
שלום לך, שאלתך לא ממש ברורה:
19/10/2017 | 08:10
8
לאיזה תחום בדיוק את רוצה להיכנס?
 
כאן בפורום "שפות תכנות" אנחנו עוזרים לאנשים לפתור בעיות בקוד.
מהשאלה שלך מסתמן, שאת מעוניינת לעבוד באחד התחומים של מה שלרוב מכנים "הייטק", אבל לא ממש ברור באיזה תחום.
 
את ממש מעוניינת בבדיקות תוכנה (QA) או רק מחפשת מקפצה לפיתוח תוכנה?
 
אני ממליץ לך לשאול את השאלה בפורום "עבודה בהייטק" השכן, שם בד"כ דנים בשאלות כאלה ויש הרבה משתתפים שהגיעו במסלולים שונים ומשונים.
 
באותה הזדמנות, אני ממליץ שתבהירי את השאלה:
מה הרקע שלך מבחינה מקצועית (למשל, אחרי צבא, מחפשת להחליף מקצוע קיים שקשור או לא קשור לתחום וכו').
ומה המטרה הסופית - לאן את מכוונת ומה את רוצה לעשות בעבודה שלך.
 
בד"כ, מי שמכוון לפיתוח תוכנה, צריך לעשות תואר מדמ"ח, ואז כבר בשלב הלימודים (המאוחר) אפשר למצוא משרת סטודנט בפיתוח ולהמשיך משם.
 
QA לרוב אינו מהווה מקפצה לפיתוח, הוא מקצוע בפני עצמו.
ניתן להיכנס אליו ללא תואר, לפחות לבדיקות ידניות. אני לא בטוח מה הדרישות לגבי בדיקות אוטומטיות.
 
שימי לב גם, שפיתוח אוטומציה, וביצוע בדיקות אוטומטיות אינם בהכרח אותו תפקיד.
 
בהצלחה!
לצפיה ב-'יבוא קובץ אקסל לאקסס'
יבוא קובץ אקסל לאקסס
17/10/2017 | 13:01
9
באקסס:
הפקודה
 
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, tblName, txtLocationFile, True
מדבגת:
 
run time error 3275
 
שגיאה לא צפויה ממנהל ההתקן של מסד נתונים חיצוני
 
אלא עם כן קובץ האקסל הספציפי פתוח ואז עובד חלק.
לצפיה ב-' מחכים לכם בפורומים תיירותיים חדשים '
מחכים לכם בפורומים תיירותיים חדשים
16/10/2017 | 15:49
2
 
מתכננים טיול בחו"ל
רוצים להתייעץ עם מדריך טיולים שייתן לכם את כל הטיפים השווים
 
אתם מוזמנים לפורומים החדשים שלנו 
 
פורום חדש על המדינות הבלטיות לתכנן טיול בצפון-מזרח אירופה
 
בואו לברר על האטרקציות הכי שוות בפורום טיולים באירופה
 
הודו, נפאל, הפיליפינים... אתם מוזמנים לפורום המזרח הרחוק לשאול הכל
 
טיול לכבוד הפנסיה? טיול אחרי צבא? ירח דבש? הכל בפורום דרום ומרכז אמריקה
 
רואים רק לבן בעיניים? פורום חופשות סקי הוא הפורום שלכם
 
 
המשך גלישה נעימה
לצפיה ב-'Ambiguous truth value'
Ambiguous truth value
08/10/2017 | 20:41
17
61
 if s_prev == None: s_prev = numpy.zeros_like(self.state.s)
 
נותן:
 ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
בפייתון 3.5
 
בתודה מראש
לצפיה ב-'הקוד שלך משתמש בספרייה NumPy'
הקוד שלך משתמש בספרייה NumPy
08/10/2017 | 23:42
15
41
זו ספרייה מתמטית של Python.
היא דורסת אופרטורים בוליאנים עבור מערכים שלה כדי להשוות מערכים בצורות שונות.
 
השגיאה שקיבלת, כפי שהטקסט שלה מרמז, אומרת שלא ברור איך לעשות את ההשוואה שאתה מבקש לעשות.
 
אני יכול לנחש, שמה שבאמת התכוונת לעשות (או יותר נכון, מה שכותב בקוד התכוון לעשות) זה לבדוק שהמשתנה לא ריק, כלומר לא מכי None.
 
במקרה כזה, הדרך הנכונה (כנראה) היית להשתמש ב-is במקום אופרטור השוואה.
לצפיה ב-'if s_prev is None '
if s_prev is None
09/10/2017 | 08:30
14
27
 if s_prev is None: 
נותן את אותה הודעת שגיאה
לצפיה ב-'s_prev הוא מערך של numpy'
s_prev הוא מערך של numpy
09/10/2017 | 14:23
13
73
כנראה שהדרך הנכונה היא להשתמש באחת הפונקציות כאן בהתאם לכוונת המשורר.
 
(וכהערת שוליים - לא ברור מה המטובציה שלך אבל אם זה פשוט לבנות RNN אז בשביל זה יש את כל המימושים הקיימים בחוץ) 
לצפיה ב-'לא מוצא את הדרך לתרגום הפונקציה לתחביר נכון'
לא מוצא את הדרך לתרגום הפונקציה לתחביר נכון
09/10/2017 | 20:02
12
21
מעבר לכך בפועל זה לא עיניין של לבנות אלא לתקן באגים במימושים קיימים של rnn
לצפיה ב-'תגיד, אתה בטוח שהבאת את השורה הנכונה?'
תגיד, אתה בטוח שהבאת את השורה הנכונה?
09/10/2017 | 20:42
11
23
סתם מתוך סקרנות ניסיתי לשחזר את השגיאה שלך, ולא נראה שיש בעיה כלשהי להשוות ל-None ספציפית.
 
לכן, יש לי הרגשה שהשגיאה שראית באה ממקום אחר ולא מהשורה שהדבקת כאן.
 
 
לצפיה ב-'גם אני התחלתי לחשוד שמקור השגיאה משורה אחרת'
גם אני התחלתי לחשוד שמקור השגיאה משורה אחרת
09/10/2017 | 21:37
10
26
למרות שהשגיאה מיוחסת לאותה שורה:
 C:\Users\i\Documents\lstm.py in bottom_data_is(self, x, s_prev, h_prev)
    83     def bottom_data_is(self, x, s_prev = None, h_prev = None):
    84         # if this is the first lstm node in the network
---> 85         if s_prev == None: s_prev = np.zeros_like(self.state.s)
    86         if h_prev == None: h_prev = np.zeros_like(self.state.h)
    87

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

לצפיה ב-'וניסית מה שכתוב בהודעת שגיאה? '
וניסית מה שכתוב בהודעת שגיאה?
09/10/2017 | 23:03
9
4
לצפיה ב-'אני לא יודע איך לתרגם את :'
אני לא יודע איך לתרגם את :
10/10/2017 | 00:18
8
14
 Use a.any() or a.all()
 
לתחביר נכון
לצפיה ב-'תראה, מה שקורה בזמן ריצה (כנראה)'
תראה, מה שקורה בזמן ריצה (כנראה)
10/10/2017 | 09:34
7
12
זה שבקריאה לפונקציה בלי ארגומנטים המשתנה s_prev מאותחל ל-None ואז הבדיקה
 if s_prev == None:
 היא חוקית, אבל ברגע ש-s_prev הופך להיות מערך של numpy הבדיקה הזו כבר לא חוקית. אתה יכול לעשות משהו בסגנון
 if np.any(s_prev == None):
 
אבל זה צריך להדליק לך נורה אדומה כי זה אומר שמי שכתב את הקוד לא ממש התייחס לטיפוסים של המשתנים שלו, יכול להיות שפתרון עדיף מבחינת התחזוקה והקריאות של הקוד יהיה לשכתב את ההשמה הדיפולטית בפונקציה ולאתחל את s_prev מראש למערך numpy מתאים. 
לצפיה ב-'התיקון שהצעת פתר את הבעיה ביחס ל:'
התיקון שהצעת פתר את הבעיה ביחס ל:
10/10/2017 | 12:11
6
13
 if np.any(s_prev == None): s_prev = np.zeros_like(self.state.s)
אך כעת השגיאה מופיעה ביחס ל:
 ---> 86         if np.any(h_prev == None): h_prev = np.zeros_like(self.state.h)
 
תדפיס השגיאה המלא:
 
 ValueError                                Traceback (most recent call last)
<ipython-input-5-c893fea1db45> in <module>()
    47
    48 if __name__ == "__main__":
---> 49     example_0()
    50
    51

<ipython-input-5-c893fea1db45> in example_0()
    34         print("iter", "%2s" % str(cur_iter), end=": ")
    35         for ind in range(len(y_list)):
---> 36             lstm_net.x_list_add(input_val_arr[ind])
    37
    38         print("y_pred = [" +

C:\Users\i\Documents\lstm.py in x_list_add(self, x)
   191             s_prev = self.lstm_node_list[idx - 1].state.s
   192             h_prev = self.lstm_node_list[idx - 1].state.h
--> 193             self.lstm_node_list[idx].bottom_data_is(x, s_prev, h_prev)
   194

C:\Users\i\Documents\lstm.py in bottom_data_is(self, x, s_prev, h_prev)
    84         # if this is the first lstm node in the network
    85         if np.any(s_prev == None): s_prev = np.zeros_like(self.state.s)
---> 86         if np.any(h_prev == None): h_prev = np.zeros_like(self.state.h)
    87
    88

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
 
לצפיה ב-'אז מדבגים, תדפיס את h_prev ותסתכל איך הוא נראה'
אז מדבגים, תדפיס את h_prev ותסתכל איך הוא נראה
10/10/2017 | 12:58
1
2
לצפיה ב-'הדפסה מובילה ל : NameError'
הדפסה מובילה ל : NameError
10/10/2017 | 13:47
14
 NameError: name 'h_prev' is not defined
ולמעשה גם:
 NameError: name 's_prev' is not defined
 
לצפיה ב-'משהו מאוד מוזר לי בקוד שלך!'
משהו מאוד מוזר לי בקוד שלך!
10/10/2017 | 13:26
3
29
הסתכלתי על הקישור ל-github ששמת.
הקוד שם שונה, והוא משתמש ב-is.
יש גם הערה שהקוד שונה להשתמש ב-is לפני 4 חודשים בדיוק בגלל השגיאה שהצגת וזה פתר את הבעיה.
 
הקוד רץ אצלי תקין כפי שהוא מופיע ב-git.
 
ההבדל היחיד שהוא שאצלי יש Python 3.4 ולא 3.5 אבל אני לא רואה סיבה מיוחדת שזה ישנה. לא מדובר כאן בהבדל בין 2 ל-3.
לצפיה ב-'צודק, אם כבר הייתי חושד בגרסת numpy'
צודק, אם כבר הייתי חושד בגרסת numpy
10/10/2017 | 14:23
2
4
לצפיה ב-'צדקת . הדבר הראשון שרציתי לעשות וויתרתי עליו'
צדקת . הדבר הראשון שרציתי לעשות וויתרתי עליו
10/10/2017 | 15:33
1
22
היה למחוק ולהתקין מחדש את numpy . הבעיה נפתרה לאחר התקנה מחדש.
לצפיה ב-'וכמובן תודה'
וכמובן תודה
10/10/2017 | 16:00
3
לצפיה ב-'ובלי קשר, הדרך הנכונה לבצע בדיקה מול None היא is ולא =='
ובלי קשר, הדרך הנכונה לבצע בדיקה מול None היא is ולא ==
11/10/2017 | 16:26
5
לצפיה ב-'pycharm community ו-intellisense'
pycharm community ו-intellisense
10/10/2017 | 10:49
1
22
היי,
אני משתמש ב-pycharm (התקנה על windows וחלק מהרכיבים - אין intellisense אוטומטי. למשל אני רושם פקודה עם '.' - צריך להיות רשימה של מתודות ו/או properties).
 
אני לא יודע אם זה בגלל הגירסה החינמית, או שאני צריך להתקין דברים נוספים.
 
כן - האם אפשר להגדיר את ה-intelisense בעצמי באיזה קובץ הגדרות כלשהו?
 
כן - איך אני מבצע debug לקוד שכתבתי - הרצה שורה אחר שורה מתוך ה-pycharm.
 
תודה.
לצפיה ב-'לא צריך התקנה נוספת'
לא צריך התקנה נוספת
10/10/2017 | 13:13
18
אתה בטוח ה-intelisense לא עובד? תתחיל בלעשות ניסיון עם רשימה ריקה - בחבילות חיצוניות יכולות להיות לפעמים בעיות כי הסביבה לא מצליחה להסיק את הטיפוסים ע"י ניתוח סטטי.
 
לגבי debug -  תכניס break point בתחילת התוכנית (או איפה שאתה רוצה לעצור) ותלחץ על הכפתור debug, משם את יכול לרוץ שורה אחר שורה ע"י הפקודות שבתפריט run  (אני לא מציין קיצורי מקלדת כי הם תלויים בסכמה שבחרת בזמן ההתקנה)  
לצפיה ב-'לגבי אותו קוד מהשרשור הקודם'
לגבי אותו קוד מהשרשור הקודם
08/10/2017 | 20:19
2
35
ניתן להורדה מכאן:
 
numCategories
מופיע ב
 RNN = RecurrentNeuralNetwork( numCategories , numCategories, outputSize, expectedOutput, learningRate)

פעמיים.
כמו כן אני מקבל  output בדמות רצף מספרים :
 [[ 0.          0.          0.         ...,  0.          0.          0.        ]
[ 0.00129407  0.0213583   0.02323135 ...,  0.00112935  0.00549777
  0.03610114]
[ 0.00017056  0.0062421   0.00892565 ...,  0.00047092  0.00277905
  0.01386165]
...,
[ 0.0015336   0.03173663  0.03420686 ...,  0.00488399  0.01186637
  0.02955673]
[ 0.0015336   0.03173663  0.03420686 ...,  0.00488399  0.01186637
  0.02955673]
[ 0.0015336   0.03173663  0.03420686 ...,  0.00488399  0.01186637
  0.02955673]]

מה המשמעות של:
         #write it all to disk
       ExportText(output, data)
ו/או למה אני לא מקבל את הפלט כטקסט ?
 
בתודה מראש
 
 
לצפיה ב-'לא כתבת בשרשור הקודם שלדעתך ההערות בקוד מסבירות הכל?'
לא כתבת בשרשור הקודם שלדעתך ההערות בקוד מסבירות הכל?
08/10/2017 | 23:46
1
20
כתוב מעל הפונקציה די במפורש שהיא כותבת את המידע לדיסק - כלומר, שומרת אותו בקובץ כלשהו.
הגיוני שהיא לא תציג את המידע על המסך, אלא תצטרך לפתוח את הקובץ.
 
לגבי החלק הראשון, לא הבנתי מה השאלה?
למה אותו משתנה מופיע פעמיים? כנראה שככה צריך. או אולי זו שגיאה של מי שכתב את הקוד.
 
כדי לדעת את זה, צריך ללמוד את כל הקוד והספרייה שהוא משתמש בה.
אני בספק רב שמישהו בפורום יטרח לעשות זאת בשבילך...
 
אבל אולי אני טועה...
 
לצפיה ב-'זה אכן רשום רק שברוב טיפשותי חיפשתי ולא מצאתי את קובץ הכתיבה'
זה אכן רשום רק שברוב טיפשותי חיפשתי ולא מצאתי את קובץ הכתיבה
09/10/2017 | 08:28
13
data במקום output
תודה
 
לצפיה ב-'הגדרת תוכנית python בשרת.'
הגדרת תוכנית python בשרת.
05/10/2017 | 19:01
9
54
כתבתי תוכנית קטנה, hello world בשרת centos ב-python.
  from wsgiref.simple_server import make_server

def hello_world(environ, start_response):
       status = '200 ok'
       headers = [('Content-type', 'text/plain')]
       start_response(status, headers)
       return [b'Hello world']

httpd = make_server('', 8005, hello_world)
print 'Serving on port 8005...'
httpd.serve_forever()
כן פתחתי ב-firewall את הפורט 8005 למחשב שלי, כך שאני יכול לבצע telnet.
 
כשאני פותח דפדפן ומנסה להיכנס לדף הנ"ל נראה כאילו הדפדפן תקוע,
וכשאני יוצא בכוח מהתוכנית הנ"ל לדוגמה, אני אכן רואה hello world.
 
כשאני לוחץ על ctrl-c בשרת הלינוקס, היכן שה-python פתוח, אני מקבל הודעת שגיאה:
 Traceback (most recent call last):
 File "/usr/lib64/python2.7/SocketServer.py", line 295, in _handle_request_noblock
   self.process_request(request, client_address)
 File "/usr/lib64/python2.7/SocketServer.py", line 321, in process_request
   self.finish_request(request, client_address)
 File "/usr/lib64/python2.7/SocketServer.py", line 334, in finish_request
   self.RequestHandlerClass(request, client_address, self)
 File "/usr/lib64/python2.7/SocketServer.py", line 649, in __init__
   self.handle()
 File "/usr/lib64/python2.7/wsgiref/simple_server.py", line 116, in handle
   self.raw_requestline = self.rfile.readline()
 File "/usr/lib64/python2.7/socket.py", line 447, in readline
   data = self._sock.recv(self._rbufsize)
KeyboardInterrupt
 ואז הדפדפן משתחרר (במקום שעון חול תמידי בדפדפן, אני רואה לאחר לחיצה על ctrl+c את תוצאת הדף, כלומר hello world).
 
1. אין דרך אחרת מאשר להריץ serve_forever? גם שיהיה פתוח תמיד על כל המחיצה באופן קבוע (וההרצה תהיה ב-background).
2. אם אני עושה הקבלה לנ"ל ל-iis, ב-iis פשוט מגדירים את המחיצה של האתר, ופותחים את הפורט כרגיל (וכל הדפים באותו דף הם ניתנים לקריאה).
בתוכנית לדוגמה זה נראה שקיבעתי את השרת אך ורק ל-hello_world. איך אני מקבע את הנ"ל למשהו יותר רחב (מחיצה שלמה), וכן שדפדפן לא ייתקע לי כמו בדוגמה הנ"ל?
 
תודה.
לצפיה ב-'אין שום בעיה עם הקוד שלך'
אין שום בעיה עם הקוד שלך
05/10/2017 | 22:18
8
30
(למעט העובדה שתוספת b למחרוזת תמוהה), ואצלי הוא עובד יפה.
כנראה שיש בעיה ספציפית בסביבה שהקמת.
 
בנוסף, יש לך חוסר הבנה מוחלט במה שאתה עושה.
 
נתחיל מזה, שמה שאתה מקבל כשאתה מפסיק את התוכנה זו לא שגיאה, אלא "פסיקה" interrupt, וזה בדיוק מה שאמור לקרוא כשאתה מפסיק תוכנת Pyhton בלחיצה על Ctrl + C.
 
כמובן, ניתן לטפל באופן שונה בצירוף מקשים הזה בתוך התוכנה שלך, אבל אני מניח שזה לא מה שמעניין אותך כרגע.
 
דבר שני, לפי הכיתוב הקצת מוזר שלך "פתוח תמיד על כל המחיצה באופן קבוע" מה שאתה רוצה ומה שאתה משתמש בו לא קשורים אחד לשני.
 
אם אתה רוצה להגיש קבצים סטטים מתוך ספריה, כפי ש-iis עושה ברירת מחדל, אתה צריך שרת web פשוט ולא אפליקציה.
apache יעשה את העבודה, גם nginx.
 
אם בכל זאת אתה רוצה להשתמש ב-python, מסיבה שאינה ברורה, כל שעליך לעשות זה להריץ את השורה:
 python -m SimpleHTTPServer 8000
 
בספרייה שבה נמצאים הקבצים שלך, וזה יגיש את כל הקבצים בהיררכיה שבה הם יושבים (כולל תת תיקיות).
כמובן, זה לא יריץ קבצי PHP או כל תוכן אקטיבי, רק יגיש קבצים סטטיים.
 
המחלקה שאתה מנסה להשתמש בה נועדה כדי לכתוב יישום, לא להגיש קבצים מתוך תיקיה.
הראיון הוא שתכתוב קוד Python שעושה דברים - חישובים, גישה ל-DB וכו', יבנה מזה את התוצאה, ויחזיר אותה.
 
אם כל מה שאתה רוצה זה להגיש קבצים כמו ש-iis עושה, אתה לגמרי במקום הלא נכון!
לצפיה ב-'או קיי, תודה.'
או קיי, תודה.
06/10/2017 | 00:13
7
29
נתחיל מהתחלה.
 
אני רוצה לספק מידע לתוכנה (למשל אנגולר) באמצעות כלי של צד שרת (למשל python).
 
ה-python יפנה ל-db ויחזיר מחרוזת json, שאטפל בה בקוד של אנגולר.
 
לשם כך, אני צריך שרת web, שידע להפעיל את ה-script של ה-python.
בשרת web תהיה מחיצה שיהיו שם קבצים, בין היתר מסוג py.
(ייתכן והתבלבלתי, כיוון שלקחתי דוגמה מאינטרנט: https://www.youtube.com/watch?v=E7HZyWAWe0E )
 
בדר"כ בווינדווס, יש תמיכות ל-asp.net ואם צריכים למשל תמיכה ל-php צריך להתקין איזה רכיב שיאפשר גישה.
 
איך אני מרים את השרת web הנ"ל? האם צריך להתקין משהו נוסף לשרת שתהיה התאמה לסקריפטים ב-python?
יש איזה קובץ config, שם אפשר לראות את המחיצה של ה-web, ה-port, אם תומך ב-python, php וכד'?
 
תודה.
לצפיה ב-'אתה עובד הפוך.'
אתה עובד הפוך.
06/10/2017 | 14:03
6
27
לפי השרשור הקודם שלך כבר יש לך שרת ותשתית של אתר.
אתה רק צריך להעביר מידע מה-DB שלך לדפדפן.
 
כלומר, יש לך כבר סביבה כלשהי, שרת כלשהו.
 
ועכשיו אתה צריך שיהיה בו קוד פעיל צד שרת שיעשה את העבודה.
כדי להמליץ לך איך לבנות את הקוד הזה, אנחנו צריכים לדעת 2 דברים:
 
1. איזו סביבה יש לך?
2. אלו שפות תכנות אתה יודע?
 
האם אתה בכלל יודע Python, או שאתה הולך לנסות להבין דרך סרטונים ב-youtube איך ניגשים ממנו ל-DB?
לצפיה ב-'כמה דברים.'
כמה דברים.
07/10/2017 | 13:32
5
29
אני יותר מכיר מערכות windows, אך לאחרונה אני גם עובד עם linux.
 
 
יש סביבה שאני בוחן אותה למוצר פיתוח.
פיתחתי מוצרים בעבר - הקמתי שרת php באיזשהו אתר אחסון, שאפשר שימוש ב-cpannel. אז לא ממש שברתי את הראש איך התקינו בלינוקס דברים (היום אני גם בוחן לינוקס תחת centos ו-ubuntu - לא מעט עומס ...)
 
אני מנסה טכנולוגיה חדשה לפיתוח אתר. עדיף שאוכל להתקין בלינוקס (זה עניין של עלויות, וגם נוכחות של שימוש בענן ובניית dockers). מעיין poc למוצר לטכנולוגיה שאני רוצה ליישם (וברגע שיהיה hello world פשוט - אני ארוץ עם הקוד ללא בעייה. חייב לעבור את המשוכה הזאת).
 
הוחלט אנגולר (יש כאלה שמציעים לי react, vue וכד', אך אין לזה סוף. צריך להתקבע על משהו).
כתבתי מספר תוכניות בסיסיות באנגולר (תוך שימוש ב-jquery וכד') - עובד סבבה.
עכשיו רציתי להוסיף גם אפשרות קריאה ל-db מצד שרת כלשהו.
חשבתי לתומי - הרי יש node js עבור ה-angular (זה גירסה 4) - למה שלא אשתמש בו.
לא ממש מצאתי דוגמאות באינטרנט שמשלבות קוד מלא של node js בשילוב עם אנגולר (אם עובדים עם visual studio code, למה שה-visual studio code לא ישרת אותי לשימוש עם כתיבה של קוד אנגולר וגם קוד node js).
 
לפי תשובות בפורום זה, הבנתי שזה לא משנה (לא ממש הבנתי למה לא מיקדו אותי ב-node.js), אז הוחלט לעבוד עם python (גם משום שהיא הכי נפוצה, וגם ממילא אני צריך להשתמש בה לדברים נוספים, כגון הרצה של סרוויסים שונים). python זה לא php, ומיועד גם לדברים נוספים. קצת התנסייתי עם השפה וכתבתי קצת קוד עם השפה הזאת (זה מספיק ... ברגע שיהיה hello world - אפשר לרוץ עם הכתיבה ...)
 
אז בדקתי איך אפשר לייצר קוד rest api ל-python, ואני מנסה כעת לעבוד עם django.
כתבתי לא מעט rest full api, אך זה היה ב-windows, ואני מנסה להסב את ה-rest full ליישומים שהם ב-linux מסיבות עסקיות.
 
משהו מריץ את ה-python - איזו אפליקציית שרת.
רק לא ממש הבנתי, אם יש איזו דרך אחרת לצד שרת מאשר לבנות rest full api (אם ב-C# זה חתיכת קוד לא קטן - איך זה יהיה ב-python, או ב-django).
 
כתבתי קוד לקריאה מבסיס נתונים:
  
import threading
import json
from mysql.connector import (connection)
from wsgiref.simple_server import make_server

def hello_world(environ, start_response):
       status = '200 ok'
       headers = [('Content-type', 'text/plain'), ('Access-Control-Allow-Origin','*')]
       start_response(status, headers)
       cnx = connection.MySQLConnection(user='****', password='****',
                                host='******',
                                database='*******')
       parts = {}
       cursor = cnx.cursor()

       query = ("SELECT id, partname, partdesc FROM part ")

       cursor.execute(query)

       parts["Parts"] = []
       p = parts["Parts"]

       for (id, partname, partdesc) in cursor:
               p.append({"PartName": partname, "Description": partdesc})

       cursor.close()
       cnx.close()
       s = json.dumps(parts)
       return [s]

httpd = make_server('', 8005, hello_world)
print 'Serving on port 8005...'
threading.Thread(target=httpd.serve_forever).start()

את הנ"ל אני מעביר כ-json לקוד באנגולר, וגם זה עובד (רק לא נראה לי סביר שלכל איזה קובץ python אכתוב את הפקודות http = make_server וכו', לכן חיפשתי איזה שרת שיודע להריץ קוד python. כיוון ש-django מאפשר גם הרצה של rest full וגם אתר, זה מזכיר קצת את ה-iis, וכן מה שבדקתי באינטרט - זה הדבר הראשון שצץ, כך שאני מניח שזה בסדר לעבוד עם django).
 
אם צריך rest full api (שזה נראה קצת מורכב, בשביל צורך בקוד שרת פשוט) אז זה מה שיהיה (נראה יותר הגיוני, אם האתר באנגולר שאני כותב, יוכל לקרוא למתודות שלו בלבד, עם חשיפה אך ורק ברמת שרת.
כן, התרגלתי ל-windows, וזה גם נראה לי קצת מוזר שכל כלי פיתוח צריך שרת נוסף. ב-windows זה היה אחד. כנראה לינוקס מקובל קצת אחרת ...)

ב-asp.net זה היה קצת שונה (יכולתי לכתוב גם צד שרת וגם צד client באותו ide של ה-visual studio, וזה היה הכי עדיף).
 
אשמח להכוונה (דגש אנגולר עם צד שרת שקורא מבסיס נתונים, איזה שרת ואיזו גישה עדיפה - rest api, שילוב של node js בצורה נאטיבית עם אנגולר, או שימוש בכל שפת פיתוח צד שרת, כגון python בשילוב עם django).
 
תודה.
לצפיה ב-'אוי ואבוי...'
אוי ואבוי...
07/10/2017 | 15:27
4
27
סלח לי, אבל אתה קופץ מעל הפופיק, עושה סלט, ובגלל זה מסתבך:
 
אתה גם מנסה להקים POC למוצר חדש וצריך לתכנן אותו, אבל גם באותו זמן מנסה ללמוד מערכת הפעלה חדשה, כלים חדשים ולא אחת אלא מספר שפות תכנות חדשות.
 
ואתה זורק לפח כלים לא בגלל שקבעת שהם לא מתאימים לך, אלא בגלל שטיפה התקשית ללמוד אותם ומדלג הלאה ומוסיף לעצמך דברים שאתה לא יודע.
 
אם כל העומס הזה, אני לא רואה אדם סביר מצליח, וגם יש לי הרגשה שהבסיס שלך קצת רעועה ואתה לא מבין לעומק את הארכיטקטורה ב-WIndows לכן לא מצליח למצוא התאמה בין החלקים השונים ללינוקס.
 
אני אנסה לעשות לך קצת סדר, אבל יש גבול עד כמה אפשר לקחת אדם ע"ג הפורום:
 
1. אין שום צורך בלינוקס לעשות שרת נפרד לכל שפה או טכנולוגיה.
המקבילה הישירה של iis בלינוקס היא Apache.
אתה מתקין אותו, והוא יודע לעשות הכל: להגיש קבצי HTML סטטיים, להפעיל סקריפטים של PHP (שהוא מקבילה ל-ASP.NET) בצד שרת, וגם להריץ סקריפטים בטכנולוגיה CGI בשפות אחרות, כולל Python.
 
2. Visual Studio Code הוא רק עורך טקסט מיופיף.
אתה יכול לכתוב בו כל קוד שאתה רוצה: node.js, angular, Python, Java, C.
 
3. הקוד שכתבת ב-Python כרגע, יוצא מנקודת הנחה שאין לך שום תשתית, ואתה רוצה לכתוב את כל התשתית שלך מ-0 ב-Python, ולכן הוא גם נותן לך פונקציה של שרת ממש.
 
כמובן שאינך אמור ליצור הרבה קבצים שכל אחד פותח שרת משלו להאזין לבקשות.
אתה יכול לעשות זאת טכנית, אבל זו תהיה ארכיטקטורה גרועה מאוד.
 
אתה אמור להקים שרת אחד, שינתח את פרטי הבקשה, ויעביר אותה לטיפול של קוד רלוונטי.
היכן הקוד הזה יושב, זו החלטה שלך כמפתח.
 
4. Django הוא פריימוורק (framework) שכתוב ב-Python ונועד לחסוך לך את רוב מה שכתבתי בסעיף 3.
אבל יש לזה מחיר - אתה צריך ללמוד איך משתמשים בו נכון.
 
אני מקווה שזה עושה לך קצת סדר בסיסי.
העצה היחידה שאני יכול לתת לך היא:
תבחר כיוון אחד, למשל את הכיוון הסטנדרטי של LAMP, ותתחיל להתעמק בו. על תתפזר - תתרכז, ואם אתה נתקל בקושי נקודתי, אל תזרוק את הכלי לפח אלא תנסה להתגבר על הקושי תוך שימור הדרך שכבר עברת והבסיס שצברת.
Linux
Apache
MySql
PHP
 
בהצלחה!
לצפיה ב-'תודה רבה.'
תודה רבה.
08/10/2017 | 13:50
3
26
תודה רבה על המענה.
זה נתן לי כיוון פחות או יותר.
 
לא היה נראה העניין שלכל תוכנית python קטנה צריך להריץ על שרת.
 
היה עדיף גם להשתמש ב-rest, אך בשל כך צריך django או flask. בעיה היא ש-python ל-centos זה גירסה ישנה, שלא ממש נתמכת ב-django או flask, ואז צריך להשתמש ב-virtual env עבור גירסת פייטון ספציפית.
 
ארכיטקטונית - זה לא משנה בצד ה-client (ואז אפשר להעביר לתיכנות ובמקביל למצוא פתרונות), לכן בכל מקרה מה שעשיתי, זה:
  • העלאת שרת אפאצ'י ב-centos.
  • שימוש ב-python שרק מחזיר response, משהו בסגנון
 #!/usr/bin/python

import threading
import json
from mysql.connector import (connection)
from wsgiref.simple_server import make_server
from requests import Request, Session

def test_hello():
 ... read from db. return json

str = test_hello()
print "Content-Type: application/json"
print "Access-Control-Allow-Origin: *"
print
print str

בנ"ל גם העברתי headers באופן שרירותי.
בתוכנית של אנגולר:
 this._http.request("http://myip:myport/myfunc.py").subscribe((sub) =>
   {
      str = sub.text();
      JSON.stringify(str);
      ev.emit(str);
     }
   );
לגבי django - אין בעייה ב-ubuntu (ב-centos אי אפשר להוריד סתם כך את python. ה-centos מבוסס על גירסת python ישנה. אפשרי בדרכים עקיפות ולהעלות virtual env, כמו https://hostpresto.com/community/tutorials/how-to-install-django-web-framework-on-centos-7/ אך כיוון שהפיתוח הוא לענן, בסופו של דבר אני אבחר את מערכת הפעלה עבור ה-docker).
מה לעשות. כשעושים הכל לבד - צריך גם להתמודד עם התקנות, צד שרת, client וכל המשתמע...
 
תודה, בכל אופן.
 
לצפיה ב-'למה החלטת שבשביל rest צריך django או flask?'
למה החלטת שבשביל rest צריך django או flask?
08/10/2017 | 23:54
2
20
RESTful זו בסה"כ ארכיטקטורה - הדרך לסדר את הקוד שלך, את הפניות ומה הן עושות.
 
אתה יכול לממש אותה גם ללא framework כלשהו אם שימוש ב-framework מפריע לך.
 
לגבי CentOS:
זו למעשה Red Hat בחינם.
המערכת כוללת גרסאות ישנות של כל החבילות, כי אלה הגרסאות הבדוקות והיציבות ביותר שיש.
היצרן של ההפצה הזו מעדיף יציבות על פני חדשנות, כי יציבות חשובה מאוד לשרתים.
 
ב-Ubuntu לאומת זאת, מעדיפים מחזור עדכונים קצר, ומספקים גרסאות חדשות יותר של התוכנות השונות גם בגרסת שרת.
 
אבל, שים לב שיש סיבה שקוראים ל-Ubuntu ו-CentOS "הפצות":
בלינוקס, בניגוד ל-WIndows, אתה לא מקבל "מקשה אחת", take it or leave it.
מדובר פשוט באוסף תוכנות - הכל מ-kernel ועד שולחן העבודה (אם מותקן) שמופצות ביחד, כחבילה.
 
לרוב אין בעיה להחליף חלק מהתוכנות.
 
אני לא בטוח מה הדרישות של django ו-flask, אבל כל עוד ההבדל הוא לא בין Python 2 ל-Python 3, אתה לא חייב virtual env ויכול פשוט לעדכן את גרסת ה-Python שיש לך.
נניח מ-2.5 ל-2.7 או מה שזה לא יהיה (רק על תנסה לעדכן מ-2 ל-3 כי הן לא תואמות אחת לשנייה).
 
כמובן, אם אין עדכון זמין במאגרים ראשיים זה יהיה בעייתי קצת.
אבל אני בטוח שיש מאגרים חלופיים ומדריכים ברשת איך להשתמש בהם.
 
וחוץ מזה, אם Ubuntu עונה על הצרכים שלך מהקופסה ו-CentOS לא, למה לא להשתמש ב-Ubuntu?
לצפיה ב-'תודה רבה. הסתדרתי.'
תודה רבה. הסתדרתי.
09/10/2017 | 01:40
1
21
אין דבר חדש בלינק שהצגת. ידוע ש-rest ניתן לבצע בלא מעט דרכים.
ה-web service של ווינדווס מבוסס xml מבוסס soap, ומכיל יותר מידי מידע שהוא "מפורמט" באיזה פורמט soap, ולא ממש נאטיבי לשימוש. כבר מזמן משתמשים ב-rest.
 
בכל מקרה, הייתי חייב לבצע דרך גירסת לינוקס שהיא. אם זה ubuntu או centos (לא סובל את ה-windows. גם כל מה שהם עושים - windows core, dockers  לא ממש מוצלח, ועדיין לא מתאים ליישום בענן בצורה נורמלית. חוץ מזה - יש פה עלויות עסקיות, כאשר יש לא מעט דברים בחינם, וכמעט הכל בלינוקס. המודל העסקי למערכת ענן מבוססת לינוקס יותר מוצלחת מווינדווס, לכן גם הבחירות הן בהתאם).
 
אגב, לשאלתך למה לא ubuntu. פשוט - כי כבר מותקן centos בשרת פיתוח. ubuntu מותקן בשרת אחר, וקצת בעייתי לפתח עליו. אני כן שוקל לעבור ל-ubuntu. בחוגים שונים (גם של מייקרוסופט) לא מעט מעדיפים את ubuntu (גם זה כולל desktop מובנה, וגם גירסאות יותר עדכניות ופתוחות, ולא סתם מקובעים עם centos. מה גם שקראתי, ש-centos בנוי על קוד התנדבותי בשונה מ-ubuntu. נראה שאין ולא יהיו עדכונים, וזוהי סביבה שהיא הולכת ונמוגה ... בכל מקרה, זה שמועות ... ימים יגידו).
 
הצלחתי להשמיש את ה-django (יש מיליון דרכים. בחרתי דרך מסויימת ולמדתי אותה, כמו שיכולתי ללמוד גם משהו אחר, אך זה מה שנראה נפוץ ועדיף על flask לפי המלצות שונות. בכל מקרה, זה החלטה שרירותית) גם ב-centos וגם ב-ubuntu.
גם קריאה מבסיס נתונים, ביצוע סריאליזציה ל-json וגם פקודות rest, כמו get, post וכד'.
 
הסתדרתי (לפחות עברתי עקומת לימוד בנושא ההתקנה של rest full api בשרת).
 
גם python יכול לשמש אותי לדברים נוספים - זה קוד cgi, ואני יכול לייצר services וכד'.
 
לא יודע למה לא מעט דוגמאות של django ו-flask מראים שימוש ב-virtual environment. אפשר גם בלי זה (אולי בשביל שיהיה אפשר "לארוז" בצורה יותר מסודרת. זה גם תפיסה קצת יותר מודרנית).
 
אגב, גם באנגולר - הסתדרתי וגם הרצתי תוכנית בסיסית עם עיצוב ועם פילטרים (זה גם עניין של החלטה. למה לא vue, למה לא react, ולמה לא בצד שרת ruby - הכל זה החלטות ... אין לזה סוף. אם לא מחליטים, לא מתקדמים ...).
 
תודה, בכל אופן.
לצפיה ב-'שמח לשמוע!'
שמח לשמוע!
09/10/2017 | 15:21
41
נקודה קטנה לגבי CentOS:
היא לא "בנויה על קוד התנדבותי".
 
יש הפצה מסחרית בשם RedHat שמתוחזקת ע"י חברה באותו שם.
כמובן, בגלל שכל הקוד חופשי, מה שהם מוכרים זה לא רישיונות מערכת הפעלה כמו MS, אלא רישיונות תמיכה.
הם לא זולים.
 
את הקוד כמובן ניתן לקבל חופשי, וזה מה שעושים חברי שמתחזקים את CentOS:
הם לוקחים את כל הקוד של RedHat כפי שהוא (שלא באמת שייך לחברה, כי מדובר בתוכנה חופשית שמפתחים כל מיני פרויקטים נפרדים כמו ה-kernel של Linux), מסירים משם כל אזכור לשם המסחרי "RedHat" ומפיצים את המערכת חופשי.
 
למה הם עושים את זה?
כל מיני סיבות.
ב-Ubuntu זה דווקא עובד הפוך: חברת Canonical לקחה פרויקט קהילתי וותיק, יציב, ומפורסם שנקרא Debian, פרויקט מאוד חזק גם עכשיו שמתאים להמון סביבות, סוגי מעבדים וכו', ובנתה עליו הפצה מסחרית שהיא מוכרת לה תמיכה.
 
בדיוק כמו RH הם לא יכולים למכור רישיונות למערכת הפעלה כי זה לא שלהם.
 
אני לא יודע אלו שמועות שמעת, אבל היות והקהילה של CentOS עובדת צמוד עם RH וזו לא הולכת לשום מקום, אין חשש בעתיד הנראה לעין של CentOS תעלם או לא תתעדכן.
 
כמובן, כמדיניות שהתחילה ב-RH, הם לא ממהרים להחליף גרסאות, אלא רק להפיץ עדכוני אבטחה, כי הם מאמינים שגרסאות ישנות יותר יציבות יותר ולכן עדיפות לשרתים.
 
אבל כלל האצבע הוא - תשתמש במה שמתאים לך.
 
virtual env באמת פופולרי. אני לא בטוח למה.
 
לגבי שרת פיתוח:
היום משחב שולחני עם מפרט נורמלי מאפשר בקלות להרים מכונה ווירטואלית לצורכי התעללות.
יש VirtualBox חינמי לחלוטין, ויש גרסה חינמית ל-VMWare.
 
בתוכם, אתה יכול להתקין את המערכת שאתה רוצה - Ubuntu, CentOS מה שלא יהיה, רק כדי לנסות כל מיני דברים, גם במחיר שבירת המערכת.
הקמה של דבר כזה היא עניין של דקות, וזה מצוין ללמידה.
 
בהצלחה בהמשך הדרך!
לצפיה ב-'mysql % python'
mysql % python
06/10/2017 | 15:01
13
28
הי.
מנסה להתחיל ללמוד קצת לעבוד עם google cloud app ב-webapp2.
יש לי טופס שבניתי ב-html ואני רוצה להכניס את המידע ממנו לתוך טבלה שבניתי במסד. 
לפי מה שקראתי, הבנתי שאני צריך לשמור את המידע מהשדה בתוך משתנה כלשהוא, ואז להשתמש ב-insert to.
בינתיים התהליך לא ממש עובד לי אז אני מנסה להבין אותו בחלקים...
 
בתמונה המצורפת יש הסבר שקראתי על הפונקציה get, שאמורה לשמור לי בתוך המשתנה שלי את המידע שהוזן ב-form. 
 
א. מה ההבדל בין החלק העליון, שבו שם השדה הוא ב ' ', לבין החלק התחתון בו שם השדה הוא ב " " ?
ב. ניסיתי לעשות את זה אצלי בקוד, ואני לא בטוח אם ה"משתנה" שלי באמת מאותחל למידע כפי שהוזן ע"י המשתמש באתר או לא, איך אני יכול לבדוק את זה? 
ג. נניח והמשתנה הזה מאותחל לתוכן שהוזן ע"י המשתמש באתר - איך אני משתמש בפונקציה insert to?
כי כשחיפשתי באינטרנט ראיתי מלא אפשרויות (עם ' ', עם " ", עם / / , ושאר סימנים מוזרים, שאף אחד מהם לא עבד לי..) 
 sql = 'insert into <table> (attribute_1) values (?????????);'
cursor.execute(sql)
db.commit()
 
 
תודה רבה!
לצפיה ב-'לא מכיר את webapp או cloud app אבל:'
לא מכיר את webapp או cloud app אבל:
06/10/2017 | 18:43
12
15
א. אין הבדל בין שימוש ב-" (גרש כפול) לשימוש ב-' (גרש בודד) בשפת Python.
שניהם מציינים מחרוזת.
 
ב. תלוי איך אתה מריץ את הקוד, אתה יכול להדפיס את תוכן המשתנה עם print.
אני רק לא יודע היכן תראה את התוצאה.
 
ג. לפי הדוגמה שהצגת, אתה צריך לדעת קצת SQL כדי לענות על השאלה הזו.
 
בגדול, מה שקורה כשהמשתמש לוחץ על כפתור "שלח" בטופס שלך, זה שהדפדפן בונה תשובה מכל השדות בטופס ושולח אותה לשרת.
 
ב-Cloud App יש קוד שמפרסר את התשובה, ומארגן את השדות בתוך אובייקט, שבסוף אתה מקבל בפונקציה post.
לאובייקט הזה יש מתודה get (השם טיפה מבלבל בהתחשב בנסיבות) שאתה אומר לה איזה שדה אתה רוצה (לפי שם שדה) והיא מחזירה לך את מה שהמשתמש הכניס שם, או כלום אם המשתמש לא הכניס שום דבר, או שלא היה בכלל שדה כזה בתופס.
 
אתה יכול להכניס את התוצאה למשתנה ולעשות איתה דברים, אבל לא חייב.
אתה יכול גם להשתמש בה ישירות, אם אתה בטוח שהתוצאה בסדר ולא רוצה לבדוק אותה.
 
אני לא בטוח אלו אפשרויות יש לך להכניס את המידע ל-DB, אבל בדוגמת קוד שהבאת נראה שאתה מנסה לבנות ישר שאילתת SQL מסוג INSERT.
 
יש עם זה בעיה גדולה:
אסור לעשות את זה אם אתה לא מנקה את הנתונים שקיבלת מהמשתמש.
 
אבל בוא נניח לזה בינתיים, אתה הרי רק מתחי ללמוד.
כדי לדעת מה למלא בשאילתה אתה צריך לדעת איך בנוי ה-DB שלך.
 
למשל, האם יצרת בו כבר טבלה, ואם כן מה השם שלה?
אלו עמודות יש בטבלה, והאם הן תואמות לשדות בתופס שאתה רוצה לשמור?
לצפיה ב-'הי'
הי
06/10/2017 | 20:03
11
12
תודה על התגובה.
 
לגבי השאילתא של ה-insert, יכול להיות שהכוונה לא הייתה ברורה.
אני מכיר את הפקודה insert ומבחינת הטבלה במסד - הכל תקין (כלומר הטבלה מוקמת, מכיר את שמות כל השדות וכו'..)
השאלה התמקדה ב-"?????" שהכנסתי לתוך ה-VALUE, כיוון שהבעיה הייתה כך:
נניח ויש לי משתנה id שאותחל על get וכעת מכיל את מספר תעודת הזהות שהמשתמש הכניס באתר, ונניח ואני רוצה להכניס את זה לתוך טבלה person לתוך השדה ID של הטבלה.
 
אז לא הצלחתי למצוא מהו הסינטקס שאיתו אני מכניס את id (מהאתר) לתוך ID של הטבלה.
כלומר
zz INSERT INTO person (ID) VALUE (id???) zz;
כיוון שראיתי תצורות סינטקס שונות של כתיבה בתוך ה-VALUE, לדוגמא:
כתיבת ערך בתוך:
zz '\ something \' zz
zz ' + something + ' zz
וכדומה, ואני לא ממש הצלחתי להבין את מהות הסינטקס הזה, ומהי צורת הכתיבה במידה ואני רוצה להכניס לתוך VALUE ערך שנשמר בתוך משתנה שאיתחלתי קודם (לדוגמא, להכניס את id כ-VALUE)  
לצפיה ב-'אז השאלה שלך היא איך מחברים מחרוזות ב-Python?'
אז השאלה שלך היא איך מחברים מחרוזות ב-Python?
06/10/2017 | 20:31
10
21
התשובה היא עם אופרטור חיבור +.
שים לב שבדוגמת קוד, משפט ה-SQL הוא בסה"כ מחרוזת שמאוחסנת במשתנה ואז נשלחת לפונקציה.
 
הדבר היחיד שאתה צריך לשים לב אליו, זה שערכים ב-SQL צריכים מעטפת של גרש בודד.
כאן, Python חוסך לך עבודה כי אתה יכול להשתמש בגרשיים לציון מחרוזת, ואז יהיה חוקי לשים גרש בודד בתוך המחרוזת עצמה.
 
לכן, הקוד שלך צריך להיראות משהו כזה:
 sql = "INSERT INTO person (ID) VALUE ('" + id + "');"
אני יוצא כאן מנקודת הנחה ש-get מחזירה את כל השדות בתור מחרוזת ולא מנסה לנתח אותם.
זה לא יעבוד עם id הוא מטיפוס int או אחר.
 
אם אתה רוצה משהו יותר אוניברסלי ובטוח, תצטרך להשתמש בפרמוט מחרוזות, שיטה דומה למה ש-printf עושה ב-C (ראיתי משרשור למעלה שאתה מכיר C):
 sql = "INSERT INTO person (ID) VALUE('%s');" % id
 
לצפיה ב-'נ.ב.'
נ.ב.
06/10/2017 | 20:36
12
בניגוד ל-C, שם יש להתאים את הטיפוס של הפרמטר למציין שאחרי %, ב-Python ההתאמה תבוצע אוטומטית, והאות אחרי % רק מציינת איך אתה רוצה להציג את המידע.
לצפיה ב-'קצת לא נעים ה SQL injection, בטח ש id זה user input.'
קצת לא נעים ה SQL injection, בטח ש id זה user input.
07/10/2017 | 14:44
7
8
לצפיה ב-'ובעברית..? '
ובעברית..?
07/10/2017 | 20:29
6
4
לצפיה ב-'בעברית: לך תדע מה המשתמש הכניס.'
בעברית: לך תדע מה המשתמש הכניס.
07/10/2017 | 20:35
5
17
יש שיטה מאוד פשוטה לפרוץ אתרים: היא נקראת SQL injection.
היא כ"כ פשוטה ומוכרת, שאפילו עשו עליה קומיקס:
 
אם אתה לא בודק מה המשתמש הכניס, וישר דוחף את זה לתוך שאילתת SQL שלך, משתמש זדוני יכול בלי שום מאמץ מיוחד לכתוב קוד SQL משלו במקום ת.ז. או שם שלו, ולעשות כל מה שהוא רוצה ל-DB שלך.
 
לא התעקשתי על נקודה זו כי אני מבין שאתה רק לומד, ולכן הקוד שכתבת הוא לניסיון בלבד, אבל כמובן זה משהו שצריך לשים לב אליו כמה שיותר מוקדם.
 
אני לא מכיר כאמור את Web App, אבל בד"כ יש כל מיני פונקציות שמייצרות את השאילתות במקומך, במקום שתבנה אותן ישירות ידנית, ואז על הדרך דואגות שהקלט שאתה מספק לא יתפרש לעולם כחלק מפקודת SQL.
 
לחלופין, יש פונקציות "snitize" שבודקות קלט ועושות escaping לכל תו בעייתי.
 
בכלל, א-ב של תכנות בכל שפה ובכל תחום זה לבדוק טוב טוב את הקלט של המשתמש ולא להסתמך שהוא הכניס מה שציפית שהוא יכניס.
לצפיה ב-'אה כן, ברור....'
אה כן, ברור....
07/10/2017 | 21:39
10
זה יכנס לתוך הקוד, פשוט רציתי קודם כל לראות שאני מצליח (ברמה העקרונית) לקלוט נתונים מהאתר ולהכניס אותם ל-DB, ועכשיו אחרי שהתהליך פחות או יותר עובד, אני אמשיך עם בדיקות המעטפת...
 
תודה!
לצפיה ב-'הי (שוב ) '
הי (שוב )
13/10/2017 | 22:22
3
6
שאלת המשך קטנה.
באחת הטבלאות יש לי שדה מסוג longblob, בו אני ארצה לשמור תמונות..
 
חיפשתי באינטרנט איך מתנהלים עם תמונה, וקראתי כי ניתן לשמור אותה בטבלה ע"י
  thedata = open('pic1.jpg', 'rb').read()
sql = "UPDATE mytable (picture) VALUES (%s)"
cursor.execute(sql, (thedata,))
 
הבעיה - כשאני מנסה להריץ את זה אני מקבל את הודעת השגיאה:
  No such file or directory: 'pic1.jpg'
 
אחת ההצעות באינטרנט הייתה לספק את הנתיב המלא, אך גם כאשר אני מבצע זאת אני מקבל הודעת שגיאה דומה:
  thedata = open('C:\Users\User\Desktop\pictures\pic1.jpg', 'rb').read()
sql = "UPDATE mytable (picture) VALUES (%s)"
cursor.execute(sql, (thedata,))
..........

No such file or directory: 'C:\\Users\\User\\Desktop\\pictures\\pic1.jpg'
אגב, מצאתי במקום נוסף באינטרט את קטע הקוד הבא:
 def read_file(filename):
with open(filename, 'rb') as f:
photo = f.read()
return photo

**************************************************

//this section is inside another function

data = read_file("C:\Users\User\Desktop\pictures\pic1.jpg")
query = "UPDATE mytable " \
       "SET picture = %s " \
       "WHERE catalog_num  = %s"
args = (data, catalog_num)
cursor.execute(query, args)
אך גם כאן אני מקבל את הודעת השגיאה כמו למעלה ולא כ"כ יודע איך להתקדם מכאן  
 
סוף שבוע טוב! 
לצפיה ב-'הסקריפט שלך רץ מקומית על המחשב שבו יושב קובץ תמונה?'
הסקריפט שלך רץ מקומית על המחשב שבו יושב קובץ תמונה?
13/10/2017 | 23:34
2
1
לצפיה ב-'אממ..אני לא בטוח אם התשובה היא "כן" כמו שחשבתי להגיד'
אממ..אני לא בטוח אם התשובה היא "כן" כמו שחשבתי להגיד
14/10/2017 | 13:40
1
6
כי הקוד כתוב ב-google cloud app, אז אני מניח שזה לא בדיוק לוקלי
(אבל בגדול, אני משתמש במחשב שלי כדי לנסות לבדוק את הסריפקט, כאשר התמונה כרגע היא פיזית על המחשב שלי...אם זה עוזר...למרות שהכוונה הסופית היא שזה יהיה נגיש מכל מחשב כי הכיוון הוא שמתמש (כלשהוא) יכניס לאתר את התמונה והיא תאוחסן במסד..)  
 
לצפיה ב-'אוי ואובוי!'
אוי ואובוי!
14/10/2017 | 14:13
4
אם אתה לא מבין את ההבדל בין לוקלי למרוחק, אתה מקום מאוד מוקדם!
אתה חייב להיסגר מה הסביבה שהקוד שלך חי בה, אחרת תתקל בעוד הרבה בעיות.
 
לוקלי, זה אומר שהסקריפט רץ על המחשב שלך ממש:
אתה מפעיל אותו ע"י הרצת python.exe במחשב שלך.
 
אם אתה מעלה את הסקריפט לשירות של Google או מחשב אחר, ואז ניגש אליו דרך דפדפן במחשב שלך, זה כבר הופך אותו למרוחק.
כי הסקריפט לא רץ על המחשב שלך, אלא רץ על השרת ורק התוצאה חוזרת אליך.
 
סקריפט pyhotn מעולם לא ירוץ מקומית אצל משתמשים כי דפדפנים לא מריצים python, רק JS.
 
ומה שזה אומר הוא, שמבחינת הסקריפט, כל כונן C שלך בכלל לא קיים!
הוא לא יכול לראות אותו או לגעת בקבצים שלו, וטוב שכך, אחרת כל אתר שאתה גולש אליו, מתפוז ועד Google עצמם, יכלו לגנוב כל דבר ששמרת על המחשב שלך בקלות.
 
הקוד שכתבת מנסה לפתוח קובץ מקומי שחייב להיות פיזית על המחשב שעליו רץ הסקריפט, וגם במקום נגיש מבחינת הרשאות.
(בתור משתמש Windows מפונק אתה גם כנראה לא מכיר נושא של הרשאות על קבצים, וזה לא כ"כ טוב, אבל נדבר על זה אחר כך אם צריך)
לצפיה ב-'מעולה, תודה רבה!!! '
מעולה, תודה רבה!!!
07/10/2017 | 20:28
2
לצפיה ב-'אתגר (בשבילי) בפייתון'
אתגר (בשבילי) בפייתון
06/10/2017 | 19:09
9
27
אני רוצה לאתגר את עצמי ונתקלתי באתגר שלא מצליח לחשוב על פתרון שעובד...
המטרה: תכנית מקבלת מהמשתמש משפט והתוכנית צריכה לספור כמה פעמים כל תו מופיע. למשל, למחרוזת "Hello world", הפלט יהיה:
H 1
e 2
l 3
o 2
w 1
r 1
d 1
מה שאני מנסה לעשות זה לבנות רשימה שהערכים שלה כרגע זה 0, וכל אות תוסיף במיקום של האות (לפי סדר ה- abc) 1, כך שיש ספירה. זה הקוד:
 str = "Hello world"
str = str.str.lower()
cnt_char = [0,0,0,0,0,0,0,0,0,0,
           0,0,0,0,0,0,0,0,0,0,
           0,0,0,0,0,0)

for char in str:
   cnt_char[char] += 1

print cnt_char
בעצם מה שאני רוצה במקרה הזה, בשביל האות הראשונה (h) שברשימה במיקום 8 (או 7 לפי פייתון) יתווסף ל- 0 1, כלומר הערך יהיה 1. במקרה של האות l (האות L) יהיה 2 בגלל שבהתחלה יש תוספת של אחד ואז עוד אחד, כך שזה 2.
 
ההודעה שאני מקבל:
 Traceback (most recent call last):
 File "C:/Users/Et/PycharmProjects/tirgul.py/tirgul.py", line 7, in <module>
   cnt_char[char] += 1
TypeError: list indices must be integers, not str
איך בעצם אני סופר כמות תווים במחרוזת?
לצפיה ב-'ניסיון עזרה: לא בטוח על פייתון, אבל אם זה כמו ב-c'
ניסיון עזרה: לא בטוח על פייתון, אבל אם זה כמו ב-c
06/10/2017 | 20:19
1
27
ובהנחה שאתה יודע כי הקלט שלך הוא עם אותיות קטנות בלבד, אז אתה יכול לנסות
 char - 'a'
שממיר לך את ה-char למספר בין 0 ל-25 ע"פ הערך האסקי שלו ביחס לערך האסקי של a..
 
שים לב שאם יש לך תו שהוא לא אות קטנה, אז אתה תמצא את עצמך חורג מהגבולות...
לצפיה ב-'זה לא יעבוד ב-Python.'
זה לא יעבוד ב-Python.
06/10/2017 | 20:40
25
בניגוד ל-C גרש בודד אינו מסמן תו בודד ב-Python, וגם אין בשפה טיפוס char שהשפה מתייחסת אליו כ-int קטן.
 
דוגמת הקוד שלך ב-Python מנסה לבצע חיסור בין מחרוזות (str) מה שכמובן יגרור שגיאה.
לצפיה ב-'אם אתה רוצה לאתגר את עצמך, למה אתה מפיל את הפתרון עלינו?'
אם אתה רוצה לאתגר את עצמך, למה אתה מפיל את הפתרון עלינו?
06/10/2017 | 20:19
6
29
נראה כאילו אתה מנסה לכתוב פתרון לפי כללים שהמצאת בעצמך, ולא לפי כללי שפת Python.
 
למה ואיך החלטת שאתה יכול להשתמש באותיות בתור אינדקס לתוך רשימה?
 
אני אתן לך רמז:
הפתרון הכי פשוט יהיה להשתמש במה שהסברתי לך בשרשור הקודם שפתחת פה.
התרגיל הזה הוא תשובה מצוינת לשרשור ההוא.
 
אפשר כמובן לפתור גם תוך שימוש ברשימה, אבל אז תצטרך ללמוד איך מחשב מייצג תווים.
לצפיה ב-'תגובה, והמשך אתגר :)'
תגובה, והמשך אתגר :)
07/10/2017 | 16:14
5
16
לא מפיל את הפתרון עליך. בהתחלה ניסיתי באמת עם מילונים, אבל כשישנתי על התגובה שלך (כן, כן, ראיתי אותה אתמול בלילה) אז קמתי עם פתרון אחר ממה שעשיתי וזה עובד!!! הקוד:
 str = "I am the best because i solved my challenge"
cnt_char= {"a":0,"b":0,"c":0,"d":0,"e":0,"f":0,"g":0,"h":0,"i":0,"j":0,
          "k":0,"l":0,"m":0,"n":0,"o":0,"p":0,"q":0,"r":0,"s":0,"t":0,
          "u":0,"v":0,"w":0,"x":0,"y":0,"z":0," ":0}

for char in str.lower():
   cnt_char[char] += 1

for key,value in cnt_char.items():
   if value!=0:
       print key, value
האמת? הגיוני לעשות את זה במילונים. אבל, אמרת שאשר לעשות את זה ברשימות... אז הנה אני מאתגר את עצמי שוב: איך אני עושה את אותו האתגר, הפעם בלי מילון אלא עם רשימות?
מה שאני לא מבין ברשימות, למה זה יוצר לי הודעת שגיאה? איך אני באותה רשימה עושה גם תו ("a") וגם מספר (0), ולאחר מכן מוסיף למספר 1? כפי שהראיתי בקוד הראשוני זה נותן קוד שגיאה.
 
אני לא מצפה לפיתרון מהפורום, אני מצפה לכיוון. חייב להגיד שכשאתה ספציפית נותן לי כיוון (לא יצא לי שאחר ענה לי) אז זה נותן לי דרך מחשבה.... זה מה שאני מחפש... אם תיתן לי את הפתרון אני לא אלמד.....
לצפיה ב-'יופי. מכאן אני יכול להסביר לך את מה שאתה צריך:'
יופי. מכאן אני יכול להסביר לך את מה שאתה צריך:
07/10/2017 | 17:42
20
ההבדל בין מילון לרשימה זה איך הם מסדרים את הנתונים:
"מילון" מאפשר לך לתת כל תווית שאתה רוצה לנתון, ואז למצוא את הנתון לפי אותה תווית.
 
וזה מה שעשית בתרגיל הנ"ל.
 
רשימה לאומת זאת, מאחסנת נתונים ברצף, ומאפשרת גישה אליהם אך ורק דרך "אינדקס" המספר הרציף לפיו אחסנת.
האינדקס מתחיל ב-0 ונגמר ב-"גודל רשימה פחות אחד".
 
עכשיו, אתה מעוניין לתת לכל אינדקס משמעות: לשייך אליו אות, כדי לדעת למשל שתא באינדקס 0 מאחסן את כמות ההופעות של אות a.
 
כלומר, אתה עכשיו רוצה לעשות בעצמך חלק מהעבודה שמילון עשה עבורך!
 
אז אתה צריך לחשוב על שיטה שתתרגם אות, למספר בצורה שעונה על התנאים הבאים:
1. עקבית - אות ספציפית תמיד תתורגם לאותו מספר בדיוק
2. חד חד ערכית - לא יהיו שתי אותיות שונות שיתורגמו לאותו מספר
3. רציפה - אותיות עוקבות לפי סדר הא-ב יתורגמו למספרים עוקבים בהפרשים של 1.
4. שמתחילה ב-0 כלומר, אות a תתורגם תמיד ל-0.
 
כאן, המחשב כבר עשה עבורך חלק מהעבודה, כי מחשב מייצג הכל בעזרת מספרים.
הא-ב האנגלי מיוצג לפי טבלת ASCII (יש דרכי ייצוג אחרות, וזאת קצת ישנה, אבל היא מתאימה ונכונה לתרגיל שלנו).
 
הטבלה הזו עונה על תנאים 1 עד 3: כל אות בה מיוצגת ע"י מספר ייחודי, והאותיות מסודרות לפי רצף הא-ב וכך גם המספרים.
הבעיה היחידה היא ש-a לא ממוקמת על 0.
 
אז, מה שאתה צריך זה לעשות 3 דברים:
1. לברר איך ב-python מקבלים את הייצוג המספרי של אות.
2. לבצע חישוב ש-"יזיז" (ינרמל) את המספרים של האותיות כך ש-a תתחיל ב-0.
3. להשתמש בתוצאות של 1 ו-2 בתור אינדקס לרשימה.
 
אני אחסוך לך את 1 - תקרא על פונקציה ord.
לגבי 2, שים לב! רווח אינו נמצא ברצף האותיות, לכן תצטרך להתחשב בזה כשאתה כותב את הקוד שלך.
לצפיה ב-'נקודה קטנה לגבי הפתרון שלך:'
נקודה קטנה לגבי הפתרון שלך:
07/10/2017 | 17:48
3
26
אתחלת את המילון ידנית, זה הרבה כתיבה מיותרת.
 
אם תקרא את התיעוד של "מילון" תראה שיש לו מתודה שימושית:
 
המתודה היא get.
מתודה זו מקבל 2 פרמטרים: הראשון תווית של הערך שאתה רוצה לשלוף, והשנייה ערך ברירת מחדל.
אם אתה משתמש במתודה הזו במקום סוגריים מרובעים [], הקוד שלך לא יקבל שגיאה גם אם לא קיים ערך עם תווית שאתה מבקש.
במקום זה, המתודה תחזיר את הערך ברירת מחדל שנתת לה.
 
נסה לחשוב איך להשתמש ב-get כדי לחסוך לעצמך את הכתיבה של כל האלפבת האנגלי, ועל הדרך למנוע מקוד שלך לקרוס אם במחרוזת שאתה בודק יש ספרות או סימני פיסוק.
 
(כי כרגע מספיק לשים נקודה בסוף משפט והקוד שלך ייפול עם שגיאה!)
לצפיה ב-'וואו, נתת לי הרבה שיעורי בית :)'
וואו, נתת לי הרבה שיעורי בית :)
07/10/2017 | 19:14
2
13
זה אומר שאני אשב על זה בימים הקרובים, ואנסה לפתור את זה :)
תודה רבה!
לצפיה ב-'אתה חושב שזה הרבה?'
אתה חושב שזה הרבה?
07/10/2017 | 20:14
1
21
למעשה, יש עוד שתי דרכים לפתור את התרגיל עם מילון בלי לאתחל את המילון, ועוד דרך לאתחל את המילון אבל תוך כתיבה של פחות תווים.
 
אחת הדרכים היא נושא נפרד מהמילון - טיפול ב-"חריגות" (exceptions).
 
אם זה באמת מעניין אותך, תעמיק בלימוד המילון ותמצא את הדרכים האלה.
לצפיה ב-'תודה :) מקציב לעצמי שבוע לכל הלמידה הזו,'
תודה :) מקציב לעצמי שבוע לכל הלמידה הזו,
07/10/2017 | 20:21
6
מקווה שאני אעמוד ביעד :)
 
לצפיה ב-'שילוב של mysql ב-grid ב-angular4.'
שילוב של mysql ב-grid ב-angular4.
03/10/2017 | 21:47
4
30
היי,
אני מעוניין לקרוא בקוד angular4 נתונים מ-mysql ולשים אותם ב-grid.
 
איך אני מבצע את הנ"ל?
אשמח לדוגמת קוד.
 
תודה.
לצפיה ב-'לפנות מצד לקוח לבסיס נתונים? לא עושים דברים ככה'
לפנות מצד לקוח לבסיס נתונים? לא עושים דברים ככה
03/10/2017 | 23:00
3
24
בונה restAPI שחושף את המידע שאתה צריך מהבסיס נתונים
פונה אליו ב HTTP מה client side שלך
לצפיה ב-'אפשר דרך ה-node js?'
אפשר דרך ה-node js?
04/10/2017 | 15:33
2
24
זה חייב להיות דרך web api?
אי אפשר דרך ה-node js? זה נראה לי עדיף (אנגולר4 ו-node js עובדים ביחד).
 
אם אפשר דרך ה-node js - רציתי לראות דוגמה לכך.

תודה.
לצפיה ב-'מה זאת אומרת עובדים ביחד? קרטל?'
מה זאת אומרת עובדים ביחד? קרטל?
04/10/2017 | 16:31
1
30
Angular רץ אצל הלקוח בדפדפן, אומנם אתה משתמש בכלים כמו nodejs ו npm ובשפת typescript כדי לכתוב את הקוד שלו, בסופו של יום הוא מתקמפל (עובר transpilation) ל JS שמבין הדפדפן ורץ אצל הלקוח בדפדפן. קריא - מהדפדפן של הלקוח לא אמורה להיות גישה לבסיס נתונים שלך כי זה אומר שהמפתחות לבסיס נתונים גם נמצאים אצל הלקוחות.
 
אתה לא חייב לכתוב webapi (כאילו asp.net) אתה יכול לכתוב גם בPHP, או ב nodeJS+express או ב ruby on rails או בגדול כל פריימוורק MVC שיהווה את התיווך בין הבסיס נתונים שלך לבין הצד לקוח בדמות restful api.
 
אה ודוגמאות קוד חביבי חפש באינטרנט, אני חי בעולם מקסים שבו אני כותב קוד ומקבל שכר. אבל אם תהיה לך בעיה כלשהי עם הקוד שכתבת - תשתף נעזור בחינם אין כסף.
לצפיה ב-'אז מה זה ה-ng serve?'
אז מה זה ה-ng serve?
05/10/2017 | 01:21
20
ng serve - אני משתמש לצורך עבודה תקינה עם אנגולר.
 
מרים שרת node server.js - האין זו גם אפשרות לעבוד עם node.js (שמהווה סקריפט בשרת בדומה ל-php ודומייו)?
 
אם כבר הוא מרים שרת node js, מה הטעם שאני לא אנצל זאת, ואשתמש בשרת node js, במקום להרים php או כל אחד אחר (אז, ניכר שה-node js מיותר ... ולמה הוא בהכרח מותקן עם התקנה סטנדרטית של אנגולר. לא נראה שאפשר להסיר אותו ועדיין לעבוד תקין עם אנגולר).
 
אני התקנתי visual studio code לעבודה נוחה עם אנגולר.
כחלק מההתקנה זה גם התקנה של node js server, ואך ורק באמצעות כך אני יכול בכלל להריץ משהו באנגולר שיעבוד.
 
נראה שפשוט זה יכול להיות ajax שמחזיר json אחד גדול (עם ה-data), ואז אני מבצע, אך איפה בא לידי ביטוי יכולות הניצול של ה-mvc.
 
מה שביצעתי ב-html:
  <table class="table table-striped">
 <tr>
   <th>
     Season
   </th>
   <th>
     Vacation
   </th>
 </tr>
 <tr *ngFor = "let item of allvalues | paginate: { itemsPerPage: 10, currentPage:p }">
   <td>
     {{item.Name}}
   </td>
   <td>
     {{item.Vacation}}
   </td>
 </tr>
</table>
<pagination-controls (pageChange)="p=$event"></pagination-controls>
ב-type-script:
  import { Component, OnInit, Output, EventEmitter } from '@angular/core';
import { TestHttpServiceService } from '../test-http-service.service';

class SeasonClass
{
 Name: string;
 Vacation: boolean;
}

class AllSeasons {
 Seasons: SeasonClass[];
}

@Component({
 selector: 'app-about',
 templateUrl: './about.component.html',
 styleUrls: ['./about.component.css'],
 providers: [ TestHttpServiceService ]
})

export class AboutComponent implements OnInit {
 allvalues=[];
 AllSeasonsObj: AllSeasons;
 @Output() onSuggest: EventEmitter<string> = new EventEmitter();
//  Service
 constructor(private _service: TestHttpServiceService) { }

 ngOnInit() {
   var str: string;
   this.onSuggest.subscribe((sub: string) =>
   {
    this.AllSeasonsObj =  JSON.parse(sub) as AllSeasons;
    this.allvalues = this.AllSeasonsObj.Seasons;
   });
   this._service.GetTestStr(this.onSuggest);
 }
}
וכן ב-test (ה-service):
  import { Injectable, Output, EventEmitter } from '@angular/core';
import { Http } from '@angular/http';

@Injectable()
export class TestHttpServiceService {

 constructor(private _http: Http) { }

public GetTestStr(ev: EventEmitter<string>) {
   var str: string;
   str = "xxx";
   setTimeout(function() {
   }, (1000));
   
   this._http.get("assets/testxx.json").subscribe((sub) =>
     {
       // str = JSON.stringify(sub.text());
       str = sub.text();
       console.log(str);
       ev.emit(str);
     }
   );
 }
}
ב-service אני אקרא לקוד אחר (למשל במקום http.get וכו', אוכל לקרוא ל-rest api שמחזיר json אחד גדול ולתרגם אותו, ואני יכול גם קוד של ajax - זה מוכר, וזה לא העניין העיקרי.
אך נראה שה-angular קצת יותר מסודר מהנ"ל, ואני לא ראיתי משהו של node.js שקורא ל-mysql (אם כך, למה ה-ng serve, אם אני בכלל אשתמש ב-ruby או ב-python. השמיים הם הגבול).
 
בקיצור - מהי הדרך המקובלת לבצע התנהגות שרתית בעבודה עם angular גירסה 4 (והכי חשוב!!! לא 1, ששונה מהותית מ-2 ומ-4)?
לצפיה ב-'ValueError: too many values to unpack (expected 5)'
ValueError: too many values to unpack (expected 5)
02/10/2017 | 15:28
15
35
מנסה להריץ סקריפט בפייתון 3.5 ומקבל את הודעת השגיאה הבאה
 
 ValueError                                Traceback (most recent call last)
<ipython-input-1-69687b0ea129> in <module>()
   328 for i in range(1, iterations):
   329     #compute predicted next word
--> 330     RNN.forwardProp()
   331     #update all our weights using our error
   332     error = RNN.backProp()

<ipython-input-1-69687b0ea129> in forwardProp(self)
    54         for i in range(1, self.rl+1):
    55             self.LSTM.x = np.hstack((self.ha[i-1], self.x))
---> 56             cs, hs, f, c, o = self.LSTM.forwardProp()
    57             #store computed cell state
    58             self.ca[i] = cs

ValueError: too many values to unpack (expected 5)
 
בתודה מראש
לצפיה ב-'ואתה מצפה שננחש?'
ואתה מצפה שננחש?
02/10/2017 | 21:20
14
21
נראה שאתה מנסה לפרוס tuple, אבל כמות הערכים שאתה מצפה להם (cs hs f c o) לא תואמת לכמות הערכים שיש ב-tuple ש- self.LSTM.forwardProp() מחזירה.
 
עד כאן מה שהשגיאה אומרת.
 
כדי להבין למה זה קרה לך, אנחנו צריכים לדעת מה זה LSTM.
ומה עושה מתודה forwardProp שלו.
 
היות ואנחנו לא יודעים, לא נוכל לעזור...
לצפיה ב-'הקוד במלואו :'
הקוד במלואו :
02/10/2017 | 22:15
13
21
 
לצפיה ב-'לא נקלט כנראה בשל אורכו'
לא נקלט כנראה בשל אורכו
02/10/2017 | 22:20
12
20
אז בקיצור :
 class LSTM:
   # LSTM cell (input, output, amount of recurrence, learning rate)
   def __init__ (self, xs, ys, rl, lr):
       #input is word length x word length
       self.x = np.zeros(xs+ys)
       #input size is word length + word length
       self.xs = xs + ys
       #output
       self.y = np.zeros(ys)
       #output size
       self.ys = ys
       #cell state intialized as size of prediction
       self.cs = np.zeros(ys)
       #how often to perform recurrence
       self.rl = rl
       #balance the rate of training (learning rate)
       self.lr = lr
       #init weight matrices for our gates
       #forget gate
       self.f = np.random.random((ys, xs+ys))
       #input gate
       self.i = np.random.random((ys, xs+ys))
       #cell state
       self.c = np.random.random((ys, xs+ys))
       #output gate
       self.o = np.random.random((ys, xs+ys))
       #forget gate gradient
       self.Gf = np.zeros_like(self.f)
       #input gate gradient
       self.Gi = np.zeros_like(self.i)
       #cell state gradient
       self.Gc = np.zeros_like(self.c)
       #output gate gradient
       self.Go = np.zeros_like(self.o)




--------------------------------------------------------------------------

   def forwardProp(self):
       for i in range(1, self.rl+1):
           self.LSTM.x = np.hstack((self.ha[i-1], self.x))
           cs, hs, f, c, o = self.LSTM.forwardProp()
           #store computed cell state
           self.ca[i] = cs
           self.ha[i] = hs
           self.af[i] = f
           self.ai[i] = inp
           self.ac[i] = c
           self.ao[i] = o
           self.oa[i] = self.sigmoid(np.dot(self.w, hs))
           self.x = self.eo[i-1]
       return self.oa
  
 
 
לצפיה ב-'טוב, זה די מסביר את העניין:'
טוב, זה די מסביר את העניין:
03/10/2017 | 01:04
11
22
הקוד שלך לא הגיוני בעליל!
 
בבנאי (init) אתה מקבל את rl כפרמטר, שישמש כמונה לולאה.
אבל ב-forwardProp אתה יוצא מנקודת הנחה שכמות המעברים בלולאה היא תמיד קבוע, ותמיד 5 בדיוק.
 
בנוסף, לא ברור היכן עוד מתבצע אתחול של oa.
זה לא קורה בבנאי, אבל ברור שהוא מתבצע היכן שהו, אחר היית מקבל שגיאה שונה, שחסרים לך אלמנטים לפרוק.
 
אני באמת לא יודע מה אתה מנסה לעשות פה, אבל הקוד נראה בעייתי ביותר ולא הגיוני.
 
זה קוד שאתה כתבת?
תרגיל?
 
או שאתה מנסה להיעזר בקוד של מישהו אחר לחישוב כלשהו?
 
אולי אם תפרט יותר ניתן יהיה לעזור...
 
אני יכול לתת לך דרך לעקוף את השגיאה:
 def forwardProp(self):
       for i in range(1, self.rl+1):
           self.LSTM.x = np.hstack((self.ha[i-1], self.x))
           cs, hs, f, c, o = self.LSTM.forwardProp()[:5]
 
אבל רוב הסיכויים שהתוצאות שתקבל מהקוד שלך לא יהיו התוצאות שאתה רוצה, כי החישוב לא יהיה נכון לוגית.
וייתכן שתתקל בעוד שגיאות.
לצפיה ב-'לא נכתב על ידי'
לא נכתב על ידי
03/10/2017 | 08:24
9
21
הקוד המלא ניתן להורדה מכאן:
לצפיה ב-'כן ו...?'
כן ו...?
03/10/2017 | 18:19
8
14
תראה, גם אם היינו רוצים להשקיע זמן ולתקן לך קוד ממקור עלום, היות ואין לנו שום דרך לדעת מה הקוד אמור לעשות ומה אתה מצפה ממנו, לא היינו יכולים לעזור לך.
 
לא ברור לי למה אתה מסרב לשתף פרטים, אבל אם אתה מצפה לקבל עזרה בפורום, תצטרך לספר לנו מה אתה עושה.
אם אתה לא יכול או לא רוצה, חפש עזרה במקום אחר.
 
דרך הפורום - אפשר לעזור רק למי שמסביר במדויק מה הוא מנסה לעשות ומה הבעיה שהוא נתקל בה.
קישור להורדה של קוד כלשהו לא אומר לנו כלום.
לצפיה ב-'תארתי לעצמי שההערות בגוף הקוד מבהירות'
תארתי לעצמי שההערות בגוף הקוד מבהירות
03/10/2017 | 20:40
7
14
את מטרתו.
בכל מקרה יותר פרטים אפשר למצוא ב tutorial :
https://github.com/llSourcell/LSTM_Networks/blob/m...
 
לצפיה ב-'וכמה אתה משלם למומחה?'
וכמה אתה משלם למומחה?
03/10/2017 | 20:50
6
22
שאני אבין: אתה מנסה לעשות משהו עם "רשתות עצביות", נושא מורכב למדי.
 
לקחת קוד שאתה לא מכיר ולא מבין, ועכשיו אתה מצפה שאנשים שמשתתפים בפורום בהתנדבות בזמנם החופשי ילמדו את הפרויקט המורכב שמצאת, ימצאו מה לא בסדר בו, יתקנו את זה, ויתנו לך פתרון על מגש כסוף בחינם?
 
שיהיה לך לבריאות!
 
בכל מקרה, הבאת לי קוד לא נכון בפעם הקודמת.
רפרוף מהיר בדוגמה מהקישור האחרון שלך מראה שהפונקציה forwardProp במחלקה LSTM מחזירה 6 אלמנטים.
באותה דוגמה, הקריאה לפונקציה גם מצפה לקבל 6 אלמנטים:
 cs, hs, f, inp, c, o = self.LSTM.forwardProp()
לא יודע למה אצלך בחרת למחוק אחד מהם והנחת שזה פשוט יעבוד...
 
אני לא מבין ברשתות עצביות, ולא מכיר את הפרויקט שהבאת פה בגרוש, אבל ברור לי לחלוטין שאתה מנסה לקפוץ מעל הפופיק, וצריך עזרה מאיש מקצוע צמוד.
 
אני לא חושב שתמצא אחד בפורום הזה, אבל שיהיה בהצלחה...
לצפיה ב-'לא מחקתי דבר'
לא מחקתי דבר
03/10/2017 | 21:02
5
10
הודעת השגיאה כוללת :
 cs, hs, f, c, o = self.LSTM.forwardProp()

נסה ותיווכח.
מעבר לכך מטרת הקוד לא רלוונטית לעצם השאלה.
תודה על העזרה בכל מקרה.
לצפיה ב-'תסתכל על שורת הקוד בהודעתי הקודמת!'
תסתכל על שורת הקוד בהודעתי הקודמת!
03/10/2017 | 22:20
4
14
היא לקוחה מה-tutorial שאתה עצמך קישרת אליו!
שם מופיע משתנה inp בין f ל-c.
 
אצלך הוא חסר וזה מה שגורם לשגיאה.
 
ואתה לא שאלת שאלה!
אתה הצגת חתיכת קוד והודעת שגיאה.
 
אם רוצים לדעת איך לתקן נכון את השגיאה, צריך להבין מה הקוד עושה, כדי לדעת מה יהיה קוד נכון ומה יהיה קוד לא נכון.
 
אז מטרת הקוד מאוד רלוונטית לשאלה.
אחרת, קח את התיקון שהצעתי לך לפני 2 הודעות. הוא יתקן את השגיאה.
ואם מטרת הקוד לא רלוונטית, אז בטח לא אכפת לך מהתוצאה שתקבל בסוף. העיקר לא תהיה לך שגיאה...
לצפיה ב-'שוב :'
שוב :
03/10/2017 | 22:38
3
13
 cs, hs, f, inp, c, o = self.LSTM.forwardProp()
מופיע גם אצלי בקוד,ראה:
 
עם זאת:
 cs, hs, f, c, o = self.LSTM.forwardProp()
מופיע בהודעת שגיאה (ראה ההודעה הראשונה בשירשור).
לצפיה ב-'לא, זה לא מה שמופיע אצלך בקוד!'
לא, זה לא מה שמופיע אצלך בקוד!
03/10/2017 | 22:42
2
17
תסתכל בשורה 56 בקובץ שהעלית, ותראה שמופיע שם בדיוק אותה שורה שמופיעה בהודעת השגיאה.
 
הבעיה שלך היא קוד דפוק.
כדי לתקן אותו, צריך להכיר את הפרויקט ולהבין למה הוא דפוק, מה הוא אמור לעשות, ולפי זה לתכנן גרסה לא דפוקה שלו.
לצפיה ב-'ok , הבעיה נפתרה, לפחות עד הבאג הבא'
ok , הבעיה נפתרה, לפחות עד הבאג הבא
03/10/2017 | 23:02
1
13
שורה 56 צריכה להיות זהה לשורה 138
לצפיה ב-'הטעות היא של מחבר הקוד בכל מקרה'
הטעות היא של מחבר הקוד בכל מקרה
03/10/2017 | 23:04
3
לצפיה ב-'הקוד הזה מקפיץ בדיוק את אותה השגיאה אם forwardProp'
הקוד הזה מקפיץ בדיוק את אותה השגיאה אם forwardProp
03/10/2017 | 22:21
16
מחזירה פחות מ- 5 אלמנטים.
 
עריכה: עכשיו ראיתי שהבעיה שלו היא אם forwardProp מחזירה יותר מ- 5..
לצפיה ב-'PHP'
PHP
30/09/2017 | 16:54
12
34
לאיודע אם זה המקום לשאול, אבל האם אפשר להתקין שרת אפאצ'י על ווינדוס 10, או שצריך דרייברים\פלאגינים כלשהם או להחליף מערכת הפעלה לווינדוס 8 ?
הורדתי את השרת הזה, לא היו בעיות עם ההורדה וההתקנה, אבל אני לא מצליח להריץ קוד ב-PHP.
לצפיה ב-'PHP זו תוכנה נפרדת משרת Apache.'
PHP זו תוכנה נפרדת משרת Apache.
30/09/2017 | 21:06
9
29
אז אתה צריך להוריד ולהתקין אותה בנפרד.
 
להלן מדריך:
 
לא בדקתי אותו כי אני לא משתמש ב-Windows, אבל נראה סביר.
 
בהצלחה!
לצפיה ב-'העניין הוא'
העניין הוא
02/10/2017 | 09:07
8
17
שהתקנתי את XAMPP על המחשב, שכולל בתוכו את אפאצ'י ואת PHP ואף את MYSQL, אבל אני לא מצליח להריץ קוד PHP על המחשב.
רק פה אני תקוע.
לצפיה ב-'סבבה לך, ומה זה בדיוק "לא מצליח"?'
סבבה לך, ומה זה בדיוק "לא מצליח"?
02/10/2017 | 12:40
7
16
הפתרון הפשוט ביותר כמו שפרסאוס כתב לך להפסיק להשתמש ב-Windows.
רק בעיות יש עם מערכת הפעלה הזו.
 
לפתרון אחר, תצטרך לספר לנו איך בדיוק אתה מנסה להריץ קוד PHP ומה השגיאה שאתה מקבל.
לצפיה ב-'או קיי'
או קיי
02/10/2017 | 14:14
6
14
אז ככה :
 
אני מריץ קוד פשוט שהולך ככה :
php?>
echo "Hello."
<?
מריץ אותו דרך דפדפן פיירפוקס, ולא רואה כלום על המסך.
כמו כן, כשבתיקיית ה-HTDOCS פתחתי את מסמך INDEX, הוא כותב לי :
<?php
    if (!empty($_SERVER['HTTPS']) && ('on' == $_SERVER['HTTPS'])) {
        $uri = 'https://';;
    } else {
        $uri = 'http://';;
    }
    $uri .= $_SERVER['HTTP_HOST'];
    header('Location: '.$uri.'/dashboard/');
    exit;
?>
Something is wrong with the XAMPP installation
 
אגב, כשהיה לי ווינדוס 7, הרצתי קוד PHP בלי שום בעיה, רק שהמחשב התקלקל, נמסר לתיקון והטכנאי התקין לי במקומו ווינדוס 10.
לצפיה ב-'איך אתה מריץ את הקוד?'
איך אתה מריץ את הקוד?
02/10/2017 | 20:57
5
18
ממש טכנית, מה הפעולות שאתה עושה?
לצפיה ב-'למקרה שלא ברור'
למקרה שלא ברור
02/10/2017 | 21:10
4
14
אז אני מריץ את הקוד על עורך טקסט מסוג NOTEPAD++, וכותב בו את מה שכתבתי בתגובה הקודמת, ומשם מריץ דרך פיירפוקס.
לצפיה ב-'כלומר, אתה פותח את הקובץ ששמרת מ-notepad ישירות מהדפדפן?'
כלומר, אתה פותח את הקובץ ששמרת מ-notepad ישירות מהדפדפן?
02/10/2017 | 21:22
3
18
למה שזה יעבוד לך? דפדפן לא אמור להריץ PHP.
 
כדי שהקוד ירוץ, אתה צריך לשים את קובץ ה-PHP בספריה מתאימה של Apache, לוודא ש-Apache מאזין ועונה על localhost ואז מהדפדפן לגלוש ל-localhost.
 
האם עשית את כל אלה?
לצפיה ב-'לא'
לא
03/10/2017 | 11:42
2
12
לא ידעתי את זה.
עכשיו, באיזו ספריה מתאימה של אפאצ'י לשים ?
ואיך מוודאים שהוא מאזין ועונה על LOCALHOST ?
לצפיה ב-'אני אנסה קצת להבהיר את הסביבת עבודה.'
אני אנסה קצת להבהיר את הסביבת עבודה.
03/10/2017 | 11:52
1
21
יש דברים שנעשים בצד לקוח על ידי הדפדפן: הצגה של ה-html והרצה של JavaScript.
 
יש דברים שנעשים בצד שרת על ידי שרת http (שרת web, למשל apache): עיבוד של שפות צד שרת, כגון php, ושליחת התוצאה (html + JavaScript) לצד לקוח.
 
בד"כ כשמתקינים שרת http (כמו apache) הוא אוטומאטית רץ ומקשיב ל-port 80. את זה תוכל לבדוק ע"י גלישה ל-http://localhost בדפדפן שלך ולראות אם אתה רואה דף שאומר "Welcom to Apache" או משהו דומה.
 
למיטב זיכרוני השרת הזה שם ספריית C:\wwwroot או משהו דומה ושם יש ספריית htttpdoc או משהו דומה ובתוכה יש index.html שזה הדף שאומר "Welcome to Apache".
 
אני לא לגמרי סגור על כל הפרטים. תוכל לחפש ברשת windows apache installation guide שאני מניח שהשלבים האחרונים של כזה מדריך יהיה לבדוק שהכל למעלה ועובד.
 
אם הכל עובד, תוכל לשים קבצים עם סיומת php בתוך httpdoc ואז לבקש אותם בכתובת של הדף, לדוגמא: http://localhost/myfile.php.
לצפיה ב-'חדשות טובות'
חדשות טובות
03/10/2017 | 19:01
15
הסתדר העניין אחרי צפייה בסרטון הזה, עשיתי מה שנאמר שם והכל הסתדר.
לצפיה ב-'מצטרף לברבומן'
מצטרף לברבומן
01/10/2017 | 04:16
24
קח המלצה ידידותית:
עבור ללינוקס. במיוחד לפיתוח ווב.
תודה לנו אח"כ.
לצפיה ב-'אני לא מצליח להתקין עדכונים על המחשב שלי'
אני לא מצליח להתקין עדכונים על המחשב שלי
02/10/2017 | 11:55
27
אתה יכול לעזור לי?
 
כמובן שלא, כי לא סיפקתי שום פרטים.
 
* מה אתה עושה? (טכנית, רד לפרטים)
* מה אתה מצפה שיקרה?
* מה קורה בפועל?
לצפיה ב-'Matlab'
Matlab
01/10/2017 | 15:58
4
26
שלום,
אני רוצה לבנות תוכנית ב-matlab שעושה כמה חישובים.  את התוכנית אני צריך לייצא את זה ל- DLL שהשימוש ב-DLL יהיה מתוך מערכת .net.
הבעיה בה נתקלתי - אני לא יודע איזה רכיבים של matlab עלי לקנות. 
מישהו יכול לכוון?
לצפיה ב-'זה נראה קישור דיי מפורט:'
זה נראה קישור דיי מפורט:
01/10/2017 | 17:23
21
לצפיה ב-'לא נתת רקע אבל שקלת אלטרנטיבות?'
לא נתת רקע אבל שקלת אלטרנטיבות?
01/10/2017 | 21:38
2
10
לצפיה ב-'אני מחפש תפרון'
אני מחפש תפרון
02/10/2017 | 01:43
1
17
בתחום שאני לא מכיר.
יש לי ידע ומומחיות בעולם המיקרוסופט. ב .net בפרט.
יש אלגוריתם מסויים שניתן לממש ב matlab (לא אני אממש אותו אלא מישהו אחר).
אני מכיר את התהליך של ייצוא dll עבור .net  
אבל בשביל זה צריך לרכוש רשיון של matlab וזה טיפה יקר (40 אלף שח... כן גם אני לא האמנתי).
אבל אולי לצורך בנית ה dll מתוכו לא נדרשת כל החבילה אלא חלק מסויים בלבד (sdk?).
וזאת השאלה - מה המודול שעלי לרכוש מהמשווק (הבלעדי) בארץ. אני לא מסוגל לשלם את העלות המלאה.
תודה מראש.
לצפיה ב-'אני לא מכיר את כל הסיפור אבל'
אני לא מכיר את כל הסיפור אבל
02/10/2017 | 08:40
14
הפתרון המקובל (ואיך ש-99% מהתעשייה עובדת) הוא לא לממש את האלגוריתם במטלב אלא בשפה אחרת. אם מי שכותב לך את האלגוריתם לא יודע לעשות את זה (שזה משהו שאפשר לדעתי לסבול רק אם מדובר באיזה מומחה יחיד במינו לנושא), גם לשלם למישהו שיעשה את זה עדיין יכול לצאת יותר זול מלקנות קומפוננטות יקרות של מטלב. מה בדיוק אתה מקבל ממי שכותב את האלגוריתם? קבצים עם קוד?
האופציות כמו שאני רואה אותן מבחינת סדר עדיפות:
1. לכתוב את האלגוריתם בשפה אחרת (בפרט - אם מדובר בתחומים של עיבוד אות/תמונה, ראייה ממוחשבת או ML באמת שזו לא אמורה להיות בעיה)
2. לראות אם אתה מצליח לקבל את הפונקציונליות שאתה רוצה עם Octave - זה מימוש קוד פתוח חינמי של מטלב, אם האלגוריתם רץ שם כמו שצריך (וזה כנראה תלוי באיזה חבילות ספציפיות משתמשים) אז אולי תוכל לעשות עם זה משהו - גגל ובדוק את הדוקומנטציה אם ניתן לעשות את מה שאתה רוצה.
3. לזרוק המון כסף על מטלב (ולהתקע איתה לנצח)  
לצפיה ב-'מילונים בפייתון'
מילונים בפייתון
30/09/2017 | 13:29
5
27
כמה שאלות שלא ברורות לי בפייתון, בנושא מילונים:
1. מה הצורך בזה? למה לא לעשות רשימה ופשוט לדעת שיש לרשימה מפתחות וערכים- מה שנותן גישה קלה יותר, אפשר להציג רק חלק מהנתונים ועוד יתרונות...
2. האם ניתן לתת למפתח אחד מספר ערכים? נגיד תעודת זהות וכתובות שגר בהם...
3. יש את הקוד הבא:
 grades = {'foo': 80, 'bar': 90}
for (name, grade) in grades.items():
print 'The grade of ' + name + ' is ' + str(grade)
באופן כללי אני יודע שכל לולאת FOR עושה לולאה על משתנה אחד, ופה יש כאילו שתי לולאות על שני משתנים.... מה קורה פה? איך זה יכול להיות?
 
תודה רבה לעונים!!
לצפיה ב-'תשובות:'
תשובות:
30/09/2017 | 21:12
4
26
1. "מילון" הוא מבנה נתונים שלא קשור ספציפית ל-Python ולא ייחודי לשפה.
Python פשוט נותן מימוש פשוט ונוח שלו.
 
למה זה טוב?
לכל מצב שאתה צריך לאחסן ולשלוף ערכים לפי מפתח בצורה מהירה ויעילה.
 
להסבר רחב יותר ממליץ לך על קורס "מבני נתונים".
 
2. לא. הרעיון במילון הוא שלכל מפתח יש ערך אחד.
אבל, הערך הזה יכול להיות מבנה נתונים בעצמו, למשל מילון, רשימה, או tuple.
 
3. אין פה שתי לולאות.
יש פה לולאה אחת שעוברת על רשימת ערכים מסוג tuple.
tuple הוא קבוצת ערכים לא קשורים, שיכולים להיות אפילו מטיפוס שונה, שניתנת לפירוק בקלות בשפת python.
 
למידע נוסף, קרא כאן:
לצפיה ב-''
01/10/2017 | 04:13
4
לצפיה ב-'תודה על התשובה'
תודה על התשובה
01/10/2017 | 08:12
2
11
מודה שהמטבע לא נפל עד הסוף אבל אני מניח שכשאני אבין לעומ מבני נתונים אני אבין את התשובה שלך עד תומה.
 
בכל מקה תודה!
לצפיה ב-'תראה, בדוגמאות שהצגת כאן כרגע,'
תראה, בדוגמאות שהצגת כאן כרגע,
01/10/2017 | 13:15
1
20
אתה עובר על מילון ועל רשימה בלולאה, ולכן לא ממש אכפת לך איך מסודרים הערכים.
 
אבל תחשוב שאתה כותב תוכנת מוסך.
יש לך מבנה נתונים שמייצג מכונית.
במבנה יש עשרות נתונים שונים על המכונית הספציפית.
 
במסך אחד אתה רוצה להציג את הלוחית של המכונית, ובמסך אחר דווקא חשוב לך להציג את האודומטר.
 
עכשיו, תחשוב איך תיגש לנתונים האלה אם הם מאוחסנים ברשימה, לאומת איך תיגש אליהם אם הם נמצאים במילון, ותראה דוגמה פשוטה וטריוואלית שממחישה למה צריך מבנים שונים למקרים שונים.
לצפיה ב-'תודה, הבנתי! :)'
תודה, הבנתי! :)
01/10/2017 | 20:12
2
לצפיה ב-'SyntaxError: invalid syntax'
SyntaxError: invalid syntax
30/09/2017 | 20:08
2
25
אני מקבל:
SyntaxError: invalid syntax
על:
 for i range(1,self.rl+1):
בפייתון 3.5
בתודה מראש

 
לצפיה ב-'שקלת להשתמש ב-in?'
שקלת להשתמש ב-in?
30/09/2017 | 21:04
1
6
לצפיה ב-'טיפשות לעולם חוזרת . תודה .'
טיפשות לעולם חוזרת . תודה .
30/09/2017 | 22:14
4
לצפיה ב-'מה זה HANDLE'
מה זה HANDLE
21/09/2017 | 08:42
15
27
לצפיה ב-'ידית'
ידית
21/09/2017 | 12:35
2
36
צריך קצת הקשר בשביל לומר יותר
לצפיה ב-'ההקשר הוא במערכת הפעלה חלונות'
ההקשר הוא במערכת הפעלה חלונות
21/09/2017 | 15:40
1
12
לצפיה ב-'זה ID שמעבירים למערכת ההפעלה בקריאות לפונקציות שלה.'
זה ID שמעבירים למערכת ההפעלה בקריאות לפונקציות שלה.
22/09/2017 | 14:14
17
ה-ID הזה מזהה משאב שאתה מבקש ממערכת ההפעלה לעשות משהו איתו. אתה קיבלת אותו מקריאה קודמת לפונקציה של מערכת ההפעלה שבה ביקשת ליצור משאב.
 
זה יכול להיות קובץ, socket, חלון, כל דבר ש-windows יודעת ליצר ולנהל.
 
 
לצפיה ב-'מצביע לvoid'
מצביע לvoid
21/09/2017 | 16:24
10
30
typedef void *HANDLE;
לצפיה ב-'אז זה סתם מצביע למקום בזכרון ?'
אז זה סתם מצביע למקום בזכרון ?
21/09/2017 | 17:59
9
33
למה קראו לזה "ידית"? למה לא קוראים לילד בשמו - מצביע ( פוינטר)?
האם אני יכול לגשת לזכרון שאליו הוא מצביע  ? 
 
 
 
לצפיה ב-'אל תגיד לי שהצצת מחוץ ל-MFC אחרי כל השנים האלא? '
אל תגיד לי שהצצת מחוץ ל-MFC אחרי כל השנים האלא?
21/09/2017 | 20:38
8
34
HANDLE הוא שיטה של Win32 API להתייחס לאובייקטים שהמערכת מנהלת בשבילך.
 
למשל, כשאתה מבקש מהמערכת ליצור חלון (CreateWindow) אתה מקבל חזרה HANDLE שהוא ערך מזהה מיוחד של המערכת עבור אותו חלון, ותוכל להעביר אותו לכל פונקציה אחרת שתטפל בחלון הספציפי.
 
הרבה מה-API של Windows משתמשים בשיטה הזו.
למשל, CreateFile, או פונקציות הקצעת זיכרון של Windows (שכרגע שכחתי את שמן) אשר במקום כתובת (כמו malloc) מחזירות HANDLE לאובייקט זיכרון, ויש איזו שיטה (שגם אותה שכחתי כי שנים לא פיתחתי ל-windows) לקבל את הכתובת ממש.
 
אז לא - HANDLE הוא לא סתם מצביע, ואין להתייחס אליו ככזה, אבל הוא בהחלט "ידית" - דרך שלך "לתפוס" אובייקט תחת ניהול של מערכת הפעלה, ולבצע עליו פעולות שונות.
 
למיטב זיכרון, ואל תתפוס אותי במילה כאן כי כאמור עבר הרבה זמן מאז שהתעסקתי עם זה, המערכת מנהלת טבלאות דרכן היא מקשר בין HANDLE נתון למשאבים שלו, כגון זיכרון מוקצה.
לצפיה ב-'אז זה לא באמת מצביע ?'
אז זה לא באמת מצביע ?
21/09/2017 | 21:04
7
31
 
אני יודע שזה דרך "לתפוס" אוביקט של המערכת,  אבל מה זה בעצם ? האם זה אינדקס לטבלה ?
איך המערכת ההפעלה  מקשרת בינו לבין האוביקט ?
לצפיה ב-'הוא לא מצביע, הוא ערך המשמש לחיפוש בטבלה פנימית של מערכת'
הוא לא מצביע, הוא ערך המשמש לחיפוש בטבלה פנימית של מערכת
21/09/2017 | 22:14
6
29
הפעלה.
(לא ממש אינדקס רציף כמו במערך)
 
ראה תיאור קצר כאן:
 
למיטב ידיעתי, המימוש של הטבלאות האלה וכיצד הערכים בהן מנוהלים הוא מידע פנימי של MS שמעולם לא פורסם.
אם תחפש, כנראה תמצא אנשים שעשו לזה הנדסה לאחור.
לצפיה ב-'אוקי תודה'
אוקי תודה
22/09/2017 | 07:49
5
28
אז אני מבין שאנחנו לא יודעים איך המימוש הפנימי של הטיפול ב HANDLES.
לצפיה ב-'אני ואתה לא, אבל כמו שאמרתי: יש הרבה אנשים באינטרנט'
אני ואתה לא, אבל כמו שאמרתי: יש הרבה אנשים באינטרנט
22/09/2017 | 14:40
4
26
אני מנחש על בסיס שאלותיך שאתה מחפש לעשות משהו מיוחד עם handleים, שפונקציות Win32 רגילות לא נותנות לך לעשות.
 
אם תחפש בכיוון הנכון, והדבר אפשרי, סביר להניח שתמצא ברשת מישהו שעשה את זה, ומסביר איך עשה את זה.
אבל קח בחשבון ש-MS נוטה לשנות את המימושים הפנימיים שלה בין גרסאות המערכת, כך שפתרון כזה לא יהיה יציב לאורך זמן.
לצפיה ב-'לא התכוונתי לעשות איתו משהו'
לא התכוונתי לעשות איתו משהו
22/09/2017 | 21:00
3
24
שנים אני עובד עם היצור הזה שנקרא HANDLE ותמיד סיקרן אותי לדעת מה זה בדיוק, או איך המימוש שלו.
אבל מסתבר  שאפשר להסתדר גם בלי לדעת מה זה בדיוק, מקבלים אותו מפונקציה שיוצרת אוביקט משאב   ויש לספק אותו כל פעם שניגשים למשאב .
לצפיה ב-'זה בדיוק הרעיון בו:'
זה בדיוק הרעיון בו:
23/09/2017 | 13:44
2
29
בתכנות מונחה עצמים יש רעיון של "incapsulation":
המחלקה מכילה את כל הלוגיקה של טיפול בנתונים שלה, והמשתמש של המחלקה לא אמור לדעת איך הנתונים מאוחסנים או מטופלים, רק לקרוא למתודות של המחלקה.
 
למשל, תמיד נהוג להשתמש במתודות get ו-set במקום להפוך את המשתנים ל-public.
כך, כותב המחלקה יכול תמיד לשנות איך היא עובדת מבפנים או מאחסנת את הנתונים, אבל הקוד שמשתמש במחלקה לא יצטרך לעבור שום שינוי.
 
הרעיון מאחורי ה-HANDLE של MS הוא אותו רעיון בדיוק, רק שה-API נועד לתכנות פרוצדורלי ולא OOP:
אתה מצידך יכול לעבוד עם HANDLE בלי לדעת איך הוא ממומש בפנים, ו-MS מצידם יכולים לשנות את המימוש בלי לשבור את הקוד שלך.
 
כמובן, כשאתה מפתח על פלטפורמה מסוימת לאורך זמן, זה טבעי וטוב להתעניין כיצד הקרביים שלה עובדים.
לצערנו, WIndows לא ממש בנויה לעזור למפתחים בחקירות כאלה, והיות ואני כבר מזמן לא מתעסק איתה, אין לי מקור ממש טוב להמליץ לך.
 
אבל אני יודע שקיימים מקומות כאלה בחוץ.
נקודת התחלה שיכולה להיות מעניינת לך היא פרויקט WINE ו-ReactOS.
 
הראשון הוא שכבת תאימות שממשת Win32 API ומאפשרת הרצת יישומי Windows ע"ג Linux ו-Mac OS, והשנייה היא מערכת הפעלה בקוד פתוח, מפותחת מ-0 אבל תואמת ב-100% (או לפחות הם משתדלים) ל-Windows.
 
מי שמפתח את שני אלה וודאי יש להם תובנות רבות ועמוקות לגבי אופן פעולה של Windows שתוכל ללמוד מהן.
 
בהצלחה!
לצפיה ב-'בשלב זה אני לא אתעמק יותר מידי במימוש הפנימי של HANDLE'
בשלב זה אני לא אתעמק יותר מידי במימוש הפנימי של HANDLE
24/09/2017 | 08:39
21
, אני סומך ( אין לי הרבה ברירה) על מיקרסופט   שהם מממשים את זה בסדר ולא יגרמו לאי תאימיות בעתיד.
 
אגב לגבי WINE נראה לי שזה יכול להיות פתרון להרצת ישומי חלונות מבוססי MFC על מערכת לינוקס.... צריך לבדוק.
לצפיה ב-'מארק רוסינוביץ' כתב בזמנו סדרת פוסטים בבלוגו עם הסבר מפורט'
מארק רוסינוביץ' כתב בזמנו סדרת פוסטים בבלוגו עם הסבר מפורט
14/10/2017 | 08:26
3
על מבנה זיכרון, פרוצסים, handles, ואובייקטים נוספים
 
החלק עם ההנדלים בקישור הבה: https://blogs.technet.microsoft.com/markrussinovic...
לצורך יתר הבנה בעניין רצוי קודם להתייחס אל הפוסטים הקודמים בסידרת פוסטים הזו, כפי שנאמר בהתחלה
 
למרוט שעברו שמונה שנים, הנאמר עדיין בתוקף
לצפיה ב-'מספר שמזהה משאב חד חד ערכית'
מספר שמזהה משאב חד חד ערכית
23/09/2017 | 22:49
5
לצפיה ב-'סביבת עבודה נוחה בפייתון?'
סביבת עבודה נוחה בפייתון?
22/09/2017 | 23:02
4
39
אני די חדש בתחום והתחלתי ללמוד פייתון. התקנתי במקביל עורך טקסט notepad++
ואם הבנתי נכון, איתו רק ניתן לכתוב קוד ולא להריץ את הסקריפטים או לדבאג אותם.
בשביל לעשות זאת, אני צריך IDE? איזה IDE קליל ומהיר אתם ממליצים?
גוגל ספר לי על כמה אופציות: pycharm/wingide/eric/spyder. אשמח לקבל המלצה
מבעל ניסיון שיחסוך את הטרחה להתקין ולהסביר לסרוגין סביבות עבודה.
ולוודא שאכן מה שאני מחפש זה IDE?
תודה
לצפיה ב-'שאלה נוספת, לאחר שאמצא IDE'
שאלה נוספת, לאחר שאמצא IDE
22/09/2017 | 23:07
27
מדוע אני צריך את הNOTEPAD++? מה היתרונות שלו?
לצפיה ב-'תשובות:'
תשובות:
23/09/2017 | 14:06
30
1. כדי לפתח בכל שפת תוכנה צריך 3 דברים:
   1.1 עורך טקסט נוח שבו תוכל לכתוב את הקוד שלך. וזה מהש-Notepad++ נותן לך.
   2.1 קומפיילר או מפרש שיהפוך את הקוד שלך למשהו שרץ. היות ואתה עובד על Windows, כדי להריץ תכונות ב-Python, אתה צריך להוריד Python ל-Windows.
 
שים לב שכרגע יש שתי גרסאות של השפה שחיות במקביל: גרסה 2 וגרסה 3.
יש חוסר תאימות בניהן.
תבחר את זו שמתאימה לחומרי הלימוד שלך.
 
   3.1 דיבאגר. שפת Python היא שפה אינטראקטיבית, לכן אפשר לדבג אותה די בקלות בלי כלי ייעודי, אבל בכל זאת קיימים כמה דיבאגרים. אחד מהם מגיע כחלק מהתקנה שנתתי לך בסעיף הקודם:
 
2. עכשיו שרשמנו מה צריך, הגיעה הזמן להבין מה זה IDE - Integrated Development Eviroment.
כשפי שהשם מרמז, מדובר במשהו שלוקח את כל המרכיבים מסעיף 1, ומאחד אותם בתוך חבילה אחת.
בד"כ זה מוסיף עוד פיצ'רים, שבתור מי שרק לומד את השפה, הם רק יפריעו לו.
 
בשלב הלימוד, אני ממליץ לך להימנע משימוש ב-IDE, אבל אם אתה מתעקש, לך על Pycharm.
 
3. שים לב של-Notepad++ יש מנגנון הרחבות. כמו תוספים לדפדפן, אתה יכול להתקין תוספים גם ל-Notepad++ כדי להוסיף לו פונקציונליות.
נקודה מעניינת: התוספים עצמם כתובים לרוב ב-Python
 
לסיכום:
IDE היא סביבה גדולה ולרוב כבדה שאומנם כוללת כל מה שאתה צריך, אבל גם הרבה יותר מזה, ולכן לא מומלצת לשימוש בזמן לימודים.
מה שמומלץ למי שרק מתחיל ללמוד זה לכתוב קוד בעורך פשוט יחסית (Notepad++ מצוין עבור זה) ולהריץ ישירות במסוף (חלון CMD או F5 מתוך Notepad++).
 
בהצלחה!
 
לצפיה ב-'אין שום בעיה להריץ קוד מתוך notepad++,'
אין שום בעיה להריץ קוד מתוך notepad++,
23/09/2017 | 17:08
28
אם אתה נכנס לשטח של IDE ( לדעתי, מוקדם מדי) , אני ממליץ על Eclipse, הוא מכיל בתוכו כל מה שרצית (ועוד קצת) והוא גם חינמי.
לצפיה ב-'יש מלא IDE בענן'
יש מלא IDE בענן
23/09/2017 | 22:47
23
לא צריך להתקין כלום
לצפיה ב-'שאלה- פייתון'
שאלה- פייתון
22/09/2017 | 15:44
8
35
לומד פייתון עכשיו, גרסה 2.7.
 
שאלה בלימודים: צור תכנית המקבלת 2 מחרוזות מהמשתמש ובודקת אם לפחות אחת מהאותיות במחרוזת הינה אות גדולה ( L P Q וכו'...)
 
עכשיו, אני עשיתי את התוכנית הזו עם לולאת while, הכל טוב ויפה ועובד...
אבל... אני רוצה לאתגר את עצמי, וליצור את התוכנית הזו עם הכלים שלמדנו והם: סוגי משתנים (בינתיים int, string ורשימות), מתודות.
 
עכשיו, מה שחשבתי זה לקלוט מהמשתמש מחרוזת, למיין אותה עם ()sort. ואז לראות האם התו הראשון הוא אות גדולה... השאלה היא איך אני הופך מחרוזת לרשימה? ניסיתי לחפש בגוגל אבל לא מצאתי תשובה. אני מניח שזה אפשרי כי בסופו של דבר מחרוזת היא סוג של רשימה (=אני יכול לפנות לכל תו בנפרד, כמו ברשימה, ברורים לי ההבדלים בין רשימה למחרוזת)
 
אז, איך אני הופל מחרוזת לרשימה?
 
תודה מראש! :)
לצפיה ב-'sorted will convert a string to an ordered list'
sorted will convert a string to an ordered list
22/09/2017 | 17:00
7
18
test="Hello world"
t1=sorted(test) # [' ', 'H', 'd', 'e', 'l', 'l', 'l', 'o', 'o', 'r', 'w']
if t1[1]>='A' and t1[1]<='Z': .....
לצפיה ב-'תודה!'
תודה!
22/09/2017 | 17:45
6
3
לצפיה ב-'רק שים לב לבעיה ברעיון שלך שפרסאוס חשף:'
רק שים לב לבעיה ברעיון שלך שפרסאוס חשף:
22/09/2017 | 20:01
5
21
אם במחרוזת הנבדקת קיימים רווחים, סימני פיסוק, או ספרות, השיטה שלך תיכשל כי אות גדולה תבוא אחריהם, במקום שאין לך דרך לדעת אותו.
לצפיה ב-'נכון אבל את העיקר הבנתי'
נכון אבל את העיקר הבנתי
22/09/2017 | 20:10
4
12
אנחנו רק בשיעור 2 בפייתון...
כרגע מעניין אותנו אם החומר הובן...
ברור לי שהדרך הנכונה והיעילה לעשות את התרגיל זה בעזרת לולאה, אבל רציתי בשביל ההבנה לעשות לפי הראש של המרצה, שנבין את ההמרה ממחרוזת לרשימה...
אם הבנתי את העקרון עשיתי את העבודה :)
לצפיה ב-'סבבה, השאלה היא מה התרגיל בדיוק, אחרי הכל אני מניח'
סבבה, השאלה היא מה התרגיל בדיוק, אחרי הכל אני מניח
23/09/2017 | 14:16
3
12
שאתה רוצה פתרון שהוא גם נכון, ולא רק מאתגר.
 
אם תנאי התרגיל הם שהמחרוזות מכילות רק אותיות, שימוש ב-sort הוא פתרון נכון.
אם תנאי התרגיל הם שהמחרוזת יכולה להכיל כל תו חוקי, הפתרון שלך הוא לא פתרון עובד, ולכן לא יזכה אותך בציון, למרות שהשתמשת רק במה שלמדת.
 
אבל, אם באמת למדתם את כל המתודות שעובדות על מחרוזות, אכן יש דרך לפתור את התרגיל בלי לולאה תוך שימוש במתודה אחת ותנאי אחד.
למעשה, זה מאוד קל - המתודה שאתה צריך היא lower ולא sort.
 
אני אשאיר לך לחשוב איזה תנאי צריך כדי לממש פתרון זה.
לצפיה ב-'הארה נכונה, ולקחתי את האתגר שלך'
הארה נכונה, ולקחתי את האתגר שלך
23/09/2017 | 16:13
2
12
התרגיל מדבר על מחרוזת, ולוקח את ההארה שלך. הרי מחרוזת יכולה להיות גם מספרים.
בכל מקרה, לקחתי את האתגר שלך, ולכן כתבתי את הקוד הבא:
 lst = raw_input("Enter a text: ")
if lst.lower != lst:
   print "You have a capital letter!"
else:
   print "Your text is all lower case!"
אני מניח שזו הייתה כוונתך, אבל זה לא עובד על כל סוגי המחרוזות- כי אם אני מקיש מספרים, הוא נותן לי תוצאה שיש אות גדולה. כשאני רוצה להדפיס את שתי הרשימות, lst, lst.lower, אז ה- lst.lower נותן לי שזה עובד רק על מחרוזות....
לצפיה ב-'אתה כמעת שם, אבל ההשוואה שלך לא נכונה:'
אתה כמעת שם, אבל ההשוואה שלך לא נכונה:
23/09/2017 | 16:26
1
16
הרעיון נכון, אכן התכוונתי שבמקרה שיש רק אותיות קטנות, מספרים, רווחים, וסימני פיסוק, מחרוזת אחרי lower תהיה זהה למחרוזת לפני lower ורק אם יש אות גדולה אחת לפחות המחרוזת תשתנה.
 
אבל בתנאי שלך לא ביצעת קריאה למתודה lower.
קריאה למתודה מצריכה סוגריים.
 
ב-Python, כל מתודה היא אובייקט. ולכן ניתן להשוות אותה לאובייקט אחר כמו מחרוזת.
וזה מה שעשית - השוות את המתודה lower (שהיא אובייקט שמכיל קוד) למחרוזת lst (שכמובן מכילה טקסט) ולכן קיבלת תוצאה לא נכונה.
 
אתה יכול לראות למה התכוונתי אם תריץ את שתי השורות הללו ותסתכל על ההבדל בהדפסה:
 print lst.lower
print lst.lower()
שים לב ש-print היא מיוחדת ב-Python 2.7 כי היא לא פונקציה אלא חלק מובנה בשפה ולכן לא מצריכה סוגריים.
זה תוקן ב-Python 3 שם הקוד שלך לא היה חוקי.
לצפיה ב-'תודה רבה! למדתי...'
תודה רבה! למדתי...
23/09/2017 | 20:18
1
לצפיה ב-' שנה טובה וחג שמח '
שנה טובה וחג שמח
19/09/2017 | 14:12
1
 
חג שמח לגולשי האתר
 
שנה טובה ומתוקה
שכולנו נכתב ונחתם לחיים טובים ולשלום 
 
בברכה 

חם בפורומים של תפוז

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

מקרא סימנים

בעלת תוכן
ללא תוכן
הודעה חדשה
הודעה נעוצה
אורח בפורום
הודעה ערוכה
מכיל תמונה
מכיל וידאו
מכיל קובץ