דילוג לתוכן

מחשבים וטכנולוגיה

32.3k נושאים 352.3k פוסטים

קטגוריות משנה


  • 508 נושאים
    2k פוסטים
    פ
    @אהרון-יהודה כתבתי על זה מסודר במדריך שלי להזמנות מאלי אקספרס , כדאי לקרוא גם את זה כדי לדעת ממה צריך להזהר כדי שאנשים אחרים לא ירוויחו על חשבונכם, קישור ישיר לרישום לקאשבאק המוצלח מניסיון אישי ש @שמואל-בר-נס המליץ עליו כאן cashback מומלץ בחום להתקין גם את התוסף למחשב (למרות שהתוסך לא עובד חלק).
  • 24k נושאים
    257k פוסטים
    ב
    @שלומפר אני מסופק בדבר. (80% חיובי) אני שומע מצויין מאד השמע ברור וחד מאד, אבל אני לא בטוח ששומעים אותי הכי ברור שיש. אני בכל אופן ממליץ עליהם ל4X4 יותר מהליברטי ויותר מP40I לפחות מניסיון אישי יכול להיות שיהיו שיחלקו עלי.
  • חומרה ורכיבי מחשב

    2k 18k
    2k נושאים
    18k פוסטים
    משה מזרחימ
    @בנימין-מחשבים מעביר הכל חוץ מאקטוב ולא יודע למה זה פשוט ככה , ולאקטב זה חצי דקה (אם נתקע..)
  • 4k נושאים
    39k פוסטים
    ד
    @אין כתב בשיתוף | 'פלאפון מייל' - כולל קבלת ושליחת מיילים דרך הפלאפון, קריינות מקצועית, ועוד...: @פלמנמוני זה יעבוד? ||` רעיון מצוין. מכיוון שהקוד שלך כבר מוגדר לעבוד עם Gemini (יש לך GEMINI_API_KEY), הפתרון הכי אלגנטי וחכם הוא להשתמש ביכולות ה-Multimodal (רב-חושיות) של המודל. המודלים החדשים של ג'מיני (כמו gemini-1.5-flash או 2.0) יודעים "להסתכל" על קובץ PDF או תמונה, ולהוציא משם את הטקסט או לתאר מה רואים, וכל זה בעברית. להלן השינויים הנדרשים בקוד. שלב 1: הוספת פונקציה לניתוח קבצים הוסף את הפונקציה החדשה הזו לסוף הסקריפט שלך. הפונקציה הזו מקבלת קובץ, שולחת אותו לג'מיני ומבקשת סיכום קצר בעברית. שלב 2: עדכון הפונקציה sendToYemot עליך להחליף את הפונקציה sendToYemot הקיימת בקוד שלך בפונקציה המעודכנת הזו. מה השתנה? הוספתי לולאה שעוברת על הקבצים המצורפים, קוראת לפונקציה החדשה שיצרנו, ומוסיפה את התיאור שלהם לגוף ההודעה (ttsString). סבר טכני קצר מודל gemini-1.5-flash: בחרתי במודל זה כי הוא מהיר מאוד ("Flash") ויעיל כלכלית, ובעל יכולת ראייה (Vision) חזקה. הגבלת קבצים: בקוד החדש, הגדרתי שהמערכת תנתח רק את 2 הקבצים הראשונים (Math.min(Attachments.length, 2)). הסיבה היא שכל קובץ לוקח זמן עיבוד (2-4 שניות), ואם למייל יש 10 קבצים מצורפים, הסקריפט עלול לחרוג מזמן הריצה המותר של גוגל (Timeout). סיכום: הפרומפט (Prompt) שהגדרתי לג'מיני מבקש ממנו במפורש "לסכם בקיצור נמרץ". זה חשוב כי בטלפון לא נוח להקשיב לסיכומים ארוכים. function analyzeFileWithGemini(fileBlob) { if (!GEMINI_API_KEY) return ""; const mimeType = fileBlob.getContentType(); // רשימת סוגי קבצים נתמכים (PDF ותמונות) const supportedTypes = ['application/pdf', 'image/jpeg', 'image/png', 'image/webp']; if (!supportedTypes.includes(mimeType)) { Logger.log(`סוג קובץ לא נתמך לניתוח: ${mimeType}`); return ""; } // בדיקת גודל קובץ (מומלץ לא לשלוח קבצים ענקיים לסקריפט) if (fileBlob.getBytes().length > 4 * 1024 * 1024) { // מגבלה של 4MB למניעת עומס return " [קובץ מצורף גדול מדי לניתוח] "; } const base64Data = Utilities.base64Encode(fileBlob.getBytes()); const apiUrl = `https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-flash:generateContent?key=${GEMINI_API_KEY}`; const payload = { "contents": [{ "parts": [ {"text": "נתח את הקובץ המצורף. אם זה מסמך טקסט או PDF, סכם את התוכן העיקרי שלו בקיצור נמרץ בעברית (עד 3 משפטים). אם זו תמונה, תאר מה רואים בה בקיצור בעברית. אל תוסיף הקדמות, רק את התוכן."}, { "inline_data": { "mime_type": mimeType, "data": base64Data } } ] }] }; const options = { 'method': 'post', 'contentType': 'application/json', 'payload': JSON.stringify(payload), 'muteHttpExceptions': true }; try { const response = UrlFetchApp.fetch(apiUrl, options); const json = JSON.parse(response.getContentText()); if (json.candidates && json.candidates[0].content) { const summary = json.candidates[0].content.parts[0].text.trim(); return `. תוכן הקובץ ${fileBlob.getName()}: ${summary}. `; } } catch (e) { Logger.log(`שגיאה בניתוח קובץ עם ג'מיני: ${e}`); } return ""; } function sendToYemot(message) { const lMap = {'א':'אל"ף','ב':'בי"ת','ג':'גימ"ל','ד':'דל"ת','ה':'ה"א','ו':'ו"ו','ז':'זי"ן','ח':'חי"ת','ט':'טי"ת','י':'יו"ד','כ':'כ"ף','ל':'למ"ד','מ':'מ"ם','נ':'נו"ן','ס':'סמ"ך','ע':'עי"ן','פ':'פ"א','צ':'צדי"ק','ק':'קו"ף','ר':'רי"ש','ש':'שי"ן','ת':'ת"ו'}; const MessageDate = message.getDate(); const FormattedHebrewDate = new Intl.DateTimeFormat('he-IL-u-ca-hebrew').format(MessageDate); const HebrewDay = ['ראשון', 'שני', 'שלישי', 'רביעי', 'חמישי', 'שישי', 'שבת']; const DateParts = FormattedHebrewDate.split(" "); const NumericDay = gimatria(DateParts[0]).split('').map(c => lMap[c] || c).join(' '); const MonthAndYear = DateParts.slice(1, -1).join(" "); const NumericYear = gimatria(DateParts[DateParts.length - 1].slice(-3)).split('').map(c => lMap[c] || c).join(' '); let subjectTranslate, bodyTranslate; try {subjectTranslate = LanguageApp.translate(message.getSubject(), '', 'iw'); } catch (err) {Logger.log(`Error translating subject: ${err}`); subjectTranslate = message.getSubject();} try {bodyTranslate = LanguageApp.translate(message.getPlainBody(), '', 'iw'); } catch (err) {Logger.log(`Error translating body: ${err}`); bodyTranslate = message.getPlainBody();} // --- חלק חדש: טיפול בקבצים מצורפים --- const Attachments = message.getAttachments(); const AttachmentNames = Attachments.map(file => file.getName()); let attachmentsContentSummary = ""; // לולאה לניתוח תוכן הקבצים (מוגבל ל-2 קבצים ראשונים למניעת עומס זמן ריצה) if (GEMINI_API_KEY && Attachments.length > 0) { for (let i = 0; i < Math.min(Attachments.length, 2); i++) { attachmentsContentSummary += analyzeFileWithGemini(Attachments[i]); } } // ------------------------------------- const fullSender = message.getFrom(); let senderName = fullSender; if (fullSender.includes('<')) {senderName = fullSender.split('<')[0].trim(); if (senderName === "") {senderName = fullSender.split('<')[1].split('@')[0].trim();} } else if (fullSender.includes('@')) {senderName = fullSender.split('@')[0].trim();} const TtsStringTitle = `${TextSender}. ${senderName}. ${TextSubject}. ${subjectTranslate}. ${AttachmentNames.length ? `${TextAttachments}. ${AttachmentNames.join(', ')}` : `${TextNoAttachments}.`} ${TextHour} ${MessageDate.getHours()} ${TextAnd} ${MessageDate.getMinutes()} ${TextMinute}. ${TextDay} ${HebrewDay[MessageDate.getDay()]}. ${TextDate} ${NumericDay} ${MonthAndYear} ${NumericYear}.`; // הוספת סיכום הקבצים לגוף ההודעה let ttsString = `${TextBody}. ${bodyTranslate}. ${attachmentsContentSummary}`; ReplacementPatterns.forEach(pattern => {const regex = new RegExp(pattern[0], 'g'); const replacement = pattern[1]; ttsString = ttsString.replace(regex, replacement);}); // כאן הגדלתי מעט את החיתוך כי נוסף טקסט מהקבצים ttsString = ttsString.substring(0, 3500) + TextEnd; Logger.log("מחרוזת כותרת להקראה:", { TtsStringTitle }); Logger.log("מחרוזת גוף להקראה (כולל קבצים):", { ttsString }); const MaxFileName = fetch('GetIVR2DirStats', { token, path: PathArchive }); if (MaxFileName.responseStatus === 'OK') {const LastFileName = MaxFileName.maxFile?.name?.split('.')[0]; const NewFileNumber = (LastFileName !== undefined) ? Number(LastFileName) + 1 : 0; const NewFileName = NewFileNumber.toString().padStart(3, '0'); if (GOOGLE_API_KEY) {Logger.log("נמצא מפתח API. משתמש ב-Google TTS ליצירת קבצי שמע."); try {const titleBlob = googleTts(TtsStringTitle, GOOGLE_API_KEY, GOOGLE_TTS_LANG, GOOGLE_TTS_VOICE); const bodyBlob = googleTts(ttsString, GOOGLE_API_KEY, GOOGLE_TTS_LANG, GOOGLE_TTS_VOICE); if (!titleBlob || !bodyBlob) {Logger.log("שגיאה ביצירת קבצי השמע מ-Google TTS. עובר למצב UploadTextFile."); throw new Error("TTS failed");} Logger.log(`מעלה קבצים לימות המשיח...`); const UploadResultTitle = uploadBlobToYemot(titleBlob, PathArchive, `${NewFileName}-Title.mp3`, token, true); const UploadResult = uploadBlobToYemot(bodyBlob, PathArchive, `${NewFileName}.mp3`, token, true); return UploadResult && UploadResultTitle; } catch (e) {Logger.log(`אירעה שגיאה כוללת בתהליך ה-TTS. ממשיך ל-UploadTextFile: ${e}`);} } Logger.log("חסר מפתח API או שה-TTS נכשל. משתמש במנגנון UploadTextFile."); try {const UploadResultTitle = fetch('UploadTextFile', {token, what: `${PathArchive}${NewFileName}-Title.tts`, contents: TtsStringTitle,}); const UploadResult = fetch('UploadTextFile', {token, what: `${PathArchive}${NewFileName}.tts`, contents: ttsString}); return UploadResult.responseStatus === 'OK' && UploadResultTitle.responseStatus === 'OK'; } catch (e) {Logger.log(`אירעה שגיאה בשימוש ב-UploadTextFile: ${e}`); return false;}}return false; }|| איך אני מגיע לזה ומה אני צריך לשנות כדי שאשמע בקול גימיני ושאוכל לשמוע הקבצים
  • 140 נושאים
    2k פוסטים
    י. פל.י
    @תמיד-עוזר קירו, אטלס [דפדפן GPT].
  • 198 נושאים
    2k פוסטים
    cfopuserC
    סתם רעיון כללי כזה שנתקלתי לאחרונה מכיון שלינוקס היא מבוססת cli אז אג'נטים למינהם (כמו קלוד קוד לדוג'), יכולים לפתור בעיות ולבצע פעולות בקלות כך שגם משתמש 'רגיל' יכול לתפעל את המערכת בקלות. Spoiler כמוהן לא לוקח אחריות על promt injections למינהם. אגב לגבי office הגרסאות ווב גם ככה יותר נוחות. ולגבי התוכנות שצריך הרבה נתמכות על ידי wine ודומיו וכדאי לבדוק זאת לפני.
  • 955 נושאים
    13k פוסטים
    ע"ה דכו"עע
    @בנימין-מחשבים כתב בבקשות / העלאות מערכות הפעלה מחברי הפורום: @הלל-משה-כלדיאן הקפצה. אסור על פי חוקי הפורום להקפיץ נושא ישן לאחר 60 יום Spoiler וכן, אני יודע ש"המשתמשים לא אמורים לכתוב בשום צורה או כיוון, וכ"ש לא לפתוח על זה דיונים בתוך דיונים של משתמשים אחרים, מה נוגד לחוקים ומה לא" אני כותב את זה באמת רק כדי להפנות את תשומת ליבך לזה לשם מה הנושא הזה נעוץ אם לא בשביל שהוא ימשיך לשמש לתמיד? כמו שהוא התאים מ2019 עד לפני 9 חודשים, הוא מתאים גם לעכשיו.
  • 53 נושאים
    518 פוסטים
    ה
    מישהו מכיר גימבל [מייצב צילום} שעובד למצלמת SX740 וכן אם מישהו יודע אם הגימבל שמוכרים עבור מצלמת G7 עובדת לSX740
  • 2k נושאים
    19k פוסטים
    M
    סורי צודק כי אם יש גירסה אז כנראה כבר יתקנו את זה? אם כבר אתה מתמצא בהגדרות של הנגן הזה. איך אפשר להוסיף נעילה וצלילים תודה רבה רבה