This document discusses the core ideas and technologies used in the Android stack created by Juno, including immutability, concise code, modularity, testability, and use of Kotlin and RxJava. The stack emphasizes safety through immutable and final classes, easy concurrency, and null safety. It aims for concise code through properties, type inference, and stream-like APIs. Modularity is achieved through clean architecture principles. Tests are enabled by separation of concerns and isolating business logic. Kotlin and RxJava integration works well overall, though some challenges remain around testing and null safety.
The second quantum revolution: the world beyond binary 0 and 1Bruno Fedrici, PhD
Our active application of quantum
mechanics has previously been constrained by our
ability to engineer and control systems at the small
scales where quantum effects predominate. This has
now changed. Scientists have reached first base on a
set of enabling technologies that allow us to
routinely manipulate atoms of matter and photons of
light at individual level. This has unlocked our ability
to create a new generation of devices that deliver
unique capabilities directly tied to properties of quantum mechanics such as superposition and entanglement.
안녕하세요 밥입니다. 이번 let us Go! 가을 행사 테스트에 관한 발표 내용입니다.
이번 발표에 관한 내용은 다음과 같습니다.
- Unit Test와 Integration Test의 비교
- TDD의 Life Cycle
- TDD를 iOS에 적용하는 방법
- Unit Test를 XCTestFramework를 사용하여 함수 테스트 방법
- TDD의 장/단점
궁금하신 사항이나 질문이 있으시면 bob@bobthedeveloper.io로 언제든지 연락해주시길 바랍니다.
The second quantum revolution: the world beyond binary 0 and 1Bruno Fedrici, PhD
Our active application of quantum
mechanics has previously been constrained by our
ability to engineer and control systems at the small
scales where quantum effects predominate. This has
now changed. Scientists have reached first base on a
set of enabling technologies that allow us to
routinely manipulate atoms of matter and photons of
light at individual level. This has unlocked our ability
to create a new generation of devices that deliver
unique capabilities directly tied to properties of quantum mechanics such as superposition and entanglement.
안녕하세요 밥입니다. 이번 let us Go! 가을 행사 테스트에 관한 발표 내용입니다.
이번 발표에 관한 내용은 다음과 같습니다.
- Unit Test와 Integration Test의 비교
- TDD의 Life Cycle
- TDD를 iOS에 적용하는 방법
- Unit Test를 XCTestFramework를 사용하여 함수 테스트 방법
- TDD의 장/단점
궁금하신 사항이나 질문이 있으시면 bob@bobthedeveloper.io로 언제든지 연락해주시길 바랍니다.
Clojure - an introduction (and some CFML)Kai Koenig
This is a talk I gave at CFCAMP 2012 in Munich. It's an introduction to Clojure for CFML developers and how to leverage Clojure from a CFML developer's point of view.
There are various examples and demo code that's not on the slides, contact me if you're interested in it.
The advent of multicore CPUs have facilitated the enhancement of performance in many application domains. But it has shifted the burden of maximizing the usage of this hardware resource to the developers of operating systems and programming languages and ultimately the software engineers who have to develop the applications.
We first look at the concurrency primitives that modern operating systems provides us to work with, namely processes and threads. With Python, a common approach is to use threads which have shared memory. However this can be difficult to do well as it is easy to run into race conditions and other bugs. And Python threads, unlike OS threads, cannot run at the same time due to the infamous GIL, thus limiting us to only one core.
To utilize multiple cores in Python, an effective and better solution is to use multiple processes, each with their own memory space and provide inter-process communication using message passing. We will look at the multiprocessing module and how to use it for this purpose.
Eth cc --eth2-tests-and-implementationBruno Skvorc
Slides for the Ethereum 2.0 Tests talk at EthCC: https://www.youtube.com/watch?v=6c4mQg5L6Rs - focuses on cross-client test suites and how they can or cannot help develop compatible non-breaking software for the next financial revolution
Μεταπρογραµµατισµός κώδικα Python σε γλώσσα γραµµικού χρόνου για αυτόµατη επα...ISSEL
Ο όρος επαλήθευση λογικής κατά την εκτέλεση οριοθετεί ένα πεδίο που εκτείνεται από τον έλεγχο λογισµικού για τη συµµόρφωση µε ένα σύνολο προδιαγραφών, έως την εναρµόνιση µε καλές λογικές πρακτικές κατά τη συγγραφή κώδικα. Στο πλαίσιο αυτό, υλοποιήσαµε τη lovpy, µια ϐιβλιοθήκη µεταπρογραµµατισµού για τη γλώσσα Python, που εισάγει σε αυτή τις δυνατότητες της επαλήθευσης λογικής κατά την εκτέλεση. Ο καθορισµός της πρότυπης λογικής γίνεται χρησιµοποιώντας τη διαισθητική γλώσσα έκφρασης προδιαγραφών Gherkin, ενώ η χρήση της ϐιβλιοθήκης δεν απαιτεί καµία αλλαγή στον υπάρχον κώδικα. Για την υλοποίησή της αξιοποιήσαµε µια σειρά εργαλείων της ϑεωρίας γράφων, της ϑεωρίας τυπικών γλωσσών, της χρονικής λογικής καθώς και µοντέλα ϐαθιάς µηχανικής µάθησης, εστιάζοντας περισσότερο στα νευρωνικά δίκτυα γράφων. Θεµελιώσαµε µαθηµατικά ένα νέο είδος γράφου για την αναπαράσταση χρονικών προδιαγραφών και ορίσαµε για αυτόν ένα σύνολο µαθηµατικά τεκµηριωµένων λογικών αλγορίθµων. Στη συνέχεια, αξιοποιήσαµε τις δοµές αυτές προκειµένου να υλοποιήσουµε ένα νέο σύστηµα αυτόµατης απόδειξης ϑεωρη µάτων, το οποίο µας εξασφαλίζει την απόλυτη εγκυρότητα των εντοπισµένων παραβιάσεων. Αξιολογήσαµε πέντε διαφορετικές αποδεικτικές αρχιτεκτονικές, αποτελούµενες από ευριστικούς κανόνες και απλά νευρωνικά µοντέλα, µέχρι µεγάλα νευρωνικά δίκτυα γράφων. Για την εκπαίδευση των νευρωνικών συστηµάτων υλοποιήσαµε ένα µηχανισµό παραγω γής συνθετικών ϑεωρηµάτων, αξιοποιώντας µια σειρά από µαθηµατικές ιδιότητες. Τέλος, χρησιµοποιήσαµε τη lovpy για να εντοπίσουµε σφάλµατα σε δύο δηµοφιλή ϐιβλιοθήκες ανοιχτού κώδικα, την Django και την Keras.
This presentation by Patryk Piechaczek and Sergii Pekarskiy (Software Engineer and Senior Software Engineer, Consultants, GlobalLogic, Kraków, Poland) was delivered at GlobalLogic Kharkiv Java Conference 2019 on June 9, 2019.
Patryk and Sergii presented new features, reviewed differences between Java and Kotlin, and shared about the specifics of migration. The presenters conclusively proved that Kotlin is not only an interesting, but also an extremely helpful tool of efficient coding.
Video: https://youtu.be/IJdMwSZkUNQ
This is a Question Papers of Mumbai University for B.Sc.IT Student of Semester - V [Network Security] (75:25 Pattern). [Year - November / 2015] . . . Solution Set of this Paper is Coming soon . . .
This is a Question Papers of Mumbai University for B.Sc.IT Student of Semester - V [Network Security] (75:25 Pattern). [Year - November / 2015] . . . Solution Set of this Paper is Coming soon . . .
Is this Swift for Android? A short introduction to the Kotlin languageAntonis Lilis
Do you like Java but wish you didn’t have to write so much boilerplate code? Kotlin is now an officially supported language for Android and has an answer for this. Kotlin aims to address many of the pitfalls that are common with Java development, while making your code more concise, safe, and expressive. It is also 100% interoperable with Java and can be mixed in the same project.
Introducing Kotlin — JVM-based language made by JetBrains. Kotlin takes aim at the age and perceived uncoolness of the Java with fresh and popular language features. It can do anything the Java language can do and more, but often with a more concise and pleasant syntax.
Clojure - an introduction (and some CFML)Kai Koenig
This is a talk I gave at CFCAMP 2012 in Munich. It's an introduction to Clojure for CFML developers and how to leverage Clojure from a CFML developer's point of view.
There are various examples and demo code that's not on the slides, contact me if you're interested in it.
The advent of multicore CPUs have facilitated the enhancement of performance in many application domains. But it has shifted the burden of maximizing the usage of this hardware resource to the developers of operating systems and programming languages and ultimately the software engineers who have to develop the applications.
We first look at the concurrency primitives that modern operating systems provides us to work with, namely processes and threads. With Python, a common approach is to use threads which have shared memory. However this can be difficult to do well as it is easy to run into race conditions and other bugs. And Python threads, unlike OS threads, cannot run at the same time due to the infamous GIL, thus limiting us to only one core.
To utilize multiple cores in Python, an effective and better solution is to use multiple processes, each with their own memory space and provide inter-process communication using message passing. We will look at the multiprocessing module and how to use it for this purpose.
Eth cc --eth2-tests-and-implementationBruno Skvorc
Slides for the Ethereum 2.0 Tests talk at EthCC: https://www.youtube.com/watch?v=6c4mQg5L6Rs - focuses on cross-client test suites and how they can or cannot help develop compatible non-breaking software for the next financial revolution
Μεταπρογραµµατισµός κώδικα Python σε γλώσσα γραµµικού χρόνου για αυτόµατη επα...ISSEL
Ο όρος επαλήθευση λογικής κατά την εκτέλεση οριοθετεί ένα πεδίο που εκτείνεται από τον έλεγχο λογισµικού για τη συµµόρφωση µε ένα σύνολο προδιαγραφών, έως την εναρµόνιση µε καλές λογικές πρακτικές κατά τη συγγραφή κώδικα. Στο πλαίσιο αυτό, υλοποιήσαµε τη lovpy, µια ϐιβλιοθήκη µεταπρογραµµατισµού για τη γλώσσα Python, που εισάγει σε αυτή τις δυνατότητες της επαλήθευσης λογικής κατά την εκτέλεση. Ο καθορισµός της πρότυπης λογικής γίνεται χρησιµοποιώντας τη διαισθητική γλώσσα έκφρασης προδιαγραφών Gherkin, ενώ η χρήση της ϐιβλιοθήκης δεν απαιτεί καµία αλλαγή στον υπάρχον κώδικα. Για την υλοποίησή της αξιοποιήσαµε µια σειρά εργαλείων της ϑεωρίας γράφων, της ϑεωρίας τυπικών γλωσσών, της χρονικής λογικής καθώς και µοντέλα ϐαθιάς µηχανικής µάθησης, εστιάζοντας περισσότερο στα νευρωνικά δίκτυα γράφων. Θεµελιώσαµε µαθηµατικά ένα νέο είδος γράφου για την αναπαράσταση χρονικών προδιαγραφών και ορίσαµε για αυτόν ένα σύνολο µαθηµατικά τεκµηριωµένων λογικών αλγορίθµων. Στη συνέχεια, αξιοποιήσαµε τις δοµές αυτές προκειµένου να υλοποιήσουµε ένα νέο σύστηµα αυτόµατης απόδειξης ϑεωρη µάτων, το οποίο µας εξασφαλίζει την απόλυτη εγκυρότητα των εντοπισµένων παραβιάσεων. Αξιολογήσαµε πέντε διαφορετικές αποδεικτικές αρχιτεκτονικές, αποτελούµενες από ευριστικούς κανόνες και απλά νευρωνικά µοντέλα, µέχρι µεγάλα νευρωνικά δίκτυα γράφων. Για την εκπαίδευση των νευρωνικών συστηµάτων υλοποιήσαµε ένα µηχανισµό παραγω γής συνθετικών ϑεωρηµάτων, αξιοποιώντας µια σειρά από µαθηµατικές ιδιότητες. Τέλος, χρησιµοποιήσαµε τη lovpy για να εντοπίσουµε σφάλµατα σε δύο δηµοφιλή ϐιβλιοθήκες ανοιχτού κώδικα, την Django και την Keras.
This presentation by Patryk Piechaczek and Sergii Pekarskiy (Software Engineer and Senior Software Engineer, Consultants, GlobalLogic, Kraków, Poland) was delivered at GlobalLogic Kharkiv Java Conference 2019 on June 9, 2019.
Patryk and Sergii presented new features, reviewed differences between Java and Kotlin, and shared about the specifics of migration. The presenters conclusively proved that Kotlin is not only an interesting, but also an extremely helpful tool of efficient coding.
Video: https://youtu.be/IJdMwSZkUNQ
This is a Question Papers of Mumbai University for B.Sc.IT Student of Semester - V [Network Security] (75:25 Pattern). [Year - November / 2015] . . . Solution Set of this Paper is Coming soon . . .
This is a Question Papers of Mumbai University for B.Sc.IT Student of Semester - V [Network Security] (75:25 Pattern). [Year - November / 2015] . . . Solution Set of this Paper is Coming soon . . .
Is this Swift for Android? A short introduction to the Kotlin languageAntonis Lilis
Do you like Java but wish you didn’t have to write so much boilerplate code? Kotlin is now an officially supported language for Android and has an answer for this. Kotlin aims to address many of the pitfalls that are common with Java development, while making your code more concise, safe, and expressive. It is also 100% interoperable with Java and can be mixed in the same project.
Introducing Kotlin — JVM-based language made by JetBrains. Kotlin takes aim at the age and perceived uncoolness of the Java with fresh and popular language features. It can do anything the Java language can do and more, but often with a more concise and pleasant syntax.
Lock-free algorithms for Kotlin CoroutinesRoman Elizarov
Presentation for SPTCC 2017 - http://neerc.ifmo.ru/sptcc/
Video (part 1): https://www.youtube.com/watch?v=W2dOOBN1OQI
Video (part 2): https://www.youtube.com/watch?v=iQsN_IDUTSc
No ano de 2017 a Zup teve como um dos principais desafios o lançamento da plataforma Realwave 3.0: um componente de BSS (Business Support Systems).
Nessa apresentação iremos mostrar como o Kotlin tem contribuído para que seja possível atingir os resultados esperados, bem como as vantagens e desafios da utilização da linguagem para refinar o uso de DDD, Event Sourcing e CQRS.
Hoje o Realwave 3.0 conta com mais de 50 microservices, e faz uso das mais diversas tecnologias, sendo as principais em destaque: Spring Boot, Spring Cloud, Event Store, Axon, Kafka, Elasticsearch, Event Store Database, Postgresql, Redis, Camunda, e Keycloak.
Creating Realistic Unit Tests with TestcontainersPaul Balogh
** Recording available at https://www.youtube.com/watch?v=sX4s1HqPZcw **
Sometimes, unit tests with mocked services just aren't enough. We'd like to be able to run repeatable tests against the real thing without fear of corrupting data or affecting others.
With Testcontainers, there is no need for mocks or complicated environment configurations. We can define our target environment in code and then run our tests against ephemeral containers. Java developers have had this ability for several years, but now Go developers have this similar ability!
Enjoy the discussion and demonstration of this open-source project created by the folks at AtomicJar, recently acquired by Docker.
Kotlin is new JVM language still cooking in Jetbrains kitchen. It looks awesome compared to Java 7, but now, with Java 8 in the field, the question arises: “Does Kotlin still have enough advantages over Java to attract Java developers?” Similar questions could be asked for other JVM languages like Scala, Ceylon, Clojure. We tried to compare new features of Java 8 with corresponding features of Kotlin and see what Kotlin offers beyond features existing in latest Java release.
When you are about to delete an object, how do you know that it is not being used in another thread?
How can you tell if the object is still alive before you trying call its member function? Is it being destructed in another thread?
If you still haven't heard of it, there is a new star in JVM sky - Kotlin. This short presentation will serve as intro for those who wan't to hear what's all the fuss about and dive deeper into this new alternative to Java
Introduction: This session discusses simple guidelines that can help develop reliable and high performing parallelism friendly applications in Java. It introduces some of the best practices that can be adopted in Concurrent programming in Java. The session also briefly explains various techniques used by the Java Virtual Machine to optimize synchronization.
Background: Over the years, there has been significant amount of work to make Java support concurrency with less overhead. With the advent of multi-cores, Parallelism is very essential to increase the Application throughput. Parallelism introduces atomicity and visibility issues. From Java 5 onwards, significant improvements like java.util.concurrency, Latches, Barriers are introduced to support Concurrency.
Considerable improvements have also been done at the Virtual Machine level to optimize synchronizations.
Session Agenda: The Session focuses on the “What?Why?How? of Concurrency” in java. It briefly describes the synchronizing features available in Java. A common set of pitfalls faced in Concurrent programming and methods to over come these pitfalls are also introduced. Usage of concurrent collections, Latches and Barriers is demonstrated. Much attention has been given to optimize lock management and synchronization in Java virtual machine. Features like biased locking, lock coarsening, lock elision by escape analysis and adaptive spin locking aim at this optimization. The Session explains each of these features.
Summary: The session describes some of the best practices in developing bug-free concurrent applications. Common pitfalls encountered in concurrent design and methods to avoid such pitfalls are also described.
Concurrency on the JVM showing the nuts and bolts of Akka (I presume .. it's not first-hand stuff I'm saying, just speculating). Java Memory Model, Thread Pools, Actors and the likes of that will be covered.
Ice Age melting down: Intel features considered usefull!Peter Hlavaty
Decades history of kernel exploitation, however still most used techniques are such as ROP. Software based approaches comes finally challenge this technique, one more successful than the others. Those approaches usually trying to solve far more than ROP only problem, and need to handle not only security but almost more importantly performance issues. Another common attacker vector for redirecting control flow is stack what comes from design of today’s architectures, and once again some software approaches lately tackling this as well. Although this software based methods are piece of nice work and effective to big extent, new game changing approach seems coming to the light. Methodology closing this attack vector coming right from hardware - intel. We will compare this way to its software alternatives, how one interleaving another and how they can benefit from each other to challenge attacker by breaking his most fundamental technologies. However same time we go further, to challenge those approaches and show that even with those technologies in place attackers is not yet in the corner.
A lightening talk I gave at the last Kubernetes Milano Meetup about what it takes to split a monolithic codebase, when you should do it and a few tips to keep in mind during the process.
Similar to Cutting edge android stack. One year later (20)
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Globus
Large Language Models (LLMs) are currently the center of attention in the tech world, particularly for their potential to advance research. In this presentation, we'll explore a straightforward and effective method for quickly initiating inference runs on supercomputers using the vLLM tool with Globus Compute, specifically on the Polaris system at ALCF. We'll begin by briefly discussing the popularity and applications of LLMs in various fields. Following this, we will introduce the vLLM tool, and explain how it integrates with Globus Compute to efficiently manage LLM operations on Polaris. Attendees will learn the practical aspects of setting up and remotely triggering LLMs from local machines, focusing on ease of use and efficiency. This talk is ideal for researchers and practitioners looking to leverage the power of LLMs in their work, offering a clear guide to harnessing supercomputing resources for quick and effective LLM inference.
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...Juraj Vysvader
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I didn't get rich from it but it did have 63K downloads (powered possible tens of thousands of websites).
We describe the deployment and use of Globus Compute for remote computation. This content is aimed at researchers who wish to compute on remote resources using a unified programming interface, as well as system administrators who will deploy and operate Globus Compute services on their research computing infrastructure.
Experience our free, in-depth three-part Tendenci Platform Corporate Membership Management workshop series! In Session 1 on May 14th, 2024, we began with an Introduction and Setup, mastering the configuration of your Corporate Membership Module settings to establish membership types, applications, and more. Then, on May 16th, 2024, in Session 2, we focused on binding individual members to a Corporate Membership and Corporate Reps, teaching you how to add individual members and assign Corporate Representatives to manage dues, renewals, and associated members. Finally, on May 28th, 2024, in Session 3, we covered questions and concerns, addressing any queries or issues you may have.
For more Tendenci AMS events, check out www.tendenci.com/events
Understanding Globus Data Transfers with NetSageGlobus
NetSage is an open privacy-aware network measurement, analysis, and visualization service designed to help end-users visualize and reason about large data transfers. NetSage traditionally has used a combination of passive measurements, including SNMP and flow data, as well as active measurements, mainly perfSONAR, to provide longitudinal network performance data visualization. It has been deployed by dozens of networks world wide, and is supported domestically by the Engagement and Performance Operations Center (EPOC), NSF #2328479. We have recently expanded the NetSage data sources to include logs for Globus data transfers, following the same privacy-preserving approach as for Flow data. Using the logs for the Texas Advanced Computing Center (TACC) as an example, this talk will walk through several different example use cases that NetSage can answer, including: Who is using Globus to share data with my institution, and what kind of performance are they able to achieve? How many transfers has Globus supported for us? Which sites are we sharing the most data with, and how is that changing over time? How is my site using Globus to move data internally, and what kind of performance do we see for those transfers? What percentage of data transfers at my institution used Globus, and how did the overall data transfer performance compare to the Globus users?
Large Language Models and the End of ProgrammingMatt Welsh
Talk by Matt Welsh at Craft Conference 2024 on the impact that Large Language Models will have on the future of software development. In this talk, I discuss the ways in which LLMs will impact the software industry, from replacing human software developers with AI, to replacing conventional software with models that perform reasoning, computation, and problem-solving.
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisGlobus
JASMIN is the UK’s high-performance data analysis platform for environmental science, operated by STFC on behalf of the UK Natural Environment Research Council (NERC). In addition to its role in hosting the CEDA Archive (NERC’s long-term repository for climate, atmospheric science & Earth observation data in the UK), JASMIN provides a collaborative platform to a community of around 2,000 scientists in the UK and beyond, providing nearly 400 environmental science projects with working space, compute resources and tools to facilitate their work. High-performance data transfer into and out of JASMIN has always been a key feature, with many scientists bringing model outputs from supercomputers elsewhere in the UK, to analyse against observational or other model data in the CEDA Archive. A growing number of JASMIN users are now realising the benefits of using the Globus service to provide reliable and efficient data movement and other tasks in this and other contexts. Further use cases involve long-distance (intercontinental) transfers to and from JASMIN, and collecting results from a mobile atmospheric radar system, pushing data to JASMIN via a lightweight Globus deployment. We provide details of how Globus fits into our current infrastructure, our experience of the recent migration to GCSv5.4, and of our interest in developing use of the wider ecosystem of Globus services for the benefit of our user community.
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxrickgrimesss22
Discover the essential features to incorporate in your Winzo clone app to boost business growth, enhance user engagement, and drive revenue. Learn how to create a compelling gaming experience that stands out in the competitive market.
Enhancing Research Orchestration Capabilities at ORNL.pdfGlobus
Cross-facility research orchestration comes with ever-changing constraints regarding the availability and suitability of various compute and data resources. In short, a flexible data and processing fabric is needed to enable the dynamic redirection of data and compute tasks throughout the lifecycle of an experiment. In this talk, we illustrate how we easily leveraged Globus services to instrument the ACE research testbed at the Oak Ridge Leadership Computing Facility with flexible data and task orchestration capabilities.
May Marketo Masterclass, London MUG May 22 2024.pdfAdele Miller
Can't make Adobe Summit in Vegas? No sweat because the EMEA Marketo Engage Champions are coming to London to share their Summit sessions, insights and more!
This is a MUG with a twist you don't want to miss.
top nidhi software solution freedownloadvrstrong314
This presentation emphasizes the importance of data security and legal compliance for Nidhi companies in India. It highlights how online Nidhi software solutions, like Vector Nidhi Software, offer advanced features tailored to these needs. Key aspects include encryption, access controls, and audit trails to ensure data security. The software complies with regulatory guidelines from the MCA and RBI and adheres to Nidhi Rules, 2014. With customizable, user-friendly interfaces and real-time features, these Nidhi software solutions enhance efficiency, support growth, and provide exceptional member services. The presentation concludes with contact information for further inquiries.
Enterprise Resource Planning System includes various modules that reduce any business's workload. Additionally, it organizes the workflows, which drives towards enhancing productivity. Here are a detailed explanation of the ERP modules. Going through the points will help you understand how the software is changing the work dynamics.
To know more details here: https://blogs.nyggs.com/nyggs/enterprise-resource-planning-erp-system-modules/
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...informapgpstrackings
Keep tabs on your field staff effortlessly with Informap Technology Centre LLC. Real-time tracking, task assignment, and smart features for efficient management. Request a live demo today!
For more details, visit us : https://informapuae.com/field-staff-tracking/
Globus Connect Server Deep Dive - GlobusWorld 2024Globus
We explore the Globus Connect Server (GCS) architecture and experiment with advanced configuration options and use cases. This content is targeted at system administrators who are familiar with GCS and currently operate—or are planning to operate—broader deployments at their institution.
A Comprehensive Look at Generative AI in Retail App Testing.pdfkalichargn70th171
Traditional software testing methods are being challenged in retail, where customer expectations and technological advancements continually shape the landscape. Enter generative AI—a transformative subset of artificial intelligence technologies poised to revolutionize software testing.
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Shahin Sheidaei
Games are powerful teaching tools, fostering hands-on engagement and fun. But they require careful consideration to succeed. Join me to explore factors in running and selecting games, ensuring they serve as effective teaching tools. Learn to maintain focus on learning objectives while playing, and how to measure the ROI of gaming in education. Discover strategies for pitching gaming to leadership. This session offers insights, tips, and examples for coaches, team leads, and enterprise leaders seeking to teach from simple to complex concepts.
8. Basics
1.No state - simpler program
a. “Simple made easy” talk by Rich Hickey
2.Mutable state is the core of concurrency issues
3.Allows to perform more optimizations
4.Immutability is transitive
29. High-level view on architecture
ViewModel
View
starts here
Retrofit BL homeSOLID
Dagger 2
helps here
Service A
Service B
Service D
Networking
ends here
31. Main ideas
1.Separation of concerns (clean architecture principles)
2.Dependencies of SUT are interfaces
3.Business logic is isolated from platform code
4.UI layer can be replaced for tests
47. Testing. Koltin + Mockito
1.Everything is final by default in Kotlin
a. Solution 1: PowerMock. Dirty
b. Solution 2: Clean architecture. Clean
2.Mockito returns nulls where Koltin expects non-nullable
a. Use Mockito-Kotlin library
48. Java -> Kotlin interop
Beware of nulls that come from the Java’s dark side
String!
50. Compile time
1.Was kind of a problem:
a. Clean ~3 min
b. Incremental ~55 sec
c. Of which compile Kotlin ~50 sec
2.Much better with Koltin 1.0.2 & dex in process
a. Clean ~2m
Всем привет!
Меня зовут Антон
Меня зовут Игорь
Мы разрабатываем 2 Android приложения в компании Juno.
Традиционный вопрос: кто здесь Андроид разработчик?
А кто использовал Kotlin?
А кто использовал RxJava?
Ок, вам будет чуть понятнее о чем речь, но и для остальных никакого rocket science не будет.
Сегодня мы расскажем вам, что мы поняли за год использования нашего стека.Говорить будем много и быстро. У нас нету цели научить вас чему-то, скорее поделиться опытом. Если останется время - обсудим наиболее инетерсные темы подробнее.
Но сначала пара слов о Juno - компании, в которой созданы условия для того, чтобы писать действительно качественные программы, и благодаря которой, собственно, нам сегодня есть чем поделиться с вами. Да, Juno еще является спонсором сегодняшнего митапа.
Juno - это новый sharing-economy стратап, мы сейчас находимся на стадии public beta в NY.
В основе компании лежат принципы доброго, уважительного, позитивного отношения ко всем заинтересованным сторонам.
Примерно так выглядит Juno для человека снаружи.
Естественно, те же самые принципы живут и внутри компании. Помимо очень хороших людей, Juno удалось собрать одновременно и отличных профессионалов. Многие из ребят были в предыдущих компаниях либо тимлидами, либо очень сильными разработчиками, а в Juno они все еще начали учиться друг у друга и дополнять друг друга. Мой уровень и как и уровень других ребят у нас вырос за последний год очень сильно, и, что самое интеерсное, чем выше ты растешь, тем лучше ты понимаешь насколько мало знаешь. И это вот все действителньо мотивирует. Тот драйв, который был когда мы только начинали, за год только вырос.
Мне действительно сложно передать вам, насколько это круто :)
Давайте скажем спасибо Juno :)
С технологической точки зрения мобильные команды сами выбирали свой стек, и получился он, естественно, cutting edge. Игорь?
Перегружает equals, hashCode, toString
Мы говорили о транзитивности - иммутабельная ссылка, иммутабельны все проперти объекта.
Copy - если хотим изменить объект
Транзитивность - ссылка, объект, коллекция объектов
Итого - переменных почти нету, программа получается простой в смысле simple, а не easy.
Ну и конечно, количество проблем с многопоточностью уменьшается драматически - об этом расскажет Игорь.
Если можете избегайте, если не можете - минимизируйте стэйт. Изи ту факап
Прослеживается через весь язык
Гарантируется в compile time -> не было ни одного NPE в проде. Да и вообще крешей почти/совсем нету
Bottom line - null safety это круто, начинаешь по другому мыслить, гораздо чаще скомпилировавшийся код работает.
Функция - это объект.
Есть лямбды, есть функции вне классов.
WHY? Runtime проверка на “тип данных” переходит в compile-time
-1 превращается в конкретный тип. А это значит:
run-time проверка на “-1” переходит в compile-time
На UI нигде не вылезет “-1”
Error prone стрим -> to Error free в TypeSafe манере. Привет Rx.
Отсутствие синтаксической шелухи
Благодаря таким стримам в проекте нету, наверное, ни одного обычного for
RX стрим - классная визуализация потока данных. Весь пайплайн изложен в виде последовательных операций над данными, что упрощает чтение и восприятие кода.
В проактивном java-мире этот код занимал бы в несколько раз больше места, от этого он отнюдь не был бы более понятным. Меньше кода - лучше фокус - меньше багов.
Разделение ответственности сущностей (принципы clean architecture)
Вынесенение интерфейсов для зависимостей SUT.
Изоляция бизнес-логики от платформы.
Возможность подмены UI уровня (одна из зависимостей SUT) в тесте.
Когда тип приходит из Java, он помечается !
С ним можно работать как с non-null, но если будет null, то бросится exception.
Прочувствовать RX
Что у собаки снизу? Правильно, everything is a stream.