איך משדרים ביטים בעלי אורך זהה לחלוטין בלי לסמוך על החומרה? תרגיל תכנות קטן במסגרת ניסיון לפתח ערוץ דיבוג מינימליסטי, חסכוני ואוניברסלי.
ארכיון הקטגוריה: אלגוריתמים
אופטימיזציה: האם אפשר להוציא את המיץ מהסוויץ'?
כשהדרישות מהמערכת דוחקות אותנו ממש לפינה, אפשר לפעמים לסחוט עוד כמה מחזורי שעון אפילו מדבר בסיסי כמו פקודת switch בשפת C. ולפעמים אי אפשר. בואו נצלול לעומק שני קומפיילרים כדי לגלות אם, מתי ואיך אופטימיזציה קיצונית שכזו יכולה לעבוד.
חיפוש מהיר של מיקומי GPS בקובץ
נתונה רשימה של קואורדינטות גאוגרפיות של נקודות ציון. הרשימה ארוכה מכדי לאחסן אותה בזיכרון המיקרו-בקר, ואנחנו צריכים לזהות בזמן אמת – על סמך מידע שמגיע ממודול GPS – אם אנחנו קרובים לאחת מנקודות הציון האלה. איך עושים זאת בצורה יעילה וחסכונית במשאבים?
איך יוצרים התפלגות נורמלית
פונקציות ה-random המוכרות נותנות לנו התפלגות אחידה של תוצאות. מה עושים אם צריך דווקא התפלגות בצורת פעמון, או בשמה המקצועי "התפלגות נורמלית"? הנה פתרון פשוט, היישר משיעורי המבוא לסטטיסטיקה.
איך ליצור מזהה ייחודי ייחודי
באחד הפרויקטים שאני עובד עליהם לאחרונה, המיקרו-בקר התבקש ליצור לעצמו מספר זיהוי ייחודי לפי פקודה, ברמת אקראיות גבוהה מספיק כדי שמספרים "כפולים" יהיו נדירים גם במערכת שכוללת הרבה מיקרו-בקרים כאלה. מאיפה משיגים ביטים אקראיים כדי "להתניע" את מחולל המספרים הפסודו-אקראיים, ומה עושים כשהמחולל עצמו נותן לנו מעט מדי אפשרויות?
פרויקט: חנוכיית לדים בשלט רחוק
כמיטב המסורת, בניתי לכבוד החג חנוכייה אלקטרונית קטנה. הפעם מדובר בחנוכייה שאפשר לתפעל ממרחק באמצעות שלט רחוק של טלוויזיה.
קריאה מושלמת של Rotary Encoder, חלק ב'
האם אפשר לנסח אלגוריתם לקריאה של מקודד סיבובי, שפותר לגמרי את בעיית ה-Bounce מצד אחד, ומצד שני לא נופל בפח של היפוך כיוון הסיבוב כפי שקרה לאלגוריתם הקודם שלי?
איך ליצור שעון אקראי וגם מדויק
בפוסט הקודם על "השעון הקוּקוּ", שמתקתק בקצב לא אחיד, הזכרתי שאפשר לגרום לו – למרות ההפרעות בקצב מחוג השניות – לשמור בסופו של דבר ולאורך זמן על השעה הנכונה. איך עושים את זה? בפוסט הנוכחי אציג מספר גישות לפתרון הבעיה.
מה מתמטיקה עוזרת בחיים
לפני כמה ימים נחת על שולחני ספר שרציתי לקרוא כבר הרבה מאד זמן: Hacker's Delight (מהדורה שניה). זהו למעשה אוסף של שיטות, טריקים וקונצים לאופטימיזציה של פעולות לוגיות ומתמטיות בתוכנות מחשב – מידע שימושי לכל מתכנת שעובד "קרוב לברזלים", ובמיוחד למתכנתי מיקרו-בקרים. הנה דוגמה לתועלת של טריקים חשבוניים… עוד לפני שקראתי דף אחד בספר.
היקום הבלתי-אפשרי של Elite
בעולם משחקי המחשב, Elite (משנת 1984) נחשב אחד מפורצי הדרך הגדולים, גם מבחינת אופי המשחק וגם מבחינה טכנית. השחקנים הטיסו את החלליות שלהם ביקום שהיה הרבה, הרבה יותר מדי גדול בשביל הזיכרון של המחשב; והטריק שאיפשר זאת יכול ללמד אותנו לא מעט גם היום.