Friday, October 18, 2013
A Father’s Prayer for His Son
Build me a son, O Lord, who will be strong enough to know when he is weak and brave enough to face himself when he is afraid; one who will be proud and unbending in honest defeat, and humble and gentle in victory.
Build me a son whose wishes will not take the place of deeds; a son who will know Thee—and that to know himself is the foundation stone of knowledge.
Lead him, I pray, not in the path of ease and comfort, but under the stress and spur of difficulties and challenge. Here, let him learn to stand up in the storm; here let him learn compassion for those that fail.
Build me a son whose heart will be clear, whose goal will be high, a son who will master himself before he seeks to master other men, one who will reach into the future, yet never forget the past.
And after all these things are his, add, I pray, enough of a sense of humor, so that he may always be serious, yet never take himself too seriously.
Give him humility, so that he may always remember the simplicity of true greatness, the open mind of true wisdom, and the meekness of true strength. Then I, his father, will dare to whisper, "I have not lived in vain."
Tuesday, November 29, 2011
Help Desk Tools
Windows tools:
1. SpiceWorks - This is a freeware monitoring tools with a nice GUI and has a support forum for users to collaborate.
2. Look @ LAN - A very simple scanning tools for IP addresses & other Windows related info; however, some of the Windows firewall configurations might need to be disabled / opened.
Linux tools:
1. Nagios - The best Linux based monitoring tools. There are a few other alternatives such as Hyperic, Pandora, or OpenNMS, just to name a few. However, none can compete with Nagios in terms of support & popularity.
2. SysAid Free Edition. I have experienced with the paid version in my previous company, but it was installed on Windows system. Now it has Linux version, and so I think it might worth to get a second look.
Web-based tools:
1. Trellis Desk - free web-based trouble-ticketing system, easy to configure and support localization (I have translated it to Indonesian) :-)
2. OTRS - Open source Ticket Request System with various features to manage customer telephone calls and e-mails
3. Free Helpdesk Software - A very simple helpdesk solution
Do you have any other tools that is worth to be included in the list, please inform me on the comments below. Thanks.
Monday, June 13, 2011
Updates
Wednesday, September 1, 2010
Overview of the Compiere Application Dictionary and its Components
The original article was created by Andries L Pretorius on June 2010 at Open Source.
In this article on advanced aspects of Compiere by Andries L Pretorius, author of Compiere 3 Implementation Guide, we will cover:
- Overview of the Compiere Application Dictionary and its components
- Adding a custom field in Compiere
- Setting up a basic document process approval workflow in Compiere
The Compiere Application Dictionary (AD)
The Application Dictionary makes Compiere a truly unique and flexible business framework. Compiere was originally designed from the ground up on a model driven architecture (MDA), as defined by the Object Management Group (OMG). The system design conforms to an open standard in its layered architecture between business, application, and platform logic. MDA separates the business logic modeling, from technology modeling so as to ensure that both can evolve within their own domains, but still keeping within a framework of an open standard (and platform independent) that interconnects the two.
The benefit in the Compiere environment is that through modeling, design, and build the actual deployment time is greatly reduced. The AD also ensures a seamless upgrade of the platform while having little impact on the environment-specific business objects and processes.
The Application Dictionary of Compiere is meta data driven, meaning that contextual data defines the experience. This also means that the end user presentation layer and thus, the Graphical User Interface (GUI) platform have been defined in different technologies (i.e. Java Swing, HTML, and Ajax) and offers endless possibilities.
The Application Dictionaries can be illustrated as shown in:
[singlepic id=267 w=320 h=240 float=center]
To access the Application Dictionary you need to log in as a System Administrator and refer to the sub menu shown in:
We will use the Java Swing (Compiere Standard Edition) user interface for illustration purposes in this section.
[singlepic id=268 w=320 h=240 float=center]
Table and columns
This refers to the fundamental building blocks of the system, and links Compiere data to the underlying Table and Column structures in the database. Illustrated below is the Period table in the AD that links to the underlying table name of C_Period, which you will find in the database:
[singlepic id=269 w=320 h=240 float=center]
If the underlying database already contains the required fields, then by pressing the Create Columns from DB button and having the correct DB Table Name, Compiere will create the columns from the database in the AD.
Within a table, a key column must be created for use as the table identifier:
[singlepic id=270 w=320 h=240 float=center]
Illustrated the key column C_Period_ID. A column links to a System Element, as explained below, and is linked to the underlying table through the Synchronize Column button. In effect, synchronization creates or updates a column to the underlying database.
[singlepic id=271 w=320 h=240 float=center]
System elements
System elements are the common data elements and are used for central terminology references. These system elements link the underlying database columns to business-speak, for instance, in the screenshot in Image 5, C_Period_ID would be translated into the actual period.
[singlepic id=272 w=320 h=240 float=center]
System elements are also used for setting up translations, as well as help comments on column fields.
Validation rules
Field validation rules that are defined in the context of a column field are dynamically verified based on the predefined rules or user context, at time of rendering the data. For instance, when a Business Partner field is displayed for selecting, the Business Partner account must be active and not be a Summary Account as shown in Image 6.
[singlepic id=273 w=320 h=240 float=center]
Based on the example shown in Image 6, a dynamic validation will be set up for the C_BPartner_ID column field (the Business Partner table key identifier) on the Order table, shown in Image 7.
[singlepic id=274 w=320 h=240 float=center]
Reference
A Reference refers to database column field types that are either Data Types (i.e. an Amount, Integer, Date, Time, image, hyperlink, etc.) or a List validation (i.e. user pre-defined dropdowns) or Table validation (i.e. drop-downs for table key columns). An example of a Data Type column would be a period start date. The Column field StartDate in the Period table in the database is defined as reference Date
[singlepic id=275 w=320 h=240 float=center]
An example of a list validation on a Period Control Action (the actions that you can perform on a period) set-up is as shown in Image 9.
The list defined through a Search Key and a Name.
[singlepic id=276 w=320 h=240 float=center]
Search keys are saved in the database.
Table Validations are data-defined based on existing referenced key columns and SQL selection. An example of a table reference would be a Document type based on a table validation SQL query. Herewith, a Document type (C_DocType) is defined, but it refers to the appropriate Tenant/client so as to ensure that only the document types for a Tenant are displayed, shown in Image 11.
[singlepic id=277 w=320 h=240 float=center]
Windows, Tabs, and Fields
Compiere generates all of its windows in a standard dynamic way by reference to the defined AD. This AD window thus relates to setting up the Windows, and the Tabs(sub-linked windows) and Fields that are displayed on those Windows. Illustrated here is an example of the Calendar and Period window that defines the structure of the periods within Compiere.
[singlepic id=278 w=320 h=240 float=center]
Windows may be of the following Window Types:
- Maintain: Usually used in the context of master data, such as Business Partner or Products.
- Query Only: A window type that is used for displaying results in a grid, and is not editable.
- Transaction: A window type used for transaction processing , such as an order or an invoice.
The Window Tabs refer to the sub-linked windows of the main window header, or the preceding tab. In the example below, the Calendar window is built by defining the Calendar, applicable Year, Period and Period control, and Non Business Day.
[singlepic id=279 w=320 h=240 float=center]
The window's Fields are populated from the Table and Columns associated with the window.
[singlepic id=280 w=320 h=240 float=center]
Forms
Forms are windows that are not automatically generated through the AD but are static and are usually for custom purposes, based on specific Java code classes.Below is a Form that defines the File Import Loader process.
[singlepic id=281 w=320 h=240 float=center]
Once a Form has been defined, it is linked to the Java classes through the Classname(Swing) and Java Classname for Web UI fields. These classes will contain the source code to build these custom Forms.
Info windows
These are windows that are used for quick searches and information views. Here, is the Info window for viewing invoices. It is defined through an SQL query on a table and then defining the columns within the Info Window.
[singlepic id=282 w=320 h=240 float=center]
Report Views
Where database views may exist within the underlying database, the AD requires the Database views to be defined in the system in order to be accessible. Here, is an example of the Invoice database view for a week:
[singlepic id=283 w=320 h=240 float=center]
To distinguish them from normal tables, Compiere uses the RV_ prefix convention to name a Report View within the underlying database.
Reports and processes
These are used to set up reports (link to a Report view) or a process that can link to a Java code class. Reports and processes may have parameters that define a selection process. Examples of a report would be an invoice enquiry, and an example of a process would be to generate invoices from orders.Here is the actual Report that defines the Invoices per week report.
[singlepic id=284 w=320 h=240 float=center]
Reports may have access restrictions and selection parameters.
If a report is also displayed as a Dashboard (Compiere Enterprise version 3.5 onwards) then an underlying dashboard widget needs to be defined. An example of the Invoice Generate Process, that links to the underlying Java class:
[singlepic id=285 w=320 h=240 float=center]
In windows, Buttons may be linked to processes (i.e. C_Invoice Copy From which copies lines from other invoices on the Invoice windows) and Processes need not all be manually run as such. Processes can be defined as server processes, and can also be scheduled through the Compiere scheduler.
Adding a Custom Field in Compiere 3
The user menu is your default tree, and is accessed through the System Administrator role. You can find the Menu item in the screen tree:
[singlepic id=286 w=320 h=240 float=center]
The above screenshot illustrates a typical window set-up, which is done as follows:
- Create a new menu item by clicking on the New button. Enter a name and a description.
- Define its action type: A menu item's action type can be a Window, Form,Process, Report, Task, or Workflow. Link an AD item to the menu, which is illustrated above, where window Sales Order is linked to the Sales Order menu item.
- Move the menu item in context of the main menu tree for users understanding and access.
It is recommended that you define your own windows, or copy from the existing dictionary, for customizations. Because dictionary (system) defined items may be overwritten during the process of migrating to a new version, it is better to copy a window and customize it in the copied window (or create new). This applies to Java code as well: never change the original source as it may be overwritten during migration.
Adding a new field to a window and database
In this section we are going to illustrate how the System Administrator would go about adding a new field to the database. As an illustration, we are going to add a probability reference field that can be used to measure a predefined set of outcomes on an order to the Sales Order window.
- Find the context by Zooming to the Table from the Window. Open and find the Sales Order window in the Window, Tab, and Field menu item when logged in as System Administrator:
- Zoom from the window into the underlying Table and Column window.Order records are maintained in the database in the C_Order table:
- Next we refer the Column tab, and create a new column in the table(see the field naming conventions below). The new column must be as a System Element defined and hence we need to create a System Element prior to using it as a Column in the Table:
- Once the System Element has been defined, we set up the Column as follows:
- Create a new Reference key as follows:
- We then define the Reference key's list validation options as follows:
- The finalized column (and thus the ultimate window field) set-up is thus shown as follows:
[singlepic id=287 w=320 h=240 float=center]
[singlepic id=288 w=320 h=240 float=center]
[singlepic id=289 w=320 h=240 float=center]
[singlepic id=290 w=320 h=240 float=center]
[singlepic id=290 w=320 h=240 float=center]
Because this is a custom list, we choose a validation type of List Validation, and a value format of L, indicating that any letters are allowed. For a full list of these conventions, refer to the help documentation in the system by pressing F1.
[singlepic id=291 w=320 h=240 float=center]
[singlepic id=292 w=320 h=240 float=center]
We finalize the set-up of the field by indicating:
- Field naming conventions: Compiere recommends that customer-specific table and database column names be prefixed by EXT_, XX_, or CUST_, or the four letter entity registered with Compiere, such as SAAC_. This would also apply to indexes and constraints. The reason for this is that these entities are ignored in the migration process.
- Length of field: Because we know that for this particular field there is going to be only one character we define a length of 1.
- Default logic: We assume U, based on our list being Unknown.
- Mandatory UI: Indicates that this field will be mandatory in the window, but not at database level.
- Updatable: Indicates that the field is editable.
- Always Updatable: Indicates that the field is always updatable, regardless of document status.
Final step in column creation—Create / Synchronize with the database
The final step in the process of creating a field is to make sure that it is synchronized to the underlying database from the AD. Scroll down on the column tab to find the Synchronize Column button, as shown in the example below:
[singlepic id=293 w=320 h=240 float=center]
Adding our custom field to the Order window
Back in the menu item Window, Tab, and Field (find the Sales Order window) > Tab (header/top level):
- Click on the Create Fields button to add the field to the database:
- Change the desired sequence of the field to the correct position in the list of fields:
- Re-open the appropriate Sales Order window to display the field:
- A workflow is made up of a node and transitions.
- A node refers to a piece of work.
- A transition is the action to get to the next node, based on a logical condition.
- The workflow process is the active workflow and an activity for the processing of the active node (an activity also may have multiple parallel processes).
- A workflow also has an active State. A Workflow State refers to whether the workflow is running, not running, not started, completed, aborted, or terminated.
- Nodes also have Owners or Responsible persons.
- Open the Workflow editor window, and find the Order process Process_Order. Right-click in the editor, and then add an additional new node called Order Approval:
- We need to define where the transition is going to take place by defining the originating node (Document prepare) and the next node (Document complete):
- Click on the upper-right Zoom button to zoom to the actual workflow process, and find the newly-created node:
- Define the node's owner by creating a workflow owner. Right-click on the workflow owner field:
- The node's workflow owner is set to be role-based, as follows:
- The Node for Approval can be summarized as follows:
- Define the Transition of the node through a condition:
- We log in as the GardenWorld Purchasing role, as follows:
- Create a Purchase Order, and then click on the Complete button. The Order will be placed in an In Progress status, because the workflow's next node is document approval:
- We log off, and then log back in to the system with the GardenWorld User role (workflow owner):
- Find the Workflow Activities menu item, and then approve the document, as follows:
- The Document will be approved when the owner sets the approval status to Yes:
- We gave you an overview of the Compiere Application Dictionary components.
- We illustrated how to add a menu item and a custom list field to a Compiere window by using the AD components.
- We gave you an overview of the Compiere Workflow processes, and illustrated how this is set up.
[singlepic id=294 w=320 h=240 float=center]
[singlepic id=295 w=320 h=240 float=center]
[singlepic id=296 w=320 h=240 float=center]
Setting Up a Basic Document Workflow in Compiere 3
Compiere's workflow processes form an integral part of the system. In this section we are going to learn how to setup a basic approval workflow for a document within Compiere.
The system definitions are as follows:
[singlepic id=297 w=320 h=240 float=center]
Illustrative workflow example
We are going to set up a workflow between two roles, whereby the Gardenworld Purchasing role will capture a Purchase Order and the order will be approved by the Gardenworld User role. This type of approval requires a flag, and Compiere has a built in IsApproved database field that is used for this purpose.
Compiere has standard document workflows and transitions that are predefined within its workflow processes. These nodes are DocStart, DocPrepare, DocComplete, and DocAuto (automatic approval). What this means is that workflow processes already manage the transitions of documents, with the System being the Owner of these workflow nodes.
Defining a custom node in a workflow
We use the workflow editor to define a new node.
[singlepic id=298 w=320 h=240 float=center]
[singlepic id=299 w=320 h=240 float=center]
[singlepic id=300 w=320 h=240 float=center]
[singlepic id=301 w=320 h=240 float=center]
[singlepic id=302 w=320 h=240 float=center]
[singlepic id=303 w=320 h=240 float=center]
[singlepic id=304 w=320 h=240 float=center]
The condition we set up for the document workflow to transition to Document Complete is as follows:
[singlepic id=305 w=320 h=240 float=center]
Testing the workflow
We can now illustrate the workflow by creating an order and ensuring that it gets approved correctly.
[singlepic id=306 w=320 h=240 float=center]
[singlepic id=307 w=320 h=240 float=center]
[singlepic id=308 w=320 h=240 float=center]
[singlepic id=309 w=320 h=240 float=center]
[singlepic id=310 w=320 h=240 float=center]
Summary
We have covered certain aspects with regards to Compiere in this three-part article series—namely the Application Dictionary (AD) and Workflows, as follows:
Tuesday, August 3, 2010
Shakira - Waka-Waka RingTone
[podcast]http://sentana.net/ruben/audio/Shakira_WakaWaka_(Porque_Esto_Es_Africa).mp3[/podcast]
Enjoy... :-)
Friday, July 23, 2010
How to Configure Linux for Children
---
Many people still cling to the notion that Linux is for 30-year-old male geeks. While that may be true, there are plenty of other people of all ages, ethnicities, and genders who enjoy Linux and other free and open source software.
For the most part, the operating systems a child uses are determined by the child’s parents and school. As the parent and Linux user yourself, you may prefer your child to use Linux at home.
One feature of Linux desktop environments like KDE and Gnome is that they are extremely customizable. You can have one panel, two panels, or no panel at all. Just as easily as icons, menus, and widgets can appear, they can also disappear.
For that reason, you may find it necessary to set parameters for your children when using Linux. Whether you need tools to lockdown the desktop or filter Internet content, there is free software out there to help you. What follows is a short guide to preparing a Linux desktop for a child, complete with game recommendations.
Desktop Restrictions
Even if your child has his own computer, he may become very frustrated when he accidentally deletes the icon he wants to use. You can prevent such accidents with desktop restrictions.
KDE has a Kiosk Admin system that is controlled in the kdeglobals configuration file. You can find the file at ~/.kde/share/config/kdeglobals. Kiosk settings are added using keys in the following format:
[KDE Action Restrictions][$i]
action/
For example, if you want to disable print properties so that children can print but cannot change or add printers, you would enter:
print/properties=false
A complete list of available keys, including plasma keys is available at: KDE Techbase.
Gnome has a similar feature for desktop restrictions called “lockdown”. The keys for Gnome lockdown are found in gconf. The easiest way to edit gconf keys is with gconf-editor. If, for example, you want to lock down the panel, you would edit the following key:
apps -> panel -> global ->locked_down and set the value to “true” to enable it.
For a detailed list of lockdown functions, visit the Gnome Desktop Administrator’s Guide.
[singlepic id=265 w=320 h=240 float=center]
One important thing to remember is that these restrictions will primarily prevent your child from accidentally modifying the desktop settings. Children who attempt to do so intentionally will more than likely be smart enough to figure it out, and that is an issue requiring parental attention, not increased restrictions. For very young children, however, this is an excellent way to keep things in order.
Internet Restrictions
There are a couple of methods for filtering the Internet for your child. One is to essentially block all sites and only whitelist the ones you want your child to visit. Young children will probably only have a few sites they like anyway. The second method is to use a more traditional filter to block sites you deem inappropriate. Filters like these are not 100% effective, but they should prevent a lot of accidental visits to inappropriate sites.
An example of a Firefox extension that can be configured to use either method is ProCon Latte.
Like desktop restrictions, an Internet filter will not stop older children from purposely visiting sites you believe are inappropriate, but it will reduce accidental visits.
Aside from filtering content, you can also filter ads with browser extensions. This will prevent children from following ads that may lead them to sites asking for personal information. Adblock Plus is available for Firefox and Adblock for Google Chrome.
Fun Stuff
Kids ultimately will use their computers for fun and learning, so here is a brief list of games and learning activities for kids. It is not a complete list, but should give you an idea of the wide range of games and activities available for children.
[singlepic id=266 w=320 h=240 float=center]
As you can see, with just a little work on your part, Linux can be educational, safe, and fun for your children.
---
Tuesday, July 13, 2010
Speed up your Ubuntu machine boot time
---
[singlepic id=264 w=160 h=120 float=left]Are you desperately searching for ways to finally reach that elusive 10 second boot time? You certainly heard that Ubuntu 10.04 has the capability of doing just that right? It can…but you have to help it along. One of the ways you can help your boot time is removing unnecessary services and drivers that are loaded at boot time. Fortunately, this isn’t something you have to manually do. How is this? There is a tool that can help the Grub boot loader learn what it is you need at start up. This tool is called profile.
Profile is not a tool you install, or run from the command line. Instead, profile is an option you add to your grub configuration file to inform the boot loader you want to create a profile during the next boot loading sequence. In this article I am going to show you how to profile your grub boot sequence for a faster boot process.
How this works
When you boot up your machine Grub does a search for all the necessary drivers to load. This takes time. Instead of making Grub search for these drivers, the profiling actually makes Grub remember every driver necessary to work, thereby cutting down all of the driver load times.
This is a proven technique that can help the boot process. It has actually been around since Ubuntu 6.04, so it has been tested and tested and does work. I will make this normal disclaimer. Even though Grub profile works, anytime you deal with your bootloader you take the chance that you can render your machine unbootable. So you use this tool at your own risk. Don’t take that to mean profile is a dangerous tool and your machine will wind up bricked and mocking you…that is just to say should something happen, you were warned.
How to add profiling
To do this you are going to have to modify your /etc/default/grub file. The edits are not challenging at all. So, open up a terminal window and get ready to work.
The line you are looking for is:
GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash”
This is the line that gives the options to Grup upon boot. You need to add one more option to that line so it now looks like:
GRUB_CMDLINE_LINUX_DEFAULT=”quiet splash profile”
Save that file and then issue the command:
sudo update-grub2
You are ready to reboot your machine.
During this next boot time you will see a noticeable SLOW DOWN. This is normal because Grub is now running the profile. This is quite necessary.
Once the boot up is complete, open up that /etc/default/grub file, remove the profile entry you just added, and re-run the command sudo update-grub2. Now reboot your machine again and see if you don’t notice a distinct speed increase in your boot times.
Final thoughts
There are so many ways to speed up the boot process of your Ubuntu Linux machine. This process, however, is one of the ones that will truly speed up the process and is tested and safe to use. You should gain some noticeable increases and should even speed up after 2 or 3 more start ups.
---
Thursday, July 8, 2010
Upgrading to Wordpress 3.0
I have tried to upgrade my Wordpress on the day it was released, but I got into a problem with locales.php file. I suspect it has something to do with one of my plugins, but since I can't even logged in to my administrator page, I decidec to revert back to version 2.9.2 until the plugins are supported. And apparently, I was not the only one facing the problem. Here's a report about others who have encountered some kind of problems when upgrading.
Here are a few links on how to upgrade to Wordpress version 3.0:
- Updating WordPress. This is from Wordpress.org itself, the official guide to upgrade.
- WordPress 3.0 Upgrade: What to Expect
- 3 Tips to Ensure a Seamless WordPress Upgrade
Good luck!
Ailurus - A Useful Ubuntu Tweak Alternative For Beginners
The original post is located here.
---
Ailurus is cross-Linux-distribution GPL software, which aims at making Linux easier to use for beginners. Rather than a Ubuntu Tweak alternative, Ailurus is the kind of app you can use along Ubuntu Tweak. Ailurus is available for Ubuntu, Fedora and Mint while Ubuntu Tweak is a dedicated Ubuntu only application.
[singlepic id=263 float=center]
Ailurus Features
- 'Study Linux' feature included in Ailurus is pretty good at teaching the Linux basics to beginners. You can even set it to display Linux tips each time you login to your system.
- Install many useful applications easily.
- Enable a number of third party repositories quite easily.
- Display of basic hardware information which is so useful at times.
- Clean APT/YUM cache.
- Backup and recover APT/YUM status.
- Change GNOME settings. Ailurus invokes GConf API, to change GNOME settings.
- Easily enable Gnome Control Center using Ailurus.
How to install Latest Ailurus 10.06.93 in Ubuntu Lucid, Karmic?
- Open Terminal (Applications - Accessories - Terminal) and copy-paste the following lines one by one into Terminal.
- Done. Now install latest Ailurus in Ubuntu Lucid 10.04.
- Done. Launch Ailurus. Goto Applications - System Tools - Ailurus.
sudo add-apt-repository ppa:ailurus
sudo apt-get update
sudo apt-get install ailurus
Ailurus for Fedora and other distros can be downloaded from here.
---
Thursday, January 14, 2010
Securing Data in The Cloud
The original article can be found here.
---
Storing data in the cloud is arguably the most important aspect of public cloud resources, but it is rarely treated as such. Two practical steps to take when securing cloud data are:
- Protect your data in a real world environment.
- Meet compliance requirements.
What are the issues?
There are two primary issues that we have to deal with when talking about data security in a public cloud:
- Protection of the data: Dealing with the confidentiality, integrity, and availability (CIA) criteria. Answering the important questions, such as, "What is the risk to the data? Are the controls in place adequate to mitigate the risk?"
- Location of the data: Dealing with the physical location of the "bits" and answering questions like, "Do I know where the data resides? Does this violate any of my compliance requirements?"
Location is often doubly important because we do not think about it; it may easily slip by unnoticed and have significant impact if a data loss ever occurs.
An example is the conflict between the U.S. Patriot Act and Canadian laws on the privacy of certain personal information. The U.S. government says if there is a compelling reason, they are able to see data in their jurisdiction. Canadian laws say that the data of certain Canadian citizens is protected and cannot be disclosed. If you handle Canadian data (i.e., data that is protected), then you had better be sure it is not physically located on systems in the U.S. Note that this is something providers will need to ensure via contracts.
Where to start: Data classification
If you don't take time to understand your data, then you are setting yourself up for failure in a public cloud environment. Therefore, securing data must begin with data classification.
Here are some steps to follow:
- Identify the data that will be processed or stored in the cloud.
- Classify the information in regards to sensitivity towards loss of the CIA criteria. This would include identifying regulatory requirements for the data.
- Define the rules by which particular information classes of instances must be stored, transmitted, archived, transported and destroyed. Many handling requirements result from contractual or regulatory requirements.
A thought on physical location
As stated earlier, if there are restrictions on the physical location of data, you'll need to find a provider that can handle them. Amazon Web Services uses regions, and many of the other cloud providers offer similar structures. However, you need to ensure the service-level agreements meet your locality requirements.
Protecting data in the cloud
In the cloud, your data can be in any of the following locations:
- Local storage of the virtual machine (i.e., processing engine). Data is tied to the virtual machine location and state.
- Persistent data store (i.e., Amazon EBS or S3, Azure SQL, etc.). Data is independent of virtual machine location and state.
- In transit on the wire.
You will also need to use one of the following methods to meet your data protection requirements:
- File system and share access control lists: This would be using the access control mechanisms in the offering to ensure appropriate restrictions on the data. This would be used in all cases, but it would not protect from malicious IT staff at the provider.
- Encryption with a mixture of public and private key solutions: This would most likely be used to protect against malicious IT staff at the provider.
- Transport level encryption: This would be used as a matter of course whenever sensitive information was being passed or transmitted.
In closing
I strongly insist that everyone classifies their data. Once that is done, there are a couple of cloud issues you need to think about:
- Is my data stored where is should be?
- If there are any physical location limits, are those met?
- Am I protecting against malicious IT staff?
The rest should be basic security practices, much like those used in your non-cloud environment. There is nothing obscure about securing data in the cloud. Just remember that "good security is good security" and you should be good to go.
---
Tuesday, November 17, 2009
Google Chrome on Ubuntu (well, sort of)
But for those who can't wait, there is a way to get Chromium (the open-source platform on which Google Chrome is based). Here are the steps (originally taken from here):
First you need to edit the /etc/apt/sources.list file:
sudo gedit /etc/apt/sources.list
Add add the following lines if you are using Ubuntu 9.10 (Karmic Koala):
deb http://ppa.launchpad.net/chromium-daily/ppa/ubuntu karmic main
deb-src http://ppa.launchpad.net/chromium-daily/ppa/ubuntu karmic main
Save and exit the file.
Now add the GPG key using the following command:
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xfbef0d696de1c72ba5a835fe5a9bf3bb4e5e17b5
Update the source list using the following command:
sudo apt-get update
Then you can install chromium using the following command:
sudo apt-get install chromium-browser
After a successful installation, you can open chromium from Applications—>Internet—>Chromium Web Browser:
[singlepic id=261 w=320 h=240 float=center]
Here's a sample picture of what Chromium looks like on Ubuntu:
[singlepic id=262 w=320 h=240 float=center]
Alternatively, there's a script created by Jeff Rader to automate the installation of Chromium. His script can be downloaded here. Do not forget to change the permission to executable before running the script.
Enjoy!
---
Tuesday, October 20, 2009
Run your own Ubuntu Enterprise Cloud, part 3
---
In part 1 and part 2 of this series, we saw how to set up a minimal cloud infrastructure and bundle a basic image (and test it). In this final article, we’ll play with our cloud from an end-user perspective.
Setting up the web UI
First of all, before accepting end users, as the administrator of the cloud you will have to setup a few things on the web UI. Using your favorite browser, you should:
* Open https://cloudcontroller:8443/
* Log in using the default user/password: admin/admin
* Change the default password, setup the cloud admin email address
* Logout
Setting up the cloud client
We’ll use Ubuntu 9.10 beta for this purpose, as it includes all the needed packages, and it’s so great ! You will have to install the following packages:
$ sudo apt-get install euca2ools unzip
Registering on UEC, getting credentials
As the end-user, fire up your favorite browser and:
* Open https://cloudcontroller:8443/
* Click “Apply” and enter your end user details
If you set up the email correctly on your cloud controller, it should send an email to the cloud admin address asking him to approve that request. Follow the instructions on that email to approve the account as the admin.
You should then get an email at the end user email address asking you to confirm the account request. Follow the instructions on that email, then you can log in on the web UI:
* Open https://cloudcontroller:8443/
* Login using your end user username and password
* Click “Download Credentials” in the “Credentials” tab
* Note the EMI reference you can use on the “Images” tab
Starting up an instance
You should unzip the credentials zipfile you just downloaded, then source the eucarc file and test the connection:
$ unzip euca2-enduser-x509.zip
$ . eucarc
$ euca-describe-availability-zones verbose
Setup a SSH key and allow connection to the SSH port:
$ euca-add-keypair enduserkey > enduserkey.priv
$ chmod 0600 enduserkey.priv
$ euca-authorize default -P tcp -p 22 -s 0.0.0.0/0
Then starting up an instance is just a matter of passing the right EMI and type:
$ euca-run-instances -k enduserkey emi-XXXXXXXX -t c1.medium
Enjoy !
---
Run your own Ubuntu Enterprise Cloud, part 2
---
In part 1 of this series, we saw how to install the cloud infrastructure. In this article, we’ll bundle and upload an EMI (Eucalyptus Machine Image), based on Ubuntu Server 9.10 Beta, and validate that we can run an instance of it.
Download required elements
Go to the cloud/cluster controller and download the required items.
For a 64-bit image:
$ URL="http://uec-images.ubuntu.com/releases/karmic"
$ wget -O image.gz $URL/beta/ubuntu-uec-karmic-amd64.img.gz
$ wget -O vmlinuz $URL/beta/ubuntu-uec-karmic-amd64-vmlinuz-
2.6.31-11-server
$ wget -O initrd $URL/beta/ubuntu-uec-karmic-amd64-initrd.img-
2.6.31-11-server
For a 32-bit image:
$ URL="http://uec-images.ubuntu.com/releases/karmic"
$ wget -O image.gz $URL/beta/ubuntu-uec-karmic-i386.img.gz
$ wget -O vmlinuz $URL/beta/ubuntu-uec-karmic-i386-vmlinuz-
2.6.31-11-generic-pae
$ wget -O initrd $URL/beta/ubuntu-uec-karmic-i386-initrd.img-
2.6.31-11-generic-pae
Bundle the EMI
First you should unpack and resize your image to the desired size, lets say 4Gb. This can take a very long time (15 minutes !) on slow disks as you unpack 10Gb-worth of image space:
$ zcat -f image.gz | cp --sparse=always /dev/stdin image
$ e2fsck -f image
$ resize2fs image 4G
$ truncate --size=4G image
Then bundle and upload the kernel:
$ . eucarc
$ euca-bundle-image -i vmlinuz --kernel true
$ euca-upload-bundle -b ueckernel -m /tmp/vmlinuz.manifest.xml
$ euca-register ueckernel/vmlinuz.manifest.xml
IMAGE eki-KKKKKKKK
Take note of the EKI reference, you’ll need it later. Then bundle, upload and register the ramdisk:
$ euca-bundle-image -i initrd --ramdisk true
$ euca-upload-bundle -b uecramdisk -m /tmp/initrd.manifest.xml
$ euca-register uecramdisk/initrd.manifest.xml
IMAGE eri-RRRRRRRR
Take note of the ERI reference. Finally, bundle the image with the kernel and ramdisk, upload and register:
$ euca-bundle-image -i image --kernel eki-KKKKKKKK --ramdisk
eri-RRRRRRRR
$ euca-upload-bundle -b uecimage -m /tmp/image.manifest.xml
$ euca-register uecimage/image.manifest.xml
IMAGE emi-XXXXXXXX
Bundling will also take a lot of time ! Take note of your EMI reference.
Start an instance of your EMI
In order to access your instance using SSH, you’ll need to setup a few one-time things (create a SSH key and authorize access to port 22 of your instances):
$ euca-add-keypair mykey > mykey.priv
$ chmod 0600 mykey.priv
$ euca-authorize default -P tcp -p 22 -s 0.0.0.0/0
Now it’s time to start your instance !
$ euca-run-instances -k mykey emi-XXXXXXXX -t c1.medium
The “c1.medium” VM type is sufficient by default to run a 4Gb instance. You should take note of the i-YYYYYYYY reference that is displayed on your INSTANCE line. The first time you start an EMI, it can take some time (like 10 minutes) to move from “pending” state to “running”, depending on size. You can use the following command to automatically watch the output of euca-describe-instances, every 5 seconds:
$ watch -n 5 euca-describe-instances
Take note of the first ZZZ.ZZZ.ZZZ.ZZZ IP address mentioned in the output of the command. When the instance is “running”, ctrl-C to exit watch, then:
$ ssh -i mykey.priv ubuntu@ZZZ.ZZZ.ZZZ.ZZZ
You are in ! When you’re done playing with your instance, just run the following command on the cloud/cluster controller.
$ euca-terminate-instances i-YYYYYYYY
In the third and last part of this series of articles, we’ll talk about how to run instances from another workstation, as a cloud “customer”.
---
10 Most Useful Google Plugins for WordPress
---
WordPress is a great and most popular blogging platform for it possibility to extend functions with plugins. WordPress Plugins make blogging easier for all of us who have chosen WordPress as our content management system. This time we want to present you 10 Most Useful Google Plugins for Wordpress.
Google is best known as a search engine and Internet giant, but this time we will check what Google can offer for WordPress users. This post lists the most useful Wordpress plugins related to Google starting from XML Sitemaps and ending with FeedBurner subscribers counter.
We also are using some of listed plugins like Google XML Sitemaps, Google Analyticator or FeedBurnerCount.
1. Google XML Sitemaps
This plugin will create a Google sitemaps compliant XML-Sitemap of your WordPress blog. It supports all of the WordPress generated pages as well as custom ones. Everytime you edit or create a post, your sitemap is updated and all major search engines that support the sitemap protocol, like ASK.com, Google, MSN Search and YAHOO, are notified about the update.
2. Google Analyticator
Google Analyticator easily adds Google Analytics tracking support to a WordPress-powered blog. Google Analyticator also comes with an easily customizable widget that can be used to display specific information that is gathered by Google Analytics using the Google Analytics API.
3. Google Analytics for WordPress
This plugin adds the possibility to tag and segment all outgoing links, so you can see whether a click came from a comment or an article. It also adds the possibility to track just the domain, instead of the complete link, so you get a better view of how much traffic you’re sending where.
4. Google Website Optimizer for WordPress
This simple plugin lets you optimize your landing pages (as posts or pages) using the Google Website Optimizer without needing to edit the HTML code of the theme.
5. Google Doc Embedder
Google Doc Embedder will allow you to embed a PDF, PowerPoint (PPT), or TIFF file directly into your page or post, not requiring the user to have Adobe Reader, PowerPoint, or other software installed to view the contents.
6. Easy AdSense
Easy AdSense provides a very easy way to generate revenue from your blog using Google AdSense. With its full set of features, Easy AdSense is perhaps the first plugin to give you a complete solution for everything AdSense-related.
7. XML Google Maps
This plugin allows you to easily insert Google Map or Google Earth Plugin Maps into your blog.
8. Google AJAX Translation
The Google AJAX Translation WordPress plugin provides a quick, simple, and light way to add translation to your blog. A “Translate” button can be added to the bottom or top of posts, pages, and/or comments.
9. Google Custom Search Plugin
The default search engine that ships with WordPress is not the best search engine and bloggers every where should make the switch to WordPress Google Custom Search plugin. This plugin is a drop in replacement and works with minimum hassle.
10. FeedBurnerCount
A well-optimized and reliable plugin that connects to the FeedBurner Awareness API to retrieve your readers count, that you can print out in plain text.
---
As for me, I have been using Google XML Sitemap and Google Analytics for Wordpress. Might want to try the other plugins when I have the chance to do so. :-)
Tuesday, October 6, 2009
Run your own Ubuntu Enterprise Cloud, part 1
---
Ubuntu Enterprise Cloud is the product, powered by Eucalyptus, that allows you to easily run your own Amazon-EC2-like private cloud. It’s a lot simpler than you’d think. With the recent Ubuntu Server 9.10 beta release, you are now able to easily deploy that infrastructure from the CD installer.
Prerequisites
To deploy a minimal cloud infrastructure, you’ll need at least two dedicated systems. One will hold the cloud controller (clc), the cluster controller (cc), walrus (the S3-like storage service) and the storage controller (sc). This one needs fast disks and a reasonably fast processor. The other system(s) are node controllers (nc) that will actually run the instances. These ones need CPUs with VT extensions, lots of CPU cores, lots of RAM, and fast disks. For both, 64-bit support is highly recommended.
Installing the cloud/cluster controller
Download the 9.10 Server beta ISO. When you boot, select “Ubuntu Enterprise Cloud install”. When asked whether you want a “Cluster” or a “Node” install, select “Cluster”. It will ask two other cloud-specific questions during the course of the install:
1. Name of your cluster: pick any name you want :)
2. List of IP addresses on the LAN that the cloud can allocate to instances:
enter a list of space-separated unused IP addresses on your LAN.
When it reboots, run the following to get the latest eucalyptus package and reboot:
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo reboot
Installing node controllers
The node controller install is even simpler. Just make sure that you are connected to the network on which the cloud/cluster controller is already running. Take the same ISO, select “Ubuntu Enterprise Cloud install”. It should detect the Cluster and preselect “Node” install for you. That’s all.
It is also recommended to update to the latest 9.10 status:
$ sudo apt-get update
$ sudo apt-get upgrade
Connect your node controllers to the cloud
After all nodes are installed, you need to return to the cloud/controller and run the following command to make it “discover” your newly-installed nodes.
$ sudo euca_conf --no-rsync --discover-nodes
Confirm all the nodes it finds, and you are done. To check that your private cloud infrastructure is ready to serve, you need to retrieve admin credentials and run euca-describe-availability-zones command. Run the following on your cloud/cluster controller:
$ sudo euca_conf --get-credentials mycreds.zip
$ unzip mycreds.zip
$ . eucarc
$ euca-describe-availability-zones verbose
This last command returns a description of the capabilities of your cloud cluster, how many instances of each type you could run on it, for example:
AVAILABILITYZONE myowncloud 192.168.1.1
AVAILABILITYZONE |- vm types free / max cpu ram disk
AVAILABILITYZONE |- m1.small 0004 / 0004 1 128 2
AVAILABILITYZONE |- c1.medium 0004 / 0004 1 256 5
AVAILABILITYZONE |- m1.large 0002 / 0002 2 512 10
AVAILABILITYZONE |- m1.xlarge 0002 / 0002 2 1024 20
AVAILABILITYZONE |- c1.xlarge 0001 / 0001 4 2048 20
In part 2 of this series, we’ll cover bundling your first EMI (Eucalyptus Machine Image), based on Ubuntu Server 9.10 Beta. We’ll test it by starting an instance of it. Stay tuned !
---
Monday, September 28, 2009
How to connect iPhone/iPod Touch (Using USB) in Karmic/Jaunty/Intrepid/Hardy
---
How to connect iPhone/iPod Touch (Using USB) in Karmic/Jaunty/Intrepid/Hardy.
If you want iphone/ipod touch in ubuntu easy way is using iFuse program.
iFuse allows you to mount an iPhone or iPod Touch under Linux using the USB cable. You can view and edit the files similar to a normal USB disk drive. iFuse does not require “jailbreaking” or voiding your warranty and works without needing extra software installed on the phone (such as `ssh`).
libiphone is a software library that talks the native Apple USB protocols that the iPhone uses. Unlike other projects, `libiphone` does not depends on using any existing `.dll` or `.so` libraries from Apple.
iFuse is a FUSE filesystem driver which uses `libiphone` to connect to devices without jailbreak. iFuse is using the native Apple “AFC” protocol, over the normal USB cable in order to access the iPhone’s (or iPod Touch’s) media files under Linux.
Once the iPhone is mounted, you can copy on, or copy off any media files that live inside the `/var/root/Media` chroot directory. This includes photographs and music files.
Install iFuse in Ubuntu
First you need to edit the /etc/apt/sources.list file
sudo gedit /etc/apt/sources.list
Add the following lines
For karmic Users
deb http://ppa.launchpad.net/jonabeck/ppa/ubuntu karmic main
deb-src http://ppa.launchpad.net/jonabeck/ppa/ubuntu karmic main
For Jaunty Users
deb http://ppa.launchpad.net/jonabeck/ppa/ubuntu jaunty main
deb-src http://ppa.launchpad.net/jonabeck/ppa/ubuntu jaunty main
For Intrepid Users
deb http://ppa.launchpad.net/jonabeck/ppa/ubuntu intrepid main
deb-src http://ppa.launchpad.net/jonabeck/ppa/ubuntu intrepid main
For Hardy Users
deb http://ppa.launchpad.net/jonabeck/ppa/ubuntu hardy main
deb-src http://ppa.launchpad.net/jonabeck/ppa/ubuntu hardy main
Save and exit the file.
Now install gpg key using the following key
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com F0876AC9
Update source list using the following command
sudo apt-get update
Install ifuse using the following command
sudo apt-get install ifuse
Now you can plug in your ipod Touch or Iphone and it will appear in your desktop.
---
Friday, September 18, 2009
300+ Great Resources for Wordpress
Here's the link: 300+ Resources to Help You Become a WordPress Expert
Enjoy!
Monday, August 24, 2009
Linux Links # 3 - For Newbies
Here I put two more special links for Linux newbies, which I believe to have a lot of information necessary in learning Linux further:
- The Ultimate Linux Newbie Guide
- Linux Foundation - Video
This site has tons of information, such as the background of Linux, how to select a Linux distro, and many other pointers once you have installed and run Linux. I have been trying to achieve this site to capture some of the insights that this link provides, and hopefully we can get there. :-) In the mean time, you can look into the information that they already compiled and learn from it.
This site has all the videos related to Linux, from the guides to install & setup Linux, to spoofs and ads about Linux. Some of the people in The Ultimarte Linux Newbie Guide also put their links in this site, so if you want to see the video how to install Ubuntu for example, you can watch it here.
Enjoy the links. :-)
Thursday, August 6, 2009
5 Excellent Downloadable eBooks To Teach Yourself Linux
---
Free – you ask? Yes, free. Welcome to the world of Linux where things are free both as in free speech and also as in free beer (mostly)!
If you are starting out on your journey towards Linux awesomeness, here are a few free downloadable ebooks to teach yourself Linux that should help you along nicely:
Newbie’s Getting Started Guide to Linux
(Download)
Stefan did a great job in keeping it simple and to the point, the way beginners want it. Also don’t forget to check out our other MakeUseOf Manuals.
Introduction to Linux – A Hands on Guide
(Download)
GNU/Linux Command line tools Summary
(Download)
Ubuntu Pocket Guide and Reference
(Download)
Rute User’s Tutorial and Exposition
(Download)
There is plenty of great material out there if you are trying to learn Linux, similar to these downloadable ebooks to teach yourself everything you ever wanted to know about Linux. If you have read a book or a tutorial that you found particularly useful, feel free to tell us about it in the comments below.
---
Monday, June 1, 2009
10 Unknown but Useful Linux Terminal Commands
---
Before, I have posted here a few basic Linux terminal commands that I think are essential for newbies to know. I've also shared some deadly ones that should be avoided at all costs. This time, I'm going to show you several terminal commands that are perhaps unfamiliar to many new-to-Linux users but could be really handy when used properly.
Here’s a list of 10 rather unknown yet useful Linux terminal commands:
1. Kill a running application by its name:
killall [app_name]
2. Display disk space usage:
df –h
3. Locate the installation directories of a program:
whereis [app]
4. Mount an .iso file:
mount /path/to/file.iso /mnt/cdrom –o loop
5. Record or capture a video of your desktop:
ffmpeg -f x11grab -s wxga -r 25 -i :0.0 -sameq /tmp/out.mpg
6. Find out the Universally Unique Identifier (UUID) of your partitions:
ls /dev/disk/by-uuid/ -alh
7. Show the top ten running processes (sorted by memory usage):
ps aux | sort -nrk 4 | head
8. Make an audible alarm when an IP address goes online:
ping -i 60 -a IP_address
9. Run the last command as root:
sudo !!
10. Make a whole directory tree with one command:
mkdir -p tmp/a/b/c
---
Note: There are some problems on doing number 9 above, so you may want to try it out and let me know.