Powered By Blogger

Tuesday, November 12, 2013

Performance Tuning useful links

http://m-button.blogspot.in/2009/02/tuning-default-workmanager-on-weblogic.html

http://www.tecmint.com/command-line-tools-to-monitor-linux-performance/

Sunday, November 10, 2013

htop installation in Red HAT

[root@ip-10-10-78-12 mnt]# rpm -Uvh http://download3.fedora.redhat.com/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm Retrieving http://download3.fedora.redhat.com/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm warning: /var/tmp/rpm-tmp.8xlW3d: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY Preparing... ########################################### [100%] 1:epel-release ########################################### [100%] [root@ip-10-10-78-12 mnt]# yum install htop Loaded plugins: amazon-id, rhui-lb, security epel/metalink | 14 kB 00:00 epel | 4.2 kB 00:00 epel/primary_db | 5.7 MB 00:02 Setting up Install Process Resolving Dependencies --> Running transaction check ---> Package htop.x86_64 0:1.0.1-2.el6 will be installed --> Finished Dependency Resolution Dependencies Resolved ======================================================================================================================================================================== Package Arch Version Repository Size ======================================================================================================================================================================== Installing: htop x86_64 1.0.1-2.el6 epel 75 k Transaction Summary ======================================================================================================================================================================== Install 1 Package(s) Total download size: 75 k Installed size: 161 k Is this ok [y/N]: y Downloading Packages: htop-1.0.1-2.el6.x86_64.rpm | 75 kB 00:00 warning: rpmts_HdrFromFdno: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 Importing GPG key 0x0608B895: Userid : EPEL (6) Package: epel-release-6-8.noarch (installed) From : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 Is this ok [y/N]: y Running rpm_check_debug Running Transaction Test Transaction Test Succeeded Running Transaction Warning: RPMDB altered outside of yum. Installing : htop-1.0.1-2.el6.x86_64 1/1 Installed: htop.x86_64 0:1.0.1-2.el6 Complete! [root@ip-10-10-78-12 mnt]#

Sunday, September 29, 2013

Tutorial on setup of zookeeper

http://msopentech.com/blog/2013/06/12/using-apache-zookeeper-on-windows-azure-linux-virtual-machines-to-manage-solr/ It explanins set up of zookeeper with solr

Tutorial on setup of zookeeper

http://msopentech.com/blog/2013/06/12/using-apache-zookeeper-on-windows-azure-linux-virtual-machines-to-manage-solr/ It explanins set up of zookeeper with solr

Tutorial on setup of zookeeper

Tutorial on setup of zookeeper

Tutorial on setup of zookeeper

Saturday, August 17, 2013

Weblogic things to be known

Domain : In the WebLogic Server we can have many domains. Each domain will have one admin server and many managed servers. CLustering can be achieved from only the servers in the same domain

Admin Server : THis server is used to maintain the domain configurations. It maintains servers,machines and Deployments mainly

Managed Server : There can be many managed servers in a domain. The multiple servers can be in the same machine or in the different machine.

Clusters : In one domain we can have many clusters. Each cluster will consist of the set of servers in the same domain. We cannot do clustering between the servers in the different domain.

Heartbeat messages will be used to check the health of each server in the cluster. Either it user unicast/multicast. Multi cast is not much used.


Machines : There can be many physical machines in a domain. Machines will be used while creating servers.

Friday, August 16, 2013

SVN commands in linux

svn info - This command gives information about the repoitory from where the code is been checked out
svn co- Used for checking out the code from svn

Sunday, August 11, 2013

Alfresco Deployment in Weblogic

It is must to install Open office to deploy alfresco in weblogic, else it will throw error and server hangs up.
Even we have to make sure the jodconverter and ooconverter ports are not conflicting if confilct happens then also server will hang. I have attached sample properties to be put.
#
# Sample custom content and index data location
#
dir.root=C:/Oracle/Middleware/user_projects/domains/alf_domain/alf_data
#dir.keystore=${dir.root}/keystore
dir.indexes=C:/Oracle/Middleware/user_projects/domains/alf_domain/lucene_index

