Live Chat Software by Kayako
 News Categories
(24)Microsoft Technet (2)StarWind (6)TechRepublic (4)ComuterTips (1)SolarWinds (1)Xangati (1) (30)VMware (8)NVIDIA (9)VDI (1)pfsense vRouter (4)VEEAM (3)Google (2)RemoteFX (1) (1)MailCleaner (1)Udemy (1)AUGI (2)AECbytes Architecture Engineering Constrution (8)VMGuru (2)AUTODESK (9) (1)Atlantis Blog (40)AT.COM (2) (1) (16) (3)hadoop360 (3)bigdatastudio (1) (1) (3)VECITA (1) (1)Palo Alto Networks (5) (2) (1)Nhịp Cầu đầu tư (3)VnEconomy (1)Reuters (1)Tom Tunguz (1) (1)Esri (1) (1)tweet (1)Tesla (1) (7)ITCNews (1) (1) Harvard Business Review (1)Haravan (2) (1) (8) (3)IBM (1) (2) (1) (9) (1) (1) (4) (1) (1) (1) (1) (1) (1) (1) (4) (5) (4) (3) (1) (1) (1) (3) (1) (27) (1) (1) (1) (5) (2) (1) (1) (3) (2) (2) (1) (21) (1) (1) (1) (1) (1) (1) (2)Engenius (1) (1) (1) (1) (1) (3) (6) (1) (2) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (2)VTV (6)NguyenTatThanh School (1) (1)
RSS Feed
What's new in nopCommerce 4.10 - .NET Core 2.1
Posted by Thang Le Toan on 11 March 2019 08:39 AM


NopCommerce 4.10 is out the door and looking awesome with great new features among which is the support for .NET Core 2.1. The release note of this new version is no different from any previous ones, it is quite long including more than 100 items. Just looking at it could be overwhelming. But no worries. We have got you covered with this article in which we are going to digest this information and give you a detailed overview of the most important new features in nopCommerce 4.10.

NopCommerce moves to .NET Core 2.1

Let’s start with the flagship feature of nopCommerce 4.10, namely the support for .NET Core 2.1. The previous version 4.0 was built on top of ASP.NET Core but at the same time was targeting .NET 4.6.1. For more information on why this is please read our blog post on What’s new in nopCommerce 4.0. In NopCommerce 4.10 this has changed and the platform now runs on .NET Core 2.10 and Entity Framework Core, which supports lazy loading. The move to .NET Core means that nopCommerce is now leaner, more modular, more versatile when it comes to deployment options (you do not have to have IIS to run your store) more performant and developers can make use of new .NET Core features like partial Tag Helpers, SignalR, Span<T>, Memory<T>, improved support for Docker container, etc.

It is important to note that nopCommerce 4.10, although now targeting .NET Core 2.10, still lacks cross-platform support. This important development was postponed for version 4.10 as it requires a substantial effort and would have delayed this release significantly. The next feature is the reason why nopCommerce 4.10 had to be released as soon as possible.

GDPR Support

The General Data Protection Regulation has been in effect since the 25th of May. The regulation simply requires businesses to protect the personal data and privacy of EU citizens for transactions that occur within EU member states. In its essence, the GDPR shifts the ownership of customer data from the organizations that use it to the individual customer. Customer data refers to any information such as name, address, and ID numbers; web data such as location, IP address, cookie data; or any genetic, psychological, cultural, religious and/or socioeconomic data that can be used to identify an individual.

GDPR is certainly complicated. The law is 90 pages and to become compliant may seem like a daunting task. Well, it could be. But fear not. NopCommerce 4.10 abstracts the complexities for you (the store owner) and gives you the tools to meet the following three major GDPR requirements:

  • If you need to use the personal data of a customer for a specific purpose (for example send them promotional emails) you are required to have their consent. You need to make sure that you ask for their permission and have their consent.
  • The customer can request to see what personal data related to them you are keeping in your store. You need to provide them with the means to see this data every time they require it.
  • The customer should be able to delete their personal data from your store at any time. So you need to give them the tools to do so.

As you can see running a store and being GDPR compliant is not so difficult. It is also a great opportunity to gain the trust of EU customers. Fortunately, nopCommerce 4.10 provides GDPR support and you can meet these three major requirements.

