@chv אני לא כל כך מסכים לגישה הזאת של "יש לך את זה" "תלך כבר מהתחלה על הכי גבוה שאתה חולם".
אני מכיר אנשים שהגישה הזאת עובדת אצלם.
מצד שני מי שלא ניחון בבטחון עצמי "בריא מאוד" כן יכול לקבל המון תועלת מקצת שפשוף בסביבה פחות מחייבת מאשר העולם האמיתי עם דדליינים וכו'.
כמובן שאם יש הצעה פחות מחייבת ועם כסף אז ברור שצריך לקבל אותו. אבל דברים כאלו לא גדלים באילנות.
yossiz
-
מעוניין לסייע (ללא תשלום) למפתח WEB -
בקשה | מדריכים בJS@אינטרקום אמר בבקשה | מדריכים בJS:
נו.. מעולה... איפה אתה גר??
אני בירושלים. אם זה מתאים לך שלח לי מייל. (אני לא מבטיח לך שום דבר, אבל בטח נוכל להיפגש ולדבר)
-
תכנות | איך להתחיל?@dovid אמר בתכנות | איך להתחיל?:
שלימוד שפה ולימוד כלים לרוב מייצרים מישהו שיודע לכתוב קוד אבל בכלל לא מתכנת של ממש,
וחסר לו הרבה תיאוריה ורגישות לאמנות הזאתאה, תודה על המילים האלו!
זה מזכיר לי נושא חשוב מאוד.על כל מתכנת מצויין יש 10 בינונים ו-100 לא טובים. (כמובן שאין אף אחד מהמאה בשיחה זו. איכשהו זה תמיד מישהו אחר ולא אנחנו...
)
יש טווח עצום של רמות מהגרועים ביותר עד המצויינים ביותר.מה מבדיל בין המצויין לבינוני והגרוע? (חוץ מיכולות שכליות)
ובמילים אחרות, איך תמשיך לגדול אחרי שנהיית "יודע קוד" לכדי "מתכנת" ובהמשך להיות "מתכנת טוב" או אפילו מצויין?
נראה לי שחלק מההבדל הוא היכולת לדעת מה אתה לא יודע. אם תדע מה אתה לא יודע תמיד תלמד ותשאף ליותר.
צריך להתרגל למידה החשובה של ביקורת עצמית. אף פעם אל תחשוב שאתה יותר טוב מכולם. תמיד תחיה בהרגשה שאתה רק בתחילת הדרך ויש אחרים שטובים ממך בהרבה. אם תחיה בהרגשה זו, כבר תמצא בכל צעד את הרגעים של "אוי, כמה זה נכון!" ותדע את התחומים שבהם אתה צריך להשתפר. להיות מתכנת זה למידה תמידית לא רק של טכנולוגיות אלא גם של טכניקות.
אני מרשה לעצמי לומר את זה למרות שאני לא ה"מתכנת הדגול" שיכול להרשות לעצמו לטפטף לאחרים על איך להיות מתכנת, כי הדבר נכון בכל תחום ולא רק בתכנות
-
תכנות | איך להתחיל?איזה שימושים עושים עם JS
בעיקר אתרי אינטרנט - גם צד הלקוח וגם צד השרת. (בצד לקוח אין כמעט שפות אחרות, בצד השרת JS היא (אחת מתוך כמה) מהשפות הפופולאריות ביותר היום
אין כמעט תוכנות דסקטופ שכתבות ב-JS (למעט אלה שמבוססים על electron שהוא בעצם דפדפן שמציג תוכנה אחת)ומה נרוויח שנלמד את זה
JS היא השפה הכי פופולארית היום מבחינת כמות האנשים שמתכנתים בה ומשרות פנוייות.
חוץ מזה יש בו כמה יתרונות:
- אפשר לראות תוצאות אחרי שורות בודדות של קוד.
- היא קיימת בכל דפדפן, לא צריך שום התקנה להתנסות בה
- אני אישית סבור שהיא פשוטה יותר מפייתון (רבים יחלקו עלי מן הסתם), קלה יותר ללימוד מ-#C, ואם כן אחרי שהורדנו את שתי המתחרים העקריים מהשולחן לא נשארו בעצם מתחרים.
עוד נקודה:
כל שפה שתלמד תכניס לך מושגים חדשים שירחיבו את האופקים שלך. גם אם בסוף לא תעשה שימוש בשפה לא הפסדת מללמוד אותה. -
בעיה | מסגרת מוזרה לטקסטים בעברית ב-VSC@צדיק-תמים זה בעקבות "גילוי מרעיש" של קבוצת חוקרי אבטחה, שאפשר לשחק עם תווי יוניקוד בצורה שהקוד שנראה לעין לא עושה בדיוק מה שאתה מצפה שהוא יעשה. לכן החליטו חכמי vscode לתת לך אזהרה בכל פעם שהקוד מכיל תווים "מסוכנים" כאלו. אפשר להשתיק את האזהרה בהגדרות התוכנה
חפש unicode highlight בהגדרות.
אפשר גם להשתיק את האהרה רק על תווים מסויימים.https://code.visualstudio.com/updates/v1_63#_unicode-highlighting
-
עיגון זכויות תוכנה (מניעת העתקה) מבחינת דין תורה@שתיה
יש כמה רמות של הגנה.
הכי נפוץ הוא שהתוכנה תאסוף כמה נתונים על החומרה שעליו היא מותקנת ולגבב אותם קצת כדי לקבל "טביעת אצבע" של החומרה, ואז לחייב קוד נגדי שמתאים בצורה כלשהי ל"טביעת האצבע".אם אתה חושש מפני אנשים שיעשו רברסינג לקוד של התוכנה אז אתה חייב להשתמש במנגנוני ערפול (וכולי האי ואולי... הכל תלוי מפני מי אתה מנסה להתגונן)
אני משתמש בתוכנת תג (לעימוד ספרים) והוא מוגן על ידי HASP. עד כמה שהצלחתי לחפור זה נראה הגנה די חזקה. זה מחייב חיבור של התקן חומרה כדי שהתוכנה תפעל.
גם פרוייקט השו"ת עשו הגנה דומה. (אם כי פחות חזקה. כי בגירסה כלשהו אני הקטן הצלחתי די בקלות לפרוץ אותו... נראה לי שמאז זה השתכלל קצת). -
חדש | Windows 10 מתעדכן לגרסה 2004@בערל אמר בחדש | Windows 10 מתעדכן לגרסה 2004:
וגרעין מקורי עבור לינוקס
עוד נצחון ללינוקס במלחמה הגרעינית

וברצינות, התרגום של קרנל (בהקשר זה) הוא "ליבה"... -
מחשב חזק לסביבת עבודה למתכנתהנלענ"ד בנידון:
טיפול בביצועים של מחשב הוא ענין דטרמיניסטי מדעי. יש אנשים שהורגלו לכך שלמחשב יש התנהגויות לא מובנות (להם) ולכן פיתחו השקפה כזאת שמסתכלת על המחשב כסוג טיפוס משונה שחייב תצומי מפעם לפעם ועוד כל מיני אומונות טפלות לגבי מה יעזור ומה לא.
אז הנה מה שיש למדע להגיד על הנושא... (סתם... אני לא טוען שאני יודע הכל, רק מציג כמה נקודות)א) לפעמים יש אלגוריתמים עם ביצועים שפוחתים בצורה דרמטית במיוחד ככל שהכמות של הקלט עולה. למשל מה שידוע כ-quadratic time complexity שזה אומר שהביצועים יורדים במקביל לריבוע של הגידול בקלט.
יש טעות נפוצה בקרב מתכנתים, שלפעמים הם מצפים שקלט מסויים יהיה על פי רוב מספיק קטן שביצועים כאלו לא יהיו מורגשים, ואז מי שעובר גבול מסויים פתאום מתחיל לראות ביצועים מחרידים שיורדים בצורה אקספוננטיאלית.
ראה דוגמה יפה פה. ציטוט נבחר:Dawson’s first law of computing: O(n^2) is the sweet spot of badly scaling algorithms: fast enough to make it into production, but slow enough to make things fall down once it gets there.
כל ההקדמה הארוכה הנ"ל כדי להגיד ש:
מה לעשות, לפעמים זה האשמה של המתכנתים נטו ואין ביכולתך כמעט לעשות שום דבר נגד זה. גם אם נגיד שתקנה i9 ונניח שיש לו ביצועים יותר טובים ב-30%+- זה לא מספיק כדי להעלים את הבעיה. בעיה כזו לא עוזר לזרוק עליו עוד ועוד חומרה, צריך להתלונן ל-JetBrains ולקוות שהם יתקנו את זה. (התרשמתי שהם די קשובים לתלונות). וכמובן צריך להשתמש בגירסה עדכנית ויציבה.ב) חוק חשוב: כאשר יש צאוור בקבוק מסויים, לא עוזר כלל לטפל בדברים אחרים חוץ מצוואר הבקבוק עצמו.
זה לא הגיוני כלל לדבר על ראם ו-SSD, פעולת תחזוקה כזה או אחר וכו' כאשר יש צוואר בקבוק ב-CPU.
אגב, שים לב שלמעבד שלך יש 8 או 16 ליבות, ולכן צריך לתרגם את האחוזים שאתה רואה במנהל המשימות בהתאם. אם יש לך 8 ליבות ואתה רואה שימוש של 12.5 אחוז, תתרגם את זה בראש שלך ל"שימוש 100% בליבה אחת". (ובהערת אגב, אם רואים מספר זה במדוייק, בד"כ זה אומר שמדובר בתהליך שלא חילקו לת'רדים מקבילים ואז לא יעזור להוסיף ליבות.)אני חושש האם התקנת תוכנות כבדות רבות עלול להכביד על המחשב גם לא בשעת השימוש בהם, וליצור זבל מערכת וכדומה
זה מיתוס נפוץ בקרב אלו שהורגלו לא להבין מה קורה בתוך המחשב שלהם. אין שום חשש. נקודה.
המחשב הזדקן מאוד
עוד מיתוס. בוא נהיה מדעיים. הזקנה לא שולטת על רוב ככל רכיבי המחשב, הגשמיים והרוחניים כאחד. הנוסח הזה מגיע מאנשים שהורגלו שאי אפשר להבין את התהליכים הקורים וצריך לתאר אותם במונחים של תהליכים פיזיים שמוכרים יותר למרות שהם לא רלוונטיים פה.
@odeddvir אמר במחשב חזק לסביבת עבודה למתכנת:
האינטואיציה שלי אומרת לי שלא.
האינטואיציה שלך עובדת מצויין! אני רק לא מסכים לחלק מהנימוקים.
תבדוק את כל התוכנות שרצות בקביעות ברקע, והאם באמת יש לך צורך בהן תמיד, או שלפחות בזמן הפיתוח אפשר לוותר עליהן. שים לב שיש לך 32 תהליכים של גוגל כרום רצים במקביל.
עיין לעיל אות ב. במקרה דידן, רואים בפירוש עלייה משמעותית בשימוש CPU בעת עשיית המטלה, ואם כן אין הגיון שדברים צדדים כניקוי כללי יעזרו.
ניקוי הרג'יסטרי על ידי CCleaner.
לענ"ד זה מיתוס גמור. כבר רבות בשנים שאני אוחז כך למרות הטענות הלהוטות של חברים שאחרי ניקוי רג'יסטרי המחשב ממש כמו חדש. אין לזה הרבה הגיון, ואם זה באמת היה יעיל כל כך, מייקרוסופט כבר היו מפתחים משהו.
אבל זה נושא צדדי, כי כנ"ל אות ב בכל מקרה זה לא יעזור לנידון שלנו. וכן לגבי הנקודה השלישית שלך. -
צ'אט בין 2 מחשבים באותה רשת -
הסתרת אובייקטים מפורום NodeBB@zvinissim קשה להעלות מדריך על זה כי זה נושא שלם שצריך להקדיש קצת זמן ללמוד את זה מסודר.
אבל לעצם הבעיה, הפתרון לחלק הזה הוא פשוט להוריד חלק מהקוד שמיותר:
[component="topic/teaser"] { display: none }פטור בלא כלום אי אפשר, אז הקדמה קצרה לנושא של CSS:
קובץ CSS מורכב מ"כללים" כל כלל מורכב משני חלקים: ה-selector דהיינו החלק שלפני המסולסלים, חלק זה מגדיר על איזה אלמנטים העיצוב יחול, וה-body של הכלל שזה החלק בתוך המסולסלים ששם מכניסים את העיצוב הרצוי
לצורכך, אתה צריך בעיקר ללמוד על selector-ים, כי להבנתי אתה לא רוצה עיצובים מסובכים אלא בעיקר להסתיר תוכן עם
display: noneסוגי selector-ים
לגבי selector-ים יש כמה סוגים. כל סוג בוחר אלמנטים לפי פרמטר אחר:
- לפי סוג אלמנט, למשל לבחור כל האלמנטים שהם מסוג
h1פשוט כותביםh1 - לפי ה-class של האלמנט, סלקטורים אלו כתובים עם נקודה בהתחלה, לדוגמה להחיל עיצוב על אלמנט עם ה-class של
c1כותבים בסלקטור:.c1 - לפי id של אלמנט, סלקטורים אלו כותבים עם סולמית בהתחלה, לדוגמה לבחור אלמנט עם ה-id של id1 כותבים:
#id1 - לפי כל מאפיין אחר של האלמנט, (מאפיינים = attributes - הם השדות בצורה של
attr="val"שאפשר להוסיף לאלמנט) סלקטור כזו כותבים בתוך סוגריים מרובעות. לדוגמה:[component="category/post"]בוחר כל אלמנט שבו המאפייןcomponentיש לו את הערך"category/post"
חיבור selector-ים
אפשר לחבר ביחד כמה סלקטורים לקבל תוצאה רחבה או צרה יותר
-
חיבור עם פסיק: מרחיב את הבחירה לכל האלמנטים שמתאימים לשום אחד מהסלקטורים ברשימה. למשל:
h1, .xyzיתן לך גם כל האלמנטים מסוגh1וגם אותם שיש להם קלאסxyz -
חיבור עם רווח: מצר את הבחירה לאלמנט שיש לו ב"ייחוס" שלו כל הסלקטורים שברשימה לפי הסדר, למשל:
h1 .xyz .abcבוחר כל אלמנט שהוא עצמו יש לו קלאס שלabcוהוא צאצא של אלמנט עם קלאסxyzושה-xyz הזה הוא צאצא שלh1 -
חיבור בלי רווח או פסיק: מחייב שכל התנאים יתקיימו באלמנט אחד. למשל:
h1.xyz.abcבוחר רק אלמנט שהוא גם קלאסabcוגם קלאסxyzוגם שהוא מסוגh1
זה ממש ממש על קצה המזלג...
- לפי סוג אלמנט, למשל לבחור כל האלמנטים שהם מסוג
-
באיזה דפדפן עדיף להשתמש?@zvinissim ה-2 גרושים שלי:
-
אקספלורר אפשר להוציא לגמרי מהמשוואה כי זה מיושן ואיטי. הסיבות היחידות להשתמש בו נמצאים רק בארגונים גדולים א) שיש להם אתרים פנימיים שעובדים רק עם אקספלורר. ב) אני לא בטוח בזה אבל אולי יש מדיניות קבוצתיות ו/או הגבלות אבטחה שעובדים רק עם אקספלורר.
-
אדג' (הישן/נוכחי בניגוד לאדג' החדש שמבוסס על כרום).
שוב, בארגונים גדולים יכול להיות שיגבילו את השימוש רק באדג' מטעמי אבטחה. חוץ מזה אין בו הרבה יתרונות. מכיון שאני לא משתמש בו הרבה, אני לא יכול לחוות עליו דעה. מה שכן השתמשתי לא הרגשתי שזה רץ כמו כרום או פיירפוקס. לרוב משתמשים נראה לי שהשימוש היחיד שהם עושים באדג' הוא להוריד את כרום... -
התחרות האמיתי הוא בין כרום (וגרורותיו - brave vivaldi, edge ועוד) לפיירפוקס.
בגירסאות האחרונות של פיירפוקס (מאז מה שקוראים firefox quantum) יש שיפורים משמעותיים מאוד בביצועים.
הצדדים העקריים לכאן ולכאן:- יש עדיין הרגשה אצלי שכרום יותר נוח ומהיר. אני לא יודע אם זה אמיתי או מדומה. (בעיקר בכלי המפתחים יותר נוח לי בכרום)
- יש שיגידו שפיירפוקס יותר קל, או שניתן יותר להתאמה אישית
- ארגון מוזילה - הבעלים פיירפוקס - הוא ארגון ללא מטרות רווח והם חרטו על דגלם את הזכות לחירות ופרטיות ושמירת ניטרליות הווב. לאחרונה הם אף התחילו לחסום עוקבים בצורה פעילה.
- כרום הוא פרוייקט של גוגל, שכידוע מתפרנסים בעיקר ממכירת פרסומות ובכלל זה יש להם מטרה ברורה לאפשר עקיבה אחרי משתמשים ולהקשות על חוסמי פרסומות. יש דיבורים לאחרונה על זה בגירסה עתידית של כרום לא יעבוד עוד התוסף ublock origin שהיא חוסם הפרוסומות החזקה ביותר.
- יש ענין ברור שלא לתת את השליטה על הווב לחברה מסחרית אחת. זה לא יהיה מצב טוב אם לגוגל יהיה השליטה בפועל על הווב. ככה אף גוף לא יוכל לרסן אותם כי הם פשוט יקבעו עובדות בשטח. בגלל זה יש שדוחפים להשתמש בפיירפוקס.
-
-
באג בגלילה עם העכבר במספר אתריםגם אצלי
השבתתי את הדגל הזה:
chrome://flags/#smooth-scrollingוזה הסתדר -
מחפש מדריך ללמוד אבטחת אתריםאני מסתפק אם יש דרך מסודרת ללמוד אבטחת אתרים. יכול להיות שאין דרך. או שהדרך המסודרת קשה מאוד.
כמובן, שהבסיס הוא מה שדוד כתב: לפני שתלמד איך לפרוץ לאתר אתה חייב ללמוד איך בונים אתר.
יש לי שתי המלצות:
המלצה כללית מאוד:- להתעניין בכל דבר, איך זה עובד? למה זה בנוי ככה? וכו' וכו'. תמיד, אבל תמיד, תהיה במצב למידה. ככה תדע שאתה האקר אמיתי (במובן החיובי של המילה)
המלצה פרטית:
- לקרוא כל חודש את מגזין digital whisper (וגם לקרוא את ספריית הגליונות הקודמים). זה ייתן לך קצת מושגים בנושא.
-
תודה רבה לחברי הפורום@aiib
נאלתר משהו מהר

