投稿時間:2023-08-21 23:19:17 RSSフィード2023-08-21 23:00 分まとめ(22件)

カテゴリー等 サイト名等 記事タイトル・トレンドワード等 リンクURL 頻出ワード・要約等/検索ボリューム 登録日
IT 気になる、記になる… CIO、USB-A/USB-Cマルチポートを搭載した電源タップ「Polaris CUBE WALL」の一般販売を開始 https://taisy0.com/2023/08/21/175589.html polariscubewall 2023-08-21 13:57:08
TECH Techable(テッカブル) 従業員のPC操作をリアルタイムで表示し、生産性を可視化する「CONTROLIO」を丸眞が導入。Excel使用時間18%減少 https://techable.jp/archives/217703 controlio 2023-08-21 13:00:19
python Pythonタグが付けられた新着投稿 - Qiita 【ITパスポートなど】選択式試験の合格率計算【Python】 https://qiita.com/sennai/items/e27e8546145c9eb67cbf 選択 2023-08-21 22:30:39
python Pythonタグが付けられた新着投稿 - Qiita 【Python】クラス・オブジェクト・インスタンス https://qiita.com/ayamo/items/190ba1d01921ec7cef7c names 2023-08-21 22:23:39
Git Gitタグが付けられた新着投稿 - Qiita 【Git】Your branchesとActive branches https://qiita.com/Oriko/items/681e8afc3f819a7007a7 activebranches 2023-08-21 22:37:24
海外TECH MakeUseOf The GPD Win 4 Handheld Is Like a Super-Powered Steam Deck https://www.makeuseof.com/review-gpd-win-4-handheld-console-review/ The GPD Win Handheld Is Like a Super Powered Steam DeckThe hardware eclipses the Steam Deck enabling it natively run even modern AAA titles Sadly the ergonomics are lacking and controls can be fiddly 2023-08-21 13:05:26
海外TECH MakeUseOf Why Digital Car Keys Are Not Safe and Secure https://www.makeuseof.com/digital-car-keys-arent-secure/ digital 2023-08-21 13:00:24
海外TECH MakeUseOf 8 Ways to Fix Slack Notifications Not Working on Windows 11 https://www.makeuseof.com/slack-notifications-not-working-on-windows/ notifications 2023-08-21 13:00:24
海外TECH DEV Community GraphQL - ReactJS Update and Delete https://dev.to/shubhamtiwari909/graphql-reactjs-update-and-delete-19al GraphQL ReactJS Update and DeleteHello Everyone in this part of the GraphQL series we are going to perform update and delete operations for our data using the useMutation hook Firstly install the react icons package by running this command as we are going to use some iconsnpm i react iconsWe have already added the update user query in our Queries ts file now add this delete user query at the bottom of that fileexport const DELETE USER gql mutation DeleteUser delUser DeleteUser deleteUser delUser delUser id Updating Display tsx fileIn Display tsx file that we have created in fetch data blog update the imports as belowimport useQuery useMutation from apollo client import ALL USERS DELETE USER from Queries import memo from react import MdDeleteForever from react icons md import BsFillPenFill from react icons bs import useCounterStore from UsersList Accessing the states const DisplayData gt const setId useCounterStore state gt state setId const setName useCounterStore state gt state setName const setAge useCounterStore state gt state setAge const setRole useCounterStore state gt state setRole const setIsEmployee useCounterStore state gt state setIsEmployee const setIsUpdate useCounterStore state gt state setIsUpdate We are accessing all the fields setter methods so when we click the update icon we are going to set all the field values with the current valuesetUpdate will be used to set the button state either Add or Update Creating delete method with useMutation hook const data loading error useQuery lt users User gt ALL USERS const deleteUser useMutation DELETE USER refetchQueries query ALL USERS if loading return lt p gt Loading lt p gt if error return lt p gt Some Error Occurred lt p gt Here we have deleteUser method which will accept param id to find a user and delete it also we are using refetch option to reflect the changes in real time Updating UI return lt main className px mt gt lt h className text slate text center text lg font bold gt All Users lt h gt lt section className mt gt lt div className flex gap justify center flex wrap mt gt data amp amp data users length lt h className text xl font bold gt No User Found lt h gt data users map user User gt return lt div key user id className flex flex col justify between group border border blue rounded lg w p hover bg slate hover border none hover outline hover outline blue hover outline offset transition ease in out gt lt div gt lt h className text xl font bold group hover text slate gt Name user name lt h gt lt p className group hover text blue gt Role user role lt p gt lt p className group hover text violet gt Age user age lt p gt lt p className user isEmployee toString true group hover text green group hover text red gt Employee user isEmployee toString lt p gt lt div gt lt div className mt flex gap items center gt lt button className text red onClick gt console log user id deleteUser variables delUser id user id gt lt MdDeleteForever size rem color e gt lt button gt lt button className text blue onClick gt setId Number user id setName user name setAge user age setIsEmployee user isEmployee setRole user role setIsUpdate true gt lt BsFillPenFill size rem color af gt lt button gt lt div gt lt div gt lt div gt lt section gt lt main gt export default memo DisplayData All the inputs fields are same as before we just wrapped all the inputs in a div We now have new buttons for delete user so we will pass the id inside the delete method param to delete a user which in our case is user id as we are in a map method to map the usersFor update button we are just setting the states with the current user details and also setting isUpdate state to true to use the update form the update method we have already discussed in previous part of this series Complete codeimport useQuery useMutation from apollo client import ALL USERS DELETE USER from Queries import memo from react import MdDeleteForever from react icons md import BsFillPenFill from react icons bs import useCounterStore from UsersList interface User name string role string id string isEmployee boolean age number const DisplayData gt const setId useCounterStore state gt state setId const setName useCounterStore state gt state setName const setAge useCounterStore state gt state setAge const setRole useCounterStore state gt state setRole const setIsEmployee useCounterStore state gt state setIsEmployee const setIsUpdate useCounterStore state gt state setIsUpdate const data loading error useQuery lt users User gt ALL USERS const deleteUser useMutation DELETE USER refetchQueries query ALL USERS if loading return lt p gt Loading lt p gt if error return lt p gt Some Error Occurred lt p gt return lt main className px mt gt lt h className text slate text center text lg font bold gt All Users lt h gt lt section className mt gt lt div className flex gap justify center flex wrap mt gt data amp amp data users length lt h className text xl font bold gt No User Found lt h gt data users map user User gt return lt div key user id className flex flex col justify between group border border blue rounded lg w p hover bg slate hover border none hover outline hover outline blue hover outline offset transition ease in out gt lt div gt lt h className text xl font bold group hover text slate gt Name user name lt h gt lt p className group hover text blue gt Role user role lt p gt lt p className group hover text violet gt Age user age lt p gt lt p className user isEmployee toString true group hover text green group hover text red gt Employee user isEmployee toString lt p gt lt div gt lt div className mt flex gap items center gt lt button className text red onClick gt console log user id deleteUser variables delUser id user id gt lt MdDeleteForever size rem color e gt lt button gt lt button className text blue onClick gt setId Number user id setName user name setAge user age setIsEmployee user isEmployee setRole user role setIsUpdate true gt lt BsFillPenFill size rem color af gt lt button gt lt div gt lt div gt lt div gt lt section gt lt main gt export default memo DisplayData In the next part of this GraphQL series we are going to create a search component for searching a user using useMutation hook THANK YOU FOR CHECKING THIS POSTYou can contact me on Instagram LinkedIn Email shubhmtiwri gmail com You can help me with some donation at the link below Thank you gt lt Also check these posts as well 2023-08-21 13:54:22
海外TECH DEV Community GraphQL - ReactJS Add Data https://dev.to/shubhamtiwari909/graphql-reactjs-add-data-49d0 GraphQL ReactJS Add DataHello Everyone in this part of the GraphQL series we are going to fetch data using the Apollo Client package Inside the Queries ts file which we had created in previosu part add this code at the bottom export const CREATE USER gql mutation CreateUser newUser CreateUser createUser newUser newUser role name isEmployee age export const UPDATE USER gql mutation UpdateUser updatedUser UpdateUser updateUser updatedUser updatedUser id name role age isEmployee So we have created a query for Adding a user with role name isEmployee and age fields and same for Updating a user Importsimport useMutation from apollo client import CREATE USER UPDATE USER ALL USERS from Queries import useCounterStore from UsersList We have imported useMutation hook to attach the method with onClick and onSubmit event handlersCREATE USER UPDATE USER and ALL USER are our queriesuseCounterStore from our UserList component to access states and their setter functions Accessing the states and setter functions const CreateUser gt const id useCounterStore state gt state id const name useCounterStore state gt state name const setName useCounterStore state gt state setName const age useCounterStore state gt state age const setAge useCounterStore state gt state setAge const role useCounterStore state gt state role const setRole useCounterStore state gt state setRole const isEmployee useCounterStore state gt state isEmployee const setIsEmployee useCounterStore state gt state setIsEmployee const isUpdate useCounterStore state gt state isUpdate const setIsUpdate useCounterStore state gt state setIsUpdate Input fields handler methods const handleNameChange event React ChangeEvent lt HTMLInputElement gt gt setName event target value const handleAgeChange event React ChangeEvent lt HTMLInputElement gt gt setAge Number event target value const handleOptionChange event React ChangeEvent lt HTMLInputElement gt void gt setIsEmployee event target value true const handleRoleChange event React ChangeEvent lt HTMLSelectElement gt gt setRole event target value Creating handler method for each input Creating methods for add and update user const createUser useMutation CREATE USER refetchQueries query ALL USERS const updateUser useMutation UPDATE USER refetchQueries query ALL USERS createUser and updateUser are our methods which we can attach to our event listeners inside useMutation we have params first one is the query itself second one is a refetch method so whenever we add or update a user ALL USER query will run along with it and display the latest data in real time Form inputs return lt form className flex flex wrap items center justify center gap py px bg gradient to r from slate to black gt lt div className flex gap justify between w full md w fit items center gt lt label className font semibold text white gt Name lt label gt lt input className border border blue px py w rounded xl type text value name onChange handleNameChange gt lt div gt lt div className flex gap justify between w full md w fit items center gt lt label className font semibold text white gt Age lt label gt lt input className border border blue px py w rounded xl type number value age onChange handleAgeChange gt lt div gt lt div className flex gap justify between w full md w fit items center gt lt label className font semibold text white gt Role lt label gt lt select value role onChange handleRoleChange className border border blue px py w rounded xl gt lt option gt WebDeveloper lt option gt lt option gt Tester lt option gt lt option gt SoftwareEngineer lt option gt lt select gt lt div gt lt div className flex gap justify between w full md w fit items center gt lt p className font semibold text white gt Employee lt p gt lt label className text white gt lt input type radio value true checked isEmployee true onChange handleOptionChange gt True lt label gt lt label className text white gt lt input type radio value false checked isEmployee false onChange handleOptionChange gt False lt label gt lt div gt We have created input fiels for name and age select field for role and radio inputs for employee status Button condition for Add or Update lt div className flex justify center w full md w fit ml md ml gt isUpdate lt gt lt button className px py rounded lg bg blue text white onClick e gt e preventDefault if name role alert Fill all the details else updateUser variables updatedUser id name age role isEmployee then gt setName setAge setRole setIsEmployee false setIsUpdate false gt Update lt button gt lt button className px py rounded lg bg red text white ml onClick gt setIsUpdate false setName setAge setRole setIsEmployee false gt Cancel lt button gt lt gt lt button className px py rounded lg bg blue text white onClick e gt e preventDefault if name role alert Fill all the details else createUser variables newUser name age role isEmployee then gt setName setAge setRole setIsEmployee false gt Add lt button gt lt div gt We are checking for a isUpdate state if it is true show update button with updateUser method and if it is false show add button with createUser method Inside both the methods for create or update user we have variable object and inside it we have the object with name same as the query param name which is newUser for createUser and updateUser for updateUser We are going to control this state from Display Component which we will discuss in next part of this series Complete codeimport useMutation from apollo client import CREATE USER UPDATE USER ALL USERS from Queries import useCounterStore from UsersList const CreateUser gt const id useCounterStore state gt state id const name useCounterStore state gt state name const setName useCounterStore state gt state setName const age useCounterStore state gt state age const setAge useCounterStore state gt state setAge const role useCounterStore state gt state role const setRole useCounterStore state gt state setRole const isEmployee useCounterStore state gt state isEmployee const setIsEmployee useCounterStore state gt state setIsEmployee const isUpdate useCounterStore state gt state isUpdate const setIsUpdate useCounterStore state gt state setIsUpdate const handleNameChange event React ChangeEvent lt HTMLInputElement gt gt setName event target value const handleAgeChange event React ChangeEvent lt HTMLInputElement gt gt setAge Number event target value const handleOptionChange event React ChangeEvent lt HTMLInputElement gt void gt setIsEmployee event target value true const handleRoleChange event React ChangeEvent lt HTMLSelectElement gt gt setRole event target value const createUser useMutation CREATE USER refetchQueries query ALL USERS const updateUser useMutation UPDATE USER refetchQueries query ALL USERS return lt form className flex flex wrap items center justify center gap py px bg gradient to r from slate to black gt lt div className flex gap justify between w full md w fit items center gt lt label className font semibold text white gt Name lt label gt lt input className border border blue px py w rounded xl type text value name onChange handleNameChange gt lt div gt lt div className flex gap justify between w full md w fit items center gt lt label className font semibold text white gt Age lt label gt lt input className border border blue px py w rounded xl type number value age onChange handleAgeChange gt lt div gt lt div className flex gap justify between w full md w fit items center gt lt label className font semibold text white gt Role lt label gt lt select value role onChange handleRoleChange className border border blue px py w rounded xl gt lt option gt WebDeveloper lt option gt lt option gt Tester lt option gt lt option gt SoftwareEngineer lt option gt lt select gt lt div gt lt div className flex gap justify between w full md w fit items center gt lt p className font semibold text white gt Employee lt p gt lt label className text white gt lt input type radio value true checked isEmployee true onChange handleOptionChange gt True lt label gt lt label className text white gt lt input type radio value false checked isEmployee false onChange handleOptionChange gt False lt label gt lt div gt lt div className flex justify center w full md w fit ml md ml gt isUpdate lt gt lt button className px py rounded lg bg blue text white onClick e gt e preventDefault if name role alert Fill all the details else updateUser variables updatedUser id name age role isEmployee then gt setName setAge setRole setIsEmployee false setIsUpdate false gt Update lt button gt lt button className px py rounded lg bg red text white ml onClick gt setIsUpdate false setName setAge setRole setIsEmployee false gt Cancel lt button gt lt gt lt button className px py rounded lg bg blue text white onClick e gt e preventDefault if name role alert Fill all the details else createUser variables newUser name age role isEmployee then gt setName setAge setRole setIsEmployee false gt Add lt button gt lt div gt lt form gt export default CreateUser In the next part of this GraphQL series we will cover the update and delete feature for our data using useMutation hook THANK YOU FOR CHECKING THIS POSTYou can contact me on Instagram LinkedIn Email shubhmtiwri gmail com You can help me with some donation at the link below Thank you gt lt Also check these posts as well 2023-08-21 13:39:28
海外TECH DEV Community DOM traversal in JavaScript https://dev.to/accreditly/dom-traversal-in-javascript-3b00 DOM traversal in JavaScript IntroductionThe Document Object Model DOM represents the structure of an HTML document Navigating or traversing this structure is a fundamental aspect of web development enabling developers to select modify delete or add content on a webpage This comprehensive guide delves deep into the art of DOM traversal using JavaScript equipping you with a robust toolkit for handling various traversal scenarios We ve done a more comprehensive version of this article over on Accreditly s website A guide to DOM traversal in JavaScript An remember if you re interested in showcasing your JavaScript skills then be sure to check out our JavaScript Fundamentals certification Basic DOM SelectorsBefore we jump into traversal let s review some fundamental DOM selectors getElementById Returns a reference to the first element with the specified ID const header document getElementById header getElementsByClassName Returns a live HTMLCollection of elements with the given class name const buttons document getElementsByClassName btn getElementsByTagName Returns a live HTMLCollection of elements with the given tag name const paragraphs document getElementsByTagName p querySelector Returns the first element that matches a specified CSS selector const mainImage document querySelector main image querySelectorAll Returns a static NodeList representing elements that match a specified CSS selector const listItems document querySelectorAll ul li Parent Child and Sibling RelationshipsAt the core of DOM traversal are the relationships between nodes Parent Nodes parentNode Returns the parent node of a specified element const parentOfButton document querySelector btn parentNode Child Nodes firstChild amp lastChild Return the first and last child of a node respectively const firstChildOfDiv document querySelector div firstChild const lastChildOfDiv document querySelector div lastChild children Returns an HTMLCollection of an element s child elements excludes text and comment nodes const divChildren document querySelector div children firstElementChild amp lastElementChild Similar to firstChild and lastChild but strictly return element nodes const firstElementChildOfDiv document querySelector div firstElementChild Sibling Nodes nextSibling amp previousSibling Return the next and previous sibling of an element respectively const nextToButton document querySelector btn nextSibling const prevToButton document querySelector btn previousSibling nextElementSibling amp previousElementSibling Similar to nextSibling and previousSibling but strictly for element nodes const nextElementToButton document querySelector btn nextElementSibling Traversal Methods Node Iteration childNodes Returns a NodeList of child nodes const listNodes document querySelector ul childNodes Filtering ElementsUtilize Array prototype filter to filter nodes based on conditions const listItems document querySelector ul children const redItems listItems filter item gt item style color red DOM Traversal with EventsCombine event listeners with traversal methods to create interactive elements document querySelector btn addEventListener click function e const nextElement e target nextElementSibling if nextElement nextElement style display none Advanced Traversal Techniques Recursive TraversalTraverse the entire DOM tree recursively This method is useful when the depth is unknown function traverseDOM node console log node const children node children for let child of children traverseDOM child traverseDOM document body Climbing Up the DOMIn some cases you may need to find a parent element with a specific selector function findAncestor el selector while el el parentElement amp amp el matches selector return el const listItem document querySelector li const containingDiv findAncestor listItem div Mastering DOM traversal is paramount for any full stack or frontend developer JavaScript provides a plethora of methods and properties to navigate the intricate relationships of the DOM 2023-08-21 13:39:03
海外TECH DEV Community Meme Monday https://dev.to/ben/meme-monday-4d8o Meme MondayMeme Monday Today s cover image comes from last week s thread DEV is an inclusive space Humor in poor taste will be downvoted by mods 2023-08-21 13:20:21
海外TECH DEV Community Securing Microservices with AWS Cognito https://dev.to/aws-builders/securing-microservices-with-aws-cognito-nd7 Securing Microservices with AWS CognitoNote This content was originally published at the Simple AWS newsletter Understand the Why behind AWS Solutions Subscribe for free engineers and tech experts already have Use case Securing Access to Microservices ScenarioWe have an online learning platform that has been split into three microservices Course Catalog Content Delivery and Progress Tracking just like in the previous issue Microservices Design The Course Catalog microservice is responsible for maintaining the list of available courses and providing course details to users To ensure that only authenticated users can browse the catalog we need to implement a secure access mechanism for this microservice We ll dive a bit into frontend code here and I ll assume it s a React js app ServicesAPI Gateway We already learned about API Gateway in a previous issue In case you need a reminder it s a managed service that makes it easy to create publish and manage APIs for your services In last week s issue I suggested we should use it to expose our microservices but I ll start this issue assuming you didn t do that because I didn t really give you a strong reason to do it Cognito It s a user management service that provides authentication authorization and user management capabilities In our case we use Cognito to manage user authentication and maintain their roles and permissions Cognito lets us implement sign up and sign in and when a user tries to access the course catalog Cognito ensures that they are authenticated Solution step by step Set up a Cognito User PoolSign in to the AWS Management Console and open the Cognito console Click Manage User Pools and then Create a user pool Enter a name for the new user pool and choose Review defaults In the Attributes section Choose standard attributes you want to collect and store for your users e g email name Set the minimum password length to and require at least one uppercase letter and one number In the MFA and verifications section Set MFA to Off for simplicity but consider enabling it for better security in the future Select Email as the attribute to be verified In the App clients section Click Add an app client to create a new application client that will interact with your user pool Enter a name for the app client such as “SimpleAWSCourses Uncheck Generate client secret as we won t need it for a web app Under Allowed OAuth Flows check Authorization code grant and Implicit grant Under Allowed OAuth Scopes check email openid and profile Set the Callback URL s to your the app s URL where users should be redirected after successful authentication e g Set the Sign out URL s to the app s URL where users should be redirected after signing out e g Save the app client and write down the App client ID for future reference In the Policies section Set Allow users to sign themselves up to enable user registration Set Which attributes do you want to require for sign up to require email and name Under Which standard attributes do you want to allow for sign in select Email In the Account recovery section Set Which methods do you want to allow for account recovery to Email only Review all the settings and make any changes as needed When finished click Create pool Create a groups within the User Pool called User Click Groups in the left hand navigation pane and then click Create group Select the User group and check the Set as default checkbox This will automatically add new users to the User group when they sign up Create an API in API GatewayOpen the Amazon API Gateway console in the AWS Management Console Click Create API and select REST API Then click Build Choose New API under Create new API provide a name for your API e g SimpleAWSCourseCatalogAPI and add an optional description Click Create API Click Actions and select Create Resource Provide a resource name e g CourseCatalog and a resource path e g courses Click Create Resource With the new resource selected click Actions and choose Create Method Select GET from the dropdown menu that appears This will create a GET method for the resource For the GET method s integration type choose AWS Service Select ECS as the AWS Service choose the region where the app is deployed and provide the ARN of the ECS service Set the Action Type to HTTP Proxy and provide the HTTP Method as GET Set up Cognito as the API Gateway authorizerIn API Gateway click Authorizers in the left hand navigation pane and then click Create New Authorizer Select Cognito as the type and choose your previously created Cognito User Pool Enter a name for the authorizer Set the Token Source as Authorization and click Create Attach the Cognito authorizer to the API methodsClick on the method in the API Gateway console In the Method Request section click on Authorization and select the Cognito authorizer you created in step from the Authorization dropdown menu Save the changes Deploy the APIIn the API Gateway console click Actions and then Deploy API Choose or create a new stage for deployment Note the Invoke URL provided for each method Update the frontendRemember that we re using React js for this example First you ll need to install these dependencies npm install amazon cognito identity js aws sdkThen you ll need a file with your configs and to update your app Here s an example of the config in config js file and a very basic App js file with no CSS and probably missing a few React good practices const config region your aws region cognito userPoolId your cognito user pool id appClientId your cognito app client id apiGateway apiUrl your api gateway url export default config import React useState from react import CognitoUserPool CognitoUser AuthenticationDetails from amazon cognito identity js import AWS from aws sdk import config from config const userPool new CognitoUserPool UserPoolId config cognito userPoolId ClientId config cognito appClientId const authenticateUser async username password gt const user new CognitoUser Username username Pool userPool const authDetails new AuthenticationDetails Username username Password password return new Promise resolve reject gt user authenticateUser authDetails onSuccess result gt const accessToken result getAccessToken getJwtToken const idToken result getIdToken getJwtToken resolve accessToken idToken onFailure err gt reject err const callApi async method path accessToken gt const headers Authorization Bearer accessToken const options method headers const response await fetch config apiGateway apiUrl path options const data await response json if response ok throw new Error data message Error calling API return data function App const username setUsername useState const password setPassword useState const handleLogin async gt try const accessToken await authenticateUser username password const courses await callApi GET courses accessToken console log courses catch error console error Error error message return Your awesome React code that s much better than mine export default App Solution explanation Set up a Cognito User PoolCognito User Pools store and manage user profiles and handle registration authentication and account recovery We want to offload all that to Cognito and we also want to use it to authorize users Our authorization logic is really simple if they re a user they get access For that we set up our “User user pool as the default so all registered users are in that group We could set up more user pools for different roles for example “Admin for administrators or “Paying Users for users in a paid plan Create an API in API GatewayAPI Gateway is the central component that manages and exposes your microservice to the frontend The CourseCatalog resource and the GET method exposes our Course Catalog microservice s functionality which is integrated with the HTTP Proxy method Basically API Gateway receives the requests runs the authorizer which we set up in the next step runs anything else that needs running nothing in this case but we could set up WAF Shield transform some headers etc and then passes the request to our ECS service ECS handles the request returns a response API Gateway can do a few things with the response such as transform headers and returns the response We re using API Gateway here to separate the endpoint from the service which allows us to replace the service with something else entirely without changing the endpoint or how it s invoked Set up Cognito as the API Gateway authorizerThis step ensures that only authenticated and authorized users can access our Course Catalog By using the Cognito User Pool as the authorizer we re basically saying “if the user is in this Cognito User Pool let the request pass You can also use a custom Lambda Authorizer with a Lambda function that can do anything you want such as calling an external service like Okta checking a table in DynamoDB or any complex logic Using the Cognito User Pool as an authorizer instead of a custom Lambda Authorizer is a new ish feature that makes it easier to implement this simple logic a couple of years ago in order to do this you needed a Lambda that called the Cognito API Attach the Cognito authorizer to the API methodsThere s two steps to setting up the Cognito authorizer Creating it previous step and attaching it to all relevant endpoints this step In our case we re only dealing with one endpoint GET in one microservice CourseCatalog If you want to secure the whole app this is where you attach that one authorizer to all endpoints Don t create more of the same authorizers you create one and reuse it for all endpoints Feel free to create different ones though for example if you wanted to secure the POST endpoint so only “Admin users can access it you need another Cognito User Group and another Authorizer that checks against that group Deploy the APIAll set now let s take it for a spin Deploy it and test it By the way if you make changes to API Gateway you need to deploy them before testing it I ve wasted half an hour several times because I forgot to deploy the changes Update the frontendI hope I didn t go too overboard with all the frontend code The thing is we re adding authentication to the whole app and that includes adding a login button and a login form Most importantly though we need to understand how to talk to Cognito to authenticate a user and what to pass to our CourseCatalog endpoint so the authorizer recognizes the user as a logged in valid user That s what I wanted to show If you write your frontend make it prettier than my bare bones example If you have frontend devs in your team show them that code so they know what behavior to add and ask them to subscribe to the newsletter DiscussionSince we applied security at the API Gateway level we ve decoupled authentication and authorization from our microservice This means we can use the exact same mechanism for the other two microservices Content Delivery and Progress Tracking It also means we ve offloaded the responsibility of authorizing users to API Gateway That way our microservices remain focused on their actual task which is important for services makes them much easier to maintain and they also remain within their bounded context instead of having to dip into the shared context of application users which is important for microservices because the bounded context is the key to them otherwise we d be better off with regular services There s one caveat to our auth solution the Content Delivery microservice returns the URL to an S object and as things are right now that object needs to be public That means only an authenticated user i e paying customer can get the URL but once they have it they re free to share it with anyone Securing access to content served through S is going to be the topic of next week s issue One more thing about Cognito If your app users needed AWS permissions for example to write to an S bucket or read from a DynamoDB table you d need to set up an Identity Pool that s connected to your User Pool We can dive into that in a future issue Best Practices Operational ExcellenceUse Infrastructure as Code That was a lot of clicks It would be a lot easier if you had all of this in a CloudFormation template and you reused it for every project that requires authentication which is of them Implement monitoring and alerting Set up dashboards and alarms in CloudWatch to monitor the health and performance of your APIs microservices and other components A good alarm would be a of responses being XX or XX i e errors SecurityEnable MFA in Cognito User Pool You can offer your users the option of adding MFA to their login You know how important this is you ve already set it up for your root user and IAM users when you read the Must Do Security Best Practices issue At least do it for the Admins Configure AWS WAF with API Gateway Add an AWS Web Application Firewall WAF to your API to protect it from common web attacks like SQL injection and cross site scripting Enable AWS Shield Shield helps protect your API from Distributed Denial of Service DDoS attacks Like WAF you also enable it in API Gateway Encrypt data in transit tl dr use HTTPS You can get a free auto renewing certificate from Amazon Certificate Manager and you install it in the Application Load Balancer ReliabilityOffer a degraded response Your microservice can fail for whatever reason internal to the service a failure in DynamoDB etc Caching helps but you should also consider a degraded response such as a static course catalog served from a different place like S It s not up to date sure but it s usually better than a big and useless error message Consider Disaster Recovery In AWS jargon high availability means an app can withstand the failure of an Availability Zone and disaster recovery means it can withstand the failure of an entire AWS region There s different strategies to this but the most basic one called Pilot Light involves replicating all the data to another region deploying all the configurations deploying all the infrastructure with capacity set to and configuring Route to send traffic to that region if our primary region fails We re going to talk about disaster recovery in a future issue for now just keep it in mind and think whether you really need it most apps don t Performance EfficiencyUse caching in API Gateway Enable caching in API Gateway to reduce the load on your backend services and improve the response times for your API You can probably set a relatively long TTL for this maybe hour I mean how often does your course catalog change Cost OptimizationRemember API Gateway usage plans This one s actually not relevant to this particular solution but I felt it was a good opportunity to throw it in here You can configure usage plans and API keys for your APIs in API Gateway and limit the number of requests made by your users This helps to control costs and prevents abuse of your API Not what you want for the public API of CourseCatalog but it s important and useful for private APIs Understand the Why behind AWS Solutions Join over devs tech leads and experts learning how to architect cloud solutions not pass exams with the Simple AWS newsletter Real world scenariosThe Why behind solutionsHow to apply best practicesSubscribe for free If you d like to know more about me you can find me on LinkedIn or at www guilleojeda com 2023-08-21 13:13:00
海外TECH DEV Community Announcing the 0.2.0 release of Analog 🎉 https://dev.to/analogjs/announcing-the-020-release-of-analog-aa1 Announcing the release of Analog After many months of development and testing we re excited to announce the first stable release of Analog The release includes many features that help developers ship applications and websites faster with Angular Features ️Analog is the meta framework built on top of Angular Here are some of its features including First class support for the Vite ecosystem Vitest Playwright Cypress and more Filesystem based routingSupport for markdown pages and blogs Support for API server routesHybrid SSR SSG with sitemap and RSS feed supportSupports Angular CLI Nx workspacesIntegration with tRPC for type safe server interactionsAnd more Community Thank to you all the contributors to the project whether its been through code documentation tests or even just trying out the project The project already has close to stars on GitHub members on Discord followers on Twitter and was accepted into the first GitHub Accelerator Cohort This only the beginning as we look forward to continuing to improve the project and grow the community around it If you d like to take Analog for a spin check out this blog post on Building a Blog with Analog and Angular If you want to get involved in the project check out the GitHub repo Partner with Analog We are looking for companies to partner with on the Analog project to support development of the project Thanks to Snyder Technologies for being an early adopter and promoter of Analog Detect dark theme var iframe document getElementById tweet if document body className includes dark theme iframe src theme dark Find out more information on our partnership opportunities or reach out directly to sponsor at analogjs org Join the Community Visit and Star the GitHub RepoJoin the DiscordFollow us on TwitterIf you enjoyed this post click the ️so other people will see it Follow me on Twitter and subscribe to my YouTube Channel for more content 2023-08-21 13:11:39
海外TECH DEV Community How to Build a Blog with Analog and Angular ✍️ https://dev.to/analogjs/how-to-build-a-blog-with-analog-and-angular-4pk2 How to Build a Blog with Analog and Angular ️Putting your thoughts together in your personal blog is a great way to build a further understanding about a topic and also helps others who come across it in the future Building a blog is also one of the best ways you can learn a web development stack Meta frameworks of today make this process easier This post shows you how to build a static blog with Angular using Analog Analog is the meta framework that helps you ship applications and websites faster with Angular Getting Started To create a new Analog project you can use the create analog package with your package manager of choice npm create analog latest my analog blogFollow the prompts to choose Analog the latest version of Angular and Tailwind Select a template ›AnalogSelect a variant ›angular vWould you like to add Tailwind to your project …noAnd go into the newly created foldercd my analog blogNext install the dependencies npm installTo start the development server use the start command npm startNavigate to http localhost to see the application running in your browser Adding Markdown Support Analog comes with support for using markdown as content out of the box To add support for rendering markdown content add the provideContent withMarkdownRenderer from the analogjs content package to the providers in the app config tsimport provideHttpClient from angular common http import ApplicationConfig from angular core import provideClientHydration from angular platform browser import provideFileRouter from analogjs router import provideContent withMarkdownRenderer from analogjs content export const appConfig ApplicationConfig providers provideFileRouter provideHttpClient provideClientHydration provideContent withMarkdownRenderer This allows you to use markdown content directly as routes and to render markdown content inside of Angular components Creating Content Routes with Markdown Some pages in your blog are purely content focused where you only need to display content from a markdown file Markdown files can be use directly as pages Create a markdown file in the src app pages directory named about md title About Me This page is about meFrontmatter is supported also for additional metadata such as title description metatags and more Navigate to http localhost about to see the about page Creating and Displaying a Blog Post ️Markdown files can also be used in combination with route components to display content To create a custom page for a blog post Analog provides a built in component First create a markdown file in src content my first post md for the post title My First Postslug my first post Hello WorldNext define an interface for the shape of the data returned from the frontmatter For this example the interface is placed in the src app models post ts file export interface BlogPost title string Next create a page component for the blog This page serves as the parent layout for the listing the blog posts and displaying an individual blog post Create the page component file in src app pages blog page ts import Component from angular core import RouterOutlet from angular router Component standalone true imports RouterOutlet template lt h gt My Blog lt h gt lt router outlet gt export default class BlogPage Next create the page component file for displaying a blog post Define a page component in src app pages blog slug page tsimport MarkdownComponent injectContent from analogjs content import AsyncPipe NgIf from angular common import Component from angular core import BlogPost from src app models post Component standalone true imports MarkdownComponent NgIf AsyncPipe template lt div ngIf post async as post gt lt h gt post attributes title lt h gt lt analog markdown content post content gt lt div gt export default class BlogPostPage post injectContent lt BlogPost gt By default Analog reads the slug route parameter to determine which content file to read from the src content folder The injectContent reads the content from the markdown file based on the slug route parameter The content and attributes are provided as an Observable that could be converted to a signal also The MarkdownComponent displays the rendered markdown content This page creates the blog slug route for displaying blog posts Save the changes and visit the http localhost blog my first post to view the blog post Read more about how routing works Listing Blog Posts Next up let s display the blog posts For this page an index page for at http localhost blog will display a list of the blog posts Create a page component under src app pages blog index page ts to define the blog route import Component from angular core import AsyncPipe NgFor from angular common import injectContentFiles from analogjs content import RouterLink from angular router import BlogPost from src app models post Component standalone true imports NgFor RouterLink AsyncPipe template lt h gt Posts lt h gt lt ul gt lt li ngFor let post of posts gt lt a routerLink blog post slug gt post attributes title lt a gt lt li gt lt ul gt export default class IndexPage posts injectContentFiles lt BlogPost gt The injectContentFiles function provides a static list of all the markdown files inside the src content folder with the frontmatter already parsed and available to use in the component The BlogPost interface is used to add type safety for using the post attributes in the template Visit the http localhost blog to display the blog posts and navigate to the blog post created earlier Redirecting to Blog List A list of blog posts can now be displayed as well as individual blog posts A redirect can also be used to navigate from the home page to the blog page A page component is not necessary to define a redirect Replace the contents of the src app pages index page ts with the redirect import RouteMeta from analogjs router export const routeMeta RouteMeta redirectTo blog pathMatch full RouteMeta allows you to attach additional route metadata to a route Here it s using a redirect but other metadata such as guards resolvers page titles and more can be added Read more about route metadata Pre Rendering Static Pages Lastly for a blog using Static Site Generation by pre rendering the content allows for better SEO and enables the site to be navigated without JavaScript turned on To pre render routes in the vite config ts update the analog plugin with a config object that includes a prerender property Define the routes to be pre rendered into static HTML files during build time analog prerender routes blog blog my first post about Routes can also be defined using an async function if you need to define them dynamically Support for generating sitemaps and an RSS feed is also included Deployment To build the blog for deployment run the build ng buildBy default the static assets are placed into the dist analog public folder for deployment You can deploy Analog sites applications to many different providers with little to no configuration including Netlify Vercel Firebase and more Visit the deployment docs to learn more And that s it The GitHub repo for this example blog is at Now the really creative part begins where you bring your own styles and customizations to the blog to really make it unique Example ProjectsIf you re looking for some inspiration on building your own blog check out some blogs built with Analog and Angular Robin Goetz Blog GitHubMatthieu Riegler aka Jean Mèche Blog GitHubLuis Castro Blog GitHubChris Perko Blog GitHubPreston Lamb Blog Partner with Analog We are looking for companies to partner with on the Analog project to support development of the project Thanks to Snyder Technologies for being an early adopter and promoter of Analog Detect dark theme var iframe document getElementById tweet if document body className includes dark theme iframe src theme dark Find out more information on our partnership opportunities or reach out directly to sponsor at analogjs org Join the Community Visit and Star the GitHub RepoJoin the DiscordFollow us on TwitterIf you enjoyed this post click the ️so other people will see it Follow me on Twitter and subscribe to my YouTube Channel for more content 2023-08-21 13:10:00
海外TECH DEV Community Database 101: How does migration between databases work in the real world? https://dev.to/danielhe4rt/database-101-how-does-migration-between-databases-work-in-the-real-world-24dn Database How does migration between databases work in the real world Recently my new task at ScyllaDB is to study how to Migrate data between Databases and as I promised before I ll keep you folks about my latest studies If you re just getting started with databases in general or databases you might want to start off by reading my initial post Database Data Consistency for Beginners for Beginners That article captures my own exploration of how many database paradigms exist as I look far beyond my previous experience with just SQL and MySQL I m keeping track of my studies in this Database series Table Of Contents Prologue Database Migrations How to Start Why are we doing this migration Proof of Concept where to start PoC Same Paradigm PoC Different Paradigm Testing it before it s too late seriously Migration Strategies Strategy Cold Migration Strategy Hot Migration Final Considerations PrologueSince I started my journey in this database environment I have asked myself so many questions that probably will take a few years to be answered But one of those questions is how to properly perform a database migration and I still don t have the answer Actually when I migrated the Hert Developers community I lead bot I did my best to make everything on the backend and the database model as perfect as possible But when I had to migrate everything it was a real mess I decided to use the Big Bang pull request with files changed migration approach and it was one of my bad decisions as an open source maintainer At that time I didn t have any knowledge about this topic database migrations at all But I learned a lesson that I m going to teach you in this article Database Migrations How to StartIf you ever considered receive such a task of investigate and research how properly migrate data from a database to another you should know a few things before do anything related to code What do I mean by that Just throw queries between databases is not where you re going to start the investigation Let s just ask ourselves a few questions before everything What is the motivation for database migration What migration approach should we use on the project Are we going to jump from one paradigm to another Does the new database have all the support we need for the things we re currently using With these four questions in mind we can start researching until answer all of that and then put hands on queries code Why are we doing this migration When we talk about replacing any part of the stack of a running project the reason needs to be clear to the entire team that is planning this huge movement inside the product So what are you looking for in the replacement A few possibilities Lower latency for I O operations Cheaper database to maintain Scalable database to keep up with the product Just a reminder that these are just a few items on the giant list of motivations for why to replace a database ok Ask your team leaders all the details you need to understand the motivation and make sure this is what you re looking for Proof of Concept where to start Good We have a clear idea of why we are doing this Now let s figure out the things that will be important to make this work Do you know the difference between each database paradigm Well if you re migrating data between two different databases it should be a constant concern Let s understand which type of PoC you will be running PoC Same ParadigmImagine a few scenarios where you want to migrate from CassandraDB to ScyllaDB Wide Column MySQL to PostgreSQL Relational Memcache to Redis Key value MongoDB to DynamoDB or Firebase document All of these scenarios are kinda easier to migrate because they share the same Database Paradigm which means that they follows the same architecture So they have mostly the same features indexing and data types Maybe will have slight differences but are things that you can handle by doing tests and migrating from a feature data type to another Even when Discord was migrating from CassandraDB to ScyllaDB had a few things to fix but at the end of the day it s simpler than between different paradigms To be super honest if you have a problem during the PoC remember that it s part of the job ¯ ツ ¯ PoC Different ParadigmOk and if our problem is to go from some document based database to a wide column Like going from a MongoDB to a ScyllaDB Sounds like a tough task and probably will be and this part especially needs to be carefully designed When Discord started migrating from Document Based Database to the Wide Column Database in they had the same issue How do you split an infinite JSON object Can you imagine Check the JSON example below     servers                                     id                 server name Hert Developers                 channels                                                                         name Test Channel                             messages                                                                                                             message id                                         chatter id danielhert                                         content oh hi lol                                         created at                                         updated at                                                                                                                                                                                 message id                                         chatter id danielhert                                         content oh hi lol                                         created at                                         updated at                                                                                                                                                                                         users                     danielhert                 chatter id danielhert                 joined at                                         dont forget to follow me on socials                 chatter id dont forget to follow me on socials                 joined at                         This is how a briefly imagined a social modeling like Discord Yeah I know That s far from the reality but let s stick into the problem here ok And in fact if you have a good DBA and architects on your side it will not be a problem First you need the whole team to know more about the paradigm and how to use it With document oriented you can push whatever you want because there s no strong data consistency at all But if you move to ScyllaDB you ll need to model tables focus on what query you want to run and also understand how things like consistency level and replication factor work At the end we should have something like CREATE TABLE servers server id bigint owner id text server name text created at timestamp PRIMARY KEY server id created at CREATE TABLE channels server id bigint channel id bigint channel name text created at timestamp PRIMARY KEY server id created at WITH CLUSTERING ORDER BY created at DESC CREATE TABLE channel messages message id bigint channel id bigint chatter id text content text created at timestamp PRIMARY KEY message id channel id created at WITH CLUSTERING ORDER BY created at DESC CREATE TABLE users user id text user name text created at timestamp PRIMARY KEY user id created at Yeah CQL Cassandra Query Language is very similar to SQL Structured Query Language I invite you to have a try doing this ScyllaDB NoSQL Essentials course You will learn a bunch of cool things about the Wide Column paradigm D Testing it before it s too late seriously Ok we ran our PoC and we know which database and paradigm will be the best for our new environment Now your team is focused to finish the data modeling ASAP right Once that is done the focus will be on getting all the scripts ready to make this a successful migration The best thing that you can do is to split your tests with and of your database in a staging environment Why If your new system or new version of the system crashes with of the database it will reflect that there s something missing in the data modeling or even at the backend So stop the migration scripts and write some tests for your application Now that you re done with the migration bugs let s do the same process with of your database In this step you should test everything carefully because it will be the last testing step you will do before choosing the migration strategy and executing it Migration StrategiesOf course migrating between databases isn t a new thing so there are a few things planned and ready to make your life easier Also a few rules that together will make your database migration look like it was done by a pro In this regard there are two very popular strategies called Hot Migration and Cold Migration The names of the strategies themselves say something that we ve probably been asking ourselves since the beginning of this research Should I shut everything down or migrate while the old database is still running Well that depends on your needs The process itself is called ETL Extract Transform and Load in any case btw Strategy Cold MigrationLet s start with the easiest and safer migration strategy Cold Migration The reason to use this type of migration is understand if you can stop your system for the time needed without any problem Basically know if there s a maintenance period and let users know that It also may known as Big Bang Migration since it will be migrated entirely to a new environment that had nothing before This approach is used on small medium systems and is usually done at dawn since it s probably the time of day when fewer users are requesting the system There s a checklist of things you need to be aware of when doing a cold migration Let s check it out Planning what time of day and who will be responsible for this task Extraction how are we going to dump all this data Maybe there s specific tooling already done on the target database to be used Transformation is the data in the right form for the new database Do both databases have the same structure Is there any tooling to transform this data for us Load how do we make sure that our new database gets all of our data Any broken query All good Validation ok we loaded everything Now we need to validate if the data matches with the legacy system Good Luck Testing let s connect it in the migrated database into the system and run all the test suites Almost there Activation all good Now it s time to shut down the legacy database Congratz buddy Basically this is the migration flow when you have the possibility to shut everything down and now you know how to properly do it Strategy Hot MigrationOk If you want to migrate things while your system is still running Now you re in trouble Wait I m just kidding pThis is where things get a bit complicated because you have to write to two databases at the same time So you can imagine that instead of having instance of the database you will need two and depending on that We also have a checklist to help us with this So let s check the flow Planning time of the day is not the main issue here but a proper infrastructure to support the transition between both databases Replication both systems need to be feed at the same time while the migration is happening Tests and Validation during the replication you should validate all the data that you re inserting along with the migrated one Minimal Interruption the system should be online all the time and if any problem occurs it should not be perceptible by the user Switch When all the important data is finally migrated is time to point the app to the new database Activation all good Now it s time to shut down the legacy database Congratz buddy This migration strategy is indicated for companies that require high availability and have critical services that cannot be stopped Final ConsiderationsWell my task was to understand more about DynamoDB and create some content about the ScyllaDB Alternator a migration tool that converts any DynamoDB I O into a ScyllaDB I m still working in a PoC to understand more about it but I certainly learned some really cool things along the way to know more tips tricks and last names of things related to migrations I hope that this tutorial could help you to understand briefly this topic And please let me know in the comments which things that I should learn about Don t forget to like and share this article with your friends and go fill your water bottle Let s keep in touch Twitter DanielHert PT BRTwitter DanielHert ENTwitch Channel 2023-08-21 13:05:09
Apple AppleInsider - Frontpage News Eve Cam 2 leaks, Aqara's T1 light strip, and more on the HomeKit Insider Podcast https://appleinsider.com/articles/23/08/21/eve-cam-2-leaks-aqaras-t1-light-strip-and-more-on-the-homekit-insider-podcast?utm_medium=rss Eve Cam leaks Aqara x s T light strip and more on the HomeKit Insider PodcastOn this week s episode of the HomeKit Insider podcast your hosts break down the leaked Eve Cam Masonite s newly available smart door and more smart home news HomeKit InsiderSince the last episode we saw an unreleased version of the Eve Cam show up in regulatory databases No changes could be discerned though other than a new squared off design Read more 2023-08-21 13:20:06
海外TECH Engadget The best smart home gadgets for 2023 https://www.engadget.com/best-smart-home-devices-154557162.html?src=rss The best smart home gadgets for Whether you re just dipping your toes into the smart home space or adding new devices to your growing setup there have never been more IoT gadgets for you to choose from But before you dive in we have some advice For one don t try to outfit your entire smart home in one go that goes for both newbies and those familiar with smart home gadgets Not only can this be quite expensive we think it s generally best to buy just one or two items first to see if you like them or to see how they pair with the rest of your home s ecosystem And if you haven t already you should decide which voice assistant you prefer We offer some advice on how to pick the right one below along with our suggestions for the best of each smart device category with alternate suggestions where appropriate Before you start pick a voice assistantWhile plenty of the best smart home devices are platform agnostic there are some ーsmart speakers and smart displays in particular ーthat require you to choose your voice assistant Currently that means deciding if you ll use the Google Assistant or Amazon s Alexa on a regular basis I ll address Siri in a moment They re both compatible with various smart home products from light bulbs to robot vacuums but there are certain devices that work best with either Google or Amazon Nest products for example are more compatible and have more functionality with Google powered speakers and displays They can still work with Amazon devices but certain features might be disabled The same holds true with Amazon products They work better if they re in the same ecosystem So how do you choose between Alexa and Google Assistant It really depends on your personal preferences Do you listen to Audible watch Prime Video and tend to do a lot of shopping on Amazon Then you might lean toward an Alexa powered smart home device Do you use a lot of Google services like YouTube and Google Podcasts If the answer is yes a Google powered device might be best If you want a voice assistant that s great at answering questions Google Assistant tends to be better than Alexa Amazon s helper on the other hand currently supports more smart home products The company s smart speakers and displays also support the Zigbee smart home protocol and some devices even have built in smart home hubs Both Google and Amazon devices can sync with your calendar though Google s tend to work better with Google services Plus if you already have an Android phone you might be more comfortable with Google Assistant anyway But what about Siri Apple s assistant supports voice commands as well but it doesn t have as many compatible devices as Google or Amazon The HomePod mini and the now discontinued HomePod are the only Siri compatible speakers on the market at the moment too That said it s not too hard to find Apple HomeKit compatible gear as more third party companies add support for it but you currently have a smaller pool of devices to choose from Best smart speaker Sonos Era Our recommendation for the best smart speaker is the Sonos Era It s compact enough to fit in most areas in your home but more importantly it delivers excellent audio quality that s superior to a lot of other smart speakers out there When tuned properly to the acoustics of your room ーwhich requires the iOS app ーthe sound is fantastic with punchy bass and clear highs Unfortunately the Android app doesn t have TruePlay tuning Sonos has not said whether it s in the works but the speakers should still sound admirable It s also compatible with a slew of streaming services to play music including major ones like Spotify and Pandora The main benefit that a Sonos speaker brings over the competition is that it s a gateway to a multi room audio setup that you can build out over time It s also convenient if you plan on building a home theater setup later on as the Era integrates well with Sonos soundbars Runner up Amazon Echo StudioAmazon s Echo Studio is a great choice if you know you prefer Alexa to the Google Assistant for voice control The latest Studio which was just announced has been retooled with new spatial audio processing that improves on the company s previous D sound technology It also has an improved frequency range with increased mid range clarity and deeper bass and a built in smart home hub for connecting things like smart lights switches plugs and more And if you have a Fire TV device or an actual Fire TV set you can pair the Studio with it to get a killer home theater sound setup Best smart speaker Amazon EchoFor those with tighter budgets there are a handful of smart speakers around We recommend picking up one of the three latest smart speakers from either Google Amazon or Apple Out of the three we think the Echo has the best audio quality Our colleague Nate Ingraham said its bass is impressive and the mid range frequencies are pretty powerful You can also pair two together to get even better stereo sound That said the Nest Audio and HomePod mini are no slouches either The HomePod mini sounds balanced while the Nest Audio has pretty good bass tones Again it all comes down to which assistant you prefer Best Alexa smart display Echo Show The best Alexa powered smart display is the Echo Show The Echo Show is a little too small while the Echo Show and its rotating screen take up too much space The Echo Show on the other hand is perfectly sized for a living room and most other rooms in the house Like other Alexa powered smart displays it supports plenty of video streaming services including Amazon Prime Hulu and Netflix and it comes with a couple of built in browsers that you can use to surf the web on its touchscreen Unfortunately it doesn t support YouTube which is a pretty notable omission considering how ubiquitous the service is As a workaround you can access it via the aforementioned browsers but the experience isn t as smooth as if it were a native app You can use the Show to make video calls with any phone or tablet with the Alexa app Alternatively it supports Skype Zoom and Amazon s own Chime service Like the Nest Hub Max the Show also has an optional face tracking feature that follows your movements around the room during a call Best Google smart display Nest Hub nd gen Our favorite Google powered smart display is the second generation Nest Hub It has a inch screen which makes it just big enough to fit in most rooms in the house The size also makes it work well as a digital photo frame You can set it up to pull in pictures of friends and family from your Google Photos library and there s a smart algorithm that automatically uses the best shots while avoiding the blurry ones As you might expect you can also use the display to watch YouTube Netflix and other streaming services Plus a smart display without a camera is great if you want to place it in more intimate places like the bedroom where you might be more protective of your privacy If you place it by your bedside the Nest Hub also has a sensor that can track your sleep patterns if you opt in If you prefer a display with a camera we recommend splurging on the higher end Nest Hub Max Its built in camera can be used for video calls with Google Duo Google Meet and Zoom This smart gadget also has an optional face tracking feature that lets the camera follow you around during calls One benefit of the camera is that it gives you the option for Face Match a feature that automatically recognizes individual members of the house and then displays the information that s pertinent only to them like calendar alerts Additionally the camera adds a unique gestures feature that lets you play and pause media simply by holding up your hand to the screen which is convenient if you need to stop the music without having to shout across the room The Google Nest Hub Max also has better audio quality than the Hub thanks to its larger speakers Best smart lights Philips HueOne of the easiest ways to introduce smart home technology into your home is to swap out your existing light bulbs with smart ones Smart light bulbs let you control your lighting remotely either via an app or with your voice They add automation and scheduling to the mix so you can have them turn on and off at certain times of the day Some also let you adjust the smart bulb s brightness and color temperature or even let you create a custom light scene Our favorite smart lighting products come from Philips Hue and the White and Color Ambiance LED Smart Button Starter Kit is a particularly good entry point as it includes three Philips Hue White and Color Ambiance W LED smart bulbs a Hue hub that lets you control up to lights and a Smart Button if you want to have the option of turning off the lights without having your phone around This kit offers lots of versatility in lighting styles you can change not just the brightness of the smart light bulb but also the color temperature and experiment with all different shades of the rainbow decking out your room in whatever light scene you desire If that seems a little too daring Philips offers alternatives The Hue White Ambiance Starter Kit lacks the color option while the Hue White Starter Kit won t let you adjust the color temperature The main reason we prefer Philips Hue bulbs is that they re widely supported across smart home ecosystems Not only can you find them pretty much anywhere but they ll work with Google Amazon and Apple s HomeKit Since all the bulbs connect to the Hue hub via the Zigbee protocol and not your home s WiFi it tends to be more reliable and it won t slow down your home internet connection either Best budget smart lights TP Link Kasa Smart WiFi Light BulbTP Link makes a bunch of affordable IoT gadgets and we liked the Kasa Smart WiFi light bulbs enough to name them our favorite budget devices in our smart lights guide They re easy to install and remain reliably connected plus their companion mobile app is clean and easy to use These are full color smart bulbs and we like how changing up the color of your lights is as easy as dragging your finger around a color wheel in the app Of course you can stick with different temperatures of white light too adjusting from warm to cool as needed You can also set schedules allowing your lights to turn on and off at specific times throughout the day and the app s usage section shows you each bulb s energy use over time plus an estimate of how much energy you re saving by using a smart light instead of a regular one Ultimately we like how much value these bulbs pack into an attractive price tag ーa four pack typically costs but you can sometimes find it on sale for as low as Best security camera Wyze Cam VHome security cameras are helpful for catching intruders nabbing porch pirates or just keeping an eye on your pet while you re out of the house Our favorite is the Wyze Cam V for its wide range of features along with its affordable price Plus thanks to its IP waterproof rating it can be used either indoors or outdoors and it has color night vision that s capable of recording nighttime video in full color Like previous gen models it sends alerts to your phone whenever it detects sound or motion You can also customize Motion Detection Zones that allow you to adjust just how sensitive you want the motion sensor to be It also offers continuous video recording that you can store via a GB microSD card not included We especially like that the Wyze doesn t require a subscription free cloud storage is included with the purchase and you ll always have access to the last days of recording on the app Be warned however that the free account can only hold second clips every five minutes If you want it to record unlimited motion consider upgrading to a Cam Plus subscription which includes additional features like alerting you if it detects a person or a package Fortunately it s inexpensive at a month or a year Best wireless security camera Blink camerasThere s a lot to like about the Wyze Cam V but it needs to be plugged in For a wireless alternative to add to your home security system we like the Blink Indoor and Outdoor cameras They both run on AA batteries so you can place them anywhere you want and they have a battery life of around the cells need replacing The Blink Outdoor is weather resistant but otherwise both cameras are the same They both have night vision motion detection and two way audio You can store clips in the cloud via the Blink Subscription Plan or you can also save events locally to a Sync Module via a USB flash drive sold separately Unfortunately Blink works with Alexa only which could be a non starter for some Best doorbell camera Arlo Essential Video DoorbellIf you want a camera specifically for your front door a doorbell camera makes more sense than a standalone option Our favorite is the Arlo Essential Video Doorbell which is compatible with Google Assistant Amazon s Alexa and Apple HomeKit It delivers high quality HDR footage along with a degree view so you can see a person from head to toe and it can ring your phone with a video call whenever someone rings the bell There s also two way audio so you can talk to whoever s at the door A highlight of this doorbell is that it comes with a three month trial to Arlo s Smart subscription service which includes a motion detection feature that can tell the difference between a person package vehicle or animal Senior Editor Devindra Hardawar said that he really appreciated the package alerts it did a good job of telling him whenever UPS dropped off a box It s such a useful feature in fact that we recommend keeping the service beyond the trial period You should be able to use the Arlo Essential Video Doorbell with either Google or Amazon s smart displays but it won t be fully integrated You ll be able to view the webcam on the display but if someone rings the doorbell they won t automatically show up on the screen If you want that particular feature you ll have to use either a Google doorbell like the Nest Video Doorbell or an Amazon doorbell like the Blink Video Doorbell for Google and Amazon displays respectively Best budget robot vacuum iRobot Roomba Our favorite robot vacuum is the iRobot Roomba We recommended it in our budget robot vacuum guide as it did a great job cleaning hard and carpeted surfaces We liked the Shark Ion RV too but the Roomba is a newer model Plus the app is really easy to use for luddites and the tech savvy alike And just in case you don t have access to the app ーmaybe you left your phone in another room for example ーthe Roomba has manual controls as well One of the reasons the Roomba cleans so well is that it has a three stage system that tells it to suck up dirt while also navigating around obstacles When it encounters an especially filthy area it focuses in on it making sure it s clean before moving on You can also manually instruct it to clean a specific spot in case you need it And if you prefer to talk to your robot vacuum cleaner the Roomba works well with both Alexa and Google Assistant Best high end robot vacuum iRobot Roomba s If you don t mind spending more money on an even better robot vacuum we recommend the Roomba s It has the strongest suction power of any Roomba so it s not surprise that it cleans both carpet and hard floors well It has a mapping technology that helps it keep track of all the different rooms in your home to clean it in the most efficient way possible But arguably the best thing about the s is that after each job it automatically empties its bin into a clean base that can hold about days worth of dirt In short the s is worth the splurge if you want a robot vacuum that doesn t require a lot of attention Best smart plug Wyze PlugSmart plugs are the easiest way to add a bit of connectivity to your home without spending a ton of money Connect your regular non smart lamp and voila it s internet connected and you didn t have to spend a fortune The best one we ve tried is from Wyze thanks largely to its easy to use app We were able to fly through the installation process pairing was seamless and connecting it to WiFi was simple as well We especially love that it offers two factor authentication the rest of the smart plugs we tried did not have this You can schedule it to go on and off at different times and days The Wyze Plug works with Alexa Google Assistant though you ll have to go through the Google Home app to pair it plus the IFTTT service Runner up TP Link Kasa Smart Wi Fi Plug MiniAnother solid option is TP Link s Kasa Smart Wi Fi Plug Mini We didn t find the app as easy to use ーinstallation was not as seamless as the Wyze ーbut once you get past that it s still just as capable Just like with the Wyze Plug you can schedule the plug to turn on and off at certain times and days of the week On top of that the Wi Fi connected Kasa actually offers scheduling around sunrise or sunset times a feature that the Wyze lacks It works with Google Assistant Amazon s Alexa IFTTT plus Samsung SmartThings This article originally appeared on Engadget at 2023-08-21 13:25:24
海外TECH Engadget WD's 1TB Xbox storage card is cheaper than ever https://www.engadget.com/wds-1tb-xbox-storage-card-is-cheaper-than-ever-131017540.html?src=rss WD x s TB Xbox storage card is cheaper than everThis is a good moment to boost your console s storage Amazon is selling the WD Black TB C expansion card for Xbox Series X S at a new low price of or about percent off This is a lightning deal so you ll want to act quickly if you re interested Like Seagate s cards the C expands your Xbox storage with a solid state drive that s as quick as the one built into the system ーnecessary to play Series X and S games While Microsoft supports USB drives those can only be used to either archive games or play legacy Xbox One titles You ll want a card like WD s if you tend to have numerous recent games on the go This is a proprietary expansion format so you can t simply reuse the SSD in your computer or a rival console like the PlayStation WD also doesn t offer a TB card like Seagate does so you ll need to consider the competition if TB just isn t enough At this price though WD s option is an easy choice if you re happy with the extra headroom 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-08-21 13:10:17
ニュース BBC News - Home Renting now cheaper than first-time mortgages, says Zoopla https://www.bbc.co.uk/news/business-66568528?at_medium=RSS&at_campaign=KARANGA regional 2023-08-21 13:08:19
ニュース BBC News - Home Hermoso kissed on lips by Spanish FA boss at ceremony https://www.bbc.co.uk/sport/football/66568226?at_medium=RSS&at_campaign=KARANGA victory 2023-08-21 13:05:18
ニュース BBC News - Home Lucy Letby absence from sentencing 'one final act of wickedness from a coward' https://www.bbc.co.uk/news/uk-66568477?at_medium=RSS&at_campaign=KARANGA Lucy Letby absence from sentencing x one final act of wickedness from a coward x Letby s court absence for her sentencing has renewed calls for the law to be changed to compel convicts to attend 2023-08-21 13:27:37

コメント

このブログの人気の投稿

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

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

投稿時間:2020-12-01 09:41:49 RSSフィード2020-12-01 09:00 分まとめ(69件)