AWS |
AWS Management Tools Blog |
Extending and exploring alarm history in Amazon CloudWatch – part 1 |
https://aws.amazon.com/blogs/mt/extending-and-exploring-alarm-history-in-amazon-cloudwatch-part-1/
|
Extending and exploring alarm history in Amazon CloudWatch part Alarm history data can be invaluable in diagnosing trends impacts and root causes for issues in your application In this two part blog series we will demonstrate how to move beyond the standard day alarm history and turn your Amazon CloudWatch alarm state changes into logs and metrics that you can graph on your CloudWatch … |
2022-01-20 15:30:00 |
AWS |
AWS Management Tools Blog |
Extending and exploring alarm history in Amazon CloudWatch – part 2 |
https://aws.amazon.com/blogs/mt/extending-and-exploring-alarm-history-in-amazon-cloudwatch-part-2/
|
Extending and exploring alarm history in Amazon CloudWatch part In part of this blog series we demonstrated how to utilize an Amazon EventBridge rule to create Amazon CloudWatch logs and metrics from a change in state of your CloudWatch alarms To diagnose trends impacts and root causes you may want to see trends in alarm history or visualize this data alongside other CloudWatch … |
2022-01-20 15:29:58 |
Ruby |
Rubyタグが付けられた新着投稿 - Qiita |
招待機能の実装方法 |
https://qiita.com/sekiguchi0215/items/424249f7e28d90dcb832
|
notificationsaveifnotificationvalidendendendコントローラに処理を記述招待通知生成の処理を行うinvitationアクションを記述。 |
2022-01-21 00:58:28 |
AWS |
AWSタグが付けられた新着投稿 - Qiita |
Amazon Managed Blockchain を構築してみた |
https://qiita.com/sugimount-a/items/0ff5f1a70b2cc43d4e88
|
つの組織が、それぞれAWSアカウントを利用しながら、自分たちのPeerNodeやFabricCAを構成することで、HyperledgerFabricのネットワークを構成していく形です。 |
2022-01-21 00:47:35 |
AWS |
AWSタグが付けられた新着投稿 - Qiita |
プロパティ 'data' は型 'GraphQLResult<object> | Observable<object>' に存在しません。ts(2339)の対処メモ |
https://qiita.com/Neitworks/items/41698c56e9ee04cbd30f
|
プロパティxdataxは型xGraphQLResultltobjectgtObservableltobjectgtxに存在しません。 |
2022-01-21 00:00:54 |
Ruby |
Railsタグが付けられた新着投稿 - Qiita |
招待機能の実装方法 |
https://qiita.com/sekiguchi0215/items/424249f7e28d90dcb832
|
notificationsaveifnotificationvalidendendendコントローラに処理を記述招待通知生成の処理を行うinvitationアクションを記述。 |
2022-01-21 00:58:28 |
海外TECH |
MakeUseOf |
How to Use Your Android Phone in VR by Pairing It to Windows |
https://www.makeuseof.com/windows-android-phone-in-vr/
|
How to Use Your Android Phone in VR by Pairing It to WindowsVirtual reality is great but sometimes the real world calls in the middle of a game Here s how to check your phone in VR using Windows |
2022-01-20 15:45:11 |
海外TECH |
MakeUseOf |
5 Signs It's Time to Calibrate Your Monitor |
https://www.makeuseof.com/when-to-calibrate-your-monitor/
|
monitor |
2022-01-20 15:30:44 |
海外TECH |
MakeUseOf |
The Difference Between Converting HDMI to DisplayPort and DisplayPort to HDMI |
https://www.makeuseof.com/difference-between-converting-hdmi-displayport/
|
The Difference Between Converting HDMI to DisplayPort and DisplayPort to HDMIDisplayPort and HDMI are similar technologies but there s a key difference while converting one to another that changes everything |
2022-01-20 15:30:44 |
海外TECH |
MakeUseOf |
The Main Windows Update Terms, Explained |
https://www.makeuseof.com/windows-update-terms-explained/
|
lingo |
2022-01-20 15:15:12 |
海外TECH |
MakeUseOf |
How to Enable Color Blind Friendly Mode in Asana |
https://www.makeuseof.com/how-to-enable-color-blind-mode-asana/
|
blind |
2022-01-20 15:00:45 |
海外TECH |
DEV Community |
I show you how to Crack a .NET Application (3 clicks) |
https://dev.to/dotnetsafer/i-show-you-how-to-crack-a-net-application-3-clicks-47ke
|
I show you how to Crack a NET Application clicks ️Disclaimer This article is for educational and training orientation we are not responsible for the misuse of the techniques and explanations mentioned in this article and or the use of the tools mentioned provided also we do not assume responsibility for the actions carried out with the information of the same Please use this information for ethical purposes Hello to all developers I am Juan and I am part of the Dotnetsafer team I do this article for a very simple reason in our offices a co working space there are quite a few companies that develop in NET and one day at lunch I commented what we were doing and they did not understand anything it turns out that they had no idea what decompilation is They did not know that with a simple tool you could see copy or modify its development ーnot in all cases you should be concernedーbut for some of them the core of the business is the development itself and obviously it did not do much grace I have to say that this happens in all compiled languages but I will focus on NET which is what we master In this article I am going to show basic notions about de compilation and reverse engineering if you are interested in something more complex do not hesitate to ask us Note To carry out the practical parts we use DnSpy but we provide you with the same tool from so that you can carry out the tutorial from your browser without having to download anything Simply to decompile drag the applications to the left part shown on the screen the code will be displayed on the right part What is de compilationDe compilation is the reverse of compilation I m going to patent this great explanation That is the COMPILATION is basically You write codeYou push the magic compile button and it becomes an executable file exe dll Well it should surely you forgot a semicolon or something like that you will also have warnings but if you don t open your eyes you don t see them The process will be something like this Well de compilation is the opposite you have an executable file dll exe and with a tool decompiler you get the original source code And is it simple I d say it s easier than compiling but let s see how it s done Decompiling a NET NET Core applicationLet s decompile a simple application For this example we will use DnSpy There are several tools and each one is good for something in particular but DnSpy is one of the best for decompiling and debugging NET applications When we compile our NET Core application we will obtain the compiled files in the case of NET Core the exe file will be the executable but it will be in charge of executing the dll that contains the code of our application Ok let s proceed to decompile the dll file To do this all we have to do is drag it to DnSpy Once loaded the original source code will be shown and we can work on it we can analyze it modify it debug it etc Viewing the source codeOnce our application is decompiled we can navigate through the source code as if it were our own project Debug the appThis will be useful to understand how it works or to obtain some values in memory For example let s put a breakpoint before doing a subtraction and then we will run the application Here is a simple example This is a function that can be very useful at times but it can also be dangerous Modify the codeWe can modify and re compile the application without any problem We can also do it using IL code but if we do not know it it will be much more complex We change that simple text and we compile again Now to save our modified application we will give We will select the name of the file its path and we will mark the following options and we will have our modified application Ok these are simple and unimportant examples I leave to your imagination everything that could be done with these simple tools Now we are going to see other types of applications because compilation in NET is the same it does not matter if you use c vb ASP Xamarin Blazor everything works in the same way let s see then with a Blazor application Decompiling a web application with BlazorNow we have created a sample web application with Blazor this is the application code in visual studio Basically it is an application that shows the weather and we have added Dotnetsafer in the middle so that we can see it later in the decompiled application here is the web application Ok let s get the code again First we will use our browser it does not matter which one since when loading the NET libraries to display the application it makes a call to obtain them We must enter inspection mode Ctrl Shift C and go to section Network later reload the page with Ctrl F Here will be the file that contains the code of our web application You can also obtain all the dependencies or own net files that are used by the applicationWell we download it and open it again with DnSpy Once we have the decompiled file we can do everything that I mentioned in the previous point Decompiling a mobile app with XamarinWe raised the level of difficulty a little but the operation is still the same We have created a simple application for mobile devices with Xamarin the compiled application will have the extension APKThe first thing we will do is unzip the APK there are tools for this but it is not necessary for something so simple we can use winrar yes the program that never expires and we will copy all the files in a folder Inside the folder Assemblies all NET files will be found Here comes the interesting thing these files have lz compression which will give us an error if we try to decompile it with DnSpy For this I bring a simple solution a small Python script that will help us decompress all the NET dll files Yes this sounds very complex and it seems that you must be an expert But it really is something very simple that we will do in less than a minute Decompress Xamarin NET LibrariesIf you don t have Python on your machine install it previously Once we have Python I run it from the VSCode terminal we proceed Install lz python m pip install lz or simply pip install lz Use of the decompression scriptimport lz blockimport sysimport structimport osdef print usage and exit sys exit usage py decompressor py target path cwd os path abspath os getcwd def decompress filePath input filepath filePath output path os path join extracted if not os path exists output path os mkdir output path output filepath os path join output path os path basename filePath header expected magic b XALZ with open input filepath rb as xalz file data xalz file read if data header expected magic sys exit The input file does not contain the expected magic bytes aborting header index data header uncompressed length struct unpack lt I data payload data print header index s header index print compressed payload size s bytes len payload print uncompressed length according to header s bytes header uncompressed length decompressed lz block decompress payload uncompressed size header uncompressed length with open output filepath wb as output file output file write decompressed output file close print result written to file if name main n for file in os listdir cwd try if file endswith dll decompress file n except print failed to decompress os path basename file print nDecompressed n assemblies The author of this script is Christian Reitter X D Sec GmbH thank you for your article at X D Sec GmbH we have modified it to unzip all the files in the directory We will copy the code into a file called decompress py and we will save it in the same path as our dll files Decompress the files we need We will do it with py decompressor py we ll let it decompress all the dll files in the directory In this case I am only interested in the two files corresponding to my application What has not been so difficult Now we have the files ready to open with DnSpy Now again we can do everything I mentioned earlier the procedure is always the same only the way in which the files are compiled varies This applies to all applications under NET such as games developed in Unity with C virtual reality applications and augmented reality Did you like this article It has been very simple but I consider it fine for a basic level and learn a little about these topics If you have found it interesting do not hesitate to support it and tell us below if you want to know something else like let s talk about cracking injection and other aspects We could do some interesting practices or whatever you want to see around here Thank you for reading the article and remember that in dotnetsafer we will be uploading articles about security in relation to NET You have the web version of Dnspy at so that you can comfortably do all the tests in this article without having to download any program Thank you for your attention we hope you have learned a lot |
2022-01-20 15:55:29 |
海外TECH |
DEV Community |
3 ways to use reduce in javascript |
https://dev.to/pestrinmarco/3-ways-to-use-reduce-in-javascript-1442
|
ways to use reduce in javascriptFlat an arraylet arr const flattened arr reduce acc item gt acc item console log flattened If you have a more complex array there is this other solutionarr a const flatten arr gt arr reduce acc item gt if item instanceof Array return acc concat flatten item acc push item return acc flatten arr Sum all numbersarr const total arr reduce acc number gt acc number console log total Change in an object with the number of occurrencesarr Los Angeles London Amsterdam Singapore London Tokyo Singapore const counter arr reduce acc city gt acc city acc city acc city return acc console log counter Los Angeles London Amsterdam Singapore Tokyo |
2022-01-20 15:51:31 |
海外TECH |
DEV Community |
MySQL MariaDB setup on Linux Ubuntu with SSL/TLS - 2022 - Video |
https://dev.to/developertharun/mysql-mariadb-setup-on-linux-ubuntu-with-ssltls-2022-video-238f
|
video |
2022-01-20 15:46:14 |
海外TECH |
DEV Community |
Create a Website Without Code |
https://dev.to/ieeemace/create-a-website-without-code-4a91
|
Create a Website Without CodeConvert your designs into responsive live websites automatically Add interactions motion graphics video audio without writing any code Connect to data and content source and build fully functioning websites landing pages HTML emails product pages or business applications easily There are many platforms that allows you to build responsive websites without a single line of code One such platform is QuestWith Quest anyone can build what they envision without being constrained by their engineering bandwidth How to startGo to quest ai Then signup for free using Build For Free button Make sure to select The new quest tile during sign up After signup you ll be directed to a page shown below Quest is more of like a web hosting For design of the web page you can use either Adobe XD or Figma Select the Quest plugin for Figma on top middle of the page Now you will be directed to Figma plugin page as shown below Click on the Download button and you will be directed to a page where you can select Install for installing the plugin You will be asked to sign up to Figma Complete the process After login you will be directed to a page where you can start creating your design by selecting New design file To learn more about how to design in Figma use resource section at the bottom of the Figma home page or help figma com After completing the design in Figma you need to connect Figma and Quest using a plugin For that go to plugin option on the dropdown menu and select manage plugin under plugins Click on the Browse plugin on community and search for QuestNow go back to the design space and select Quest under plugin This will show up a box as shown below Give a name for the design and select the layers that has to be imported to quest and click export You can now see you design in quest work window just by selecting View in Quest Inside Quest you can make you design adjustable to different screen sizes like laptops tablets smartphones etc You can also launch your design into a custom domain if you had bought one already To know more on how to work with Quest visit the resource section at the top of Quest homepage or visit www quest ai docs ️Website Instagram LinkedIn Twitter |
2022-01-20 15:44:09 |
海外TECH |
DEV Community |
Introduction to Amazon Managed Streaming for Apache Kafka (Amazon MSK) |
https://dev.to/aws-builders/introduction-to-amazon-managed-streaming-for-apache-kafka-amazon-msk-3fpe
|
Introduction to Amazon Managed Streaming for Apache Kafka Amazon MSK IntroductionAmazon MSK is a fully managed service that makes it easy for you to build and run applications that use Apache Kafka to process streaming data Apache Kafka is an open source platform for building real time streaming data pipelines and applications With Amazon MSK you can use native Apache Kafka APIs to populate data lakes stream changes to and from databases and power machine learning and analytics applications Big Data Analytics Options on AWS is a Series containing different articles that provides a basic introduction to different Big Data Analytics Options on AWS Each article covers the detailed guide on how each service is used for collecting processing storing and analyzing big data Apache Kafka clusters are challenging to set up scale and manage in production When you run Apache Kafka on your own you need to provision servers configure Apache Kafka manually replace servers when they fail orchestrate server patches and upgrades architect the cluster for high availability ensure data is durably stored and secured set up monitoring and alarms and carefully plan scaling events to support load changes Amazon MSK makes it easy for you to build and run production applications on Apache Kafka without needing Apache Kafka infrastructure management expertise With a few clicks in the Amazon MSK console sign in required you can create a fully managed Apache Kafka cluster that follows Apache Kafka s deployment best practices or you can create your own cluster using your own custom configuration After you create your desired configuration Amazon MSK automatically provisions configures and manages the operations of your Apache Kafka cluster and Apache ZooKeeper nodes An Amazon MSK cluster is the primary Amazon MSK resource that you can create in your account Following are the primary components that work together in MSK Broker nodes ーWhen creating an Amazon MSK cluster you specify how many broker nodes you want Amazon MSK to create in each Availability Zone Each Availability Zone has its own virtual private cloud VPC subnet ZooKeeper nodes ーAmazon MSK also creates the Apache ZooKeeper nodes for you Apache ZooKeeper is an open source server that enables highly reliable distributed coordination Producers consumers and topic creators ーAmazon MSK enables you to use Apache Kafka data plane operations to create topics and to produce and consume data Cluster operations ーYou can use the AWS Management Console the AWS Command Line Interface AWS CLI or the APIs in the SDK to perform control plane operations For example you can create or delete an Amazon MSK cluster list all the clusters in an account view the properties of a cluster and update the number and type of brokers in a cluster Amazon MSK detects and automatically recovers from the most common failure scenarios for clusters so that your producer and consumer applications can continue their write and read operations with minimal impact When Amazon MSK detects a broker failure it mitigates the failure or replaces the unhealthy or unreachable broker with a new one In addition where possible it reuses the storage from the older broker to reduce the data that Apache Kafka needs to replicate Your availability impact is limited to the time required for Amazon MSK to complete the detection and recovery After a recovery your producer and consumer apps can continue to communicate with the same broker IP addresses that they used before the failure Ideal usage patternsThe AWS Streaming Data Solution for Amazon MSK enables you to capture store process and deliver real time streaming data This service helps you address real time streaming use cases for example Capture high volume application log filesAnalyze website clickstreamsProcess database event streamsTrack financial transactionsAggregate social media feedsCollect IT log filesContinuously deliver to a data lake Cost modelAmazon MSK has a simple “pay only for what you use model There are no minimum fees or upfront commitments There are charges for the time your broker instances run the storage used monthly and standard data transfer fees for data in and out of the cluster Apache Kafka broker instance usage is billed on an hourly basis billed at one second resolution with varying fees depending on the size of the Apache Kafka broker instance and active brokers in your Amazon MSK clusters Amazon MSK charges for the amount of storage you provision in the cluster This is calculated by adding up the GB per broker each hour and dividing by the number of hours in the month resulting in a value in GB Month There are no additional charges for data transfer between brokers or between Apache ZooKeeper nodes and brokers Standard AWS data transfer charges are charged for data transferred in and out of Amazon MSK clusters See Amazon MSK pricing for further details PerformanceAmazon MSK allows you to choose the right type and number of brokers for yourcluster You can size your cluster based on your ingestion rate hours of retention and data output rates The number of partitions per broker is affected by use case and configuration To determine the right number of brokers for your MSK cluster and understand costs see the MSK Sizing and Pricing spreadsheet file download For more information about the different broker types see Broker types Durability and availabilityUse the following recommendations so that your MSK cluster can be highly available during an update such as when you re updating the broker type or Apache Kafka version for example or when Amazon MSK is replacing a broker Ensure that the replication factor RF is at least two for two AZ clusters and at least three for three AZ clusters An RF of one can lead to offline partitions during a rolling update Set minimum in sync replicas minISR to at most RF A minISR that is equal to the RF can prevent producing to the cluster during a rolling update A minISR of two allows three way replicated topics to be available when one replica is offline Ensure client connection strings include multiple brokers Having multiple brokers in a client s connection string allows for failover when a specific broker is offline for an update Scalability and elasticityYou can increase the capacity of the cluster at any time according to your business or operational needs You can use Amazon MSK operation to increase the number of brokers in your MSK cluster To expand a cluster make sure that it is in the ACTIVE state You can also increase storage per broker You can increase the amount of EBS storage per broker but you can t decrease the storage Storage volumes remain available during this scaling up operation You can use Automatic scaling ーYou can configure Amazon Managed Streaming for Apache Kafka to automatically expand your cluster s storage in response to increased usage using Application Auto Scaling policies Your automatic scaling policy sets the target disk utilization and the maximum scaling capacity Manual scaling ーTo increase storage wait for the cluster to be in the ACTIVE state Storage scaling has a cooldown period of at least six hours between events Even though the operation makes additional storage available right away the service performs optimizations on your cluster that can take up to hours or more The duration of these optimizations is proportional to your storage size InterfacesAmazon MSK has deep AWS service integrations with Amazon EMR AWS Lambda Amazon Kinesis Data Analytics and AWS Glue Streaming ETL It also works with Kafka Connect Mirror Maker Kafka Streams and a number of rd party frameworks like Apache Spark Apache Storm and so on The producer side APIs add messages to the cluster for a topic The consumer side APIs get messages for a topic as a stream of messages Anti patternsAmazon MSK has the following anti patterns Ad hoc queries ーMSK is a stream of unbounded data It is not used for ad hoc queries Long term data storage and analytics ーMSK is not suited for long term data storage Hope this guide gives you an Introduction to Amazon Managed Streaming for Apache Kafka Amazon MSK Let me know your thoughts in the comment section And if you haven t yet make sure to follow me on below handles connect with me on LinkedInconnect with me on Twitterfollow me on github️Do Checkout my blogs Like share and follow me for more content ltag user id follow action button background color important color fac important border color important Adit ModiFollow Cloud Engineer AWS Community Builder x AWS Certified x Azure Certified Author of Cloud Tech DailyDevOps amp BigDataJournal DEV moderator Reference Notes |
2022-01-20 15:32:51 |
海外TECH |
DEV Community |
Spring Boot REST API authentication best practices using JWT (2022) |
https://dev.to/prafful/spring-boot-rest-api-authentication-best-practices-using-jwt-2022-3j2d
|
Spring Boot REST API authentication best practices using JWT OverviewIn this tutorial I will explain how you can implement production ready token based REST API authentication using JWT JSON Web Tokens Further we will use these tokens to identify our acting user in a HTTP request to our API For this tutorial we will use MongoDB to persist our user data you can choose any database of your choice What is a JWT JSON Web Token JWT is an encoded string which we will use to identify our user in this case A JWT consist of three parts separated by a period Header It contains signing algorithm like SHA Payload It contains our user data Signature To verify the message wasn t changed along the way making it secure Combing all three will make our JWT look something like this xxxxx yyyyy zzzzz To learn more about JWT please visit Project InitializationWe will start y initializing our Spring Boot project using Spring Initiailizr For starters I have added dependencies you can tweak it a little according to your project needs Hit generate and import project in your favorite IDE Also don t forget to add database properties in application properties file spring data mongodb database your db name herespring data mongodb port Additional DependenciesYou will have to add following dependencies in order to use JWT in your project commons lang is optional I personally use it for its various utility classes For maven based projects lt dependency gt lt groupId gt io jsonwebtoken lt groupId gt lt artifactId gt jjwt api lt artifactId gt lt version gt lt version gt lt dependency gt lt dependency gt lt groupId gt io jsonwebtoken lt groupId gt lt artifactId gt jjwt impl lt artifactId gt lt version gt lt version gt lt scope gt runtime lt scope gt lt dependency gt lt dependency gt lt groupId gt io jsonwebtoken lt groupId gt lt artifactId gt jjwt jackson lt artifactId gt lt version gt lt version gt lt scope gt runtime lt scope gt lt dependency gt lt dependency gt lt groupId gt org apache commons lt groupId gt lt artifactId gt commons lang lt artifactId gt lt version gt lt version gt lt dependency gt For gradle based projects dependencies implementation io jsonwebtoken jjwt api runtimeOnly io jsonwebtoken jjwt impl io jsonwebtoken jjwt jackson org apache commons commons lang Project StructureWe will follow MVC pattern please refer to following project structure ConfigurationIn WebSecurityConfig java we will modify default spring security features by extending WebSecurityConfigurerAdapter class Here we will define our HTTP request filter and a default response when the user is unauthenticated It will act as a middleware for all our HTTP requests package com example api config import com example api util JwtRequestFilter import com fasterxml jackson databind ObjectMapper import org springframework beans factory annotation Autowired import org springframework context annotation Bean import org springframework context annotation Configuration import org springframework security authentication AuthenticationManager import org springframework security config annotation authentication builders AuthenticationManagerBuilder import org springframework security config annotation method configuration EnableGlobalMethodSecurity import org springframework security config annotation web builders HttpSecurity import org springframework security config annotation web configuration EnableWebSecurity import org springframework security config annotation web configuration WebSecurityConfigurerAdapter import org springframework security config http SessionCreationPolicy import org springframework security core userdetails UserDetailsService import org springframework security crypto bcrypt BCryptPasswordEncoder import org springframework security web authentication UsernamePasswordAuthenticationFilter import java util HashMap import java util Map Configuration EnableWebSecurity EnableGlobalMethodSecurity prePostEnabled true public class WebSecurityConfig extends WebSecurityConfigurerAdapter private final UserDetailsService jwtUserDetailsService private final JwtRequestFilter jwtRequestFilter public WebSecurityConfig UserDetailsService jwtUserDetailsService JwtRequestFilter jwtRequestFilter this jwtUserDetailsService jwtUserDetailsService this jwtRequestFilter jwtRequestFilter Autowired public void configureGlobal AuthenticationManagerBuilder auth throws Exception auth userDetailsService jwtUserDetailsService passwordEncoder new BCryptPasswordEncoder Bean Override public AuthenticationManager authenticationManagerBean throws Exception return super authenticationManagerBean Override protected void configure HttpSecurity httpSecurity throws Exception httpSecurity csrf disable authorizeRequests antMatchers auth permitAll anyRequest authenticated and exceptionHandling authenticationEntryPoint request response authException gt Map lt String Object gt responseMap new HashMap lt gt ObjectMapper mapper new ObjectMapper response setStatus responseMap put error true responseMap put message Unauthorized response setHeader content type application json String responseMsg mapper writeValueAsString responseMap response getWriter write responseMsg and sessionManagement sessionCreationPolicy SessionCreationPolicy STATELESS and addFilterBefore jwtRequestFilter UsernamePasswordAuthenticationFilter class In above configure HttpSecurity httpSecurity method we have defined to permit all request starting with auth route that s where we will add our Authentication Controller If the request is unauthorized our API will throw a error message Request FilterIn JwtRequestFilter java we will define our request filter which we mentioned in our API middleware in previous chapter For this we will extend OncePerRequestFilter Spring guarantees that it is executed only once for a given request In this doFilterInternal method we will fetch JWT token from the request header and process it by validating and obtaining username from token s payload Further if token is valid we will fetch user from database and add it in SecurityContextHolder we can further use it any of our service to perform various user related operations package com example api util import com example api service JwtUserDetailsService import io jsonwebtoken ExpiredJwtException import org apache commons lang StringUtils import org springframework security authentication UsernamePasswordAuthenticationToken import org springframework security core context SecurityContextHolder import org springframework security core userdetails UserDetails import org springframework security web authentication WebAuthenticationDetailsSource import org springframework stereotype Component import org springframework web filter OncePerRequestFilter import javax servlet FilterChain import javax servlet ServletException import javax servlet http HttpServletRequest import javax servlet http HttpServletResponse import java io IOException Componentpublic class JwtRequestFilter extends OncePerRequestFilter private final JwtUserDetailsService jwtUserDetailsService private final JwtTokenUtil jwtTokenUtil public JwtRequestFilter JwtUserDetailsService jwtUserDetailsService JwtTokenUtil jwtTokenUtil this jwtUserDetailsService jwtUserDetailsService this jwtTokenUtil jwtTokenUtil Override protected void doFilterInternal HttpServletRequest request HttpServletResponse response FilterChain chain throws ServletException IOException final String requestTokenHeader request getHeader Authorization if StringUtils startsWith requestTokenHeader Bearer String jwtToken requestTokenHeader substring try String username jwtTokenUtil getUsernameFromToken jwtToken if StringUtils isNotEmpty username amp amp null SecurityContextHolder getContext getAuthentication UserDetails userDetails jwtUserDetailsService loadUserByUsername username if jwtTokenUtil validateToken jwtToken userDetails UsernamePasswordAuthenticationToken usernamePasswordAuthenticationToken new UsernamePasswordAuthenticationToken userDetails null userDetails getAuthorities usernamePasswordAuthenticationToken setDetails new WebAuthenticationDetailsSource buildDetails request SecurityContextHolder getContext setAuthentication usernamePasswordAuthenticationToken catch IllegalArgumentException e logger error Unable to fetch JWT Token catch ExpiredJwtException e logger error JWT Token is expired catch Exception e logger error e getMessage else logger warn JWT Token does not begin with Bearer String chain doFilter request response In JwtTokenUtil java we will perform all JWT token related operations such as generating new token and Validating given token package com example api util import io jsonwebtoken Claims import io jsonwebtoken Jwts import io jsonwebtoken SignatureAlgorithm import io jsonwebtoken security Keys import org springframework security core userdetails UserDetails import org springframework stereotype Component import java io Serializable import java security Key import java util Date import java util HashMap import java util Map import java util function Function Componentpublic class JwtTokenUtil implements Serializable public static final long JWT TOKEN VALIDITY Key key Keys secretKeyFor SignatureAlgorithm HS public String getUsernameFromToken String token return getClaimFromToken token Claims getSubject public Date getExpirationDateFromToken String token return getClaimFromToken token Claims getExpiration public lt T gt T getClaimFromToken String token Function lt Claims T gt claimsResolver final Claims claims getAllClaimsFromToken token return claimsResolver apply claims private Claims getAllClaimsFromToken String token return Jwts parserBuilder setSigningKey key build parseClaimsJws token getBody private Boolean isTokenExpired String token final Date expiration getExpirationDateFromToken token return expiration before new Date public String generateToken UserDetails userDetails Map lt String Object gt claims new HashMap lt gt return Jwts builder setClaims claims setSubject userDetails getUsername setIssuedAt new Date System currentTimeMillis setExpiration new Date System currentTimeMillis JWT TOKEN VALIDITY signWith key compact public Boolean validateToken String token UserDetails userDetails final String username getUsernameFromToken token return username equals userDetails getUsername amp amp isTokenExpired token Model and RepositoryWe will use Lombok framework here to quickly create our User java model It is completely optional but it is my favorite way of defining a model class Afterall life is too short to write getters and setters package com example api model import lombok AllArgsConstructor import lombok Getter import lombok NoArgsConstructor import lombok Setter import org springframework data annotation Id import org springframework data mongodb core index Indexed import org springframework data mongodb core mapping Document Document users Getter Setter AllArgsConstructor NoArgsConstructorpublic class User Id private String userName private String firstName private String lastName Indexed unique true private String email private String password private String role We will write our UserRepository java interface and define a method to fetch user details from username package com example api repository import com example api model User import org springframework data mongodb repository MongoRepository import org springframework data mongodb repository Query public interface UserRepository extends MongoRepository lt User String gt Query value userName User findUserByUsername String username UserDetailsServiceIn JwtUserDetailsService java class we will customize default spring security way of getting user by implementing UserDetailsService interface package com example api service import com example api repository UserRepository import org springframework security core GrantedAuthority import org springframework security core authority SimpleGrantedAuthority import org springframework security core userdetails User import org springframework security core userdetails UserDetails import org springframework security core userdetails UserDetailsService import org springframework security core userdetails UsernameNotFoundException import org springframework stereotype Service import java util ArrayList import java util List Servicepublic class JwtUserDetailsService implements UserDetailsService final UserRepository userRepository public JwtUserDetailsService UserRepository userRepository this userRepository userRepository Override public UserDetails loadUserByUsername String username throws UsernameNotFoundException com example api model User user userRepository findUserByUsername username List lt GrantedAuthority gt authorityList new ArrayList lt gt authorityList add new SimpleGrantedAuthority USER ROLE return new User user getUserName user getPassword authorityList ControllersLast but not the least we will define controllers in order to communicate with our API AuthenticationController java will deal with user login and register In both the routes we will generate JWT tokens and send it in response to the user package com example api controller import com example api model User import com example api repository UserRepository import com example api service JwtUserDetailsService import com example api util JwtTokenUtil import org apache commons logging Log import org apache commons logging LogFactory import org springframework http ResponseEntity import org springframework security authentication AuthenticationManager import org springframework security authentication BadCredentialsException import org springframework security authentication DisabledException import org springframework security authentication UsernamePasswordAuthenticationToken import org springframework security core Authentication import org springframework security core userdetails UserDetails import org springframework security crypto bcrypt BCryptPasswordEncoder import org springframework web bind annotation PostMapping import org springframework web bind annotation RequestMapping import org springframework web bind annotation RequestParam import org springframework web bind annotation RestController import java util HashMap import java util Map RestController RequestMapping auth public class AuthenticationController protected final Log logger LogFactory getLog getClass final UserRepository userRepository final AuthenticationManager authenticationManager final JwtUserDetailsService userDetailsService final JwtTokenUtil jwtTokenUtil public AuthenticationController UserRepository userRepository AuthenticationManager authenticationManager JwtUserDetailsService userDetailsService JwtTokenUtil jwtTokenUtil this userRepository userRepository this authenticationManager authenticationManager this userDetailsService userDetailsService this jwtTokenUtil jwtTokenUtil PostMapping login public ResponseEntity lt gt loginUser RequestParam user name String username RequestParam password String password Map lt String Object gt responseMap new HashMap lt gt try Authentication auth authenticationManager authenticate new UsernamePasswordAuthenticationToken username password if auth isAuthenticated logger info Logged In UserDetails userDetails userDetailsService loadUserByUsername username String token jwtTokenUtil generateToken userDetails responseMap put error false responseMap put message Logged In responseMap put token token return ResponseEntity ok responseMap else responseMap put error true responseMap put message Invalid Credentials return ResponseEntity status body responseMap catch DisabledException e e printStackTrace responseMap put error true responseMap put message User is disabled return ResponseEntity status body responseMap catch BadCredentialsException e responseMap put error true responseMap put message Invalid Credentials return ResponseEntity status body responseMap catch Exception e e printStackTrace responseMap put error true responseMap put message Something went wrong return ResponseEntity status body responseMap PostMapping register public ResponseEntity lt gt saveUser RequestParam first name String firstName RequestParam last name String lastName RequestParam user name String userName RequestParam email String email RequestParam password String password Map lt String Object gt responseMap new HashMap lt gt User user new User user setFirstName firstName user setLastName lastName user setEmail email user setPassword new BCryptPasswordEncoder encode password user setRole USER user setUserName userName UserDetails userDetails userDetailsService loadUserByUsername userName String token jwtTokenUtil generateToken userDetails userRepository save user responseMap put error false responseMap put username userName responseMap put message Account created successfully responseMap put token token return ResponseEntity ok responseMap Example of response to our register request You can save this token from response in local storage of your client Reactive web or Mobile app and use this token later in protected routes of your API If we provide invalid credentials to our login request we will get a response with error code Now its time to actually use our JWT token to identify user associated to a HTTP request Following code snippet will help you get the authenticated user anywhere in your project Authentication authentication SecurityContextHolder getContext getAuthentication String username authentication getName For testing we will define UserController java Here you can get the user we added earlier during request filter in SecurityContextHolder package com example api controller import org springframework security core Authentication import org springframework security core context SecurityContextHolder import org springframework web bind annotation GetMapping import org springframework web bind annotation RequestMapping import org springframework web bind annotation RestController import java util HashMap import java util Map RestController RequestMapping user public class UserController GetMapping public Map lt String Object gt getUserName Authentication authentication SecurityContextHolder getContext getAuthentication Map lt String Object gt userMap new HashMap lt gt userMap put username authentication getName userMap put error false return userMap When we will send the newly created JWT token in Authorization header we will get a proper response as follows ConclusionWe saw how you can implement token based authentication for REST API and various amazing frameworks to make life easier Complete code for this tutorial is commited in my Github repository Don t forget to hit the star button pThank you for reading this post please give your valuable feedback in comments section |
2022-01-20 15:31:42 |
海外TECH |
DEV Community |
DotVVM for Visual Studio 2022 is now available |
https://dev.to/dotvvm/dotvvm-for-visual-studio-2022-is-now-available-4odd
|
DotVVM for Visual Studio is now availableDotVVM is an ASP NET framework that allows us to create web applications using the MVVM Model View ViewModel pattern with C and HTML As of this time DotVVM is now available for Visual Studio through an extension Steps to followTo install this extension we can perform the following steps Load Visual Studio go to the Extensions section and select Manage Extensions Search for DotVVM Download the extension and follow the instructions Restart Visual Studio and create a new project Search for DotVVM and select DotVVM Web Application With these steps DotVVM is ready to be used from our Visual Studio The process is the same for Visual Studio Additional ResourcesIf you want to know everything we can do with DotVVM here are some case study articles that may be useful to you DotVVM and ASP NET Implementing CRUD operations Building a Dashboard with ASP NET Core and DotVVM Working with web services through ASP NET Core and DotVVM A step by step guide Thanks for readingIf you have any questions or ideas in mind it will be a pleasure to be able to be in communication and together exchange knowledge with each other See you on Twitter esDanielGomez com |
2022-01-20 15:30:51 |
海外TECH |
DEV Community |
Solving the "Wordle" Game using Python and Selenium |
https://dev.to/mintzworld/solving-the-wordle-game-using-python-and-selenium-1aei
|
Solving the quot Wordle quot Game using Python and SeleniumIf you re looking for a complete Python Selenium solution for solving the Wordle Game programmatically here s one that uses the SeleniumBase framework The solution comes with a YouTube video as well as the Python code of the solution and a GIF of what to expect The code uses special SeleniumBase shadow selectors in order to pierce through multiple layers of Shadow DOM Here s the code below which can be run after calling pip install seleniumbase to get all the Python dependencies import astimport randomimport requestsfrom seleniumbase import version from seleniumbase import BaseCaseclass WordleTests BaseCase word list def initalize word list self js file req text requests get js file text start req text find var La len var La end req text find start word string req text start end self word list ast literal eval word string def modify word list self word letter status new word list correct letters present letters for i in range len word if letter status i correct correct letters append word i for w in self word list if w i word i new word list append w self word list new word list new word list for i in range len word if letter status i present present letters append word i for w in self word list if word i in w and word i w i new word list append w self word list new word list new word list for i in range len word if letter status i absent and word i not in correct letters and word i not in present letters for w in self word list if word i not in w new word list append w self word list new word list new word list def test wordle self self open self click game app shadow game modal shadow game icon self initalize word list keyboard base game app shadow game keyboard shadow word random choice self word list total attempts success False for attempt in range total attempts word random choice self word list letters for letter in word letters append letter button button data key s letter self click keyboard base button button button data key ↵ self click keyboard base button self sleep Time for the animation row game app shadow game row letters s shadow word tile row game tile nth of type s letter status for i in range letter eval self get attribute tile str i evaluation letter status append letter eval if letter status count correct success True break self word list remove word self modify word list word letter status self save screenshot to logs print nWord s nAttempts s word upper total attempts if not success self fail Unable to solve for the correct word in attempts self sleep This solution requires minimum SeleniumBase version or newer due to updated Shadow DOM methods Here are the Release Notes of that version Note that SeleniumBase tests are run using pytest Also the Wordle website appears slightly differently when opened using headless Chrome so don t use Chrome s headless mode when running this example Have fun solving Wordle with SeleniumBase using Python and Selenium |
2022-01-20 15:25:40 |
海外TECH |
DEV Community |
Create Your Own Ethereum Token in Minutes |
https://dev.to/codesphere/create-your-own-ethereum-token-in-minutes-42ao
|
Create Your Own Ethereum Token in MinutesAs more and more dollars are poured into blockchain companies blockchain development has become an increasingly lucrative skill In this tutorial we re going to be using Solidity an Object Oriented programming language for building smart contracts How Creating a Token WorksWe are going to be making what s known as an ERC token which is a standardized template for how an Ethereum token works While our token can function as any other cryptocurrency it will be run on the Ethereum blockchain instead of running on its own blockchain To define the logic of our ERC token we will create a smart contract which dictates how the token can be minted transferred and burned As long as your token conforms to the ERC standard it would be able to be used on most blockchain platforms Since we don t want to deploy this token on the actual Ethereum network That would cost money we will be using a test network called Rinkeby Rinkeby operates exactly like the Ethereum network except we can give ourselves free ethereum whenever we want This makes it much easier to test smart contracts and tokens SetupI ll give the warning now that setting this up is not a quick feat For all the hype blockchain technology is still pretty new and most blockchain devtools have pretty bad UX Nevertheless let s march onward The first important step is to make sure that you have MetaMask installed on your browser and your wallet setup MetaMask is a browser extension that allows you to easily access your crypto wallets and interact with blockchain platforms Once your MetaMask is setup make sure to navigate to settings and enable show test networks it will be in the advanced settings tab Now that we can use test networks with our MetaMask head to the ChainLink Faucet and give yourself test Eth on the Rinkeby network A faucet is a place where you can mint new Eth to your wallet on a test network Finally we re going to be using an online Solidity compiler Remix to write compile and deploy our code on the test network Coding our TokenWe are going to be making a pretty boilerplate ERC token To demonstrate how you can add your own logic I m going to show how you can set time restrictions on certain actions To get started create a new solidity file with a sol extension in Remix IDE I m going to name mine codesphereToken sol but you can name it whatever you want We ll then add the following code Notice that we are using OpenZeppilin s ERC template as a baseline for our contract We can then edit the functions as necessary to add our custom logic In this example we made it so new money can t be minted on fridays Deploying and Testing our TokenSo how can we compile and test our cryptocurrency First navigate to the compiler tab and make sure you have the latest commit selected Keep in mind that the above gist uses Solidity version you will need to change the pragma line at the beginning if that is no longer the case You can then press compile Remix will notify you of any errorsOnce your code is compiled head to the deploy tab and select “Injected Web for the environment This should prompt MetaMask to ask you for your sign in Make sure that you have the Rinkeby Test Network selected in Meta Mask You will end up paying with real ETH to deploy your contract if you are on the main Ethereum network Next select your token under the Contract tab Before deploying double check that you are on the Rinkeby test network If all goes right MetaMask should ask you to pay a gas fee With Rinkeby Test Eth and you should see a successful deployment message after a couple seconds Once the contract has successfully deployed the following interface will popup This will allow you to test a number of functions such as Checking the supply name or symbol of the tokenCheck the balance of a walletMint new tokens to a walletTransfer tokens between recipients Where to go from hereNow we of course have only scratched the surface of Ethereum Solidity ERC tokens and smart contracts I hope however that this tutorial serves as an effective conduit for you to learn more about these topics So what do you want to build with Solidity Let us know down below And as always happy coding from your good friends at Codesphere the most intuitive cloud provider ever created |
2022-01-20 15:22:39 |
海外TECH |
DEV Community |
Getting the follower count from Twitter API v2 |
https://dev.to/twitterdev/getting-the-follower-count-from-twitter-api-v2-4jh6
|
Getting the follower count from Twitter API vVersion of the Twitter API has been the primary way to access the developer platform since November but with around years of blog tutorials about v there is a lot less information shared by the developer community about the new version Let s start to change that Here s a great question I just answered in the Twitter tag on Stack Overflow How do I find the number of followers for a Twitter user in API v You can see the full question and my answer embedded below I thought I d post here in order to expand on my response a little Jan Comments Answers I am surprised to see that there is no way to simply get the number of followers for one Twitter account I found many answers Follower count number in Twitter How to obtain follower count in Twitter API How to get followers count from twitter… Open Full Question The answer is quite simple but not everyone is familiar with the new data formats yet In v we have reduced the number of fields returned by default and you can opt to select the information that is useful for your application using the fields and expansions parameters The follower and following counts for a user are part of the public metrics fields in the User object The API endpoint and parameters are in the format ID user fields public metrics any other fields Below is an example of the output using the twurl command line tool I wrote a post about twurl here In this case twurl handles the authentication etc but you could also use the Twitter API v Postman Collection or the API Explorer from the API Tools available on the developer website or a library of your choice twurl j users user fields public metrics created at data id username andypiper created at T Z name andypiper xyz public metrics followers count following count tweet count listed count In this call we ve requested user ID which is me give me a follow if you feel like it By default without any parameters calls to the users lookup endpoint only return the id name and username values Here we added the user fields to also ask for the public metrics followers following number of Tweets I ve posted and the number of lists the account has been added to So the answer to the original question to get the follower count ask for the public metrics field in the User object and access data public metrics followers count in the response Let s take it one step further Expansions and fields are powerful Using an expansion we can also ask for my current pinned Tweet and more details about the contents of that Tweet in a single API call twurl j users user fields public metrics created at pinned tweet id amp expansions pinned tweet id amp tweet fields created at public metrics source context annotations entities data public metrics followers count following count tweet count listed count pinned tweet id id username andypiper created at T Z name andypiper xyz includes tweets public metrics retweet count reply count like count quote count entities urls start end url expanded url display url dev to andypiper what… images url name orig width height url name x width height status title What resources help you to learn a new API description In my day job when I m not learning things by reading and sharing here on DEV I m a developer unwound url annotations start end probability type Product normalized text Twitter text I d love to know more about how you learn to use new APIs and how I can help you to learn about Twitter API v id source Twitter Web App context annotations domain id name Brand Category description Categories within Brand Verticals that narrow down the scope of Brands entity id name Services domain id name Brand description Brands and Companies entity id name Twitter created at T Z OK that s a lot more information Let s break it down Here I did the following added the user field to request pinned tweet id which returned pinned tweet id also I asked for this to be expanded in the response expansions pinned tweet id That gets expanded inside of the includes array in the response by default the API only returns the id and text fields for a Tweet object so I also specified that I wanted more information I asked for tweet fields and specified created at public metrics source context annotations and entitiescreated at creation time of the Tweet the UTC time when I posted it public metrics similar to metrics on the User object we get data about the numbers of retweets replies likes and quotes of this Tweet source the name of the App that was used to post the Tweet the Twitter website in this case context annotations OK this is super cool We get back an array of information domain entity pairs that cover what Twitter has detected this Tweet to be about In this case I was posting about the Twitter API so it pulled out that I m talking about a brand and company Twitter in the Tweet There are also domains and entities for things like movies sports products award shows and so on You can even search for Tweets by entity value using the v API very powerful entities this is also an improvement additional set of data over v The entities identified in my original Tweet are broken out and expanded In this case there was a shortened URL to a blog post here on DEV This is expanded to show the full URL and what is displayed in the Tweet as well as the URL to the image that is displayed in the website summary large image card and the dimensions of that image and the description from that card Read more about the new Twitter data formats and Tweet payloads on the Developer Blog Talk to us via the Twitter Developer Community forums Share what you learn about Twitter API v here on DEV Use the twitter tag It will help others to learn too Finally if you found this interesting or helpful I d love to hear from you in the comments or on Twitter Happy coding |
2022-01-20 15:18:23 |
Apple |
AppleInsider - Frontpage News |
Apple TV+ releases trailer for 'The Sky is Everywhere' |
https://appleinsider.com/articles/22/01/20/apple-tv-releases-trailer-for-the-sky-is-everywhere?utm_medium=rss
|
Apple TV releases trailer for x The Sky is Everywhere x Ahead of its streaming and limited theatrical debut on February Apple TV has released a trailer for The Sky is Everywhere by Jandy Nelson Following a first look at the film adapted by Nelson from her book Apple has now release a minute second trailer Apple TV is premiering the film for Valentine s Day weekend though the tale is as much about loss as it is love Grace Kaufman known for Bad Teacher and The Last Ship stars as year old Lennie struggling after the sudden death of her sister Read more |
2022-01-20 15:35:33 |
Apple |
AppleInsider - Frontpage News |
Canon debuts EOS R5 C 8K cinema camera with active cooling system |
https://appleinsider.com/articles/22/01/20/canon-debuts-eos-r5-c-8k-cinema-camera-with-active-cooling-system?utm_medium=rss
|
Canon debuts EOS R C K cinema camera with active cooling systemCanon has introduced a new hybrid cinema camera that combines professional video capabilities and a full frame mirrorless body with an active cooling system Credit CanonThe EOS R C is a cinema camera that can shoot K footage at up to fps Additionally because of its new active cooling system it doesn t run into any overheating issues That means the EOS R can shoot at K and fps indefinitely Read more |
2022-01-20 15:05:03 |
海外TECH |
Engadget |
Instagram now lets you create TikTok-like remixes using any video |
https://www.engadget.com/instagram-remix-any-video-tiktok-duet-152544191.html?src=rss
|
Instagram now lets you create TikTok like remixes using any videoYou no longer need to dive into Reels to create TikTok style collaborative videos on Instagram The social network has expanded its remix feature to let you make collaborations and similar reworks from any video on Instagram So long as the video was released after the update you can choose quot remix this video quot from the three dot menu to create your response to the clip You ll still need to share the result through Reels but you ll also have the same editing tools to create collaborations voiceovers and effects Instagram is also doing more to court livestreamers You now have the option of highlighting your next Instagram Live broadcast on your profile giving viewers an easy way to set a reminder You won t need to attach a regular feed post to the scheduled stream either While you can t yet tease later streams this could help you build hype for an interview or ask me anything session The expanded remix feature could be important Instagram hasn t been shy about wanting to counter TikTok and the Duet feature is a significant factor in that rival s success The option to remix any video potentially gives Instagram users a wider pool of videos to choose from than TikTok including footage that wasn t originally meant for that short but sweet format |
2022-01-20 15:25:44 |
海外TECH |
Engadget |
'Lego Star Wars: The Skywalker Saga' will arrive on April 5th |
https://www.engadget.com/lego-star-wars-the-skywalker-saga-release-date-crunch-151421921.html?src=rss
|
x Lego Star Wars The Skywalker Saga x will arrive on April thTwo years after the game was initially supposed to debut Lego Star Wars The Skywalker Saga nbsp will finally arrive on April th The long awaited title from TT Games adapts all nine movies in the Skywalker Saga and you ll be able to choose which trilogy to start with so you might want to get the prequels out of the way first Lego Star Wars The Skywalker Saga is coming to PlayStation PS Xbox One Xbox Series X S Nintendo Switch and PC It s said to be the biggest Lego game to date and publisher Warner Bros Games provided an in depth look at what s in store with a gameplay trailer There are new combat mechanics including ways to string attacks together and defend yourself with counter moves quot in styles tailored to your favorite characters quot Expect fresh blaster mechanics with an over the shoulder perspective and third person aiming reticle and a cover system Of course there ll be a ton of lightsaber action space dogfighting battles and many opportunities to use Force powers as well Many levels will have multiple paths to explore and you ll be able to take on side missions Class based abilities are upgradable and there are more than playable characters to unlock There s also a Mumble Mode which will replace intelligible voice lines with mumbling àla previous games in the series Based on the gameplay trailer alone Lego Star Wars The Skywalker Saga seems like a huge game However despite the lengthy delays the development team was still required to work long hours or quot crunch quot according to Polygon nbsp Several current and former employees told the publication that TT Games has had a quot challenging work culture over the last decade and a half quot and that during crunch periods work weeks of between and hours weren t rare though overtime is said to have been limited in recent months TT Games has also reportedly had a high level of staff turnover since work started on Lego Star Wars The Skywalker Saga nearly five years ago |
2022-01-20 15:14:21 |
海外TECH |
Engadget |
Oura’s third-generation Ring is more powerful, but not for everybody |
https://www.engadget.com/oura-ring-version-3-150032257.html?src=rss
|
Oura s third generation Ring is more powerful but not for everybodyThe wearables business is hard especially if you re a small startup with a device you could perhaps uncharitably call “niche Oura which makes activity tracking rings worn endorsed by a numberof celebrities recently released its third generation model This new hardware is a technical marvel packing many of the features that most wrist worn devices take for granted But the need to keep the cash rolling in has seen Oura like Fitbit Apple Wahoo and others pivot to a recurring revenue model Oura says that this is key to shift from the idea of buying a device that never changes to supporting its broader goals of building an evolving fitness ecosystem HardwareDaniel CooperBefore we get into the specifics of this new Oura ring let s take a moment to remember that this device is still a marvel of engineering Taking the sensors from a smartwatch or fitness tracker and shrinking them into a ring is worthy of enormous praise For all of its imperfections it s amazing to see Oura push the limits of what is capable in such a small form factor And there s much more tech crammed in this time around despite the size and weight remaining the same as the second generation version The headline features these new sensors enable include continuous heart rate tracking temperature monitoring blood oxygenation and period prediction The sizing process is the same for pretty much every smart ring I ve ever tried The company sends you a set of plastic dummy rings you have to wear for a couple of days Once you ve determined the correct fit which is tight and secure around the base of your index finger but not to the point where it s uncomfortable you can order the real thing This actually was the most stressful part of this review since I felt that one size was too loose the other too tight but I opted for looseness rather than sacrificing a digit to the gods of fitness tracking Oura says that the index finger is the best place for its ring but you can stick it elsewhere if you prefer Unfortunately the one thing you can t do much about is the size of the ring itself which is a bit too big I m a big ish guy with big ish hands but it feels a bit too ostentatious on my fingers enough that people notice and ask me what it is as soon as they spot it If you have more slender hands I m sure you might have a similar issue with folks pointing it out I suspect that the smart thing to do is visit Parts Of to get some more adornments to balance out the look SoftwareWithout a screen Oura is yoked tightly to the iOS or Android app where all of this data will be displayed The Oura app is clean and tidy only giving you the deepest data when you go looking for it The app breaks down all of the information generated from your finger and compresses it into three scores which are shown on the homescreen These are for Readiness Sleep and Activity representing how prepared you are to face the day how well rested you are and how much exercise you re doing The only other thing you ll find on the homescreen is a breakdown of your heart rate across the day showing you where the peaks and troughs are You ll also get advice on your ideal bedtime which is useful when you re working late nights and need to juggle sleep with getting things done You ll also get periodic reminders to move if the app detects you ve been still for a while and advice when it s time for you to wind down for the day Go into one of the categories like Readiness and you ll get scores for your recovery index sleep as well as your HRV balance body temperature and resting heart rate You can also see that my figures dropped quite substantially during a three day period when I got food poisoning from a New Year s Eve takeaway meal During that period I was given plenty of warnings telling me I wasn t rested or well enough to do much else not that I felt like I was gonna go for a run or anything As part of Oura s plan to add extra value to its platform the company is adding a series of video and audio guides for meditation breathwork and sleeping These guides which are essentially guided meditation audio tracks can be backed with a white noise option of your choice You can pick the hum of a train station the crunch of a forest stroll the sound of the tide lapping at the land or rainfall amongst others These are a thing for people who find those things useful to fall asleep and feel restful but I personally do not find them that great That said where Oura differs from its rivals in this space is that it ll break down your vital signs during your meditation If you re wondering how to get better at meditating then you ll be guided to more appropriate tracks that ll help prod you toward nirvana Oura is working on adding more features to the Ring v over the next year including more content as well as more accurate sleep and period tracking These will not actually appear as new features so much as they are behind the scenes improvements in the underlying systems Finally at some point this year the ring will be able to identify your blood oxygenation SpO while you sleep in order to help detect disorders like sleep apnea In useDaniel CooperThe best thing about the Oura ring is that once you ve worn it a few days you quickly start to ignore its presence And while you re not paying attention it begins worming its way into every corner of your life learning your working patterns and getting ready to make helpful suggestions If you feel like crap in the morning but don t have the mental wherewithal to comprehend why you ll be told as soon as you look at your phone Don t get me wrong there s nothing here that other platforms don t do as well but this is certainly an elegant implementation of the idea Sleep tracking is generally fine by which I mean it works by tracking movement and therefore can t tell when you ve been rudely awoken but haven t moved As part of this new pivot however Oura is promising that the sleep tracking will soon become vastly more accurate as a consequence of behind the scenes changes This will not be readily visible to users however since all you ll get is a pop up telling you that things just got more accurate Still it offers a fairly good indicator for how the night went although I find the activity tracking to be a little more on the generous side Yesterday morning for instance it told me that my morning shower was a strength training workout with plenty of burned calories for my trouble Similarly it ll tell me around lunchtime that I need to take a half hour brisk walk to finish my activity for the day and then by early evening having done nothing more than stand at my desk make dinner and put my kids to sleep it ll tell me I ve completed my goal One of the features that Oura is tempting its users with is Workout Heart Rate which I find inadvertently amusing Because the ring is so chunky and it has such a hard edge that I really don t find it comfortable to wear during workouts For instance if I ve got a pair of free weights or I m doing an incline push up on a Smith machine bar the ring just pushes into the fleshy parts of my hand For most of the proper “gym workouts I ve done the ring has had to come off lest I tap out too early or draw blood from the chubby parts of my fingers But for more ring friendly jobs like running walking or cycling you should find this to be a big help In terms of vital signs tracking accuracy I think it s always wise to remember that wearables will not be as inch perfect as a clinical grade device But in a number of random spot tests the Oura offered the exact same figures as the Apple Watch on my wrist In fact Oura s reputation for accuracy has always been pretty high and one of the reasons that the company hasn t released some of these features is to ensure they re ready to go when they do arrive Oura quotes battery life at seven days although I rarely managed to get past five without having to drop it on the charging plate Certainly real world stamina is a bit far from what the company is saying but then it s hardly a deal breaker since you can charge it full in two hours It s become common for me to take the ring off while I m standing at my desk on Monday and Friday mornings and let it re juice while I m working EconomicsThe third generation Oura ring will set you back which gets you the ring in one of four finishes Silver Black Stealth or Gold In the box you ll receive the charging plate and a USB C cable and as part of the deal you ll get a six month trial of Oura s subscription service Membership which costs a month for new users will entitle you to “daily health insights “personalized recommendations as well as more video and audio sessions Any existing Oura user who upgrades to the new ring will get a lifetime membership thrown in for free I want to be fair here and say that I understand why Oura is pivoting to this recurring revenue model It s not as if other companies in this space like Fitbit aren t doing the same in the hope of bolstering their bottom lines And that s before we get to talk about how much lock in the Apple Watch gets as a consequence of Fitness But I also think there s a difference between the sort of product that those rivals are offering compared to Oura s product After all Apple and Fitbit can both offer coaching both on their devices and on bigger screens which Oura can t Not to mention that Oura is really only able to offer guided audio clips and short videos through its app And that while Apple and Fitbit are selling their devices as having the potential to become Capital F Fitness gear the Oura really isn t But then again that s not what Oura is pitching here it s for the meditator the runner the cyclist who doesn t want to strap something beefy to their wrist Wrap UpHere s the problem with reviewing Oura It s not a device that every fitness person will love If you want something with more versatility you d buy a smartwatch and have done with it Oura is more of a subtle product for people who want to be less ostentatious about their health or simply want something that slips into their lives and does the job Honestly since I m not a gym bro I really like the data the ring offers me without any fuss or muss As for the subscription it s likely that Oura will have to keep squeezing as many new features and insights as possible out of this new hardware Between that and vastly improving its currently slender content library it s worth it if you re a paid up member of the Oura family But and this is more a comment on the industry as a whole rather than a slight against Oura itself I do find this need for every company to squeeze some rental income out of their users to be a little bit grating |
2022-01-20 15:00:32 |
海外TECH |
Network World |
Cisco chases quantum tech |
https://www.networkworld.com/article/3648010/cisco-chases-quantum-tech.html#tk.rss_all
|
Cisco chases quantum tech When it comes to hardcore quantum computing players Cisco might not be the first company you think of but that could change a lot in and beyond For starters the company is investing in photonics development which will enable quantum communications as well as other hardware and software technologies for quantum computing networking and cryptography Researchers show quantum computers can reasonDeveloping quantum technologies was also one of the top predictions on the predictions list of Cisco s executive vice president general manager and Chief Strategy Officer Liz Centoni To read this article in full please click here |
2022-01-20 15:11:00 |
海外科学 |
NYT > Science |
U.S. Moves to Drop Case Against M.I.T. Scientist Accused of Hiding China Links |
https://www.nytimes.com/2022/01/20/science/gang-chen-mit-china-initiative.html
|
U S Moves to Drop Case Against M I T Scientist Accused of Hiding China LinksGang Chen a professor of mechanical engineering was arrested a year ago accused of concealing his affiliations with Chinese government institutions |
2022-01-20 15:22:19 |
海外TECH |
WIRED |
Scientists Are Racing to Understand the Fury of Tonga’s Volcano |
https://www.wired.com/story/tonga-volcano-eruption-science
|
Scientists Are Racing to Understand the Fury of Tonga s VolcanoThe Hunga Tonga Hunga Ha apai volcanic eruption and tsunami that have devastated Tonga are unlike anything volcanologists have seen before |
2022-01-20 15:17:00 |
金融 |
RSS FILE - 日本証券業協会 |
株券等貸借取引状況(週間) |
https://www.jsda.or.jp/shiryoshitsu/toukei/kabu-taiw/index.html
|
貸借 |
2022-01-20 15:30:00 |
金融 |
RSS FILE - 日本証券業協会 |
全国上場会社のエクイティファイナンスの状況 |
https://www.jsda.or.jp/shiryoshitsu/toukei/finance/index.html
|
上場会社 |
2022-01-20 15:30:00 |
金融 |
金融庁ホームページ |
「前払式支払手段を発行する者の無届出業者・無登録業者にご注意」英語版を公表しました。 |
https://www.fsa.go.jp/common/about/pamphlet/2022purika.pdf
|
英語版 |
2022-01-20 16:00:00 |
ニュース |
BBC News - Home |
Boris Johnson: I've seen no evidence of plotters being blackmailed |
https://www.bbc.co.uk/news/uk-politics-60068612?at_medium=RSS&at_campaign=KARANGA
|
boris |
2022-01-20 15:37:40 |
ニュース |
BBC News - Home |
UK refuses permission for £1.2bn cross-Channel cable |
https://www.bbc.co.uk/news/uk-england-hampshire-60073706?at_medium=RSS&at_campaign=KARANGA
|
normandy |
2022-01-20 15:18:19 |
サブカルネタ |
ラーブロ |
22/020 こうや麺房:ワンタン麺、醤蛋 |
http://ra-blog.net/modules/rssc/single_feed.php?fid=195727
|
感染拡大 |
2022-01-20 15:05:16 |
サブカルネタ |
ラーブロ |
博多長浜らーめん ぼたん@大塚 「ラーメン」 |
http://ra-blog.net/modules/rssc/single_feed.php?fid=195725
|
続きを読む |
2022-01-20 15:01:55 |
北海道 |
北海道新聞 |
道内オミクロン感染疑い77% 国の専門家組織 |
https://www.hokkaido-np.co.jp/article/635953/
|
厚生労働省 |
2022-01-21 00:18:10 |
コメント
コメントを投稿