Archive

Posts Tagged ‘Automation’

HowTo: HTTPS on IIS website with free auto-renewing certificate

Below is an image-based walk-through on how to configure HTTPS on an IIS website, making use of a free certificate for encryption from the non-profit Let’s Encrypt certificate authority, also configuring autorenewal of the certificate.

1) Download the win-acme client application (for the command-line).

Screenshot 2021-12-30 025002

There’s also a GUI app called IIS Crypto if you prefer. However, this article uses win-acme tool.

Screenshot 2021-12-30 025102

2) Run wacs.exe from the folder where win-acme tool is unpacked.

Screenshot 2021-12-30 025131

3) Follow same steps as below selecting your own site and binding.

Screenshot 2021-12-30 025153

Screenshot 2021-12-30 025230

Screenshot 2021-12-30 025317

Screenshot 2021-12-30 025341

Screenshot 2021-12-30 025415

Screenshot 2021-12-30 025547

Screenshot 2021-12-30 025643

Just press Q when finished and you’re done. No need to worry about next renewal (mentioned on the screen), will be done automatically.

HowTo: install multiple Corel Painter brushpacks silently

I got a nice expression software charity bundle with Corel Painter 2020 (current version is 2021) and a bunch of brushes in it and then noticed that the brush packs where available for download as separate installers than the Painter software.

So I launched one of the brush pack installers from the command-line (can give CMD and press enter at the address bar of the file explorer window to open command-line in the current folder) with a /? parameter to see its syntax:

e:\brushpack_abstract_windows.exe /?

image

Then I created a batch file to loop over all the brush_* installer files using the following commands in the console (press ENTER after each one). The for loop executes each brush pack installer from the same folder passing parameters for silent mode (/S /v/qn), as instructed by the dialog above:

copy con PainterInstallBrushes.bat
@for %%f in (brushpack_*) do %%f /S /v/qn

^Z

The last one (^Z) means Press CTRL+Z (then press ENTER for that line too). It signifies the end-of-file / input. We were inputing/copying keystrokes from the console (CON) into the file PainterInstallBrushes.bat (note that if the file exists you’re asked to overwrite it as soon as you copy the 1st line into it, but you still have to press CTRL+Z and ENTER to end input).

To avoid having to press Yes at repeated security dialogs (due to User Access Control [UAC] being activated), I opened an administrator command-prompt (can give CMD at Windows search and right click the found cmd.exe and select to open it as administrator), then executed the batch file (E: goes to drive E, CD \Corel.com goes to Corel.com folder under E: drive root)

c:\windows\system32> e:
e:\somefolder> cd \Corel.com
e:\Corel.com> PainterInstallBrushes.bat

e:\Corel.com>PainterInstallBrushes.bat

e:\Corel.com>brushpack_abstract_windows.exe /S /v/qn

e:\Corel.com>brushpack_alcoholink_windows.exe /S /v/qn

e:\Corel.com>brushpack_bristly_windows.exe /S /v/qn

e:\Corel.com>brushpack_bubbles_windows.exe /S /v/qn

e:\Corel.com>brushpack_drytexture_windows.exe /S /v/qn

e:\Corel.com>brushpack_feather_windows.exe /S /v/qn

e:\Corel.com>brushpack_fireworks_windows.exe /S /v/qn

e:\Corel.com>brushpack_gesturalillustration_windows.exe /S /v/qn

e:\Corel.com>brushpack_mangaii_windows.exe /S /v/qn

e:\Corel.com>brushpack_michellewebbmasterpack_windows.exe /S /v/qn

e:\Corel.com>brushpack_nature_windows.exe /S /v/qn

e:\Corel.com>brushpack_perfectpets_windows.exe /S /v/qn

e:\Corel.com>brushpack_popart_windows.exe /S /v/qn

e:\Corel.com>brushpack_rain_windows.exe /S /v/qn

e:\Corel.com>brushpack_rake_windows.exe /S /v/qn

e:\Corel.com>brushpack_rustandpatina_windows.exe /S /v/qn

e:\Corel.com>brushpack_scrape_windows.exe /S /v/qn

e:\Corel.com>brushpack_stipple_windows.exe /S /v/qn

e:\Corel.com>brushpack_suminagashi_windows.exe /S /v/qn

