צדיק תמים
-
לשם התעניינות. האם נטפרי פותחים את ההצפנה של פרטים מוצפנים? -
העלאת טקסט מגוגל שיטס לתוך שלוחות בימות המשיח, ויצירת/מחיקת שלוחות@Y-Excel-Access כיוון שאני רואה שלא נתנו פה הדרכה יותר טובה או קישור למשהו מוכן, אנסה לכתוב משהו:
א - קריאה/כתיבה לטבלת שיטס מתוך גוגל סקריפטכל הנ"ל מתייחס לאם רוצים לקבל/לכתוב יותר מאשר תא של 1X1, אחרת ניתן להשתמש במתודת
getValue/setValueבהתאמה, שמקבלת/מחזירה סטרינג.הקריאה/כתיבה של נתונים אל קובץ השיטס נעשית באמצעות הSpreadsheet Service, כאשר הפעולה נעשית על ידי קבלת "אזור" תאים בטבלה -
ragne, וכתיבה אליו של "מערך דו מימדי", או בקריאה - שימוש במתודהgetValuesעל הrange מה שיחזיר מערך דו מימדי.
לדוגמה יש כזו טבלה:

נוסיף סקריפט דרך הטבלה - מה שיאפשר לי להשתמש בgetActiveSheet:

ונכתוב בו את הפונקציה הבאה:function getSheetValues() { const sheet = SpreadsheetApp.getActiveSheet() const range = sheet.getRange('A1:B3') const values = range.getValues() Logger.log(JSON.stringify(values)) }כאן אני מקבל את כל השורות בטבלה אז ניתן באותה מידה להשתמש ב
sheet.getValues(), אבל באופן כללי, כשזה רלוונטי, נעדיף לקבל רק את הטווח הרלוונטי כדי לחסוך ב"שאילתות" מול שירות חיצוני - השיטס, שמאיטות את הריצה של הקוד.יודפס המערך דו-מימדי הבא שמייצג את הטבלה:
[["שם","תפקיד"],["משה","מנהל"],["יעקב","מזכיר"]]כאשר התת-מערך הראשון מייצג את השורה הראשונה - שבד"כ מקובל להתייחס אליה ככותרות הטבלה, "שם" ו"תפקיד", והשני מייצג את ערכי השורה השניה - "משה" ו"מנהל", כך שאם לדוגמה ארצה לדעת מה התפקיד של האדם שמיוצג בשורה השניה (משה) אכתוב ככה (כאשר
valuesהוא המערך הדו מימדי הנזכר):values[1][1] // "מנהל"ממילא כל ההתעסקות עם הנתונים היא עם מתודות של מערכים בJS - סתם לדוגמה אני אוהב להפריד את השורה הראשונה ע"י מתודת
shift.
אם לדוגמה יעקב המזכיר קודם לדרגת מנהל, וגם שינו את שמו עקב מחלה קשה ליעקב-חיים, ואני ארצה לעדכן את השורה שלו,
אבצע את הפעולה הבאה:sheet.getRange(2, 1, 1, 2).setValues([["יעקב חיים", "מנהל"]]);כלומר אני מקבל את הrange בצורה הבאה:

