Friday, July 1, 2022

Best E-book for Machine Learning using Python

Hello Friends,

I started my looking into Machine Learning using Python last year and successfully completed some real-world use cases with one of the very well-known financial corporations. I want to share and help others who are looking forward to gaining some real-world knowledge in Machine learning and Python Programming. If you are a Kindle user, it is free of cost. Please click the link below.

Machine Learning With Python

Please leave comments/suggestions. See you on my Blog!

Thanks,

Chirag.




Digital Experience Platforms (DXP's) Reviews on Gartner

 Hello Friends,

This technical era thrives on providing the best Digital Experience to the customers on your application/website. I came across a very good article and thought of sharing if anyone needs help to pick on the best Digital Experience Platforms (DXP) that are trending in today's world. 

https://www.gartner.com/reviews/market/digital-experience-platforms

Coming soon with more articles. Leave a comment or start a discussion. See you on my Blog!


Thanks,

Chirag.


Saturday, June 14, 2014

Myths & Facts – IBM Websphere Portal and UI

Hello friends,

Here is a very good article which I would like to share for all the Portal developers and architects.

http://blogs.perficient.com/spark/2014/05/22/myths-facts-websphere-portal-and-ui/

Thanks & Regards,
Chirag Rana.

Monday, August 12, 2013

Changing or setting up Page Title of a JSR-286 Portlet dynamically

Hello Friends,

To write into the HTML head section of your JSR 286 portlet, for example, to change a page title, use the addProperty method on the PortletResponse.

Invoke the addProperty method to modify the HTML head section.

PortletReponse.addProperty(String key, org.w3c.dom.Element element)

Note: When modifying the HTML head section, you must invoke the addProperty method before the response headers are committed. This should occur no later than during the render headers sub phase of the render lifecycle phase.

Example:

protected void doHeaders(RenderRequest request, RenderResponse response)
{
    Element title = response.createElement("title");
    title.setTextContent("My Portal Page Title");
    response.addProperty(MimeResponse.MARKUP_HEAD_ELEMENT, title);
}

Thanks,
Chirag

Setting headers for a JSR 286 portlet

Hello Friends,


To set HTTP header information in your JSR 286 portlet, use the setProperty and addProperty methods of the PortletResponse.

Specify the appropriate method, depending on whether you want to overwrite or append key values.

setProperty(String key, String value): Overwrites all previous values for the given key.
addProperty(String key, String value): Attempts to append the key value.

When setting headers in the render lifecycle phase, portlets should set the header in the render headers part or simply override the GenericPortlet.doHeaders method to make sure the server's response headers have not already been committed. Note, however, that the delivery of HTTP headers to the client cannot be guaranteed, because other portlets on a page might override it or the setting of some header attributes might be against the portal's policy.

Thanks,
Chirag

Two-Phase rendering support in IBM WebSphere Portal 7.0 and 8.0 with JSR 286 Portlets.

Hello Friends,

When you work on portlets there are certain challenges when it comes to setting up cookies, http headers or changing the page title dynamically. IBM WebSphere Portal with JSR-286 portlets can solve this problem by enabling Two-Phase Rendering.

By default, two-phase rendering is turned off. To enable two-phase rendering for a portlet, you must update the portlet.xml deployment descriptor for the portlet.

Add the following entry to the file:

<portlet>
...
<container-runtime-option>
<name>javax.portlet.renderHeaders</name>
<value>true</value>
</container-runtime-option>
</portlet>

Enjoy,
Chirag Rana




Wednesday, December 12, 2012

Win A Free Copy of IBM Websphere Portal 8: Web Experience Factory and the Cloud e-book


Hello Friends,

Packt Publishing is organizing a give away especially for you. All you need to do is just comment below the post and win a free copy of IBM WebSphere Portal 8: Web Experience Factory and the Cloud. Two lucky winners stand a chance to win an e-copy of the book. Keep reading to find out how you can be one of the Lucky One. Here is the link to the book.



Overview of IBM Websphere Portal 8: Web Experience Factory and the Cloud eBook
  1. The only book that explains the various phases in a complete portal project life cycle
  2. Full of illustrations, diagrams, and tips with clear step-by-step instructions and real time examples
  3. Take a deep dive into Portal architectural analysis, design and deployment 
How to Enter?
  1. Simply post your expectations from this book in comments section below. 
  2. Follow this blog.
  3. You could be one of the 2 lucky participants to win the e-copy.
DeadLine:
The contest will close on 12/31/2012 . Winners will be contacted by email, so be sure to use your real email address when you comment!

Thanks & Regards,
Chirag.

Monday, November 5, 2012

IBM Websphere Portal 8: Web Experience Factory and the Cloud

Hello Friends,


I was looking for a book on IBM WebSphere Portal 8 sometime back. I came across this book. This book describes the Hands on experience on IBM WebSphere Portal 8. With the release of WebSphere Portal 8, IBM recently added a newer member in WebSphere Portal Family.

As I am PRO in WebSphere Portal and IBM Web Content Management, I found this book very helpful. This book have configurations and code which would help anyone who is looking forward to implement or migrate portal application in the industry. I would surely recommend this book to all who wants to checkout WebSphere Portal 8 and WEF cloud.

Here is the link to access the book
http://www.packtpub.com/ibm-websphere-portal-8-web-experience-factory-cloud/book

Hope you guys will enjoy reading the book.

Thanks,
Chirag.


Saturday, October 13, 2012

IBM withdrawing Support for IBM WebSphere Portal 6.1.x

Hello Friends,

Just for your information that IBM is withdrawing Marketing support for WebSphere Portal 6.1.x effective from 14th November 2012.

The technical support will be provided till 14th November 2014.
This means that any industry using Portal 6.1 should think of upgrading to IBM WebSphere Portal 7 or IBM WebSphere Portal 8.0 in couple of years .

Here is the detail schedule on IBM Website.
http://www-01.ibm.com/common/ssi/ShowDoc.wss?docURL=/common/ssi/rep_ca/4/897/ENUS912-154/index.html&lang=en&request_locale=en

Thanks & Regards,
Chirag.

Thursday, May 3, 2012

IBM WebSphere Portal 8 has been released finally

Hello Friends,

IBM has finally released WebSphere Portal 8 version. It was in Beta stage since long time and recently a stable version has been released. 

The following updates are major enhancements to the new version:
  • Better integration with IBM Web Content Management:  WCM is truly becoming a integrated part of WebSphere Portal.  New features include Managed Pages where Portal Pages are tied directly to WCM site areas.  The new version creates WCM site areas and content when a new portal page is created.  Portal pages can be included with WCM projects so they can go through approval workflows and get published through the syndication process.
  • A new optimized theme.  Portal themes have been undergoing constant changes in the past versions.  I'm hoping that this latest version is really optimized.
  • New Community Pages that integrate IBM Connections more closely into WebSphere Portal.  When creating a community page, you can specify which Connections community is associated with that page and both Connections and WCM will understand that context.
  • OpenID authentication which lets you use external systems like Facebook to authenticate users.
  • Web analytics overlays allow you to see usage analytics right on your pages without having to generate reports.
  • New installation process using IBM's Installation Manager.  This feature promises easier and faster installs of the portal servers.



Enjoy!

Chirag.

Wednesday, February 29, 2012

Managing content with Authoring tools components of JSR 286 Web content viewer Portlet

Hello Folks,


This is a very basic requirement that business personnels does not want to navigate through IBM Lotus Web Content Management authoring portlet. Instead, they want to create, read, edit, delete, approve, or reject content items with some user friendly interface. This can be achieved using Authoring tools components rendered in a JSR 286 Web content viewer portlet. For more details please visit IBM Information Center.

Thanks & Regards,
Chirag.

Wednesday, February 22, 2012

Enabling Developer Mode in IBM WebSphere Portal 7

Hello Friends,

The server start up time can be reduced to half when you enable developer mode in websphere portal 7.When portlet application application is developed on your local box it is very annoying to wait for server startup taking 15 to 20 minutes. IBM WebSphere portal version 7 facilitates a developer to start the server in a Developer mode.

This setting will disable non-essential applications from started when the server starts.  In the event that one of these applications are required after the server has started WebSphere will lazy load the application.  From the end users view this means that the first time someone tries to render a portlet they could receive a portlet unavailable message.  In the background the application will be started and the next time the user renders the portlet the application will be available.  Without a lot of custom applications, enabling developer mode can improve the startup time by about 50%.

Here are the steps to enable developer mode:

1.      Stop the server
2.      Go to <portalserver_root>\wp_profile\ConfigEngine
3.      Execute the following command
a.       ConfigEngine.bat enable-develop-mode-startup-performance
4.      Start the server


Steps to disable Developer Mode

1.      Stop the server
2.      Go to  <portalserver_root>\wp_profile\ConfigEngine
3.      Execute the following command
a.       ConfigEngine.bat disable-develop-mode-startup-performance
4.      Start the server


Trust me, as a developer you will save a lot of time!

Thanks,
Chirag.



Tuesday, February 14, 2012

Interportlet communication in different war files (portlet applications) – Part 2.


Inter-portlet communication between multiple portlets in different portlet applications has been made easy with JSR 286 portlet API. It has brought a new revolution in portlet development. In JSR 168 a.k.a portlet specification 1.0, inter-portlet communication between portlets in different war files was not possible. The only way to achieve it was through IBM URL Generation classes. But JSR 286 gives you more flexibility to achieve this functionality.

There are 2 ways to achieve interportlet communication between portlets in different portlet applications:
1. By using public render parameters of JSR 286 portlet development API.
2. By using processEvent() method.

I will be discussing the second approach in this article. The first approach was discussed in the Part 1 of this article. In the first method you can pass only string params while the second one gives you flexibility to pass complex collection objects. I have created sample applications for both approaches.

The sample application uses IBM websphere portal 7, JSR 286 portlet development API, Annotation based Spring MVC Portlet framework 3.1. There are 2 portlets applications PortletApplication 1 which has TestPortlet1 and PortletApplication2 which has TestPortlet2.

Listing 1: TestPortlet1Controller.java
@Controller
@RequestMapping("VIEW")
public class TestPortlet1Controller{
@RenderMapping
protected ModelAndView defaultHandleRenderRequest(RenderRequest request,RenderResponse response) throws Exception {
ModelAndView mav = new ModelAndView("list1");
return mav;
}

@ActionMapping(params = "action=insert")
public void insert(ActionRequest request, ActionResponse response) {
String address = request.getParameter("address");
QName qName = new QName("http://bcbsfl.com","testEvent");
response.setEvent(qName, address);
}
}

Listing 1.1 TestPortlet1.xml:
<portlet>
<supported-publishing-event>
<qname xmlns:customns="http://bcbsfl.com">customns:testEvent</qname>
</supported-publishing-event>
<event-definition>
<qname xmlns:customns="http://bcbsfl.com">customns:testEvent</qname>
<value-type>java.lang.String</value-type>
</event-definition>
</portlet>

Listing 2: TestPortlet2Controller.java
@Controller
@RequestMapping("VIEW")
public class TestPortlet2Controller{
@RenderMapping
protected ModelAndView defaultHandleRenderRequest(RenderRequest request,
RenderResponse response) throws Exception {
ModelAndView mav = new ModelAndView("list2");
String address = request.getParameter(“address”);
mav.addObject("address",address);
return mav;
}

@EventMapping(value="{http://bcbsfl.com}testEvent")
public void processEvent(EventRequest request, EventResponse response)
{
Event e = request.getEvent();
System.out.println("SelectController2.processEvent()=======Got an event");
System.out.println("QName: " + e.getQName());
System.out.println("Event Name: " + e.getName());
System.out.println("Event Value:========== " + e.getValue());
response.setRenderParameter("address",(String)e.getValue());
}
}

Listing 2.1 TestPortlet2.xml:
<portlet>
<supported-processing-event>
<qname xmlns:customns="http://bcbsfl.com">customns:testEvent</qname>
</supported-processing-event>…
<event-definition>
<qname xmlns:customns="http://bcbsfl.com">customns:testEvent</qname>
<value-type>java.lang.String</value-type>
</event-definition>
</portlet>

After coding part is completed you have to create wires via websphere portal admin GUI and you are all set.

Friday, February 10, 2012

Interportlet communication in different war files (portlet applications) – Part 1

Inter-portlet communication between multiple portlets in different portlet applications has been made easy with JSR 286 portlet API. It has brought a new revolution in portlet development. In JSR 168 a.k.a portlet specification 1.0, inter-portlet communication between portlets in different war files was not possible. The only way to achieve it was through IBM URL Generation classes. But JSR 286 gives you more flexibility to achieve this functionality.
There are 2 ways to achieve interportlet communication between portlets in different portlet applications.
1. By using public render parameters of JSR 286 portlet development API.
2. By using processEvent() method.
I will be discussing the first method in this article. The second approach will be discussed in the next article. In the first method you can pass only string params while the second one gives you flexibility to pass complex collection objects. I have created sample applications for both approaches.
The sample application uses IBM websphere portal 7, JSR 286 portlet development API, Annotation based Spring MVC Portlet framework 3.1. There are 2 portlets applications PortletApplication 1 which has TestPortlet1 and PortletApplication2 which has TestPortlet2.
Listing 1: TestPortlet1Controller.java
@Controller
@RequestMapping("VIEW")
public class TestPortlet1Controller{
@RenderMapping
protected ModelAndView defaultHandleRenderRequest(RenderRequest request,RenderResponse response) throws Exception {
ModelAndView mav = new ModelAndView("list1");
return mav;
}
@ActionMapping(params = "action=insert")
public void insert(ActionRequest request, ActionResponse response) {
String name = request.getParameter("name");
response.setRenderParameter("name", name);
}
}
Listing 1.1 TestPortlet1.xml:
<portlet>
<supported-public-render-parameter>name</supported-public-render-parameter>
<public-render-parameter>
<identifier>name</identifier>
<qname xmlns:customns="http://testportlet1_params/">customns:name</qname>
</public-render-parameter>
</portlet>
Listing 2: TestPortlet2Controller.java
@Controller
@RequestMapping("VIEW")
public class TestPortlet2Controller{
@RenderMapping
protected ModelAndView defaultHandleRenderRequest(RenderRequest request,
RenderResponse response) throws Exception {
ModelAndView mav = new ModelAndView("list2");
String name = request.getParameter("name");
System.out.println("TestPortlet2Controller========"+name);
mav.addObject("name",name);
return mav;
}
}
Listing 2.1 TestPortlet2.xml:
<portlet>
<supported-public-render-parameter>name</supported-public-render-parameter>
<public-render-parameter>
<identifier>name</identifier>
<qname xmlns:customns="http://testportlet1_params/">customns:name</qname>
</public-render-parameter>
</portlet>

Sunday, December 18, 2011

Migrating Struts portlet application to IBM WebSphere Portal 7

Hi Folks,

Currently I am working on migrating all the existing portlet applications that are running on IBM WebSphere Portal Server 6 to IBM WebSphere Portal Server 7.0.0.1. I came across a very helpful article from IBM. I followed the steps given in this article and was able to successfully migrate the portlet application to IBM WebSphere Portal 7.

Here is the link to that article to migrate legacy struts portlet application to websphere portal 7:

http://www-10.lotus.com/ldd/portalwiki.nsf/dx/Migrating_portlets_built_with_Struts_Portlet_Framework_zos7

Thanks & Regards,
Chirag Rana.

Tuesday, October 18, 2011

Managing IBM Workplace WebContent Management Library

Here are few basic points which you should know while dealing with IBM Workplace Webcontent Management(IWWCM) Library or wcm library.
Webcontent Library or wcm library:
Libraries are (new) data-partitioning feature in wcm (6.0). The web content management library contains your website structure. This repository includes all of the components that make up the website, such as: authoring and presentation templates, and menu and link components that take the advantage of the dynamic structure web content management offers. These components help you easily manage the content and avoid broken links on the website.

There are 2 methods to assign roles to whole library and the item types within it:
  • Additive: You apply the User or Privileged User role to the entire library and deselect the propagation check box. It will give it access to the library and any authoring portlets configured to use the library. The Administrator then applies Contributor, Editor, Manager, or Administrator roles to specific item types to grant additional access to specified users or groups.
  • Subtractive: The administrator applies the Manager or Administrator role to the entire library, then applies Contributor, Editor, Privileged User, or User roles to specific item types, and deselects the inheritance check box. This reduces the access to different item types for specified users or groups.

The difference between Manager and Administrator roles within Web Content Management: if you assign an Administrator role to an entire library, you cannot then remove this role from any item type views. This is not true for a Manager role.

Advantages of library:
  • By using libraries, you can split up large sites and manage them separately.
  • Separate presentation storage from content storage. It means one library would only contain Sites and Content and another library would contain Presentation Templates and Components.

N.B:If a library is no longer required, it can be deleted or disabled. Deleting a library means also deleting all objects within that library. Disabling a library prevents a user from accessing it from an authoring portlet or updating any items stored in the library. Any items referenced from this library will still be rendered by the rendering portlet.

The following conditions may prevent a library from being deleted:
  • A library cannot be deleted if it contains any draft or locked items.
  • A library containing items with complex relationships may not be able to be deleted due to referential integrity issues. You will need to delete these items before deleting the library.
  • Libraries containing a large number of items may not be able to be deleted. You will need to reduce the number of items in the library.
If a library cannot be deleted after addressing the previous issues, you may need to delete all items from the library before it can be deleted.

Sunday, October 17, 2010

Steps to Install/activate IBM WCM Authoring Portlet

Installing the Authoring portlet

The Authoring portlet configuration task will automatically create IBM Workplace Web Content Management pages(IWWCM) and install the Authoring portlet and Local Rendering portlets.
Stop the portal server if already running.

Running the configuration task:(<PortalServer root>\config>)

  1. Open a command prompt.
  2. Run the configure-wcm-authoring task:
    • Windows and UNIX: Run the following command from the <portal_server_root>/config directory:
      • Windows: WPSconfig.bat configure-wcm-authoring -DPortalAdminPwd=password
      • UNIX: ./WPSconfig.sh configure-wcm-authoring -DPortalAdminPwd=password
    • where profile_root is the name of the WebSphere Application Server profile where WebSphere Portal is installed; for example,wp_profile.
  3. Log out of the portal and log back in.
  4. Select Web Content from the main menu to access the Authoring portlet.
  5. In a clustered environment, sometimes the authoring portlet does not get displayed. In such cases you may need to activate the portlet manually or synchronize the nodes in cluster.

Saturday, September 18, 2010

Steps to set up E-mail Notifications during IBM WCM Workflow


Hi Friends,
In IBM Workplace Webcontent Management (IWWCM) you can set up the e-mail notifications during each stage of webcontent management workflow. This helps the web content author and publisher know the status of content which needs to be published.
Here are some additional steps required to set up e-mail notification during a webcontent workflow:
  • ensure the WCMConfigService.properties file is configured to use your SMTP server.
  • ensure the Member Manager user has a valid e-mail address.
In addition to the InfoCenter steps (http://publib.boulder.ibm.com/infocenter/wpdoc/v6r0/index.jsp?topic=/com.ibm.wp.ent.doc/wcm/wcm_config_smtp.html) you may need to add a username and password if your SMTP server requires authentication.

Step 1:
Check WCMConfigService.properties file under /wcm/shared/app/config/wcmservices

Step 2:
Add defaultusername and defaultpassword. See example:

#SMTP Mail Setup
connect.connector.mailconnector = defaultsmtpserver, defaultfromaddress, defaultreplytoaddress, defaultusername, defaultpassword
connect.connector.mailconnector.defaultsmtpserver= mail.myserver.com
connect.connector.mailconnector.defaultfromaddress= chirag@myserver.com
connect.connector.mailconnector.defaultreplytoaddress= chirag@myserver.com

#Add these lines:
connect.connector.mailconnector.defaultusername= chirag@myserver.com
connect.connector.mailconnector.defaultpassword= mypassword

Step 3:
Restart IBM WebSphere Portal Server for the new settings to take effect.

Note: For the 6.1 server the config file should be under: was_profile_root/PortalServer/wcm/shared/app/config/wcmservices/

Building Multi-locale sites with Web Content Management

Hi Friends,

As you might be knowing, in my previous post I was talking about that we had a requirement of builiding multilingual portal application with IBM Workplace Web Content Managment, I came across a very nice article which helped us lot in converting our portal site to support for English (default) and Spanish.

Just wanted to share this with all who are going forward to build multilingual site with IBM Workplace Web Content Management. This link has a nice document which describes the best practice for applications supporting more than one language.

http://www.ibm.com/developerworks/lotus/documentation/webcontentmanagement/d-ls-multilocalesites/

Saturday, September 11, 2010

Tag to change locale from links on IBM WPS 6.0 Theme

Recently we had a requirement to enable portlet application to support multilingual. Initially we were supporting English language (en_US) but the new requirement was to have Spanish (es) support.

The requirement was when user visits the portlet application he should be able to toggle between English and Spanish. At a time only one of the links needs to displayed. The best place to put this link was on Theme level in banner.jspf.

I just wanted to share with you all the useful tag to switch the portal locale at a global level.
 
<portal-navigation:url command="ChangeLanguage">
 
This tag is used to change the active language in the navigational state in which the URL is generated.
The following code example uses this tag to change the language to Spanish:
 
<a href='<portal-navigation:url command="ChangeLanguage"><portal-navigation:urlParam name="locale" value="es"/></portal-navigation:url>'>En Espanol</a>