Tech Mastery: Deep Dives into AEM, Cloud Technologies, AI Innovations, and Advanced Marketing Strate
Welcome to Tech Mastery, your expert source for insights into technology and digital strategy. Explore topics like Adobe Experience Manager, AWS, Azure, generative AI, and advanced marketing strategies. Delve into MACH architecture, Jamstack, modern software practices, DevOps, and SEO. Our blog is ideal for tech professionals and enthusiasts eager to stay ahead in digital innovations, from Content Management to Digital Asset Management and beyond.
Saturday, April 18, 2015
Tuesday, April 7, 2015
How to enable SSH X11 forwarding in Linux?
How to enable SSH X11 forwarding in Linux?
The X11 forwarding from putty using Xming was not working, the DISPLAY variable is not set(echo $DISPLAY) after opening the remote server session in putty(X11 forwarding is enabled in putty and also the display is specified as localhost:0.0)
The actual issue is the X11 forwarding was not enabled in remote linux server.
The following steps can be followed to enable the X11 forwarding in linux server.
Login to linux server through putty
vi /etc/ssh/sshd_config
Enable the following flags
AllowAgentForwarding yes
AllowTcpForwarding yes
X11Forwarding yes
Execute the following commands
service sshd restart
yum -y update xauth
yum -y install xauth
Now you will be able to perform X11 forwarding.
Saturday, April 4, 2015
How to craete/manage the groups and users through Java API in AEM/Adobe CQ5?
How to create/manage the groups and users through Java API in AEM/Adobe CQ5?
This post will explain how to create/manage the groups and users through Java API in Adobe Experience Manager(AEM).import java.io.IOException;
import java.security.Principal;
import javax.jcr.PropertyType;
import javax.jcr.Session;
import javax.jcr.Value;
import javax.servlet.Servlet;
import org.apache.commons.lang.StringUtils;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Properties;
import org.apache.felix.scr.annotations.Property;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.Service;
import org.apache.jackrabbit.api.security.user.Group;
import org.apache.jackrabbit.api.security.user.User;
import org.apache.jackrabbit.api.security.user.UserManager;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingHttpServletResponse;
import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.api.resource.ResourceResolverFactory;
import org.apache.sling.api.servlets.SlingAllMethodsServlet;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Service(value = Servlet.class)
@Component(immediate = true, metatype = true)
@Properties({
@Property(name = "sling.servlet.paths", value = "/services/manageGroupsAndUsers"),
@Property(name = "service.description", value = "ManageGroupsAndUsers"),
@Property(name = "label", value = "ManageGroupsAndUsers") })
public class ManageGroupsAndUsers extends SlingAllMethodsServlet{
/**
*
*/
private static final long serialVersionUID = 1L;
@Reference
ResourceResolverFactory resolverFactory;
private static Logger logger = LoggerFactory.getLogger(ModifyCartServlet.class);
protected final void doPost(final SlingHttpServletRequest request,
final SlingHttpServletResponse response) throws IOException {
String groupName="sampleGroup";
String userName="sampleUser";
String password="sampleUser";
ResourceResolver adminResolver = null;
Session adminSession=null;
try {
adminResolver = resolverFactory.getAdministrativeResourceResolver(null);
adminSession = adminResolver.adaptTo(Session.class);
final UserManager userManager= adminResolver.adaptTo(UserManager.class);
if(null==userManager.getAuthorizable(groupName)){
Group group=userManager.createGroup(groupName,new SimplePrincipal(groupName),"/home/groups/test");
Value value=adminSession.getValueFactory().createValue("Sample Group", PropertyType.STRING);
group.setProperty("./profile/givenName", value);
value=adminSession.getValueFactory().createValue("Test Group", PropertyType.STRING);
group.setProperty("./profile/aboutMe", value);
value=adminSession.getValueFactory().createValue("[email protected]", PropertyType.STRING);
group.setProperty("./profile/email", value);
}else{
response.getWriter().write("Group already exist..");
}
if(userManager.getAuthorizable(userName)==null){
User user=userManager.createUser(userName, password,new SimplePrincipal(userName),"/home/users/test");
Value value=adminSession.getValueFactory().createValue("Issac", PropertyType.STRING);
user.setProperty("./profile/familyName", value);
value=adminSession.getValueFactory().createValue("Albin", PropertyType.STRING);
user.setProperty("./profile/givenName", value);
value=adminSession.getValueFactory().createValue("Test User", PropertyType.STRING);
user.setProperty("./profile/aboutMe", value);
value=adminSession.getValueFactory().createValue("[email protected]", PropertyType.STRING);
user.setProperty("./profile/email", value);
}else
{
response.getWriter().write("User already exist..");
}
Group group = (Group)(userManager.getAuthorizable(groupName));
group.addMember(userManager.getAuthorizable(userName));
} catch (Exception e) {
e.printStackTrace();
response.getWriter().write("Not able to perform User Management.."+resolverFactory);
} finally {
if (adminResolver != null) adminResolver.close();
}
}
protected final void doGet(final SlingHttpServletRequest request,
final SlingHttpServletResponse response) throws IOException {
doPost(request, response);
}
Friday, April 3, 2015
How to create different renditions for the Image in AEM/Adobe CQ5?
How to create different renditions for the Image in AEM/Adobe CQ5?
While uploading the images to DAM,Adobe Experience Manager(AEM) will create renditions of an image that include different sizes of the same image.This can be helpful when we need to create thumbnails or smaller views of large, high-resolution images.We can configure the DAM Update Asset workflow to create the different renditions.
- Login to http://localhost:4502/etc/workflow/models/dam/update_asset.html
- In the workflow model select the thumbnail creation step and edit, in the process tab of the step we can add custom rendition values.
- Save the workflow
How to use HTML5 adaptive image in AEM/Adobe CQ5?
How to use HTML5 adaptive image in AEM/Adobe CQ5?
This post will explain how to use HTML5 adaptive image in Adobe Experience Manager(AEM)The srcset attribute in HTML5 <img> element, allows us to specify different images for varying viewport widths and pixel densities. This allows us to load a larger image for new high resolution devices while displaying lower resolution images for others
<img src="image-src.png" srcset="image-1x.png 1x, image-2x.png 2x,image-3x.png 3x, image-4x.png 4x">
The width also can be specified to select the images.
<img src="small.jpg" srcset="medium.jpg 1000w, large.jpg 2000w" alt="Sample Image">
The original or different rendition images can be used in HTML5 Adaptive image to display the images based on pixel density of the device, browser will serve the image based on the resolution of the client.
<img src="/content/dam/Albin/Untitled.jpg/jcr:content/renditions/original" srcset="/content/dam/Albin/Untitled.jpg/jcr:content/renditions/cq5dam.thumbnail.319.319.png 1x,/content/dam/Albin/Untitled.jpg/jcr:content/renditions/original" alt="Sample Image">
Subscribe to:
Posts (Atom)