לקפוץ מעל הפופיק

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

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

בעקבות הניסיון לבנות את התוכנה, התחלתי לעשות ניסויים עם כל מיני frameworks שונים, כדוגמת rails של רובי, או merb (גם היא לרובי), ואפילו ניסיתי את django (איפה מאיר כשצריך אותו ?!) ההרגשה שאני קיבלתי מכל גישת ה MVC של הframework הספציפיים האלו היא שהם לא הולכים לכיוון שאני רוצה, אלא מכוונים אותי לכיוון שיוצרי הכלים החליטו שאני צריך ללכת.

אז כן, אני יכול ליצור כל מה שאני רוצה, השאלה היא אבל האם אני יכול ליצור את זה בצורה שאני חושב שהכי נכון למה שאני צריך ?

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

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

מעניין אותי אם אני אצליח ליצור מערכת MVC מבוססת pull במקום push וככה בעצם תהיה לי מערכת שתתאים לצרכים שלי (אשחרר אותה גם בקוד פתוח כדי שאחרים יוכלו גם להנות מזה).

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

5 מחשבות על “לקפוץ מעל הפופיק

  1. ארתיום

    השאלה היא מתי אתה באמת צריך pull? כשאני בניתי את CppCMS הסתכלתי תמיד על Django, מצד שני, זכרתי שאני כן רוצה לתמוך הן ב-push והן ב-pull.

    אבל, למען באמת, שכחתי את האחרון. כיצד אתה משתמש בו ומתי אתה צריך אותו?

    וכיצד אתה משתמש בזה?

  2. ik_5 מאת

    במערכת בלוגים לדעתי אתה לא צריך מעכת pull.

    הרעיון של ull זה שיש לך הרבה רכיבים שאתה יכול לנצל. ככה שנגיד ויש לי קוד שמתעסק בלקבל את כל מספרי תעודת הזהות שהוזנו ב15 שעות האחרונות, אז אני יכול לנצל את הקוד הזה בהרבה מקומות. ב rails למשל אתה תשים קוד כזה ב helper. אבל מה קורה עם יכולת ההצגה של מספרים כאלו ? פתאום לחבר עוד חלקים זה לא כזה פשוט (אפשרי, אבל זה לא טבעי ב rails, לפחות ממה שאני מכיר).
    הרעיון של pull זה משימות קטנות שמחברים למשימה גדולה. ב push זה יותר על הרעיון של event driven (אם נקח את הרעיון מעולם התכנות הרגיל), אז לא תמיד אתה יודע איך להתאים את הקוד שלך לצורה שהאירוע התרחש ואז אתה כבר לא בדיוק עובד בשיטת dry אלא כן חוזר על עצמך באיזשהו שלב, אלא אם אתה יודע איך להתאים את עצמך יותר נכון, וזה לא תמיד כזה פשוט.

  3. Shai

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

    יש מערכת ותיקה בפייתון, שעד כמה שהבנתי את ההגדרה הוויקיפדית, היא מבוססת pull; קוראים לה zope. אני חושב שלא קשה להתחיל אתה, אם כי יש לה מוזרויות שנושכות כשמנסים להיכנס באמת לעומק — או, לפחות, היו לה כאלה כשהתעסקתי אתה, בשנת 2000-2001.

  4. ik_5 מאת

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

    ב pull התצוגה היא נגזת של ה module ואינה מתבצעת בהכרח בגלל המודל. כלומר המודל לא קורא לתצוגה, אלא התצוגה נעזרת במידע שיש במודל.

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

    שוב זה בתאוריה ההבדל,

  5. GuySoft

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

כתיבת תגובה

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

הלוגו של WordPress.com

אתה מגיב באמצעות חשבון WordPress.com שלך. לצאת מהמערכת / לשנות )

תמונת Twitter

אתה מגיב באמצעות חשבון Twitter שלך. לצאת מהמערכת / לשנות )

תמונת Facebook

אתה מגיב באמצעות חשבון Facebook שלך. לצאת מהמערכת / לשנות )

תמונת גוגל פלוס

אתה מגיב באמצעות חשבון Google+ שלך. לצאת מהמערכת / לשנות )

מתחבר ל-%s