ng-conf 2015 – סיכום היום השני

בהמשך לסיכום היום ראשון של ng-conf 2015, הגיע הזמן לסכם גם את יום ההרצאות השני.

Keynote

הועבר ע"י: MIŠKO HEVERY ו- RADO KIROV

Keynote מעולה שבו סקרו מישקו ורוד את אנגולר 2. מישקו התחיל ואמר שאין סיבה לחשוש מהשינויים רק כי הם חדשים ולא מוכרים לנו, ציין שהתחביר של אנגולר 2 פשוט יותר מהתחביר של אנגולר 1 ויש משמעותית פחות דברים לזכור, הוא הסביר את המוטיבציה לעבוד עם properties במקום attributes ומה בכלל ההבדל ביניהן ואמר שבאנגולר 2 נוכל להשתמש ולהעזר בכלים הרבה יותר חזקים ומועילים בזכות כל השינויים שנעשו. באמצע ההרצאה מישקו הזמין את רוד, חבר נוסף בצוות של אנגולר, וביחד הם הציגו אפליקציה שכתובה באנגולר 2 – במהלך ההדגמה הם הסבירו את התחביר החדש והראו כיצד הדברים עובדים.

Binding to the Cloud with Falcor

הועבר ע"י: JAFAR HUSAIN

ג'פר הוא Tech-Lead ב- Netflix וחבר בקבוצת TC39 והוא דיבר על ספריה שהם מפתחים ב- Netflix המשלבת ארכיטקטורה חלופית ל- MVC. הוא העלה טענה שבעקבות אופן השימוש באפליקציות וואב כיום – MVC לא באמת מצליחה במלאכת ה- Separation of Concerns, ה- View תלוי ב- Controller ולכן שינויי תצוגה רבים מחייבים גם שינויים ב- Controller. הוא הציג ספריה שהם עובדים איתה בנטפליקס בשם Falcor המפשטת את צורת העבודה מול השרת ומאפשרת לנו לעבוד עם המידע כאילו הוא נמצא אצלנו מקומית. הוא סיים עם משפט שבו אמר: "[באינטרנט של היום] אתה כבר לא מקבל דברים, אתה עושה דברים" והדגיש את הצורך בשינוי צורות החשיבה והעבודה שהיו קיימות בשנים האחרונות.

TypeScript and Angular 2.0

הועבר ע"י: JONATHAN TURNER

גו'נתן הוא ה- Program Manager של TypeScript במיקרוסופט, בהמשך להכרזות מאתמול על השקת אנגולר 2 והמעבר ל- TypeScript, הוא נתן סקירה נוספת של השפה וכתב איתה אפליקצית אנגולר 2. גו'נתן הסביר על הפיצ'רים השונים בשפה ואיך הם עובדים ואז קפץ לדמו שבו הוא כתב אפליקצית Todo list באנגולר 2 באמצעותה, במהלך הדמו הוא המשיך להסביר איך עושים דברים וסיים עם התוכניות לעתיד והפיצ'רים הנוספים שיגיעו ממש בקרוב, ביניהם תמיכה רחבה יותר ב- ES6 ובגרסה הבאה גם פיצ'רים מ- ES7.

What's new in ngAnimate

הועבר ע"י: MATIAS NIEMELÄ

מטיאס, חברנו מ- yearsofmoo, דיבר על אנימציות באנגולר ובעיקר על השינויים שנעשו ב-ngAnimate במסגרת אנגולר 1.4. הוא הציג את angular.animate, הסביר על callbacks שניתן להעביר על מנת לזהות מתי נגמרת אנימציה, הציג את הפיצ'רים anchors ו- ngTimeline וסקר יכולות נוספות שצפויות להגיע בגרסאות 1.5 ו- 2 של אנגולר.
קישור למצגת: http://yom.nu/ng-conf-2015-slides

Building Platforms with Angular

הועבר ע"י: JEN BOUREY

ג'ן היא ה- Tech-Lead של Google's Cloud Platform והיא דיברה על האתגרים בפיתוח אפליקציות גדולות ובעיקר על שיתוף קוד, מניעת התנגשויות וביצוע שינויים רוחביים. במהלך ההרצאה ג'ן הציגה את הספריות השונות שהם משתמשים בהן, ציינה שהפרויקט שלהם כולו כתוב באנגולר והוא מכיל כ- 200,000 שורות קוד ו- 25mb של ג'אווה-סקריפט. היא גם הציגה את מבנה הצוותים, הסבירה על מערכת ניהול החבילות שלהם, הציגה את אסטרטגית המעבר שלהם לאנגולר ולבסוף את הבדיקות שהם עורכים לאחר כל שינוי שנעשה בקוד.

