Computer
Wikipedia Legally Challenges UK's 'Flawed' Online Safety Rules
Read more of this story at Slashdot.
Plastics Industry Pushed 'Advanced Recycling' Despite Knowing Problems
Read more of this story at Slashdot.
Apple Asks Court To Halt App Store Rule Changes While It Appeals
Read more of this story at Slashdot.
Switzerland To Hold Referendum on Introducing Electronic ID
Read more of this story at Slashdot.
Zuckerberg's Grand Vision: Most of Your Friends Will Be AI
Read more of this story at Slashdot.
Ghost Students Are Creating an 'Agonizing' Problem For California Colleges
Read more of this story at Slashdot.
Figma's Big AI Update Takes On Adobe, WordPress, and Canva
Read more of this story at Slashdot.
Dangerous Fungal Spores May Travel the Globe On 'Stratospheric Superhighway'
Read more of this story at Slashdot.
CodeSOD: Leap to the Past
Early in my career, I had the misfortune of doing a lot of Crystal Reports work. Crystal Reports is another one of those tools that lets non-developer, non-database savvy folks craft reports. Which, like so often happens, means that the users dig themselves incredible holes and need professional help to get back out, because at the end of the day, when the root problem is actually complicated, all the helpful GUI tools in the world can't solve it for you.
Michael was in a similar position as I was, but for Michael, there was a five alarm fire. It was the end of the month, and a bunch of monthly sales reports needed to be calculated. One of the big things management expected to see was a year-over-year delta on sales, and they got real cranky if the line didn't go up. If they couldn't even see the line, they went into a full on panic and assumed the sales team was floundering and the company was on the verge of collapse.
Unfortunately, the report was spitting out an error: "A day number must be between 1 and the number of days in the month."
Michael dug in, and found this "delight" inside of a function called one_year_ago:
Local StringVar yearStr := Left({?ReportToDate}, 4); Local StringVar monthStr := Mid({?ReportToDate}, 5, 2); Local StringVar dayStr := Mid({?ReportToDate}, 7, 2); Local StringVar hourStr := Mid({?ReportToDate}, 9, 2); Local StringVar minStr := Mid({?ReportToDate}, 11, 2); Local StringVar secStr := Mid({?ReportToDate}, 13, 2); Local NumberVar LastYear; LastYear := ToNumber(YearStr) - 1; YearStr := Replace (toText(LastYear),'.00' , '' ); YearStr := Replace (YearStr,',' , '' ); //DateTime(year, month, day, hour, min, sec); //Year + Month + Day + Hour + min + sec; // string value DateTime(ToNumber(YearStr), ToNumber(MonthStr), ToNumber(dayStr), ToNumber(HourStr), ToNumber(MinStr),ToNumber(SecStr) );We've all seen string munging in date handling before. That's not surprising. But what's notable about this one is the day on which it started failing. As stated, it was at the end of the month. But which month? February. Specifically, February 2024, a leap year. Since they do nothing to adjust the dayStr when constructing the date, they were attempting to construct a date for 29-FEB-2023, which is not a valid date.
Michael writes:
Yes, it's Crystal Reports, but surprisingly not having date manipulation functions isn't amongst it's many, many flaws. It's something I did in a past life isn't it??
The fix was easy enough- rewrite the function to actually use date handling. This made a simpler, basically one-line function, using Crystal's built in functions. That fixed this particular date handling bug, but there were plenty more places where this kind of hand-grown string munging happened, and plenty more opportunities for the report to fail.
[Advertisement] ProGet’s got you covered with security and access controls on your NuGet feeds. Learn more.AI of Dead Arizona Road Rage Victim Addresses Killer In Court
Read more of this story at Slashdot.
Google Refutes Apple's Claims of Search Traffic Decline
Read more of this story at Slashdot.
Google To Fund Development of Three Nuclear Power Sites
Read more of this story at Slashdot.
Netflix Debuts Gen AI-Powered Search Tool, Tests Vertical Videos For Mobile
Read more of this story at Slashdot.
New GNOME Executive Director Named
Read more of this story at Slashdot.
Amazon Says New Warehouse Robot Can 'Feel' Items, But Won't Replace Workers
Read more of this story at Slashdot.
Samsung Acquires Masimo's Audio Business For $350 Million
Read more of this story at Slashdot.
Trump Will Rescind Biden-Era AI Chip Export Curbs
Read more of this story at Slashdot.
Apple's Eddy Cue: 'You May Not Need an iPhone 10 Years From Now'
Read more of this story at Slashdot.
VMware Perpetual License Holders Receive Cease-And-Desist Letters From Broadcom
Read more of this story at Slashdot.
Curl Battles Wave of AI-Generated False Vulnerability Reports
Read more of this story at Slashdot.