דילוג לתוכן
  • 0 הצבעות
    20 פוסטים
    1k צפיות
    צבי-שצ

    @mekev כתב בחיפוש שירות: קבלת מייל יומי מסוכם עם היתרות עו"ש בבנקים:

    @יהודי-טוב כתב בחיפוש שירות: קבלת מייל יומי מסוכם עם היתרות עו"ש בבנקים:

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

    בכל כניסה מתקבל קוקיז התקף ל 8 שעות

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

  • 0 הצבעות
    11 פוסטים
    65 צפיות
    צבי-שצ

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

    ללמד את התחום? זה לא מלמד, אבל טוב בתור לפתוח את התיאבון לכל העולם של אבטחה, ושל פיתוח ווב באופן קצת יותר מאובטח, וכמובן צד שרת כדי שלא יזריקו לך sql, או js script ותשלח את זה הלאה למשתמש (xss)

    למי שיש קצת חוש טכני, לחלוטין לא שווה את הכמה גיגות הורדה וזמן להתקנה של האתר שהובא כאן למעלה, זה סתם שורף זמן יקר. ובמקסימום להתקין מהגיטאב ש yossiz שלח פה למעלה, בענף 38, את הקוד פייתון לשרת http, ופשוט להריץ אותו (צריך להריץ גם db, אולי אפשר sqlite, לא בדקתי) במקום את הvm.

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

  • API לקבלת רשימת דפים וסימנים בספרי היסוד התורניים

    תכנות
    6
    1 הצבעות
    6 פוסטים
    41 צפיות
    NH.LOCALN

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

  • להורדה | תוכנה לשינוי סיומות קבצים ללא הדיאלוג

    תוכנה
    4
    6 הצבעות
    4 פוסטים
    116 צפיות
    5215

    @yossiz כתב בלהורדה | תוכנה לשינוי סיומות קבצים ללא הדיאלוג:

    רק שים לב שזה יעבוד רק אם שפת המערכת מוגדר כעברית

    נכון...
    @yossiz כתב בלהורדה | תוכנה לשינוי סיומות קבצים ללא הדיאלוג:

    אגב, האם בדקת מה המחיר שגובה קריאת ה-API של FindWindowExW עשר פעמים בשנייה? האם זה שולי לגמרי?

    זה היה נראה לי בסדר (אני לא מבין בזה)
    800742c8-1184-4519-9f1c-39ad86eb17d6-image.png
    אני טועה?

  • מיקום הקובץ שבו שומר ג'מייל את המיילים במחשב

    תוכנה
    3
    0 הצבעות
    3 פוסטים
    61 צפיות
    yossizY

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

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

    אנא האיר עינינו

    אבל אם ארצה לענות ברוח השאלה בגדר "עם חסיד תתחסד"
    אז התשובה היא:

    C:\Users\User\AppData\Local\Google\Chrome\User Data\Default\IndexedDB\https_mail.google.com_0.indexeddb.leveldb

    כמובן תשובה זו מבוססת על הרבה הנחות סמויות ולא מתחיל להיות שימושי

  • הרחבת מחיצת UFI

    תוכנה
    1
    0 הצבעות
    1 פוסטים
    29 צפיות
    אין תגובות
  • מערכת לניהול תורמים יעבוד גם עם אתר?

    תוכנה
    4
    1 הצבעות
    4 פוסטים
    139 צפיות
    yossizY

    @יגעתי-ומצאתי יש תחליף חינמי ל-airtable בשם nocodb

  • תוסף מוריד וידאו לא עובד

    רשתות
    7
    0 הצבעות
    7 פוסטים
    106 צפיות
    shragaS

    @one1010 כתב בתוסף מוריד וידאו לא עובד:

    @shraga כתב בתוסף מוריד וידאו לא עובד:

    תבדוק במקום לשאול...

    יש תוכנות ללא סוף... נמאס לי כבר למלאות את המחשב בתוכנות רק בשביל ניסיון...

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

  • רשת להעברת קבצים בין שני מחשבים בבית

    רשתות
    17
    0 הצבעות
    17 פוסטים
    271 צפיות
    צדיק תמיםצ

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

  • צילום צ'ק במצלמה שבמחשב הנייד

    תוכנה
    2
    1 הצבעות
    2 פוסטים
    67 צפיות
    dovidD

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

    image.png

    יש גם בכלי האונליין הזה שמתחרה בפוטושופ:
    https://www.photopea.com/
    תחת תפריט עריכה > המר > היפוך אופקי.

  • 1 הצבעות
    6 פוסטים
    106 צפיות
    ר

    @Shmuel754 מדובר ברמי לוי

  • איך אפשר להשיג הגופן Poalim ?

    חומרה
    3
    1 הצבעות
    3 פוסטים
    103 צפיות
    מ

    ברור

  • תיקון מקלדת אפל

    חומרה
    1
    0 הצבעות
    1 פוסטים
    50 צפיות
    אין תגובות
  • התוסף הזה לא עובד Cleaner And Helper

    אינטרנט
    4
    0 הצבעות
    4 פוסטים
    196 צפיות
    אליעזר מירוןא

    שוב הפסיק לעבוד [כל רגע].

  • 0 הצבעות
    20 פוסטים
    829 צפיות
    yossizY

    @THMV כתב בתוסף או סקריפט שיכולים לומר לי מה כבר ראיתי ומה עדיין לא:

    מדובר על האתר הזה

    גם שורה זו "מוציא אותי מהכלים..."

    @THMV תבדוק בהיסטוריית הפוסטים שלי, אני אדם מתון בד"כ

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

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

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

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

  • קובץ אקסל שלא מאפשר העתקה

    תכנות
    5
    0 הצבעות
    5 פוסטים
    201 צפיות
    OdedDvirO

    @שלמה-077 נסה לשמור את החוברת בקובץ חדש, ולבדוק האם העתקה והדבקה אפשרית בקובץ החדש.

  • 18 הצבעות
    2 פוסטים
    285 צפיות
    yossizY

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

    הודעות

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

    מה זה טייפ? (הרחבה של הקטע "מה זה טייפ" בפוסט הקודם)

    התפקיד של טייפים בשפות תכנות זהה לכל השפות: בהנתן ערך כלשהו, המתכנת רוצה לדעת בצורה סטטית (כלומר, בלי להריץ את התוכנה בפועל) איזה פעולות זמינים לו על ערך זה, איך מותר להשתמש בערך.
    אבל יש הבדל מהותי בין ההתעסקות עם טייפים בשפות סטטיות (statically typed) "קלאסיות" (JAVA, C++, C#, etc) לטייפים ב-TS
    כי בשפות קלאסיות אין עיסוק ישיר עם טייפים עצמם. עוסקים עם קלאסים, שהם "תבניות" או "אב טיפוס" לערכים, קלאס מגדיר איזה שדות הערך חייב להכיל, ובאיזה פעולות הוא צריך לתמוך. וכתוצאה נוצר "טייפ" (שהוא הסט של כל הערכים האפשריים שמתאימים לתבנית) אבל אין עיסוק ישיר עם טייפים עצמם
    ב-TS יש עיסוק ישיר עם טייפים עצמם. מחברים טייפים אחד לשני, מחסרים טייפים אחד מהשני, בונים טייפים מטייפים אחרים, דברים שלא קיימים בשפות קלאסיות.
    בשפה קלאסית אין מושג של literal type (הטייפ של ערך literal, סט בעל ערך יחיד). כי כל טייפ הוא תוצאה מהצהרה של קלאס שהוא תבנית להרבה ערכים כי העיקר של הטייפ הוא הפעולות שזמינים עליו.
    לא כן ב-TS שאפשר לעסוק ישירות עם המושג טייפ.
    לכן חשוב לחשוב על טייפים ב-TS כסטים, במקום כתבניות כמו בשפות קלאסיות

    GENERICS

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

    type ApiResponse = { success: boolean data: object | undefined error: string | undefined }

    השימוש ככה:

    type User = { ... } type Transaction = { ... } class ApiClient { // users getUserById(id: number): ApiResponse { ... } updateUser(newUser: User): ApiResponse { ... } // transactions listTransactions(userId: number): ApiResponse { ... } // ... } const apiClient = new ApiClient const res: ApiResponse = apiClient.getUserById(id) if (res.success) { const user = res.data // do something with user } else { console.error(error) }

    הבעיה בקוד הזה הוא שבשורה 18, הדבר היחיד ש-TS יודע על המשתנה user הוא שזה מסוג object אבל הוא לא יודע איזה סוג אובייקט.
    דרך אחת לטפל בזה הוא להצהיר על טייפ בשם UserApiResponse ושם להצהיר על הטייפ המלא של שדה data
    הבעיה היא שצריך לחזור שוב ושוב על הצהרה זו לכל סוג של XXXApiResponse
    אפשרות אחרת הוא להצהיר שהטייפ של res.data הוא User

    const user = res.data as User

    אבל בצורה זו מאבדים את הבטחת האבטחה של TS וצריך לסמוך על המתכנת שהצהיר נכון על הטייפ
    הפתרון הוא להשתמש ב-generic שהוא "טייפ בונה טייפים"
    ככה:

    type ApiResponse<T> = { success: boolean data: T | undefined error: string | undefined } type User = { ... } type Transaction = { ... } class ApiClient { // users getUserById(id: number): ApiResponse<User> { ... } updateUser(newUser: User): ApiResponse<User> { ... } // transactions listTransactions(userId: number): <Transaction[]>ApiResponse { ... } // ... } const apiClient = new ApiClient const res: ApiResponse = apiClient.getUserById(id) if (res.success) { const user = res.data // user is type User } else { console.error(error) }

    בפסאודו קוד ההצהרה דומה לקוד כזה:

    const ApiResponse = function(T: type): type { return new Type(`{ success: boolean data: ${T} | undefined error: string | undefined }`) } תנאים

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

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

    נגיד שה-API מחזיר לפעמים אובייקט יחיד ולפעמים מערך
    אם הוא מחזיר מערך אז יש שדות נוספות בתשובה
    אולי נגיד שדה count שמחזיר כמה אובייקטים יש בסה"כ
    איך נגדיר type כזה?

    type BaseApiResponse<T> = { success: boolean data: T | undefined error: string | undefined } type ApiResponse<T> = T extends any[] ? BaseApiResponse<T> & { count: number } : BaseApiResponse<T>

    אפשר לתרגם את זה לקוד פסאודו זה:

    function ApiResponse(T: type): type { const base = `{ success: boolean data: ${T} | undefined error: string | undefined }` if (T instanceof Array(any)) { return `base & { count: number }` } else { return base } } Mapped Types

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

    אז אפשר לכתוב טייפ חדש

    type User = { name: string foo: string bar: number } type UserUpdate = { name?: string foo?: string bar?: number }

    אבל זה בזבוז נייר דיו וביטים, וכמובן זה לא DRY מה שאמור לזעזע כל מתכנת ששוה משהו

    הפתרון הוא:

    updateUser(newUser: Partial<User>): ApiResponse<User> { ... }

    השתמשנו ב-helper (כך נקראים "פקונציות" אלו שעוזרים לבניית טייפים מבוססים טייפים קיימים) בשם Partial שלוקח טייפ ומחזיר טייפ עם אותם שדות, רק שכולם נהיים אופציונליים
    איך עובד ה-helper הזה?
    נסתכל בקוד המקור:

    type Partial<T> = { [P in keyof T]?: T[P] | undefined; }

    מילת המפתח in עובד ככה: עבור כל חבר ב-union שצד הימני מייצג, הוא מריץ את הביטוי שאחרי הנקדותיים כאשר המשתנה P מייצג את החבר הזה מה-union

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

    נתרגם את זה לפסאודו קוד:

    function keyOf(o: object): union { return new Union(Object.keys(o)) } function Partial(T: type): type { const res = {} for (const P in keyOf(T)) { res[P] = T[P] | undefined } return res }

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

  • AWS - יתרונות Convertible Reserved Instances לעומת Compute Savings Plans

    תכנות
    1
    0 הצבעות
    1 פוסטים
    100 צפיות
    אין תגובות
  • זקוק לכלי להסרת אופיס באופן מוחלט

    תוכנה
    4
    0 הצבעות
    4 פוסטים
    88 צפיות
    מ

    @חבלזון תודה!

  • TextBoxFocusBehavior - לשיפור חוויית המשתמש ב-WPF

    תכנות
    6
    4 הצבעות
    6 פוסטים
    119 צפיות
    pcinfogmachP

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

בא תתחבר לדף היומי!