The Usability Factor – WordPress vs Drupal
WordPress and Drupal are popular platforms used by individuals and businesses to create websites. The majority of the bloggers and webmasters will choose WordPress as it is simple and easy to use. WordPress has thousands of great features which is easily customized and user-friendly. Drupal provides plenty of features but one needs to create the custom features which is confusing. WordPress encompasses a rich library of Plugins nearly 15000, whereas Drupal provides just over 8000 which is definitely a grade separator. WordPress plugins facilitate the easy modification, customization, and enhancement of a WordPress website. WordPress is constantly releasing new plugins (like Google Publisher, Skype Mobile Switcher, and Gallery Overview) thus adding to the huge repository of plugins. Considering the advantages WordPress offers, InApp is currently developing a Business Consulting website for a Middle East client using WordPress. The main reason being a Classifieds plugin was readily available in WordPress and easily customizable as per the client requirements. Unlike WordPress, Drupal is harder to learn and requires a certain level of technical knowledge. Since WordPress is supported by a massive community, one can easily find answers to questions, whereas Drupal does not possess any large user base or resource. A majority of blog owners and webmasters use WordPress because Google, Yahoo, and Bing are best navigated with WordPress sites. Drupal is for the experienced user, whereas WordPress allows both beginners and advanced users plenty of easy-to-use options. Have questions? Contact the technology experts at InApp to learn more.
Elixir Programming Language – The Smart Programming Language
Lately, a lot of attention has been gathering over Elixir, one of the latest programming languages. What is Elixir? Elixir is a functional, concurrent language built on the Erlang VM with syntax close to the Ruby programming language. Apart from Ruby, Elixir is a language that is inspired by the syntax and concepts of various other languages such as Clojure, Haskell, Python, and even Lisp. What makes Elixir smarter? Elixir’s flexible syntax and macro support for metaprogramming allow one to devise elegant and concise constructs that seem as if they’re an integral part of the language. Metaprogramming helps one remove structural duplication, a situation where two pieces of code share the same abstract pattern, but differ in various details. Elixir works directly with the source code to do smart things. Tests rarely require more than the built-in assert, to display meaningful errors. Single-line functions and multi-line blocks are made equivalent to Elixir. This means one can write a macro that works just like a built-in in both cases. Elixir is implemented with the same tools that are for use, so one can write a macro that works as the language does. With the ready-to-go built-in commands of unit tests, the hassles of learning and writing unit tests are eliminated in Elixir. Currently, InApp is engaged in custom software development using Elixir for a B2B auction company based out of Japan. It will be a challenge to master this cutting-edge technology, taking into consideration all the advantages it offers. The Elixir programming language is authored by stealing useful features from other languages, thus making it easier to write complex applications. It is easier to write more performant code in Elixir simply because of the power available to the user at compile time. Have questions? Contact the technology experts at InApp to learn more.
Do’s & Don’t of JMeter
What is JMeter? JMeter is an open-source Java application designed to load test functional behavior and measure performance. JMeter is an Apache project used by a large open-source community. Being a part of Apache, JMeter has comprehensive protocol coverage and scripting capabilities. What can you do with JMeter? JMeter is used to test performance both on static and dynamic resources such as static files, Java Servlets, CGI scripts, Java objects, databases, FTP servers, and more. JMeter can be used to simulate a heavy load on a server, network, or object to test its strength or to analyze overall performance under different load types. JMeter can run on any environment/platform such as Windows, Linux, Mac, etc. Its multithreading framework is highly extensible and can be used to perform automated and functional testing. When compared to other testing applications, 80% of what is required can be accomplished with a simple, intuitive GUI, and not much scripting is required to achieve that. Since JMeter is backed by such a large community, any use case that comes to mind probably has an answer within JMeter. With JMeter, one can build test scripts that are realistic and accurate. What are the JMeter Limitations? JMeter is not a browser as it does not perform all the actions supported by browsers. To be more precise, it does not execute the JavaScript present in HTML pages nor does it render the HTML page as a browser does. It has limited support for JavaScript, AJAX, and complicated frameworks. Also, the total number of threads (virtual users) generated by the test plan should be less than 300 per engine. One of the major limitations is that everything goes through a single console. Under heavy load, the GUI consumes a lot of memory and the console server alone cannot sustain such a heavy load which leads to out-of-memory and disconnection logs. Have questions? Contact the technology experts at InApp to learn more.
Test Automation with Selenium
Selenium 2 is the newest addition to the Selenium toolkit. This brand-new automation tool provides all sorts of test features, including a more cohesive and object-oriented API as well as an answer to the limitations of the old implementation. Selenium2Library is a popular Robot Framework test library. Selenium2Library runs tests in a real browser instance which works with most modern browsers and is used with both Python and Jython interpreters. Selenium is a set of different software tools each with a different approach to supporting test automation. The entire suite of tools results in a rich set of testing functions specifically geared to the needs of testing web applications of all types. One of Selenium’s key features is the support for executing one’s tests on multiple browser platforms. Selenium is highly flexible as there are many ways one can add functionality to both Selenium test scripts and Selenium’s framework to customize test automation. Since Selenium is Open Source, the source code can always be downloaded and modified. Operations performed are highly flexible, allowing many options for locating UI elements and comparing expected test results against actual application behavior. This is perhaps Selenium’s greatest strength when compared with other automation tools. Have questions? Contact the software testing experts at InApp to learn more.
Sharable Content Object Reference Model (SCORM)
What is the Sharable Content Object Reference Model SCORM? The Sharable Content Object Reference Model (SCORM) is a repository of technical standards and specifications for web-based e-learning. It is an XML-based framework used to define and access information about learning objects, so they can be easily shared among different learning management systems (LMSs). SCORM was developed in response to a United States Department of Defense (DoD) initiative to promote standardization in e-learning. DoD was frustrated by the problems they encountered when trying to share distance learning courses among different learning management systems used within the Department, so in 1997 they formed the Advanced Distributed Learning (ADL) specification group to create a way to make learning content portable across various systems. ADL created the first version of SCORM, which originally stood for the Shareable Courseware Object Reference Model. It was designed to facilitate moving course content and related information (such as student records) from one platform to another, to make course content into modular objects that can be reused in other courses, and to enable any LMS to search others for usable course content. The current official version is 1.2. SCORM specification does not cover all aspects of a learning enterprise; for example, it does not specify how tracking information is stored and what reports are generated, what pedagogical or training models should be used, or how learner information is compiled. Have questions? Contact the technology experts at InApp to learn more.
Java Native Interface (Java JNI)
What is Java Native Interface (Java JNI)? Java JNI is a programming framework that enables the Java native code running in a Java virtual machine to call native applications specific to the operating system and hardware. JNI enables one to write native methods to handle situations when an application cannot be written entirely in the Java programming language. Here I am describing how to do programming with JNI with an example. JNI is difficult, as it involves two languages and runtimes. I shall assume that you are familiar with: Java C/C++ and the GCC Compiler (For Windows) Gygwin or MinGW. (For IDE) Eclipse C/C++ Development Tool (CDT) Here, I am giving an example of C programming language. Step 1: Write a Java class that uses native methods public class HelloJNI { static { System.loadLibrary(“hello”); /* hello.dll (Windows) or libhello.so (Unixes)*/ } /* A native method that receives nothing and returns void*/ private native void sayHello(); public static void main(String[] args) { /* invoke the native method*/ new HelloJNI().sayHello(); } } Here we can see a static block, which will load the library hello.dll in Windows and libhello.so in unix systems during the class loading. The library should be available in the java’s library path otherwise it will throw UnsatisfiedLinkError. You can include the library in Java’s library path via VM argument, -Djava.library.path=path_to_lib. Next, we declare the method sayHello() as a native instance method, via the keyword native, which denotes that this method is implemented in another language. A native method does not contain a body. The sayHello() is contained in the native library loaded. The main() method allocates an instance of HelloJNI and invokes the native method sayHello(). Step 2: Compile the java file javac HelloJNI.java This will create HelloJNI.class file. Step 3: Create the C/Header file – HelloJNI.h Using javah utility, we can create header file for the corresponding HelloJNI class. javah HelloJNI It will generate the following file HelloJNI.h /* DO NOT EDIT THIS FILE – it is machine generated */ #include <jni.h> /* Header for class HelloJNI */ #ifndef _Included_HelloJNI #define _Included_HelloJNI #ifdef __cplusplus extern “C” { #endif /* * Class: HelloJNI * Method: sayHello * Signature: ()V */ JNIEXPORT void JNICALL Java_HelloJNI_sayHello (JNIEnv *, jobject); #ifdef __cplusplus } #endif #endif Here, it defines a C function Java_HelloJNI_sayHello as follows JNIEXPORT void JNICALL Java_HelloJNI_sayHello(JNIEnv *, jobject); The naming convention for C function is Java_{package_and_classname}_{function_name}(JNI arguments). The dot in package name shall be replaced by underscore. The arguments: JNIEnv*: reference to JNI environment, which lets you access all the JNI fucntions. jobject:reference to “this” Java object The extern “C” is recognized by C++ compiler only. It notifies the C++ compiler that these functions are to be compiled using C’s function naming protocol (instead of C++ naming protocol). C and C++ have different function naming protocols as C++ support function overloading and uses a name mangling scheme to differentiate the overloaded functions. Step 4: C Implementation – HelloJNI.c #include <jni.h> #include <stdio.h> #include “HelloJNI.h” JNIEXPORT void JNICALL Java_HelloJNI_sayHello(JNIEnv *env, jobject thisObj) { printf(“Hello World!\n”); return; } save this file as “HelloJNI.c”. The header “jni.h” is available under the “JAVA_HOME>\include” and “<JAVA_HOME>\include\win32″ directories, where <JAVA_HOME> is your JDK installed directory (e.g., “c:\program files\java\jdk1.7.0″). The C function will print “Hello World” in the console. Compile this program depends on the C compiler you use. gcc -Wl,–add-stdcall-alias -I”<JAVA_HOME>\include” -I”<JAVA_HOME>\include\win32″ -shared -o hello.dll HelloJNI.c The compiler options used are: -Wl: The -Wl to pass linker option –add-stdcall-alias to prevent UnsatisfiedLinkError (symbols with a stdcall suffix (@nn) will be exported as-is and also with the suffix stripped). (Some people suggested to use -Wl,–kill-at.) -I: for specifying the header files directories. In this case “jni.h” (in “<JAVA_HOME>\include”) and “jni_md.h” (in “<JAVA_HOME>\include\win32″), where <JAVA_HOME> denotes the JDK installed directory. Enclosed the directory in double quotes if it contains spaces. -shared: to generate share library. -o: for setting the output filename “hello.dll”. You can also compile and link in two steps: // Compile-only with -c flag. Output is HElloJNI.o > gcc -c -I”<JAVA_HOME>\include” -I”<JAVA_HOME>\include\win32″ HelloJNI.c // Link into shared library “hello.dll” > gcc -Wl,–add-stdcall-alias -shared -o hello.dll HelloJNI.o Step 5:Run the Java Program java HelloJNI or java -Djava.library.path=. HelloJNI You may need to specify the library path of the “hello.dll” via VM option -Djava.library.path=<path_to_lib>, as shown above. Have questions? Contact the technology experts at InApp to learn more.
Exposure in Image and Video Processing
Video and image processing enables us to acquire, process, and analyze images and video data for data visualization and manipulation. We have explored the following open-source API for video and image manipulation: OpenCV: OpenCV (Open Source Computer Vision Library) is mainly focused on real-time image processing applications. It supports Windows, Linux, Mac OS, iOS, and Android and has been written in optimized C/C++. FFMPEG: FFmpeg is a command-line tool to convert multimedia files between formats. This is mainly used to decode, encode, transcode, stream, filter, and play the media file. It runs on the following platforms: Windows, Linux, Mac OS, iOS, and Android. Xuggler: Xuggler is a Java library that allows the decoding and encoding of a variety of media file formats. It supports Windows XP or later, 32 or 64-bit versions, Linux using libc version 6, 32 or 64-bit (i.e. Ubuntu 11.10 and later), Mac OS X 10.7 32 or 64-bit. JMTF: The Java Motion Tracking Framework is a modular framework for detecting and tracking motion in prerecorded sequences of frames. It is pure java and therefore requires no other native libraries. JMF: The Java Media Framework API is used for capture, playback, streaming, and transcoding multiple media formats, and extends the Java 2 Platform, Standard Edition (J2SE) for multimedia developers by providing a powerful toolkit to develop scalable, cross-platform technology. Java with JMF can be used to implement a motion detection Some of our projects have featured video processing functionalities like: Frame Extraction: Extract the frames from the video with respect to the frame rate. Video Trimming: Trim the video with a specific duration. Audio extraction: Using the FFmpeg library we can extract the audio channels from a video file Video generation: Generating video from the sequence of frames. Video Shake Reduction: We can reduce the shake in the video by calculating the optical flow. Optical flow is the relative motion between two images. Further, we have undertaken projects that involved image processing functionalities like: Background subtraction: Helps to differentiate between the background and foreground of the image. Object Extraction: This is the process of identifying and extracting the object from the image. SURF: SURF stands for “Speeded Up Robust Features” for detecting the local feature from an image. Face recognition: Recognize the human face from the image. Edge detection: Detect the edge of the image primarily for identifying an object Overlaying: Overlay the two images with transparency property, useful for creating strobe images Stroboscope: Stroboscope is the representation of a series of shots from a continuous motion of a moving object and is obtained by stitching together the strobe images obtained from a video. Insert text/image: Text and images can be overlayed and is useful for animating the image or video. Have questions? Contact the technology experts at InApp to learn more.
Cloud Testing – Nuts & Bolts
Need for Cloud Testing – Issues and Challenges Traditional testing has limitations like latency, performance, concurrency, and planning issues and is way too expensive. Cloud testing is a big game changer and surpasses the challenges faced by traditional testing. It can be used to provide a flexible, scalable, and affordable testing environment at all times or on demand. Cloud testing typically involves monitoring and reporting on real-world user traffic conditions as well as load balance and stress testing for a range of simulated usage conditions. The availability of virtual machines eases the process of setting up, using, reusing, and running test setups. Complex test setups are available as stacked templates, making it easy to integrate complex automation into various processes to build complex cloud testing systems. Cloud testing is a great fit for an agile environment. It can leverage the whole life cycle of web or mobile app development, right from the beginning of development until the application is in production. Today, if you need to generate thousands of virtual users to test a specific web application then the number of servers required for that test can be deployed within a couple of minutes. Best of all, you only need to pay those servers for the duration of the test thus making it more economical and viable. Cloud testing is flexible enough that it can be used for continuous performance testing. Test maker runs tests in multiple cloud testing environments making it possible to manage performance from different geographical locations. Tester gets a real-time testing experience of applications on browsers and OS rather than simulated environments. Cloud testing eliminates the cost of building and maintaining a test lab for load and performance testing. If a specific test environment is required, just use it via the cloud. There is no need to provision expensive and difficult-to-manage quality test labs. Cloud-based testing poses different operational challenges in the real-world scenario. One of the major challenges would be creating an on-demand test environment. The current cloud technology does not have any supporting solutions that will help cloud engineers build a cost-effective cloud test environment. For scalability and performance testing, the current framework and solutions do not support the features such as dynamic scalability, scalable testing environments, SLA-based requirements, and cost models. Testing security is yet another concern inside clouds as security services become a necessary part of modern cloud technology. Engineers must deal with issues and challenges in security validation and quality assurance for SaaS (Software as a Service) and clouds. Integration testing in the cloud may not be performed due to lack of time or additional integration cost which subsequently affects the performance of the application. Cloud testing is under constant evolution, continuously bringing in new opportunities and challenges. It reduces the need for hardware and software resources and offers a flexible and efficient alternative to traditional testing. Finally, moving testing to the cloud is seen as a safe bet as it does not include sensitive corporate data and has minimal impact on the organization’s business activities. Migration of self-testing to the cloud would bring about a notion of test support as-a-service. Have questions? Contact the cloud testing experts at InApp to learn more.
SQL Server login failed for user sa | Reason: The account is disabled (error 18470 sql server)
SQL Server login failed for user. Reason: The account is disabled (Microsoft SQL Server, Error: 18470)
Again Java Is The World’s No.1 Programming Language
Java has reclaimed the No.1 spot of the TIOBE Index, ending C’s four-month stay at the top of the programming rankings. The TIOBE Programming Community Index is an indicator of the popularity of programming languages. The index is updated once a month. The ratings are based on the number of skilled engineers worldwide, courses, and third-party vendors. Popular search engines such as Google, Bing, Yahoo!, Wikipedia, Amazon, YouTube, and Baidu are used to calculate the ratings. Observe that the TIOBE index is not about the best programming language or the language in which most lines of code have been written. The biggest casualties from this rethink are C and Objective C. While both only fell one spot in the rankings (C to 2nd, Objective to 4th), they lost 1.65% and -2.17% of the total share respectively. The winners from August’s changes include Google’s garbage collecting language Go (up 16 places to 26th) visual dataflow dialect LabVIEW (from 100 to 49) and business application language OpenEdge ABL (from 129 to 57). Fellow JVM languages Scala (37) and Groovy (44) remain in the Top 50. Very Long Term History To see the bigger picture, please find the positions of the top 10 programming languages from 5, 15, and 25 years ago in the table below. Have questions? Contact the technology experts at InApp to learn more.