e:\Corel.com>brushpack_sunnyrays_windows.exe /S /v/qn

An alternative way to using the command-line would have been to create the batch (.bat) file with a text editor in the same folder as the brush pack installers, then right click it and select to run it as an administrator from the popup menu.

Twitter #bot or not? Posing as Automation/AI specialist & Python guru

I just came across this strange thing on twitter:

Received a notification that some “Virginia A. Osborn” liked a tweet of mine that was a) in Greek b) totally of a subset of Greek residents interest, highly unlikely it would have meant anything to a person with a foreign name. Then I saw that twitter account started following me immediately after that action.

image

It smelled bot to me, so I took a look at that account’s profile. She seems to have joined twitter long ago (back in 2010), so I should have probably checked her very first tweets to see what that account was about (wonder if there is an archive of what the profile details were saying back then in case that was a dormant bot).

image

It seems that account has quite some followers and several people that post AI-related stuff that I follow, plus it didn’t seem to post unrelated stuff:

image

However, I decided to look her name up on Google. I didn’t find much. So I used Google Image Search to look up her profile photo and bingo, it came up at a stock photo collection, together with other shots of that model posing on the same business-related stock photo theme: https://www.istockphoto.com/search/stack/694124043?assettype=image

image

So, is this a personna account of some real person or are bots ruling twitter (wonder what the ratio of real persons to bots is currently) and preparing for a future bot-a-gedon? (similar to infected zombie machines that is – wonder if such accounts are already pushing malware links or something).

Of course there’s always the chance that person did a deal with some photographer to pose for him and then used one of those photos in their profile, but I find it highly unlikely.

Class diagrams for Hotspotizer Kinect-based application source code

Following are class diagrams for Hotspotizer’s C# code, as is currently at 4 Aug 2015 at its refactored version I maintain in my fork at GitHub (http://github.com/birbilis/hotspotizer). The respective diagram (.cd) files for Visual Studio are available in the code repository at the various subfolders:

GUI

Models

Converters

Helpers

Hotspotizer (εφαρμογή για Kinect, μετάφραση άρθρου στα ελληνικά)

Το παρακάτω κείμενο είναι μετάφραση στα ελληνικά της σελίδας:
http://designlab.ku.edu.tr/hotspotizer

Σχετική διπλωματική εργασία (του Mehmet Aydın Baytaş):
https://github.com/mbaytas/thesis/releases

Ο πηγαίος κώδικας της εφαρμογής Hotspotizer είναι διαθέσιμος στο:
https://github.com/mbaytas/Hotspotizer

Μια βελτιωμένη έκδοση του πηγαίου κώδικα της εφαρμογής Hotspotizer είναι διαθέσιμη στο:
http://github.com/birbilis/Hotspotizer


Επιβλέποντες: Prof Oğuzhan Özcan, Dr Yücel Yemez
Ανάπτυξη ιδέας: Mehmet Aydın Baytaş, Dr Ayça Ünlüer
Ανάπτυξη λογισμικού: Mehmet Aydın Baytaş

Σχετικό έργο: Προδιαγραφές πάνω σε Εκπαίδευση Σχεδίασης για Διάδραση μέσω Νευμάτων

Οι συσκευές ανέπαφης ανίχνευσης νευμάτων πλήρους σώματος όπως το Microsoft Kinect έχουν εισάγει έναν κόσμο από δυνατότητες στη διάδραση με υπολογιστές. Παρά ταύτα, η τεχνική κατανόηση και οι προγραμματιστικές δεξιότητες που απαιτούνται για να γίνει χρήση αυτών των συσκευών τις έχουν αφήσει αρκετά εκτός πρόσβασης από σχεδιαστές, χομπίστες, παίκτες και επαγγελματίες εκτός του χώρου των υπολογιστών. Για να μειώσουμε το κατώφλι των τεχνικών δεξιοτήτων που απαιτούνται για τη χρήση της σχετικής τεχνολογίας σε προσαρμοσμένες εφαρμογές και για να ενεργοποιήσουμε την ταχεία πρωτοτυποποίηση διαδράσεων βασισμένων σε νεύματα, έχουμε αναπτύξει το Hotspotizer.

