• WWW.PCGAMESN.COM
    Save 36% on this 240Hz Samsung gaming monitor with Nvidia G-Sync, now a bargain
    Amazons famous deal day might already be over, but that doesnt mean the deals arent still coming. If youre quick, you could take advantage of this Samsung gaming monitor deal on Amazon right now. Shipping with a 240Hz refresh rate, this 25-inch 1080p display is now back at its lowest ever price on Amazon, saving you $100 off the list price.Samsung is one of the biggest manufacturers of gaming monitors, with several of its displays gaining recommendations in our best gaming monitor guide over the years. This particular model already has a very budget-friendly price for the spec on offer, but it's improved even further by that huge 35% discount. Continue reading Save 36% on this 240Hz Samsung gaming monitor with Nvidia G-Sync, now a bargainMORE FROM PCGAMESN: Samsung Odyssey G9 G95SC review, Samsung 9100 Pro review, Samsung T9 Portable SSD review
    0 Комментарии 0 Поделились 15 Просмотры
  • WWW.THEKITCHN.COM
    This Beloved Retailer Quietly Launched a Le Creuset Deal You Wont Find Anywhere Else
    If you arent shopping on QVC for exclusive savings on major kitchen brands, consider starting today. While browsing the site, I found a great deal on Le Creusets 3.75-Quart Enameled Cast Iron Cassadou that you can only find on QVC. Right now, youll save 24% on the cassadou, bringing the price down from $266 to $199.98, and if you use the code WELCOME20, you can score an additional $20 off as a new QVC shopper.READ MORE...
    0 Комментарии 0 Поделились 17 Просмотры
  • 0 Комментарии 0 Поделились 19 Просмотры
  • WWW.THECOUNTRYCOOK.NET
    Spinach Artichoke Dip (with Bacon)
    Upgrade your classic spinach dip and make this creamy, cheesy Spinach Artichoke Dip with bacon for the perfect texture and flavor!PERFECT PARTY DIPSpinach Artichoke Dip is already a classic favorite dip that I love to make and serve (its so good, right?) but adding crispy bacon takes it to a whole new level of deliciousness! This twist on the classic dip is rich, creamy, and packed with even more flavor from the tender spinach and artichokes, to the melty cheese, and crispy bits of smoky bacon. Its the perfect thing to make when youre hosting a party, or need a dish to take to a potluck!FREQUENTLY ASKED QUESTIONS:Whats the best way to serve this dip? Unlike my Cold Spinach Dip, in my opinion, this dip is best served and eaten hot or warm. What to serve to dip with Spinach Artichoke with Bacon Dip? Some of my favorite things to serve with this dip are veggies, crostini, tortilla chips, or crackers (like Club crackers or Ritz crackers) and Triscuits are all great options. Can I make this dip in the Air Fryer instead? Yes, I havent personally tried it though. You can follow the steps 1-5 below in the recipe card (minus preheating the oven, obviously). Then pop it into a baking dish that will fit in your air fryer and cook at 400F degrees for about 20-24 minutes or until the dip is bubbling and heated through. Check on the dip and see if it needs covered while cooking so it doesnt burn. If its getting dark and the middle still isnt hot, you definitely need to over it. Is fresh spinach or frozen spinach better for this spinach dip? In my opinion, for this dip, its always best to use the frozen spinach because it is already nice and soft whereas with fresh they would need to wash it, chop it up and then cook it down until it wilts before its ready to be used. Why is my Artichoke Spinach and Bacon Dip watery? This can happen if you dont drain your thawed spinach well enough. See instructions below on how to properly remove the excess water. How do I handle and drain the spinach correctly? If you leave your spinach too wet and you get a watery dip. Nobody wants that. So, to help keep this dip the best consistency, lets figure out the best way to drain it. First, you have to thaw it correctly. Let the frozen chopped spinach thaw overnight in the fridge, or use the microwave in short bursts (3060 seconds at a time) until fully thawed. Check the bag of frozen spinach for any specific instructions it might have to make this easier. Then its time to squeeze out excess moisture. Place the thawed spinach in a clean kitchen towel, cheesecloth, or a few sturdy paper towels.Gather the edges, twist tightly, and firmly squeeze over the sink or a bowl.Keep squeezing until no more liquid comes outthis step is key to prevent a watery dip. Finish getting it prepped by fluffing it up. After youve wrung the spinach dry it can be kind of lifeless for lack of a better word, so I like to fluff the spinach apart with my fingers or a fork before mixing it into the dip. Whats the best way to store Spinach Artichoke Dip? Store covered in the refrigerator for 3 days, I do not recommend freezing. Whats the best way to reheat leftover dip? Reheat in the oven or microwave. INGREDIENTS NEEDED: (SEE RECIPE CARD BELOW FOR THE FULL RECIPE)bacon You can use freshly cooked bacon or you can grab some of those bacon pieces from the salad aisle of the grocery store and use that for convenience. I prefer freshly cooked bacon for this. I think you get a much better flavor and texture versus microwaveable bacon or the bacon pieces.artichoke hearts if youve never purchased these before, they come in a can and you can usually find them where the other canned vegetables are located in the grocery store.frozen spinach frozen spinach is very wet so it is really important that you let it thaw completely then drain it really, really well so it doesnt add a bunch of water to the dip. You can put it in some paper towels and continue to squeeze it until you are no longer getting water coming out. cream cheese be sure to set it out the soften ahead of time. If you forget to do so early enough, you can use these Tips to Soften Cream Cheese Fast.shredded gouda cheese if this kind of cheese isnt for you, try gruyere, Swiss, mozzarella, or pepper Jack cheese. You could even go with a smoked gouda!sour cream I know a lot of peoples husbands dont like sour cream ha! I hear it ALL the time but we gotta get these men to expand their pallets! And you do not taste this as a tangy separate ingredient when combined with all the other flavors. You could certainly use all mayonnaise but I think youd really be missing out on some great flavor and you dont want it to have a super heavy mayonnaise taste. mayonnaise use your favorite kind. I do not recommend Miracle Whip just because I cant stand the taste of it. Besides, its not a mayonnaise, its a dressing. But if you prefer it, then go for it. Dont let me stop you!freshly grated parmesan cheese I find that fresh grated cheese works better than the green bottled stuff but use what you prefer!garlic I think freshly minced garlic is always going to give you the best flavor instead of the jarred stuff but use what is easiest for you.black pepperHOW TO MAKE SPINACH ARTICHOKE DIP WITH BACON:Preheat the oven to 350F. Spray an 8-inch baking dish with cooking spray and set aside. Add the bacon, artichoke hearts, spinach, cream cheese, half of the gouda, sour cream, mayonnaise, parmesan, garlic, and pepper in a large bowl.Mix well until combined. I like to use an electric hand mixer.Add the mixture to the prepared baking dish and smooth out the top. Top with the remaining Gouda cheese.Bake for 20 minutes, until bubbly.If desired, turn the broiler on high and broil for a couple of minutes until the cheese is golden brown. Keep an eye on it, so it doesnt burn. Serve immediately.CRAVING MORE RECIPES?Spinach Artichoke Pull-Apart BreadCold Spinach DipInstant Pot Artichoke ChickenReuben DipCrack Chicken Dip PrintSpinach Artichoke Dip with BaconA creamy, cheesy dip with artichokes, spinach and bacon. Course Appetizer, Side DishCuisine AmericanPrep Time 15 minutes minutesCook Time 22 minutes minutesTotal Time 37 minutes minutesServings 12Calories 398kcalAuthor Brandie SkibinskiIngredients12 ounce package bacon, cooked until crispy then small diced (see notes below)14 ounce can artichoke hearts, drained and finely chopped10 ounce package frozen spinach, thawed and liquid squeezed out really well8 ounce block cream cheese, softened to room temperature2 cups shredded gouda cheese (divided use) cup sour cream cup mayonnaise cup freshly grated parmesan cheese2 cloves garlic, minced teaspoon black pepperInstructionsPreheat the oven to 350F. Spray an 8-inch baking dish with cooking spray and set aside.Add diced cooked bacon, chopped artichoke hearts, spinach, softened cream cheese, 1 cup shredded gouda cheese, 3/4 cup sour cream, 1/2 cup mayonnaise, 1/3 cup freshly grated parmesan cheese, minced garlic and 1/2 teaspoon black pepper in a large bowl. Mix well until combined. I like to use an electric hand mixer.Add the mixture to the prepared baking dish and smooth out the top. Top with the remaining 1 cup shredded gouda cheese. Bake for 20 minutes, until bubbly. If desired, turn the broiler on high and broil for a a minute or two until the cheese is golden brown. Do not walk away while broiling it can burn very quickly.Serve immediately. NotesPlease refer to my FAQs (Frequently Asked Questions) and ingredient list above for other substitutions or for the answers to the most common questions.You can set aside a little bit of the bacon to use as a topping as well if you prefer.NutritionCalories: 398kcal | Carbohydrates: 6g | Protein: 19g | Fat: 33g | Sodium: 895mg | Fiber: 1g | Sugar: 3g
    0 Комментарии 0 Поделились 18 Просмотры
  • BGR.COM
    Google Search just got powerful new AI tools, but only for paying Gemini users
    AI Mode was one of the highlights of Google I/O 2025, with Google showing off a few exciting AI capabilities coming to Google Search that are entirely optional. As a reminder, AI Mode is a separate tab in Google Search that you can choose to use, unlike the AI Overviews that appear at the top of Search whether you like it or not.AI Mode is also a lot more sophisticated than AI Overviews, and probably more reliable. Its the kind of AI experience in search some users might appreciate. Google showed off advanced Gemini support for AI Mode, a new Deep Search feature, and shopping-centric tools at I/O 2025.Some of these features are starting to roll out to Google Search users in the US, but not all of them are free. It might sound strange to hear that you have to pay for certain Search functionality, but if you want the full AI Mode experience, youll need a premium Gemini subscription.Continue reading...The post Google Search just got powerful new AI tools, but only for paying Gemini users appeared first on BGR.
    0 Комментарии 0 Поделились 15 Просмотры
  • TECHCRUNCH.COM
    UAEs deal to buy Nvidia AI chips reportedly on hold
    The U.S. is reportedly holding up the deal due to concerns that AI chips could be smuggled to China from the UAE.
    0 Комментарии 0 Поделились 15 Просмотры
  • 0 Комментарии 0 Поделились 21 Просмотры
  • BLOG.JETBRAINS.COM
    Breaking to Build: Fuzzing the Kotlin Compiler
    At JetBrains, we care about Kotlin compiler quality. One powerful way to test it? Fuzzing, an approach that feeds programs unexpected, often random, inputs to uncover bugs that traditional tests may miss. It may sound chaotic, but it works, especially for complex software like compilers.In a previous post, our colleagues introduced kotlinx.fuzz, a powerful tool for uncovering bugs in Kotlin programs. As the Kotlin compiler is a Kotlin program, we can use fuzzing to test it, too. In this post we will:Explain what fuzzing is and how it compares to traditional compiler testing techniques.Show how we applied it to the Kotlin compiler in collaboration with TU Delft.Share real bugs we caught and fixed, including in the new K2 compiler.Compiler fuzzing vs. traditional compiler testing techniquesCompilers are essential to software development, as they transform the code we write into instructions that machines can read and then execute. Compilers are used not once, but multiple times throughout the whole software development stack. Without them you cannot compile your operating system kernel, your system library, or your JavaScript engine. Figure 1 points out where compilers are needed, underlining how crucial they are.Figure 1: The importance of compilers in the software development stack.Figure 1 shows that compilers are not just an isolated development tool but are also needed to compile your source code in other places in the stack. This means that when something as important as a compiler contains bugs, it can cause bigger problems, such as:Security holes or vulnerabilitiesIncorrect code generation, subtly inconsistent with the original source codePerformance issues via mistriggered optimizationCompiler crashesSo how do we ensure that compilers are free of errors? The rest of this section will outline some ways to detect bugs, starting with more traditional techniques and then moving on to fuzzing.Uncovering bugs: Traditional techniquesTraditional testing techniques focus on program behavior, namely, whether it produces correct output with valid input while properly handling any errors with invalid input. Table 1 lists some common methods.WhatHowUnit testsCheck individual components (e.g., lexer, parser, code generator)Functional testsVerify that all compiler components behave as expectedGold verification tests (regression tests)Compile a suite of known programs and compare compilation result to the expected output (i.e., gold standard)Integration testsCheck whether compiler runs correctly with other tools or systems (e.g., build systems, linkers, or runtime environments)Cross-platform testsTest compiler on different operating systems or platforms for consistencyTable 1: Traditional testing techniques.These traditional techniques are essential for compiler development, but they may miss subtle bugs that only appear under specific circumstances. This is where advanced techniques like fuzzing can be more successful.Fuzzing, or the art of breaking things to make them betterAt its heart, fuzzing is based on a very simple idea: lets throw a lot of random inputs at a program to see if it breaks. Long before fuzzing was adopted as a named technique, developers have been known to use a form of it. For example, programmers in the 1950s could test programs with a trash-deck technique: they input punch card decks from the trash or random-number punch cards to see when undesirable behavior might occur.While working on the Apple Macintosh in 1983, Steve Capps developed a tool to test MacWrite and MacPaint applications, which at the time were battling low memory conditions. Called The Monkey, it fed random events to an application and caused the computer (in this case, the Macintosh) to behave as if it were operated by an incredibly fast, somewhat angry monkey, banging away at the mouse and keyboard, generating clicks and drags at random positions with wild abandon. To increase testing quality, Capps limited some random events, like menu commands, to a certain percentage, and later Bill Atkinson defined a system flag to disable commands such as quit, so the test could run as long as possible. Although the tool itself became obsolete when later Macintosh iterations freed up more memory, it is an important part of software testing history.The term fuzzing is credited to Professor Barton Miller, who first experienced interference noise on a dial-up link when remotely logging into a Unix system during a storm in 1988. This noise caused the programs to crash, a surprise considering they were common Unix utilities. So that this effect could be explored more in depth, Miller then assigned his students a project to evaluate the robustness of various Unix utility programs, given an unpredictable input stream. One student group went on to publish a 1990 paper with Miller on their findings.Fuzzing fundamentalsIn contrast to carefully designed test cases like those in Table 1 above, fuzzing uses randomly generated inputs that can be unexpected or even deliberately nonsensical. The more diverse the inputs, the more likely the fuzzing tool (i.e., the fuzzer) will be to find unexpected issues.A fuzzer has three essential components: (i) an input data generator, which generates diverse inputs, (ii) the software under test (sometimes abbreviated as SUT), which processes these inputs, and (iii) a reference model, which produces the correct output from the same inputs. Both the software and the reference model produce outputs from the same inputs, and these outputs are compared to one another. Figure 2 depicts the relationship between the three components, the outputs to be compared, and the fuzzing result.Figure 2: Fuzzing basics.The fuzzing result tells us whether or not the software performed correctly with the automatically generated input, as compared to the reference model with that same input. This process is repeated over and over, represented in the above image by multiple windows. This repetition ensures that the inputs used for testing are sufficiently diverse.The idea is to find inputs which cause the software to fail, either by crashing or producing incorrect results. Its not so much about testing the intended functionality. That is, fuzzing investigates the edge cases of what the software can or cannot handle.Compiler fuzzing techniquesSo far, weve covered the basic idea of fuzzing and a brief history of it. In this section, we will get more specific, starting with different ways to fuzz compilers.Two fuzzing types that are more advanced are generative fuzzing, which constructs test programs from scratch based on grammar or specification of the target inputs, and mutation-based fuzzing, which starts with existing, valid, programs and modifies them to create new test inputs. Modifications (mutations) can include inserting, deleting, or replacing input parts. Table 2 lists pros and cons for each.Table 2: A comparison of generative and mutation-based fuzzing.Figure 3 further compares the two techniques to basic fuzzing, underlining their trade-offs on how well they cover different parts of the compiler vs. how deep they can explore it.Figure 3: A comparison of fuzzing types.This section has described fuzzing basics and how fuzzing is an effective method for ensuring a high standard in compiler quality. Going forward, we will focus on fuzzing the Kotlin compiler specifically.Kotlin compiler fuzzingFuzzing is already a widespread practice for many programming languages, from C++ and JS to Java. At JetBrains, our Kotlin team is no stranger to fuzzing the Kotlin compiler. We have collaborated with external research groups to try to break the compiler with differing fuzzing approaches. One of the first collaborations gave us a great example of how to crash kotlinc using 8 characters and the main function. This is shown below.fun main() {(when{}) // Crash in Kotlin 1.3, fixed in 1.5}You can also access the example on Kotlin Playground in Kotlin 1.3 and Kotlin 1.5 versions, i.e., before and after the bug was fixed. The following code blocks contain two more examples of bugs found by fuzzing.fun <break> foo() // Compilation crash on type parameter named `break`fun box(){foo()}This example shows a compiler crash when it encounters a reserved identifier (such as break) in the position of a type parameter.fun box(): String {return if (true) {val a = 1 // No error when we are expected to return a `String`} else {"fail:"}}fun main(args: Array<String>) {println(box())}The above example shows a miscompilation of when the compiler failed to reject an incorrect program: the if expression should return a String, but the true branch does not return anything.Figure 4 displays an incomplete trophy list of found-by-fuzzer bugs, demonstrating fuzzings usefulness. Many of the reported bugs greatly helped us in the K2 compiler stabilization.Figure 4: Incomplete trophy list of found-by-fuzzer bugs.Evolutionary generative fuzzingLast year, we collaborated with TU Delfts SERG team to more rigorously explore the properties of generative fuzzing. In this 2024 paper, we looked at generative fuzzing as an evolutionary algorithm problem and developed a fuzzing approach: Evolutionary Generative Fuzzing. This subsection will describe our approach in more detail.First, lets break down the term evolutionary generative fuzzing. As discussed above, generative fuzzing is a bottom-up approach to creating program inputs, generating them following a specific set of rules. In the present case, the generation rules are based on the language syntax, or the Kotlin grammar, and its semantics, or the Kotlin specification.The terms evolutionary part comes from evolutionary algorithms, an approach that simulates the real evolutionary process. Evolutionary algorithms and a common subtype, genetic algorithms, are optimization techniques that use natural selection and genetic inheritance principles for solving complex problems in programming.First we will talk about the basic concepts of a genetic algorithm, then we will apply these concepts to fuzzing. Essentially, these types of algorithms are meant to mimic the way living organisms evolve over generations to adapt and survive in their environments. Figure 5 depicts this cycle.Figure 5: Genetic algorithm cycle.As a problem-solving technique, a genetic algorithm starts with a specific problem, and for this problem there are multiple candidate solutions. Each solution represents an individual (sometimes called chromosome), which could be, for example, a specific input for a function. A set of individuals represents a population, just like in the natural world. To begin the algorithm, an initial population must be generated, typically a set of random individuals (i.e., candidate solutions). After the initial population is generated, a fitness function evaluates the suitability of each individual within the population, only retaining those individuals most the most fit to move on to the next generation. Then, the set of fit individuals mutate and recombine to form a new population. This new combination of individuals make up the next generations population.Lets apply this to our Kotlin compiler fuzzing approach, represented in the more specialized version of the evolutionary cycle in Figure 6. The lighter-colored and smaller rectangles attached to the larger ones represent the relevant action needed to reach each stage.Figure 6: Genetic algorithm in the evolutionary generative fuzzing approach.To begin, the individuals are Kotlin code snippets created with generative fuzzing. To create the initial population, we sample multiple code snippets, which are then evaluated by a fitness function. And to simulate reproduction, we split each snippet into code blocks, where each block represents an individuals chromosome. These code-block chromosomes then mutate and recombine to create new code snippets, which are sampled to create the next generations population. An important takeaway of the approach is: The evolutionary generative fuzzer is not purely generative: it is also partially mutation-based.As mentioned above, a fitness function plays an integral part in the evolutionary cycle. In this work we hypothesized that structurally diverse code is more likely to exercise different compiler components than more uniform code; by stressing various compiler components, more bugs will be able to be uncovered. To test this, we investigated a baseline and two different ways to calculate the fitness function, with both being attempts to optimize the sampled codes diversity.As a baseline, our approach used what is called random search (RS), as it samples programs without any fitness function. We also used different measures of diversity realized through the fitness functions to apply two novel types of genetic algorithms (GAs): single-objective and many-objective functions for the single-objective diversity GA (SODGA) and many-objective diversity GA (MODGA), respectively. The details of these two genetic algorithms and the baseline are summarized in Table 3.Table 3: Approaches and their fitness-function details.The generated code was then compiled with both the original K1 compiler and the new K2 compiler released with Kotlin 2.0. This allowed us to focus on K1-to-K2 changes and find situations when the new compiler introduces regressions or unexpected behavior changes.Applying any approach listed in Table 3 results in finding interesting bugs, and the different approaches complement each other in terms of bug-detecting categories: random search (RS in Table 3) is effective for detecting more straightforward differential bugs such as out-of-memory errors and resolution ambiguity, whereas the two genetic algorithms (SODGA and MODGA in Table 3) are successful in detecting nuanced problems such as with conflicting overloads, shown in the code example below.fun main() {fun p(): Char { return 'c' }fun p(): Float { return 13.0f }}The intended behavior of the above code block is that the compiler reports a conflicting overloads error, as the two p functions should cause a resolution conflict. The K1 compiler returns the appropriate error, while the K2 compiles the code without any warning. By applying two types of genetic algorithms, we were able to uncover several independent instances of this bug, and we fixed this error in Kotlin 2.0.Overall, our teams complex approach to Kotlin compiler fuzzing has led to the discovery of previously unknown bugs. In combining both generative and mutation-based fuzzing, we have been able to enhance bug discovery.The future of fuzzingFuzzing has already enabled our team to find and fix many compiler bugs, improving the Kotlin compiler. Our research collaboration with TU Delfts SERG team produced a more advanced approach to fuzzing, combining generative and mutation-based methods, and with this foundation we can fine tune fuzzing even more.Fuzzing is an active field of research with many opportunities for advancement, and fuzzing a complex, industrial language like Kotlin presents unique challenges that require careful attention for the advancement of fuzzing, as well as for the results to be useful. These challenges and their possible solutions are listed in Table 4.ChallengePossible solutionMaintaining code validity, with code that is both syntactically correct and semantically meaningful. Often requires fuzzer implementation to include parts tailored to target language.Custom handwritten generators for more complicated parts of KotlinFinding different types of bugs and thoroughly testing all compiler parts to ensure good compiler code coverage.Coverage-guided fuzzing: one component of the fitness function is X if a code snippet reaches so far unexplored compiler partsAfter finding bugs, localizing faults by determining the exact cause and the code responsible. Fuzzers often produce large amounts of test cases, which require manual analysis. MOGDA, as it naturally prefers generating smaller and easier-to-understand programsA good fuzzer needs to be able to avoid duplicates and instead trigger new, unique bugs, instead of the same bugs repeatedly.For now, this problem is solved manually, but there are different possibilities to do this automaticallyTable 4: Fuzzing challenges and possible solutions.Our Kotlin compiler team continues to address these challenges by improving fuzzing capabilities in an incremental fashion. We want to keep on providing you with reliable software, and that includes reducing distractions so that you can focus on having fun while developing in Kotlin!More fuzzing resourcesCurious to explore the research or try out fuzzing on your own Kotlin code? Check out these resources!Our paper in collaboration with TU Delfts SERG teamA post about input reduction in Kotlin compiler fuzzingThe Fuzzing Book, a textbook available online with lots of detailed information and great examplesFuzz Testing: A Beginners Guide, an article with more about different types of fuzzing and how to try it yourselfA Survey of Compiler Testing, another academic article
    0 Комментарии 0 Поделились 67 Просмотры
  • FR.GAMERSLIVE.FR
    NOUVELLE GAMME COULEUR chez Elgato publicit (short)
    NOUVELLE GAMME COULEUR chez Elgato publicit (short)
    0 Комментарии 0 Поделились 18 Просмотры
  • 0 Комментарии 0 Поделились 15 Просмотры