@kannonboy's JavaOne 2016 presentation "Code reviews vs Pull requests"
Many styles and processes are available for code review. Which one is suitable for your team? Do you use Git, Subversion, or something more exotic? Do you prefer to review code precommit or via a pull request? Do you favor a feature branching, forking, or Gerrit-style workflow? This session breaks down the various popular options adopted by professional teams. It investigates pull requests (popularized by Bitbucket and GitHub), Gerrit’s specialized workflow, and other postcommit and precommit review systems, discussing the pros and cons of each. Finally, it shows the battle-hardened review processes used by Atlassian’s development teams, refined over tens of thousands of code reviews and pull requests and across countless retrospectives.
Tracking huge files with Git LFS (GlueCon 2016)Tim Pettersen
These are the slides from Tim Pettersen's (@kannonboy) presentation entitled "Tracking huge files with Git LFS" at GlueCon 2016 in Broomfield, Colorado. The video is available at https://www.youtube.com/watch?v=iJ3hXuEVKAc
Symfony Live NYC 2014 - Rock Solid Deployment of Symfony AppsPablo Godel
Web applications are becoming increasingly more complex, so deployment is not just transferring files with FTP anymore. We will go over the different challenges and how to deploy our PHP applications effectively, safely and consistently with the latest tools and techniques. We will also look at tools that complement deployment with management, configuration and monitoring.
The document discusses the modern developer toolbox and outlines various tools that developers can use for development environments, testing, debugging, profiling, deployment, logging, and monitoring of applications. It provides recommendations for setting up development environments on different operating systems and with tools like Vagrant, Docker, Ansible, and Homebrew. It also discusses PHP installation and editors/IDEs to use. Testing with PHPUnit, Behat, and Jenkins is covered as well as debugging with XDebug, profiling with XHProf, and deployment with Ansible, Capistrano and other options. Logging with Monolog, Logstash and Kibana is also summarized along with monitoring metrics with StatsD, Graphite and Grafana.
Dear Ninja Git Apprentice, your training will be short but it will be dense and fierce. I will teach you how to lock down your master's fortress from tampering and infiltration, how to become invisible and hide data in a repository, how to resist any attacks and recover your committed and uncommitted files, how to be fast as a fox to cover your tracks and resolve conflicts. Save the master!
This document discusses using Docker and Bamboo for continuous integration and deployment pipelines. It provides examples of configuring Bamboo to build, test, and deploy Docker images and applications. It also describes using Docker Compose in Bamboo pipelines and customizing Bamboo virtual machines with Packer and Ansible to have Docker pre-installed.
This document discusses Git internals and provides examples of how Git stores files and commits as objects in a directed acyclic graph (DAG). It explains that commits point to trees, which point to blobs containing file contents or other trees representing subdirectories. Branches and tags are explained as references to commit objects. Examples are given of branching, merging, tagging, and how remote tracking references map to repositories on remote servers.
AtlasCamp 2015 Docker continuous integration trainingSteve Smith
A 2-hour training session delivered at AtlasCamp in Prague, June 9th 2015.
* Docker vs virtual machines
* Docker concepts
* Docker for testing
* Automation with Docker Compose
* Continuous integration with Bamboo Docker support
* Extracting test results from Docker containers
* Continuous deployment with deployment environments
Tracking huge files with Git LFS (GlueCon 2016)Tim Pettersen
These are the slides from Tim Pettersen's (@kannonboy) presentation entitled "Tracking huge files with Git LFS" at GlueCon 2016 in Broomfield, Colorado. The video is available at https://www.youtube.com/watch?v=iJ3hXuEVKAc
Symfony Live NYC 2014 - Rock Solid Deployment of Symfony AppsPablo Godel
Web applications are becoming increasingly more complex, so deployment is not just transferring files with FTP anymore. We will go over the different challenges and how to deploy our PHP applications effectively, safely and consistently with the latest tools and techniques. We will also look at tools that complement deployment with management, configuration and monitoring.
The document discusses the modern developer toolbox and outlines various tools that developers can use for development environments, testing, debugging, profiling, deployment, logging, and monitoring of applications. It provides recommendations for setting up development environments on different operating systems and with tools like Vagrant, Docker, Ansible, and Homebrew. It also discusses PHP installation and editors/IDEs to use. Testing with PHPUnit, Behat, and Jenkins is covered as well as debugging with XDebug, profiling with XHProf, and deployment with Ansible, Capistrano and other options. Logging with Monolog, Logstash and Kibana is also summarized along with monitoring metrics with StatsD, Graphite and Grafana.
Dear Ninja Git Apprentice, your training will be short but it will be dense and fierce. I will teach you how to lock down your master's fortress from tampering and infiltration, how to become invisible and hide data in a repository, how to resist any attacks and recover your committed and uncommitted files, how to be fast as a fox to cover your tracks and resolve conflicts. Save the master!
This document discusses using Docker and Bamboo for continuous integration and deployment pipelines. It provides examples of configuring Bamboo to build, test, and deploy Docker images and applications. It also describes using Docker Compose in Bamboo pipelines and customizing Bamboo virtual machines with Packer and Ansible to have Docker pre-installed.
This document discusses Git internals and provides examples of how Git stores files and commits as objects in a directed acyclic graph (DAG). It explains that commits point to trees, which point to blobs containing file contents or other trees representing subdirectories. Branches and tags are explained as references to commit objects. Examples are given of branching, merging, tagging, and how remote tracking references map to repositories on remote servers.
AtlasCamp 2015 Docker continuous integration trainingSteve Smith
A 2-hour training session delivered at AtlasCamp in Prague, June 9th 2015.
* Docker vs virtual machines
* Docker concepts
* Docker for testing
* Automation with Docker Compose
* Continuous integration with Bamboo Docker support
* Extracting test results from Docker containers
* Continuous deployment with deployment environments
Matt Gauger - Git & Github web414 December 2010Matt Gauger
Git is a version control system that allows developers to track changes to code over time. The document provides a brief introduction to common Git commands like commit, push, pull, and fetch. It also discusses how GitHub builds on Git by providing a platform for hosting projects and collaborating through features like forking, pull requests, and issue tracking. The overall message is that Git and GitHub optimize the development workflow by making it easy to manage changes, work on projects together, and contribute code back to open source projects.
SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony AppsPablo Godel
Web applications are becoming increasingly more complex, so deployment is not just transferring files with FTP anymore. We will go over the different challenges and how to deploy our PHP applications effectively, safely and consistently with the latest tools and techniques. We will also look at tools that complement deployment with management, configuration and monitoring.
- Chef Jon Cowie is a chef at Etsy who manages their open source chef server and around 800 nodes
- They use chef handlers to send metrics and failure alerts to graphite and IRC to monitor chef runs
- Cowie emphasizes familiarity with their infrastructure, keeping things simple, using standards, and abstracting complexity when needed like with their syslog-ng refactor
- While automation helps, changes still occur and complete control cannot be assumed
Cutting the Kubernetes Monorepo in pieces – never learnt more about gitStefan Schimanski
Kubernetes uses a monorepo approach for development and testing. For Golang vendoring by 3rdparties we publish subdirectories as separate Github repositories (like k8s.io/client-go, k8s.io/apimachinery, k8s.io/api, etc.) continuously every night, while keeping all history, all Github merge commits and while rewriting commits with Godep-save updates to express dependencies. Sounds easy? It's not! Implementing this was the best learning experience of git and git internals and the topic of this talk.
Deployment Patterns in the Ruby on Rails WorldNikhil Mungel
This document discusses different deployment patterns for Ruby on Rails applications. It covers using Git for version control and continuous integration for running tests on code commits. Different packaging and deployment options are presented like RPMs, Debian packages, RubyGems, and exporting artifacts. Configuration management tools can then be used to deploy packages to servers and configure applications.
This document discusses Kubernetes admission webhooks and how to write custom admission webhooks. It provides an overview of the API server handler pipeline and how webhooks can extend it. It recommends libraries for writing webhooks and provides an example of a namespace reservation webhook.
Docker and Jenkins. Orchestrating Continuous Delivery
Through the use of build pipelines, Continuous Delivery will enable faster and more frequent build, test and deployment cycles of software.
To ensure that what you are delivering has the required quality: how do we build a continuous delivery pipeline in the real world?
In this session, instead of relying on static step configurations, we are going to demonstrate how to code a pipeline using Jenkins and Gradle and how Docker can help on this task. The end result is faster application releases with higher quality.
This presentation starts with an introduction to the rationale behind automated deployments in Continuous Delivery and DevOps. Then, I compare agent-based architectures, such as Chef and Puppet with the agentless architecture of the server orchestration engine Ansible. The presentation concludes with an automated deployment of Dynatrace into a simulated production environment.
This document provides tips and techniques for becoming a Git master, including:
1. Creating aliases to simplify common Git commands like committing and adding remotes. Aliases allow parameters and bash functions for complex commands.
2. Using features like assume-unchanged to hide files from Git and rerere to automate resolving similar conflicts.
3. Interactive rebasing to polish commit histories by squashing, rewording, and fixing up commits. Rebasing rewrites history so care is needed.
4. Techniques for preventing history tampering like reject force pushes and signing tags for verification. GPG keys can be stored and imported in Git.
5. Handling project dependencies with build tools or
Migrating to a bazel based CI system: 6 learnings Or Shachar
Two years ago, we were given a big challenge - Transform Wix Build System, then based on Maven and Teamcity, to a new system that will support our exponentially growing scale.
But, how could we move to a system so different in so many ways than the existing one? Furthermore, we were required not to break the current build system, as we migrate to the new one.
Fast forward to today: Wix backend CI system is fully migrated to Bazel! The system builds in a fracture of the time - even with our largest codebases. In this talk, we will describe how we achieved this, why it took us so long, what tools we had to build on the way (and what we already have, and will, open source!), and share the principles that helped us.
Github - Git Training Slides: FoundationsLee Hanxue
Slide deck with detailed step breakdown that explains how git works, together with simple examples that you can try out yourself. Slides originated from http://teach.github.com/articles/course-slides/
Author: https://twitter.com/matthewmccull
Tracking huge files with Git LFS - LinuxCon 2016Tim Pettersen
Developers love Git for its raw speed, powerful history traversal, distributed nature, and (of course) the fact that it was originally built by Linus Torvalds. What we don't love is the fact that, out of the box, Git has terrible support for tracking large binary files!
Fortunately, developers from Atlassian and GitHub have teamed up to work on an open source, MIT licensed project to solve this problem: Git LFS (Large File Support). This means researchers, web designers, game developers, multimedia producers and all other developers who need to work with large data and rich media can move off legacy centralized systems and start using modern version control.
This session covers the computer science behind Git LFS' internals & architecture, CLI usage and how to build an effective Git LFS workflow for a software team.
This document discusses how to connect logs to various network services using Logback. It begins with a brief introduction of common logging frameworks like SLF4J, Log4j 1, Log4j 2 and Logback. It then explains Logback's internal architecture including loggers, appenders and layouts. The main part demonstrates how to develop a custom appender in Logback to send logs to network services by utilizing the ILoggingEvent object. It provides code templates and examples of accessing log content and stack traces. Finally, it introduces some open source Logback appenders and the Logpush service for remote log monitoring.
Lessons from Etsy: Avoiding Kitchen Nightmares - #ChefConf 2012Patrick McDonnell
Talk by Patrick McDonnell (@mcdonnps) at #ChefConf 2012
Chef makes it so easy to change configuration en masse that it can be dangerous if not used with certain precautions and in accordance with a well thought out testing workflow. In our use of Chef at Etsy, we have devised many in-house best practices in response to failures which have helped greatly in avoiding catastrophic outages. This talk will focus on mistakes we've made and how we've avoided repeating them by enforcing standards in cookbooks, testing changes before rollout through the use of environments and in conjunction with the Spork plugin for Knife, and linting cookbooks with Foodcritic. I'll also talk about using handlers intelligently to monitor Chef runs and how to generate reports from the myriad data available in CouchDB.
Deep dark-side of git: How git works internallySeongJae Park
Describe how git works internally using small and perfect plumbing commands.
The slide have been used at GDG DevFest 2014 and SOSCON 2014.
The slide can be updated later. And, the latest version would always be provided from this page always.
Git Anti-Patterns - Extended Version With 28 Common Anti-Patterns) - SCTurkey...Lemi Orhan Ergin
This document discusses common Git anti-patterns and provides recommendations to avoid them. It begins by explaining how Git works under the hood in terms of files, folders, references, and objects. It then covers 15 specific anti-patterns to avoid, such as treating Git like Dropbox, having long-living topic branches, merging too late without validation, and being afraid to delete branches. For each anti-pattern, it provides alternatives and recommendations, such as splitting work into small tasks, committing early and often, rebasing rather than merging, and deleting merged branches. The overall message is how to use Git properly and cure common issues by following best practices.
The document provides an overview of Pinto, a tool for managing dependencies via a CPAN-like repository. Pinto allows users to create custom repositories of Perl modules and distributions, fetch dependencies and their transitive dependencies, inject their own distributions, install and upgrade modules across different "stacks" (named mappings of packages), and pin packages to specific versions. Key features demonstrated include initializing a repository, pulling dependencies, adding a custom distribution, installing modules, upgrading dependencies on a stack, merging stacks, and pinning packages. Pinto aims to provide stability, portability and reproducibility for dependency management.
aptly is a swiss army knife for Debian repository management: it allows to mirror remote repositories, take snapshots, pull new versions of packages along with dependencies, publish snapshots.
http://www.aptly.info/
Migrating to a Bazel-based CI System: 6 Learnings - Or ShacharWix Engineering
Two years ago, we were given a big challenge - Transform Wix Build System, then based on Maven and Teamcity, to a new system that will support our exponentially growing scale. Naturally, we chose Bazel.
But, how could we move to a system so different in so many ways than the existing one? Furthermore, we were required not to break the current build system, as we migrate to the new one.
Fast forward to today: Wix backend CI system is fully migrated to Bazel! The system builds in a fracture of the time - even with our largest codebases. In this talk, Or Shachar will describe how we achieved this, why it took us so long, what tools we had to build on the way (and what we already have, and will, open source!), and share the principles that helped us.
You can watch it here:
https://www.wix.engineering/post/bazelcon-2019-lessons-learned-from-migrating-our-build-system-to-bazel
* SlideShare에서 특정 폰트로 쓰인 글자가 보이지 않는 경우가 있습니다. 다운로드 하셔서 PDF 리더로 보시는 것을 권해드립니다. -> 기존 폰트를 모두 나눔고딕으로 변경하였습니다.
OSS 포럼 개발 교육으로 진행한 Git, GitHub 강의 자료입니다.
(http://onoffmix.com/event/67081)
간단한 로또 번호 생성기 프로그램을 작성하면서 Git, GitHub에 대해 배웁니다.
1. Git과 Github
- 버전 관리?
- Git은 어쩌다 세상에 나왔나?
- Github?
2. Git 시작하기 - 실습
- 실습 준비 : Github, Goorm IDE 가입하기
- 리눅스 명령어와 친해지기
- Git 필수 개념 집고 넘어가기
- Step by Step Git 명령어 실습 (커밋, 브랜치, 원격 저장소 등)
- 옆자리 분과 Fork하고, Pull Request
3. Git과 Github 맛깔나게 활용하기
- Github의 협업 기능 살펴보기
- Github Page
- Gitbook
4. 있어보이는 Git 활용
- .git 디렉토리 살펴보기
- Git Branch 전략
- Commit Message 활용
Verifying Microservice Integrations with Contract TestingAtlassian
As you migrate your applications toward microservice architectures, new pains start to appear – like testing, for example. How on Earth do you verify all these separate moving parts work together before releasing? How can you be sure that your code is compatible with services that can't easily be spun up anymore? They are all written in different languages, operated by separate teams and deploy every day!
Do you find yourself lying awake at night missing monolithic applications where integrations were easier to test? In this talk we'll reveal how Atlassian is adopting a new strategy called "contract testing", using the Pact open source library to test our microservices. We’ll introduce the concept of contract testing, talk about why we love this approach, and go through some examples and patterns that will help you get started.
Matt Gauger - Git & Github web414 December 2010Matt Gauger
Git is a version control system that allows developers to track changes to code over time. The document provides a brief introduction to common Git commands like commit, push, pull, and fetch. It also discusses how GitHub builds on Git by providing a platform for hosting projects and collaborating through features like forking, pull requests, and issue tracking. The overall message is that Git and GitHub optimize the development workflow by making it easy to manage changes, work on projects together, and contribute code back to open source projects.
SymfonyCon Madrid 2014 - Rock Solid Deployment of Symfony AppsPablo Godel
Web applications are becoming increasingly more complex, so deployment is not just transferring files with FTP anymore. We will go over the different challenges and how to deploy our PHP applications effectively, safely and consistently with the latest tools and techniques. We will also look at tools that complement deployment with management, configuration and monitoring.
- Chef Jon Cowie is a chef at Etsy who manages their open source chef server and around 800 nodes
- They use chef handlers to send metrics and failure alerts to graphite and IRC to monitor chef runs
- Cowie emphasizes familiarity with their infrastructure, keeping things simple, using standards, and abstracting complexity when needed like with their syslog-ng refactor
- While automation helps, changes still occur and complete control cannot be assumed
Cutting the Kubernetes Monorepo in pieces – never learnt more about gitStefan Schimanski
Kubernetes uses a monorepo approach for development and testing. For Golang vendoring by 3rdparties we publish subdirectories as separate Github repositories (like k8s.io/client-go, k8s.io/apimachinery, k8s.io/api, etc.) continuously every night, while keeping all history, all Github merge commits and while rewriting commits with Godep-save updates to express dependencies. Sounds easy? It's not! Implementing this was the best learning experience of git and git internals and the topic of this talk.
Deployment Patterns in the Ruby on Rails WorldNikhil Mungel
This document discusses different deployment patterns for Ruby on Rails applications. It covers using Git for version control and continuous integration for running tests on code commits. Different packaging and deployment options are presented like RPMs, Debian packages, RubyGems, and exporting artifacts. Configuration management tools can then be used to deploy packages to servers and configure applications.
This document discusses Kubernetes admission webhooks and how to write custom admission webhooks. It provides an overview of the API server handler pipeline and how webhooks can extend it. It recommends libraries for writing webhooks and provides an example of a namespace reservation webhook.
Docker and Jenkins. Orchestrating Continuous Delivery
Through the use of build pipelines, Continuous Delivery will enable faster and more frequent build, test and deployment cycles of software.
To ensure that what you are delivering has the required quality: how do we build a continuous delivery pipeline in the real world?
In this session, instead of relying on static step configurations, we are going to demonstrate how to code a pipeline using Jenkins and Gradle and how Docker can help on this task. The end result is faster application releases with higher quality.
This presentation starts with an introduction to the rationale behind automated deployments in Continuous Delivery and DevOps. Then, I compare agent-based architectures, such as Chef and Puppet with the agentless architecture of the server orchestration engine Ansible. The presentation concludes with an automated deployment of Dynatrace into a simulated production environment.
This document provides tips and techniques for becoming a Git master, including:
1. Creating aliases to simplify common Git commands like committing and adding remotes. Aliases allow parameters and bash functions for complex commands.
2. Using features like assume-unchanged to hide files from Git and rerere to automate resolving similar conflicts.
3. Interactive rebasing to polish commit histories by squashing, rewording, and fixing up commits. Rebasing rewrites history so care is needed.
4. Techniques for preventing history tampering like reject force pushes and signing tags for verification. GPG keys can be stored and imported in Git.
5. Handling project dependencies with build tools or
Migrating to a bazel based CI system: 6 learnings Or Shachar
Two years ago, we were given a big challenge - Transform Wix Build System, then based on Maven and Teamcity, to a new system that will support our exponentially growing scale.
But, how could we move to a system so different in so many ways than the existing one? Furthermore, we were required not to break the current build system, as we migrate to the new one.
Fast forward to today: Wix backend CI system is fully migrated to Bazel! The system builds in a fracture of the time - even with our largest codebases. In this talk, we will describe how we achieved this, why it took us so long, what tools we had to build on the way (and what we already have, and will, open source!), and share the principles that helped us.
Github - Git Training Slides: FoundationsLee Hanxue
Slide deck with detailed step breakdown that explains how git works, together with simple examples that you can try out yourself. Slides originated from http://teach.github.com/articles/course-slides/
Author: https://twitter.com/matthewmccull
Tracking huge files with Git LFS - LinuxCon 2016Tim Pettersen
Developers love Git for its raw speed, powerful history traversal, distributed nature, and (of course) the fact that it was originally built by Linus Torvalds. What we don't love is the fact that, out of the box, Git has terrible support for tracking large binary files!
Fortunately, developers from Atlassian and GitHub have teamed up to work on an open source, MIT licensed project to solve this problem: Git LFS (Large File Support). This means researchers, web designers, game developers, multimedia producers and all other developers who need to work with large data and rich media can move off legacy centralized systems and start using modern version control.
This session covers the computer science behind Git LFS' internals & architecture, CLI usage and how to build an effective Git LFS workflow for a software team.
This document discusses how to connect logs to various network services using Logback. It begins with a brief introduction of common logging frameworks like SLF4J, Log4j 1, Log4j 2 and Logback. It then explains Logback's internal architecture including loggers, appenders and layouts. The main part demonstrates how to develop a custom appender in Logback to send logs to network services by utilizing the ILoggingEvent object. It provides code templates and examples of accessing log content and stack traces. Finally, it introduces some open source Logback appenders and the Logpush service for remote log monitoring.
Lessons from Etsy: Avoiding Kitchen Nightmares - #ChefConf 2012Patrick McDonnell
Talk by Patrick McDonnell (@mcdonnps) at #ChefConf 2012
Chef makes it so easy to change configuration en masse that it can be dangerous if not used with certain precautions and in accordance with a well thought out testing workflow. In our use of Chef at Etsy, we have devised many in-house best practices in response to failures which have helped greatly in avoiding catastrophic outages. This talk will focus on mistakes we've made and how we've avoided repeating them by enforcing standards in cookbooks, testing changes before rollout through the use of environments and in conjunction with the Spork plugin for Knife, and linting cookbooks with Foodcritic. I'll also talk about using handlers intelligently to monitor Chef runs and how to generate reports from the myriad data available in CouchDB.
Deep dark-side of git: How git works internallySeongJae Park
Describe how git works internally using small and perfect plumbing commands.
The slide have been used at GDG DevFest 2014 and SOSCON 2014.
The slide can be updated later. And, the latest version would always be provided from this page always.
Git Anti-Patterns - Extended Version With 28 Common Anti-Patterns) - SCTurkey...Lemi Orhan Ergin
This document discusses common Git anti-patterns and provides recommendations to avoid them. It begins by explaining how Git works under the hood in terms of files, folders, references, and objects. It then covers 15 specific anti-patterns to avoid, such as treating Git like Dropbox, having long-living topic branches, merging too late without validation, and being afraid to delete branches. For each anti-pattern, it provides alternatives and recommendations, such as splitting work into small tasks, committing early and often, rebasing rather than merging, and deleting merged branches. The overall message is how to use Git properly and cure common issues by following best practices.
The document provides an overview of Pinto, a tool for managing dependencies via a CPAN-like repository. Pinto allows users to create custom repositories of Perl modules and distributions, fetch dependencies and their transitive dependencies, inject their own distributions, install and upgrade modules across different "stacks" (named mappings of packages), and pin packages to specific versions. Key features demonstrated include initializing a repository, pulling dependencies, adding a custom distribution, installing modules, upgrading dependencies on a stack, merging stacks, and pinning packages. Pinto aims to provide stability, portability and reproducibility for dependency management.
aptly is a swiss army knife for Debian repository management: it allows to mirror remote repositories, take snapshots, pull new versions of packages along with dependencies, publish snapshots.
http://www.aptly.info/
Migrating to a Bazel-based CI System: 6 Learnings - Or ShacharWix Engineering
Two years ago, we were given a big challenge - Transform Wix Build System, then based on Maven and Teamcity, to a new system that will support our exponentially growing scale. Naturally, we chose Bazel.
But, how could we move to a system so different in so many ways than the existing one? Furthermore, we were required not to break the current build system, as we migrate to the new one.
Fast forward to today: Wix backend CI system is fully migrated to Bazel! The system builds in a fracture of the time - even with our largest codebases. In this talk, Or Shachar will describe how we achieved this, why it took us so long, what tools we had to build on the way (and what we already have, and will, open source!), and share the principles that helped us.
You can watch it here:
https://www.wix.engineering/post/bazelcon-2019-lessons-learned-from-migrating-our-build-system-to-bazel
* SlideShare에서 특정 폰트로 쓰인 글자가 보이지 않는 경우가 있습니다. 다운로드 하셔서 PDF 리더로 보시는 것을 권해드립니다. -> 기존 폰트를 모두 나눔고딕으로 변경하였습니다.
OSS 포럼 개발 교육으로 진행한 Git, GitHub 강의 자료입니다.
(http://onoffmix.com/event/67081)
간단한 로또 번호 생성기 프로그램을 작성하면서 Git, GitHub에 대해 배웁니다.
1. Git과 Github
- 버전 관리?
- Git은 어쩌다 세상에 나왔나?
- Github?
2. Git 시작하기 - 실습
- 실습 준비 : Github, Goorm IDE 가입하기
- 리눅스 명령어와 친해지기
- Git 필수 개념 집고 넘어가기
- Step by Step Git 명령어 실습 (커밋, 브랜치, 원격 저장소 등)
- 옆자리 분과 Fork하고, Pull Request
3. Git과 Github 맛깔나게 활용하기
- Github의 협업 기능 살펴보기
- Github Page
- Gitbook
4. 있어보이는 Git 활용
- .git 디렉토리 살펴보기
- Git Branch 전략
- Commit Message 활용
Verifying Microservice Integrations with Contract TestingAtlassian
As you migrate your applications toward microservice architectures, new pains start to appear – like testing, for example. How on Earth do you verify all these separate moving parts work together before releasing? How can you be sure that your code is compatible with services that can't easily be spun up anymore? They are all written in different languages, operated by separate teams and deploy every day!
Do you find yourself lying awake at night missing monolithic applications where integrations were easier to test? In this talk we'll reveal how Atlassian is adopting a new strategy called "contract testing", using the Pact open source library to test our microservices. We’ll introduce the concept of contract testing, talk about why we love this approach, and go through some examples and patterns that will help you get started.
Popular Git Workflows You Haven't Heard AboutAtlassian
When you adopted Git you either researched an effective workflow or someone in your team chose it for you. Maybe you use Gitflow, maybe a lightweight master/develop system like the Bitbucket Cloud team, or maybe you have long-running maintenance branches.
Done right, all these workflows can be very effective for your team. But why is the Git project itself run by e-mailing patches to an old school mailing list? Why do you hear of cool companies like Twitter use huge mono repos and embracing patch queues? To answer these questions we need to go deeper. This talk will show you the cool side of Git workflows you are probably not using.
Products covered:
Bitbucket
Nowadays we all seem to be working with small independent services that need to talk with numerous other services. This is a problem because when developing your service, you need to have a working environment—but bringing up all your dependencies is often not an option.
In this talk, I will take you through our journey of creating a mock server to increase dev speed, and how it allowed us to write better tests.
Struggling to get software released on a daily basis? Wondering how to apply the same techniques that make companies successful with continuous deployment? What if your company isn’t in a greenfield situation and carries build legacy? What if developers on your team have a mindset that is the opposite of continuous deployment? This is a story about the Confluence development team and their journey from struggling to release once a week to releasing every day. Learn about the challenges the team faced and the interesting solutions they came up with to reach their goals while avoiding many rabbit holes along the way. In this session, you will get many interesting insights and techniques that you can apply immediately in your own organization's journey towards continuous deployment.
Products covered:
Confluence, HipChat, Bamboo
Git LFS is a system for managing large files in Git repositories. It allows large files like images, videos and design files to be stored separately from the Git repository while still keeping track of versions and metadata. The document discusses how to set up and use Git LFS, including tracking files, migrating existing repositories, and tips for developers, migrators and administrators. It emphasizes using the latest versions of Git and Git LFS and properly configuring Git LFS for enterprise usage.
Scaling Without Expanding: a DevOps StoryAtlassian
The build engineering team at Atlassian uses Bamboo, Bitbucket Server, and HipChat to maintain full control over the entire software and infrastructure life cycles – from a customer raising an incident all the way through to deploying a fix.
We're not a product team, but we've applied agile development practices to improve how we deploy infrastructure. Puppet and Bamboo help us automate everything, while Terraform and AWS let us treat our infrastructure as code, allowing for reviewed changes and easy scaling.
In this talk I'll show you how the build engineering team has managed to stay the same size over the last few years while supporting both a 10x growth in the number of builds run in Atlassian and 2x growth in the number of developers in the company. You'll walk out understanding how you and your team can do the same.
Products covered:
JIRA Software, JIRA Service Desk, Confluence, HipChat, Bitbucket, Bamboo
Bitbucket Pipelines: Serverless CI/CD That Will Save Your LifeAtlassian
Are you building cloud-native products using PaaS building blocks? Whether you've just started or are a seasoned CI/CD practitioner, you might be at risk of "CI/CD agent overload". Historically, CI/CD tools have run with raw hardware, or more recently with virtual machines, each controlled by an agent. The cost of operating these agents has provided a natural check against growth but, in the cloud, agent proliferation often goes unchecked until the agents kill the host organism! Fortunately, there is a cure. Bitbucket Pipelines is Atlassian's new serverless CI/CD feature that enables cloud software teams to get build results sooner, to build reliably, and to test in ways that better resemble cloud PaaS environments.
Products covered:
Bitbucket
Takeaways From Migrating to Git and Bitbucket ServerAtlassian
Switching from a centralized version control system to Git and Bitbucket will have an impact on the way your development team develops software.
When doing the switch, what should be migrated over? Should you continue using the current workflow or is there a better one? What about training?
This talk will give a brief overview of what I learned from doing the switch to Git and Bitbucket Server from Rational ClearCase, but it can be applied to any centralized version control system.
Products covered:
Bitbucket
Continuous Delivery in the Cloud with Bitbucket PipelinesAtlassian
This document discusses Bitbucket Pipelines, a continuous integration tool from Atlassian. It allows developers to automatically build, test, and deploy their code every time a change is merged into a shared repository. Pipelines uses Docker containers to run builds, allowing them to be fast, isolated from infrastructure concerns, and reproducible across environments. It also supports defining build configurations as code to make the pipeline definition versioned, reusable, and easy to understand at a glance.
Scaling Your First 1000 Containers with DockerAtlassian
Deploying large numbers of containers to production can be a difficult proposition if you don’t approach the problem with the right strategy – one that's appropriate for both your developers and the size of your operations team. Choosing a strategy lets you codify your deployment patterns in a repeatable manner and reuse them over hundreds of deployments without incurring unnecessary cost and complexity.
Using Atlassian’s PaaS as a model, we will discuss important milestones as you scale from a single container to tens, hundreds, and eventually to a thousand containers. At what points should you begin to embrace log aggregation? How about monitoring and metrics collection? Orchestration and clustering solutions? Learn how to incorporate ever more sophisticated third-party solutions as you go, to achieve cost-effective and stable management of your containers in production.
There are many styles of code review, and it can be tough to find a process that works for your team. Do you use Git, SVN, or something more exotic? Do you prefer pre-commit reviews or pull requests? Do you branch, fork, or do everything with patches? This talk examines the various review options adopted by professional teams. We'll investigate Bitbucket pull requests, Crucible reviews, and Gerrit, discussing the pros and cons of each workflow. Then I'll show you the battle-hardened peer review process - refined over thousands of code reviews and pull requests - that Atlassian teams use to maintain the high quality expected of our products.
Tim Pettersen, Senior Developer Advocate, Atlassian
Puppet Camp Melbourne Nov 2014 - A Build Engineering Team’s Journey of Infras...Peter Leschev
A Build Engineering Team’s Journey of Infrastructure as Code - the challenges that we’ve faced and the practices that we implemented as we went along our journey.
The document discusses automated deployments using SaltStack and Docker containers. It describes how Docker can be used to build application environments in isolated containers with defined dependencies. This allows services to be easily started and stopped, and experiments with a low barrier for entry. The document outlines how to separate concerns between the host system and application services using Docker images. It also discusses Twelve-Factor App methodology for building applications and binding application ports, as well as using environment variables for configuration.
10 ways to shoot yourself in the foot with kubernetes, #9 will surprise you! ...Laurent Bernaille
Kubernetes is a very powerful and complicated system, and many users don’t understand the underlying systems. Come learn how your users can abuse container runtimes, overwhelm your control plane, and cause outages - it’s actually quite easy!
In the last year, we have containerized hundreds of applications and deployed them in large scale clusters (more than 1000 nodes). The journey was eventful and we learned a lot along the way. We’ll share stories of our ten favorite Kubernetes foot guns, including the dangers of cargo culting, rolling updates gone wrong, the pitfalls of initContainers, and nightmarish daemonset upgrades. The talk will present solutions we adopted to avoid or work around some these problems and will finally show several improvements we plan deploy in the future.
Similar to the Kubecon talk with the same title with a few new incidents.
This document provides a summary of Karl Anderson's presentation at Kazoocon14. Some of the key areas discussed include improvements to Kamailio and FreeSWITCH dependencies, the Kazoo installation process, the Monster UI, Provisioner, Project Phonebook, internationalization efforts, and upcoming work on statistics, federation, and hosted Kazoo services. The presentation outlines progress made over the past year and outlines an ambitious roadmap for further developing and enhancing the Kazoo platform.
The document discusses Kubernetes networking. It describes how Kubernetes networking allows pods to have routable IPs and communicate without NAT, unlike Docker networking which uses NAT. It covers how services provide stable virtual IPs to access pods, and how kube-proxy implements services by configuring iptables on nodes. It also discusses the DNS integration using SkyDNS and Ingress for layer 7 routing of HTTP traffic. Finally, it briefly mentions network plugins and how Kubernetes is designed to be open and customizable.
Deploying Next Gen Systems with Zero DowntimeTwilio Inc
The document discusses deploying next-generation systems at Twilio while ensuring zero downtime and zero regressions. It describes the challenges of replacing two core systems while maintaining high availability and horizontal scalability without losing any data. It outlines techniques used such as running tests against both systems, canary deployments, shadow mode with double bookkeeping for rollbacks, and gradual rollouts. The goal is reliable online upgrades of critical systems processing millions of transactions.
Continous Delivering a PHP applicationJavier López
The document discusses continuous delivery and building a continuous delivery pipeline. It begins with an overview of continuous delivery, describing the basic steps of commit, build, test, and deploy. It then covers the tools used to build the pipeline, including GitHub and Jenkins plugins. The document outlines the process for building the pipeline, including checking out code, installing dependencies, running tests, generating assets, and deploying artifacts. It also discusses splitting the process into separate jobs for testing deployment scripts and running automated tests. Finally, it covers benefits of continuous delivery such as increased release frequency, reduced risk, and releases becoming a non-event.
Kafka on Kubernetes: Keeping It Simple (Nikki Thean, Etsy) Kafka Summit SF 2019confluent
Cloud migration: it's practically a rite of passage for anyone who's built infrastructure on bare metal. When we migrated our 5-year-old Kafka deployment from the datacenter to GCP, we were faced with the task of making our highly mutable server infrastructure more cloud-friendly. This led to a surprising decision: we chose to run our Kafka cluster on Kubernetes. I'll share war stories from our Kafka migration journey, explain why we chose Kubernetes over arguably simpler options like GCP VMs, and present the lessons we learned while making our way toward a stable and self-healing Kubernetes deployment. I'll also go through some improvements in the more recent Kafka releases that make upgrades crucial for any Kafka deployment on immutable and ephemeral infrastructure. You'll learn what happens when you try to run one complex distributed system on top of another, and come away with some handy tricks for automating cloud cluster management, plus some migration pitfalls to avoid. And if you're not sure whether running Kafka on Kubernetes is right for you, our experiences should provide some extra data points that you can use as you make that decision.
This document discusses deployment strategies for Ruby on Rails applications. It covers common components of the "Rails stack" including databases, caching, application servers and load balancers. Popular options are mentioned like Nginx, Memcached, Mongrel and Capistrano. Performance optimization techniques are also summarized, such as caching, background processing and memory usage strategies. The document concludes with an overview of common deployment processes and challenges.
One commit, one release. Continuously delivering a Symfony project.Javier López
For the last few months we've been implementing a Continuous Delivery pipeline for the redesign of Time Out. In this talk I will demonstrate a real life example of what our pipeline looks like, the different tools we've used to get it done (phing, github, jenkins, ansible, AWS S3, ...), and peculiarities for PHP and Symfony2 projects. Most importantly, I'll be looking at things we've struggled with along the way and the lessons we've learnt.
The document discusses using Docker and SaltStack to build dynamic and highly available computing environments. It describes how to separate concerns between the host systems and application services through containerization with Docker. It also discusses how to implement the Twelve-Factor App methodology for building portable apps by defining factors like codebase, dependencies, configuration, backing services, scaling, and more. The document provides examples of building Docker images for services like Nginx and binding container ports, as well as using environment variables to configure application dependencies.
- Mojolicious is a web development framework for Perl that aims to rethink web development
- It provides a powerful routing system, full HTTP implementation, simple templating, built-in JSON support, elegant plugin system, and class reloader
- Installation is simple using CPAN and has no dependencies beyond Perl 5.8.1
- It includes classes for requests, responses, templates, JSON encoding/decoding, and more
- Plugins can hook into various stages of the request lifecycle
- Supports generating applications, running commands, and provides a simple but powerful way to build web applications and services in Perl
The document discusses automating software deployment using Ansible. It provides an overview of Ansible's basic concepts like inventory files to define hosts, playbooks to execute tasks on hosts, and roles to bundle related tasks. It then discusses using Ansible roles to automate deployments, including the ansistrano roles which can deploy applications by copying files, managing releases, and supporting deployment hooks. Overall the document presents Ansible as a way to easily automate and standardize software deployment processes.
Version control systems like Git allow recording changes to files over time, allowing users to recall specific versions. While simple filename versioning works for individuals, it becomes difficult to maintain and collaborate on code as projects and teams grow. Version control systems address issues like redundant content, hard to merge code, and difficulty determining what changes each version contains. GitLab provides a free private repository hosting option using the distributed version control system Git.
A talk given to JCConf 2015 on 2015/12/05.
在程式設計領域,“immutable objects” 是相當重要的設計模式。同樣的,在虛擬化及雲端時代,“immutable infrastructure” 也成為新一代的顯學。在資源及流程的充分配合下,這將會大大簡化系統的複雜度,穩定性也會大大提升。
本演講將會從觀念出發,並佐以部份實作建議,讓大家有足夠資訊來評估此架構的好處。
Video: https://youtu.be/9j008nd6-A4
[2C4]Clustered computing with CoreOS, fleet and etcdNAVER D2
This document is a presentation on clustered computing with CoreOS, fleet and etcd given by Jonathan Boulle of CoreOS. It begins with introducing the speaker and his background. The bulk of the presentation covers CoreOS Linux, its self-updating operating system design and use of application containers. It also discusses fleet, CoreOS's cluster management system, and how it allows applications to remain highly available during server updates using atomic operating system updates and active/passive root file systems.
ApacheCon 2014 - What's New in Apache httpd 2.4Jim Jagielski
The document summarizes new features in Apache HTTPD version 2.4, including improved performance through the Event MPM, faster APR, and reduced memory usage. It describes new configuration options like finer timeout controls and the <If> directive. New modules like mod_lua and mod_proxy submodules are highlighted. The document also discusses how Apache has adapted to cloud computing through dynamic proxying, load balancing, and self-aware environments.
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdfBaha Majid
IBM watsonx Code Assistant for Z, our latest Generative AI-assisted mainframe application modernization solution. Mainframe (IBM Z) application modernization is a topic that every mainframe client is addressing to various degrees today, driven largely from digital transformation. With generative AI comes the opportunity to reimagine the mainframe application modernization experience. Infusing generative AI will enable speed and trust, help de-risk, and lower total costs associated with heavy-lifting application modernization initiatives. This document provides an overview of the IBM watsonx Code Assistant for Z which uses the power of generative AI to make it easier for developers to selectively modernize COBOL business services while maintaining mainframe qualities of service.
Photoshop Tutorial for Beginners (2024 Edition)alowpalsadig
Photoshop Tutorial for Beginners (2024 Edition)
Explore the evolution of programming and software development and design in 2024. Discover emerging trends shaping the future of coding in our insightful analysis."
Here's an overview:Introduction: The Evolution of Programming and Software DevelopmentThe Rise of Artificial Intelligence and Machine Learning in CodingAdopting Low-Code and No-Code PlatformsQuantum Computing: Entering the Software Development MainstreamIntegration of DevOps with Machine Learning: MLOpsAdvancements in Cybersecurity PracticesThe Growth of Edge ComputingEmerging Programming Languages and FrameworksSoftware Development Ethics and AI RegulationSustainability in Software EngineeringThe Future Workforce: Remote and Distributed TeamsConclusion: Adapting to the Changing Software Development LandscapeIntroduction: The Evolution of Programming and Software Development
Photoshop Tutorial for Beginners (2024 Edition)Explore the evolution of programming and software development and design in 2024. Discover emerging trends shaping the future of coding in our insightful analysis."Here's an overview:Introduction: The Evolution of Programming and Software DevelopmentThe Rise of Artificial Intelligence and Machine Learning in CodingAdopting Low-Code and No-Code PlatformsQuantum Computing: Entering the Software Development MainstreamIntegration of DevOps with Machine Learning: MLOpsAdvancements in Cybersecurity PracticesThe Growth of Edge ComputingEmerging Programming Languages and FrameworksSoftware Development Ethics and AI RegulationSustainability in Software EngineeringThe Future Workforce: Remote and Distributed TeamsConclusion: Adapting to the Changing Software Development LandscapeIntroduction: The Evolution of Programming and Software Development
The importance of developing and designing programming in 2024
Programming design and development represents a vital step in keeping pace with technological advancements and meeting ever-changing market needs. This course is intended for anyone who wants to understand the fundamental importance of software development and design, whether you are a beginner or a professional seeking to update your knowledge.
Course objectives:
1. **Learn about the basics of software development:
- Understanding software development processes and tools.
- Identify the role of programmers and designers in software projects.
2. Understanding the software design process:
- Learn about the principles of good software design.
- Discussing common design patterns such as Object-Oriented Design.
3. The importance of user experience (UX) in modern software:
- Explore how user experience can improve software acceptance and usability.
- Tools and techniques to analyze and improve user experience.
4. Increase efficiency and productivity through modern development tools:
- Access to the latest programming tools and languages used in the industry.
- Study live examples of applications
Manyata Tech Park Bangalore_ Infrastructure, Facilities and Morenarinav14
Located in the bustling city of Bangalore, Manyata Tech Park stands as one of India’s largest and most prominent tech parks, playing a pivotal role in shaping the city’s reputation as the Silicon Valley of India. Established to cater to the burgeoning IT and technology sectors
The Power of Visual Regression Testing_ Why It Is Critical for Enterprise App...kalichargn70th171
Visual testing plays a vital role in ensuring that software products meet the aesthetic requirements specified by clients in functional and non-functional specifications. In today's highly competitive digital landscape, users expect a seamless and visually appealing online experience. Visual testing, also known as automated UI testing or visual regression testing, verifies the accuracy of the visual elements that users interact with.
Liberarsi dai framework con i Web Component.pptxMassimo Artizzu
In Italian
Presentazione sulle feature e l'utilizzo dei Web Component nell sviluppo di pagine e applicazioni web. Racconto delle ragioni storiche dell'avvento dei Web Component. Evidenziazione dei vantaggi e delle sfide poste, indicazione delle best practices, con particolare accento sulla possibilità di usare web component per facilitare la migrazione delle proprie applicazioni verso nuovi stack tecnologici.
A Comprehensive Guide on Implementing Real-World Mobile Testing Strategies fo...kalichargn70th171
In today's fiercely competitive mobile app market, the role of the QA team is pivotal for continuous improvement and sustained success. Effective testing strategies are essential to navigate the challenges confidently and precisely. Ensuring the perfection of mobile apps before they reach end-users requires thoughtful decisions in the testing plan.
🏎️Tech Transformation: DevOps Insights from the Experts 👩💻campbellclarkson
Connect with fellow Trailblazers, learn from industry experts Glenda Thomson (Salesforce, Principal Technical Architect) and Will Dinn (Judo Bank, Salesforce Development Lead), and discover how to harness DevOps tools with Salesforce.
Consistent toolbox talks are critical for maintaining workplace safety, as they provide regular opportunities to address specific hazards and reinforce safe practices.
These brief, focused sessions ensure that safety is a continual conversation rather than a one-time event, which helps keep safety protocols fresh in employees' minds. Studies have shown that shorter, more frequent training sessions are more effective for retention and behavior change compared to longer, infrequent sessions.
Engaging workers regularly, toolbox talks promote a culture of safety, empower employees to voice concerns, and ultimately reduce the likelihood of accidents and injuries on site.
The traditional method of conducting safety talks with paper documents and lengthy meetings is not only time-consuming but also less effective. Manual tracking of attendance and compliance is prone to errors and inconsistencies, leading to gaps in safety communication and potential non-compliance with OSHA regulations. Switching to a digital solution like Safelyio offers significant advantages.
Safelyio automates the delivery and documentation of safety talks, ensuring consistency and accessibility. The microlearning approach breaks down complex safety protocols into manageable, bite-sized pieces, making it easier for employees to absorb and retain information.
This method minimizes disruptions to work schedules, eliminates the hassle of paperwork, and ensures that all safety communications are tracked and recorded accurately. Ultimately, using a digital platform like Safelyio enhances engagement, compliance, and overall safety performance on site. https://safelyio.com/
Unveiling the Advantages of Agile Software Development.pdfbrainerhub1
Learn about Agile Software Development's advantages. Simplify your workflow to spur quicker innovation. Jump right in! We have also discussed the advantages.
DevOps Consulting Company | Hire DevOps Servicesseospiralmantra
Spiral Mantra excels in providing comprehensive DevOps services, including Azure and AWS DevOps solutions. As a top DevOps consulting company, we offer controlled services, cloud DevOps, and expert consulting nationwide, including Houston and New York. Our skilled DevOps engineers ensure seamless integration and optimized operations for your business. Choose Spiral Mantra for superior DevOps services.
https://www.spiralmantra.com/devops/
Odoo releases a new update every year. The latest version, Odoo 17, came out in October 2023. It brought many improvements to the user interface and user experience, along with new features in modules like accounting, marketing, manufacturing, websites, and more.
The Odoo 17 update has been a hot topic among startups, mid-sized businesses, large enterprises, and Odoo developers aiming to grow their businesses. Since it is now already the first quarter of 2024, you must have a clear idea of what Odoo 17 entails and what it can offer your business if you are still not aware of it.
This blog covers the features and functionalities. Explore the entire blog and get in touch with expert Odoo ERP consultants to leverage Odoo 17 and its features for your business too.
An Overview of Odoo ERP
Odoo ERP was first released as OpenERP software in February 2005. It is a suite of business applications used for ERP, CRM, eCommerce, websites, and project management. Ten years ago, the Odoo Enterprise edition was launched to help fund the Odoo Community version.
When you compare Odoo Community and Enterprise, the Enterprise edition offers exclusive features like mobile app access, Odoo Studio customisation, Odoo hosting, and unlimited functional support.
Today, Odoo is a well-known name used by companies of all sizes across various industries, including manufacturing, retail, accounting, marketing, healthcare, IT consulting, and R&D.
The latest version, Odoo 17, has been available since October 2023. Key highlights of this update include:
Enhanced user experience with improvements to the command bar, faster backend page loading, and multiple dashboard views.
Instant report generation, credit limit alerts for sales and invoices, separate OCR settings for invoice creation, and an auto-complete feature for forms in the accounting module.
Improved image handling and global attribute changes for mailing lists in email marketing.
A default auto-signature option and a refuse-to-sign option in HR modules.
Options to divide and merge manufacturing orders, track the status of manufacturing orders, and more in the MRP module.
Dark mode in Odoo 17.
Now that the Odoo 17 announcement is official, let’s look at what’s new in Odoo 17!
What is Odoo ERP 17?
Odoo 17 is the latest version of one of the world’s leading open-source enterprise ERPs. This version has come up with significant improvements explained here in this blog. Also, this new version aims to introduce features that enhance time-saving, efficiency, and productivity for users across various organisations.
Odoo 17, released at the Odoo Experience 2023, brought notable improvements to the user interface and added new functionalities with enhancements in performance, accessibility, data analysis, and management, further expanding its reach in the market.
Unlock the Secrets to Effortless Video Creation with Invideo: Your Ultimate G...The Third Creative Media
"Navigating Invideo: A Comprehensive Guide" is an essential resource for anyone looking to master Invideo, an AI-powered video creation tool. This guide provides step-by-step instructions, helpful tips, and comparisons with other AI video creators. Whether you're a beginner or an experienced video editor, you'll find valuable insights to enhance your video projects and bring your creative ideas to life.
Orca: Nocode Graphical Editor for Container OrchestrationPedro J. Molina
Tool demo on CEDI/SISTEDES/JISBD2024 at A Coruña, Spain. 2024.06.18
"Orca: Nocode Graphical Editor for Container Orchestration"
by Pedro J. Molina PhD. from Metadev
Alluxio Webinar | 10x Faster Trino Queries on Your Data PlatformAlluxio, Inc.
Alluxio Webinar
June. 18, 2024
For more Alluxio Events: https://www.alluxio.io/events/
Speaker:
- Jianjian Xie (Staff Software Engineer, Alluxio)
As Trino users increasingly rely on cloud object storage for retrieving data, speed and cloud cost have become major challenges. The separation of compute and storage creates latency challenges when querying datasets; scanning data between storage and compute tiers becomes I/O bound. On the other hand, cloud API costs related to GET/LIST operations and cross-region data transfer add up quickly.
The newly introduced Trino file system cache by Alluxio aims to overcome the above challenges. In this session, Jianjian will dive into Trino data caching strategies, the latest test results, and discuss the multi-level caching architecture. This architecture makes Trino 10x faster for data lakes of any scale, from GB to EB.
What you will learn:
- Challenges relating to the speed and costs of running Trino in the cloud
- The new Trino file system cache feature overview, including the latest development status and test results
- A multi-level cache framework for maximized speed, including Trino file system cache and Alluxio distributed cache
- Real-world cases, including a large online payment firm and a top ridesharing company
- The future roadmap of Trino file system cache and Trino-Alluxio integration
26. // flat fees and taxes
final float customsFee = 5.5f;
final float immigrationFee = 7f;
final float federalTransportTax = .025f;
public float calculateAirfare(float baseFare) {
float fare = baseFare;
fare += immigrationFee + customsFee;
fare *=
return fare;
}
AirfareCalculator.java
federalTransportTax;
@kannonboy
27. // flat fees and taxes
final float customsFee = 5.5f;
final float immigrationFee = 7f;
final float federalTransportTax = .025f;
public float calculateAirfare(float baseFare) {
float fare = baseFare;
fare += immigrationFee + customsFee;
fare *=
return fare;
}
(1 + )
AirfareCalculator.java
federalTransportTax ;
@kannonboy
28. Pre-commit review
From: Tim Pettersen <tim@atlassian.com>
Date: Mon, 12 Sep 2016 10:24:10 +1000
Subject: [PATCH] Calculate federal transport tax correctly
--- a/com/atlassian/airfare/AirfareCalculator.java
+++ b/com/atlassian/airfare/AirfareCalculator.java
@@ -10,7 +10,7 @@
public float calculateAirfare(float baseFare) {
float fare = baseFare;
fare += immigrationFee + customsFee;
- fare *= federalTransportTax;
+ fare *= (1 + federalTransportTax);
return fare;
}
$ git format-patch HEAD~1 --stdout
@kannonboy
29. Pre-commit review
dev
maintainer
public float calculateAirfare(float baseFare) {
float fare = baseFare;
fare += immigrationFee + customsFee;
- fare *= federalTransportTax;
+ fare *= (1 + federalTransportTax);
return fare;
}
Subject: [PATCH] Calculate federal transport tax correctly
@kannonboy
30. >
>
>
>
>
The braces are unnecessary.
Pre-commit review
dev
maintainer
public float calculateAirfare(float baseFare) {
float fare = baseFare;
fare += immigrationFee + customsFee;
- fare *= federalTransportTax;
+ fare *= (1 + federalTransportTax);
return fare;
}
Subject: Re: [PATCH] Calculate federal transport tax correctly
>
>
@kannonboy
31. >
>
>
>
>
>
>
> >
>
Technically true, but I think they add clarity.
>
>
>
>
>
>
>
The braces are unnecessary.
Pre-commit review
dev
maintainer
public float calculateAirfare(float baseFare) {
float fare = baseFare;
fare += immigrationFee + customsFee;
- fare *= federalTransportTax;
+ fare *= (1 + federalTransportTax);
return fare;
}
Subject: Re: Re: [PATCH] Calculate federal transport tax correctly
@kannonboy
35. Pre-commit review
Junio C Hamano*
Contributors
git@vger.kernel.org
* Also an oversimplification
@kannonboy
36. Pull requests
Post-commit review
Pre-commit review
master
for/master
Staging area
Pre-commit review
Version control agnostic
Difficult to read
High barrier to submit patches
Simple and decentralized
Difficult to iterate
Easy to keep ‘000s of people in the loop
Have to manually merge work
@kannonboy
44. Not an SCM
SCM host
(e.g. Bitbucket)
Review host
(e.g. Crucible)
Dev team
push & pull
code review
slurp
slurp
slurp
slurp
@kannonboy
45. Post-commit review
Post-commit review
Supports popular CVCS and DVCS
Have to manually merge work
Flexible review content
Need a separate VCS host
Easy to iterate
Hard to enforce process
@kannonboy
58. Pull requests
Post-commit review
Pre-commit review
master
for/master
Staging area
Staging area review
Sophisticated policy enforcement
Steep learning curve to use & administer
Iteration is a little awkward
FOSS project built in Java, on JGit
Git only
Clean commit history
@kannonboy
82. git merge --squash
@kannonboy
“Combine commits on branch into a new commit on master.
Fail if master has any commits that branch doesn’t.”
m
aster
--ff-only
83. git merge --squash
@kannonboy
“Combine commits on branch into a new commit on master.
Fail if master has any commits that branch doesn’t.”
m
aster
--ff-only
84. git merge --squash
@kannonboy
“Combine commits on branch into a new commit on master.
Fail if master has any commits that branch doesn’t.”
m
aster
--ff-only
85. Merge Commit Fast forward Squash
Concise history
Lose context of how
features evolved
Which should I use?
“Ugly” history
Full traceability
Hard to screw up
mostly some
--no-ff --ff-only --squash
@kannonboy
No merge commits
Verbose history
Requires rebasing
86. Pull requests
bit.ly/git-lfs
Sophisticated policy enforcement
Less flexible review content
DVCS had some limitations around file size
Choice of merge strategies
Multiple team members can author code under review
Git & Mercurial
@kannonboy
99. 4. Use blame to pick reviewers
$ npm install -g git-guilt
# find blame delta for current branch
$ git guilt `git merge-base master HEAD` HEAD
Alice Foo ++++++++++++++++++++++++(239)
Bob Bar ++++++++
Eve Baz -------
Mira Ted ----------------
Bec Opal ------------------------(-159)
@kannonboy
100. 4. Use blame to pick reviewers
bit.ly/suggest-reviewers @kannonboy
101. 4. Use blame to pick reviewers
bit.ly/suggest-reviewers @kannonboy
102. 4. Use blame to pick reviewers
bit.ly/suggest-reviewers @kannonboy
106. 8. Build a team policy, as a team…
…and enforce it! @kannonboy
107. 9. Add screenshots for UI/UX changes
(gifs / videos are even better) @kannonboy
108. 9. Add screenshots for UI/UX changes
(gifs / videos are even better) @kannonboy
Monosnap GIPHY ScreenFlow
109. @kannonboy
Ask a programmer to review 10
lines of code, they'll find 10 issues.
Ask them to do 500 lines and
they'll say it looks good.
@GIRAYOZIL
“
”
10. Keep it concise
110. 10. Keep it conciseSecondsperline
Lines of Code
1 line per second
100 lines per second
@kannonboy
source: bit.ly/review-stats
111. Code Review vs. Pull requests
Need to review multiple
repos at once
Not on Git
Heavily iterative workflow
Literally everyone else
Dendrophobia
+
@kannonboy
(Traditional)