דהיינו:
החל משורה: 2 (=שורה 1 לא כולל הכותרות)
החל מעמודה: 1
כמות שורות: 1
כמות עמודות: 2
ולאחר מכן אני כותב לטווח שזה בעצם האזור הזה בטבלה, מערך דו מימדי שכמובן במקרה הזה מכיל רק תת-מערך אחד.
אני מקווה שלא יצא מידי מעורפל, אם יש שאלות אתה מוזמן לשאול.
ב - שליחת בקשות לAPI של ימות
החלק הזה הוא החלק הפשוט, שליחת בקשות נעשית באמצעות UrlFetchApp (בד"כ באמצעותUrlFetchApp.fetch(קישור)), ויש לימות תיעוד ברור של הAPI שלהם:
https://f2.freeivr.co.il/topic/55 -
לחצן העתקת קוד מתוך פוסט לא עובד?@אביי כתב בלחצן העתקת קוד מתוך פוסט לא עובד?:
@חייםיודלביץ אאל"ט זה קורה רק בבלוק של שורה אחת, אני חושב שזה היה באג בכל nodeBB
אבל רק כשמספרי שורות מופעלים, לכן הם לא שמו לב לזה בעצמם
יצרתי דיווח בגיטאהב של nodebb
עריכה: תוקן (בגרסה הבאה) -
שאלה למתמצאים בתכנות בנטפרי@בר-בי-רב היה קצת מניעות

אבל הנה:
https://github.com/ShlomoCode/Checking-the-status-of-YouTube-videos-by-NetFree-Filter#redme (אני מודיע מראש: החלק של העיצוב בסקריפט הזה על הפנים...
)
יש שם הוראות להתקנת הסקריפט באמצעות התוסף tampermonkey;
לאחר ההתקנה יש להיכנס לכתובת שמצויינת שם, ייפתח חלון שבו תכניס את רשימת הסרטונים, ואז חלון נוסף שתבחר את התו שמפריד בין סרטון לסרטון (לדוגמה רווח, רווח ופסיק, פסיק בלבד, וכן הלאה), ואז הסקריפט ממיין את כל הסרטונים ל3 רשימות - פתוחים, חסומים, ולא נבדקו:

