מבוא לתכנות של קבוצת בטא

מתוך ויקיספר, אוסף הספרים והמדריכים החופשי
קפיצה לניווט קפיצה לחיפוש

בטא ספר![עריכה]

ככה אנחנו קוראים לספר הזה בבטא.

ברוכים הבאים לבטא[עריכה]

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

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

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

הננו מוכנים ומזומנים להיות נינג'ה, איך מצטרפים?[עריכה]

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

השלב של למידת לינוקס ותכנות בסיסי נקרא שלב הלימוד הראשוני.

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

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

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

שאלות נפוצות על שלב הלימוד הראשוני[עריכה]

עדיין יש שאלות? תבדקו אם כבר ענו עליהן!

איך לומדים לינוקס ו C (וכל דבר אחר) בבטא?[עריכה]

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

סביבת העבודה בבטא[עריכה]

  • סביבת העבודה המועדפת בבטא היא לינוקס, בעיקר דביאןKnoppix אם צריך). השימוש בה נלמד תוך כדי עבודה, ובהמשך המדריך הזה יוזכרו גם מדריכים שיכולים לעזור. בשלב הראשוני ניתן להשתמש גם בסביבות Cygwin או MingW. (כל השמות הלא מוכרים יוסברו בהמשך).
  • הקומפיילר שמשתמשים בו בבטא הוא gcc, מאחר שמדובר בקומפיילר חופשי שמקובל גם בתעשיה.
  • עורך הטקסט שמשתמשים בו בבטא הוא Emacs. ניתן להשתמש גם בvi אם רוצים. על windows נהוג להשתמש בnotepad++.

גנו\לינוקס[עריכה]

מערכת ההפעלה העיקרית בה משתמשים בבטא היא GNU\Linux, הידועה גם פשוט בשם "לינוקס" (כמו שם הגרעין שלה). גנו\לינוקס היא מערכת הפעלה חופשית. הכוונה במילה "חופשית" היא שהיא מכבדת את החופש של המשתמשים, לאו דווקא שהיא חינמית (למעשה ניתן גם לרכוש אותה בכסף). מערכת הפעלה זו שומרת על שקיפות מלאה וכל אדם יכול לראות את הקוד שלה ולשנות אותו, מאחר שהיא מערכת בקוד פתוח. זאת בניגוד למערכות נפוצות כמו Windows של מיקרוסופט או IOS ו OSX של אפל. אנדרואיד, אגב, נחשבת סוג של לינוקס.

ישנן מספר דרכים לארגן לעצמך מערכת לינוקס:

התקנה רגילה[עריכה]

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

וירטואליזציה[עריכה]

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

Live CD[עריכה]

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

יצירת סביבת עבודה של בטא[עריכה]

אופציה 0: מכונת לינוקס אמיתית[עריכה]

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


אופציה 1: וירטואליזציה[עריכה]

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


אופציה 2: קנופיקס[עריכה]

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


אופציה 3: Cygwin[עריכה]

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


אופציה 4: אני בכיתת בטא, יש לי כבר לינוקס מותקן כאן[עריכה]

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


אופציה 5: התחברות לשרת לינוקס סודי של בטא[עריכה]

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


אופציה 6: לינוקס טרמינל אונליין[עריכה]

מתאים אם אין שום לינוקס באיזור להתחבר אליו.


לתת פקודות לפינגוינים - איך עובדים בלינוקס[עריכה]

Tux.png Crystal 128 penguin.png
טאקס - הסמל של לינוקס,
וגירסת "קריסטל 1" המטורללת יותר.
אייקון לתוכנת טרמינל בסביבה גרפית של לינוקס.

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

עם כל הכבוד לחלונות עם ציורים יפים, בטאים מדברים עם לינוקס דרך הטרמינל - מסך שחור על בסיס טקסט שגורם לך להרגיש האקר. אז פיתחו חלון טרמינל (בקנופיקס זה יהיה האייקון השלישי משמאל בשורת המשימות, ראו תמונה. בדביאן חפשו את konsole או xterm תחת system tools). מרגישים האקרים? יופי, די לקפוץ משמחה, יש עוד מה לקרוא.

התוכנה שפועלת בטרמינל ובה כותבים את הפקודות נקראת shell ("קליפה"). אנחנו משתמשים בshell בשם bash, כי אין לה קריזות כמו לכמה shells אחרות.


