{"componentChunkName":"component---src-templates-blog-post-js","path":"/blog/server-domain-naming-conventions","result":{"data":{"prismic":{"allBlog_posts":{"edges":[{"node":{"page_title":null,"description":null,"keywords":null,"preview_image":null,"_meta":{"type":"blog_post","uid":"server-domain-naming-conventions","lang":"en-us","lastPublicationDate":"2021-04-20T11:59:31+0000"},"title":[{"type":"heading1","text":"Server Domain Naming Conventions","spans":[]}],"content":[{"type":"heading3","text":"Server A Records","spans":[]},{"type":"paragraph","text":"To begin, name each host (via the appropriate method for your operating system) and set its DNS A record to a hostname of the server:","spans":[]},{"type":"preformatted","text":"p-est-w-web01.domain.com. A 192.0.3.101","spans":[]},{"type":"paragraph","text":"This name should be used for physical labeling of the equipment and will be most useful for operations engineers, remote hands and record keeping. It’s also what should be resolved by the reverse DNS PTR record.","spans":[]},{"type":"paragraph","text":"See also Server Host Naming Conventions","spans":[{"start":9,"end":39,"type":"hyperlink","data":{"link_type":"Web","url":"https://ankocorp.com/articles/standards-and-best-practices/server-host-naming-conventions/"}}]},{"type":"heading3","text":"CNAME Records","spans":[]},{"type":"paragraph","text":"Then assign one or more DNS CNAME records to cover practical machine details, such as location, environment, work department, purpose, etc. This is all information that is easily reflected in your CMDB.","spans":[]},{"type":"paragraph","text":"Format example: <ServerType><Seq>.<Environment>.<Location>.domain.com","spans":[{"start":15,"end":69,"type":"strong"}]},{"type":"paragraph","text":"The CNAME documents should be known and used by developers for interconnection services. If these names are kept consistent, the mental effort required to remember your hostname will be reduced when you need it.","spans":[]},{"type":"heading3","text":"Standardized CNAME Structure","spans":[]},{"type":"paragraph","text":"Start with your registered domain and divide into a correct sub-domain each piece of additional information. DNS is hierarchical by design, which will give us some advantages later on.","spans":[]},{"type":"preformatted","text":"<wip>.domain.com. CNAME p-est-w-web01.domain.com.","spans":[]},{"type":"heading4","text":"Specify Location","spans":[]},{"type":"paragraph","text":"After your domain name, add a subdomain referencing the geography of the host. Use the 5-character United Nations Code for Trade and Transport Locations (UN/LOCODE) value based on the address of the host’s data center. It covers more specific locations than something like the IATA airport codes and is still a well-defined standard.","spans":[]},{"type":"paragraph","text":"Add a subdomain that refers to the location of the host after your domain name. Use the UN Trade and Transport Code (UN / LOCODE) 5-Character value based on host data center addresses. It covers more specific sites than IATA codes and continues to be a well-defined standard.","spans":[{"start":88,"end":115,"type":"hyperlink","data":{"link_type":"Web","url":"https://service.unece.org/trade/locode/us.htm"}}]},{"type":"paragraph","text":"<wip>.est.domain.com. CNAME p-est-w-web01.domain.com.","spans":[]},{"type":"heading4","text":"Specify Environment","spans":[]},{"type":"paragraph","text":"Next up, specify the environment that the host is a part of:","spans":[]},{"type":"paragraph","text":"dev – Development tst – Testing stg – Staging prd – Production","spans":[]},{"type":"paragraph","text":"These should be based on whatever process model you follow for release management…you may have more or less designations as well as environments like sandbox, training, etc..","spans":[]},{"type":"preformatted","text":"<wip>.prd.est.domain.com. CNAME p-est-w-web01.domain.com.","spans":[]},{"type":"heading4","text":"Specify Server Type and Serial Number","spans":[]},{"type":"paragraph","text":"Last up, specify the basic category of the host’s function and append a serial number/sequence:","spans":[]},{"type":"list-item","text":"app – Application Server (non-web)","spans":[]},{"type":"list-item","text":"sql – Database Server (MS Sql Server, mySQL)","spans":[]},{"type":"list-item","text":"ftp – FTP/sFTP Server","spans":[]},{"type":"list-item","text":"mta – Mail Server","spans":[]},{"type":"list-item","text":"dns – Name Server","spans":[]},{"type":"list-item","text":"cfg – Configuration Management (puppet/ansible/etc.)","spans":[]},{"type":"list-item","text":"mon – Monitoring Server (nagios, zabbix, etc.)","spans":[]},{"type":"list-item","text":"prx – Proxy Server","spans":[]},{"type":"list-item","text":"lbl – Load Balancer","spans":[]},{"type":"list-item","text":"ssh – SSH Jump/Bastion Host","spans":[]},{"type":"list-item","text":"sto – Storage Server","spans":[]},{"type":"list-item","text":"vcs – Version Control Software Server (Git/SVN/CVS/etc.)","spans":[]},{"type":"list-item","text":"vmm – Virtual Machine Manager","spans":[]},{"type":"list-item","text":"web – Web Server","spans":[]},{"type":"paragraph","text":"For the serial number, use zero-padded numbers based on your expected capacity. Plan for expansion, but usually two digits will be more than sufficient.","spans":[]},{"type":"preformatted","text":"web01.est.nyc.domain.com. CNAME p-est-w-web01.domain.com.","spans":[]},{"type":"paragraph","text":"Increment the serial numbers sequentially and segment them based on the type of server in a particular data center, rather than a globally-unique index. That means you may have a web01 in multiple data centers.","spans":[]},{"type":"heading2","text":"Convenience Names","spans":[]},{"type":"paragraph","text":"Beyond the standardized structure, you may want additional CNAME records for convenience words like webmail, cmdb, puppet, etc..","spans":[]},{"type":"preformatted","text":"www.domain.com. CNAME p-est-w-web01.domain.com.","spans":[]}],"image":{"dimensions":{"width":1600,"height":686},"alt":null,"copyright":null,"url":"https://images.prismic.io/ankocorp/707226a4-9f6e-46ff-ad52-9242351b9551_server-domain-naming.jpg?auto=compress,format"},"body":[]}},{"node":{"page_title":"Git Branching Workflow","description":null,"keywords":[{"keyword":null}],"preview_image":null,"_meta":{"type":"blog_post","uid":"git-branching-workflow","lang":"en-us","lastPublicationDate":"2021-05-24T12:28:55+0000"},"title":[{"type":"heading1","text":"Git Branching Workflow","spans":[]}],"content":[{"type":"heading3","text":"When joining a new project","spans":[]},{"type":"o-list-item","text":"On the project page, click the Fork button near the top right to create your own fork. (http://doc.gitlab.com/ce/gitlab-basics/fork-project.html)","spans":[{"start":88,"end":144,"type":"hyperlink","data":{"link_type":"Web","url":"http://doc.gitlab.com/ce/gitlab-basics/fork-project.html"}}]},{"type":"o-list-item","text":"Once the fork is complete, copy the clone URL for your fork. It's in the project header area, above the file list.","spans":[]},{"type":"o-list-item","text":"On the command line, git clone that copied URL, then into the newly-created project directory.","spans":[]},{"type":"o-list-item","text":"Back on GitHub, go back to the original project page, and copy the clone URL from the project header.","spans":[]},{"type":"o-list-item","text":"On the command line, add the repo as a remote source: git remote add main [copied URL]","spans":[{"start":69,"end":74,"type":"strong"}]},{"type":"o-list-item","text":"You now have two remote sources: main is the original repo and is your fork.","spans":[{"start":33,"end":38,"type":"strong"}]},{"type":"heading3","text":"When working on something new","spans":[]},{"type":"o-list-item","text":"Check out master: git checkout master","spans":[]},{"type":"o-list-item","text":"Create and switch to a new branch: git checkout -b bug_fixes_or_whatever","spans":[]},{"type":"o-list-item","text":"Do your work and commit your changes.","spans":[]},{"type":"heading3","text":"When finished with a feature or bug fix","spans":[]},{"type":"o-list-item","text":"If you have not yet pushed your branch, make sure the branch is fully up to date with changes that other developers have made:\nundefinedundefined","spans":[]},{"type":"o-list-item","text":"If you have pushed your branch, you should not rebase it, because doing so will require a push --force to overwrite the branch that's on Git; this is generally frowned upon since it will really screw things up if someone else has checked out that branch. Instead, create a new one and rebase that:\nundefinedundefinedundefinedundefined","spans":[{"start":7,"end":11,"type":"strong"}]},{"type":"o-list-item","text":"Push your branch to your fork of the repo: git push -u origin bug_fixes_or_whatever (include the -u so you don't need to specify the branch name next time you push)","spans":[]},{"type":"o-list-item","text":"On Git, open the project page, in your fork or the original project.","spans":[]},{"type":"o-list-item","text":"You'll see a big green button at the top offering to create a new pull request. Click that to start a pull request and review the changes you've made.","spans":[]},{"type":"o-list-item","text":"Before or after opening the PR, you can commit more changes and git push them to add them to the PR.","spans":[]},{"type":"heading3","text":"While the PR is in review: if you want to continue working","spans":[]},{"type":"o-list-item","text":"Create a new branch from your previous one: git checkout -b more_fixes","spans":[]},{"type":"o-list-item","text":"Do NOT push this branch yet. You'll do that later after the previous PR has been merged.","spans":[]},{"type":"heading2","text":"While the PR is in review: if you need to make changes based on code review feedback","spans":[]},{"type":"o-list-item","text":"Make sure you have the branch for that PR checked out: git checkout bug_fixes_or_whatever","spans":[]},{"type":"o-list-item","text":"Make your changes and commit them","spans":[]},{"type":"o-list-item","text":"Push them to your fork: git push","spans":[]},{"type":"heading3","text":"Once a PR has been merged","spans":[]},{"type":"o-list-item","text":"Update your local master branch: git checkout master, then git pull main master to get the latest commits from the master branch in the project.","spans":[{"start":59,"end":79,"type":"strong"}]},{"type":"o-list-item","text":"Push the updates to master to your fork: git push origin master","spans":[]},{"type":"o-list-item","text":"Delete your local branch that has been merged: git branch -d bug_fixes_or_whatever. This step isn't strictly required, but you'll quickly find yourself overwhelmed with old branches if you don't keep them tidy.","spans":[]},{"type":"heading3","text":"If you had changes in another new branch while waiting for code review","spans":[]},{"type":"o-list-item","text":"Check out your other branch: git checkout more_fixes","spans":[]},{"type":"o-list-item","text":"Since that branch was forked from your previous feature branch, you need to rebase it onto master so that your new commits are tacked on after the merge commit: git rebase master","spans":[]},{"type":"o-list-item","text":"Now, you can push your new branch: git push -u origin more_fixes","spans":[]},{"type":"heading3","text":"When a project has a new branch, how to add it to my forked repository?","spans":[]},{"type":"o-list-item","text":"Make sure you have all changes from the project repository:\ngit fetch main","spans":[]},{"type":"o-list-item","text":"Checkout new branch: \ngit checkout main/newbranch","spans":[]},{"type":"o-list-item","text":"Push the new branch to your fork:\ngit push -u origin newbranch","spans":[]}],"image":{"dimensions":{"width":800,"height":423},"alt":null,"copyright":null,"url":"https://images.prismic.io/ankocorp/fd43d074-9fe5-4441-9e1b-f98835fd5da6_git-data-model.png?auto=compress,format"},"body":[]}},{"node":{"page_title":null,"description":null,"keywords":[{"keyword":null}],"preview_image":null,"_meta":{"type":"blog_post","uid":"what-is-managed-service-provider","lang":"en-us","lastPublicationDate":"2022-06-27T14:29:23+0000"},"title":[{"type":"heading1","text":"What is Managed Service Provider?","spans":[]}],"content":[{"type":"heading1","text":"What is a Managed Service Provider?","spans":[]},{"type":"paragraph","text":"A managed service provider (MSP) is a company that manages the IT infrastructure and/or end-user systems of a customer remotely, typically on a proactive basis and under a subscription model.","spans":[]},{"type":"paragraph","text":"Under this subscription model, the customer is the entity that owns or directly oversees the organization or system being managed, whereas the Managed Services Provider (MSP) is the service provider providing the managed services.","spans":[]},{"type":"heading2","text":"Advantages of MSP","spans":[]},{"type":"paragraph","text":"The adoption of managed services is intended as an effective way to keep the technology updated, to gain access to skills, and to address cost-effectiveness, service quality, and risk issues.","spans":[]},{"type":"heading2","text":"Reduce Labor Costs","spans":[]},{"type":"paragraph","text":"Recruitment and training IT staff can be very expensive and your expectations are not always met by temporary workers. Outsourcing allows you to focus your staff on where you most need them.","spans":[]}],"image":{"dimensions":{"width":1600,"height":1067},"alt":null,"copyright":null,"url":"https://images.prismic.io/ankocorp/8a6ce9f5-1dde-4f5b-a29f-c129cc9f2e1b_programming-technologies.jpg?auto=compress,format"},"body":[{"__typename":"PRISMIC_Blog_postBodyBlock_with_text_and_image","label":"content-top","type":"block_with_text_and_image","primary":{"bg_color":"#eeeeee","bg_image":null,"min_height":null,"title":[{"type":"heading1","text":"Managed Service Providers vs In-House ","spans":[]}],"text":[{"type":"heading2","text":"In this whitepaper, you'll find:","spans":[]},{"type":"list-item","text":"Reasons to Opt for In-House IT","spans":[]},{"type":"list-item","text":"Reasons to Opt Against In-House IT","spans":[]},{"type":"list-item","text":"Advantages of Managed Services","spans":[]},{"type":"list-item","text":"Disadvantages of Managed Services","spans":[]}],"image":{"dimensions":{"width":1600,"height":1063},"alt":null,"copyright":null,"url":"https://images.prismic.io/ankocorp/68f56640-e6ec-4c6c-988c-042fa962340b_business-people.jpg?auto=compress,format"},"link":null,"link_style":"button-primary","link_text":null}},{"__typename":"PRISMIC_Blog_postBodyText","type":"text","label":null,"primary":{"text":[{"type":"heading2","text":"Stay Focused on Your Core Business","spans":[]},{"type":"paragraph","text":"As a company thrives, employees may have to take on an ever-expanding range of IT responsibility that goes beyond their original roles. As IT tasks grow, the focus for employees on their primary work is becoming increasingly difficult. In addition, to avoid downtimes, they may need to prioritize those IT tasks.","spans":[]},{"type":"paragraph","text":"In order to enable both technical and non-technical staff to better manage their time and improve their work efficiency, the IT management responsibility lies with a dedicated expert team. Outsourcing can help a company remain focused on revenue and innovation. The IT services managed provider is able to perform worldly tasks, and the customer can work more efficiently","spans":[]},{"type":"heading2","text":"Increase Efficiency and Competitiveness","spans":[]},{"type":"paragraph","text":"Organizations trying to do all IT services on their own can have significantly increased research, development, and implementation time, all of which increase costs and are then eventually passed on to customers.","spans":[]},{"type":"heading2","text":"Quickly Implement New Technology","spans":[]},{"type":"paragraph","text":"A high quality IT service organization will have the resources immediately to initiate new projects. It can take weeks or months to manage the same project internally, to hire, train and support the right people. Quality IT companies bring with them years of experience at first saving time and money for most implementations.","spans":[]},{"type":"heading2","text":"Scalability","spans":[]},{"type":"paragraph","text":"Given the rate of technological progress and the need for companies to scale up or down their resources on-demand, scalability is vital to support business growth and development. As a company expands, it should anticipate unexpected hurdles, one when technology requirements outgrow available resources. MSPs will provide support and services for growth stimuli or emergencies as required","spans":[]},{"type":"heading2","text":"Compliance and Security","spans":[]},{"type":"paragraph","text":"Are your workstations and servers being audited? Has your company been implementing and maintaining PCI security standards? Businesses have more ways than ever to prosper by taking many forms of payments such as Credit and Debit Cards, Gift Certificates, E-Checks, Wire Transfers to name a few, but with these forms of transacting also comes the need for due diligence. You can be sure that your company minimizes the risks associated with maintaining customer data, credit card numbers, sensitive competitive data, etc by outsourcing a skilled management company that is familiar with the PCI conformity standards.","spans":[]}],"bg_color":null,"bg_image":null}}]}},{"node":{"page_title":null,"description":null,"keywords":[{"keyword":null}],"preview_image":null,"_meta":{"type":"blog_post","uid":".gitignore-files","lang":"en-us","lastPublicationDate":"2022-07-25T12:04:10+0000"},"title":[{"type":"heading1","text":"Git Cheat Sheet","spans":[]}],"content":[{"type":"paragraph","text":"","spans":[]},{"type":"paragraph","text":"Command","spans":[{"start":0,"end":7,"type":"strong"}]},{"type":"paragraph","text":"git commit -a","spans":[]},{"type":"paragraph","text":"Stages files automatically","spans":[{"start":0,"end":26,"type":"hyperlink","data":{"link_type":"Web","url":"https://git-scm.com/docs/git-commit#Documentation/git-commit.txt---all","target":"_blank"}}]},{"type":"paragraph","text":"git log -p","spans":[]},{"type":"paragraph","text":"Produces patch text","spans":[{"start":0,"end":19,"type":"hyperlink","data":{"link_type":"Web","url":"https://git-scm.com/docs/git-log#_generating_patch_text_with_p","target":"_blank"}}]},{"type":"paragraph","text":"git show","spans":[]},{"type":"paragraph","text":"Shows various objects","spans":[{"start":0,"end":21,"type":"hyperlink","data":{"link_type":"Web","url":"https://git-scm.com/docs/git-show","target":"_blank"}}]},{"type":"paragraph","text":"git diff","spans":[]},{"type":"paragraph","text":"Is similar to the Linux `diff` command and can show the differences in various commits","spans":[{"start":0,"end":86,"type":"hyperlink","data":{"link_type":"Web","url":"https://git-scm.com/docs/git-diff","target":"_blank"}}]},{"type":"paragraph","text":"git diff --staged","spans":[]},{"type":"paragraph","text":"An alias to --cached, this will show all staged files compared to the named commit","spans":[{"start":0,"end":82,"type":"hyperlink","data":{"link_type":"Web","url":"https://git-scm.com/docs/git-diff","target":"_blank"}}]},{"type":"paragraph","text":"git add -p","spans":[]},{"type":"paragraph","text":"Allows a user to review patches to add to the current commit interactively","spans":[{"start":0,"end":74,"type":"hyperlink","data":{"link_type":"Web","url":"https://git-scm.com/docs/git-add","target":"_blank"}}]},{"type":"paragraph","text":"git mv","spans":[]},{"type":"paragraph","text":"Similar to the Linux `mv` command, this moves a file","spans":[{"start":0,"end":52,"type":"hyperlink","data":{"link_type":"Web","url":"https://git-scm.com/docs/git-mv","target":"_blank"}}]},{"type":"paragraph","text":"git rm","spans":[]},{"type":"paragraph","text":"Similar to the Linux `rm` command, this deletes, or removes a file","spans":[{"start":0,"end":66,"type":"hyperlink","data":{"link_type":"Web","url":"https://git-scm.com/docs/git-rm","target":"_blank"}}]},{"type":"paragraph","text":"There are many useful git cheatsheets online as well. Please take some time to research and study a few, such as this one.","spans":[{"start":113,"end":121,"type":"hyperlink","data":{"link_type":"Web","url":"https://github.github.com/training-kit/downloads/github-git-cheat-sheet.pdf","target":"_blank"}}]},{"type":"heading3","text":".gitignore files","spans":[]},{"type":"paragraph","text":".gitignore files are used to intentionally tell the git tool to ignore some files in a given Git repository. For example, this can be useful for configuration or metadata files that a user may not want to check into the master branch. Check out more at: https://git-scm.com/docs/gitignore.","spans":[{"start":254,"end":288,"type":"hyperlink","data":{"link_type":"Web","url":"https://git-scm.com/docs/gitignore","target":"_blank"}}]},{"type":"paragraph","text":"A few common examples of file patterns to exclude can be found here.","spans":[{"start":63,"end":67,"type":"hyperlink","data":{"link_type":"Web","url":"https://gist.github.com/octocat/9257657","target":"_blank"}}]},{"type":"paragraph","text":"","spans":[]},{"type":"heading1","text":"Git Branches and Merging Cheat Sheet","spans":[]},{"type":"paragraph","text":"\ngit branch","spans":[]},{"type":"paragraph","text":"Used to manage branches","spans":[{"start":0,"end":23,"type":"hyperlink","data":{"link_type":"Web","url":"https://git-scm.com/docs/git-branch","target":"_blank"}}]},{"type":"paragraph","text":"git branch <name> ","spans":[]},{"type":"paragraph","text":"Creates the branch","spans":[{"start":0,"end":18,"type":"hyperlink","data":{"link_type":"Web","url":"https://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging","target":"_blank"}}]},{"type":"paragraph","text":"git branch -d <name>","spans":[]},{"type":"paragraph","text":"Deletes the branch","spans":[{"start":0,"end":18,"type":"hyperlink","data":{"link_type":"Web","url":"https://git-scm.com/docs/git-branch#Documentation/git-branch.txt--D","target":"_blank"}}]},{"type":"paragraph","text":"git branch -D <name>","spans":[]},{"type":"paragraph","text":"Forcibly deletes the branch","spans":[{"start":0,"end":27,"type":"hyperlink","data":{"link_type":"Web","url":"https://git-scm.com/docs/git-branch#Documentation/git-branch.txt--D","target":"_blank"}}]},{"type":"paragraph","text":"git checkout <branch> ","spans":[]},{"type":"paragraph","text":"Switches to a branch.","spans":[{"start":0,"end":21,"type":"hyperlink","data":{"link_type":"Web","url":"https://git-scm.com/docs/git-checkout","target":"_blank"}}]},{"type":"paragraph","text":"git checkout -b <branch>","spans":[]},{"type":"paragraph","text":"Creates a new branch and switches to it.","spans":[{"start":25,"end":39,"type":"hyperlink","data":{"link_type":"Web","url":"https://git-scm.com/docs/git-checkout#Documentation/git-checkout.txt--bltnewbranchgt","target":"_blank"}}]},{"type":"paragraph","text":"git merge <branch> ","spans":[]},{"type":"paragraph","text":"Merge joins branches together. ","spans":[{"start":0,"end":29,"type":"hyperlink","data":{"link_type":"Web","url":"https://git-scm.com/docs/git-merge","target":"_blank"}}]},{"type":"paragraph","text":"git merge --abort","spans":[]},{"type":"paragraph","text":"If there are merge conflicts (meaning files are incompatible), --abort can be used to abort the merge action.","spans":[]},{"type":"paragraph","text":"git log --graph --oneline","spans":[]},{"type":"paragraph","text":"This shows a summarized view of the commit history for a repo.","spans":[{"start":0,"end":61,"type":"hyperlink","data":{"link_type":"Web","url":"https://git-scm.com/book/en/v2/Git-Basics-Viewing-the-Commit-History","target":"_blank"}}]},{"type":"heading1","text":"Git Revert Cheat Sheet","spans":[]},{"type":"paragraph","text":"\ngit checkout is effectively used to switch branches.","spans":[{"start":1,"end":13,"type":"hyperlink","data":{"link_type":"Web","url":"https://git-scm.com/docs/git-checkout","target":"_blank"}}]},{"type":"paragraph","text":"git reset basically resets the repo, throwing away some changes. It’s somewhat difficult to understand, so reading the examples in the documentation may be a bit more useful.","spans":[{"start":0,"end":10,"type":"hyperlink","data":{"link_type":"Web","url":"https://git-scm.com/docs/git-reset#_examples","target":"_blank"}}]},{"type":"paragraph","text":"Some other useful online articles discuss more aggressive approaches to resetting the repo.","spans":[{"start":72,"end":90,"type":"hyperlink","data":{"link_type":"Web","url":"https://jwiegley.github.io/git-from-the-bottom-up/3-Reset/4-doing-a-hard-reset.html","target":"_blank"}}]},{"type":"paragraph","text":"git commit --amend is used to make changes to commits after-the-fact, which can be useful for making notes about a given commit.","spans":[{"start":0,"end":18,"type":"hyperlink","data":{"link_type":"Web","url":"https://git-scm.com/docs/git-commit#Documentation/git-commit.txt---amend","target":"_blank"}}]},{"type":"paragraph","text":"git revert makes a new commit which effectively rolls back a previous commit. It’s a bit like an undo command.","spans":[{"start":0,"end":10,"type":"hyperlink","data":{"link_type":"Web","url":"https://git-scm.com/docs/git-revert","target":"_blank"}}]},{"type":"paragraph","text":"There are a few ways you can roll back commits in Git.","spans":[{"start":12,"end":20,"type":"hyperlink","data":{"link_type":"Web","url":"https://git-scm.com/book/en/v2/Git-Basics-Undoing-Things","target":"_blank"}}]},{"type":"paragraph","text":"There are some interesting considerations about how git object data is stored, such as the usage of sha-1. ","spans":[]},{"type":"paragraph","text":"Feel free to read more here:","spans":[]},{"type":"list-item","text":"https://en.wikipedia.org/wiki/SHA-1","spans":[{"start":0,"end":35,"type":"hyperlink","data":{"link_type":"Web","url":"https://en.wikipedia.org/wiki/SHA-1","target":"_blank"}}]},{"type":"list-item","text":"https://github.blog/2017-03-20-sha-1-collision-detection-on-github-com/","spans":[{"start":0,"end":71,"type":"hyperlink","data":{"link_type":"Web","url":"https://github.blog/2017-03-20-sha-1-collision-detection-on-github-com/","target":"_blank"}}]}],"image":{"dimensions":{"width":800,"height":423},"alt":null,"copyright":null,"url":"https://images.prismic.io/ankocorp/fd43d074-9fe5-4441-9e1b-f98835fd5da6_git-data-model.png?auto=compress,format"},"body":null}}]}}},"pageContext":{"uid":"server-domain-naming-conventions","category":null,"rootQuery":"\n    query postQuery {\n        prismic {\n            allBlog_posts {\n                edges {\n                    node {\n                        page_title\n                        description\n                        keywords {\n                            keyword\n                        }\n                        preview_image\n                        _meta {\n                            type\n                            uid\n                            lang\n                            lastPublicationDate\n                        }\n                        title\n                        content\n                        image\n                        body {\n                            ... on PRISMIC_Blog_postBodyGallery {\n                                type\n                                label\n                                primary {\n                                    anchor\n                                    bgColor\n                                    bgImage\n                                    text\n                                    title\n                                }\n                                fields {\n                                    image\n                                    text\n                                    title\n                                }\n                            }\n                            ... on PRISMIC_Blog_postBodyPricing_plans {\n                                type\n                                label\n                                fields {\n                                    price_units\n                                    plan_price\n                                    plan_name\n                                    plan_features\n                                    link_text\n                                    link_style\n                                    link {\n                                        ...link\n                                    }\n                                    is_free_plan\n                                }\n                                primary {\n                                    bg_image\n                                    bg_color\n                                    title\n                                    text\n                                }\n                            }\n                            ... on PRISMIC_Blog_postBodyText {\n                                type\n                                label\n                                primary {\n                                    text\n                                    bg_color\n                                    bg_image\n                                }\n                            }\n                            ... on PRISMIC_Blog_postBodyFeature {\n                                type\n                                label\n                                primary {\n                                    bg_color\n                                    bg_image\n                                    text\n                                }\n                                fields {\n                                    image\n                                    link_style\n                                    link_text\n                                    text\n                                    title\n                                    link {\n                                        ...link\n                                    }\n                                }\n                            }\n                            ... on PRISMIC_Blog_postBodyBlock_with_text_and_image {\n                                label\n                                type\n                                primary {\n                                    bg_color\n                                    bg_image\n                                    min_height\n                                    title\n                                    text\n                                    image\n                                    link {\n                                        ...link\n                                    }\n                                    link_style\n                                    link_text\n                                }\n                            }\n                            ... on PRISMIC_Blog_postBodyForm {\n                                type\n                                label\n                                primary {\n                                    bg_color\n                                    bg_image\n                                    form_script\n                                    form_url\n                                    text\n                                }\n                            }\n                            ... on PRISMIC_Blog_postBodyText {\n                                type\n                                label\n                                primary {\n                                    text\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        }\n    }\n"}}}