Planet Drupal

Syndicate content
Drupal.org - aggregated feeds in category Planet Drupal
Updated: 18 min 26 sec ago

Drupal Watchdog: MySQL Query Optimization

Tue, 01/13/2015 - 18:52
div class=field field--article-edit-printtype field-type-list-text field-label-hidden field--rss Feature /div div class=field field--article-body field-type-text-long field-label-hidden field--rss pimg src=http://cdn1.drupalwatchdog.com/sites/default/files/images/web/4.1-MySQLQueryOptimization.jpg alt= class=img-responsive img-thumbnail width=33% align=right / A large part of MySQL optimization lies in improving poorly performing SQL queries. While tuning is important, it often has nowhere near the impact of actually fixing a poorly performing query. Fixing queries is also a lot more fun. Obviously query optimization is a large subject, and can’t possibly be covered in full in a single article. I highly recommend that you get a book on this subject; for any Drupal developer, it is well worth learning./p p As a web developer using a CMS, you are only slightly removed from the SQL layer. Not completely knowing how to use this layer and how to optimize it is very limiting. To get you started, we will cover some very basic optimization, index usage, and join optimization techniques./p h3Index Basics/h3 p Even though indexes are very important for database performance, they are not completely understood by many developers, which often leads to easily-avoidable problems. The main issue is the mystical belief that the MySQL optimizer should be able to quickly run a query if an index so much as emtouches/em the columns in question. Sadly, indexes are not magical./p p It is best to think of an index as a tree, largely because they are trees in most DB systems. (B+Trees, specifically; for more information, see a href=http://wdog.it/4/1/btreehttp://wdog.it/4/1/btree/a.)/p p Thus, if you have an example index emtest/em that covers em(columnA, columnB)/em, you literally have a tree of emcolumnA/em values, with emcolumnB/em values in the leaves. If you have a query that has a span class=geshifiltercode class=php geshifilter-phpWHERE/code/span condition on these two columns, MySQL will go through this tree looking for the correct emcolumnA/em value first, and then go into the leaves of that object, and find the correct emcolumnB/em value./p /div

OpenLucius: Drupal Grants, what to do with this node access system?

Tue, 01/13/2015 - 17:48
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item evenh3Viewing, editing and deleting pages in Drupal/h3pWhen you have some experience with Drupal it will be clear that you can set your rights for content management in the permission table (/admin/people/permissions)./ppCheck the appropriate permissions and everyone will get the required rights to view, add, edit or delete content. In other words the so-called CRUD actions: Create, Read, Update, Delete./ppSo far so good./p/div/div/div

ERPAL: Looking back on 2014 with Drupal business apps

Tue, 01/13/2015 - 16:30
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item evenpThe year 2014 was entirely about flexible and open business applications based on Drupal - and we’ll continue to follow this vision in 2015.br / In 2014 we staffed up our ERPAL team and won strategic clients who gave us feedback and helped us continue to finance our open source development. This positive resonance provides confirmation that Drupal can become an ever-larger part of the open source business application market.br / One of the ERPAL Platform projects of 2014 that we’re very proud of was presented in a featured webinar on a href=http://de.slideshare.net/ManuelPistner/drupal-commerce-41509089open integration with Drupal commerce/a. The ERPAL Platform based foam creator gives an industrial company the means to let its clients construct and order individually manufactured products – all directly online. The orders are sent to the manufacturing department and production starts. Because the application is fully integrated with the company’s workflow and IT infrastructure, no manual data transfer is needed and the efficiency of the whole sales-to-production process has increased by more than 75%. This unique use case shows the power of Drupal extended well beyond content sites./p pWhereas other open source business apps like Odoo focus solely on broadening the palette of business apps available for ERP systems, ERPAL comes from the other direction. We use Drupal as a highly flexible and stable application framework that helps you build any kind of web application at all - and Drupal can do this with almost no coding, just by configuring. Using this strategy we introduced Drupal to some businesses that hadn’t even heard of Drupal. And now that they see its power and flexibility, they wouldn’t want to go without it anymore.br / With a href=http://drupal.org/project/erpal_platformERPAL Platform/a, which we released in 2014, we provide Drupal developers and site builders with a free Drupal distribution for building highly flexible business applications and a href=http://www.erpal.info/de/blog/start-an-online-business-with-erpal-platforme-commerce businesses in a Drupal box/a. It integrates many Drupal modules like Drupal Commerce and Rules, which are known to leverage flexibility. With the help of the Drupal community we implemented an architecture that covers contact management and all components of the sales process such as quotes, orders and invoices. As Drupal became more open, providing web service for all entities in Drupal 8, we implemented the architecture of ERPAL to integrate with other services. Together with a closed beta customer test pool, we are running ERPAL Platform as a fully-integrated agency platform, automating integration tasks between Jira, Mite, Trello, Redmine and toggle. It helps save time in administration and automates billing and controlling processes in project-based business. Thanks to everyone who joined our a href=http://www.erpal.info/de/erpal-integration-surveyERPAL Platform integration survey/a. This survey is still open and we are looking forward to even more feedback to help us increase our number of beta testers./p pBecause in 2014 we were deploying more than 25 Drupal-based business apps and always had Drupalgeddon in mind, we decided to go public with our technology for Drupal update automation, which we previously had used only internally for our clients. Drop Guard lets Drupal users and agencies a href=http://www.drop-guard.netautomate Drupal security updates/a immediately after a new security update release. If you’re interested in further details, workflows and technology, read more in our blog post about a href=http://www.erpal.info/de/blog/how-we-automate-drupal-security-updateshow since 2012 we’ve automated Drupal security updates with ERPAL: you can too/a!/p pAll in all, 2014 was an amazing year for ERPAL and we saw that there’s a market for open source business applications. We’re looking forward to contributing even more code, know-how, webinars and sessions to the Drupal community in 2015./p /div/div/div