כדאי לדעת:

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

בכל מערכות לינוקס (כמו קנופיקס ודביאן), הממשק הגרפי הוא רק עוד תוכנה שעובדת באחד הטרמינלים של מערכת ההפעלה. יש שם בדרך כלל בין 5 ל7 טרמינלים, והממשק הגרפי פועל בטרמינל האחרון. אם תלחצו Ctrl-Alt-F1 (קונטרול ואלט שמאליים!) תגלו שעברתם לטרמינל מספר 1 - זה שהמערכת הראתה בו את כל ההודעות כשהיא עלתה. Ctrl-Alt-F2 יביא אתכם לטרמינל 2. ככה אפשר לטייל בין הטרמינלים עד טרמינל 5 (או 7) שם תראו שוב את הסביבה הגרפית.

תנסו. מי שלא מנסה לא נינג'ה.

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


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



סיימתם את המדריך?

יודעים לעבוד עם לינוקס?

אני מקווה שעניתם כן. כי עכשיו מתחילים לתכנת.

ההתנסות הראשונית - איך כותבים תוכנה[עריכה]

ישנם שני כלי תוכנה בהם נשתמש בכדי ליצור תוכנת מחשב:

  • עורך טקסט (Editor): עורך הטקסט מאפשר למשתמש ליצור קובץ המכיל קוד של תוכנית ולשמור אותו. דוגמאות לעורכי טקסט: Notepad, Emacs, Notepad++.
  • קומפיילר (Compiler): קומפיילר הוא תוכנת מחשב שמאפשרת תרגום של קובץ הכתוב בשפה אחת לקובץ אחר המכיל את אותה התוכנית בשפה אחרת. אנו נשתמש בקומפיילר שיתרגם קבצים בשפת התכנות C לקבצים בשפת מכונה. שפת מכונה (machine language, או binary) היא השפה היחידה שהמחשב מבין. כל שפה אחרת חייבת להיות מתורגמת לשפת מכונה על מנת שאפשר יהיה להריץ אותה. דוגמאות לקומפיילרים: gcc, VC++, turbo C.

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

התוכנה הראשונה: Hello World[עריכה]

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

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

טוב, מה התכנית?[עריכה]

זה מה שנעשה:

  1. כתיבת הקוד
  2. קימפול של הקוד שכתבנו
  3. הרצה של התוכנה שיצאה לנו

יאללה:

כתיבת הקוד[עריכה]

כתבו את הקוד הבא בעורך טקסט (ממש לכתוב, לא להעתיק ולהדביק. אחרת לא לומדים כלום.):

1 #include <stdio.h>
2 
3 int main() 
4 {
5 	printf("Hello World\n"); 
6 	return 0; 
7 }


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

שימרו אותו כקובץ בשם hello.c. (שימו לב! לינוקס מבדיל בין אותיות גדולות לקטנות.) פקודת השמירה באימקס היא C-x C-s.

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

  • בשורה 1, אנו אומרים לתוכנה להשתמש בספריה stdio. ככה מאפשרים שימוש באמצעי קלט\פלט - מקלדת ומסך (פרטים - בהמשך). שימו לב, לא מדובר במילה "סטודיו" אלא בstdio - קיצור לSTandard Input Output.
  • שורה 2 ריקה וכל תפקידה הוא להפריד בין חלקי הקוד. הקומפיילר מתעלם ממנה וכל תפקידה הוא להפוך את הקוד לקריא יותר.
  • בשורה 3 אנו מצהירים על תחילתו של החלק הראשי של התוכנית שלנו - הפונקציה main.
  • שורה 4 פותחת את הבלוק של main.
  • שורה 5 היא פקודת הדפסה של המשפט "Hello World" על המסך. הסימון n\ מורה למחשב לעבור לשורה הבאה. שימו לב לסימן ה - ; שמופיע בסוף הפקודה. נקודה-פסיק (semicolon) הוא סימון שמופיע בסוף כל פקודה לביצוע ב- C. סימן זה מאפשר לקומפיילר להבחין ולהפריד בין פקודות.
  • שורה 6 מורה על סיום main ויציאה מהתוכנית - חזרה למערכת ההפעלה.
  • שורה 7 סוגרת את "בלוק" הקוד של - main. התוכן שנמצא בין סוגריים מסולסלים - {...} מהווה קטע קוד בעל משמעות מסויימת. המשמעות מושפעת מההקשר, כלומר מהקוד ש"עוטף" את הבלוק. במהלך הלימוד יופיעו דוגמאות שיבהירו את הכוונה.

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