#
# Sample database connection properties
#

db.driver=org.gjt.mm.mysql.Driver
db.username=alfresco
db.password=alfresco
db.name=alfresco
db.url=jdbc:mysql://localhost:3306/alfresco

db.pool.statements.enable=false


ooo.exe=C:/Alfresco/openoffice/App/openoffice/program/soffice.exe
ooo.enabled=false
ooo.port=8101

jodconverter.enabled=true

jodconverter.officeHome=C:/Alfresco/openoffice/App/openoffice

jodconverter.portNumbers=8900

Monday, July 15, 2013

Alfresco WorkDesk set up steps



Steps required for WorkDesk set up
1.       Set up the database, Scripts are available for setting different databases. We will consider setting it up with mysql
C:\Users\bpatil\Desktop\Workdesk\db\scripts\create_mysql_databases
Execute all the sql files so that it sets the user,database and tables which needs to be used later in workdesk configuration
2.       Copy the mysql connector jar to the location  C:\Alfresco\tomcat\lib and copy the workdesk folder to C:\Alfresco\tomcat\webapps from the downloaded zip file
3.       Now configure the workdesk to look into the application  cmis_prof by changing web.xml  in the location C:\Alfresco\tomcat\webapps\workdesk\WEB-INF
        OwResourceFilePath
         deploy#WEB-INF/conf/cmis_prof

4.       Configure the datasource in workdesk.xml in the location  C:\Alfresco\tomcat\conf\Catalina\localhost
        auth="Container"
        type="javax.sql.DataSource"
        factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory"
        username="owdemo"
        password="owdemo"
        driverClassName="com.mysql.jdbc.Driver"
        url="jdbc:mysql://localhost:3306/owd?autoReconnect=true"
        maxWait="1000"
        removeAbandoned="true"
        maxActive="30"
        maxIdle="10"
        removeAbandonedTimeout="60"
        logAbandoned="true"
        validationQuery="select 1"/>     

5.       Change owbootstrap.xml in the location C:\Alfresco\tomcat\webapps\workdesk\WEB-INF\conf\cmis_prof to connect to the configured data source
                                java:/MySQLDS
               
    

6.       Restart alfresco server and login to alfresco to see the below screen
                      
    

Friday, April 26, 2013

Running Alfresco on mobile

We can get the code from the location
https://github.com/Alfresco/alfresco-android-app/tags/

I have taken build 1.0.1 since I had problem in building other versions
https://github.com/Alfresco/alfresco-android-app/tree/1.0.1

The code taken from here is extracted in the location C:\Experiement\alfresco-android-app-1.0.1\alfresco-android-app-1.0.1

Run the command

C:\Experiement\alfresco-android-app-1.0.1\alfresco-android-app-1.0.1 > mvn install

The above command gives below summary, provided we have installed maven and android sdk and configured variables

ANDROID_HOME - C:\Android\adt-bundle-windows-x86-20130219\sdk
M2_HOME - C:\Maven\apache-maven-3.0.5-bin\apache-maven-3.0.5



