Sunday, 16 November 2014

Excel / Google Spreadsheet utilities

Generate a list of sheet names in the workbook (google spreadsheets only)

- https://productforums.google.com/forum/#!topic/docs/-2mGCzmUIkY

function sheetnames() {
  var out = new Array()
  var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
  for (var i=0 ; i<sheets.length ; i++) out.push( [ sheets[i].getName() ] )
  return out  
}


Retrieving a specific cell value from other sheets

https://productforums.google.com/forum/#!topic/docs/YwfiGQpg5LI

Sheet name with no space:
=Sheet1!A1

Sheet name with space
='Sheet Name'!A1


Use string value from a cell to access worksheet of same name

http://stackoverflow.com/questions/16899175/excel-use-string-value-from-a-cell-to-access-worksheet-of-same-name

e.g. cell A5 has the string value of the worksheet name
=INDIRECT("'"&A5&"'!G7")




Tuesday, 14 October 2014

Sublime - search and replace text

Suppose I have multiple files that I want to replace the URL with something like follow:

www.something.com to
www.qa.something.com.au

Here is what to do:

Find:
www.([a-z]+).com

Replace:
www.qa.$1.com.au

Thursday, 2 October 2014

JSP/JSTL EL lastIndexOf

References
http://www.willuhn.de/blog/index.php?/archives/425-lastIndexOf-in-JSTL.html
http://www.tutorialspoint.com/jsp/jstl_function_substring.htm

Example:
<c:set var="text" value="This is a bunch of text" />
<c:set var="splittext" value="${fn:split(text,' ')}" />
${fn:indexOf(text, splittext[fn:length(splittext)-1])}

Git delete branch

Delete local branch

git branch -d [branchname]


Delete remote branch

git push origin --delete [branchname]
or
git push origin :[branchname]

The second way is basically saying "push nothing to remote [branchname]"

Git pushing local branch to specific remote branch

git push origin local_branch:remote_branch

Thursday, 25 September 2014

Sublime Text - reveal in sidebar

http://julianhigman.com/blog/2013/07/23/sublime-text-3-keyboard-shortcut-to-reveal-file-in-sidebar/

  1. Right click on the file in the editor
  2. Reveal in Side Bar.

To set a shortcut key:
  1. Preferences 
  2. Key Bindings (User)


edit the file as follow:
[
 { "keys": ["ctrl+shift+r"], "command": "reveal_in_side_bar"}
]


Wednesday, 17 September 2014

Git - remove / discard changes

If the changes have been commited to local branch but not yet push --

Reset local branch to repository:
git reset origin/develop
git reset HEAD


Remove / Discard unstaged changes:
git clean -df
git checkout -- [file]


Documentation for git clean:
http://git-scm.com/docs/git-clean

Friday, 29 August 2014

Adobe AEM/CQ - cq:Page redirect

Out of the box redirection for cq:Page type settings are as follow:


  • jcr:content
    • redirectTarget | String | /[path]/[to]/[redirect]
    • sling:redirect | Boolean | true
    • sling:redirectStatus | Long | 302
    • sling:resourceType | String | foundation/components/redirect

Thursday, 28 August 2014

Git - when to merge and rebase

http://www.derekgourlay.com/archives/428

" Rebases are how changes should pass from the top of hierarchy downwards and merges are how they flow back upwards. "


Rule of thumb:

  • When pulling changes from origin/master onto your local branch, use rebase.
  • When finishing a feature branch merge the changes back to develop.


Rebase

git pull --rebase
or
git fetch origin
git rebase -p origin/[master]


Merge

git checkout master
git merge [branch]

Monday, 25 August 2014

45 ways to avoid using the word 'very'


“So avoid using the word ‘very’ because it’s lazy. A man is not very tired, he is exhausted. Don’t use very sad, use morose. Language was invented for one reason, boys - to woo women - and, in that endeavor, laziness will not do. It also won’t do in your essays.” 
― N.H. Kleinbaum, Dead Poets Society


Wednesday, 20 August 2014

Adobe AEM/CQ - remove whitespace from generated HTML

http://www.wemblog.com/2014/07/how-to-remove-white-space-from.html

1) trimDirectiveWhitespaces
<%@page  trimDirectiveWhitespaces="true"%>