Drupalize.Me: Changes in the Form API in Drupal 8

Tue, 01/13/2015 - 15:13
div class=field field-name-body field-type-text-with-summary field-label-hidden text-content text-secondarydiv class=field-itemsdiv class=field-item evenpIn my previous post, I documented the first of my a href=http://drupalize.me/blog/201412/adventures-porting-d7-form-module-drupal-8Adventures in Porting a D7 Form Module to Drupal 8/a. In that article, I documented how I used the Drupal Module Upgrader to convert my Drupal 7 module, Form Fun, to Drupal 8 and what I learned along the way about how Routes and Controllers replaced codehook_menu/code, and what I gleaned from change records about other API changes. This article is a continuation of that post, so you might want to a href=http://drupalize.me/blog/201412/adventures-porting-d7-form-module-drupal-8pop over and give it a read/a so that you're up to speed with what we're doing here./p /div/div/divdiv id=comment-wrapper-nid-1992/div

DrupalOnWindows: Setting up Code Syntax Higlighting with Drupal

Tue, 01/13/2015 - 07:00
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item even property=content:encodedpWhile setting up (still in progres..) this website we found the need to enable easy Code Highlighting to be done through our WYSIWYG editor of choice: a href=http://ckeditor.com/CKeditor/a. What looked like a 30 minute task, ended up in a more than 3 hour adventure. Let's see what happened./p/div/div/divdiv class=form-item form-type-item labelLanguage /label English /div

Liran Tal's Enginx: Drupal Performance Tip – be humble on hook_init()

Mon, 01/12/2015 - 17:06
div class=seriesmetaThis entry is part 5 of 5 in the series a href=http://enginx.com/series/drupal-performance-tips/ class=series-60 title=Drupal Performance TipsDrupal Performance Tips/a/divpIn the spirit of the computer video game a href=http://doom.wikia.com/wiki/Doom target=_blankDoom /aand its a href=http://doom.wikia.com/wiki/Skill_level target=_blankskill levels/a, we#8217;ll review a few ways you can improve  your a href=http://drupal.org target=_blankDrupal /aspeed performance     and optimize for better results and server response time. These tips that we#8217;ll cover may be at times specific to Drupal 6 versions, although     you can always learn the best practices from these examples and apply them on your own code base./p pimg class=alignleft src=http://adamatomic.com/pics/blog/doom/doom2.jpg alt=Doom width=298 height=212 //p pDoom skill levels: (easiest first)/p p1.strong I#8217;m too young to die/strong/p p2. Hey, not too rough/p p3. Hurt me plenty/p p4. Ultra-violence/p p5. Nightmare!/p pstrong  This post is rated #8220;I#8217;m too young too die#8221; difficulty level/strong./p pnbsp;/p pa href=https://www.drupal.org/ target=_blankDrupal /ais known for its plethora of a href=https://www.drupal.org/node/292 target=_blankhooks/a, and their use is abundant through-out any Drupal modules to plug into the way that Drupal works. That#8217;s fine, though once you#8217;ve decided you#8217;re moving on with Drupal as your live web application/website and you#8217;re using modules from the eco-system, that is when you need to spend some more time reviewing modules a little bit closer than just their download counts or issues on drupal.org/p pa href=https://api.drupal.org/api/drupal/developer%21hooks%21core.php/function/hook_init/6 target=_blankhook_init/a() runs on every page load. Imagine you#8217;re having a few modules implementing this hook, then you already have impact on your server response time performance for every page access in Drupal. Maybe those modules have a very slight overhead there, maybe that#8217;s part of what they do, and that#8217;s fine, but it may at times benefit you to review and investigate if the code there, that maybe your team added too, is better being re-factored to some other place and not on every page load./p pThere is another perspective for it of course, maybe things do need to take place on every page load, but their implementation in the code might be faulty. Imagine you#8217;re doing some expensive IO on every page load, like calling an API, or querying a heavy table. Maybe you can re-factor to cache this information?/p pa href=http://enginx.com/wp-content/uploads/2014/11/drupal_perf-4.pngimg class=aligncenter size-full wp-image-509 src=http://enginx.com/wp-content/uploads/2014/11/drupal_perf-4.png alt=drupal_perf-4 width=628 height=231 //a/p pnbsp;/p !-- Easy AdSense V7.43 -- !-- [leadout: 1 urCount: 1 urMax: 0] -- div class=ezAdsense adsense adsense-leadout style=text-align:center;margin:12px; script async src=//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js/script !-- enginx-blog-wide-post -- ins class=adsbygoogle style=display:inline-block;width:728px;height:90px data-ad-client=ca-pub-9677997565991773 data-ad-slot=6746030703/ins script (adsbygoogle = window.adsbygoogle || []).push({}); /script/div !-- Easy AdSense V7.43 -- pThe post a rel=nofollow href=http://enginx.com/blog/drupal-performance-tip-im-young-die-humble-hook_init/Drupal Performance Tip #8211; be humble on hook_init()/a appeared first on a rel=nofollow href=http://enginx.comLiran Tal#039;s Enginx/a./p