Where to start? Let me point you to the right settings in the nopCommerce administration to get things going.

First, you need to enable the GDPR support for your store. Please keep in mind that it is only available for nopCommerce 4.10. Go to Settings -> GDPR Settings and mark the checkbox to get the GDPR support enabled. Once you do this, you can immediately log the “accept privacy policy” and the “newsletter subscription” default messages. Logging them means that you will be able to track the consent requests in the GDPR log which is located in Customers -> GDPR Request Log

GDPR Enable

You can create any type of consent messages depending on the nature of your business or the products and services you offer. For example, you have an online grocery store and you run a No Food Waste campaign. Each day you make a special selection of items which are about to expire soon. As part of the campaign, you wish to send a promo email to your customers of the daily promotions. You will need to get your customers' consent to send them promotional emails.

No Food Waste Consent

In the store administration, you can select which consents are required for your store. You can also map a consent to a specific store if you are running a multi-store installation of nopCommerce.

Map Consent to a Store

A record is kept for all consents a customer has granted or denied. The store owner can keep track of all consent activities in the GDPR request log.

GDPR Request Log

The customers can view all GDPR-related activities on their My Account page. They can also keep track of the consents they have given or denied. They can see what kind of personal information the store keeps. A customer can delete their account at any time along with all their personal information. Once a consent is granted, a customer may choose to revoke their consent at any time. If this happens, a store owner needs to act accordingly and make sure that they don’t violate the customer’s consent.

GDPR Customer Page

The support for .NET Core 2.1 and GDPR are without a doubt the highlights in the 4.10 release. The shortlist of the features to follow are not to be overlooked either. They will also give a good reason to store owners to upgrade to nopCommerce 4.10.

A preview is available for news, topics, and blogs

As store owners, managing, we find the next feature extremely valuable. In nopCommerce 4.10, there is a preview in the administration for the news, topics and blog posts. In previous versions, we had to publish an article to view it. This was inconvenient especially with articles which required extensive formatting. Making changes to a blog post, for example, when it is live is not a good practice. Fortunately, in nopCommerce 4.10 this problem is solved and store owners can edit and polish their content as much as they need before publishing it.

Blog Preview

Polls per store option available

In previous nopCommerce versions, if you are running a multi-store and needed to have a poll on only one of your stores, the poll would appear on every store in your installation. Needless to say, this could be a showstopper in most cases because a poll relevant to one store is rarely applicable to other stores. Now in nopCommerce 4.10 polls can be created per store solving this problem.

Polls per store

Product review notification for customers

In nopCommerce 4.10 a customer gets a notification when they receive a reply to a product review. The option to send a notification can be useful when a store owner wants to be sure that a customer reads their reply. For example, let's say that a customer has left a bad review. As a store owner, it would be important to me to reply to them and ask follow-up questions. Their feedback can help me improve the product or the service. This will not be possible if there is no way for the customer to know that I have replied to their review.

Order details page (administration) - "Billing info" and "Shipping info" is displayed in a single tab

A simple change can make a big difference when it saves time. Now, a store owner can view the order billing and shipping information in a single tab. This makes it easy for the store owner to compare the billing and shipping addresses for each order. No switching of tabs is required anymore.

Shipping and Billing Information

Product attribute price adjustment in percentage terms

Before nopCommerce 4.10, product prices could be adjusted based on specific attributes with a fixed amount only. In the new version, these price adjustments can be done in percentage points. This gives much more flexibility when running a sale for example. A store owner does not have to edit their price adjustments every time the price of a product changes.


“Required products” are automatically removed when the “main product” is removed from the shopping cart

You are probably aware that in nopCommerce, a product can have required products. These are products that are required to be purchased along with the main product and are automatically added to the shopping cart when the main product is added to the cart. In previous nopCommerce versions, buyers had to manually remove the required products from the shopping cart when the main product was removed. Not anymore. In nopCommerce 4.10 this is done automatically. A logical change which buyers and store owners will appreciate alike.

Required Products

Reward points enhancement - minimum order total setting added