2) Use
--%><%--
tags to start and end scriplets tag and in between html tag

3) Create your own tag library and using html parser remove white spaces during run time. for that check http://www.cqblueprints.com/tipsandtricks/jsp-custom-tag-lib.html

4) Use Google Page Speed Module at apache.

Friday, 15 August 2014

Cygwin - change home directory after installation

http://stackoverflow.com/questions/1494658/how-can-i-change-my-cygwin-home-folder-after-installation

  1. Go to Control Panel --> System and Security --> System (or press the [WINDOWS]+PAUSE|BREAK] keys)
  2. Click Advanced system settings (located at the left)
  3. Click Environment Variables (toward the bottom)
  4. In the User Variables area click "New…"
  5. For Variable name enter HOME
  6. For Variable value enter %USERPROFILE%
  7. Click OK in all the open dialog boxes to apply this new setting

cp /etc/passwd /etc/passwd.bak
mkpasswd -l -p $(cygpath -H)  > /etc/passwd 
mkpasswd -d -p $(cygpath -H)  >> /etc/passwd 

cp /etc/group /etc/group.bak
mkgroup -l > /etc/group 
mkgroup -d >> /etc/group


Exit Cygwin and start it up again.

Monday, 11 August 2014

Adobe AEM/CQ - setting up Maven POM

Content Package


http://www.wemblog.com/2012/04/how-to-change-package-install-behavior.html

<build>
    <plugins>
      <plugin>
         <groupId>com.day.jcr.vault</groupId>
         <artifactId>content-package-maven-plugin</artifactId>
         <extensions>true</extensions>
         <executions>
             <execution>
                 <goals>
                    <goal>package</goal>
                 </goals>
             </execution>
          </executions>
          <configuration>
             <!-- parameters and values common to all goals, as required -->
          </configuration>
      </plugin>
    </plugins>
</build>

Note:
Need <extensions> in order for <packaging>content-package<packaging> to work

Adobe documentation:
http://docs.adobe.com/docs/en/aem/6-0/develop/how-tos/vlt-mavenplugin.html

Getting the latest content-package-maven-plugin:
http://repo.adobe.com/nexus/content/groups/public/com/day/jcr/vault/content-package-maven-plugin/


Bundle

http://felix.apache.org/site/apache-felix-maven-bundle-plugin-bnd.html

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.felix</groupId>
            <artifactId>maven-bundle-plugin</artifactId>
            <extensions>true</extensions>
        </plugin>
    </plugins>
</build>

Adobe documentation:
http://docs.adobe.com/docs/en/cq/aem-how-tos/development/how-to-build-aem-projects-using-apache-maven.html

Checking the latest version of maven-bundle-plugin:
http://felix.apache.org/downloads.cgi#maven


Sunday, 27 July 2014

Adobe AEM/CQ - extjs multifield + compositefield with multiple textfields

Suppose we have a form (name: 'formName') with a multifield as follow:

var multifield = new CQ.form.Multifield {
    fieldLabel : 'Multiple: ',
    orderable : false,
    name : 'multifieldExample',
    fieldConfig : {
        xtype : 'compositefield',
        layout: 'form',
        items : [{
          xtype: 'textfield',
          fieldLabel: 'field1: '
        }, {
          xtype: 'textfield',
          fieldLabel: 'field2: '
        }]
    },
    width: 650
}

Here is how we can retrieve the value of the first instance of field2:

formName.getForm().findField('multifieldExample').findByType('compositefield')[0].items.itemAt[1].getValue();

We can retrieve the items under a component via .items.itemAt[i]


Monday, 16 June 2014

Adobe AEM/CQ - ACS dispatcher flush rules

We use this to flush associate paths for a given node.

E.g.
When an activation occurs for path /content/abc, we can configure with this ACS package to also flushes the dispatcher cache for path /content/xyz.

Read more about this add-on here:


Configurations:

/system/console --> ACS dispatcher flush rules










/etc/replication/agents.publish.html






Tuesday, 10 June 2014

Adobe AEM/CQ - bulk editing

http://localhost:4502/etc/importers/bulkeditor.html

This can be use to bulk edit multiple nodes that have been created in the CQ repository.