נכון.
ואז יתחיל חתול ועכבר:
על כל פירצה שתתגלה, הדפדפנים יחסמו אותה.
אבל סתם חבל לי, על זה שעד היום חפרתי בכל מיני אתרים, להבין איך זה עובד.
עכשיו שוב נגלה קבצי DLL לא קריאים.
נכון.
ואז יתחיל חתול ועכבר:
על כל פירצה שתתגלה, הדפדפנים יחסמו אותה.
אבל סתם חבל לי, על זה שעד היום חפרתי בכל מיני אתרים, להבין איך זה עובד.
עכשיו שוב נגלה קבצי DLL לא קריאים.
@dovid אמר ב.NET בדפדפן? BLAZOR:
לא ידוע לי על כלי שממיר JS לWebAssembly, וזה לא הפואנטה זמן היצירה כי זה לא יהיה דינמי - ייצרו WebAssembly מכל שפה שיבחרו, וישתמשו עם הWebAssembly כמו שתוכנות דסקטופיות משתמשות בDLL.
אם כן, לא יהיה אפשר לקרוא את זה.
חיסרון שעד היום היה בעיקר בווינדוס.
כי בווב (וגם בלינוקס בהרבה פרוייקטים) מגיע אליך הקוד הטקסטואלי, ומקומפל אצלך במחשב.
ו-כן, אי אפשר לבדוק מה זה בעצם עושה שם...
@MusiCode אמר בהאם V תהיה השפה הבאה?:
ה' ישמור! איך אני אבדוק שזה לא ווירוס?
@avr416 אמר בהאם V תהיה השפה הבאה?:
(כלומר, אם אני מבין נכון ווב אסמבלי בעצם אומר שאתה כותב קוד שמתקמפל לבינארי והדפדפן ידע להריץ אותו, וזה מתחיל לתפוס תאוצה, מה שבעצם יאפשר למפתחים לא להזדקק עוד לחסדי JS אלא לכתוב בשפות שהם אוהבים, והם יוכלו להשתמש בכל הקוד הקיים שלהם ולהשתמש בו גם לפיתוח קליינט).
מה, אני מקבל קובץ בינארי?
ה' ישמור! איך אני אבדוק שזה לא ווירוס?
טוב, לא אני. אבל אלה שמבינים בזה.
הפרוייקט הזה באקסס הוא שלי.
מבוסס על NOAA.
הכל מישורי, כי אין לי מושג איך מחשבים את הגובה, ואיזה הרים מקזזים וכו'.
למעשה, לא יודע מי כן יודע חוץ מצקוני, ולוחות חי שמהם הוא לוקח את החישובים האלה.
תן ל'עוילם' להחליט.
אם הוא יאהב, לך גם אתה.
מה שאני חושב (ועשיתי אצלי) זה להשתמש בORM.
מה זה?
זה פריימוורק שיוצר אובייקטים לכל טבלה, וכך אתה פשוט מתנהל מול האובייקט.
אובייקט יוזר, יש לו מתודה של חפש יוזר, תביא את כל היוזרים, עדכן יוזר, וכו.
זה אומר בעצם לבנות את הכל מחדש.
לכל טבלה, אתה כותב מודל, שבעצם מסביר לפריימוורק מה הולך שם.
כמה שדות יש, וכל שדה, מה הוא אומר.
זה ייקח זמן (וללמוד... בכלל), אבל אח"כ הכל ירוץ.
במקום לכתוב שאילתות כל הזמן, אתה פשוט עושה אינטואטיבית: יוזר->חפש אחד-> השם שלו מתחיל ב-מ'.
קבל דוגמא מפרוייקט שלי (אגב אני בנוד חודש ומשהו, אל תבהל. לא קשה כזה):
שרת API: קבלת מפתח, והמרה שלו למשתמש:
router.post("/get_name", async (req, res) => {
let user = await User.findOne({ where: { key: req.body.key } });
if (!user) {
res.result.massage = "key does not exist";
res.json(res.result);
} else {
res.user = user;
next();
}
});
כמה קל להתנהל מול הDB!
שורת קוד אחת!...
אני משתמש ב https://sequelize.org/.
function * generetor (call) {
//...
yield call.function();
//...
other(call);
//...
}
בכזו פונקציה, באיטרציה הבאה, הפונקציה אוד'ר לא תמשיך לרוץ.
בשונה מפרומיס, ששם כן ימשיך לרוץ.
עשית, שאפשר לקבל את הערך שחזר מהמשתמש. מאוד נהניתי מזה.
אם עכשיו כל הפרוייקט בקוד אחד, אז איך מנהלים את זה?
יש לי פרוייקט דיי ארוך.
איך מפרקים אותו למודולים?
לא רוצה פורוייקט ספגטי עם IF ELSEs מקוננים...
(לא באמת, ככה כתבתי כשהייתי בן חודשיים - בעניין של קוד).
שוב, אתה כבר יכול להוריד מגיט https://github.com/MusiCode1/yemot-router/
וגם מ npm, הנה: npm i yemot-router.
@yossiz אמר במחלקת "תכנות נורמלי במערכות 'ימות'...":
@MusiCode אמר במחלקת "תכנות נורמלי במערכות 'ימות'...":
כי בסוף אני מנסה כיוון אחר
מעניין, כי אני התחלתי בכיוון זה... כתבתי טיוטה של מחלקה שבנויה על promises ו-async/await, אח"כ חשבתי שזה נראה יותר מדי ספגטי (אולי כי לא השתמשתי ב-event אלא ישר קראתי
resolveמתוך ה-handlerשל הבקשה מימות), לכן שיניתי כיוון ל-yield שהיה קוד יותר נקי (בעיני, אם כי זה קצת שטיקי).
מה היתרון בשבילך ב-promises?
שגנרטור, לא יכול להעביר את הטיפול לפונקציה אחרת.
כי בכל בקשה חדשה, קוראים לגנרטור...
אגב, אני חייב לומר, האב טיפוס שלך, היה גאוני!
ישבתי לפרק ולנסות לשנות (סורי, הייתי חייב...), ואז הבנתי כמה כל דבר היה במקום!
אפ' שאפשר לקבל את התוצאה מהפונקציה ישירות...
בפרומיס, אני אוכל לעשות אובייקט פשוט, שהמתודה ג"כ תחזיר את התוצאה, בלי להזדקק ל yield.
כך נראה מימוש אב-טיפוסי:
y.get('/', async (call) => {
let r = await call.run();
console.log(call.call_id, r);
call.res.send('הנה, גמרנו');
});
(אין כזו מתודה run, זה רק באב-טיפוס).
הקונסול-לוג, נקרא רק אחרי הבקשה השנייה.
@MusiCode אמר במחלקת "תכנות נורמלי במערכות 'ימות'...":
השאלה מה לגבי זיכרון.
לפום ריהטא, למה שיהיה הבדל בין yield ל-promise בנוגע לזיכרון? לגבי שניהם לא נראה לי שזכרון אמור להיות בעיה.
נכון. השאלה לגבי שניהם ביחד.
היות ובחיים לא שמעתי מישהו שעשה כזה דבר, לעצור פונקציה עד לקריאה חדשה, שאף אחד לא אמר שתתבצע, אני קצת לחוץ מזה.
הרצתי 1,000 קריאות. זה תפס בערך 40 מ"ב זיכרון (לפי מנהל המשימות Win7, מקווה שאני קורא אותו נכון).
נניח ואצליח לבנות מנגנון איסוף זבל (אולי ע"י סנכרון עם המערכת בימות, לדעת מי ניתק), איזה עוד צרות יכולות לבוא מהמתודולוגיה המשונה הזו?
ואיך עכשיו אפשר לפרק קוד של שלוחה מורכבת למודולים, שלא יצא ספגטי?
@yossiz אמר במחלקת "תכנות נורמלי במערכות 'ימות'...":
@MusiCode מה שאתה צריך הוא מימוש של coroutines.
משהו כזה:
var activeCalls = {}; function router(req, res) { var callId = getCallId(req); var currentCall = activeCalls[callId]; if (currentCall) { var returnedValue = extractValue(req); } else { currentCall = activeCalls[callId] = Call(); returnedValue = null; } var reply = currentCall.next(returnedValue); return res.send(reply.value); } function* Call() { yield playfile("file"); var f = yield read("file", 1, 5, ...); yield goToFolder("/7/" + f); yield hangup(); }אני לא מצרף מימוש של playfile, read, gotofolder, hangup כי אין לי מושג איך ה-API של ימות עובד. אבל כל אחד מפונקצייות אלו אמור להחזיר את המחרוזת שצריך להשיב למערכת ימות
אם זה אמיתי, זה מדהים!...
לא הבנתי, מה זה קורוטין?
אפשר הסבר?
אני מנסה להבין את הקוד, אבל כמו שאמרתי,
אני בנוד מלפני כמה ימים...
יש לי נוד אחרון.
צריך איזו חבילה לזה?
@MusiCode אמר ב[מחלקת "תכנות נורמלי במערכות
זה נראה ככה:
בקשה ראשונה: https://call2yemot.com/ext
התשובה: read=f-000=ivr,n,...
(המילה הראשונה read היא מסמנת קבלת הקשות. אח"כ, שם הקובץ שיושמע כתפריט. אח"כ שם המשתנה שיוחזר)
למעשה הבקשה הראשונה נראית כך:
https://call2yemot.com/ext?ApiPhone=0504100000&ApiCallId=b6t76r7v6v4754c

@google3 שנייה, ברור לך שצריך שרת לזה?
כי זה היה נשמע מההודעה הראשונה שאתה מחפש בלי.
אז אין.
תחילת פרשת כי תצא:
"התירה התורה בשר תמותות שחוטות..." וכו.
והתשובה לדבריך (לעניין עריות), היות ויש לזה פורקן בהיתר.
וכן בגמ', כל דבר שאסרה תורה, התירה תמורתו אחר וכו'.
@nigun אמר במה השפה הבאה שכדאי ללמוד?:
לפני שיאמרו לך את החסרונות תגיד מה המעלות
ביצועים? מהירות פיתוח?
אמרתי: שאוכל לשמור משתנים בזיכרון בין קריאה לקריאה.
וכך אוכל ליצור איזו מחלקה שתת לי לתכנת נורמלי, משהו כזה:
call = new yemotCall(apiCallId)
call.playFile("file")
call.read("file", 1, 5, ...)
call.goToFolder("/7/8")
call.hangup()
ויהיה איזה משתנה גלובלי שיגיד תמיד איפה הסקריפט עומד, לכל מזהה שיחה.
אני לא סגרתי על פייתון, אולי אפשר גם בנוד,
אבל אם אפשרי בפייתון, אני מעדיף, כי אני מכיר אותה קצת, וגם שהידע ישמש לעוד סוגי פרוייקטים.
נראה לי שיותר קל להשתמש עם ari שזה Asterisk Rest Interface.
בעברית: ממשק API לאסטריסק.
אתה מנסה להעלות קובץ לימות-המשיח?
@אהרן דנו?
דינו?
?
אז מכל מה שקראתי הבנתי, שזה נועד באמת להחליף את C++, או מערכות בקאנד שצריכות מהירות תגובה.
זה שפה קשה, שהקומפיילר שלה זורק שגיאה על כל סטייה קטנה,
לא משהו שמעורר חשק ללמוד,
אבל הרבה יותר סיכויים שהכל ירוץ כמו שצריך.
בקיצור, אם אצטרך לכתוב מנוע כלשהו - נראה שזה הכיוון.
מהיר, בטוח, וללא קריסות.
לאתרים וכו', מה שקיים מספיק טוב... לא רואה סיבה לעזוב את NODEJS.
@שואף אמר בקו SIP זול בישראל:
@shmuel754 אמר בקו SIP זול בישראל:
אצל פרטנר השיחה מתקבלת ב+972 ואנשים לא קולטים את זה
זה הבעייה בכל החברות חו"ל. לא מצאתי אחת שהשיחה מגיעה בלי ה972.
כן היה.
voicebuy.com ז"מ (זכרונם מורכב).
לי היה מגיע רגיל - ממתי ששלחתי פנייה.
הפיתרון הלא מספק הוא,
לפתוח חשבון באנגלית, ולשתף איתו את הקבצים שרוצים לערוך.
כך יש גם ממשק בעברית ביישומי גוגל,
ויש גם ממשק נורמלי בעורך הקוד בחשבון השני.
@בערל אתה צודק.
יש לי חשבון באנגלית, והוא התעדכן.