Το Hotspotizer επιτρέπει σε χρήστες χωρίς δεξιότητες προγραμματισμού υπολογιστών να σχεδιάσουν, οπτικοποιήσουν, αποθηκεύσουν και ανακαλέσουν σύνολα από προσαρμοσμένα νεύματα πλήρους σώματος. Αυτά τα νεύματα αντιστοιχούνται με εντολές πληκτρολογίου σε όλο το λειτουργικό σύστημα που μπορούν να χρησιμοποιηθούν για τον έλεγχο οποιασδήποτε εφαρμογής που εκτελείται στις τρέχουσες εκδόσεις της πλατφόρμας των Microsoft Windows.

Το Hotspotizer επικεντρώνεται γύρω από ένα καινοτόμο, εύκολο στη χρήση γραφικό περιβάλλον διεπαφής, βασισμένο στη διακριτοποίηση του χώρου, για τον προσδιορισμό ελεύθερης μορφής, πλήρους σώματος νευμάτων (δηλ. τη “διδαχή” νευμάτων στον υπολογιστή) για χρήση με τον αισθητήρα Microsoft Kinect.

hotspotizer_cover

Το Hotspotizer έχει σχεδιαστεί κυρίως για τους παρακάτω σκοπούς:

  • Ψηφιακές τέχνες και εκπαίδευση σχεδίασης
  • Ταχεία πρωτοτυποποίηση διαδραστικών εφαρμογών με νεύματα πλήρους σώματος
  • Παιχνίδια
  • Προσαρμογή οποιουδήποτε λογισμικού χειριζόμενου μέσω πληκτρολογίου για χειρισμό με νεύματα

Στιγμιότυπα οθόνης

Προαπαιτούμενα

*: Το Hotspotizer θα ελέγξει και υποβοηθήσει για την εγκατάσταση αυτών των πακέτων λογισμικού κατά την εγκατάσταση του.
**: Το Hotspotizer θα ελέγξει και υποβοηθήσει για την εγκατάσταση αυτών των πακέτων λογισμικού κατά την εκκίνηση του.

Άδεια χρήσης (διαθέσιμο για κάθε χρήση, με υποχρεωτική παράθεση της άδειας)

The MIT License (MIT)
Copyright (c) 2014 Mehmet Aydın Baytaş

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Εγκατάσταση

Λήψη: Hotspotizer_1.zip (4 MB)

Αποσυμπιέστε το συμπιεσμένο αρχείο και τρέξτε το setup.exe για εγκατάσταση.

Εναλλακτικά (αν τα προαπαιτούμενα είναι εγκατεστημένα), μπορείτε απευθείας να τρέξετε το Hotspotizer.exe από τον υποφάκελο Application Files/Hotspotizer_X_X_X_X/.

Πρώτα βήματα

Το Hotspotizer αποτελείται από τρεις ενότητες:

  • Η ενότητα Διαχειριστή είναι για τη διαχείριση συνόλων νευμάτων: Αποθήκευση και φόρτωμα συνόλων νευμάτων, αφαίρεση νευμάτων από ένα σύνολο, εκκίνηση του Επεξεργαστή για την τροποποίηση ενός νεύματος ή για την προσθήκη ενός νέου νεύματος στο σύνολο, και εκκίνηση του Οπτικοποιητή για την έναρξη εξομοίωσης πληκτρολογίου.
  • Η ενότητα Επεξεργαστή είναι για τη δημιουργία νέων νευμάτων ή για αλλαγές σε ένα υπάρχον νεύμα.
  • Η ενότητα Οπτικοποιητή επιτελεί την εξομοίωση πληκτρολογίου και επιτρέπει στο χρήστη να δεί αν εκτελεί τα νεύματα του σωστά.

Εκκινήστε το Hotspotizer για την έναρξη μιας οθόνης Διαχειριστή με ένα άδειο σύνολο νευμάτων:

Αν το Hotspotizer δεν μπορεί να συνδεθεί επιτυχώς στον αισθητήρα Kinect σας, μια προειδοποίηση θα εμφανιστεί στη αριστερή πλευρά και οι λειτουργίες που σχετίζονται με το Kinect θα απενεργοποιηθούν.

has_addnew

Πατήστε το κουμπί “Προσθήκη νέου νεύματος” (Add New Gesture) για την έναρξη του Επεξεργαστή.

