13.4 C
New York
Sunday, March 16, 2025
Home Blog Page 5

Florida is #2 State for Electrical Automotive Gross sales (Most likely)



Join day by day information updates from CleanTechnica on e-mail. Or comply with us on Google Information!


For no matter causes (which we are able to conjecture about on the finish), Florida has grow to be #2 within the nation for EV gross sales. California is #1, after all, and has about 5× as many EV registrations as Florida, whereas #3 Texas is only a bit behind Florida. The obvious these are the highest three states for EV registrations is that these are the three most populated states within the nation (although, Florida is third and Texas is second on the subject of inhabitants). Nonetheless, there’s one notable problem with the info used for the chart beneath.

In case you learn the high-quality print there, these registration knowledge are for cumulative registrations by means of the top of 2023. The numbers used listed below are greater than a 12 months old-fashioned. However that’s what we now have.

Additionally be aware that the chart itself makes the states look rather more comparable than they really are. With greater than 1,250,000 registrations, California’s bar must be about 5× larger than Florida’s, nevertheless it seems nearly twice as excessive. It’s a bizarre alternative for knowledge presentation, however the US DOE was clearly making an attempt to make a chart the place you would examine the opposite states and never have their EV registrations appear like little specks in comparison with California’s.

The excellent news is EV gross sales have continued robust within the Sunshine State. “In Central Florida, the variety of electrical automobile registrations rose greater than 15% from November 2023 to November 2024, in response to  S&P World Mobility, an automotive knowledge and analytics firm,” The Orlando Sentinel writes. “Greater than 17,000 electrical autos, typically referred to as EVs, have been newly registered in Brevard, Flagler, Lake, Marion, Orange, Osceola, Seminole, Sumter and Volusia counties throughout that interval, the corporate mentioned.” Furthermore, nationwide EV gross sales development was 9.4% in 2024, whereas it was 15.2% in Central Florida.

Sadly, we don’t get numerous state-specific knowledge on EVs and EV gross sales. I’ll go searching extra for higher alternatives for comparability, however be at liberty to share within the feedback when you’ve got any nice sources to share.

Whether or not you’ve got solar energy or not, please full our newest solar energy survey.



Chip in a number of {dollars} a month to assist assist unbiased cleantech protection that helps to speed up the cleantech revolution!


Have a tip for CleanTechnica? Wish to promote? Wish to counsel a visitor for our CleanTech Speak podcast? Contact us right here.


Join our day by day publication for 15 new cleantech tales a day. Or join our weekly one if day by day is simply too frequent.


Commercial



 


CleanTechnica makes use of affiliate hyperlinks. See our coverage right here.

CleanTechnica’s Remark Coverage




ios – How I deal with pending transactions


Here is how I deal with pending transactions in my app

import StoreKit
import AmplitudeSwift
import Optimizely

class PurchaseManager: ObservableObject {
    // A printed property to carry out there merchandise
    @Printed var merchandise: [Product] = []
    // A printed property to trace the standing of transactions
    @Printed var transactionState: String = "Idle"
    var loadingIndicator: ThreeBubblesLoadingView!
    
    // A set of product identifiers
    non-public let productIdentifiers: Set = [
        PaymentHandler.sharedInstance.YEARLY_PRODUCT_ID,
        PaymentHandler.sharedInstance.YEARLY_PRODUCT_ID_50_OFF,
        PaymentHandler.sharedInstance.MONTHLY_PRODUCT_ID,
        PaymentHandler.sharedInstance.YEARLY_PRODUCT_ID_40_OFF,
        PaymentHandler.sharedInstance.YEARLY_PRODUCT_ID_FREE_TRIAL,
        PaymentHandler.sharedInstance.YEARLY_PRODUCT_ID_50,
        PaymentHandler.sharedInstance.MONTHLY_PRODUCT_ID_13
    ]
    
    // Shared occasion for use all through the app
    static let shared = PurchaseManager()
    
    non-public init() {}
    
    // MARK: - Fetch Merchandise from App Retailer
    func fetchProducts() async {
        do {
            let merchandise = attempt await Product.merchandise(for: productIdentifiers)
            self.merchandise = merchandise
        } catch {
            print("Didn't fetch merchandise: (error.localizedDescription)")
        }
    }
    
