投稿時間:2022-11-24 17:35:03 RSSフィード2022-11-24 17:00 分まとめ(34件)

カテゴリー等 サイト名等 記事タイトル・トレンドワード等 リンクURL 頻出ワード・要約等/検索ボリューム 登録日
IT 気になる、記になる… Microsoft、Surface 10周年記念モデルの「Surface スリム ペン 2​ 付き Surface Pro Liberty キーボード」を11月29日に発売へ https://taisy0.com/2022/11/24/165381.html liberty 2022-11-24 07:48:25
IT 気になる、記になる… 楽天、各ストアのランキングをまとめた「2022年 エンタメ年間ランキング」を発表 https://taisy0.com/2022/11/24/165370.html music 2022-11-24 07:37:37
IT 気になる、記になる… Apple、iPhoneにも対応した新型Apple Pencilを準備していた?? https://taisy0.com/2022/11/24/165367.html applepencil 2022-11-24 07:23:46
IT 気になる、記になる… OtterBox、公式ストアでブラックフライデーのセールを開催中 − 最大30%オフに https://taisy0.com/2022/11/24/165364.html iphone 2022-11-24 07:12:13
IT InfoQ Neo4j 5 Graph Database Supports Automated Scaling and Deployment Interoperability https://www.infoq.com/news/2022/11/neo4j-5-graph-database/?utm_campaign=infoq_content&utm_source=infoq&utm_medium=feed&utm_term=global Neoj Graph Database Supports Automated Scaling and Deployment InteroperabilityGraph NoSQL database Neoj version supports query language and performance improvements automated scale up and scale out capabilities and cross platform deployment interoperability Neoj team announced last week the general availability GA of latest product release of the graph database By Srini Penchikala 2022-11-24 07:50:00
ROBOT ロボスタ 出前館「八丈島」にデリバリーサービスを試行導入 ドローンを活用した配送実験も実施 https://robotstart.info/2022/11/24/demaecan-hachijo-delivery-experiment.html 2022-11-24 07:24:20
IT ITmedia 総合記事一覧 [ITmedia News] 東北電力、電気料金の3割値上げを申請 来年4月から https://www.itmedia.co.jp/news/articles/2211/24/news144.html itmedia 2022-11-24 16:49:00
IT ITmedia 総合記事一覧 [ITmedia PC USER] ロジクール、第10世代iPadに対応したキーボード一体型ケース2製品 デジタルペン「Crayon」も https://www.itmedia.co.jp/pcuser/articles/2211/24/news146.html combotouch 2022-11-24 16:33:00
IT ITmedia 総合記事一覧 [ITmedia ビジネスオンライン] サッカー日本代表、グループリーグ突破確率は70% JX通信社がAIで分析 https://www.itmedia.co.jp/business/articles/2211/24/news133.html 大幅アップ 2022-11-24 16:20:00
IT ITmedia 総合記事一覧 [ITmedia Mobile] iPhoneでARグラス「Nreal Air」は楽しめない? Adapterを介しても“接続できない”問題の対処法 https://www.itmedia.co.jp/mobile/articles/2211/24/news141.html adapter 2022-11-24 16:08:00
python Pythonタグが付けられた新着投稿 - Qiita 「ご注文はこちらの物件ですか?」アプリを作ってみた。 https://qiita.com/tomyu/items/887dac8fb022ce803ecb suumo 2022-11-24 16:51:28
python Pythonタグが付けられた新着投稿 - Qiita 統計的な有意差を示すグラフ(ブラケットとテキスト)をMatplotlibで描画する。 https://qiita.com/tokudo/items/7c2dd1688e31abe6789d matplotlib 2022-11-24 16:34:25
python Pythonタグが付けられた新着投稿 - Qiita ゼロつく2でValueErrorが出た時の対処法 https://qiita.com/57577_pyyy/items/04c4cd86ffe4f97dc92f utarrayfromshapeintoshape 2022-11-24 16:12:34
js JavaScriptタグが付けられた新着投稿 - Qiita Node.js/Vue.js/Nuxt.jsとは https://qiita.com/namakemono_no_ahiru/items/0d7f81476450190addff nodejsvuejsnuxtjs 2022-11-24 16:14:02
GCP gcpタグが付けられた新着投稿 - Qiita Firebase Cloud Messagingのメッセージのテストコードを書く(Java) https://qiita.com/k_hoso/items/2c7637816588448c95e7 messagea 2022-11-24 16:47:04
Git Gitタグが付けられた新着投稿 - Qiita Git備忘録 https://qiita.com/k-noguchi-lipfield/items/50f39b6b1c995ec613ed ergtmasternonfastforward 2022-11-24 16:11:28
海外TECH DEV Community Arif patel Preston Dubai | 9 Top Productive tips for Backend Developers. https://dev.to/arifpateldubaiprestonuk/arif-patel-preston-dubai-9-top-productive-tips-for-backend-developers-1081 Arif patel Preston Dubai Top Productive tips for Backend Developers Today I would like to share my productive tips for backend developers to improve productivity and become better at their work The topics raised here are based on my personal experience and do not focused on any pattern These are general advice on how to improve your personal skills and improve your productivity as a backend developer Some of the things in this article are based on my personal experience while others are from personal research AUTOMATIONAutomate everything that you do repeatedly including command line bash scripts text manipulations and logs refactoring building deploying integrating testing etc Automated processes need to work well because they are error prone If a developer forgot about one step he might get stuck this means loss of flow and will cost you more time to get back into it In my case I have a list or a library of reusable components or scripts that I found myself using often things like authentication registration scripts SQL CRUD scripts etc those are part of my automation process because I don t have to write them over again each time DON T OPTIMIZE YETThe impulse to optimize is usually premature Clever solutions to squeeze performance increase complexity and undermine the end goal Get the code working then optimize just that code that needs it at the end I go with this simple term a lot for my day to day job First Solve the Problem Then Write the Code before OptimizingWHAT TO OPTIMIZE You can optimize for speed but the most precious thing you should optimize for is your own time Optimize for readability and clarity If you have to stop and ask yourself how does this work Or why isn t this doing what it should do You have just wasted your time Don t use a lot of complex data structures and algorithms or advanced language features as a way of demonstrating your ability unless needed by the project K Y T Know Your Tools For me one of the best productivity tricks of all time is this Getting myself familiarised with the tools and environment am working with For example am a big fan of Atom text editor and Netbeans so almost all the relevant shortcuts I store them in a book I can easily reference Getting familiar with your tools not just limited to IDE and Text Editors any tool you used frequently will increase your productivity as a back end developer greatly SIDE PROJECTS LEARNING NEW THINGS This could greatly improve your productivity and confidence having a side project you could do if you are bored with a particular project could be great but note that it depends greatly on the duration of your main project Also always learning and improving your skills by reading other people s source code Watching YouTube videos or reading blog articles like this one Whatever works for you could be a great source of motivation for you to stay productive as a back end developer COLLABORATIONAnother great source of productivity is collaboration see no one is an island of knowledge you need to collaborate with people so you can ask for help work on projects together and learn team building and or management What is more sweeter than this… Collaboration can save you You might be the smartest guy with the best time management skills and knowledge of all the technical skills in the world and still there are some problems that you d find problematic or decisions that should be made by the whole team Therefore always involve other people when tackling a problem or making an important decision Introducing collaboration techniques sure as pair programming code reviews and or some other collective practice to your development process could be a productive approach PRIORITIZE YOUR TASK AND COMMIT TO ITThis will require a little bit of discipline It s not enough to schedule something to do ーyou want to actively perform well in those activities that are more valuable to you and or your company This requires keeping your mind focused on the task at hand You can t really write a good piece of code or solve a difficult problem when you are thinking a lot of things at the same time Therefore always do one thing at a time If you need to get something done in the middle of doing something else just schedule a break from your original task to finish this secondary task then be disciplined enough to come back to your original task ELIMINATE DISTRACTION Stay off social media for a while at work Social media could be one of the main distractions for backend developers including youtube quora StackOverflow It just requires some degree of discipline at your end to stay committed to your job and be productive FIND A MENTORThis could be a great source of motivation for some developers because where your strength could not reach your mentor can carry you through Therefor finding a good mentor can boost your productivity level 2022-11-24 07:50:30
海外TECH DEV Community Supercharge Rust APIs with Serverless Functions https://dev.to/hackmamba/supercharge-rust-apis-with-serverless-functions-bb2 Supercharge Rust APIs with Serverless FunctionsServerless Function is a single purpose programming feature that allows developers to write and deploy software without purchasing and maintaining servers It lets developers focus on the core business logic of their application without worrying about logistics operation and infrastructure associated with software development In this post we will learn how to use Serverless Functions to build a user management API in Rust using Netlify Xata and Cloudinary Technology overviewNetlify is a platform for deploying and building highly performant and dynamic websites e commerce stores and web applications Xata is an HTTP API based serverless database for building scalable applications It supports a built in search engine branching scalability and durability without manually managing database configuration and deployment Cloudinary is a visual media service for uploading storing managing transforming and delivering images and videos for websites and applications GitHub linksThe project source codes are below Serverless Functions source codeRust API PrerequisitesTo follow along with this tutorial the following requirements apply Basic understanding of RustBasic understanding of JavaScriptNode js installedA Netlify account for deploying Serverless Functions Signup is completely freeA Xata account for storing data Signup is completely freeA Cloudinary account for image optimization Signup is completely free A Github account for saving source code Signup is completely free Set up a Database on XataTo create a database for storing our user management API s data we need to log into our Xata s workspace click the Add a Database button input users as the database name and Create Next we need to create a table in our database To do this click the Start from scratch menu input userDetails as the table name and Add table PS Xata auto generates an ID column a unique identifier for our table With that done we need to add a firstName lastName phoneNumber and avatar columns to our table To do this click on the Plus icon select String input column name and Create column After creating the columns our updated table should be similar to the screenshot below Get Database URL and set up API KeyBy default Xata provides a unique and secure URL for accessing the database To get our database URL click the Get code snippet button copy the URL and then click the Set up API key button to generate API key PS The URL we need to copy starts from the https …… sectionClick the Add a key button input xata function as the name and Save We must copy and keep the URL and generated API key as they will come in handy when building our serverless functions Image sourcing and upload to CloudinaryNext we need to upload an image we will use as a default avatar when creating a user Avatar urlbit ly gUBLEIn our Cloudinary dashboard we uploaded the image by clicking on the Media Library tab clicking on Upload selecting the Web Address option inputting the URL and clicking on the Arrow Button to upload After uploading the image we will see it displayed on the console To get the image URL mouse hover on the image and click on the Copy URL icon The URL will come in handy when building our Serverless Functions Creating Serverless FunctionsTo get started we need to navigate to the desired directory and run the command below mkdir xata functions amp amp cd xata functionsThe command creates a directory called xata functions and navigates into it Initializing project and installing dependenciesFirst we need to initialize an empty Node js project by running the command below npm init yLastly we need to install node fetch a package for making HTTP requests To do this we need to run the command below npm i node fetchAdding logics to the Serverless FunctionsWith that done we can start creating our application logic To get started first we need to create a netlify folder and create a functions folder in this folder Secondly we need to create a create js file inside the functions folder and add the snippet below import fetch from node fetch exports handler async function event context callback let bodyRequest JSON parse event body const body firstName bodyRequest firstName lastName bodyRequest lastName phoneNumber bodyRequest phoneNumber avatar const response await fetch process env XATA URL main tables userDetails data method POST headers Content Type application json Authorization Bearer process env XATA API KEY body JSON stringify body const data await response json return statusCode body JSON stringify data The snippet above does the following Imports the required dependency Gets the request bodyUses the request body to create a body object by passing in the firstName lastName phoneNumber and avatar default URL we got from CloudinaryCreates a POST request to the Xata database by passing the URL as an environment variable with the database details and API keyReturns the appropriate response We also constructed the Xata database URL by passing in the branch table name and endpoint type https sample databaseurl users lt BRANCH NAME gt tables lt TABLE NAME gt ENDPOINT TYPEWe can get the required details from our workspaceIn our case we filled it using an environment variable We will add it when deploying our application to Netlify An adequately filled URL is below https sample databaseurl users main tables userDetails dataThirdly we need to create a get js file inside the same functions folder and add the snippet below import fetch from node fetch exports handler async function const body page size const response await fetch process env XATA URL main tables userDetails query method POST headers Content Type application json Authorization Bearer process env XATA API KEY body JSON stringify body const data await response json return statusCode body JSON stringify data The snippet above works similarly to the create js file However we created a body object to paginate the requested data from the Xata database Lastly we need to add a deployment file that instructs Netlify to build our application effectively To do this we need to create a netlify toml file in the root directory of our project and add the snippet below functions node bundler esbuild Pushing our source code to GitHubWe need to push our source code to GitHub to enable a seamless deployment process To get started we need to log into our GitHub account create a repository input xata functions as the name and Create repository Next we initialize a git project and save recent changes in our project by running the command below git initgit add git commit m add serverless functions To push our changes copy and run the highlighted commands on the terminal Deploying to NetlifyTo get started we need to log into our Netlify dashboard Click on Add new site dropdown and select Import an existing project Select GitHub as the Git provider and authorize Netlify Search for xata function and select the repository Click on Show advanced click the New variable button and add the XATA URL and XATA API KEY environment variables as key and their corresponding values As earlier mentioned we can get Xata s URL and API key from our workspace Click on Deploy site button to start deployment It might take a few minutes We can view and get our deployed Serverless Functions URL by navigating to the Functions tab and click on any of the functions to access the URL Leveraging the Serverless Functions to build Rust APIsWith our Serverless Functions up and running we can start leveraging them to build our user management APIs To get started we need to navigate to the desired directory and run the command below in our terminal cargo new rust user service amp amp cd rust user serviceThis command creates a Rust project called rust user service and navigates into the project directory Next we proceed to install the required dependencies by modifying the dependencies section of the Cargo toml file as shown below other code section goes here dependencies actix web serde version features derive serde json reqwest version features json actix web is a Rust based framework for building web applications serde version features derive is a framework for serializing and deserializing Rust data structures E g convert Rust structs to JSON and vice versa serde json is a crate that uses the serde crate manipulate JSON and vice versareqwest version features json is a HTTP request crate We need to run the command below to install the dependencies cargo buildStructuring our applicationIt is essential to have a good project structure as it makes the project maintainable and easier for us and others to read our codebase To do this we need to navigate to the src directory and in this folder create api folder Inside the api folder we also need to create mod rs models rs services rs and handlers rs files mod rs is file for managing application visibility models rs is for structuring our application data services rs is for abstracting our application logics handlers rs is for structuring our APIs Next we need to declare these files as a module by importing them into the mod rs filepub mod handlers pub mod models pub mod services Finally we need to register api folder as a parent module by importing it into the main rs file as shown below mod api fn main println Hello world Create the API modelsNext we need to create models to represent our application data To do this we need to modify the model rs file as shown below use serde Deserialize Serialize derive Deserialize Serialize Debug Clone serde rename all camelCase pub struct User pub id Option lt String gt pub first name String pub last name String pub phone number String pub avatar Option lt String gt derive Deserialize Serialize Debug Clone pub struct Records pub records Vec lt User gt derive Deserialize Serialize Debug Clone serde rename all camelCase pub struct CreateResponse pub id String derive Serialize Debug Clone pub struct APIResponse lt T gt pub status u pub message String pub data Option lt T gt derive Serialize Debug Clone pub struct APIErrorResponse pub status u pub message String pub data Option lt String gt The snippet above does the following Imports the required dependencyCreates User and Records structs with required properties to describe request and response body accordingly Creates a CreateResponse APIResponse and APIErrorResponse structs with the required properties needed for the API responsePS The serde rename all camelCase macro converts snake case properties to camel case and the derive macro adds implementation support for serialization deserializations and cloning Create the API servicesWith our Serverless Functions up and running we can use it to create a user service To do this we need to add the snippet below to the services rs file use super models CreateResponse Records User use reqwest Client Error pub struct UserService impl UserService pub async fn get user gt Result lt Records Error gt let url lt NETLIFY FUNCTION GET URL gt let client Client new let fetched users client get url send await match fetched users Ok response gt let json response text await let new records Records serde json from str json as str unwrap Ok new records Err error gt Err error pub async fn create user new user User gt Result lt CreateResponse Error gt let url lt NETLIFY FUNCTION CREATE URL gt let json body User id None first name new user first name last name new user last name phone number new user phone number avatar None let client Client new let fetched users client post url json amp json body send await match fetched users Ok response gt let json response text await let created record CreateResponse serde json from str json as str unwrap Ok created record Err error gt Err error The snippet above does the following Imports the required dependenciesCreates a UserService structCreates an implementation block that adds methods to the UserService structAdds a get user method to get the list of users by making an HTTP request to the get Serverless Function URL and returns the list of usersAdds a create user method to create a user by making an HTTP request to the create Serverless Function URL and returns the appropriate responseAs earlier mentioned we can get our URLs from the Netlify function tab Create the API handlersWith that done we can use the services to create our API handlers To do this we need to add the snippet below to handlers rs file use actix web get post web Json HttpResponse use reqwest StatusCode use super models APIErrorResponse APIResponse CreateResponse Records User services UserService get users pub async fn get user gt HttpResponse let user details UserService get user await match user details Ok data gt HttpResponse Ok json APIResponse lt Records gt status StatusCode OK as u message success to string data Some data Err error gt HttpResponse InternalServerError json APIErrorResponse status StatusCode INTERNAL SERVER ERROR as u message failure to string data Some error to string post users pub async fn create user data Json lt User gt gt HttpResponse let new user User id None first name data first name clone last name data last name clone phone number data phone number clone avatar None let user details UserService create user new user await match user details Ok data gt HttpResponse Accepted json APIResponse lt CreateResponse gt status StatusCode ACCEPTED as u message success to string data Some data Err error gt HttpResponse InternalServerError json APIErrorResponse status StatusCode INTERNAL SERVER ERROR as u message failure to string data Some error to string The snippet above does the following Imports the required dependenciesCreates a get user handler with a users API route that uses the get user service to get the list of users and returns the appropriate response using the APIResponse and APIErrorResponseCreates a create user handler with a users API route that uses the create user service to create a user and returns the appropriate response using the APIResponse and APIErrorResponsePutting it all togetherWith that done we need to update the main rs file to include our application entry point and use the get user and create user handlers use actix web App HttpServer use api handlers create user get user mod api actix web main async fn main gt std io Result lt gt HttpServer new move App new service get user service create user bind localhost run await The snippet above does the following Imports the required dependenciesCreates a new server that adds the get user and create user handlers and runs on localhost With that done we can start a development server using the command below cargo run main go We can also verify the APIs by checking the Xata s workspace ConclusionThis post discussed how to quickly create user management APIs in Rust without manually deploying and managing databases and servers With the powerful trio of Xata Netlify and Cloudinary developers can build and ship applications faster by focusing on what matters and not being bothered by infrastructure bottlenecks These resources might be helpful Xata official docsNetlify Serverless FunctionsCloudinary official docsReqwest HTTP Library 2022-11-24 07:32:17
海外TECH DEV Community Supercharge Go APIs with Serverless Functions https://dev.to/hackmamba/supercharge-go-apis-with-serverless-functions-4o6d Supercharge Go APIs with Serverless FunctionsServerless Function is a single purpose programming feature that allows developers to write and deploy software without purchasing and maintaining servers It lets developers focus on the core business logic of their application without worrying about logistics operation and infrastructure associated with software development In this post we will learn how to use Serverless Functions to build a user management API in Go using Netlify Xata and Cloudinary Technology overviewNetlify is a platform for deploying and building highly performant and dynamic websites e commerce stores and web applications Xata is an HTTP API based serverless database for building scalable applications It supports a built in search engine branching scalability and durability without manually managing database configuration and deployment Cloudinary is a visual media service for uploading storing managing transforming and delivering images and videos for websites and applications GitHub linksThe project source codes are below Serverless Functions source codeGo API PrerequisitesTo follow along with this tutorial the following requirements apply Basic understanding of GoBasic understanding of JavaScriptNode js installedA Netlify account for deploying Serverless Functions Signup is completely freeA Xata account for storing data Signup is completely freeA Cloudinary account for image optimization Signup is completely free A Github account for saving source code Signup is completely free Set up a Database on XataTo create a database for storing our user management API s data we need to log into our Xata s workspace click the Add a Database button input users as the database name and Create Next we need to create a table in our database To do this click the Start from scratch menu input userDetails as the table name and Add table PS Xata auto generates an ID column a unique identifier for our table With that done we need to add a firstName lastName phoneNumber and avatar columns to our table To do this click on the Plus icon select String input column name and Create column After creating the columns our updated table should be similar to the screenshot below Get Database URL and set up API KeyBy default Xata provides a unique and secure URL for accessing the database To get our database URL click the Get code snippet button copy the URL and then click the Set up API key button to generate API key PS The URL we need to copy starts from the https …… sectionClick the Add a key button input xata function as the name and Save We must copy and keep the URL and generated API key as they will come in handy when building our serverless functions Image sourcing and upload to CloudinaryNext we need to upload an image we will use as a default avatar when creating a user Avatar urlbit ly gUBLEIn our Cloudinary dashboard we uploaded the image by clicking on the Media Library tab clicking on Upload selecting the Web Address option inputting the URL and clicking on the Arrow Button to upload After uploading the image we will see it displayed on the console To get the image URL mouse hover on the image and click on the Copy URL icon The URL will come in handy when building our Serverless Functions Creating Serverless FunctionsTo get started we need to navigate to the desired directory and run the command below mkdir xata functions amp amp cd xata functionsThe command creates a directory called xata functions and navigates into it Initializing project and installing dependenciesFirst we need to initialize an empty Node js project by running the command below npm init yLastly we need to install node fetch a package for making HTTP requests To do this we need to run the command below npm i node fetchAdding logics to the Serverless FunctionsWith that done we can start creating our application logic To get started first we need to create a netlify folder and create a functions folder in this folder Secondly we need to create a create js file inside the functions folder and add the snippet below import fetch from node fetch exports handler async function event context callback let bodyRequest JSON parse event body const body firstName bodyRequest firstName lastName bodyRequest lastName phoneNumber bodyRequest phoneNumber avatar const response await fetch process env XATA URL main tables userDetails data method POST headers Content Type application json Authorization Bearer process env XATA API KEY body JSON stringify body const data await response json return statusCode body JSON stringify data The snippet above does the following Imports the required dependency Gets the request bodyUses the request body to create a body object by passing in the firstName lastName phoneNumber and avatar default URL we got from CloudinaryCreates a POST request to the Xata database by passing the URL as an environment variable with the database details and API keyReturns the appropriate response We also constructed the Xata database URL by passing in the branch table name and endpoint type https sample databaseurl users lt BRANCH NAME gt tables lt TABLE NAME gt ENDPOINT TYPEWe can get the required details from our workspaceIn our case we filled it using an environment variable We will add it when deploying our application to Netlify An adequately filled URL is below https sample databaseurl users main tables userDetails dataThirdly we need to create a get js file inside the same functions folder and add the snippet below import fetch from node fetch exports handler async function const body page size const response await fetch process env XATA URL main tables userDetails query method POST headers Content Type application json Authorization Bearer process env XATA API KEY body JSON stringify body const data await response json return statusCode body JSON stringify data The snippet above works similarly to the create js file However we created a body object to paginate the requested data from the Xata database Lastly we need to add a deployment file that instructs Netlify to build our application effectively To do this we need to create a netlify toml file in the root directory of our project and add the snippet below functions node bundler esbuild Pushing our source code to GitHubTo enable a seamless deployment process we need to push our source code to GitHub To get started we need to log into our GitHub account create a repository input xata functions as the name and Create repository Next we initialize a git project and save recent changes in our project by running the command below git initgit add git commit m add serverless functions To push our changes copy and run the highlighted commands on the terminal Deploying to NetlifyTo get started we need to log into our Netlify dashboard Click on Add new site dropdown and select Import an existing project Select GitHub as the Git provider and authorize Netlify Search for xata function and select the repository Click on Show advanced click the New variable button and add the XATA URL and XATA API KEY environment variables as key and their corresponding values As earlier mentioned we can get Xata s URL and API key from our workspace Click on Deploy site button to start deployment It might take a few minutes We can view and get our deployed Serverless Functions URL by navigating to the Functions tab and click on any of the functions to access the URL Leveraging the Serverless Functions to build Go APIsWith our Serverless Functions up and running we can start leveraging them to build our user management APIs To get started we need to navigate to the desired directory and run the command below in our terminal mkdir go user service amp amp cd go user serviceThis command creates a go user service and navigates into the project directory Next we need to initialize a Go module to manage project dependencies by running the command below go mod init go user serviceThis command will create a go mod file for tracking project dependencies We proceed to install the required dependencies with go get github com gin gonic gin github com go playground validator vgithub com gin gonic gin is a framework for building web applications github com go playground validator v is a library for validating structs and fields Structuring our applicationIt is essential to have a good project structure as it makes the project maintainable and easier for us and others to read our codebase To do this we need to create an api cmd and data folder in our project directory api is for structuring our API related filescmd is for structuring our application entry pointdata is for structuring our application dataCreate the API modelsNext we need to create models to represent our application data To do this we need to navigate to the data folder and in this folder create a model go file and add the snippet below package datatype User struct Id string json id omitempty FirstName string json firstName omitempty validate required LastName string json lastName omitempty validate required PhoneNumber string json phoneNumber omitempty validate required Avatar string json avatar omitempty type Records struct Records User json records omitempty validate required type CreateResponse struct Id string json id omitempty validate required The snippet above creates a User Records and CreateResponse struct with the required properties to describe requests and response type Create the API routes helpers service and handlersWith the models fully set up we need to navigate to the api folder and do the following First we need to create a route go file for configuring the API routes and add the snippet below package apiimport github com gin gonic gin type Config struct Router gin Engine func app Config Routes routes will come here The snippet above does the following Imports the required dependencyCreates a Config struct with a Router property to configure the application methodsCreates a Routes function that takes in the Config struct as a pointerSecondly we need to create a helper go file and add the snippet below package apiimport net http github com gin gonic gin github com go playground validator v type jsonResponse struct Status int json status Message string json message Data any json data var validate validator New func app Config validateBody c gin Context data any error validate the request body if err c BindJSON amp data err nil return err use the validator library to validate required fields if err validate Struct amp data err nil return err return nil func app Config writeJSON c gin Context status int data any c JSON status jsonResponse Status status Message success Data data func app Config errorJSON c gin Context err error status int statusCode http StatusBadRequest if len status gt statusCode status c JSON statusCode jsonResponse Status statusCode Message err Error The snippet above does the following Imports the required dependenciesCreates a jsonResponse struct and validate variable to describe the API response and to validate the API fieldsCreates a validateBody function that takes in the Config struct as a pointer and returns an error Inside the function we validate that request data in the correct format and also use the validator library to also validate and check for the required fieldsCreates a writeJSON function that takes in the Config struct as a pointer and uses the jsonResponse struct to construct API response when there s no errorCreates a errorJSON function that takes in the Config struct as a pointer and uses the jsonResponse struct to construct API response when there s an errorThirdly we need to create a service go file that uses the Serverless Functions to abstract the application logic and add the snippet below package apiimport bytes encoding json go user service data io ioutil net http func app Config getUserService data Records error url lt NETLIFY FUNCTION GET URL gt records data Records resp err http Get url if err nil return nil err body err ioutil ReadAll resp Body if err nil return nil err err json Unmarshal byte body amp records if err nil return nil err return amp records nil func app Config createUserService newUser data User data CreateResponse error url lt NETLIFY FUNCTION CREATE URL gt response data CreateResponse jsonData data User FirstName newUser FirstName LastName newUser LastName PhoneNumber newUser PhoneNumber postBody json Marshal jsonData bodyData bytes NewBuffer postBody resp err http Post url application json bodyData if err nil return nil err body err ioutil ReadAll resp Body if err nil return nil err err json Unmarshal byte body amp response if err nil return nil err return amp response nil The snippet above does the following Imports the required dependenciesCreates a getUserService function that takes in the Config struct as a pointer and returns either the list of users or an error The functions also get the list of users by making an HTTP request to the get Serverless Function URL reads the response accordingly and returns the appropriate responseCreates a createUserService function that accepts a newUser takes in the Config struct as a pointer and returns the created user details or an error The functions also creates a user by making an HTTP request to the create Serverless Function URL reads the response accordingly and returns the appropriate responseFourthly we need to create a handler go file for modifying the incoming request and add the snippet below package apiimport context go user service data net http time github com gin gonic gin const appTimeout time Second func app Config getUser gin HandlerFunc return func ctx gin Context cancel context WithTimeout context Background appTimeout defer cancel data err app getUserService if err nil app errorJSON ctx err return app writeJSON ctx http StatusOK data func app Config createUser gin HandlerFunc return func ctx gin Context cancel context WithTimeout context Background appTimeout var payload data User defer cancel app validateBody ctx amp payload newData data User FirstName payload FirstName LastName payload LastName PhoneNumber payload PhoneNumber data err app createUserService newData if err nil app errorJSON ctx err return app writeJSON ctx http StatusAccepted data The snippet above does the following Imports the required dependenciesCreates an appTimeout variable to set request timeoutCreates a getUser function that returns a Gin gonic handler and takes in the Config struct as a pointer Inside the returned handler we defined the API timeout used the helper functions and the service created earlier to get the list of usersCreates a createUser function that returns a Gin gonic handler and takes in the Config struct as a pointer Inside the returned handler we defined the API timeout used the helper functions and the service created earlier to verify the request body create a user and return the created user detailsFinally we need to update the routes go files with the API route and corresponding handler package apiimport github com gin gonic gin type Config struct Router gin Engine modify belowfunc app Config Routes app Router GET users app getUser app Router POST users app createUser Putting it all togetherWith our API fully set up we need to create the application entry point To do this we need to navigate to the cmd folder and in this folder create a main go file and add the snippet below package mainimport go user service api github com gin gonic gin func main router gin Default initialize config app api Config Router router routes app Routes router Run The snippet above does the following Imports the required dependenciesCreates a Gin router using the Default configuration Initialize the Config struct by passing in the RouterAdds the route and run the application on port With that done we can start a development server using the command below go run cmd main go We can also verify the APIs by checking the Xata s workspace ConclusionThis post discussed how to quickly create user management APIs in Go without manually deploying and managing databases and servers With the powerful trio of Xata Netlify and Cloudinary developers can build and ship applications faster by focusing on what matters and not being bothered by infrastructure bottlenecks These resources might be helpful Xata official docsNetlify Serverless FunctionsCloudinary official docsGo HTTP Library 2022-11-24 07:31:56
海外TECH DEV Community Quickly build a mobile responsive Gym Tracker https://dev.to/hackmamba/quickly-build-a-mobile-responsive-gym-tracker-5afc Quickly build a mobile responsive Gym TrackerTrackers are devices or technology that monitor users activities events or page views on a platform In the proper context it involves collecting information and monitoring how a user interacts or uses an application Over the years trackers have been adopted by major applications like food ordering apps e commerce wellness apps e t c to help their users monitor activities provide insights and build consistency In this post we will learn how to build a Gym Tracker to describe daily activities using Next js and Xata GitHub and Deployment linkThe project source codes and deployment link are below GitHub linkLive Site PrerequisitesTo follow along with this tutorial the following requirements apply Basic understanding of JavaScript and ReactA Xata account for storing data Signup is completely free Getting startedWe need to create a Next js starter project by navigating to the desired directory and running the command below in our terminal npx create next app gym tracker amp amp cd gym trackerThe command creates a Next js project called gym tracker and navigates into the project directory Installing TailwindCSSTailwindCSS is a utility first CSS framework packed with classes to help us style our web pages and make them responsive to various screens To use it in our application run the command below npm install D tailwindcss postcss autoprefixernpx tailwindcss init pThe command installs TailwindCSS and its dependencies and generates tailwind config js and postcss config js files Next we need to update tailwind config js file with the snippet below module exports content app js ts jsx tsx pages js ts jsx tsx components js ts jsx tsx theme extend plugins Finally we need to add TailwindCSS directives to our application The directives give our application access to TailwindCSS utility classes To do this navigate to the styles folder and update the globals css files in it with the snippet below tailwind base tailwind components tailwind utilities Set up a Database on XataTo create a database for storing our gym activities data we need to log into our Xata s workspace click the Add a Database button input gym as the database name and Create Next we need to create a table in our database To do this click the Start from scratch menu input tracker as the table name and Add table PS Xata auto generates an ID column a unique identifier for our table With that done we need to add a description of type String and created on of type Date columns to our table To do this click the Plus icon select type accordingly input column name and Create column After creating the columns our updated table should be similar to the screenshot below Get Database URL and set up API KeyBy default Xata provides a unique and secure URL for accessing the database To get our database URL click the Get code snippet button copy the URL and then click the Set up API key button to generate API key We need the API key for authentication when using the database PS The URL we need to copy starts from the https …… sectionClick the Add a key button input xata function as the name and Save Setup environment variableNext we need to add our database URL and the API as an environment variable To do this we need to create a env file in the root directory and add the snippet below NEXT PUBLIC XATA URL lt REPLACE WITH THE COPIED DATABASE URL gt NEXT PUBLIC XATA API KEY lt REPLACE WITH THE COPIED API KEY gt Create the Gym Tracker in Next jsCreate application logicTo get started we ll navigate to our project root directory and create a components folder here create a services js file and add the snippet below export const createTrack async description gt const body description created on new Date const resp await fetch process env NEXT PUBLIC XATA URL main tables tracker data method POST body JSON stringify body headers Content Type application json Authorization Bearer process env NEXT PUBLIC XATA API KEY return resp export const getTrackers async gt const body page size const resp await fetch process env NEXT PUBLIC XATA URL main tables tracker query method POST body JSON stringify body headers Content Type application json Authorization Bearer process env NEXT PUBLIC XATA API KEY return resp The snippet above does the following Creates a createTrack function that takes in description as a parameter to describe gym activity for the day The function also does the following Line Creates the request body with the required parametersLine Makes POST request to Xata by modifying the database URL to include the branch table name and query type It also passes the API key as an authorization header Line Returns the responseCreates a getTrackers function to get the list of activities The function also does the following Line Creates a request body to paginate the requested dataLine Makes POST request to Xata by modifying the database URL to include the branch table name and query type It also passes the API key as an authorization header Line Returns the responseThe Xata database URL used above was constructed by passing in the branch table name and endpoint type process env NEXT PUBLIC XATA URL lt BRANCH NAME gt tables lt TABLE NAME gt ENDPOINT TYPEWe can get the required details from our workspaceIn our case we filled it using an environment variable Adequately filled URLs are below createTrack process env NEXT PUBLIC XATA URL main tables trackers datagetTracker process env NEXT PUBLIC XATA URL main tables trackers queryBuilding the User InterfaceWith that done we can start using our application logic to build our application To get started first we need to create a Nav js file in the components folder and add the snippet below import Link from next link import useRouter from next router export default function Nav const router useRouter return lt nav className border b gray h border b flex mb gt lt img src alt gym logo className mr gt lt Link href className font medium text sm ml router pathname border b px border teal text teal gt Home lt Link gt lt Link href history className font medium text sm ml router pathname history border b px border teal text teal gt History lt Link gt lt nav gt The snippet above creates the application navigation and sets the active tab accordingly We also leverage the power of Cloudinary to seamlessly host and deliver our application logo Secondly we need to update the index js file inside the pages folder as shown below import Head from next head import useState from react import Nav from components Nav import createTrack from components services export default function Home const description setDescription useState const isLoading setIsloading useState false const handleSubmit e gt setIsloading true e preventDefault createTrack description then resp gt alert Tracker created successfully setDescription setIsloading false catch e gt alert Error creating tracker setIsloading false return lt div gt lt Head gt lt title gt Gym Tracker lt title gt lt meta name description content Generated by create next app gt lt link rel icon href favicon ico gt lt Head gt lt main className py px lg py lg px w full gt lt Nav gt lt section className flex justify center gt lt div className px py border rounded lg w full lg w gt lt div className border b h mb gt lt h className text gray gt Gym Tracker lt h gt lt div gt lt form onSubmit handleSubmit gt lt fieldset gt lt label className text sm text gray mb block gt Description lt label gt lt textarea name id rows className border w full rounded sm mb p required value description onChange e gt setDescription e target value gt lt fieldset gt lt button className text sm text white px py rounded sm bg teal hover bg teal disabled isLoading gt Submit lt button gt lt form gt lt div gt lt section gt lt main gt lt div gt The snippet above does the following Imports the required dependenciesLines Create state properties to manage application stateLines Create an handleSubmit function that uses the createTask helper function to create an activityAdds the UI to use the state and function to create a gym trackLastly we need to create a history js file in the same pages folder to show the history of the gym activities import Head from next head import Nav from components Nav import getTrackers from components services export async function getServerSideProps const response await getTrackers then resp gt resp const data await response json return props data export default function History data return lt div gt lt Head gt lt title gt Gym Tracker lt title gt lt meta name description content Generated by create next app gt lt link rel icon href favicon ico gt lt Head gt lt main className py px lg py lg px w full gt lt Nav gt lt section className flex justify center gt lt div className px py border rounded lg w full lg w gt lt div className border b h mb gt lt h className text gray gt History lt h gt lt div gt lt ul gt data records length gt data records map record gt lt li key record id className h auto border rounded sm px py mb gt lt p className text sm text gray mb gt record description lt p gt lt p className text xs text gray mb gt record created on slice lt p gt lt li gt lt p className text sm text gray mb text center gt You currently do not have any data in your tracker lt p gt lt ul gt lt div gt lt section gt lt main gt lt div gt The snippet above does the following Imports the required dependenciesGets data from Xata using the getServerSideProps and the getTrackers helper functionsUpdates the UI to show data dynamically from the returned data propertyWith that done we can restart our development server using the command below npm run dev ConclusionThis post discussed how to quickly build a responsive Gym Tracker to describe daily activities using Xata and Cloudinary These resources might be helpful Xata official docsCloudinary official docsTailwindCSS 2022-11-24 07:31:31
海外TECH DEV Community How to trigger an email on event confirmation with Netlify https://dev.to/hackmamba/how-to-trigger-an-email-on-event-confirmation-with-netlify-2gmh How to trigger an email on event confirmation with NetlifyOver the years emails have been the go to medium for developers to send event RSVPs authentication codes and application runtime notifications among others The implementation process is also daunting for developers as they need to cater to the adopted mail provider and deployment mechanism In this post we will learn how to quickly build an event confirmation application with Netlify Xata SendGrid and Cloudinary using Next js Technology overviewNetlify is a platform for deploying and building highly performant and dynamic websites e commerce stores and web applications Xata is an HTTP API based serverless database for building scalable applications It supports a built in search engine branching scalability and durability without manually managing database configuration and deployment SendGrid is a cloud based email marketing tool developers and marketers use to manage mailing lists A B testing predefined templates and image libraries used in campaign management and audience engagement Cloudinary is a visual media service for uploading storing managing transforming and delivering images and videos for websites and applications GitHub and Deployment linkThe project source codes and deployment link are below GitHub linkLive Site PrerequisitesTo follow along with this tutorial the following requirements apply Basic understanding of JavaScript and ReactA Netlify account for managing deployment Signup is completely freeA Xata account for storing data Signup is completely freeA Github account for saving source code Signup is completely free A SendGrid account for sending emails Signup for a trial account is completely free Getting startedWe need to create a Next js starter project by navigating to the desired directory and running the command below in our terminal npx create next app event confirmation amp amp cd event confirmationThe command creates a Next js project called event confirmation and navigates into the project directory Installing TailwindCSS and Node FetchTailwindCSS is a utility first CSS framework packed with classes to help us style our web pages To use it in our application run the command below npm install D tailwindcss postcss autoprefixernpx tailwindcss init pThe command installs TailwindCSS and its dependencies and generates tailwind config js and postcss config js files Next we need to update tailwind config js file with the snippet below module exports content app js ts jsx tsx pages js ts jsx tsx components js ts jsx tsx theme extend plugins Finally we need to add TailwindCSS directives to our application The directives give our application access to TailwindCSS utility classes To do this navigate to the styles folder and update the globals css files in it with the snippet below tailwind base tailwind components tailwind utilities Lastly we need to install node fetch a package for making HTTP requests To do this we need to run the command below npm i node fetch Set up a Database on XataTo create a database for storing our event confirmation data we need to log into our Xata s workspace click the Add a Database button input events as the database name and Create Next we need to create a table in our database To do this click the Start from scratch menu input confirmed as the table name and Add table PS Xata auto generates an ID column a unique identifier for our table With that done we need to add a name of type String and email of type Email columns to our table To do this click on the Plus icon select type accordingly input column name and Create column After creating the columns our updated table should be similar to the screenshot below Get Database URL and set up API KeyBy default Xata provides a unique and secure URL for accessing the database To get our database URL click the Get code snippet button copy the URL and then click the Set up API key button to generate API key We need the API key for authentication when using the database PS The URL we need to copy starts from the https …… sectionClick the Add a key button input xata function as the name and Save Both the URL and API key will come in handy when deploying our application Set up SendGrid as an email providerTo get started we need to log into our Sendgrid account and create a sender identity for sending emails To do this click the Create a Single Sender button and fill in the required details PS We will also be required to verify the email filled in as the sender s identity Next we need to create an API Key to securely access our SendGrid account and send emails from a client To do this navigate to the API Key tab under the Settings menu and click the Create API Key button Input event conf as the API Key Name and click the Create amp View button SendGrid will generate an API Key We also need to copy and keep the generated key as it will come in handy later on Building the event confirmation applicationCreate email templateTo get started we need to create a reusable template for sending the event confirmation email to our users To do this first we need to create an emails folder in the root directory and in this folder create another folder confirmed Lastly we need to create an index html file inside the confirmed folder and add the snippet below lt html gt lt body style font family Open Sans Helvetica Neue sans serif margin auto gt lt div style background color white display inline block text align center padding px gt lt img style height px width vw src alt mars gt lt h gt Welcome name lt h gt lt p gt We promised this will be the best sessions you have ever experienced lt p gt lt p gt Thanks for subscribing lt p gt lt div gt lt body gt lt html gt The snippet above creates and styles a template by using an optimized image hosted on Cloudinary as the template header and accepts a name variable to personalize the registered user s name Create Serverless FunctionWith that done we need to create a function that saves the details of interested users on Xata and sends a confirmation email To get started first we need to create a netlify folder and create a functions folder in this folder Secondly we need to create a saveandconfirm js file inside the functions folder and add the snippet below import fetch from node fetch exports handler async function event context callback let bodyRequest JSON parse event body const body name bodyRequest name email bodyRequest email save user on the database await fetch process env XATA URL main tables confirmed data method POST headers Content Type application json Authorization Bearer process env XATA API KEY body JSON stringify body send confirmation email await fetch process env URL netlify functions emails confirmed headers netlify emails secret process env NETLIFY EMAILS SECRET method POST body JSON stringify from process env SEND FROM EMAIL to body email subject You ve been confirmed parameters name body name return statusCode body JSON stringify data Email confirmation sent successfully The snippet above does the following Imports the required dependency Lines Gets the request body Lines Creates a POST request to the Xata database by passing the URL as an environment variable with the database details and API keyLines Creates a POST request that sends a request with the required parameters to the email handler and creates the email bodyLines Returns the appropriate response We also constructed the Xata database URL by passing in the branch table name and endpoint type process env XATA URL lt BRANCH NAME gt tables lt TABLE NAME gt ENDPOINT TYPEWe can get the required details from our workspaceIn our case we filled it using an environment variable We will add it when deploying our application to Netlify An adequately filled URL is below process env XATA URL main tables userDetails dataSimilarly we appended our email directory confirmed to the email handler as shown below process env URL netlify functions emails confirmedLastly we need to add a deployment file that instructs Netlify to build our application effectively To do this we need to create a netlify toml file in the root directory of our project and add the snippet below functions node bundler esbuild Building the User InterfaceWith that done we can call the Serverless Function from our application UI To do this first we need to update the index js file inside the pages folder as shown below import Head from next head import useState from react export default function Home const value setValue useState name email const isLoading setIsloading useState false const handleChange e gt setValue value e target name e target value const handleSubmit e gt setIsloading true e preventDefault const body name value name email value email fetch netlify functions saveandconfirm method POST body JSON stringify body then gt alert Confirmed successfully setValue value name email setIsloading false return lt div gt lt Head gt lt title gt Event confirmation lt title gt lt meta name description content Generated by create next app gt lt link rel icon href favicon ico gt lt Head gt lt main className py px lg py lg px w full gt lt section className flex justify center gt lt div className px py border rounded lg w full lg w gt lt div className border b h mb gt lt h className text gray gt Confirm Attendance lt h gt lt div gt lt form onSubmit handleSubmit gt lt fieldset gt lt label className text sm text gray mb block gt Name lt label gt lt input name name className border w full rounded sm mb p required value value name onChange handleChange gt lt fieldset gt lt fieldset gt lt label className text sm text gray mb block gt Email lt label gt lt input name email className border w full rounded sm mb p type email required value value email onChange handleChange gt lt fieldset gt lt button className text sm text white px py rounded sm bg teal hover bg teal disabled isLoading gt Submit lt button gt lt form gt lt div gt lt section gt lt main gt lt div gt The snippet above does the following Imports the required dependenciesLines Create state properties to manage application stateLines Creates handleChange to control the input fieldsLines Makes a POST request to the Serverless Function we created earlier and pass in the required parameterUpdates the UI accordingly Putting it all together on NetlifyPushing our source code to GitHubWe need to push our source code to GitHub to enable a seamless deployment process To get started we need to log into our GitHub account create a repository input event confirmation as the name and Create repository Next we initialize a git project and save recent changes in our project by running the command below git initgit add git commit m event confirmation source code To push our changes copy and run the highlighted commands on the terminal Deploying to NetlifyTo get started we need to log into our Netlify dashboard Click on Add new site dropdown and select Import an existing project Select GitHub as the Git provider and authorize Netlify Search for event confirmation and select the repository Click on Show advanced click the New variable button and add the XATA URL XATA API KEY SEND FROM EMAIL and NETLIFY EMAIL SECRET environment variables as key and their corresponding values As earlier mentioned we can get the needed values from Xata workspace and SendGrid dashboard Click the Deploy site button to start deployment It might take a few minutes Configure email integrationTo do this click the Site settings button to view the deployed site settings Navigate to the Emails tab and click the Enable emails button Select SendGrid as the email provider input the API key we generated earlier on SendGrid and Save Finally to sync the latest changes with our deployed application we need to navigate to the Deploys tab and trigger redeployment by clicking the Clear cache and deploy site option With that done we can test our application by clicking on the deployed URL ConclusionThis post discussed how to save event details and trigger an email in a Netx js application using Xata SendGrid and Netlify With this approach developers can streamline their architectural process by leveraging out of the box solutions to cater to storing users data and sending dynamic emails These resources might be helpful Xata official docsCloudinary official docsNetlify email integrationTailwindCSS 2022-11-24 07:31:05
Apple AppleInsider - Frontpage News Apple Black Friday deals: save up to $900 on MacBook Pro laptops https://appleinsider.com/articles/22/11/24/apple-black-friday-deals-save-up-to-900-on-macbook-pro-laptops?utm_medium=rss Apple Black Friday deals save up to on MacBook Pro laptopsApple resellers have dropped prices on MacBook Pro systems with Black Friday deals knocking up to off Save up to for Black Friday Black Friday deals on Apple hardware continue to roll in as resellers compete for your business And that means aggressive savings on MacBook Pro models with discounts of up to off Read more 2022-11-24 07:50:24
Apple AppleInsider - Frontpage News Black Friday deal: get 3 months of Xbox Live Gold for $9.99 https://appleinsider.com/articles/22/11/24/black-friday-deal-get-3-months-of-xbox-live-gold-for-999?utm_medium=rss Black Friday deal get months of Xbox Live Gold for Pick up the month Xbox Live Gold subscription for just the lowest price ever with this Black Friday deal that knocks off the retail price Xbox Live GoldShoppers can save on the three month subscription to Xbox Live Gold The original price is but it s now on sale for Read more 2022-11-24 07:24:39
海外TECH Engadget The FTC might file an antitrust lawsuit to block Microsoft's Activision purchase https://www.engadget.com/ftc-antitrust-lawsuit-block-microsoft-activision-purchase-071224285.html?src=rss The FTC might file an antitrust lawsuit to block Microsoft x s Activision purchaseMicrosoft s billion purchase of Activision Blizzard is facing scrutiny from antitrust investigators in several countries In the US for instance the Federal Trade Commission FTC started looking into the acquisition shortly after it was announced Now the FTC is reportedly ready to take action and will likely file an antitrust lawsuit to block Microsoft s massive purchase according to Politico Microsoft failed to convince the FTC staff reviewing the deal with its arguments Politico s sources said but the agency s commissioners have yet to vote on filing a complaint or to meet with lawyers nbsp While a lawsuit is not percent guaranteed yet the commission is reportedly done with the biggest parts of the investigation including with the depositions of the Microsoft chief Satya Nadella and Activision CEO Bobby Kotick If the FTC ultimately decides to file a lawsuit it could do so as soon as next month The publication says the commission will likely file the case in its own in house administrative court since it doesn t have to bring it to federal court first to seek a temporary injunction Seeing as other regulators are also looking into the acquisition it wouldn t be able to go through if it s ultimately allowed to do so until sometime next year nbsp In the UK the Competition and Markets Authority CMA launched an in depth investigation of the deal in September And more recently the European Commission announced that it will carry out a full scale probe into Microsoft s purchase Like these two European regulators the FTC is concerned that the acquisition will give Microsoft an unfair advantage in the gaming sector and that it may significantly reduce competition in the market nbsp Sony has been one of the loudest voices opposing the deal and has expressed concerns that Microsoft might make valuable IPs like Call of Duty an Xbox exclusive Jim Ryan Sony PlayStation s CEO previously revealed that Microsoft only offered to keep Call of Duty available on PlayStation for three years after the current agreement ends But Xbox chief Phil Spencer said more recently that the company is not taking Call of Duty from PlayStation In Microsoft s latest filing with the CMA it argued that the acquisition won t give it an unfair advantage Sony has more exclusive games than the Xbox it said and many of them are of better quality 2022-11-24 07:12:24
海外ニュース Japan Times latest articles U.S., Japan and South Korea step up bid to counter Pyongyang’s missile threats https://www.japantimes.co.jp/news/2022/11/24/national/japan-south-korea-us-missiles/ U S Japan and South Korea step up bid to counter Pyongyang s missile threatsSeoul and Tokyo recently tested new missile interceptors and the U S Space Force is establishing its first unit in the Indo Pacific region 2022-11-24 16:21:56
ニュース BBC News - Home Scottish schools shut as teachers strike over pay https://www.bbc.co.uk/news/uk-scotland-63734668?at_medium=RSS&at_campaign=KARANGA strike 2022-11-24 07:32:19
ビジネス ダイヤモンド・オンライン - 新着記事 ゲーム会社10年ぶりに減収か、精彩欠く年末商戦 - WSJ発 https://diamond.jp/articles/-/313446 年末商戦 2022-11-24 16:23:00
ビジネス ダイヤモンド・オンライン - 新着記事 暗号資産の急落は米経済に恩恵、その理由とは - WSJ発 https://diamond.jp/articles/-/313447 資産 2022-11-24 16:21:00
ビジネス 電通報 | 広告業界動向とマーケティングのコラム・ニュース 持続可能な世界をつくる“エシカル”な精神とは? https://dentsu-ho.com/articles/8413 一般社団法人 2022-11-24 17:00:00
GCP Google Cloud Platform Japan 公式ブログ セキュリティ体制を大規模に強化するシンプルな方法である IAM 拒否ポリシーのご紹介 https://cloud.google.com/blog/ja/products/identity-security/introducing-iam-deny/ この拒否ルールを拒否ポリシーに追加して、ポリシーを組織レベルで適用します。 2022-11-24 08:00:00
ニュース Newsweek ウクライナから盗んだアライグマがロシア空挺部隊の士気をよみがえらせた! https://www.newsweekjapan.jp/stories/world/2022/11/post-100183.php 2022-11-24 16:03:36
IT 週刊アスキー コーテク作品が最大75%オフ!「信長の野望」や「ライザ」がお買い得 https://weekly.ascii.jp/elem/000/004/114/4114523/ blackfridaysale 2022-11-24 16:30:00
IT 週刊アスキー 『機動戦士ガンダムUCE』で11月28日19時より1周年記念の公式生放送が配信決定! https://weekly.ascii.jp/elem/000/004/114/4114522/ ucengage 2022-11-24 16:25:00
GCP Cloud Blog JA セキュリティ体制を大規模に強化するシンプルな方法である IAM 拒否ポリシーのご紹介 https://cloud.google.com/blog/ja/products/identity-security/introducing-iam-deny/ この拒否ルールを拒否ポリシーに追加して、ポリシーを組織レベルで適用します。 2022-11-24 08:00:00

コメント

このブログの人気の投稿

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

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

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