Evolving Web: Parallelized web scraping using RollingCurl

Mon, 01/12/2015 - 16:35
img typeof=foaf:Image src=http://evolvingweb.ca/sites/default/files/styles/medium/public/web-scraper-670x300.png?itok=1qmg8RUp width=400 height=179 alt= /pThe web is full of information! Your web sites probably already use many APIs for a href=https://www.drupal.org/project/gmapmaps/a, a href=https://www.drupal.org/project/twitterTwitter/a, a href=https://www.drupal.org/project/geoipIP geolocation/a, and more. But what about data that's on the web, but doesn't have a readily available API?/p a href=http://evolvingweb.ca/blog/parallelized-web-scraping-using-rollingcurlread more/a

Yuriy Gerasimov: Centralize your logs with logstash (getting started guide)

Mon, 01/12/2015 - 13:51
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item even property=content:encodedpa href=www.logstash.netLogstash/a is a great tool to centralize logs in your environment. For example we have several drupal webheads that write logs into syslog. It would be really nice to see those logs somewhere centrally to find out about your system's health status and debug potential problems./p pIn this article I would like to show how easy to start using logstash for blocal development/b./p pFirst of all in order to run logstash you need to follow instructions a href=http://logstash.net/docs/1.4.2/tutorials/getting-started-with-logstashhttp://logstash.net/docs/1.4.2/tutorials/getting-started-with-logstash/a./p pLogstash has following concepts:/p ulliinputs -- where we grab logs from. This can be files on local files system, records of database table, redis and many more./li licodecs -- way you can serialize/unserialize you data. Think about it as json decode when you get records or running json encode when you are saving log message./li lifilters -- instruments to filter particular log records we want to process. Example -- syslog has many records but we want to extract only drupal related./li lioutputs -- where we are passing our processed log records. It can be a file (multiple different formats), stdout or what is most interesting elastic search/li /ulpTricky part comes when you need to install Elastic Search to store your logs and Kibana to view them. There is very nice shortcut for development purposes -- to use already built docker image for that./p pI have found very handy to use a href=https://registry.hub.docker.com/u/sebp/elk/https://registry.hub.docker.com/u/sebp/elk//a image./p pSo you need docker to be installed (a href=http://docs.docker.com/installation/ubuntulinux/http://docs.docker.com/installation/ubuntulinux//a). Then you import docker image and run it./p div class=geshifilter pre class=drupal6 geshifilter-drupal6 style=font-family:monospace;sudo docker pull sebpspan style=color: #66cc66;//spanelk sudo docker run -p span style=color: #cc66cc;5601/span:span style=color: #cc66cc;5601/span -p span style=color: #cc66cc;9200/span:span style=color: #cc66cc;9200/span -p span style=color: #cc66cc;5000/span:span style=color: #cc66cc;5000/span -it --name elk sebpspan style=color: #66cc66;//spanelk/pre/div pNow we have docker image working plus it has port forwarding to our localhost./p pIn order to send your logstash logs to elastic search you need to use elasticsearch output. Here is logstash configuration file example that can be run for testing./p div class=geshifilter pre class=drupal6 geshifilter-drupal6 style=font-family:monospace;input span style=color: #66cc66;{/span stdin span style=color: #66cc66;{/span span style=color: #66cc66;}/span span style=color: #66cc66;}/span output span style=color: #66cc66;{/span stdout span style=color: #66cc66;{/span codec =span style=color: #66cc66;gt;/span rubydebug span style=color: #66cc66;}/span elasticsearch span style=color: #66cc66;{/span host =span style=color: #66cc66;gt;/span span style=color: #ff0000;localhost/span port =span style=color: #66cc66;gt;/span span style=color: #ff0000;9200/span protocol =span style=color: #66cc66;gt;/span span style=color: #ff0000;http/span span style=color: #66cc66;}/span span style=color: #66cc66;}/span/pre/div pNow when you run logstash and enter couple of messages they will be fed to elasticsearch. Now you can open a href=http://localhost:5601/http://localhost:5601//a to see kibana in action./p pNext step would be to set up your own rules of extracting drupal (or any other type) logs and pushing them to elastic search. But this is very individual task that is out of the scope of this guide./p /div/div/divdiv class=field field-name-field-tags field-type-taxonomy-term-reference field-label-abovediv class=field-labelTags:nbsp;/divdiv class=field-itemsdiv class=field-item even rel=dc:subjecta href=/taxonomy/term/6 typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=drupal/a/divdiv class=field-item odd rel=dc:subjecta href=/taxonomy/term/3 typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=drupal planet/a/divdiv class=field-item even rel=dc:subjecta href=/taxonomy/term/21 typeof=skos:Concept property=rdfs:label skos:prefLabel datatype=logstash/a/div/div/div