Θα υλοποιήσουμε ένα απλό νεύμα "αρπαγής" με το δεξί χέρι, από αριστερά προς τα δεξιά. Θα αντιστοιχίσουμε αυτό το νεύμα με το πλήκτρο "κενό" (space).

Αφού ονομάσετε το νεύμα, πατήστε το κουμπί "Εντολή πληκτρολογίου (Keyboard Command) για να ορίσετε την αντιστοίχιση πληκτρολογίου. Πατήστε το πλήκτρο "κενό" και κάντε κλικ στο σύμβολο "επιλογής" (check) για αποδοχή.

Το κουμπί δυο θέσεων "Πάτημα/Κράτημα" δίπλα στο κουμπί "Εντολή πληκτρολογίου" (Keyboard Command) ορίζει αν η εκτέλεση του νεύματος θα πρέπει να στείλει ένα μόνο πάτημα πλήκτρου ή να κρατήσει πατημένο το κουμπί πληκτρολογίου όσο το παρακολουθούμενο άκρο παραμένει στα ενεργά σημεία του τελευταίου βήματος του νεύματος.

Μπορείτε να αντιστοιχίσετε τα νεύματα σας σε οποιοδήποτε συνδιασμό πλήκτρων, όχι μονάχα ένα κουμπί.

Επιλέξτε το άκρο που θα χρησιμοποιηθεί για να εκτελεστεί το νεύμα – στην περίπτωση αυτή, το δεξί χέρι.

image

Θα υλοποιήσουμε ένα νεύμα “αρπαγής” που συμπεριλαμβάνει 3 βήματα: Το δεξί χέρι θα περάσει μέσα από “ενεργά σημεία” (hotspots) στα αριστερά, στο μέσο, και στα δεξιά αντίστοιχα.

Σημειώστε τα ενεργά σημεία για το πρώτο βήμα στο πλέγμα εμπρόσθιας όψης πρώτα. Στο πλέγμα πλευρικής όψης, που αρχικά είναι πλήρως απενεργοποιημένο, αυτό θα ενεργοποιήσει τις γραμμές που αντιστοιχούν σε αυτά τα ενεργά σημεία. Έπειτα σημειώστε τα ενεργά σημεία στο πλέγμα πλευρικής όψης. Θα δείτε τα ενεργά σημεία να οπτικοποιούνται στην τρισδιάστατη όψη (3D viewport).

Ένα “ενεργό σημείο” ορίζει ένα κυβικό κελί 15 εκ x 15 εκ x 15 εκ. Το πλέγμα εμπρόσθιας όψη σηματοδοτεί που βρίσκονται αυτά τα κελιά οριζόντια και κατακόρυφα. Το πλέγμα πλευρικής όψης σηματοδοτεί που βρίσκονται κατακόρυφα και εις βάθος. Το Hotspotizer ακολουθεί τα επιλεγμένα άκρα για κάθε νεύμα και καταχωρεί πότε περνούν από τα σημειωμένα ενεργά σημεία.

Μπορείτε να περιστρέψετε την 3D όψη στον Επεξεργαστή και τον Οπτικοποιητή κάνοντας δεξί κλικ και κρατώντας το δεξί πλήκτρο του ποντικιού πατημένο καθώς κινείτε το ποντίκι τριγύρω. Μπορείτε να μεγεθύνετε και σμικρύνετε χρησιμοποιώντας τη ρόδα κύλισης του ποντικιού ή το δεξί πλήκτρο του ποντικιού μαζί με το κουμπί Ctrl του πληκτρολογίου.

Μπείτε μπροστά από το Kinect για να δοκιμάσετε τα δοκιμάσετε. Δείτε αν τα ενεργά σημεία που σημειώστε αντιστοιχούν πραγματικά στο σημείο που θέλετε το δεξί σας χέρι να είναι όταν αρχίζετε το νεύμα.

Προσθέστε το δεύτερο (μεσαίο) βήμα χρησιμοποιώντας το κουμπί “Προσθήκη νέου βήματος” (Add New Frame) και σημειώστε ενεργά σημεία σε αυτό. Έπειτα προσθέστε το τρίτο βήμα.