Reactive all the things

הועבר ע"י: BEN LESH ו- MARTIN GONTOVNIKAS

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

Angular 1.3 meets Angular 2.0

הועבר ע"י: MICHAŁ GOŁĘBIOWSKI ו- ANDREW JOSLIN

מיכאל ואנדרו הציגו דמו שבו הסבירו כיצד לבצע מיגרציה מאנגולר 1.3 לאנגולר 2.0. הם המליצו להשתמש ב- ES6 כבר היום על מנת להקל על התהליך, להעזר בכלים כמו babel, לעבוד עם הגרסאות החדשות ביותר של אנגולר ולאמץ את הראוטר החדש. במהלך הדמו הם העבירו Service פשוט מאנגולר 1 לאנגולר 2 וסקרו את השינויים שנעשו במסגרת ההמרה, לאחר מכן הם עשו אותו דבר גם עם Directive ובנוסף הציגו את angular.component שעשוי להקל עלינו עוד יותר.

Digging into Angular Style Guide Decisions

הועבר ע"י: JOHN PAPA

ג'ון, היוצר של אחד מה- Style Guides הנפוצים ביותר לאנגולר, דיבר על החשיבות של Style Guide ועל הדברים שצריך לקחת בחשבון כשמחליטים על קונבנציה כזו או אחרת. ג'ון ציין שקוד אומנם רץ במחשב, אבל יש מישהו נוסף שקורא אותו וזה אנחנו, הוא אמר שקוד הוא למעשה ערוץ תקשורת בין אנשים, שקוד לא צריך להיות יפה אלא מובן ופשוט לקריאה ולהבנה, הוא סקר מגוון שאלות שונות ש- Style Guide צריך לענות עליהן וציין מה לדעתו חשוב שהוא יכיל.

Better i18n for your Angular apps

הועבר ע"י: CHIRAYU KRISHNAPPA ו- PASCAL PRECHT

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

Badges? We don't need no stinkin' badges!

הועבר ע"י: LUKAS RUEBBELKE ו- GEOFF GOODMAN

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

Build an Angular Material App

THOMAS BURLESON & NAOMI BLACK

הרצאה מעולה על Angular Material מאת תומאס ונעמי מגוגל. הם סקרו את הפרויקט, הסבירו למה חשוב לשים לב כשעובדים עם Material Design וסקרו את הפיצ'רים השונים של הספריה, ביניהם ה- Directives המובנים, התפריטים וההתנהגות הרספונסיבית. הם גם הציגו את הדוקומנטציה, הציגו את התמיכה של הספריה בנגישות, סיפרו מה עדיין חסר, הבטיחו שישלימו את הרוב עד הקיץ ולבסוף ציינו שהם עובדים במרץ על מנת לתמוך גם באנגולר 2. מי שרוצה להתחיל לעבוד עם הספריה, יש פרויקט ב- ES5 ופרויקט ב- ES6 שרק מחכים לכם.

Angular + React = Speed

הועבר ע"י: DAVE SMITH

דייב הציג את הבדלי המהירות ביוז-קייס מסויים בין אנגולר, React ואנגולר + React ביחד. הוא התחיל עם הסבר של 90 שניות על מה זה React והציג אפליקצית לוח שנה שבה פיצ'ר מסויים מומש במספר דרכים שונות. הוא השווה בלייב את המהירות בין הגרסאות השונות, הסביר שהיתרונות העיקריים ב- React במקרה הזה הם המהירות בזמן העלייה הראשוני ובשינויים, בעוד החסרונות הם בגודל הספרייה הגדול יחסית של 500kb ובהוספת framework נוסף לפרוייקט. לסיום דייב הציג את אותו רכיב בדיוק באנגולר 2, והמהירות הייתה מדהימה.

Change Detection Reinvented

הועבר ע"י: VICTOR SAVKIN