כדאי לדעת:

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

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

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

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

קימפול (הידור)[עריכה]

אייקון לתוכנת טרמינל בסביבה גרפית של לינוקס.

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

הקלידו בshell את הפקודה הבאה:

gcc hello.c -o hello

זהו! יש לנו תוכנה שאפשר להפעיל! רק בואו נבין קודם מה הפקודה הזאת עשתה.

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

Gcc.png


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

הפרמטר השני o- אומר שלתוכנה שלנו יקראו... "hello"! כי זה מה שרשמנו לו. זה השם שיקבל קובץ ההרצה - הקובץ שכתוב בשפת המכונה. אם לא היינו מציינים את שם קובץ ההרצה וכותבים רק gcc hello.c השם של קובץ ההרצה היה - a.out, כי זה מה שgcc עושה אם נותנים לו להחליט לבד.


כדאי לדעת:

בהמשך נוסיף עוד פרמטר אחד לפקודת הקומפילציה שיגרום לקומפיילר להיות יותר קפדן מבחינת ההערות שייתן. הפרמטר Wall- הוא קיצור של all warnings כלומר, דרישה שהקומפיילר יתריע בפנינו בכל מקרה שהוא רואה בעיה, גם אם לא מדובר בשגיאה ממש. הדרישה הזאת תעזור לכם מאוד לאתר תקלות חמקמקות במיוחד. פקודת הקומפילציה בה השתמשנו תיראה כעת כך:
gcc -Wall hello.c -o hello

אגב, אם תקלידו את השורה:

man gcc

תקבלו את כל האופנים בהם ניתן להריץ את הקומפיילר.

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


אתגר:

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

אפשר גם להשתמש בתוכנה cat בטרמינל כדי להראות את התוכנה שיצרתם:

cat hello

בעצם, אם רוצים אפשר גם להשתמש בתוכנה cat בטרמינל כדי להראות את התוכנה cat:

cat /bin/cat

ומה יוצא?

cat fight.

הרצה[עריכה]

הקובץ hello הוא קובץ ריצה, הוא כתוב בשפה שאותה המעבד שלנו יודע לבצע. בשביל להריץ את הקובץ hello אפשר ללחוץ עליו לחיצה כפולה בסייר קבצים (תוכנה גרפית כגון thunar או konqueror בלינוקס), אבל זה לחלשים.

אנחנו נעדיף להריץ אותו בטרמינל.

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

hello: command not found

הלינוקס אומר שם שהוא לא מוצא תוכנה בשם hello. הוא פשוט לא מסתכל בתיקיה שאתם נמצאים בה.


כדאי לדעת:

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

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

מסקנה: לא לוקחים סיכונים, כשרוצים תוכנה מהתיקיה הנוכחית, כותבים במפורש prog/. ואז ברור ש"נקודה" מתכוון לתיקיה הנוכחית ואין ספק.

כדי להריץ את הקובץ יש לציין את המסלול המפורש:

./hello

ואז נקבל את הפלט:

Hello World

זהו. ניצחון.

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



לאן עכשיו?[עריכה]

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

אז איך עולים בדרגות? מה עושים עכשיו? מה המטרה הבאה?

מה שתבחרו.
אלו המומחים שאנחנו צריכים, מי מהם בא לכם להיות? :






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

אפשר גם להציע אתגרים בדף הצעות האתגרים של בטא.

עם מי אפשר להתייעץ? איך מצטרפים לפרוייקטים הסודיים של בטא?[עריכה]

יש הרבה פרוייקטים משוגעים שאנחנו רוצים להרים, וחברי בטא מוכנים לעזור לכל מי שעוזר להם.
זה הזמן לפנות לחברי בטא בקבוצת הפייסבוק Beta Program - public space ולשאול אותם באיזה פרוייקטים אפשר לעזור. הם כבר יכוונו אתכם לארץ הפלאות של בטא.