Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x

Scripting Languages

26K

Solutions

20K

Contributors

A scripting language is a programming language that supports scripts, programs written for a special run-time environment that automate the execution of tasks that could alternatively be executed one-by-one by a human operator. Scripting languages are often interpreted (rather than compiled). Primitives are usually the elementary tasks or API calls, and the language allows them to be combined into more complex programs. Environments that can be automated through scripting include software applications, web pages within a web browser, the shells of operating systems (OS), embedded systems, as well as numerous games. A scripting language can be viewed as a domain-specific language for a particular environment; in the case of scripting an application, this is also known as an extension language.

Share tech news, updates, or what's on your mind.

Sign up to Post

Originally, this post was published on Monitis Blog, you can check it here.



In business circles, we sometimes hear that today is the “age of the customer.” And so it is. Thanks to the enormous advances over the past few years in consumer technologies such as mobile and social media, customers are the ones who “shop with their voice” so to speak. The world of blog, forums, and numerous other social media channels over the past decade have provided consumers with unheard of power to determine their choice of products, brands, and services. Because of this power customer expectations have also gone through the roof. Continuing advances in technology, along with the “consumerization of IT,” has meant that companies are now expected to offer real-time, 24/7 service to meet the demands of mobile savvy customers.

 

Today, it’s all about meeting the customer needs and getting them to buy your products. And in order to do so, companies need to ensure their applications and websites are in tip-top shape. Customers simply will not have any patience for a website or application that is error prone or buggy or one that takes forever to load. This is why website performance and application monitoring is so central to your business strategy.

 

We talk about this subject a lot because it’s really so critical to the bottom-line of a business. And it’s even becoming more incumbent today as the demands of new technologies like the Internet of Things and wearables mean that customers are interacting with companies and their products through more endpoints than ever before. All of these channels require performance monitoring to ensure that things run as efficiently and optimally as possible. At the end of the day, web performance is really about keeping the customers happy.

 

In what follows, we want to do a reality check by discussing 7 “sure fire” ways to improve your web performance and make sure your customers keep coming back. After all, your business ROI really depends on it!

 

1. Keep Things Fast!

 

Research shows a clear relationship between web load speed and customer conversions. The faster a page loads the more likely customers will be to visit and do business on your site. The inverse is also true. The slower a page the less likely customers will be willing to wait around and engage with your brand. While this seems fairly straightforward, it’s surprising how few business owners really get the importance of website performance and the role it plays in their business strategy. It might be nice to have a trendy looking website, but if it takes 10 seconds to load visitors won’t hang around long enough to appreciate all the bells and whistles anyway.

 

 

2. Make Your Central Message Crystal Clear

 

From the moment visitors hit your page you want to give them a clear reason for why they should stick around. To do this you need to deliver your central message as quickly, clearly, and convincingly as possible. Don’t make your home page so convoluted that folks don’t know what action to take. Use large font, go generous on the content, and create clear pathways to the channels they need to purchase your product . . . period, end of story.


3. Give Visitors a Reason to Return

 

So you’ve got some visitors, now what? Well, that’s only half the battle. Studies show that most will not purchase on the first visit. So you need to give visitors a solid reason to return to your website. Do this by providing them with something useful, something they can’t refuse. Provide practical articles, a regularly updated blog, a newsfeed, or other user-generated content . . . anything that will engage your visitors and provide them with something of value.

 

4. Check Your Web Hosting

 

When reviewing web performance one of the first things to check is your web hosting service. It’s surprising how many times this gets overlooked. Even though your provider may offer you unlimited bandwidth, does that mean shared service with other sites that end up affecting your own web performance? Are you frequently experiencing downtime or bandwidth issues? If so, it’s worthwhile to review your hosting options to ensure you’re getting the most efficient service. Don’t be afraid to insist on 99.99% uptime.

 

5. Use Web Analytics & Gather Metrics

 

To some, this sounds like a well-worn cliché by now, but it needs to be drilled in more and more. If you’re not tracking the behavior of your visitors with metrics then you’re leaving money on the table. There are many web analytics tools on the market today that can help you closely monitor your customer’s online behaviors. The ability to track a single customer across your site and across multiple devices will ensure that you can tailor your brand to their needs. For instance, you want to learn more about when and where they’re visiting from, what devices they’re using, what are their online activities, and other key demographics such as age. Gaining these insights will help your organization better understand what’s important to your visitors and how to personalize their experience.

 

6. Take It Easy on Design ‘Best Practices’

 

