Git is a distributed version control system that allows developers to work collaboratively on projects. It works by creating snapshots of files in a project over time. Developers can commit changes locally and then push them to a remote repository to share with others. Key Git concepts include repositories, commits, branches, cloning repositories from remote locations, and commands like push, pull, commit, log and diff to manage changes.
This document discusses using Akka actors and Redis for building a scalable chat server architecture. Key points include:
1) Using Akka actors for the chat room, user, and supervisor actors to handle chat logic and failures in a distributed, asynchronous manner.
2) Storing chat room membership and messages in Redis for real-time updates between actors using pub/sub.
3) The Lettuce client is used to handle connections to the Redis cluster for features like master/slave failover and periodic topology refreshes.
This document provides an overview and agenda for introducing GitLab tools. It discusses trends in modern development like increased use of open source tools and continuous integration/deployment. GitLab is presented as a one platform solution that provides version control, issue tracking, code review, CI/CD pipelines, and other DevOps tools. Key benefits of GitLab like open source contributions and frequent releases are outlined. Upcoming features in GitLab 11 like CI pipelines in the web IDE and license management are previewed. The presentation concludes with a Q&A and information on how to get a GitLab cheat sheet.
Chaos Engineering is the technique to simulate chaos and havoc in the live environment, which the engineers use to create a fault tolerant application. In the session we will talk about some of these scenarios and Chaos Mesh, a tool for Chaos engineering on Kubernetes.
GITS Class #16: CI/CD (Continuous Integration & Continuous Deployment) with G...GITS Indonesia
Pada Juli 2019, berlangsung GITS Class #16, workshop gratis dan terbuka untuk umum, di kantor GITS Indonesia. Farhan (DevOps di GITS Indonesia) membawakan materi tentang CI/CD menggunakan GitLab Runner.
Jangan sampai ketinggalan!
Follow akun GITS Indonesia untuk mendapatkan info terkait event seru selanjutnya!
Instagram: @gitsindonesia
Twitter: @gitsindonesia
Facebook: GITS Indonesia
Medium: GITS Apps Insight
YouTube: GITS Indonesia
LinkedIn: GITS Indonesia
Website: https://gits.id/
Our experience in using GitLab CI on NodeJS project
Link to reveal.js presentation: https://github.com/Lingvokot/using-gitlab-ci
While CMake has become the de-facto standard buildsystem for C++, it's siblings CTest and CPack are less well known. This talk gives a lightspeed introduction into these three tools and then focuses on best practices on building, testing, and packaging.
This document provides an introduction to Gitlab CI and continuous integration/continuous delivery (CI/CD) workflows. It discusses DevOps practices and the benefits of Gitlab CI. It then covers how to set up Gitlab runners, write a basic Gitlab CI configuration file, define jobs, stages, variables and environments. The document demonstrates concepts like Docker integration, artifacts, auto and manual deployments, and stopping deployments. It concludes with a live demo of a Gitlab CI configuration.
This document provides an overview of DevOps, Git basics, and their relationship. It discusses how DevOps aims to improve collaboration between development and operations teams through practices like continuous integration, continuous delivery, and infrastructure automation. It also introduces some key DevOps terminology. Additionally, it covers the basics of using Git for version control, including tracking files, staging changes, committing, ignoring files, and pushing/pulling from remote repositories.
레드햇의 Etsuji Nakai 씨의 "OpenStack: Inside Out" 한글 번역본입니다.
다시 한번 좋은 문서를 공유해주신 Etsuji Nakai 씨에게 감사를 드립니다.
http://www.slideshare.net/enakai/open-stack-insideoutv10
Spring Framework 5.0による Reactive Web Application #JavaDayTokyoToshiaki Maki
The document discusses reactive programming and the Spring Framework 5.0 release. It provides an overview of reactive programming concepts like asynchronous non-blocking applications. It also discusses Reactive Streams and libraries like Reactor. Finally, it covers new features in Spring Framework 5.0 like performance improvements, support for JDK 9, and the introduction of reactive APIs in Spring.
Git is a distributed version control system that was created by Linus Torvalds in 2005 to manage the Linux kernel source code. It allows developers to work simultaneously and maintain a complete history of their work. Git uses a distributed model where every developer has a full copy of the code repository, enabling them to work offline and collaborate asynchronously by integrating changes from any repository. Developers commit changes to their local repository and synchronize changes by pushing to or pulling from remote repositories.
GitOps è un nuovo metodo di CD che utilizza Git come unica fonte di verità per le applicazioni e per l'infrastruttura (declarative infrastructure/infrastructure as code), fornendo sia il controllo delle revisioni che il controllo delle modifiche. In questo talk vedremo come implementare workflow di CI/CD Gitops basati su Kubernetes, dalla teoria alla pratica passando in rassegna i principali strumenti oggi a disposizione come ArgoCD, Flux (aka Gitops engine) e JenkinsX
This document discusses Jenkins Pipelines, which allow defining continuous integration and delivery (CI/CD) pipelines as code. Key points:
- Pipelines are defined using a Groovy domain-specific language (DSL) for stages, steps, and environment configuration.
- This provides configuration as code that is version controlled and reusable across projects.
- Jenkins plugins support running builds and tests in parallel across Docker containers.
- Notifications can be sent to services like Slack on failure.
- The Blue Ocean UI in Jenkins focuses on visualization of pipeline runs.
The document compares features of GitHub and GitLab version control software. It notes that both support code repositories, issue tracking, pull requests, and project web pages. Additionally, it states that GitLab offers integrated continuous integration and container registry features. The document promotes GitLab as having CI integrated directly with the code repository, hassle-free pipeline creation, a seamless workflow, an open source business model, rapid growth, and complete transparency.
Git pull requests allow for better collaboration and code reviews. Pull requests initiate discussions about proposed code changes by showing exactly what would be merged. Team members can provide feedback and additional commits can be added to address feedback before merging. It is recommended to work on topic branches for new features or bugs rather than directly on the main branch. Pull requests can be automatically built using services like TeamCity to validate tests pass before merging.
Git is a version control system for tracking changes to files, while GitLab is a web-based Git repository manager with additional features. The document discusses Git and GitLab workflows including continuous integration, continuous delivery, and continuous deployment using GitLab. It also provides examples of common Git commands like add, commit, push, pull, branch, tag, and undo.
This document provides an overview of Git commands and workflows:
- It introduces basic Git commands for setting up a local repository, adding and committing files, viewing the status and differences between commits, ignoring files, and more.
- Common workflows are demonstrated including cloning a repository, making changes and committing them locally, and pushing changes to a remote repository.
- More advanced topics are covered like branching, merging, rebasing, resolving conflicts, and using tools to help with these processes.
- Configuration options and tips are provided to customize Git behavior and inspect repositories.
** Kubernetes Certification Training: https://www.edureka.co/kubernetes-cer... **
This Edureka tutorial on "Kubernetes Networking" will give you an introduction to popular DevOps tool - Kubernetes, and will deep dive into Kubernetes Networking concepts. The following topics are covered in this training session:
1. What is Kubernetes?
2. Kubernetes Cluster
3. Pods, Services & Ingress Networks
4. Case Study of Wealth Wizards
5. Hands-On
DevOps Tutorial Blog Series: https://goo.gl/P0zAfF
Our experience in using GitLab CI on NodeJS project
Link to reveal.js presentation: https://github.com/Lingvokot/using-gitlab-ci
While CMake has become the de-facto standard buildsystem for C++, it's siblings CTest and CPack are less well known. This talk gives a lightspeed introduction into these three tools and then focuses on best practices on building, testing, and packaging.
This document provides an introduction to Gitlab CI and continuous integration/continuous delivery (CI/CD) workflows. It discusses DevOps practices and the benefits of Gitlab CI. It then covers how to set up Gitlab runners, write a basic Gitlab CI configuration file, define jobs, stages, variables and environments. The document demonstrates concepts like Docker integration, artifacts, auto and manual deployments, and stopping deployments. It concludes with a live demo of a Gitlab CI configuration.
This document provides an overview of DevOps, Git basics, and their relationship. It discusses how DevOps aims to improve collaboration between development and operations teams through practices like continuous integration, continuous delivery, and infrastructure automation. It also introduces some key DevOps terminology. Additionally, it covers the basics of using Git for version control, including tracking files, staging changes, committing, ignoring files, and pushing/pulling from remote repositories.
레드햇의 Etsuji Nakai 씨의 "OpenStack: Inside Out" 한글 번역본입니다.
다시 한번 좋은 문서를 공유해주신 Etsuji Nakai 씨에게 감사를 드립니다.
http://www.slideshare.net/enakai/open-stack-insideoutv10
Spring Framework 5.0による Reactive Web Application #JavaDayTokyoToshiaki Maki
The document discusses reactive programming and the Spring Framework 5.0 release. It provides an overview of reactive programming concepts like asynchronous non-blocking applications. It also discusses Reactive Streams and libraries like Reactor. Finally, it covers new features in Spring Framework 5.0 like performance improvements, support for JDK 9, and the introduction of reactive APIs in Spring.
Git is a distributed version control system that was created by Linus Torvalds in 2005 to manage the Linux kernel source code. It allows developers to work simultaneously and maintain a complete history of their work. Git uses a distributed model where every developer has a full copy of the code repository, enabling them to work offline and collaborate asynchronously by integrating changes from any repository. Developers commit changes to their local repository and synchronize changes by pushing to or pulling from remote repositories.
GitOps è un nuovo metodo di CD che utilizza Git come unica fonte di verità per le applicazioni e per l'infrastruttura (declarative infrastructure/infrastructure as code), fornendo sia il controllo delle revisioni che il controllo delle modifiche. In questo talk vedremo come implementare workflow di CI/CD Gitops basati su Kubernetes, dalla teoria alla pratica passando in rassegna i principali strumenti oggi a disposizione come ArgoCD, Flux (aka Gitops engine) e JenkinsX
This document discusses Jenkins Pipelines, which allow defining continuous integration and delivery (CI/CD) pipelines as code. Key points:
- Pipelines are defined using a Groovy domain-specific language (DSL) for stages, steps, and environment configuration.
- This provides configuration as code that is version controlled and reusable across projects.
- Jenkins plugins support running builds and tests in parallel across Docker containers.
- Notifications can be sent to services like Slack on failure.
- The Blue Ocean UI in Jenkins focuses on visualization of pipeline runs.
The document compares features of GitHub and GitLab version control software. It notes that both support code repositories, issue tracking, pull requests, and project web pages. Additionally, it states that GitLab offers integrated continuous integration and container registry features. The document promotes GitLab as having CI integrated directly with the code repository, hassle-free pipeline creation, a seamless workflow, an open source business model, rapid growth, and complete transparency.
Git pull requests allow for better collaboration and code reviews. Pull requests initiate discussions about proposed code changes by showing exactly what would be merged. Team members can provide feedback and additional commits can be added to address feedback before merging. It is recommended to work on topic branches for new features or bugs rather than directly on the main branch. Pull requests can be automatically built using services like TeamCity to validate tests pass before merging.
Git is a version control system for tracking changes to files, while GitLab is a web-based Git repository manager with additional features. The document discusses Git and GitLab workflows including continuous integration, continuous delivery, and continuous deployment using GitLab. It also provides examples of common Git commands like add, commit, push, pull, branch, tag, and undo.
This document provides an overview of Git commands and workflows:
- It introduces basic Git commands for setting up a local repository, adding and committing files, viewing the status and differences between commits, ignoring files, and more.
- Common workflows are demonstrated including cloning a repository, making changes and committing them locally, and pushing changes to a remote repository.
- More advanced topics are covered like branching, merging, rebasing, resolving conflicts, and using tools to help with these processes.
- Configuration options and tips are provided to customize Git behavior and inspect repositories.
** Kubernetes Certification Training: https://www.edureka.co/kubernetes-cer... **
This Edureka tutorial on "Kubernetes Networking" will give you an introduction to popular DevOps tool - Kubernetes, and will deep dive into Kubernetes Networking concepts. The following topics are covered in this training session:
1. What is Kubernetes?
2. Kubernetes Cluster
3. Pods, Services & Ingress Networks
4. Case Study of Wealth Wizards
5. Hands-On
DevOps Tutorial Blog Series: https://goo.gl/P0zAfF
This document summarizes the discussions from the OOUI Working Group meeting on October 26, 2020. It discusses several topics relating to OOUI, including defining OOUI, principles of OOUI, examples of CRUD interfaces, the relationship between UI and UX, and formatting data in CSV files. The working group aims to establish best practices and standards for developing open and accessible user interfaces.
2019/02/05 開催の「ソフトウェアジャパン2019」での発表資料です。データから価値を生み続けるための答えとその実現方法について、リクルートライフスタイルで年間十数億円稼ぐ CET チームならではの知見を共有します。
https://www.ipsj.or.jp/event/sj/sj2019/
37. val と var
val はgetterのみで再代入できない(read-only)
var はgetterとsetterがあり再代入できる(mutable)
val a = 0
var b = 0
a = 1 // NG
b = 1 // OK
38. List と MutableList
List は要素を変更するメソッドがない(read-only)
MutableList は要素を変更するメソッドがある(mutable)
val a = listOf(1, 2, 3)
val b = mutableListOf(1, 2, 3)
a.add(4) // NG
b.add(4) // OK
45. ある時点を過ぎると値が確定し、不変だ
値は変わらないのに var で、しかもNullable
class MainActivity : AppCompatActivity() {
var articleId: String? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
articleId = intent.getStringExtra(ARTICLE_ID)
}
}
46. ある時点を過ぎると値が確定し、不変だ
lazy で書くと val かつNonNullにできる
class MainActivity : AppCompatActivity() {
val articleId: String by lazy {
intent.getStringExtra(ARTICLE_ID)
}
}
66. 2つのリストを同時に扱う
val nameList = listOf("Alice", "Bob", "Charlie")
val ageList = listOf(20, 25, 30)
val size = minOf(nameList.size, ageList.size)
for (i in 0 until size) {
val name = nameList[i]
val age = ageList[i]
println("$name($age)")
}
67. 2つのリストを同時に扱う:zip
val nameList = listOf("Alice", "Bob", "Charlie")
val ageList = listOf(20, 25, 30)
nameList.zip(ageList) { name, age ->
println("$name($age)")
}
70. 変換と除外
val ids = listOf(...)
val fruits = mutableListOf<Fruit>()
for (id in ids) {
for (fruit in Fruit.values()) {
if (fruit.id == id) {
fruits.add(fruit)
}
}
}
return fruits
75. リストをN個ずつに分割
val idList = 'A'..'Z'
val charList = mutableListOf<MutableList<Char>>()
val count = idList.count()
for (i in 0 until count) {
if (i % 10 == 0) {
charList.add(mutableListOf())
}
charList.last().add(idList.elementAt(i))
}
return charList // [[A,B,……,J],[K,L,……,T],[U,V,……,Z]]
94. Nullable と NonNull
KotlinといえばNullabilityが嬉しい
val nullable: String? = null // OK
val nonNull: String = null // NG
nullable.length // NG
nullable!!.length // OK
nullable?.length // OK
nonNull.length // OK
117. そのままdata classにすると
検索条件はこんな感じに → data class SearchCondition(
val area: Area?,
val station: Station?,
val location: Location?,
val query: String?,
val menu: Menu?,
val price: Price?
// ...
)
118. 「ありえない状態」ができてしまう
【ビジネスロジック】
● エリア/駅/緯度経度は排他
○ でもいずれか1つは必須
● 料金はメニュー指定時のみ
● etc……
data class SearchCondition(
val area: Area?,
val station: Station?,
val location: Location?,
val query: String?,
val menu: Menu?,
val price: Price?
// ...
)
137. 状態数の分析
1. Kotlinを数式に変換する
2. 数式を展開する
3. ありえない項を削除する
4. 残った項をまとめる
5. 数式をKotlinに戻す
6. 適宜 sealed class や data class を使って意味付けをする
data class Target(
val abc: Either<Pair<A, B?>, C>?
)