Μπορείτε να επιστρέψετε και επεξεργαστείτε κάποιο βήμα κάνοντας κλικ πάνω τους στη χρονογραμμή στο κάτω μέρος. Μπορείτε επίσης να αναδιατάξετε και διαγράψετε βήματα χρησιμοποιώντας τα κουμπιά κάτω από τα μικρά πλαίσια των βημάτων εκεί.

Καθώς προσθέτετε βήματα, τα ενεργά σημεία των προηγούμενων βημάτων θα συνεχίζουν να εμφανίζονται στην 3D όψη, αλλά θα γίνουν πιο διαφανή. Αν υπάρχουν άλλα νεύματα στο σύνολο νευμάτων στο οποίο δουλεύετε, αυτά θα εμφανίζονται επίσης εκεί, και θα είναι πολύ διαφανή (δείτε στιγμιότυπα οθόνης παραπάνω). Αυτό γίνεται για την υποβοήθηση του χρήστη στο να παρακολουθεί που είναι τα τρέχοντα ενεργά σημεία σε σχέση με τα άλλα νεύματα στο σύνολο.

 hs_savegesture

Αποθηκεύστε το νεύμα. Το νεύμα είναι τώρα μέρος της συλλογής νευμάτων που είναι φορτωμένη στο Διαχειριστή και μπορείτε να δείτε τη συμπεριφορά του ως προς το πάτημα ή κράτημα, την αντιστοίχιση πλήκτρου και το όνομα να αναφέρονται εκεί, μαζί με πλήκτα για την έναρξη του Επεξεργαστή για την πραγματοποίηση αλλαγών στο νεύμα και για τη διαγραφή του νεύματος εντελώς από τη συλλογή νευμάτων.

hs_play

Πατήστε το κουμπί “Έναρξη εξομοίωσης” (Begin Emulation) (ή “Παίξιμο” [Play]) για να εκκινήσετε τον Οπτικοποιητή. Ο Οπτικοποιητής θα εμφανίσει:

  • Μια χρωματικά κωδικοποιημένη λίστα των νευμάτων στην τρέχουσα συλλογή νευμάτων μαζί με τη συμπεριφορά τους ως προς το πάτημα ή κράτημα, την αντιστοίχιση πλήκτρου και το όνομα τους.
  • Σε μια μεγεθυνόμενη και περιστρεφόμενη 3D όψη και μη μετακινήσιμων εμπρόσθιων και πλάγιων όψεων, τα ενεργά σημεία, χρωματικά κωδικοποιημένα, όλων των νευμάτων στη συλλογή νευμάτων. Η διαφάνεια των ενεργών σημείων αντιστοιχεί στο βήμα που ανήκουν σε ένα νεύμα. Τα διαφανή ενεργά σημεία είναι που πρέπει να αγγίζονται πριν από τα περισσότερο αδιαφανή.

Τα ενεργά σημεία και τα αντικείμενα της λίστας θα φωτιστούν καθώς πραγματοποιείτε το νεύμα. Μπείτε μπροστά από το Kinect και δοκιμάστε το!

Όταν ένα παρακολουθούμενο άκρο περνά από τα ενεργά σημεία που ανήκουν σε ένα νεύμα, η εντολή πληκτρολογίου αυτού του νεύματος εκτελείται. Αυτό επίσης λειτουργεί όταν το Hotspotizer είναι κρυμμένο ή όταν μια άλλη εφαρμογή είναι σε χρήση (στο προσκήνιο).

Το νεύμα “αρπαγής”, για παράδειγμα, μπορεί να χρησιμοποιηθεί για να προχωρήσουν οι διαφάνειες μιας παρουσίασης.

Στο Διαχειριστή, μπορείτε να προσθέσετε νέα νεύματα στη συλλογή νευμάτων σας (για παράδειγμα, ένα νεύμα “ανάστροφης αρπαγής” αντιστοιχισμένο στο πλήκτρο “backspace” [σβησίματος προηγούμενου χαρακτήρα] για την εμφάνιση της προηγούμενης διαφάνειας κατά τη διάρκεια μιας παρουσίασης), ή να αποθηκεύσετε τη συλλογή νευμάτων για μελλοντική χρήση.