Increasing the size of your website images, third-party scripts, and style sheets come with a heavy price and can adversely affect performance. This is especially true in the world of mobile. Over 50% of all time consumers spend on retails site is on mobile devices and more than 50% of consumers multiscreen during the purchasing. According to this slide deck, some of the worst practices are web pages that are initially blank and then populate, pages where the call to action is the last thing to render, popups that block the rest of the page, and designing and testing in a way that the user experience is completely overlooked.

 

7. Adopt Cloud-Based Website Monitoring

 

There are significant advantages to offloading your website monitoring to a cloud-based host – cost, scalability, efficiency, to name a few. Not to mention, this frees you up to focus on growing your business, which matters the most anyway.

 

If you’d like to get onboard with the latest in cloud-based monitoring then you should try a 24/7 monitoring service like Monitis. With its first-class global service, Monitis allows organizations to monitor their network anytime and from anywhere. For instance, with Monitis you can load test your website to determine at what point it starts creating traffic issues. They’ll also send you timely alerts by every possible means (live phone messages, text, email, Twitter, etc.) to keep you apprised about your site performance. If your web hosting services go down then Monitis will be first to let you know.

 

When it comes to monitoring your website, you don’t want to shortchange yourself. Get the peace of mind you deserve by entrusting your business to a proven industry leader. Go to Monitis and sign up for a free trial today and let them help boost your bottom-line. You’ll be glad you did!

0
Monthly Recap
Monthly Recap

May was a big month for new releases from Linux Academy! Take a look at what our team built recently in our blog. You can access the newest releases from our blog.

GetTickCount64
The Windows functions GetTickCount and timeGetTime retrieve the number of milliseconds since the system was started. However, the value is stored in a DWORD, which means that it wraps around to zero every 49.7 days. This article shows how to solve that problem by using the GetTickCount64 function.
1
A quick Powershell script I wrote to find old program installations and check versions of a specific file across the network.
1
 
LVL 8

Expert Comment

by:Senior IT System Engineer
Comment Utility
Does the user will notice any performance issue when the scanning is running ?
0
 
LVL 9

Author Comment

by:Frank McCourry
Comment Utility
Performance degradation is relative only to the number of paths and at what level you enter that path.  It is the equivalent of performing a non-indexed search on the users computer.  If you keep the search path narrow, the user will probably not even notice.  If you start at the root, I guarantee that your phone will ring.  

This script was designed to find a specific file in specific locations, thereby limiting the amount of hard drive activity it causes on the end users computer.  I run this once a month or so and have had no complaints.
0
EE Question ID
In threads here at EE, each comment has a unique Identifier (ID). It is easy to get the full path for an ID via the right-click context menu. However, we often want to post a short link within a thread rather than the full link. This article shows a technique for doing this with a single keystroke.
4
 
LVL 12

Expert Comment

by:Andrew Leniart
Comment Utility
Thank you for the clarification Joe.
I'm glad that you were able to understand my examples.
It's actually quite an accomplishment on you part! I guess you could say I'm "programmatically challenged". Whenever I try to understand sample code, all those commands and squiggly } lines start to make the whole page go blurry on me lol..  Your comments beside the commands make it very easy to follow indeed.  Will definitely be checking out your other AutoHotkey articles so thanks for the links.

Best..
0
 
LVL 55

Author Comment

by:Joe Winograd, EE MVE 2015&2016
Comment Utility
Andrew,
Thanks again for the comments. It's extremely helpful for authors to get feedback like that from readers. Regards, Joe
0
Active Directory replication delay is the cause to many problems.  Here is a super easy script to force Active Directory replication to all sites with by using an elevated PowerShell command prompt, and a tool to verify your changes.
2
This article will show, step by step, how to integrate R code into a R Sweave document
3
RStudio-Ball
This article is meant to give a basic understanding of how to use R Sweave as a way to merge LaTeX and R code seamlessly into one presentable document.
3
Introduction
This question got me thinking...

Why shouldn't we use Globals?
This is a simple question without a simple answer.  How do you explain these concepts to a programmer who is coming from a background in procedural programming? 

There is a lot of deep background thinking that you need to understand in order to know why globals are considered to be a poor design choice today.  Singletons are just as bad as globals in many ways.  Often procedural programmers have looked at the global keyword as an expedient solution - a global declaration made inside your functions provided a simple reference to an external database connection.  Tightly-coupled code sets were the norm in programming just a few years ago, and the global keyword implemented tight coupling in a way that irrevocably bound certain objects into the fabric of the application.   If you're working alone on a standalone project, you can sometimes get away with using global objects, but if you want to come into the modern world of application design, and especially if you want to collaborate on anything important, you need to understand why global elements are considered harmful, and what the alternatives offer.

Global Variables Break Encapsulation
2
 
LVL 111

Author Comment

by:Ray Paseur
Comment Utility
I may have to sign off on this because I'm not following the part about passing an object three levels deep.  It looks like the $db variable is injected into the constructor of the Contact class and used in its methods.  That seems fine to me.  The granularity level for testing is the Contact class, since the $db is the same throughout all the methods.

A "config" class sounds like a singleton to me - similar to a global, but I would have to read the code that sets it up and uses it.  Maybe a consulting agreement would make sense here?
0
 
LVL 32

Expert Comment

by:DrDamnit
Comment Utility
No, I'm satisfied with getConfig(). I was just trying to understand if there was a better way. But your feedback is appreciated.
0
There is a huge demand for CodeIgniter among the PHP web developers due to its dynamic features and benefits these days. It is one of most popular and agile open source PHP framework for creating robust web applications in PHP web development field. 

​Any web applications developed based on CodeIgniter framework perform effectively and rapidly. It helps the programmers to build dynamic and custom web applications with an advanced technology platform by offering valuable set of aspects to write code from scratch.

Let us look out some of benefits and features of CodeIgniter.



codeigniter-features.png

Key features

Model-View-Controller Based System

CodeIgniter make use of the MVC system to find complex models and helps you to create application easily by using controllers and views. It assists the developer to build core libraries for the system and enables you to integrate your own existing scripts with database.

Error Handling

It offers simple user-friendly interfaces that help you to detect error functions throughout the application globally. In this way of approach, it provides instructions to error logging class that allows debugging messages to be saved as text files. It displays all PHP errors in your web application without missing inadequacy.

Form Validation

This feature helps you to write the code in a single line by using effective validation framework system. It generates codes without any errors and ensures …
0
RStudio-Ball
If you haven’t already, I encourage you to read the first article in my series to gain a basic foundation of R and R Studio.  You will also find the links for downloading the programs there as well.
 
To begin, I want to mention a bit about the “packages” found in R.  The incredible thing about R is that is a dynamically evolving language that gains functionality on a daily basis.  Packages allow for anyone to compile functions and data sets together in one convenient bundle to extend to the base system functionality of R.  There are two main repositories that host packages, CRAN and bioconductor.  At the time of writing this article there are more than 9,000 individual packages available for use with R.
 
A majority of the packages will be installed from CRAN, so I will highlight the steps to install and load packages hosted there.  The first thing you will need to do is to install the package, as an example we will install the ggplot2 (one of R’s most popular graphing packages).   Once you have the package installed, you must then load it.  The code is as follows:
 
install.packages("ggplot2")
library("ggplot2")

Open in new window


Alternatively, utilizing R Studio, you can click the Packages tab in the bottom right window, click install, and enter ggplot2 in the Packages field (seen below):

Screen-Shot-2015-07-21-at-12.05.38-PM.pnScreen-Shot-2015-07-21-at-12.11.37-PM.pnWe will be using multiple different packages in this series but I will notify you which ones you need before I expect you to use them, just always remember to load the packages after you install it!
 

Concept 1: Objects
3
 
LVL 66

Expert Comment

by:Jim Horn
Comment Utility
Looks thorough, will have to explore this.  Voted Yes.
0
 
LVL 52

Expert Comment

by:Vitor Montalvão
Comment Utility
Nice article, Matthew.
I'm also a R enthusiastic and a self learner.
Just want to call your attention for the link to the next article. You didn't want to add it here in this article or it was on purpose?
0
A new era in Cloud training has arrived.
A new era in Cloud training has arrived.

A day that will go down in Cloud history.. But are you ready for it? Will you accept this Cloud challenge?

Introduction:
Recently, I got a requirement to zip all files individually with batch file script in Windows OS. I don't know much about scripting, but I searched Google and found a lot of examples and websites to complete my task. Finally, I was able to create the below script to complete my task. I have modified the original script as per my requirement & give credit to the creator of this script ( Anonymous ).

For Original script click here...
 
Below is the modified script:
@echo off

Title autozip.bat

REM updated 30/07/2015
REM created by: Anonymous
REM modified by: Yashwant Vishwakarma

REM This script compresses files in a folder Note: files with the same name 
REM but with different extensions will be in the same archive.

path=%path%;"c:\program files\winrar"

REM ****************** Folder to compress******************
set dir=C:\testzip
REM *******************************************************

REM change to directory
cd %dir%

echo Folder to compress in *.RAR format:
echo %dir%

echo Compressing files started....

REM Compress files in directory individually without subdirectories

echo.
FOR %%i IN (*.*) do (
rar a "%%~ni" "%%i"
)
goto eof

Open in new window

For more commands and syntax follow winrar command line help online

In the original batch file script, there were 7 options which required manual intervention to choose and perform tasks. However, I want to completely automate this task so I modified it and its working absolutely fine for me.

Coding Explanation:
Table.pngReferences: 

Conclusion:
This is what I did with a given script, so I wanted to share my learning and experience with you. I hope it will help someone also when this type of requirement will come.

Keep smiling, rising, shining & stay blessed.
                                                                 forefinger-down-512.png****Kindly vote this if you liked this article by clicking on the 'Vote' button & leave your precious comment !!! *****
 
7
 
LVL 7

Author Comment

by:Yashwant Vishwakarma
Comment Utility
Thank You bfuchs :)
Have a great day ahead :)
Keep smiling n shining always :)
Stay blessed :)
0
RStudio-Ball
Having just graduated from college and entered the workforce, I don’t find myself always using the tools and programs I grew accustomed to over the past four years. However, there is one program I continually find myself reverting back to…R.
 
So what is R? R is a programming language and environment with an ever-growing bucket of tools for statistical processing and graphic creation. According to the R-project website, R includes
  • an effective data handling and storage facility,
  • a suite of operators for calculations on arrays, in particular matrices,
  • a large, coherent, integrated collection of intermediate tools for data analysis,
  • graphical facilities for data analysis and display either on-screen or on hardcopy, and
  • a well-developed, simple and effective programming language which includes conditionals, loops, user-defined recursive functions and input and output facilities.
 
Sure, graduating with a minor in Statistics and my love for data manipulation may make me partially biased with using R but I feel like its uses are incredibly wide-reaching. The great thing about R is it allows the user to perform simple arithmetic calculations with matrices or dive in deeper and create complex graphs or even create dynamic reports to incorporate LaTeX.
 
Another incredible feature is you have an overwhelming amount of “packages” at your disposal to increase …
12
 
LVL 66

Expert Comment

by:Jim Horn
Comment Utility
Hi Matthew

Very well written introduction article, voting Yes.

I'm currently in Seattle attending PASS Summit 2015, and in the keynote they're doing a big demo of SQL Server 2016 features, which include built-in R language and real-time data analytics on data flowing from OLTP systems.  So if anything there may be opportunity for you to write a sequel (no pun intended) article on R programming in SQL Server 2016.

Thanks.
Jim
0
 
LVL 51

Expert Comment

by:Mark Wills
Comment Utility
Will second that request...

Microsoft bought Revolution Analytics : http://blogs.technet.com/b/machinelearning/archive/2015/04/06/microsoft-closes-acquisition-of-revolution-analytics.aspx specifically for incorporating analytics on big data. But also means that having incorporated R and the RODBC drivers as well.

Here is an interesting look at how SQL and R can co-exist quite happily via  RODBC (an article written about the same time as acquisition was finalised) : https://www.simple-talk.com/sql/reporting-services/making-data-analytics-simpler-sql-server-and-r/

So, maybe something along those lines ? I am sure Jim or Me (plus others) can assist.
0
Introduction
Here is an interesting hierarchy of learning.  Let's identify four groups.
  • Neophyte
  • Inquirer
  • Competent
  • Expert
Consider, if you will, the different nature of learning in each of these groups. We could take almost any subject, but let's use German language, and compare it to software development. Natural languages are close enough to programming languages for the analogy to stand.

Neophyte
When you enter German 101, you start with the most basic rules of grammar and pronunciation. You learn that plurals end in "en." Your learning is nearly 100% rules-guided, and built up with rote practice. You memorize the alphabet. You need to be told what to do and say. 

In software development, when you're a novice, you're just learning the rules of syntax and the basic structure of program flow. An introductory tutorial is helpful. You may not understand the expressive power of the language yet. You begin reading the language reference.

Questions at this level need straightforward, prescriptive answers.

Inquirer
By the time you're far enough along to be called an Inquirer, you're able to read and understand common German phrases and you're picking up a few idioms. You can ask simple questions in German. Your learning is still …
10
 
LVL 2

Expert Comment

by:Christopher Rourke
Comment Utility
Excellent article Ray.
0
WordPress.com goes down
First things first, I say this in many of my articles, but in this one you can take it as fact. I am not in any way an expert when it comes to WordPress. I am strictly a user. I don't know the programming languages involved, and although I could probably glean what is going on from the code, I have never done so.

For many years I did work as a website developer. I did a lot of coding (pre-CSS) in HTML (that is kind of like saying you write programs in DOS -- it means next to nothing, except possibly that you have just dated yourself). Because of this I do have a little bit of a handle on how things work, but obviously not enough. I will admit up front that I did what I tell everyone I work with not to do, under any circumstances, change things directly in your production environment - but I will get back to that.

For a couple of months my blog was down. I take complete responsibility. I was adding plugins, everything was working fine until I logged out and couldn't log back in. I think it had something to do with the functions.php file I edited (I never should have done that, but I am a great Monday morning quarterback ...). During a plugin install, it was suggested that I add a line to this file. Everything seemed to be working fine after the edits so I logged out (I have a feeling that I edited the wrong functions.php file, there are so many ...).

I am a computer analyst as my day job and specialize in computer security
2
With the withdrawal of support for Windows Server 2003 this summer, many clients face the issue of moving away from their 2003 installs. There are a few options out there that many people/companies are selling. But the clients I have, haven't wanted to spend a lot or tip their toes into newer tech (such as Azure). So based on those projects here is my step by step guide to take a Windows Server 2003 File Share server, backup the data using Robocopy, rebuild the same physical server with Windows Server 2008 R2 and again using Robocopy, more the data and more importantly the file permissions back.
 

What you will need


  1. Somewhere to store the files that need to be migrated. The last few times I have run a project like this I used a 6TB External WD Drive
  2. Licenses. The client needs to have the correct Windows Server licenses in place
  3. Hardware that the client is happy to run the 2008 R2 servers on. The last few times I did this, the hardware was new enough that I was able to re-use the same hardware
  4. Robocopy - The beauty of Robocopy is that you can copy the existing file shares from the server and preserve the file permissions. You can run it multiple times and each time Robocopy will copy the files it missed the last time (great if running the task in hours)
 

Recommendations

I would highly recommend planning, even the smallest of migrations. You need to consider:

  1. Hardware
  2. Software
  3. Licenses
  4. RAID Configurations
  5. How the logical drives should be made up
 

Short task list:


  1. Plan
  2. Plan
  3. PLAN
5

What is Node.js?

Node.js is a server side scripting language much like PHP or ASP but is used to implement the complete package of HTTP webserver and application framework. The difference is that Node.js’s execution engine is asynchronous and event driven, which throws a whole new light on the way a server side app performs. As Node.js is the complete package (web HTTP server and server side language), there is dramatically less overhead in implementing it as a webserver when compared with a typical Apache (and PHP) or IIS (with ASP/PHP) installation.

Node.js is written in JavaScript, the most common client-side language around. This reduces the learning curve somewhat for most web developers as they understand JavaScript and how to code it.
 

Why is it Important and what are the Benefits?

Most of the server side languages I’ve used are built on sequential execution models, meaning one task has to finish before another one begins. For instance, PHP (in conjunction with the type of server it is running off e.g. Apache) will spawn a thread for each request made to the server. If that thread needs to get data from a database that takes a while or another request comes in, that thread is locked up and consuming resources. For a data intensive app with many concurrent connections, that could severly impede the server’s performance.

Node.js is single threaded (yes only one thread!) and is beneficial in applications where frequent blocking I/O requests
9
Introduction
This article is about a PHP programming practice that can help reduce errors and improve the readability of your PHP programs.  It’s nothing revolutionary — just a new way of looking at one of the problems that has been a part of PHP since the beginning.  Before we jump into the code, let’s start with a little background and context.

Why We Use Programming Languages
Programming languages exist for one purpose and one purpose only: to help you write good programs.  Good programs are those that are bug-free, functional, easy to use, easy to read and understand, and that meet the client’s requirements, preferably in a way that delights the client.  Not-so-good programs are those that fail to measure up in some way, and they are the vast majority of all programs ever written.  Obviously every programming language is a human creation and so each language has its good parts and its bad parts, according to choices made by the language developers at the time they designed the software.  In the case of modern programming languages, the time of design may have been quite a long time ago.  Some of the assumptions of that day may no longer apply today.  And it follows that some of the original design assumptions no longer help us write good programs.  They can even hinder our efforts.

Design Choices
Before we go into our design for a PHP programming practice let’s look at one of those long-ago design choices that made sense at the time, and …
5
 

Expert Comment

by:calslim
Comment Utility
Great article!

I have long used/advocated this design pattern. But I also picked up a few tips:

  • use of magic __get()
  • PHP_EOL trick
  • $object_vars = get_object_vars($this) for acceptable params


As you wrote, there are a number of next steps; such as sanitizing $_GET. I think a good addition to this write-up would be to introduce dependency injection. Move reference to $_GET out of the constructor and make it a parameter of the constructor instead, thus decoupling the code and making it more reusable and testable:

Class RequestArguments
{
    // THE CANONICAL LIST OF ACCEPTABLE REQUEST PARAMETERS
    public $user, $id, $group, $year, $month, $size, $color;

    public function __construct($getInstance)
    {
        $object_vars = get_object_vars($this);
        foreach ($getInstance as $property => $value)
        {
            if (array_key_exists($property, $object_vars)) $this->$property = $value;
        }
        return $this;
    }
}

$getInstance = $_GET; // maybe you want to sanitize at this point or whatever else

$requestInstance = new RequestArguments($getInstance)

Open in new window


Looking forward to reading more from you!
1
 
LVL 111

Author Comment

by:Ray Paseur
Comment Utility
@calslim: thanks for your notes.  Dependency injection seems to be something that takes a bit more than a single article to explain.  Here are the two where I have unwrapped the topic.  Sadly, E-E seems uniquely unable to provide a search function that can lead its users to the Articles on the web site.

https://www.experts-exchange.com/articles/18210/Software-Design-Dependencies.html

https://www.experts-exchange.com/articles/19999/PHP-Design-Avoiding-Globals-with-Dependency-Injection.html

I am optimistic that one day E-E will be able to help users find articles when they ask topically related questions, but we have been waiting for this "super power" since 2007 with no response from the corporate office.  Maybe there will be progress one day.
1
How to remove superseded packages in windows w60 or w61 installation media (.wim) or online system to prevent unnecessary space.

w60 means Windows Vista or Windows Server 2008.
w61 means Windows 7 or Windows Server 2008 R2.

There are various guides found on the internet on how-to integrate updates into Windows installation media using dism.
This article is a post-integrate how-to to this numerous articles.
This article is addressed to users, who are comfortable using dism to mount, update, manage and unmount Windows Image files for deployment of Windows Systems.
So mounting and dismounting images is intentionally left out.

Problem:
Administrators often include windows update packages into their deployment images to save time when deploying.
In Windows 8 dism.exe has built-in command-line extensions to remove superseded updates from Windows 8 image files.
Earlier versions of Windows do not have this feature.
So when you integrate packages into a windows installation media (w60 or w61), superseded or outdated packages reside in the deployment image and use unneccessary space. This guide shows how to list and remove superseded packages from the command-line or by batch.

Short description for what you have to do before:
- Download Windows Updates for Windows (w60 or w61).
  Best practice is using wsus offline update.
- Mount Windows installation media.
- Apply packages to the mounted image.

The listings below offers two options.
The first option …
1
AutoHotkey logo
AutoHotkey is an excellent, free, open source programming/scripting language for Windows. It started out as a keyboard/mouse macros product, but has expanded into a robust language. This article provides an introduction to it, with links to additional resources for EE members who want to learn more.
19
 
LVL 12

Expert Comment

by:Andrew Leniart
Comment Utility
Great article Joe. Very helpful.
Sidebar: If you're wondering how I captured the UAC dialog box, see my EE article, How to disable the secure desktop when User Account Control (UAC) prompts for elevation.
I cheat and do it by capturing the entire action in an Oracle Virtual Machine installation from the Host side. The other benefit to that method is that I need not concern myself about ever accidentally showing sensitive files and/or folders when zooming around in Internet explorer while creating video tutorials :-)

Cheers..
0
 
LVL 55

Author Comment

by:Joe Winograd, EE MVE 2015&2016
Comment Utility
Hi Andrew,
Thanks for the compliment — I appreciate it! Your idea sounds like a good one for folks who run virtual machines — thanks for the feedback. Regards, Joe
0
Cloud Training Guides
Cloud Training Guides

FREE GUIDES: In-depth and hand-crafted Linux, AWS, OpenStack, DevOps, Azure, and Cloud training guides created by Linux Academy instructors and the community.

In Q3 of last year, Experts Exchange introduced a new Messaging System, allowing any member to communicate directly with other members.

During an especially long thread with a member, I wanted to go back to previous messages in the exchange to refresh my memory on an issue. However, the Message System doesn't have a Search function that allows you to search the contents of all messages in a thread. But then it occurred to me that I could take advantage of the search feature in my browser, Firefox (Edit>Find or Ctrl-F). However, to do that, all of the messages would have to be expanded by clicking the plus sign next to each one:
Plus-sign---Expand.jpgThat's very painful in a long thread! So I submitted an enhancement request entitled Need the ability to expand/collapse all messages in a thread  in the Messaging System testing project. An EE Administrator, eenookami, replied to my request with a fantastic work-around — JavaScript code to expand all messages in a thread, as well as JavaScript code to collapse all of them.

In the spirit of giving credit where credit is due, all of the credit goes to eenookami for this solution. My only minor contributions are taking the time to write the article in order to share the solution with other members of the EE community and adding an explanation of how to place the Expand All and Collapse All items on the Firefox Bookmarks Toolbar
6
 
LVL 2

Expert Comment

by:Rob Jurd (eenookami)
Comment Utility
Great Article Joe and thanks for giving me kudos however no one would know about it without taking it a step further with this article contribution.

For those interested, it is called a bookmarklet and it will work it all browsers.  For those adventurous ones, you can write your own bookmarklets to do anything on the site you would otherwise do with a click or a keypress on your keyboard.  I'll leave the examples for your imagination...

The bug report that started this is: http://support.experts-exchange.com/customer/portal/articles/1162518

Cheers,

eenookami
0
 
LVL 55

Author Comment

by:Joe Winograd, EE MVE 2015&2016
Comment Utility
Hi eenookami,

Thanks for the compliment and the Helpful Vote — I appreciate both! Additional thanks for the further explanation of bookmarklet — very interesting!

Btw, the link you posted for the bug report that started this does not seem to be right, but it gave me the idea to include that link in the article, which I will do in a moment. Regards, Joe
0
This article was inspired by a question here at Experts Exchange. The requirements stated in that question are (1) reduce the file size of a large number of JPG files in an extremely large number of subfolders; (2) perform that function without user intervention; (3) store the compressed files back into themselves, that is, after compression, each file overwrites itself.

The solution presented in this article meets those requirements. It is based on the excellent software package, GraphicsMagick (a fork of ImageMagick). GraphicsMagick is free (in every sense of the word), distributed under the MIT License.

The first step in the solution is to download and install GraphicsMagick from SourceForge (the latest release as of this article's publication is 1.3.21). The download folder looks like this:

GM-binaries.jpgSo the choices are:

GraphicsMagick-1.3.21-Q8-win32-dll.exe
GraphicsMagick-1.3.21-Q16-win32-dll.exe
GraphicsMagick-1.3.21-Q8-win64-dll.exe
GraphicsMagick-1.3.21-Q16-win64-dll.exe


As you can see in the file names above, there are two issues to consider with respect to the correct edition for you. The first is the so-called Quantum Depth. There are two possibilities — Quantum Depth of 8 (Q8) and Quantum Depth of 16 (Q16
4
 
LVL 25

Expert Comment

by:NVIT
Comment Utility
Thanks for this article, Joe! I haven't taken a look yet but... Do you know if there is a switch to preserve the file date and time of modified files?
0
 
LVL 55

Author Comment

by:Joe Winograd, EE MVE 2015&2016
Comment Utility
You're welcome, NVIT — glad you found it helpful. I'm pretty sure the off-the-shelf product can't do it, but there's a third-party patch that claims to provide a preserve-timestamp option for the mogrify command:
https://sourceforge.net/p/graphicsmagick/patches/45/

I haven't tried this and am curious about it, so if you give it a spin, please post your results.
Thanks, Joe
0
Power PDF Advanced
This article explains how to perform batch conversion of PDF, TIFF, and other image file formats into PDF, PDF Searchable, and TIFF files via a command line interface, using Nuance's latest document imaging software — Power PDF Advanced.
6
 

Expert Comment

by:Chris S
Comment Utility
Hello,

i tried to use the command line but i always get the error message "File open error" although I have write to all directories stated in the command?! It always says "Converting H:\TEST.HTML TO H:\TEST.PDF" which I think means that the Syntax itself is correct but either the Input or Output file cannot be opened?
0
 
LVL 55

Author Comment

by:Joe Winograd, EE MVE 2015&2016
Comment Utility
Hi Chris,
First, thanks for joining Experts Exchange today and reading my article — I appreciate it!

The input file cannot be an HTML file type. The Help output, even in the latest version 2.1 of Power PDF Advanced, still says this:

-I input file full path. * can be used for filename (*.pdf, *.tif)

As I mentioned in the article, I discovered through experimentation that the input file type may also be GIF, JPG, JPEG, PNG, and TIFF. But I just tried HTML in both v2.0 and v2.1, and can confirm that the input file may not be HTML. As you saw yourself, it gives an error message that says "File open error." My advice is to open the HTML file in whatever web browser you prefer and then print it to whatever PDF print driver you prefer. Once you have the PDF file, run Power PDF again, this time using the PDF file as the input instead of the HTML file. Of course, you may not even need to do that if you're happy with the file from the PDF printer. Regards, Joe
0
Update 21-May-2015: I temporarily removed the source code to make major changes to the program. Regards, Joe

INTRODUCTION

This article presents a solution to a question asked here at Experts Exchange. The situation is that there's a large number of subfolders (400 in the original question), each of which has a number of PDF files (two in the original question). The goal is to combine/merge the PDF files in each subfolder (in ascending date order) into a single PDF file, storing the combined file in each subfolder. The source PDF files in each subfolder may have any file names and the user should be able to specify the file name of the combined file.

REQUIRED SOFTWARE

The method presented in this article requires AutoHotkey, an excellent (free!) programming/scripting language. The quick explanation for installing AutoHotkey is to visit its website. A more comprehensive explanation is to read my EE article, AutoHotkey - Getting Started. After installation, AutoHotkey will own the AHK file type, supporting the solution discussed in the remainder of this article.

The program utilizes another excellent (free!) piece of software — PDF Toolkit (PDFtk). It comes in both command line and GUI versions. The command line version is called PDFtk Server
7
 

Expert Comment

by:Centex Aps
Comment Utility
Hi

Will the "Combine-Merge-PDF-files-20140826.ahk"  file not be attached again?
0
 
LVL 55

Author Comment

by:Joe Winograd, EE MVE 2015&2016
Comment Utility
Hi Centex,
I've decided not to post the full program. I'll be rewriting the article as a "design roadmap" with some crucial code snippets, such as how to call PDFtk Server, but will not be posting the complete source code. Regards, Joe
0
Update 21-May-2015: I temporarily removed the source code to make major changes to the program. Regards, Joe

In a previous Experts Exchange article, How To Rename-Move a Batch of PDF Files Based on Contents of the Files, I presented a program that solved a question asked here at EE. In that article and program, the situation was that a large number of PDF files in a folder had to be renamed automatically (en masse) with a suffix contained somewhere in each of the PDF files.

For example, a file might be named:

D123456.pdf

And inside that file at a fixed location (specific page, specific line, specific column) might be:

John Smith

In this example, the requirement is to rename the file as:

D123456 John Smith.pdf

A more recent question here at EE has a similar requirement, except that the suffix is contained in a specific cell of a corresponding Excel spreadsheet. In this newer question, there's an automated process that creates hundreds of PDF documents from Excel spreadsheets. The problem is that the PDF documents need to be renamed after they are created. The renaming should add a suffix to the current PDF file name, as in the previous question, but the suffix is in a fixed cell location of the Excel spreadsheet from which the PDF was created.

For example, a file might be named:

Order Number 12345.xls

In which case, the automated PDF creation process would create:

Order Number 12345.pdf
4
This article is in response to a question here at Experts Exchange. The Original Poster (OP) requires a utility that will accept a list of IP addresses as input, PING each of the IP addresses in the list, and send an email via SMTP to a support group when the PING is not successful on an IP address.

The method presented in this article requires AutoHotkey, an excellent (free!) programming/scripting language. The quick explanation for installing AutoHotkey is to visit its website and click the big blue Download button. A more comprehensive explanation is to read my EE article, AutoHotkey - Getting Started. After installation, AutoHotkey will own the AHK file type, supporting the solution discussed in the remainder of this article.

The utility takes as input a plain text file with each IP address on a separate line, such as:

192.168.0.123
192.168.0.456
192.168.0.789


The utility reads the file with the list of IP addresses and PINGs each one. It redirects the output of the PING command to a text file (via the command line ">" operator). It then looks for the five most common PING errors anywhere in the PING output, namely:

Destination Host Unreachable
Ping request could not find host
Request Timed Out
TTL Expired in Transit
Unknown Host


If the utility finds any of these, it sends an email via SMTP with PING Error Notification as the Subject and with an email Body
5
 
LVL 23

Expert Comment

by:Thomas Grassi
Comment Utility
Joe,

Just tested,

Works great two errors in my test and only one email.

My next phase will be to get email to get thru my exchange server.

Thanks again

If I get the exchange server code working I will post here for you.
0
 
LVL 55

Author Comment

by:Joe Winograd, EE MVE 2015&2016
Comment Utility
Tom,
Great to hear that the new code works for you. Documenting the settings needed for Exchange will be very helpful. Good luck!
0

Scripting Languages

26K

Solutions

20K

Contributors

A scripting language is a programming language that supports scripts, programs written for a special run-time environment that automate the execution of tasks that could alternatively be executed one-by-one by a human operator. Scripting languages are often interpreted (rather than compiled). Primitives are usually the elementary tasks or API calls, and the language allows them to be combined into more complex programs. Environments that can be automated through scripting include software applications, web pages within a web browser, the shells of operating systems (OS), embedded systems, as well as numerous games. A scripting language can be viewed as a domain-specific language for a particular environment; in the case of scripting an application, this is also known as an extension language.