[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO]
[INFO] Alfresco Mobile Android APPS (Parent) ............. SUCCESS [1.417s]
[INFO] Alfresco Mobile Android - Official Application .... SUCCESS [45.761s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 50.068s
[INFO] Finished at: Fri Apr 26 14:58:13 IST 2013
[INFO] Final Memory: 11M/53M
[INFO] ------------------------------------------------------------------------


Once the build is successful it produces
alfresco-mobile-android.apk file


Now we can deploy apk file in simulator

http://developer.android.com/tools/devices/emulator.html
http://developer.android.com/tools/help/adb.html#move



To start an instance of the emulator from the command line, navigate to the tools/ folder of the SDK. Enter emulatorcommand like this:
C:\Android\adt-bundle-windows-x86-20130219\sdk\tools > >emulator -avd test

here test is been already created as the avd name using eclipse.It will open the device. Now we can deploy the apk file using below command to the device configured




C:\Android\adt-bundle-windows-x86-20130219\sdk\platform-tools>adb install C:\Experiement\alfresco-android-app-1.0.1\alfresco-android-app-1.0.1\alfresco-mobile-android\target\alfresco-mobile-android.apk

After running the command we can see the below description

73 KB/s (1013692 bytes in 13.423s)
        pkg: /data/local/tmp/alfresco-mobile-android.apk
Success

Now we can access the alfresco app and connect to the server by providing
username.password , host, port and context path and from there we will be able to access the contents.



Monday, April 15, 2013

LDAP


http://www.lichteblau.com/ldapvi/manual/

http://ldapwiki.willeke.com/wiki/LDAP%20Browsers#section-LDAP+Browsers-LinuxUnixOnly


http://www.linuxfocus.org/English/July2000/article159.shtml

Wednesday, April 3, 2013

Unlimited number of search results in lucene


private SearchParameters getSearchParameters(final NodeRef nodeRef) {
  final SearchParameters params = new SearchParameters();
  params.addStore(StoreRef.STORE_REF_WORKSPACE_SPACESSTORE);
  params.setLanguage(SearchService.LANGUAGE_LUCENE);
  params.setQuery(format(QUERY_PATTERN, ContentModel.TYPE_CONTENT, nodeRef));
  params.setLimitBy(LimitBy.UNLIMITED);
  params.setLimit(0);
  params.setMaxPermissionChecks(100000);
  params.setMaxPermissionCheckTimeMillis(100000);
  params.setMaxItems(-1);
  return params;
 }



In addition in the alfresco-global.properties we can changed below values

system.acl.maxPermissionCheckTimeMillis 
system.acl.maxPermissionCheck

to get it reflcected across the system.



Tuesday, March 5, 2013

Important files of Alfresco

Alfresco server

1. alfresco-global.properties
    alf_data location,mail related ,cluster info

2. server.xml
    ports,ssl settings
3. tomcat-users.xml
    users required for authentication
4. keystore location to configure in server.xml
5. ehcache-custom.xml
         For enabling jgroups
6.catalina.properties
         To load the shared.loader preoperty

7. alf_data tp store the contents




Share- Server

1. share-config-custom.xml
     To configure endpoint

2. catalina.properties
     To load the shared/web-extension folder

Solr server

1. solr.xml
    To provide the info on solr.war
2. solrcore.properties in each of the core
        To specify where to store the indexes.
3. keystore
        This folder will have the contents used in solr
4. tomcat-users.xml
        To support ssl
5. server.xml
        To support ssl

AlfrescoCluster


Setup For the cluster With Alfresco 4.1.2 in local machine.
Servers setup. Alfresco cluster is done in “D:\alfrescoCluster-4.1.2”.  In clustering we will use UDP since we have servers in LAN. If the servers are present in WAN then we should think of using TCP mode to replicate the cache between the nodes. In the configuration if any of the port is mentioned as “0” then free available port will be used by the system.
alf_data is been shared with both the alfresco instances as content store. It will have keystore folder, these contents will be used by node1 and node2’s server.xml.
node1 – It will have alfresco and share installed running on port 5050.
node2- It will have alfresco and share installed running on port 8080.
solrnode1 – It will be used by alfresco node2(As per config in alfresco-global.properties of node2) to store the indexes. Search from both the nodes of alfresco will access data from this node. It will have its own keystore used by server.xml of solr server.
Alfresco node1 –running on port 5050. Files to be changed are
We  can install alfresco using the installer. After the installation copy mydql-connector.jar to lib folder of alfresco. After installation delete the solr.xml from catalina.localhost folder.
Files to be Observed :
1.       alfresco-global.properties
dir.root=D:/alfrescoCluster-4.1.2/alf_data
alfresco.context=alfresco
alfresco.host=127.0.0.1
alfresco.port=5050
alfresco.protocol=http
share.context=share
share.host=127.0.0.1
share.port=5050
share.protocol=http

### database connection properties ###
#db.driver=org.postgresql.Driver
db.username=root
db.password=root
db.name=alfrescocluster
#db.url=jdbc:postgresql://localhost/alfresco
db.driver=org.gjt.mm.mysql.Driver
db.url=jdbc:mysql://localhost/alfrescocluster?useUnicode=yes&characterEncoding=UTF-8


###############Cluster properties###########
alfresco.cluster.name=alfresco-irm-preprod
#alfresco.ehcache.rmi.hostname=al1102.patil.com
alfresco.ehcache.rmi.hostname=localhost
alfresco.ehcache.rmi.port=40001
alfresco.ehcache.rmi.remoteObjectPort=45001

######Jgroups Configuration#########

#alfresco.jgroups.bind_address=al1102.patil.com
alfresco.jgroups.bind_address=localhost
alfresco.jgroups.bind_interface=eth0

######Content store replication#########
dir.contentstore=${dir.root}/contentstore
dir.contentstore.deleted=${dir.root}/contentstore.deleted
# The location of cached content
dir.cachedcontent=${dir.root}/cachedcontent
dir.auditcontentstore=${dir.root}/audit.contentstore

2.       catalina.properties
shared.loader=${catalina.base}/shared/classes

3.       tomcat-users.xml
This will have the user details to be connected with solr
 
 

4.       server.xml
This will have the details related to ssl connection


   
               maxThreads="150" scheme="https" keystoreFile="D:\alfrescoCluster-4.1.2/alf_data/keystore/ssl.keystore" keystorePass="kT9X6oe68t" keystoreType="JCEKS"
 secure="true" connectionTimeout="240000" truststoreFile="D:\alfrescoCluster-4.1.2/alf_data/keystore/ssl.truststore" truststorePass="kT9X6oe68t" truststoreType="JCEKS"
               clientAuth="false" sslProtocol="TLS" allowUnsafeLegacyRenegotiation="true" maxSavePostSize="-1" /> 

5.       ehcache-custom.xml

   
      path="java.io.tmpdir"/>

   
   
        class="org.alfresco.repo.cache.AlfrescoCacheManagerPeerProviderFactory"
        properties="heartbeatInterval=5000,
                    peerDiscovery=automatic,
                    multicastGroupAddress=230.0.0.1,
                    multicastGroupPort=4446"
    />

  
   
  
   
        class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
        properties="hostName=${alfresco.ehcache.rmi.hostname},
                    port=${alfresco.ehcache.rmi.port},
                    remoteObjectPort=${alfresco.ehcache.rmi.remoteObjectPort},
                    socketTimeoutMillis=${alfresco.ehcache.rmi.socketTimeoutMillis}"
    />
   

   
        maxElementsInMemory="5000"
        eternal="true"
        timeToIdleSeconds="0"
        timeToLiveSeconds="0"
        overflowToDisk="false"
        statistics="false"
        >

               


Alfresco node2 – running on port 8080

Solr node1- running on port 7070/7443, connecting to node2 of alfresco to keep track of the indexes.

Alf_data stored outside both the alfresco nodes will be used by both the alfresco instances to store the contents. For testing I have deployed share in the same nodes of alfresco(We can deploy share in different server, share config-custom.xml needs to be updated). For share only change required is at the end point url to connect to alfresco.



Installation of Alfresco in Different servers
We can do alfresco installation with ssl and non ssl. SSL requires keystores configuration and the tomcat-users.xml configuration. Non ssl does not require these changes.
Install alfresco using installer.  We can configure to the desired database by changing alfresco-global.properties and by moving the connector jar.

Remove share.war and share dir
Remove solr.xml config file.
Remove solr and solr.backup dir from alf_data
mv alf_data to Vormetrics mount
Create symbolic link to alf_data
We have to make sure to have keystore in alf_data as it is configured in server.xml

In the alfresco-global.properties we need to update the below properties
index.subsystem.name=solr
dir.keystore=${dir.root}/keystore
solr.port.ssl=7443


Configuring solr

We can configure solr with or without ssl settings, When we are using ssl setting then we need to configure separate keystore. In the default installation it uses server.xml
These files been checked in the svn


Clustering
We will be using jgroups to sync the caches. We will be using UDP protocol as we are having LAN connection. If the clustering is internet then we should go for TCP. We will use shared content store between the nodes.
Below files are affected.
Ehcache-custom.xml
Alfresco-global.properties
Configuring shared content store.

  1. Locate the ehcache-custom.xml.sample.cluster file.
  2. Copy the file to /alfresco/extension/ehcache-custom.xml.
  3. Remove the following default definition of cacheManagerPeerListenerFactory:
4.   
5.              class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
6.              properties="socketTimeoutMillis=10000"
            />
  1. Uncomment the extended definition by removing the comment lines <!-- and --!> before and after the following section:
8. 
9.              class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
10.            properties="hostName=${alfresco.ehcache.rmi.hostname},
11.            port=${alfresco.ehcache.rmi.port},
12.           
13.          remoteObjectPort=${alfresco.ehcache.rmi.remoteObjectPort},
          socketTimeoutMillis=${alfresco.ehcache.rmi.socketTimeoutMillis}" />
  1. Save the ehcache-custom.xml file.
  2. Set the following properties in the alfresco-global.properties file:
alfresco.cluster.name=alfresco-irm-preprod
alfresco.ehcache.rmi.hostname=al1102.nus.ironmountain.com
alfresco.ehcache.rmi.port=40001
alfresco.ehcache.rmi.remoteObjectPort=45001

######Jgroups Configuration#########

alfresco.jgroups.bind_address=al1102.nus.ironmountain.com
alfresco.jgroups.bind_interface=eth0

######Content store replication#########
dir.root=./alf_data
dir.contentstore=${dir.root}/contentstore
dir.contentstore.deleted=${dir.root}/contentstore.deleted
# The location of cached content
dir.cachedcontent=${dir.root}/cachedcontent
dir.auditcontentstore=${dir.root}/audit.contentstore






Tuesday, February 12, 2013

Tuesday, February 5, 2013

Solr with Alfresco

While debugging search results we need to access the url
1. http://100.6.17.30:8080/solr/
2Select admin core
3.The value entered in the query will be used to search
4. SInce alfresco has done some customisations below things should be used


http://100.6.17.30:8080/solr/alfresco/afts?q=@cm\name:alfresco&version=2.2&start=0&rows=10&indent=on


Passing query

http://100.6.17.30:8080/solr/alfresco/afts?q=@cm\:name:alfresco&version=2.2&start=0&rows=10&indent=on

http://100.6.17.30:8080/solr/alfresco/afts?q=TEXT:de*&version=2.2&start=0&rows=10&indent=on

http://100.6.17.30:8080/solr/alfresco/afts?q=TEXT:a*&version=2.2&start=0&rows=1000&indent=on


http://100.6.17.30:8080/solr/alfresco/afts?indent=on&version=2.2&q=%40cm%5C%3Aname%3Aalfresco&fq=&start=0&rows=10&fl=*%2Cscore&qt=standard&wt=standard&explainOther=&hl.fl=


To Search t* across all the sites
((PATH:"/app:company_home/st:sites/*/*//*" AND (TYPE:"cm:content" AND (t* )) ) AND -TYPE:"cm:thumbnail" AND -TYPE:"cm:failedThumbnail" AND -TYPE:"cm:rating") AND NOT ASPECT:"sys:hidden"

http://100.6.17.30:8080/solr/alfresco/alfresco?indent=on&version=2.2&q=%28%28PATH%3A%22%2Fapp%3Acompany_home%2Fst%3Asites%2F*%2F*%2F%2F*%22+AND+%28TYPE%3A%22cm%3Acontent%22+AND+%28t*+%29%29+%29+AND+-TYPE%3A%22cm%3Athumbnail%22+AND+-TYPE%3A%22cm%3AfailedThumbnail%22+AND+-TYPE%3A%22cm%3Arating%22%29+AND+NOT+ASPECT%3A%22sys%3Ahidden%22&fq=&start=0&rows=2000&fl=*%2Cscore&qt=standard&wt=standard&explainOther=&hl.fl=


Monday, January 14, 2013

Logs for the first time when we start solr server integrated with alfresco


Jan 14, 2013 3:14:34 PM org.apache.solr.core.SolrResourceLoader replaceClassLoader
INFO: Adding 'file:/D:/Indexes/ALFRES~1/alf_data/solr/lib/xercesImpl-2.8.0.jar' to classloader
Jan 14, 2013 3:14:46 PM org.quartz.core.SchedulerSignalerImpl
INFO: Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl
Jan 14, 2013 3:14:46 PM org.quartz.core.QuartzScheduler
INFO: Quartz Scheduler v.1.8.3 created.
Jan 14, 2013 3:14:46 PM org.quartz.simpl.RAMJobStore initialize
INFO: RAMJobStore initialized.
Jan 14, 2013 3:14:46 PM org.quartz.core.QuartzScheduler initialize
INFO: Scheduler meta-data: Quartz Scheduler (v1.8.3) 'SolrTrackerScheduler' with instanceId 'NON_CLUSTERED'
  Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.
  NOT STARTED.
  Currently in standby mode.
  Number of jobs executed: 0
  Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 3 threads.
  Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered.

Jan 14, 2013 3:14:46 PM org.quartz.impl.StdSchedulerFactory instantiate
INFO: Quartz scheduler 'SolrTrackerScheduler' initialized from an externally provided properties instance.
Jan 14, 2013 3:14:46 PM org.quartz.impl.StdSchedulerFactory instantiate
INFO: Quartz scheduler version: 1.8.3
Jan 14, 2013 3:14:46 PM org.quartz.core.QuartzScheduler start
INFO: Scheduler SolrTrackerScheduler_$_NON_CLUSTERED started.
Jan 14, 2013 3:14:46 PM org.apache.solr.core.SolrResourceLoader
INFO: Solr home set to 'D:\Indexes\ALFRES~1\alf_data\solr\workspace-SpacesStore\'
Jan 14, 2013 3:14:47 PM org.apache.solr.core.SolrConfig initLibs
INFO: Adding specified lib dirs to ClassLoader
Jan 14, 2013 3:14:48 PM org.apache.solr.core.SolrConfig
INFO: Loaded SolrConfig: solrconfig.xml
Jan 14, 2013 3:14:48 PM org.apache.solr.schema.IndexSchema readSchema
INFO: Reading Solr Schema
Jan 14, 2013 3:14:48 PM org.apache.solr.schema.IndexSchema readSchema
INFO: Schema name=alfresco
Jan 14, 2013 3:14:48 PM org.apache.solr.util.plugin.AbstractPluginLoader load
INFO: created null: org.apache.solr.analysis.WhitespaceTokenizerFactory
Jan 14, 2013 3:14:48 PM org.apache.solr.util.plugin.AbstractPluginLoader load
INFO: created null: org.apache.solr.analysis.WordDelimiterFilterFactory
Jan 14, 2013 3:14:48 PM org.apache.solr.util.plugin.AbstractPluginLoader load
INFO: created null: org.apache.solr.analysis.LowerCaseFilterFactory
Jan 14, 2013 3:14:48 PM org.apache.solr.util.plugin.AbstractPluginLoader load
INFO: created alfrescoDataType: org.alfresco.solr.AlfrescoDataType
Jan 14, 2013 3:14:48 PM org.apache.solr.core.SolrCore initIndex
WARNING: [alfresco] Solr index directory 'D:\Indexes\ALFRES~1\alf_data\solr\workspace\SpacesStore\index' doesn't exist. Creating new index...
Jan 14, 2013 3:14:50 PM org.apache.solr.handler.component.SpellCheckComponent inform
WARNING: No queryConverter defined, using default converter
Jan 14, 2013 3:14:51 PM org.apache.solr.core.SolrCore initIndex
WARNING: [archive] Solr index directory 'D:\Indexes\ALFRES~1\alf_data\solr\archive\SpacesStore\index' doesn't exist. Creating new index...
Jan 14, 2013 3:14:51 PM org.apache.solr.handler.component.SpellCheckComponent inform
WARNING: No queryConverter defined, using default converter
Jan 14, 2013 3:14:51 PM org.apache.catalina.startup.HostConfig deployWAR

Friday, January 11, 2013