Οι συλλογές νευμάτων αποθηκεύονται ως δεδομένα “JSON”, με την επέκταση αρχείου “.hsjson”. Περίεργοι και τεχνικά επιδέξιοι χρήστες μπορούν να επεξεργαστούν αυτά τα αρχεία για να διερευνήσουν δυνατότητες χρήσης.

Σημειώσεις έκδοσης

  • 1.0.0 εισάγει ενημερώσεις στη γραφική διεπαφή (GUI), μαζί με βελτιώσεις στις επιδόσεις και τη σταθερότητα.
  • 0.9.7 εισάγει μια διόρθωση που δεν επιτρέπει σε ένα νεύμα να μην περιέχει βήματα.
  • 0.9.6 εισάγει αλλαγές στη γραφική διεπαφή και διορθώνει ένα σφάλμα στην εξομοίωση πληκτρολογίου που επηρέαζε τα νεύματα που ήταν αντιστοιχισμένα σε συνδυασμούς πλήκτρων.
  • 0.9.5 διορθώνει ένα πρόβλημα με την ανάγνωση πλήκτρων του πληκτρολογίου που δεν επέτρεπε συνδυασμούς πλήκτρων που περιελάμβαναν το πλήκτρο “alt”, και εισάγει μικρές βελτιώσεις γραφικής διεπαφής στον Οπτικοποιητή.
  • 0.9.4 εισάγει βελτιώσεις στη γραφική διεπαφή για τη βελτίωση της αναγνώρισης των ενεργών σημείων στον Επεξεργαστή.
  • 0.9.3 διορθώνει ένα πρόβλημα με τον αναγνωριστή νεύματος που έκανε τα νεύματα μονού βήματος που ήταν ρυθμισμένα να στέλνουν πατήματα πλήκτρων, να τα κρατούν πατημένα.
  • 0.9.2 διορθώνει το πρόβλημα με τη μη σωστή εμφάνιση των εικονιδίων στα Windows 7.
  • 0.9.1 διορθώνει μικρά προβλήματα στον αναγνωριστή νεύματος.
  • 0.9.0 αρχική δημόσια έκδοση.
Γνωστά θέματα στην τρέχουσα έκδοση
  • Η εφαρμογή μπορεί να εμφανίσει σφάλμα στην εκκίνηση της, αφού εμφανίσει μήνυμα προειδοποίησης, αν το Kinect Runtime δεν είναι εγκατεστημένο.

HowTo: Display version information on WinForm title

This is my contribution to
http://stackoverflow.com/questions/7178725/version-number-in-winform-form-text

I’m using the following at the WinForm of the WebCapture tool I’m making for ClipFlair:

