投稿時間:2020-05-14 07:31:51 RSSフィード2020-05-14 07:00 分まとめ(35件)

カテゴリー等 サイト名等 記事タイトル・トレンドワード等 リンクURL 頻出ワード・要約等/検索ボリューム 登録日
TECH Engadget Japanese eSIMが使える格安スマホ「Bphone B86」が登場、複数SIMの使い分けが手軽にできる https://japanese.engadget.com/esim-213021870.html bphoneb 2020-05-13 21:30:21
Google カグア!Google Analytics 活用塾:事例や使い方 Googleマップで妄想旅行するとき知っておきたい3つの事情 https://www.kagua.biz/googlemaps-tool/googlemaps-howto/mousou-knowledge-3tu.html 問い合わせ 2020-05-13 21:00:44
AWS AWS Government, Education, and Nonprofits Blog Announcing Amazon Elastic Kubernetes Service (EKS) in AWS GovCloud (US) https://aws.amazon.com/blogs/publicsector/announcing-amazon-elastic-kubernetes-service-eks-aws-govcloud-us/ Announcing Amazon Elastic Kubernetes Service EKS in AWS GovCloud US Amazon Elastic Kubernetes Service Amazon EKS is now generally available in AWS GovCloud US Regions Now government organizations and commercial organizations in government regulated industries who adopt Kubernetes as their standard for orchestrating containers can use Amazon EKS to deploy a managed Kubernetes cluster on AWS According to the Cloud Native Computing Foundation survey of their community Amazon EKS is the leading method for deploying Kubernetes 2020-05-13 21:53:36
Program [全てのタグ]の新着質問一覧|teratail(テラテイル) AccessVBA SQLでのNULL置換 https://teratail.com/questions/261385?rss=all AccessVBASQLでのNULL置換前提・実現したいことAccessVBAのSQL文の中で安値予想という項目で日前のデータを参照しているのですが、日曜日が休みになるので、空欄ができます。 2020-05-14 06:57:56
Program [全てのタグ]の新着質問一覧|teratail(テラテイル) Unity3D 当たった箇所からParticleを発生させたい https://teratail.com/questions/261384?rss=all UnityD当たった箇所からParticleを発生させたい当たった箇所からParticleを発生さようとしたところ、Debuglogで座標は取れたのですが、contactpointから発生させる場合、どこに挿入すれば良いか分からず、途方にくれてしまいました。 2020-05-14 06:35:07
Program [全てのタグ]の新着質問一覧|teratail(テラテイル) 「iSARA」というプログラミングスクールのサイトの模写をしていますが、ヘッダーの赤いボタンをCSSのグリッド内に上下左右中央揃えにしたいです。 https://teratail.com/questions/261383?rss=all 「iSARA」というプログラミングスクールのサイトの模写をしていますが、ヘッダーの赤いボタンをCSSのグリッド内に上下左右中央揃えにしたいです。 2020-05-14 06:19:35
海外TECH Ars Technica Reports of mass graves as Latin America becomes new pandemic epicenter https://arstechnica.com/?p=1675661 picture 2020-05-13 21:35:39
海外TECH DEV Community 20 Coolest Features of Non-Java JVM Languages https://dev.to/awwsmm/20-coolest-features-of-non-java-jvm-languages-2p4h Coolest Features of Non Java JVM Languages So I find words I never thought to speakIn streets I never thought I should revisitWhen I left my body on a distant shore T S EliotJava has been a key player in the programming landscape since it was created in the mid s One of the big attractions of Java is its write once run anywhere execution model where Java source code is compiled to bytecode by the compiler This bytecode can later be executed by the Java Virtual Machine JVM which converts the Java bytecode to machine specific instructions Separating the writing of code from the execution of code into two domains means that Java developers don t have to write architecture specific instructions They can just write Java code and expect that the people building the JVM will take care of all of the machine specific nuances Of course the JVM doesn t know how the bytecode was generated just that it s supposed to run it Language designers soon realised that this meant they could create new languages which ran on the JVM provided they created intermediate compilers that could convert those languages into Java bytecode And so almost immediately after the first version of Java was released new JVM languages started to appear What follows are some of the coolest features I ve found in these non Java JVM languages A small clarification some of the features below are found in multiple languages on this list Languages which developed later are naturally influenced by those that came before them and languages which have more resources behind them can incorporate more features This is why for instance the feature set of Kotlin funded by JetBrains which charge € year for their IDE IntelliJ is essentially a superset of all of the features of other popular modern languages like Scala and Groovy I made no attempt to uncover which language first implemented which particular feature below rather I wanted to simply highlight some interesting features which haven t yet been incorporated into Java to the best of my knowledge If you find any mistakes below or know of any other neat features available in non Java JVM languages please let me know in the comments Table of Contents Ioke homoiconicity Gosu open type system Gosu optional and named parameters Prompto standard dialects Frege and Eta Haskell for the JVM Ateji PX parallel blocks Fantom once methods and lots of literals Whiley verification via formal specification Whiley flow sensitive typingJython amp JRuby language interoperabilityClojure LISP for the JVM Scala everything is an object Scala everything is an expression Scala case classes and pattern matching Scala implicit programming Groovy partial application and composition of functions Groovy easy regular expressions Groovy JSON to classes Kotlin JavaScript transpilation Kotlin coroutines Ioke homoiconicityHomoiconicity is a subject which takes a bit of explanation but what it boils down to is that a homoiconic program is composed of language elements which can be interpreted as objects within the language itself You could imagine a programming language where every object is a directed graph loops are created with actual loops in the graph and all information needed to run the program is contained within the vertices of the graph If this language itself can manipulate graphs then it can operate on its own source code Code as data is a common maxim when working with homoiconic languages In Ioke everything is an expression composed of a chain of messages The entire language syntax can be summarised as follows program messageChain messageChain expression expression message brackets literal terminatorliteral Text Regexp Number Decimal Unitmessage Identifier commated commated messageChain messageChain brackets commated commated terminator n comment n Since every program is a message chain and a message chain is itself an object in Ioke Ioke programs can manipulate their own source code or the source code of other Ioke programs as data While the jury is still out as to whether homoiconicity is a good thing for a programming language to achieve it certainly is an interesting feature if nothing else back to Table of Contents Gosu open type systemGosu is A JVM language that provides an open type system meaning Gosu programmers can add functionality to classes even if they didn t create those classes themselves This includes built in Java classes like java lang String A simple example is given on Gosu s Wikipedia page enhancement MyStringEnhancement String function print print this The above enhancement adds a print method to the java lang String class meaning a String can now print itself Echo print Gosu also provides extremely simple closures and enhancements to the Iterable interface which combined with the language s scripting like syntax make Collection manipulation a breeze var lstOfStrings This is a list var longStrings lstOfStrings where s gt s length gt map s gt s toUpperCase order print longStrings join prints LIST THIS back to Table of Contents Gosu optional and named parametersGosu also brings to the JVM a feature which exists in many other languages but is as of this writing still missing from Java optional parameters In Java there s no way to specify a default value for a parameter in a constructor If you want to make a parameter optional you have to use a Builder Pattern remove the parameter from the constructor entirely and rely on the user to set it after the fact or create multiple constructors public class Person private String opt default public Person String opt this opt opt public Person Gosu is one of many modern languages that makes this functionality a bit easier by offering optional parameters Here s some Gosu code similar to the Java code above class Person var opt String construct opt String default opt opt This constructor provides a default value default to the parameter opt This constructor can be called with a single String parameter or with no parameters at all In that case the default value will be used Optional parameters can cause problems when constructors have more than one argument though Consider this case for instance class Person var opt String var ional String construct opt String default ional String ditto opt opt ional ional This new Person implementation has two optional parameters So if we call its constructor with new Person potato which parameter should be assigned the value potato They re both Strings and they both have default values after all What if we want to use the default value for opt but a non default value for ional Gosu resolves this issue with named parameters When we call the construct method we can specify which parameter we want to assign this value to new Person ional potato The named parameter makes it clear that we want to assign this value to ional and not opt back to Table of Contents Prompto standard dialectsPrompto is a cloud based programming language designed for building complete information systems like client facing web apps which need to interact with server side data e commerce sites for instance Prompto is the name of the programming language used to build these applications but also the platform on which they run Prompto the platform provides various development tools including a web based REPL database connectors a debugger a JVM based compiler and a JavaScript transpiler Prompto the language was started as an experiment in reifying attributes and offers some radical features for a JVM language including safe multiple inheritance easy integration with various languages including Java JavaScript C and Python with Swift in the works and my favourite feature dialects With Prompto dialects syntax is a detail Programmers can write in whichever style suits them best and code from one dialect can be losslessly translated into other dialects Prompto s three built in dialects are Objy for OOP flavoured syntaxmethod main print print Monty for Python like syntaxdef main options Text lt gt print print and Engly for English like syntaxdefine main as method doing print print All three blocks of code above are the same Prompto code expressed in different dialects Every programming language must provide some syntax to perform a handful of basic tasks defining variables running code in a loop until some condition is met printing information to the user etc With Prompto you re not stuck with a single way to express these concepts you can choose the style of programming which suits you best I m personally very excited about the idea of dialects in programming languages and I wish more languages would follow Prompto s lead and incorporate this cool feature back to Table of Contents Frege and Eta Haskell for the JVM Frege and Eta are two JVM based languages which both purport to be Haskell for the JVM Haskell is a programming language which has become nearly synonymous with the functional programming paradigm since the language s first release almost years ago So one might expect both of these languages to bring pure functional programming to the JVM so why are they two separate languages Eta isn t just meant to look like Haskell it is Haskell or a dialect of it just running on the JVM Eta strives for maximum compatibility with the Glasgow Haskell Compiler GHC and the common repository of Haskell libraries Hackage In addition Eta offers Java interoperability with its strongly typed Foreign Function Interface FFI meaning you can write functional code but still use the Java classes and features you re used to Frege on the other hand while it supports basic Haskell lacks many of the key extensions required to compile Hackage and hence cannot reuse the existing infrastructure Frege s Differences Between Frege and Haskell page on their GitHub was last updated in May and explains how Frege errs on the side of Java rather than Haskell The Frege Prelude defines many functions type classes and types known from Haskell in a similar way The goal is to implement most of the Haskell standard library in a most compatible way as far as this makes sense Apart from that everything else will be quite different because Frege uses the Java APIs whenever possible At the time being there is not much library support yet beyond the standard libraries Frege is more established Eta development has been more active recently Both projects have one or two key developers and so are maintained by very small teams Although they both have roughly the same number of GitHub stars eta lang returns almost x as many results on Google as frege lang Eta also has an official website While both languages are intriguing and both advertise themselves as Haskell for the JVM if I had to learn only one of these two languages I would probably pick Eta Es tut mir leid Herr Doktor Frege back to Table of Contents Ateji PX parallel blocks Do one thing and do it well the mantra of UNIX architects in the s was well heeded by the developers of Ateji PX a programming language which extends Java with a single key feature easy parallelism Ateji is pronounced ah teh gee and the PX stands for parallel extensions which are what it provides for the Java ecosystem Writing parallelised or concurrent code is still not easy more than a decade into the era of multi core processors Different languages attack this problem in different ways Some allow users to manually create threads some allow higher level management of pools of threads some provide serialised and parallelised versions of the same methods some implement actor models and many languages do many or all of these The programming language community doesn t seem to have yet come to a consensus on when and how parallelism should be applied in spite of a well established pi calculus having existed in theoretical computer science for decades Ateji PX threw its metaphorical hat into the ring around with its supremely simple parallelised blocks public class HelloWorld public static void main String args System out println Hello System out println World Above the delimit a parallel block inside of which the operator is used to create a parallel branch The above code could print eitherHelloWorldorWorldHello depending on the order in which the parallel threads finish On its own this is pretty impressive but Ateji PX uses the operator in multiple places throughout the API allowing users to easily parallelise loops for int i N array i implement recursive parallelised algorithms int fib int n if n lt return int fib fib recursively create parallel branches fib fib n fib fib n return fib fib write elegant one liners using sophisticated comprehension expressions sum all elements of the upper left corner of matrix in parallelint sum for int i N int j N if i j lt N matrix i j use a concurrent channel locally or across multiple machines for passing messages between threads declare a channel visible by both branches and instantiate it Chan chan new Chan in the first parallel branch send a value over the channel chan Hello in the second parallel branch receive a value from the channel and print it chan s System out println s and use speculative parallelism to run multiple algorithms at once returning a results as soon as the fastest one has finished int sort int array return mergeSort array return quickSort array You can read all about these and more features in the whitepaper here Unfortunately Ateji the company which created and maintained Ateji PX as well as OptimJ another extension to Java folded in so development of the language has stalled If you re interested in reviving Ateji PX or applying its principles to your or another programming language please send me a private message and I d be happy to get you in touch with one of the original developers of the language who has said he would be more than happy to help by contributing his expertise You can check out the language manual here to get started I have to say that I m actually kind of mad that I ve never seen this notation before It s if you can say this about a programming language beautiful Abstracting away all the nonsense about Threads and Runnables and thread pools and replacing all of it with a single operator What could be simpler back to Table of Contents Fantom once methods and lots of literalsA neat feature of purely functional languages because of the no side effects rule is that they re often able to simplify values and methods by taking logical shortcuts In some languages for instance functions which take no parameters but return a value may simply cache that value after having calculated it once Then when the function is called again the value is simply returned and the body of the function is effectively ignored This technique called memoization can be used very effectively when for instance the user needs to interact with the disk In a file explorer for example instead of interacting with the disk whenever the user moves into or out of a directory we can simply cache the entire file tree or a subset of it ahead of time and the user can interact with that cached file tree effectively eliminating disk read latency The Fantom programming language brings some interesting new features to the JVM including memoization via its once methods once Str fullName return firstName lastName Fantom replaces Java s String type with Str once methods must be instance methods not static they must take no parameters and they must return a value They can throw Exceptions but then the body of the method will be re run on subsequent calls until some value is returned Once a value is returned from the method that value is cached and the body of the method is never again executed As you can see above Fantom also allows for string interpolation The values firstName and lastName are inserted in place where they re included in a string with a preceding character In addition to string interpolation Fantom offers lots of small additions to Java s repertoire of literals allowing object creation without explicitly invoking a new object For instance e D d BigDecimal literalsms sec hr Duration literals some path file txt URI literals x a lt b range literals lt exclusive one two Map literals List literals Many many more literals and improvements to string handling are available with Fantom Fantom is a multi paradigm language that supports functional programming through closures concurrency through the actor model and takes a middle of the road approach to static vs dynamic typing Fantom is truly a jack of all trades back to Table of Contents Whiley verification via formal specificationWhiley a JVM language introduced to the world around is David Pearce s attempt at introducing a programming language with a verifying compiler as described by Sir Tony Hoare A verifying compiler uses mathematical and logical reasoning to check the correctness of the programs that it compiles Hoare is famous for among other things his invention and subsequent condemnation of the null reference I call it my billion dollar mistake It was the invention of the null reference in At that time I was designing the first comprehensive type system for references in an object oriented language ALGOL W My goal was to ensure that all use of references should be absolutely safe with checking performed automatically by the compiler But I couldn t resist the temptation to put in a null reference simply because it was so easy to implement This has led to innumerable errors vulnerabilities and system crashes which have probably caused a billion dollars of pain and damage in the last forty years source Perhaps as a means of atoning for his billion dollar mistake Hoare later developed a set of rules for reasoning about the correctness of programs now known as Hoare logic or Floyd Hoare logic In Hoare put forth a challenge to computer scientists to develop a verifying compiler warning that this might involve the design of a new programming language and compiler especially designed to support verification Whiley attempts to do just that Unlike other programming languages which had features tacked on in an attempt to introduce verifiability like ESC Java Frama C and others Whiley was built from the ground up to facilitate verification Whiley is built on a pure functional foundation and takes care to distinguish between functions no side effects no state and methods may introduce side effects may have some internal state Functions can be reasoned about with regards to verification while methods are more complicated Whiley also uses a complex type system and defaults to immutable values for compound variables like arrays and maps The following example Whiley function function abs int x gt int r ensures r gt ensures r x r x if x gt return x else return x has a postcondition requirement that the returned value must always be non negative r gt During compilation Whiley verifies that the returned value r meets this postcondition through a logical analysis of the function definition found below the postconditions By adding postconditions like this to functions throughout a program Whiley can verify at compile time that a program is constructed correctly This verification process eliminates errors like divide by zero array out of bounds and null dereference Whiley is still under active development with the most recent version available as of April back to Table of Contents Whiley flow sensitive typingAnother really neat feature of Whiley is its totally novel typing paradigm flow sensitive typing which it introduced to the world in Whiley completely rewrites Java s typing model for ease of use and to fulfill its goal of verifiability First record types are introduced type Circle is int x int y int radius type Square is int x int y int dimension type Rectangle is int x int y int width int height Record types have been proposed for inclusion in upcoming versions of Java but are still only a preview feature in Java Record types in Java would provide within an extremely compact definition a class definition with a default constructor public instance variables based on the provided parameter names and getters and setters for those parameters The above Whiley code is all that is needed to define three classes with constructors and public instance variables In addition with Whiley instance variables can be accessed and modified with the simpler dot notation rather than using verbose setters and getters Circle c x y radius c x Whiley also provides union types type Shape is Circle Square RectangleIn the code above Shape is a union type of Circle Square and Rectangle The pipes work in a very similar manner to the boolean OR operator from Java an object is a Shape if it conforms to at least one of the three classes Circle Square or Rectangle Flow sensitive typing means that the following is valid Whiley code function area Shape s gt int if s is Circle return s radius s radius else if s is Square return s dimension s dimension else return s width s heightThe is operator above checks during runtime if the object s conforms to the Circle or Square record definition If the former then we can simply use Circle specific methods and accessors without needing to explicitly cast s to a Circle object like in Java Since Whiley is aware of the definition of Circle it can check that all operations performed using s after the if s is Circle clause are valid according to the definition of Circle N B Whiley does not yet support floating point numeric types hence the incorrect circle area formula above I assume this is due to the inherent granularity of floating point types on digital computers and some difficulty with reasoning about the correctness of a program where machine epsilons are important The above is accomplished through intersection types Whiley takes the type of object s whatever that happens to be and intersects it with type Circle Since s must be a Shape there are three possibilities Circle amp CircleSquare amp CircleRectangle amp CircleWhiley s compiler recognizes that the last two type intersections are the null set because Circle doesn t extend either Square or Rectangle and vice versa so the if statement will only execute if s is a Circle record A more interesting version of this might be something like import string from std asciiimport std iomethod main integerOrString integerOrString method integerOrString int string x if x is int io println x else io println x Try it out here Whiley uses flow sensitive typing to pick the if or else branch at runtime If x is an int it will be increased by then printed Otherwise it will be printed as is This of course works similarly to instanceof in Java but is much more elegant back to Table of Contents Jython amp JRuby language interoperabilityJython and JRuby are two of the earliest non Java JVM languages first released in and respectively These languages are designed to offer interoperability between Java and Python and Java and Ruby respectfully This means that Jython allows for Python code to be run from within Java and vice versa JRuby provides the same features but for the Ruby language Here s an example of some simple Python code being run within Java using Jython import org python util PythonInterpreter public class JythonHelloWorld public static void main String args try PythonInterpreter pyInterp new PythonInterpreter pyInterp exec print Hello World catch Exception ex ex printStackTrace similar code but for Ruby running with JRuby import javax script ScriptEngine import javax script ScriptEngineManager public class JRubyHelloWorld ScriptEngineManager mgr new ScriptEngineManager ScriptEngine rbEngine mgr getEngineByExtension rb public static void main String args try rbEngine eval puts Hello World catch ScriptException ex ex printStackTrace Language interoperability is a bit of a hot topic in the JVM community at the moment especially with the recently released GraalVM Java Virtual Machine and Development Kit GraalVM offers mutual interoperability between multiple languages including JavaScript and Node jsRuby and Ruby on RailsRPython LLVM based languagesWill GraalVM an Oracle product spell the end for Jython and JRuby Will Oracle peel developers away from these other projects to work on GraalVM Will I think of a third example We ll just have to wait and see back to Table of Contents Clojure LISP for the JVM While Frege and Eta provide slightly altered versions of Haskell for the JVM Jython and JRuby offer interoperability with Python and Ruby respectively and GraalVM expands that interoperability to include JavaScript R and more Clojure brings yet another language to the JVM LISP I ve developed an infatuation with LISP recently I like the fact that like Ioke above it s a homoiconic language meaning the program itself is a data structure within the programming language namely a list This property means that LISP programs can operate on their own source code as though they were data a list because they are Input output and source code all conform to the same structure and can easily be read written and manipulated using the LISP language Clojure brings this flexibility to the JVM while refreshing and updating LISP for the twenty first century Clojure takes full advantage of the JVM as well allowing Java methods and classes to be called from within Clojure code doto java util HashMap put apple put banana The above code returns a java util HashMap in Clojure syntax this will be written as banana apple Threading macros in Clojure also allow for easy functional programming gt gt range map inc filter even The above code returns the list With all of these amazing projects providing interoperability between Java and various other programming languages I think the JVM will be around for a long long time back to Table of Contents Scala everything is an object As we get toward the end of this list we re now in the region of popular non Java JVM languages Scala Kotlin and Groovy are the only three languages on this list which crack the top most popular languages on GitHub As Scala is a language I am relatively familiar with let s start there Scala is designed to be a Scalable Language great for short scripts small projects gigantic monolithic services and agile microservices alike Scala is the brainchild of Professor Martin Odersky of l École Polytechnique Fédérale de Lausanne EPFL who has helped to develop several JVM languages including Pizza and Generic Java which became the basis of generic types in Java as well as implementing the GJ compiler for Java on which javac was then based Scala sits at the intersection of several popular paradigms and trends in programming The first and probably most obvious of these is object oriented programming As a JVM language Scala inherits and builds upon Java s object hierarchy While Java has always had a sort of two worlds approach to OOP with primitives treated differently than true Objects Scala unifies the hierarchy by promoting these basic data types to real objects int becomes Int double becomes Double and so on These value types all descend from a common value object AnyVal But what about boxing and unboxing you might ask don t they effectively convert primitives to objects and vice versa While this is true this conversion must be explicitly performed if you want to say call a method on a Java primitive jshell gt toString Error expected toString jshell gt int x x gt jshell gt x toString Error int cannot be dereferenced x toString jshell gt new Integer toString gt Scala implicitly makes these conversions for you see so all of Integer s methods are available to use on integer literals scala gt toString res String And since the Scala compiler converts these to Java primitives at compile time there is no performance overhead An additional benefit of this is that no special operators need to be defined for primitives The arithmetic operators and more are simply defined as functions within Scala which allows all sorts of symbols within identifiers Java s Project Valhalla aims to bring Scala like value types to Java via generic specializations Valhalla also introduces value types for Java which are different from Scala s value types and closer to C s structs Similarly on the Java like object side of the inheritance tree we have AnyRef which is the ancestor of all reference types AnyVal and AnyRef both descend from Any Scala s equivalent of Java s Object root class Specifying Any in a type parameter means that any data type can be substituted even basic data types like Int and Double Similarly at the bottom of the hierarchy we have the Null and Nothing types The Null singleton object can be substituted for any class which extends AnyRef and Nothing can be substituted for any class at all These pinch points at the bottom and top of the class hierarchy unify Scala s object model in a way which makes Java s look a bit fragmented and incomplete There are other less obvious manifestations of the everything is an object philosophy in Scala These are achieved primarily through syntactic sugar which interprets the name of an object or a companion object of a class followed by a parameter list in parentheses as calling the apply method on that object scala gt paste Entering paste mode ctrl D to finish object Example def apply x Int println s x is x Exiting paste mode now interpreting defined object Examplescala gt Example equivalent to Example apply x is Objects defined with the object keyword in Scala are equivalent to singleton classes in Java And a companion object can be thought of as a container for static like methods which can be called by any object of that class Scala companion objects must have the same name as their companion class The confusion between Objects objects and objects is real This syntactic sugar means that we can have classes that code like classes but act like functions including actual Functions which are objects that extend AnyRef and have an apply methodMaps whose apply functions take a key parameter and return a valueLists and other sequences whose apply methods take an index and return the value at that indexThese unifications of the object hierarchy and syntax mean that there are fewer exceptions to the rules in Scala You don t access array elements with like you do in Java Functions aren t a special type of construct separate from objects and there is no primitive object distinction Scala adds a bit of syntactic sugar and extends the object hierarchy a bit and everything seems to nicely fall into place back to Table of Contents Scala everything is an expressionScala attempts to remove even more exceptions to the rules with the idea that everything is an expression In most programming languages there are distinctions between various kinds of syntactical constructs like expressions operators and control structures As mentioned above Scala eliminates the need for explicit hard coded operators through its expanded class hierarchy but it also streamlines many control structures by applying a few concepts from the functional programming paradigm In many languages if else is a control structure which looks something likeif condition do something else do something different Within the if and else blocks you can affect the execution of the program through side effects by mutating variables or performing IO etc If we wanted a variable to depend on the value of the condition we would do something likevar y if condition y else y This requires us to be able to mutate the value of y ie it s not constant which can be undesirable and it requires us to reach up out of the scope of the if else block to affect the value of y in the enclosing scope In many languages you cannot do something like this though var y if x lt less then else greater than or equal to that is assigning the result of the if else to a variable This requires a bit of a re orientation from procedural to functional programming In procedural programming we have explicit return statements and often return early for performance and code cleanliness reasons Multiple and early returns are frowned upon in functional programming however because it makes it more difficult for the compiler to reason about the flow within the program One common trope in functional languages is the idea that the last computed value in a block is the return value of that block This allows us to omit the return keyword entirely and can simplify the flow of the code considerably For example val area val pi val r pi r r The lack of return statements means that this block will always run from start to finish Because we re assigning to a variable the expression isn t parameterized in any way and the value of the block will always be the same If this were a function we could cache the result to avoid recomputing the same value over and over The last computed value is the return value concept means that even though the last line of the block pi r r wasn t assigned to any variable within the block because it s the last computed value in that block it is the value of the block Since the block can be evaluated it can be assigned to a variable as is done above if else statements in Scala follow these same rules The last computed value in a block is the value of that block so while in Java the following codeif x lt less than else greater than or equal to would have no effect in Scala the entire if else block assumes a value after running which means it can be assigned to a variablevar y if x lt less than else greater than or equal to And just like in Java we can drop the around single line if else blocks var y if x lt less than else greater than or equal to or justvar y if x lt less than else greater than or equal to Treating even basic control statements as expressions which return a value lets us streamline our code and makes it easier to reason about and test program execution As a side note we can kind of recreate this behavior using only Java style ifs and returns by using implicit conversions and by name parameters scala gt paste Entering paste mode ctrl D to finish implicit class Elseable x Any def ELSE elval gt Any Any if x return elval else return x def IF cond Boolean ifval gt Any Any if cond return ifval Exiting paste mode now interpreting defined class ElseableIF cond Boolean ifval gt Any Anyscala gt IF true T ELSE F res Any Tscala gt IF false F ELSE T res Any Tscala gt IF true T res Any Tscala gt IF false F res Any back to Table of Contents Scala case classes and pattern matchingPattern matching is like regular expressions but for the structure of objects rather than for the structure of strings Pattern matching can be found throughout professional Scala code but one of the more obvious places it can be seen is in match expressions Think of a match expression like a superpowered switch Whereas in Java we define a switch with contains multiple cases separated by breaks in Scala we define a match expression with multiple cases but the compiler inserts breaks for us whenever it encounters a new case keyword This means there is no fall through in Scala match expressions A simple Java like match expression might look like scala gt paste Entering paste mode ctrl D to finish val x x match case gt x is one case gt x is two case gt x is three Exiting paste mode now interpreting x Int res String x is three but that doesn t even scratch the surface of what can be done with Scala match expressions You can add filters in your cases and default matches denoted by case gt scala gt paste Entering paste mode ctrl D to finish val x x match case Int if x lt gt x is negative case Int if x gt gt x is positive case gt x is zero default Exiting paste mode now interpreting x Int res String x is positiveYou can match on specific types scala gt def whatIsIt x Any x match case Double gt x is a Double case Int gt x is an Int case String gt x is a String whatIsIt x Any Stringscala gt whatIsIt res String x is an Intscala gt whatIsIt res String x is a Doublescala gt whatIsIt res String x is a StringYou can even use pattern matching to deconstruct objects pulling out the arguments that were used to create them scala gt paste Entering paste mode ctrl D to finish sealed trait Shapecase class Rect height Int width Int extends Shapecase class Circle radius Int extends Shapecase class Square size Int extends Shape Exiting paste mode now interpreting defined trait Shapedefined class Rectdefined class Circledefined class Squarescala gt def whatIsIt s Shape s match case Rect h w gt s a Rect with width w and height h case Circle r gt s a Circle with radius r case Square s gt s a Square with side length s whatIsIt s Shape Stringscala gt val r Rect r Rect Rect scala gt val c Circle c Circle Circle scala gt val s Square s Square Square scala gt whatIsIt r res String a Rect with width and height scala gt whatIsIt c res String a Circle with radius scala gt whatIsIt s res String a Square with side length In that last example I made use of a sealed trait which was extended by several case classes Scala s traits are similar to Java s interfaces and case classes are similar to Whiley s record types match expressions and case classes are truly a match made in heaven hold for applause Why Well because by using the type of the object to control the flow of the program the compiler is helping to check if your code is correct A sealed trait as used above means that any classes which extend it must appear in the same location usually the same source code file in which the sealed trait is defined This means that in our example Rect Circle and Square are the only classes which extend Shape so whenever we match on a Shape the compiler can double check that we ve covered all our bases by providing patterns for Rect Circle and Shape and only those three classes We will get a compile time error warning if we have a non exhaustive match if we missed a case class or if we try to match on a class which s Shape could never match a Double for instance match expressions and case classes are a really powerful duo in Scala back to Table of Contents Scala implicit programmingOne of the guiding principles of the Python programming language the Zen of Python is the phrase explicit is better than implicit That quote from Tim Peters a major early contributor to Python and inventor of the Timsort sorting algorithm must not have made it to Martin Odersky s ears before he started work on Scala just a few short years later Scala is rife with implicits To be fair Scala was built on top of Java and to extend Java in any meaningful way for instance to add functionality to a class defined in Java source code you need to jump through some hoops This is made even more difficult for classes like String which is immutable and final for good reasons Scala uses a concept called implicit conversions to automatically convert Java classes into Scala classes and vice versa covertly jumping through those hoops for you If you ve programmed in Java before you ve actually used implicit conversions already When you write something likejshell gt gt Java is converting the int to a double automatically and implicitly nothing in the code tells you outright that that is what s happening But integer and floating point numbers have very different internal representations so it s not just a matter of relabeling an int as a double the compiler actually needs to shift bits around As we know from Java even explicit primitive conversions can be dangerous If you try to convert a long to an int you d better be sure that that long doesn t exceed Integer MAX VALUEjshell gt long l Integer MAX VALUE Ll gt jshell gt int i l Error incompatible types possible lossy conversion from long to int int i l jshell gt int i int li gt Java will only implicitly widen primitive types To narrow them double gt float or long gt int gt char gt byte you must explicitly declare the conversion with a typecast as above But this can lead to unexpected results like the long above that wrapped around to a negative int To avoid overly verbose conversions between Java and Scala types Scala uses implicit conversions to convert Java s primitives to Scala s wrapper types which extend AnyVal Java s Strings to string like helper classes in Scala and more But this can be just as dangerous in Scala as it is in Java so be careful Implicit programming comes in different shapes and sizes in Scala but the two most common usages areimplicit parameters andimplicit conversionsImplicit parameters in Scala are arguments which are not explicitly sent to a function These parameters must be declared implicit in the parameter list and there must be an implicit variable of the same type within scope defined by some slightly complex scoping rules scala gt implicit val ii Int ii Int scala gt def answer to String implicit num Int println s The answer to to is num answer to String implicit num Int Unitscala gt answer life the universe and everything The answer to life the universe and everything is Notice how in the above code snippet we didn t explicitly send the value to the procedure answer Instead it knew it needed an implicit Int and it looked for and found one within scope There are rules for handling collisions between implicit parameters passing multiple implicit arguments and making implicit parameters explicit with the implicitly keyword implicit parameters are usually used when you have many methods passing environment type arguments to each other Rather than clog up your code with lots of argument passing make everything implicit scala gt implicit val bb falsebb Boolean falsescala gt implicit val dd dd Double scala gt implicit val ss my string ss String my stringscala gt def myBool implicit myb Boolean println s my boolean is myb myBool implicit myb Boolean Unitscala gt def myDub implicit myd Double println s my double is myd myDub implicit myd Double Unitscala gt def myStr implicit mys String println s my string is mys myStr implicit mys String Unitscala gt def myThings println These are my things myBool myDub myStr myThings Unitscala gt myThingsThese are my things my boolean is false my double is my string is my stringImplicit conversions are slightly more complex and slightly more dangerous They are disabled by default but can be enabled with import scala language implicitConversions With the above package imported when an object in Scala tries to access a method or value which it wouldn t normally have access to the Scala compiler will look following the same implicit scoping rules for an implicit def which takes a single argument of that object s type and returns an object of any type which has that missing method or value defined scala gt hey exclaim lt console gt error value exclaim is not a member of String hey exclaim scala gt import scala language implicitConversionsimport scala language implicitConversionsscala gt class Exclaimable s String def exclaim String s defined class Exclaimablescala gt implicit def stringExclaimable s String Exclaimable new Exclaimable s stringExclaimable s String Exclaimablescala gt hey exclaim res String hey Implicit conversions seem great at first glance and they re used heavily by the language itself to convert Java lt gt Scala but I cannot stress this enough they are dangerous Since Scala implicit conversions are discouraged and should be replaced with explicit converters or implicit classes instead scala gt hey exclaim lt console gt error value exclaim is not a member of String hey exclaim scala gt implicit class Exclaimable s String def exclaim String s defined class Exclaimablescala gt hey exclaim res String hey back to Table of Contents Groovy partial application and composition of functionsApache s Groovy programming language offers lots of neat ways of working with closures defined in Groovy as open anonymous block s of code that can take arguments return a value and be assigned to a variable Groovy s closures take the form closureParameters gt statements They are curly brace delimited blocks of code with zero or more comma separated parameters transformed into some output They may return a value cause side effects like printing to the terminal both or neither They can access variables outside the scope of their defining block as well The following are all valid closures in Groovy c x c x y gt x y c gt println sup c a b c gt Closures can be called with a comma separated list of parameters just like normal functions so the above closures could be used like in gt c ou gt in gt x ou gt in gt c ou gt in gt c ou gt in gt c sup ou gt null in gt c popty ping false ou gt nullGroovy lets you play with closures in interesting ways For instance Groovy allows partial application of closures which it calls currying acknowledging that this is not actually currying in the strict sense in gt x pow y x y gt x y ou gt groovysh evaluate run closure in gt x pow y ou gt in gt x pow x pow y rcurry ou gt org codehaus groovy runtime CurriedClosure fffe in gt x pow ou gt in gt two pow y x pow y curry ou gt org codehaus groovy runtime CurriedClosure da in gt two pow y ou gt As seen above we can send only the leftmost parameter with curry or only the rightmost parameter with rcurry and get back a new function which takes one fewer arguments Here s a good explanation of the differences between currying and partial application if you re interested You can also set an arbitrary parameter with ncurry in gt sum abc a b c gt a b c ou gt groovysh evaluate run closure df in gt sum abc ou gt in gt sum ac sum abc ncurry ou gt org codehaus groovy runtime CurriedClosure ca in gt sum ac ou gt Groovy offers lots of other cool features for closures including trampolining for tail call optimization memoization and transforming regular functions into closures via method pointers but one other small feature I want to take a look at here is function composition You ve probably encountered function composition in your high school mathematics classes or when using the pipe operator in a terminal Basically a composition of functions works like the following f lt lt g x f g x In Groovy lt lt is the function composition operator and it pipes the output of function g into the input of function f in gt f x gt x ou gt groovysh evaluate run closure dbff in gt g x gt x ou gt groovysh evaluate run closure fa in gt f lt lt g ou gt in gt f g ou gt You can also compose functions in reverse order with gt gt in gt f gt gt g ou gt in gt g f ou gt Function composition makes it easy to chain functions together creating reusable data manipulation pipelines Plus it s neat back to Table of Contents Groovy easy regular expressionsIn my opinion one of the places where Groovy most obviously outshines Java is in its support for regular expressions It s not even a competition Groovy has all sorts of extra bits of syntax to help you define and use regex If you re new to regex or want a refresher why not check out my interactive guide Small Steps to Become a Regex MasterIn Java defining and using a regular expression is like most things Java very verbose import java util regex Matcher import java util regex Pattern public class Example public void run String example The President of the United States of America Pattern pattern Pattern compile b a zA Z b Matcher matcher pattern matcher example while matcher find System out println matcher group Running the above code in the jshell would give jshell gt new Example run TheoftheofThere s a lot of ceremony for setting up and running a regular expression over a Java String And I made the example about as short as I could In Groovy it s much simpler example The President of the United States of America pattern b a zA Z b matcher example patternWe can then find all matches with in gt matcher ou gt groovier better How simple is that Above we defined pattern using a slashy string which is a string surrounded by rather than by Slashy strings are raw strings in which escape sequences are ignored so we don t need to double up on the backslashes to get the regex word boundary sequence just b instead of b We also used the pattern operator before the string which transforms that string into a Pattern in a manner similar to Pattern compile Then we ran the expression on our example string with the find operator instead of running pattern matcher as we did in Java In Groovy you can also use the presence or absence of a match as a booleean value in gt if The password is PorkChop i porkchop in gt println you re in in gt else in gt println scram in gt you re in easily extract and assign several variables at once using Groovy s multiple assignment in gt ghost ghost ghost ghost Inky Pinky Blinky and Clyde A Z a z ou gt java util regex Matcher pattern A Z a z region lastmatch Clyde in gt println Oh no it s ghost ghost ghost and uh ghost Oh no it s Pinky Inky Clyde and uh Blinky and much more By making regular expressions less verbose Groovy is making them more accessible and less anxiety inducing for new devs back to Table of Contents Groovy JSON to classesLove it or hate it JSON is quickly becoming the de facto standard for data transfer on the web This simple text file format which describes arbitrarily nested objects of basic data types and arrays has quickly achieved widespread appeal because it is easy to write easy to read and easy to parse Although inspired by and named after the language JavaScript Object Notation JSON was not strictly a subset of JavaScript until when a new version of ECMAScript was released JSON used to allow characters which were illegal in JavaScript objects in particular JSON objects can now be quickly easily and safely parsed from text files and automatically translated into objects in JavaScript Groovy provides the same functionality but on the JVM Groovy s built in JsonSlurper class allows JSON data to be automatically parsed from a simple string format into a fully fledged Groovy object in gt slurper new groovy json JsonSlurper ou gt groovy json JsonSlurper bea in gt result slurper parseText person name Guillaume age pets dog cat ou gt person name Guillaume age pets dog cat in gt result person age ou gt in gt result person pets ou gt dog cat in gt result person name ou gt GuillaumeOf course it s possible to do this in plain Java but as JSON is becoming more and more popular there s more and more of an argument to be made for including it in a language s standard library which Groovy has already done And it just works right out of the box super easy back to Table of Contents Kotlin JavaScript transpilationWhile we re on the topic of the web it can sometimes be difficult for backend developers to showcase their work or to easily create portfolios Frontend devs have a huge canvas at their disposal the web browser which can be really difficult to access if you re not working in JavaScript or TypeScript Kotlin tries to close the frontend backend dev divide a bit with its ability to compile not just to Java bytecode via the JVM or to over a dozen different native architectures through LLVM but also by transpiling directly to JavaScript where you can run Kotlin in your browser Just write a simple Kotlin function likeimport kotlin browser import kotlin dom fun main args Array lt String gt document getElementById tooltip appendText The first step transpile and you ll get JavaScript output that looks something like if typeof kotlin undefined throw new Error Error loading module KotlinFunWeb Its dependency kotlin was not found Please check whether kotlin is loaded prior to KotlinFunWeb var KotlinFunWeb function Kotlin use strict var appendText Kotlin kotlin dom appendText nku function main args var tmp tmp document getElementById tooltip null appendText tmp The first step null main kands main main Kotlin defineModule KotlinFunWeb return typeof KotlinFunWeb undefined KotlinFunWeb kotlin Showing off your Kotlin skills has never been easier Here s a template to get you started and some larger examples of a password manager a digital bookshelf and a tracker of people currently in outer space for inspiration back to Table of Contents Kotlin coroutinesConcurrent programming in Java is a terrifying thing for a newbie When should I use atomics And volatiles And should I synchronize on this class Or this block Or this At best you can end up with an application which isn t currently crashing or deadlocking but which could break unexpectedly at any moment without any easy way to even trace what went wrong At worst you could end up with silent race conditions that corrupt your data without alerting you to any problems at all Kotlin tries to ease this pain a bit with its coroutines Coroutines were proposed in the late s as a sort of counterpart to subroutines instead of a parent child relationship where control passes from the more central parent to the more peripheral child then back to the parent coroutines introduce a symmetric relationship A given coroutine can yield to another at any time A simple pseudocode coroutine might look likevar q new queuecoroutine produce loop while q is not full create some new items add the items to q yield to consumecoroutine consume loop while q is not empty remove some items from q use the items yield to produceIn the above example the produce coroutine fills the queue until there s no more space then yields to consume which empties the queue These two couroutines bounce back and forth yielding the program flow The main advantage of coroutines is that they re asynchronous In the above example the produce coroutine isn t waiting or sleeping while the consume coroutine is running it s simply stopped It s not using any resources These two coroutines could be running on different threads or on the same thread Because coroutines and OS threads don t have a relationship coroutines are very lightweight While your system might begin to balk if you try to create more than a few thousand or even a few hundred threads you can easily create millions of Kotlin coroutines at once Coroutines allow for an easy parallel asynchronous division of labor spread evenly among your computer s resources To learn more about different approaches to concurrent programming in Kotlin check out this SO post on the differences between threads and coroutines and this short blog post which compares and contrasts actors and coroutines back to Table of Contents Do you know of any other cool features I neglected to mention above Are any of the above features also available in your language of choice Let me know in the comments People who viewed the above article also viewed me soliciting from Internet strangersacid washed Facebookmy other Dev To articles𝐭𝓲𝑒ⓒυβεThanks for reading 2020-05-13 21:40:57
海外TECH DEV Community Keyboard optimizations in GNU/Linux https://dev.to/aminnairi/keyboard-optimizations-in-gnu-linux-2c63 Keyboard optimizations in GNU LinuxToday I m going to show you a simple command to enhance the repeating keys on a GNU Linux operating system After reading this article you ll be able to Change the delay at which a key starts to enter in repeat modeChange the rate between each repeat of the keySave these settings so that you can reuse them for other machines as well xset r rate Before you try this command I suggest you start hitting a key until it starts to repeat automatically Now copy paste the command I just showed you in the terminal and notice how the repeating is now faster The delay is the moment before a key start going into repeat mode You can adjust the speed at which it occurs by increasing or decreasing the value in the command Whereas the rate is the speed at which a key will repeat itself This is the value I just set in the above command Start by typing something like a script or write a program right now to get used to it If you find it too slow or too fast you can still change the rate and run this command again One last thing to note this setting will last as long as the session lasts So if you really want to go back to your stock settings you just have to logout login or reboot your computer And since it won t stick between logout login you ll have to write them in your rc file for instance for Bash vim bashrc bin bash Your pre existing configuration here Update the repeat delay and rate of the keyboard KEYBOARD REPEAT DELAY KEYBOARD REPEAT RATE xset r rate KEYBOARD REPEAT DELAY KEYBOARD REPEAT RATENote that xset should be already installed on most of the GNU Linux distributions out there and chances are that there is a package available for your distribution if it does not come pre installed Also this tip will only work with graphical environments You can look at kbdrate if you want to update your keyboard rates amp delays under a TTY session 2020-05-13 21:19:39
Apple AppleInsider - Frontpage News Apple might have exclusive on Intel's 28W 'Ice Lake' processors https://appleinsider.com/articles/20/05/13/apple-might-have-exclusive-on-intels-28w-ice-lake-processors Apple might have exclusive on Intel x s W x Ice Lake x processorsIntel appears to have made its speediest th generation Ice Lake mobile processors exclusive to Apple s MacBook lineup 2020-05-13 21:42:30
Apple AppleInsider - Frontpage News Utah declines Apple-Google exposure notification API for app made by social media startup https://appleinsider.com/articles/20/05/13/utah-declines-apple-google-exposure-notification-api-for-app-made-by-social-media-startup Utah declines Apple Google exposure notification API for app made by social media startupThe state of Utah has rejected the Apple Google Exposure Notification framework in favor of a less private contact tracing app created by social media startup Twenty 2020-05-13 21:15:35
海外TECH Engadget Food apps in Chicago will soon show the premium you pay for delivery https://www.engadget.com/chicago-itemized-breakdown-delivery-apps-210224890.html Food apps in Chicago will soon show the premium you pay for deliveryIn a first of its kind policy change the City of Chicago will require companies like DoorDash to disclose to customers how much restaurants pay when they order food using a delivery app If you live in the city you ll see an itemized breakdown that 2020-05-13 21:02:24
海外TECH CodeProject Latest Articles Introduction to OpenGL with C/C++ on ReactOS https://www.codeproject.com/Tips/5240792/Introduction-to-OpenGL-with-C-Cplusplus-on-ReactOS reactos 2020-05-13 21:15:00
海外科学 NYT > Science How NASA’s Future Rovers Might Escape Alien Sand Traps https://www.nytimes.com/2020/05/13/science/nasa-rovers.html alien 2020-05-13 21:25:03
海外科学 NYT > Science Live Coronavirus News Updates and Full Analysis https://www.nytimes.com/2020/05/13/us/coronavirus-cases-deaths.html analysisthe 2020-05-13 21:27:03
金融 生命保険おすすめ比較ニュースアンテナ waiwainews 浅草寺 http://seiho.waiwainews.net/view/11253 newsallrightsreserved 2020-05-14 06:35:33
ニュース BBC News - Home Coronavirus: Up to 100 children affected by rare inflammatory reaction https://www.bbc.co.uk/news/health-52648557 number 2020-05-13 21:14:43
ニュース BBC News - Home Buzzfeed to close UK news operation https://www.bbc.co.uk/news/uk-52650038 audiences 2020-05-13 21:18:26
ニュース BBC News - Home Spurs star Alli held at knifepoint during robbery https://www.bbc.co.uk/sport/football/52656589 early 2020-05-13 21:32:40
ニュース BBC News - Home West Indies players 'very nervous' about touring England https://www.bbc.co.uk/sport/cricket/52656122 West Indies players x very nervous x about touring EnglandCricket West Indies chief executive Johnny Grave thinks the tour of England will go ahead but says his players will be very nervous about travelling 2020-05-13 21:40:09
LifeHuck ライフハッカー[日本版] 規則性のスキマを狙う。転換効率を高める「ハック思考」の身につけ方 https://www.lifehacker.jp/2020/05/book_to_read-534.html 須藤 2020-05-14 06:30:00
北海道 北海道新聞 NY円、107円前半 https://www.hokkaido-np.co.jp/article/420745/ 外国為替市場 2020-05-14 06:42:00
北海道 北海道新聞 米アマゾン、便乗値上げ品削除 50万件、議会には規制要請 https://www.hokkaido-np.co.jp/article/420744/ 議会 2020-05-14 06:42:00
北海道 北海道新聞 盛岡のリンゴ園、コロナ失業支援 SNSでスタッフ募集 https://www.hokkaido-np.co.jp/article/420742/ 新型コロナウイルス 2020-05-14 06:32:06
北海道 北海道新聞 食べてもOK、ハンドソープ話題 特産品ゆず使い能美市PR https://www.hokkaido-np.co.jp/article/420743/ 石川県能美市 2020-05-14 06:32:04
北海道 北海道新聞 米、通信機器制限を継続 中国を念頭、コロナで対立も https://www.hokkaido-np.co.jp/article/420741/ 安全保障 2020-05-14 06:21:00
北海道 北海道新聞 コロナ危機「冷静な議論を」 国連サイトで日本に提言 https://www.hokkaido-np.co.jp/article/420740/ 議論 2020-05-14 06:21:00
北海道 北海道新聞 「アマビエ」を漆器で表現 鳥取の高校生、疫病払う妖怪 https://www.hokkaido-np.co.jp/article/420731/ 鳥取県南部町 2020-05-14 06:11:19
北海道 北海道新聞 アマゾンが新小型タブレット 価格抑えアップルに対抗 https://www.hokkaido-np.co.jp/article/420737/ 抑え 2020-05-14 06:11:00
北海道 北海道新聞 イエローストン公園、一部再開へ 18日、制限緩和で https://www.hokkaido-np.co.jp/article/420736/ 西部 2020-05-14 06:11:00
北海道 北海道新聞 米ワシントン、外出禁止を延長 来月8日まで https://www.hokkaido-np.co.jp/article/420735/ 外出禁止 2020-05-14 06:11:00
北海道 北海道新聞 「ネコ同士」でも感染拡大 新型コロナ、症状は見られず https://www.hokkaido-np.co.jp/article/420733/ 感染拡大 2020-05-14 06:10:00
北海道 北海道新聞 案里氏運動員、広島地検に説明 「現職地盤崩そうとした」 https://www.hokkaido-np.co.jp/article/420734/ 広島地検 2020-05-14 06:10:00
ビジネス 東洋経済オンライン 立ち会い・里帰り「不可」に直面する妊婦の苦悩 コロナの影響で母親学級も中止に不安募る | 子育て | 東洋経済オンライン https://toyokeizai.net/articles/-/349586?utm_source=rss&utm_medium=http&utm_campaign=link_back 東洋経済オンライン 2020-05-14 06:20:00
ビジネス 東洋経済オンライン 対韓輸出規制から1年、韓国が日本に「最後通牒」 5月末まで規制緩和しなければGSOMIA終了も | 韓国・北朝鮮 | 東洋経済オンライン https://toyokeizai.net/articles/-/350100?utm_source=rss&utm_medium=http&utm_campaign=link_back gsomia 2020-05-14 06:10: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件)