Data Center is our focus

We help to build, access and manage your datacenter and server rooms

Structure Cabling

We help structure your cabling, Fiber Optic, UTP, STP and Electrical.

Get ready to the #Cloud

Start your Hyper Converged Infrastructure.

Monitor your infrastructures

Monitor your hardware, software, network (ITOM), maintain your ITSM service .

Our Great People

Great team to support happy customers.

Saturday, November 14, 2015

4 KEBUTUHAN NETWORK UNTUK MENDUKUNG IOT

4 network requirements to enable the Internet of Things

The hype surrounding the potential of the Internet of Things shows no sign of subsiding, so how can network managers make it a reality for their business?
‘Consistent connectivity now becomes critical to how effectively these devices will perform’

The Internet of Things (IoT) is morphing from smart concept to reality. Investment bank Goldman Sachs cites it as a $7 trillion opportunity by 2020, with the trend set to have an impact at every stage in the production and distribution of products.
The 'smarts' are now on parade: smart cities with their smart grids and smart transportation systems and smart cars, all demonstrating the benefits of machine-to-machine (M2M) connectivity.
Consistent connectivity now becomes critical to how effectively these devices will perform, and this connectivity relies on having the right network infrastructure in place.
There are four fundamental network requirements to enable businesses to take full advantage of the transformations that IoT will drive.

1. Broaden the horizons of network visibility

The sprawling nature of IoT requires comprehensive management of the entire network, wired and wireless, right to the edge as devices – smart and not so smart – seek access and data transfer to core network components.
This is why the switch is key. All the connected devices and sensors are transmitting data on the network, but sending data from devices straight to the data centre can be inefficient, cause bottlenecks on the network, and impact performance.
An intelligent network needs to extend functionality right to the edge so data can be analysed and processed on the way to the core, or from device to device. To manage the increased flow of IoT traffic, switches at the edge of the network will need to offer enhanced security and integrated analytics.

2. Are you fit for IoT purpose?

It is virtually impossible for a network that has been installed and upgraded on an ad-hoc basis – often with a separate solution for voice, data, wired and wireless – to deliver on the promise of IoT. There are many enterprise IT systems out there that are simply not fit for IoT purpose.
A single converged network is fundamental to an IoT environment and guarantees a greater level of interoperability and support for IoT applications and devices.

3. Smarter feedback for smarter decisions

Predictive analysis and reporting functions are vital in enabling enterprises to use big data to build proactive, data-driven decision-making. Analysis of big data can also provide valuable insight into network operations.
Predictive network analytics tools delivered alongside network management systems provide reporting utilities that offer detailed network performance indicators. This can be as simple as automatically prioritising data traffic, determining whether a new service or application being rolling out will exceed current network capacity, or that every Thursday afternoon the R&D department needs extra bandwidth to support its data heavy processes.

4. Defending dumber devices

Not every device is smart. Poorly secured 'smart' devices such as smart watches and activity trackers pose a threat to essential network security – as do traditional 'dumb' devices such as door locks.
Simply monitoring and controlling the flow of packets to and from IoT devices is not enough to guarantee security. All devices right out to the network edge must be made smarter by the network management and the switches on the network.
IoT offers the chance for enterprises to deliver new applications and support deployments with millions of endpoints by providing real-time insights that help enterprises capture, understand and make more effective use of device data. But it will also bring new challenges and expectations.
The key lies in having one converged network supported by state-of-the-art switches that enable an enterprise to remotely manage, monitor and safeguard all devices, software and data to provide IT departments with in-depth intelligence to make smarter decisions.
- See more at: http://www.information-age.com/technology/mobile-and-networking/123460494/4-network-requirements-enable-internet-things#sthash.qKDLL1eU.dpuf

Friday, November 13, 2015

Dengan PHPRunner, bisa langsung EDIT di aplikasi


Similar to Excel-like grid discussed in previous article this technique helps you to achieve similar goals. Instead of bringing up the whole edit page you can click that single field you need to edit, change its value and see your changes posted to the database automatically.
Click any of fields that are enabled for inline editing. Text will turn into edit control, the way it were setup in PHPRunner, ASPRunnerPro or ASPRunner.NET. To exit editing hit Esc button on your keyboard or click anywhere outside of edit control. Changes will be saved automatically.
To make this happen select one or more fields to be editable inline and add the following code to List page: Javascript OnLoad event.

Code