In nopCommerce 4.10, the store owner can specify the minimum order total required for a customer to receive reward points. For example, I would like to give 1 reward point for every 10 dollars spent but only if the order placed is for at least $100. I can set this in Settings -> Reward point ->Minimum order total. Anyone who has placed an order for less than that amount will not receive the reward points.

Minimum Order Total

Delete products from the shopping cart or wish list in the admin area

Now, a store owner can delete products from the customer’s shopping cart or wish list in the administration. In previous versions, they had to be in “impersonated mode” to perform this action which was much more time-consuming.

Delete shopping cart and wish list in admin

Disable checkout

In nopCommerce 4.10 store owners can disable the checkout in the administration of their store. This comes in handy when a store owner wishes to have a product catalog website, where shoppers can browse products but cannot purchase them. To enable this option go to Settings -> Order Settings -> Checkout disabled.

Disable Checkout

Import product pictures from a remote server

A store owner needs to enable the "allow download images" setting to make use of this feature. This setting can be found in Catalog Settings -> Import/Export and will allow importing product images from a remote server when importing products from XML/XLS. The store owner can now include an URL from an external source in the picture fields of the XML/XLS file. In previous nopCommerce versions, a store owner could import product images only from a local machine.

Gift card balance displayed on the checkout page

If a customer applies a gift card to their order, the gift card balance will appear in the order summary. He will know exactly how much money is left in the gift card for future purchases. This was not possible in previous versions of nopCommerce. In fact, there was no way for the customer to know their gift card balance.

Gift Card Balance on Shopping Card

Discount coupon codes can be added to links to the store

We are crazy about this new feature and we are sure that other store owners will fall in love with it as well. In nopCommerce 4.10, the store owner can provide external links with a discount coupon code so that a shopper doesn’t have to apply the coupon code at the checkout. Why is this useful? I will illustrate the importance of this feature with a practical example.

Let’s say you have a 50% sale on all products and you run a Google ad to advertise this offer. For this purpose, you create a 50% discount in the store’s administration of type “assign to order total”. You will see that a link is automatically generated.

Discount URL

You point your Google ad to this link. Next, a shopper clicks on your ad, lands on your store and adds a product to their shopping cart. The 50% discount will be applied automatically and the price of the product will be discounted.

Discount URL - price discounted

If your discount is assigned to a specific product or category the discounted prices will be immediately visible when your shoppers go to the product or category page, provided that they have the coupon code in the query string. Here’s an example.

Let’s say you want to have a sale on a specific product. What you have to do is assign your discount to the specific product and add the coupon code as a query parameter to the product link. Please click on the following link to see a real example:

As you can see the price of the HP Laptop is automatically discounted.

Discount code in external links

Google Analytics plugin now uses the new global site tag from Google

In nopCommerce 4.10 the Google Analytics plugin now uses the new global site tag (gtag.js) from Google. Why should you care? The global site tag is developed by the same team that created the Google Tag Manager at Google and replaces the analytics.js tag for Google Analytics and the conversion tracking tag for Google Ads. This means that the new gtag.js is designed to streamline tagging on your website for all Google Products. The global site tag sets new cookies for your website, which measure which clicks from your Google Ads bring traffic to your website. In this way, Google Ads can measure conversions much more accurately. You can also configure which interactions with your store should be considered Google Ads conversion. Most importantly by having the new global site tag on your website, you will be able to access new features as they are released on the new Google Marketing Platform.

CSS/style link tags in richTexbox Editor

If you are keen on having stunning looking-landing pages, like we are, then you will definitely appreciate this new feature. In nopCommerce 4.10 you can link CSS style sheets in the richTextbox editor. In this way, you can style every landing page or content generated with the richTextbox editor individually.

Let's next look at a few very useful new dvelopments that are more specific to nopCommerce plugin and theme developers.

Versioning of CSS and JS files

This is an important little addition, especially to theme developers. Before nopCommerce 4.10 if we were to modify the theme of a nopCommerce store by changing the CSS or JS files, the changes would not have been reflected in the browser of a customer who has visited the store before, unless they clear the browser cache. Let’s say we change the background color of the homepage of a store by modifying the main CSS file of the theme. All customers who visit the store for the first time will see the new background color. But customers who have previously visited the store will see the old background color because the browser is serving them the CSS file from its local cache.