Paul Rowell: Drupal fields; improving select lists

Sun, 01/11/2015 - 21:39
div class=field field-name-field-image field-type-image field-label-hiddendiv class=field-itemsdiv class=field-item evenimg typeof=foaf:Image src=http://www.paulrowell.com/sites/default/files/styles/image258xauto/public/field/image/drupal_select.png?itok=7Shoj6Wb width=258 height=157 alt=Drupal and select lists //div/div/divdiv class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item even property=content:encodedpEveryone knows what a select list is, what it looks like and how it works. But that doesn't mean it can't get better, here a few modules that can be used to improve the experience for users when selecting items./p /div/div/div

Drupal Camp NJ 2015: Drupal 8 core critical issues sprint to coincide with camp

Sun, 01/11/2015 - 17:53
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item even property=content:encodedpThe Central NJ Drupal Meetup has received one of the first grants from the new Drupal Association a href=https://assoc.drupal.org/d8accelerateDrupal 8 Accelerate/a program. The Sprint will take place from January 29 to Febrary 1. For more details see a href=https://groups.drupal.org/node/453848https://groups.drupal.org/node/453848/a /p/div/div/div

DrupalOnWindows: Drupal on IIS or Apache

Sun, 01/11/2015 - 10:38
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item even property=content:encodedpIn this article I will try to find out if there is any performance lead in running Drupal on IIS over Apache. I will not run any benchmarks on my own, just analyze what I could find about this surfing the web. Type iis vs apache drupal in Google and this is what I found./p ullia href=#section1The Links/a/li lia href=#section2Conclusion/a/li /ulh3a id=section1 name=section1The links/a/h3 pa href=https://groups.drupal.org/node/234373Drupal Performance on IIS7 vs Apache/a/p pstrongDate:/strong Mid 2012/p/div/div/divdiv class=form-item form-type-item labelLanguage /label English /div

3C Web Services: How to override field templates in Drupal 7

Fri, 01/09/2015 - 22:42
pDrupal provides a quick and simple way to customize field output globally using template files. Overriding a field's template file can be useful if you need to customize the HTML, data, or provide custom logic to a Drupal field. Template files allow you to target all fields, fields of specific names, fields of specific types and fields of specific content types./p

Chapter Three: Principles of Configuration Management - Part Two

Fri, 01/09/2015 - 22:01
pspan style=line-height: 1.538em;img alt=Configuration cogs data-picture-align=right data-picture-group=c3 src=/sites/default/files/blog/%5Buser%5D/cogwheel-145804.svg style=padding-left: 0.5em width=100px //spanspan style=line-height: 1.538em;This is the second in a series of posts about Drupal 8's configuration management system. The Configuration Management Initiative (CMI) was the a href=http://buytaert.net/configuration-management-in-drupal-8first Drupal 8 initiative to be announced in 2011/a, and we've learned a lot during thousands of hours of work on the initiative since then. These posts will share what we've learned and provide background on the why and how. In case you missed it, you can read the first part here./span/p

Drupal Easy: DrupalEasy Podcast 142: New Jersey (News Lightning Round)

Fri, 01/09/2015 - 21:29
div class=field field-type-link field-field-embed a href=http://podcasts.drupaleasy.com.s3.amazonaws.com/DrupalEasy_ep142_20150109.mp3 rel=enclosureDownload Podcast 142/a /div p...and we're back! After a holiday hiatus, Andrew, Ryan, Ted, and Mike are back for a guest-less news round-up. We set the timer and spent 3 minutes on over a dozen different Drupal-related news items from the past 8 weeks. Drupal 8, Drupal.org user personas, and major merger, someone gets a job, and several 2014 lists are covered, along with our picks of the week./p pa href=http://drupaleasy.com/podcast/2015/01/drupaleasy-podcast-142-new-jersey-news-lightning-round target=_blankread more/a/pdiv class=feedflare a href=http://feeds.feedburner.com/~ff/DrupalEasy?a=OfPlpLZX724:SSzC5152qJY:yIl2AUoC8zAimg src=http://feeds.feedburner.com/~ff/DrupalEasy?d=yIl2AUoC8zA border=0/img/a a href=http://feeds.feedburner.com/~ff/DrupalEasy?a=OfPlpLZX724:SSzC5152qJY:qj6IDK7rITsimg src=http://feeds.feedburner.com/~ff/DrupalEasy?d=qj6IDK7rITs border=0/img/a /divimg src=//feeds.feedburner.com/~r/DrupalEasy/~4/OfPlpLZX724 height=1 width=1 alt=/

