יום שני, 17 בנובמבר 2008

מה שמאחורי האתר

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

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

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

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

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

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

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

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

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

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

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

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

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

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

המשך גלישה נעימה ופיתוח פתוח.

אין תגובות: