Devspeed

התחברות

devspeed avatar profile

התחברות

הבלוג של DEVSPEED

TypeScript בבניית אתרים ואילו טעויות היא באמת עוזרת למנוע

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

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

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

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

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

הטיפוס מתאר את הערך שהקוד מצפה לקבל

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

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

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

טופס מתחיל בטקסט גם כשהוא מבקש מספר

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

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

function readParticipants(value: unknown): number | null {
  if (typeof value !== "string" || value.trim() === "") {
    return null;
  }
  const count = Number(value);
  return Number.isInteger(count) && count >= 1 && count <= 6
    ? count
    : null;
}

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

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

JSON מהשרת לא מגיע עם אישור של TypeScript

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

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

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

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

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

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

שדה משותף אינו אומר שכל חלקי המערכת צריכים אותו מבנה

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

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

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

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

אפשר לתאר מצב מסך בלי אוסף דגלים שסותרים זה את זה

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

אפשר לתאר במקום זאת כמה מצבים חלופיים. לכל מצב יש שם ברור ורק המידע ששייך אליו. זה נקרא איחוד מובחן. השדה status מאפשר ל־TypeScript להבין באיזה חלק של האיחוד אנחנו נמצאים ולהתאים את השדות הזמינים.

type RegistrationState =
  | { status: "editing" }
  | { status: "sending" }
  | { status: "confirmed"; reference: string }
  | { status: "failed"; message: string };

function messageFor(state: RegistrationState): string {
  if (state.status === "confirmed") {
    return "מספר ההרשמה: " + state.reference;
  }
  if (state.status === "failed") return state.message;
  return state.status === "sending"
    ? "ההרשמה נשלחת"
    : "מלאו את הפרטים";
}

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

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

ערך חסר צריך להוביל להחלטה

כאשר strictNullChecks מופעלת, הערכים null ו־undefined מובחנים מערכים רגילים. אם חיפוש ברשימה עשוי לא למצוא סדנה, אי אפשר להשתמש בתוצאה כאילו נמצאה בוודאות. צריך לבחור מה לעשות במקרה החסר: להציג הודעה מתאימה או לאפשר בחירה אחרת או להפסיק את הפעולה הנוכחית.

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

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

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

שינוי בשם של שדה מגלה איפה נמצאות ההנחות הישנות

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

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

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

הרצת הקובץ ובדיקת הטיפוסים הן שתי פעולות שונות

גם בסביבת Node.js שתומכת בהרצת קובצי TypeScript יש להבחין בין הסרת טיפוסים לבין בדיקתם. המנגנון המובנה של הסרת טיפוסים מאפשר להריץ תחביר נתמך אבל אינו מבצע בדיקת טיפוסים. עצם העובדה שקובץ עם סיומת ts התחיל לרוץ אינה אומרת שכל ההצהרות שבו נבדקו.

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

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

שאלות מעשיות לפני שמוסיפים TypeScript לפרויקט

האם חייבים להמיר מיד את כל קובצי JavaScript?

לא. אפשר להתחיל מקטעים חדשים או מגבולות שבהם עוברים נתונים חשובים. בפרויקט JavaScript אפשר להוסיף מידע באמצעות JSDoc ולהפעיל בדיקת טיפוסים לקבצים מסוימים עם ts-check. מעבר הדרגתי מאפשר ללמוד מה ההגדרות חושפות בלי לערבב באותו שינוי גם החלפת שפה וגם שינוי התנהגות.

האם any הוא פתרון סביר כשספרייה מחזירה מידע לא ברור?

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

האם קוד שנוצר עם AI נעשה אמין אם הוא עובר בדיקת טיפוסים?

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

מערכת DevSpeed

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

מדיניות פרטיות

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

אם יש לך שאלות נוספות או שאתה זקוק למידע נוסף על מדיניות הפרטיות שלנו, אל תהסס לפנות אלינו.

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

הסכמה

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

מידע שאנו אוספים

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

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

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

כיצד אנו משתמשים במידע שלך

אנו משתמשים במידע שאנו אוספים בדרכים שונות, כולל:

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

קבצי יומן

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

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

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

עוגיות ומשואות רשת

