סדרת SQL בסיסי - פוסט 8 - תרגול היכרות עם בסיסי נתונים
היום ניקח הפסקה מחומר חדש ונתרגל את כל הפקודות שלמדנו עד עכשיו.
טיפים קצרים וחדשות למתכנתים
היום ניקח הפסקה מחומר חדש ונתרגל את כל הפקודות שלמדנו עד עכשיו.
בשיעור זה נלמד על עוד 3 פקודות חשובות בכתיבת שאילתות: ORDER, LIMIT ו OFFSET.
כן, יש לנו בעיה של תאימות. בסיסי נתונים נכתבו כדי לעבוד עם כמות מאוד גדולה של מידע ולכן כל רמז שהם יכולים לקבל על איזה מידע יהיה שמור איפה יעזור להם לנהל את המידע טוב יותר, להשתמש בפחות מקום ולקבל חזרה את המידע מהר יותר. מסיבה זאת בסיסי נתונים מבקשים מאיתנו כשאנחנו יוצרים טבלה שנספר להם מה אנחנו הולכים לאחסן בכל עמודה. יחד עם זאת ההתנהגות הספציפית איזה סוגי מידע נתמכים ומה עושים כשמשתמשים מנסים לשים (בטעות או בכוונה) מידע מהסוג הלא נכון שונה עבור כל בסיס נתונים.
ראינו בתרגיל שבעזרת טבלאות ואקסל אנחנו יכולים לגלות פרטים חדשים על המידע שלנו, אבל באותו זמן ראינו גם שזה לא תמיד פשוט. אנחנו גם יכולים לדמיין שאם היה עלינו לעבוד עם מספר טבלאות במקביל החיפוש באקסל היה הופך להרבה יותר מסובך.
טיולים לפריז זה נחמד אבל בעולם האמיתי אנחנו צריכים לנהל נתונים הרבה יותר גדולים. מה זה נתונים גדולים? באתר data.gov.il נוכל למצוא כמה דוגמאות לקבצי נתונים יותר גדולים ולקבל הצצה למידע שמערכות מחשב מנהלות.
המעבר לטבלה כבר עזר לנו להבין טוב יותר את המידע שלנו. עכשיו בואו נראה אם ומתי כדאי לנו לארגן את המידע במספר טבלאות ואיך עושים את זה.
אחרי המתנה מורטת עצבים עליתי על טיסה ובזמן שאתם קוראים את זה אני מתחיל טיול בצפון צרפת. בשביל שלא תתגעגעו יותר מדי וכמו שעשיתי גם בחופשים קודמים אני משאיר אתכם עם סידרה של 20 פוסטים בפירסום אוטומטי שכתבתי מראש בנושא SQL בסיסי. סידרה זו תהיה בסיס לקורס וידאו שאני בונה על SQL ומתכנן להקליט כשאחזור.
פיירפוקס 129 מגיע עם תמיכה מובנית ב Puppeteer וזה ממש כיף אם אתם כבר עובדים עם Puppeteer בשביל הבדיקות שלכם (ואם לא אז אולי תרצו להתחיל). בשביל ההתקנה אני יוצר פרויקט node חדש ומתקין את פאפטיר:
npm add puppeteer
ואחרי זה צריך להתקין את פייפרוקס במקום שפאפטיר יוכל למצוא אותו ולכן אנחנו מתקינים אותו דרך כלי ההתקנה של פאפטיר עם הפקודה:
npx puppeteer browsers install firefox
(גם אם יש לכם כבר פיירפוקס על המחשב).
אחרי זה אפשר לכתוב את הסקריפט. לדוגמה התוכנית הבאה מתחברת ל duckduckgo, מחפשת שם את המילה firefox ומדפיסה למסך את השמות של 10 התוצאות שיופיעו על העמוד:
// file: demo.mjs
import puppeteer from "puppeteer";
const browser = await puppeteer.launch({
browser: "firefox",
headless: true,
});
const page = await browser.newPage();
page.on('console', msg => {
console.log(`[console] ${msg.type()}: ${msg.text()}`);
});
await page.goto('https://www.duckduckgo.com');
await page.type('input[name=q]', 'firefox');
await page.click('button[type=submit]');
await page.waitForSelector('a[data-testid=result-title-a]');
const titles = await page.$$eval('a[data-testid=result-title-a]', elements => {
return elements.map(element => element.textContent.trim());
});
console.log(titles);
await browser.close();
שימו לב לסיומת הקובץ mjs
כדי ש node לא יתלונן על ה import-ים.
התמיכה בפיירפוקס היא תוספת מבורכת לפאפטיר שעד עכשיו עבד רק עם כרום, ואולי פותחת את הדלת גם לתמיכה בו בדפדפנים נוספים כמו ספארי ו Edge.
רוב הזמן אנחנו עובדים בגיט עם קומיטים ומספרי קומיטים, וזה קל ונוח אם אנחנו יודעים בדיוק על מה אנחנו מדברים. אבל יש מצבים שאנחנו יודעים "מתי" ולא "מה", ובשבילם הטיפ היום.
כתיב השטרודל של גיט מאפשר לנו לדבר על קומיט במונחים של זמן. זה נראה ככה:
git log main@{10.minutes.ago}
ומראה את הלוג החל מהקומיט שהכי קרוב ללפני עשר דקות. וכן אפשר להשתמש בכתיב הזה גם בפקודות אחרות למשל כדי להראות את פרטי הקומיט והשינויים נפעיל:
git show main@{10.minutes.ago}
או בשביל להראות תוכן מלא של קובץ:
git show main@{2.days.ago}:main.py