ויקטור סקר את הארכיטקטורה החדשה באנגולר 2 בכל מה שקשור לזיהוי שינויים וזרימתם במערכת. הוא הסביר את המבנה הפנימי החדש ומדוע לא צריך יותר מ- digest בודד על מנת לעדכן את כלל המערכת. הוא הסביר את היתרונות בשימוש ב- Immutable Objects ו- Observables באלגוריתם החדש ואמר שהוא מהיר פי 3-10 יחסית לאנגולר 1.3. ויקטור גם ציין שלא חייבים להשתמש ב- Immutable Objects או ב- Observables ואפשר גם בלעדיהם, ומי שרוצה יכול אפילו לשלב גם וגם. הוא גם כתב בעבר פוסט בנושא שמי שמעוניין מוזמן לקרוא.

(Super)Power Management

הועבר ע"י: IGOR MINAR

איגור, בסיישן לא טכנולוגי, סיפר על תהליך שהוא עובר לאחרונה ומדוע כדאי גם לנו לנסות אותו. הוא סיפר על ההצלחה שלו, על דרך החיים והעבודה הקשה שלו בעבר, על השחיקה מדרך החיים הזו, על מדיטציה, על מודעות עצמית ושליטה עצמית, הוא סיפר על השינוי שהוא עשה והמליץ לכולנו לקחת דקה של שקט, להתנתק, לנשום ולהרגע.
קישור למצגת: http://goo.gl/xwRpQA

Angular Team Panel/QA

הועבר ע"י: GOOGLES

בסיישן שאלות ותשובות הצוות ענה על מגוון שאלות שהופנו אליהם מהקהל באולם ובאינטרנט. מס' דברים מעניינים שנאמרו הם שחשוב להם לתמוך ב- lazy loading של קבצים והם יעבדו על מנת שזה יהיה קיים כבר באנגולר 1.4, הם ביקשו עזרה מהקהילה עם תיקוני באגים ופיתוח של פיצ'רים נוספים ולשאלה על העלמותם של ה- Filters הם השיבו שהם לא נעלמו ובאנגולר 2 הם נקראים Pipes, למי שחשש.

לסיכום

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

את הפלייליסט עם כל ההרצאות ניתן למצוא כאן:

ng-conf 2015 – סיכום היום הראשון

אתמול נערך יום ההרצאות הראשון של ng-conf 2015, למי שלא מכיר – ng-conf הינו כנס שנתי המופק בשיתוף גוגל ומופנה לקהילת ה- AngularJS הבינלאומית.
במהלך היום היו המון הכרזות וחדשות מעניינות, אנסה לסכם עבורכם את הדברים העיקריים והמשמעותיים ביותר שאני קיבלתי עד כה.

Welcome

הועבר ע"י: BRAD GREEN ו- IGOR MINAR

בראד הינו מנהל פיתוח בגוגל, בין היתר הוא מנהל את הפרוייקט של אנגולר, ואיגור כרגע מוביל את אנגולר 2. שתי הכרזות משמעותיות קיבלנו מהם בהרצאה הזו, הראשונה הייתה בנוגע ל- Angular 2 – שוחררה גרסאת Alpha Preview והושק אתר חדש. והשנייה הייתה בנוגע ל- AtScript – גוגל תשתף פעולה עם מיקרוסופט, AtScript ישולב לתוך TypeScript וישוחרר ב- TypeScript 1.5. בנוסף, נאמר שהקבוצות של Angular ו- Angular Dart יאוחדו, כעת כולם יעבדו עם TypeScript ובסופו של דבר הקוד של אנגולר יומר הן ל- JavaScript והן ל- Dart, מה שיאיץ את פיתוח הפריימוורק ויעשה טוב לכולם. שמחתי לשמוע גם שהגרסה החדשה של אנגולר תושק עם Style Guide רשמי, תקח את עניין ה- performance ברצינות ותגיע עם Immutable data structures.
בנוגע למיגרציה מאנגולר 1 לאנגולר 2, מה שמדאיג ומפחיד לא מעט מתכנתים בקהילה, בראד ציין כי בגוגל יתחילו להעביר אפליקציות פנימיות לגרסה החדשה בסביבות חודש מאי, במהלך הדרך הם ילמדו, יסיקו מסקנות וימשיכו לעדכן את הקהילה. נראה שהם לוקחים את העניין הזה ברצינות.

State of 1.x

הועבר ע"י: PAWEL KOZLOWSKI ו- LUCAS GALFASO

