DigiKam, a free and open-source raw photo management app for macOS, Windows and Linux, has been updated

https://2.img-dpreview.com/files/p/E~C0x0S2400x1800T1200x900~articles/3788652829/digikam-7-7-0-screenshot-om-1-support.png

DigiKam is a free, open-source digital photo management app available on Windows, macOS and Linux. The app has just been updated to version 7.7.0, adding numerous new features, bug fixes and camera support.

DigiKam 7.7.0 supports the AOM AV1 Image File Format (AVIF), an open-source video coding format. It’s similar to HEIF. The app also adds read/write support for the JPEG-XL image format in all supported bundles. JPEG-XL support first appeared in digiKam 7.6.0, but there were some issues with animated files, which have now been addressed.

The update uses an updated Libraw version, supporting the OM System OM-1 camera’s raw image files. More than 1,180 different cameras have raw file support in digiKam 7.7.0. The company also notes that the KDE framework has been updated to the latest 5.95 release and Qt 5.15 LTS is used in the Windows and macOS bundle.

9to5Linux reports that the latest version of digiKam includes improved support for SVG files, improved DNG file support, better GIF support and Flatpak support. The software also has a new ‘Ignore face’ button for unrecognized faces when using the app’s thumbnail view. Issues with detecting the Hugin open-source panorama photo stitching and HDR merging program have been addressed. There’s also improved reading of raw DNG files from Adobe Lightroom that have been converted to sRGB color space and TIFF file format.

There are also many bug and crash fixes. The team says that 84 bugs have been triaged.

Looking ahead, version 8.0.0 should be released as a beta test later this summer, and a full release is expected by the end of the year. The team is working on porting the git master branch to the new Qt6 framework. A couple of students are also working on improving the neural network for the application’s Image Quality Analyzer. This feature works to analyze images based on noise, focus, exposure and compression.

DigiKam 7.7.0 is available to download for free here. Click here for more information about the software, features, and capabilities.

Articles: Digital Photography Review (dpreview.com)

10 Disturbing Photographs From Post-Roe America

https://media.babylonbee.com/articles/62bcc30f25c4e62bcc30f25c4f.jpg

Roe v. Wade has been overturned and we are now all living in the literal Handmaid’s Tale. Already, thousands of harrowing photographs have emerged from the abortion-free hellscape. It’s worse than we thought. We were warned, and we didn’t listen.

These 10 disturbing photos offer a horrifying glimpse into the dark world we now live in. Viewer discretion is advised.

…are you sure you’re ready?

Look at this woman’s face. Her mouth is agape in horror at this baby who should never have been born.

Two siblings compete for meager food resources. This is what happens when fascists get their way.

This is just a hanger. There’s nothing special about it, it’s just a hanger. But in a post-Roe world, it’s a weapon of mass destruction.

Three kids? Imagine the carbon footprint! Mother Earth is crying.

FOUR of them now?! Make it stop!

Another white male brought into the world. Look how sad his mother is. We hope you’re happy, right-wingers.

This dad could be playing video games right now. Instead, he’s going on a boring walk.

This is an artist’s depiction of what the earth will look like in three weeks if more babies are born. Trust the science and stop this before it’s too late.

This woman missed out on a promising career in office management to have a baby. And for what?

Somewhere in post-Roe America, Clarence Thomas is smiling, and probably laughing an evil laugh. Now it will haunt your dreams. Welcome to The Handmaid’s Tale.

NOT SATIRE: Recently, we held a public event on the evening before our annual Wilberforce Weekend to talk about how we can prepare to live in a post-Roe world. A very important aspect of that event was learning how we can respond to the common slogans, the common lines that people often throw around in support of abortion. We asked Stephanie Gray Connors, one of the great apologists for the sanctity of life in our present moment to address some of these slogans and she answered a common pro-abortion statement, “embryos aren’t people.” It was riveting, powerful and needed to be heard by all. Also, at last week’s pre-Wilberforce event, preparing for a post-Roe future, Stephanie answered three more slogans, just like that one. To receive access to the entire evening event, Preparing for a Post-Roe World, sign up for the daily commentary at Breakpoint!


Satan held a press conference today responding to the big loss of Roe v. Wade. He’s doing his best to keep his chin up.

Subscribe to The Babylon Bee on YouTube

Babylon Bee

Two Half Wheel Bike

https://theawesomer.com/photos/2022/06/double_half_wheel_bike_t.jpg

Two Half Wheel Bike

Link

If you split a wheel in half, you shouldn’t still be able to ride on it, right? Well, watch this video from The Q, in which he cut two bike wheels and tires down the middle, connected them with a long chain and positioned them so one half is always touching the ground. Miraculously, the bike rides just fine.

