אם יש לכם מדריך לפרסום, תוכלו לשלוח לי למייל המופיע בחתימה.
אם המדריך יימצא מתאים, הוא יפורסם בל"נ, ע"ש הכותב.
dovid
-
פרסום מדריך -
תקלה כללית בשירות גוגל?שימו לב שגוגל בצעדים די דרמטיים ופתאומיים ומאוד לא אופייניים,
מנסים לחסוך במקום לאחרונה: הם הודיעו שהם ימחקו חשבונות לא פעילים של ג'מייל (זה לדעתי כמות אסטרונומית של מידע שייעלם מכדור הארץ), וגם הם הפסיקו של שירות העלאת תמונות בחינם (קרוב לודאי כמות עצומה כל יום).
כעת הם אומרים שהיה זיהוי שגוי של אי קיבולת, שזה ממש עושה לי תחושה של קשר בין הדברים.
מה יכול להיות? לא יודע. -
תקלה באתרבשעה האחרונה קרתה תקלה מצערת שנבעה משרשרת טעויות אנוש,
בעקבות התקלה נמחקו המון הודעות ואף משתמשים.
אנחנו עובדים על כך כעת, אתכם הסליחה. -
Regex - ביטויים רגולרייםRegex Flags
בRegex יש נושאים "פתוחים", ובדרך כלל השפות שמריצות Regex מאפשרות לקבוע "דגלים" כדי להחליט על האופן הרצוי (זה קרוי באנגלית בשמות flags או modifiers).
למשל, הגיוני שירצו שהRegex יתעלם מאותיות קטנות או גדולות, כלומר במקום לכתוב כל פעם את האותיות בשתי אופציות (כשזה a-z זה קל, אפשר לכתוב A-Za-z ואפילו פשוט A-z אבל כשזה מילים מסויימות זה מתחיל להיות קשה עד בלתי אפשרי, כי כל אות צריכה שתי אופציות), אנו נרצה שמבחינת הRegex אין הבדל כלל בין אות קטנה לאות גדולה. בשביל זה יש דגל בשם i, שהוא ראשית המילה insesetive = לא רגיש.
ניתן להחיל (חלק מה)דגלים רק על חלק מהביטוי (זה נקרא inline), זאת ע"י סימן שאלה שמייד אחריו באים הדגלים, נקודתיים, והחלק עליו יחולו הדגלים. למשל:(?i:javascript) Regex
זה ימצא javascript לא משנה עם אותיות קטנות גדולות או ערבוב שלהם, אבל יחייב שאח"כ יש Regex שהכל קטן והR גדול.
(ניתן מאידך להעביר דגלים על כל הביטוי כולו - שלא כחלק מהביטוי, צורת העברת הדגל למנגנון הRegex משתנה ממימוש שפה לאחרת. בJS בליטרל ניתן לכתוב מייד אחרי הביטוי (אחר הסלש את האותיות שמייצגות דגלים) בהמשך בע"ה כשאגיע למימוש בJS אראה דוגמה).
הדגלים הנפוצים הם:
g - פירוש, global והכונה, שאנו רוצים יותר מתוצאה אחת. לולי הדגל הזה, בשפות בהם הוא נתמך, חוזרת התוצאה הראשונה המתאימה בלבד, לחיסכון בביצועים. הg זה דגל שכמובן לא שייך על חלק מהביטוי.
m - מרובה שורות - multiline. זה משנה את התנהגות ה$^ במקום לתחילת וסוף הטקסט כולו לתחילת וסוף כל שורה ושורה בטקסט.
i - אי רגישות לאויות קטנות\גדולות, נתמך גם על חלק מהביטוי.
s - זה סיפור רציני. הפירוש של זה הוא single line, כלומר "ראה את כל הטקסט כיחידה, אחת, כאילו הוא בשורה אחת". לא, אין הכונה לשנות את התפקוד של \n או של $. אלא זה בא לשנות התנהגות ברירת מחדל משונה בRegex שהנקודה (שהיא הגוקר מספר אחד בRegex), אף שכוללת כל תו ביקום, לא כוללת קפיצת שורה! וזה אומר שחיפוש .* יחזיר שורות שורות במקום תוצאה אחת ארוכה. והחיפוש של A.*B לא יחזיר תוצאה אם ביניהם יש קפיצת שורה. הדגל הזה מתקן את זה למצב ההגיוני בו נקודה שווה כל תו בעולם כולל קפיצת שורה.
U (גדול!) - פירוש: Ungreedy - לא חמדן. זה דגל שהופך את התנהגות ה+ וה* וה{} ל"עצלנים", לוקחים כמה שפחות (זה שקול לסימן שאלה אחרי מציין הכמות שפועל בדומה לזה).(אגב, אחד המימושים המהירים ביותר של Regex הוא כנראה הpcre של php, ויש לו גם יותר דגלים שמראים שהRegex קיבל יחס ממש חם במימוש הזה).
בפעם הבאה אני מקוה להתחיל להראות איך לעבוד ספציפית בJS.
-
בקשה להמלצות על ערוצים/סרטונים של תכנות והמסתעףקודם כל אני משתף מה שעורר לי את הטריגר לעניין:
https://github.com/ErikCH/DevYouTubeList
לא להתלהב מידי, בנטפרי הכל סגור, אבל אני מפרסם את זה למקרה שמישהו מכיר מתוך זה ערוץ ממש טוב גם באנגלית כדי לחפש את סרטוניו בגוגל..
תודה מראש!נ.ב. ריפו על ספרים
https://github.com/EbookFoundation/free-programming-books -
js - בעיה בקידוד CSV שיתמוך בעברית באקסלהקוד קצת מסורבל וטיפונת שגוי, אז שיפרתי אותו:
function exportToCSV() { const rows = [...document.querySelectorAll('#table-report-sales tr')]; const singleRow = (e) => [...e.querySelectorAll('th, td')].map(x => x.innerText).join(','); const csvContent = '\uFEFF' + rows.map(singleRow).join('\n'); const link = document.createElement("a"); link.setAttribute("href", 'data:text/csv; charset=utf-8,' + encodeURI(csvContent)); link.setAttribute("download", "sales_report.csv"); document.body.appendChild(link); link.click(); }
-
קוד JS אמור ליצור אלמט לתוך HTML ולא עובד לי@ek0583232948 מי שלומד תכנות הוא מבחינתי יותר ממתחיל,
והוא מתכנת מהסוג שהכי כיף להתכתב איתו בפורום.
(כי בשונה מהרבה שואלים, הוא רוצה להצליח בלימוד ולא בתוצאה ספציפית כל שהיא). -
איך להמנע מהזרקת SQLאני מנסח שני כללים בלבד:
א. ערנות אנושית: להסתכל תמיד על החלקים הדינמיים בשאילתה (כמו הפרמטר ID) ולתת לב מאין המידע בא, ומה ההשלכות למקרה של מידע שגוי או עויין.
ב. שימוש בכלים הנכונים: לעבוד לפי הספר של הספריה/טכנולוגיה (במקרה שלך, הדרך שספריית MSSQL מציעה עבור שתילת קלט דינמי בשאילתה בצורה בטוחה).נתחיל מהכלל השני.
בשונה מכל תחום בתכנות בהם זה נחמד להיות מקורי ולממש לבד, באבטחה אתה צריך כמה שפחות לממש בעצמך.
מה שהצעת עם הרג'קס ועטיפת הגרש הוא ניסיון מימוש עצמי של טיהור קלט.
אתה דומה למישהו שמנסה לחשוב מאיפה הגנב ייכנס, מוצא רעיון בראש, סוגר את הפרצה ונרגע. הבעיה היא שהרעיון הוא אחד מתוך מאה! איך תדע שעברת על כל הרעיונות?
למשל לענייננו, לעטוף בגרש לא עוזר כלום. אם התוקף שלנו שתל גרשים בתוך המחרוזת, למשל הקלט הזהid=123'; update users set pass = 123 where name = 'admin' OR name = '
יעבוד מצויין עם עטיפת גרש מכל צד.
אז מה נשאר? ניקוי עם רגקס. ברג'קס תוודא שאין מה? אם תוודא שאין גרשים למשל, תצטרך להתמודד עם קלטים לגיטמיים שמכילים גרשים! מה, אסור להכניס לטבלה שם רחוב עם גרש?
מה הפתרון? להכיר את הדרך שהספריה/טכנולוגיה שאתה עובד איתה הכינו למקרה הזה, חכמת ההמונים היא מעולה כדי לסגור פרצות. במקרה של MSSQL הם ממליצים להשתמש בES6 Tagged template literals שזה בדיוק מה שעשית רק שאתה הפכת הכל לטקסט לפני שזה עובר למתודה, בשביל שהמתודה היא זו שתחליט איך להשתיל את הטקסט צריך לעשות ככה:app.get('/api/jobs', (req, res) => { const req = pool.query`SELECT * FROM users where id = ${where_string}`; req.then(result => res.send(result.recordset)); req.catch(err => console.error(err)); });
שים לב שהטקסט מגיע מייד אחרי שם הפונקציה query בלי סוגריים! זה נקרא tag function וזה הדרך הנוחה לתת לספריית הMSSQL את השליטה בטיהור הפרמטרים. יש דרך אחרת וזה שימוש מפורש בפרמטרים, זה טיפה יותר טרחה.
יש לשים לב שהכלל השני לא עוזר כלום בלי הראשון.
למשל אם הid הוא מספר תקין והכל בסדר אבל הוא פונה לרשומה שאסור למשתמש לגשת/לעדכן אליה/אותה? כל מקום שיש נתונים דינמיים בשאילתה זה אמור להדליק את מנגנון העירונות שאמור לבדוק תמיד את פונטציאל הסכנה במקרה שפספסנו משהו והנתונים חופשיים, וכשלב ב' אחרי אומדן הסכנה שחזור הדרך בהם הנתונים מתגלגלים, וכמה הדרך מאובטחת.כל יתר הדברים שהזכרת, הינם לדעתי לא מועילים או לא נצרכים.
ברור שזה פרקטיקה טובה לצמצם הרשאות, אבל זה לא נדרש (זה בעיקר טוב נגד באגים או טעויות אנוש קשות). -
עזרה באקסל@one1010 אני סוגר פה את הנושא,
ואתן לך כמה כללים לגבי נושאים דומים:
א. זה צריך להיות בגומלין, כי זה לא קשור בכלל לדיון על איך אלא בקשת תוצאה.
ב. נוסח השאלה צריך שלא להיות כלל להיות בסגנון "איך עושים", אלא "בבקשה מי מוכן לעשות/לכתוב לי" על כל הוריאציות.
(הנוסח האמיתי הוא מי מוכן לעשות לי עבודה קטנה באקסל וכודמה).
ג. חובה עליך לעשות כל מאמץ כדי לחסוך את מאמץ מהעונה או שאלות של הלוך ושוב.
זה אומר תמיד לצרף קובץ אלא אם כן יש סיבה שמונעת ממך והסיבה זו היא לא הטרחה או המאמץ, ויש לציין אותה כדי לפייס את המתייחסים.בהצלחה.
-
איך לומדים לבנות תוכנה@יעקב-מ-פינס כתב באיך לומדים לבנות תוכנה:
איזה כלים אני צריך בשביל לכתוב תוכנה (תוכנות לכתיבת קוד, תוכנות לבדיקת קוד, תוכנות לקימפול וכו'), איזה שפת תכנות כדאי לי ללמוד, על איזה סדר גודל של פרוייקט כדאי לי ללכת בתור התחלה וכו'
כל הרשימה הזו היא טפל.
העיקר זה התכנות ולא הכלים/שפות/איך מתחילים.
אך אכן כל מדריך שמלמד לתכנת לבוש על שפה כל שהיא ולעיתים גם עם כלי/טכנלוגיה כל שהיא, אבל זה רק לבוש למושג תכנות, שזה הרגלת הראש לנתינת הוראות לוגיות למחשב ולהשיג עם זה תוצאות רצויות, והיכרות עם "נימוסי" והרגלי התקשורת הזו שזה אותו דבר ב99% אחוז בכלל האפשרויות שעומדות בפני מפתח תוכנה.
אני ממליץ להתחיל מJavaScript לדפדפן.
(JS היא דה פקטו השפה הכי שימושית כיום, וגם אריכטקטורת הפיתוח בצד לקוח כיום היא כה משמעותית שלא נראה לי שיש מישהו שזה יהיה עבורו חומר שמיותר לו להמשך).
זה אומר למצוא מדריך שאומר איך לעשות שלום עולם בHTML+JAVASCRIPT ומכאן לאט לאט להתקדם.
(הכלי שמייד תצטרך זה VSCODE, אבל בשלב זה הוא נושא חסר משמעות לגבי רכישת היכולות תכנות). -
linux rm-rf on win@ש-ב-ח כתב בlinux rm-rf on win:
סליחה על ההטרדה.
שאלה טובה מוסיפה לאיכות הפורום, קל וחומר כשיש אחריה תשובה.
-
אלגוריתם: סינון מערך (#C)@קומפיונט
אם אתה רוצה את האלמנט ממש, אז הייתי עושה ככה:var testList = new[] { new { id = 1, version = 1}, new { id = 1, version = 5}, new { id = 2, version = 4}, new { id = 3, version = 3}, new { id = 3, version = 2}, new { id = 3, version = 1}, new { id = 1, version = 12}, new { id = 1, version = 155} }; var distinct = testList.GroupBy(l => l.id).Select(x => x.OrderByDescending(y => y.version).First());
אם מעניין אותך הערכים של הגירסה ומזהה ואתה לא צריך את האלמנט עצמו הייתי עושה יותר פשוט:
var distinct2 = testList.GroupBy(l => l.id).Select(x => new { maxVersion = x.Max(y => y.version), id = x.Key});
-
המלצה / בקשה על מהות הפורום תכנות@Y-Excel-Access אמר בהמלצה / בקשה על מהות הפורום תכנות:
כבר כך אני לא הבנתי מה מודל הרווח באתר הזה שמבחינתי הוא רק מפעל חסד
כמו מודל הרווח שלך שאתה עוזר פה.
זה כולם פה אותו דבר, זה כיף לעזור במה שקל לך.
זה גם מצוה וגם מחכים ומעשיר, וגם תרפיה בעבודה. -
JS ביטוי רגולארי לפיצול כתובת לעמודות רחוב בית/דירה ועיר@חוקר יש לי תוכנית מסובכת לומר לך מה לעשות,
ואז אני נזכר שאני אישית משתמש בAPI של גוגל כאני צריך כאלה דברים.זה ממש פשוט, והרבה יותר מדוייק
https://maps.googleapis.com/maps/api/geocode/json?key=XXXXXX&language=he&result_type=street_address&address=הרצל 17התוצאה נראית ככה:
{ "results" : [ { "address_components" : [ { "long_name" : "17", "short_name" : "17", "types" : [ "street_number" ] }, { "long_name" : "הרצל", "short_name" : "הרצל", "types" : [ "route" ] }, { "long_name" : "תל אביב-יפו", "short_name" : "תל אביב-יפו", "types" : [ "locality", "political" ] }, { "long_name" : "מחוז תל אביב", "short_name" : "מחוז תל אביב", "types" : [ "administrative_area_level_1", "political" ] }, { "long_name" : "ישראל", "short_name" : "IL", "types" : [ "country", "political" ] } ], "formatted_address" : "הרצל 17, תל אביב-יפו, ישראל", "geometry" : { "location" : { "lat" : 32.0616741, "lng" : 34.7703751 }, "location_type" : "ROOFTOP", "viewport" : { "northeast" : { "lat" : 32.06301403029149, "lng" : 34.7716624802915 }, "southwest" : { "lat" : 32.0603160697085, "lng" : 34.7689645197085 } } }, "place_id" : "ChIJv09_XJxMHRURWh4zBRBM2y0", "plus_code" : { "compound_code" : "3Q6C+M5 תל אביב-יפו, ישראל", "global_code" : "8G4P3Q6C+M5" }, "types" : [ "street_address" ] } ], "status" : "OK" }
אם אתה מתעקש על אלגוריתם,
אני מניח שכל הערים נמצאות בקצה המחרוזת.
אתה צריך לטעון את כל הערים למערך, ולבדוק עם endsWith אם המחרוזת מסיימת בטקסט הרצוי. אם יש רק תוצאה חיובית אחת זו העיר, אם יש יותר מאחת, צריך לעבור לבדוק אם הרחוב קיים שם וזה על ידי רג'קס שמוריד כל מספר וסימן אחורה, עד הטקסט הקודם ואז לולאה על הרחובות המתאימים לאותה העיר. בקיצור זה לא עבודה נחמדה. -
אקסס משותף@ארי סליחה בכפליים, לא באתי להעיר/לפגוע בך, סה"כ הסברתי את הקושי ואת לגיטימיותו (והדגשתי שאני מסכים עם השאלה שלך והיא גם לגיטימית).
אני שמח מאוד שאתה בקבוצה וכאברך כולל בטח שאתה תורם לאיכותה. -
פה זה פורום תכנות. לא IVR, לא אסטריסק!שימו לב שנושא השאלה שלכם יהיה תכנותי ככל האפשר,
והשתדלו לפרט בדיוק את הרקע: פלטפורמה נושא וכדומה.
שאלות ש"בונות" על ידע של מכרים מתוך הפורום עושות תחושה לכל היתר שהם לא בתמונה...אנא זהירותכם.
-
עיצוב כריכה לחוברתאני ממליץ שתפנה ל מקצועות.com
-
סלקום מחללים שבת!!מה קשור מתי הם עובדים.
שלא יעיזו לחזור לאנשים בשבת. -
שינוי ערך בקניה באיביי כדי להיפטר ממסראשית שוב סליחה מקטיעת הנושא עם תוכחות.
שנית, הנושא הוא לפני אסור/מותר. הנושא הוא כתיבה ציבורית לעיני כל, על דברים שגם לו יצוייר שהם היו מותרים לכתחילא הם לא נראים טוב.
יש בהלכה מקרים שמותר להטעות אדם. אז יבוא מישהו יפתח נושא על שיטות איך להטעות, וכל אחד יביא רעיון יותר קרימינלי מחברו. זה לא רק לא מכובד כלפי אחרים, זה כלפי עצמנו. כשצריך להתעסק עם זבל מתעסקים איתו, אבל זה לא נושא חביב.
כל זה על הצד שהכל היה מותר וישר, אני משוכנע שזה לא, אבל אני הנחתי את זה בצד.שלישית, בקשר להלכה עצמה. אני מניח שלא רק שלא שאלו רב במקרים שעלו פה, אלא שגם לא היו מעיזים לשאול בפירוט צבעוני כזה כפי שנכתב פה (ולמי שיודע, כששואלים רב צריך להביא את כל הצבעים גם מה שנראה שולי). לא זו בלבד, אלא בגלל שמדברים ככה בצורה ציבורית, אז גם אחרים שייתכן ולעצמם היו שואלים רב הם כבר לא שואלים כי זה נראה שכולם עושים ככה, אז כנראה זה מותר.
אפרופו, אני הלכתי לשאול רב חשוב זצ"ל בבית הדין של הרב ואזנר זצ"ל על ביצוע מבחן בצורה לא חלקה מבחינת יושר, המבחן היה לחבר שלי מול רשויות ואקדמיה בחו"ל (עזבו את החילוקים ההלכתיים). הוא קטע אותי ממש בתחילת השאלה עם פרצוף עם עווית גועל. -
גם זאת הונאה?לא, זו לא הונאה. רוץ על זה.