הבלוג של ינון פרק

טיפים קצרים וחדשות למתכנתים

סדרת SQL בסיסי - פוסט 6 - סוגי מידע

15/08/2024

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

המשך קריאה

סדרת SQL בסיסי - פוסט 4 - בסיס נתונים רלציוני

13/08/2024

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

המשך קריאה

סידרת SQL בסיסי - פוסט 1 - מידע מובנה

10/08/2024

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

המשך קריאה

חדש בפיירפוקס - תמיכה בפאפטיר

09/08/2024

פיירפוקס 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.

טיפ גיט: איפה היה הבראנץ לפני X זמן

08/08/2024

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

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

git log main@{10.minutes.ago}

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

git show main@{10.minutes.ago}

או בשביל להראות תוכן מלא של קובץ:

git show main@{2.days.ago}:main.py