כמו כל אתר אחר, DEVSPEED משתמש בעוגיות ‘ ’. קובצי Cookie אלה משמשים לאחסון מידע כולל העדפות מבקרים ’ והדפים באתר שאליו ניגש האורח או ביקר. המידע משמש למיטוב חוויית המשתמשים ’ על ידי התאמה אישית של תוכן דף האינטרנט שלנו על סמך מבקרים ’ סוג הדפדפן ו / או מידע אחר.

למידע כללי יותר על עוגיות, אנא קרא “ מהן העוגיות ” מהסכמת העוגיות.

מדיניות פרטיות של שותפי פרסום

תוכל להתייעץ ברשימה זו כדי למצוא את מדיניות הפרטיות עבור כל אחד משותפי הפרסום של DEVSPEED.

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

שים לב של- DEVSPEED אין גישה או שליטה על קובצי Cookie אלה המשמשים מפרסמים של צד שלישי.

מדיניות פרטיות של צד שלישי

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

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

זכויות פרטיות של CCPA ( אל תמכור את המידע האישי שלי )

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

זכויות הגנת נתונים של GDPR

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

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

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

מידע לילדים

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

תנאי שירות

תנאים והתניות אלה מפרטים את הכללים והתקנות לשימוש באתר DEVSPEED, הממוקם בכתובת Devspeed.io.

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

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

עוגיות

אנו משתמשים בעוגיות. על ידי כניסה ל- DEVSPEED, הסכמת להשתמש בעוגיות בהסכם עם מדיניות הפרטיות של DEVSPEED.

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

רישיון

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

אסור לך:

  • פרסם מחדש חומר מ- DEVSPEED
  • למכור, לשכור או להעניק רישיון משנה מ- DEVSPEED
  • שכפול, שכפול או העתק של חומר מ- DEVSPEED
  • הפץ מחדש תוכן מ- DEVSPEED

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

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

אתה מתחייב ומייצג את זה:

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

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

היפר קישור לתוכן שלנו

ארגונים הבאים רשאים לקשר לאתר שלנו ללא אישור מראש ובכתב:

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

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

אנו עשויים לשקול ולאשר בקשות קישור אחרות מהסוגים הבאים של ארגונים:

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

אנו נאשר בקשות קישור מארגונים אלה אם נחליט כי: ( ) הקישור לא יגרום לנו להראות בצורה לא חיובית לעצמנו או לעסקים המאושרים שלנו; ( b ) לארגון אין רשומות שליליות איתנו; ( c ) התועלת לנו מהנראות של ההיפר-קישור מפצה את היעדר DEVSPEED; ו ( d ) הקישור הוא בהקשר של מידע כללי על משאבים.

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

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

ארגונים מאושרים עשויים להקליד לאתר שלנו באופן הבא:

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

לא תותר להשתמש בלוגו DEVSPEED או ביצירות אמנות אחרות לקישור בין הסכם רישיון לסימן מסחרי.

iFrames

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

אחריות לתוכן

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

הפרטיות שלך

אנא קרא את מדיניות הפרטיות

שמירת זכויות

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

הסרת קישורים מאתר האינטרנט שלנו

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

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

הצהרת אחריות

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

  • להגביל או לשלול את האחריות שלנו או שלך למוות או לפגיעה אישית;
  • להגביל או לשלול את האחריות שלנו להונאה או להצגה שגויה של הונאה;
  • להגביל את התחייבויותינו או אתך בכל דרך שאינה מותרת על פי החוק החל; או
  • לא לכלול התחייבויות שלנו או שלך שלא ניתן להחריג על פי החוק החל.

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

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

מדיניות עוגיות

זוהי מדיניות העוגיות עבור DEVSPEED, הנגישה מ- Devspeed.io

מהן העוגיות

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

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

למידע כללי יותר על עוגיות, אנא קרא “ מהן העוגיות ”.

כיצד אנו משתמשים בעוגיות

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

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

השבתת עוגיות

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

העוגיות שקבענו

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

עוגיות צד ג ‘

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

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

מידע נוסף

Hopefully, that has clarified things for you and as was previously mentioned if there is something that you aren’t sure whether you need or not it’s usually safer to leave cookies enabled in case it does interact with one of the features you use on our site.

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