投稿時間:2021-04-21 21:50:08 RSSフィード2021-04-21 21:00 分まとめ(52件)

カテゴリー等 サイト名等 記事タイトル・トレンドワード等 リンクURL 頻出ワード・要約等/検索ボリューム 登録日
IT ITmedia 総合記事一覧 [ITmedia News] 「ノーコード」で企業や自治体のAI活用を支援 DNPとAI insideが新サービス https://www.itmedia.co.jp/news/articles/2104/21/news149.html aiinside 2021-04-21 20:05:00
IT MOONGIFT Numi - シンプルで汎用的な計算機 http://feedproxy.google.com/~r/moongift/~3/AXB9LsXEATA/ google 2021-04-21 21:00:00
python Pythonタグが付けられた新着投稿 - Qiita ライブラリ?パッケージ?モジュール?ここらへんのややこしいことを初心者なりにまとめてみた https://qiita.com/oki_kosuke/items/782443893201a99f365d ・標準ライブラリ…Pythonにあらかじめ標準で用意されているライブラリそのまま何もせずに使える「組み込み関数例print」と事前にimport文で読み込みが必要なもの例csv標準ライブラリは次のサイトで確認可能・外部ライブラリ…インストールで追加して、import文で呼び出して仕様例pckle外部ライブラリは以下のPyPIパイパイで検索可能「パッケージ」モジュールをいくつか集めてまとめたものがパッケージです。 2021-04-21 20:51:42
Program [全てのタグ]の新着質問一覧|teratail(テラテイル) VMWareのゲストから別のホストの共有フォルにアクセスできません。 https://teratail.com/questions/334475?rss=all VMWareのゲストから別のホストの共有フォルにアクセスできません。 2021-04-21 20:55:17
Program [全てのタグ]の新着質問一覧|teratail(テラテイル) GAS(JS)でセルに値が入っていたら1つ下の行に日付を入力するのができない。 https://teratail.com/questions/334474?rss=all GASJSでセルに値が入っていたらつ下の行に日付を入力するのができない。 2021-04-21 20:18:12
Program [全てのタグ]の新着質問一覧|teratail(テラテイル) [swift]カスタムUIViewのUILabelが更新できない https://teratail.com/questions/334473?rss=all カスタムUIViewのUILabelを、別のカスタムUIViewで作ったボタンをおすと表示を変更するようにしたいのですが、変数の受け渡しはできていますが、UILabelに表示されません。 2021-04-21 20:12:51
Program [全てのタグ]の新着質問一覧|teratail(テラテイル) XAMMP起動ができない https://teratail.com/questions/334472?rss=all XAMMP起動ができないXAMMP起動ができないXAMMPの起動ができません。 2021-04-21 20:11:06
Program [全てのタグ]の新着質問一覧|teratail(テラテイル) WebSocketを用いたサーバにアクセスし,一定時間放置すると接続が切断される問題を解決したい https://teratail.com/questions/334471?rss=all 2021-04-21 20:06:16
Ruby Rubyタグが付けられた新着投稿 - Qiita Big Sur 環境の rbenv install で謎いエラーが出た時にやったこと https://qiita.com/bump_of_kiharu/items/6c533b94d24766e23aa9 私の環境では無効化が出来ないため試してはいませんが、まずはそれで解消するか確認してみると良いかもしれません。 2021-04-21 20:46:50
AWS AWSタグが付けられた新着投稿 - Qiita S3のKey命名について https://qiita.com/kurimoto/items/c4d194458984956c4ad0 とはいえ、当然の如く「おいおい、それじゃ、特定のidに対する全ての属性を取得する」ってケースに対応できなくなるがな」って話になりますが、属性は基本的にそんな大量にないあらかじめ知っているはず、という前提にて、「全ての属性について知る」と「全てのidについて知る」のどちらが楽か、というと、やはり前者になるかと思うわけです。 2021-04-21 20:38:22
Ruby Railsタグが付けられた新着投稿 - Qiita controller内のdry(Don't repeat yourself)「メソッドによるコード省略」 https://qiita.com/takuo_maeda/items/8a2a4dbedd0a3183c239 controller内のdryDonxtrepeatyourself「メソッドによるコード省略」今日はDRYです。 2021-04-21 20:19:25
海外TECH DEV Community 15 Project Ideas for Web Developers 💡 https://dev.to/1nj3ct0r/15-project-ideas-for-web-developers-a96 Project Ideas for Web Developers Most people think they don t know enough to start building a project so they decide to spend months watching or reading tutorials However building projects improves one s programming skills because learning by building things is more efficient To help you overcome tutorial hell I ve curated programming project ideas for web developers ‍This article includes project ideas for frontend backend and full stack web developers Frontend Here are some project ideas if you want to improve your skills in front end technologies Color Guesser Game The Color Guesser Game is a simple game where players have to guess the background color of a box on the page ️The app starts by creating a series of boxes with different colors based on user input Once the game begins the color boxes re flipped over and their colors are hidden In each round the game shuffles the positions of the color boxes After shuffling one of the colors is displayed on the screen and the player has to guess in which of the color boxes the color is displayed by clicking on it The player wins the game if he can guess the colors correctly Below is a sample mockup of the app Working on this game will improve your knowledge of DOM Document Object Model and functions in JavaScript Music Playlist App If you ve ever thought of creating a combined playlist of songs that you and your friends think are cool then this might be an interesting project idea for you In this project you can build a simple interface that allows you and anyone else to add a song to your playlist Working on this project will deepen your understanding of DOM event handlers in JavaScript and in the framework you are learning React Number Guessing Game App The numbers guessing game app is another interesting idea for those who want to expand their front end development skills ‍The app will provide a number between a certain minimum number and a certain maximum number For example the random number between and is The user is then supposed to guess this number within a certain number of tries The player loses the game if he is not correct after the given number of tries Character Count AppIf you ve used Twitter before you will know that Twitter has a maximum number of characters for each tweet For this project idea you will build something similar For this app idea you will provide a text box where a user can type something ️As the user types the number of characters typed so far will be displayed on the screen ️But much more than that ️the background color of the app changes based on the number of characters below black red yellowAbove greenThis project idea deepens your knowledge of events in JavaScript ‍build your algorithms and helps expand your knowledge of CSS Image Slider App ️This project idea is about building an image slider app kind of like the image sliders on Instagram The app will have a list of images that change after a number of seconds with a sliding transition something similar to a carouselFor those interested in making this more complex you can implement directional arrows buttons to allow the user to move forward or backward instead of following the default transition This is a fascinating project idea because you will learn a lot about asynchronous operations in JavaScript like setInterval while also strengthening your CSS skills through the implemented transitions Back end For those who are more interested in project ideas that leverage back end technologies here are a couple Simple Web Crawler A web crawler is an application that indexed the content of page This project idea is about creating a simple web crawler service that takes a page URL and returns the HTML markup of that pageThis project is not language specific and can be implemented in any language from Node JS to Python Working on this project will help you deepen your knowledge of building APIs and services Anagram Generator API An anagram is a word or phrase formed by rearranging the letters of another word For example priest and stripes are anagrams because each word is formed by rearranging the letters of the otherThe Anagram Generator API takes a source word such as priest and returns all the anagrams for that wordWorking on this project deepens your knowledge of creating services and strengthens your knowledge of algorithms Covid stats API This project is about using existing data about the COVID and creating a Restful endpoint to serve that data Working on this project will reinforce your knowledge of what makes a good API while also teaching you how to define the structure of an API response Random Name Generator API A simple API to generate a random name each time the API is called This service can be useful for people who want to name their newborn children Browser Version API This project idea is about building a back end service that provides detailed browser information about the browser that initiated the request Full Stack Sometimes you don t want to limit your learning to just front end or just the back end If you want to expand your skills in both the front end and the back end below are a number of interesting project ideas Simple Chat Messaging App An interesting project you can work on to improve your front end and back end skills is a chat messaging app It doesn t have to have sophisticated features like image sharing but it should provide the ability for one user to message another user The ability to implement this offers many learning opportunities in a variety of technologies ‍including WebSockets Travel app Bucket List If you have a list of places you d like to travel to it might be a good idea to work on this project which is basically an app that allows you to add a new place of interest to your bucket list Motivational Quotes app We all need some motivation in our lives So building an app that send you and your friends random motivational quotes is golden You should definitely try to build this Twitter clone ️I bet you already know Twitter Building a Twitter clone is a great way to improve your front end and back end skillsYou don t have to include all the features of Twitter in this clone Just the basic functionalities of Twitter is a perfect way to improve your web development skills Project Management Dashboard The idea here is to build a tool that helps you manage projects I think this is an interesting idea because you can benefit from using it to manage your projects as wellWorking on this project will help you understand how to implement CRUD and also improve your CSS skills since you will have to create a dashboard ConclusionI hope you found an interesting project idea in this article Also Published on HashNode 2021-04-21 11:27:18
海外TECH DEV Community Basic concepts of Android-Part 1 https://dev.to/csj5483/basic-concepts-of-android-part-1-1eb7 Basic concepts of Android Part In this article we are going to discuss some concepts of Android that you might face in your interview or during the project Package Name The package name is used for unique identification for your application Android uses the package name to determine if the application has been installed or not Generally the package name of an app is in the formatdomian company appnameHere domain portion is the domain extension like  com   org or  eu The company portion is generally the name of the developer s company and appname describe the app itself Appname could be of a single word or multiple words separated by a dot For examplecom google android apps photosIn the above code snippet com is the domaingoogle is the developer s company nameandroid app photos is the app nameMinimum SDK It is an integer that defines the minimum API level version of the Android operating system required to run your application If the system s API Level is lower than the value specified in this attribute then the Android system will prevent the user from installing the application In the above image we had selected the Minimum SDK as and Android Studio shows us that it will run on of devices Activity Activity class is one of the most important parts of Android No matter how small an app is it will have at least an Activity An Android activity is one screen of the Android app s user interface An app can have multiple activities means multiple screens Android activity is the subclass of ContextThemeWrapper class  Every activity contains a layout which has a user interface to interact with the user In this layout we define what a user will see when s he open this activity and in Java Kotlin we define the functionality of the activity In the above image we had setContentView method and in this we had set R layout activity main as the layout for this activity Activity Life Cycle Unlike other programming languages where main method is the entry point of the program the android operating system initiates the code in an Activity instance by invoking specific callback methods that correspond to specific stages of its lifecycle In the below diagram we can see the life cycle of an Activity onCreate This is the first callback and called when the activity is first created onStart This is called when the activity becomes visible to the user onResume This is called when the user starts interacting with the application onPause The paused activity does not receive user input and cannot execute any code and called when the current activity is being paused and the previous activity is being resumed onStop This callback is called when the activity is no longer visible onDestroy This callback is called before the activity is destroyed by the system onRestart This callback is called when the activity restarts after stopping it Service A service is a component that runs in the background to perform long running operations such as playing music handle network transactions interacting with content providers without needing to interact with the user and it works even if the application is destroyed It doesn t have any UI user interface The android app Service is a subclass of ContextWrapper class A service can essentially take two states Started A service is started when a component like activity calls the startService method now it runs in the background indefinitely It is stopped by the stopService method The service can stop itself by calling the stopSelf method Bound A service is bound when another component e g client calls the bindService method A bound service offers a client server interface that allows components to interact with the service send requests get results and even do so across processes with interprocess communication IPC The client can unbind the service by calling the unbindService method While creating a service following are the most important callback methods that you should override onStartCommand The system calls this method when another component such as an activity requests that the service be started by invoking startService When this method executes the service is started and can run in the background indefinitely If you implement make sure to stop the service when its work is done by calling stopSelf or stopService methods onBind The system calls this method when another component wants to bind with the service by calling bindService If you implement this method you must provide an interface that clients use to communicate with the service by returning an IBinder object You must always implement this method but if you don t want to allow binding then you should return null onUnbind The system calls this method when all clients have disconnected from a particular interface published by the service onRebind The system calls this method when new clients have connected to the service after it had previously been notified that all had disconnected in its onUnbind Intent onCreate The system calls this method when the service is first created using onStartCommand or onBind This call is required to perform a one time set up onDestroy The system calls this method when the service is no longer used and is being destroyed Your service should implement this to clean up any resources such as threads registered listeners receivers etc We will continue this in the next article Happy Learning 2021-04-21 11:23:40
海外TECH DEV Community Generics In Java https://dev.to/yashsugandh/generics-in-java-3mb5 Generics In Java What is the meaning of Generics One of the definitions from Java docs Generics allow you to abstract over types The most common examples are container types such as those in the Collections hierarchy In English Abstract over type means to group together similar and generalize them For Example what do we do if we need to save firstName lastName and email of multiple people do we create n number of variables to store and retrieve them manually OR we create an Abstraction over it known as Class Great Now we know what abstract over type means but I still don t get how is it beneficial to us In short Generics provides us with compile time type checking and saves the need of manual type casting In depth Let s find outLet s take an example of how Collection s used to work before introduction of generics List numList new ArrayList numList add new Integer Integer x Integer numList iterator next Line and Line are simple we created an ArrayList and added an Integer On Line we have something that looks painful and will probably make you a little irritated Manual Type Conversion Just imagine doing that every single time In the above case even though the developer knows that the data is Integer at compile time we still need to manually convert it to Integer This was the best case scenario where even though it looks bad it still works what ifList list new ArrayList list add abc list add new Integer for Object obj list Integer numbers Integer obj Line we created an ArrayListLine we add a String to listLine we add an Integer to the listWait what We first added a String and now an Integer to the same listOkay what s nextwe iterate over List and try to manually type cast it to Integer So we added a String and an Integer and now we are expecting both of them to be type casted to an Integer You know what s coming ClassCastException We all know someone who is capable of doing this What were the problems we found till now We need an abstraction over these so that we don t need to manually convert it every timeWe need a compile time check to save us from ClassCastExceptionThis is what our savior Generics helps us with How Let s find outList lt String gt listOfString new ArrayList lt gt listOfString add Generics listOfString add are listOfString add Awesome for String str listOfString no type casting needed avoids ClassCastException Most of the lines in the above code looks just as before except the manual typecast is gone There is also something new on line List lt String gt listOfString new ArrayList lt gt lt gt is used in generics to help us define the type of data we are going to store in the list That s it that all we need to do for adding a compile time type safety What if someone tries to add an Integer to the above list If we try to add an Integer we get a compile time error So can we use Generics only with Collections No Collections is just one of the places where we can use Generics Let s look at other places where we can use Generics Let s start small Generic Interfaceinterface Print lt T gt void display T input We can create generic interfaces which can be implemented by Classes with their respective data typeclass PrintInteger implements Print lt Integer gt Override public void display Integer input System out println Printing an int input We have implemented Print interface and specified the data type as Integer Generics Class and Generic methodsLet s take a situation where we want to store firstName lastName and an id of an employee but the data type of id can be an int or long or String Code without Genericsclass EmployeeWithIntegerId private String firstName private String lastName private int id class EmployeeWithLongId private String firstName private String lastName private long id class EmployeeWithStringId private String firstName private String lastName private String id We can see that without using generics we have to create different classes to cater the situation Now let s use generics to get us out of this situationCode with Genericsclass Employee lt T gt private String firstName private String lastName private T id T in the above code represents the data type of our id which will be decided by us while creating the instance of the class Is T mandatory to use No T is just the most commonly used one but it is not mandatory We can use any alphabet we like in place of T For people who are interested in the best practices in naming conventionThe most commonly used type parameter names are E Element used extensively by the Java Collections Framework K KeyN NumberT TypeV ValueS U V etc nd rd th typescourtesy of java docsNow when we use generics we only needed to create a single class where the only thing that needs to be decided was the type of our variable id Okay but how will the getters setters and constructor work Constructor public Employee String firstName String lastName T id this firstName firstName this lastName lastName this id id The constructor will look the same as before It is one of the best and easy to understand example of generic methods Getters and Setters public T getId return id public void setId T id this id id Okay so we have defined the class so how can we use it Employee lt String gt employee new Employee lt gt yash sugandh In the above example we created an object of the class Employee and while creating it we used lt gt operator to define the data type of T as String There is a restriction on data type that we cannot use primitive data types so we cannot use int we have to Integer Long instead of long and so on Now we know about generics and how it helps us in Collections Interface Classes and methods But there are still few questions leftWhat are wildcards in generics What is the meaning of bounded and unbounded wildcard How does Java ensure backward compatibility from code with generics to code without generics Let s cover all these topics in the next post Please let me know if there are any questions in the comments below See you in the funny papers 2021-04-21 11:20:13
海外TECH DEV Community Edit PDF files with Python https://dev.to/stokry/edit-pdf-files-with-python-1e1j Edit PDF files with PythonI like to test Python in different situations it just makes my life easier in many situations Python allows me to automate things that are normally repeated and boring so I can focus on important aspects of my job Today I will show you how can you edit PDF files with python In this example I will be using ReportLab The ReportLab Toolkit An Open Source Python library for generating PDFs and graphics This is our original pdf Let s jump to the code First we need to import dependenciesfrom PyPDF import PdfFileWriter PdfFileReaderimport iofrom reportlab pdfgen import canvasfrom reportlab lib pagesizes import letterFirst we will create a new PDF with Reportlab in this part we will also define our font color and the font size can canvas Canvas packet pagesize letter can setFillColorRGB can setFont Times Roman can drawString Hello from Python can save Then we move to the beginning of the StringIO buffer packet seek new pdf PdfFileReader packet Then we need to read our existing PDF existing pdf PdfFileReader open original pdf rb output PdfFileWriter The we add the watermark which is the new pdf on the existing page page existing pdf getPage page mergePage new pdf getPage output addPage page And finally write output to a real file outputStream open destination pdf wb output write outputStream outputStream close This is our result Thank you all 2021-04-21 11:13:27
海外TECH DEV Community Automating your ELT Workflows with Managed Workflows for Apache Airflow - Part Two https://dev.to/aws/automating-your-elt-workflows-with-managed-workflows-for-apache-airflow-1h1m Automating your ELT Workflows with Managed Workflows for Apache Airflow Part Two Part Two Automating Amazon EMRIn Part One we automated an example ELT workflow on Amazon Athena using Apache Airflow In this post Part Two we will do the same thing but automate the same example ELT workflow that has been done on Amazon EMR Make sure you recap the setup from Part One All the code so you can reproduce this yourself can be found in the GitHub repository here Automating Amazon EMRTo recap We are using the Movielens dataset loaded it into our data lake on Amazon S and we have been asked to a create a new table with a subset of the information we care about in this instance a particular genre of films and b create a new file with the same subset of information available in the data lake As part of the set of manual steps we are trying to automate we are using Amazon EMR again as for the previous post if you want to see those manual steps refer to the documentation in the GitHub repository together with some Apache Hive and Presto SQL scripts to create tables and export files As we are automating this a lot of the stuff we would not need to do because we absorb that as part of the manual work for example I already have a database called XX so I do not need to re create that we need to build into the workflow So at a high level the steps look like Create our Apache Hive and Presto SQL scripts and upload those to a location on Amazon SCheck to see if a database exists and create it if it does not existCreate tables to import the movie and ratings data using the scripts we uploaded Create a new table that just contains the information we are looking for in this example films of a particular genre Export the new table as a csv file again using the scripts we already uploaded Move the export csv file to a new location in the data lakeClean up and shut down any resources so we can minimise the cost of running this operationNot surprisingly this workflow begins in a very similar way to the previous one However this time we are using Amazon EMR and if we look at the available Apache Airflow operators we can see that there is an Amazon EMR operator which will make our life easy We can take a look at the documentation for this operator at the Apache Airflow website Amazon EMR OperatorsAs part of our workflow we want to create an Amazon EMR cluster add some steps to run some of the Presto and Apache Hive queries and then terminate the cluster so we need to add those operators EmrCreateJobFlowOperator EmrAddStepsOperator EmrTerminateJobFlowOperator and EmrStepSensor in our DAGfrom airflow import DAG settings secretsfrom airflow operators python operator import PythonOperator BranchPythonOperatorfrom airflow operators dummy operator import DummyOperatorfrom airflow contrib secrets aws secrets manager import SecretsManagerBackendfrom airflow contrib operators emr add steps operator import EmrAddStepsOperatorfrom airflow contrib operators emr create job flow operator import EmrCreateJobFlowOperatorfrom airflow contrib operators emr terminate job flow operator import EmrTerminateJobFlowOperatorfrom airflow contrib sensors emr step sensor import EmrStepSensorfrom airflow contrib hooks aws hook import AwsHookfrom airflow models import Variablefrom airflow utils trigger rule import TriggerRulefrom airflow utils dates import days agoimport osimport sysimport botoimport timeI next part of our workflow is the same except this time we have added some more variables In the previous workflow I had hardcoded the genre so this time I wanted to add it as a variable meaning we could create a single workflow parameterise it and then run it as many times as we needed just having to change that variable genre and genre t s dlake Variable get s dlake default var undefined emr db Variable get emr db default var undefined emr output Variable get emr output default var undefined genre Variable get emr genre default var undefined genre t Variable get emr genre table default var undefined If we look at the steps we are looking to automate the first one is to upload our Apache Hive and Presto scripts to a location on Amazon S where we can run them from our Amazon EMR steps We could just create these outside of Apache Airflow and upload them and this is an option In this walkthrough however I am going to create those scripts using the same variables we have defined to make sure that those scripts change dynamically as our needs change To do this I am going to define a new task called create emr scripts using the PythonOperator create emr scripts PythonOperator task id create emr scripts provide context True python callable py create emr scripts dag dag I need to create a supporting function called py create emr scripts so lets take a look at this code This code writes five files to the Amazon S location s dlake scripts each file corresponding to the SQL we created as part of the manual steps def py create emr scripts kwargs s boto resource s print Creating scripts which will be executed by Amazon EMR will overwrite existing scripts create create film db hql object s Object s dlake scripts create film db hql object put Body HIVE CREATE DB create create film db tables hql object s Object s dlake scripts create film db tables hql object put Body HIVE CREATE DB TABLES create create genre film table hql object s Object s dlake scripts create genre film table hql object put Body HIVE CREATE GENRE TABLE create create genre sql object s Object s dlake scripts create genre sql object put Body PRESTO SQL GEN GENRE CSV create run presto query sh object s Object s dlake scripts run presto query sh object put Body PRESTO SCRIPT RUN EXPFILE These variables HIVE CREATE DB HIVE CREATE DB TABLES etc are just defined as follows in the workflow HIVE CREATE DB create database database format database emr db HIVE CREATE DB TABLES CREATE EXTERNAL TABLE database movies movieId INT title STRING genres STRING ROW FORMAT DELIMITED FIELDS TERMINATED BY LOCATION s datalake movielens movies CREATE EXTERNAL TABLE database ratings userId INT movieId INT rating INT timestampId TIMESTAMP ROW FORMAT DELIMITED FIELDS TERMINATED BY LOCATION s datalake movielens ratings alt format database emr db datalake s dlake HIVE CREATE GENRE TABLE CREATE EXTERNAL TABLE database genre t title STRING year INT rating INT ROW FORMAT DELIMITED FIELDS TERMINATED BY t LOCATION s datalake movielens genre format database emr db genre genre datalake s dlake genre t genre t PRESTO SCRIPT RUN EXPFILE bin bashaws s cp s datalake scripts create genre sql presto cli catalog hive f create genre sql output format TSV gt genre t films tsvaws s cp genre t films tsv s datalake movielens genre format database emr db genre genre datalake s dlake genre t genre t PRESTO SQL GEN GENRE CSV WITH genre data AS SELECT REPLACE m title as title r ratingFROM database movies mINNER JOIN SELECT rating movieId FROM database ratings r on m movieId r movieId WHERE REGEXP LIKE genres genre SELECT substr title LENGTH title as title replace substr trim title as year AVG rating as avrating from genre data GROUP BY title ORDER BY year DESC title ASC format database emr db genre genre As you can see we are using standard python to substitute values in the variables so we have dynamically generated scripts which will launch when our Amazon EMR steps start If we now add at the bottom of the workflow the dependency relationship details we only have one task defined so far the rest is just supporting functions and code we end up with from airflow import DAG settings secretsfrom airflow operators python operator import PythonOperator BranchPythonOperatorfrom airflow operators dummy operator import DummyOperatorfrom airflow contrib secrets aws secrets manager import SecretsManagerBackendfrom airflow contrib operators emr add steps operator import EmrAddStepsOperatorfrom airflow contrib operators emr create job flow operator import EmrCreateJobFlowOperatorfrom airflow contrib operators emr terminate job flow operator import EmrTerminateJobFlowOperatorfrom airflow contrib sensors emr step sensor import EmrStepSensorfrom airflow contrib hooks aws hook import AwsHookfrom airflow models import Variablefrom airflow utils trigger rule import TriggerRulefrom airflow utils dates import days agoimport osimport sysimport botoimport timedefault args owner airflow depends on past False email airflow example com email on failure False email on retry False DAG ID os path basename file replace py dag DAG dag id DAG ID default args default args description DevDay EMR DAG schedule interval None start date days ago tags devday demo s dlake Variable get s dlake default var undefined emr db Variable get emr db default var undefined emr output Variable get emr output default var undefined genre Variable get emr genre default var undefined genre t Variable get emr genre table default var undefined HIVE CREATE DB create database database format database emr db HIVE CREATE DB TABLES CREATE EXTERNAL TABLE database movies movieId INT title STRING genres STRING ROW FORMAT DELIMITED FIELDS TERMINATED BY LOCATION s datalake movielens movies CREATE EXTERNAL TABLE database ratings userId INT movieId INT rating INT timestampId TIMESTAMP ROW FORMAT DELIMITED FIELDS TERMINATED BY LOCATION s datalake movielens ratings alt format database emr db datalake s dlake HIVE CREATE GENRE TABLE CREATE EXTERNAL TABLE database genre t title STRING year INT rating INT ROW FORMAT DELIMITED FIELDS TERMINATED BY t LOCATION s datalake movielens genre format database emr db genre genre datalake s dlake genre t genre t PRESTO SCRIPT RUN EXPFILE bin bashaws s cp s datalake scripts create genre sql presto cli catalog hive f create genre sql output format TSV gt genre t films tsvaws s cp genre t films tsv s datalake movielens genre format database emr db genre genre datalake s dlake genre t genre t PRESTO SQL GEN GENRE CSV WITH genre data AS SELECT REPLACE m title as title r ratingFROM database movies mINNER JOIN SELECT rating movieId FROM database ratings r on m movieId r movieId WHERE REGEXP LIKE genres genre SELECT substr title LENGTH title as title replace substr trim title as year AVG rating as avrating from genre data GROUP BY title ORDER BY year DESC title ASC format database emr db genre genre def py create emr scripts kwargs s boto resource s print Creating scripts which will be executed by Amazon EMR will overwrite existing scripts create create film db hql object s Object s dlake scripts create film db hql object put Body HIVE CREATE DB create create film db tables hql object s Object s dlake scripts create film db tables hql object put Body HIVE CREATE DB TABLES create create genre film table hql object s Object s dlake scripts create genre film table hql object put Body HIVE CREATE GENRE TABLE create create genre sql object s Object s dlake scripts create genre sql object put Body PRESTO SQL GEN GENRE CSV create run presto query sh object s Object s dlake scripts run presto query sh object put Body PRESTO SCRIPT RUN EXPFILE create emr scripts PythonOperator task id create emr scripts provide context True python callable py create emr scripts dag dag create emr scriptsThe order these are in is important as you might see errors if something you use call has not been defined in the workflow code When we commit this code a few seconds later we will see just a single task in our workflow called create emr scripts which we can enable turn on and then trigger If we now go to the scripts folder of our Amazon S data lake we should see our new scripts ready to go Every time we re run this task the scripts will be overwritten to make sure they contain the right values Now that we have our scripts then next thing we need to do is to run those scripts via Amazon EMR We could use an existing Amazon EMR cluster if we wanted and then submit the steps to that cluster but in this walk through I will create an auto terminating Amazon EMR cluster add the steps and then terminate that cluster If you wanted to use an existing Amazon EMR cluster you would need to change the code to take an input value of the Amazon EMR cluster id There are lots of ways you could do this via a configuration value when you trigger the DAG via a variable you store in something like AWS Secrets manager or perhaps by using some code within a PythonOperator to find that cluster id To kick off our cluster we use the EmrCreateJobFlowOperator operator which takes just one value job flow overrides which is a variable you need to define that contains the configuration details of your Amazon EMR cluster the applications you want to use the size and number of clusters the configuration details etc create emr database cluster EmrCreateJobFlowOperator task id create emr database cluster job flow overrides JOB FLOW OVERRIDES dag dag As we can see we have defined a variable called JOB FLOW OVERRIDES which contains our Amazon EMR cluster details You can also see that we are again substituting variables so that the Amazon EMR cluster uses the correct configuration details based on our use case This allows us to use a standard template across many different applications JOB FLOW OVERRIDES Name devday demo cluster airflow ReleaseLabel emr LogUri sn var value s dlake logs Applications Name Spark Name Pig Name Hive Name Presto Instances InstanceFleets Name MASTER InstanceFleetType MASTER TargetSpotCapacity InstanceTypeConfigs InstanceType m xlarge Name CORE InstanceFleetType CORE TargetSpotCapacity InstanceTypeConfigs InstanceType r xlarge KeepJobFlowAliveWhenNoSteps True TerminationProtected False EcKeyName ec rocket Configurations Classification hive site Properties hive metastore client factory class com amazonaws glue catalog metastore AWSGlueDataCatalogHiveClientFactory Classification presto connector hive Properties hive metastore glue datacatalog enabled true Classification spark hive site Properties hive metastore client factory class com amazonaws glue catalog metastore AWSGlueDataCatalogHiveClientFactory VisibleToAllUsers True JobFlowRole EMR EC DefaultRole ServiceRole EMR DefaultRole EbsRootVolumeSize StepConcurrencyLevel Tags Key Environment Value Development Key Name Value Airflow EMR Demo Project Key Owner Value Data Analytics Team In order to achieve my objectives I have created an Amazon EMR cluster that has the Apache Hive and Presto applications and for simplicity I am using the AWS Glue data catalog as the metastore you could easily change this to what your environment uses something like a MySQL instance perhaps One thing we do configure in our configuration is the value KeepJobFlowAliveWhenNoSteps True as we want the Amazon EMR cluster running until it has completed all our steps before we terminate it So this step will now launch our Amazon EMR cluster Let us add it to the workflow dependency graph create emr scripts gt gt create emr database cluster If we commit the code and then launch this workflow we should now start to see our Amazon EMR cluster start up From the UI take a look at the logs for the create emr database cluster you will see something similar to this in the log file standard task runner py INFO Job Subtask create emr database cluster logging mixin py INFO Running s on host s lt TaskInstance devday emr create create emr database cluster T running gt ip eu west compute internal emr create job flow operator py INFO Creating JobFlow using aws conn id s default emr conn id emr default emr create job flow operator py INFO JobFlow with id j JRIIWTADPG createdThe Amazon EMR cluster id is displayed here it is j JRIIWTADPG and this is important as we will see in a minute Before proceeding make sure you terminate this cluster manually via the console We do not want to leave our Amazon EMR cluster running so we create a new task using a different operator to do this the EmrTerminateJobFlowOperator terminate emr cluster EmrTerminateJobFlowOperator task id terminate emr cluster job flow id task instance xcom pull create emr database cluster key return value aws conn id aws default There are a couple of new things here First we have the aws conn id parameter which is required by this operator and we set to this value when using Managed Workflows for Apache Airflow If you are hosting using your own version of Apache Airflow this will correspond to the name of the Connection you have defined in the Apache Airflow UI The next thing to notice is the job flow id which is using another feature of Apache Airflow xcom Xcoms is the feature in Apache Airflow that lets tasks exchange information and in this instance we are pulling the details of the Amazon EMR cluster ID as we saw in the previous task so that we can terminate the right cluster We can now add this task to the workflow create emr scripts gt gt create emr database cluster gt gt terminate emr clusterCommit and the launch the DAG when it appears in the UI At this stage it is not doing anything interesting other than launching and the terminating the Amazon EMR cluster Next we need to add the steps we want to execute on that running cluster If we look at the task we are trying to automate the first one is creating the database We have our script a simple Apache Hive script uploaded in the scripts folder on Amazon S But as before in the Amazon Athena walkthrough we need to add some logic here to skip this creation of the database already exists Our workflow will be check to see if the database exists and if not create the database and import the Movielens tables we need skipping this step if the database already exists As we have already covered the branching logic in the previous post I will just cover the Amazon EMR step this time To add a step in this case to run the hive script we use the EmrAddStepsOperator which will kick off a new step to be executed by the Amazon EMR cluster we want to run this on When we use the EmrAddStepsOperator operator we use a corresponding operator called EmrStepSensor which tracks the status of the task whether it was successful or failed Here is the code for these two new tasks create emr database step EmrAddStepsOperator task id create emr database step job flow id task instance xcom pull task ids create emr database cluster key return value aws conn id aws default on failure callback cleanup emr cluster if steps fail steps CREATE DATABASE create emr database sensor EmrStepSensor task id create emr database sensor job flow id task instance xcom pull create emr database cluster key return value step id task instance xcom pull task ids create emr database step key return value on failure callback cleanup emr cluster if steps fail aws conn id aws default In the create emr database step task you can see we are using Xcoms again to get the name of the Amazon EMR cluster id when we use the EmrAddStepsOperator In the create emr database sensor task you can see we are using XComs to additionally get the name of the task we need to keep a track of in this case the create emr database step task This will ensure that this task is monitoring the right step The next thing to notice is the steps parameter in the create emr database step task This is where we define the actual step to submit to Amazon EMR and we define this in a variable in this case called CREATE DATABASE Here is the code CREATE DATABASE Name Create Genre Database ActionOnFailure CONTINUE HadoopJarStep Jar command runner jar Args hive script run hive script args f s var value s dlake scripts create film db hql This is the same process we would follow if we were manually submitting the task via the Amazon EMR console You will notice that we are using variables again in order to ensure that we do not hardcode anything We are not quite ready to submit this yet When submitting steps to be executed by the Amazon EMR cluster there is the possibility that sometimes these will fail If that happens the workflow will stall stop and this will leave our Amazon EMR cluster running which we have to pay for We need a way of short circuiting this and for this we use the on failure callback feature of Apache Airflow that allows us to call a function we define in the case where this task has failed In the example above we have defined a cleanup function called cleanup emr cluster if steps fail which looks like def cleanup emr cluster if steps fail context print This is invoked when a running EMR cluster has a step running that fails print If we do not do this the DAG will stop but the cluster will still keep running early terminate emr cluster EmrTerminateJobFlowOperator task id terminate emr cluster job flow id context ti xcom pull create emr database cluster aws conn id aws default return early terminate emr cluster execute context context As you can see we are using Xcoms to grab the Amazon EMR cluster ID and then terminate this Now if our scripts go rogue we will still terminate the cluster If we now take these new tasks together with the branching logic we now have this additional code CREATE DATABASE Name Create Genre Database ActionOnFailure CONTINUE HadoopJarStep Jar command runner jar Args hive script run hive script args f s var value s dlake scripts create film db hql def check emr database kwargs ath boto client athena try response ath get database CatalogName AwsDataCatalog DatabaseName emr db print Database already exists skip creation return skip emr database creation except print No EMR Database Found return create emr database step def cleanup emr cluster if steps fail context print This is invoked when a running EMR cluster has a step running that fails print If we do not do this the DAG will stop but the cluster will still keep running early terminate emr cluster EmrTerminateJobFlowOperator task id terminate emr cluster job flow id context ti xcom pull create emr database cluster aws conn id aws default return early terminate emr cluster execute context context check emr database BranchPythonOperator task id check emr database provide context True python callable check emr database retries dag dag skip emr database creation DummyOperator task id skip emr database creation trigger rule TriggerRule NONE FAILED dag dag emr database checks done DummyOperator task id emr database checks done trigger rule TriggerRule NONE FAILED dag dag create emr database step EmrAddStepsOperator task id create emr database step job flow id task instance xcom pull task ids create emr database cluster key return value aws conn id aws default on failure callback cleanup emr cluster if steps fail steps CREATE DATABASE create emr database sensor EmrStepSensor task id create emr database sensor job flow id task instance xcom pull create emr database cluster key return value step id task instance xcom pull task ids create emr database step key return value on failure callback cleanup emr cluster if steps fail aws conn id aws default create emr scripts gt gt create emr database cluster gt gt check emr databasecheck emr database gt gt skip emr database creation gt gt emr database checks done check emr database gt gt create emr database step gt gt create emr database sensor gt gt emr database checks done gt gt emr database checks done gt gt terminate emr clusterIf we check this code in and then trigger the DAG we should now see now see the the Amazon EMR cluster start run the step to create the database and then terminate the cluster The rest of the workflow repeats the above process adding addition steps You can check the full workflow out here in the GitHub repositoryRunning the workflowAfter committing the code you should have the workflows available in the Apache Airflow UI and can then trigger them via the UI As each step starts runs and then completes you should be able to see the information and logs produced including any of the Print statements included in the DAG Once the workflow has completed you can now take a look at the outcome If we use Hue we can connect to the new database and view the new information using standard SQL in Presto If we look at the Amazon S data lake we can see we have our new files What Next Thanks for sticking with me to the end and I hope you have found it useful to understand how you might use open source tools like Apache Airflow to automate your ELT or for that matter ETL tasks Watch out for a future DevDay Data event where I walk you through the end to end building of this but I hope that you will have enough information here to try this out for yourself It is not hard to see how you might build upon this example Some examples might be using a function you deploy on AWS Lambda to trigger the automated workflow for example a new data update you receive can lead to automatically these tables export files being refreshedusing other Airflow operators such as the ones to Amazon SageMaker that allow you to trigger automatic machine learning model training tuningusing additional workflows as part of the ingestion workflows to get the movielens database into the data lake which then triggers the ELT workflowsAs always feel free to get in touch and provide comments questions 2021-04-21 11:07:42
Apple AppleInsider - Frontpage News Logitech updates Combo Touch keyboard for new iPad Pro models https://appleinsider.com/articles/21/04/21/logitech-updates-combo-touch-keyboard-for-new-ipad-pro-models?utm_medium=rss Logitech updates Combo Touch keyboard for new iPad Pro modelsLogitech has released a new version of its Combo Touch iPad Pro keyboard case that has been revamped to fit the slighter thicker dimensions of the new models The updated Logitech Combo Touch for iPad ProFollowing its well reviewed Logitech Combo Touch for the iPad Pro the company has now updated this keyboard case for Apple s latest models It s a third party equivalent to Apple s Magic Keyboard for iPad but is significantly cheaper starting at instead of Read more 2021-04-21 11:25:39
海外TECH Engadget Samsung opens Galaxy Upcycling beta to turn old phones into IoT gadgets https://www.engadget.com/samsung-opens-galaxy-upcycling-beta-phones-iot-114555924.html korea 2021-04-21 11:45:55
海外TECH Engadget The Morning After: Meet the new iMacs, iPad Pros and Apple TV 4K https://www.engadget.com/spring-loaded-apple-2021-tma-113948456.html apple 2021-04-21 11:39:48
海外TECH Engadget FIA launches 'groundbreaking' electric GT category https://www.engadget.com/fia-launches-groundbreaking-electric-gt-motorsports-category-110534020.html FIA launches x groundbreaking x electric GT categoryThe FIA has unveiled a new electric GT motorsports category with the aim of pushing manufacturers to develop battery charging and other tech for high performance road cars 2021-04-21 11:05:34
Cisco Cisco Blog The Power of Inclusive Innovation https://blogs.cisco.com/diversity/the-power-of-inclusive-innovation The Power of Inclusive InnovationNow more than ever we need Inclusive Innovation to help solve the most pressing problems we as a society face today Learn how we are doing just that by role modeling empowering and enabling our teams 2021-04-21 11:47:36
医療系 医療介護 CBnews 調剤業務の外部委託が俎上に、規制改革推進WG-厚労省「安全性確保などの検討必要」 https://www.cbnews.jp/news/entry/20210421200218 厚生労働省 2021-04-21 20:30:00
医療系 医療介護 CBnews 1日も早く緊急事態宣言の発令を、日医会長-宣言解除はステージ2以下で検討すべき https://www.cbnews.jp/news/entry/20210421191857 中川俊男 2021-04-21 20:25:00
金融 RSS FILE - 日本証券業協会 自主規制規則の定期的な見直し https://www.jsda.or.jp/about/jishukisei/minaoshi/minaoshi.html 自主規制 2021-04-21 11:12:00
海外ニュース Japan Times latest articles China, Myanmar and others criticized in report on rising religious persecution https://www.japantimes.co.jp/news/2021/04/21/asia-pacific/religious-persecution-china-myanmar/ China Myanmar and others criticized in report on rising religious persecution The apparatus of repression constructed by the Chinese Communist Party CCP in recent years is fine tuned pervasive and technologically sophisticated the report said 2021-04-21 21:57:39
海外ニュース Japan Times latest articles Japan and U.S. plan to keep watch on Rakuten after Tencent investment https://www.japantimes.co.jp/news/2021/04/21/business/corporate-business/rakuten-tencent-investment/ Japan and U S plan to keep watch on Rakuten after Tencent investmentRakuten said that the Tencent group company s acquisition of the stake is purely for investment purposes and rejected the possibility that shareholders would gain access 2021-04-21 21:23:26
海外ニュース Japan Times latest articles The ‘metaverse’ bet: Crypto-rich investors snap up virtual real estate https://www.japantimes.co.jp/news/2021/04/21/business/metaverse-virtual-investors/ The metaverse bet Crypto rich investors snap up virtual real estateA new economy of blockchain based virtual worlds is arising where land buildings avatars and even names can be bought and sold as nonfungible tokens 2021-04-21 20:28:23
海外ニュース Japan Times latest articles Jury convicts ex-cop Derek Chauvin of murdering George Floyd in landmark U.S. case https://www.japantimes.co.jp/news/2021/04/21/world/crime-legal-world/george-floyd-derek-chauvin-guilty/ Jury convicts ex cop Derek Chauvin of murdering George Floyd in landmark U S caseThe member jury found Chauvin guilty of all charges including second degree murder third degree murder and manslaughter 2021-04-21 20:25:42
海外ニュース Japan Times latest articles Biden will pledge to cut greenhouse gas emissions nearly in half https://www.japantimes.co.jp/news/2021/04/21/world/biden-climate-emissions-pledge/ Biden will pledge to cut greenhouse gas emissions nearly in halfThe president will commit the United States to deep cuts in emissions at an Earth Day summit meeting that starts on Thursday according to people 2021-04-21 20:20:14
海外ニュース Japan Times latest articles Decision on Olympic spectator cap could be delayed until June https://www.japantimes.co.jp/sports/2021/04/21/olympics/summer-olympics/tokyo-olympics-attendance-delay-june/ Decision on Olympic spectator cap could be delayed until JuneThe organizing committee of this summer s Tokyo Olympics is considering delaying until June its decision on how many spectators will be allowed to enter games 2021-04-21 21:45:21
海外ニュース Japan Times latest articles Tokyo 2020 athletes to undergo daily saliva testing https://www.japantimes.co.jp/sports/2021/04/21/olympics/summer-olympics/tokyo-olympics-athletes-daily-testing/ Tokyo athletes to undergo daily saliva testingOlympic organizers intend to test athletes more frequently than initially planned as increasingly infectious COVID strains continue to spread throughout Japan 2021-04-21 21:16:49
海外ニュース Japan Times latest articles Nadeshiko captain Saki Kumagai to leave Lyon at end of season https://www.japantimes.co.jp/sports/2021/04/21/soccer/saki-kumagai-leaving-lyon/ Nadeshiko captain Saki Kumagai to leave Lyon at end of seasonJapan women s national soccer team captain Saki Kumagai announced on Instagram on Tuesday she will be leaving Olympique Lyonnais after eight years with the French 2021-04-21 20:50:17
海外ニュース Japan Times latest articles Athletics test event on May 9 to be held without spectators https://www.japantimes.co.jp/sports/2021/04/21/more-sports/track-field/athletics-test-event-no-fans/ Athletics test event on May to be held without spectatorsTokyo Games organizers are set to hold an athletics test event on May without spectators due to the rising number of coronavirus infections in 2021-04-21 20:38:30
海外ニュース Japan Times latest articles Super League breakaway in tatters after English clubs quit https://www.japantimes.co.jp/sports/2021/04/21/soccer/european-super-league-collapse/ Super League breakaway in tatters after English clubs quitFollowing a global wave of protests and criticism the new competition s six Premier League sides withdrew in a stunning reversal just hours after they 2021-04-21 20:18:40
ニュース BBC News - Home Covid: Government scientist warns of summer surge in cases https://www.bbc.co.uk/news/uk-56830398 advisers 2021-04-21 11:55:39
ニュース BBC News - Home Queen's birthday: Public's messages about Philip 'a comfort', she says https://www.bbc.co.uk/news/uk-56811715 philip 2021-04-21 11:51:37
ニュース BBC News - Home Air pollution: Coroner calls for law change after Ella Adoo-Kissi-Debrah's death https://www.bbc.co.uk/news/uk-england-london-56801794 pollution 2021-04-21 11:46:37
ニュース BBC News - Home Fishmongers' Hall: Terror attacker shouted 'I'm going to blow you all up' https://www.bbc.co.uk/news/uk-england-london-56817533 suicide 2021-04-21 11:43:04
ニュース BBC News - Home Hillsborough trial: PC's 'headless chickens comment removed' https://www.bbc.co.uk/news/uk-england-merseyside-56829680 failings 2021-04-21 11:43:19
ニュース BBC News - Home Covid: Restored 1930s motorbike sat in boxes for decades https://www.bbc.co.uk/news/uk-england-derbyshire-56803697 derby 2021-04-21 11:34:07
ニュース BBC News - Home Super League: Why have the plans collapsed? https://www.bbc.co.uk/news/business-56768728 backers 2021-04-21 11:11:05
GCP Google Cloud Platform Japan 公式ブログ 京セラドキュメントソリューションズ株式会社:ソフトウェア開発基盤を Google Cloud へ移行。維持コストの 3 割削減や BCP 対策強化を実現。 https://cloud.google.com/blog/ja/topics/customers/kyocera-software-dev-platform-migration-to-google-cloud/ 今回、国内DC事業者とKCCSを検討しましたが、KCCSがGoogleCloudパートナーであったこと、グループ会社のシナジー効果が期待できることなどを考えて、KCCSに依頼しました。 2021-04-21 13:00:00
GCP Google Cloud Platform Japan 公式ブログ Google Cloud と AVEVA の OSIsoft が産業部門に新しい特色の PI を提供 https://cloud.google.com/blog/ja/topics/manufacturing/industrial-companies-can-take-their-data-to-cloud-with-pi-system/ PICoreをGoogleCloud上で実行することにより、産業部門はビジネスインサイトを簡単かつ効率的に入手して、安全で管理された環境で収集データからより多くの価値を生み出すことができます。 2021-04-21 12:00:00
北海道 北海道新聞 変異株、1週間で全国505人確認 前週より倍増 道内最多83人 https://www.hokkaido-np.co.jp/article/535830/ 厚生労働省 2021-04-21 20:09:00
北海道 北海道新聞 インドネシア潜水艦が不明 53人乗り、捜索を開始 https://www.hokkaido-np.co.jp/article/535831/ 開始 2021-04-21 20:07:00
北海道 北海道新聞 女性天皇の容認論が多数 皇位継承策の専門家聴取 https://www.hokkaido-np.co.jp/article/535829/ 女性天皇 2021-04-21 20:05:00
北海道 北海道新聞 苫小牧漁協ホッキ漁、資源保護の国際認証取得 単独承認は道内初 https://www.hokkaido-np.co.jp/article/535827/ 苫小牧市 2021-04-21 20:03:00
ビジネス 東洋経済オンライン 中国の「影の銀行」残高拡大から反転した背景 金融当局はリスクの抑制を再び焦点にする | 「財新」中国Biz&Tech | 東洋経済オンライン https://toyokeizai.net/articles/-/422749?utm_source=rss&utm_medium=http&utm_campaign=link_back biztech 2021-04-21 20:30:00
ニュース Newsweek 中国の戦闘機が、台湾上空に侵入するペースが過去最高に──危険な「火遊び」の代償 https://www.newsweekjapan.jp/stories/world/2021/04/post-96121.php 中国は昨年、過去最多の回も台湾のADIZに侵入しているが、台湾の独立を認めていない以上、「自国の上空を飛んでいるだけ」とシラを切り、威嚇行為を続けている。 2021-04-21 20:30:00
IT 週刊アスキー GWキャンペーンの情報も!『三國志 覇道』が4月のアップデートを実施!! https://weekly.ascii.jp/elem/000/004/052/4052467/ 戦略シミュレーションゲーム 2021-04-21 20:05:00
GCP Cloud Blog JA 京セラドキュメントソリューションズ株式会社:ソフトウェア開発基盤を Google Cloud へ移行。維持コストの 3 割削減や BCP 対策強化を実現。 https://cloud.google.com/blog/ja/topics/customers/kyocera-software-dev-platform-migration-to-google-cloud/ 今回、国内DC事業者とKCCSを検討しましたが、KCCSがGoogleCloudパートナーであったこと、グループ会社のシナジー効果が期待できることなどを考えて、KCCSに依頼しました。 2021-04-21 13:00:00
GCP Cloud Blog JA Google Cloud と AVEVA の OSIsoft が産業部門に新しい特色の PI を提供 https://cloud.google.com/blog/ja/topics/manufacturing/industrial-companies-can-take-their-data-to-cloud-with-pi-system/ PICoreをGoogleCloud上で実行することにより、産業部門はビジネスインサイトを簡単かつ効率的に入手して、安全で管理された環境で収集データからより多くの価値を生み出すことができます。 2021-04-21 12:00:00

コメント

このブログの人気の投稿

投稿時間:2021-06-17 22:08:45 RSSフィード2021-06-17 22:00 分まとめ(2089件)

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

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