פבל ולוקס סקרו את אנגולר 1 מבחינת הקהילה, המצב הקיים והחזון של הפרויקט לעתיד. הם ציינו ש- 50% מה- commits באנגולר בעצם הגיעו מהקהילה, הכריזו על 2 חברי ליבה (core contributors) חדשים, ביניהם נציג ישראלי ראשון – שחר תלמי. הם גם דיברו על כל מיני שיפורים ושינויים שנעשו (מפורטים במצגת בהמשך), אמרו שגרסת 1.4.0-RC.0 תגיע כבר בשבוע הבא והמליצו לכולם לעדכן לגרסאות החדשות ביותר ולא להשאר מאחור. בנוסף הם גם דיברו על המשך הפרויקט לגרסא 1.5 ואולי גם 1.6 וציינו שחלק מהפיצ'רים בגרסאות הבאות יהיו בעצם פיצ'רים שילקחו מאנגולר 2, כך שגם מי שישאר עם הגרסא הקיימת יוכל לקבל חלק מהפיצ'רים המגניבים של הגרסא החדשה. לסיכום, הם קראו לכולנו לקחת חלק פעיל בפרויקט, להציע פיצ'רים, לעבוד על באגים ולעזור לפרויקט לצמוח.
קישור למצגת: http://goo.gl/G5Kwkw

The new router

הועבר ע"י: BRIAN FORD

בריאן הוא הבחור שאחראי על הראוטר החדש. הוא התחיל עם דוגמאת קוד שבה הוא סקר אותו, עבר על ה- API והסביר איך הוא עובד כבר בגרסא 1.4. הוא אמר שהם ראו שהמון אנשים מאוד אוהבים את ui-router והם לקחו ממנו השראה בתכנון הראוטר החדש, ואפילו ציין שהם יעבדו על מיגרציה מ- ui-router במטרה להקל על הקהילה ולעזור לכולם לשדרג. הוא הוסיף שהראוטר החדש משתמש ב-route-recognizer, נתן קרדיט ל- Ember שפיתחו אותו ואמר תודה ל- Rob Eisenberg ולחברי צוות נוספת על עזרתם. למי שלא יכול לחכות, עלתה גם דוקומנטציה ראשונית.

Prototyping with Angular? YES!!

הועבר ע"י: KELLY KNIGHT ו- DIRK GINADER

קיילי ודירק הם UX Engineers בגוגל והם דיברו על איך הם עובדים עם אנגולר ליצירת prototypes והציגו מס' שיטות שהם משתמשים בהן. הם דיברו על angular-google-analytics – פרויקט שעוזר לשלב את Google Analytics באפליקציות אנגולר בקלות, הזכירו את cubic-bezier – אתר שמאפשר לבנות אנימציות ולראות אותן בלייב, הם הראו כיצד הם בנו prototypes הניתנים לשינוי בקלות באמצעות ה- URL, ואפילו הציגו prototypes הנשלטים באמצעות קול (ע"י Web Speech API), הם גם דחפו לשימוש ב- ngAria, מודול המשפר את נגישות האפליקציות שלנו בצורה כמעט אוטומטית ומאוד פשוטה. לסיום הם המליצו להשתמש ב- Google Sheets בתור דטא-בייס ל- prototypes בשל היותו מאוד פשוט וקל להטמעה.

Fast from the Start

הועבר ע"י: JEFF CROSS

ג'ף דיבר על performance ובעיקר על benchmark של אפליקציות אנגולר. הוא הסביר מה המוטיבציה, למה הפתרונות הקיימים לא מספיק טובים והציג את benchpress – כלי שפותח בדיוק בשביל זה. הוא הציג את הכלי, הראה מס' דוגמאות וציין מה עדיין צריך לשפר בו.

Creating Container Components with Web Components and Angular

הועבר ע"י: KARA ERICKSON ו- RACHAEL L MOORE

ריצ'ייל וקרה הסבירו כיצד הן משתמשות ב- Directives במהלך העבודה שלהן. הן הסבירו קצת על Web Components ו- Shadow DOM והציגו יוז-קייס לדוגמה, הן סיימו עם השוואה בין Directives באנגולר 1 ל- Component Directives באנגולר 2.

ngTasty

הועבר ע"י: LEONARDO ZIZZAMIA

בהמשך להרצאה על performance ו- benchpress, לאונדרו הסביר כיצד יש להתייחס לביצועים כאשר מפתחים רכיבים שצריכים לעבוד מהר. הוא הסביר כיצד לתכנן, למדוד ולזהות מקומות לשיפור ונתן סיישן hands-on שבו הוא הריץ את benchpress על ngTasty והסביר כיצד זה עזר לו במהלך הדרך כשהוא פיתח את הספריה.

