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

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
קומפיונטק

קומפיונט

@קומפיונט
אודות
פוסטים
280
נושאים
22
קבוצות
0
עוקבים
2
עוקב אחרי
6

פוסטים

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

  • GitHub Copilot עכשיו בחינם
    קומפיונטק קומפיונט

    ואגב, למי שלא אוהב לשתף קטעי קוד שלו עם GitHub, מומלץ לבטל את הסימון באפשרות: 'Allow GitHub to use my code snippets from the code editor for product improvements', בעמוד ההגדרות.


  • GitHub Copilot עכשיו בחינם
    קומפיונטק קומפיונט

    GitHub מכריזה ש - Copilot זמין כעת בחינם עבור כל המשתמשים. זה כנראה מגיע כהמשך לשדרוג Copilot והוספת המודלים החדשים OpenAI o1 ו - Gemini 1.5 Pro. המודלים שזמינים כעת בחינם הם OpenAI GPT o4 ו - Claude 3.5 Sonnet, עם מגבלה של 2000 השלמות קוד ו - 50 הודעות chat בחודש.

    להמשך קריאה:
    https://github.blog/changelog/2024-12-18-announcing-github-copilot-free/


  • Debugging על ViewModel ב-WPF
    קומפיונטק קומפיונט

    @yossiz גם אני נתקל בבעיות האלו, ולפעמים אפילו התוכנה נסגרת מבלי לציין שום exception, קשה לשחזר את זה כי זה קורה רק בפרויקטים גדולים עם קוד אסינכרוני, לדוגמא יש לי Task.Run שבתוכו יש try/catch שהוא נקרא ממתודה אסינכרונית אחרת שגם היא עוטפת אותו ב - try/catch, ואז עם כל הבלגן הזה פתאום נופלת לך שגיאה במקום לא ברור. בפרויקטים קטנים זה פשוט לא קורה.

    לפעמים אפילו vs מציב לי את השגיאה בפונקציה שמריצה את ה thread הראשי באתחול האפליקציה.


  • שימוש נכון ב-await Task.Run ב-C#
    קומפיונטק קומפיונט

    @dovid כתב בשימוש נכון ב-await Task.Run ב-C#:

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

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

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

    הייתי מגדיר את זה טיפה שונה: המטרה העיקרית של Task ו - async/await היא לא לחסום את ה - thread הראשי. המושג הכללי multi-threading נועד גם בין היתר לנצל את ריבוי המעבדים.


  • שימוש נכון ב-await Task.Run ב-C#
    קומפיונטק קומפיונט

    @dovid כתב בשימוש נכון ב-await Task.Run ב-C#:

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

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

    עריכה: אני לא צודק, שימוש ב - ReadLinesAsync לא יטען את שאר השורות.


  • שימוש נכון ב-await Task.Run ב-C#
    קומפיונטק קומפיונט

    @pcinfogmach כתב בשימוש נכון ב-await Task.Run ב-C#:

    כמו"כ קראתי כמה פעמים על משהו שנקרא תנאי תחרות (Race Condition) כשמשתמשים ב-Multithreading - אני חייב לומר שלא בדיוק הבנתי את הנושא.

    קח את הקוד הבא:

    var count = 0;
    
    void Increment()
    {
        for (var i = 0; i < 1_000_000; i++)
        {
            count++;
        }
    }
    
    var task1 = Task.Run(Increment);
    var task2 = Task.Run(Increment);
    
    await Task.WhenAll([task1, task2]);
    
    Console.WriteLine(count);
    

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

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

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

    אם תשנה את שורה 7 לזה:

    Interlocked.Increment(ref count);
    

    או לזה:

    lock(...)
    {
        count++;
    }
    

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

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


  • שימוש נכון ב-await Task.Run ב-C#
    קומפיונטק קומפיונט

    @pcinfogmach כתב בשימוש נכון ב-await Task.Run ב-C#:

    מהם ההדרכות לכתיבת קוד אסינכרוני ב-C# וממה יש להיזהר?

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


  • Debugging על ViewModel ב-WPF
    קומפיונטק קומפיונט

    @pcinfogmach כתב בDebugging על ViewModel ב-WPF:

    שוב נתקלתי בבעיה זו והעצה שלך לא עזרה...

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


  • Debugging על ViewModel ב-WPF
    קומפיונטק קומפיונט

    @pcinfogmach כתב בDebugging על ViewModel ב-WPF:

    ובפרט מה בדיוק עושה מה ש@Mordechai-0 אמר Enable Just my code

    האופציה הזאת מאפשרת לדבג קוד חיצוני שאינו חלק מהפרוייקט שלך, לצורך הדוגמא: אם הכנסת break point באיזשהו מקום בקוד ואתה מתקדם שורה שורה עם F10 או F11, אז אם Enable Just my code מופעל F11 לא יכנס לפונציות שהם לא בקוד שלך, אם הוא מבוטל זה יכנס גם לקוד שהוא ממקור חיצוני באמצעות דה-קומפלציה (או source link).

    בקשר ל-default, זכור לי שזה השתנה בין הגרסאות של visual studio.


  • מדריך: איך לייצר לוקליזציה ב-wpf בצורה פשוטה וקלילה
    קומפיונטק קומפיונט

    @pcinfogmach כתב במדריך: איך לייצר לוקליזציה ב-wpf בצורה פשוטה וקלילה:

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

    הפתרון הוא לכתוב ספרייה משותפת שמאגדת את כל הבסיס לפרויקטים שלך, לדוגמא: classים בסיסיים של ViewModel (או reference לספריית MVVM כלשהיא), Localization, Theme, DI וכל מה שאתה משתמש

    בכל פרויקט חדש אתה פשוט מוסיף reference לספרייה המשותפת (ואולי עוד כמה שורות קוד), וככה חסכת הרבה זמן בהקמה של הפרויקט


  • מדריך: איך לייצר לוקליזציה ב-wpf בצורה פשוטה וקלילה
    קומפיונטק קומפיונט

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


  • קוד ללכידת מסך ב-C# WPF
    קומפיונטק קומפיונט

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


  • TypeScript - קימפול מספר קבצים לקובץ אחד
    קומפיונטק קומפיונט

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

    function showMessage(message) {
      alert(message);
    }
    
    showMessage("hello");
    

    וככה הוא נראה עם - webpack:

    /******/ (function() { // webpackBootstrap
    /******/ 	"use strict";
    /******/ 	var __webpack_modules__ = ({
    
    /***/ 420:
    /***/ (function(__unused_webpack_module, exports) {
    
    
    
    exports.__esModule = true;
    exports.showMessage = showMessage;
    function showMessage(message) {
      alert(message);
    }
    
    /***/ })
    
    /******/ 	});
    /************************************************************************/
    /******/ 	// The module cache
    /******/ 	var __webpack_module_cache__ = {};
    /******/ 	
    /******/ 	// The require function
    /******/ 	function __webpack_require__(moduleId) {
    /******/ 		// Check if module is in cache
    /******/ 		var cachedModule = __webpack_module_cache__[moduleId];
    /******/ 		if (cachedModule !== undefined) {
    /******/ 			return cachedModule.exports;
    /******/ 		}
    /******/ 		// Create a new module (and put it into the cache)
    /******/ 		var module = __webpack_module_cache__[moduleId] = {
    /******/ 			// no module.id needed
    /******/ 			// no module.loaded needed
    /******/ 			exports: {}
    /******/ 		};
    /******/ 	
    /******/ 		// Execute the module function
    /******/ 		__webpack_modules__[moduleId](module, module.exports, __webpack_require__);
    /******/ 	
    /******/ 		// Return the exports of the module
    /******/ 		return module.exports;
    /******/ 	}
    /******/ 	
    /************************************************************************/
    var __webpack_exports__ = {};
    
    
    var _dialogs = __webpack_require__(420);
    (0, _dialogs.showMessage)("hello");
    /******/ })()
    ;
    

    זה הקונפיגורציה המינימאלית של rollup:

    import typescript from '@rollup/plugin-typescript';
    import babel from '@rollup/plugin-babel';
    
    export default {
        input: 'src/index.ts',
        output: {
            file: 'dist/drop-word-script.js'
        },
        plugins: [
            typescript(),
            babel({
                babelHelpers: 'bundled',
                presets: [
                    ['@babel/preset-env']
                ],
                extensions: ['.js', '.ts']
            })
        ],
    };
    

  • TypeScript - קימפול מספר קבצים לקובץ אחד
    קומפיונטק קומפיונט

    @yossiz כתב בTypeScript - קימפול מספר קבצים לקובץ אחד:

    יש גם דגל של TS שאומר לארוז את כל הקבצים לקובץ אחד
    אולי זה יספיק פה
    https://www.typescriptlang.org/tsconfig/#outFile

    ניסיתי את זה, אבל אני רואה שהמינימום האפשרי ב tsc זה es5, ו - extend script זה es3,
    אז אני מבין שצריך להשתמש ב rollup או esbuild עם פלאגינים שמשלבים babel ו - typescript, אם יש למשהו דוגמת קוד לקונפיגורציה זה יעזור לי.

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


  • TypeScript - קימפול מספר קבצים לקובץ אחד
    קומפיונטק קומפיונט

    לבסוף מצאתי איזה ריפו ישן ב - GitHub שעל פיו הוספתי את הקבצים הבאים:

    // webpack.config.js
    
    const path = require("path");
    
    module.exports = {
        entry: "./src/index",
        mode: "production",
        output: {
            globalObject: "this",
            path: path.resolve(__dirname, "dist"),
            filename: "drop-word-script.js",
        },
        module: {
            rules: [
                {
                    test: /\.(ts|js)$/,
                    loader: "babel-loader",
                    options: {
                        presets: [["@babel/preset-env", { loose: true, modules: "commonjs" }], "@babel/preset-typescript"],
                    },
                },
            ],
        },
        resolve: {
            extensions: ['.ts', '.js'],
        },
        optimization: {
            minimize: false, // minification may produce syntax errors because ExtendScript does not support nested ternary operators without parentheses
        },
        target: "browserslist",
    };
    
    // tsconfig.json
    
    {
      "compilerOptions": {
        "target": "ES6",
        "module": "CommonJS",
        "moduleResolution": "Node",
        "noEmit": true,
        "skipLibCheck": true,
        "types": [
          "types-for-adobe/InDesign/2021"
        ]
      },
    }
    
    // package.json
    
    {
      "name": "drop-word-script",
      "version": "1.0.0",
      "main": "dist/drop-word-script.js",
      "scripts": {
        "build": "npm run check-types && npm run build:bundle",
        "build:bundle": "webpack",
        "build:compile": "npx jsxbin -i dist/drop-word-script.js -o dist/drop-word-script.jsxbin",
        "check-types": "tsc --noEmit"
      },
      "keywords": [],
      "author": "",
      "license": "ISC",
      "devDependencies": {
        "@babel/core": "^7.25.2",
        "@babel/preset-env": "^7.25.4",
        "@babel/preset-typescript": "^7.24.7",
        "babel-loader": "9.1.3",
        "jsxbin": "^2.2.0",
        "types-for-adobe": "^7.2.1",
        "typescript": "^5.6.2",
        "webpack": "^5.94.0",
        "webpack-cli": "^5.1.4"
      }
    }
    
    // .browserslistrc
    
    ie 6
    

    אשמח לשמוע אם יש מקום לשיפור


  • TypeScript - קימפול מספר קבצים לקובץ אחד
    קומפיונטק קומפיונט

    אני כותב סקריפט לאינדזיין בעזרת types-for-adobe ואני מעוניין לפצל את הקוד לכמה קבצי ts. שונים וש - tsc יקמפל את כל הקבצים לקובץ אחד, האם זה אפשרי?
    זה קובץ ה - tsconfig.json

    {
      "compilerOptions": {
        "module": "none",
        "noLib": true
      }
    }
    

    השגיאה שאני מקבל כרגע היא:

    error TS1148: Cannot use imports, exports, or module augmentations when '--module' is 'none'
    

  • בקשה | תוכנה עדכנית להורדת ערוץ שלם מיוטיוב בנטפרי
    קומפיונטק קומפיונט

    @פלורידה כתב בבקשה | תוכנה עדכנית להורדת ערוץ שלם מיוטיוב בנטפרי:

    הקישור הזה כולל הורדה MP3

    סתם ככה מומלץ להתקין גם את ffmpeg בשביל האיכות של הוידאו, בלי ffmpeg האיכות הכי גבוהה שאפשר להוריד היא 720p


  • בקשה | תוכנה עדכנית להורדת ערוץ שלם מיוטיוב בנטפרי
    קומפיונטק קומפיונט

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

    נ.ב. כדי להתעלם מהתעודת אבטחה צריך להוסיף את הפרמטר--no-check-certificate


  • עזרה בהתקנת נודביבי בלוקאל
    קומפיונטק קומפיונט

    @יעקב-מ-פינס בהנחה שהדיסק שלך נמצא ב :D והתיקייה של הניסוי זה nodebb-test אז תריץ בשורת הפקודה:

    cd D:\nodebb-test
    

    אם זה לא משנה את המיקום, אז תנסה:

    cd /d D:\nodebb-test
    

  • עזרה בהתקנת נודביבי בלוקאל
    קומפיונטק קומפיונט

    @יעקב-מ-פינס את git אתה יכול להתקין על המחשב, זה לא תופס הרבה מקום, הפקודה git clone וכו' רק מושכת את קבצי הקוד מהשרת, אם אתה רוצה להוריד את קבצי הקוד לדיסק קשיח חיצוני, זה פשוט - רק תנווט בשורת הפקודה לספרייה של הדיסק הקשיח ותריץ את git clone

  • 1 / 1
  • התחברות

  • אין לך חשבון עדיין? הרשמה

  • התחברו או הירשמו כדי לחפש.
  • פוסט ראשון
    פוסט אחרון
0
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום