5.4 C
New York
Saturday, March 15, 2025
Home Blog Page 3536

Apple helps launch Bay Space Housing Innovation Fund

0



Apple is teaming up with the San Francisco Housing Accelerator Fund, Sobrato Philanthropies, and Vacation spot: House — all consultants in inexpensive housing growth — to launch the brand new Bay Space Housing Innovation Fund. This fund, which can make focused, favorable loans to advance inexpensive housing growth, is a part of Apple’s broader $2.5 billion dedication to deal with housing affordability in communities throughout California.

“We consider everybody deserves a spot to name residence, and we’re proud that Apple’s $2.5 billion initiative is supporting extra inexpensive housing choices throughout the state,” mentioned Kristina Raspe, Apple’s vp of World Actual Property and Amenities. “Growing entry to protected and inexpensive housing is important for thriving communities right here, and we’re excited to assist launch the Bay Space Housing Innovation Fund as a part of our long-term dedication to our residence state.”

With an preliminary $50 million funding, the Bay Space Housing Innovation Fund will assist 4 initiatives within the higher San Francisco Bay Space, creating greater than 400 properties inside the subsequent two years. Utilizing confirmed strategies, the fund is uniquely centered on eradicating boundaries that inexpensive housing builders often encounter to be able to ship high-quality items quicker and for considerably lower than present business averages.

“We can’t successfully tackle the homelessness and affordability crises within the Bay Space if we proceed constructing and funding inexpensive housing in the identical manner,” defined Rebecca Foster, CEO of the San Francisco Housing Accelerator Fund, which can handle the brand new fund. “We should assume outdoors the field to considerably cut back prices and timelines. This fund is designed to showcase what is feasible when now we have clear objectives, a shared dedication to fulfill these targets, and a simplified financing construction. We’re so grateful to Apple for serving to to anchor this fund and bringing their modern pondering to this essential neighborhood work.”

Subsequent week, Mercy Housing will have fun breaking floor on a brand new inexpensive growth in San Francisco’s Mission District, marking the Bay Space Housing Innovation Fund’s first venture to start building. The venture will present 145 items of everlasting supportive housing for seniors experiencing or at imminent danger of experiencing homelessness. The fund’s anticipated second venture is predicted to interrupt floor in Santa Cruz later this 12 months.

Together with this new funding within the Bay Space Housing Innovation Fund, Apple has now allotted over $1.6 billion to supporting inexpensive housing initiatives in California, instantly benefitting greater than 60,000 Californians. With assist from Apple, inexpensive housing builders are constructing or preserving greater than 10,000 items throughout greater than 90 developments statewide — a lot of which have already been accomplished and are presently housing neighborhood members. Apple has additionally helped greater than 35,000 Bay Space residents who had been prone to shedding their properties stay housed, and has assisted greater than 2,500 first-time homebuyers finance their properties.

Along with the three Bay Space Housing Innovation Fund anchor companions, Apple can also be working with Housing Belief Silicon Valley, California Housing Finance Company, United Method of Higher Los Angeles, and builders throughout California to deal with the state’s housing disaster.

1000’s of Oracle NetSuite Websites at Threat of Exposing Buyer Info


Aug 20, 2024Ravie LakshmananEnterprise Safety / Information Breach

1000’s of Oracle NetSuite Websites at Threat of Exposing Buyer Info

Cybersecurity researchers are warning in regards to the discovery of hundreds of externally-facing Oracle NetSuite e-commerce websites which were discovered inclined to leaking delicate buyer info.

“A possible situation in NetSuite’s SuiteCommerce platform might enable attackers to entry delicate information resulting from misconfigured entry controls on customized document sorts (CRTs),” AppOmni’s Aaron Costello mentioned.

It is price emphasizing right here that the problem is just not a safety weak point within the NetSuite product, however slightly a buyer misconfiguration that may result in leakage of confidential information. The data uncovered contains full addresses and cell phone numbers of registered prospects of the e-commerce websites.

Cybersecurity

The assault state of affairs detailed by AppOmni exploits CRTs that make use of table-level entry controls with the “No Permission Required” entry sort, which grants unauthenticated customers entry to information by making use of NetSuite’s document and search APIs.

That mentioned, for this assault to succeed, there are a selection of stipulations, the foremost being want for the attacker to know the title of CRTs in use.

To mitigate the danger, it is really helpful that web site directors tighten entry controls on CRTs, set delicate fields to “None” for public entry, and contemplate briefly taking impacted websites offline to stop information publicity.

“The simplest answer from a safety standpoint could contain altering the Entry Kind of the document sort definition to both ‘Require Customized Report Entries Permission’ or ‘Use Permission Record,'” Costello mentioned.

The disclosure comes as Cymulate detailed a method to manipulate the credential validation course of in Microsoft Entra ID (previously Azure Energetic Listing) and circumvent authentication in hybrid identification infrastructures, permitting attackers to register with excessive privileges contained in the tenant and set up persistence.

The assault, nevertheless, requires an adversary to have admin entry on a server internet hosting a Move-By Authentication (PTA) agent, a module that permits customers to register to each on-premises and cloud-based functions utilizing Entra ID. The difficulty is rooted in Entra ID when syncing a number of on-premises domains to a single Azure tenant.

Cybersecurity

“This situation arises when authentication requests are mishandled by pass-through authentication (PTA) brokers for various on-prem domains, resulting in potential unauthorized entry,” safety researchers Ilan Kalendarov and Elad Beber mentioned.

“This vulnerability successfully turns the PTA agent right into a double agent, permitting attackers to log in as any synced AD consumer with out understanding their precise password; this might probably grant entry to a world admin consumer if such privileges have been assigned.”

Discovered this text attention-grabbing? Comply with us on Twitter and LinkedIn to learn extra unique content material we submit.



Coming To Grips with Unstructured Authorized Information

0


(Ilya Lukichev/Shutterstoc)

The expansion of unstructured knowledge poses actual challenges. Many organizations wrestle to handle unstructured knowledge like textual content, photos, movies, and PDFs because of the sheer dimension of the information and their development price. For the parents on the authorized agency Katten Muchin Rosenman LLP, higher often known as Katten Regulation, rules and safety launched one other layer of concern.

It’s powerful to get one’s thoughts across the sheer magnitude of unstructured knowledge. As a part of its World Datasphere examine a couple of years in the past, the analyst agency IDC predicted that by 2025, the planet will generate over 175 zettabytes of knowledge over a 12-month interval (it has since lowered the estimate to 163 ZB).

Simply storing 163 ZB of uncooked knowledge would take greater than 700 billion 1TB drives, which clearly isn’t going to occur, because the world solely has about 13 ZB of put in storage capability throughout all mediums (HDDs, flash, tape, even telephones), IDC stated. For the file, solely about 7.5 ZB of knowledge is definitely written to a storage medium, based on IDC, which means most knowledge is rarely written down, and storage is definitely overprovisioned.

Katten Regulation is accustomed to massive development charges. The regulation agency, which employes 700 attorneys all over the world, should retailer a whole lot of hundreds of thousands of paperwork from 1000’s of its purchasers’ circumstances going again a long time. All advised, the agency shops about 240 TB of knowledge, and the determine is rising by 20% to 25% yearly, based on Alexander Diaz, the agency’s director of infrastructure and datacenter operations.

Supply: IDC

Till just lately, the regulation agency operated its personal unstructured knowledge archival system, which took knowledge from the first Home windows file methods and moved it to archival storage servers put in within the agency’s knowledge middle co-los.

Nevertheless, Katten Regulation bumped into a number of operational points across the archives that drove it to hunt another, Diaz advised Datanami in a latest interview. The agency introduced in Komprise, a supervisor of unstructured knowledge administration options, to do a proof of idea.

“Through the POC, we recognized that about 70% of the information that we had been storing on our file servers had been stale and hadn’t been accessed in over three years, or the case had been closed,” Diaz stated. “The opposite purpose that I proposed doing a large-scale archiving undertaking was to restrict our publicity if we ever did encounter a ransomware occasion, as a result of now these information couldn’t be impacted.”

As Katten Regulation explored the software program, they discovered different advantages. As an example, many archiving options implement a stub within the manufacturing file system to symbolize the information that’s been archived. If the information must be retrieved, the consumer presents that stub to the archiving answer, which fetches the information. Nevertheless, if one thing occurs to the stub, then it may be very troublesome to regain entry to the archived knowledge, Diaz stated.

“Komprise has a unique strategy,” he stated. “They use a symbolic hyperlink…mainly like a shortcut. So in your Home windows desktop you, have a shortcut that references the trail to the precise file or to this system on the working system. And even when that that shortcut or symbolic hyperlink had been to interrupt or disappear, you continue to can go and discover the unique file and or program.”

Time-based archiving of unstructured knowledge is one other advantage of utilizing the Komprise software program, Diaz stated. With many conventional archive packages, the information are archived primarily based on a set time period. So if the paperwork related to a case haven’t been accessed in three years, for example, it can robotically be archived.

That doesn’t work so nicely within the regulation enterprise, Diaz stated.

“A number of occasions inside authorized, particularly litigation circumstances, they could change into dormant for some time they usually might get picked up,” he stated. “Let’s say we had been representing somebody. There’s a verdict, after which there’s time between that unique case and possibly an enchantment. So simply basing it on time doesn’t all the time work.”

Komprise gave Katten Regulation the aptitude to archive the information related to a case primarily based on when the case is definitely closed, not some arbitrary variety of years when it hasn’t been touched. After the paperwork are archived, if the consumer wants to tug up a read-only copy of the information, customers can try this by merely clicking a shortcut on the desktop, which initiates the information being pulled from the Komprise archive to an area storage equipment, the place the consumer can retrieve it, Diaz stated.

The agency is in the midst of transitioning its major storage platforms from conventional spinning disks to flash storage. Shifting extra of the information to a the Komprise-based archive operating on Microsoft Azure BLOB retailer helps to maintain prices down whereas additionally giving the customers the advantages of quicker major storage, Diaz stated.

(Tatiana Shepeleva/Shutterstock)

“Komprise has very, very constant for us,” he stated. “We began with both closed circumstances or knowledge being not accessed for over three years. About six months in the past, we lowered the brink to 2 years of no entry or the circumstances closed, and we ended up shifting one other 40TB as much as Azure.”

Decreasing file storage for the Home windows file shares will even assist to save lots of the regulation agency cash, significantly because it transitions to a brand new platform later this 12 months. “I received’t have to purchase as a lot storage, so it’ll save us on this future buy,” Diaz stated.

The profit from enhancing the safety of Katten Regulation’s knowledge is more durable to measure. However with ransomware on the uptick as soon as once more this 12 months, it’s clear that it brings actual worth to the regulation agency.

“I can’t emphasize sufficient that it additionally decreased our publicity as a result of any of the information which can be archived would by no means be impacted by any kind of hacker or ransomware occasion,” Diaz stated. “They wouldn’t have entry to these information. They wouldn’t be impacted by any kind of safety occasion.”

Associated Objects:

It’s Nonetheless Early Days for Unstructured Information Administration, Komprise Says

Getting the Higher Hand on the Unstructured Information Downside

Unstructured Information Development Carrying Holes in IT Budgets

Google Ventures with Erik Nordlander


GV, or Google Ventures, is an impartial enterprise capital agency backed by Alphabet.

Erik Nordlander is a Common Companion at GV and invests throughout enterprise software program and frontier expertise, specializing in developer instruments, cloud infrastructure and machine studying. He has backed firms like Cockroach, Warp and Neo4j. Previous to becoming a member of GV in 2010 and opening up the agency’s New York Metropolis workplace, Erik was at Google and led improvement of the corporate’s next-gen show and serving system, and constructed statistical and machine studying fashions for Google’s advert companies.

Erik joins the podcast to speak about his work.

Gregor Vand is a security-focused technologist, and is the founder and CTO of Mailpass. Beforehand, Gregor was a CTO throughout cybersecurity, cyber insurance coverage and common software program engineering firms. He has been based mostly in Asia Pacific for nearly a decade and will be discovered through his profile at vand.hk.

 

​​This episode of Software program Engineering Every day is dropped at you by Authlete.

Are you making an attempt to guard your API with OAuth or struggling to construct an OAuth server?

Implementing OAuth your self will be difficult, and even dangerous. In the meantime, one-stop identification options will be costly, lacking crucial options, or not match into your present structure.

