ניסוי בתכנות

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

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

החלטתי בשביל לראות כמה פשוט לבנות CGI (לא בלוג) עם כלים שמגיעים עם FPC (ולא עם ה framework שנדב הופנה אליו על ידי). בעקבות הנסיעה שלי, רציתי למצוא דרך להציג את כל ה1265 תמונות שצולמו על ידי ועל ידי חבר שהצטרף אף הוא לטיול. השילוב בין ה2 גרם לי ליצור תוכנת CGI שתהיה בעצם Gallery. אלו ממכם שיקפצו להגיד שיש עודף תוכנות מוכנות שעושות בדיוק את זה, ובכן כן ! אבל המטרה היתה ניסוי ולא לבנות משהו רציני, ולכן שילבתי בין כל הצרכים בייחד.

דבר ראשון יצרתי קוד שיקח את התמונות ויצור מיני תמונות לתצוגה של רשימת התמונות הקיימת (Thumbnails). הבנייה הזו התבצעה באמצעות הספריות של ImageMagic ו libWand. לקח לי כמעט 3 שעות לעבור על כל הקבצים ולשמור עותק מוקטן שלהם. כלומר ImageMagic איטי מאוד בהקטנת תמונות.

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

יצירת הקוד עצמו התבצעה באמצעות לזרוס (כאשר מתקינים את הרכיבים שמגיעים איתו, יש גם אפשרות ליצור פרוייקט CGI מותאם אישית -> במקום מודול CGI לאפצ'י בברירת מחדל, או עבודה עם Data Module בצורה גרפית יותר), אשר פשוט הביא אותי למצד שאני צריך לכתוב את הקוד שאני צריך. הבעיה היא שמעולם לא יצרתי קוד CGI באמצעות הכלים שמגיעים עם FPC, ואין להם תיעוד תקין, ולכן רוב הזמן הלך על ניסוי ותהייה קצר של רבע שעה להבין מה מול מה ומי מול מי, והיה לי את כל המידע שהייתי צריך.

השלב הבא היה ליצור 3 מצבים:

  1. מצב של תצוגת דף HTML עם טבלה שתציג את כל התמונות.
  2. מצב שתציג את התמונה המוקטנת בעת בקשה מהדפדפן אינטרנט.
  3. מצב שמציג את התמונה הגדולה והאמיתית.

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

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

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

להוריד את מה שעשיתי, ניתן בכתובת הבאה:

http://ik.homelinux.org/projects/files/gallery.tar.gz

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

כתיבת תגובה

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

הלוגו של WordPress.com

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

תמונת Twitter

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

תמונת Facebook

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

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

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

מתחבר ל-%s