NopCommerce 4.10 appends a version number to CSS and JS file links and bundles. Every modification changes the version in the links which means that every time a CSS or JS file is changed the browser sees a new file and loads it from the store server instead of loading it from its browser cache.

Move business logic from extension methods to services.

Extension methods could be useful for framework developer to expose functionality in a fluent syntax. But when you have classes that you can control which is the case with nopCommerce service classes, then extension methods could be harming the design of your code. Static classes that contain extension methods like anything static in OOP cannot benefit from polymorphism because they cannot implement interfaces or be inherited. Naturally, they are more difficult to test too.

Therefore, we welcome the fact that in version 4.10 the nopCommerce team has decided to move the code from various extensions methods like GetSeName, GetProductPicture, etc. to service classes.

In this way, the code in these methods can be overridden and also swapped through the DI Container.

Some developers might miss the fluentness of the extension methods syntax. Yet, being nopCommerce developers ourselves, we view this change as trading a highly sweetened fructose-syrup beverage with a freshly-squeezed orange juice.

Dropped support for SQL Server Compact

I am sure not many nopCommerce developers will miss SQL Server Compact especially that it has been in deprecation mode with no new releases planned for years now. So no surprises here, the nopCommerce team has decided to abandon this SQL Server edition.

Reindexing of database tables

In nopCommerce 4.10 if you open the administration and go to System -> Maintenance you will see a new panel named “Re-index database tables” with a “Re-index” button. Why would you want to press this button? Over time and especially with a busy nopCommerce website the indexes in the database can become fragmented. This can lead to a database that performs more slowly. In such situations, the new database reindexing feature can come in handy.

Reindexing of database tables

This concludes our description of the new nopCommerce 4.10 version. Now that you have a deeper understanding of why moving to .NET Core is important and what you might expect in terms of new features you can make an educated choice of whether to upgrade to the new version or not. If you need help with a nopCommerce upgrade or any type of nopCommerce development,

Read more »

Top 5 Open Source Alternatives to Microsoft Exchange
Posted by Thang Le Toan on 08 February 2017 04:18 AM

Top 5 Open Source Alternatives to Microsoft Exchange

Are you tired of overpaying for the Microsoft Exchange messaging server? The Linux and Free/Open Source world is cram-full of robust, capable alternatives that won't drain your bank account. This tasty assortment ranges from free with community support, to full commercially-supported products. Let's take a look at five open source Microsoft Exchange killers.
Choosing an open source messaging server can save you money and admin time without losing out on features. Take a look at what our favorite alternatives to Microsoft Exchange have to offer.

1. Ubuntu Server

The popular Ubuntu Linux, famous for its polished, easy-to-use desktop version, also has a specialized Ubuntu server edition.This is more than a re-packaged Ubuntu Desktop; it comes with a kernel tuned for server duties, a full complement of server software and no graphical interface. This is a serious, lean mean server operating system.

Ubuntu Server does little handholding, so it's not for novice system administrators. Rather, it is for the experienced sysadmin who wants maximum control. It includes a number of enterprise-ready features such as AppArmor for security, private cloud, public cloud, high availability, a Landscape client for systems management, Mac OS X and Microsoft network integration, and virtualization.

The installer serves up a number of useful package groups such as Virtual machine host, Samba file server, LAMP stack, Printer server, and Mail server. The Mail server group installs Postfix (SMTP), and the excellent Dovecot for POP3 and IMAP4, which is a stout foundation for an on-site email server. Then add whatever additional services you want, such as a Webmail server, calendaring, shared contacts, discussion boards, file shares, and so on. Or you can install a prefab groupware suite on it.

Ubuntu Server is free of cost, and various commercial support and systems management options are available.


2. Citadel Groupware Server

Citadel is free of cost and 100 percent Free software, comprised entirely of GPL-licensed code. Citadel is an all-in-one messaging and collaboration server that runs on Linux, BSD, Solaris, and pretty much any Unix-like operating system. It includes email, group scheduling and calendaring, shared contacts, mail list server, instant messaging, public folders, and mobile device support. Citadel supports distributed installation across multiple servers for scaling and high availability, Web access and local clients.

