טקסונומיה קוגניטיבית, אינטרנט וחתולים

טקסונומיה (מיוונית – taxis: סידור; nomie: שיטה, חוק) היא סיווג שיטתי של עצמים מאותו תחום.
מתוך ויקיפדיה.

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

... בררר מישהו בכלל מסוגל לעקוב אחרי זה? טוב, מההתחלה...

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


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

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


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

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

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

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

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

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

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

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

כולם להזיז ת'טוסיק, ריקוד גוגל - Google Dance

הופ! בדיוק כרגע מבוצע ריקוד גוגל, Google dance.

טיפונת הסבר -

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

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

הנה תמונה - אלה התוצאות למילה "אוטוקאד" מכמה שרתים של גוגל ביחד. שימו לב שרשימת התוצאות אינה זהה.



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

כשתגמור לבדוק - תבדוק עוד פעם

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

לא סומכים על שום נתון שמגיע מהמשתמש!

שוב -

לא מאשרים ולא סומכים על שום מידע שמגיע מהמשתמש!

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

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

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

למה קוד אואזיס ?

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

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

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

למשל... בדיקות QA - קוד אואזיס מחזיקים מחלקת בדיקות שמבצעת QA על האתרים שאנחנו יוצרים.

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

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

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

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

עוד מחשבות על Captcha

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


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

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

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

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

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

אין לי תשובות לזה, עדיין לא בכל אופן. אני שונא את מנגנון ה Captcha ואשמח לשמוע רעיונות בנושא.

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

בחר - דג גזר כובע

תסתכלי אמא - בלי CAPTCHA

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

כשאני מתעסק עם אתרים קטנים יותר, נאמר עד 30 אלף גולשים ביום, אני מנסה לעבוד בלי Captcha.


אני לא יודע אם זו האמת אבל הטענה אומרת שאלה ראשי תיבות של:
Completely Automated Public Turing Test to Tell Computers and Humans Apart

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

במקום המנגנונים האלה אני מעדיף שימוש במספר מנגנונים אחרים. אמנם מנגנון התמונות של הCaptcha חסין לחדירות בכמעט 100% אבל אני מוכן להסתפק במספר מסננים שבונים יחד סינון של 99%. זה בהחלט מספיק ברוב המקרים. המסננים בהם אני מעדיף להשתמש בנויים כמו גדרות. אחד אחרי השני. יש רובוטים שעוברים את המשוכה הראשונה ונופלים בשנייה, יש כאלה שנופלים רק בשלישית, אבל קשה להם לחלוף את כל המשוכות ובדרך כלל באתרים שלי לא שווה להם להתאמץ כל כך.

אם אתם מתעניינים טכנית במחסומים אז הם די פשוטים למעשה:
1. שמות השדות בטופס משתנים כל הזמן - הכוונה לשדות המגדירים איזה נתון שייך למה - איפה מקלידים דוא"ל ואיפה שם פרטי ואיפה טלפון. הגולש לא רואה את זה כי השמות מוסתרים ממנו, הוא רואה רק את הכותרות ושם הכל בסדר, אבל הרובוט מנסה לזהות את התכנים בדרך כלל על פי השם. ועכשיו - איפה בדיוק כתוב שדה שצריך להיות בו @ כי הוא דוא"ל?
2. לוקח לפחות עשר שניות למלא את הטופס... רוב בני האדם לא מסוגלים לענות כל כך מהר. רובוטים עונים תוך פחות משנייה.
3. בטופס לגולש יש 5 שדות, לרובוט יש 6. זה תרגיל פשוט שבו מחביאים את אחד השדות מהגולשים בעזרת הסגנון של הדפדפן. הרובוט שאינו עובד עם דפדפן רואה גם את השדה הזה. רק רובוט מסוגל למלא את השדה הזה. וכשכל השדות מתערבבים כל הזמן - הוא באמת ממלא אותו ונופל.

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

כמה עולה מערכת דרופל חינם

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

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

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

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

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

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

ועדיין מערכת דרופל יוצאת הרבה יותר זולה לעומת לבנות במיוחד משהו כזה. הרבה יותר זולה.