Google |
Official Google Blog |
Searching for the way forward |
http://feedproxy.google.com/~r/blogspot/MKuf/~3/A2gfC7b8Sm4/
|
Searching for the way forwardI can t think of a time when technology has been able to be more helpful to more people families communities companies and countries than today At the same time the ways that people are using technology are more dynamic than ever Technology has been a lifeline in lockdown and it will be an important catalyst in a sustainable and accelerated recovery that works for everyone As we strive to emerge from the narrow canyon of restrictions on our lives into a more familiar world of wider horizons we re all keen to understand which changes in habits and behaviors will stay with us What will stick and what will fade For businesses the impact of this crisis has varied enormously Some have seen acceleration more have had to fight for survival as physical channels to customers were impacted Whatever the situation we re all searching through a fog of uncertainty for the way forward At the beginning of the pandemic we saw how changes were driving businesses to innovate ーwith many like Lynsey Pollard s Little Box of Books using digital tools to quickly identify and respond to rising consumer demand ー in her case for home education resources tripling website visits in the very first month of the pandemic Now a year later we can see three big trends emerging that businesses should address to accelerate recovery Three lasting consumer trends ascompanies get ready for what s nextThe pandemic has accelerated existing shifts in behavior Firstly we ve seen that the pandemic has accelerated behaviors which were already underway Consumers went digital across all aspects of their lives ーsearches for delivery discount codes and even how to grew significantly compared to the previous years However it s worth noting that some behavior changes remain unpredictable For example people s preference for shopping online over shopping in store has fluctuated fast and often since May of last year People need more help than ever navigating choice complexity Secondly we ve seen the value of being fast and helpful for customers Consumer decision making is increasingly complex with more options and considerations than ever So consumers need more help than ever in making those decisions giving businesses a huge opportunity to introduce themselves and be helpful at the right moment People want an open and affordable digital world and that requires relevant ads that respect their privacy The increasing importance of technology in our lives has heightened expectations for an open and affordable digital world underpinned by safety and privacy online People understand the value of advertising to support that experience and they want to see relevant timely ads that respect their privacy A Google Euroconsumers study found that nearly of respondents believe the amount of personal data collected online makes it difficult for them to protect their privacy Search interest for online privacy has grown globally by more than year over year We all have to build trust every time there s an interaction People deserve to know how their data is being used so that they can choose to give informed permission More insights and tools for companies to help recoverySo what can we do to help companies face the uncertainty and such dynamic consumer trends At Google we re developing new tools to help businesses understand and respond better to shifting needs Firstly we re launching the new Insights Page within Google Ads It is a new destination in Google Ads where marketers can see contextual and automated insights to help them adapt their business faster in a more dynamic world For instance Body amp Fit an Irish company offering sports nutrition food supplements and dietary products was affected by a decline in in store sales and international shipment delays during local lockdowns By using health and fitness insights across a number of countries the brand was able to find new opportunities for growth and even expanded into new markets As a result by the end of last year it saw a year over year increase in revenue Secondly we ve been looking at ways for businesses to move faster ー by quickly taking action based on recommendations from our real time insights powered by machine learning To achieve this we re taking automation one step further giving marketers an option to opt in to automatically apply certain campaign and performance recommendations This means that every time our algorithms detect an opportunity to improve a campaign brands can implement these recommendations instantly enabling them to be fast and helpful for their consumers and save time The Netherlands based agency Dept has been automatically applying recommendations across its client portfolio and it s worked ーthe agency has saved of the time it previously spent on repetitive tasks while increasing Google ads optimization scores by points on average Dept has also seen a positive impact on their clients performance ーconstruction company BAM saw a increase in conversion volume and a increase in conversion rate Finally as we have seen a decline in trust in online advertising we ve been working with the advertising ecosystem on new privacy preserving proposals open to the industry within the Privacy Sandbox We ve also confirmed that once third party cookies are phased out we will not build alternate identifiers to track individuals as they browse across the web nor will we use them in our products Now is the time for marketers to focus on building strong first party relationships and the expertise they need to build trust sustainably The insights businesses want the tools they need the partnership they deserveAs we search for the way forward businesses need to be even closer to their consumers and respond to their needs faster than ever before Google is here to help turn this challenge into a new opportunity for future growth by providing the insights businesses want the tools they need and the partnership they deserve to help them find the way |
2021-04-14 13:00:00 |
python |
Pythonタグが付けられた新着投稿 - Qiita |
Galleryのんびり見よう004(Horizontal bar) (matplotlib) |
https://qiita.com/yo314159265/items/9c9b112ee7af6f96d3e4
|
Galleryのんびり見ようHorizontalbarmatplotlib概要matplotlibのGalleryをのんびり見よう。 |
2021-04-14 21:39:19 |
python |
Pythonタグが付けられた新着投稿 - Qiita |
Galleryのんびり見よう003(Bar Label) (matplotlib) |
https://qiita.com/yo314159265/items/2dbdad17c106dbc3dd7a
|
Galleryのんびり見ようBarLabelmatplotlib概要matplotlibのGalleryをのんびり見よう。 |
2021-04-14 21:31:14 |
python |
Pythonタグが付けられた新着投稿 - Qiita |
Galleryのんびり見よう002(Grouped bar) (matplotlib) |
https://qiita.com/yo314159265/items/8a877799f6c2a732332e
|
参考にさせていただいた頁sphxglrgallerylinesbarsandmarkersbarstackedpy感想グラフを並べるのに悩んでいたので、助かる。 |
2021-04-14 21:22:48 |
python |
Pythonタグが付けられた新着投稿 - Qiita |
Galleryのんびり見よう index (matplotlib) |
https://qiita.com/yo314159265/items/e259ff253dbf03d0566d
|
stackedbarmatplotlib |
2021-04-14 21:11:14 |
python |
Pythonタグが付けられた新着投稿 - Qiita |
Galleryのんびり見よう001(Stacked bar) (matplotlib) |
https://qiita.com/yo314159265/items/8eb2cc6d9810f435689e
|
Galleryのんびり見ようStackedbarmatplotlib概要matplotlibのGalleryをのんびり見よう。 |
2021-04-14 21:08:26 |
js |
JavaScriptタグが付けられた新着投稿 - Qiita |
TwitterのRTを一気に取り消したスクリプト |
https://qiita.com/libraplanet/items/7c207c576b4ca74eb8ab
|
TwitterのRTを一気に取り消したスクリプトTwitterのつぶやきなんて、割以上が残しておく必要がない。 |
2021-04-14 21:59:35 |
js |
JavaScriptタグが付けられた新着投稿 - Qiita |
javascriptで簡単な電卓を作ってみた(2) |
https://qiita.com/xtzi/items/39ead5a6ca83f39d3a86
|
まだ数字を入力できるようにしかなっていないので、次回、計算処理をする部分のスクリプトを書きます。 |
2021-04-14 21:55:38 |
js |
JavaScriptタグが付けられた新着投稿 - Qiita |
NodistでNode.jsのバージョン管理をする【Windows版のNode.jsバージョン管理ツール】 |
https://qiita.com/daigo2895/items/430323f810a52ef6cab8
|
インストール可能なバージョンを表示コマンドプロンプトCUsersユーザー名gtnodistdistバージョンがズラーと並ぶ⇓必要なバージョンをインストールするコマンドプロンプトCUsersユーザー名gtnodistvKiBs※nodistバージョンを実行しています※この時点ではインストールしているだけなのでバージョンは変わりませんバージョンを切り替えるコマンドプロンプトCUsersユーザー名gtnodistvvvglobal※nodistバージョン名で切り替えます切り替わったか確認するコマンドプロンプトCUsersユーザー名gtnodev・・・あれ変なバージョンになっている原因私が今行っているプロジェクトで使用しているバージョンでした・・・恐らくnpmパッケージ管理ツールなども関係しているようなので調べて追記したいと思います。 |
2021-04-14 21:06:53 |
js |
JavaScriptタグが付けられた新着投稿 - Qiita |
javascriptで簡単な電卓を作ってみた(1) |
https://qiita.com/xtzi/items/a90f26eb28cff7568b44
|
最初のこの記事ではHTMLを書いていきます。 |
2021-04-14 21:04:11 |
Program |
[全てのタグ]の新着質問一覧|teratail(テラテイル) |
[Python]Seleniumを用いたメルカリのログイン操作に関するエラー |
https://teratail.com/questions/333266?rss=all
|
|
2021-04-14 21:51:43 |
Program |
[全てのタグ]の新着質問一覧|teratail(テラテイル) |
KaggleのtitanicのcsvデータによるSVMの作成とF1値の導出 |
https://teratail.com/questions/333265?rss=all
|
KaggleのtitanicのcsvデータによるSVMの作成とF値の導出表題の通り、Kaggleのtitanicに挑戦しています。 |
2021-04-14 21:48:25 |
Program |
[全てのタグ]の新着質問一覧|teratail(テラテイル) |
gasで「記入日」「更新日」を自動で入力するようにしたい! |
https://teratail.com/questions/333264?rss=all
|
gasで「記入日」「更新日」を自動で入力するようにしたいGoogleappscriptの複数条件の書き方勤め先で営業が使用する記入リストを作成し、「更新日」が自動的に記入されるスクリプトを初めて作成しました。 |
2021-04-14 21:48:25 |
Program |
[全てのタグ]の新着質問一覧|teratail(テラテイル) |
APIでの取得ができない【Python】 |
https://teratail.com/questions/333263?rss=all
|
APIでの取得ができない【Python】オープンロジのAPIを利用して在庫数を取得したいのですが、上手く行かず困っています。 |
2021-04-14 21:48:10 |
Program |
[全てのタグ]の新着質問一覧|teratail(テラテイル) |
python seleniumで既に開いているchromeを操作したい。 |
https://teratail.com/questions/333262?rss=all
|
pythonseleniumで既に開いているchromeを操作したい。 |
2021-04-14 21:31:14 |
Program |
[全てのタグ]の新着質問一覧|teratail(テラテイル) |
[EC2]ローカル環境ではエラーが出ないが、本番環境ではエラーが出てしまう |
https://teratail.com/questions/333261?rss=all
|
|
2021-04-14 21:31:10 |
Program |
[全てのタグ]の新着質問一覧|teratail(テラテイル) |
Pタグで囲またスクリプトは機能しますか |
https://teratail.com/questions/333260?rss=all
|
Pタグで囲またスクリプトは機能しますかCMSのウィズウィグのコード入力画面にグーグルアドセンスのコードを入力しました。 |
2021-04-14 21:12:52 |
Ruby |
Rubyタグが付けられた新着投稿 - Qiita |
【At Corder】【初心者】ABC087B - Coins をRuby で解いてみた |
https://qiita.com/nekonoiruheya/items/3627eee603a87eaf85e2
|
ちょっとでもわからないなぁ、と思ったことは調べて解説と参考文献を載せますので、同じ内容でわからない人がいれば参考にししてください問題ABCBCoins円玉をA枚、円玉をB枚、円玉をC枚ある。 |
2021-04-14 21:59:24 |
AWS |
AWSタグが付けられた新着投稿 - Qiita |
TerraformでSSHキーがインポートできなかった |
https://qiita.com/koyablue/items/2c4198c26b5b7a343427
|
TerraformでSSHキーがインポートできなかったしょーもないことなのですが、若干時間かかったので。 |
2021-04-14 21:07:29 |
Linux |
CentOSタグが付けられた新着投稿 - Qiita |
無料になったIntel compilrをCentOS8にインストールしてみる |
https://qiita.com/k_nitadori/items/84c2e7c6c1825c092cc9
|
実は古い方のコンパイラはoneAPIHPCToolkitに含まれるinteloneapicompilerdpcppcppandcppclassicというパッケージの方で提供されているようです。 |
2021-04-14 21:30:58 |
Git |
Gitタグが付けられた新着投稿 - Qiita |
MacユーザーのためのGitの環境構築メモ |
https://qiita.com/aseanchild1400/items/b0c1819794ec484fbdd1
|
|
2021-04-14 21:08:40 |
技術ブログ |
Developers.IO |
[新機能] Amazon Redshift データレイクのデータ更新がシンプルになるUNLOADコマンドのCLEANPATH指定がサポートされました |
https://dev.classmethod.jp/articles/20210414-amazon-redshift-unload-cleanpath-option-support/
|
amazonredshift |
2021-04-14 12:57:11 |
海外TECH |
Ars Technica |
Mazda’s electric MX-30 goes on sale in the US this fall |
https://arstechnica.com/?p=1756570
|
hybrid |
2021-04-14 12:00:38 |
海外TECH |
DEV Community |
Monorepo With Yarn Workspaces |
https://dev.to/pyeongoh5/monorepo-with-yarn-workspaces-325m
|
Monorepo With Yarn Workspaces MonorepoMonorepo는Monolithic Repositories의약자로 직역하면단단히하나로짜여진저장소를의미합니다 단단히하나로짷여진저장소라는게무슨의미일까요 일반적으로보통하나의프로젝트는하나의레포지토리와매칭이되고이런형태의프로젝트구성을Multi repo PolyRepo라고합니다 A 프로젝트 gt A 레포지토리B 프로젝트 gt B 레포지토리Monorepo는이와반대로여러프로젝트가하나의레포지토리에저장되는형태를생각할수있습니다 A 프로젝트B 프로젝트 gt Mono 레포지토리C 프로젝트그림으로표현해보면아래와같은구조입니다 Monorepo를사용하는이유Monorepo를사용하는이유는굉장히다양할수있는데요 장점이있는만큼단점도있을수있어서 프로젝트환경을고려해결정하면좋을것같습니다 장점 하나의레포지토리로여러개의프로젝트를관리할수있다 하나의레포지토리가여래개의프로젝트 여기서는패키지라고하겠습니다 를포함하고있는것은굉장히큰편의성을가집니다 코드를짜는입장에서도여러개의IDE를열거나 IDE에서프로젝트를스위치해가며개발할필요없이하나의IDE에서하위폴더로구분된여러패키지들의코드를작성할수있습니다 중첩되는코드를공통화할수있다 A B C D 패키지로구성된Monorepo가있고 여러프로젝트들이공통으로사용해야하는로직이있을때 이를쉽게추가적인E 패키지로분리하고AD 패키지에서import 하여사용할수있습니다 중첩되는모듈은하나만설치하여사용합니다 A B C D 패키지모두react 버전을사용한다고가정하면 각각의패키지에서react 버전을설치하는것이아닌root에react 버전하나를설치하고AD에서끌어다사용합니다 단점 의존성의충돌이생길경우 정상동작하던패키지들도동작하지않을수있다 여러프로젝트를하나의레포지토리로관리하기때문에오히려관리가어려울수있다 Monorepo로관리하는패키지가많지않을경우에는해당되지않지만 관리하는패키지가증가함에따라오히려가독성이나여러가지측면에서비효율적이게될수있습니다 초기프로젝트설정이오래걸린다 Monorepo로포함되는모든프로젝트를사용한다면상관없지만 그중일부만필요한경우에도 전체적인node module 설치가이루어져야한다 Monorepo를구성하는여러가지방법Monorepo를구성하는방법은아래와같이여러가지방법들이있으며 저는현재yarn workspace 기능만을사용하고있습니다 yarn workspacenode package manager중에하나인yarn에서는 npm엔없음 workspace 기능을통해서monorepo를가능하게해줍니다 LernaLerna는node moudule로 yarn의workspace와마찬가지로monorepo를가능하게해주는기능을제공함과동시에 설치된의존성을제거해주는clean 기능이나monorepo로구성한package를npm 배포할수있는기능들을제공합니다 git submodule기존multi repo로관리되는것들을하나로합쳐서 monorepo를구성하려는경우git의submodule을사용하여구성할수있습니다 단git submodule은위의방법들과는다르게다수의레포지토리를관리하여야하고submodule이라는것의개념과사용방법을익혀야하기때문에어느정도러닝커브가있습니다 yarn workspace로Monorepo 구성하기yarn의workspace 기능을통해서monorepo를구성하는방식은아주간단합니다 yarn init을통해서프로젝트초기화를해주고 package json에아래와같이private과workspaces 프로퍼티를설정해주면됩니다 package json private true workspaces packages 의존성관리방식위의방식대로설정을마치고 패키지를구성한뒤의존성을설치하게되면패키지각각의패키지에서요구하는모듈의버전을확인하여공통되는부분은root의node modules폴더안에설치를하고 symlink를통해각각의패키지로연결되어사용됩니다 yarn workspace를사용한이유위에설명했엇던방식들 yarn workspace lerna git submodule 로비교를해보자면 lerna는npm 배포와관련된유용한유틸기능들을제공해주지만저희는npm 배포를하지않았기때문에사용할필요가없다고판단했고git submodule 또한기존의multi repo로관리되던프로젝트를monorepo로구성하는것이아닌시작부터monorepo로시작하였기때문에 monorepo를구성하는데만필요한기능인yarn의workspace 기능을사용하였습니다 Trouble Shooting 사례yarn의workspace는패키지들사이에서같은버전을사용하는버전을찾아root의node modules안에설치하는데 이렇게한번완성된형태의의존성구조를가진채로 기존의존성을해치는새로운패키지가추가되었을경우기존잘동작하던패키지가동작하지않거나하는사이드이펙트가발생할수있습니다 하나의예시로 monorepo로관리하는공통components를담당하는패키지에서 storybook의커스텀웹팩세팅을위해서babel loader 버전을설치해사용하고있었고 이후추가로create react app을통해서새로운패키지를추가하였는데 cra를통해생성된패키지는babel loader 을사용해야하는제약사항이있었던문제로인해실행이되지않은문제가있었습니다 위문제를해결하기위해서components 패키지의babel loader 버전을 으로다운그레이드 하여해결할수있었습니다 |
2021-04-14 12:38:25 |
海外TECH |
DEV Community |
Write your first test in Cypress |
https://dev.to/automationbro/write-your-first-test-in-cypress-30gi
|
Write your first test in CypressIn this tutorial we will cover how to write your first test in Cypress We will go over the basic Cypress syntax and run our tests using the Cypress Test Runner Creating your Cypress Testto go to any URL you can use the cy visit commandCypress also provides various types of page assertions such as cy url and cy title to assert the URL as well as the title of the page Running your Cypress Test in the Cypress Test RunnerTo open the Cypress Test Runner you can execute the following command below npx cypress openOnce the Cypress Test Runner opens up you can execute your test which will show results similar to this below You can see all the Cypress commands listed below such as visit URL amp titleAll your successful assertions will show in Green and failed assertions in Red Check out the video below to see how to create your first test in Cypress Subscribe to my mailing list to get access to more content like this Follow automationbro on Twitter for the latest updates I love coffees And if this post helped you out and you would like to support my work you can do that by clicking on the button below and buying me a cup of coffee You can also support me by liking and sharing this content Thanks for reading |
2021-04-14 12:31:36 |
海外TECH |
DEV Community |
What Code Editor Are You Using? |
https://dev.to/cristoferk/what-code-editor-are-you-using-b6d
|
What Code Editor Are You Using What code editor are you using Why Also here are the best code editors tDon t forget to subscribe to my YouTube channel for weekly programming tutorials |
2021-04-14 12:25:13 |
海外TECH |
DEV Community |
REST API with Rust + Warp 5: Beyond test utilities |
https://dev.to/rogertorres/rest-api-with-rust-warp-5-beyond-test-utilities-15jo
|
REST API with Rust Warp Beyond test utilitiesLast part folks Time to say goodbye Warp The code for this part is available here Warp s test utilities are great but I didn t want to end this series without actually being able to serve what has been built and to curl against it To do so I first created a src bin main rs file Then I changed Cargo toml to add this bin name holodeck path src bin main rs lib name holodeck path src lib rs As I mentioned at the beginning it is easier to find examples of code serving and consuming the API than testing it using the test utilities so I m gonna fly over it My main rs ended up like this I made models and filters public in lib rsuse holodeck models filters use warp Filter tokio main async fn main let db models new db let routes filters list sims db clone or filters post sim db clone or filters update sim db clone or filters delete sim db warp serve routes run await And that s all I just had to put the filters together using or and serve The clones work because we re cloning an Arc which doesn t create a new copy just a new reference to our Mutex Below you will find some some curls I made POSTcurl location request POST localhost holodeck header Content Type application json header Content Type text plain data raw id name The Big Goodbye curl location request POST localhost holodeck header Content Type application json header Content Type text plain data raw id name Bride Of Chaotica PUTcurl location request PUT localhost holodeck header Content Type application json header Content Type text plain data raw name A Fistful Of Datas curl location request PUT localhost holodeck header Content Type application json header Content Type text plain data raw name A Fistful Of La Forges GETcurl location request GET localhost holodeck curl location request GET localhost holodeck DELETEcurl location request DELETE localhost holodeck The good thing about using warp s test utilities is that when the time comes to serve what you built there s no extra effort no refactoring So if you are using the tests I strongly advise you to try some curls as well Here are some problems that I just found when doing it At some point I deleted the warp get from my list sims and as a result answering every request I made The serialization deserialization in PUT wasn t working properly As this didn t appear in the tests I assumed serde was being so good at its job the ended up hiding a mistake I made in the code Delete reply had the right Status but the wrong written message The EndWhat a journey I really hope it ends up being useful to someone else Before letting you go I would like to write a small mea culpa to warn you about the things that are not ok regarding what was built here My main goal was to show the process not the result I didn t want to post a finished code and write a text explaining it Although I am happy with this choice it has some drawbacks To make things clearer I avoided creating and using too many functions that would compel the reader to check the previous code to make sense of it So be aware that these things are not ok even though some of them are not huge problems Code repetition is problem number one Tests are creating the same Simulations there are repeated use keywords everywhere and so on I forced the HashMap so it never felt natural I don t regret it because it gave me a chance to show you the trait implementation but oftentimes it was a bit of a hassle Warp providing building blocks which means that there is more than one way of doing the same things and naturally some are better than others I didn t stress this much often going with the easiest wayAnd I think that s enough Really Thank you for spending the time Live long and prosper |
2021-04-14 12:21:44 |
海外TECH |
DEV Community |
REST API with Rust + Warp 4: PUT & DELETE |
https://dev.to/rogertorres/rest-api-with-rust-warp-4-put-delete-3905
|
REST API with Rust Warp PUT amp DELETEThat s it the last methods In the beginning I thought it would be the end of the series but then I realized it needed an additional post regarding how to manually test it using curl However before that there are still two more methods to be coded But don t worry both combined are probably easier than the single ones we handled so far Warp Mr Sulu The code for this part is available here The PUT method is a mix between insert and change it creates an entry when the data is not there and updates it when it is This behavior is already met by our HashSet this is exactly how the insert function works However we got to know if we are inserting or changing because the status that is returned got to be different Code when it is createdCode when it is updatedWhere did I get this from It is written here With that in mind I wrote this code tokio test async fn try update let db models new db let api filters update sim db let response request method PUT path holodeck json amp models Name new name String from The Big Goodbye reply amp api await assert eq response status StatusCode CREATED let response request method PUT path holodeck json amp models Name new name String from The Short Hello reply amp api await assert eq response status StatusCode OK How did I knew that was StatusCode CREATED and was StatusCode OK Here As you can see the request is made by sending the parameter id in this case Different from GET this parameter is mandatory And because the id is already being sent in the URI the body only contains the name The reasoning behind this is also in the aforementioned rfc Because of this I implemented a new struct and a new function to get the JSON body derive Debug Deserialize Serialize pub struct NewName pub name String This code is inside the mod filters fn json body put gt impl Filter lt Extract models NewName Error warp Rejection gt Clone warp body content length limit and warp body json This is certainly a suboptimal way of doing this But let s move on anyway I am saving the excuses about the poor execution of things to the last part Now the filter and the handler This is inside the mod filters pub fn update sim db models Db gt impl Filter lt Extract impl warp Reply Error warp Rejection gt Clone let db map warp any map move db clone warp path holodeck u and warp put and json body put and db map and then handlers handle update sim pub async fn handle update sim id u new models NewName db models Db gt Result lt impl warp Reply Infallible gt Replaced entry if let Some db lock await replace Simulation id name new name return Ok warp reply with status format Simulation was updated n id StatusCode OK Create entry Ok warp reply with status format Simulation was inserted n id StatusCode CREATED And that s it Red alertTo warp wrap things up the DELETE method As usual the request is quite simple it sends the id as a parameter and no body As a response we expect code OK including a representation describing the status tokio test async fn try delete let simulation models Simulation id name String from The Big Goodbye let db models new db db lock await insert simulation let api filters delete sim db let response request method DELETE path holodeck reply amp api await assert eq response status StatusCode OK Hopefully nothing about the filter implementation seems strange to you pub fn delete db models Db gt impl Filter lt Extract impl warp Reply Error warp Rejection gt Clone let db map warp any map move db clone warp path holodeck u and warp delete and db map and then handlers handle delete sim Since it is the first time we re deleting data the handler has a unique behavior but also nothing very different from what has been done so far pub async fn handle delete sim id u db models Db gt Result lt impl warp Reply Infallible gt if db lock await remove amp Simulation id name String new return Ok warp reply with status format Simulation was deleted id StatusCode OK Ok warp reply with status format No data was deleted StatusCode OK That should do cargo testrunning teststest tests try delete oktest tests try create oktest tests try list oktest tests try create duplicates oktest tests try update oktest result ok passed failed ignored measured filtered outAnd it did In the next episode of Engaging Warp Finally the last part We will serve what has been built and curl against it |
2021-04-14 12:21:26 |
海外TECH |
DEV Community |
REST API with Rust + Warp 3: GET |
https://dev.to/rogertorres/rest-api-with-rust-warp-3-get-4nll
|
REST API with Rust Warp GETWelcome back Last time we saw each other I wrote Next in line is the GET method which means we ll see parameter handling and finally deal with this HashSet thing So let us not waste our time in idle discourse Warp make it so The code for this part is available here First I needed another dependency to help me deserialize the GET return so I changed the Cargo toml file serde json Then the time came to change try list As of our last encounter this test had only a request and the assert eq I added two things Before the request I manually inserted two entries into the HashSet I could ve called POST but since it is already being tested elsewhere it is ok to take this shortcut After the request I deserialized the HTML body and compared its content to the data I had previously inserted There s a chance that a few things will appear weird but don t worry I will go through each one of them use std collections HashSet tokio test async fn try list use std str use serde json let simulation models Simulation id name String from The Big Goodbye let simulation models Simulation id name String from Bride Of Chaotica let db models new db db lock await insert simulation clone db lock await insert simulation clone let api filters list sims db let response request method GET path holodeck reply amp api await let result Vec lt u gt response into body into iter collect let result str from utf amp result unwrap let result HashSet lt models Simulation gt serde json from str result unwrap assert eq models get simulation amp result unwrap amp simulation assert eq models get simulation amp result unwrap amp simulation let response request method GET path holodeck reply amp api await let result Vec lt u gt response into body into iter collect let result str from utf amp result unwrap let result HashSet lt models Simulation gt serde json from str result unwrap assert eq result len assert eq models get simulation amp result unwrap amp simulation The first thing I take as deserving an explanation is the db lock await insert The lock gives you what s inside the Arc and in this case it returns a Future Why Because we are not using std sync Mutex but tokio sync Mutex which is an Async implementation of the former That s why we don t unwrap but instead await as we need to suspend execution until the result of the Future is ready Moving on filters list sims is now getting a parameter which is the data it will return which in a real execution would come from the HTTP body After the requestーthat remains the sameーthere are three lines of Bytes handling jibber jabber Bytes is the format with which warp s RequestBuilder handles the HTML body content It looks like a u that is an array of the primitive u but it is a little bit more painful to handle What I did with it however is simple I Mapped its content to a Vector of uMoved the Vector s content to the sliceUsed serde json from str function to map it to the Simulation struct inside the HashSet And this is one of the reasons I wanted a HashSet As far as I know standard Rust doesn t allow you to create a HashMap referring to a struct of two fields that is you cannot do that This code is not in the project struct Example id u name String type Impossible HashMap lt Example gt And without using a struct as I did with the HashMap as well as the cool kids did with Vector here at line using serde gets complicated which means I have no idea how to do it Nonetheless there is another reason why I wanted to stick the struct within the HashSet it gave me the chance to implement some traits for my type Before diving into the traits I would like to explain the last part of the test which should be a different test but the example is already too big The GET method can be used in three different ways Fetch all the entries holodeckFetch a single entry holodeck idFetch filtered entries holodeck search queryThis last request using path holodeck was written to cover the second case I did not and will not develop the third one Boldly implementing traitsIf you compare the HashSet element with another it will compare everything That s no good if you have a key value pair struct As I didn t want to use HashMap because of the aforementioned reasons the way to go is to change this behavior making comparisons only care about the id First I brought Hash and Hasher then I removed the Eq PartialEq and Hash so I could implement them myself And the implementation was this use std hash Hash Hasher derive Clone Debug Deserialize Serialize pub struct Simulation pub id u pub name String impl PartialEq for Simulation fn eq amp self other amp Self gt bool self id other id impl Eq for Simulation impl Hash for Simulation fn hash lt H Hasher gt amp self state amp mut H self id hash state How did I know how to do it I just followed the documentation where it says How can I implement Eq Yes Rust docs are that good And what about Hash Same thing But it is interesting to note why I did it HashSet requires the Hash trait and the Hash trait demands this k k gt hash k hash k That means if the values you re comparing are equal their hashes also have to be equal which would not hold after the implementation of PartialEq and Eq because both values were being hashed and compared while the direct comparison only cared about id chance that I am wrong but I think it should not be an implication → but a biconditional because the way it stands if k k is false and hash k hash k is true the implication s result is still true But I am not a trained computer scientist and I am not sure this uses first order logic notation Let me know in the comments if you do One last addition I made below the Hash implementation was this pub fn get simulation lt a gt sims amp a HashSet lt Simulation gt id u gt Option lt amp a Simulation gt sims get amp Simulation id name String new Even though the only relevant field for comparisons is id when using methods such as get we have to pass the entire struct so I created get simulation to replace it Ok back to the GET method Getting away with itThe functions dealing with the GET method now have to deal with two additional information the HashSet from where it will fetch the result and the parameter that might be used pub fn list sims db models Db gt impl Filter lt Extract impl warp Reply Error warp Rejection gt Clone let db map warp any map move db clone let opt warp path param lt u gt map Some or else async Ok None Ok lt Option lt u gt std convert Infallible gt None warp path holodeck and opt and warp path end and db map and then handlers handle list sims The opt represents the optional parameter that can be sent It gets a param map it as an Option i e Some If it was not provided the or else returns a None The reason why there s and async there is because or else returns a TryFuture The path we are actually returning includes this opt the same way we included the db bap the at the and of path is there to tell the macro to not add the end so I could add the opt That s why there s a manual end there soon after I didn t found this solution in the docs or in the examples Actually for some reason most tutorials omit GET parameters They either just list everything or use query I found one tutorial that implemented this but they did so by creating two filters and two handlers It didn t felt ok and I knew there should be a solution and that the problem was probably my searching skills so I asked for help in warp s discord channel and the nice gentleman jxs pointed me to the solution you saw above The next step was to fix the handler pub async fn handle list sims param u db models Db gt Result lt impl warp Reply Infallible gt let mut result db lock await clone if param gt result retain k k id param Ok warp reply json amp result It is no longer a Matthew McConaughey handler but still very simple I am using retain instead of a get simulation because it returns a HashSet and get would give me a models Simulation which is exactly what the handler must return cargo testrunning teststest tests try create oktest tests try create duplicates oktest tests try list oktest result ok passed failed ignored measured filtered out In the next episode of Engaging Warp We will finish the implementation by implementing the PUT and DELETE methods |
2021-04-14 12:21:15 |
海外TECH |
DEV Community |
REST API with Rust + Warp 2: POST |
https://dev.to/rogertorres/rest-api-with-rust-warp-2-post-3527
|
REST API with Rust Warp POSTGlad to see you back In this second part we ll build the first functional method of our API POST Warp Engage The code for this part is available here The POST sends a request to the server to insert some data This data is sent in JSON This program s job is then to parse deserialize the JSON and store this information in memory onlyーI will not deal with ORM in this series maybe in another one The holodeck produces simulations ignore this statement if you re not into Star Trek With that in mind I followed the KISS principle and made it a key value pair of simulation id and simulation name First once I knew what I was supposed to be listing I renamed the previous list to list sims and handle list to handle list sims Then I created a try create test function pretty similar to the previous test it sends the method POST this time to the same holodeck path using a new still to be coded filter and expects a good answer because what could go wrong in the holodeck Add models in the already existing line use super filters use super filters models tokio test async fn try create let db models new db let api filters post sim db let response request method POST path holodeck json amp models Simulation id name String from The Big Goodbye reply amp api await assert eq response status StatusCode CREATED What can go wrong among other things is conflict due to duplicated entries so I created a test for that as well tokio test async fn try create duplicates let db models new db let api filters post sim db let response request method POST path holodeck json amp models Simulation id name String from Bride Of Chaotica reply amp api await assert eq response status StatusCode CREATED let response request method POST path holodeck json amp models Simulation id name String from Bride Of Chaotica reply amp api await assert eq response status StatusCode BAD REQUEST The Simulation struct that s being passed as JSON is still to be defined which will require a use super models here in the tests modーbe aware of these use statements hopefully I haven t forgotten to mention any Before coding post sim I needed three things types to handle and persist the data just in memory a JSON body and a way to bundle it all up Starting with I first needed the serde crate to handle de serialization so I added this line under dependencies in Cargo tomlserde version features derive With that settled I went back to lib rs and created a mod with a type and a struct that can automagically de serialize the data that will come as JSON thanks to the serde macros Ah and there s also the omnipresent new function which is not inside an implementation as the manuals usually tell you to do because I used type for Db as I didn t want to nest it within a struct mod models use serde Deserialize Serialize use std collections HashSet use std sync Arc use tokio sync Mutex derive Clone Debug Hash PartialEq Eq Deserialize Serialize pub struct Simulation pub id u pub name String pub type Db Arc lt Mutex lt HashSet lt Simulation gt gt gt pub fn new db gt Db Arc new Mutex new HashSet new Now why did I chose these smart pointers Short answer because the cool kids did so Smart answer I don t think I had a good alternative for Arc as I needed a thread safe reference to the HashSet regarding Mutex I could have used RwLock instead to allow concurrent reads Mutex make you hold the lock for both read and write alike but it didn t seem necessary given the context But what about what is inside the Mutex Why a HashSet you ask Well I agree that a HashMap feels like the obvious choice and I also agree that a Vector would be the easier one to implement but I chose HashSet because it allowed me to gain an important benefit from HashMap alongside some of the Vector advantages but the actual explanation is something that I m keeping for the second part of this series so you ll have to trust me on this one The JSON body function was just copied from the aforementioned cool kids example and placed inside the filters mod It accepts any JSON body insofar it ain t too big This line already exists I just added models use super handlers models fn json body gt impl Filter lt Extract models Simulation Error warp Rejection gt Clone warp body content length limit and warp body json To bundle it all up we need another new function under filters This function post sim will receive a JSON body and a Db our Arc lt Mutex lt HashSet gt gt and then send both to the handler handle create sim pub fn post sim db models Db gt impl Filter lt Extract impl warp Reply Error warp Rejection gt Clone let db map warp any map move db clone warp path holodeck and warp post and json body and db map and then handlers handle create sim The line that might be harder to grasp here is the let db map one The warp any is a catch all that is it is a filter that filters nothing So all we are doing here is making sure our Db is wrapped in a Filter so we can stick it into the and db map you see up there The handle create sim that is triggered by the and then goes inside the handlers mod looks like this Add this use below the othersuse super models pub async fn handle create sim sim models Simulation db models Db gt Result lt impl warp Reply Infallible gt let mut map db lock await if let Some result map get amp sim return Ok warp reply with status format Simulation already exists under the name result id result name StatusCode BAD REQUEST map insert sim clone Ok warp reply with status format Simulation created sim id StatusCode CREATED It takes the JSON sim Simulation and the HashSet db Db returns an error if the entry is already there or inserts the JSON data into the HashSet and return success otherwise Here having a HashMap would clearly be the better solution as it would allow us to compare keys We ll solve this in part I could ve just used Ok StatusCode CREATED and Ok StatusCode BAD REQUEST instead of wrapping it inside a warp reply with status but since I am not going to handle the errors I thought it was the least I could do cargo testrunning teststest tests try create oktest tests try create duplicates oktest tests try list oktest result ok passed failed ignored measured filtered outAlright alright alright In the next episode of Engaging Warp Next in line is the GET method which means we ll see parameter handling and finally deal with this HashSet thing |
2021-04-14 12:20:58 |
海外TECH |
DEV Community |
REST API with Rust + Warp 1: Introduction |
https://dev.to/rogertorres/rest-api-with-rust-warp-1-introduction-342e
|
REST API with Rust Warp IntroductionThere are a few good web framework options for Rust actix rocket tide warp And they all offer some sort of trade off but instead of carefully analyzing these intricate aspects as Luca did here you simply decided to go with the one that has an explicit reference to Start Trek right Not ideal mafriend not ideal Will I blame you No You will get nothing but support from me And since you re already down this path I think it might be a good idea for me to show you how I used warp myself to create a REST API for learning purposes just like a holodeck battle Please note that this is not a tutorial this is me sharing a process in the hopes that it can help you Imagine you ask a friend to help you build something This friend can either point you to the guides she someday used or show you how she actually went about it not only sharing the code but explaining the whys and hows This text is a simulation of the latter In other words if examples like these are enough to get you going considering using them instead of reading this somewhat long text unless you are easily amused by Star Trek references and puns then stay Still up for the ride Great Grab your Earl Gray tea hot and let s make it so Getting startedFirst the playground cargo new lib holodeckNow there are at least two ways to go about it The first is to serve the API and test it via curl as Bastian did here and for this I would use a binary crate The other way is to use warp s built in test functionalities for which I think it is best to get a library As one of my main goals was to actually try warp s test module I chose the second path I started by editing the Cargo toml file and adding two dependencies dependencies tokio version features full warp Then I wrote a very simple test case I chose to test a dull GET method By dull I mean that it will not actually return any data it will only assume that there will be a mod called filters where the filters will be added filters are the dorsal spine of warp usage as shown here use the request to make make a GET on the path holodeck using the assumed filters and finally compare the answer with the enum StatusCode ACCEPTED And because the whole thing is going to be asynchronous the tokio test is needed cfg test mod tests use warp http StatusCode use warp test request use super filters tokio test async fn try list let api filters list let response request method GET path holodeck reply amp api await assert eq response status StatusCode ACCEPTED You will notice that I chose not to write use super filters with the which would allow me to write things like list instead of filters list I did so because it makes it easier for me and for you to know what is coming from where Then I created the missing filter which is designed to expect nothing but an empty GET and handle it over to what I call a Matthew McConaughey handler because all it has to do is to say alright alright alright a k a StatusCode ACCEPTED mod filters use warp Filter use super handlers pub fn list gt impl Filter lt Extract impl warp Reply Error warp Rejection gt Clone warp path holodeck and warp get and then handlers handle list mod handlers use warp http StatusCode use std convert Infallible pub async fn handle list gt Result lt impl warp Reply Infallible gt Alright alright alright Matthew said Ok StatusCode ACCEPTED Why Infallible in the handler s Result Because if something goes wrong that s not coded yet the problem will also be sent as Ok e g Ok StatusCode BAD GATEWAY It might seem like a lot of wasted time but let me tell you the benefits of doing this and I m not even going to get fancy with TDD For starters sometimes maybe every time it is easier to know what we wanna do than how we re supposed to do it and tests are a good way to force you to answer this what before jumping into the myriad of possible answers to the how question Besides that these baby steps allowed me to have a clear picture of which function was responsible for which task who got to be async and who didn t and so on cargo testrunning testtest tests try list oktest result ok passed failed ignored measured filtered outIt worked not much happened but worked nonetheless In the next episode of Engaging Warp The next step is to build the POST method That will require proper coding of both filters and handlers as well as deserializing the JSON and storing it somewhere Anyway that s all for now If I said something wrong or made things more complicated than they should be let me know in the comments |
2021-04-14 12:20:40 |
海外TECH |
DEV Community |
10 Reasons Why Covid is Impacting Developers Life... |
https://dev.to/devlorenzo/why-covid-is-impacting-developers-life-4hf5
|
Reasons Why Covid is Impacting Developers Life Don t leave this article before taking this quick survey Covid had the most impact on your Social life Work Family Hello World Today we will talk about a more serious topic answered to my others healthydebate I m interested in how Covid is impacting your life as a developer Also by telling your experience you have a chance to get featured in our newsletter Question of the week How covid is impacting your developer life gt Some starting points are the influence that the covid has had on you on a social level how the covid has influenced your social life at the family level and at work in your professional life What has changed in your life since the start of the covid What is positive and what is negative What are some of the challenges you have faced during COVID What advice would you give to others to keep their spirits up during the pandemic I will be building and updating this list directly with what you say so Remember the comment Last week s discussion was about what work would developers do if they weren t developers An astronaut a cook a dancer maybe not this one a policeman a footballer only if I lose my brain You can receive the weekly discussion recap directly in your email or participate in the conversation here If you weren t a dev you d be a DevLorenzo・Apr ・ min read healthydebate productivity javascript discuss Read also Projects ideas to become a javascript master Resource compilation Giveaway DevLorenzo・Apr ・ min read javascript webdev programming beginners Thanks for reading ️And remember Subscribe to my Newsletter A loooong and fun weekly recap for you Free PDF version of my articlesHighly customizable inboxThat s gt free lt and you help me TL DR |
2021-04-14 12:19:11 |
海外TECH |
DEV Community |
파이썬 - 우선순위 큐(priority queue)를 위한 heapq 모듈 활용법 |
https://dev.to/yunhongmin/priority-queue-heapq-49cj
|
파이썬 우선순위큐 priority queue 를위한heapq 모듈활용법우선순위큐는우선순위가가장높은자료 data 를가장먼저꺼낼수있는자료구조다 배열을사용하면직접구현하기는어렵지않지만 파이썬에서는heapq라는내장 built in 모듈로제공되기때문에 내장모듈의API 기능만으로충분히활용가능할때는내장모듈을사용하는것이좋다 이글에서힙은이진힙을의미하고 우선순위큐는개별의값을가지는힙이므로두단어를번갈아사용하겠다 기본사용법 우선순위큐의생성및원소삽입heapq heappush를사용해우선순위큐의원소를삽입할수있다 첫번째인자는힙으로사용할list 이고 두번째인자는삽입할데이터이다 heapq heappush heap item 삽입별시간복잡도는O log n 이다 n개의원소를삽입한다면O n log n 의시간복잡도를가진다 다음예제를보자 import heapqh heapq heappush h Go to home heapq heappush h Do not study heapq heappush h Enjoy heapq heappush h Eat heapq heappush h Pray print h 결과는배열로구현된힙을보여준다 Enjoy Eat Go to home Do not study Pray 원소꺼내기원소꺼내기는heapq heappop 으로구현하면된다 각꺼내기별시간복잡도는O log n 이다 import heapqh heapq heappush h Go to home heapq heappush h Do not study heapq heappush h Enjoy heapq heappush h Eat heapq heappush h Pray count while h print dth s count heapq heappop h count 우선순위순서대로나온결과를확인할수있다 th Enjoy th Go to home th Eat th Pray th Do not study 배열로부터우선순위큐만들기번의방법으로n개의요소를가진우선순위큐를만들었을때 시간복잡도는O n log n 이다 그러나배열로부터힙을만드는최적알고리즘의시간복잡도는O n 으로알려져있다 파이썬에서는O n 의시간으로배열을힙으로만들수있는heapq heapfy을제공한다 주의할점은인자로넣은배열자체가힙으로바뀐다는점이다 import heapqh Go to home Do not study Enjoy Eat Pray heapq heapify h count while h print dth s count heapq heappop h count 결과는번으로부터생성한우선순위큐와동일하다 th Enjoy th Go to home th Eat th Pray th Do not study heapq의한계점눈치챘을수도있겠지만 heapq 모듈은최소힙 min heap 밖에지원을안한다 최대힙 max heap 을사용할수있는방법은없을까 heapq에서공식적으로지원해주는기능은없다 검색을해보면 heapq heapfy max 나heapq heappop max를사용하는방법도있지만 push를지원해주지않기때문에반쪽짜리기능이고 protected method라서 python의버전이바뀌면서interface가변경될수있는위험도있다 유일한방법은키값을변환하여삽입하는수밖에없다 위에서사용한예제를기준으로최대힙을구현한다고하면다음과같다import heapqh Go to home Do not study Enjoy Eat Pray max h ele ele for ele in h heapq heapify max h count while h print dth s count heapq heappop max h count 결과는다음과같다 th Do not study th Pray th Eat th Go to home th Enjoy 모든요소의값을변경하는데드는시간복잡도는O n 이고 모든힙요소를얻는데드는시간복잡도는O n log n 이므로 요소를모두돌면서키를바꾼다해도 전체시간복잡도에는영향을주지않는다 그러나이방법은원본데이터를건드릴수밖에없는점과 heapq push를사용해추가로데이터를삽입할때마다데이터를변경해줘야하고 추출했을때도원본데이터와다르다는단점이있다 해결방법 최대힙모듈구현직접데이터를변경하여넣어줄때생기는단점을극복할수있는방법중에 기존heapq 모듈을래핑하여 최대힙을구현하는방법도있다 파이썬의 lt 내장메소드를사용하면 어렵지않게구현할수있다 maxheapq pyimport heapqclass ReverseLessThan object def init self value self value value def lt self other return self value gt other value def repr self return str self value def heappush heap item reverse item ReverseLessThan item heapq heappush heap reverse item def heappop heap reverse item heapq heappop heap return reverse item valuedef heapify lst for i ele in enumerate lst lst i ReverseLessThan ele heapq heapify lst ReverseLessThan 클래스는생성자 init 에서데이터를인자로받아서 value property로저장한후 lt 메서드의결과를value property 기준으로역으로반환하여 이클래스의인스턴스로less 비교연산시 비교연산결과가반대로나오도록해준다 heappush heappop heapify 함수는 ReverseLessThan을이용해 heapq 모듈의함수를래핑하여구현하였다 heapq 모듈은최소힙을지원하므로 less 연산의결과가반대로나오는인스턴스를데이터로넣으면 최대힙이구현된다 주의할점은삽입연산인heappush heapify 에서는 ReverseLessThan 클래스로데이터를래핑해주고있으므로 추출연산인heappop에서는언래핑해주어야한다 각함수의전체시간복잡도는heapq 모듈의함수와동일하다 이모듈을사용해 최대힙을만들어보자 from maxheapq import heappush heappop heapify heappush로생성하기h heappush h Go to home heappush h Do not study heappush h Enjoy heappush h Eat heappush h Pray heappush h Dup Eat print gt gt h 생성결과 print h count while h print dth s count heappop h count heapify로생성하기h Go to home Do not study Enjoy Eat Pray Dup Eat heapify h print gt gt h 생성결과 print h count while h print dth s count heappop h count 결과를보면최대힙이정상적으로생성된것을볼수있다 gt gt h 생성결과 Do not study Pray Dup Eat Go to home Eat Enjoy th Do not study th Pray th Eat th Dup Eat th Go to home th Enjoy gt gt h 생성결과 Do not study Pray Dup Eat Eat Go to home Enjoy th Do not study th Pray th Eat th Dup Eat th Go to home th Enjoy 지금까지파이썬의최소힙모듈인heapq를활용하는간단한방법과 heapq에서제공해주지않는최대힙을직접구현하여사용할수있는방법을알아보았다 실제업무에서이진힙을사용하는경우는많지는않지만 혹시나활용할기회가생긴다면이글에있는내용이도움이되기를기대해본다 |
2021-04-14 12:16:29 |
海外TECH |
DEV Community |
Show off the swag you got (̿▀̿‿ ̿▀̿ ̿) |
https://dev.to/xenoxdev/show-off-the-swag-you-got-165e
|
Show off the swag you got ̿▀̿‿ ̿▀̿̿ We can all agree on one thing that swags are awesome The happiness is unmatched when they arrive at your doorsteps Here is what I got recently Swag from Girl Script Summer of Code I was a mentor on a project called Ovuli Really loved it 𝙎𝙖𝙧𝙩𝙝𝙖𝙠𝙎𝙝𝙖𝙧𝙢𝙖 sarthology Last Year I participated in girlscriptsoc as a mentor It was a great experience met a lot young people to guide and work with •Today they sent some goodies •Btw if someone still looking for Mentorship dm me ️ DEVCommunity CodeNewbies womenintech AM Feb So What did you got recently and what s the story behind it Also if any of you young sorcerers need mentorship you can always ping me on Twitter sarthology |
2021-04-14 12:10:21 |
海外TECH |
Engadget |
Vizio's rotating Elevate soundbar is $220 off at Wellbots |
https://www.engadget.com/vizio-elevate-soundbar-deal-wellbots-123051481.html
|
wellbots |
2021-04-14 12:30:51 |
海外TECH |
Engadget |
Urbanista says its solar-powered headphones can basically play endlessly |
https://www.engadget.com/urbanista-los-angeles-anc-headphones-solar-cells-080019327.html
|
angeles |
2021-04-14 12:03:42 |
Cisco |
Cisco Blog |
Top-notch collaboration for top-notch athletes |
https://blogs.cisco.com/customerspotlight/top-notch-collaboration-for-top-notch-athletes
|
Top notch collaboration for top notch athletesGerman sports foundation that helps elite athletes with personal and professional development embraces digital collaboration to stay connected at all times |
2021-04-14 12:56:27 |
Cisco |
Cisco Blog |
Telemetry and AI/ML-Driven Wireless Advances |
https://blogs.cisco.com/networking/telemetry-and-ai-ml-driven-wireless-advances
|
performance |
2021-04-14 12:02:16 |
海外TECH |
CodeProject Latest Articles |
ToolBoxCtrl |
https://www.codeproject.com/Articles/5299904/ToolBoxCtrl
|
buttons |
2021-04-14 12:33:00 |
海外科学 |
NYT > Science |
NFTs Are Shaking Up the Art World. Are They Also Fueling Climate Change? |
https://www.nytimes.com/2021/04/13/climate/nft-climate-change.html
|
gases |
2021-04-14 12:59:55 |
医療系 |
医療介護 CBnews |
不妊治療の保険適用拡大、学会指針も踏まえ検討-中医協、体外受精は平均約50万円 |
https://www.cbnews.jp/news/entry/20210414210700
|
micro |
2021-04-14 21:25:00 |
ニュース |
@日本経済新聞 電子版 |
NISA(ニーサ)って知っていますか? 個人の資産運用を促す目的で2014年に始まった制度で、株式取引などで出た利益に対して税金がかかりません。国内に住む20歳以上の人は誰もが使えます。
https://t.co/JvEydSax4U |
https://twitter.com/nikkei/statuses/1382310225533931523
|
|
2021-04-14 12:30:14 |
ニュース |
@日本経済新聞 電子版 |
ミャンマー混迷、国内に2つの「政府」 政変3カ月
https://t.co/iPjcv9HzT3 |
https://twitter.com/nikkei/statuses/1382305132314955779
|
混迷 |
2021-04-14 12:10:00 |
ニュース |
@日本経済新聞 電子版 |
東芝買収案、英CVCが米ベインと連合 KKRも検討
https://t.co/bts7nGzhIT |
https://twitter.com/nikkei/statuses/1382303103936913411
|
連合 |
2021-04-14 12:01:56 |
海外ニュース |
Japan Times latest articles |
China says U.S. raising Taiwan tension with Biden-backed visit |
https://www.japantimes.co.jp/news/2021/04/14/asia-pacific/us-taiwan-china-biden-visit/
|
China says U S raising Taiwan tension with Biden backed visit Such a meeting is not helpful for improving cross strait ties and stabilizing the cross strait region said a spokesman for the Beijing office that handles matters |
2021-04-14 22:59:22 |
海外ニュース |
Japan Times latest articles |
Biden to withdraw all U.S. troops from Afghanistan by Sept. 11 |
https://www.japantimes.co.jp/news/2021/04/14/world/afghanistan-troops-biden/
|
taliban |
2021-04-14 21:41:38 |
海外ニュース |
Japan Times latest articles |
New Zealand gives Pacific teams green light for Super Rugby |
https://www.japantimes.co.jp/sports/2021/04/14/rugby/super-league-pacific-islands-teams/
|
New Zealand gives Pacific teams green light for Super RugbyPacific islands teams Moana Pasifika and Fijian Drua have been granted conditional licences to join a proposed Super Rugby competition next year New Zealand Rugby |
2021-04-14 21:06:44 |
ニュース |
BBC News - Home |
Greensill: PM 'concerned' over civil servant's job |
https://www.bbc.co.uk/news/uk-politics-56743426
|
labour |
2021-04-14 12:16:26 |
ニュース |
BBC News - Home |
Arlene Foster: DUP leader sues Christian Jessen for defamation |
https://www.bbc.co.uk/news/uk-northern-ireland-56747947
|
jessen |
2021-04-14 12:26:28 |
ニュース |
BBC News - Home |
Prince Philip: Rehearsals take place for Duke of Edinburgh's funeral |
https://www.bbc.co.uk/news/uk-56746947
|
covid |
2021-04-14 12:39:14 |
ニュース |
BBC News - Home |
Grandad, 80, wins EuroMillions prize after forgetting glasses |
https://www.bbc.co.uk/news/uk-england-derbyshire-56746927
|
lucky |
2021-04-14 12:06:14 |
ニュース |
BBC News - Home |
Why $30m didn't protect Nigerian pupils after Chibok |
https://www.bbc.co.uk/news/world-africa-56732909
|
abductions |
2021-04-14 12:36:16 |
ニュース |
BBC News - Home |
How prepared are Japan and Team GB? Tokyo Olympics 100-day countdown begins |
https://www.bbc.co.uk/sport/olympics/56737231
|
beginswith |
2021-04-14 12:08:59 |
サブカルネタ |
ラーブロ |
やましろ@相模原 矢部 |
http://feedproxy.google.com/~r/rablo/~3/Z-juOy-kgRU/single_feed.php
|
配信 |
2021-04-14 13:04:50 |
GCP |
Google Cloud Platform Japan 公式ブログ |
Google Cloud CISO の視点の共有 |
https://cloud.google.com/blog/ja/products/identity-security/identity-securityciso-perspectives-april-2021/
|
私たちはこの分野の金融サービス機関のお客様と緊密に連携し、クラウドへの移行がお客様、株主、規制当局に必要なオペレーショナルレジリエンスを確保するためにどのように役立つかについて新しいホワイトペーパーを作成しました。 |
2021-04-14 14:00:00 |
GCP |
Google Cloud Platform Japan 公式ブログ |
野球ファンのための分析情報のスケーリングと自動化に BigQuery を活用 |
https://cloud.google.com/blog/ja/products/data-analytics/how-bigquery-creates-insights-from-data-for-mlb/
|
ビューを作成し、特定のデータをフィルタリングして繰り返し使用できるようにする別の方法として、BigQueryビューを使用して分析情報生成プロセスの複数の側面をモジュール化することもできます。 |
2021-04-14 13:00:00 |
GCP |
Google Cloud Platform Japan 公式ブログ |
BigQuery のユーザー フレンドリーな SQL とともに一歩を踏み出そう |
https://cloud.google.com/blog/ja/topics/developers-practitioners/spring-forward-bigquery-user-friendly-sql/
|
ドキュメントDROPCOLUMNのサポートプレビュー版年月、BigQueryはSQLのADDCOLUMNサポートを導入し、ユーザーがSQLを使って既存のテーブルに列を追加できるようにしました。 |
2021-04-14 13:00:00 |
北海道 |
北海道新聞 |
「政治とカネ」が発端の道2区補選 各候補の訴えは? |
https://www.hokkaido-np.co.jp/article/533254/
|
補欠選挙 |
2021-04-14 21:17:00 |
北海道 |
北海道新聞 |
熊本城で復興願うライトアップ 夜空に幻想的光景 |
https://www.hokkaido-np.co.jp/article/533255/
|
熊本地震 |
2021-04-14 21:17:00 |
北海道 |
北海道新聞 |
プロ野球、五輪経験者が始球式 開幕100日前、6球場で |
https://www.hokkaido-np.co.jp/article/533253/
|
東京五輪 |
2021-04-14 21:17:00 |
北海道 |
北海道新聞 |
高齢者ワクチン接種 石狩管内6市町村は5月上旬以降から 札幌開始 |
https://www.hokkaido-np.co.jp/article/533124/
|
新型コロナウイルス |
2021-04-14 21:10:11 |
北海道 |
北海道新聞 |
4選不出馬表明の牧野市長 「課題達成の確信持てた」 士別 |
https://www.hokkaido-np.co.jp/article/533249/
|
牧野勇司 |
2021-04-14 21:09:00 |
ビジネス |
東洋経済オンライン |
中国フィンテック企業IPO撤回に規制強化の影 京東数科、科創板への上場再申請の可能性は? | 「財新」中国Biz&Tech | 東洋経済オンライン |
https://toyokeizai.net/articles/-/421615?utm_source=rss&utm_medium=http&utm_campaign=link_back
|
biztech |
2021-04-14 21:30:00 |
ニュース |
Newsweek |
半数がワクチン接種済みのミシガン州も、変異ウイルスで感染爆発 |
https://www.newsweekjapan.jp/stories/world/2021/04/post-96075.php
|
|
2021-04-14 21:07:15 |
GCP |
Cloud Blog JA |
Google Cloud CISO の視点の共有 |
https://cloud.google.com/blog/ja/products/identity-security/identity-securityciso-perspectives-april-2021/
|
私たちはこの分野の金融サービス機関のお客様と緊密に連携し、クラウドへの移行がお客様、株主、規制当局に必要なオペレーショナルレジリエンスを確保するためにどのように役立つかについて新しいホワイトペーパーを作成しました。 |
2021-04-14 14:00:00 |
GCP |
Cloud Blog JA |
野球ファンのための分析情報のスケーリングと自動化に BigQuery を活用 |
https://cloud.google.com/blog/ja/products/data-analytics/how-bigquery-creates-insights-from-data-for-mlb/
|
ビューを作成し、特定のデータをフィルタリングして繰り返し使用できるようにする別の方法として、BigQueryビューを使用して分析情報生成プロセスの複数の側面をモジュール化することもできます。 |
2021-04-14 13:00:00 |
GCP |
Cloud Blog JA |
BigQuery のユーザー フレンドリーな SQL とともに一歩を踏み出そう |
https://cloud.google.com/blog/ja/topics/developers-practitioners/spring-forward-bigquery-user-friendly-sql/
|
ドキュメントDROPCOLUMNのサポートプレビュー版年月、BigQueryはSQLのADDCOLUMNサポートを導入し、ユーザーがSQLを使って既存のテーブルに列を追加できるようにしました。 |
2021-04-14 13:00:00 |
コメント
コメントを投稿