IT |
ITmedia 総合記事一覧 |
[ITmedia News] 日本郵便が「置き配保険」を導入 1万円まで補償 |
https://www.itmedia.co.jp/news/articles/2106/28/news150.html
|
itmedia |
2021-06-28 19:27:00 |
IT |
ITmedia 総合記事一覧 |
[ITmedia ビジネスオンライン] 吉本興業がユニバーサルミュージックに流通業務を委託 CD・DVD商品の売り上げ向上狙う |
https://www.itmedia.co.jp/business/articles/2106/28/news142.html
|
itmedia |
2021-06-28 19:04:00 |
IT |
MOONGIFT |
imml - 1ファイルで複数ページを内包するミニマリスト向けのHTMLエディタ |
http://feedproxy.google.com/~r/moongift/~3/5R5yJDNyHLM/
|
immlファイルで複数ページを内包するミニマリスト向けのHTMLエディタちょっとしたWebサイトを作る際に、HTMLを手打ちするのは面倒です。 |
2021-06-28 21:00:00 |
js |
JavaScriptタグが付けられた新着投稿 - Qiita |
JavaScriptでジャンプゲームを作りました。 |
https://qiita.com/tkyngnm/items/00dbc5100f1775256d36
|
ランキングもあるのでぜひハイスコアを目指してみてくださいガラケー時代によく遊んでいた「おばちゃんが跳ぶ」を少し意識して作りました笑実装した内容スコア登録機能ランキング表示機能BGMPCSP対応一部HTMLとCSSで作っているところもありますが、ほぼJSで実装していてゲームの背景やキャラクターなどはcanvasAPIを使用して描画しています。 |
2021-06-28 19:32:49 |
Program |
[全てのタグ]の新着質問一覧|teratail(テラテイル) |
Node.jsでAPIのレスポンスの一部を取得しクライアント側に返したい |
https://teratail.com/questions/346609?rss=all
|
NodejsでAPIのレスポンスの一部を取得しクライアント側に返したいFieebaseFunctions経由でNodejsでAPIStripeからデータを取得しました。 |
2021-06-28 19:59:07 |
Program |
[全てのタグ]の新着質問一覧|teratail(テラテイル) |
String型の配列と各要素にint値を代入すること。 |
https://teratail.com/questions/346608?rss=all
|
String型の配列と各要素にint値を代入すること。 |
2021-06-28 19:58:38 |
Program |
[全てのタグ]の新着質問一覧|teratail(テラテイル) |
日本株の秒足の過去データの取得方法 |
https://teratail.com/questions/346607?rss=all
|
python |
2021-06-28 19:58:01 |
Program |
[全てのタグ]の新着質問一覧|teratail(テラテイル) |
accessから別に開いているaccessを閉じたい |
https://teratail.com/questions/346606?rss=all
|
access |
2021-06-28 19:56:45 |
Program |
[全てのタグ]の新着質問一覧|teratail(テラテイル) |
画像のオーバーマウス時のマスクがずれます。 |
https://teratail.com/questions/346605?rss=all
|
画像のオーバーマウス時のマスクがずれます。 |
2021-06-28 19:48:21 |
Program |
[全てのタグ]の新着質問一覧|teratail(テラテイル) |
Android Studioでxmlファイルのデザインが開けない |
https://teratail.com/questions/346604?rss=all
|
android |
2021-06-28 19:47:09 |
Program |
[全てのタグ]の新着質問一覧|teratail(テラテイル) |
【SQL】合計値の計算、対象期間のデータ件数の抽出 |
https://teratail.com/questions/346603?rss=all
|
【SQL】合計値の計算、対象期間のデータ件数の抽出以下のようなテーブルからデータを抽出したいです。 |
2021-06-28 19:43:08 |
Program |
[全てのタグ]の新着質問一覧|teratail(テラテイル) |
24時間の電流値測定のプログラムについて |
https://teratail.com/questions/346602?rss=all
|
時間の電流値測定のプログラムについて前提・実現したいこと電流値測定を時間行えるようにしMStackの画面で現在、電流が流れているかが可視化できるようにしたい。 |
2021-06-28 19:39:07 |
Program |
[全てのタグ]の新着質問一覧|teratail(テラテイル) |
シェルスクリプト(bash)で、Python(.py)のスクリプトを実行し、実行結果であるto_csv()のファイルの出力先を指定したい |
https://teratail.com/questions/346601?rss=all
|
シェルスクリプトbashで、Pythonpyのスクリプトを実行し、実行結果であるtocsvのファイルの出力先を指定したい前提・実現したいことシェルスクリプトで、データの整形を行なっています。 |
2021-06-28 19:34:22 |
Program |
[全てのタグ]の新着質問一覧|teratail(テラテイル) |
【SQL】重複行を横方向に結合する |
https://teratail.com/questions/346600?rss=all
|
【SQL】重複行を横方向に結合する前提・実現したいこと以下のような組のデータが同一の表に含まれています全て組TimestampDataADataBあいうえおかきくけこさしすせそたちつてとこれをタイムスタンプをキーとして次のように結合したいです。 |
2021-06-28 19:28:15 |
Program |
[全てのタグ]の新着質問一覧|teratail(テラテイル) |
anyenvでインストールしたPHPにgmpが入らない |
https://teratail.com/questions/346599?rss=all
|
anyenvでインストールしたPHPにgmpが入らない環境MacOSnbspCatalinanbspやりたいことanyenvを用いて、phpenvをインストールし、phpenvでPHPnbspをインストールし、gmpのExtensionをインストールしたい。 |
2021-06-28 19:23:11 |
Program |
[全てのタグ]の新着質問一覧|teratail(テラテイル) |
【Rails】結合してできた別名テーブルから検索したい |
https://teratail.com/questions/346598?rss=all
|
【Rails】結合してできた別名テーブルから検索したい実現したいこと同じテーブル内の別カラムをそれぞれ結合した際にできたテーブルと、元のテーブルのテーブルから値を抽出したい。 |
2021-06-28 19:18:32 |
Program |
[全てのタグ]の新着質問一覧|teratail(テラテイル) |
Laragon+Nginxで古い設定が適用され、新しい設定が反映されない |
https://teratail.com/questions/346597?rss=all
|
LaragonNginxで古い設定が適用され、新しい設定が反映されない質問失礼します。 |
2021-06-28 19:18:30 |
Program |
[全てのタグ]の新着質問一覧|teratail(テラテイル) |
競プロ典型 90 問の014について(vector と priority_queue) |
https://teratail.com/questions/346596?rss=all
|
競プロ典型問のについてvectorとpriorityqueue質問内容Cで動作させていますnbspnbspWenbspUsednbsptonbspSingnbspanbspSongnbspTogetherについて、最初にpriorityqueueを用いて計算を行ったのですがつほどTLEになりました。 |
2021-06-28 19:10:57 |
Program |
[全てのタグ]の新着質問一覧|teratail(テラテイル) |
【git】developブランチのHEADの内容をfeatureブランチに取り込みたい |
https://teratail.com/questions/346595?rss=all
|
developブランチからfeatureAブランチを切ってPRを作成しました。 |
2021-06-28 19:01:38 |
Ruby |
Rubyタグが付けられた新着投稿 - Qiita |
Yay! You’re on Rails!から画面が変わらない |
https://qiita.com/N396184501/items/e46dc3f27e9fb2cf0c84
|
YayYoureonRailsから画面が変わらないはじめにrailsを立ち上げるといつものように僕たちを迎え入れてくれますこれから作っていくぞって時に初歩的なミスをしたので残しておきます。 |
2021-06-28 19:51:05 |
Ruby |
Railsタグが付けられた新着投稿 - Qiita |
Yay! You’re on Rails!から画面が変わらない |
https://qiita.com/N396184501/items/e46dc3f27e9fb2cf0c84
|
YayYoureonRailsから画面が変わらないはじめにrailsを立ち上げるといつものように僕たちを迎え入れてくれますこれから作っていくぞって時に初歩的なミスをしたので残しておきます。 |
2021-06-28 19:51:05 |
技術ブログ |
Developers.IO |
AWS Elemental MediaStoreでタグベースのアクセスコントロールを試してみた |
https://dev.classmethod.jp/articles/aws-elemental-mediastore-tag-based-access-control/
|
awselementalmediastore |
2021-06-28 10:22:23 |
海外TECH |
Ars Technica |
On-road and off-road in the all-new Ford Bronco |
https://arstechnica.com/?p=1776585
|
broncothere |
2021-06-28 10:00:54 |
海外TECH |
DEV Community |
The JUICE of Reactive Programming in Angular |
https://dev.to/handsometunex123/the-juice-of-reactive-programming-in-angular-3mel
|
The JUICE of Reactive Programming in AngularReactive programming in angular in the most basic form is the adoption of RxJS Reactive Extensions for JavaScript to angular application development RxJS is a powerful library adopted in Angular that makes asynchronous operations super easy This article focuses on revealing to you the juice of reactive programming by providing you a reactive approach to solving one of the most common real world problems encounted by angular developers Enough of the long talks lets get our hands dirty Imagine you were assigned a task to create a users table mat table that is populated mainly by making an asynchronous call to an endpoint that returns a list of users The table should Have on it server side pagination The parameters provided by the API in this case for pagination include a pageSize and a pageIndex For example appending a pageSize of and a pageIndex of to the URL as query string means users will be spooled for the first page The URL suffix should look something like this users pageSize amp pageIndex A search parameter to filter the entire records of users based on specified search input typed in by the user For this an input field is to be provided on top of the table to allow users type in their search query e g typing in brosAY should bring in all the users related to brosAY The URL suffix should look something like this users pageSize amp pageIndex amp searchString brosAYHave a loader that shows anytime we are making an API call to retrieve new set of users Mostly when the previous or back button is pressed Now lets implement this reactively The first thing to do is to introduce the angular mat table How to implement angular mat tableand a formControl on top of the table On the template we have SEARCH FORM CONTROL lt mat form field appearance fill gt lt mat label gt Input your search text lt mat label gt lt input matInput placeholder Search formControl searchInput gt lt button mat icon button matPrefix gt lt mat icon gt search lt mat icon gt lt button gt lt mat form field gt USERS TABLE lt div class mat elevation z gt lt table mat table dataSource dataSource gt lt ng container matColumnDef id gt lt th mat header cell matHeaderCellDef gt User ID lt th gt lt td mat cell matCellDef let user gt element id lt td gt lt ng container gt lt ng container matColumnDef name gt lt th mat header cell matHeaderCellDef gt Name lt th gt lt td mat cell matCellDef let user gt user name lt td gt lt ng container gt lt ng container matColumnDef age gt lt th mat header cell matHeaderCellDef gt Age lt th gt lt td mat cell matCellDef let user gt user age lt td gt lt ng container gt lt ng container matColumnDef address gt lt th mat header cell matHeaderCellDef gt Address lt th gt lt td mat cell matCellDef let user gt user address lt td gt lt ng container gt lt tr mat header row matHeaderRowDef displayedColumns gt lt tr gt lt tr mat row matRowDef let row columns displayedColumns gt lt tr gt lt table gt lt Mat Paginator gt lt mat paginator page onPageChange event length dataLength pageSizeOptions showFirstLastButtons gt lt mat paginator gt lt div gt In the ts displayedColumns string id name age address Form Control for search inputs on the tablesearchInput new FormControl lt User gt represents the User Model dataSource new MatTableDataSource lt User gt Inject the UserServiceconstructor public userService UserService Mat paginator by default has a page event that we will be leveraging to handle our pagination the page output event on the paginator emits all that we need to handle our pagination I will extract mainly the tail end of the HTML code on the template to explain this part in the html we have lt Mat Paginator gt lt mat paginator page onPageChange event length dataLength pageSizeOptions showFirstLastButtons gt lt mat paginator gt lt div gt in the ts we have constructor public userService UserService we initialize the pageIndex to and pageSize to pageIndex number pageSize number this method receives the PageEvent and updates the pagination Subject onPageChange event PageEvent void gt the current page Index is passed to the pageIndex variable this pageIndex event pageIndex the current page Size is passed to the pageSize variable this pageSize event pageSize the pagination method within the user service is called and the current pagination passed to it this userService updatePagination pageIndex this pageIndex pageSize this pageSize Because Angular makes use of typescript as its core we will be creating a model for our pagination So we create a pagination models ts file that will contain our pagination model export interface Pagination pageIndex number pageSize number We proceed to introduce a subject behaviorSubject that will be constantly updated anytime the pagination requirement changes For this scenario a behaviorSubject is prefered because we need a default state for our pagination which is a pageSize of and a pageIndex of With this in place the first time the page is accessed users is always retrieved on the first page by default This is in contrary to subjects that do not allow a default state However applying a startwith rxjs operator on a subject and setting a value can also make it behave just like a behaviorSubject lt Pagination gt stands as the BehaviorSubject s model which means that any value that will be assigned to the behaviorSubject must conform to the Pagination model within the is where we specify the default value for our pagination which is pageSize of and pageIndex of in this case private paginationSubject new BehaviorSubject lt Pagination gt pageIndex pageSize Provision another subject behaviorSubject that will be constantly updated anytime a search input has been typed in lt string gt below as usual stands for the data type of the value that is allowed to be passed into the subject private searchStringSubject new BehaviorSubject lt string gt null On the side To avoid immediate calls to our API when the user starts typing into the form control to initiate a search we apply a pipe on the valueChanges of the searchInput formControl in order to access the debounceTime one of RxJS operators that will help delay passing down the string for API calls until a specified time in ms is provided e g debounceTime delays call to the API for s before the string is passed down for API call read more on DebounceTime As we have here Form Control for search inputs on the tablesearchInput new FormControl constructor public userService UserService ngOnInit this trackSearchInput method triggers when the search Form Control value changes the changed value doesnt get passed on until after strackSearchInput void gt this searchInput valueChanges pipe debounceTime subscribe searchWord string gt this userService updateSearchStringSubject searchWord For best practices we implement the concept of encapsulation one of OOP concepts Notice that a private access modifier was applied on the Behavior Subject meaning that we are restricting the update of the BehaviorSubject only within the service However to still ensure we get the B Subject updated from anywhere within our app we expose a method that can be called anytime an update needs to be done on the BehaviorSubject this method is the only single point where the pagination subject can be updated updatePaginationSubject pagination Pagination void gt this paginationSubject next pagination Likewise this method is the only single point where the search string subject can be updated updateSearchStringSubject searchString string void gt this searchStringSubject next searchString Now that we have a method that can be called from any part of our app to set our subjects we proceed to expose their values by converting them to observables and also applying a public access modifier on the observables so they be accessed easily from any part of our app Converting Subjects to observables can be achieved by calling the asObservable on them For the pagination BehaviorSubject we have private paginationSubject new BehaviorSubject lt Pagination gt pageSize pageIndex below convert the pagination BehaviorSubject to an observable public pagination this paginationSubject asObservable For the search string subject we have private searchStringSubject new BehaviorSubject lt string gt null searchString this searchStringSubject asObservable Now that we have a pagination observable pagination to handle change in paginations and another observable searchString to handle change in search input We move on to combine the two observables using an RxJS operator combineLatest We are combining them because we need the latest values from them at every point in time to do our API call to get a new set of users For combineLatest all the observables to be combined must have emited atleast once before it emits a value In cases where you are using a Subject for the search string you have to adopt the startWith rxjs operator on the search string observable to automatically make the subject behave like a behavior subject Assuming we were using a Subject for Search String we have thispaginatedUsers combineLatest this pagination this searchString pipe startWith null starts with an empty string However because we already have a default state of null for the search string we have this paginatedUsers combineLatest this pagination this searchString Now that we have successfully combined the streams one more thing needed is an higher order mapping operator like an rxjs switchMap operator that will help handle subscription and unsubscription from inner observables out of the box In cases where the user initiates an action like clicking the previous button then immediately going on to click the next button the switchMap RxJS operator IMMEDIATELY helps to cancel the initial request triggered by clicking previous button and IMMEDIATELY moves on to subscribe to the response from the new request triggered on click of the next pagination button This process is handled graciously by the switchMap operator Other operators includes a mergeMap which on the other hand would sucbscribe to both calls irrespective of how fast the buttons are clicked in the user service ts we have baseUrl paginatedUsers Observable lt PagedUsers gt combineLatest this pagination this searchString pipe pagination stands for the pagination object updated on page change searchString stands for the search input switchMap pagination searchString gt this http get lt ApiResponse lt PagedUsers gt gt this baseUrl users pageSize pagination pageSize amp pageIndex pagination pageIndex amp searchInput searchString pipe map response gt response Result pipe shareReplay shareReplay is applied in this case because I want the most recent response cached and replayed among all subscribers that subscribes to the paginatedUsers within the shareReplay stands for the bufferSize which is the number of instance of the cached data I want replayed across subscribers The response e g paginatedUsers is then subscribed to with the help of an async pipe on the template async pipe helps you to subscribe and unsubscribe to observables automatically It basically saves you from the stress of writing long lines of code to handle unsubscriptions In our users component ts constructor public userService UserService the pagedUsers below is subscribed to on the template via async pipepagedUsers this userService paginatedUsers pipe tap res gt update the dataSource with the list of allusers this dataSource data res allUsers updates the entire length of the users search as the upper bound for the pagination this dataLength res totalElements Back to the top lt ng container ngIf pagedUsers async as pagedUsers gt lt mat form field appearance fill gt lt mat label gt Input your search text lt mat label gt lt input matInput placeholder Search formControl searchInput gt lt button mat icon button matPrefix gt lt mat icon gt search lt mat icon gt lt button gt lt mat form field gt lt div class mat elevation z gt lt table mat table dataSource dataSource gt lt ng container matColumnDef id gt lt th mat header cell matHeaderCellDef gt User ID lt th gt lt td mat cell matCellDef let user gt element id lt td gt lt ng container gt lt ng container matColumnDef name gt lt th mat header cell matHeaderCellDef gt Name lt th gt lt td mat cell matCellDef let user gt user name lt td gt lt ng container gt lt ng container matColumnDef age gt lt th mat header cell matHeaderCellDef gt Age lt th gt lt td mat cell matCellDef let user gt user age lt td gt lt ng container gt lt ng container matColumnDef address gt lt th mat header cell matHeaderCellDef gt Address lt th gt lt td mat cell matCellDef let user gt user address lt td gt lt ng container gt lt tr mat header row matHeaderRowDef displayedColumns gt lt tr gt lt tr mat row matRowDef let row columns displayedColumns gt lt tr gt lt table gt lt Mat Paginator gt lt mat paginator page onPageChange event pageSize pagedUsers pageable pageSize pageIndex pageIndex length dataLength pageSizeOptions showFirstLastButtons gt lt mat paginator gt lt div gt lt ng container gt For the loader we create a loader component that renders only when the loader observable has a value of true The above methods are also repeated for the loader Create the Loader ComponentCreate the Loader B Subject in the user service with a default state of false meaning loader do not show by defaultconvert the B Subject to an observable expose a method that will be used to update the B Subject subscribe to the loader observable on the template in such a way that the loader shows only when the loader observavle is true As soon as the previous next button is clicked or value is entered for the pagination the onPageChange method is triggered before calling the updatePaginationSubject we call the method that sets the loader B Subject to true Then as soon as response is returned from the API call to get users we set the loader subject back to false in the user component ts we initialize the pageIndex to and pageSize to pageIndex number pageSize number onPageChange event PageEvent void gt set the loader to true immediately the loader starts showing on the page this userService showLoader the current page Index is passed to the pageIndex variable this pageIndex event pageIndex the current page Size is passed to the pageSize variable this pageSize event pageSize this userService updatePagination pageIndex this pageIndex pageSize this pageSize in the user Service lt boolean gt is used as data type because the loading status can either be true or false private loaderSubject new BehaviorSubject lt boolean gt false public loading this loaderSubject asObservable method sets the loader to true basically showLoader void gt this loaderSubject next true method sets the loader to falsehideLoader void gt this loaderSubject next false Still in the users service we go on to call the hideLoader method when the API call is successful and we also repeat the same process when it fails You won t want to have a loader still rolling even after a failed API call We have in the user Service lt boolean gt is used as data type because the loading status can either be true or false private loaderSubject new BehaviorSubject lt boolean gt false public loading this loaderSubject asObservable method sets the loader to trueshowLoader void gt this loaderSubject next true method sets the loader to false hideLoader void gt this loaderSubject next false paginatedUsers combineLatest this pagination this searchString pipe switchMap pagination searchString gt this http get lt ApiResponse lt PagedUsers gt gt this baseUrl users pageSize pagination pageSize amp pageIndex pagination pageIndex amp searchInput searchString pipe The actual response result is returned here within the map map response gt response Result within the tap operator we hide the Loader Taps are mostly used for side effects like hiding loaders while map is used mostly to modify the returned data tap gt this hideLoader we use the catchError rxjs operator for catching any API errors but for now we will mainly return EMPTY Mostly Interceptors are implemented to handle server errors catchError err gt EMPTY A finally is implemented to ensure the loader stops no matter You can have the loader hidden only within the finally operator since the method will always be triggered finally gt this hideLoader pipe shareReplay On the template we have lt ng container ngIf pagedUsers async as pagedUsers gt lt div class mat elevation z gt lt table mat table dataSource dataSource gt lt ng container matColumnDef id gt lt th mat header cell matHeaderCellDef gt User ID lt th gt lt td mat cell matCellDef let user gt element id lt td gt lt ng container gt lt ng container matColumnDef name gt lt th mat header cell matHeaderCellDef gt Name lt th gt lt td mat cell matCellDef let user gt user name lt td gt lt ng container gt lt ng container gt the loader displays on top of the page when loading lt app loader ngIf userService loading async gt lt app loader gt Due to the ngIf condition specified within the ng container before the mat table above chances are that the table paginations might be showing not work as expected If something like that happens You have no reason to worry The below method will correct that weird behaviour ViewChild MatPaginator paginator MatPaginator ViewChild MatPaginator set matPaginator mp MatPaginator this paginator mp Finally our user component ts should look like thisdisplayedColumns string id name age address ViewChild MatPaginator paginator MatPaginator ViewChild MatPaginator set matPaginator mp MatPaginator this paginator mp pageIndex number pageSize number searchInput new FormControl dataSource new MatTableDataSource lt User gt pagedUsers this userService paginatedUsers pipe tap res gt this dataSource data res allUsers this dataLength res totalElements ngOnInit this trackSearchInput trackSearchInput void gt this searchInput valueChanges pipe debounceTime subscribe searchWord string gt this userService updateSearchStringSubject searchWord constructor public userService UserService onPageChange event PageEvent void gt this userService showLoader this pageIndex event pageIndex this pageSize event pageSize this userService updatePagination pageIndex this pageIndex pageSize this pageSize Finally our user template looks like this lt ng container ngIf pagedUsers async as pagedUsers gt lt mat form field appearance fill gt lt mat label gt Input your search text lt mat label gt lt input matInput placeholder Search formControl searchInput gt lt button mat icon button matPrefix gt lt mat icon gt search lt mat icon gt lt button gt lt mat form field gt lt div class mat elevation z gt lt table mat table dataSource dataSource gt lt ng container matColumnDef id gt lt th mat header cell matHeaderCellDef gt User ID lt th gt lt td mat cell matCellDef let user gt element id lt td gt lt ng container gt lt ng container matColumnDef name gt lt th mat header cell matHeaderCellDef gt Name lt th gt lt td mat cell matCellDef let user gt user name lt td gt lt ng container gt lt ng container matColumnDef age gt lt th mat header cell matHeaderCellDef gt Age lt th gt lt td mat cell matCellDef let user gt user age lt td gt lt ng container gt lt ng container matColumnDef address gt lt th mat header cell matHeaderCellDef gt Address lt th gt lt td mat cell matCellDef let user gt user address lt td gt lt ng container gt lt tr mat header row matHeaderRowDef displayedColumns gt lt tr gt lt tr mat row matRowDef let row columns displayedColumns gt lt tr gt lt table gt lt Mat Paginator gt lt mat paginator page onPageChange event length dataLength pageSizeOptions showFirstLastButtons gt lt mat paginator gt lt div gt lt ng container gt lt app loader ngIf userService loading async gt lt app loader gt Now to our user service ts pagination Subjectprivate paginationSubject new BehaviorSubject lt Pagination gt pageIndex pageSize pagination Observablepublic pagination this paginationSubject asObservable Search string Subjectprivate searchStringSubject new BehaviorSubject lt string gt Search string Observablepublic searchString this searchStringSubject asObservable Loader subjectprivate loaderSubject new BehaviorSubject lt boolean gt false Loading observablepublic loading this loaderSubject asObservable baseUrl for the users endpoint In real life cases test URLs should be in the environment ts while production Urls should be in the environment prod ts baseUrl returns all Paginated UserspaginatedUsers combineLatest this pagination this searchString pipe switchMap pagination searchString gt this http get lt ApiResponse lt PagedUsers gt gt this baseUrl users pageSize pagination pageSize amp pageIndex pagination pageIndex amp searchInput searchString pipe map response gt response Result tap gt this hideLoader catchError err gt EMPTY finally gt this hideLoader pipe shareReplay Method updates pagination SubjectupdatePaginationSubject pagination Pagination void gt this paginationSubject next pagination Method updates search string SubjectupdateSearchStringSubject searchString string void gt this searchStringSubject next searchString Method sets loader to trueshowLoader void gt this loaderSubject next true Method sets loader to falsehideLoader void gt this loaderSubject next false In the user model tsexport interface Pagination pageIndex number pageSize number export interface APIResponse lt T gt TotalResults number Timestamp string Status string Version string StatusCode number Result T ErrorMessage string export interface PagedUsers allUsers AllUsers totalElements number export interface AllUsers id number name string age number address string Congratulations You have successfully implemented a reactive users table In my upcoming article I will be pouring out more of the angular reactive JUICE Follow me here and across my social media for more content like this Linkedin Cheers |
2021-06-28 10:48:28 |
海外TECH |
DEV Community |
[Node.js] Introducing Aniquotes |
https://dev.to/yumatsushima07/node-js-introducing-aniquotes-2i5h
|
Node js Introducing AniquotesIntroducing Aniquotes The one and only anime quote grabber Aniquotes can collect and slice quotes out the mix from characters and your favourites Attack on Titan and Tokyo ghoul You can use npm to install my module Before you keep reading please star my repo bellow Yuma Tsushima aniquotes Collects anime quotes aniquotesCollects anime quotes for node js discord jsWho doesn t like a dose of anime from time to time maybe a quote to motivate you UsageDiscord js Exampleconst MessageEmbed require discord js const randomQuote require aniquotes npm const searchAnime require node kitsu credits to the person who made node kitsu module exports name aniquote run async client message gt const quote anime id name randomQuote const res await searchAnime anime catch gt const image res attributes coverImage original null return message channel send new MessageEmbed … View on GitHub Getting StartingFirstly you will need node js to install and implement this package into your projects Then use npm to install my module npm install aniquotes npmor npm i aniquotes npm How to use Aniquotes You may ask to yourself I have installed the module but how to use this You may add it into your discord bot Exampleconst MessageEmbed require discord js const randomQuote require aniquotes npm const searchAnime require node kitsu credits to the person who made node kitsu module exports name aniquote run async client message gt const quote anime id name randomQuote const res await searchAnime anime catch gt const image res attributes coverImage original null return message channel send new MessageEmbed setColor bcc addField Quoted from anime quote n n name setImage image setTimestamp setFooter Made by Yuma Tsushima with ️ This is freshly from my Discord bot by the way You may use it like this also if you wanted to add it with your other projects const aniquote require aniquotes npm Shows a random anime quoteconsole log aniquote randomQuote You can also fetch quotes by their idconsole log aniquote getQuote Fetching quotes from an anime Nice console log aniquote getQuotesByAnime Tokyo Ghoul Who said you couldn t fetch quotes from a character console log aniquote getQuotesByCharacter Sakura Kinomoto For further examples check out my repo Please drop a comment and star bellow Yuma Tsushima aniquotes Collects anime quotes aniquotesCollects anime quotes for node js discord jsWho doesn t like a dose of anime from time to time maybe a quote to motivate you UsageDiscord js Exampleconst MessageEmbed require discord js const randomQuote require aniquotes npm const searchAnime require node kitsu credits to the person who made node kitsu module exports name aniquote run async client message gt const quote anime id name randomQuote const res await searchAnime anime catch gt const image res attributes coverImage original null return message channel send new MessageEmbed … View on GitHubThanks for reading Please give me some credit bellow lt Credits Yuma Tsushima Yuma Tsushima Readme file Welcome to Yuma Tsushima s Github page Visitor count About Myself Hello my name is Yuma Tsushima frequently shortened to Yuma I am an ambitious coder and I enjoy coding in JavaScript mainly I also love making websites using HTML CSS and of course JS I started programming self taught at the age of Originally I came from the creative field I draw sing animate make music Talents and HobbiesI love drawing I have been drawing all of my life I play strategy games I code and I do CTFs I am also good at animation making AMVs and image editing My favourite game is Mindustry followed by Flow Free and Sudoku I love watching anime I love Code Geass I relate to Lelouch a lot and I aspire to create my own anime Check out my work ❯Soundcloud cavhck ❯Discord CyberArtByte ❯Artwork AcceleratorArts Recent Medium… View on GitHub Follow me Github Medium SoundCloud Discord Servers Bounty Hunters An amazing bug hunting community full of developers and exploiters Link CyberArtByte My server full of bling and joy Link New Soundcloud Track Author Yuma Tsushima |
2021-06-28 10:38:16 |
海外TECH |
DEV Community |
How we use End To End tests to bulletproof our authentication flows across browsers |
https://dev.to/clerk/how-we-use-end-to-end-tests-to-bulletproof-our-authentication-flows-across-browsers-4ib6
|
How we use End To End tests to bulletproof our authentication flows across browsersIn recent years End To End testing has become a regular topic of discussion in small team environments The main reasons for this are the evolution of tooling and the need to shift towards high velocity product development At Clerk we use End To End testing to create bulletproof authentication flows across browsers The ft view of the End To End landscapeIn the past End To End testing was almost exclusively considered a Quality Assurance Engineering topic For one reason or another the development of test automation pipelines and application workflow validation tests were not so popular with software engineers That view has gradually become dated and replaced with the growing popularity of tools like Cypress Puppeteer Playwright and even the latest version of Selenium The growth of those tools should not be seen as a simple technical advancement but instead as an immediate answer to the growing need to efficiently and effectively validate fast moving development cycles of agile teams At Clerk we deploy multiple times per day and without these tools it would be impossible to ensure reliability The high bar for reliability at ClerkAs a solution for authentication and user management Clerk must maintain exceptionally high reliability even as our product and team expands rapidly around our core offering It is critical that end users can always access their accounts quickly even through edge cases like originally signing up with Google then trying to sign in with email instead We also take great pride in our developer experience and often jump through hoops to ensure that Clerk works consistently across development staging and production environments and across all browsers To keep reliability high across our myriad of flows and importantly to give our own development team confidence that our product won t break with new deploys it became clear the most pragmatic solution was to develop an End To End test suite Laying out our needsThese were our initial needs exactly as voiced by our team Cross browserThe suite needs to cover all major browsers with as little external service interaction as possible Happy to code in Meaning TypeScriptMost probably Frontend Engineers should be able to write and maintain the tests for the suite with as much joy as possible Support containerized deploymentThe suite needs to be portable enough to run on a GitHub Action workflow Choosing a platformAfter investigating Selenium Puppeteer WebDriverIO Cypress and Playwright and weighing each platform against our needs we decided to go with Playwright Although it felt less hyped as a team we felt really confident in the architecture behind Playwright its stellar documentation and tooling and the excellent community backing the effort We will describe our exact selection process in a later post but most critically we appreciate the ability to execute our workflows across Chromium WebKit and Firefox with so much ease and fine grained control How the suite is orchestratedOur End to End test suite is a separate system from our main codebase as we have seen this pattern working really well for most applications Its main components as a Node js application written in TypeScript are Playwright as the browser automation framework Jest as the test suite runner jest playwright to connect Jest and Playwright as it makes our lives so much easier Faker js to create API fixtures that fit our needs for the sign up and sign in processes fixtures Page Objects as the main pattern representing the interaction facade with our application views in code These components have proved to work together seamlessly while staying welcoming to our frontend engineering team One of our main goals was to ensure that new teammates could understand the system quickly and create new tests and so far this structure has exceeded our expectations Delivery of the suite on our day to day effortsTo keep us safe from accidental regressions the test suite must run and pass before any merge to production To automate this process integration with our Continuous Integration CI tooling was essential We run our CI through Github Actions and fortunately the Playwright team has created GitHub Action tools to simplify triggering the test suite Paired with Vercel preview deployments which is where most of our CI tasks take place both Actions fit the spot quite nicely for End to End suite scenarios The Playwright team has also created a GitHub action to quickly bootstrap Playwright tests The final action file that triggers our End to End suite on every pull request looks something like this jobs ee if github event deployment status state success name End to End runs on ubuntu latest strategy matrix node version x steps uses actions checkout v uses microsoft playwright github action fbfdacddabdafdda uses actions setup node v with node version matrix node version name Run Playwright tests run cd ee amp amp npm install amp amp npm run testIf the action succeeds we are good to go Parting wordsThis was a really brief overview of how we went about designing our End to End test suite at Clerk As Clerk and our customers needs continue to evolve we will continue to share our experiences with Playwright and any new tools we adopt P S We have open sourced a template for starting up your own End To End suite using Playwright so feel free to try it out This article was originally published at Clerk dev by one of our engineers Peter Perlepes |
2021-06-28 10:37:07 |
海外TECH |
DEV Community |
Introducing Code House - A whole new world of 300+ Developer Cheatsheets 👨💻 |
https://dev.to/saviomartin/introducing-code-house-a-whole-new-world-of-300-developer-cheatsheets-m27
|
Introducing Code House A whole new world of Developer Cheatsheets Hello Folks This is Savio here I hope you all are doing good I m young web dev with an intention to enhance as a successful web developer Today I m super proud to introduce my latest and biggest ever project which I had made till date as a submission for HarperDB Hackathon on Hashnode Once the hackathon was announced I was super busy organizing my time and put myself into a good schedule to complete the project by the deadline After the hard work for days I finally could meet up with the project I had in my mind It was hard but I loved every moment of it Little flashbackDevelopers love cheatsheets we cannot leave without them Indeed that s true for me too I always spend a lot of time hunting for the best cheatsheets I waste a lot of time to find a good cheat sheet for my need That gave me the thought that what if I could build a super huge storehouse of developer cheatsheets and a user can get access easily to tons of cheatsheets according to his need Once I started building ️ I found that they re more I could do to improve it And that s how Code House started The project is never finished it is still becoming better and better I m glad I was able to create a super useful app for the DEV community Introducing Code HouseCode House is the all in one storehouse for developer cheatsheets Welcoming you to a whole new world of developer cheatsheets Code House is made up of curated cheatsheets from sources Filter by categories or source sort by time or popularity dark mode bookmark cheatsheets add new cheatsheets request feature and much more features make the app amazing Github Repo Live Demo ️InspirationHunting for cheatsheets took a lot of time and we developers don t like to waste it And that is how I came up with an idea to create a website that contains a huge amount of curated cheatsheets from the internet All cheatsheets are reviewed and there will no such spam giving developers a lot of time to code than hunt There are categories currently so if a user need a cheatsheet of a particular language he can just sort it up There is a lot of content on the internet and it is not so easy to sort out which one is good this is where code house takes place All cheatsheets are curated and reviewed by users therefore helping you to have the best one This was my first goal in mind and soon as I started building I put myself into a schedule to improve the app with more advanced features TL DRPlease watch the short teaser mins use headphones Now let me introduce you to the amazing features code house have so far ️ CheatsheetsCode House is well sufficient with more than developer cheatsheets from sources All the cheatsheets are sorted into categories making it easy to select one You can filter all the cheatsheets by popular oldest newest or even use the search bar to find one Filter by Category Cateogries All cheatsheets are sorted into categories you can easily choose one according to your language or code All the types of sorting like popular oldest newest and search bar will also work for the filter category cheat sheets Filter By Source Sources If you need to filter cheatsheets by source eg you need cheatsheets from freecodecamp org or medium com you can filter in super fast You can also do advanced sorting too Bookmark CheatsheetsIf you found any cheatsheets interesting and want to save it for later you can also do it Just click on the bookmark icons and it will then be stored on bookmarks page Add new Cheatsheet on browser itself Yeah you could If you found a good cheat sheet you can just click on the New Cheatsheet button and it will take you to a form where you could add a new cheatsheet with simple data Cheatsheet Name Website URL and Category Your cheat sheet will be reviewed and added to the app also see yourself in contributors On Review CheatsheetsYou can help code house by reviewing cheatsheets just go to codehouse vercel app review you can see the cheatsheets that are on review If you think they re good you can give an upvote or a comment Separate page for each CheatsheetEach cheatsheet has a special page dedicated to that cheat sheet You can get to see a large amount of data and do more functions on that page You can also see who has added the cheatsheet or who wrote the cheatsheet Request for FeaturesDo you have an idea to improove Code House we love to hear your words That s why we built feature requests page you can easily add a new request or upvote the requests that re currently in Report CheatsheetWe always need to keep Code House clean and good for everyone So if you find any problems such as spam broken link or like that You can report it to us Just click on the report button and you re good to go Contributors PageWe proudly show our contributors on our main website and we love to ️Go ahead and give a pull request get featured on our contributor s page You can also be a contributor by just adding a cheat sheet on the web Dark modeDark mode is a thing developers could not live with that s why we built dark mode in Code House Enjoy Code House in dark mode Upvote Comment on CheatsheetsFeel free to add an upvote or a comment to a cheatsheet You have full freedom to decide what you wanna do Toggle View List View or Grid View You can toggle between List View or Grid View according to your preferences So you can enjoy it in the way you wish Newsletter once a week If you sign up for the newsletter we ll let you know when new cheat sheets are available PS we won t spam Only once a week GraphQL API PlaygroundWe re also providing a super productive graphql API playground codehouse api herokuapp com Here you can play with our API and build new apps How cool is that Here is a small documentation on how to use the APIFeel free to star ️the project if you found useful github com saviomaritn codehouse Code House is the next revolutionary app to hunt the best cheat sheets for all types ️ Built withNext JSHarper DB source for complete databaseTailwind source for complete stylingreact infinite scroll component for infinite scrollingnprogress for slim progressbarsreact hot toast for toastsfirebase for authenticationdate fns for formatting datesMaterial UI for componentsAnimate css for smooth AnimationsVercel for hostingFeel free to try Code House codehouse vercel app ChallengesChallengeSolutionAdding scroll animationsUsed AOS librarySorting by timeUsed javascript sort Infinite ScrollingUsed react infinite scroll componentSkeleton LoaderCreated with Pure CSSServer Side RenderingMoved to next jsSearch FilterUsed filter method of javascriptGenerate cover image and descriptionExtracted metaParallax EffectUsed parallax js libraryNotifications withing the appUsed react hot toast libraryStop duplication of same contentUsed Lodash What s nextCode House is the biggest ever project I have made till date I have a big idea in my mind and you can see a lot more features coming soon These all are the things I have planned to do in the next few days Profile PagePWA In Progress ️Reply to a commentMarkdown support for feature requestsTwitter and Facebook Auth In Progress ️Perform Operations with APICreate Collection when bookmarking cheatsheetsFeaturing Cheatsheets on day basisGenerate Cover Image for missing onesSettings pageChoose Secondary colorNotification tabAMP Support In Progress ️Hear description for posts In Progress ️ ContributingPull Requests are always welcome You can add a cheat sheet on the browser Your cheat sheet will be reviewed and added to the app also see yourself in contributors If you wish to contribute using Github you can work on any features codehouse vercel app feature requests or create one on your own After adding your code send us a Pull Request After your PR got merged you ll be automatically appared on contributors page Works through Github API Please contribute using GitHub Flow Create a branch add commits and open a pull request Please read CONTRIBUTING for details on our CODE OF CONDUCT and the process for submitting pull requests to us ️Licensed under MIT Wrapping UpYeah that s a wrap Hope you enjoyed Code House Feel free to bookmark the app it will become super handy I d love to hear feedback and thoughts on Code House Share on Twitter tag me SavioMartin SupportIf you re enjoying my app consider supporting me with a coffee ️ Lets connectGithubTwitterLinkedInInstagram FeedbackFeedback helps to improve Code House I d love to hear feedback and thoughts on Code House Looking forward to your views |
2021-06-28 10:29:31 |
海外TECH |
DEV Community |
Hi there, I'm Adam. |
https://dev.to/aatamixxx/hi-there-i-m-adam-mfb
|
Hi there I x m Adam I m Product Designer from I would like to know web dev to better understand the technological possibilities in my products And not create unnecessary complicated elements that can make difficult life for my fellow programmers |
2021-06-28 10:27:12 |
Apple |
AppleInsider - Frontpage News |
AirTag battery is a choking hazard, Australian regulator warns parents |
https://appleinsider.com/articles/21/06/28/airtag-battery-hazard-to-children-australian-regulator-warns-parents?utm_medium=rss
|
AirTag battery is a choking hazard Australian regulator warns parentsThe Australian Competition and Consumer Commission is now urging parents to keep AirTags out of the reach of young children for safety reasons In May Australian retailer Officeworks withdrew Apple s AirTags from sale over battery concerns An Officeworks spokesperson said the company would wait until further guidance is provided from the Australian Competition and Consumer Commission The ACCC has now issued a statement advising parents to keep AirTags out of the reach of small children because of their small batteries As a safety precaution we urge parents to keep AirTags away from their children said Delia Rickard ACCC Deputy Chair in a statement We know that small children can be fascinated by keys and love playing with them so there is a risk that they could access this product which is designed to be attached to a key ring among other things Read more |
2021-06-28 10:48:40 |
Apple |
AppleInsider - Frontpage News |
'Apple Watch Series 7' could use smaller chips to fit bigger battery |
https://appleinsider.com/articles/21/06/28/apple-watch-series-7-could-use-smaller-chips-to-fit-bigger-battery?utm_medium=rss
|
x Apple Watch Series x could use smaller chips to fit bigger batteryThe Apple Watch Series upgrade to a thinner S processor could help squeeze a bigger battery into the wearable device The Apple Watch Series is as usual anticipated to include improved features and performance compared to previous models such as the Apple Watch Series According to one report a change in chips being used may enable Apple to beef up the battery life The supply chain report from UDN on Monday claims the new model will launch alongside the regular iPhone refresh this fall The S processor it uses will apparently be physically smaller courtesy of a double sided system in packagem which will provide more internal space within the Apple Watch body Read more |
2021-06-28 10:42:12 |
海外TECH |
Engadget |
The world's fastest electric motorcycle has a new aerodynamic challenger |
https://www.engadget.com/electric-motorcycle-land-speed-record-100503362.html?src=rss_b2c
|
wmcev |
2021-06-28 10:05:03 |
海外科学 |
NYT > Science |
Heart Problems After Vaccination Are Very Rare, Federal Researchers Say |
https://www.nytimes.com/2021/06/23/health/coronavirus-vaccine-heart.html
|
Heart Problems After Vaccination Are Very Rare Federal Researchers SayMore than cases have been reported mostly mild and more often in young men and boys The benefits of vaccination still far outweigh the risks experts said |
2021-06-28 10:40:07 |
医療系 |
医療介護 CBnews |
大麻由来の薬、製造・施用可能な仕組みを提言-厚労省・検討会 |
https://www.cbnews.jp/news/entry/20210628193238
|
厚生労働省 |
2021-06-28 19:50:00 |
医療系 |
医療介護 CBnews |
介護従事者処遇状況等調査、コロナの影響反映求める-介護事業経営調査委員会 |
https://www.cbnews.jp/news/entry/20210628190138
|
介護事業 |
2021-06-28 19:10:00 |
金融 |
RSS FILE - 日本証券業協会 |
社債管理補助者制度に係る実務上の対応について |
https://www.jsda.or.jp/about/kaigi/chousa/shasai_kon/hojosha.html
|
補助 |
2021-06-28 12:00:00 |
海外ニュース |
Japan Times latest articles |
Olympics arrivals from delta variant-hit nations to face tougher rules |
https://www.japantimes.co.jp/news/2021/06/28/national/olympics-delta-tougher-border-controls/
|
Olympics arrivals from delta variant hit nations to face tougher rulesAthletes and staff will be required to be tested every day for a week before coming to Japan during which time they are to self isolate |
2021-06-28 19:37:37 |
ニュース |
BBC News - Home |
Covid: Sajid Javid to give update on lifting measures in England |
https://www.bbc.co.uk/news/uk-57630553
|
england |
2021-06-28 10:31:34 |
ニュース |
BBC News - Home |
Matt Hancock resignation: Questions remain for PM |
https://www.bbc.co.uk/news/uk-57631547
|
email |
2021-06-28 10:34:56 |
ニュース |
BBC News - Home |
Portugal makes unvaccinated UK people quarantine |
https://www.bbc.co.uk/news/business-57634932
|
germany |
2021-06-28 10:40:06 |
ニュース |
BBC News - Home |
Canada weather: Heatwave hits record 46.6C as US north-west also frazzles |
https://www.bbc.co.uk/news/world-us-canada-57634700
|
record |
2021-06-28 10:48:31 |
ニュース |
BBC News - Home |
Birmingham stabbings: Man admits Jacob Billington killing |
https://www.bbc.co.uk/news/uk-england-birmingham-57635636
|
birmingham |
2021-06-28 10:44:06 |
ニュース |
BBC News - Home |
Australia Covid: Outbreaks emerge across country in 'new phase' of pandemic |
https://www.bbc.co.uk/news/world-australia-57633457
|
different |
2021-06-28 10:48:28 |
ニュース |
BBC News - Home |
Covid: When will I get the vaccine? |
https://www.bbc.co.uk/news/health-55045639
|
ireland |
2021-06-28 10:20:42 |
LifeHuck |
ライフハッカー[日本版] |
ヴァージン・グループ創業者、リチャード・ブランソンの成功の習慣15 |
https://www.lifehacker.jp/2021/06/234405richard-branson.html
|
習慣 |
2021-06-28 20:00:00 |
GCP |
Google Cloud Platform Japan 公式ブログ |
ネットワーク エッジのパートナー ソリューションを拡充 |
https://cloud.google.com/blog/ja/topics/anthos/expanding-partner-solutions-at-the-network-edge/
|
GoogleのパートナーによってGoogleCloudにこれらのソリューションが提供されることで、エッジで新しいサービスや機能を迅速に配信してデプロイできるようになります。 |
2021-06-28 11:00:00 |
北海道 |
北海道新聞 |
藤井二冠、王位戦「全力尽くす」 29日の第1局前に抱負 |
https://www.hokkaido-np.co.jp/article/560794/
|
藤井聡太 |
2021-06-28 19:15:00 |
北海道 |
北海道新聞 |
スマイルジャパン 選手らワクチン接種 |
https://www.hokkaido-np.co.jp/article/560790/
|
北京冬季五輪 |
2021-06-28 19:08:00 |
北海道 |
北海道新聞 |
小中の授業時間数に学校裁量 特例校で最大1割振り替え可能に |
https://www.hokkaido-np.co.jp/article/560791/
|
小中学校 |
2021-06-28 19:08:00 |
北海道 |
北海道新聞 |
札幌市が国交付金1億3千万円を過大受領 職員が虚偽申請 |
https://www.hokkaido-np.co.jp/article/560778/
|
国民健康保険 |
2021-06-28 19:05:19 |
ビジネス |
東洋経済オンライン |
5月の中国「商用車販売」1年ぶりに減少の裏事情 新排ガス規制導入前の駆け込み需要が終了 | 「財新」中国Biz&Tech | 東洋経済オンライン |
https://toyokeizai.net/articles/-/435721?utm_source=rss&utm_medium=http&utm_campaign=link_back
|
biztech |
2021-06-28 19:30:00 |
IT |
週刊アスキー |
AC『機動戦士ガンダム 戦場の絆II』が2021年7月27日、稼働決定!バナパスポートカードが当たるTwitterキャンペーンも開催中 |
https://weekly.ascii.jp/elem/000/004/060/4060699/
|
twitter |
2021-06-28 19:38:00 |
IT |
週刊アスキー |
AIを利用した呼出型最適経路バス「MyRideのるる」、高萩市内で実証運行を開始 |
https://weekly.ascii.jp/elem/000/004/060/4060696/
|
myride |
2021-06-28 19:30:00 |
IT |
週刊アスキー |
7月1日についに正式サービス開始!進化する『ユージェネ』の新たな魅力をインタビューで直撃 |
https://weekly.ascii.jp/elem/000/004/060/4060401/
|
oculusquestquest |
2021-06-28 19:10:00 |
GCP |
Cloud Blog JA |
ネットワーク エッジのパートナー ソリューションを拡充 |
https://cloud.google.com/blog/ja/topics/anthos/expanding-partner-solutions-at-the-network-edge/
|
GoogleのパートナーによってGoogleCloudにこれらのソリューションが提供されることで、エッジで新しいサービスや機能を迅速に配信してデプロイできるようになります。 |
2021-06-28 11:00:00 |
コメント
コメントを投稿