The key to understanding how Citadel works is grasping the old Bulletin Board Services (BBS) concept of rooms. A room is any Citadel element: email folder, RSS feed, calendar, chat—anything at all. It's an easy installation, since it is included in most Linux distributions, and it's easy to administer—you can literally be up and running in an hour.

There is good community support for Citadel, and there is just one version—their best one.


3. Open-Xchange

Open-Xchange server serves up several versions: the free Community edition, the Advanced Server edition and the Hosting and Server version. The Community edition is not supported by Open-Xchange, and doesn't include proprietary modules like OXtender for MS Outlook and OXtender for Mac OS. If you want those modules, then you have to buy one of the other editions. Otherwise it's similar to the commercial versions.

The Advanced Server is a complete system that includes the Debian Linux-based Univention Corporate Server operating system, and a raft of nifty tools such as the Open-Xchange Microsoft Outlook Uploader (for migrating data from Outlook or an MS Exchange server), the OXtender for Mobile Web, and an MS Outlook updater. If you have a lot of Microsoft clients, or you need to interoperate in a Microsoft network, the Advanced Server makes it fairly painless.

The Hosting Edition is for ISPs and hosting services that want to offer hosted email and groupware services.

A new feature is the OX App Suite, a messaging suite that includes a word processor, spreadsheet, calendar, contacts, and instant messaging and sharing.

Open-Xchange is a member of Lisog, the open source stack initiative, with the goals of helping businesses craft open source strategies, and integrating propriety and open source software.


4. Zimbra

The Zimbra collaboration suite is another commercial many-bells-and-whistles, open source-based server with proprietary add-ons. It includes all the usual goodies: email, Webmail, shared folders, shared contacts, calendaring and scheduling, instant messaging and mobile apps, and Outlook sync.

Zimbra's Web interface is called Zimbra Desktop. Zimbra Desktop supports all of Zimbra's features, and it supports syncing external accounts such as Gmail, Yahoo, or any POP3 or IMAP mail. In fact, a feature common to all of the groupware suites in this article is they have excellent Web-based client interfaces, so you don't need standalone clients like Outlook or Evolution. If you can wean users away from their beloved Outlook you can make administration a lot easier, and not have to hassle with the cost of using special Outlook connectors.

Zimbra has Zimlets, which is their name for mashups, which is another name for usefully-collating multiple sources of information. This lets you do things like check your calendar, set appointments, and pick a restaurant to meet in without ever leaving the email you're reading. Zimlets make a lot of information available on mouseovers such as phone numbers, flight schedules, status messages, maps, address books entries, and lots more. (A picture is worth a thousand words, so check out the demonstration video.) You can choose from a whole gallery of Zimlets, and you can write and share your own.


5. SOGo

The historical stumbling block for replacing MS Exchange has been Microsoft's closed, proprietary MAPI protocol. In 2007 the European Union ordered Microsoft to open several of its protocols such as CIFS (Common Internet File System), MS Active Directory protocols and MAPI. When Samba 4 is released it will have full support for the Microsoft protocols, providing an Active Directory alternative. MAPI is key to natively supporting MS Outlook, and to interoperability between Exchange and other groupware and mail servers.

The OpenChange project has been developing a portable open source implementation of MAPI, with the goal of native Exchange and Outlook support, and you can see this in action in the SOGo groupware suite. SOGo supports multiple languages, and multiple clients such as Outlook, Thunderbird, Blackberry, iPhone, and Android. SOGo is free software and free of cost.



Zarafa, based in the Netherlands, also offers native Outlook support. Zarafa is designed to add on to your existing mail server and WebDAV server. An easy way to get acquainted is to set up a Fedora Linux test server, because Zarafa is included in Fedora.

Read more »

Faster Software through Vectorization and Parallelization
Posted by Thang Le Toan on 24 May 2016 05:15 AM

How can developers continue to achieve performance gains? Here’s a look at how to take advantage of the cores at your disposal

Everyone agrees there is a need for speed, and pressure is on developers and engineers to deliver better performance from every new piece of hardware. In this post, Slashdot Media Contributing Editor Rick Leinecker looks at how Vectorization and Parallelization help achieve that.