TypeScript and ES6

הועבר ע"י: DAN WAHLIN ו- ANDREW CONNELL

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

Community Building How-To: Make More Angular Devs Now

הועבר ע"י: JUDY TUAN

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

ng-wat?

הועבר ע"י: SHAI REZNIK

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

Accessibility Design Made Easy

הועבר ע"י: JULIE RALPH

ג'ולי מובילה את Protractor, כלי לבדיקות E2E המיועד לאפליקציות אנגולר. במהלך ההרצאה גו'לי דיברה על plugins ל- Protractor והסבירה כיצד הם עובדים, אך עיקר ההרצאה היה בנוגע לנגישות (Accessibility) – ג'ולי הסבירה מדוע המקום הנכון לבצע בדיקות נגישות זה בבדיקות ה- E2E, הסבירה כיצד להשתמש בפלאגין לבדיקות נגישות החדש, כיצד להפעיל את האפשרות ב- Chrome DevTools ועברה בקצרה על הפלט של בדיקה לדוגמה שהיא הריצה על הדוקומנטציה של אנגולר.
קישור למצגת: http://goo.gl/wgXRwb

Why Realtime Matters

הועבר ע"י: JAMES TAMPLIN

ג'יימס הסביר מה זה בעצם Real-time data, סקר את Firebase והסביר כיצד הוא עובד. במהלך ההרצאה ג'יימס הכריז על ההשקה של AngularFire 1.0 ופירט על הפיצ'רים השונים שהספריה מכילה. פיצ'ר נחמד שהוצג היה בהקשר של infinite scroll והוא הוצג באפליקציית ionic – ג'יימס הראה כיצד במס' שורות קוד בודדות הוא משלב pagination ומושך דינאמית מהשרת מידע נוסף במהירות ובקלות. לסיום ג'יימס הציג 2 פיצ'רים נוספים – הראשון נקרא Private Backups והוא מאפשר לנו לייצא את כל המידע שלנו מ- Firebase, השני הוא SEO Support והוא מיועד לשפר את ה- SEO של האפליקציה שלנו ולהפוך אותה נגישה יותר עבור מנועי החיפוש השונים.

ngModelOptions in 5 minutes

הועבר ע"י: KENT C. DODDS

קנט הציג את ngModelOptions, פיצ'ר שהתווסף בגרסה 1.3 ומאפשר לנו לשלוט על עדכון המודל מה- View. ב- 5 דקות קצרצרות הוא הסביר על הפיצ'ר והציג את ההגדרות השונות שניתן להחיל וסיים עם הפניה למאמרים נוספים ב- egghead, למי שרוצה להתעמק יותר.

How to Teach Angular to your Kids

הועבר ע"י: KATYA EAMES

קטיה פתחה במשפט: "היי, קוראים לי קטיה אימס, אני בת 16 ואני מתכנתת אנגולר" וזכתה למחיאות כפיים מהקהל, לאלו מכם ששמו לב לשם המשפחה שלה – כן, היא הבת של ג'ו אימס, אחד ממארגני ה- ng-conf. קטיה הסבירה כיצד היא נכנסה לתחום, איך היא השתלבה בזה במסגרת בית הספר, כיצד הגיעה לכתיבת האפליקציה הראשונה שלה באנגולר ואיך גם אנחנו יכולים ללמד את הילדים שלנו אנגולר. קטיה רצתה שנזכור 3 דברים עיקריים מההרצאה שלה: (1) אנגולר הוא דרך מצויינת ללמד ילדים לתכנת כי הוא מאוד מעניין, (2) אנחנו חייבים להיות מעורבים בתהליך (3) ושאנחנו אכן יכולים ללמד את הילדים שלנו אנגולר.

Run digest cycle in web worker

הועבר ע"י: DR. GLEB BAHMUTOV PHD.

ההרצאה של גלב התמקדה ב- scope וב- digest cycles באנגולר בהקשר של ביצועים. הוא הראה מקרה שבו ה- digest היה ארוך ותקע את הממשק, לאחר מכן הציג פתרון שבו הוא מעביר את ה- digest ל- web worker – כך שהוא ירוץ על thread אחר וישאיר את הממשק רספונסיבי.
קישור למצגת: http://slides.com/bahmutov/run-digest-cycle-in-web-worker

Sasqwatch is real

הועבר ע"י: WILLIAM SCOTT MOSS

