投稿時間:2023-02-03 00:30:12 RSSフィード2023-02-03 00:00 分まとめ(33件)

カテゴリー等 サイト名等 記事タイトル・トレンドワード等 リンクURL 頻出ワード・要約等/検索ボリューム 登録日
IT ITmedia 総合記事一覧 [ITmedia News] M2搭載「MacBook Air」などが特価 Amazonのタイムセール祭りで(ただし一部完売) https://www.itmedia.co.jp/news/articles/2302/02/news126.html amazon 2023-02-02 23:30:00
python Pythonタグが付けられた新着投稿 - Qiita Flet - アイコンブラウザの改良 https://qiita.com/donraq/items/9f39ebe8274b6c58ff2d https 2023-02-02 23:08:13
js JavaScriptタグが付けられた新着投稿 - Qiita 【GAS】スプレッドシートの値をjson化する https://qiita.com/hajimejimejime/items/a5d3babf94d0d21f82f9 value 2023-02-02 23:50:09
AWS AWSタグが付けられた新着投稿 - Qiita Redshift Automated materialized viewsを試してみた https://qiita.com/zumax/items/21fcfc68a4c862ee7bcc tedmaterializedviewsredsh 2023-02-02 23:20:41
技術ブログ Developers.IO [Nodejs] 配列の操作はLodashを使いこなせると便利 https://dev.classmethod.jp/articles/nodejs-array-manipulation-is-useful-if-you-master-lodash/ delivery 2023-02-02 14:54:35
技術ブログ Developers.IO I created a VPC with both Public and Private Subnets https://dev.classmethod.jp/articles/i-created-a-vpc-with-both-public-and-private-subnets/ I created a VPC with both Public and Private SubnetsIntroduction Hemanth of Alliance Department here In this blog i created a VPC with both Public and Private S 2023-02-02 14:02:59
海外TECH MakeUseOf These 9 DIY Projects Are Perfect for Any Cat Lover https://www.makeuseof.com/diy-projects-cat-lover/ bucks 2023-02-02 14:45:15
海外TECH MakeUseOf Is Adobe Using Your Files to Train Its AI? How to Opt Out if So https://www.makeuseof.com/is-adobe-using-your-data-to-train-ai-opt-out/ adobe 2023-02-02 14:30:16
海外TECH MakeUseOf Samsung Galaxy S23 and S23+: The Top 7 Features https://www.makeuseof.com/galaxy-s23-and-s23-plus-top-features/ android 2023-02-02 14:16:15
海外TECH MakeUseOf Xiaomi Smart Band 7 Review: The Best Value Fitness Tracker You Can Buy https://www.makeuseof.com/xiaomi-mi-band-7-review/ Xiaomi Smart Band Review The Best Value Fitness Tracker You Can BuyThe Mi Band has tons of improvements to help monitor your heart rate blood oxygen levels and overall fitness It can t be beaten for value 2023-02-02 14:05:15
海外TECH DEV Community Implement Single Sign On in Medusa https://dev.to/carpad88/implement-single-sign-on-in-medusa-3284 Implement Single Sign On in Medusa IntroductionMedusa is an open source headless commerce that offers out of the box functionalities needed to build an ecommerce platform An important feature Medusa provides is its flexibility in adapting functionalities according to your needs Medusa allows users to authenticate on the platform using email and password or with a bearer token However the authentication flow can be customized due to Medusa s flexibility This tutorial will guide you through the process of customizing the auth flow of your Medusa server To achieve that you will allow your customers to log in with a magic link received in their email You can find the final code for this tutorial in this GitHub repository What is Medusa Medusa is a composable engine that combines an amazing developer experience with endless customizations You can add additional endpoints to perform custom actions or add new services to implement business logic for example to modify the authentication flow You can also use subscriptions to build automation for example to send an email using a notification provider when a specific event happens PrerequisitesTo follow along with this tutorial you need the following A working Medusa server application You can follow the quickstart guide to getting started Your Medusa server should be configured to work with PostgreSQL and Redis You can follow the Configure your Server documentation guide to learn how to do that An email service to send emails to implement passwordless login You can follow this guide to enable the Sendgrid plugin available on the Medusa ecosystem A Next js starter to test the new authentication flow added to the Medusa server However you can still follow along using a different storefront framework yarn package manager you can follow these instructions to install it You can also use npm as an alternative Passwordless LoginA passwordless login is a strategy to verify a user s identity without a password Several alternatives to achieve this include possession factors such as one time passwords OTPs or registered smartphone numbers biometrics using fingerprint or retina scans and magic links sent by email to the user For this tutorial you will focus on implementing the magic link strategy See the flow below Customers visit the Medusa store write their email and click the Enter button The Medusa store requests the auth endpoint on the Medusa server which sends an email to the customer with a magic link Customers click on the magic link The Medusa server validates the link logs users in sets a session cookie and redirects customers to the Storefront Add Passwordless ServiceThe first step is creating a service that will emit an event to send emails with the magic link to customers and verify tokens from those magic links Start by installing the jsonwebtoken package that will be used to sign in and verify the tokens yarn add jsonwebtokenNext create the file src services password less ts with the following content import CustomerService EventBusService TransactionBaseService from medusajs medusa import MedusaError from medusa core utils import EntityManager from typeorm import jwt from jsonwebtoken class PasswordLessService extends TransactionBaseService protected manager EntityManager protected transactionManager EntityManager private readonly customerService CustomerService private readonly eventBus EventBusService private readonly configModule any private readonly jwt secret any constructor container super container this eventBus container eventBusService this customerService container customerService this configModule container configModule const projectConfig jwt secret this configModule this jwt secret jwt secret async sendMagicLink email isSignUp const token jwt sign email this jwt secret expiresIn h try return await this eventBus withTransaction this manager emit passwordless login email isSignUp token catch error throw new MedusaError MedusaError Types UNEXPECTED STATE There was an error sending the email async validateMagicLink token let decoded const projectConfig jwt secret this configModule try decoded jwt verify token jwt secret catch err throw new MedusaError MedusaError Types INVALID DATA Invalid auth credentials if decoded hasOwnProperty email decoded hasOwnProperty exp throw new MedusaError MedusaError Types INVALID DATA Invalid auth credentials const customer await this customerService retrieveRegisteredByEmail decoded email catch gt null if customer throw new MedusaError MedusaError Types NOT FOUND There isn t a customer with email decoded email return customer export default PasswordLessServiceThe first method sendMagicLink creates and signs a token with the customer s email received as a parameter and an expiration of one hour Then it emits the passwordles login event using the eventBus so the PasswordLessSubscriber which you will create later can execute its handler to send the email The validateMagicLink method verifies there is a token and that it is valid that is that it has not been manipulated by a third party or that it has not expired Lastly it tries to get the customer using the customerService and if it s successful it returns the retrieved customer Add Passwordless EndpointsThe next step is to add custom endpoints so you can use the strategy from the storefront Create the file src api index ts with the following content import Router json from express import cors from cors import jwt from jsonwebtoken import projectConfig from medusa config const corsOptions origin projectConfig store cors split credentials true const route Router export default gt const app Router app use cors corsOptions app use json app use auth route route post passwordless sent async req res gt const manager req scope resolve manager const customerService req scope resolve customerService const email isSignUp req body let customer await customerService retrieveRegisteredByEmail email catch gt null if customer amp amp isSignUp res status json message Customer with email was not found Please sign up instead if customer amp amp isSignUp customer await customerService withTransaction manager create email first name last name has account true const passwordLessService req scope resolve passwordLessService try await passwordLessService sendMagicLink customer email isSignUp return res status json message Email sent catch error return res status json message There was an error sending the email route get passwordless validate async req res gt const token req query const projectConfig req scope resolve configModule if token return res status json message The user cannot be verified const passwordLessService req scope resolve passwordLessService try const loggedCustomer await passwordLessService validateMagicLink token req session jwt store jwt sign customer id loggedCustomer id projectConfig jwt secret expiresIn d return res status json loggedCustomer catch error return res status json message The user cannot be verified return app In this file the passwordless sent endpoint does some validations before calling the passwordLessService to emit the event The validations include checking if there is a registered customer with that email If not it returns a response asking the customer to sign up first If there is no registered customer but the request is a signUp it creates a new customer on the database Lastly when the customer is already retrieved or created it calls the sendMagicLink method on the passwordLessService to send the email The passwordless validate endpoint verifies the existence of a token in the query string and validates it with the validateMagicLink method on the passwordLessService If the token is valid the service will fetch and return the customer details so the endpoint can set a session and send a response to the storefront Add Passwordless SubscriberThe last step is creating a subscriber with a handler function to send emails with a magic link whenever a passwordless login event is emitted To send the emails this tutorial uses SendGrid as a notification provider but you can use the email provider of your choice as the flow would be very similar Create the file src subscribers password less ts with the following content class PasswordLessSubscriber protected sendGridService any constructor eventBusService sendgridService this sendGridService sendgridService eventBusService subscribe passwordless login this handlePasswordlessLogin handlePasswordlessLogin async data gt await this sendGridService sendEmail to data email from process env SENDGRID FROM templateId data isSignUp process env SENGRID REGISTER TEMPLATE ID process env SENGRID LOGIN TEMPLATE ID dynamic template data token data token export default PasswordLessSubscriber The handler handlePasswordlessLogin uses the SendGrid service with a dynamic template to send the magic link that customers will click to log in This email includes a storefront URL with a token passed as query string Customers can click or copy the URL to log in there s no need to type a password Be sure to have two templates on Sendgrid one for signup and another for login Also remember to get their IDs and add those values to your env file These IDs will be retrieved by your PasswordLessSubscriber when sending an email SENGRID LOGIN TEMPLATE ID d a SENGRID REGISTER TEMPLATE ID d b Set up New Auth Flow on the StorefrontThis section will test the new authentication strategy added to your Medusa server For this tutorial the Next js starter Storefront is used as an example but you can use any other framework and the process would be very similar Login PageOpen the src modules account components login index tsx file and replace its content with the following code import LOGIN VIEW useAccount from lib context account context import Button from modules common components button import Input from modules common components input import React useState from react import FieldValues useForm from react hook form interface SignInCredentials extends FieldValues email string const Login gt const loginView useAccount const setCurrentView loginView const authError setAuthError useState lt string undefined gt undefined const linkSent setLinkSent useState lt string undefined gt undefined const register handleSubmit formState errors useForm lt SignInCredentials gt const onSubmit handleSubmit async credentials gt const response await fetch http localhost auth passwordless sent method POST body JSON stringify credentials headers Content Type application json if response ok response json then data gt setAuthError data message if response ok setLinkSent Check your email for a login link return lt div className max w sm w full flex flex col items center gt linkSent amp amp lt gt lt h className text large semi uppercase mb gt Welcome back lt h gt lt p className text center text base regular text gray mb gt Sign in to access an enhanced shopping experience lt p gt lt form className w full onSubmit onSubmit gt lt div className flex flex col w full gap y gt lt Input label Email register email required Email is required autoComplete email errors errors gt lt div gt authError amp amp linkSent amp amp lt div className text rose w full text small regular mt gt authError lt div gt lt Button className mt gt Enter lt Button gt lt form gt lt span className text center text gray text small regular mt gt Not a member lt button onClick gt setCurrentView LOGIN VIEW REGISTER className underline gt Join us lt button gt lt span gt lt gt linkSent amp amp lt gt lt h className text large semi uppercase mb gt Login link sent lt h gt lt div className bg green text green p my w full gt lt span gt linkSent lt span gt lt div gt lt gt lt div gt export default LoginThe main changes that can be observed are The update of the handleSubmit function to request the endpoint auth passwordless sent to send an email with a magic link to the customer The removal of the password field A div element to show a successful notification if the email was sent correctly Registration PageOpen the src modules account components register index tsx file and replace its content with the following import LOGIN VIEW useAccount from lib context account context import Button from modules common components button import Input from modules common components input import Link from next link import useState from react import FieldValues useForm from react hook form interface RegisterCredentials extends FieldValues email string const Register gt const loginView useAccount const setCurrentView loginView const authError setAuthError useState lt string undefined gt undefined const linkSent setLinkSent useState lt string undefined gt undefined const register handleSubmit formState errors useForm lt RegisterCredentials gt const onSubmit handleSubmit async credentials gt credentials isSignUp true const response await fetch http localhost auth passwordless sent method POST body JSON stringify credentials headers Content Type application json if response ok response json then data gt setAuthError data message if response ok setLinkSent Check your email to activate your account return lt div className max w sm flex flex col items center mt gt linkSent amp amp lt gt lt h className text large semi uppercase mb gt Become a Acme Member lt h gt lt p className text center text base regular text gray mb gt Create your Acme Member profile and get access to an enhanced shopping experience lt p gt lt form className w full flex flex col onSubmit onSubmit gt lt div className flex flex col w full gap y gt lt Input label Email register email required Email is required autoComplete email errors errors gt lt div gt authError amp amp lt div gt lt span className text rose w full text small regular gt authError lt span gt lt div gt lt span className text center text gray text small regular mt gt By creating an account you agree to Acme amp apos s lt Link href content privacy policy gt lt a className underline gt Privacy Policy lt a gt lt Link gt and lt Link href content terms of use gt lt a className underline gt Terms of Use lt a gt lt Link gt lt span gt lt Button className mt gt Join lt Button gt lt form gt lt span className text center text gray text small regular mt gt Already a member lt button onClick gt setCurrentView LOGIN VIEW SIGN IN className underline gt Sign in lt button gt lt span gt lt gt linkSent amp amp lt gt lt h className text large semi uppercase mb gt Registration complete lt h gt lt div className bg green text green p my w full gt lt span gt linkSent lt span gt lt div gt lt gt lt div gt export default RegisterThe changes that you can watch there are The update of the handle function to request the endpoint auth passwordless sent to send an email with a magic link to the customer after registration The removal of the first name last name password and phone fields on the registration form A div element to show a successful notification if the email was sent successfully Validation PageCreate the new page src pages account validate tsx with the following content import Layout from modules layout templates import React ReactElement useEffect useState from react import useRouter from next router import useAccount from lib context account context import Spinner from modules common icons spinner const Validate gt const refetchCustomer retrievingCustomer customer useAccount const authError setAuthError useState lt string undefined gt undefined const router useRouter useEffect gt const token router query token if token fetch http localhost auth passwordless validate token token credentials include then response gt if response ok response json then data gt setAuthError data message refetchCustomer refetchCustomer retrievingCustomer router if authError return lt div className flex items center justify center w full min h px h full text red gt The link to login is invalid or has expired lt div gt if retrievingCustomer customer return lt div className flex items center justify center w full min h px h full text gray gt lt Spinner size gt lt div gt if retrievingCustomer amp amp customer router push account return lt div gt lt div gt Validate getLayout page ReactElement gt return lt Layout gt page lt Layout gt export default ValidateWhen users click on the magic link received on their email they will be redirected to the account validate page on the storefront This page will send a request to the Medusa server to check if the token passed as a query parameter in the magic link is valid If the token is valid users will be logged in and redirected to the account page if not an error message will be shown The storefront page URL where the user is redirected from the magic link has to match the URL added to the SendGrid templates Test Passwordless StrategyTo test out the passwordless strategy first in your terminal run the following commands to transpile the TypeScript files to JavaScript files on your Medusa server yarn run buildNext start your Medusa server running the next commandyarn startand start the Next js Storefront yarn run devThen go to the URL http localhost Click on the Account link on the navbar and you should get this page You can t log in right now because you need to register first Click on the Join us link below the Enter button and you should get the registration page Fill out the form with your email and click on the Join button You should see a notification that says the registration was completed Now check your inbox email and you should see a new email with the template you configured previously in Sendgrid Click on the Activate account button A new tab in your browser will be open on the URL http localhost account validate if your magic link is valid you will be redirected to the profile page Log out of your account go to the login page and ask for a new magic link to log in You should receive a new mail with the login template from Sendgrid with a new magic link Click the Login button and you will be logged in again without writing any password What s Next As you can see it is straightforward to customize the authentication flow on your Medusa server From now on you can Extend the passwordless strategy to send one time passwords OTP by email or SMS Add social methods such as Facebook Twitter or GitHub using the Medusa Auth plugin Implement multifactor authentication MFA for administrators You can also check out the following resources to dive more into Medusa s core Learn how to extract your authentication functionality into a Medusa plugin Learn how to create a Subscriber Learn how to send notifications when an event occurs If you have any issues or questions about Medusa feel free to contact the Medusa team via Discord 2023-02-02 14:34:17
海外TECH DEV Community Why we built a Rust-powered desktop app for previewing documentation https://dev.to/doctave/why-we-built-a-rust-powered-desktop-app-for-previewing-documentation-29nd Why we built a Rust powered desktop app for previewing documentationWe took the arguably unusual choice to build a desktop app for documentation If you look around documentation tools generally fall in categories open source CLI tools and cloud based WYSIWYG editors In this post we ll talk about the reasoning that lead us to build a desktop app instead and how it actually works What is it for Our desktop app allows users to preview what their documentation will look like once published It also catches errors such as broken links or syntactical problems Users can open our app next to their editor of choice edit their Markdown documents and the app will refresh on every save to reflect the latest version When an error is detected the user is immediately notified and clicking on the link in the error takes you to the page with the issue While my opinion is obviously biased this fast feedback loop is amazing to work in It takes the app milliseconds to do a complete re render of the project so you re able to move essentially as fast as you type Why a desktop app Doctave is built withdocs as codein mind As said above there are two popular approaches for documentation tools CLIs and cloud based WYSIWYG editors The point of docs as code is working on local files in source control so the cloud was out immediately So this leaves the CLI option There s nothing technically that would have stopped Doctave from having this interface doctave serve Serving your docs at http localhost But here are the negatives for requiring a CLI Better UXThere has been a resurgence of desktop applications in the past few years This is likely partly due to technologies like Electron making it easier to ship applications built with web technologies as cross platform desktop apps but it s also arguablybecause the user experience can be better Our users love that the preview and error checking happen in one place You don t have to spin up terminal sessions and swap between an editor a terminal and a browser Also our app is fast We are using Tauri for the shell of our app and the business logic that compiles your documentation is written in Rust It runs natively inside Tauri and not in the browser environment more on this below This is how we can get such fast response times we run native code instead of a bundle of JavaScript or even WebAssembly Would it be possible to do this in a CLI Yes but the desktop app gives us a great environment to take advantage both native code and web technologies Finally updates become trivial Tauri s built in update function has worked flawlessly across operating systems ensuring our users have the latest and greatest version with minimal headache You get a pop up every time there s a new version and the update happens automatically There isn t really a universal way to update CLIs Non developer usersA lot of people working with technical documentation are not developers themselves They are still technical but in roles like tech writers product managers or support agents They are comfortable on the command line can use Git but do not want to spend time understanding why their version of OpenSSL does not match what is expected If you are expecting your users to setup a complex development environment to run your tool you are alienating this important group of users Even developers get frustrated when small environment differences cause npm install to fail There are ways to mitigate this such as building static binaries But you still have the problem of getting your users to update your SDK when you release features you have to support different package managers you have to make sure your software is not flagged by the OS as malicious and much more A common comment we hear from our users it s just easier to use Doctave How does it work As mentioned above Doctave uses Tauri as the shell of our application Think of it as a lightweight and security focused Electron It s a very interesting project that I highly recommend checking out For our purposes here are the key features that are interesting It uses each operating system s native web view making app bundlessignificantly smallerYou can code your local backend in Rust which you can invoke from insidethe web view NOTE this is not a web server backend This is code running natively inside the local Tauri process Doctave s core documentation project parsing code is written in Rust and we call it libdoctave It takes as input a bunch of files and creates an in memory structure that you can use to render a Doctave documentation site It is used both in the desktop app and on our web platform written in Elixir via Rustler This is how we are able to share code across the desktop and the web platform We can render the same content identically regardless of where we are Rendering a pageAs an example let s walk through what happens when Doctave renders a page you are editing First Doctave is running a thread inside our local backend that is monitoring filesystem events If it detects a change it triggers a refresh of the project Here s how that works The backend re reads all the project files from diskIt feeds those files to libdoctave to create an in memory representation of the projectlibdoctave first runs a build stage to check the project is syntactically correctlibdoctave next runs a verify stage where all pages are checked for issuesFinally the requested page s HTML is serialized and sent to the frontend to display along with any errorsThis all happens in single digit milliseconds every time you edit a file As you can see there is still a lot of room for optimization if ever required We could be smarter about incrementally updating the libdoctave in memory representation We could reduce IO by only reading the files that have changed So far however that has not been necessary Desktop apps rock Betting on Tauri and having a desktop app in general has been a great decision Especially with our choices of technologies namely Rust this combination has been a delightful if somewhat unconventional tech stack Every startup has a certain number of innovation tokens that you can use on risky and or new technologies In our case this was a great investment 2023-02-02 14:25:36
海外TECH DEV Community The road from Ember classic to Glimmer components https://dev.to/otainsight/the-road-from-ember-classic-to-glimmer-components-4hlc The road from Ember classic to Glimmer componentsIn late the Ember js Octane edition was released which included a new way of writing components Glimmer components Components now extend the component class from the Glimmer package instead of Ember Besides this minor difference in importing there s a large difference in functionality This article will go over the differences reasons why you would want to upgrade and an upgrade strategy to tackle this in large codebases Classic vs GlimmerGlimmer components can be seen as a slimmed down version of classic components Most lifecycle hooks were removed Arguments are scoped and built upon auto tracking reactivity from Glimmer There s no more HTML wrapping element They use native class syntax And a lot of classic leftovers were cleaned up The following example implements a component which copies the text passed as argument to the clipboard when clicking a button When using classic Ember components it could be implemented as follows copy to clipboard jsimport Component from ember component import set from ember object export default Component extend isCopied false actions async copyToClipboard await navigator clipboard writeText this text set this isCopied true lt copy to clipboard hbs gt lt button action copyToClipboard gt if isCopied Copied Click to copy text lt button gt The same component using Glimmer would look like this copy to clipboard jsimport Component from glimmer component import tracked from glimmer tracking import action from ember object export default class CopyToClipboard extends Component tracked isCopied false action async copyToClipboard await navigator clipboard writeText this args text this isCopied true lt copy to clipboard hbs gt lt button on click this copyToClipboard gt if this isCopied Copied Click to copy text lt button gt The Glimmer component can make use of decorators as it uses native class syntax There is a clear separation between arguments passed to the component here text and the local state isCopied Regular assignment expressions can be used to update state that should trigger template rerenders thanks to Glimmer auto tracking And there s a lot more improvements which aren t illustrated in this small example Why migrate to Glimmer components Every code migration requires engineering time which can not be used to build new products to sell to customers So for a business to invest into refactors and migrations there has to be another benefit Classic components in Ember are still supported in the latest major version so why upgrade The following benefits for us made it worth the trade off One way of doing thingsGlimmer components for new code became the standard practice since the release of Ember Octane This caused our codebases to contain two component types This adds extra mental overhead when working in codebases which contain both You have to be aware of which type of component you re working with and make changes accordingly For people new to Ember this can be extra confusing Closer to native JavaScript experienceGlimmer components contain very little Ember specific code practices compared to classic components This makes it easier for people to get started in Ember coming from a different background Every JavaScript developer should be able to get started in our codebase and get up to speed relatively quickly Rendering performanceThe previous points are nice from a developers perspective There s however also a benefit for customers Glimmer components render substantially faster than classic components TypeScript supportTypeScript has proven it s here to stay in the wider JavaScript ecosystem It has risen in interest and kept its place as the most popular JavaScript flavour In Ember acknowledged official TypeScript support with a dedicated core team Glimmer components unlock the full potential of TypeScript support in Ember Template type checking with Glint is also under active development Exciting Future proof a codebaseEmber js development doesn t stagnate Progress is already being made for new improvements to the current component model The RFC for first class component templates has been accepted and merged in and will provide new benefits to Ember users By first adopting Glimmer components we re prepared for what s coming next Migration strategyWhile you could jump straight in and start migrating every component one by one we decided to go for a different strategy For smaller codebases migrating components one by one can be a feasible approach but this can be cumbersome for large codebases think K lines of code This effort is way too large for a single person and has too many side effects This is why we broke up our migration effort into nine milestones Native JavaScript class syntax for componentsHistorically Ember used object syntax to define components As class syntax matured in JavaScript in general it also became the standard for Glimmer components Classic components in Ember provide support for both object and class syntax This makes switching to class syntax a great first step towards Glimmer components Ember provides a codemod to convert object syntax to class syntax This has saved us a tremendous amount of time By doing this our development experience also greatly improved No implicit thisArguments in Glimmer components are bundled in the args object This avoids clashes with custom defined properties in the component s own scope and creates a clear distinction between properties defined locally and passed arguments Glimmer component templates reflect this by using the prefix when using arguments and the this prefixes when accessing properties of the backing class This way of working is also supported in classic components even though arguments are in the same scope as local properties This means the migration is non blocking and luckily there s a codemod available for this as well The codemod however can t make a distinction between arguments and local properties and is something that will be cleaned up in a later phase Getting the simple components out of the wayBy reviewing all components and checking which used none or limited of the classic component features we were able to identify a set of components which were easily migrated to Glimmer Examples are components which did not have any JavaScript logic as Glimmer introduced the concept of template only components which work without an explicit backing class This was low hanging fruit and by getting them out of the way directly we avoided unnecessary overhead of the other phases Remove outer HTML semanticsClassic components have a wrapping HTML element which doesn t exist in Glimmer components A first step to prepare for this removal was to get rid of all properties that have an impact on this wrapping element In most cases this usage was the classNames attribute which added CSS classes to the wrapping element Converting was done by adding these properties directly in the template of the component Making components taglessWrapping elements of classic components can be removed by setting the tagName to an empty string hence the name “tagless components The tagName decorator from the ember decorators package can be used to do this This makes it easy to spot and clean up in a later phase Making the component tagless in this phase still introduces breaking changes which we fixed together with adding the decorator A common pitfall we noticed was that attributes on an Ember component had no place to be set and were dropped In Glimmer you explicitly need to tell where the passed attributes have to be placed This can be done by using the attributes syntax Often this caused styling bugs as classes or id s weren t set Our visual tests came in useful to detect these issues If you re interested in how we set up visual testing check out our talk at EmberFest A second issue was that lifecycle hooks that depended on this wrapping element no longer got invoked Those lifecycle events contain the Element reference e g didInsertElement To migrate these we made use of the render modifiers package Ever since Glimmer and Octane there are new ways to encapsulate this logic like using the constructor and destructor writing custom modifiers or using resources For the sake of limiting the scope we opted to keep this a separate effort Removing MixinsMixins were a way to share common code across different components In Glimmer they re no longer supported We reviewed our mixins and listed a way of restructuring them as in most cases mixins could be replaced with a more specific way of sharing code Common cases were template formatting logic which could be made into a helper shared constants which could be moved to a separate file and utility functions which could be separated as they didn t require the Ember context For usages that didn t fit nicely in any of the standard ways of sharing code we opted for creating custom class decorators as described in “Do You Need EmberObject by Chris Garrett Removing deprecated lifecycle eventsIn phase a subset of deprecated lifecycle hooks were already removed There are still others left which are not bound to the wrapping element like didRender willUpdate and others Removing these lifecycle events can be done using a similar strategy as used in phase Generally they can also be replaced with native getters Removing observersUsage of observers has been discouraged in Ember for a long time They were often overused when a better alternative was available could cause performance issues and were hard to debug With Glimmer components the observes decorator is also no longer supported Refactoring of observers can be non trivial as it requires you to think of your state updates differently Rather than reacting to changes Glimmer introduced autotracking which allows marking of inputs which should trigger UI updates Some usages can be replaced by working with getters and autotracking In other cases the did update modifier of the render modifiers package can be used as a replacement Writing custom modifiers is also an option here And finally …extending from Glimmer Now that all classic specific features have been removed it is time to extend the Glimmer component base class instead of the Ember classic one By making this change arguments will move to the args object instead of the component s local scope Usages in the backing class have to be adjusted to use this step in between One edge case to take into account is that by the change of this scope they no longer override default values in the component This can be resolved by writing a native getter which returns the argument from the args object and falls back to a default in case the argument is not passed Likewise argument usages in the template also have to be updated to indicate the difference in scope The prefix has to be set for arguments as the codemod didn t handle this like mentioned in phase Finally the tagName decorator added in phase can be removed as Glimmer components are always tagless ConclusionThis article provided a strategy to migrate large Ember codebases from classic to Glimmer components Following this component migration ensures codebases don t get stuck in the past Even better they unlock modern features Ember provides and new ones being worked on at the very moment 2023-02-02 14:20:47
Apple AppleInsider - Frontpage News How to recover Apple ID accounts with Advanced Data Protection on https://appleinsider.com/inside/ios-16/tips/how-to-recover-apple-id-accounts-with-advanced-data-protection-on?utm_medium=rss How to recover Apple ID accounts with Advanced Data Protection onApple s standard data safety practices along with its new ultra secure protection option come with some risk if you forget your Apple ID password Here s what to do if that happens It might happen to us all at some point you ll simply get confused about which password was for what and enter the wrong one for your Apple ID too many times or perhaps someone else is attempting to access your Apple ID account Suddenly you can t access Apple s myriad services or your iCloud and you re not sure what to do For most users the solution is pretty simple Read more 2023-02-02 14:44:43
海外TECH Engadget Documents show Meta paid for data scraping despite years of denouncing it https://www.engadget.com/meta-data-scraping-lawsuit-145519311.html?src=rss Documents show Meta paid for data scraping despite years of denouncing itMeta has routinely fought data scrapers but it also participated in that practice itself ーif not necessarily for the same reasons Bloomberg has obtained legal documents from a Meta lawsuit against a former contractor Bright Data indicating that the Facebook owner paid its partner to scrape other websites Meta spokesperson Andy Stone confirmed the relationship in a discussion with Bloomberg but said his company used Bright Data to build brand profiles spot quot harmful quot sites and catch phishing campaigns not to target competitors Stone added that data scraping could serve quot legitimate integrity and commercial purposes quot so long as it was done legally and honored sites terms of service Meta terminated its arrangement with Bright Data after the contractor allegedly violated company terms when gathering and selling data from Facebook and Instagram Neither Bright Data nor Meta is saying which sites they scraped Bright Data is countersuing Meta in a bid to keep scraping Facebook and Instagram arguing that it only collects publicly available information and respects both European Union and US regulations Meta has spent years suing individuals and companies for scraping its platforms without permission In some cases it has accused companies of masking their activities and accessing sensitive details that require logins Last year for instance Meta sued Octopus last year over a tool that reportedly collected sign ins and took private information like dates of birth and phone numbers However the Bright Data revelation isn t a good look for a company that has faced numerous privacy violation accusations including some related to scrapers The EU fined Meta € million about million last fall for allegedly failing to protect Facebook users against scraping that grabbed and exposed private information This latest case isn t guaranteed to create further trouble but certainly won t help Meta s defense 2023-02-02 14:55:19
海外TECH Engadget The best iPads for 2023: How to pick the best Apple tablet for you https://www.engadget.com/best-ipads-how-to-pick-the-best-apple-tablet-for-you-150054066.html?src=rss The best iPads for How to pick the best Apple tablet for youApple s iPad lineup is both more interesting and more complicated than it s been in years After last October s launch of the th generation iPad and the M powered iPad Pro Apple now sells three tablets in the inch range that pack broadly similar designs but have key differences when it comes to internal components and accessory support Last year s inch iPad remains for sale but seemingly targets a different market than its “next generation successor of the same name The iPad mini is still doing its thing too If you re confused about which to buy you re not alone Deciding which iPad is the best for you isn t as cut and dry as it has been in the past We re here to break down the pros and cons detail how they compare to each other and help make your decision a bit easier Best for most iPad AirOf the six iPad models currently on sale the iPad Air is the closest to being universally appealing We gave it a score of in our review of the most recent edition It has the same elegant and comfortable design language as the iPad Pro while costing less with a bright sharp and accurate inch display surrounded by thin bezels and flat edges It comes with a USB C port similar to what you d find on a MacBook and many other non iPhone devices and while it s not a Thunderbolt connection as on the iPad Pro simply being able to charge the Air with the same cable you use with your other gadgets is a plus Apple refreshed the Air in with its M system on a chip which is the same silicon found in the entry level MacBook Air This isn t Apple s newest SoC but it s still more than powerful enough for virtually any task you can throw at it and an increasing number of iPadOS features are exclusive to M series chips The iPad Air is also compatible with Apple s best accessories including the second generation Pencil stylus and the excellent Magic Keyboard just like the inch iPad Pro These add a good bit of cost to the bottom line but for digital artists or frequent typers they re there The middle of Apple s iPad lineup is a bit congested If you need more than the Air s default GB of storage you might as well step up to the inch iPad Pro which starts at GB and packs a better Hz display and M chip for not much more than a higher capacity Air The display on the iPad Pro is better too The new inch iPad isn t bad either but with its non laminated display and lacking accessory support it s a harder sell unless you see it on deep discount Still while it s not cheap the iPad Air is Apple s best blend of price and performance for most Best budget iPad th generation If you can t afford the Air or if you just don t use your tablet heavily enough to warrant spending that much it s perfectly safe to get the th gen iPad instead Starting at for a GB model ーand regularly available for less than ーit s by far the most wallet friendly way into iPadOS While its hardware is an obvious step down from the models above it s still more than capable for the essentials We gave the th gen iPad model a review score of last year This is the only “current iPad to follow Apple s older design language It s just a tiny bit thicker and heavier than the th gen iPad and iPad Air but its wider bezels mean there s only enough room for a inch display Like the th gen iPad that screen isn t laminated and more susceptible to glare though it s just as sharp There s a Home button located on the bottom bezel that also houses a Touch ID fingerprint scanner and the device charges via Lightning port rather than USB C Its speakers don t sound as nice either but it s the only iPad to still have a headphone jack and its MP front camera is fine though it s not landscape oriented as on the th gen iPad The th gen iPad runs on Apple s A Bionic which is the same SoC used in s iPhone series It won t be as fluid or futureproof as the M but it s plenty quick for casual tasks In terms of first party accessories the tablet supports Apple s Smart Keyboard and first gen Pencil stylus Those are less convenient than the company s newer options but they re at least there In the end it s all about the price The th gen iPad is the most affordable model in Apple s lineup and those savings go a long way toward papering over its issues Best for one handed use iPad mini nbsp The iPad mini is exactly what it sounds like the small iPad It s easily the shortest xx inches and lightest pounds for the WiFi model of every current iPad with an inch display that s more comfortable to operate with one hand We gave the iPad mini a review score of last year Its design follows closely after that of the iPad Air squared off edges thin bezels no Home button a Touch ID sensor in the power button stereo speakers solid cameras and a USB C port Its display is technically sharper but otherwise gives you the same max brightness lamination anti reflective coating and wide color gamut It doesn t have a “Smart Connector to hook up Apple made keyboards but it does support the second gen Apple Pencil The mini runs on Apple s A Bionic SoC the same as the one in s iPhone phones This is technically faster than the chip inside the th gen iPad model and again more than powerful enough for most tasks though it s a step behind the laptop grade M or M The mini has an MSRP of for the GB model and for the GB model That s a lot though in recent months we ve seen both SKUs available online for up to less If you specifically want a smaller tablet ーwhether it s to easily stuff in a bag use with one hand or treat like a high end e reader ーthis is the only option Apple sells and the best tablet in its size range period Best for power users iPad Pro inchThe inch iPad Pro exists in something of its own realm within the Apple tablet lineup It starts at for GB of storage which is more than the M MacBook Air That s well beyond what anyone needs to pay to do the vast majority of iPad things and quite a chunk of change for a platform that still has issues with laptop style productivity But the inch iPad Pro is the best pure piece of tablet hardware that Apple makes We gave the latest iPad Pro a review score of in November The display here can get brighter than the Air s and it has a Hz refresh rate the Air is limited to Hz The inch Pro s Liquid Retina display is more of an upgrade than the inch model though as it s the only iPad to use mini LED backlighting which can deliver higher peak brightness improved contrast and a generally more realistic image Beyond that the Pro runs on Apple s new M SoC which isn t a huge upgrade over the M in real world use but offers more performance overhead going forward The iPad Pro has the same MP rear camera as the Air but adds a MP ultrawide lens and an LED flash plus a LIDAR scanner for AR apps The MP front cameras meanwhile can take shots in portrait mode Beyond that the Pro has a faster Thunderbolt USB C port more robust speakers and Face ID support With its latest refresh it can now recognize when an Apple Pencil is hovering above the display and preview would be inputs There are more storage options going all the way up to TB with the TB and TB models doubling the RAM from GB to GB at a super high cost And it works with all of Apple s best accessories It s a powerhouse and if you do want to use an iPad more heavily for work the roomier display on the inch Pro should make it the most amenable option for all day laptop style use You ll want to add a keyboard to get the most out of that but if you re spending this much on an iPad to begin with that may not be as big of a deal Like the iPad mini this is very much a niche device It s prohibitively expensive and its hulking size makes it less portable than other iPads Certain creatives have made it work as a laptop replacement but for most iPadOS still makes multitasking and other computer y tasks more convoluted than they d be on a similarly priced MacBook It s only a minor upgrade over last year s model too Still as a tablet the inch Pro is deeply powerful 2023-02-02 14:46:58
海外TECH Engadget The best power banks for 2023 https://www.engadget.com/best-power-bank-143048526.html?src=rss The best power banks for Whether you call them battery packs power banks or portable chargers these accessories do one thing well charge your devices when you can t find an open outlet Small enough to fit in a day pack and sturdy enough to live at the bottom of your carry on battery packs can charge your smartphone tablet laptop or even all three at once depending on the size of the battery What size you ll need and any extra features you may find useful will largely depend on the devices you plan on charging up With so many of these accessories on the market right now we tested out a bunch to see which are worth your money What to look for in a portable battery packBattery typeNearly every rechargeable power bank you can buy and most portable devices contain a lithium ion battery These beat other current battery types in terms of size to charge capacity and have even increased in energy density by eight fold in the past years They also don t suffer from a memory effect where battery life deteriorates due to partial charges One drawback you may have heard is the possibility of lithium ion batteries catching fire To limit the danger battery packs require internal mechanisms to limit things like voltage and pressure While you should still make sure a battery isn t exposed to unnecessary stress like excessive heat damage from drops or operating in freezing weather battery packs are considered safe enough to bring on an airplane According to the TSA external batteries rated at Wh or less which all of our recommendations are can fly with you just make sure you stash them in your carry on as they aren t allowed in checked baggage CapacityPower bank manufacturers almost always list a battery s capacity in milliamp hours or mAh Smaller batteries say those that can charge a smartphone to between and percent tend to have a mAh capacity Larger batteries that can recharge laptops and tablets or give phones multiple charges can exceed mAh Unsurprisingly the prices on most batteries goes up as capacity increases and since batteries are physical storage units size and weight go up with capacity as well If you want more power be prepared to spend more and carry around a heavier brick You might think that a mAh power bank could charge a mAh phone to percent twice but that s not the case In addition to simple energy loss through heat dissipation factors like voltage conversion also bring down the amount of juice that makes it into your phone Most manufacturers list how many charges a battery can give a certain smartphone In our tests mAh of battery pack capacity translated to roughly mAh of device charge mAh chargers delivered around mAh to a device and mAh banks translated to about mAh of charge That s an average efficiency rate of around percent PortsWhile the tech world is thankfully moving towards USB C as the standard it s still a mixed bag in the power bank world All of our picks have at least one USB C port and a few also have a USB A port or two Newer Android smartphones charge via USB C iPhones still use the Lightning port but the latest tablets including current generation iPads and newer laptops are typically powered up via USB C When a battery pack has more than one port they usually serve different functions You ll typically see at least one port labeled “in out which means you can use it to both charge the bank and charge your device While USB A ports can power up smartphones and other small devices they can t charge larger devices Plus they aren t as fast as USB C ports overall That s something to keep in mind when you re deciding which ports and cables to use to connect your phone to the pack There s even more variation among USB C ports themselves with different ports on the same device supporting different power transfer rates What that means in practical terms is an iPhone will charge just fine plugged into a power bank s W port But to properly charge say a MacBook or similar laptop it ll need the extra juice supplied by a W port which larger power banks can offer Power banks with more than one port can also charge multiple devices at the same time but speeds and the overall charge delivered will be lower You ll also want to consider your cable For anything larger than a smartphone and to access fast charging capabilities you ll want to use USB C ports and cables But not all cables are created equal even when they have the same USB C plugs on the end If you want power delivered from a W USB C power bank port you ll need a W rated USB C cable Luckily power banks capable of delivering W tend to include a compatible cable For any devices that don t we ve tried and liked Anker s W USB C cable For smaller devices we used this W cable from Nimble and we don t recommend bothering with cables under W For around higher capacity cables will make sure you re not wasting time with connections that limit your potential power transfer DesignFor the most part battery packs have a squared off brick like design though many nod towards aesthetics with attractive finishes and detailing While that doesn t affect how they perform it s a consideration for something you ll interact with regularly Some include extra features like MagSafe compatibility a built in wall plug or even a kickstand Nearly all have some sort of indicator to let you know how much available charge your power bank has left usually expressed with lighted pips near the power button Some of the largest banks take that a step further with an LED display indicating a percentage for the remaining battery which can be helpful if you re relying on a pack in a mobile office setting or something similar How we testedAmy Skorheim EngadgetBefore we even put our hands on a battery pack we did extensive research We considered brands Engadget reviewers and staff have tried over the years and we checked out customer ratings on retail sites like Amazon and Best Buy In all we acquired battery packs ranging from small wireless banks to large multi device batteries Here s the full list MagSafe compatibleApple MagSafe Battery Pack mAh Spigen ArcHybrid Mag mAh Anker Magnetic Battery mAh Anker Magnetic Battery mAh Low capacity ≤mAh Anker Power Bank mAh Anker Power Bank mAh Nimble Champ mAh Biolite Charge PD mAh Mid capacity mAh Otterbox Fast Charge mAh Mophie Powerstation Pro mAh Anker PowerCore K mAh High capacity mAh Mophie Powerstation Pro XL mAh Anker Power Bank mAh Zendure Supertank Pro mAh I tested each battery on an iPhone Plus and a Galaxy S Ultra For the mid and high capacity packs I added an iPad Air th generation to the mix I only charged one device at a time even though some are capable of multiple device charging I charged from fully depleted to percent or until the power bank was dead and didn t use the device while they charged other than to power them on and enter the unlock code Amy Skorheim EngadgetFor the most part I used the cable included with each power bank to charge the Galaxy S Ultra and the iPad Air For the iPhone Plus I used the USB C to Lighting cable that came with Apple s phone In the case of the lower capacity power banks that didn t include a cable or included a USB C to USB A cable I used a W rated USB C to USB C cable For reference here are the battery capacities of each device we used for testing iPhone Plus mAhGalaxy S Ultra mAhiPad Air mAh I noted the times for each charge and the number of charges each bank provided I also paid attention to things like ease of use and overall design Here s what made the cut Best MagSafe compatible battery Spigen ArcHybrid MagI went into this category expecting Apple s own MagSafe battery pack to win And while it performed admirably charging a dead Plus to about percent in an hour and minutes Spigen s ArcHybrid delivered a percent charge in nearly the same amount of time The ArcHybrid firmly attaches to the MagSafe ring and it s flush enough that you can easily hold your phone and use it while charging up Unlike the Apple battery it includes four indicator lights to help you gauge how much juice the pack itself has left Considering Spigen s battery is cheaper than Apple s it s easy to recommend Alternatively Anker s Magnetic battery delivered a larger charge thanks to its mAh capacity boosting the iPhone to percent in three hours with enough left over for an additional percent charge And while the kickstand feature felt mildly useful the battery itself was bulky but that s understandable for a power bank that s twice as large as Spigen s Ultimately the ArcHybrid performed better as a quick and convenient way to give a partial charge to your iPhone on the go It s important to note that wireless charging is less efficient than wired Our tests showed wired battery banks deliver a device charge at around percent efficiency With the wireless chargers that rate dropped to an average of percent Something to keep in mind when weighing the costs both ecological and monetary of wasted energy Specs mAh W max Ports One USB C in outCable USB C to USB CNumber of charges iPhone Charge time iPhone to in h mBest battery for a partial charge on an Android Anker Power BankUntil Android phones get something like MagSafe a wired connection makes the most sense for on the go charges The Anker Power Bank is a cleverly designed unit about the size and shape of a skinny stick of butter The battery charged a depleted Galaxy S Ultra to percent in a little over an hour so you ll be covered if you don t have long between flights to give your phone a bit more juice It also has a built in plug and allows for pass through charging which means it can act as a wall adapter if you re ever stuck with both a dead battery bank and phone but happen to be near an outlet It doesn t come with a cable though so you ll need to provide one that can go from the bank s single USB C port to your device Specs mAh W maxPorts One USB C and wall outlet prongsCable NoneNumber of charges Galaxy S Ultra Charge time Galaxy to in h mBest low capacity battery BioLite Charge PDBioLite is probably better known in the outdoor community than the tech world and it s fair to say that the Charge PD is geared more towards camping trips than urban commutes But this battery simply outperformed the others in its category The rugged yellow accented exterior is a refreshing change from the standard shiny black of many tech accessories It also has a rubberized finish and feels solid enough to handle the bumps and jolts of riding around in a purse or messenger bag all day It gave both the iPhone and the Galaxy one and a half charges which means it s plenty capable of reviving a dead phone a couple of times when you re out and about The Nimble Champ gets an honorary mention here because it ll also deliver a few reliable fill ups and comes in a rugged package It delivered a full charge to the iPhone in two hours plus a percent charge in minutes It gave the Galaxy a full charge in an hour and minutes then got the phone from dead to percent in minutes At the same price point as the BioLite Nimble gets extra points for being one of the few B Corp certified personal tech manufacturers out there meaning they ve committed themselves to higher environmental and social standards and took the time to prove it through B Lab s certification process Specs mAh W maxPorts One in out USB C two USB A out onlyCable USB C to USB ANumber of charges iPhone Plus Charge time iPhone to in h m to in mNumber of charges Galaxy S Ultra Charge time Galaxy to in h m to in mBest medium capacity battery Otterbox Fast ChargeAt the medium capacity level you can charge multiple devices at once or power up something larger than a phone The Otterbox Fast Charge power bank only lists mAh of capacity but it performed nearly as well as the mAh batteries while costing about less Over the month and a half I spent testing battery packs this was the unit I grabbed the most when my own devices needed a charge It has a stylish exterior with a gray faux leather finish and copper detailing A little bigger than a deck of cards and weighing just over ounces it s a nice looking accessory that feels solid It filled up both smartphones twice then gave an additional third of a charge each I introduced the iPad to the mix here and got a full charge plus an extra third The Otterbox also lost very little charge while sitting dormant which means if you carry it around on the off chance that you ll need it it should have plenty of power when the time comes This category may have been the closest to call as Anker s Power Core performed slightly better than the Otterbox but Anker s price point is higher That said if you want a screaming fast charge for your Galaxy phone grab the It got the Galaxy up to percent three times taking about an hour each time It had enough left over for a small nine percent charge before it finally gave up While the battery did get pretty warm it never felt overly hot That one hour fill up is the fastest any power bank was able to deliver a charge to the Galaxy other than Anker s which shaved off a few minutes but costs more I also appreciated the s cool iridescent finish Specs mAh W maxPorts One in out USB C one in out USB ACable USB C to USB ANumber of charges iPhone Plus Charge time iPhone to in h m average and to in mNumber of charges Galaxy S Ultra Charge time Galaxy to in h m and to in mNumber of charges iPad Air Charge time iPad to in h m and to in mBest high capacity battery Anker Power BankIf you want something with a lot of charge that transfers quickly go for the Anker Power Bank It was for the most part the fastest bank we tried capable of delivering the largest amount of charge in the shortest period of time for the iPad and Galaxy Anker s got the iPhone to percent an average of two minutes faster but didn t give as many charges The fully charged our S Ultra three times with enough left over for another percent charge and those full charges completed in under an hour on average That s on par with outlet charging The numbers for the iPhone were slightly less staggering but still impressive going from zero to full in about an hour and a half The iPad charged completely twice and did so in just over two hours which is also close to that device s wall connected charge speeds While it s great for multiple full charges on a given smartphone I should point out that the has three ports but only one of those is USB C If you want to charge more than one device at a time you ll have to use the lower efficiency USB A ports for a couple of them That said this bank not only costs less than the other high capacity batteries we tried it also includes a W PowerPort fast charger which goes for on its own The design is nothing groundbreaking with a glossy black exterior and a metallic looking finish on one side It weighs a little over a pound and has the same general form as an old school TI graphing calculator Its single button has eight lighted pips to show you how much charge it has left Specs mAh W max Ports One in out USB C two out only USB ACable USB C to USB C includes W wall adapterNumber of charges iPhone Plus Charge time iPhone to in h m average and to in mNumber of charges Galaxy S Ultra Charge time Galaxy to in m average to in mNumber of charges iPad Air Charge time iPad to in h m average and to in mBest mobile command center battery Mophie Powerstation Pro XLFor those who take their work on the road the Mophie Powerstation Pro XL with its trio of USB C ports is a good pick It s capable of charging three devices at once with a different wattage rating for each port W W and W In practice that means you could use the ports to charge a laptop a tablet and a phone simultaneously To keep the numbers comparable across our testing I charged one device at a time Both smartphones juiced up fully three times with around a third of an additional charge left over I got about two full charges from the battery on the iPad Air The Powerstation XL has the look and feel of a fancy pocketbook with a marled gray fabric exterior that feels nice in the hand and incidentally hides stains well It weighs the same as the Anker one pound and three ounces and also has lighted pips to indicate charge levels There are only four lights however which doesn t give you the most precise insight as to how much charge it s carrying Another option the Zendure Supertank Pro almost won this category in part because it handles its charge indication with a lighted LED display that shows exactly how much charge remains expressed as a percentage With four variable wattage USB C ports a tough exterior and included semi hard case it seems tailor made to act as a power source for mobile photoshoots or nomadic offices The charge speeds were a little slower than the Mophie but it did manage to give a few more percentage points of charge to the iPad and the Galaxy phone filing the latter four times In the end it came down to price for more than the Mophie the Supertank Pro s speeds and capacity just didn t edge it out But if you happen to see the Supertank on sale snap it up Specs mAh W maxPorts One USB C in out two USB C out onlyCable USB C to USB CNumber of charges iPhone Plus Charge time iPhone to in h m average and in mNumber of charges Galaxy S Ultra Charge time Galaxy to in h m and in h mNumber of charges iPad Air Charge time iPad to in h m and in m 2023-02-02 14:30:48
海外TECH Engadget Lyft's next-generation scooters will offer a smoother ride https://www.engadget.com/lyft-next-gen-scooter-announced-140043710.html?src=rss Lyft x s next generation scooters will offer a smoother rideThe next time you rent a Lyft scooter you might find the company has a new model for you to ride Starting today Lyft is rolling out a “next gen electric scooter across its footprint The device features a redesigned suspension system Lyft claims will result in smoother rides The company says the new model can also travel to places its previous scooters could not thanks to a more powerful motor and inch airless tires Internally Lyft has equipped the scooter with a swappable battery that provides up to miles of range and that can be charged out in the field Later this year the company plans to roll out a variant of the scooter that can recharge at stations connected to local electrical grids The scooter also features cameras and Lyft s latest sidewalk detection and parking awareness software When you need to park the scooter that software will use visual cues to alert you of restrictions including areas where you can t leave the scooter Last but not least the scooter comes with a built in phone mount to make navigating easier LyftAt the same time Lyft has begun rolling out new docking infrastructure The company has redesigned its steel bollards to make them more resistant to corrosion and rust and thereby easier to maintain It has also added solar cells to the bollards and found a way to make them more power efficient Those are changes Lyft says should make them go longer between battery swaps As mentioned above the bollards can also pull power from the local power grid a feature Lyft claims will increase vehicle availability If you ve run into trouble docking a Lyft scooter or e bike before you ll also be happy to learn the new bollards feature a redesigned locking mechanism Lyft says requires “significantly less physical effort to use Additionally they feature flip dots and speakers to make using them more accessible to first time users Lyft hasn t said when people in specific cities could expect to see its new scooters and docking infrastructure arrive but it sounds like the rollout will take place gradually throughout the year 2023-02-02 14:00:43
Cisco Cisco Blog NRF 2023: Back in person https://blogs.cisco.com/retail/nrf2023-back-in-person NRF Back in personLeadership forward looking growth new business models customer experience operations and talent were major themes from NRF Here s how Cisco is enabling retailers to thrive in all areas with digital solutions and network management 2023-02-02 14:32:25
Cisco Cisco Blog Cisco and Mercy Corps: Cultivating climate adaptation and resilience in Kenya https://blogs.cisco.com/csr/cisco-and-mercy-corps-cultivating-climate-adaptation-and-resilience-in-kenya africa 2023-02-02 14:00:56
金融 RSS FILE - 日本証券業協会 PSJ予測統計値 https://www.jsda.or.jp/shiryoshitsu/toukei/psj/psj_toukei.html 統計 2023-02-02 16:00:00
金融 RSS FILE - 日本証券業協会 株券等貸借取引状況(週間) https://www.jsda.or.jp/shiryoshitsu/toukei/kabu-taiw/index.html 貸借 2023-02-02 15:30:00
金融 金融庁ホームページ つみたてNISA対象商品届出一覧、つみたてNISA取扱金融機関一覧を更新しました。 https://www.fsa.go.jp/policy/nisa2/about/tsumitate/target/index.html 対象商品 2023-02-02 15:00:00
ニュース BBC News - Home UK to see shorter recession, says Bank of England https://www.bbc.co.uk/news/business-64487179?at_medium=RSS&at_campaign=KARANGA englandthe 2023-02-02 14:52:38
ニュース BBC News - Home Mason Greenwood attempted rape charges dropped https://www.bbc.co.uk/news/uk-england-manchester-64502021?at_medium=RSS&at_campaign=KARANGA online 2023-02-02 14:38:53
ニュース BBC News - Home Nicola Bulley: Further witness sought in search for missing mum https://www.bbc.co.uk/news/uk-england-lancashire-64501150?at_medium=RSS&at_campaign=KARANGA bulley 2023-02-02 14:52:32
ニュース BBC News - Home Omagh bombing: UK government announces independent statutory inquiry https://www.bbc.co.uk/news/uk-northern-ireland-64495873?at_medium=RSS&at_campaign=KARANGA investigation 2023-02-02 14:46:31
ニュース BBC News - Home British Gas admits agents break into struggling homes https://www.bbc.co.uk/news/business-64491243?at_medium=RSS&at_campaign=KARANGA meters 2023-02-02 14:10:47
ニュース BBC News - Home Aidan McAnespie killing: Ex-soldier Holden avoids jail over Troubles shooting https://www.bbc.co.uk/news/uk-northern-ireland-64499374?at_medium=RSS&at_campaign=KARANGA troubles 2023-02-02 14:35:44
ニュース BBC News - Home Delilah: Rugby fans torn over WRU choir ban on Tom Jones song https://www.bbc.co.uk/news/uk-wales-64497520?at_medium=RSS&at_campaign=KARANGA delilah 2023-02-02 14:15:00
ニュース BBC News - Home Six Nations 2023: Ollie Hassell-Collins to make England debut against Scotland https://www.bbc.co.uk/sport/rugby-union/64500383?at_medium=RSS&at_campaign=KARANGA twickenham 2023-02-02 14:48:58
GCP Google Cloud Platform Japan 公式ブログ BigQuery による構築: Tamr が大規模なマスターデータ管理を提供する方法およびデータ プロダクト戦略に与える効果 https://cloud.google.com/blog/ja/products/data-analytics/how-tamr-delivers-master-data-management-at-scale-with-bigquery/ このようなプラットフォームを導入すれば、信頼できるデータを取得し、ビジネス上の成果を向上させることが可能となります。 2023-02-02 14:20:00
GCP Cloud Blog JA BigQuery による構築: Tamr が大規模なマスターデータ管理を提供する方法およびデータ プロダクト戦略に与える効果 https://cloud.google.com/blog/ja/products/data-analytics/how-tamr-delivers-master-data-management-at-scale-with-bigquery/ このようなプラットフォームを導入すれば、信頼できるデータを取得し、ビジネス上の成果を向上させることが可能となります。 2023-02-02 14:20:00

コメント

このブログの人気の投稿

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

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

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