    // MARK: - Deal with Buy
    func purchaseProduct(product: Product, supply: String, vc: UIViewController) async -> Bool {
        do {
            DispatchQueue.most important.async {
                self.loadingIndicator = ThreeBubblesLoadingView()
                self.loadingIndicator.translatesAutoresizingMaskIntoConstraints = false
                vc.view.addSubview(self.loadingIndicator)
                
                NSLayoutConstraint.activate([
                    self.loadingIndicator.centerXAnchor.constraint(equalTo: vc.view.centerXAnchor),
                    self.loadingIndicator.centerYAnchor.constraint(equalTo: vc.view.centerYAnchor)
                ])
            }
            
            // Begin the acquisition
            let consequence = attempt await product.buy()
            
            // Deal with the results of the acquisition
            change consequence {
            case .success(let verificationResult):
                change verificationResult {
                    case .verified(let transaction):
                        self.transactionState = "Buy Profitable"
                        await transaction.end()
                    
                      
                        DispatchQueue.most important.async {
                            Amplitude.sharedInstance.monitor(
                                eventType: "payment_completed",
                                eventProperties: [
                                    "PlanId": transaction.productID,
                                    "UserId": WUser.sharedInstance.userId,
                                    "Source": source,
                                    "VariationKey": WUser.sharedInstance.variationKey
                                ]
                            )
                            
                            if (self.loadingIndicator != nil) {
                                self.loadingIndicator.removeFromSuperview()
                            }
                        }
                        
                        return await PaymentHandler.sharedInstance.buy(
                            vc: vc,
                            productId: transaction.productID,
                            product: transaction.productID,
                            transaction: transaction
                        )
                    case .unverified(let transaction, let error):
                        self.transactionState = "Buy Unverified: (error.localizedDescription)"
                        await transaction.end()
                      
                        DispatchQueue.most important.async {
                            showMessageWithTitle("Error!", "There was an error processing your buy", .error)
                            
                            Amplitude.sharedInstance.monitor(
                                eventType: "payment_failed",
                                eventProperties: [
                                    "PlanId": transaction.productID,
                                    "UserId": WUser.sharedInstance.userId,
                                    "Source": source,
                                    "Error": error.localizedDescription,
                                    "ErrorType": "UnverifiedTransaction",
                                    "ErrorObject": String(describing: error)
                                ]
                            )
                            if (self.loadingIndicator != nil) {
                                self.loadingIndicator.removeFromSuperview()
                            }
                        }
                        return false
                    }
            case .userCancelled:
                self.transactionState = "Consumer cancelled the acquisition."
               
                DispatchQueue.most important.async {
                    Amplitude.sharedInstance.monitor(
                        eventType: "payment_cancelled",
                        eventProperties: [
                            "PlanId": product.id,
                            "UserId": WUser.sharedInstance.userId,
                            "Source": source
                        ]
                    )
                    if (self.loadingIndicator != nil) {
                        self.loadingIndicator.removeFromSuperview()
                    }
                }
                return false
                
            case .pending:
                self.transactionState = "Buy is pending."
                
                DispatchQueue.most important.async {
                    Amplitude.sharedInstance.monitor(
                        eventType: "payment_pending",
                        eventProperties: [
                            "PlanId": product.id,
                            "UserId": WUser.sharedInstance.userId,
                            "Source": source
                        ]
                    )
                    if (self.loadingIndicator != nil) {
                        self.loadingIndicator.removeFromSuperview()
                    }
                }
                
                return false
                
            @unknown default:
                self.transactionState = "Unknown buy consequence."
               
                DispatchQueue.most important.async {
                    showMessageWithTitle("Error!", "There was an error processing your buy", .error)
                    
                    Amplitude.sharedInstance.monitor(
                        eventType: "payment_failed",
                        eventProperties: [
                            "PlanId": product.id,
                            "UserId": WUser.sharedInstance.userId,
                            "Source": source,
                            "Error": "unknown"
                        ]
                    )
                    if (self.loadingIndicator != nil) {
                        self.loadingIndicator.removeFromSuperview()
                    }
                }
                
                return false
            }
        } catch {
            self.transactionState = "Buy failed: (error.localizedDescription)"
        
            DispatchQueue.most important.async {
                showMessageWithTitle("Error!", "There was an error processing your buy", .error)
                
                Amplitude.sharedInstance.monitor(
                    eventType: "payment_failed",
                    eventProperties: [
                        "PlanId": product.id,
                        "UserId": WUser.sharedInstance.userId,
                        "Source": source,
                        "Error": error.localizedDescription,
                        "ErrorType": "CatchError",
                        "ErrorObject": String(describing: error)
                    ]
                )
                self.loadingIndicator.removeFromSuperview()
            }
            return false
        }
    }
    