-
מה ההבדל בין הפצות לינוקס?@nigun
(אני לא בטוח שכל מה שאני כותב הוא מדוייק ב-100 אחוז אבל כך אני רואה את התמונה)לפני שנסביר את החילוקים בין הפצות השונות, בא נדבר על הנושא של "מה זה לינוקס? מה זה GNU? מה תורם ההפצה ל-Linux/GNU?"
מה זה לינוקס?
כפי שמן הסתם כבר ידוע לך, לינוקס הינו ליבת המערכת. הקרנל (Kernel) בלע"ז.
הקרנל לא עושה כלום.
כלומר, כל מציאותו של הקרנל הוא לשרת את ה-userland. ה-userland הינו כל התהליכים שרצים על המחשב. הקרנל אין לו שום תכלית חוץ מלשרת את התהליכים האלו.
לא קיים מחשב "לינוקס" טהור. כי אם אין תהליכים, הקרנל נכנס לפניקה (kernel panic זה המקביל של מסך כחול של ווינדוס)מה זה GNU?
GNU הינו פרוייקט קוד פתוח שתורם חלק גדול של ה-userland של הפצות לינוקס רגילים.
לדוגמא, הספרייה הסטנדרטית של שפת C, מערכת כלים עבור דיבוג וקימפול של כמה שפות, shell סטנדרטי, חבילה שנקראת coreutils שכולל כל הכלים הבסיסיים שמערכת מבוססת UNIX אמורה להכיל... ועוד ועוד...מה תורם ההפצה ל-Linux/GNU?
אבל אם נשלב קרנל של לינוקס עם shell ו-coreutils עדיין לא קיבלנו מערכת שעובדת.
מה חסר? נראה בקטעים הבאים.-
כאשר הקרנל עולה, הוא מחפש בינארי בשם init. הבינארי הזאת יהיה הקוד שירוץ כתהליך מספר 1. לתהליך הזאת יש כמה מטלות חשובות (ע"ע איניט ו-init). ביניהם, להריץ את כל שאר התהליכים החל משירותי מערכת עד ל-shell (גרפי או אחר).
אחד מההבדלים הגדולים בין הפצות הוא איך הם ממשים את תהליך init.
כהיום תהליך ה-init הכי פופולארי הוא systemd, אבל יש המון פולמוסים סביבו, (ביניהם, על איזה חלקים של המערכת אמורה ה-init לשלוט), וזה כמובן משריץ עוד ועוד הפצות...
(מערכת הלינוקס הכי פשוטה, אולי יכולה להיות מערכת שתהליך מספר 1 (PID 1) הינו ה-shell בעצמו, אבל זה לא יהיה מערכת שימושי ביותר) -
נגיד שיש לנו מערכת init ויש לנו coreutils ו-shell, מה עוד חסר?
חסרים כמה וכמה שירותי מערכת נחוצים.
לדוגמא, cron לתזמון משימות, שירות שמזהה כוננים שמגיעים ויוצאים ומעלה אותם בהתאם, שירות שמזהה חיבורי רשת זמינים ופועל בהתאם, שירות שמזהה חומרה שמתחברת או מתנתקת ופועל בהתאם, ועוד...
לפעמים יש כמה מימושים של שירותים אלו. כל הפצה מחליטה איזה מהם הוא הכי מתאים לפי קווי היסוד והייעוד של ההפצה -
כל הפצה מביאה דרך לנהל הוספה והסרה של תוכנות. יש הפצות שמקמפלים בשבילך את התוכנות ומנהלים אוצרות (repositories) של תוכנות מקומפלות. ויש שמנהלים repositories של נוסחאות שאפשר להריץ להרדה וקימפול והתקנה אוטומטית של תוכנות.
כל הפצה מחליטה על -- מערכת לניהול הוספה/הסרה/מציאת ופתרון תלויות (dependencies)
- מדיניות לגבי איזה תוכנות הם מציעים
- מדיניות לגבי מבנה התקייות של התוכנות
- עוד מדיניות, (האם ואיפה התיעוד ימוקם במערכת הקבצים, מבנה קבצי התצורה ואיפה ימוקמו, ועוד ועוד)
-
מה עוד חסר?
- מבנה מערכת הקבצים לא בא למציאות מעצמה. כל הפצה מחליטה על מדיניות שונות בנוגע למבנה מערכת הקבצים.
- מעטפות גרפיות (graphical shells) קיימים רבים כחול הים. כל הפצה מציעה אפס, אחד, או כמה מעטפות גרפיות
עכשיו להפצות השונות שקיימות:
בגדול אפשר לחלק את ההפצות ל-3 קטגוריות- Debian ואביזרייהו
- Redhat ואביזרייהו
- כל השאר
Debian - הוא האבא (והסבא וסבא רבה...) של רוב ההפצות כהיום.
Ubuntu הוא בן של Debian. ההבדליים הם בעיקר ש-Debian הוא יותר מבוסס, ישן, מנוסה, ובסיסי. משא"כ Ubuntu מביאה יותר תוכנות ותכונות מהקופסא, וגירסאות ותכונות יותר מתקדמות אבל פחות מנוסים ומבוססים. אבל זה בנוי על הליבה של Debian.Redhat - הוא השם הגדול השני בתחום, זה כולל Fedora ו-Centos ג"כ. ועוד בנים ובני בנים.
כל השאר - כולל הפצות שלא מבוססות על אף אחד מהנ"ל. כולל slackware, arch, ועוד.
אם הייתי רוצה לכתוב את כל ההבדלים בין ההפצות, יכלה הזמן והם לא יכלו. אבל בגדול אפשר לחלק את ההבדלים לכמה קטגוריות.
-
ההבדלים בין שלוש ההפצות הראשיות שהזכרתי, הם ההבדלים הכי גדולים. הם מתבטאים כמעט בכל התחומים שהזכרתי בקטע של "מה תורמת ההפצה?". כל הפצה מביאה מדיניות שונה בנוגע לכל תחומים אלו.
- מתחת לזה יש תתי הפצות שבנויות על אחד מההפצות הראשיות אבל יש להם מחלוקת אידיאילוגית בנוגע לאחד מהדברים הבסיסיים. לדוגמה הם מבוססים על Debian אבל הם אוחזים ש-systemd לא טוב.
-
יש הפצות שבנויים לגמרי על הפצה קיימת אבל הם מותאמים לצורך ספציפי או לאוכלוסיה ספציפית.
-
יש כמה הפצות שהליבה שלהם בנוי על אחד מההפצות הראשיות, אבל הם מביאים סביבה גראפית יותר טובה/נוחה/יפה לדעתם.
כל זה בלי לדבר על מערכות כמו אנדרויד ו-chromeos שלקחו רק את הקרנל וכל השאר שונה הרבה ממערכת לינוקס רגילה. ובלי לדבר מערכות אחרות מבוססי UNIX אבל עם קרנל שונה.
-
-
איך לומדים לבנות תוכנה@NH-LOCAL חיכיתי שתשאל

אלך לפי סדר דבריך:מבחינת ניידות אין נוחה ממנה
יש לי טענה הפוכה, שורת הפקודה שונה לגמרי בין ווינדוס ללינוקס, משא"כ שפות תכנות בד"כ זהות בכל הפלטפורמות, אפשר לשאת איתך פייתון על דיסק און קי
והיא פשוטה מאוד לשימוש
תסביר לי אם ככה למה יותר קל לי לכתוב 500 שורות JS מ-10 שורות CMD?

שורת הפקודה בהחלט מתאימה לזה - ניתן ללמוד ממנה היטב איך עובד תכנות
ממש ממש לא. שפות שורת הפקודה נועדו בעיקר כדי לשרשר פקודות בצורה נוחה
זה לא אמור להיות שפת "תכנות" אלא שפת "תפירה"... דהיינו צורה שימושית לתפור ביחד פקודותגם את החלקים של תכנות שיש שם באיזשהו צורה (פונקציות, משתנים, לולאות, מערכים, בקרת זרימה וכו) זה בצורה שונה מאוד והרבה יותר מסורבל משפות תכנות. מי שלומד לולאה בבאש, זה לא יעזור לו כמעט כלום בלולאות בשפות תכנות נורמליות
כדי לכתוב עם שפת shell (איזה שיהיה, bash, batch, powershell) צריך ללמוד מושגים שלא נצרכים כלל עבור תכנות. למשל: מה זה משתני סביבה, קוד יציאה של פקודה, קלט ופלט ושרשורם ב-pipe, שכל זה לא קשור בשום צורה לתכנות טהור
מצד שני יש הרבה מושגים בתכנות שכמעט ולא נפגשים בהם או שלא נפגשים בהם כלל בשורת הפקודה, או שעובדים בצורה שונה מאוד ממה שמקובל (סוגי משתנים שונים, מבני נתונים, קלאסים וכל הנושא של OOP, ועוד)
ניתן ליצור ממנה דברים ממשיים שמטפלים בקבצים (ולא רק מדפיסים "hello world") כבר בשלב ממש ראשוני
כן, אבל הוא לא מסוגל לשום דבר מעבר לזה כמעט, אתה יכול לתפור ביחד פקודות, אבל איפה שאין פקודה מתאימה וצריך להסתדר לבד לכתוב לוגיקה מסויימת, אתה נשאר עם שפה מסכנה מסורבלת ומכוערת
ויש הרבה דברים שפשוט בלתי אפשריים בשורת פקודה גם אם תעבוד קשה מאוד. ליצור ממשק גמיש ומותאם אישית ועוד הרבה דברים בלי שיעור. תעשה שרת אינטרנט בשורת הפקודה.
מי שרוצה לכתוב תוכנה אמיתית יתקשה מאוד להסתדר עם שורת הפקודה -
לפני שאתם הולכים ל-AI חכם תשתמשו בכלים קיימים :)תגובה: תכנות + AI
@chagold כתב בתכנות + AI:
אני מתכוין לבקשות ברמה הגיונית. כגון אם יש לי פרוייקט ב-vue שאני צריך לעדכן קודים גם בקומפוננטים, גם במודולים וכמו"כ getters וכו'. שאבקש ממנו להוסיף שדות מסויימים והוא יודע להציע הצעות על כל המקומות הרלוונטים בפרוייקט, ולא רק ברמת הקובץ הנוכחי.
תשובה שלא ממין השאלה, אני ממליץ בחום להשתמש בטייפסקריפט
במקרה כזו של הוספת שדות, הקומפיילר כבר יצביע על כל מקום שצריך לעדכן בגלל ההוספה
בפרט ב-vue3 ממש קל להתחיל לכתוב טייפסקריפט, פשוט מוסיפיםlang="ts"לקטע ה-scriptזה יכול לעזור לך יותר מכל AI
אני כבר לא רוצה שוב לתכנת ב-JS
יש כמה רמות בתוך TS כמה הקומפיילר יחמיר בבדיקות, לפי רמת החומרה כך רמת התועלתאני יכול להבטיח עם הרבה ביטחון שמי שיתחיל לכתוב טייפסקריפט לא יתחרט ויראה הרבה תועלת
-
איקס עיגול בJS, שמירת כל המצבים במשתנה מספרי אחדאגב לשאלתו של @צבי-ש
https://tchumim.com/topic/14712סתם למען הספורט (ממ... וגם אולי מישהו ילמד משהו מזה) אכתוב דרך אחרת
הרעיון הוא שמכיון שיש לך 9 קוביות שלכל אחד מהם יש רק שני מצבים אפשריים, אפשר לייצג את ה-state של כל צד במשחק בתוך מספר אחד. כל ביט במספר מייצג קוביה אחת. אם הביט כבוי סימן שאין לו
גודל מספר ב-JS הוא 64 ביטים, אבל לצורך פעולות שאני הולך לעשות אפשר להשתמש רק ב-32 ביטים הראשונים, לצרכך היה מספיק משתנה בעל 16 ביטים, אבל אין את זה ב-JS, למען ה"שטיק" הייתי יכול להכניס את שני צדדי המשחק במספר אחד, אבל זה סתם מיותרמהלך המשחק נראה כך:
const listWin = [ 7, 56, 448, 73, 146, 292, 273, 84 ]; function checkWin (board) { return listWin.some(win => (board & win) === win); } let user = 0; function toggleUser () { user ^= 1; }; const boards = [0, 0]; const userNames = ['X', 'O']; function doTurn (i) { boards[user] |= (1 << i); if (checkWin(boards[user])) { console.log(`${userNames[user]} wins!`); // TODO: signal end of game return; } toggleUser(); }בכל לחיצה אתה קורא
doTurnעם מספר הקובייה שנבחרה
לא מיממשתי לוגיקה שבודק אם קובייה כבר מלאה, וכן לא מימשתי לוגיקה שיודע לצייר את הקוביות בהינתן שני מספרים שמייצגים את מצב המשחקתהליך היצירה של
listWinנראה ככה:function makeWinList () { function pack ([x, y, z]) { return (1 << x) | (1 << y) | (1 << z); } return [ [0, 1, 2], [3, 4, 5], [6, 7, 8], [0, 3, 6], [1, 4, 7], [2, 5, 8], [0, 4, 8], [2, 4, 6] ].map(pack); }הפוסט הזה איך שכתבתי אותו לא שימושי למי שלא מכיר משחקי ביטים
אולי בהמשך אכתוב הסבר ממצה -
הצעה לחוק חדש: הבאת פלט של ChatGPT מותרת רק כחלק מתשובה ולא במקום תשובה...אני מציע שלהביא פלט מ-ChatGPT יהיה מותר (לפחות בפורום התכנות) אך ורק כחלק מתשובה אנושית ולא במקום תשובה אנושית, וגם כחלק מתשובה, רק אם יש בנותן טעם להביא את זה, אבל להביא את הפלט במקום תשובה אנושית יהיה אסור