The Awesomer

MySQL JSON Tricks

Are they really tricks or simply basic techniques combined to create a solution. Before writing these mechanics for using native MySQL to create a compound JSON object, let me point out that the easiest way to get one is to use the MySQL Node.js library, as shown recently in my “Is SQL Programming” blog post.

Moving data from a relational model output to a JSON structure isn’t as simple as a delimited list of columns in a SQL query. Let’s look at it in stages based on the MySQL Server 12.18.2 Functions that create JSON values.

Here’s how you return single row as a JSON object, which is quite straightforward:

SELECT JSON_OBJECT('first_name',c.first_name,'last_name',c.last_name) AS json_result
FROM   contact c
WHERE  first_name = 'Harry'
AND    last_name = 'Potter';

It returns:

+------------------------------------------------+
| json_result                                         |
+------------------------------------------------+
| {"last_name": "Potter", "first_name": "Harry"} |
+------------------------------------------------+
1 row in set (0.00 sec)

With a GROUP_CONCAT function, let’s capture a JSON array of all three Potter family members:

SELECT CONCAT('['
             , GROUP_CONCAT(
                 JSON_OBJECT('first_name',first_name
                            ,'last_name',last_name ) SEPARATOR ',')
             ,']') AS json_result 
FROM   contact c
WHERE  c.last_name = 'Potter';

It returns an array of JSON objects:

+-----------------------------------------------------------------------------------------------------------------------------------------------+
| [{"last_name": "Potter", "first_name": "Harry"},{"last_name": "Potter", "first_name": "Ginny"},{"last_name": "Potter", "first_name": "Lily"}] |
+-----------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.01 sec)

Next, let’s put a 1:many relationship between the member and contact table into a JSON structure with a single account number and an array of contact. It requires a second call to the JSON_OBJECT function and the addition of a GROUP BY clause in the query.

SELECT   JSON_OBJECT(
            'account_number', account_number
           ,'contact', CONCAT('['
                         , GROUP_CONCAT(
                              JSON_OBJECT('first_name',first_name
                             ,'last_name',last_name ) SEPARATOR ',')
                             ,']')
         ) AS json_result 
FROM     member m INNER JOIN contact c
ON       m.member_id = c.member_id
WHERE    c.last_name = 'Potter'
GROUP BY m.account_number;

It returns the following string with an annoying set of backslashes. It also inverts the column order, which appears unavoidable but it shouldn’t matter because the order of name-value pairs in JSON is immaterial.

+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| {"contact": "[{\"last_name\": \"Potter\", \"first_name\": \"Harry\"},{\"last_name\": \"Potter\", \"first_name\": \"Ginny\"},{\"last_name\": \"Potter\", \"first_name\": \"Lily\"}]", "account_number": "US00011"} |
+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

The following quick little Python code cleans up the JSON string by removing the backslashes and extraneous quotes around the array of contacts.

# Import the library.
import mysql.connector
from mysql.connector import errorcode
 
try:
  # Open connection.
  cnx = mysql.connector.connect(user='student', password='student',
                                host='127.0.0.1',
                                database='studentdb')
  # Create cursor.
  cursor = cnx.cursor()
 
  # Set the query statement.
  query = ("SELECT JSON_OBJECT( "
           "'account_number', m.account_number "
           ",'contact', CONCAT('[' "
           "              , GROUP_CONCAT( "
           "                   JSON_OBJECT('first_name', c.first_name "
           "                  ,'last_name', c.last_name ) SEPARATOR ',') "
           "                  ,']')) AS json_result "
           "FROM   contact c INNER JOIN member m "
           "ON     c.member_id = m.member_id "
           "WHERE  c.last_name = %s "
           "GROUP BY account_number")
  
  # Execute cursor.
  cursor.execute(query,["Potter"])
 
  # Display the column returned by the query stripped of backslashes and
  # extraneous quotes.
  for (row) in cursor:
    for column in range(len(row)):
      print(row[column].replace("\\","").replace("\"[","[").replace("]\"","]"))
 
  # Close cursor.
  cursor.close()
 
# ------------------------------------------------------------
# Handle exception and close connection.
except mysql.connector.Error as e:
  if e.errno == errorcode.ER_ACCESS_DENIED_ERROR:
    print("Something is wrong with your user name or password")
  elif e.errno == errorcode.ER_BAD_DB_ERROR:
    print("Database does not exist")
  else:
    print("Error code:", e.errno)        # error number
    print("SQLSTATE value:", e.sqlstate) # SQLSTATE value
    print("Error message:", e.msg)       # error message
 
