2011-08-17

Emacs syntax highlighting for PHP and AutoIT

After installing Emacs from http://www.gnu.org/software/emacs/, copy those two files below to your "%AppData%\.emacs.d" directory:

Edit the "%AppData%\.emacs" file and add the following lines:

(global-font-lock-mode 1)
(add-to-list 'load-path "~/.emacs.d")
(require 'php-mode)
(setq auto-mode-alist
(append '(("\\.php$" . php-mode)
("\\.module$" . php-mode))
auto-mode-alist))
(require 'au3-mode)
(setq auto-mode-alist
(append '(("\\.au2$" . au3-mode)
("\\.au3$" . au3-mode))
auto-mode-alist))

2011-08-16

Process execution timing in MS DOS cmd.exe batch file


Core


Imagine that you are running a process that takes a long time to perform (eg. build, code generation, maintenance batch, file transfer, etc.) and that you want to see how long it takes. You can use the idea from the sample below. I used a simple "sleep" command in place of a real process, but I believe that you will get the idea.


Usage: In order to use the "timediff" command add the two files
timedff-calc.bat and timediff-sub.bat
to a directory that is in your PATH environment variable (eg. "C:\bin").



Helpers


Consider also adding the following batch script to your toolbox:


Testing


Last but not least, please see the timediff-test.bat file for sample invokations and formats supported:


2008-12-15

RAID failure, loss of data and anger

RAID is not a good alternative to backing up data. Data may become damaged or destroyed without harm to the drive(s) on which they are stored. For example, some of the data may be overwritten by a system malfunction; a file may be damaged or deleted by user error or malice and not noticed for days or weeks; and, of course, the entire array is at risk of physical damage.

Note that a RAID controller itself can become the single point of failure within a system.

2008-11-15

Launch TightVNC using the Computer Name - or - How to Get IP from Computer Name in MS-DOS cmd.exe batch file





  • First, knowing the name of a computer, we want to get its IP. The script 'GetIpFromName' does that..
  • Second, we need to call `StartVncViewer MyServerName` to start VncViewer..

    See scripts below:


  • 2008-11-10

    TightVNC is a great Open Source alternative to Remote Desktop Connection!

    In a previous post we've seen that Remote Desktop Connection (embeded with Windows XP PRO) is a great tool that allows you to work on a distant computer and to use its graphical environment.

    But what do I do if I only have an XP Home Edition? You might consider using TightVNC then! Besides, even if you have the license for
    Remote Desktop Connection you might consider using TightVNC anyway because... it rocks!


    1/ Install the VNC server

    Visit
    http://www.tightvnc.com.

    2/ Start the VNC service
    3/ Update the Firewall

    Authorize the server executable and open ports 5800 and 5900:


    4/ Get the IP of the Target

    Ping the server from your other computer (the client) and read its IP.

    5/ Connect to the Target using a VNC Viewer

    Connect to the remote computer using its IP:


    6/ VNC Security considerations

    There is one fundamental difference between TightVNC and Remote Desktop Connection:
    the remote computer's monitor will display an open session when you log using TightVNC (eg. you will see the mouse move, etc.) whereas it will display a "locked computer" when you use Remote Desktop Connection.
    From a security point of view, you need to ask yourself if it is a problem having your session left open on the remote computer. Who are the people who have physical access to this computer?

    On the other hand, having the session open is very convenient if the remote computer performs Graphical Automation: for example, AutoIT doesn't work correctly if the computer is locked! In which case TightVNC might become a life saver!

    Last but not least, you can combine both behaviors by using a Virtual Machine on top of the physical one: the physical machine can then be locked and the data and processes running on the Virtual Machine will be protected from the outer world while you are using TightVNC!

    2008-10-05

    Work around AutoIT stdin limitation

    The fastest way to implement a small script and to process a file (or a chunk of data) is to use the standard input rather than file-handles.

    1/ It is easier to redirect a file instead of providing parameters to a program.

    2/ When you use redirections, the operating system works for you: it opens the file and feeds the program with its content.
    C:\> AutoIt3.exe DiffPrettyfier.au3 < MyInput.txt > MyOutput.txt
     
    The content of the script is straight forward:
    $myInput = ConsoleRead()
    ; do something here
    ; (...)
    ConsoleWrite($myOutput)


    
    But there is one problem that makes this a bit harder: AutoIT 'ConsoleRead' doesn't handle input bigger than '65535' characters. So here is a little workaround: use the function 'StdinRead' below instead of 'ConsoleRead':
    ;-----------------------------------------------------------------
    ; Name .........: StdinRead
    ; Description ..: Wrapper for ConsoleRead because it doesn't
    ; handle big files
    ; Warning ......: This is a workaround but it has limitations too,
    ; I used a big file to test this function but it
    ; might fail on a VERY big file (eg. if the file
    ; contains 2 147 483 647 characters)
    ; original big file tested: 18 030 950
    ; biggest string size allowed: 2 147 483 647
    ; Parameters ...: n/a
    ; Return .......: String read on STDIN or empty String "" if
    ; nothing found on STDIN
    ;-----------------------------------------------------------------
    Func StdinRead()
    Const $MAX_BUFFER = 65535
    $eofReached = False
    $fileContent = ""
    While Not $eofReached
    $buffer = ConsoleRead($MAX_BUFFER)
    If @error Or $buffer = "" Then $eofReached = True
    $fileContent &= $buffer
    WEnd
    Return $fileContent
    EndFunc ;==>StdinRead



    NOTE: For "ConsoleWrite" to work as expected (redirecting output to stdout), you need to compile the script using the "/console" switch.