וויליאם דיבר על performance ובעיקר על watchers ו- digest cycles. הוא הדגיש שלא צריך להשתמש בכל מה שאנגולר נותן ושצריך להתייחס להשפעות של היכולות המובנות על הביצועים – בהקשר הזה הוא עקץ עם משפט שמסכם את זה בצורה נהדרת לדעתי: "[כשאתם עושים הכל עם אנגולר] המשתמשים שלכם מאוכזבים, אבל לפחות המתכנתים שלכם עושים חיים". וויליאם המשיך והציג אפליקציה אמיתית שדרכה היא המחיש את הדברים, הוא פירט בנוגע לדברים שצריך ולא צריך לעשות, הציג best-practices והמליץ להשתמש באופטימיזציות הקיימות באנגולר 1.3 על מנת לשפר את ביצועי האפליקציה שלנו.

Ionic + Angular: Superpowers for Mobile App Development

הועבר ע"י: ADAM BRADLEY

אדם, היוצר של Ionic, הציג את המטרות והחזון של הפרויקט. הוא הציג מס' פיצ'רים מעניינים כמו collection-repeat העובד בדומה ל- repeat אך מרנדר רק את הפריטים המוצגים על המסך (כמו ב- UICollectionView של iOS), הסביר כיצד עובד ה- Cached views והציג פיצ'ר בשם "Swipe to go back" המאפשר לחזור אחורה באמצעות swipe כמו באפליקציות נייטיב. אדם הציג המון פיצ'רים נוספים, נתן live demo עם אפליקציה לדוגמה, הציג את ionicions – פונט לאייקונים, הראה כיצד ניתן לעבוד עם ה- console כאשר עובדים עם מכשירים אמיתיים ואימולטורים, הציג את ionic.io ואת השירותים החדשים שבאופק, הכריז רשמית על השקת Ionic 1.0 והדגיש שהצוות שלו יעבוד עם הצוות של אנגולר במטרה לתמוך גם באנגולר 2.
קישור למצגת: http://adamdbradley.github.io/ionic-present/

Angular Behind The Scenes

הועבר ע"י: RODRIC HADDAD

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

לסיכום

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

עדכון: למי שמעוניין, סיימתי לכתוב גם את סיכום היום השני של ng-conf 2015.

את הפלייליסט עם כל ההרצאות ניתן למצוא כאן:

JPG.co.il – המהפך

למי שמכיר ולמי שעדיין לא – JPG.co.il הינו אתר המספק שירות העלאת תמונות.
במשך כשנתיים, שבמהלכן בוצעו בו שינויים מינוריים בלבד, הוא היה נראה ככה:

עמוד הבית:
JPG - Old Main Page

עמוד התצוגה:
JPG - Old View Page

אז נכון, לא קשה לראות שהוא נראה גרוע, מאוד גרוע אפילו, ואני מרשה לעצמי להגיד את זה בעיקר כי אני זה שעיצב אותו (או ליתר דיוק – לא עיצב אותו).

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

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

לפני כמה חודשים, החלטנו שנמאס לנו מהבינוניות – JPG לא יהיה עוד אתר העלאת תמונות, הוא יהיה האתר להעלאת תמונות, אנחנו רוצים להוביל את הנישה הזו בארץ בגאווה ובכבוד ולא עם אתר שנראה כאילו החזרנו אותו משנות ה- 80, אז התחלנו לעבוד על זה.

הגדרת יעדים

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

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

תוצר ראשוני

לאחר לא מעט מחשבות, התלבטויות, התייעצויות וכד', הגענו לאיפיון הבא: http://s5uemp.axshare.com.

את עמוד הבית החלפנו לחלוטין וכעת הוא נקי וממוקד, העלאת תמונות, זה כל מה שעושים כאן. אפשרויות מתקדמות ופיצ'רים נוספים שרצינו להציף שם, הנגשנו באמצעות הקישורים מתחת לאזור ההעלאה.
את JPG Uploader, תוכנת העלאת התמונות שלנו, החלטנו למתג בצורה חשאית ויוקרתית יותר והצבנו את הקישור היחידי אליה תחת "גלה לי סוד" שבעמוד הראשי. את 2 הבאנרים שהיו באתר הקודם החלטנו להסיר לחלוטין, למרות הפגיעה הישירה בהכנסות שהמהלך הזה מביא איתו – רצינו שדף הבית יהיה נקי וממוקד כמה שאפשר.

