חשיפה: פרוייקט מימשק התישאול הגלובלי
-
הפרוייקט הבא שנרצה לחשוף כאן היום, הוא פרוייקט מגלומני לא פחות, אולם בתחום ה UI.
מימשק התישאול הגלובלי. באנגלית: Global query interface.
מטרת הפרוייקט היא לבנות UI שמאפשר למשתמש הקצה לבצע שאילתות [size=150:f6b72dw6]ולו המורכבות ביותר!!!!![/size:f6b72dw6] בלי להתמצא בכלל ב SQL עם חווייה אינטואיטיבית לחלוטין, וללא צורך בעמל של פיתוח כלל!!! כל מה שנצטרך להגדיר בתבנית זה את כתובת מסד הנתונים, ועוד כמה דברים קטנים להתאמה (במידה ולתבנית תהיינה חוסר וודאויות כלשהן) ובזה התסיים הסיפור, הלקוח חופשי לבצע כל שאילתה ולהגיע לכל תוצאה בעולם, ללא צורך להתמצא כלל בתיכנות (אנו מדברים כמובן על שאילתות SELECT בשלב הזה)
אז ככה, למעשה הUI הזה כבר מאופיין ובנוי ועובד כמו סוס בלי שום בעיות, אבל לצערי הרב, הוא אקססאי אני רוצה פרוייקט קוד פתוח מבוסס WEB שבשלב כלשהו גם עשוי להפוך למנוע החיפוש הנפוץ ביותר ברשת ויעקוף גם את גוגל בתחומים מסויימים (כגון חיפוש מורכב ומדוייק בתוך אתרים שהיא משימה קשה מאוד נכון להיום, ואתה די נתון לחסדי המפתח הספציפי של אותו אתר, מה שבדרך כלל בעקבות החולשה הגדולה של מנועי חיפוש פנימיים, מחזיר את האנשים לחיקה הבטוח והאוהב של "אמא גוגל" שכל מה שהם מבקשים ממנה [בעיקר אם בשפה של תינוק] היא משתדלת להבין ולתת על מגש של כסף {ממודעות פרסום}) בכל אופן לגבי ארגונים אמיתיים שמתמודדים עם כמויות אדירות של מידע, וצריכים מפתח שישב במשרה מלאה כדי לעשות שאילתות לפי הצורך, זה יכול לחסוך להם את המאמצים הללו.
הרחבה בהמשך.
פורסם במקור בפורום CODE613 ב25/06/2014 10:35 (+03:00)
-
עוד לא היה לי זמן אבל אני צריך להכין סרטון כדי להסביר על המימשק, בינתיים אעלה לכאן תמונה ואנסה להסביר:
קודם כל יש לנו למעלה במרכז את החיפוש החופשי, כמו גוגל, זה מרכיב משפט SQL שעובר על כל השדות (בדילוג על שדות לא רלוונטיים כגון תאריך ושעה וכדומה) ומוצא את הביטוי.
מתחתיו במרכז יש לנו חיפוש לפי שדה, שם הלקוח מזין שם שדה, בוחר שווה ל גדול מ קטן מ או בין, ואז יש לו קומבו אחר שמציג לו את הערכים האפשריים לפי מה שיש בדטה בייס באותו שדה (עם רשומות ייחודיות כמובן) כאשר הוא בוחר את הערך נוצר משפט סלקט שבעצם בוחר רק את אותו ערך.
בתמונה אתם רואים את החיפוש האחרון שהיה (לפני הסכום שווה ל: 100) שזה היה לפי אופן שווה לשיק.למעלה בצד שמאל יש "נושאים ופעולות" שם יש רשימה מוכנה שהמפתח הכין, והלקוח בוחר מתוכה בעצם סוג של שאילתה מוכנה (למשל "שנה לועזית נוכחית" במקום לבחור תאריך מ עד)
בצד ימין יש 3 אפשרויות שלושתם כבויות כרגע, וכאן בעצם מתחיל הכוח האדיר של הכלי הזה.
הסבר: בעיקרון כל חיפוש מבטל את החיפוש שקדם לו, כמו בגוגל כל חיפוש מתחיל מחדש.
אם אנחנו רוצים שהחיפוש שלנו יהיה "בתוך" הרשימה הנוכחית, כלומר לדגומא יש לנו כאן 207 רשומות (לפי אופן שיק וזה ממש לא משנה כרגע איך הגענו ל 207 הרשומות הללו) ואנו רוצים כעת לבצע חיפוש שהוא אך ורק בתוך אותם 207 רשומות, בוחרים בתיבת האפשרות חיפוש בתוך הרשימה (זה לא עובד עם AND יש כאן גישה אחרת, נסביר בהמשך) ואז כל חיפוש שיתבצע מכאן ואילך (שימו לב!!! כל חיפוש!!! גם חיפוש חופשי וגם נושאים ופעולות וגם כל מה שתרצו גם עם מיליארד joinים) יתבצע אך ורק בתוך הרשימה
אם אנו רוצים חיפוש מחוץ לרשימה זאת גם אפשרות, במקרה כזה כל חיפוש שנבצע יחול רק על רשומות שלא נמצאות כרגע בטבלה שלפנינו, הרשימה שישנה לפנינו תישאר בכל מקרה, והחיפוש רק "יוסיף" עליה רשומות (גם כאן זה לא עובד עם OR, סבלנות עד להמשך ) הואיל ואפשרות זו סותרת באופן לוגי את חיפוש בתוך הרשימה לכן זאת תיבת רדיו של 2 אפשרויות.
מתחתם אנו יכולים לראות את תיבת הסימון חיפוש הפוך, הפעולה שלה היא פשוטה, מה שאתה מחפש זה מה שאתה לא מוצא, ומה שאתה מוצא זה בעצם כל הרשומות שעונות לתוצאה ההפוכה מהחיפוש שלך. הסברנו את העיקרון של חיפוש הפוך, אבל רגע! יש גם את 2 האופציות מעל, חיפוש בתוך או מחוץ לרשימה. ובכן, כן, זה יכול לעבוד ביחד, חיפוש הפוך בתוך הרשימה יתן תוצאות הפוכות רק בתוך הרשימה הקיימת ולא יחרוג ממנה, ואילו חיפוש הפוך מחוץ לרשימה, ישאיר את הרשימה הקיימת בכל מקרה, ואילו מחוצה לה, הוא יציג תוצאות ההפוכות לחיפוש.
למעלה בצד ימין אנו יכולים לראות חיצים ימינה ושמאלה, נשמע מוכר??? כן כן דפדפן אינטרנט, אתה יכול לדפדף לצעד הקודם שעשית בקלות על ידי לחיצה על החץ הימני ולהגיע לרשימה שהיתה לפני רגע, ולרשימה הבאה על ידי לחיצה על החץ השמאלי.
כעת מה קורה אם בן אדם יש לו 4 צעדים שהוא עושה נניח לפי אופן שווה לשיק, סכום גדול מ 100 תאריך שהוא בשבוע האחרון, ונפדה שווה ל "כן" (כמובן שמהצעד השני ואילך הוא כבר בוחר חיפוש בתוך הרשימה) הבן אדם כל יום נכנס לתוכנה בבוקר והוא רוצה לדעת מה עם הרשימה הזאת לפי התנאים הללו, האם נאלץ אותו בכל יום לשבור את השיניים מחדש? לא ולא! יש אפשרות "להקליט" את הצעדים, כמו הקלטת מאקרו בוורד, מכירים?? אז גם כאן, יש כפתור בצד השמאלי שמתחיל הקלטה, הוא בוחר שם להקלטה ["השיקים המעניינים של השבוע"], עושה את הצעדים, עוצר את ההקלטה, ואז יש לו סידרת צעדים מוכנה, כל מה שנשאר לו זה להריץ את ההקלטה. תשאלו אותי האם ההקלטה יודעת שהוא בחר בתוך הרשימה או מחוץ לרשימה וכדומה?? ממש כן....
נמשיך הלאה, מה קורה אם בן אדם יש לו הקלטה, ואחרי שהוא מריץ אותה הוא רוצה לחפש בתוך הרשימה משהו, אין שום בעיה, מריצים ההקלטה, ואז מחפשים בתוך הרשימה את מה שרוצים. ומה קורה אם מישהו רוצה לעשות הקלטה שתריץ הקלטה אחרת, ותחפש אחר כך מחוץ לרשימה הקלטה שלישית?? ובכן זה גם אפשרי. תשאלו ומה אם בתוך ההקלטות יש הגדרות של בתוך ומחוץ לרשימה האם זה מפריע?? ממש לא, כל הקלטה עושה את העבודה שלה בנפרד, ובסוף התוצאה היא, הקלטה א מורצת, והקלטה ב מחפשת את תוצאותיה מחוץ לרשימה שנוצרה לאחר הקלטה א.
כעת נשאל עוד משהו, מה קורה אם בן אדם רוצה את כל אלו שגרים בשכונה הר נוף בתנאי שנכנס מהם מעל 200 ש"ח ובשכונה רמות, גם אם תרמו מעל 100 ש"ח, איך עושים דבר כזה?? בעיקרון כדי להשיג 2 שכונות עושים חיפוש מחוץ לרשימה לשכונה השניה, אבל לגבי הסכומים אם נעשה מעל 100 הוא יציג גם את הר נוף מעל 100 ש"ח אז איך פותרים את זה?? כאן נכנסת לתמונה האופציה של שמירה בצד, אתה יכול לשמור קבוצת רשומות בצד, להמשיך לעבוד כאילו לא היה כלום, ולאחר מכן לצרף את קבוצת הרשומות הלזו לרשימה שלך. ואז עושים ככה, מחפשים הר נוף, בתוך הרשימה סכום שהוא בין 200 לבין 500. שומרים בצד, (אתם יכולים לראות החזר לרשימה 725 רשומות שמורות) עושים חיפוש חדש שכונת רמות, ובתוך הרשימה סכום גדול מ 100, מחזירים את הרשומות השמורות, ומקבלים תוצאה נהדרת!!! ההקלטות אגב, יודעות לנטר גם את זה.שאלה נוספת, מה יהיה אם בן אדם רוצה כעת להתמקד בשכונת רמות, שבהם יש תורמים מעל 300 ש"ח אבל גם אלו המוגדרים "ידידים" גם אם לא תרמו כלום. הדרך הפשוטה לעשות זאת היא לעשות חיפוש תרומה מעל 300 ש"ח מחוץ לרשימה לפי קטגוריה ידידים, ואח"כ בתוך הרשימה שכונת רמות. אבל מה יהיה אם עשיתי 10 צעדים, הגעתי ל 207 רשומות, וכעת אני רוצה להתחיל לברור בתוך הרשימה שלי מספר אופציות, כלומר נניח שברשימה שהגעתי אליה בעמל רב לפי אלף פרמטרים, יש אנשים מהרבה שכונות, ואני רוצה להציג רק את האנשים של רמות הר נוף בני ברק מודיעין עילית או כאלו ששפת האם שלהם היא צרפתית. מה עושים עכשיו??? צריך לתכנן את הצעדים כל כך בקפידה שזה כבר מתחיל להיות מעמסה. או נניח שסתם ככה בן אדם יש לו עכשיו תוצאה הוא רוצה להשתולל בפנים, לעשות חיפושים חופשיים, לחזור לרשימה המקורית וכו'. כאן נכנס לתמונה המושג "נעיצה" מושג זה (אני לא יודע אם השם שלו הוא הכי מתאים אבל כעת בפרוייקט שלי מאוחר מידי כדי לשנות) אומר שמבחינת המימשק כעת כאילו יש בכל מסד הנתונים "רק" את הרשימה הזאת, וכל חיפוש שתעשה עכשיו (בתוך הרשימה מחוץ לרשימה, הפוך הכל הכל) לא יוכל לחרוג מהמסגרת הזאת. (ואגב... ההקלטה יודעת לנטר גם את הפעולה הזאת)
כעת מה יהיה אם בן אדם עשה חיפוש של 10 צעדים, ובדיוק את הרשימה שיצאה לו הוא רוצה להסתיר, כלומר הוא בעצם עשה 10 צעדים של חיפוש, שבסופו הוא רוצה את התוצאה ההפוכה?? בשביל זה יש אפשרות בתיבה המשולבת ב"נושאים ופעולות" שנקראת הפוך רשימה פעולה פשוטה שהופכת את הרשימה (אם נניח יש במסד נתונים 1000 רשומות, התוצאה שלך הניבה 234, אז היא תניב את כל ה 766 הרשומות שלא נכללו קודם ותסתיר את הקודמת) אגב, כשמשתמשים בפונקציה הזאת בעת רשימה נעוצה, היא כמובן הופכת את הרשימה אבל בלי להציג רשומות שמחוץ לנעיצה.....
שימו לב בצד ימין למעלה יש תיבת סימון שנקראת "חיפוש חכם" כאשר היא נבחרת יש מנוע אימתני שמזהה את ההקלדה ומנסה לנתח אותה (למשל אם יש בפנים שמות של שדות הוא מפרק את זה לשדה וערך, או אם יש שמות של פונקציות, הוא אמור להתחקות אחרי הרגלי החיפוש של האיש הנוכחי ועוד היד נטויה לאלגוריתמים על אלגוריתמים שונים ומשונים שהמפתח יכול לתת ללקוח בקלות על ידי מימשק אינסופי זה)
כעת נניח שיש לנו 4 טבלאות, הכנסות, אנשי קשר, הוראות קבע, ופעילות. מה יהיה אם נרצה לראות את כל הפעילות של אלו שהיתה להם תרומה של 500 ש"ח ומעלה בשנה האחרונה. הרי הסכום של התרומה ניתן להשיג מטבלת הכנסות, ואילו הפעילות בטבלה אחרת, אז איך עושים join? בשביל זה אנחנו עושים צומת מרכזי ביותר בתוכנה, הצומת המרכזית היא אנשי קשר, כרגיל, כל טבלה יש לה שדה מקשר לאיש קשר. בדרך הזו אנחנו יכולים להגיע מכל טבלה לכל טבלה. כיצד? מפעילים את השאילתות בהכנסות, משם יש פונקציה בנושאים ופעולות שאומרת הצג את אנשי הקשר בטבלת אנשי קשר, ומאנשי קשר יש הפנייה לכל טבלה אחרת ברחבי התוכנה בהתבסס על ה join.
כעת אתם בטח מסוקרנים לגלות איך זה עובד, אשמח לשמוע רעיונות (רמז: מאוד פשוט ופרימיטיבי, אין כאן הרכבה של משפט SQL ארוך ומייגע)
ולאתגר את המנגנון עם דברים שהוא לא יכול לתת (למעט שאילתות המתבססות על סכומים שזמינות רק ע"י פיתוח של מפתח) לפי איך שזה נראה המימשק הזה מסוגל להכל. רק צריך לפתח אותו שיהיה גנרי וגלובלי, וזה אפשרי!!!נ.ב. עדיין לא הוחלט על זה כקוד פתוח וכפרוייקט ציבורי חינמי!!! אנא לא להפיץ מחוץ לפורום, כרגע כל הזכויות שמורות....
פורסם במקור בפורום CODE613 ב26/06/2014 15:16 (+03:00)
-
אדיר.
זה סוג של חיפוש שרובינו צריכים הרבה פעמים, חיפוש בצעדים. לא חיפוש תכנותי בסגנון של (תרמו יותר מ100 וגרים ברמות או..) אלא של צער אחד צעד, שזה חיפוש אנושי (נשים במד קודם מי שלא בשכונה רמות, נוסיף לנשארים את שכונת...). אבל לכאורה זה לא מכסה הרבה תרחישים. לדוגמה שאילתות סיכום, קשרים מורכבים בין טבלאות, לא כן?אגב, מבחינת עיצוב הממשק, יש להפריד את האופציות של הוספה לרישמה וסינון הרשימה מאפשרות של חיפוש הפוך. ויותר נכון לשים את אפשרות החיפוש ההפוך קרוב לקריטריונים (שדה X גדול מ100, כל מי שלא כך).
בהצלחה!
פורסם במקור בפורום CODE613 ב26/06/2014 16:00 (+03:00)
-
@דוד ל.ט.
אבל לכאורה זה לא מכסה הרבה תרחישים. לדוגמה שאילתות סיכום
זה מכסה אבל זה בפיתוח, כבר עשיתי כביכול "הקלטה" שבעצם הכנסתי שם SQL של סיכום, הבעיה עם סיכום שצריך לקבוע את הגרופ ביי, וכאן אתה מכניס את משתמש הקצה ממש לשבירת הראש עם SQL, השאלה אם זה לא יאבד את הקסם שלו בזה.
@דוד ל.ט.קשרים מורכבים בין טבלאות
קיים, המפתח צריך לקבוע בהגדרות את הקשרים, ואפשר לחפש לפי כל קשר שהוא.
@דוד ל.ט.ויותר נכון לשים את אפשרות החיפוש ההפוך קרוב לקריטריונים (שדה X גדול מ100, כל מי שלא כך).
הבעיה שאז זה לא יובן שזה מכסה גם את נושאים ופעולות, הרץ שאילתות מוקלטות, וחיפוש חופשי.
אגב כשבוחרים אחת מהאפשרויות, הכיתוב והצבע על יד כל קומבו ותיבת טקסט משתנה בהתאם לבחירה ו"מסביר" מה הפעולה שזה עושה.פורסם במקור בפורום CODE613 ב26/06/2014 16:23 (+03:00)
-
ארכיטקט, אני בהלם!, רק עכשיו אני רואה שהכנסת את ההודעה הזו.
בלי ספק זה אחד הכלים הכי טובים שראיתי ב"כריית נתונים", אם לא הכי טוב ויעיל, כי הוא חושב על משתמש הקצה, ולא על המתכנת...מתי מתחיל הפיתוח לWEB?, איזה עזרה אתה צריך?, ואיך יהיה אפשר לנתח DB של אקסס אם זה יהיה בWEB?
מתי אתה מגלה לכוולם מה הטריק? (הגאוני, אך פשוט. [באמת <!-- s:-) --><img src="{SMILIES_PATH}/icon_e_smile.gif" alt=":-)" title="מחייך" /><!-- s:-) -->])
פורסם במקור בפורום CODE613 ב08/07/2015 16:57 (+03:00)
-
ארכיטקט, אני בהלם!, רק עכשיו אני רואה שהכנסת את ההודעה הזו.
ואני בהלם שרק עכשיו אתה רואה :lol: :lol:
בלי ספק זה אחד הכלים הכי טובים שראיתי ב"כריית נתונים", אם לא הכי טוב ויעיל, כי הוא חושב על משתמש הקצה, ולא על המתכנת...
גם אני כמתכנת אוהב לעשות בו שאילתות, ועוד מחכים מהלקוחות שלי ש"מלמדים אותי" טריקים שלא חשבתי עליהם :lol: :lol: :lol:
מתי מתחיל הפיתוח לWEB?
כבר התחיל מזמן, ועומד להסתיים בקרוב, הכל שם מבוסס על כלי ההשלמה האוטומטית, דוגמת גוגל. ההשלמה האוטו' עוזרת לך לחפש את המידע וגם לאתר את השדה המתאים לחיפוש. שאל את דוד לב טוב שרואה את הפרוייקט בהתרקמותו.איך יהיה אפשר לנתח DB של אקסס אם זה יהיה בWEB?
אין שום בעיה, בעיקרון החזון הוא שכל מי שיש לו קובץ אקסס, פשוט יעלה אותו לשרת, והתוכנה תנתח את מבנה הטבלאות, הלקוח יוכל להגדיר את הקשרים הפנימיים (ג'וינים) בין הטבלאות, כינויים לשדות שלו, וכן הלאה. האתר פשוט ייתן לו גרידים ואדיטורים מוכנים, וזאת תהיה בעצם פלטפורמה אדירה לבניית תוכנות של מערכות מידע, כשהמסנן מהווה את ליבת המערכת.
איזה עזרה אתה צריך?
בעיקר בחזון של הניתוח האוטומטי, אם אני נותן באתר שלי למשל אפשרות להעלות קובץ XML ולאפשר לבצע עליו סינונים, זה עוד בסדר, כי XML זה קובץ די מוגדר ומסודר וצפוי. וכנ"ל JSON, אקסס, וכו'. הבעיה העיקרית היא עם אקסל, ורוב העולם הטיפש עובד עם הרעה החולה הזו הקרויה אקסל, זה פשוט סיוט לנתח נתונים משם. אתה אף פעם לא יודע מה באמת מספר, מה תאריך ומה טקסט, יש שם אפשרויות של מיזוג תאים ועוד שאר מרעין בישין. אם אני מצליח לפרוץ את המחסום הזה, זה אכן יכול להיות כלי שישרת את העולם כולו בעזרת השם.
מתי אתה מגלה לכוולם מה הטריק? (הגאוני, אך פשוט. [באמת <!-- s:-) --><img src="{SMILIES_PATH}/icon_e_smile.gif" alt=":-)" title="מחייך" /><!-- s:-) -->])
הטריק זה סוד כמוס לפרה ולסוס :lol: :lol: :lol:
פורסם במקור בפורום CODE613 ב19/07/2015 22:02 (+03:00)
-
-
זה בעצם סוג של מחולל דוחו"ת אבל יהיה רק באתר ולא על המחשב, לא שווה היום להשקיע בתוכנות שולחניות.
מחולל הדוחו"ת של APT נבנה על ידי אחד מאלעד שהיום הוא סוג של רב בית כנסת או משהו (לא זוכר את שמו) - כלומר לא טומבק עשה את זה בכלל.
המצחיק הוא שכל התהילה של התוכנה של APT זה אותו מחולל דוחו"ת שפותח בכלל על ידי מישהו אחר (חוץ מזה לא שמעתי שם על משהו מיוחד).
אני ראיתי משהו של יוסי בר מרכסים, באמת ליגה, אבל מאוד אקססי, ומאוד מכוון למטרות שלהם (זה מוסד של חינוך מיוחד).
מסקנא של 10 שנים: תוכנה צריכה להיות אינטרנטית וגלובלית נקודה.פורסם במקור בפורום CODE613 ב19/07/2015 23:33 (+03:00)