השנה 1994, הגרסה 0.2 התכנה FPK

התגלה אוצר באחד משרתי ה FTP של הפרוייקט FPC: גרסה 0.2 של המהדר.
נחמד לראות, ומומלץ להשתמש במילון גרמני אנגלי/עברי בשביל להבין.

פורסם בקטגוריה FPC, Object Pascal, היסטוריה, טכנולוגיה, פיתוח, קוד פתוח | עם התגים | השאירו תגובה

מערך כתכונה

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

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

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

עוד יכולת מעניינת שיש ברובי, אבל לא בשאר השפות שאני מכיר, היא העבודה עם תכונות (properties). רובי מאפשרת לנו ליצור תכונות, אשר לא דורשות מאיתנו Getter ו Setter כל הזמן. וגם פסקל מציעה תמיכה דומה בפיטצ'ר הזה.

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

...
  TPerson = class(TPrimates)
...
  public
...
    property MatchingColor[name : string] : TColor read GetColor write SetColor;
...
  published
...
    property ShirtColor : TColor read FShirtColor write FShirtColor;
...
  end;
...

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

לתכונה הגדרנו שם כלשהו שהוא מחרוזת. וGetter ו Setter. כלומר התכונה היא גם לקריאה וגם לכתיבה.

הגדרת ה Getter תראה בצורה הבאה:

private
...
   function GetColor(AName : String) : TColor;
...

ה Setter יראה בצורה הבאה:

private
...
   procedure SetColor(AName : String; AValue : TColor);
...

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

התכונה של צבע החולצה (ShirtColor), כותבת ישירות לשדה מסויים, ולא דורשת מאיתנו בעצם ליצור Getter ו Setter בכלל. היות ואין פעולה חשובה שצריך לבצע במיוחד לשם כך. הגדרות של Geter ו/או Setter מתבצעות רק כאשר אנחנו צריכים להתערב במשהו, ולא בכל פעם שאנחנו כותבים תכונה.

להמשך קריאה בנושא, אתם מוזמנים לגשת לכאן.

פורסם בקטגוריה Delphi, Object Pascal, טכנולוגיה, פיתוח, קוד פתוח, תוכנה, תכנות | 11 תגובות

ככה לא עושים פיטצ'ר אבטחה

בשעה טובה ומוצלחת הפצת הלינוקס האהובה עלי – Arch הכניסה לתוכה חתימת חבילות התקנה.

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

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

אז ארצ' נכנסו סוף כל סוף לעולם של הגדולים -> דביאן וredhat. ומציעים גם חתימה של חבילות ! אבל המימוש שלהם לא נכון.

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

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

וכאן יש פתח להרבה בעיות. אז למי שאין כוח להתחיל לחפור בנושא. בשורה התחתונה, יש מספר מפתחות כלליים (master keys) שצריך לאפשר ואז אין צורך לאפשר את כל מפתחות ההצפנה פר מפתח.

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