    // MARK: - Pay attention for Transaction Updates
    func listenForTransactionUpdates() {
        Job {
            for await lead to Transaction.updates {
                change consequence {
                case .verified(let transaction):
                    self.transactionState = "Transaction verified: (transaction.productID)"
                    await transaction.end()
                    
                    DispatchQueue.most important.async {
                        Amplitude.sharedInstance.monitor(
                            eventType: "payment_completed",
                            eventProperties: [
                                "PlanId": transaction.productID,
                                "UserId": WUser.sharedInstance.userId,
                                "TransactionType": "Pending"
                            ]
                        )
                        
                        if (self.loadingIndicator != nil) {
                            self.loadingIndicator.removeFromSuperview()
                        }
                    }
                    
                    if (PaymentHandler.sharedInstance.vc != nil) {
                        await PaymentHandler.sharedInstance.buy(
                            vc: PaymentHandler.sharedInstance.vc!,
                            productId: transaction.productID,
                            product: transaction.productID,
                            transaction: transaction
                        )
                    }
                    
                    
                case .unverified(let transaction, let error):
                    self.transactionState = "Unverified transaction: (error.localizedDescription)"
                    
                    DispatchQueue.most important.async {
                        Amplitude.sharedInstance.monitor(
                            eventType: "payment_failed",
                            eventProperties: [
                                "PlanId": transaction.productID,
                                "UserId": WUser.sharedInstance.userId,
                                "Error": error.localizedDescription,
                                "ErrorType": "UnverifiedPendingTransaction",
                                "ErrorObject": String(describing: error)
                            ]
                        )
                        
                        if (self.loadingIndicator != nil) {
                            self.loadingIndicator.removeFromSuperview()
                        }
                    }
                    
                    await transaction.end()
                }
            }
        }
    }
}

Once I make a purchase order, I name the perform purchaseProduct.

Sadly, the pending transaction shouldn’t be being processed. Can somebody please assist? About 5 transactions went via as pending however wasn’t processed by Apple. The fee was not captured. Is that this code improper?

Within the AppDelegate, I’ve the next:

PurchaseManager.shared.listenForTransactionUpdates()

The fee shouldn’t be displaying up in app retailer join and I am not getting an apple server notification about it.

Europe’s largest battery powers up in Blackhillock, in Moray



Europe’s largest battery powers up in Blackhillock, in Moray
An space outdoors the substation in 2006 (picture credit score: Des Colhoun, CC BY-SA 2.0 license).

Zenobē, an proprietor and operator of grid-scale batteries on the GB transmission community, has introduced that Europe’s largest battery web site, situated in Blackhillock, Scotland, has begun business operations.

The Blackhillock web site is launching in two phases. Section 1 includes of 200MW which went stay on 3 March and will probably be adopted by an extra 100MW in 2026, making a complete of 300MW/600MWh. The entire capability of the location is the equal of powering over 3.1 million properties, mentioned the group, considerably greater than all of the households in Scotland, for one hour.

Intentionally situated between Inverness and Aberdeen to deal with grid congestion from Viking (443 MW), Moray East (950 MW) and Beatrice (588 MW) offshore wind farms, the mission is alleged to considerably cut back the quantity of wasted clear power and is a vital milestone to reaching the UK authorities’s mission to have a web zero energy grid by 2030.

Battery storage performs a crucial function within the UK’s web zero transition with over 22GW required at least within the Authorities’s Clear Energy 2030 Plan. As Britain will increase its reliance on renewable power sources resembling wind and photo voltaic, batteries like Blackhillock will be certain that extra energy may be saved after which used throughout instances of elevated demand.

Along with being Europe’s largest battery, the Blackhillock web site would be the first on the earth to supply Stability Providers to the Nationwide Vitality System Operator (NESO) to make renewable energy safer and dependable. Wärtsilä is supplying its Quantum power storage system expertise and GEMS Digital Vitality Platform with SMA grid forming inverters enabling a resilient energy system with excessive energy high quality. Scottish and Southern Electrical energy Networks (SSEN) delivered the grid connection required for the location to harness the renewable power on its transmission community.

EDF Wholesale Market Providers would be the Path to Market supplier for the location, by its market main buying and selling platform, Powershift. This platform mixed with Zenobē’s battery optimisation specialists will construct extra flexibility into the grid, important to decreasing wind curtailment and accelerating the decarbonisation of the community.

“By integrating this cutting-edge expertise, Blackhillock will improve the reliability of the UK’s rising renewable energy system and assist cut back shopper payments nationwide,” mentioned a press launch from the group. “The positioning is predicted to save lots of customers over £170 million over the subsequent 15 years. It can additionally stop roughly 2.6 million tonnes of CO₂ from getting into the ambiance throughout this era by integrating extra wind energy onto the transmission community.”