PHPRunner

  1. $(document).ready(function() {  
  2.   
  3.     var $elem;  
  4.     var key;  
  5.     var field;  
  6.     var val;  
  7.   
  8.     function cancelEditing() {  
  9.         if ($grid.data("editing")) {  
  10.             $elem.html(val);  
  11.             $grid.data("editing"false);  
  12.             $elem.closest("td").css("padding","5px 8px");  
  13.         }  
  14.     };  
  15.   
  16.     $(document).keyup(function(e) {  
  17.         if (e.keyCode == 27) {  
  18.             cancelEditing();  
  19.         }  
  20.     });  
  21.   
  22.     $("span[id^=edit]").attr('title''Click to edit');  
  23.   
  24.         $grid=$(document.body);  
  25.         $grid.on("click"function(e) {  
  26.   
  27.         // click during editing outside of edited element  
  28.         if ($grid.data("editing") &&  
  29.                 !$(e.target).is(":focus")   ) {  
  30.             cancelEditing();  
  31.             return;  
  32.         }  
  33.   
  34.         // click  on one of editable elements?  
  35.         if( $grid.data("editing") ||  
  36.                 !$(e.target).attr("id") ||  
  37.                 !$grid.data("editing") && $(e.target).attr("id").substring(0, 4) != "edit"  
  38.             ) {  
  39.             return;  
  40.         }  
  41.   
  42.         $elem = $(e.target);  
  43.         // enter editing mode  
  44.         val = $elem.html();  
  45.   
  46.         $grid.data("editing"true);  
  47.   
  48.         var id = $elem.parent().attr("data-record-id");  
  49.         var res=$elem.attr("id").match(/[^_]+$/);  
  50.         field = res[0];  
  51.   
  52.         var gridrows = JSON.parse(JSON.stringify(pageObj.controlsMap.gridRows));  
  53.         for (var i = 0; i < gridrows.length; i++) {  
  54.             if (gridrows[i].id==id) {  
  55.                 key=gridrows[i].keys[0];  
  56.                 break;  
  57.             }  
  58.         }  
  59.   
  60.         // prepare request  
  61.         var data = {  
  62.             id: id,  
  63.             editType: "inline",  
  64.             editid1: key,  
  65.             isNeedSettings: true  
  66.         };  
  67.   
  68.         // get edit controls from the server  
  69.         $.ajax({  
  70.         type: "POST",  
  71.         url: "products_edit.php",  
  72.         data: data  
  73.         }).done(    function(jsondata) {  
  74.             var decoded = $(' 
  75. <div>').html(jsondata).text();  
  76.             response = jQuery.parseJSON( decoded );  
  77.   
  78.             // clear error message if any  
  79.             if ($elem.next().attr('class')=="rnr-error")  
  80.                 $elem.next().remove();  
  81.   
  82.             // cmake control as wide as enclosing table cell  
  83.             width = $elem.closest("td").width();  
  84.   
  85.             $elem.html(response.html[field]);  
  86.             if (response.html[field].indexOf("checkbox")<0) {  
  87.                 $elem.find("input,select").width(width-5).focus();  
  88.                 $elem.closest("td").css("padding","1px 1px");  
  89.             }  
  90.   
  91.         });  
  92.   
  93.         });  
  94.   
  95. $grid.data("editing"false);  
  96.   
  97.  // save function  
  98.  $(document.body).on('change','input[id^=value],select[id^=value]',function() {  
  99.   
  100.     var data = {  
  101.         id: 1,  
  102.         editType: "inline",  
  103.         a: "edited",  
  104.         editid1: key  
  105.     };  
  106.   
  107.     var type = $(this).attr('type');  
  108.     if (type)  
  109.         type=type.toLowerCase();  
  110.     else  
  111.         type="text";  
  112.   
  113.     // regular field or check box  
  114.     if (type!="checkbox") {  
  115.         data["value_"+field+"_1"]=$(this).val();  
  116.     } else {  
  117.         if($(this).is(":checked")) {  
  118.             val="on";  
  119.         }  
  120.         data["value_"+field+"_1"]=val;  
  121.         data["type_"+field+"_1"]="checkbox";  
  122.     }  
  123.   
  124.     // clear error message if any  
  125.     if ($(this).next().attr('class')=="rnr-error")  
  126.             $(this).next().remove();  
  127.   
  128.     // save data  
  129.     $.ajax({  
  130.       type: "POST",  
  131.       url: "products_edit.php?submit=1",  
  132.       data: data  
  133.         }).done(    function(jsondata) {  
  134.             var decoded = $(' 
  135. <div>').html(jsondata).text();  
  136.             response = jQuery.parseJSON( decoded );  
  137.             if (response["success"]==false) {  
  138.                 $(" 
  139. <div class="rnr-error/">").insertAfter($elem).html(response["message"]);  
  140.             }  
  141.             else {  
  142.                 $elem.html(response["vals"][field]);  
  143.                 $grid.data("editing"false);  
  144.                 $elem.closest("td").css("padding","5px 8px");  
  145.             }  
  146.         });  
  147.     });  
  148. });  
  149. </div></div></div>  
You will have to modify the Edit page URL accordingly to your project settings. Replace products_edit.phpwith corresponding name of your table i.e. tablename_edit.php.

ASPRunnerPro

Replace products_edit.php with corresponding name of your table i.e. tablename_edit.asp.

ASPRunner.NET

No changes are required. Code goes to List page: Javascript OnLoad event.
  1. $(document).ready(function() {  
  2.   
  3.     var $elem;  
  4.     var key;  
  5.     var field;  
  6.     var val;  
  7.   
  8.     function cancelEditing() {  
  9.         if ($grid.data("editing")) {  
  10.             $elem.html(val);  
  11.             $grid.data("editing"false);  
  12.             $elem.closest("td").css("padding","5px 8px");  
  13.         }  
  14.     };  
  15.   
  16.     $(document).keyup(function(e) {  
  17.         if (e.keyCode == 27) {  
  18.             cancelEditing();  
  19.         }  
  20.     });  
  21.   
  22.     $("span[id^=edit]").attr('title''Click to edit');  
  23.   
  24.         $grid=$(document.body);  
  25.         $grid.on("click"function(e) {  
  26.   
  27.         // click during editing outside of edited element  
  28.         if ($grid.data("editing") &&  
  29.                 !$(e.target).is(":focus")   ) {  
  30.             cancelEditing();  
  31.             return;  
  32.         }  
  33.   
  34.         // click  on one of editable elements?  
  35.         if( $grid.data("editing") ||  
  36.                 !$(e.target).attr("id") ||  
  37.                 !$grid.data("editing") && $(e.target).attr("id").substring(0, 4) != "edit"  
  38.             ) {  
  39.             return;  
  40.         }  
  41.   
  42.         $elem = $(e.target);  
  43.         // enter editing mode  
  44.         val = $elem.html();  
  45.   
  46.         $grid.data("editing"true);  
  47.   
  48.         var id = $elem.parent().attr("data-record-id");  
  49.         var res=$elem.attr("id").match(/[^_]+$/);  
  50.         field = res[0];  
  51.   
  52.         var gridrows = JSON.parse(JSON.stringify(pageObj.controlsMap.gridRows));  
  53.         for (var i = 0; i < gridrows.length; i++) {  
  54.             if (gridrows[i].id==id) {  
  55.                 key=gridrows[i].keys[0];  
  56.                 break;  
  57.             }  
  58.         }  
  59.   
  60.         // prepare request  
  61.         var data = {  
  62.             id: id,  
  63.             editType: "inline",  
  64.             editid1: key,  
  65.             isNeedSettings: true  
  66.         };  
  67.   
  68.         // get edit controls from the server  
  69.         $.ajax({  
  70.         type: "POST",  
  71.         url: "edit",  
  72.         data: data  
  73.         }).done(    function(jsondata) {  
  74.             var decoded = $(' 
  75. <div>').html(jsondata).text();  
  76.             response = jQuery.parseJSON( decoded );  
  77.   
  78.             // clear error message if any  
  79.             if ($elem.next().attr('class')=="rnr-error")  
  80.                 $elem.next().remove();  
  81.   
  82.             // cmake control as wide as enclosing table cell  
  83.             width = $elem.closest("td").width();  
  84.   
  85.             $elem.html(response.html[field]);  
  86.             if (response.html[field].indexOf("checkbox")<0) {  
  87.                 $elem.find("input,select").width(width-5).focus();  
  88.                 $elem.closest("td").css("padding","1px 1px");  
  89.             }  
  90.   
  91.         });  
  92.   
  93.         });  
  94.   
  95. $grid.data("editing"false);  
  96.   
  97.  // save function  
  98.  $(document.body).on('change','input[id^=value],select[id^=value]',function() {  
  99.   
  100.     var data = {  
  101.         id: 1,  
  102.         editType: "inline",  
  103.         a: "edited",  
  104.         editid1: key  
  105.     };  
  106.   
  107.     var type = $(this).attr('type');  
  108.     if (type)  
  109.         type=type.toLowerCase();  
  110.     else  
  111.         type="text";  
  112.   
  113.     // regular field or check box  
  114.     if (type!="checkbox") {  
  115.         data["value_"+field+"_1"]=$(this).val();  
  116.     } else {  
  117.         if($(this).is(":checked")) {  
  118.             val="on";  
  119.         }  
  120.         data["value_"+field+"_1"]=val;  
  121.         data["type_"+field+"_1"]="checkbox";  
  122.     }  
  123.   
  124.     // clear error message if any  
  125.     if ($(this).next().attr('class')=="rnr-error")  
  126.             $(this).next().remove();  
  127.   
  128.     // save data  
  129.     $.ajax({  
  130.       type: "POST",  
  131.       url: "edit?submit=1",  
  132.       data: data  
  133.         }).done(    function(jsondata) {  
  134.             var decoded = $(' 
  135. <div>').html(jsondata).text();  
  136.             response = jQuery.parseJSON( decoded );  
  137.             if (response["success"]==false) {  
  138.                 $(" 
  139. <div class="rnr-error/">").insertAfter($elem).html(response["message"]);  
  140.             }  
  141.             else {  
  142.                 $elem.html(response["vals"][field]);  
  143.                 $grid.data("editing"false);  
  144.                 $elem.closest("td").css("padding","5px 8px");  
  145.             }  
  146.         });  
  147.     });  
  148. });</div></div></div>