Authlete might help.

Delegate advanced OAuth implementation to APIs designed and developed by the specialists that authored most of the OAuth requirements. With Authlete, you should utilize your present authentication system and the language of your option to rapidly construct your OAuth server. And also you’ll all the time keep up-to-date with the most recent specs.

Concentrate on growing functions and delivery options. Depart the sophisticated OAuth implementation to the specialists.

Authlete is the trusted OAuth service for main monetary, healthcare, and media firms.

Get began at this time with a 90-day prolonged free trial at Authlete.com/sed.

Are you continue to utilizing .env recordsdata to handle your secrets and techniques? Secrets and techniques are important for integrating your infrastructure with databases and SaaS companies, however now there’s a greater approach to handle them.

Doppler is a developer-first platform that simplifies your secrets and techniques administration workflow and helps you progress past .env recordsdata. It means that you can securely retailer and simply entry your secrets and techniques, eliminating the danger of human error and unauthorized entry.

Doppler integrates seamlessly along with your present instruments and dev atmosphere, streamlining your workflow and saving you priceless time. Plus, with role-based entry management and detailed audit logs, you may guarantee your secrets and techniques are all the time underneath management.

Get began with Doppler at this time and expertise the way forward for secrets and techniques administration. Go to doppler.com/sed for a demo and see how Doppler can revolutionize your improvement course of.

Notion isn’t only a platform; it’s a game-changer for collaboration. Whether or not you’re a part of a Fortune 500 firm or a contract designer, Notion brings groups collectively like by no means earlier than. Notion AI turns data into motion.

From summarizing assembly notes and mechanically producing motion objects, to getting solutions to any query in seconds. In case you can suppose it, you can also make it. Notion is a spot the place any staff can write, plan, arrange, and rediscover the enjoyment of play.

Dive into Notion at no cost at this time at notion.com/sed.



Understanding Sorts of Thread Synchronization Errors in Java


Java Programming tutorialsJava Programming tutorials

Multithreading is a strong idea in Java, permitting applications to execute a number of threads concurrently. Nevertheless, this capability locations the onus of managing synchronization, guaranteeing that threads don’t intervene with one another and produce sudden outcomes, on the developer. Thread synchronization errors may be elusive and difficult to detect, making them a standard supply of bugs in multithreaded Java functions. This tutorial describes the assorted sorts of thread synchronization errors and provide solutions for fixing them.

Bounce to:

Race Circumstances

A race situation happens when the conduct of a program is dependent upon the relative timing of occasions, such because the order during which threads are scheduled to run. This could result in unpredictable outcomes and information corruption. Take into account the next instance:

public class RaceConditionExample {

    personal static int counter = 0;


    public static void predominant(String[] args) {

        Runnable incrementTask = () -> {

            for (int i = 0; i < 10000; i++) {

                counter++;

            }

        };

        Thread thread1 = new Thread(incrementTask);

        Thread thread2 = new Thread(incrementTask);

        thread1.begin();

        thread2.begin();

        strive {

            thread1.be a part of();

            thread2.be a part of();

        } catch (InterruptedException e) {

            e.printStackTrace();

        }

        System.out.println("Counter: " + counter);

    }

}

On this instance, two threads are incrementing a shared counter variable. As a result of lack of synchronization, a race situation happens, and the ultimate worth of the counter is unpredictable. To repair this, we are able to use the synchronized key phrase:

public class FixedRaceConditionExample {

    personal static int counter = 0;

    public static synchronized void increment() {

        for (int i = 0; i < 10000; i++) {

            counter++;

        }

    }

    public static void predominant(String[] args) {

        Thread thread1 = new Thread(FixedRaceConditionExample::increment);

        Thread thread2 = new Thread(FixedRaceConditionExample::increment);

        thread1.begin();

        thread2.begin();

        strive {

            thread1.be a part of();

            thread2.be a part of();

        } catch (InterruptedException e) {

            e.printStackTrace();

        }

        System.out.println("Counter: " + counter);

    }

}

Utilizing the synchronized key phrase on the increment technique ensures that just one thread can execute it at a time, thus stopping the race situation.