Commenting, Zenobē Founder Director James Basden mentioned: “At present marks a crucial juncture in Britain’s clear energy journey as Zenobē provides over 30% to the capability of operational battery storage in Scotland. Battery storage has a necessary function to play in our transition to renewable power, so I’m proud that Zenobē and our companions are main the best way by launching Europe’s largest and most technically superior battery.

“This mission has further significance, with the Blackhillock web site being the primary transmission linked battery on the earth to ship Stability Providers alongside a number of different essential providers. Because the UK steps up the tempo on a transition to renewable energy, these providers are very important if we’re to make sure the reliability and affordability of our grid shifting forwards.”

Fintan Slye, CEO of the Nationwide Vitality System Operator, mentioned: “Our 2025 ambition to allow zero carbon operation of Nice Britain’s nationwide electrical energy community is central to NESO’s mission. The supply by Zenobe of this grid forming battery is a significant accomplishment and brings us a step nearer to this aim. Battery storage is crucial to the long run reliability and affordability of the UK grid and pairing it with this grid forming expertise can unlock even better resilience for a net-zero community.”

Vitality Minister Michael Shanks mentioned: “”We’re losing no time in delivering clear energy by 2030, with the Blackhillock battery web site marking the newest milestone in delivering our mission to grow to be a clear power superpower.

“With each wind turbine put up, photo voltaic panel put in, and battery facility constructed, we’re defending households from future power shocks.

“Battery websites like this are serving to retailer our clear, surplus power to cut back our reliance on fossil fuels – which is able to defend households and enhance our power safety for good.”

Lazarus Group Weaponizes IIS Servers for Deploying Malicious ASP Internet Shells

0


The infamous Lazarus group has been recognized as leveraging compromised IIS servers to deploy malicious ASP net shells.

These subtle assaults have been reported to facilitate the unfold of malware, together with the LazarLoader variant, and make the most of privilege escalation instruments to achieve intensive management over contaminated programs.

The Lazarus group, related to North Korean actors, has been energetic in orchestrating high-profile cyber operations, starting from monetary heists to espionage missions.

Their techniques typically contain exploiting vulnerabilities in net servers and leveraging net shells to handle their command and management (C2) infrastructure.

Latest Assault Strategies

Latest studies from AhnLab Safety Intelligence Heart (ASEC) spotlight the Lazarus group’s newest techniques involving IIS servers.

These servers, particularly focusing on South Korean entities, are used as first-stage C2 servers, performing as proxies to mediate communication between malware and secondary C2 servers.

This strategic setup permits the group to keep up stealth and longevity of their operations.

C2 Script Evaluation

The newly recognized C2 script, whereas differing from previous variants, maintains an identical function—working as a proxy to handle communication throughout completely different phases of the assault.

The same type as the C2 script publicly disclosed by KasperskyThe same type as the C2 script publicly disclosed by Kaspersky
The identical kind because the C2 script publicly disclosed by Kaspersky

Notable enhancements embrace assist for each kind information and cookie information throughout communication. The script handles varied instructions:

  • Kind Mode:
    • MidRequest: Redirect information
    • ProxyCheck: Save mid data
    • ReadFile, WriteFile: Manipulate recordsdata
    • ClientHello: Reply with mid data and write proxy log
    • ProxyLog: Reply with proxy log
    • CheckFileTransfer: Lookup file
  • Cookie Technique:
    • Related instructions are supported, with MidRequest, ReadFile, WriteFile, and ClientHello

Internet Shell Evaluation

Along with C2 scripts, the Lazarus group has utilized net shells just like the RedHat Hacker net shell.

RedHat Hacker web shellRedHat Hacker web shell
RedHat Hacker net shell

The net shells, present in recordsdata reminiscent of function2.asp, are encrypted and require a password for entry, which was just lately recognized as 2345rdx.

These shells present intensive functionalities, together with file administration, course of execution, and SQL queries.

Different net shells named file_uploader_ok.asp and find_pwd.asp have been additionally recognized, providing related capabilities whereas utilizing completely different encryption keys for packet decryption.

LazarLoader and Privilege Escalation

LazarLoader, a malware loader, has been noticed along with these net shells. It downloads, decrypts, and executes payloads from exterior sources.

Installation log of LazarLoaderInstallation log of LazarLoader
Set up log of LazarLoader

In current assaults, LazarLoader was used to load extra malware, leveraging a hardcoded deal with for payload obtain and a selected key for decryption.

