投稿時間:2021-07-12 22:40:50 RSSフィード2021-07-12 22:00 分まとめ(51件)

カテゴリー等 サイト名等 記事タイトル・トレンドワード等 リンクURL 頻出ワード・要約等/検索ボリューム 登録日
python Pythonタグが付けられた新着投稿 - Qiita サイズが大きいTIFFファイルをPythonで効率的に扱う https://qiita.com/Hanjin_Liu/items/7a01c1c481161fe20a3e imgnpasarraymmapもちろんすぐに変換してはメモリマップの意味がないTIFFを小さくしてから読み込むさて、大きなファイルが扱いづらいなら、小さくしてから読み込めばいいわけで、メモリマップを使えば簡単に実現できる。 2021-07-12 21:59:22
python Pythonタグが付けられた新着投稿 - Qiita GANで国旗を作る https://qiita.com/hibit/items/89b900f91c7a0ce46b3d データセット全ての国の国旗を取得したとしてもnなのでデータセットとしては正直心許ないですが、国の数は限られているので仕方ありません。 2021-07-12 21:21:03
Program [全てのタグ]の新着質問一覧|teratail(テラテイル) VBA オブジェクト(セレクトに格納した値)を別のブックに表示 https://teratail.com/questions/349101?rss=all 2021-07-12 21:39:24
Program [全てのタグ]の新着質問一覧|teratail(テラテイル) Pythonでの複数リストへの一括処理(numpyでの実装)について https://teratail.com/questions/349100?rss=all numpy 2021-07-12 21:31:06
Program [全てのタグ]の新着質問一覧|teratail(テラテイル) Discord.jsチャンネルの権限を指定したい https://teratail.com/questions/349099?rss=all 2021-07-12 21:18:58
Program [全てのタグ]の新着質問一覧|teratail(テラテイル) 送信メッセージが表示されない問題の解決方法 https://teratail.com/questions/349098?rss=all 送信メッセージが表示されない問題の解決方法前提・実現したいことDMを実装し、送信したメッセージが表示されるようにしたい発生している問題・エラーメッセージエラー表示はありませんが、送信してもメッセージが表示されない状態となっています。 2021-07-12 21:15:28
Program [全てのタグ]の新着質問一覧|teratail(テラテイル) AWS MySQL string(44) "SQLSTATE[HY000] [2019] Unknown character set"エラーが出る https://teratail.com/questions/349097?rss=all AWSMySQLstringquotSQLSTATEHYUnknowncharactersetquotエラーが出るAWS初心者で、わかっていない部分が多く、うまく説明ができないかもしれません。 2021-07-12 21:15:17
Program [全てのタグ]の新着質問一覧|teratail(テラテイル) すでにデプロイ済みのmongoDB/Express.jsアプリのデータを取得するアプリを別で作成し、デプロイしてもよいのでしょうか? https://teratail.com/questions/349096?rss=all すでにデプロイ済みのmongoDBExpressjsアプリのデータを取得するアプリを別で作成し、デプロイしてもよいのでしょうかすでにデプロイ済みのmongoDBExpressjsアプリのデータを取得するアプリを別で作成し、デプロイしてもよいのでしょうかこれはイレギュラーなことでしょうか同じDataBaseに対して別のアプリを作ることがあるのなら、問題ないのかなと思っておりますが、もしものことを考えると不安です。 2021-07-12 21:12:17
Ruby Rubyタグが付けられた新着投稿 - Qiita [Rails]Action Textでリッチテキストを作ろう! https://qiita.com/ren0826jam/items/8acc36ae15e1f39fb92b RailsActionTextでリッチテキストを作ろうはじめにRailsで追加されたActionTextにリッチテキストコンテンツと編集機能を導入出来ます。 2021-07-12 21:48:49
Ruby Rubyタグが付けられた新着投稿 - Qiita each_with_indexの使い方について https://qiita.com/_NNN_/items/a13a4137b6c2ffeba639 eachwithindexの使い方についてeachループしつつ、それぞれデータに番号を振り分けて全体で何番目という風な記述にしたい場合に何か良いのがないか探してみたところ便利なeachwithindexというメソッドを見つけることができましたのでアウトプットがてら紹介したいと思います。 2021-07-12 21:47:15
Docker dockerタグが付けられた新着投稿 - Qiita [シリーズ全7回] Dockerとシェルを活用して、1コマンドで Django を立ち上げる https://qiita.com/robozushi10/items/ce7aa42787fe2e4db0ff シリーズ全回Dockerとシェルを活用して、コマンドでDjangoを立ち上げるはじめにDockerdockercomposeとLinuxに標準で搭載されているシェルを組み合せて、下図のDjango環境をコマンドで即座に立ち上げるためのコードとその解説です本記事の内容は、Zennで書籍として販売している内容と同一ですZennでも書籍の内容は全て無料公開していますコンテンツは次の通りですコンテンツ作成するDjango環境デフォルト環境runserverSQLiteの構築SQLiteをPostgreSQLへ置き換えるDjangoアプリの立ち上げもさせるjwilderdockerizeを使ってセットアップ処理を改良するrunserverをGunicornへ置き換えるまっしろ対策としてNginxを導入するキャッシュデータベースRedisの導入をする補足事項「コマンドでDjangoを立ち上げる」の補足事項参考文献・サイト現場で使えるDjangoの教科書《基礎編》横瀬明仁現場で使えるDjangoRESTFrameworkの教科書横瀬明仁現場で使えるDjangoの教科書《実践編》横瀬明仁Stepで習得Dockerから入るKubernetes高良真穂PracticalDevelopers機械学習時代のソフトウェア開発ゲームアプリインフラエッジ編WEBDBPRESSーPartフィンテック金融業界発大規模データ処理の自動化セキュリティ強化のためのサーバーレスアーキテクチャ西田圭介Djangoの初回マイグレーション時にrelationauthuserdoesnotexistというエラーが発生する場合authuserdoesnotexistというエPostgreSQLはTRUNCATEもトランザクション内です。 2021-07-12 21:42:18
Docker dockerタグが付けられた新着投稿 - Qiita [01] デフォルト環境 runserver + SQLite3 の構築 https://qiita.com/robozushi10/items/fc8e40ad7ecc29131ea3 2021-07-12 21:41:51
Docker dockerタグが付けられた新着投稿 - Qiita [02] SQLite3 を PostgreSQL へ置き換える https://qiita.com/robozushi10/items/7dc07ab6412b285c75da 2021-07-12 21:41:38
Docker dockerタグが付けられた新着投稿 - Qiita [03] Django アプリの立ち上げもさせる https://qiita.com/robozushi10/items/bda4e5f1c743c4c26af5 2021-07-12 21:41:21
Docker dockerタグが付けられた新着投稿 - Qiita [04] jwilder/dockerize を使ってセットアップ処理を改良する https://qiita.com/robozushi10/items/3d955c5c50d845c73e82 2021-07-12 21:41:02
Docker dockerタグが付けられた新着投稿 - Qiita [05] runserver を Gunicorn へ置き換える https://qiita.com/robozushi10/items/406ef206efaf8c1f5c39 2021-07-12 21:40:27
Docker dockerタグが付けられた新着投稿 - Qiita [06] "まっしろ"対策として Nginx を導入する https://qiita.com/robozushi10/items/fc4e8d275f3673796038 2021-07-12 21:39:56
Docker dockerタグが付けられた新着投稿 - Qiita [07] キャッシュデータベース Redis の導入をする https://qiita.com/robozushi10/items/f33654519c6e0950cef9 2021-07-12 21:39:32
Docker dockerタグが付けられた新着投稿 - Qiita Raspberry PiでAirMac Expressの代替を目指す (AirPlayの導入まで) https://qiita.com/hebereke/items/1d0bbee951845f85732e Webminにはデフォルトでは下記のように番ポートを指定して接続します。 2021-07-12 21:34:45
Docker dockerタグが付けられた新着投稿 - Qiita WordPressとDockerを用いたローカル環境構築 https://qiita.com/EGASHIRAAkihide/items/9fbb88c3798204be8773 MAMPからDockerにローカル環境を変更することによるメリットMAMPのように直接ツールのインストールを行わないため、開発環境の破棄や再構築が面倒ではなくなる。 2021-07-12 21:25:50
Git Gitタグが付けられた新着投稿 - Qiita PortfolioSite (React) を作成しました【2】【随時更新】 https://qiita.com/kanfutrooper/items/7120a17b3ef406cb9184 PortfolioSiteReactを作成しました【】【随時更新】はじめに学習するに至った経緯年より、未経験からエンジニアへの転職を目指し、某プログラミングスクールへ通う。 2021-07-12 21:03:22
Ruby Railsタグが付けられた新着投稿 - Qiita [Rails]Action Textでリッチテキストを作ろう! https://qiita.com/ren0826jam/items/8acc36ae15e1f39fb92b RailsActionTextでリッチテキストを作ろうはじめにRailsで追加されたActionTextにリッチテキストコンテンツと編集機能を導入出来ます。 2021-07-12 21:48:49
海外TECH DEV Community Moving away from ReactJs and VueJs on front-end using Clean Architecture https://dev.to/xurxodev/moving-away-from-reactjs-and-vuejs-on-front-end-using-clean-architecture-3olk Moving away from ReactJs and VueJs on front end using Clean ArchitectureThis article is an English translation of the original in my blog Alejándonos de ReactJs y VueJs en el front end usando Clean Architecture One of the advantages of using Clean Architecture among others is the ability to uncouple our application of the delivery mechanism to the user that is from the UI framework or library This advantage in long term applications allows us to adapt in the future to the changes that will surely take place in libraries and frameworks In this article we will take Clean Architecture to the extreme in the front end by applying two delivery mechanisms ReactJS and VueJs We will have as much code as possible reused between the two implementations This will be possible by creating the domain data and remote display logic of ReactJs and VueJs Why move away from the framework I have developed different technologies applying Clean Architecture like Net Android iOS and Flutter For a long time I am also programming in the front end and writing about it One of the biggest problems when it comes to evolving an application is the coupling to the UI framework On the front end little by little due to the responsibilities that applications of this type have been gained over time it makes more and more sense to develop in a more structured way and the problems to be solved are very similar to those that exist on other fronts such as backend or mobile development There are frameworks like ReactJs and VueJs that make life easier for us to take on these challenges on the front end A front end application today is an independent application of the backend in many cases and therefore needs to have its own architecture In addition this architecture must help us in the next points Independent of UI frameworks API rest and persistence databases o third party services Escalability Testability This means that if we change the vision of having a ReactJs or VueJs application to have a front end application that uses ReactJs or VueJs to render this will make our lives much easier in the future So for example evolving your ReactJS application from using classes as before to using functions and hooks as is done now is much more trivial The same happens if you switch in VueJS from using the options API to the composition API It s more trivial because you only use the framework for what is strictly necessary such as rendering and thus you do not overuse it keeping it away from any type of logic be its domain data or presentation logic Frameworks evolve and you cannot control that but what you can control is the coupling you have with them and how their changes affect you But in this case we are going to go beyond how to adapt to changes that can happen in a framework and we are going to see the amount of code that could not change when we modify ReactJS by VueJS if we use Clean Architecture and separate responsibilities This is the picture you keep in mind if you develop using Clean Architecture If you don t have clear the concepts of Clean Architecture I recommend that you read this article The most important part is the dependency rule so if you don t know what I m talking about I recommend that you read this article The example that we are going to see is based on the one we saw in this article Our scenarioIt s a shopping cart with enough functionality to look like a real example We are going to have a global state non global state and we will simulate invoke to a remote service ArchitectureAt the project structure level we will use a monorepo using yarn workspaces in this way we can split the project into modules or packages sharing code between them We have several packages Core in this package we will have all the shared code between the app rendered by ReactJS and the app rendered by VueJs React in this package is found the react app version Vue in this package is found the Vue app version ¿What code is reused We are going to reuse all the code that we must have uncoupled from the UI Framework since being different versions of the same app it makes sense that this code is shared and not write twice This is a demonstration exercise of the potential that Clean Architecture has but this uncoupling of the UI framework is necessary even when we develop a real app Using the UI framework for what is strictly necessary allows us to better adapt to changes in future versions of the framework This is because the code that contains the application logic which is the most important part that changes less over time and is the code potentially to be shared between two versions of the same app as in this example it s uncoupled without depending on the UI framework In Clean Architecture the domain layer is where the enterprise and application business logic is located The data layer is where we communicate with the persistence The presentation logic is the one that decides what data is shown if something should be visible or not if it should be shown to the user that we are loading data or if an error should be displayed It is where the state of the components is managed Each of these parts contains logic that we must uncouple and is found in the core package Domain LayerThe domain layer is where the enterprise and application business logic is located Use CasesUse cases are intents contains the business logic of the application they are actions and in this example we have the next GetProductsUseCaseGetCartUseCaseAddProductToCartUseCaseEditQuantityOfCartItemUseCaseRemoveItemFromCartUseCaseLet s see the example of GetProductsUseCase export class GetProductsUseCase private productRepository ProductRepository constructor productRepository ProductRepository this productRepository productRepository execute filter string Promise lt Either lt DataError Product gt gt return this productRepository get filter This use case is simple because it consists of a simple call to the data layer in other contexts where for example when creating a product we have to validate that there is no longer one with the same SKU there would be more logic The use cases returns Either type if you are not sure what it is then I recommend that you read this article and this article In this way the error handling is not done using the catch of the promises but the result object of the promise itself tells you if the result is successful or not The use of Either versus the classic try catch has several advantages The flow of execution is simpler to follow without jumps between callers when an error occurs That something can go wrong is explicitly indicated Errors that may occur are explicitly indicated Doing the use of the exhaustive switch if you add more errors in the future TypeScript will warn you where you have not taken this new error into account The type for the errors is as follows export interface UnexpectedError kind UnexpectedError message Error export type DataError UnexpectedError Potentially in the future it could evolve to something like this export interface ApiError kind ApiError error string statusCode number message string export interface UnexpectedError kind UnexpectedError message Error export interface Unauthorized kind Unauthorized export interface NotFound kind NotFound export type DataError ApiError UnexpectedError Unauthorized And in the presentation layer if I m using an exhaustive switch Typescript would warn me I should add more cases for each new error EntitiesThe entities contain the enterprise business logic Let s see the example of Cart type TotalPrice number type TotalItems number export class Cart items readonly CartItem readonly totalPrice TotalPrice readonly totalItems TotalItems constructor items CartItem this items items this totalPrice this calculateTotalPrice items this totalItems this calculateTotalItems items static createEmpty Cart return new Cart addItem item CartItem Cart const existedItem this items find i gt i id item id if existedItem const newItems this items map oldItem gt if oldItem id item id return oldItem quantity oldItem quantity item quantity else return oldItem return new Cart newItems else const newItems this items item return new Cart newItems removeItem itemId string Cart const newItems this items filter i gt i id itemId return new Cart newItems editItem itemId string quantity number Cart const newItems this items map oldItem gt if oldItem id itemId return oldItem quantity quantity else return oldItem return new Cart newItems private calculateTotalPrice items CartItem TotalPrice return items reduce accumulator item gt accumulator item quantity item price toFixed private calculateTotalItems items CartItem TotalItems return items reduce accumulator item gt accumulator item quantity In this example the entities are simple with properties of primitive types but a real example where there were validations we could have Entities and Value Objects defined as classes and with factory methods where the validation is performed We use Either to return the errors or the result BoundariesThe boundaries are the abstractions of the adapters for example in Hexagonal Architecture they are called ports They are defined in the layer of the use cases in the domain and indicate how we are going to communicate with the adapters For example to communicate with the data layer we use the repository pattern export interface ProductRepository get filter string Promise lt Either lt DataError Product gt gt Data LayerThe data layer is where the adapters are found and an adapter is responsible to transform the information between the domain and external systems External systems may be a web service a database etc…In this simple example I m using the same entities that represent the product shopping cart and cart items between the presentation domain and data layers In real applications is common to have a different data structure for each layer or even to have Data Transfer Objects DTOs to pass data between layers In this example we have repositories that return data stored in memory const products export class ProductInMemoryRepository implements ProductRepository get filter string Promise lt Either lt DataError Product gt gt return new Promise resolve reject gt setTimeout gt try if filter const filteredProducts products filter p Product gt return p title toLowerCase includes filter toLowerCase resolve Either right filteredProducts else resolve Either right products catch error resolve Either left error The important thing is to understand that the repository is an adapter and that its abstraction or port is defined in the domain so the traditional direction of the dependency is inverted This is the most important part of Clean Architecture the domain should not have any dependency on external layers in this way it is uncoupled and it will be easier to replace an adapter with another in the future or even for testing purposes In this way if we replace the adapter implementation with one that invokes a web service the domain is not affected and therefore we are hiding implementation details Presentation Layer ーAdaptersThe adapters of the presentation layer are the last reuse part of our core package and It s where we hook the UI React or Vue layers These adapters are also reusable between the two versions of the app they are intermediaries between the UI components and the domain layer They contain the presentation logic deciding what information is shown what should be visible etc…The state management is performed by this layer and does not depend on React or Vue There are different presentation patterns that we can use In this case I am using the BLoC Pattern because it fits very well with declarative frameworks such as React and Vue If you want to delve into the BLoC pattern I recommend that you read this article As I discussed in that article when you use BLoC with Clean Architecture it makes more sense to call them PLoC Presentation Logic Component So in this example they are named this way Let s see the shopping cart example export class CartPloc extends Ploc lt CartState gt constructor private getCartUseCase GetCartUseCase private addProductToCartUseCase AddProductToCartUseCase private removeItemFromCartUseCase RemoveItemFromCartUseCase private editQuantityOfCartItemUseCase EditQuantityOfCartItemUseCase super cartInitialState this loadCart closeCart this changeState this state open false openCart this changeState this state open true removeCartItem item CartItemState this removeItemFromCartUseCase execute item id then cart gt this changeState this mapToUpdatedState cart editQuantityCartItem item CartItemState quantity number this editQuantityOfCartItemUseCase execute item id quantity then cart gt this changeState this mapToUpdatedState cart addProductToCart product Product this addProductToCartUseCase execute product then cart gt this changeState this mapToUpdatedState cart private loadCart this getCartUseCase execute then cart gt this changeState this mapToUpdatedState cart catch gt this changeState kind ErrorCartState error An error has ocurred loading products open this state open mapToUpdatedState cart Cart CartState const formatOptions style currency currency EUR return kind UpdatedCartState open this state open totalItems cart totalItems totalPrice cart totalPrice toLocaleString es ES formatOptions items cart items map cartItem gt return id cartItem id image cartItem image title cartItem title price cartItem price toLocaleString es ES formatOptions quantity cartItem quantity The base class of all PLoCs is responsible for storing the state and notifying when it changes type Subscription lt S gt state S gt void export abstract class Ploc lt S gt private internalState S private listeners Subscription lt S gt constructor initalState S this internalState initalState public get state S return this internalState changeState state S this internalState state if this listeners length gt this listeners forEach listener gt listener this state subscribe listener Subscription lt S gt this listeners push listener unsubscribe listener Subscription lt S gt const index this listeners indexOf listener if index gt this listeners splice index All the information that the UI component needs must be interpreted from the state elements to render in a table or list but also if something should be visible or not such as the shopping cart the loading or an error to show export interface CommonCartState open boolean export interface LoadingCartState kind LoadingCartState export interface UpdatedCartState kind UpdatedCartState items Array lt CartItemState gt totalPrice string totalItems number export interface ErrorCartState kind ErrorCartState error string export type CartState LoadingCartState UpdatedCartState ErrorCartState amp CommonCartState export interface CartItemState id string image string title string price string quantity number export const cartInitialState CartState kind LoadingCartState open false In this case through union types of typescript we can more securely and functionally model our state using sum algebraic data types This way of modeling is less prone to errors because you indicate that a very clear form that the state has main possibilities Loading informationAn error has occurredUpdated data Presentation Layer ーUIIn this layer is where are the components and everything related to React or Vue such as components hooks applications etc The components are very simple and light because they are free to manage any type of logic or state management this is the responsibility of each of the layers in the core package React AppIn react we will have the components that render our list of products the app bar with the number of products in the cart and the product cart rendered as a Sidebar Let s see the example of the component that renders the content of the cart import React from react import makeStyles Theme from material ui core styles import List Divider Box Typography CircularProgress from material ui core import CartContentItem from CartContentItem import CartItemState from frontend clean architecture core import useCartPloc from app App import usePlocState from common usePlocState const useStyles makeStyles theme Theme gt totalPriceContainer display flex alignItems center padding theme spacing justifyContent space around itemsContainer display flex alignItems center padding theme spacing justifyContent space around minHeight itemsList overflow scroll infoContainer display flex alignItems center justifyContent center height vh const CartContent React FC gt const classes useStyles const ploc useCartPloc const state usePlocState ploc const cartItems items CartItemState gt lt List className classes itemsList gt items map item index gt lt CartContentItem key index cartItem item gt lt List gt const emptyCartItems gt lt React Fragment gt lt Typography variant h component h gt Empty Cart lt Typography gt lt React Fragment gt switch state kind case LoadingCartState return lt div className classes infoContainer gt lt CircularProgress gt lt div gt case ErrorCartState return lt div className classes infoContainer gt lt Typography display inline variant h component h gt state error lt Typography gt lt div gt case UpdatedCartState return lt React Fragment gt lt Box flexDirection column className classes itemsContainer gt state items length gt cartItems state items emptyCartItems lt Box gt lt Divider gt lt Box flexDirection row className classes totalPriceContainer gt lt Typography variant h component h gt Total Price lt Typography gt lt Typography variant h component h gt state totalPrice lt Typography gt lt Box gt lt React Fragment gt export default CartContent HooksUsing Clean Architecture hooks are not used Yes they are used but for what is strictly necessary The state will not be managed with hooks the side effects are not triggered from hooks this is the responsibility of the PloCs in the core package But we will use them to store the final state of the component that its PloC returns to us and we will use them to share context between components or react to the change of state that the PloC returns to us Let s see how the usePLocState hook that we used in the component is defined export function usePlocState lt S gt ploc Ploc lt S gt const state setState useState ploc state useEffect gt const stateSubscription state S gt setState state ploc subscribe stateSubscription return gt ploc unsubscribe stateSubscription ploc return state This custom hook is in charge of subscribing to the PloC state changes and storing the final state Vue AppIn Vue we will also have the same components as in the React version Now let s see the component that renders the content of the shopping cart in the Vue version lt template gt lt div id info container v if state kind LoadingCartState gt lt ProgressSpinner gt lt div gt lt div id info container v if state kind ErrorCartState gt Error lt div gt lt div id items container v if state kind UpdatedCartState gt lt div v if state items length gt style overflow scroll gt lt div v for item in state items v bind key item id gt lt CartContenttItem v bind item gt lt div gt lt div gt lt h v if state items length gt Empty Cart lt h gt lt div gt lt Divider gt lt div id total price container gt lt h gt Total Price lt h gt lt h gt state totalPrice lt h gt lt div gt lt template gt lt script lang ts gt import defineComponent inject from vue import CartPloc from frontend clean architecture core import usePlocState from common usePlocState import CartContenttItem from CartContenttItem vue export default defineComponent components CartContenttItem setup const ploc inject lt CartPloc gt cartPloc as CartPloc const state usePlocState ploc return state lt script gt lt style scoped gt info container display flex align items center justify content center height vh items container display flex flex direction column align items center min height px justify content space around total price container display flex align items center padding px px justify content space around lt style gt As you can see it looks a lot like the React version using composition API Composition APIIn the Vue version we will also have hooks such as the one that manages the subscription to changes in the PLoC state import Ploc from frontend clean architecture core import DeepReadonly onMounted onUnmounted readonly Ref ref from vue export function usePlocState lt S gt ploc Ploc lt S gt DeepReadonly lt Ref lt S gt gt const state ref ploc state as Ref lt S gt const stateSubscription newState S gt state value newState onMounted gt ploc subscribe stateSubscription onUnmounted gt ploc unsubscribe stateSubscription return readonly state Dependency InjectionFrom the React and Vue app we have to create or reuse the PloC structure for each component use cases and repositories If these concepts were defined in the core package the part responsible for creating them may be in the core package as well This time I am using the Service Locator pattern statically function provideProductsPloc ProductsPloc const productRepository new ProductInMemoryRepository const getProductsUseCase new GetProductsUseCase productRepository const productsPloc new ProductsPloc getProductsUseCase return productsPloc function provideCartPloc CartPloc const cartRepository new CartInMemoryRepository const getCartUseCase new GetCartUseCase cartRepository const addProductToCartUseCase new AddProductToCartUseCase cartRepository const removeItemFromCartUseCase new RemoveItemFromCartUseCase cartRepository const editQuantityOfCartItemUseCase new EditQuantityOfCartItemUseCase cartRepository const cartPloc new CartPloc getCartUseCase addProductToCartUseCase removeItemFromCartUseCase editQuantityOfCartItemUseCase return cartPloc export const dependenciesLocator provideProductsPloc provideCartPloc We could also use a dynamic Service Locator together with Composition Root or a dependency injection library In the React app there is a global state that must be shared it is the shopping cart Therefore CartPloc which is the one who manages this state must be shared and accessible by all components ReactIn React we solve this using createContext and a custom hook using useContext export function createContext lt T gt const context React createContext lt T undefined gt undefined function useContext const ctx React useContext context if ctx throw new Error context must be inside a Provider with a value return ctx return context useContext as const const blocContext usePloc createContext lt CartPloc gt export const useCartPloc usePloc const App React FC gt return lt blocContext Provider value dependenciesLocator provideCartPloc gt lt MyAppBar gt lt ProductList gt lt CartDrawer gt lt blocContext Provider gt export default App Using the custom useCartPloc we have access from any component to this PloC and its state Vue AppIn Vue we solve this by using the provide feature lt template gt lt div id app gt lt MyAppBar gt lt ProductList searchTerm Element gt lt CartSidebar gt lt div gt lt template gt lt script lang ts gt import dependenciesLocator from frontend clean architecture core import defineComponent from vue import MyAppBar from appbar MyAppBar vue import ProductList from products ProductList vue import CartSidebar from cart CartSidebar vue export default defineComponent name App components ProductList MyAppBar CartSidebar provide cartPloc dependenciesLocator provideCartPloc lt script gt Later from any component we have access to the PLoC and its state using const cartPloc inject lt CartPloc gt “cartPloc as CartPloc Source codeThe source code can be found here frontend clean architecture Related Articles And ResourcesClean Architecture A Craftsman s Guide to Software Structure and DesignClean Architecture Course ¿Wy use I Clean Architecture in my projects The Bloc Pattern in Clean ArchitectureThe BLoC Pattern in Clean Architecture in ReactJSThe BLoC Pattern in Clean Architecture in FlutterClean Architecture Code Smells Parte Clean Architecture Code Smells Parte My surreal purchase of the book Clean Architecture Conclusionsn this article we have seen a Clean Architecture implementation on the front end We have a version of React and Vue app reusing as much code as possible between the two and placing it in a core package With this exercise of having a core package with all the logic uncoupled from the framework we can appreciate the power that Clean Architecture can offer us on the front end Organizing the project as a monorepo and having a core package has been necessary for this example but it is not necessary when developing an app either React or Vue However it is an interesting exercise to force you to uncouple from the UI framework as it can sometimes be difficult to see that you are coupling especially at the beginning 2021-07-12 12:39:44
海外TECH DEV Community How to add a favicon to your website https://dev.to/robole/how-to-add-a-favicon-to-your-website-5agl How to add a favicon to your websiteA favicon is short for “favorite icon It is the small icon that represents your website The most common place you see it is on browser tabs alongside the page title Often the favicon is just a scaled down version of a website s logo It should look good at very small sizes as small as by pixels this may lead you to create a different design for your favicon For example take IBM They use their distinctive stylised text logo in their website header but they use a bee icon as their favicon What is required to add a favicon Over time the requirements for favicons got out of hand Favicons started to be used on home screens and on splash screens for progressive web apps Different browsers and mobile platforms wanted different image resolutions and formats for different contexts If you wanted to satisfy all of these scenarios you would end up creating approxmiately image files and have to reference these in metadata in different places Some people wrote generators that would spit out the image files and related metadata based on an initial image you provided Thankfully it has gotten saner and you can forgo a generator You can now make a SVG favicon so you can benefit from its scalable nature and cut out a large portion of the image files required Andrey Sitnik researched this topic recently in his article How to Favicon in Six files that fit most needs His findings were that files will cover most of the bases Read through his article to get the full run down I will summarise the big points here and discuss some important design considerations when you create a favicon What files do I need to create It s probably easiest to create your favicon as a SVG in your favourite vector graphics editor Adobe Illustrator Inkscape etc You can then export it as a PNG when it is finished The files you need to create are A SVG in a aspect ratio We will discuss this more in the next section A by pixel ICO This is for legacy browsers You can open the SVG in GIMP and export it to favicon ico using the setting bpp bit alpha no palette A by pixel PNG This is for Apple devicesA by pixel PNG This is for the home screen for Android devices A by pixel PNG This is for the splash screen for Android devices A web app manifest file This is typically used for creating Progressive Web Apps PWAs but it is used in other contexts such as the add to home screen context in browsers The file is called manifest json or manifest webmanifest and is typically placed in the root directory of your website What this set up chooses to exclude is support for the following specifications Pinned tabs in Safari specified with lt link rel mask icon gt Safari use a regular favicon for pinned tabs now Pinned site customisation for Windows which is defined by the browserconfig xml file Creating the SVG don t disregard dark modeWe want to create a square SVG such that the aspect ratio is You can omit the width and height attributes on the SVG you can use viewBox to define the dimensions lt svg xmlns viewBox gt lt stuff gt lt svg gt We want to ensure our favicon looks good on near white and near black colours and looks reasonable on any background Why Can t we just use a media query to use a different version of the favicon or change the colours when the theme is light or dark Yes but you can t rely on this The prefers color scheme CSS media feature can be used to detect if the user has requested a light or dark color theme in the browser and will cover most scenarios Scenarios that I found that this does not cover are In Chromium based browsers incognito windows use dark colours by default they ignore the operating system s theme On the traffic page on Github favicons for referring sites are displayed inline alongside the web address Even GitHub s favicon falls foul here if you have dark mode set in the GitHub settings you can see this below Or can you To look good on any background you can do the following Have an opaque background for your favicon Amazon does this they alway have a white background color Choose a colour palette that has enough contrast with light and dark backgrounds Microsoft do this well If you don t want to follow the design approaches above you can embed a style block inside your SVG with the prefers color scheme media query which will adapt to the user s chosen theme You can switch colors or use the invert CSS filter You can see an example of this here lt svg xmlns viewBox gt lt style gt media prefers color scheme dark path fill white lt style gt lt stuff gt lt svg gt If you have a colourful favicon but it needs to be brighter for dark themes you could use a brightness CSS filter lt svg xmlns viewBox gt lt style gt media prefers color scheme dark root filter brightness lt style gt lt stuff gt lt svg gt You can also consider adding a shadow to increase contrast of your favicon with the background This is obviously less effective for dark themes Where should I put the files The convention was to put your favicon files in the root directory of your website You may want to place them in a sub directory for example in img favicon just to make things cleaner I would still put favicon ico in the root directory because some web services and older browsers still look here for this file The rest is covered by what you specify in your meta data Below is an example of how you can organise the files in your website placing the majority of the image files in a sub directory ├ーfavicon ico must be named this way and located at root├ーmanifest json the convention is to have this in the root dir ├ーimg you can choose where to put the rest of the images │└ーfavicon │└ーfavicon svg │└ーfavicon png │└ーfavicon png│└ーfavicon png Meta dataYou need to add the following to the head of your website lt head gt lt link rel icon href favicon ico gt lt link rel icon href img favicon favicon svg type image svg xml sizes any gt lt link rel apple touch icon href img favicon favicon png gt lt link rel manifest href manifest json gt lt head gt It is also a good idea to add lt meta name theme color content lt color gt for consistency This suggests the color to be used by browsers and apps to style elements of the UI background For example browsers might use the color for the page s title bar You can specify a media query for the themes also lt meta name theme color media prefers color scheme light content antiquewhite gt lt meta name theme color media prefers color scheme dark content silver gt This is what you put in your web app manifest name My blog icons src img favicon favicon png type image png sizes x src img favicon favicon png type image png sizes x OptimizationBrowsers download favicons in the background so a bigger image file does not affect website performance but it is still good practice to optimize the files and respect people s data quotas For the SVG you can optimize the markup and strip out the editor data by using the tools SVGOMG web GUI or SVGO command line You can use tinypng web GUI or any raster image app for optimizing the PNGs Typically the most impactful thing you can do is to reduce the color palette to the minimum required You should verify the output to ensure it doesn t degrade the appearance ConclusionAdding a favicon to your website in is less painful than before but it is still not a trivial task You need to consider how your favicon will look in dark and light themes You need to create files and add the appropriate meta data to your webpage It is a bit of work Hopefully this article lightened the load for you 2021-07-12 12:29:21
海外TECH DEV Community Asynchronous Programming in JavaScript https://dev.to/saurabhmisra/asynchronous-programming-in-javascript-5g46 Asynchronous Programming in JavaScriptUp until a few years ago the server did most of the heavy lifting when it came to handling business logic The client side didn t do a lot except respond to user interactions change something in the DOM every now and then and make the occassional AJAX request to process a form submission But things have changed a lot during the past couple of years with the JavaScript s evolution into a first class programming language Today web apps have diversified into Single Page Applications or SPAs think GMail and Progressive Web Apps or PWAs think Twitter that are heavily powered by JavaScript JavaScript usage is not limited to just building native app like fluid UIs in web apps but extends to building APIs mobile apps and even desktop apps So how is a single threaded language like JavaScript able to contend with other more powerful multi threaded programming languages like C or Java in such a multitude of software development scenarios The answer lies in JavaScript s unique way of handling concurrency and asynchronicity With its growing popularity its crucial that JS developers understand the tools for handling asynchronicity Let s find out more Note These series of articles mainly revolve around client side JavaScript that runs in the browser The core concepts for the most part also apply as is to server side JavaScript using NodeJS Synchronous JavaScriptSynchronous execution of code basically means executing code sequentially one statement at a time A statement cannot be executed unless the statement before it has finished executing This is termed as the blocking nature of synchronous code because the current operation blocks the execution of the next operation var first I ll be executed first var second I ll be executed next console log I ll be executed last In the above example each statement will be executed in sequence after the previous has finished executing JavaScript is single threaded meaning that the JavaScript process runs a single thread called the main thread where our code is executed synchronously While the execution of the statements in the previous example happens almost instantaneously operations such as network requests and timeouts could end up taking an indeterminate amount of time If such operations are handled synchronously they would freeze the browser which would pause all rendering and user interactions Consider the following example with an alert simulating such a time consuming operation simulate a time consuming operation alert I m going to freeze this browser console log Yayy The alert is gone In the above example the alert behaves synchronously and blocks the execution of the statement after it and freezes the browser window tab until you click OK This is why JavaScript executes time consuming operations asynchronously so that the browser can continue rendering and accepting user inputs Asynchronous JavaScriptAsynchronous execution of code basically means that a certain part of your code will be executed at a later point in time after an asynchronous operation completes An asynchronous operation is something that takes an unknown amount of time for completion eg network requests timeouts etc It can also be an event which can occur at any point in the future for example user interaction events like button clicks which will then kick off the execution of some code inside the click event handler While the asynchronous operation is in progress your program need not wait for it to complete and can continue to run and so is not blocked Let s consider the previous example with the blocking alert replaced with setTimeout asynchronoussetTimeout function onTimeout console log I ll run asynchronously so I won t freeze anything console log Woo hoo No more freezing Woo hoo No more freezing I ll run asynchronously so I won t freeze anything Since setTimeout is asynchronous the program is not blocked and JS proceeds ahead to execute the statements that come after it After the second timeout the asynchronous code inside the callback onTimeout callback is executed If setTimeout was not asynchronous the program would pause and the browser would freeze for a whole second just like in the previous example that used alert But if JavaScript is single threaded and is executing some other program while the second timer is in progress who is keeping track of the time for setTimeout That is the job of the environment in which JS runs On the client side that environment is your browser while on the server side its NodeJS Whenever JS encounters the start of an asynchronous operation like a timeout or a network request it signals the environment and the environment takes over the charge of handling it When the asynchronous operation completes the environment signals JS which in turn executes asynchronous code So in the previous example when JS initiates the timeout it hands over the responsibility of keeping track of the time to the browser JS also supplies a callback function onTimeout that contains our asynchronous code In the meantime JS will keep executing other code After second the browser will tell JS Hey the timeout has completed so you should invoke this callback you gave me Let s consider the scenario when we make a network request We ll use the traditional XMLHttpRequest for this asynchronousvar xhr new XMLHttpRequest xhr addEventListener load function onLoad console log I ll run asynchronously so I won t block anything xhr open GET xhr send console log Woo hoo No more freezing Woo hoo No more freezing I ll run asynchronously so I won t block anything Similar to the setTimeout scenario JS will initialize the network request and hand things over to the browser It will also tell the browser to call the onLoad function once the request is complete The browser will take care of sending the request and waiting for the response In the meantime JS will continue to execute the rest of the program and will print the text provided to console log When the request completes the browser will tell JS to execute onLoad On the same lines when we add a click event listener to a DOM element say a button the code inside the handler is executed you guessed it asynchronously Which means at a later point in time whenever the user clicks on the configured DOM element var btn document getElementById btn asynchronousbtn addEventListener click function onButtonClick console log I ll run asynchronously so I won t block anything console log Woo hoo No more freezing Woo hoo No more freezing I ll run asynchronously so I won t block anything Run in JSBin In the above example the JS engine instructs the environment to let it know whenever a click event occurs on the configured button element and passes it the onButtonClick handler When the user clicks the button at some point in the future the browser informs the JS engine about it and tells it to invoke the handler So is JavaScript synchronous asynchronous or both JavaScript is synchronous period By itself it has no clue how to behave asynchronously or how to delay the execution of a part of your code But it teams up with the browser environment to do all kinds of asynchronous stuff Sweet eh Our job as developers is to gracefully manage the state of our application while dealing with these asynchronous operations We have a couple of options to achieve this The first is to use the traditional Asynchronous Callbacks and the second are the new and powerful Promises made even more irresistible by Async Await Asynchronous CallbacksAsynchronous callbacks are basically just functions that wrap asynchronous code and are passed as input arguments to other functions that initiate asynchronous operations In our previous examples onTimeout onLoad and onButtonClick are all examples of asynchronous callbacks The idea is that these functions will be called back when the asynchronous operation completes But remember that not all callbacks are asynchronous callbacks const cars BMW Mercedes Audi synchronouscars forEach function displayCar car index console log index car BMW Mercedes Audi In this example displayCar is passed in as an argument to the forEach function But forEach is synchronous and does not initiate an asynchronous operation So the code inside displayCar is executed synchronously So even though displayCar is a callback function it is not an asynchronous callback function So while all asynchronous callbacks are callbacks not all callbacks are asynchronous Traditional callbacks are adequate for simpler scenarios where only a few asynchronous operations need to be managed But they prove incompetent in the increasingly complex scenarios JavaScript is used in nowadays PromisesPromises have been introduced for the sole purpose of empowering JavaScript and enabling JavaScript developers to make asynchronous operations more manageable We are going to go into a lot more detail and discuss Promise syntax and the benefits they bring to the table as compared to callbacks in the following sections 2021-07-12 12:25:23
Apple AppleInsider - Frontpage News West Virginia school system gears up to switch from Chromebooks to iPads https://appleinsider.com/articles/21/07/12/west-virginia-school-system-gears-up-to-switch-from-chromebooks-to-ipads?utm_medium=rss West Virginia school system gears up to switch from Chromebooks to iPadsA West Virginia Board of educators has unanimously voted to switch from Chromebooks to iPad for its staff as part of a pilot program to bring Apple products to the secondary level over the next few years The proposal was brought before the Berkeley County Board of Education on July and included iPads Apple Pencils iPad cases and Apple TVs for teachers at pilot schools The purchase was quoted at and will come from grant funding The pilot schools included Martinsburg High School South Middle School and Musselman Middle School Read more 2021-07-12 12:51:06
Apple AppleInsider - Frontpage News Exclusive: psychotherapist Georgia Dow talks mental health, limiting distractions, on the AppleInsider podcast https://appleinsider.com/articles/21/07/12/exclusive-psychotherapist-georgia-dow-talks-mental-health-limiting-distractions-on-the-appleinsider-podcast?utm_medium=rss Exclusive psychotherapist Georgia Dow talks mental health limiting distractions on the AppleInsider podcastOn a special episode of the AppleInsider podcast psychotherapist Georgia Dow joins us to discuss the effect technology and social media has on our mental health and how to manage notifications across our devices Georgia Dow has over years of experience in teaching and counseling with a Master s degree with Distinction in Art Therapy On the podcast we discuss the effect technology has on our mental health and ability to focus over the last ten years For most users their iPhone iPad and Mac offer numerous notifications and unless those are carefully set you could be inundated with sounds and banners all day Not only is this a distraction but it could also affect your mental health Read more 2021-07-12 12:49:57
Apple AppleInsider - Frontpage News Apple teams up with Gallaudet University to showcase Deaf-friendly businesses https://appleinsider.com/articles/21/07/12/apple-teams-up-with-gallaudet-university-to-showcase-deaf-friendly-businesses?utm_medium=rss Apple teams up with Gallaudet University to showcase Deaf friendly businessesThe Apple Maps Guides can provide helpful information to travelers in specific cities worldwide and Gallaudet University has begun making guides that focus on Deaf business Gallaudet University in Washington DCGallaudet University is a college in the Washington DC area that is considered the most prestigious school for Deaf and Hard of Hearing students in the United States The college has teamed up with Apple to highlight Deaf friendly businesses within Apple Maps Read more 2021-07-12 12:42:07
Apple AppleInsider - Frontpage News Foxconn, TSMC buy 10M COVID-19 shots for Taiwan https://appleinsider.com/articles/21/07/12/foxconn-tsmc-buy-10m-covid-19-shots-for-taiwan?utm_medium=rss Foxconn TSMC buy M COVID shots for TaiwanApple partners TSMC and Foxconn are helping Taiwan secure COVID vaccines by buying a total of million doses to be distributed by the territory s government Chip foundry TSMC and assembly partner Foxconn will each acquire up to million doses of the Pfizer BioNTech vaccine the Taiwan Overseas Community Affairs Council said on Monday The purchases will be donated to the government and will be used to fight the coronavirus outbreak in the country The agreement is said to be worth million or approximately per dose of the vaccine reports BBC News The government agreed to the plan from Foxconn and TSMC in late June but only confirmed the agreement after statements were issued by both companies Read more 2021-07-12 12:06:50
海外TECH Engadget Samsung's Galaxy Buds Pro fall to an all-time low of $120 https://www.engadget.com/samsung-galaxy-buds-pro-all-time-low-122528401.html?src=rss Samsung x s Galaxy Buds Pro fall to an all time low of Samsung s Galaxy Buds Pro offer a compelling alternative to Apple s AirPods Pro They re even more tempting when you consider the latest discount The active noise cancelling earbuds are currently on sale for an all time low price of at Amazon owned Woot That s off their typical price and less than the previous record deal Buy Galaxy Buds Pro at Woot Maybe it s because the Galaxy Buds landed in February and the Buds are expected in August Whatever the reasons behind the latest price cut the Buds Pro are still worthy of your cash due to their bombastic sound Firstly unlike the Buds they boast active noise cancellation and a wider audio range that features more depth and clarity thanks to the internal mm woofer and a mm tweeter nbsp Voice calls have also been improved with the help of three microphones an accelerometer and Wind Shield tech for when you re outdoors What s more battery life matches Samsung s estimates at five hours with ANC and Bixby turned on and eight hours with them off or hours total with the case ーwhich supports wireless charging For those looking for durability the IPX rating means you can dunk them in up to meter of water for minutes Overall they re still our highest rated Samsung earbuds with an exemplary review score of nbsp Just note that before you purchase them it may be worth familiarizing yourself with Woot s terms and conditions For the uninitiated the online retailer mainly offers limited time deals with a modified return policy to its parent Amazon that includes numerous exceptions including charges for shipping costs Follow EngadgetDeals on Twitter for the latest tech deals and buying advice 2021-07-12 12:25:28
Cisco Cisco Blog When It Comes To Operational Maturity, What Sets Leaders Apart? https://blogs.cisco.com/perspectives/when-it-comes-to-operational-maturity-what-sets-leaders-apart When It Comes To Operational Maturity What Sets Leaders Apart Learn what sets leaders apart when it comes to operational maturity The Second Installment of our automation strategy blog series Operational Maturity Is Critical to Business Success focuses on four areas of competency strategy technology process and governance 2021-07-12 12:15:24
海外TECH CodeProject Latest Articles An Example of Upgrading Code From Average to Excellent https://www.codeproject.com/Articles/5307668/An-Example-of-Upgrading-Code-From-Average-to-Excel An Example of Upgrading Code From Average to ExcellentAverage programmers get the job done  Excellent programmers get the job done too but the code of excellent programmers lasts longer and is easier to change to meet future requirements  Below is an example of upgrading average code to excellent code 2021-07-12 12:16:00
医療系 医療介護 CBnews 医療者として全力で安全安心の大会に、日医-五輪開催で都道府県医師会連絡協議会 https://www.cbnews.jp/news/entry/20210712205232 中川俊男 2021-07-12 21:11:00
金融 RSS FILE - 日本証券業協会 新規公開に際して行う株券の個人顧客への配分状況 https://www.jsda.or.jp/shiryoshitsu/toukei/shinkikoukai/index.html 新規公開 2021-07-12 13:00:00
金融 金融庁ホームページ 人事異動(令和3年7月11日発令)を掲載しました。 https://www.fsa.go.jp/common/about/jinji/index.html 人事異動 2021-07-12 14:00:00
ニュース BBC News - Home Racist abuse of players 'unforgiveable' says Southgate https://www.bbc.co.uk/sport/football/57800431 Racist abuse of players x unforgiveable x says SouthgateEngland manager Gareth Southgate says online racist abuse of Marcus Rashford Jadon Sancho and Bukayo Saka is unforgivable after Prime Minister Boris Johnson and the FA condemn the social media posts 2021-07-12 12:32:35
ニュース BBC News - Home FA review after fans break into Wembley for final https://www.bbc.co.uk/news/uk-57803366 legitimate 2021-07-12 12:53:05
ニュース BBC News - Home UK bans fifth neo-Nazi group under terror laws https://www.bbc.co.uk/news/uk-57806800 britain 2021-07-12 12:05:26
ニュース BBC News - Home Murray leads Lions for first time against South Africa A https://www.bbc.co.uk/sport/rugby-union/57803880 africa 2021-07-12 12:43:53
ニュース BBC News - Home Gatland hopeful on Lions return for Wales captain Jones https://www.bbc.co.uk/sport/rugby-union/57808079 jones 2021-07-12 12:24:34
ビジネス ダイヤモンド・オンライン - 新着記事 ライク(2462)、3期連続となる「増配」を発表して、 配当利回り2.4%に! 年間配当額は3年で2倍に急増、 2022年5月期は前期比2円増の「1株あたり52円」に! - 配当【増配・減配】最新ニュース! https://diamond.jp/articles/-/276644 ライク、期連続となる「増配」を発表して、配当利回りに年間配当額は年で倍に急増、年月期は前期比円増の「株あたり円」に配当【増配・減配】最新ニュースライクが「増配」を発表し、配当利回りがにライクは年月期の配当予想を「株あたり円」と発表し、前期比「円」の増配で「期連続増配」の見通しとなった。 2021-07-12 21:26:00
北海道 北海道新聞 食品ロス削減へ新使用期限を設定 消費者庁、子ども食堂に提供 https://www.hokkaido-np.co.jp/article/566222/ 賞味期限 2021-07-12 21:17:00
北海道 北海道新聞 南西沖地震から28年 奥尻で追悼行事 https://www.hokkaido-np.co.jp/article/566221/ 北海道南 2021-07-12 21:16:00
北海道 北海道新聞 HBL初の女性選手 士別ブレイズ入団 買われた守備力「男子に負けない」 https://www.hokkaido-np.co.jp/article/566220/ 選手 2021-07-12 21:14:00
北海道 北海道新聞 中国代表、一般客と同宿に懸念 「分村」のセーリングチーム https://www.hokkaido-np.co.jp/article/566219/ 中国代表 2021-07-12 21:14:00
北海道 北海道新聞 肉厚コンブ輝くあめ色 雄武で漁解禁 https://www.hokkaido-np.co.jp/article/566216/ 雄武 2021-07-12 21:12:00
北海道 北海道新聞 帯広・岩内仙峡に自転車道 今秋にもMTBコース https://www.hokkaido-np.co.jp/article/566214/ 自転車道 2021-07-12 21:09:26
北海道 北海道新聞 然別湖畔ライブ熱く 鹿追町内外の音楽家 8、9月にも https://www.hokkaido-np.co.jp/article/566213/ 鹿追町 2021-07-12 21:06:00
北海道 北海道新聞 飲食店に時短要請続く 道独自対策で札幌 職員が協力呼び掛け https://www.hokkaido-np.co.jp/article/566212/ 新型コロナウイルス 2021-07-12 21:05:00
北海道 北海道新聞 浜口竜介監督、カンヌで感謝の弁 「国際映画祭が育ててくれた」 https://www.hokkaido-np.co.jp/article/566211/ 国際映画祭 2021-07-12 21:02:00
北海道 北海道新聞 国内で1506人感染、3人死亡 重症者は7人増の432人 https://www.hokkaido-np.co.jp/article/566210/ 新型コロナウイルス 2021-07-12 21:02:00

コメント

このブログの人気の投稿

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

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

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