בסיום (יותר נכון שניה קודם... לא היה לי כבר סבלנות לדייק את זה) יישמע צליל סיום, וכן יופיע בראש הדף כיתוב כמה כתובות עובדו. (כנ"ל, רציתי לעשות שיהיה כתוב שם ההתקדמות... אולי בהזדמנות)
עובד כמובן רק על מחשב עם חיבור של נטפרי. -
מה זה התמונה הזאת שמופיעה רק ליד הנושא של מסדר הסינגלים?@dovid אגב האופציה היתה קיימת מאז ומעולם (יותר נכון מאז שאני מכיר את nodebb),
אלא שבערכת נושא הישנה (persona) התמונה הממוזערת היתה מחליפה את התמונת פרופיל של הנושא בדף קטגוריה/לא נקראו וכו' בלבד (ראה לדוגמה כאן), ובהרמוני היא מופיעה במיקום שבתמונה, וגם בתוך הנושא בצד שמאל למעלה, וכן אפשר לצרף כמה תמונות
ואגב, כשזה מופעל אפשר להוסיף גם בנושא קיים ולא רק בחדש -
מדריך | כתיבת סקריפט צד לקוח עבור אתר NodeBB - שימוש בhooksבפוסטים הקודמים כתבתי רק על האזנה לאירועים של NodeBB בצד הלקוח.
אלא שניתן גם ליזום אירועים, וכך ניתן לבצע פעולות בממשק בצורה נקיה, ללא צורך בדימוי לחיצות ושאר שטיקים מכוערים...
לדוגמה אם אני רוצה לפתוח נושא חדש (זה רק דוגמה, ספציפית בזה יש אתapp.newTopic), אני לא צריך לדמות לחיצה על כפתור פתח נושא, ואז לדמות לחיצה על בורר הקטגוריות, וכן הלאה...
אני יכול פשוט לקרוא לאירועaction:composer.topic.new(מאיפה יש לי אותו? מהתיעוד הרשמי) עם הפרמטרים הנכונים,ואיך אני יידע איזה פרמטרים?
פשוט מאזינים להוק הרלוונטי ומפעילים אותו בממשק, ורואים בקונסולה איזה פרמטרים הועברו אליו... אפשר גם להיעזר בסקריפט שהבאתי בפוסט הקודם 
לדוגמה כדי להאזין להוק של יצירת נושא:$(window).on('action:composer.topic.new', (event, data) => { console.log(data); });אם תאזינו כך להוק של פתיחת נושא, תוכלו לראות שהוא מקבל אובייקט שמכיל
cidומערך שלtags, שבמקרה הזה הם ריקים:{ "cid": 0, "tags": [] }וממילא ברגע שנקרא להוק בצורה הזאת:
$(window).trigger('action:composer.topic.new', { cid: "9", tags: [ 'test', 'test2' ] });נראה שנפתח מייד חלון כתיבת נושא חדש, כאשר ב"קטגוריה" כבר נבחרה קטגוריה מספר 9 - בניה ושיפוצים, ובמקום המיועד כבר הוכנסו התגיות
testוtest2:

ותן לחכם ויחכם עוד...
-
עזרה בבניית אפליקציה לפורום מבוסס node bbנשמע שהנושא התחיל מנקודת מוצא שכרומיום זה דבר בעייתי. זה יכול להיות נכון אולי במכשיר ספציפי אבל לא נכון כאמירה כללית, אם לא לוקחים בחשבון את המכשירים של אפל אז כמעט כל העולם ניגש לאינטרנט דרך כרומיום, וכל מכשיר אנדרואיד בכמה מאות שקלים (ואפילו בפחות אם זה מכשיר סיני) יריץ אותו מעולה. אם קהל היעד שלך זה משתמשי מכשירי אנדרואיד מקשים עם 1GB ראם זיכרון זה משהו אחר כמובן...
אם זה מכשיר "נורמלי" אפשר גם להשתמש ב webview שגם יתן תוצאה טובה וגם יקח לך דקה באתר הזה: https://app-builder.madrichim.ovh
-
בעיית מיקום בחיפוש גוגל@אורח-פורח תבקש מ claude.ai או ChatGPT סקריפט Tempermonkey (UserScript) שעושה את זה והוראות איך להתקין. יעשה את זה כנראה מושלם בנסיון ראשון
עריכה: תיכנס להגדרות מנועי חיפוש
chrome://settings/searchEnginesתחת "חיפוש באתרים ספציפיים" תלחץ הוספה, בURL תכניס:
https://www.google.com/search?q=%s&gl=BEאח"כ תלחץ לידו ב3 נקודות ותקבע כברירת מחדל
-
למה תקלת CrowdStrike לא יכולה להתרחש בmacOS, ולמה מייקרוסופט לא יכולה לנקוט בצעדי התגוננות דומיםאני רק זורק כאן מידע מעניין שקראתי ואולי יעניין מישהו, על ההבדל בין macOS לוינדוס מבחינת רגישות ל:
א. שיבושים של קבצי המערכת
ב. שגיאות בתוספות צד ג’ לקרנל (CrowdStrike...)כאן יש הסבר טוב שאפל מגנים משיבוש של קבצי מערכת, כך שברגע המחשב מפעיל את עצמו מחדש אתה יכול להיות בטוח שכל קבצי המערכת הפעלה מקוריים ושלמים, בעוד בוינדוס כידוע הרבה מסכים כחולים נובעים מcorruption of system files:
https://eclecticlight.co/2021/12/26/last-week-on-my-mac-maintaining-macos-has-changedאבל החלק המעוניין הוא שאפל גם השביתה את מנגנון הkernel extentions (kexts), מה שאומר לכאורה שלא יכול להתרחש kernel panic (ה“מסך כחול” של מק) כתוצאה משגיאה בהרחבת קרנל צד ג’ כמו שקרה עם CrowdStruck כיוון שהמנגנון החדש רץ בהרשאות משתמש, בשונה מוינדוס שאפשר לרוץ בקרנל בהרשאות מערכת.
אלא שנראה שמייקרוסופט לא יכולה בכלל לנעול את הקרנל לשינויים חיצוניים! היא רצתה לעשות את זה לפני 20 שנה, חברות אנטיוירוס טענו שזה יפגע באבטחה ובתחרות, והיא התחייבה לאיחוד האירופי שלא תעשה את הצעד הזה...
מקורות:
https://stratechery.com/2024/crashes-and-competition
https://www.tomshardware.com/software/windows/microsofts-eu-agreement-means-it-will-be-hard-to-avoid-crowdstrike-like-calamities-in-the-futureנ.ב. כמובן שתקלה כזאת יכולה להתרחש בעקבות תקלה בעדכון של אפל עצמם, אבל זה מפחית מאוד את הסיכון.
אשמח לתגובות
-
לימודי תכנות@chagold כתב בלימודי תכנות:
@מבקש ללמוד html css js זה כמו ללמוד אותיות ומילים ולחבר אותם למשפט אחד, וזה הבסיס, אבל זה לא ספר.
יש המון מה ללמוד בבסיס, כל מיני אלמנטים בHTML, הגדרות בCSS ופונקציות בJS, אבל כיון שבכל מקרה תצטרך ליסוע בכביש של הגדולים, לכן לענ"ד ברגע שאתה מרגיש שאתה מבין מי נגד מי, תעבור לשלב הבא שזה לעבוד עם פריימוורק, שם תמשיך את הלמידה ותשתפשף בדברים הבסיסיים, רק ממבט מתקדם יותר.אני נגד ההגדרה של פריימוורק כ"מבט מתקדם יותר", זה פשוט שכבת הפשטה נוחה. וכמו כל שכבת הפשטה, זה בא על חשבון ההבנה של מה ש"מתחת", שהיא חשובה מאוד
פגשתי כבר יותר מידי מתכנתים שהתפתו (או פותו על ידי בוטקאמפ וכדו') לדלג ישר לשכבת ההפשטה, וזו דרך קצרה שהיא ארוכה - לטווח הארוך ניכר שחסר להם הבסיס בצורה מסודרת ועדכנית. אני מדבר על הבסיס של השפה, לאו דווקא להכיר את כל המתודות שלMathבעל פה
אלמנטים בHTML והגדרות עיצוב בCSS זה יותר סינטקס איך להצהיר על עיצוב, אבל JS זה לא "כמה פונקציות", זו שפת תכנות. צריך להבין את ה"ראש" של תכנות ושל השפה הספציפית, לדלג על זה ולרוץ הלאה זה ממש לא מומלץ -
רג'קס להסרת גרשיים מטקסט מלבד ר"ת/(?<=[א-ת])"(?![א-ת])|(?<![א-ת])"(?=[א-ת])|(?<=\s)"(?=\s)/gsהביטוי הזה מחפש:
- יש לִפְנֵי (positive lookbehind) אות בעברית, מירכאות, אין אַחֲרֵי (negative lookahead) אות בעברית
או
- אין לִפְנֵי (negative lookbehind) אות בעברית, מירכאות, יש אַחֲרֵי (positive lookahead) אות בעברית
או
- יש לִפְנֵי (positive lookbehind) רווח, מירכאות, יש אַחֲרֵי (positive lookahead) רווח
מראי מקומות:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Lookbehind_assertion
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Lookahead_assertion -
מחפש מדריך TS -
עזרה בחלוקת קובץ node js למספר קבצים נפרדים@מוטי-מן קודם כל אני ממליץ לך בחום ומנסיון כשהייתי בשלב שלך בזמנו, לעבור על סדרת הסרטונים הזאת, נראה לי שזה יכסה לך דברים בסיסיים (לדוגמה את השאלה הנוכחית).
אני ממליץ על מבנה כזה:
app.js
תקיית src:
utils.js
תקיית api בתוך src:
router.js
controller.js
תקיית ivr בתוך src:
controller.js
router.jsכך קובץ utils.js ייצא את פונקציית הבדיקה:
export function licenseVerification(apiDID) { if (apiDID) { console.log('status: ', 'true'); return true; } else { console.log('status: ', 'blocked'); return false; } }קובץ
controller.jsתחת ivr - מייצא פונקציות של הלוגיקת שיחה עצמה:import { licenseVerification } '../utils.js'; export async function sharing(call) { await call.id_list_message([{ type: 'text', data: 'הפעולה הושלמה' }]); } export async function callHandler(call) { if (await licenseVerification(call.ApiDID) === true) { return call.id_list_message([{ type: 'text', data: 'גישה מאופשרת' }]); } else { return call.id_list_message([{ type: 'text', data: 'המספר שלכם חסום לגישה' }]); } }קובץ src/ivr/router.js:
import { YemotRouter } from 'yemot-router2'; import { callHandler } from './controller.js'; const router = YemotRouter({ printLog: true, uncaughtErrorHandler: (error, call) => { console.log(`Uncaught error from ${call.phone}. error stack: ${error.stack}`); return call.id_list_message([{ type: 'text', data: 'השרת נתקל בשגיאה פנה למנהל' }]); } }); router.get('/call', callHandler); export default router;קובץ src/api/controller.js:
import { licenseVerification } '../utils.js'; export async function yemotLogin(req, res) { // licenseVerification(...) console.log('yemotLogin'); res.send('Blocked'); }קובץ src/api/router.js:
import { Router } from 'express'; import { yemotLogin } from './controller.js'; const router = Router(); router.get('/page', yemotLogin); export default router;קובץ
app.js- אחראי רק על רמת השרת/אקספרס, ומייבא את הראוטרים ו"מפעיל" אותם באמצעות app.use:import express from 'express'; const app = express(); import ivrRouter from './src/ivr/router.js'; import apiRouter from './src/api/router.js'; app.use(express.urlencoded({ extended: true })); app.use(apiRouter); app.use('/ivr', ivrRouter); const port = 3000; app.listen(port, () => console.log(`The express server is now running and listening on port ${port}`)); -
js - פופ-אפ / דיאולוג - מה החלופות לSweetAlert2@mekev יש את bootbox שזה מה שיש פה באתר, אתה יכול להשתמש גם בגרסה הראשונה של sweetalert שפתוחה - https://sweetalert.js.org/guides
לגבי sweetalert2 הבעיה היא לא בתיעוד עצמו אלא בתוכן אחר שיש באתר שלהם, ככה שאם יש לך את התיעוד אתה יכול להשתמש בספריה (השימוש בה דרך CDN/NPM פתוח בנטפרי): SweetAlert2 - a beautiful, responsive, customizable and accessible (WAI-ARIA) replacement for JavaScript's popup_ boxes (3.7.2023 13_30_08).html -
תגיות html, css, js וכו'@יעקב-מ-פינס זה הכי מסודר שאני מכיר בעברית:
https://www.gov.il/BlobFolder/generalpage/html5/he/חומרי הדרכה ותרגיליםhtml5.pdf -
למה אני לא משתמש ב Chat openai@NH-LOCAL אף אחד לא חולק שכאשר הוא צודק הוא מקצר הליכים ונוח וכו'. הבעיה היא חוסר הוודאות בנכונות התשובה, כמו ש@יוסף-בן-שמעון כתב בלמה אני לא משתמש ב Chat openai:
הסוג השלישי אלו האנשים שתמיד תמיד בטוחים בעצמם, הם תמיד יודעים הכל, אין מצב שהם לא יענו לך תשובה על שאלתך, אף פעם לא יפנו אותך לייעוץ אצל מישהו אחר.
...
מהסוג השלישי אני בורח כמו מאש, אני סולד מאדם שמוכן לתת לי עצות בלי שום אחריות על מה שהוא מדבר, ואין לי שום אפשרות לדעת אם הוא אומר את דבריו מידיעה או השערה או המצאה.ובדוגמה שנתת. בהנחה שאתה לא יודע את כיווני המצפן (אחרת לא היית שואל אותו), אתה לא יכול לדעת בוודאות האם באמת הוא צודק (כן) או מקשקש,
אז אני יעדיף כבר להיכנס לתוצאה הראשונה של גוגל (ויקיפדיה - שושנת הרוחות), שם הייתי מוצא את השרטוט הבא:

שבהחלט היה עונה על השאלה שלך, ואמין בזכות "חכמת ההמונים", מאשר לקבל תשובה על מגש של כסף, אבל שאני לא יודע אם היא נכונה או לא... -
עזרה | זמני היום בAPI@ג-י-מ למעשה אתה לא צריך את כל מה שיש בפרויקט של @chv, כי אתה לא צריך ממשק, ולא לשלוח פושים, ואפילו DB אתה לכאורה לא צריך...
אתה צריך סה"כ אפליקצית nodeJS שתקבל את הזמנים למיקום אחד (מחבילת זמני הלכה, כגון זו ששימשה את chv או כל אחת אחרת), ובהתקיים תנאי מסוים לשלוח בקשת רשת לכתובת מסוימת.
גם אני נהנה מהמערכת שלך כבר תקופה ארוכה
ואני חושב שזה זיכוי הרבים גדול, ואשמח לעזור בעניין, צור קשר בפרטי -
התייעצות כללית בנוגע לפתיחת חנות פוטו שכונתית -
איך מזהים לפי מספר טלפון איזה מדינה זה?@nachman יש ספריה של גוגל בשם libphonenumber לניתוח מספרי טלפון
או שתבנה משהו לבד עם הרשימה https://country.io/phone.json -
הסתרת אובייקטים מפורום NodeBB@zvinissim תוסף שמאוד עוזר - הוא מאפשר לראות את התוצאות של הCSS בלייב, בלי צורך כל פעם לשמור ולרענן.