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

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

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

אביי

@אביי
הפסקת מעקב מעקב

הפורום כעת לקריאה בלבד, לקריאה נוספת.

אודות
פוסטים
1.4k
נושאים
137
שיתופים
0
קבוצות
0
עוקבים
18
עוקב אחרי
0

פוסטים

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

  • עזרה עם שגיאה בהעלאת קובץ בחלקים לימות המשיח בc#
    אבייא אביי
    תכנות

    תגובה: העלאת קובץ בapi לימות המשיח | קוד שבפייתון עובד וב nodejs לא כל כך

    כתבתי את המחלקה הזו,
    הקובץ המועלה - ריק,

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

    Failed to upload chunk 1: {"error":"Server error. Uploads directory isn't
    writable","uploadName":null}
    

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

    using System.Collections.Generic;
    using System.IO;
    using System.Net.Http;
    using System.Threading.Tasks;
    using System;
    using Newtonsoft.Json;
    using Newtonsoft.Json.Linq;
    using System.Windows.Forms;
    
    public class YemotUploader
    {
        // הגדרה אחת בלבד של גודל הצ'אנק
        private static readonly int ChunkSizeBytes = 8000000; // 8MB
    
        private byte[] ReadFileBytes(string filePath)
        {
            return File.ReadAllBytes(filePath);
        }
    
        private List<byte[]> ReadInChunks(string filePath)
        {
            var fileBytes = ReadFileBytes(filePath);
            var chunks = new List<byte[]>();
    
            for (int offset = 0; offset < fileBytes.Length; offset += ChunkSizeBytes)
            {
                int currentChunkSize = Math.Min(ChunkSizeBytes, fileBytes.Length - offset);
                var chunk = new byte[currentChunkSize];
                Array.Copy(fileBytes, offset, chunk, 0, currentChunkSize);
                chunks.Add(chunk);
            }
    
            return chunks;
        }
    
        public async Task<string> UploadFileAsync(string filePath, string tokenYemot, string path, string convertAudio, string autoNumbering)
        {
            var fileInfo = new FileInfo(filePath);
            var contentName = Path.GetFileName(filePath);
            var contentSize = fileInfo.Length;
    
            if (contentSize <= ChunkSizeBytes)
            {
                // העלאת קובץ קטן
                return await UploadSmallFileAsync(filePath, tokenYemot, path, convertAudio, autoNumbering);
            }
            else
            {
                // העלאת קובץ גדול
                return await UploadLargeFileAsync(filePath, tokenYemot, path, convertAudio, autoNumbering);
            }
        }
    
        private async Task<string> UploadSmallFileAsync(string filePath, string tokenYemot, string path, string convertAudio, string autoNumbering)
        {
            using (var httpClient = new HttpClient())
            using (var formData = new MultipartFormDataContent())
            {
                formData.Add(new StringContent(tokenYemot), "token");
                formData.Add(new StringContent(path), "path");
                formData.Add(new StringContent(convertAudio), "convertAudio");
                formData.Add(new StringContent(autoNumbering), "autoNumbering");
    
                var fileBytes = File.ReadAllBytes(filePath);
                var fileContent = new ByteArrayContent(fileBytes);
                fileContent.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("form-data")
                {
                    Name = "\"file\"",
                    FileName = $"\"{Path.GetFileName(filePath)}\""
                };
                fileContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/octet-stream");
                formData.Add(fileContent, "file");
    
                var response = await httpClient.PostAsync("https://www.call2all.co.il/ym/api/UploadFile", formData);
                return await response.Content.ReadAsStringAsync();
            }
        }
    
        private async Task<string> UploadLargeFileAsync(string filePath, string tokenYemot, string path, string convertAudio, string autoNumbering)
        {
            var contentName = Path.GetFileName(filePath);
            var contentSize = new FileInfo(filePath).Length;
            var qquuid = Guid.NewGuid().ToString();
            var chunks = ReadInChunks(filePath);
            var failedChunks = new List<int>();
    
            // העלאת כל הצ'אנקים
            for (int i = 0; i < chunks.Count; i++)
            {
                try
                {
                    using (var httpClient = new HttpClient())
                    using (var content = new MultipartFormDataContent())
                    {
                        var chunk = chunks[i];
                        var offset = i * ChunkSizeBytes;
    
                        content.Add(new StringContent(tokenYemot), "token");
                        content.Add(new StringContent(path), "path");
                        content.Add(new StringContent(qquuid), "qquuid");
                        content.Add(new StringContent(convertAudio), "convertAudio");
                        content.Add(new StringContent(autoNumbering), "autoNumbering");
                        content.Add(new StringContent("yemot-admin"), "uploader");
                        content.Add(new StringContent(contentName), "qqfilename");
                        content.Add(new StringContent(contentSize.ToString()), "qqtotalfilesize");
                        content.Add(new StringContent(chunks.Count.ToString()), "qqtotalparts");
                        content.Add(new StringContent(chunk.Length.ToString()), "qqchunksize");
                        content.Add(new StringContent(offset.ToString()), "qqpartbyteoffset");
                        content.Add(new StringContent(i.ToString()), "qqpartindex");
    
    
                        var fileContent = new ByteArrayContent(chunk);
                        fileContent.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("form-data")
                        {
                            Name = "\"qqfile\"",
                            FileName = $"\"{contentName}\""
                        };
                        fileContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/octet-stream");
                        content.Add(fileContent, "qqfile");
    
    
                        var response = await httpClient.PostAsync("https://www.call2all.co.il/ym/api/UploadFile", content);
                        var responseText = await response.Content.ReadAsStringAsync();
    
                        // בדיקה האם התגובה תקינה
                        if (!response.IsSuccessStatusCode || responseText.Contains("error"))
                        {
                            failedChunks.Add(i);
                            MessageBox.Show($"Failed to upload chunk {i}: {responseText}");
                            Console.WriteLine($"Failed to upload chunk {i}: {responseText}");
                        }
                        else
                        {
                            Console.WriteLine($"Successfully uploaded chunk {i}");
                        }
                    }
                }
                catch (Exception ex)
                {
                    failedChunks.Add(i);
                    Console.WriteLine($"Error uploading chunk {i}: {ex.Message}");
                }
            }
    
            // בדיקה האם כל הצ'אנקים הועלו בהצלחה
            if (failedChunks.Count > 0)
            {
                throw new Exception($"Failed to upload chunks: {string.Join(", ", failedChunks)}");
            }
    
            // שליחת בקשת סיום
            using (var httpClient = new HttpClient())
            {
                var finalFormData = new FormUrlEncodedContent(new Dictionary<string, string>
                {
                    { "token", tokenYemot },
                    { "path", path },
                    { "uploader", "yemot-admin" },
                    { "convertAudio", convertAudio },
                    { "autoNumbering", autoNumbering },
                    { "qquuid", qquuid },
                    { "qqfilename", contentName },
                    { "qqtotalfilesize", contentSize.ToString() },
                    { "qqtotalparts", chunks.Count.ToString() }
                });
    
                try
                {
                    var doneResponse = await httpClient.PostAsync(
                        "https://www.call2all.co.il/ym/api/UploadFile?done",
                        finalFormData
                    );
    
                    var responseText = await doneResponse.Content.ReadAsStringAsync();
                    Console.WriteLine($"Done response: {responseText}");
    
                    // ניסיון לפרסור של הjson הכפול
                    if (!string.IsNullOrEmpty(responseText))
                    {
                        // מציאת ה-JSON הראשון בתגובה
                        int firstBrace = responseText.IndexOf('{');
                        int lastBrace = responseText.LastIndexOf('}');
                        if (firstBrace >= 0 && lastBrace > firstBrace)
                        {
                            string jsonPart = responseText.Substring(firstBrace, lastBrace - firstBrace + 1);
                            try
                            {
                                // בדיקה האם ה-JSON תקין
                                var jObject = JObject.Parse(jsonPart);
                                return jsonPart;
                            }
                            catch (JsonReaderException)
                            {
                                Console.WriteLine($"Invalid JSON response: {jsonPart}");
                            }
                        }
                    }
    
                    return responseText;
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"Error in done request: {ex.Message}");
                    throw;
                }
            }
        }
    }
    

  • זיהוי אקרודים בפייתון
    אבייא אביי
    תכנות

    @אביחיל כתב בזיהוי אקרודים בפייתון:

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

    בוא לnode ותדבר 😃


  • זיהוי אקרודים בפייתון
    אבייא אביי
    תכנות

    @אביחיל שמעתי על pychord, אני חושב אבל שצריך לתת לה פרטים מסויימים על השמע, שניתן לקבל באמצעות הספרייה aubio,

    (אני לא מכיר אישית, מישהו כתב על השילוב ביניהם לפני כמה חודשים איפשהו)


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

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

    דהיינו להוסיף where לפקודה של יצירת האינדקס

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


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

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

    אבל אני עושה אינדקס בד"כ על שדות שאני משתמש בהם הרבה בLEFT JOIN, ORDER, GROUP וכמובן WHERE, אני לא עושה את זה תמיד, אלא רק שדות שמשמשים בכמה שאילתות שמתבצעות בתדירות,

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

    לגבי אינדקסים על שדות בוליאנים, אני לא יודע,


  • באיזה עדכון לווינדוס 10 הוכנס pyqt6?
    אבייא אביי
    תוכנה

    @הפצת-אנקי

    PyQt6 היא לא חלק אינטגרלי מwindows,
    זה ספרייה של python ליצירת ממשקי משתמש גרפיים,

    https://stackoverflow.com/questions/74512247/pyqt6-dll-load-failed-while-importing-qtgui-the-specified-procedure-could-not
    https://forum.qt.io/topic/137365/pyqt6-dll-load-failed-while-importing-qtgui-the-specified-procedure-could-not-be-found/2

    זה נראה שאם תתקין פייתון (עדכני) ואת החבילה pip install PyQt6 זה יפתור את הבעיה,

    אני לא יודע כיצד לפתור את זה ספציפית מול האנקי, אבל הנה התייחסות לזה בפורומים שלהם
    https://forums.ankiweb.net/t/dll-error-when-importing-modules-in-python/34322
    https://forums.ankiweb.net/t/solution-for-anyone-else-who-might-have-this-error/43718


  • רשימת שכונות לפי ערים
    אבייא אביי
    גומלין - כללי

    @Whenever

    רשימת שכונות בישראל לפי ערים.


  • לוקליזציה בhebcal/core בnode
    אבייא אביי
    תכנות

    איך עובד הלוקליזציה בhebcal/core?

    אני רוצה לקבל את זה כ "he-x-NoNikud"

    export const convertToHebrewDate = (dateString) => {
        const date = new Date(dateString);
        const hDate = new HDate(date);
        return `${hDate.getDate()} ב${hDate.getMonth()} ${hDate.getFullYear()}`;
    };
    

    התיעוד כאן אבל אני לא מצליח להבין אותו,


  • API נדרים פלוס, נחסם?
    אבייא אביי
    תכנות

    @Shmuel754 זה לא שגיאה,

    ההבדל הוא בAction.


  • API נדרים פלוס, נחסם?
    אבייא אביי
    תכנות

    @צבי-ש כתב בAPI נדרים פלוס, נחסם?:

    @Nedarim יש חדש?

    מעדכן שעלה תיעוד מסודר, כאן:
    https://matara.pro/nedarimplus/ApiDocumentation.html


  • מכשיר קטן - סמארטפון. לצורך אפליקציה אחת. ניראות כשרה
    אבייא אביי
    מובייל וטבלט

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


  • רשימת שכונות לפי ערים
    אבייא אביי
    גומלין - כללי

    @צעיר אם זה עדיין רלוונטי, עיין כאן

    ואפשר להשתמש בAPI של רשות המיסים,
    https://www.nadlan.gov.il/Nadlan.REST/Main/GetNeighborhoodsListByCityAndStartsWith?cityName=ירושלים&startWithKey=-1


  • כמה משלמים על עבודת תכנות כזאת
    אבייא אביי
    תוכנה

    @אף-אחד-3 אשמח אם תוכל ליצור עימי קשר באישי בהקדם,
    תודה


  • BLOB IMG
    אבייא אביי
    תוכנה

    @צדיק-תמים כתב בBLOB IMG:

    זה לא XSL FO

    זה היה מכוון ל

    ואיך ממירים תמונה לBASE64?


  • BLOB IMG
    אבייא אביי
    תוכנה

    @שרה-רחל זה נורא פשוט, וכתבתם שזה מגיע מinput file אז הנה דוגמה שכתב GPT

    <!DOCTYPE html>
    <html lang="he">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>המרת תמונה ל-Base64</title>
    </head>
    <body>
        <h1>המרת תמונה ל-Base64</h1>
        <input type="file" id="imageInput" accept="image/*">
        <br><br>
        <textarea id="base64Output" rows="10" cols="50" placeholder="כאן יופיע קוד Base64"></textarea>
    
        <script>
            document.getElementById('imageInput').addEventListener('change', function(event) {
                const file = event.target.files[0];
                if (file) {
                    const reader = new FileReader();
                    reader.onload = function() {
                        const base64String = reader.result.split(',')[1];
                        document.getElementById('base64Output').textContent = base64String;
    		    document.getElementById('base64Output').textContent = reader.result;
                    };
                    reader.readAsDataURL(file);
                }
            });
        </script>
    </body>
    </html>
    

    שימו לב לכפילות

                        document.getElementById('base64Output').textContent = base64String;
    		    document.getElementById('base64Output').textContent = reader.result;
    

    פשוט הGPT החליט שלא צריך את הכותרת data:image/png;base64, ואני חושב שבמקרה הזה כן צריך


  • BLOB IMG
    אבייא אביי
    תוכנה

    @שרה-רחל כתב בBLOB IMG:

    קובץ XSL FO שהוא עם תגיות דומה לHTML

    יותר נכון לומר: בתבנית XML

    אני חושב שצריך לטעון את זה באמצעות fo:external-graphic, וכblob זה אומר לטעון את התמונה כbase64.

    <fo:table-cell>
        <fo:block>
            <fo:external-graphic src="url('data:image/jpeg;base64,/9j/6zLrSlCpAAADLhanVtYgAAAB5q3+FHf8fXrS49qMfhQAn40oo/DpSqDnoc0Af/2Q==')"></fo:external-graphic>
        </fo:block>
    </fo:table-cell>
    

    https://stackoverflow.com/questions/26155275/how-to-load-image-by-xsl-fo


  • הרצת פוקציה בקבלת מייל חדש
    אבייא אביי
    תכנות

    @מעמד-מוצלח בגוגל סקריפט אין טריגר להפעלה בעת קבלת מייל חדש,

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

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

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

    כאן תוכל לקרוא עוד על הטריגרים
    https://developers.google.com/apps-script/guides/triggers/installable?hl=he

    וכאן יש דוגמה לאחזור הודעות מתווית ספציפית בשם "MyLabel"
    https://developers.google.com/apps-script/reference/gmail/gmail-label?hl=he#getthreads


  • קומבוקס בvue
    אבייא אביי
    תכנות

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

    בינתיים השתמשתי עם vuetify למרות שהוא משתמש בערכת העיצוב של מטריאל ואני משתמש ב daisyui שמבוסס על tailwind, השילוב לא יצא כזה גרוע

    c17eb9c3-2829-4b69-84fa-89864de2eb6b-image.png


  • קומבוקס בvue
    אבייא אביי
    תכנות

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

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


  • לימודי נהיגה
    אבייא אביי
    תחבורה ורכב

    @אי-עוד-מלבדו אולי תנסה להגיש ערעור?

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 70
  • 71
  • 6 / 71
  • התחברות

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