IT |
ITmedia 総合記事一覧 |
[ITmedia News] Google Cloud、デジタルチーム立ち上げ 暗号通貨での決済も視野に |
https://www.itmedia.co.jp/news/articles/2201/30/news028.html
|
cloud |
2022-01-30 07:42:00 |
海外TECH |
MakeUseOf |
How to Use NURBS Curves in 3D Modeling: A Blender Tutorial |
https://www.makeuseof.com/nurbs-curves-3d-modeling-blender-tutorial/
|
blender |
2022-01-29 22:30:12 |
海外TECH |
MakeUseOf |
The Most Popular JavaScript Frameworks of 2022 |
https://www.makeuseof.com/most-popular-javascript-frameworks/
|
javascript |
2022-01-29 22:15:12 |
海外TECH |
DEV Community |
Flutter Provider Türleri 💫 🌌 ✨ |
https://dev.to/gulsenkeskin/flutter-provider-turleri-546h
|
Flutter Provider Türleri Flutter da bir çok Provider türüvardır bunlardan bazıları •Provider•ListenableProvider•ChangeNotifierProvider•ValueListenableProvider•StreamProvider•FutureProvider•MultiProvider•ProxyProvider•ChangeNotifierProxyProviderBu yazıda provider türlerini ve bunlardan hangisinin ne zaman kullanılacağınıöğreneceğiz Bunun için aşağıdaki yapıyıkullanacağız • Do something düğmesi uygulama durumunu değiştiren herhangi bir uygulama olayınıtemsil eder • Show something Metin widget ı kullanıcıarayüzünün uygulama durumunu görüntülemesi gereken herhangi bir bölümünütemsil eder •Soldaki yeşil dikdörtgen ve sağdaki mavi dikdörtgen widget ağacının iki farklıbölümünütemsil eder Bir etkinliğin ve güncellediği kullanıcıarayüzünün uygulamanın herhangi bir bölümünde olabileceğini vurgulamak için kullanılmışlardır import package flutter material dart void main gt runApp MyApp class MyApp extends StatelessWidget override Widget build BuildContext context return MaterialApp home Scaffold appBar AppBar title Text My App body Row mainAxisAlignment MainAxisAlignment center children lt Widget gt Container padding const EdgeInsets all color Colors green child RaisedButton child Text Do something onPressed Container padding const EdgeInsets all color Colors blue child Text Show something Provider paketini pubspec yaml dosyanıza ekleyin dependencies provider Bunu herhangi bir sayfada kullanmak için aşağıdaki şekilde import edebilirsiniz import package provider provider dart ProviderTahmin edebileceğiniz gibi Provider Provider widget türlerinin en temelidir Widget ağacında herhangi bir yere bir değer genellikle bir data model object sağlamak için kullanabilirsiniz Ancak bu değer değiştiğinde widget ağacınıgüncellemenize yardımcıolmaz class MyModel String someValue Hello void doSomething someValue Goodbye print someValue import package flutter material dart import package provider provider dart void main gt runApp MyApp class MyApp extends StatelessWidget override Widget build BuildContext context return Provider lt MyModel gt lt Provider create context gt MyModel child MaterialApp home Scaffold appBar AppBar title Text My App body Row mainAxisAlignment MainAxisAlignment center children lt Widget gt Container padding const EdgeInsets all color Colors green child Consumer lt MyModel gt lt Consumer builder context myModel child return RaisedButton child Text Do something onPressed We have access to the model myModel doSomething Container padding const EdgeInsets all color Colors blue child Consumer lt MyModel gt lt Consumer builder context myModel child return Text myModel someValue class MyModel lt MyModel String someValue Hello void doSomething someValue Goodbye print someValue Bunu çalıştırdığınızda aşağıdaki sonucu alırsınız Kullanıcıarayüzü modelden gelen Hello metniyle oluşturuldu “Do something düğmesine basmak model üzerinde bir olayın gerçekleşmesine neden olacaktır Ancak modelin verileri değiştirilmişolsa bile Provider widget aracısağladığıdeğerlerdeki değişiklikleri dinlemediği için kullanıcıarayüzüyeniden oluşturulamadı ChangeNotifierProviderProvider widget bileşeninden farklıolarak ChangeNotifierProvider model nesnesindeki değişiklikleri dinler Değişiklik olduğunda Consumer altındaki tüm widget larıyeniden oluşturacaktır Kodda Provider ıChangeNotifierProvider olarak değiştirin Model sınıfının ChangeNotifier ı kullanması veya extend etmesi gerekir Bu sizin notifyListeners a erişmenizi sağlar ve notifyListeners ıher çağırdığınızda ChangeNotifierProvider bilgilendirilecek ve Consumer lar widget larınıyeniden oluşturacaktır import package flutter material dart import package provider provider dart void main gt runApp MyApp class MyApp extends StatelessWidget override Widget build BuildContext context return ChangeNotifierProvider lt MyModel gt lt ChangeNotifierProvider create context gt MyModel child MaterialApp home Scaffold appBar AppBar title Text My App body Row mainAxisAlignment MainAxisAlignment center children lt Widget gt Container padding const EdgeInsets all color Colors green child Consumer lt MyModel gt lt Consumer builder context myModel child return RaisedButton child Text Do something onPressed myModel doSomething Container padding const EdgeInsets all color Colors blue child Consumer lt MyModel gt lt Consumer builder context myModel child return Text myModel someValue class MyModel with ChangeNotifier lt MyModel String someValue Hello void doSomething someValue Goodbye print someValue notifyListeners Şimdi “Do something düğmesine bastığınızda metin “Hello dan “Goodbye a dönüşür Çoğu uygulamada model sınıfınız kendi dosyasında olacak ve ChangeNotifier ıkullanmak için flutter foundation dart dosyasınıiçe aktarmanız gerekecek Bunun gerçekten hayranıdeğilim çünkübu işmantığınızın artık framework e bağımlıolduğu ve framework ün bir ayrıntıolduğu anlamına gelir Consumer widget ı notifyListeners çağrıldığında altındaki tüm pencere öğelerini yeniden oluşturur Butonun güncellenmesi gerekmez bu nedenle bir Consumer kullanmak yerine Provider of u kullanabilir ve listen parametresini false olarak ayarlayabilirsiniz Bu şekilde değişiklik olduğunda buton yeniden oluşturulmaz class MyButton extends StatelessWidget override Widget build BuildContext context final myModel Provider of lt MyModel gt context listen false return RaisedButton child Text Do something onPressed myModel doSomething FutureProviderFutureProvider temel olarak FutureBuilder widget ının etrafındaki bir sarmalayıcıdır Kullanıcıarayüzünde göstermesi için bazıinitial datalarıveriyorsunuz ve ayrıca provide etmek istediğiniz değerin bir Future ınısağlıyorsunuz FutureProvider Future ın ne zaman tamamlandığınıdinler ve ardından Consumerlarıwidget larınıyeniden oluşturmalarıiçin bilgilendirir Aşağıdaki kodda kullanıcıarayüzüne bazıinitial datalarıvermek için boşbir model kullandım Ayrıca saniye sonra yeni bir model döndürme işlevi ekledim FutureProvider ın beklediği şey budur Temel Provider gibi FutureProvider da modelin kendisindeki değişiklikleri dinlemez Aşağıdaki kod saniye sonra “Do something butonunu yaparak modeli değiştirir UI üzerinde herhangi bir etkisi yoktur import package flutter material dart import package provider provider dart void main gt runApp MyApp class MyApp extends StatelessWidget override Widget build BuildContext context return FutureProvider lt MyModel gt lt FutureProvider initialData MyModel someValue default value create context gt someAsyncFunctionToGetMyModel child MaterialApp home Scaffold appBar AppBar title Text My App body Row mainAxisAlignment MainAxisAlignment center children lt Widget gt Container padding const EdgeInsets all color Colors green child Consumer lt MyModel gt lt Consumer builder context myModel child return RaisedButton child Text Do something onPressed myModel doSomething Container padding const EdgeInsets all color Colors blue child Consumer lt MyModel gt lt Consumer builder context myModel child return Text myModel someValue Future lt MyModel gt someAsyncFunctionToGetMyModel async lt async function await Future delayed Duration seconds return MyModel someValue new data class MyModel lt MyModel MyModel this someValue String someValue Hello Future lt void gt doSomething async await Future delayed Duration seconds someValue Goodbye print someValue FutureProvider Consumer a Future lt MyModel gt tamamlandıktan sonra yeniden oluşturmasınısöyler Uygulamayıbaşlangıçdeğerleriyle yeniden oluşturmak için hot restart a basın Do something butonuna basmanın Future tamamlandıktan sonra bile kullanıcıarayüzünügüncellemediğini unutmayın Bu tür bir işlevsellik istiyorsanız son bölümdeki ChangeNotifierProvider ıkullanın FutureProvider için kullanım durumunuz bir dosyadan veya ağdan bazıverileri okumak olabilir Ancak bunu bir FutureBuilder ile de yapabilirsiniz Uzman olmayan görüşüme göre FutureProvider bir FutureBuilder dan çok daha kullanışlıdeğil Bir sağlayıcıya ihtiyacım olursa muhtemelen bir ChangeNotifierProvider kullanırdım ve bir sağlayıcıya ihtiyacım yoksa muhtemelen bir FutureBuilder kullanırdım Yine de bir yorum eklemek isterseniz bunu güncellemekten memnuniyet duyarım StreamProviderStreamProvider temel olarak StreamBuilder ın etrafındaki bir sarıcıdır Bir akışsağlarsınız ve ardından akışta bir olay olduğunda Consumer lar yeniden oluşturulur Kurulum yukarıdaki FutureProvider a çok benzer StreamProvider modelin kendisindeki değişiklikleri dinlemez Yalnızca akıştaki yeni eventleri dinler import package flutter material dart import package provider provider dart void main gt runApp MyApp class MyApp extends StatelessWidget override Widget build BuildContext context return StreamProvider lt MyModel gt lt StreamProvider initialData MyModel someValue default value create context gt getStreamOfMyModel child MaterialApp home Scaffold appBar AppBar title Text My App body Row mainAxisAlignment MainAxisAlignment center children lt Widget gt Container padding const EdgeInsets all color Colors green child Consumer lt MyModel gt lt Consumer builder context myModel child return RaisedButton child Text Do something onPressed myModel doSomething Container padding const EdgeInsets all color Colors blue child Consumer lt MyModel gt lt Consumer builder context myModel child return Text myModel someValue Stream lt MyModel gt getStreamOfMyModel lt Stream return Stream lt MyModel gt periodic Duration seconds x gt MyModel someValue x take class MyModel lt MyModel MyModel this someValue String someValue Hello void doSomething someValue Goodbye print someValue StreamProvider Consumer a yeni bir stream eventi akışolayı olduğunda yeniden oluşturmasınısöyler Uygulamayıbaşlangıçdeğerleriyle yeniden oluşturmak için hot restart a basın Do something düğmesine basmanın kullanıcıarayüzünügüncellemediğini unutmayın Bu tür bir işlevsellik istiyorsanız sadece ChangeNotifierProvider kullanın Aslında model nesnenizde bir akışolabilir ve sadece notifyListeners ıçağırabilirsiniz Bu durumda bir StreamProvider a hiçihtiyacınız olmaz ValueListenableProviderValueListenableProvider ıimmutable state model nesnesi ile kullanabilirsiniz ve değişmezliğin immutability bazıavantajlarıvardır class MyModel ValueNotifier lt String gt someValue ValueNotifier Hello void doSomething someValue value Goodbye ValueListenableProvider ile içindeki değişiklikleri dinleyebilirsiniz Ancak kullanıcıarayüzünden model üzerinde bir method çağırmak istiyorsanız modeli de sağlamanız gerekir Bu nedenle aşağıdaki kodda bir Provider ın MyModel deki ValueNotifier ıValueListenableProvider a veren bir Consumer a MyModel sağladığınıgörebilirsiniz import package flutter material dart import package provider provider dart void main gt runApp MyApp class MyApp extends StatelessWidget override Widget build BuildContext context return Provider lt MyModel gt lt Provider create context gt MyModel child Consumer lt MyModel gt lt MyModel Consumer builder context myModel child return ValueListenableProvider lt String gt value lt ValueListenableProvider value myModel someValue child MaterialApp home Scaffold appBar AppBar title Text My App body Row mainAxisAlignment MainAxisAlignment center children lt Widget gt Container padding const EdgeInsets all color Colors green child Consumer lt MyModel gt lt Consumer builder context myModel child return RaisedButton child Text Do something onPressed myModel doSomething Container padding const EdgeInsets all color Colors blue child Consumer lt String gt lt String Consumer builder context myValue child return Text myValue class MyModel lt MyModel ValueNotifier lt String gt someValue ValueNotifier Hello lt ValueNotifier void doSomething someValue value Goodbye print someValue value Do something butonuna basmak ValueListenableProvider sayesinde Hello nun Goodbye olarak değişmesini sağlar Widget ağacının en üstünde bir Consumer yerine Provider of lt MyModel gt context listen false kullanmak muhtemelen daha iyi olur Aksi takdirde her seferinde tüm ağacıyeniden inşa ederiz Provider lt MyModel gt myModel i hem ValueListenableProvider a hem de Do something düğmesinin kapanmasına verir ListenableProviderBunu yalnızca kendi özel provider ınızıoluşturmanız gerekiyorsa kullanırsınız MultiProviderŞimdiye kadar ki örneklerimiz yalnızca bir model nesnesi kullandı İkinci tür bir model nesnesi sağlamanız gerekiyorsa providerlarıiçiçe yerleştirebilirsiniz yukarıdaki ValueListenableProvider örneğinde yaptığım gibi Ancak içiçe kullanım dağınıktır Bunu yapmanın daha düzgün bir yolu bir MultiProvider kullanmaktır Aşağıdaki örnekte iki ChangeNotifierProviders ile sağlanan iki farklımodel vardır import package flutter material dart import package provider provider dart void main gt runApp MyApp class MyApp extends StatelessWidget override Widget build BuildContext context return MultiProvider lt MultiProvider providers ChangeNotifierProvider lt MyModel gt create context gt MyModel ChangeNotifierProvider lt AnotherModel gt create context gt AnotherModel child MaterialApp home Scaffold appBar AppBar title Text My App body Column children lt Widget gt Row mainAxisAlignment MainAxisAlignment center children lt Widget gt Container padding const EdgeInsets all color Colors green child Consumer lt MyModel gt lt MyModel Consumer builder context myModel child return RaisedButton child Text Do something onPressed We have access to the model myModel doSomething Container padding const EdgeInsets all color Colors blue child Consumer lt MyModel gt lt MyModel Consumer builder context myModel child return Text myModel someValue SizedBox height Row mainAxisAlignment MainAxisAlignment center children lt Widget gt Container padding const EdgeInsets all color Colors red child Consumer lt AnotherModel gt lt AnotherModel Consumer builder context myModel child return RaisedButton child Text Do something onPressed myModel doSomething Container padding const EdgeInsets all color Colors yellow child Consumer lt AnotherModel gt lt AnotherModel Consumer builder context anotherModel child return Text anotherModel someValue class MyModel with ChangeNotifier lt MyModel String someValue Hello void doSomething someValue Goodbye print someValue notifyListeners class AnotherModel with ChangeNotifier lt AnotherModel int someValue void doSomething someValue print someValue notifyListeners İlk Do something düğmesine basmak Hello yu Goodbye olarak değiştirecektir İkinci “Do something düğmesine basmak “ ı“ olarak değiştirecektir Bununla tek ChangeNotifierProvider arasında pek bir fark yoktur FarklıConsumer ların doğru modeli alma yolu gösterdikleri türe göredir Yani Consumer lt MyModel gt MyModel i alır ve Consumer lt AnotherModel gt AnotherModel i alır ProxyProviderYa sağlamak istediğiniz iki modeliniz varsa ancak modellerden biri diğerine bağlıysa Bu durumda bir ProxyProvider kullanabilirsiniz Bir ProxyProvider değeri bir providerdan alır ve başka bir provider a enjekte edilmesini sağlar Bir ProxyProvider kurma şekliniz ilk başta kafa karıştırıcıolabilir bu yüzden bununla ilgili küçük bir açıklama eklememe izin verin MultiProvider providers ChangeNotifierProvider lt MyModel gt create context gt MyModel ProxyProvider lt MyModel AnotherModel gt update context myModel anotherModel gt AnotherModel myModel Temel ProxyProvider ın iki türüvardır Birinci tip ikinci tipin bağlıolduğu şeydir Yani başka bir Provider tarafından zaten sağlanmışolan bir modeldir Güncelleme kapanışında ikinci model tipine enjekte edilir Üçüncüparametre anotherModel önceki yerleşik değeri saklar ancak bunu burada kullanmıyoruz Sadece myModel i AnotherModel in yapıcısına iletiyoruz import package flutter material dart import package provider provider dart void main gt runApp MyApp class MyApp extends StatelessWidget override Widget build BuildContext context return MultiProvider lt MultiProvider providers ChangeNotifierProvider lt MyModel gt lt ChangeNotifierProvider create context gt MyModel ProxyProvider lt MyModel AnotherModel gt lt ProxyProvider update context myModel anotherModel gt AnotherModel myModel child MaterialApp home Scaffold appBar AppBar title Text My App body Column children lt Widget gt Row mainAxisAlignment MainAxisAlignment center children lt Widget gt Container padding const EdgeInsets all color Colors green child Consumer lt MyModel gt lt MyModel Consumer builder context myModel child return RaisedButton child Text Do something onPressed myModel doSomething Goodbye Container padding const EdgeInsets all color Colors blue child Consumer lt MyModel gt lt MyModel Consumer builder context myModel child return Text myModel someValue Container padding const EdgeInsets all color Colors red child Consumer lt AnotherModel gt lt AnotherModel Consumer builder context anotherModel child return RaisedButton child Text Do something else onPressed anotherModel doSomethingElse class MyModel with ChangeNotifier lt MyModel String someValue Hello void doSomething String value someValue value print someValue notifyListeners class AnotherModel lt AnotherModel MyModel myModel AnotherModel this myModel void doSomethingElse myModel doSomething See you later print doing something else Metin “Hello ile başlar “Do something düğmesine bastığınızda MyModel metni “Goodbye olarak değiştirir MyModel dinleyicisini ChangeNotifierProvider bilgilendirir ve kullanıcıarayüzüyeni metinle yeniden oluşturulur Do something else düğmesine bastığınızda AnotherModel MyModel i ProxyProvider tarafından enjekte edilmiştir alır ve metnini See you later olarak değiştirir MyModel dinleyicilerine değişiklikleri bildirdiği için kullanıcıarayüzütekrar güncellenir AnotherModel in değişen kendi verileri olsaydı ProxyProvider değişiklikleri dinlemediğinden UI güncellenmezdi Bunun için bir ChangeNotifierProxyProvider gerekir Provider builder ve value constructorsBitirmeden önce Provider ıkullanmayıöğrenirken kafamıkarıştıran bir şeyi daha açıklamak istiyorum Provider widget öğelerinin çoğu tümüdeğilse de iki tür constructor a sahiptir basic constructor model nesnenizi oluşturduğunuz bir oluşturma işlevi alır Bunu yukarıdaki örneklerin çoğunda yaptık Provider lt MyModel gt create context gt MyModel child MyModel Nesnenin create fonksiyonunda oluşturulduğunu görebilirsiniz Nesneniz zaten oluşturulduysa ve yalnızca ona bir referans sağlamak istiyorsanız value adlınamed adlandırılmış constructor ıkullanabilirsiniz final myModel MyModel Provider lt MyModel gt value value myModel child Burada MyModel daha önce oluşturuldu ve sadece referans olarak iletildi Ağdan veri yüklemek için modelde bir yöntemi çağırabilmeniz için modelinizi initState yönteminde başlatmışolsaydınız bunu yapardınız resource |
2022-01-29 22:49:35 |
Apple |
AppleInsider - Frontpage News |
Arculus review: A crypto cold storage wallet with promise |
https://appleinsider.com/articles/22/01/29/arculus-review-a-crypto-cold-storage-wallet-with-promise?utm_medium=rss
|
Arculus review A crypto cold storage wallet with promiseThe Arculus card is a new cryptocurrency cold wallet for your iPhone that secures your private keys It does its job well but reeks of as of yet unfulfilled potential Arculus cold storage wallet on our iPhoneThe news is ripe with stories of novice users getting their crypto investments swindled away through inexperience or downright fraud A cold storage wallet won t prevent all forms of cryptocurrency theft but it can help with some of it Read more |
2022-01-29 22:14:20 |
海外TECH |
Engadget |
T-Mobile will fire unvaccinated corporate employees starting April 2nd |
https://www.engadget.com/t-mobile-vaccine-mandate-224438946.html?src=rss
|
T Mobile will fire unvaccinated corporate employees starting April ndT Mobile will fire corporate employees who aren t fully vaccinated against COVID by April nd reports Bloomberg The carrier confirmed the deadline after the outlet obtained an internal email in which Deeanne King T Mobile s chief human resources officer said the company will put employees who have gone out and only gotten one dose as of February st on unpaid leave “T Mobile s badge controlled offices continue to be accessible only to those who are vaccinated against COVID and we have shared with employees that we are requiring office workers to be fully vaccinated by April nd a spokesperson for T Mobile told Engadget “We understand that this is a deeply personal decision for some employees but we believe that taking this step will put us in the best position to protect our T Mobile community The carrier told The Verge it will have some exemptions in place “for certain roles locations and legally mandated accommodations and exemptions For instance per Bloomberg T Mobile won t put customer service employees on unpaid leave if they only have one dose of the vaccine by February st It also won t subject field technicians and store employees to the mandate Other large US companies have imposed similar deadlines on their employees Workers at Google for instance have until January th to declare their vaccine status The company will place those who refuse to get their shots or fail to secure a valid exemption on paid administrative leave for days It will then place those workers on unpaid leave for up to six months and eventually fire them if they don t comply with the policy |
2022-01-29 22:44:38 |
海外TECH |
Engadget |
Chrome for Android will ask if you really want to close every tab at once |
https://www.engadget.com/chrome-tab-close-confirmtion-221011037.html?src=rss
|
Chrome for Android will ask if you really want to close every tab at onceIf you re the sort to leave web browser tabs open on your phone you know who you are you ve probably had a sinking feeling when you close every tab and realize you just lost a must have site link You won t have quite so many panic inducing moments going forward at least Techdows and Android Police have noticed the Canary channel version of Chrome for Android adds a settings flag quot close all tabs modal dialog quot that asks for confirmation when you try to close every tab at once Chrome on the desktop will let you close all tabs in a window by getting rid of that window but it s overall harder to accidentally wipe out your tab collection On Android quot close all tabs quot is close enough to other tab options that you might tap it by mistake Canary builds are unstable so you may want to wait until a beta or the polished release It s also unclear how soon Google might build the flag into regular settings or enable it by default provided the feature survives through future releases It s easy to see the confirmation making the cut however ーthis is one of those seemingly small features that could save you an embarrassing search through your browsing history |
2022-01-29 22:10:11 |
海外TECH |
CodeProject Latest Articles |
OpenVPN for Windows XP |
https://www.codeproject.com/Articles/5323785/OpenVPN-for-Windows-XP
|
server |
2022-01-29 22:17:00 |
金融 |
ニュース - 保険市場TIMES |
セゾン自動車火災保険、ネット完結型がん保険「吸わんトク がん保険」販売開始 |
https://www.hokende.com/news/blog/entry/2022/01/30/080000
|
|
2022-01-30 08:00:00 |
ニュース |
BBC News - Home |
National Insurance: Boris Johnson and Rishi Sunak confirm rise from April |
https://www.bbc.co.uk/news/uk-60185741?at_medium=RSS&at_campaign=KARANGA
|
extra |
2022-01-29 22:27:01 |
ニュース |
BBC News - Home |
Ukraine: PM weighs up bigger troop offer amid Russia border crisis |
https://www.bbc.co.uk/news/uk-60185733?at_medium=RSS&at_campaign=KARANGA
|
moscow |
2022-01-29 22:36:29 |
ニュース |
BBC News - Home |
Tom Brady: NFL great expected to retire after winning seven Super Bowls |
https://www.bbc.co.uk/sport/american-football/60185291?at_medium=RSS&at_campaign=KARANGA
|
bowls |
2022-01-29 22:45:40 |
北海道 |
北海道新聞 |
山梨・河原部社に地域再生大賞 準大賞は神奈川、岐阜の2団体 |
https://www.hokkaido-np.co.jp/article/639428/
|
共同通信 |
2022-01-30 07:18:00 |
北海道 |
北海道新聞 |
ホワイトハウスに猫迎える バイデン大統領夫妻、09年以来 |
https://www.hokkaido-np.co.jp/article/639422/
|
米大統領 |
2022-01-30 07:08:00 |
ビジネス |
東洋経済オンライン |
大罪人扱いからなぜ出世?「西郷隆盛」意外な変身 島流しからの復帰に尽力した大久保利通の胸中 | 近代日本を創造したリアリスト 大久保利通の正体 | 東洋経済オンライン |
https://toyokeizai.net/articles/-/505995?utm_source=rss&utm_medium=http&utm_campaign=link_back
|
中心人物 |
2022-01-30 07:30:00 |
コメント
コメントを投稿