פורסם: 07/02/2020 - 03:02
נושא ההודעה: נכון ש ss "מחליף" את netstat. מה היכולות של הראסבר
|
בשרשור של גישה מבחוץ לאתר מקומי נכתב:
בטיטו : | אורח : | באיזו מידה כלי שמצריך התקנת Rust, ואפילו אם היה עומד בפני עצמו, לא כבד מדי לראסבריפיי? |
ss "מחליף" את netstat |
תודה. האם אפשר לקבל התיחסות ליכולות של הראסברי (למשל יוכל להריץ Rust בלי בעיה)?
|
|
חזרה לתוכן הדיון |
פורסם: 07/02/2020 - 06:56
נושא ההודעה:
|
אכלת לנו תראס(ט)
ראסט היא שפת סיסטם. קרובה במהירות שלה ל C++
היא האנדרדוג של גו.
בניגוד לגו עד כמה שזכור לי אתה לא יכול לקמפל קרוס פלטפורם ,
כך שאם יש במאגרים שלך (ראספביאן? ארץ'?) קרגו אולי ורק אולי וזה בספק גדול הקימפול ידגדג את המעבד.
ברגע שיש לך בינארי שהוא ללא X קשה לי להאמין שזה יזיז לפאי. בניגוד נגיד לווב סרבר. או סביבה גראפית רחמנא ליצלן
עכשיו דקה על iptables
tcpdump "יושבת" לך על האינטרפייס . על הברזלים. בלבל הנמוך של ה OSI
הרבה לפני דברים יפים כמו fw
עד כמה שזכור לי
ט.ל.ח.
וואלק נשרף הטבעות בצל בגללך
|
|
חזרה לתוכן הדיון |
פורסם: 07/02/2020 - 15:31
נושא ההודעה: libpcap אכן לפני netfilter
|
בטיטו : |
עכשיו דקה על iptables
tcpdump "יושבת" לך על האינטרפייס . על הברזלים. בלבל הנמוך של ה OSI
הרבה לפני דברים יפים כמו fw
עד כמה שזכור לי |
מקבל שלא טעה: libpcap אכן לפני netfilter. כנראה שדוגמא עתיקה לתוצאת החיפוש בגוגל שהוא מזכיר: יש גם קוד.
|
|
חזרה לתוכן הדיון |
פורסם: 07/02/2020 - 18:37
נושא ההודעה: Re: נכון ש ss "מחליף" את netstat. מה היכולות של הר
|
אורח : | בשרשור של גישה מבחוץ לאתר מקומי נכתב:
בטיטו : | אורח : | באיזו מידה כלי שמצריך התקנת Rust, ואפילו אם היה עומד בפני עצמו, לא כבד מדי לראסבריפיי? |
ss "מחליף" את netstat |
תודה. האם אפשר לקבל התיחסות ליכולות של הראסברי (למשל יוכל להריץ Rust בלי בעיה)? |
בטיטו סתם מחרטט.
Rust היא שפה מקומפלת (גם Go) לפורמט טבעי.
כך שאם יש תמיכה (ויש) ל Rust ב PIE, אין לך מה לדאוג.
|
|
חזרה לתוכן הדיון |
פורסם: 07/02/2020 - 19:00
נושא ההודעה: Re: נכון ש ss "מחליף" את netstat. מה היכולות של הר
|
Anonymous : |
בטיטו סתם מחרטט.
|
מאשר
|
|
חזרה לתוכן הדיון |
פורסם: 08/02/2020 - 13:22
נושא ההודעה: Rust היא שפה מקומפלת לפורמט טבעי. למה הכונה בפורמט טבעי?
|
Anonymous : | Rust היא שפה מקומפלת (גם Go) לפורמט טבעי.
כך שאם יש תמיכה (ויש) ל Rust ב PIE, אין לך מה לדאוג. |
למה הכונה פורמט טבעי?
|
|
חזרה לתוכן הדיון |
פורסם: 09/02/2020 - 10:06
נושא ההודעה:
|
פורמט טבעי: מורץ ישירות ע"י המעבד, אין צורך ב-vm של השפה או intrepreter כדי להריצה.
אפשר לבצע cross compile עם Rust. כמו כן, להבדיל מ־Go היא לא צריכה GC ו-runtime שנבנה לתוך הבינארי.
|
|
חזרה לתוכן הדיון |
פורסם: 09/02/2020 - 12:13
נושא ההודעה:
|
כשאהיה גדול אני רוצה לתכנת ב Rust
אבל באמת להתפרנס מזה
|
|
חזרה לתוכן הדיון |
פורסם: 09/02/2020 - 15:00
נושא ההודעה:
|
|
|
חזרה לתוכן הדיון |
פורסם: 09/02/2020 - 19:47
נושא ההודעה:
|
אוקי בוא. כן?
זה ממש אבל ממש לא קוד: | env GOOS=linux GOARCH=arm GOARM=5 go build |
"מהקופסא"
ולמה הכוונה ב "להבדיל מ־Go היא לא צריכה GC ו-runtime שנבנה לתוך הבינארי. "
והאם למשפט המצוטט יש דימיון כלשהו לאלקטרון ?
|
|
חזרה לתוכן הדיון |
פורסם: 09/02/2020 - 23:01
נושא ההודעה:
|
לא הבנתי מה אתה רוצה. ל־Go יש GC, יש לו גם מחיר בזמן ריצה (זו הסיבה ש־discourse עברו לאחרונה מ־Go ל-Rust עבור ה־Read Service שלהם).
כמו כן, יש צורך ב־scheduler ל־Goroutines.
כל המנגנונים האלה מהודרים לתוך כל יישום Go.
|
|
חזרה לתוכן הדיון |
פורסם: 10/02/2020 - 03:41
נושא ההודעה: לקח לי זמן אז אולי יועיל למישהו: GC -> Garbage collector
|
mksoft : | לא הבנתי מה אתה רוצה. ל־Go יש GC, יש לו גם מחיר בזמן ריצה (זו הסיבה ש־discourse עברו לאחרונה מ־Go ל-Rust עבור ה־Read Service שלהם).
כמו כן, יש צורך ב־scheduler ל־Goroutines.
כל המנגנונים האלה מהודרים לתוך כל יישום Go. |
אולי יחסוך למישהו קצת זמן. Automatic Garbage Collector.
|
|
חזרה לתוכן הדיון |
פורסם: 10/02/2020 - 09:15
נושא ההודעה:
|
mksoft : | לא הבנתי מה אתה רוצה. ל־Go יש GC, יש לו גם מחיר בזמן ריצה (זו הסיבה ש־discourse עברו לאחרונה מ־Go ל-Rust עבור ה־Read Service שלהם).
כמו כן, יש צורך ב־scheduler ל־Goroutines.
כל המנגנונים האלה מהודרים לתוך כל יישום Go. |
זה tradeoff שהוא די זניח במרבית המקרים. לי יש בעיה שאני מקריס המון מערכות עם מערכת שכתבתי בגו, והכיול שלה לקח מספר חודשים בשביל שכלל הסביבה תתפקד כמו שצריך.
יש מצבים בהם מרגישים את זה, וזה סבבה. המלחמה על rust מול go מפגרת, כי הם לא מתחרים לדעתי על אותה הנישה בכלל. אני לוקח את גו במקומות שלקחתי שפות כמו רובי, ואני כרגע נשארתי קצת עם C במקומות של סיסטם, עד שאלמד rust ואז מאוד אשמח לעבור.
|
|
חזרה לתוכן הדיון |
פורסם: 10/02/2020 - 09:49
נושא ההודעה:
|
אין פה שום מלחמה, פשט הן משמשות בתפקידים שונים. כמו כן, יש להכיר את המגבלות של הכלים שמשתמשים בהם - כמו הדוגמה שהראיתי כאן -נראה שלא מודעים לזה: צריך לדעת מה נכנס לבינאריי שלך.
|
|
חזרה לתוכן הדיון |
פורסם: 10/02/2020 - 10:50
נושא ההודעה:
|
mksoft : | אין פה שום מלחמה, פשט הן משמשות בתפקידים שונים. כמו כן, יש להכיר את המגבלות של הכלים שמשתמשים בהם - כמו הדוגמה שהראיתי כאן -נראה שלא מודעים לזה: צריך לדעת מה נכנס לבינאריי שלך. |
מעטים המפתחים שבאמת יורדים לשורש העניין של מה מרכיב את מה.
לרוב זה גם לא משנה.
כמו שכתבתי, יש לי מערכת שכתבתי בגו שמקריסה מערכות שכתובות בסי. אני לא עשיתי בכלל אופטימיזציות בקוד שלי. כלומר יש לי עודף אלוקציות שאפשר להוריד, אני יכול לגרום לדברים להיות כתובים יעיל יותר וכו'... אבל אין צורך במקרה הזה.
אני למשל כמעט בכלל לא משתמש ב channels, אבל כן ב go routines. למעט מקרים מאוד מוגדרים אין לי צורך בנעילה של מידע, ואיפה שיש, אני עובד עם mutex להבטיח כתיבה וקריאה כפי שאני רוצה.
לכל דבר יש עלות ותועלת. לקח לי לכתוב את המערכת שאני מדבר עליה מעט זמן, ולכונן אותה המון זמן.
ב rust גם יש מספר דברים שנכנסים לקובץ ריצה שהם של השפה עצמה. אבל כן ה overhead נמוך יותר. אבל זמן הכתיבה יהיה ארוך יותר למישהו שללא ניסיון כי זה דורש חשיבה שונה לגמרי.
קשה גם למצוא מפתחים שיודעים rust, ואם צריך שעוד אנשים יתחזקו את הקוד, גם אז יש שיקול שנכנס. זה מורכב לא רק ממה שנכנס.
|
|
חזרה לתוכן הדיון |
פורסם: 10/02/2020 - 13:49
נושא ההודעה:
|
אני לא מכיר מספיק את שתי השפות הללו. סתם השוואה קטנה שאולי אומרת משהו ואולי לא.
בניתי תוכניות hello ב־go, ב־rust וב־C. ב־C קישרתי את התוכנית סטאטית ודינמית. בראסט התוכנית דינמית. בגו: סטאטית.
קוד: |
# kB:
$ ls -s -1 */hello */hello_*
740 c/hello
20 c/hello_dynamic
1964 go/hello
272 rust/hello
$ ldd c/hello_dynamic
linux-vdso.so.1 (0x00007ffc203fd000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f6949457000)
/lib64/ld-linux-x86-64.so.2 (0x00007f6949649000)
$ $ ldd rust/hello
linux-vdso.so.1 (0x00007ffe4a16b000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f68346cc000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f68346c1000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f68346a0000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f6834686000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f68344c6000)
/lib64/ld-linux-x86-64.so.2 (0x00007f6834731000)
|
|
|
חזרה לתוכן הדיון |
פורסם: 10/02/2020 - 15:42
נושא ההודעה:
|
צפריר : | אני לא מכיר מספיק את שתי השפות הללו. סתם השוואה קטנה שאולי אומרת משהו ואולי לא.
בניתי תוכניות hello ב־go, ב־rust וב־C. ב־C קישרתי את התוכנית סטאטית ודינמית. בראסט התוכנית דינמית. בגו: סטאטית.
קוד: |
# kB:
$ ls -s -1 */hello */hello_*
740 c/hello
20 c/hello_dynamic
1964 go/hello
272 rust/hello
$ ldd c/hello_dynamic
linux-vdso.so.1 (0x00007ffc203fd000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f6949457000)
/lib64/ld-linux-x86-64.so.2 (0x00007f6949649000)
$ $ ldd rust/hello
linux-vdso.so.1 (0x00007ffe4a16b000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f68346cc000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f68346c1000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f68346a0000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f6834686000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f68344c6000)
/lib64/ld-linux-x86-64.so.2 (0x00007f6834731000)
|
|
כן, גו ברירת המחדל שלה הוא סטטי. המטרה היא שתוכל לקחת בינארי ולהפיץ אותו כמה שיותר.
אבל יש לך תמיכה בצורה ממש מגניבה בספריות מקושרות. אני בדיוק כותב על זה סדרת מאמרים ב dev, וכשזה יהיה מוכן אפרסם
|
|
חזרה לתוכן הדיון |
פורסם: 10/02/2020 - 16:53
נושא ההודעה: האם תוכל לפרסם קוד? האם הגודל בראסט לא מפתיע?
|
צפריר : | אני לא מכיר מספיק את שתי השפות הללו. סתם השוואה קטנה שאולי אומרת משהו ואולי לא.
בניתי תוכניות hello ב־go, ב־rust וב־C. ב־C קישרתי את התוכנית סטאטית ודינמית. בראסט התוכנית דינמית. בגו: סטאטית.
קוד: |
# kB:
$ ls -s -1 */hello */hello_*
740 c/hello
20 c/hello_dynamic
1964 go/hello
272 rust/hello
$ ldd c/hello_dynamic
linux-vdso.so.1 (0x00007ffc203fd000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f6949457000)
/lib64/ld-linux-x86-64.so.2 (0x00007f6949649000)
$ $ ldd rust/hello
linux-vdso.so.1 (0x00007ffe4a16b000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f68346cc000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f68346c1000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f68346a0000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f6834686000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f68344c6000)
/lib64/ld-linux-x86-64.so.2 (0x00007f6834731000)
|
|
- האם תוכל לפרסם כאן את הקוד של כולן?
- האם הגודל של התוכנית בראסט לא נראה מפתיע? מה ה ldd של הסטטי ב C?
|
|
חזרה לתוכן הדיון |
פורסם: 12/02/2020 - 20:16
נושא ההודעה:
|
ldd לא יודע להוציא כלום מתוכנית סטאטית חוץ מהעובדה שהיא סטאטית.
התוכניות: לא משהו מתוחכם:
קוד: |
// C
#include <stdio.h>
int main() {
printf("Hello\n");
return 0;
}
|
קוד: |
// Go
package main
import "fmt"
func main() {
fmt.Println("Hello")
}
|
קוד: |
// Rust
fn main() {
println!("Hello");
}
|
|
|
חזרה לתוכן הדיון |
פורסם: 13/02/2020 - 01:31
נושא ההודעה: האם כללת את ה C הדינמי? מה הן הפקודות לקומפילציה?
|
צפריר : | ldd לא יודע להוציא כלום מתוכנית סטאטית חוץ מהעובדה שהיא סטאטית.
התוכניות: לא משהו מתוחכם:
קוד: |
// C
#include <stdio.h>
int main() {
printf("Hello\n");
return 0;
}
|
קוד: |
// Go
package main
import "fmt"
func main() {
fmt.Println("Hello")
}
|
קוד: |
// Rust
fn main() {
println!("Hello");
}
|
|
האם כללת את ה C הדינמי? האם תוכל להוסיף את הפקודות לקומפילציה?
|
|
חזרה לתוכן הדיון |
פורסם: 13/02/2020 - 08:53
נושא ההודעה:
|
לא חייבים לצטט את כל ההודעה כל פעם.
הפקודות:
קוד: |
gcc -Os -Wall -static -o hello hello.c
gcc -Os -Wall -o hello_dynamic hello.c
go build hello.go
rustc hello.rs
|
לא היה הבדל משמעותי בין -Os לבין -O2 .
|
|
חזרה לתוכן הדיון |
פורסם: 13/02/2020 - 10:53
נושא ההודעה:
|
ככל הזכור לי go build כולל debug info בברירת מחדל.
|
|
חזרה לתוכן הדיון |
פורסם: 13/02/2020 - 16:38
נושא ההודעה:
|
הנה מה שקורה כשמעיפים debuginfo:
קוד: |
668 c/hello
740 c/hello_unstripped
1400 go/hello
1964 go/hello_unstripped
200 rust/hello
272 rust/hello_unstripped
|
|
|
חזרה לתוכן הדיון |
|