Dries Buytaert: Acquia retrospective 2014

Fri, 01/09/2015 - 21:01
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item even property=content:encodedpAs is now a tradition for me, here is my annual Acquia retrospective, where I look back at 2014 and share what's on my mind as we start the new year. I take the time to write these retrospectives not only for you dear reader, but also for myself, because I want to keep a record of the changes we've gone through as a company and how my personal thinking is evolving from year to year. But I also write them for you, because you might be able to learn from my experiences or from analyzing the information provided. If you would like to, you can read my previous retrospectives: a href=http://buytaert.net/acquia-retrospective-20092009/a, a href=http://buytaert.net/acquia-retrospective-20102010/a, a href=http://buytaert.net/acquia-retrospective-20112011/a, a href=http://buytaert.net/acquia-retrospective-20122012/a and a href=http://buytaert.net/acquia-retrospective-20132013/a. /p pFor Acquia, 2014 was another incredible year, one where we beat our wildest expectations. We crossed the major milestone of $100 USD million in annual revenue, the majority of which is recurring subscription revenue. It is hard to believe that 2014 was only our sixth full year as a revenue-generating business. /p pWe've seen the most growth from our enterprise customers, but our number of small and medium size customers has grown too. We helped launch and host some incredible sites last year: from a href=http://buytaert.net/weather-com-using-drupalweather.com/a (a top 20 site) to the a href=http://buytaert.net/emmys-using-drupalEmmys/a. Our efforts in Europe and Asia-Pacific are paying off; our EMEA business grew substantially, and the Australian government decided to switch the entire government to Drupal and the Acquia Platform./p pWe hired 233 people in 2014 and ended the year with 575 employees. About 25% of our employees work from home. The other 75% work from offices around the world; Burlington MA (US), Portland OR (US), Washington DC (US), Paris (France), Reading (United Kingdom), Ghent (Belgium), Singapore, Brisbane (Australia) and Sydney (Australia). About 75% of our employees are based in the United States. Despite our fast growth rate in staff, recruiting remains a key challenge; it's hard to hire as fast as we do and maintain the high bar we've set for ourselves in terms of talent and commitment./p pWe raised venture funding twice in 2014: a href=http://buytaert.net/acquia-raises-50-million-series-fa $50MM series F round led by New Enterprise Associates (NEA)/a followed by a href=http://buytaert.net/amazon-invests-in-acquiaAmazon investing an undisclosed amount of money/a in our business. It's not like Tom Erickson and I enjoy raising money, but we have been able to secure the financing that is necessary for a fast-growth, enterprise subscription business like Acquia. Building and expanding a sales and marketing team is notoriously difficult and requires big investments. At the same time, we're building and supporting the development of multiple products in parallel. Most companies only build one product. We're going after a big dream to become the preferred platform for what has been called the pivot point of many enterprise tech stacks -- the technologies that permit organizations to deliver on the promises of exceptional digital customer experiences from an agile, open, resilient platform. We're going after a big dream and are competing against behemoths. We can't show up to a gunfight with a knife, so to speak./p h2Building a digital platform for the enterprise/h2 pDigital has changed everything, and more and more organizations need or want to transform into digital-first businesses to stay in step with the preferences of their customers. Furthermore, technology innovations keep occurring at an ever faster and more disruptive pace. No organization is immune to the forces of digital disruption. At Acquia, we help our customers with this wave of digital transformation by providing a complete technology platform and the support and security necessary to maintain it. The Acquia Platform consists of tools and support for building, delivery and managing dynamic digital experiences. It includes Acquia Cloud, which helps developers deliver complex applications at scale, and Acquia Lift, our digital engagement services for bringing greater context to highly personalized experiences. Let me give you an update on each of the major components./p h3Drupal tools and support/h3 pDrupal gives organizations the ability to deliver a unified digital experience that includes mobile delivery, social and commerce. Great inefficiencies exist in most organizations that use a variety of different, disconnected systems to achieve those three essentials. They are tired of having to tie things together; content is important, social is important, commerce is important but connecting all these systems seamlessly and integrating them with preferred applications and legacy systems leads to massive inefficiencies. Companies want to do things well, and more often than not, Drupal allows them to do it better, more nimbly and in a far more integrated framework. /p pIn 2010, we laid out our product vision and predicted a href=http://buytaert.net/acquia-product-strategy-and-visionmore and more organizations would start to standardize on Drupal/a. Running 20 different content management systems on 20 different technology stacks is both an expensive and unnecessary burden. We've seen more and more large organizations re-platform most of their sites to Drupal and the Acquia Platform. They realize they don't need multiple content management systems for different sites. Great examples are Warner Music and Interscope Records, who have hundreds of sites on Drupal across the organization, resulting in significant cost savings and efficiency improvements. The success of our a href=https://www.acquia.com/products-services/acquia-cloud-site-factoryAcquia Cloud Site Factory/a solution has been gratifying to witness. According to a research study by Forrester Consulting, which we released late last year, ACSF is delivering a 944% return on investment to its adopters./p pAfter many years of discussion and debate in the Drupal community, a href=http://buytaert.net/acquia-certification-for-drupalwe launched the Acquia Certification Program/a in March 2014. So far, 546 Drupal developers from more than 45 countries have earned certification. The exams focus on real world experience, and the predominant comments we've heard this past year are that the exams are tough but fair. Acquia delivered six times the amount of training in 2014 compared to the previous year, and demand shows no sign of slowing./p pLast, but definitely not least, is Drupal 8. We contributed significantly to Drupal 8 and helped it to achieve beta status; of the 513 critical Drupal 8 bugs fixed in 2014, Acquia's Office of the CTO helped fix 282 of them. We also funded work on the a href=https://www.drupal.org/project/drupalmoduleupgraderDrupal Module Upgrader/a to automate much of the work required to port modules from Drupal 7 to Drupal 8. /p h3Acquia Cloud/h3 pBut Drupal alone isn't enough for organizations to succeed in this digital-first world. In addition to adopting Drupal, the cloud continues to enable organizations to save time and money on infrastructure management so they can focus on managing websites more efficiently and bringing them to market faster. Acquia customers such as GRAMMY.com have come to depend on the Acquia Cloud to provide them with the kind of rugged, secure scale that ensures when the world's attention is focused on their sites, they will thrive. On a monthly basis, we're now serving more than 33 billion hits, almost 5 billion pageviews, 9 petabytes of data transferred, and logging 13 billion Drupal watchdog log lines. We added many new features to Acquia Cloud in 2014, including log streaming, self-service diagnosis tools, support for teams and permissions, two-factor authentication, new dashboards, improved security with support for Virtual Private Networks (VPNs), an API for Acquia Cloud, and more. /p h3Acquia Lift/h3 pAs powerful as the Drupal/Acquia Cloud combination may be, our customers demand far more from their digital properties, focusing more and more on optimizing them to fully deliver the best possible experience to each individual user. Great digital experiences have always been personal; today they have to become contextual, intuitively knowing each user and dynamically responding to each user's personal preference from device to location to history with the organization. After two years of development and the acquisition of TruCentric, a href=http://buytaert.net/announcing-acquia-liftwe launched Acquia Lift/a in 2014. /p pIt's surprising how many organizations aren't implementing any form of personalization today. Even the most basic level of user segmentation and targeting allows organizations to better serve their visitors and can translate into significant growth and competitive differentiation. Advanced organizations have a single, well-integrated view of the customer to optimize both the experience and the lifetime value of that customer, in a consistent fashion across all of their digital touchpoints. Personalization not only leads to better business results, customers have come to expect it and if they don't find it, they'll go elsewhere to get it. Acquia Lift enables organizations to leverage data from multiple sources in order to serve people with relevant content and commerce based on intent, locations and interests. I believe that Acquia Lift has tremendous opportunity and that it will grow to be a significant business in and of itself./p pWhile our key areas of investment in 2014 were Acquia Cloud and Acquia Lift, we did a lot more. Our Mollom service blocked more than 7.8 billion spam messages with an error rate of only 0.01%. We continue to invest in commerce; we helped launch the new a href=http://digiday.com/brands/nielsenes-puma-branded-content/Puma/a website leveraging our Demandware connector and continue to invest and focus on the integration of content and commerce. Overall, the design and user experience of our products has improved a lot, but it is still an area for us to work on. Expect us to focus more heavily on user experience in 2015./p pThe results of all our efforts around the launch of the Acquia Platform have not gone unnoticed. In October, Acquia was identified as a Leader in the 2014 Gartner Magic Quadrant for Web Content Management./p h2The wind is blowing in the right direction/h2 pI'm very optimistic about Acquia's future in 2015. I believe we've steered the company to be positioned at the right place at the right time. As more organizations are shifting to becoming digital-first businesses they want to build digital experiences that are more pervasive, more contextual, more targeted, more integrated, and last but not least, more secure./p pThe consolidation from many individual point solutions to one platform is gaining momentum, although re-platforming is usually a long process. Organizations want the unified or integrated experience that Drupal has to offer, as well as the flexibility of Open Source. It is still time consuming and challenging to create quality content, and I believe there is plenty of opportunity for us and our partners to help with that going forward. /p pWithout a doubt, organizations want to better understand their customers and use data-driven decision to drive growth. Data is becoming the new product. The opportunity this creates in commerce is massive. /p pCloud computing and Software as a Service (SaaS) continues to be on the rise. Cloud is top of mind and the transition away from on-premise solutions is accelerating even as the arguments around security and privacy issues in the cloud continue to be raised. While there is a certain amount of emotion, and sometimes politics, people are beginning to realize that the cloud is usually more secure and more robust against cyber-attacks than traditional on-premise systems./p pThe promise of Drupal 8, arguably the most significant advance in the evolution of the Drupal software, has me very excited. It is shaping up to be a great release, and I'm confident it will further secure Drupal's reputation among developers, designers, agencies and site managers as the most flexible, powerful content management solution available./p pAll of this is not to say 2015 will be easy. This is an incredibly exciting and fast-changing space in the world of technology. Acquia is growing in an incredibly fast-paced, dynamic sector and we realize our mission is to help our customers understand how to think ahead to ever more innovation and change. Simplifying our overall messaging and defining ourselves around the Acquia Platform is a significant first step./p pOf course, none of this success would be possible without the support of our customers, partners, the Drupal community, the Acquia team, and our many friends. Thank you for your support in 2014, and I look forward to working with you to find out what 2015 will bring!/p /div/div/div

