@נהראל אתה בטוח שלא הצליח? לפי הפלט בתמונה זה נראה שהצליח.
מוטי אורן
-
לא מצליח להתקין אנגולר במחשב -
פונקציית השהייה (setTimeout) לא משהה בפועל...@צדיק-תמים אני ינסה להבהיר לך קצת לגבי המנגנון של קולבאקים, אני חושב שזה מה שמסבך אותך.
תנסה להבין שניה את ההבדל בין שני ה setTimeoute הבאים:
function sayHello() { console.log('Hi!'); } setTimeout(sayHello, 1000); // תקין setTimeout(sayHello(), 100); // לא תקין
מה ההבדל ביניהם? תזכור תמיד. כשאתה רואה שם של פונקציה בלי סוגריים, זה אומר שלא מדובר בקריאה לפונקציה, אלא ברפרנס לפונקציה (בקיצור, תחשוב על זה כמו משתנה שמכיל את הפונקציה).
אי לכך ובהתאם לזאת. כשיש לך פונקציה כמו setTimeout שמצפה לקבל פונקציה, אתה צריך להעביר לה את המשתנה המכיל את הפונקצייה, ולא את הערך שהפונקציה מחזירה. מה שאני עשיתי בקוד שהבאתי בפוסט הקודם, הוא פשוט לקחת את הפונקציה של openLink, ולהחזיר באמצעותה ערך שהוא עצמו פונקציה, ולכן זה עבד. הדבר הזה מקובל מאוד בהרבה מקרים ב JS, ולכן הרשיתי לעצמי לעשות את זה.
ממליץ לך לקרוא עוד לגבי המנגנון של callbacks ב JS כאן.
-
פונקציית השהייה (setTimeout) לא משהה בפועל...@צדיק-תמים אתה מעביר ל setTimeout פונקציית IIFE שמריצה את עצמה אוטומטית. שים לב ש setTimeout צריך לקבל ארגומנט של מה שנקרא 'פונקציית קולבאק'. ואילו אתה מעביר לו כארגומנט את הערך undefined שחוזר מפונקציית ה IIFE שהעברת לו. תסתכל על זה כאילו כתבת ככה:
function openLink(link, target) { open(link, target); } setTimeout( openLink(`https://tchumim.com/topic/${topicID}`,"_self"), 3000 );
אתה בטח מבין לבד שזה לא אמור לעבוד. מה שאתה צריך לעשות זה כמו שכתבתי, להעביר פונקצייה כארגומנט:
function openLink(link, target) { return function () { window.open(link, target); } } setTimeout( openLink(`https://tchumim.com/topic/${topicID}`,"_self"), 3000 );
ראה עוד על IIFE בקישור
-
שאלה | איזה משתנה מחזיר את שם השולח בגוגל סקריפט?@חייםיודלביץ כמו ש @OdedDvir כבר כתב, הפונקציה
parseEmailHeader
מחזירה אובייקט בעל שתי ערכים: name, email. כאשר name הוא השם של השולח, ו email הוא הכתובת מייל שלו.
הדוגמה שהראיתי לך למימוש למעלה, היא במסגרת ה Logger. אני משער שמה שאתה עשית זה לשלוח מייל שמכיל את הערך שהפונקציה הזאת מחזירה, מה שגרם לשגיאה המוכרת objectObject.
ובמילים פשוטות, אם אתה רוצה להציג את האובייקט הזה ב HTML כלשהו, תצטרך לקחת ממנו את הערכים שלו כמו ש @OdedDvir הראה בפוסט הקודם. -
תרגום גוגל@05331 הגדרות > מידע כללי על כרום.
-
תרגום גוגל@05331 תכנס להגדרות ותבדוק אם כרום מעודכן, אצלי זה גם לא עבד, ואחרי עדכון של כרום הוא חזר לעבוד.
-
שאלה | איזה משתנה מחזיר את שם השולח בגוגל סקריפט?@חייםיודלביץ אתה צריך לעשות return מהפונקציה ש- @OdedDvir הביא.
דוגמה למימוש אצלי:
function newmail() { let newmessages = GmailApp.search('from: example@gmail.com') for (let newmessage of newmessages) { let message = newmessage.getMessages()[0] let senderEmail = parseEmailHeader(message) Logger.log(senderEmail) } } function parseEmailHeader(message) { var header = message.getFrom().trim(); var extract = { name: "", email: "" }; var emails = header.match(/[^@<\s]+@[^@\s>]+/g); if (emails) { extract.email = emails[0]; } var names = header.split(/\s+/); if (names.length > 1) { names.pop(); extract.name = names.join(" ").replace(/"/g, ""); } return extract; }
כרגע הוא עושה פשוט
Logger.log
, מה שאומר שהוא לא מחזיר שום ערך. -
שאלה | איזה משתנה מחזיר את שם השולח בגוגל סקריפט?@חייםיודלביץ ייתכן שה-RFC Header הספציפי של Sender לא נשלח בכל הודעה. כלומר, בחלק מההודעות אתה כן תקבל את השם של השולח, אבל בהרבה הודעות לא תקבל כלום.
@OdedDvir אני יסביר לך איך הגעתי למסקנה הזאת. זה התחיל בכך שהסתקרנתי מהנושא של ה-RFC Headers שהזכרת פה, ומכיון שאף פעם לא שמעתי על המושג הזה החלטתי לבדוק במה מדובר .. המסקנה שלי הייתה שמדובר בתקן מסויים להודעות מייל, שמכיל בתוכו הגדרה של Headers ותוכן (בתקווה שלא מדובר במסקנה שגויה שלי).
לאחר מכן החלטתי להריץ ב-GS לולאה מקוננת על כל ההודעות במייל, ולקבל את ה-Header שהזכרת ('Sender'), ככה:
function logSenderHeader() { GmailApp.getInboxThreads().forEach(function (t) { t.getMessages().forEach(function (m) { Logger.log(m.getHeader('Sender')) }) }) }
ואכן, בחלק מההודעות הוא לא החזיר ערך, ובחלקם הציג את השולח.
-
לא מבין למה מגיע ערך ריק. js@chagold האמת שלא לגמרי הבנתי את הסיטואציה... אבל ממה שאני כן (מקווה ש)הבנתי, לכאורה
watch
יכולה לעזור לך, משהו כזה:Vue.use(Vuex); const store = new Vuex.Store({ state: { user: JSON.parse(localStorage.getItem('user')) }, getters: { getUser(state) { return state.user; } }, mutations: { selectAccount(state, account) { if (account) state.user.account = account; localStorage.setItem('user', JSON.stringify(state.user)); } } }); const vm = new Vue({ el: '#app', store, watch: { '$store.state.user': function () { console.log(this.$store.state.user.account) } } }) // אפשר גם ככה vm.$watch('$store.state.user', function (val, oldVal) { console.log(val.account) }) // ואח"כ באיזשהו שלב אתה מבצע את המוטציה vm.$store.commit('selectAccount', 'admin')
עוד על
watch
פה -
הוספת 0 בפורמט שעה ב- TS@katz זה עובד מצויין:
class ParseMS { static toSeconds(ms) { return Math.floor((ms / 1000) % 60); } static toMinutes(ms) { return Math.floor((ms / (1000 * 60)) % 60); } static toHoures(ms) { return Math.floor((ms / (1000 * 60 * 60)) %24); } static ensureTimeLength(time) { return time.toString().length < 2 ? `0${time}` : `${time}`; } static getFullTime(ms) { let secondes = ParseMS.ensureTimeLength(ParseMS.toSeconds(ms)), minutes = ParseMS.ensureTimeLength(ParseMS.toMinutes(ms)), houres = ParseMS.ensureTimeLength(ParseMS.toHoures(ms)); return `${houres}:${minutes}:${secondes}`; } }
שים לב מה הבעיה בקוד שלך. גם
parseInt
וגםNumber
כשאתה נותן להם ארגומנט שהוא שני אפסים, הם יחזירו לך אפס בודד. מהסיבה שלא קיים מספר שמכיל שני אפסים בלבד. -
לא מבין למה מגיע ערך ריק. js@chagold איך הגדרת את ה - getter של getUser? אם תוכל להעלות קוד.
-
איטיות ב-VSCode בכתיבה עם מונגוסהרבה זמן שאני מתחבט בבעיה הזו, החלטתי לבקש את עזרתכם בעניין.
אני משתמש ב-VSCode בכתיבה של JS, ותמיד הוא עובד חלק בלי בעיות, עובד מהר ב"ה.
אבל כל פעם (!) שאני כותב קוד בקובץ שייבאתי אליו mongoose, התוכנה פשוט מתחילה לקרטע. דבר ראשון ה-autocomplete נהיה איטי להחריד (משהו כמו 4 שניות), הסימון שגיאות גם נתקע (אני מתקן שגיאה, לוקח לפחות כמה שניות עד שיורדים הסימונים).
אני חוזר לקובץ שאין בו מונגוס, פלא פלאים - עובד מצויין. עובר שוב לקובץ עם מונגוס, שוב פעם מקרטע.ושאלתי בפי, האם מישהו מהפורום היקר נתקל פעם בכזה דבר / מכיר את הבעיה / מכיר פיתרון לבעיה?
-
getTime אינו פונקציה@odeddvir הענין הזה הוא אחד הדברים שמפריעים לי במיוחד ב-TS. כלומר, הוא מאוד עוזר לך לשלוט בקוד שאתה כותב (כשאני כותב TS, הקוד באמת יותר מסודר לי בראש בצורה די משמעותית), אבל מצד שני, כשאתה עובר לעולם המעשה אתה צריך באמת לשים לב טוב מאוד שאתה לא משתמש בקוד באופן לא תקין (הדוגמה למעלה ממחישה זאת היטב), שאז מנגנון ה-Types והקומפילציה לא ממש עוזר.
-
קוד חמוד/רע/איום ליצירת רשימת מספרים ב-JS@dovid זו נקודה מאוד מעניינת. בשביל לבדוק את זה ניסיתי להריץ בקונסול לולאה אינסופית פשוטה:
let a = 0; while (true) { b+=1; }
כמובן שהטאב נתקע ולא הגיב ללחיצות וכו'. אבל עדיין הוא לא קרס.
אח"כ ניסיתי להריץ עוד לולאה אינסופית פשוטה, שמכניסה למערך את אותו מספר, והטאב קרס ממש מיד.let a = []; let b = 0; while (true) { a.push(b++); }
ואנוכי הקטן לא מצליח להבין מה ההיגיון בעניין הזה.. ניסיתי לחפש אינפורמציה על לולאות אינסופיות ב-JS, לא כ"כ מצאתי. בכל מקרה זו נקודה מעניינת.
-
קוד חמוד/רע/איום ליצירת רשימת מספרים ב-JS@odeddvir אהה, צודק. לא שמתי לב.
-
קוד חמוד/רע/איום ליצירת רשימת מספרים ב-JS@yossiz אחח איזה כאב ראש הקוד הזה עשה לי ...
אני יכתוב את מה שאני הבנתי מהקוד שלך (ממה שאני זוכר לגבי Symbol). מה שאתה בעצם עושה זה לייצר איטרטור לכל מספר שלא יהיה, מה שבפועל גורם לזה שאפשר לפרק אותו לגורמים כמו פירוק של מערך קלאסי, או לרוץ עליו באיטרציה עם for-of וכדו' (הבנתי נכון?).
אבל למה הטאב קורס לגמרי במספר שלילי? אף פעם לא נתקלתי בכזה דבר.
-
עזרה בהעלאת קבצים לשרת ב node js@yossiz זה בדיוק מה שכתוב בתיעוד שלהם.
בשביל להבהיר את מה ש @ב-ל כתב, אקספרס עדיין לא מפרסר מהקופסה שום דבר. הדבר היחיד שהשתנה הוא שהמידלוורס של bodyparser מובנים באקספרס, ואין עניין להתקין שום מודול חיצוני בשביל זה. אני מצטט מהתיעוד:req.body
Contains key-value pairs of data submitted in the request body. By default, it is undefined, and is populated when you use body-parsing middleware such as express.json() or express.urlencoded().
המידלוורס החדשים שנוספו באקספרס 4 הם:
app.use(express.json()); // מפרסר application/json app.use(express.urlencoded()); // מפרסר application/x-www-form-urlencoded
-
ספריית nodemailer והאבטחה של גוגל@katz אתה צריך להשתמש ב-createTransport בצורה קצת אחרת (לא יודע כל כך איך מימשת את זה, אבל גם לי היה פעם את הבעיה הזאת, ושיניתי את זה לפי משהו שמצאתי ב-stackoverflow איפשהו).
nodemailer.createTransport({ host: 'smtp.gmail.com', port: 465, secure: true, auth: { user: emailaddress, pass: yourpassword }, tls: { rejectUnauthorized: false } });
ואתה צריך גם לאפשר גישה לחשבון בכתובת הבאה: https://accounts.google.com/DisplayUnlockCaptcha
וכמובן להתיר אפליקציות ברמת אבטחה נמוכה בחשבון גוגל שלך.
-
תכנות אתרים + גרפיקה@davidnead תבדוק את Vuetify (הבאתי את הקישור למעלה) לפי מה שזכור לי יש להם תמיכה מעולה בRTL. אתה יכול למצוא פה רשימה של 15 ספריות של קומפוננטות UI ל Vue, תבדוק מה הכי מתאים לך.
@chagold דווקא נראה ספרייה מוצלחת, מעניין לבדוק את זה. -
קוד מקור ב PHP סגור