Detecting race circumstances requires cautious evaluation of your code and understanding the interactions between threads. All the time use synchronization mechanisms, equivalent to synchronized strategies or blocks, to guard shared assets and keep away from race circumstances.

Deadlocks

Deadlocks happen when two or extra threads are blocked without end, every ready for the opposite to launch a lock. This case can convey your software to a standstill. Let’s contemplate a traditional instance of a impasse:

public class DeadlockExample {

    personal static ultimate Object lock1 = new Object();

    personal static ultimate Object lock2 = new Object();

    public static void predominant(String[] args) {

        Thread thread1 = new Thread(() -> {

            synchronized (lock1) {

                System.out.println("Thread 1: Holding lock 1");

                strive {

                    Thread.sleep(100);

                } catch (InterruptedException e) {

                    e.printStackTrace();

                }

                System.out.println("Thread 1: Ready for lock 2");

                synchronized (lock2) {

                    System.out.println("Thread 1: Holding lock 1 and lock 2");

                }

            }

        });

        Thread thread2 = new Thread(() -> {

            synchronized (lock2) {

                System.out.println("Thread 2: Holding lock 2");

                strive {

                    Thread.sleep(100);

                } catch (InterruptedException e) {

                    e.printStackTrace();

                }

                System.out.println("Thread 2: Ready for lock 1");

                synchronized (lock1) {

                    System.out.println("Thread 2: Holding lock 2 and lock 1");

                }

            }

        });

        thread1.begin();

        thread2.begin();

    }

}

On this instance, Thread 1 holds lock1 and waits for lock2, whereas Thread 2 holds lock2 and waits for lock1. This leads to a impasse, as neither thread can proceed.

To keep away from deadlocks, be certain that threads all the time purchase locks in the identical order. If a number of locks are wanted, use a constant order to amass them. Right here’s a modified model of the earlier instance that avoids the impasse:

public class FixedDeadlockExample {

    personal static ultimate Object lock1 = new Object();

    personal static ultimate Object lock2 = new Object();

    public static void predominant(String[] args) {

        Thread thread1 = new Thread(() -> {

            synchronized (lock1) {

                System.out.println("Thread 1: Holding lock 1");

                strive {

                    Thread.sleep(100);

                } catch (InterruptedException e) {

                    e.printStackTrace();

                }

                System.out.println("Thread 1: Ready for lock 2");

                synchronized (lock2) {

                    System.out.println("Thread 1: Holding lock 2");

                }

            }

        });

        Thread thread2 = new Thread(() -> {

            synchronized (lock1) {

                System.out.println("Thread 2: Holding lock 1");

                strive {

                    Thread.sleep(100);

                } catch (InterruptedException e) {

                    e.printStackTrace();

                }

                System.out.println("Thread 2: Ready for lock 2");

                synchronized (lock2) {

                    System.out.println("Thread 2: Holding lock 2");

                }

            }

        });

        thread1.begin();

        thread2.begin();

    }

}

On this mounted model, each threads purchase locks in the identical order: first lock1, then lock2. This eliminates the opportunity of a impasse.

Stopping deadlocks includes cautious design of your locking technique. All the time purchase locks in a constant order to keep away from round dependencies between threads. Use instruments like thread dumps and profilers to determine and resolve impasse points in your Java applications. Additionally, contemplate studying our tutorial on How one can Forestall Thread Deadlocks in Java for much more methods.

Hunger

Hunger happens when a thread is unable to achieve common entry to shared assets and is unable to make progress. This could occur when a thread with a decrease precedence is continually preempted by threads with increased priorities. Take into account the next code instance:

public class StarvationExample {

    personal static ultimate Object lock = new Object();

    public static void predominant(String[] args) {

        Thread highPriorityThread = new Thread(() -> {

            whereas (true) {

                synchronized (lock) {

                    System.out.println("Excessive Precedence Thread is working");

                }

            }

        });

        Thread lowPriorityThread = new Thread(() -> {

            whereas (true) {

                synchronized (lock) {

                    System.out.println("Low Precedence Thread is working");

                }

            }

        });

        highPriorityThread.setPriority(Thread.MAX_PRIORITY);

        lowPriorityThread.setPriority(Thread.MIN_PRIORITY);

        highPriorityThread.begin();

        lowPriorityThread.begin();

    }

}