אז כאשר האנשים הטובים בהפצה הבינו את הבעיה, הם פתרו אותה על ידי יצירת מספר מפתחות "על" (master keys  ואנחנו מייבאים אותם בצורה הבאה:

$ sudo -s
# for key in FFF979E7 CDFD6BB0 4C7EA887 6AC6A4C2 824B18E8; do
    pacman-key --recv-keys $key
    pacman-key --lsign-key $key
    printf 'trust\n3\nquit\n' | gpg --homedir /etc/pacman.d/gnupg/ \
        --no-permission-warning --command-fd 0 --edit-key $key
done

במידה ואתם לא בוטחים בי, תמיד אפשר לאשר ידנית את המפתחות בצורה הבאה:

sudo pacman-key --lsign-key

כאשר מפתח נראה בסגנון הבא: FFF979E7.

את המפתחות אתם מקבלים על ידי pacman – מנהל החבילות עצמו.

בהצלחה !

פורסם בקטגוריה arch linux, אבטחת מידע, טכנולוגיה, לינוקס, קוד פתוח, תוכנה | עם התגים , | השאירו תגובה

a tale about PIPA, SOPA and Copyrights

Imagine a person finding a road that everyone is using, and decide to charge money from every car that is passing by. Then that person think about it, and start taking money also from people who are walking by that road, just looking at it, or just reading about it.

The person is also limiting the number of people that can use the road, in what type of vehicles, number of passengers, the location from where the driver is from etc…

And if to add  on all of that. the person never fixes the road, or provide extra benefit of using it. You get what he provides "as-is", in the way that he think you should have it, and that's it.

When people that live beside the road, started to create their own path to the road, so they could arrive from one place to another, caused a big headache to the road owner.  Because they did not pay for the usage of the road, and did not stand in his limitation. So the road owner decided not only to sue them, but also to provide some money for public elected figures to place bills and rules, to say that without his permission, and in his conditions, it is illegal to do so.

So people started to create their own roads instead, and the traffic started to move to thar roads instead,  and the original road owner, started to loose a lot of road users -> money to that newer and better roads, that take only minor maintenance fees, but do not limit anything. Even the roads are better maintained then the original road that the person took over and start changing on it.

So now that person decided to pay again to that public figures to place more bills and call the other roads thieves, pirate etc..  And that everyone who is not using the original road hurts the right of the original road owner.

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

Redis or not

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

למי שלא מכיר, אז Redis הוא מסד נתונים אשר מספק מערכת Key value עם הרבה יכולות. הוא מאפשר לי ליצור הרבה מעבר ל key value, ולמעשה הוא סוג של data struct manager.

פירוש השם הוא קיצור של מספר מילים ולא כתיבה שגויה של צנון: REmote Dictionary Server. רק אם תהיתם במקרה.

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

זה על רגל אחת על מסד הנתונים הזה. להמשיך לקרוא

פורסם בקטגוריה Delphi, FPC, טכנולוגיה, מסדי נתונים, פיתוח, קוד פתוח, תוכנה, תכנות | עם התגים , , | 2 תגובות

Display Quote v1

להמשיך לקרוא

פורסם בקטגוריה android, FPC, Lazarus, n900, Object Pascal, ui, טכנולוגיה, לינוקס, סלולרי, פיתוח, קוד פתוח, תוכנה, תכנות | השאירו תגובה

שקט חייב להישמע

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

פורסם בקטגוריה חברה, קהילה, קוד פתוח | 8 תגובות

עוד פוסט חסר תועלת בנושא הפריצות

infrastructures

ב21 לנובמבר 2011 פרסמתי פוסט בנושא הבעיות של חנויות ישראליות ברשת האינטרנט.

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

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

ואז הגיע 0mar. הוא במקום להגיד שהמלך הוא עירום, פשוט שם לנו תמונה מול העיניים, נתן לנו כמה סטירות לחי, ועדיין ביט כמנהגו נוהג – במקום להבין את הבעיה שיש ולתקן אותה, סמוך על ביז'ו חזר, ופלוני מאשים את אלמוני, שמאשים את John Doe שמאשים את Jane Doe שבכלל עוד לא נולדו באותו היום … (כמובן שאני לא באמת רוצה לפגוע בביז'ו הוא לא באמת אשם)

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

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

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

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

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

פורסם בקטגוריה אבטחת מידע, אינטרנט, הומור, חוק, טכנולוגיה, כלכלה, מכירות, משטרה, משפט, עסקים, קוד פתוח, תקנים, תקשורת | 4 תגובות

ממשק גרפי לציטוטים חלק רביעי

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

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

אבל לפני כן, עוד עשיתי ניסויים שונים עם יכולות החיפוש, והחלטתי בהתחלה להשתמש בספריית Regex כלשהי לבצע את החיפוש. לשם כך, הייתי צריך לבחור בין 2 ספריות המגיעות בברירת מחדל עם FPC, אחת ישנה, שגם אני בין הכותבים המקוריים שלה (גרמתי לה לתמוך בתחביר POSIX ב2005), או בספרייה חדשה יותר ומומלצת יותר לשימוש. בחרתי בסוף בחדשה יותר.

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

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

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

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

עוד מספר פיטצ'רים שחשבתי להוסיף:

  •  לשלוח ציטוטים לרשת חברתית (או יותר נכון מספר רשתות חברתיות).
  • להוסיף צלמית ל system tray, וגם לשלוט משם.

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

פורסם בקטגוריה Lazarus, Object Pascal, טכנולוגיה, פיתוח, קוד פתוח, תוכנה, תכנות | תגובה אחת

בעיות ברשת

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

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

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

אם לצטט את "סגול עמוק": Sometimes I feel like screaming

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

פורסם בקטגוריה טכנולוגיה, לינוקס, קוד פתוח | 5 תגובות