הצעה לפרומפט - איך לשבור את הקוד
25/03/2025
אחד הקשיים של מתכנתים, במיוחד בעולם של אבטחת מידע אבל גם מחוץ, הוא לראות באג בקוד שלא גורם לבעיה בהתנהגות המערכת. באג שמסתתר ומחכה לפיצ'ר חדש שנרצה להוסיף ואז פתאום יופיע וכולנו נשאל "אבל איך זה עבד עד עכשיו?".
אז הנה הצעה לפעם הבאה שאתם מקשקשים עם קלוד או חבר אחר, זה הולך ככה:
Let's play a game - the code below has a hidden bug, but it will be triggered if we add a specific feature. What new feature will break this code?
אני נתתי לו בשביל הדוגמה את הקוד ריאקט הזה והוא קלע בול לפיצ'ר שהיה צריך בשביל לראות את הבאג:
function ColorPalette({ start }: {
start: ColorInput,
}) {
const [deletedBoxes, setDeletedBoxes] = useState(new Set());
const removeBox = useCallback((e: React.MouseEvent) => {
console.log(`deleted boxes = ${deletedBoxes.size}`);
const id = (e.target as HTMLDivElement).dataset.id;
deletedBoxes.add(Number(id));
setDeletedBoxes(new Set(deletedBoxes));
}, [deletedBoxes, setDeletedBoxes]);
const colors = [];
for (let i=-360; i < 360; i++) {
if (deletedBoxes.has(i)) continue;
colors.push(
<ColorBox
key={i}
start={start}
spin={i}
onClick={removeBox}
id={i}
/>
);
}
return colors;
}
(וכן כנראה שאפשר להוריד את התחילית Let's play a game, אבל אני מוצא שהתשובות של AI יותר נחמדות כשהוא חושב שהוא במשחק).