Faster Software, Faster
Rick Leinecker, May 2016
Everyone loves programs that run fast and smooth. For instance, Microsoft Word does complex image manipulation easily without noticeable delay. The march of software toward even greater levels of performance helps satisfy our need for speed.
The rule of thumb for gains in computer performance can be summed up with Moore’s law. It states that every two years, computer hardware doubles in capability, which is also accompanied by price reductions. This explains the aforementioned march to greater levels of performance along with the widespread hardware bargains. But computer clock speeds haven’t improved much since around 2005, while software still continues to enjoy ever-improving performance.
In the absence of improved computer clock speeds, Intel provides ways for developers to continue creating faster and faster software. I am going to mention the two methods that have provided my software development the biggest gains: vectorization and parallelization.
To explain vectorization, I will use an illustrative metaphor. Let’s say that you own a store with a long rack filled with claw hammers. Your accountant sent an email stating that you are losing money on the hammers, and you need to raise the price. Still using old fashioned labels, you figure out how long it will take your stock man to change the labels. It will take hours with the label machine that you own. But a slick salesman walks in at that opportune moment and says he has a new-fangled labeler that can affix labels on four items at a time. This is good news. Your stock man can do the job in a quarter of the time you originally estimated. He takes the new labeler down the aisle and does the task, four hammers at a time.
This is similar to how Intel CPUs do vectorization. In many situations, the CPU provides instructions that operate on multiple adjacent items, similar to the new-fangled labeler. The technology is known as Single Instruction Multiple Data (SIMD). The new CPU instructions can perform operations on anywhere from two large pieces of data to sixteen small pieces of data. For instance, if the program needs to add a value of 5 to a list, it can add 5 to multiple list items simultaneously. For garden variety numbers, this might give you a speed up factor of 4. Figure 1 illustrates how CPU single operations affect multiple data elements.


Figure 1: Single CPU operations affect multiple data elements.
In order to employ vectorization via the SIMD technology, all developers must do is compile their software with a modern compiler. Modern compilers inject the special SIMD CPU instructions on your behalf at compile time—it usually requires no effort on your part except for the recompile. I could take an old piece of software off the shelf from ten years ago, recompile with the Intel compiler, and for code that acts on adjacent data enjoy a huge performance gain. In my day-to-day programming I normally get a four-fold performance boost where vectorization is applied.
As elegant as the new-fangled labeler was, there was another option for the relabeling job. You could have asked another three employees to help, for a total of four to perform the task. Then, instead of a labeler that can re-label four hammers at a time, you now have four people to re-label the hammers with the old-style labeler. Each person works on a separate section of the hammer inventory to complete the task.
This is similar to parallelization. Software has constructs called loops that perform sequential groups of tasks. These loops can be split up to take advantage of the cores on a system, similar to the way the four employees might share the labeling job. For instance, if you have a four core CPU, then loops can be split up four ways. Each of the four cores takes a quarter of the loop’s task, thus finishing the task four times as fast. And if you have more than four cores, the loop’s task can be split up into even smaller sections, thus improving performance that much more. While the compiler does the work in splitting up loops behind the scenes by injecting the appropriate code, the developer must direct the compiler to do so before compilation with special directives. Figure 2 illustrates how this idea works.


Figure 2: Loop parallelization uses four distinct processes to split up a sequential task.
Now here is where it gets really interesting. Let’s say you are back to engineering the re-label job. What if you have four of the new label machines with four of your employees to do the job? Now you can go sixteen times faster and get the job done quickly. Each of the four employees is re-labeling four hammers at a time. The same can be true for software. Compilers can use both vectorization and parallelization for dramatic performance gains. This is the beauty of Intel’s CPU technology and modern compilers which target them. Even without improvements in CPU clock speed, your software can still run faster. The combination of vectorization and parallelization is a winning combination, and software is the beneficiary.
Finally, I’d like to point out that combining both techniques can actually yield better than a 16 time benefit. Let’s say that you have a computer with eight cores. Now let’s say that you are acting on a list of single bytes, which can be acted on 16 at a time. This would yield a performance increase of 128 times. And if this is older software that you took off the shelf for a recompile, that’s not bad for a relatively small effort.

Read more »

Help Desk Software by Kayako