public MainForm()
{
  InitializeComponent();
  Version version = Assembly.GetExecutingAssembly().GetName().Version;
  Text = Text + " " + version.Major + "." + version.Minor + 
" (build " + version.Build + ")"; //change form title }

Not showing revision number to the user, build number is enough technical info

Make sure your AssemblyInfo.cs ends in the following (remove the version it has there by default) for VisualStudio to autoincrement build and revision number. You have to update major and minor versions yourself at every release (update major version for new features, minor version when you do just fixes):

// Version information for an assembly consists of the following four values:
//
//      Major Version
//      Minor Version 
//      Build Number
//      Revision
//
// You can specify all the values or you can default the Build
// and Revision Number by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] [assembly: AssemblyVersion("1.0.*")]

Update: Since now WebCapture is ClickOnce-deployed from the web (also has nice autoupdate support thanks to ClickOnce) and I want to avoid user confusion by showing the published version of the app (as the ClickOnce installation page does) on the WinForm titlebar, I now use the following code instead, based on a relevant post I found on the web:

public MainForm()

{

  InitializeComponent();

  ShowVersion();

}

private void ShowVersion()

{

  Version version = (ApplicationDeployment.IsNetworkDeployed)?

    ApplicationDeployment.CurrentDeployment.CurrentVersion :

    Assembly.GetExecutingAssembly().GetName().Version;

    //if network deployed show published version (as the web install page)

    
  Text = Text + " " + version.Major + "." + version.Minor + "."

                     + version.Build + "." + version.Revision;

                       //change form title

}

BTW, speaking of ClickOnce, I noticed that if at the autoupdate dialog shown when you launch the app from its desktop shortcut (and there’s a new version available) you press “Skip”, it won’t offer you this update anymore when you launch an app (I hope that when an even newer update is there it will prompt you), but you can override that behaviour by going to the installation page for your ClickOnce app (where you installed it from in the first place) and press the “Install” button there.

Google: Χαμένοι στη μετάφραση

image

Τραγική η αυτόματη μετάφραση στα Ελληνικά πολλές φορές. Το Google Toolbar στην παραπάνω εικόνα έχει μεταφράσει το AD (Active Directory) σε μ.Χ. (Μετά Χριστόν) για τα χρήσιμα (για πληροφορικάριους μόνο φυσικά) εργαλεία AD Explorer και AD Insight της SysInternals (που είναι εδώ και κάμποσο καιρό πλέον μέρος της Microsoft).

Launching MATLAB with no UI (headless) for remote automation

I’m sharing here an answer I just gave at:

http://stackoverflow.com/questions/3100251/can-i-run-matlab-on-windows-with-ui-just-that-the-code-runs-on-remote-server/7507515#7507515

for archiving, since this may interest fellow Roboticists

Launching MATLAB on a server without the GUI is covered thoroughly at
http://blogs.mathworks.com/desktop/2010/02/22/launching-matlab-without-the-desktop/
you should also read the user comments/discussion there

e.g. you can use

start matlab -nosplash -nodesktop –nojvm –noFigureWindows -minimize -r
"testcommand,quit"

 

The –noFigureWindows parameter is mentioned at
http://www.mathworks.com/help/techdoc/ref/matlabwindows.html
where it doesn’t mention –nodesktop (only the UNIX doc mentions it for X-Windows), however it seems you have to use it on Windows too, else you see the MATLAB code editor window too popup.

 

I’m not sure the –nojvm works at all on Windows version of MATLAB, it’s not mentioned in the official documentation URL mentioned above and also Process Monitor tool from Microsoft SysInternals shows that MATLAB still loads it’s internal Java VM’s files even with that command-line parameter provided.

If not using Java is too restrictive for your needs:

Regarding -nodesktop vs. -nojvm, there is a third
(undocumented/unsupported) option: ‘-noawt’. -noawt loads Java (thus
enabling Java I/O, data structures etc.) and just prevents Java GUI

 

Also note that when launching MATLAB from a WCF service, even if you set an AppPool to run the service under a custom account (say MATLABUSER) and even if you set the Matlab current directory / search path for that user (Matlab keeps them separately for each Windows user account), it keeps on ignoring them. Thus you are forced to use “-sd” deprectated command-line parameter of Matlab (mentioned at the official doc URL I sited above) to set the startup path of Matlab. In that folder you can have a “startup.m” file where you use ADDPATH command of Matlab to temprorarily update the Matlab startup path for the running Matlab process.

ADDPATH Add directory to search path.
    ADDPATH DIRNAME prepends the specified directory to the current
    matlabpath.  Surround the DIRNAME in quotes if the name contains a
    space.  If DIRNAME is a set of multiple directories separated by path
    separators, then each of the specified directories will be added.
 
    ADDPATH DIR1 DIR2 DIR3 …  prepends all the specified directories to
    the path.

Unfortunately the “-sd” command-line parameter is deprecated, which means it could be removed in the future, but the Matlab online documentation fails to list alternatives, just says “For information about alternatives, see .” and nothing more there:

matlab -sd "startdir" specifies the startup directory for MATLAB (the current directory in MATLAB after startup). The -sd option has been deprecated. For information about alternatives, see .

 

BTW, instead of launching MATLAB via Windows shell command you could launch as a COM automation server:

http://www.mathworks.com/help/techdoc/matlab_external/brd0v3w.html

or via existing C API for launching MATLAB:

http://www.mathworks.com/help/techdoc/matlab_external/f29148.html

 

If you use this often (e.g. from a web service), it is best that you keep an instance of MATLAB in memory all the time (since Windows apps for example share code and have separate data this can spare much time by avoiding the reloading of MATLAB code into memory at every script run). That instance could be headless too (with no UI) using this command at server boot (e.g. by adding an entry at HKLM/Software/Microsoft/Windows/CurrentVersion/Run in the Windows registry using "regedit.exe"):

start matlab -nosplash -nodesktop –nojvm –noFigureWindows -minimize