Lullabot: Manage Your Drupal.Org Projects and Sprints with a Kanban Board

Fri, 01/09/2015 - 20:30
div class=field field-name-field-main-image field-type-image field-label-hiddendiv class=field-itemsdiv class=field-item evenimg hspace=10 align=right width=190 height=190 src=https://www.lullabot.com/sites/default/files/styles/190x190_rounded/public/entry_image/drupal.org_issues.png?itok=8BJEmC97 alt=drupal.org issues kanban board //div/div/div pI'm not very good with managing my tasks through a simple list—despite my best efforts, the list always seems to keep growing. I prefer to use a a href=http://en.wikipedia.org/wiki/Kanban_boardKanban Board/a, a popular method of arranging lists that highlights the current status of each task. It's nice to see that I actually emdo/em get things done, after all!/p

Blink Reaction: Part Five: Cleanup and Troubleshooting

Fri, 01/09/2015 - 17:37
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item even property=content:encodedp dir=ltrCleaning up is one of the advantages of working with VMs over a bare metal install. Since everything is in the disk image files, we only need to delete the VM. Vagrant provides two commands for this purpose:/p h4 dir=ltrStopping and Deleting the VM/h4 p dir=ltrChange to the directory containing the Vagrantfile, and then stop the VM:/p p dir=ltrvagrant halt/p p dir=ltrTo delete the VM permanently:/p p dir=ltrvagrant destroy/p p dir=ltrThat’s it!/p/div/div/div