On this instance, we’ve got a high-priority thread and a low-priority thread each contending for a lock. The high-priority thread dominates, and the low-priority thread experiences hunger.

To mitigate hunger, you should utilize truthful locks or regulate thread priorities. Right here’s an up to date model utilizing a ReentrantLock with the equity flag enabled:

import java.util.concurrent.locks.Lock;

import java.util.concurrent.locks.ReentrantLock;


public class FixedStarvationExample {

    // The true boolean worth allows equity

    personal static ultimate Lock lock = new ReentrantLock(true);

    public static void predominant(String[] args) {

        Thread highPriorityThread = new Thread(() -> {

            whereas (true) {

                lock.lock();

                strive {

                    System.out.println("Excessive Precedence Thread is working");

                } lastly {

                    lock.unlock();

                }

            }

        });

        Thread lowPriorityThread = new Thread(() -> {

            whereas (true) {

                lock.lock();

                strive {

                    System.out.println("Low Precedence Thread is working");

                } lastly {

                    lock.unlock();

                }

            }

        });

        highPriorityThread.setPriority(Thread.MAX_PRIORITY);

        lowPriorityThread.setPriority(Thread.MIN_PRIORITY);

        highPriorityThread.begin();

        lowPriorityThread.begin();

    }

}

The ReentrantLock with equity ensures that the longest-waiting thread will get the lock, lowering the probability of hunger.

Mitigating hunger includes rigorously contemplating thread priorities, utilizing truthful locks, and guaranteeing that every one threads have equitable entry to shared assets. Usually evaluate and regulate your thread priorities primarily based on the necessities of your software.

Take a look at our tutorial on the Finest Threading Practices for Java Functions.

Information Inconsistency

Information inconsistency happens when a number of threads entry shared information with out correct synchronization, resulting in sudden and incorrect outcomes. Take into account the next instance:

public class DataInconsistencyExample {

    personal static int sharedValue = 0;

    public static void predominant(String[] args) {

        Runnable incrementTask = () -> {

            for (int i = 0; i < 1000; i++) {

                sharedValue++;

            }

        };

        Thread thread1 = new Thread(incrementTask);

        Thread thread2 = new Thread(incrementTask);

        thread1.begin();

        thread2.begin();

        strive {

            thread1.be a part of();

            thread2.be a part of();

        } catch (InterruptedException e) {

            e.printStackTrace();

        }

        System.out.println("Shared Worth: " + sharedValue);

    }

}

On this instance, two threads are incrementing a shared worth with out synchronization. Consequently, the ultimate worth of the shared worth is unpredictable and inconsistent.

To repair information inconsistency points, you should utilize the synchronized key phrase or different synchronization mechanisms:

public class FixedDataInconsistencyExample {

    personal static int sharedValue = 0;


    public static synchronized void increment() {

        for (int i = 0; i < 1000; i++) {

            sharedValue++;

        }

    }

    public static void predominant(String[] args) {

        Thread thread1 = new Thread(FixedDataInconsistencyExample::increment);

        Thread thread2 = new Thread(FixedDataInconsistencyExample::increment);

        thread1.begin();

        thread2.begin();

        strive {

            thread1.be a part of();

            thread2.be a part of();

        } catch (InterruptedException e) {

            e.printStackTrace();

        }
        System.out.println("Shared Worth: " + sharedValue);

    }

}

Utilizing the synchronized key phrase on the increment technique ensures that just one thread can execute it at a time, stopping information inconsistency.

To keep away from information inconsistency, all the time synchronize entry to shared information. Use the synchronized key phrase or different synchronization mechanisms to guard essential sections of code. Usually evaluate your code for potential information inconsistency points, particularly in multithreaded environments.

Last Ideas on Detecting and Fixing Thread Synchronization Errors in Java

On this Java tutorial, we explored sensible examples of every sort of thread synchronization error and supplied options to repair them. Thread synchronization errors, equivalent to race circumstances, deadlocks, hunger, and information inconsistency, can introduce delicate and hard-to-find bugs. Nevertheless, by incorporating the methods introduced right here into your Java code, you possibly can improve the steadiness and efficiency of your multithreaded functions.

Learn: Prime On-line Programs for Java