הי חברים, זה המקום להדביק מאמרים לגיליון הבא של הלינקייה ## פיתוח צד-לקוח למה וובפאק שלי כל כך איטי? https://samsaccone.com/posts/why-is-my-webpack-build-slow.html טוב רציתי לפתוח את הניוזלטר עם הלינק הזה בגלל הכותרת - אין ספק שזאת שאלה שאני שואל את עצמי בתסכול כל פעם שמפעיל וובפאק. אז אומנם לא תמצאו פה תשובה (כי אם זה היה פשוט הוובפאק של כולנו היה מהיר), אבל כן תמצאו כמה דרכים לזהות מה מאט לכם את הוובפאק ולשפר ביצועים שם. בואו נבנה Todo App ב Svelte https://freshman.tech/svelte-todo/ יש לי חולשה לכל פריימוורק שעוזר לי לשפר את אוצר המילים שלי בצרפתית, וככה סבלטה נכנס אצלי לרשימת הפריימוורקים ששווה לבדוק. התחביר בינתיים נעים ותכל'ס מה שבונים שם זה קוד צעצוע, אבל בצד החיובי תוכלו לספר לכולם שאתם יודעים סבלטה ולהישמע בעניינים. שכפול אוביקטים ב JavaScript https://www.codebrain.co.il/%d7%a9%d7%9b%d7%a4%d7%95%d7%9c-%d7%90%d7%95%d7%91%d7%99%d7%99%d7%a7%d7%98%d7%99%d7%9d-%d7%91-javascript/ דור בן זקן ניסה לשכפל אוביקטים ולמד בדרך על ההבדל בין Value ל Reference ועל ההבדל בין Shallow Copy ל Deep Copy, שני דברים שהוא משתף בפוסט שבקישור יחד עם דוגמאות קוד לכל סוגי ההעתקות. חושבים שאתם יודעים הבטחות ב JavaScript? https://www.tocode.co.il/blog/2019-07-js-promises-exercise חושבים שאתם יודעים מה זה Promise, מה עושה async ו await ואיך לשלב את כל זה לתוכנית אחת? בין אם אתם כבר יודעים את הנושא ורוצים לתרגל או שמרגישים שכל העסק הזה של Promises זה סינית, אני ממליץ על דף התרגול שבקישור כהזדמנות לסגור אחת ולתמיד את הפער הזה. מדריך סופר מפורט למתחילים בעבודה עם ריאקט https://jscomplete.com/learn/complete-intro-react האמת שאני לא בטוח ש"מתחילים" הם קהל היעד הנכון למדריך הזה. הוא אומנם לא דורש היכרות קודמת עם ריאקט אבל במקום להראות לכם איך בונים אפליקציות הוא לוקח מעקף ומראה לכם איך ריאקט עובד ומה העקרונות עליהם הוא בנוי. בעיניי זה סופר חשוב וכדאי לקרוא אם אתם עובדים בריאקט כמה חודשים ורוצים לשפר את הידע. איך להתמודד עם ריבוי שפות ב Vue https://medium.com/@idokan/changing-layout-with-vue-js-7b50846005cd עידו קנר היה צריך לכתוב ממשק משתמש רב לשוני ב Vue ושם לב שאין תמיכה בפריימוורק ב Layouts שונים. בגלל שעברית נכתבת מימין לשמאל ואנגלית משמאל לימין, היה צריך פיתרון יצירתי ובפוסט תמצאו את הקוד ב Vue שמאפשר לשנות שפה ומחליף קובץ CSS בעקבות השינוי. ## אלגוריתמים | עיצוב תוכנה מתכנתים ששונאים OOP פשוט לא יודעים להשתמש בזה http://nomad.uk.net/articles/developers-who-hate-on-oop-don't-know-how-to-use-it.html בדיוק כשחשבתי שהוויכוחים על OOP מאחורינו, גארי ווילבורי ממהר להגן על שאריות הכבוד של ה OOP ולהזכיר שכשכותבים OOP נכון הכל מתחבר יחד כמו פאזל. הוא צודק אני חושב, אבל משחק בדיוק לידיים של הביקורת המרכזית נגד OOP - והיא שרק מעטים מצליחים לכתוב את זה כמו שצריך. הפונקציה softmax ומימושה ב Python https://victorzhou.com/blog/softmax/ הפונקציה softmax הופכת סידרת ערכים לסידרת הסתברויות וכך עוזרת לנרמל קלט, גם כשיש בו מספרים שליליים וגם כשסכום המספרים אינו 1. ב softmax נוכל להשתמש כדי להפוך תשובה מספרים של רשת נוירונים להסתברות, וכך נוכל להציג תוצאה של סיווג בצורה יותר ידידותית או מדויקת (אני בטוח ב 94% שמה שבתמונה הוא כלב). בפוסט תמצאו מימוש של softmax וכמה רעיונות איפה משתמשים בה. מודלים של ג'נריקס בשפות תכנות שונות http://thume.ca/2019/07/14/a-tour-of-metaprogramming-models-for-generics/ ג'נריקס הוא היכולת של שפות תכנות להתיחס לנתונים מסוגים שונים בתור דבר דומה, כך שאפשר יהיה לכתוב קוד גנרי שמטפל בכמה סוגי נתונים. שתי הדרכים המרכזיות לממש ג'נריקס נקראות Boxing ו monomorphization, ובפוסט (שלדעתי הוא הכי ארוך בגיליון החודש) תוכלו למצוא הסבר מפורט על שני הסוגים יחד עם דוגמאות שלהם בשפות השונות. ## שפות פיתוח | קוד | טוטוריאלס מה חדש בפייתון 3.8 https://deepsource.io/blog/python-3-8-whats-new/ אופרטור סוס הים שלפי השמועות היה מהסיבות המרכזיות לכך שגווידו עזב את ניהול פייתון וברח להרים סוף סוף ייכנס לשפה. בפוסט תוכלו למצוא את הפרטים של איך להשתמש בו ועוד כמה יכולות חדשות שצפויות בגירסא החדשה (תאריך שחרור של הגירסא צפוי להיות סוף אוקטובר). פיתוח סקריפטים בפייתון שגם יהיה קל לתחזק אותם https://vincent.bernat.ch/en/blog/2019-sustainable-python-script פייתון הפכה לשפה הראשונה שאנשים בוחרים בה כמעט לכל משימת אוטומציה במחשב, ולכן רק טבעי שכשתפתחו חלק גדול מהסקריפטים שלכם חודשיים אחרי שכתבתם אותם לא תוכלו להבין מהם כלום. וינסנט ברנט מציע 4 דרכים להפוך את הסקריפטים שלכם ליותר קלים לתחזוקה בטווח הרחוק. הרצת קוד בלי לקמפל ב Java 11 https://www.infoq.com/articles/single-file-execution-java11/ אם יש לכם Java 11 או עדכני יותר מותקן מסתבר שאתם יכולים להתחיל לכתוב גם את הסקריפטים שלכם בשפת Java בזכות JEP 330 אתם יכולים היום להריץ סקריפטים ב Java גם בלי לקמפל אותם פשוט עם פקודת java רגילה. בפוסט תמצאו הסבר מלא על הפיצ'ר וגם טיפים מועילים לכתיבת סקריפטים ב Java. גישה לבסיסי נתונים יחסיים באמצעות Sequelize https://www.tocode.co.il/blog/2019-07-sequelize משתמשים ב Node.JS ונמאס לכם מ Mongo? למרות שזה פחות טרנדי, אין שום בעיה להשתמש בבסיסי נתונים מבוססי SQL גם ב Node.JS ויש אפילו ספריה מצוינת שנקראת Sequelize שתעזור לכם לסדר את החלק בפרויקט שאחראי על הגישה לבסיס הנתונים. בפוסט תמצאו מדריך מלא ובעברית שכתבתי על הספריה שיעזור לכם להתחיל לעבוד איתה. כל מה (שלא) רציתם לדעת על Type Hints ב Python https://veekaybee.github.io/2019/07/08/python-type-hints/ כבר מ 2014 פייתון תומכת ב Type Hints, ולמרות זאת כמעט כל פעם שאני מגיע ללמד קורס פייתון לא-משנה-איפה יהיו הרבה משתתפים שיתלוננו על היותה של פייתון שפה דינאמית ועל זה שקשה למצוא באגים בגלל היעדר בדיקת הטיפוסים. ויקי בויקיס גם היתה סקרנית ושאלה את העוקבים שלה בטוויטר, שם היא גילתה שכ 30% מהפרויקטים אכן משתמשים ב Type Hints. בשביל להבין יותר טוב אם Type Hints יתאימו לה היא הכינה בשבילנו סיכום מסודר על מהם Type Hints ואיך בדיוק להשתמש בהם ב Python. ## יוניקס | כלי פיתוח | קהילה | קוד פתוח | גיט היסטוריה ושימוש בעורך Vim https://begriffs.com/posts/2019-07-19-history-use-vim.html עורך הטקסט וים הוא הבחירה הראשונה שלי כמעט בכל משימת תכנות. סביב העורך התפתחה תרבות עשירה של תוספים ושל שיתוף קבצי הגדרות (ה vimrc) וגם אני נתקלתי בזה שאני מדגים משהו על וים מול קבוצה ותכף אחר כך יהיה מי שיבוא לבקש את קובץ ה vimrc שלי. אבל האמת שהפלאגינים וההגדרות הטובים ביותר הם אלה שאתם כותבים לעצמכם, וכאן אנחנו מגיעים למטרה של הפוסט בקישור: ג'ו נלסון לוקח אותנו לסיור בהיסטוריה של וים והרבה יותר חשוב מזה במבנה קבצי ההגדרות של וים, ויחד איתו אם תבחרו להיכנס לפוסט תכתבו לעצמכם את ההגדרות שאתם צריכים. מומלץ בחום. רובי און ווילס https://evilmartians.com/chronicles/ruby-on-whales-docker-for-ruby-rails-development איך לשלב את ריילס יחד עם דוקר? ולדימיר דמנטייב הגיע לשתף את קבצי ה Dockerfile וה docker-compose שמאפשרים לו להריץ בצורה יעילה ריילס בתוך קונטיינר. טיפים לכתיבת Dockerfiles טובים יותר https://blog.docker.com/2019/07/intro-guide-to-dockerfile-best-practices/ ואם אתם בקטע של דוקר אז טיבור ואס רוצה לעזור לכם לכתוב Dockerfile טובים יותר ומדבר על סדר הפקודות ב Dockerfile, ניהול נכון של ה Cache, גודל האימג', מולטי סטייג' ועוד עצות רבות ומועילות. לא ידעתי שאפשר לכתוב כתובת IP ככה https://ma.ttias.be/theres-more-than-one-way-to-write-an-ip-address/ רובנו כותבים כתובות IP בתור רצף של 4 מספרים מופרדים בנקודות, אבל אחרי כמה זמן זה מתחיל לשעמם אתם לא חושבים? מסתבר שיש יותר מדרך אחת לכתוב כתובת IP. הייתי צריך לשפשף את העיניים כדי להאמין ש ping ל 10.0.513 באמת מגיע לאנשהו. טיפים לפיתוח Bash Shell Scripts טובים יותר https://www.tocode.co.il/blog/2019-07-bash-tips לפני כמה שבועות העברתי וובינר של שעה על פיתוח Shell Scripts ב Bash. היו שם המון טיפים מועילים ובעיה אחת מרכזית: שכחתי להפעיל את ההקלטה, כך שאף אחד לא יכול לדעת מזה. בשביל לתקן כתבתי את כל הטיפים במדריך ארוך שכולל 9 טיפים עם דוגמאות קוד לפיתוח Shell Scripts טובים יותר. ## אבטחת מידע בעית אבטחה ב-זום https://medium.com/@jonathan.leitschuh/zoom-zero-day-4-million-webcams-maybe-an-rce-just-get-them-to-visit-your-website-ac75c83f4ef5 הפירצה הזאת ב Zoom מפתיעה בדיוק בגלל שהיא מזכירה שפיתוח מאובטח הוא הרבה יותר ממניעה של באג קטן פה או שם, אלא תפיסת עולם. הבחירה של הצוות של זום בארכיטקטורה מסוימת הפכה את החיים שלהם להרבה יותר קשים מבחינת אבטחת המידע ואכן הבאגים לא אחרו להגיע. עשרת אלפים דולר לשימשה שבורה https://samcurry.net/cracking-my-windshield-and-earning-10000-on-the-tesla-bug-bounty-program/ מי היה חושב שאבן שפוגעת בשימשה יכולה להכניס לנהג 10,000 דולר. אבל כשהרכב הוא של טסלה והנהג מנסה למצוא בעיות אבטחה במכונית מסתבר שהכל יכול לקרות. רשימת כל ה HTTP Security Headers ומשמעותן https://nullsweep.com/http-security-headers-a-complete-guide/ סיכום מסודר ונחמד של כל ה HTTP Headers שקשורים לאבטחת מידע יחד עם כמה מילים על כל Header, כולל דוגמאות להגדרת Apache שכוללת את כל הכותרות הרלוונטיות. התנך של ה Pen Testing https://github.com/blaCCkHatHacEEkr/PENTESTING-BIBLE פרויקט גיטהאב שמטרתו להגיע ל 2,000 קישורים שימושיים על נושאים הקשורים ב Pen Testing. נכון לכתיבת הגיליון הם על 1806 מה שאומר שאם חיפשתם תעסוקה לילדים לחופש הגדול אני חושב שזה יסדר אתכם. ## לימודים | קריירה תרגולי תכנות פשוטים https://hackattic.com/kata/ אם אתם בקטע של תרגולי תכנות פשוטים האתר הזה בשבילכם. בינתיים הכל נראה רק בהתחלה עם בסך הכל 5 תרגילים אבל יש Online Editor ואפשר לפתור כל תרגיל ב-7 שפות שונות, אז אני חושב שיש בזה משהו נחמד. טטריס בן 35 https://medium.com/@js_tut/tetris-turns-35-cfcf04c4f2bb ולכם יש הזדמנות לכתוב יחד עם הטוטוריאל שבקישור משחק טטריס משלכם מאפס ורק ב JavaScript. אחרי שתסיימו ובשביל הנוסטלגיה הייתי ממליץ לכתוב את המשחק בשפה קצת יותר ישנה. ## פאן לסיום הקוד המקורי של אפולו 11 זמין בקוד פתוח https://github.com/chrislgarry/Apollo-11 החיים של מפתחי תוכנה באיראן https://shahinsorkh.ir/2019/07/20/how-is-it-like-to-be-a-dev-in-iran מיון מיזוג מוסבר באמצעות ריקוד עם גרמני https://www.youtube.com/watch?v=XaqR3G_NVoo