投稿時間:2023-05-05 00:17:20 RSSフィード2023-05-05 00:00 分まとめ(23件)

カテゴリー等 サイト名等 記事タイトル・トレンドワード等 リンクURL 頻出ワード・要約等/検索ボリューム 登録日
AWS AWS Desktop and Application Streaming Blog Creating an AS2TrustedDomains DNS TXT record to redirect the AppStream 2.0 native client to a third-party identity provider https://aws.amazon.com/blogs/desktop-and-application-streaming/creating-an-as2trusteddomains-dns-txt-record-to-redirect-the-appstream-2-0-native-client-to-a-third-party-identity-provider/ Creating an ASTrustedDomains DNS TXT record to redirect the AppStream native client to a third party identity providerThe ASTrustedDomains DNS TXT record can only enable the same domain or subdomains in which the DNS TXT record is created In a scenario where you do not own the domain where your IdP resolves an alternative architecture is required In this blog I outline the process to create an ASTrustedDomains DNS TXT record for … 2023-05-04 14:34:52
AWS AWS Security Blog Delivering on the AWS Digital Sovereignty Pledge: Control without compromise https://aws.amazon.com/blogs/security/delivering-on-the-aws-digital-sovereignty-pledge-control-without-compromise/ Delivering on the AWS Digital Sovereignty Pledge Control without compromiseAt AWS earning and maintaining customer trust is the foundation of our business We understand that protecting customer data is key to achieving this We also know that trust must continue to be earned through transparency and assurances In November we announced the new AWS Digital Sovereignty Pledge our commitment to offering all AWS … 2023-05-04 14:33:23
AWS AWS Security Blog Delivering on the AWS Digital Sovereignty Pledge: Control without compromise https://aws.amazon.com/blogs/security/delivering-on-the-aws-digital-sovereignty-pledge-control-without-compromise/ Delivering on the AWS Digital Sovereignty Pledge Control without compromiseAt AWS earning and maintaining customer trust is the foundation of our business We understand that protecting customer data is key to achieving this We also know that trust must continue to be earned through transparency and assurances In November we announced the new AWS Digital Sovereignty Pledge our commitment to offering all AWS … 2023-05-04 14:33:23
Docker dockerタグが付けられた新着投稿 - Qiita docker-compose で動いている環境に、開発用コンテナを追加して vscode で開発する (devcontainer.json は使わない方針で) https://qiita.com/YoshiK159753/items/22d2f8af175b7f5a71a5 dockercomposeupd 2023-05-04 23:59:47
GCP gcpタグが付けられた新着投稿 - Qiita Google Cloudアップデート (4/13-4/19/2023) https://qiita.com/kenzkenz/items/e407199c4cd2825d3a87 batchapr 2023-05-04 23:34:03
Git Gitタグが付けられた新着投稿 - Qiita 【Git】カレントディレクトリがGitリポジトリか確認する方法 https://qiita.com/P-man_Brown/items/823e4a4809d604204fda gitrevparseisinsidewor 2023-05-04 23:58:23
技術ブログ Developers.IO [レポート] 2023年のクラウドトレンドとPwCのAWSサービス #AWSSummit #PAT114 https://dev.classmethod.jp/articles/aws-summit-berlin-2023-pat114/ awssummitberlin 2023-05-04 14:41:30
海外TECH MakeUseOf How to Upload HD Videos and Photos on Facebook Mobile https://www.makeuseof.com/tag/upload-photos-videos-hd-facebook-mobile-app/ android 2023-05-04 14:05:16
海外TECH MakeUseOf Found a Lost Phone? How to Return It to Its Owner in 7 Easy Steps https://www.makeuseof.com/tag/how-you-can-return-someones-lost-phone-by-thinking-like-a-thief/ phone 2023-05-04 14:01:16
海外TECH DEV Community The universal CSS * selector isn't actually universal https://dev.to/whitep4nth3r/the-universal-css-selector-isnt-actually-universal-1jd0 The universal CSS selector isn x t actually universalI learned this week that for my ENTIRE professional career I have been living with an enormous misconception the universal CSS selector doesn t actually select EVERYTHING Whenever I start a new web project I begin by writing a very small CSS reset which uses the universal selector to apply desired styles to every single element My CSS reset usually looks something like this box sizing border box margin This little block of code sets all elements to use a box sizing value I like best see my talk on the CSS box model for more information and removes all default margins from everything ーjust because I like it that way I haven t encountered any issues with this method and you probably haven t and you probably won t ーbut here s a little nugget of knowledge that might save you hours of debugging in the future The CSS universal selector doesn t apply to pseudo elementsFirst off if you re unfamiliar with pseudo elements read this post What s the difference between and in CSS Salma Alam Naylor・Sep ・ min read css webdev beginners Any properties declared using the CSS selector don t apply to pseudo elements In the case of my CSS reset whilst you don t need to remove margins from pseudo elements because there is no margin set by default if you wanted to do something bolder using the CSS universal selector such as adding a red border to all elements and pseudo elements you ll have to set the value explicitly on the element itself I m not sure why you d want to do this but you could right But a pseudo element isn t a real element obvsOf course You could also argue that a pseudo element isn t an actual element to be selected using the selector since it s not It s a pseudo element it s fake This is obviously technically correct But I felt like writing about it anyway Here s a demo on CodePen for you to mess with 2023-05-04 14:38:54
海外TECH DEV Community The Bubble Figure: Integrating Tensorflow.js With Three.js and Cannon-es to Create Interactive Art https://dev.to/idosius/the-bubble-figure-integrating-tensorflowjs-with-threejs-and-cannon-es-to-create-interactive-art-b8e The Bubble Figure Integrating Tensorflow js With Three js and Cannon es to Create Interactive ArtRecently I had the pleasure to work on one of the funnest projects ever The Bubble Figure The Bubble Figure was created by a team of volunteers at Wunderdog for Grand One annual design awards that take place in Helsinki Our designers created the visuals for the event and wanted to do something extra After exploring various ideas tech and taking the time and resource constraints into mind we decided to go for The Bubble Figure What in the world is The Bubble Figure The Bubble Figure is an interactive experience that runs in the browser When a person is recognized via the webcam it makes them appear as a colorful bubble figure They can then interact with various shapes that fall from above for example by hitting them Simple and fun and all in the visual language of Grand One How does it work The Bubble Figure uses TensorFlow js pose detection to recognize a person Pose keypoints e g left shoulder right wrist are then mapped onto a Three js scene The figure is randomized every time a new person is detected The shapes falling from above are also randomized while using certain geometries and textures To simulate physics cannon es is used a maintained fork of cannon js we found out the hard way cannon js wasn t maintained anymore Shape coordinates are mapped from the physical world to the Three js scene while the figure is mapped from the scene to the physical world How did we do it Funnily none of us had any experience with these libraries We learned everything the best way on the job with lots of trial and error ChatGPT was very useful to understand some concepts from the tech stack and generate basic code But of course this required some fixing and modifying to get it to work We did quite a lot of tinkering from the design perspective to make sure The Bubble Figure looks alright This required adjusting the number of bubbles their sizes offsetting their positions and adding randomness to create various interesting results Can I try it Absolutely You can check out the latest demo on GitHub pages Please use Google Chrome other browsers are not supported Allow the browser to use the camera Then take a few steps back to make sure that your pose is detected and knock some shapes around You can also hit Command K on Mac or Ctrl K on Windows to adjust various parameters Clicking Apply will save the parameters in the browser s local storage Are there any limitations Of course it wouldn t be a software project without limitations For instance cylinders and cones don t always collide with the figure in a smooth manner We improved it a bit by randomizing the figure s bubble z coordinates Still some weird collisions may happen Isn t it part of the fun though We also found it rather difficult to render the bubble figure always in the same size regardless of the person s distance from the camera Maybe given more time we would have succeeded but we had to release the project The frame rate also changes once the pose is detected Nothing really bad even though ideally it should be consistent Also for some reason using TensorFlow pose detection as NPM packages caused various JavaScript errors That s why we had to resort to loading it via script tags Where is the code The Bubble Figure has been released as open source in the Wunderdog GitHub account Since we were short on time we did rapid prototyping and the code got very messy So following the event we spent about a week cleaning it up and also adding TypeScript I hope that you like this little project and find it useful in case you would also like to creative an interactive browser experience with pose detection D graphics and physics 2023-05-04 14:21:24
海外TECH DEV Community The more I hear from the experts, the more worried I get about AI https://dev.to/michaeltharrington/the-more-i-hear-from-the-experts-the-more-worried-i-get-about-ai-60d The more I hear from the experts the more worried I get about AII watched a presentation over YouTube yesterday that got me pretty freaked about the potential issues that may arise with the creation of AI You can check it out here A data point that they continuously return to is of AI researchers believe there s a or greater chance that humans go extinct from our inability to control AIThey site the Expert Survey on Progress in AI as the source for this info specifically answers to the question What probability do you put on human inability to control future advanced AI systems causing human extinction or similarly permanent and severe disempowerment of the human species When AI experts feel that there is a chance of us going extinct from AI it s cause for concern in my book I highly recommend checking out the video They do a great job explaining how the field of AI has changed over the past years and how why it s progress is rapidly accelerating They give specific examples of AI being used nefariously today and talk about the potential harm that may come They also talk about how it can be so difficult to foresee these issues comparing this point time to the advent of social media ーhow we didn t realize that this tech would bring about new problems or amplify existing ones things like information overload addiction doomscrolling influencer culture sexualization of kids Qanon and more These things weren t the intended outcome but they were very real effects that we re still contending with today I really hope that we take more time thinking about the negative effects that AI may cause before deploying these things into the world We know that this is highly impactful tech with a lot of potential for good but if we move too fast and don t think about the potential consequences we may end up with a whole slew of AI driven issues that we re not prepared to contend with 2023-05-04 14:16:14
海外TECH DEV Community Customize your own embeddings database https://dev.to/neuml/customize-your-own-embeddings-database-dlc Customize your own embeddings databasetxtai supports a number of different database and vector index backends including external databases With modern hardware it s amazing how far a single node index can take us Easily into the hundreds of millions and even billions of records txtai provides maximum flexibility in creating your own embeddings database Sensible defaults are used out of the box So unless you seek out this configuration it s not necessary This article will explore the options available when you do want to customize your embeddings database More on embeddings configuration settings can be found here Install dependenciesInstall txtai and all dependencies Install txtaipip install txtai database similarity datasets Load datasetThis example will use the ag news dataset which is a collection of news article headlines We ll use a subset of headlines import timeitfrom datasets import load datasetdef timer embeddings query red sox elapsed timeit timeit lambda embeddings search query number print f elapsed seconds per query dataset load dataset ag news split train text NumPyLet s start with the simplest possible embeddings database This will just be a thin wrapper around vectorizing text with sentence transformers storing the results as a NumPy array and running similarity queries from txtai embeddings import Embeddings Create embeddings instanceembeddings Embeddings path sentence transformers all MiniLM L v backend numpy Index dataembeddings index x text None for x text in enumerate dataset embeddings search red sox embeddings info backend numpy build create T Z python settings numpy system Linux x txtai dimensions offset path sentence transformers all MiniLM L v update T Z The embeddings instance above vectorizes the text and stores the content as a NumPy array Array index positions are returned with similarity scores While the same can easily be done using sentence transformers using the txtai framework makes it easy to swap out different options as seen next SQLite and NumPyThe next combination we ll test is a SQLite database with a NumPy array Create embeddings instanceembeddings Embeddings path sentence transformers all MiniLM L v content sqlite backend numpy Index dataembeddings index x text None for x text in enumerate dataset Now let s run a search embeddings search red sox id text Boston Red Sox Team Report September Sports Network Two of the top teams in the American League tangle in a possible American League Division Series preview tonight as the West leading Oakland Athletics host the wild card leading Boston Red Sox for the first of a three game set at the score id text BASEBALL RED HOT SOX CLIP THE ANGELS WINGS BOSTON RED SOX fans are enjoying their best week of the season While their beloved team swept wild card rivals Anaheim in a three game series to establish a nine game winning streak the hated New York Yankees endured the heaviest loss in their history score id text Boston Red Sox Team Report September Sports Network The red hot Boston Red Sox hope to continue rolling as they continue their three game set with the Anaheim Angels this evening at Fenway Park score embeddings info backend numpy build create T Z python settings numpy system Linux x txtai content sqlite dimensions offset path sentence transformers all MiniLM L v update T Z Same results as before The only difference is the content is now available via the associated SQLite database Let s inspect the ANN object to see how it looks print embeddings ann backend shape print type embeddings ann backend lt class numpy memmap gt As expected it s a NumPy array Let s calculate how long a search query takes to execute timer embeddings seconds per queryNot too bad at all SQLite and PyTorchLet s now try a PyTorch backend Create embeddings instanceembeddings Embeddings path sentence transformers all MiniLM L v content sqlite backend torch Index dataembeddings index x text None for x text in enumerate dataset Let s run a search again embeddings search red sox id text Boston Red Sox Team Report September Sports Network Two of the top teams in the American League tangle in a possible American League Division Series preview tonight as the West leading Oakland Athletics host the wild card leading Boston Red Sox for the first of a three game set at the score id text BASEBALL RED HOT SOX CLIP THE ANGELS WINGS BOSTON RED SOX fans are enjoying their best week of the season While their beloved team swept wild card rivals Anaheim in a three game series to establish a nine game winning streak the hated New York Yankees endured the heaviest loss in their history score id text Boston Red Sox Team Report September Sports Network The red hot Boston Red Sox hope to continue rolling as they continue their three game set with the Anaheim Angels this evening at Fenway Park score embeddings info backend torch build create T Z python settings torch cu system Linux x txtai content sqlite dimensions offset path sentence transformers all MiniLM L v update T Z And once against inspect the ANN object print embeddings ann backend shape print type embeddings ann backend torch Size lt class torch Tensor gt As expected this time the backend is a Torch tensor Next we ll calculate the average search time timer embeddings seconds per queryA bit faster since Torch uses the GPU to compute the similarity matrix SQLite and FaissNow lets run the same code with the standard txtai settings of Faiss SQLite Create embeddings instanceembeddings Embeddings path sentence transformers all MiniLM L v content True Index dataembeddings index x text None for x text in enumerate dataset embeddings search red sox id text Boston Red Sox Team Report September Sports Network Two of the top teams in the American League tangle in a possible American League Division Series preview tonight as the West leading Oakland Athletics host the wild card leading Boston Red Sox for the first of a three game set at the score id text BASEBALL RED HOT SOX CLIP THE ANGELS WINGS BOSTON RED SOX fans are enjoying their best week of the season While their beloved team swept wild card rivals Anaheim in a three game series to establish a nine game winning streak the hated New York Yankees endured the heaviest loss in their history score id text Boston Red Sox Team Report September Sports Network The red hot Boston Red Sox hope to continue rolling as they continue their three game set with the Anaheim Angels this evening at Fenway Park score embeddings info backend faiss build create T Z python settings components IVF Flat system Linux x txtai content true dimensions offset path sentence transformers all MiniLM L v update T Z timer embeddings seconds per queryEverything lines up with the previous examples Note that Faiss is faster given it s a vector index For records the different is negligible but vector index performance increases rapidly for datasets in the million range SQLite and HNSWWhile txtai strives to keep things as simple as possible with many common default settings out of the box customizing the backend options can lead to increased performance The next example will store vectors in a HNSW index and customize the index options Create embeddings instanceembeddings Embeddings path sentence transformers all MiniLM L v content True backend hnsw hnsw m Index dataembeddings index x text None for x text in enumerate dataset embeddings search red sox id text Boston Red Sox Team Report September Sports Network Two of the top teams in the American League tangle in a possible American League Division Series preview tonight as the West leading Oakland Athletics host the wild card leading Boston Red Sox for the first of a three game set at the score id text BASEBALL RED HOT SOX CLIP THE ANGELS WINGS BOSTON RED SOX fans are enjoying their best week of the season While their beloved team swept wild card rivals Anaheim in a three game series to establish a nine game winning streak the hated New York Yankees endured the heaviest loss in their history score id text Boston Red Sox Team Report September Sports Network The red hot Boston Red Sox hope to continue rolling as they continue their three game set with the Anaheim Angels this evening at Fenway Park score embeddings info backend hnsw build create T Z python settings efconstruction m seed system Linux x txtai content true deletes dimensions hnsw m metric ip offset path sentence transformers all MiniLM L v update T Z timer embeddings seconds per queryOnce again everything matches up with the previous examples There is a negligible performance difference vs Faiss Hnswlib powers a number of popular vector databases It s definitely an option worth evaluating Configuration storageConfiguration is passed to an embeddings instance as a dictionary When saving an embeddings instance the default behavior is to save configuration as a pickled object JSON can alternatively be used Create embeddings instanceembeddings Embeddings path sentence transformers all MiniLM L v content True format json Index dataembeddings index x text None for x text in enumerate dataset Save embeddingsembeddings save index cat index config json path sentence transformers all MiniLM L v content true format json dimensions backend faiss offset build create T Z python settings components IVF Flat system Linux x txtai update T Z Looking at the stored configuration it s almost identical to an embeddings info call This is by design JSON configuration is designed to be human readable This is a good option when sharing an embeddings database on the Hugging Face Hub SQLite vs DuckDBThe last thing we ll explore is the database backend SQLite is a row oriented database DuckDB is column oriented This design difference is important to note and a factor to consider when evaluating the expected workload Let s explore Create embeddings instanceembeddings Embeddings path sentence transformers all MiniLM L v content sqlite Index dataembeddings index x text None for x text in enumerate dataset timer embeddings SELECT text FROM txtai where id seconds per querytimer embeddings SELECT count text FROM txtai group by text order by count desc seconds per query Create embeddings instanceembeddings Embeddings path sentence transformers all MiniLM L v content duckdb Index dataembeddings index x text None for x text in enumerate dataset timer embeddings SELECT text FROM txtai where id seconds per querytimer embeddings SELECT count text FROM txtai group by text order by count desc seconds per queryWhile the dataset of rows is small we can start to see the differences SQLite has a much faster single row retrieval time DuckDB does better with an aggregate query This is a product of a row oriented vs column oriented database and a factor to consider when developing a solution Wrapping upThis article explored different combinations of database and vector index backends With modern hardware it s amazing how far a single node index can take us Easily into the hundreds of millions and even billions of records When a hardware bottleneck becomes an issue external vector databases are one option to consider Another is building a distributed txtai embeddings cluster There is power in simplicity Many paid services try to convince us that signing up for an API account is the best place to start In some cases such as teams with very few to no developers this is true But for teams with developers options like txtai should be evaluated 2023-05-04 14:09:12
海外TECH DEV Community Modular building blocks: The case of Amazon https://dev.to/medusajs/modular-building-blocks-the-case-of-amazon-3164 Modular building blocks The case of AmazonAmazon Web Services AWS is a giant in cloud computing It provides a variety of services that facilitate managing and hosting infrastructure on the cloud AWS is used widely by both companies and individuals to build or host any type of computer application This includes but not limited to web servers serverless applications file and object storage and much more AWS have become a go to for both developers and businesses as they re guaranteed a reliable service for all the computing needs Although nowadays there are many clouding hosting services that may provide similar features it wasn t the case before Amazon started building AWS Building AWS was a remarkable foresight from Amazon that understood what businesses and developers needed to continue innovating without limitations This article explores the story of how Amazon built AWS Early Beginning of AWSIn the early s Amazon named Amazon com back then was only focused on the retail industry Although it had a software development team internally that built the Amazon store it wasn t considered a technology company and didn t garner any interest from developers In Tim O Reilly a renowned author and founder of O Reilly Media visited Jeff Bezos to show him a tool he created called Amarank This tool automatically opened Amazon s store every few hours and scanned the ranking of O Reilly Media books and its competitors books on Amazon s ranking for books It did this using screen scraping This tool allowed O Reilly to keep track of the rankings without having to manually check the Amazon store O Reilly then suggested to Bezos that Amazon exposes its data such as products or rankings through APIs This would allow other companies and developers to build powerful tools on top of Amazon “Companies need to think not just what they can get for themselves from new technologies but how they can enable others ーTim O ReillyAfter O Reilly s visit Bezos discussed this issue with the top Amazon executives It was then pointed out that an engineer named Rob Frederick the founder of a mobile commerce startup called Convergence that Amazon acquired was working on a similar project inside Amazon He was creating APIs that would allow mobile devices to access Amazon s store So Bezos decided to add Frederick to an Associates group with the mission to create APIs that allow developers to build on top of Amazon s store These APIs would eventually allow developers to access and perform operations such as publishing products or using payments systems After building these APIs Amazon held its first developer conference making developers an essential asset to Amazon similar to customers of the Amazon store Then the group that was run by Rob Frederick and the Associates group was named “Amazon Web Services Amazon s Struggle with InfrastructureAround the same time Amazon was building the stepping stones of AWS Amazon was facing troubles with their infrastructure As their business was growing in traffic and as they were adding more features into the Amazon store their monolithic architecture built in the mid s was no longer sufficient So Amazon decided to transition their infrastructure to a service oriented architecture This allowed them to rebuild their systems into independent but connected components This transition took years During this transition Amazon teams struggled to access Amazon s resources and infrastructure while building or testing new features Although Amazon was moving into a more flexible architecture its resources were still managed by a single team in the Seattle headquarters This problem delayed the roll out of new features and frustrated both software developers at the company and the top executives including Jeff Bezos It was a recurring and visible problem as teams would often present their new features to the executives but admit they never got the chance to actually test it out Jeff Bezos then got inspired by a book he was reading at the time called Creation by Steve Grand The book gave him the idea to build the essential building blocks of computing that would allow Amazon s developers to freely explore innovate and be creative This wouldn t only solve Amazon s infrastructure problems but similar problems other companies and developers were evidently experiencing as well “Developers are alchemists and our job is to do everything we can to get them to do their alchemy ーJeff BezosThe first steps to building these building blocks was to write down the list of “primitives of computing Those included storage bandwidth payments among other primitives Then Amazon started putting together teams to develop each of these primitives as services Building S and ECThe first two services which are essential services that developers use now are Simple Storage Service or S and Elastic Compute Cloud or EC The team assigned to build S worked closely with Jeff Bezos who was highly interested in the development of these services Bezos had big ideas and expectations of S that the team working on it struggled to keep up with While the team looked over details related to service growth and downtime Bezos insisted that the service needs to be built from the start ready to scale infinitely and with no downtime On the other hand EC was built in isolation by a team of two Chris Pinkham and Chris Brown working remotely from South Africa The idea behind building EC was to allow developers to build and run their application on Amazon s servers regardless of what type of application it was The plan was to build EC on top of an open source tool called Xen which made it possible to run several applications on one physical server The Launch of Amazon Web ServicesS was launched in March It allowed developers and websites to store files such as photos and documents on Amazon s servers Although S is a popular service now at the time it hardly got any traffic and was overlooked by developers and companies A few months later EC was in public beta and available for developers to use Developers rushed to get access to EC and start building their applications using Amazon s servers This ultimately lead to more traffic and usage of S as well These services were highly unanticipated by rival companies such as Google and Microsoft Amazon was the only company dabbling with cloud computing and providing developers with services that allowed them to build with no limitations As these services rose in popularity rival companies started noticing what they were missing out on which lead them to launch their own similar services Microsoft announced Azure in and Google announced Compute Engine in However Amazon was already many steps ahead at that point Other teams at Amazon were already working on and launching other services such as Flexible Payment Services and Amazon CloudSearch The Impact of AWSAWS transformed both Amazon and software development as we know it Inside Amazon teams started relying on AWS and testing it even when services were in early stages This allowed them to find issues in AWS early on and facilitated building and rolling out new feature It solved a huge hurdle that the engineering teams within Amazon were facing Companies and startups also started relying heavily on AWS It removed all restrictions they previously faced with building and creating applications regardless of the sector they worked in AWS pioneered a new era powering innovation and creativity Amazon was finally considered a technology company following their launch of AWS Amazon s revolutionary work with AWS spawned from the need for flexibility within its rigid architecture at the time It limited their innovation and ability to grow as an ecommerce business Amazon realized something essential and arguably ahead of its time monolithic architecture hinders a business s growth and modularity facilitates it Amazon s transition in their architecture and motivation behind building AWS was to provide developers both within the company and globally with the necessary tooling to build without limitations As Bezos indicated at the time trying to guess what a developer would need when building an application was a thing from the past Amazon s forward thinking strategy of empowering developers through APIs and infrastructure services was a game changer for their cloud offering As we look to the future of ecommerce the role of developers in shaping the industry is critical While there is still progress to be made in optimizing developer experience at Medusa we aim to follow in Amazon s footsteps by providing ecommerce developers with the necessary building blocks to build scale and innovate With the right primitives in place we believe that developers can build the Amazons of tomorrow 2023-05-04 14:07:14
海外TECH DEV Community Rust 🦀 CRUD Rest API https://dev.to/francescoxx/rust-crud-rest-api-3n45 Rust CRUD Rest APILet s create a CRUD Rest API in Rust using No specific frameworkSerde to serialize and deserialize JSONPostgres database DockerDocker ComposeIf you prefer a video version All the code is available in the GitHub repository link in the video description IntroHere is a schema of the architecture of the application we are going to create We will create five endpoints for basic CRUD operations CreateRead allRead oneUpdateDeleteWe will use Postgres as our database and Docker and Docker Compose to run the application We will use Postman to test the endpoints and Tableplus to check the database StepsWe will go with a step by step guide so that you can follow along Here are the steps Check the prerequisitesProject creation and dependency installationCode the applicationRun the Postgres database with DockerBuild and run the application with Docker ComposeTest the application with Postman and TablePlus PrerequisitesRust compiler installed version cargo installed version docker installed version optional VS Code installed or any IDE you prefer optional Postman or any API test tool optional Tableplus or any database client Create a new Rust projectTo create a new Rust project we will use the CLI cargo new rust crud apiStep inside the project folder cd rust crud apiAnd open the project with your favorite IDE If you use VS Code you can use the following command code Open the file called Cargo toml and add the following dependencies postgres serde serde json serde derive postgres is the Postgres driver for Rust serde is a library to serialize and deserialize serde json is a library specific for JSON serde derive is a library to derive the Serialize and Deserialize traits macro Your Cargo toml file should look like this package name rust crud api version edition See more keys and their definitions at dependencies postgres serde serde json serde derive Please notice that the Package name could differ based on the name you gave to your project Your project should now look like this We are now ready to code the application ‍Code the applicationWe will go step by step Import the dependencies Create the model a user with Id name and email and add constants Main function database connection and TCP server Utility functions set database get id get user request body Create the routes in a function endpoints Create utility functions Create the controllers For this project we will code everything in a single file of lines of code This is not a best practice but it will help us focus on the Rust code not the project structure All the code is available on GitHub link in the video description ️Import the dependenciesOpen the main rs file delete all the code and add the following imports use postgres Client NoTls use postgres Error as PostgresError use std net TcpListener TcpStream use std io Read Write use std env macro use extern crate serde derive Client is used to connect to the database NoTls is used to connect to the database without TLS PostgresError is the error type returned by the Postgres driver TcpListener and TcpStream to create a TCP server Read and Write are used to read and write from a TCP stream env is used to read the environment variables the macro use attribute is used to import the serde derive macro We will use it to derive our model s Serialize and Deserialize traits Create the modelJust below the imports add the following code Model User struct with id name email derive Serialize Deserialize struct User id Option lt i gt name String email String We will use this model to represent a user in our application id is an integer and is optional The reason is that we don t provide the id when we create or update a new user The database will generate it for us But we still want to return the user with an id when we get them name is a string and it is mandatory We will use it to store the name of the user email is a string and it is mandatory We will use it to store the user s email there is no check if it s a valid email 🪨ConstantsJust below the model add the following constants DATABASE URLconst DB URL amp str env DATABASE URL cosntantsconst OK RESPONSE amp str HTTP OK r nContent Type application json r n r n const NOT FOUND amp str HTTP NOT FOUND r n r n const INTERNAL ERROR amp str HTTP INTERNAL ERROR r n r n DB URL is the URL of the database We will read it from the environment variables In this case we add the header Content Type application json to the response OK RESPONSE NOT FOUND and INTERNAL ERROR are the responses we will send back to the client We will use them to return the status code and the content type Main functionJust below the constants add the following code main functionfn main Set Database if let Err set database println Error setting database return start server and print port let listener TcpListener bind format unwrap println Server listening on port for stream in listener incoming match stream Ok stream gt handle client stream Err e gt println Unable to connect e set database is a function that we will create later It will be used to connect to the database TcpListener bind is used to create a TCP server on port listener incoming is used to get the incoming connections ️Utility functionsNow out of the main function add the three following utility functions db setupfn set database gt Result lt PostgresError gt let mut client Client connect DB URL NoTls client batch execute CREATE TABLE IF NOT EXISTS users id SERIAL PRIMARY KEY name VARCHAR NOT NULL email VARCHAR NOT NULL Ok Get id from request URLfn get id request amp str gt amp str request split nth unwrap or default split whitespace next unwrap or default deserialize user from request body without idfn get user request body request amp str gt Result lt User serde json Error gt serde json from str request split r n r n last unwrap or default set database connects to the database and creates the users table if it doesn t exist get id is used to get the id from the request URL get user request body is used to deserialize the user from the request body without the id for the Create and Update endpoints Handle clientBetween the main function and the utility functions add the following code no worries there will be the final code at the end of the article handle requestsfn handle client mut stream TcpStream let mut buffer let mut request String new match stream read amp mut buffer Ok size gt request push str String from utf lossy amp buffer size as ref let status line content match amp request r if r starts with POST users gt handle post request r r if r starts with GET users gt handle get request r r if r starts with GET users gt handle get all request r r if r starts with PUT users gt handle put request r r if r starts with DELETE users gt handle delete request r gt NOT FOUND to string not found to string stream write all format status line content as bytes unwrap Err e gt eprintln Unable to read stream e We create a buffer and then a string for the incoming requests Using the match statement in Rust we can check the request and call the right function to handle it If we don t have a match we send back a error Last we set the stream to write the response back to the client and handle any error ️ControllersNow let s create the functions that will handle the requests They are five functions one for each endpoint handle post request for the Create endpointhandle get request for the Read endpointhandle get all request for the Read All endpointhandle put request for the Update endpointhandle delete request for the Delete endpointAdd the code below the handle client function handle post requestfn handle post request request amp str gt String String match get user request body amp request Client connect DB URL NoTls Ok user Ok mut client gt client execute INSERT INTO users name email VALUES amp amp user name amp user email unwrap OK RESPONSE to string User created to string gt INTERNAL ERROR to string Internal error to string handle get requestfn handle get request request amp str gt String String match get id amp request parse lt i gt Client connect DB URL NoTls Ok id Ok mut client gt match client query one SELECT FROM users WHERE id amp amp id Ok row gt let user User id row get name row get email row get OK RESPONSE to string serde json to string amp user unwrap gt NOT FOUND to string User not found to string gt INTERNAL ERROR to string Internal error to string handle get all requestfn handle get all request request amp str gt String String match Client connect DB URL NoTls Ok mut client gt let mut users Vec new for row in client query SELECT id name email FROM users amp unwrap users push User id row get name row get email row get OK RESPONSE to string serde json to string amp users unwrap gt INTERNAL ERROR to string Internal error to string handle put requestfn handle put request request amp str gt String String match get id amp request parse lt i gt get user request body amp request Client connect DB URL NoTls Ok id Ok user Ok mut client gt client execute UPDATE users SET name email WHERE id amp amp user name amp user email amp id unwrap OK RESPONSE to string User updated to string gt INTERNAL ERROR to string Internal error to string handle delete requestfn handle delete request request amp str gt String String match get id amp request parse lt i gt Client connect DB URL NoTls Ok id Ok mut client gt let rows affected client execute DELETE FROM users WHERE id amp amp id unwrap if rows affected is user not found if rows affected return NOT FOUND to string User not found to string OK RESPONSE to string User deleted to string gt INTERNAL ERROR to string Internal error to string Some use the get id function to get the id from the request URL The get user request body function is used to get the user from the request body in JSON format and deserialize it into a User struct There is some error handling in case the request is invalid or the database connection fails RecapHere is the complete main rs file use postgres Client NoTls use postgres Error as PostgresError use std net TcpListener TcpStream use std io Read Write use std env macro use extern crate serde derive Model User struct with id name email derive Serialize Deserialize struct User id Option lt i gt name String email String DATABASE URLconst DB URL amp str env DATABASE URL constantsconst OK RESPONSE amp str HTTP OK r nContent Type application json r n r n const NOT FOUND amp str HTTP NOT FOUND r n r n const INTERNAL ERROR amp str HTTP INTERNAL ERROR r n r n main functionfn main Set Database if let Err set database println Error setting database return start server and print port let listener TcpListener bind format unwrap println Server listening on port for stream in listener incoming match stream Ok stream gt handle client stream Err e gt println Unable to connect e handle requestsfn handle client mut stream TcpStream let mut buffer let mut request String new match stream read amp mut buffer Ok size gt request push str String from utf lossy amp buffer size as ref let status line content match amp request r if r starts with POST users gt handle post request r r if r starts with GET users gt handle get request r r if r starts with GET users gt handle get all request r r if r starts with PUT users gt handle put request r r if r starts with DELETE users gt handle delete request r gt NOT FOUND to string not found to string stream write all format status line content as bytes unwrap Err e gt eprintln Unable to read stream e handle post requestfn handle post request request amp str gt String String match get user request body amp request Client connect DB URL NoTls Ok user Ok mut client gt client execute INSERT INTO users name email VALUES amp amp user name amp user email unwrap OK RESPONSE to string User created to string gt INTERNAL ERROR to string Internal error to string handle get requestfn handle get request request amp str gt String String match get id amp request parse lt i gt Client connect DB URL NoTls Ok id Ok mut client gt match client query one SELECT FROM users WHERE id amp amp id Ok row gt let user User id row get name row get email row get OK RESPONSE to string serde json to string amp user unwrap gt NOT FOUND to string User not found to string gt INTERNAL ERROR to string Internal error to string handle get all requestfn handle get all request request amp str gt String String match Client connect DB URL NoTls Ok mut client gt let mut users Vec new for row in client query SELECT id name email FROM users amp unwrap users push User id row get name row get email row get OK RESPONSE to string serde json to string amp users unwrap gt INTERNAL ERROR to string Internal error to string handle put requestfn handle put request request amp str gt String String match get id amp request parse lt i gt get user request body amp request Client connect DB URL NoTls Ok id Ok user Ok mut client gt client execute UPDATE users SET name email WHERE id amp amp user name amp user email amp id unwrap OK RESPONSE to string User updated to string gt INTERNAL ERROR to string Internal error to string handle delete requestfn handle delete request request amp str gt String String match get id amp request parse lt i gt Client connect DB URL NoTls Ok id Ok mut client gt let rows affected client execute DELETE FROM users WHERE id amp amp id unwrap if rows affected is user not found if rows affected return NOT FOUND to string User not found to string OK RESPONSE to string User deleted to string gt INTERNAL ERROR to string Internal error to string db setupfn set database gt Result lt PostgresError gt let mut client Client connect DB URL NoTls client batch execute CREATE TABLE IF NOT EXISTS users id SERIAL PRIMARY KEY name VARCHAR NOT NULL email VARCHAR NOT NULL Ok Get id from request URLfn get id request amp str gt amp str request split nth unwrap or default split whitespace next unwrap or default deserialize user from request body without idfn get user request body request amp str gt Result lt User serde json Error gt serde json from str request split r n r n last unwrap or default We are done with the app code Now it s the turn of Docker DockerWe will build the Rust app directly inside the image We will use an official Rust image as the base image We will also use the official Postgres image as a base image for the database We will create three files dockerignore to ignore files and folders that we don t want to copy in the image filesystemDockerfile to build the Rust imagedocker compose yml to run the Rust and Postgres services containers You can create them using the terminal or your code editor touch dockerignore Dockerfile docker compose yml dockerignoreOpen the dockerignore file and add the following targetThis is to avoid copying the target folder in the image filesystem DockerfileWe will use a multi stage build We will have a build stage to build the Rust appa production stage to run the Rust appOpen the Dockerfile and add the following explanations in comments Build stageFROM rust buster as builderWORKDIR app Accept the build argumentARG DATABASE URL Make sure to use the ARG in ENVENV DATABASE URL DATABASE URL Copy the source codeCOPY Build the applicationRUN cargo build release Production stageFROM debian buster slimWORKDIR usr local binCOPY from builder app target release rust crud api CMD rust crud api Please notice that we are using rust crud api as the executable s name This is the name of the project folder If you have a different name please change it docker compose ymlPopulate the docker compose yml file with the following version services rustapp container name rustapp image francescoxx rustapp build context dockerfile Dockerfile args DATABASE URL postgres postgres postgres db postgres ports depends on db db container name db image postgres ports environment POSTGRES USER postgres POSTGRES PASSWORD postgres POSTGRES DB postgres volumes pgdata var lib postgresql datavolumes pgdata We have two services rustapp and db The rustapp service is built using the Dockerfile we created before The db service uses the official Postgres image We are using the depends on property to ensure the db service is started before the rustapp service Notice that the DATABASE URL build argument is set to postgres postgres postgres db postgres db is the name of the service and the container name of the Postgres container so that it will be resolved to the container IP address We use the arg property to pass the DATABASE URL build argument to the Dockerfile We also use a named volume pg data to persist the database data Now it s time to build the image and run the containers ️Build the image and run the containersWe need just three more steps run the postgres containerbuild the Rust app imagerun the Rust app container Run the Postgres containerFirst run the postgres container docker compose up d dbThis will pull download the image from DockerHub and run it on our machine To see the logs you can typedocker compose logs dbIf you have something like this it means that the database is up and running in the container the last line of the logs should say database system is ready to accept connections ️Build the Rust app imageIt s time to build the Rust app image We will use the docker compose build command This will build the image using the Dockerfile we created before Note we might type docker compose up but by doing that we would skip understanding what s happening In a nutshell when we type docker compose up Docker builds the images if needed and then runs the containers docker compose buildThis takes time because we are building the Rust app inside the image After seconds we should have the image built Run the Rust ContainerNow we can run the Rust container docker compose up rustappYou can check both containers by opening another terminal and typing docker ps aLastly you can check the postgres database by typing docker exec it db psql U postgres dtselect from users Here is a screenshot of the output It s now time to test our application Test the applicationTo test the application we will use Postman You can download it from here Test the db connectionSince we don t have a dedicated endpoint to test the db connection we will make a GET request to http localhost usersThe output should be This is correct as the database is empty Create a new userTo create a new user make a POST request to http localhost users with the following body ️Add the header Content Type application json in the request name aaa email aaa mail Create two more users with the following bodies at the same endpoint making a POST request to http localhost users name bbb email bbb mail name ccc email ccc mail Get all usersTo get all the users make a GET request to http localhost users Get a single user with error handling To get a single user we can specify the id in the URL For example to get the user with id we can make a GET request to http localhost users Notice that if we try to get a user with an id that doesn t exist we get an error Make a GET request to http localhost users And if we try to get a user py using a string instead of an integer we also get an error Make a GET request to http localhost users aaa Update a userWe must pass an id in the URL and a body with the new data to update an existing user For example make a PUT request to http localhost users with the following body name NEW email NEW mail Delete a userFinally to delete a user we need to pass the id in the URL For example make a DELETE request to http localhost users Test with TablePlusYou can also test the application with TablePlus Create a new Postgres connection with the following credentials Host localhostPort User postgresPassword postgresDatabase postgresAnd click the connect button at the bottom right This will open a new window with the database You can check the users table and see that the data is there Done ConclusionWe made it We created a REST API with Rust Serde Postgres and Docker If you prefer a video version All the code is available in the GitHub repository link in the video description That s all If you have any questions drop a comment below Francesco 2023-05-04 14:03:52
海外TECH Engadget The best wireless chargers in 2023 https://www.engadget.com/best-wireless-charger-140036359.html?src=rss The best wireless chargers in A wireless charging stand or pad makes life a little easier You don t have to fumble with a cable at the end of a long day and you re less likely to trip over wires But finding a truly good charger isn t as simple as looking for the model with the best spec sheet We ll let you know what to look for when shopping for a single device charger and recommend some good models that are worth your attention whether you use an ​iPhone or Android device What to look for in a wireless chargerIt s tempting to buy a wireless charging pad optimized for the size and features of the phone you have right now Resist that urge ーthis is an accessory you ll probably have for years and you don t want to replace it every time you buy a new handset Instead think about the phones you re likely to use down the road If you re sure you ll use iPhones for a long time a MagSafe charger will be faster and more convenient If you use Android or think you might switch sides however you ll want a more universal design You ll also want something that accepts a variety of device sizes Certain wireless charging stands don t work well with the iPhone mini or other particularly small phones for instance If you think you may change phone sizes at some point a pad charger is a wiser choice With that said you ll still want to pay attention to any potentially limiting design features such as prominent cradles and lips Also consider wireless chargers with modular components While you ll have to invest exclusively in one company s ecosystem this gives you room to grow as your device needs change You can add a charger for a second phone or smartwatch and some systems even offer modular batteries to supply power on the go Just be sure to look at a multi device charger if there s a very good chance you ll expand your setup in the future Where and how will you use your charger Pontus Wellgraf on UnsplashOdds are that you have a specific use case in mind for your charger You may want it by your bedside for quick access in the morning or on your desk for at a glance notifications You might even keep it in your bag for convenient travel charging If you intend to place your charger on a nightstand you ll usually want a pad With a stand even a dim always on display can prove distracting when you re trying to sleep You may also want a wireless charging pad if your phone will sit on a low table as it might be easier to grab in a rush Look at compact models if space is tight On your desk you may prefer a stand to quickly glance at alerts or make video calls Want something more travel friendly A puck or similarly minimalist design is typically best You may also want a charger with a battery either modular or built in for camping or whenever an outlet isn t nearby Performance matters to a pointAlthough wireless charging is usually slower than its wired equivalent speed is still an important consideration A fast charger can supply enough power for a long night out in the time it takes to change outfits In general a W charger is more than quick enough for most situations and you ll need a MagSafe charger to extract that level of performance from an iPhone With that said even the slower W and W chargers are fast enough for an overnight power up If anything you ll want to worry more about support for cases While many models can deliver power through a reasonably thick case typically mm to mm you ll occasionally run into examples that only work with naked phones There are some proprietary chargers that smash the W barrier if you have the right phone Google s second generation Pixel Stand for example delivers up to W for a Pixel Pro or Pixel Pro Optimized designs like this can make sense if you re loyal to one brand Be sure to get a charger that still works well with other manufacturers phones though as you don t want to replace your accessory or endure sluggish speeds if you switch brands Quality box contents and the little detailsMichael Soledad on UnsplashOnce you ve chosen the form factor and performance levels that meet your needs you ll want to consider the fit and finish You re likely going to use your wireless charger every day so even small differences in quality could make the difference between joy and frustration If your charger doesn t use MagSafe textured surfaces like fabric or rubberized plastic are more likely to keep your phone in place The base should be grippy or weighty enough that the charger won t slide around If you re buying a stand check that it won t tip over or wobble Pay attention to what s included in the box Some models don t include power adapters and may even ask you to reuse your phone s USB charging cable What may seem to be a bargain may prove expensive if you have to buy extras just to use it Also some cables and chargers are better than others A USB C charger is more future proof while braided cables may be less likely to break or tangle You ll also want to think about the minor conveniences Status lights are useful for indicating correct phone placement but an overly bright light can be distracting Ideally the light dims or shuts off after a certain period of time And while we caution against lips and trays that limit compatibility you may still want some barriers to prevent your device falling off its perch on the charging station By now you should know what to look for While it would be impossible for us to test every charger we ve tried numerous models and have some favorites Best overall wireless charging pad Otterbox OtterSpot Wireless Charging SystemThere s no shortage of portable wireless chargers but it s rare that you can find one which is as well suited to your desk as it is your bag The Otterbox OtterSpot system is our top pick precisely because it s so versatile The base unit is stable includes a power adapter and accommodates a wide range of phone sizes But it really shines when you want to leave home You can buy as many as three mAh portable batteries that optionally stack on top of the base to recharge and serve as completely wireless chargers on the go Those batteries can power wired devices through USB C too This isn t the fastest charger given its W output and the base alone is normally expensive at though it s down to as we write this If you want a station you really can use everywhere though the OtterSpot is a top pick that can grow along with your needs Runner up wireless charging pad Belkin BoostCharge Pro Portable Wireless Charger PadIt s easy to find wireless charging pucks that are fast or portable but rarely both ーand certainly not as well considered as Belkin s BoostCharge Pro Portable Wireless Charger Pad Its extremely compact design not only offers W MagSafe charging plus Qi charging when flat but includes a kickstand that lets you watch videos while you power up Add a long ft braided cable and this is an ideal charger whether you re traveling or catching up on TV shows The emphasis on MagSafe may make the BoostCharge less appealing if you re an Android user It s a definite step up from Apple s more affordable but simpler MagSafe Charger however And importantly you have the choice of buying Belkin s accessory with or without a power adapter Best budget wireless charging pad Anker Wireless ChargerIf you just need the basics Anker s Wireless Charger offers significant value from a well known name It tops out at W W for iPhones doesn t include a power adapter and relies on a microUSB cable but it also costs only Even if you have to buy an adapter you ll be hard pressed to find a better deal Best overall wireless charging stand Belkin BoostCharge W Wireless Charging StandThere s fierce competition in the wireless charging stand space and it s easy to get a good W charger if you re willing to pay Belkin however is one of the few that promises truly solid value Its BoostCharge W Wireless Charging Stand costs less than some alternatives while including a power adapter in the box The lip at the bottom will keep your phone stable and dual coils let you charge while watching a video in landscape mode There s no MagSafe or other device specific charging optimizations on this one And like many wireless charging stands this doesn t officially support the iPhone mini and similarly small handsets But there s otherwise little to complain about here ーthis is a no nonsense power solution at a good price Runner up wireless charging stand Spigen ArcField PFThere aren t many great options for wireless chargers that use Samsung s fast power delivery technology particularly if you want a stand Thankfully Spigen s ArcField PF is up to the job It delivers W to all Samsung Galaxy phones that support Super Fast Wireless Charging and it s a well made if unspectacular perch that prevents your device from sliding around The universal form factor works with other phone brands too You ll want to shop carefully Some versions don t include a power adapter and some stores sell for less than the official If you can score a good deal though this is an ideal way to charge your Galaxy device while providing a clear view of the always on display Best budget wireless charging stand Anker Wireless ChargerAnker s strong value in pad chargers also applies to stands The Wireless Charger tops out at W W for iPhones doesn t include a power brick and uses a microUSB cable but it s also You can buy an adapter and still undercut the price of some equally competent alternatives It can charge while your phone is in landscape orientation too You might want to look at competing products if they cost under with an adapter included but the is otherwise difficult to top This article originally appeared on Engadget at 2023-05-04 14:30:05
海外TECH Engadget Apple's 256GB 12.9-inch iPad Pro drops to its lowest price yet https://www.engadget.com/apples-256gb-129-inch-ipad-pro-drops-to-its-lowest-price-yet-141637566.html?src=rss Apple x s GB inch iPad Pro drops to its lowest price yetThe latest iPad Pro is one of the best tablets on the market right now Those looking for a good deal on a inch version with more storage than the base GB model may be tempted by a new sale The GB variant has dropped by to That s the lowest price we ve seen to date for this version It s the same price as a GB iPad Pro so you d effectively be doubling the storage at no extra cost We gave the tablet a score of in our review with the design and build solid battery life and Apple Pencil Hover feature among the aspects that stood out The iPad Pro is Apple s most powerful model to date It boasts the beefy M chipset so it should handle just about any task you can throw at it with ease For one thing it supports Apple s Stage Manager multitasking feature The tablet has a Liquid Retina XDR screen with a Hz refresh rate and a contrast ratio The display offers up to nits of full screen brightness and up to nits for HDR playback There s an ultrawide megapixel front facing camera that s unfortunately positioned on the narrower edge of the screen which might make things a little awkward for those who prefer to put their tablet in a keyboard dock while taking video calls On the rear the iPad Pro has MP wide and MP ultra wide cameras as well as a LiDAR scanner The inch iPad Pro weighs in at pounds which might tire out your arms pretty quickly if you re holding it you could always place it in a case with a stand of course Although this model doesn t have G connectivity it does support WiFi E Follow EngadgetDeals on Twitter and subscribe to the Engadget Deals newsletter for the latest tech deals and buying advice This article originally appeared on Engadget at 2023-05-04 14:16:37
海外TECH CodeProject Latest Articles How to Create a Hotel Room Availability Calendar with C# https://www.codeproject.com/Articles/5360077/How-to-Create-a-Hotel-Room-Availability-Calendar-w problem 2023-05-04 14:31:00
ニュース BBC News - Home Driver guilty of murdering Rebecca Steer in Oswestry hit-and-run https://www.bbc.co.uk/news/uk-england-shropshire-65486447?at_medium=RSS&at_campaign=KARANGA mchugh 2023-05-04 14:51:44
ニュース BBC News - Home Stephen Tompkinson trial: Friend says he heard 'hit of flesh' https://www.bbc.co.uk/news/uk-england-tyne-65481347?at_medium=RSS&at_campaign=KARANGA bodily 2023-05-04 14:54:07
ニュース BBC News - Home Somali mayor filmed lashing clubbers over 'substance use' https://www.bbc.co.uk/news/world-africa-65467929?at_medium=RSS&at_campaign=KARANGA crackdown 2023-05-04 14:03:58
ニュース BBC News - Home Portsmouth bride reunited with dress after car boot sale mix up https://www.bbc.co.uk/news/uk-england-hampshire-65467752?at_medium=RSS&at_campaign=KARANGA dress 2023-05-04 14:30:48
海外TECH reddit Bilibili Gaming vs. Golden Guardians / MSI 2023 Play-In Stage - Group A Qualification Match / Post-Match Discussion https://www.reddit.com/r/leagueoflegends/comments/137nbe1/bilibili_gaming_vs_golden_guardians_msi_2023/ Bilibili Gaming vs Golden Guardians MSI Play In Stage Group A Qualification Match Post Match DiscussionMSI Official page Leaguepedia Liquipedia Eventvods com New to LoL Bilibili Gaming Golden Guardians Bilibili Gaming qualify to the Bracket Stage Golden Guardians drop down to the lower bracket BLG Leaguepedia Liquipedia Website Twitter GG Leaguepedia Liquipedia Website Twitter Facebook YouTube Subreddit MATCH BLG vs GG Winner Bilibili Gaming in m Game Breakdown Runes Bans Bans G K T D B BLG poppy rumble viego olaf thresh k O B I B GG kennen annie lucian blitzcrank nautilus k H M H I BLG vs GG Bin gnar TOP malphite Licorice XUN vi JNG kindred River Yagao ahri MID lissandra Gori Elk aphelios BOT jinx Stixxay ON rakan SUP renataglasc huhi MATCH BLG vs GG Winner Golden Guardians in m Game Breakdown Runes Bans Bans G K T D B BLG poppy rumble viego kindred maokai k H I H M M GG kennen annie lucian fiora renekton k HT B B M B BLG vs GG Bin gnar TOP ksante Licorice XUN vi JNG gragas River Yagao ahri MID yasuo Gori Elk jinx BOT xayah Stixxay ON lulu SUP rakan huhi MATCH BLG vs GG Winner Bilibili Gaming in m Game Breakdown Runes Bans Bans G K T D B BLG rumble yasuo viego ksante ahri k C H H O B O B GG kennen annie lucian gwen lissandra k HT BLG vs GG Bin sion TOP poppy Licorice XUN vi JNG jarvaniv River Yagao syndra MID leblanc Gori Elk xayah BOT jinx Stixxay ON rakan SUP morgana huhi Patch This thread was created by the Post Match Team submitted by u adzr to r leagueoflegends link comments 2023-05-04 14:37:55

コメント

このブログの人気の投稿

投稿時間:2021-06-17 22:08:45 RSSフィード2021-06-17 22:00 分まとめ(2089件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)