Drupal https://tag1consulting.com/term/drupal en git rebase --onto - The Simple One-Minute Explanation https://tag1consulting.com/blog/git-rebase-simple-one-minute-explanation <div class="field field--name-body field--type-text-with-summary field--label-hidden field--item">TL;DR the command you want is: git rebase --onto [the new HEAD base] [the old head base - check git log] [the-branch-to-rebase-from-one-base-to-another] And my main motivation to putting it here is to easily find it again in the future as I always forget the syntax. (This is a re-post from my old blog on drupalgardens, but it is still helpful.) Mental model To make all of this simpler think of: You have: Two red dishes on top of two blue dishes One yellow dish You want: Those two red dishes on top of the one yellow dish You do: Carefully go with the finger down to the bottom of the two red dishes, which is the first blue dish Take the two red dishes Transfer them over to the one yellow dish That is what rebase --onto does: git rebase --onto [yellow dish] [from: first blue dish] [the two red dishes] Note: The following is meant for an intermediate audience that is familiar with general rebasing in GIT Longer explanation It happened! A branch - you had based your work - on has diverged upstream, but you still have work in progress, which you want to preserve. So it looks... <div class="more-link"><a href="/blog/git-rebase-simple-one-minute-explanation" class="more-link" hreflang="en">Read more</a></div></div> <span><span lang="" about="/user/fabian-franz" typeof="schema:Person" property="schema:name" datatype="">fabian</span></span> <span>Tue, 04/17/2018 - 02:24</span> Tue, 17 Apr 2018 09:24:44 +0000 fabian 92 at https://tag1consulting.com Michael Meyers Joins Tag1 As Managing Director https://tag1consulting.com/blog/michael-meyers-joins-tag1-managing-director <div class="field field--name-body field--type-text-with-summary field--label-hidden field--item">I’m excited to announce that Michael Meyers has joined the Tag1 team as Managing Director. Michael was one of our very first clients 10 years ago, we’ve worked together on many projects over the years, and we look forward to working even more closely with him now that he’s a part of the Tag1 team. Michael has extensive experience building market leading high-growth technology companies and is particularly well known in the Drupal Community for his role in driving innovation of the Drupal platform. Michael brings over 20 years of experience managing global technology teams building high traffic, high performance mobile and web applications. Tag1 recently celebrated our 10th anniversary, in that time we’ve established ourselves as the leading provider of highly available, scalable, secure, high performance systems and as the organization other agencies and the users of Drupal turn to for help with their most challenging problems. We will be working with Michael to expand on our success to date and to help lead Tag1 into the future. Roots in Success Michael joins Tag1 from Acquia, where he spent the last 5 years on the leadership team as VP of Developer Relations, Developer Marketing, and helped launch the Developer... <div class="more-link"><a href="/blog/michael-meyers-joins-tag1-managing-director" class="more-link" hreflang="en">Read more</a></div></div> <span><span lang="" about="/user/jeremy-andrews" typeof="schema:Person" property="schema:name" datatype="">Jeremy</span></span> <span>Mon, 03/26/2018 - 08:05</span> Mon, 26 Mar 2018 15:05:12 +0000 Jeremy 90 at https://tag1consulting.com Background Image - A New Drupal 8 Module https://tag1consulting.com/blog/background-image-new-drupal-8-module <div class="field field--name-body field--type-text-with-summary field--label-hidden field--item">Introducing a new, easy to use, Drupal 8 module for background images: https://www.drupal.org/project/background_image If your site is designed around utilizing background images, then this module is for you! Whether you need a surgical implementation that only administrators/developers can implement or provide the ability to allow users to attach their own background images to entities, this module has you covered.<div class="more-link"><a href="/blog/background-image-new-drupal-8-module" class="more-link" hreflang="en">Read more</a></div></div> <span><span lang="" about="/user/mark-carver" typeof="schema:Person" property="schema:name" datatype="">markcarver</span></span> <span>Tue, 11/28/2017 - 17:00</span> Wed, 29 Nov 2017 01:00:00 +0000 markcarver 87 at https://tag1consulting.com Distributed Load Testing With Locust.io https://tag1consulting.com/blog/distributed-load-testing-locust <div class="field field--name-body field--type-text-with-summary field--label-hidden field--item">Locust.io is a great tool for applying load in a controlled manner and measuring response. However, historically speaking nobody has really cared about a solo locust. They just aren't that concerning in the singular. Likewise, load applied from a single point to a moderately complicated infrastructure is both easy to block (or rate limit) and also not very representative of a real world situation. (Aside from the people you inevitably end up talking to who archive entire sites so they can have a local copy.) So, to make your test more accurate and to differentiate yourself from that friend who keeps adding disks to their personal server so they can have a local copy of the internet, it is important to have a distributed test. In this article, I am going to cover one way to automate this process, using SaltStack and Locust.io. They are both written in Python, both very cool tools, and by combining their powers you can absolutely ensure nothing grows in a field. First, let us address where we ended up in our previous article. We have a simple loadtest that hits some logged in pages and some anonymous pages. Is it a good load test?... <div class="more-link"><a href="/blog/distributed-load-testing-locust" class="more-link" hreflang="en">Read more</a></div></div> <span><span lang="" about="/user/narayan-newton" typeof="schema:Person" property="schema:name" datatype="">nnewton</span></span> <span>Wed, 05/10/2017 - 20:57</span> Thu, 11 May 2017 03:57:28 +0000 nnewton 80 at https://tag1consulting.com Drupal Load Testing with Locust.io https://tag1consulting.com/blog/drupal-loadtest-locust <div class="field field--name-body field--type-text-with-summary field--label-hidden field--item">Apache JMeter and I have a long and complicated relationship. It is definitely a trusted and valuable tool, but I am also quite confident that certain parts of it will make an appearance in my particular circle of hell. Due to this somewhat uncomfortable partnership, I am always interested in new tools for applying load to an infrastructure and monitoring the results. Locust.io is not exactly a new tool, but I have only recently begun to use it for testing. What Is Locust? Locust is a load-testing framework which allows you to write your load plan in regular Python. This is a welcome experience if you have ever had to manually edit a JMeter JMX file. Not only is it a more pleasant experience, but writing executors in Python makes it easy to create a very flexible load plan. Idea For A Circle Of Hell: Given a slightly corrupted JMX file that must be loadable and cannot easily be replaced, attempt to look through it to find the error preventing loading. Every time you save the file, some other tag corrupts slightly. Who needs eternal damnation, give me a large JMX file and some failing drives… The other advantage of... <div class="more-link"><a href="/blog/drupal-loadtest-locust" class="more-link" hreflang="en">Read more</a></div></div> <span><span lang="" about="/user/narayan-newton" typeof="schema:Person" property="schema:name" datatype="">nnewton</span></span> <span>Thu, 04/13/2017 - 08:48</span> Thu, 13 Apr 2017 15:48:24 +0000 nnewton 79 at https://tag1consulting.com Security Monitoring for Drupal 6, 7, and 8 https://tag1consulting.com/blog/eol-anniversary <div class="field field--name-body field--type-text-with-summary field--label-hidden field--item">Though it came and went largely unnoticed, February 24th, 2017 marked an important anniversary to tens of thousands of Drupal website owners. February 24th 2017 was the 1-year anniversary of the End-of-Life (EOL) announcement for Drupal 6 as no longer supported by the Drupal community. It is widely known that major Drupal version upgrades require non-trivial resources. Not only do they require significant planning, technical expertise, and budget, but the path is often determined by funding and availability of maintainers of popular contributed functionality (modules). Add the complexity of upgrading custom development, and the conditions create significant challenges for small to medium websites without large operating budgets. As evidence of this, our research indicates there are at least 150,000 publicly accessible sites still running Drupal 6. One of a Kind Tag1 Quo is the only Drupal monitoring solution that supports Drupal 6 LTS, Drupal 7, and Drupal 8 under one dashboard. Check It Out! For most D6 site managers, the most critical (and stressful) impact of EOL is the discontinuation of Drupal 6 security patches by the Drupal security team. When a major version reaches EOL, the Drupal security team ceases to release patches, or serve public Security Advisories for... <div class="more-link"><a href="/blog/eol-anniversary" class="more-link" hreflang="en">Read more</a></div></div> <span><span lang="" about="/user/dylan-clear" typeof="schema:Person" property="schema:name" datatype="">Dylan Clear</span></span> <span>Wed, 03/15/2017 - 15:33</span> Wed, 15 Mar 2017 22:33:59 +0000 Dylan Clear 76 at https://tag1consulting.com Manage it with Puppet https://tag1consulting.com/blog/stop-disabling-selinux-manage-it-with-puppet <div class="field field--name-body field--type-text-with-summary field--label-hidden field--item">Once upon a time, many years ago, I wrote a blog post titled Stop Disabling SELinux! as a response to seeing many users, hosting companies, and development shops disabling SELinux as a first resort without any consideration of the increased security it was bringing them. The post outlines -- in a few easy steps -- how to configure SELinux for a common Drupal setup. But it's applicable to any LAMP application (plus memcached). I'm still a big proponent of running SELinux, and continue to encourage its use. In that same vein, I'd like to share how we at Tag1 Consulting typically deploy SELinux configuration using Puppet. Levering a configuration management system such as Puppet enables us to deploy SELinux configuration across many hosts with minimal work, as well as ensuring nothing is ever missed by making configuration changes manually -- a must for any scalable (and stable!) infrastructure. Too Long; Didn't Read Version "Holy shit, I'm not going to read a multiple-page blog post just to see what this guy has to say about Puppet and SELinux, just show me the code!" OK, OK! I understand I can be long winded at times. If you just want to see Puppet... <div class="more-link"><a href="/blog/stop-disabling-selinux-manage-it-with-puppet" class="more-link" hreflang="en">Read more</a></div></div> <span><span lang="" about="/user/jeff-sheltren" typeof="schema:Person" property="schema:name" datatype="">Jeff</span></span> <span>Tue, 02/21/2017 - 08:10</span> Tue, 21 Feb 2017 16:10:57 +0000 Jeff 75 at https://tag1consulting.com Finding a Place in the (Version) Universe, Part 2 https://tag1consulting.com/blog/finding-place-version-universe-part-2 <div class="field field--name-body field--type-text-with-summary field--label-hidden field--item">When we left off last time , we’d assembled a definition of what versions are. Now, we’re going to dive into how we use them in Tag1 Quo : comparing them to one another! The general goal is straightforward enough: we want to know if, say, 6.x-1.0 is less than 6.x-1.1 . (Yup!) Or if 6.x-1.0-alpha1 is less than 6.x-1.0 . (Also yup!) Let’s rewrite these two examples as tuple comparisons: {6,1,0,4,0,0} &lt; {6,1,1,4,0,0} = TRUE {6,1,0,0,0,0} &lt; {6,1,1,0,0,0} = TRUE To determine if one tuple is less than the other, we proceed pairwise through the tuple’s values, comparing the integers at the same position from each, until we find different values. Whichever tuple’s value at that position is less is considered to be the lesser version. (Uniformity in this comparison operation is why the mapping for prerelease types assigns unstable to 0, rather than 4.) However, this simple comparison operation doesn’t actually meet Quo’s requirements. Remember, Quo’s crucial question is not whether there are any newer versions, but whether there are newer security releases that are likely to apply to the version we’re investigating. So, say we’re looking at 6.x-1.1 for a given extension, and there exists a 7.x-2.2... <div class="more-link"><a href="/blog/finding-place-version-universe-part-2" class="more-link" hreflang="en">Read more</a></div></div> <span><span lang="" about="/user/sam-boyer" typeof="schema:Person" property="schema:name" datatype="">sam</span></span> <span>Tue, 10/25/2016 - 09:33</span> Tue, 25 Oct 2016 16:33:33 +0000 sam 73 at https://tag1consulting.com Versions, Versions Everywhere, Part 1 https://tag1consulting.com/blog/versions-versions-everywhere-part-1 <div class="field field--name-body field--type-text-with-summary field--label-hidden field--item">When Tag1 decided to build Tag1 Quo , we knew there was one question we’d have to answer over, and over, and over again: is there a security update available for this extension? Answering that question - at scale, for many websites, across many extensions, through all the possible versions they might have - is the heart of what Quo does. The problem seems simple enough, but doing it at such scale, for “all” versions, and getting it right, has some deceptive difficulties. Given a site with an extension at a particular version, we need to know where it sits on the continuum of all versions that exist for that extension (we often refer to that as the “version universe,”), and whether any of the newer versions contain security fixes. There are a few different approaches we could’ve taken to this problem. The one we ultimately settled on was a bit more abstracted than what might initially seem necessary. It was also not a “typical” Drupal solution. In this blog series, I’ll cover both the theoretical foundation of the problem, and the approach we took to implementation. What’s a version? Let's start at the beginning. Quo works by having existing... <div class="more-link"><a href="/blog/versions-versions-everywhere-part-1" class="more-link" hreflang="en">Read more</a></div></div> <span><span lang="" about="/user/sam-boyer" typeof="schema:Person" property="schema:name" datatype="">sam</span></span> <span>Thu, 10/20/2016 - 09:55</span> Thu, 20 Oct 2016 16:55:54 +0000 sam 71 at https://tag1consulting.com Drupal 6 Long Term Support is My Favorite Feature of Drupal 8 https://tag1consulting.com/blog/drupal-6-long-term-support-my-favorite-feature-drupal-8 <div class="field field--name-body field--type-text-with-summary field--label-hidden field--item">Long Term Support for Drupal 6 might be my favorite new feature included in Drupal 8. (I know, that might be stretching things for the fundamentally awesome step forward that Drupal 8 is, but bear with me.) Long Term Support for Drupal 6 If you're like me, you have loved the power of building websites for people that expose their ideas or services to the world. If you're like me, you've ended up "owning" a number of these websites that you somehow ended up supporting along the way too. And if you're like me, you've ended up with lots of Drupal 6 websites to support, even though D6 hit End-of-Life on February 24th, 2016. There are a lot of D6 sites out there with no money for an upgrade, but which still have a niche to fill or useful information for the world. Those can be an albatross around our necks and a time sink. We don't have the resources to update (and their owners don't either) but we can't set the site owners adrift. When previous versions of Drupal hit end-of-life, it was always a catastrophe for those of us with sites out there. Upgrade or else. Very costly... <div class="more-link"><a href="/blog/drupal-6-long-term-support-my-favorite-feature-drupal-8" class="more-link" hreflang="en">Read more</a></div></div> <span><span lang="" about="/user/randy-fay" typeof="schema:Person" property="schema:name" datatype="">rfay</span></span> <span>Tue, 08/30/2016 - 08:04</span> Tue, 30 Aug 2016 15:04:42 +0000 rfay 70 at https://tag1consulting.com