# Close the connection when the try block completes.
else:
  cnx.close()

It returns:

{"contact": [{"last_name": "Potter", "first_name": "Harry"},{"last_name": "Potter", "first_name": "Ginny"},{"last_name": "Potter", "first_name": "Lily"}], "account_number": "US00011"}

I hope this helps exhibit less well known MySQL syntax.

Planet MySQL

Kyle Rittenhouse Debuts New Video Game and Of Course, You Can Shoot Things In It

https://www.louderwithcrowder.com/media-library/image.png?id=30017091&width=980

Kyle Rittenhouse, our favorite rapscallion, surveyed the land and thought about how next to trigger the left and the media (but I repeat myself). They are still upset he was found not guilty of first-degree murder by acting in self-defense against a pedophile. If he comments on gas prices, they can’t calm down. But this new venture? Young Kyle is getting into the video game industry. It’s a shooting game. A turkey shooting game. And someone wrote the words "fake news" on the side of the turkeys.

You hunt fake news turkeys. Kyle Rittenhouse developed a video game that allows you to hunt fake news turkeys as Kyle Rittenhouse.


Kyle Rittenhouse’s Turkey Shoot OFFICIAL GAME

youtu.be

"The media is nothing but a bunch of turkeys with nothing better to do than push their lying agenda and destroy innocent people’s lives. […] Help me fund the lawsuits to stop these fake news turkeys."

You can preorder at RittenhouseGame.com. It’s to raise money for his Media Accountability Project so the defamation lawsuit can finally begin.

Kyle is working with Mint Studios. CEO Mint Chip — I’m trusting the Washington Examiner that’s his real name — felt the need step in after he saw what the media did to Rittenhouse. "Before the trial, you couldn’t even mention his name in a positive manner on social media without getting banned. The truth literally got you suspended. We fight for the truth."

Unfortunately, it does not look like the turkeys are named after our favorite fake news personalities. No Gobbles Stelter or Whoopi Goldfowl. Also, due to Kyle’s young age, he wouldn’t know to recreate the WKRP Turkey Drop. Only, where you need to stop the White House from bombarding a MAGA rally with Iive turkeys.

Kyle Rittenhouse is hunting fake news in a video game. The kids got some stones. I’ll give him that.

The Louder with Crowder Dot Com Website is on Instagram now! Follow us at @lwcnewswire and tell a friend!


Kyle Rittenhouse’s Rifle Gets Shredded: A Tribute | Louder With Crowder

youtu.be

Louder With Crowder

The Office But with Minions

https://theawesomer.com/photos/2022/06/the_minions_the_office_t.jpg

The Office But with Minions

Link

In a way, the staff on The Office are kind of like the Minions from Despicable Me. They each have a quirky personality, and they all work for an annoying boss played by Steve Carrell. To celebrate the release of the new movie Minions: Rise of Gru, Illumination Entertainment released this special remake of The Office’s opening credits.

The Awesomer

Insane Footage of What a Heavily Armored Toyota Land Cruiser Can Withstand

https://s3files.core77.com/blog/images/1293113_81_116067_fqwJmYsHR.jpg

There’s a thrilling scene in one of the Captain America movies where a heavily-armored SUV driven by Nick Fury comes under attack. The vehicle withstands an incredible amount of damage.

There’s a terrifying scene from last year, where a failed heist in South Africa yielded real-life footage of an armored 70 Series Toyota Land Cruiser coming under fire. It, too, withstood an incredible amount of damage, though not the Marvel-movie level.

Just how much punishment could a real-world armored SUV take? Canadian firm Inkas Armored Vehicle Manufacturing should know, as they specialize in the design and production of armored vehicles for embassies, paramilitary groups, law enforcement agencies, executive protection companies, security companies and civilians.

This month Inkas released footage of the insane testing done to certify one of their modified Land Cruiser 300s. To design effective ballistic and blast protection, this is what their test mules are subjected to—a grenade on the roof, a grenade beneath the car, land mines, 15kg of dynamite, nearly 800 rounds fired by assault rifles:

"In order to obtain the certification, the armored Land Cruiser 300 endured extensive ballistic testing, which specifically targeted the potential points of failure where the vehicle would be most susceptible to penetration during an attack. The INKAS Armored Land Cruiser successfully proved its reliability in the field – withstanding over 780 rounds of ammunition from various calibre firearms, 6 roof-level hand grenades (DM51), 4 underbody hand grenades (DM51), 2 land mines (DM31) as well as a 15kg TNT (equivalent) explosion from a 2 meter distance."

Core77