עמוד ההעלאה לעומת זאת נשאר די דומה מבחינת התכולה שלו, למעט 2 שינויים משמעותיים:
1. מיד לאחר כותרת התמונה הוספנו אינדיקציה למס' הצפיות באותה תמונה, האינדקציה כוללת גם תצוגה ויזואלית בדמות סרט/מדליה/גביע/כתר בהתאם לכמות הצפיות. המטרה הייתה לגרום למשתמשים לשתף את התמונות שהם מעלים דרך דפי התצוגה ולא באמצעות הקישור הישיר, קיווינו שאם נשלב כאן אלמנטים של גמיפיקציה שכוללת גם מידע מועיל, נצליח לעשות את זה. כמו שאמרנו לפני כן – זה העמוד הרווחי ביותר שלנו ואנחנו רוצים לדחוף אותו קדימה.
2. בתחתית העמוד הצפנו מס' תמונות נוספות שקשורות לתמונה שבה הגולש צופה כרגע, גם כאן, המטרה לגרום למשתמשים לצפות בדפי תצוגה נוספים.

מה עושים עם זה הלאה

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

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

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

מה עשינו

כתבנו קצת קוד, אחרי זה עוד קצת קוד, אחרי זה עוד המון קוד ובסופו של דבר – JPG.co.il נולד מחדש.

עמוד הבית:
JPG - New Main Page
JPG - New Main Page Extended

עמוד התצוגה:
JPG - New View Page

כל סוף הוא התחלה חדשה

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

אז כמובן שהטמענו את Google Analytics – כרגע מוקדם מדי להסיק מסקנות אבל ניתן לראות בבירור עליה במדד "מס' צפיות לביקור", זה משתקף בעיקר בדפי התצוגה, כך שההצפה של התמונות הנוספות שמה כנראה עושה את העבודה שלה, אנחנו עוד נוודא את זה בהמשך.

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

כך זה נראה:
JPG - Heatmap

מסקנות מהבדיקות

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

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

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

לסיכום

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

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

החלפת/ מכירת קישורים ו- SEO

גוגל מבהירים שוב שסחר והחלפת קישורים למטרות SEO אינו חוקי מבחינת התקנון שלהם.

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

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

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

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

SEO – הגדרת גבולות

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

מהו מנוע חיפוש ומה מטרתו?

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

למה אנחנו מקדמים את האתר במנועי חיפוש?

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

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

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

על מה אתה מדבר?

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

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

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

לסיכום

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

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

באג קטן ב- DirectAdmin

אחרי הפסקה קצרה ובלי פוסטים חדשים (אבל הרבה כאבי ראש אחרים), יש לנו ילד חדש.

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

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

2 דפים שבהם זה אפשרי (יש עוד הרבה):
http://www.yourdomain.com:2222/HTM_EMAIL_POP_CREATE?DOMAIN=google.co.il
http://www.yourdomain.com:2222/HTM_PASSWD?domain=google.co.il

דף שבו זה לא אפשרי (גם כאן הוא לא היחיד):
http://www.yourdomain.com:2222/CMD_EMAIL_POP?domain=google.co.il

חשבתי כיצד ניתן לנצל את העניין, התמקדתי בניסיון ליצור חשבון מייל/ forwarder תחת דומיין אחר שמקושר לאותו השרת וכך בעצם להתחזות לאיש צוות שלו, נכשלתי.
אתם מוזמנים לשחק עם זה ולשתף אם מצאתם משהו מעניין..

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

בחלק מהשרתים אתם יכולים ליצור סאב-דומיין תחת דומיין שקיים על השרת אך לא שייך לחשבון שלכם באמצעות הממשק ליצירת דומיין חדש פשוט באמצעות הזנת ערך בסגנון "xxx.anothersite.com".
אם לדוגמה אתם מאוחסנים באותו שרת שבו מאוחסן האתר "www.anothersite.com",
אתם יכולים ליצור את הדומיין "adir.example.com" ולעשות איתו מה שבא לכם.

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

רוצים לפתוח חשבון ב- PayPal? אני מוכן לעשות זאת עבורכם

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

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

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

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

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

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

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

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

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

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

אז מה באתי להגיד בכל הפוסט הזה?
למה גרמתי לכם לבזבז דקות ארוכות בקריאת עוד פוסט משעמם אם בסוף הסיפור זה בכלל אני אשם?

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

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

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