Alongside LazarLoader, a privilege escalation instrument was recognized, using UAC bypass strategies via ComputerDefaults.exe or fodhelper.exe to execute malware with elevated privileges.

Influence and Suggestions

The Lazarus group’s capability to weaponize IIS servers and exploit vulnerabilities underscores the significance of strong safety measures for net servers. Listed below are key suggestions:

  • Common Safety Audits: Conduct frequent audits to detect any unauthorized entry or modifications in server configurations.
  • Robust Authentication: Guarantee robust passwords are used for all net associated entry factors, and think about multi-factor authentication.
  • Up-to-Date Software program: Maintain working programs, net servers, and safety software program up to date to stop exploitation of recognized vulnerabilities.
  • Monitor Community Site visitors: Implement monitoring instruments to detect suspicious communication patterns indicative of C2 exercise.

In conclusion, the Lazarus group’s evolving techniques spotlight the necessity for vigilance and proactive protection methods in opposition to such subtle threats.

As cyber adversaries proceed to innovate, staying knowledgeable concerning the newest assault strategies is essential for efficient cybersecurity.

For organizations involved about these threats, the next actions are really useful:

  1. Overview Server Configurations to make sure they don’t seem to be uncovered to pointless vulnerabilities.
  2. Implement Enhanced Monitoring instruments to catch anomalies in real-time.
  3. Prepare Personnel on recognizing and responding to potential safety incidents.

By taking these proactive steps, organizations can considerably scale back their publicity to the continuing threats posed by the Lazarus group and related cyber actors.

Are you from SOC/DFIR Groups? – Analyse Malware Incidents & get stay Entry with ANY.RUN -> Begin Now for Free. 

Twin-wheel balancing Tron 1 robotic flaunts supreme agility

0


China’s LimX Dynamics launched a flexible bipedal robotic final 12 months with modular foot ends to stroll or roll round as wanted. Now the corporate has demonstrated its agility chops by having the squat bot jump over low fencing, climb stairs and clear obstacles with aplomb.

The Tron 1 multi-mode bipedal is the commercially obtainable model of the P1 we noticed taking fairly a beating because it wandered although the wilderness close to the corporate’s Shenzhen HQ. The place that self-balancing bot padded on rubber-ended toes, the ends of the jointed limbs of this newest construct can sport pivot footwear or motorized wheels as nicely.

Within the newest video demonstrating the robotic’s capabilities, the crew has chosen to concentrate on wheeling round – not simply over the flats, but in addition hopping over hurdles, climbing irregular steps and zipping down common ones, and stepping over obstacles. The footage additionally exhibits the now compulsory abuse, because the wheeled warrior constantly rights itself because it will get pushed round.

Multi-Modal Biped Robotic TRON 1 Demonstrates Multi Terrain Mobility

That is all welcome information if this intrepid multi-mode robotic is tasked with looking for out survivors in a catastrophe zone, however not so good for those who’re on the run from this factor in a sci-fi-like dystopian future. Nevertheless, there are limitations to its efficiency prowess.

In keeping with the given specs, the utmost climbing angle is round 15 levels, obstacles increased than 15 cm (5.9 in) might show an excessive amount of, and situations outdoors the -5 to 40 °C temperature vary (23-104 °F) is perhaps difficult.

Although the Tron 1 could be operated through a wi-fi distant, programmed for semi-automated duties or let unfastened for autonomous missions, it is not clear which modes have been employed for the demo – seemingly a little bit of a blended bag.

The Tron 1 self-balancing bipedal could be a welcome helper when locating survivors in a disaster zone
The Tron 1 self-balancing bipedal might be a welcome helper when finding survivors in a catastrophe zone

LimX Dynamics

The robotic measures 392 x 420 x 845 mm (15.4 x 16.5 x 33.3 in), ideas the scales at round 20 kg (44 lb), and seems to ship in normal and schooling editions in a sturdy flight case. The 48-V actuators boast a peak torque of 80 Nm (59 lb.ft), and the 240-Wh “Ternary Lithium” battery could be hot-swapped for steady operation potential, with every unit estimated good for round 2 hours of use per cost. The onboard pc system options Twelfth-gen Intel i3 brains supported by 16 GB of RAM and 512 GB of storage.

The Tron 1 bipedal is offered now for US$15,000, which incorporates the modular foot ends that supply rubberized pad, pivoted “sole” and wheeled journey modes. If this versatile mannequin does not match your necessities, LimX Dynamics additionally builds humanoids, quadrupeds and embodied AI methods.

Product web page: Tron 1