海外TECH |
MakeUseOf |
What Is Variable Refresh Rate in Video Games? |
https://www.makeuseof.com/variable-refresh-rate-video-games/
|
refresh |
2023-05-20 16:01:19 |
海外TECH |
DEV Community |
⭐🤖🔑 9 Ninja Tips to prevent Bot from getting Detected like Grey Ninja 🕵️♂️🔍🛡️ |
https://dev.to/chetanam/9-ninja-tips-to-prevent-bot-from-getting-detected-like-grey-ninja-koc
|
Ninja Tips to prevent Bot from getting Detected like Grey Ninja ️ ️️ IntroductionImagine this You ve writing a Selenium script to automate a website only to be blocked by detection services like Cloudflare and PerimeterX In this Article I will share Brilliant Tips to prevent Cloudflare and PerimeterX from detecting your Bots Within this article I will also introduce you to Bose Framework a framework that I created using my bot development skills to help bot developers in creating unstoppable Bots Think of it like Swiss Army Knife for Bot Development I have concentrated all my Knowledge of Bot Development into a Single Easy to use Framework for the benefit of all Bot Developers Now Let us learn the Tips to avoid bot detection from Cloudflare and PerimeterX like a Real Ninja Tips User Agent and Window Size RotationBot Detection systems analyze the user agent and window size to identify bots For instance making an abnormal number of requests e g page visits using a single user agent increases the chances of being flagged as a bot Also using made up user agents that are not in usage also increases the chances of being flagged as a bot So it is best to use commonly used User Agents like Chrome and Chrome on a random basis In Bose Framework the following code snippet demonstrates how to achieve random rotation of user agents and window sizes with each run from bose import class Task BaseTask browser config BrowserConfig user agent UserAgent RANDOM window size WindowSize RANDOM Additionally if you are utilizing the Bose Framework instead of plain Selenium the user agent will be automatically rotated on each run by default Change your IPsTo evade detection changing your IP address is another crucial aspect Websites often track IP addresses to identify and block suspicious activity If you have been detected by services like Cloudflare or PerimeterX you will need to change your IP address to continue automation There are both free and paid methods to change your IP address Free MethodsEnable and disable airplane modeIn this method you can utilize the connection between your PC and a mobile hotspot to access the internet via a SIM card and then enable and disable airplane mode on your mobile device to get a new IP address This method is quite fast and usually takes seconds to acquire a new IP Here s how you can enable and disable airplane mode to change your IP address Connect your PC to a mobile hotspot On your mobile device turn airplane mode on and offNow Turn the Hotspot On Again On and Off WIFI RouterFor devices connected to a Wi Fi network turning off the router and then turning it back on will change the IP address Although It is slow methods as Wifi Router will take minutes to start Paid MethodPaid services like Oxylab and IPRoyal provide a pool of residential IP addresses However they can be quite expensive with prices averaging around per GB for residential IPs If you opt for this method and are scraping large amounts of data consider disabling the loading of CSS and images to reduce costs In general the free method of using airplane mode works well for most use cases It is not only free but also faster than using a proxy Humane Page FlowTo avoid suspicion replicate organic user behavior by engaging with the website as a human would In general you should follow these recomendation Access pages via search enginesInstead of directly visiting a page navigate to it through a search engine like Google This emulates how users typically discover websites by searching on a search engine The Bose Framework provides a special method called organic get in the Selenium driver which achieves this behavior You can use it as follows driver organic get Navigate using internal linksBrowsers can detect the page you came from by checking the document referrer property When visiting multiple pages within a site utilize the get by current page referrer method from the Bose driver This JavaScript based method simulates internal navigation by clicking a link making it appear more natural driver get by current page referrer Use Random Waits and Slow the BotAdding random wait times and slowing bot between actions helps mimic human interaction patterns and evade bot detection The Bose Framework offers short random sleep and long random sleep methods that pause the bot for a random duration Here is how you can use them driver short random sleep driver long random sleep Use Captcha Solving ServicesServices like Cloudflare may present CAPTCHA challenges To overcome this obstacle you can use CAPTCHA solving services like captcha which solves the CAPTCHA challenges Use Ultrafunkamsterdam s ChromeDriverUltrafunkamsterdam s ChromeDriver developed by Leon from the Netherlands is an exceptional tool that enhances the stealth of Selenium Driver It applies patches making it harder for detection services like Cloudflare and PerimeterX to detect the Bot The Bose Framework seamlessly integrates with Ultrafunkamsterdam s ChromeDriver To use it specify use undetected driver True in the browser config class Task BaseTask browser config BrowserConfig use undetected driver True Do not use a Headless BrowserAvoid using headless browsers as bot detection systems like PerimeterX can detect them by checking for specific APIs For example the following code in JavaScript determines whether the browser is headless In the case of headless Chrome the test will log Headless Chrome navigator permissions query name notifications then function permissionStatus if Notification permission denied amp amp permissionStatus state prompt console log Headless Chrome else console log Not Headless Chrome Maintain Consistency in User Agent Window Size and IP AddressIf you are maintaining sessions by using a profile in Selenium then make sure that the User Agent and Window Size remains same for the Profile Sudden and frequent changes in these parameters like one time you are using Chrome and then Chrome and then Chrome can raise red flags and lead to detection In the Bose Framework if you specify a profile in a task it will automatically retain the same user agent and window size on each run using that profile Here s an example of how to specify a profile in the Boss Task class Task BaseTask The User Agent and Window Size will remain same on each run with profile browser config BrowserConfig profile Also When using a proxy it is equally important to maintain consistency in the IP address location Avoid abrupt changes from one country to another such as switching from Bharat India to Russia and then to Israel Use Bose FrameworkWhenever you are developing any Selenium Script you should definetly use Bose Framework Just like a Thunder Stone evolves Pikachu into Raichu in the Pokémon world the Bose Framework transforms a normal bot developer into a mega bot developer Read the Bose Framework Tutorial at to create powerful bots |
2023-05-20 16:33:14 |
海外TECH |
DEV Community |
Caching with Momento and Golang |
https://dev.to/aws-builders/caching-with-momento-and-golang-5a85
|
Caching with Momento and GolangCaching Simple Useful This architectural topic applies to a serverless app as well as an app with servers Some functions never need caching and some benefit from it right as the first user traffics some data through it I ve used a variety of caching tools over the years but recently dropped Momento s serverless cache in a real time ETL application and I was astonished at how easy it was and how well it is performing This article is a walk through of my experience of Caching with Momento and Golang Solution DiagramImagine this is part of a broader ETL type process Something like what is described in this article Data is streaming into one lambda whose purpose is to route and send traffic to downstream systems The routing configuration is stored in a DynamoDB table Now there is nothing wrong with continuing to have the data pulled from DynamoDB Consistency of performance is pretty much guaranteed if we modeled our schema correctly But let s say that I m looking to shave just a little bit of time off my overall pipeline duration Or perhaps I m wanting to save a few or maybe more dollars on cost from querying DyanmoDB First off before Momento if I wanted to start using a cache in this workflow I better have a real performance problem because caching with ElasticCache or DAX is not cheap Secondly I ve got to understand a great deal about my requirements and then understand how to scale that cache as you have to pick server sizes and node numbers and be able to handle expansion as the cache grows These two reasons alone are why this workflow has never had a cache in front of the queries So we are clear this is an example but it s very close to something that is live in production and has been in production for quite some time So it s not like I started trying out Momento with something that s not used I picked something critical and had a decent amount of traffic For reference yesterday it encountered around invocations so again not crazy but not nothing and it s in a critical path on the pipeline Sample CodeWith everything as usual that I m sharing it s backed by CDK to deploy the infrastructure This is a very simple deployment for highlighting caching with Momento and Golang It contains the following resources A Lambda function coded in GolangDynamoDB tableSecret that holds my Momento API TokenFor starters grab a token from the Momento consoleStore that in Secrets Manageraws secretsmanager create secret name mo cache token description Momento API Token for working with the Router secret string token lt the token gt Make note of the name you set because it ll matter when granting fine grained permissions in IAM for access and decrypting Function CDKThe function CDK code looks like thisexport class CacheFunction extends Construct constructor scope Construct id string super scope id const version Math round new Date getTime toString The DDB Table for lookup with a simple Primary Key let table new dynamodb Table this id billingMode dynamodb BillingMode PAY PER REQUEST removalPolicy RemovalPolicy DESTROY partitionKey name pk type dynamodb AttributeType STRING pointInTimeRecovery false tableName SampleLookupTable Basic Golang function let func new golambda GoFunction this CacheFunction entry path join dirname resources router functionName cache function timeout Duration seconds environment DD FLUSH TO LOG true DD TRACE ENABLED true LOG LEVEL debug CACHE NAME sample cache Momento Cache Name TABLE NAME SampleLookupTable IS LOCAL false Tags of func add version version grant access to read and write table grantReadWriteData func grant access to query decrypt the token secret const s Secret fromSecretNameV this Secrets mo cache token s grantRead func With this function setup I ve set up a basic Lambda that has access to the DynamoDB table and the ability to read and decrypt the token The Momento token must be used for all queries and it s transparent to the user when working with it beyond creating the client DDB RecordNext let s take a look at this simple lookup table For right now I ve just defined one simple record that has a key and the mock URL for the queue I might be forwarding onto This is important as it s the route lookup for the Lambda This is the exact data that I m going to be caching The QueueURL that is One of the nice things about Momento is that it supports many out of box data types For such a young product this is a great thing So far I ve personally used Strings and Sets but there is support for Sorted Sets Dictionaries and Lists Lots of really good things in there For more reading here is the data type documentation Golang Code SetupNow for the code that does the work on caching with Momento using Golang func handler ctx context Context e SampleEvent error log WithFields log Fields event e Debug Printing out the event route determineRoute ctx e if route nil log WithFields log Fields route route Debug Printing out the route return nil This is the handler code that Lambda runs for me If things go well you ll get a printout of the event and then the route as well if things were found While here let s look at the init function as well func init isLocal strconv ParseBool os Getenv IS LOCAL fetch the token from secrets token err GetSecretString define the log formatter log SetFormatter amp log JSONFormatter PrettyPrint isLocal if the token can t be fetched shut down the execution if err nil log WithFields log Fields err err Fatal Fetching token failed now I have to go away build the Momento client cacheClient err NewMomentoClient token if the client can t be built shut down the execution if err nil log WithFields log Fields err err Fatal Creating cache client now I have to go away build up the DDB client router and set the cache table name and determine the log level dbClient NewDynamoDBClient isLocal routeRepository amp RouterDynamoRepository db dbClient tableName os Getenv TABLE NAME cacheName os Getenv CACHE NAME SetLevel os Getenv LOG LEVEL Golang Code Route LookupMoving into the Route lookup here s the func that handles the codetype Route struct Key string dynamodbav pk QueueUrl string dynamodbav QueueUrl func determineRoute ctx context Context e SampleEvent Route this is where I poke into the cache r err ReadRoute ctx e Name if err nil log WithFields log Fields err err Error Error fetching route from cache return nil if found just return the value if r nil log Debugf Route was in Cache return r no cache hit go to DDB route err routeRepository GetRoute ctx e Name if err nil log WithFields log Fields err err Error Error fetching route from DDB return nil if the route is found in DDB set the cache if route nil log Info Setting the Cache err SetRoute ctx route if err nil log WithFields log Fields err err Error Error setting route from cache return route Before reading from the Cache I needed to configure the client This in my opinion is super simple It feels as easy as working with the AWS SDKs Remember the token I put in Secrets Manager This is where I make use of it func NewMomentoClient token string momento CacheClient error Initializes credential provider from token credentialProvider err auth FromString token if err nil return nil err Initializes Momento client err momento NewCacheClient config InRegionLatest credentialProvider time Second if err nil return nil err return client nil Reading from the Cache is also simple I m using a basic string for the value so a simple GetRequest is executed Again feels like working with DyanmoDB in a lot of waysfunc ReadRoute ctx context Context key string Route error build the request request momento GetRequest CacheName cacheName Key momento String key make the query resp err cacheClient Get ctx amp request if err nil return nil err the Get returns an interface for working with if it s a Hit let s return the value if v ok resp responses GetHit ok log WithFields log Fields key key Info Cache hit return amp Route QueueUrl v ValueString nil return nil nil Then on the other side if the cache read is not a hit I want to set the value for the next time I want to read from it func SetRoute ctx context Context route Route error build the momento value v momento String route QueueUrl build the set request request momento SetRequest CacheName cacheName Key momento String route Key Value v execute it err cacheClient Set ctx amp request if err nil log WithFields log Fields key route Key Info Cache set return err Run the CodeSo the Momento cache is built and accessed with Golang in code but what does that look like when running it First up cdk deploy watchcdk watch this just is a nice little nuggetThen create the record I showed above in DynamoDBLastly let s run the Lambda with this event payload name sample correlationId abc Once you ve done all of that you ll get some output that looks like this First run you ll set the cache as a miss the DDB is queried and then set Run it a second time and you ll see the cache hit ImpressionsOK so I ve shown a sample of how things work This repos will deploy and run just fine for you as something to build upon but I d not be doing this tool service without adding some thoughts and opinions as it s just that good Ease of useCan t overstate this enough It s just easy As I mentioned in the beginning I took something that was already in production and a candidate for caching but I didn t want to incur the cost of DAX or ElasticCache It is this simple Setup an account with MomentoCreate a cache via console or CLIDrop it in your code Enjoy PricingI ll let their page speak for itself but honestly this is exactly why it makes so much sense Something that s this easy and has this simple of a pricing model is just awesome It reduces the barrier to overcoming two of the fronts that are generally big road blocks SDK SupportOut of the box you ve got support for Go Java NET Node PHP Ruby and Rust Having a clean and simple SDK makes developing so much easier Being a Golang developer I can say the SDK feels super Go ish Which is a compliment I had no issues reading through the code and looking at some examples to get up and running Data Type SupportI mentioned this above but the variations in data types for something so new is amazing I d have been stoked for just string support but having Sets and List and Dictionaries open up the options for what you can build and how you can store your data Can t understate this as there s so much opportunity to build here PerformanceKind of funny that performance is the last thing I m listing for something that is designed to improve performance But again it just does its thing so there isn t much to say about it I created a wrapper around the client so that I could use my normal Datadog tracing and I ve observed consistent lt ms performance from the cache And if you think that it takes the burden off my DDB queries which are also super performant Momento runs at a fraction of the cost and with a consistent grade of performance You won t be disappointed Wrap UpAdding in Caching with Momento using Golang is a no brainer in my opinion when you ve got a problem that requires caching I ve said it a couple of times in this article but I m blown away by the functionality the lack of bugs and the ease of use on top of great pricing and performance You can tell that this was built by people that understand the problem understand Serverless and understand the value of community The Discord server is super welcoming and helpful and the documentation is coming along nicely to match the features Things are still in the you might need to read some source code to figure something out but I don t see that as a bad thing at all And I m confident that it s only going to get better from here If you ve got this problem you need to take a look at this tool In my opinion caching has never been this simple effortlessly scalable and affordable Well done to this team As always here is the GitHub repository where you can clone the code and deploy it and play around with it I hope you found this helpful I m excited to get back to coding |
2023-05-20 16:10:59 |
海外TECH |
DEV Community |
I wrote a book on CSS Grid - Here's how! 📖💡 |
https://dev.to/thormeier/i-wrote-a-book-on-css-grid-heres-how-1ak8
|
I wrote a book on CSS Grid Here x s how It s been again a while since my last post here on DEV In between posts I ve been rather busy with all kinds of projects By far the largest of these is a book on CSS Grid It ll be released soon and Of course this post is also meant to promote the book a bit otherwise I wouldn t have posted it in showdev but I d like to focus on the process of how this behemoth of a project came to be in the first place and what it took to get it out there I also want to inspire people with this post I want to show you how I worked on this and the necessary steps to complete it A look behind the curtain so to speak As a little disclaimer This story is written from memory but it shows the process nevertheless About the book itselfSo what did I actually write about The title Mastering CSS Grid pretty much explains it CSS Grid I wrote about the basics and advanced CSS Grid rules such as grid templates responsiveness and nested grids The book also contains parts about design best practices grid alternatives and how CSS Grid and Flexbox play together A chapter about different frameworks such as Bootstrap Tailwind Tachyons and many more shows how different popular frameworks understand grids and how they can be used to achieve default use cases such as the header sidebar content footer layout The last chapter is a comprehensive cheat sheet and quick reference for all of CSS Grid and all related topics discussed in the book If you want to order the book as either an ebook or a paperback if you want to keep it on your desk you can find it here How it startedMy writing career started a few years ago on DEV I first wanted to find a bit of a nieche to write about but didn t get the traction I originally expected I then settled on writing about all kinds of things tech mostly what I m good at sometimes learning a lot myself while writing I wanted to have fun writing and boy oh boy do I still have fun doing it And in my opinion that s what it s all about Having fun growing and helping others grow too At some point in time precisely in August I got lucky Like very lucky I received an email of someone at Packt They said that they ve read my articles and found them insightful and impressive and that they were currently looking for authors specifically for a book about CSS Grid I would ve been foolish to deny that offer And so I accepted My personal first lesson Don t try just do it I never had the goal to attract a publisher and start working on a book Of course writing a book was a long term goal of mine but my writing on DEV wasn t meant to lead to that I did what I liked the rest came around eventually Of course a great bit of luck is involved but writing is a skill one can train learning in the open is a great thing to do anyways and once a sufficient skill level and audience is achieved publishers will notice Baby stepsThe first step wasn t even the contract It was an outline The folks at Packt provided me with a template describing the target group a list of chapters what topics each chapter would cover what the reader will learn and what benefits they would gave once they ve read the chapter They had a very specific idea of topics in mind and wanted to make sure that the outline would cover all of these at least somehow The chapter names and rough section titles for each chapter of course were drafts We wanted to make sure to have at least some idea of what this book will look like in the end Afterwards came the organisational part They proposed a contract which we both signed I got introduced to the project manager the editor and many more people of the team These people then introduced me to the tools we would use After that I started writing My second learning Do not underestimate the organisational effort of such a project There is a reason that book publishing companies are successful and exist since basically the invention of the printing press These people are experts They know about steps in the process we non publishers don t even know we don t know Getting soberAnd I immediately started writing on the wrong part of the book I started with the foreword including it in chapter I thought that logically this would be the first part of the book so it should be written first right Wrong The reader should hit the ground running with CSS Grid However the people at Packt were understanding They told me to keep the draft for a later stage of the project So after the first bit of frustration I understood their intention The reader may have already read the foreword and would want to finally learn something After I completed the first draft of chapter I eagerly awaited the feedback expecting a few comments at maximum But then I opened word and saw dozens of comments They were devastating at first Some examples Please elaborate here What do you mean with this Incomplete sentence did you mean Please introduce this figure first then include the figure then explain the figure Don t use words such as above or below as locations may very well be off after editing in the print version I sobered up And I was frustrated The editor added that they first needed to accustom to my style of writing but that it was otherwise a very solid start I can only imagine what a non solid start would ve looked like My third learning Even if there is a lot of critique it only shows the potential I started writing the book with a certain mindset and many assumptions about the process I ve never written a book before and deliberately wanted to dive into it head first Of course I would first run into a wall But the publsiher is there to help dunk on the author After all they are as interested in the quality and success of this book as I am so why should they mean any harm Of course the critique is frustrating and demoralizing but that s the ego talking It should be seen as an opportunity to grow Thinking back to my studies the people proofreading my thesis told me that dozens and dozens of comments are the absolute norm not a sign that the work is of bad quality And that s true A lot of progressAfter sobering up discussing some concepts such as how to deal with figures having a call or two with the team and working further I got into a flow I handed in each chapter individually as a MS Word document Word even though I personally prefer markdown has the advantage of allowing for comments and very clear visual formatting The people at Packt gave me some very sophisticated templates to work with Bold text would not only be bold but also magenta code blocks would be monospaced and have a bright blue as their background colour callouts and editor notes were in bright signal colours Even though these formats irritaed me at first because why would anyone print it this way I quickly noticed that these tools also help me to gain an overview and that they also helped the layout team to understand how they should format the content I had a deadline for each chapter Once I received the chapter I had a deadline to incoporate feedback Once I received the tech reviews I had fixed deadlines to incoporate their feedback Once I worked on the final drafts I had deadlines for incoporate their feedbacks Deadlines help Especially when working on a creative project I encountered writer s block more than once but I had to find ways to counteract it otherwise I would not meet the deadline The feedback cycles got shorter the comments got less and less and at some point we all got into a flow And progress was made My fourth learning Find ways to get into a flow embrace the flow and work on maintaining it You ll get better at writing Dividing the project into smaller sub projects helps a lot and deadlines make you keep yourself from overengineering The final stepsThe tech review was a huge milestone The folks at Packt found two amazing experts to work on the entire book and give their feedback They found details that I would ve never seen simply because they were not nearly as deep in this project as I was The additional pairs of eyes were basically an asynchronous version of duck debugging At this point I want to shout out to Giuseppe Caruso and Michelle Manemann ordered alphabetically for their hard work Without them we wouldn t have reached the quality level we have reached in the end Given incorportaing their feedback was hard I had to restructure many sections replace many figures and add a ton of stuff but in the end it was worth the effort The final drafts of all chapters had a total of a dozen comments in the end we had to replace a few images because the platform refused them something about illegible text on some screenshots but the polishing phase did not take much from my end And with this we were done My fifth learning Do not underestimate the help of people that don t know what you ve been writing about Get in a fresh pair of eyes every now and again to help with details They will find things you would ve never noticed The aftermathThe book is done What more is there Well as it turns out a lot Posts like these for example I asked in my company if people would like a free ebook in exchange for an Amazon review I still want to polish a thing or two in the official GitHub repository mainly add some comments but alas I want to promote the work myself get it out to people There may be a second edition a third one fourth or fifth My sixth learning Just because the bulk of the work is done doesn t mean that you ll never hear back from it I m constantly checking on my social media posts tracking how many impressions they got I check the Amazon best seller ranks to see how it s doing in pre sales I can t wait to hold it in my hands Even though I m finished the best is yet to come In conclusionWriting a book is a lot of work It took me many of my weekends many of my free afternoons and sometimes frustrated me to the point that I just wanted to give up I invested a lot and so did the publisher team at Packt We ve all contributed to this And this is my seventh learning Writing a book is not something a single person does Even though their name is written on the cover It is a group effort And I m forever thankful for having this opportunity It fulfills a live long dream And please excuse the occasional typo wrong comma or whatever you may find I ve done my share of editing for a few weeks DI hope you enjoyed reading this article as much as I enjoyed writing it If so leave a ️ I write tech articles in my free time and like to drink coffee every once in a while If you want to support my efforts you can offer me a coffee or follow me on Twitter You can also support me directly via Paypal |
2023-05-20 16:10:47 |
海外TECH |
CodeProject Latest Articles |
IoT-VR with Unity, Intel Edison |
https://www.codeproject.com/Articles/1114744/IoT-VR-with-Unity-Intel-Edison
|
edison |
2023-05-20 16:23:00 |
ニュース |
BBC News - Home |
Ukraine war: Kyiv rejects Wagner claim over Bakhmut |
https://www.bbc.co.uk/news/world-europe-65657621?at_medium=RSS&at_campaign=KARANGA
|
ukraine |
2023-05-20 16:03:42 |
ニュース |
BBC News - Home |
Wolverhampton Wanderers 1-1 Everton: Yerry Mina's 99th-minute equaliser rescues point for struggling Toffees |
https://www.bbc.co.uk/sport/football/65579919?at_medium=RSS&at_campaign=KARANGA
|
Wolverhampton Wanderers Everton Yerry Mina x s th minute equaliser rescues point for struggling ToffeesEverton s bid to avoid the drop into the Championship will go down to the final day of the season despite Yerry Mina earning the Toffees a last gasp draw at Wolves |
2023-05-20 16:37:49 |
ニュース |
BBC News - Home |
Liverpool 1-1 Aston Villa: Roberto Firmino and Jacob Ramsey score |
https://www.bbc.co.uk/sport/football/65579917?at_medium=RSS&at_campaign=KARANGA
|
Liverpool Aston Villa Roberto Firmino and Jacob Ramsey scoreRoberto Firmino scores a last minute equaliser to salvage a draw against Aston Villa and keep alive Liverpool s faint hopes of a top four Premier League finish |
2023-05-20 16:37:48 |
ニュース |
BBC News - Home |
Bournemouth 0-1 Manchester United: Casemiro overhead kick puts Red Devils on verge of top four |
https://www.bbc.co.uk/sport/football/65579937?at_medium=RSS&at_campaign=KARANGA
|
Bournemouth Manchester United Casemiro overhead kick puts Red Devils on verge of top fourCasemiro s stunning overhead kick edges Manchester United a step closer to next season s Champions League with a narrow victory over Bournemouth at the Vitality Stadium |
2023-05-20 16:40:05 |
海外TECH |
reddit |
Heroic vs GamerLegion / BLAST.tv Paris Major 2023 - Champions Stage Semi-Final / Post-Match Discussion |
https://www.reddit.com/r/GlobalOffensive/comments/13mzogr/heroic_vs_gamerlegion_blasttv_paris_major_2023/
|
Heroic vs GamerLegion BLAST tv Paris Major Champions Stage Semi Final Post Match DiscussionHeroic GamerLegion Ancient Inferno Mirage nbsp nbsp Map picks Heroic MAP GamerLegion Anubis X X Overpass Ancient Inferno X Vertigo Nuke X Mirage nbsp Full Match Stats Team K D ADR KAST Rating Heroic cadiaN stavn jabbi TeSeS sjuush GamerLegion iM isak acoR siuhy Keoz nbsp Individual Map Stats Map Ancient Team CT T Total Heroic T CT GamerLegion nbsp Team K D ADR KAST Rating Heroic stavn jabbi cadiaN TeSeS sjuush GamerLegion isak acoR iM siuhy Keoz Ancient detailed stats and VOD nbsp Map Inferno Team T CT Total Heroic CT T GamerLegion nbsp Team K D ADR KAST Rating Heroic stavn cadiaN jabbi sjuush TeSeS GamerLegion iM siuhy isak acoR Keoz Inferno detailed stats and VOD nbsp Map Mirage Team CT T Total Heroic T CT GamerLegion nbsp Team K D ADR KAST Rating Heroic cadiaN TeSeS jabbi sjuush stavn GamerLegion iM acoR isak siuhy Keoz Mirage detailed stats and VOD nbsp This thread was created by the Post Match Team If you want to share any feedback or have any concerns please message u CSGOMatchThreads submitted by u CSGOMatchThreads to r GlobalOffensive link comments |
2023-05-20 16:38:52 |
コメント
コメントを投稿