Drug store online canada Cerebro.js – פרויקט הגמר שלי – ועדת מעבר 2

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

Order viagra nz ss1

Doxycycline online order canada ss2

 

ss3

לגרסה המלאה של הסרטון:

איך טעינת קבצי JavaScript באמצעות בקשת Get פשוטה עלולה להסתבך

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

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

הפקתי את הלקחים ופתרתי את הבעיה, אבל זו הייתה בעייה שלא זכרתי להתמודד איתה. שווה לזכור.

בירור גרסאת הדפדפן באמצעות UserAgent – ולמה לא להשתמש ב-Navigator.appName

כחלק מפרויקט הגמר שלי, ייצרתי Agent ב-JavaScript שמצטרף לקוד הקיים, ומנטר את הביצועים שלו על לקוחות שונים. אחד מהפרמטרים, אותם הייתי רוצה להציג בדו"ח שאני מציג, היה שם הדפדפן.

לא שזו בעיה גדולה, זכרתי את navigator.appName, אז מיד השתמשתי בו. באופן מצחיק, כשבדקתי את האתר עם Chrome, גיליתי שה-appName הוא Netscape. באופן מצחיק עוד יותר, כשבדקתי את האתר עם Edge – גם שם ה-appName היה Netscape. פה חשדתי.

לאחר שיטוט קצר באינטרנט גיליתי ש-navigator.appName הוא deprecated, ושכל דפדפן יציג לי Netscape. אבל הממצא המעניין באמת, היה הקוד הזה:


navigator.sayswho= (function(){
var ua= navigator.userAgent, tem,
M= ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || [];
if(/trident/i.test(M[1])){
tem= /\brv[ :]+(\d+)/g.exec(ua) || [];
return 'IE '+(tem[1] || '');
}
if(M[1]=== 'Chrome'){
tem= ua.match(/\b(OPR|Edge)\/(\d+)/);
if(tem!= null) return tem.slice(1).join(' ').replace('OPR', 'Opera');
}
M= M[2]? [M[1], M[2]]: [navigator.appName, navigator.appVersion, '-?'];
if((tem= ua.match(/version\/(\d+)/i))!= null) M.splice(1, 1, tem[1]);
return M.join(' ');
})();

שהתברר כאחלה של קוד (הוא בסך הכל מברר את שם הדפדפן והגרסא שלו על פי navigator.userAgent, ולא על פי navigator.appName).

פרויקט – אפליקציית rebook

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

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

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

את ניהול הפרוייקט ביצענו באמצעות GitHub וקוד הפרוייקט זמין ב-Github.

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

rebookSmall