Code Karate: Drupal Commerce Course

Fri, 01/09/2015 - 16:01
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item eveniframe width=640 height=360 src=//www.youtube.com/embed/EohP-o3CHHg frameborder=0 allowfull=/iframe/div/div/div

Drupal Commerce: Managing D8 module dependencies with the new Composer Manager

Fri, 01/09/2015 - 15:06
div class=field field-name-body field-type-text-with-summary field-label-hiddendiv class=field-itemsdiv class=field-item even property=content:encodedpIt's not uncommon for a Drupal module to need an external library in order to function.br / Historically, modules such as a href=https://drupal.org/project/oauth2_serveroauth2_server/a have done this by asking the end-user to download the library manually and extract it into sites/all/libraries. A hook_requirements() implementation would nag the end-user until the library is found.br / Nowadays, all libraries are registered on a href=https://packagist.orgPackagist/a and expect to be installed via a href=https://getcomposer.orgComposer/a, which also resolves and downloads their dependencies. Thanks to Composer and modern PHP, the number and usage of libraries has skyrocketed, with Packagist recently counting its 500 millionth package install. Because of this thriving ecosystem, it is now more desirable than ever for modules to depend on libraries instead of reinventing the wheel. Furthermore, it is desirable for modules to release their core logic as libraries, bringing in additional users and contributors from the wider ecosystem./p pSo, how does Composer work, and why do we need a href=https://drupal.org/project/composer_managerComposer Manager/a?/p pa href=https://drupalcommerce.org/blog/31782/managing-d8-module-dependencies-new-composer-managerRead on for more details.../a/p /div/div/div

LimoenGroen company blog: Automatically generated subdomains in Drupal

Fri, 01/09/2015 - 14:21
pA few weeks ago the new version of a href=https://www.mijnstadmijndorp.nl/ rel=nofollowMijnStadMijnDorp.nl/a was launched to the public. Built by LimoenGroen, it offers a rich media platform where historical societies based in the Dutch province of Overijssel showcase their collections./p pOne of the project challenges was to emphasize the personalized look and feel of each society within the global site structure; every society has its own homepage with an introduction and a collage of curated content. Subdomains (e.g. codesubdomain.example.com/code) helped us achieve this. In this article we discuss what we encountered./p pimg height=115 width=784 src=https://www.limoengroen.nl/files/styles/fullwidth/public/media/projecten/msmd_subdomain.png?itok=1d1cae2T alt=MijnStadMijnDorp Subdomains title= //p h2The Subdomain module/h2 pThe core functionality was established using the contrib module a href=https://www.drupal.org/project/subdomain rel=nofollowSubdomain/a. In a nutshell, the Subdomain module can be setup to use a unique subdomain for page callbacks related to a specific user, taxonomy term, organic group or content type./p pIn the case of MijnStadMijnDorp.nl, we used the organic group mode, as each society is an organic group and needed a subdomain. All content of a society lives within its group and has the subdomain applied to it. By default, the name of the subdomain is either based on the name of the organic group or on end user input. We modified this behavior so the subdomain is set to the name of the organic group (society) by default, but can be manually overridden by users with administrative privileges. This comes in handy for societies with long names where an abbreviated subdomain is more suitable./p div class=geshifilter-titleAutomatically set subdomain after node creation:/divdiv class=geshifilterdiv class=php geshifilter-php style=font-family:monospace;pre style=font-family: monospace; font-weight: normal; font-style: normalspan style=color: #009933; font-style: italic;/** * Implements hook_node_insert(). * * Automatically set subdomain after node creation. *//span span style=color: #000000; font-weight: bold;function/span my_module_node_insertspan style=color: #009900;(/spanspan style=color: #000088;$node/spanspan style=color: #009900;)/span span style=color: #009900;{/span span style=color: #b1b100;switch/span span style=color: #009900;(/spanspan style=color: #000088;$node/spanspan style=color: #339933;-gt;/spanspan style=color: #004000;type/spanspan style=color: #009900;)/span span style=color: #009900;{/span span style=color: #b1b100;case/span span style=color: #0000ff;'society'/spanspan style=color: #339933;:/span span style=color: #000088;$node/spanspan style=color: #339933;-gt;/spanspan style=color: #004000;subdomain/span span style=color: #339933;=/span subdomainspan style=color: #009900;(/spanspan style=color: #009900;)/spanspan style=color: #339933;-gt;/spanspan style=color: #004000;clean/spanspan style=color: #009900;(/spanspan style=color: #000088;$node/spanspan style=color: #339933;-gt;/spanspan style=color: #004000;title/spanspan style=color: #339933;,/span span style=color: #009900; font-weight: bold;TRUE/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span subdomain_url_outbound_cache_clearspan style=color: #009900;(/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #666666; font-style: italic;// Create unique subdomain./span subdomainspan style=color: #009900;(/spanspan style=color: #009900;)/spanspan style=color: #339933;-gt;/spanspan style=color: #004000;save_record/spanspan style=color: #009900;(/spanspan style=color: #000088;$node/spanspan style=color: #339933;-gt;/spanspan style=color: #004000;nid/spanspan style=color: #339933;,/span span style=color: #000088;$node/spanspan style=color: #339933;-gt;/spanspan style=color: #004000;title/spanspan style=color: #339933;,/span span style=color: #009900; font-weight: bold;TRUE/spanspan style=color: #009900;)/spanspan style=color: #339933;;/span span style=color: #b1b100;break/spanspan style=color: #339933;;/span span style=color: #009900;}/span span style=color: #009900;}/span/pre/div/div h2Dnsmasq/h2 pDuring local development, testing dynamically generated subdomains can be cumbersome when using a local hosts file, because wildcards cannot be used. Dnsmasq to the rescue! It is a DNS resolver running as a daemon on a local development machine. Dnsmasq was configured to resolve the DNS zone used for local development (e.g. codemijnstadmijndorp.dev/code) to code127.0.0.1/code. This also resolves any child zones (subdomains) to localhost. Since we use Apache locally, we had codeServerAlias *.mijnstadmijndorp.dev/code added in the virtual host configuration./p h2Preparations for deployment/h2 pUsing dynamically generated subdomains in a production environment typically involves configuring the webserver and the DNS zone for the root domain of the website./p pFor Apache, adding codeServerAlias *.mijnstadmijndorp.nl/code to the virtual host configuration was sufficient. Similar directives were setup for the other servers in our DTAP-environment, with applicable hostnames./p pWhen using HTTPS (which is a href=https://www.youtube.com/watch?v=cBhZ6S0PFCY rel=nofollowalways a good idea/a), serving content from dynamically generated subdomains means you need a wildcard certificate. In our case, a public key certificate with code*.mijnstadmijndorp.nl/code as subject name was used./p pFor DNS, a wildcard (code*.mijnstadmijndorp.nl/code) A-record was created./p h2Caveats and considerations/h2 pThe Subdomain module schema has a textfield for the subdomain value, with a maximum length of 255. a href=http://www.ietf.org/rfc/rfc1035.txt rel=nofollowRFC 1035/a states that the maximum length of a DNS label is 63 characters, and the accumulated length of all labels within a abbr title=Fully Qualified Domain NameFQDN/abbr should not exceed 255 characters. The Subdomain module currently does not check the length of the subdomain DNS label or the accumulated length of the FQDN. This can result in URI’s that do not resolve. We submitted a href=https://www.drupal.org/node/2402523 rel=nofollowa patch/a for review that fixes this issue./p pIn terms of SEO, using subdomains should not negatively affect the ranking of a website as a whole. Google has stated they do not treat subdirectories different from subdomains (a href=https://www.youtube.com/watch?v=_MswMYk05tk rel=nofollowsource/a), and as such there should be no penalties or split page rank amongst the subdomains. However, discussions on SEO forums indicate ranking was improved for some users when switching from separated subdomains to one shared hostname with subdirectories (a href=http://moz.com/community/q/moz-s-official-stance-on-subdomain-vs-subfolder-does-it-need-updating rel=nofollowsource/a)./p