recursivebytes

There's no home like /home

In MVVM you normally don´t use Click-Event like in WinForms, Java Swing or other traditional GUI-Framework. On of the aims of MVVM is to reduce the binding between presentation and program logic. The way you do bind Actions to a button (or other control) is by an implementation of the ICommand interface, that is hold by the ViewModel. The View binds to this property to create the link between implementation and triggering of the command. A common implementation is the RelayCommand class, which supports a basic functionality of this.

The implementation

In my applications I improved this by adding a flexable support for shortcut-bindings, which allows me to (re)bind the Menu- and Button-Command shortcuts at runtime. This is used to allow the user to change the default shortcuts in the configuration window.

The ViewModel implementation is quite the same like the RelayCommand Class:

Binding in the View works like this:

Changing the shortcut at runtime is really simple: just assign a different key and/or modifier to the object hold by the NewFileCommand-Property. Due to the INotifyPropertyChanged, the View gets informed about the change.

VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Komponenten

BezeichnungInfoPreis (€)
ASRock QC5000-ITX/WiFiITX-Board mit Notebook-APU71
G.Skill Value DIMM Kit 8GB, DDR3-13332x4GB Kit, F3-10600CL9D-8GBNT64
be quiet! System Power 7 300W ATX 2.31Leises ATX-Netzteil29
Cooler Master Elite 110 schwarz, Mini-ITX RC-110-KKN235
Noctua Redux 120mm+140mmoptional; für leiseren Betrieb0 (27)

Gesamtpreis: 199€

 

Vergleich zu HP ProLiant G8 Entry

Produkt: http://geizhals.de/hp-proliant-microserver-gen8-712317-421-a962380.html

Vorteile

  • Erweiterbar mit Standard-Hardware
  • deutlich mehr RAM
  • Leistungsstärkerer Prozessor
  • Komponenten/PC auch für andere Zwecke verwendbar (z.B. Office), falls sich Anforderungen ändern
  • günstiger
  • ausreichend RAM für FreeNAS und ZFS
  • integriertes WLAN

Nachteile

  • Keine server-grade Hardware (kein ECC-RAM, keine 24/7 verifizierte Komponenten)
  • Keine redundante LAN-Verbindung
  • Netzteil überdimensioniert

 

Anwendungsgebiet

Kleinst-NAS (3x 3,5 Zoll Festplatten, RAID 0/1/5 möglich)  mit vielseitigen weiteren Anwendungen wie Webserver, SVN-Server oder sogar Virtualisierung (1-2 VMs mit geringem Workload). Der A4 hat die AES Erweiterung was günstig für Festplattenverschlüsselung ist. WD Red 4TB/6TB sind ideal als Datenplatten geeignet. Durch das offen gestaltete Gehäuse sollte die Kühlung der Komponenten leicht (und daher auch leise) von statten gehen.

Windows, Windows Server, Linux, aber auch FreeNAS sind denkbare Betriebssysteme, je nach Bedarf.

 

Erweiterbarkeit

Auch wenn das Gehäuse in einer 3×3,5 Zoll Kombination von Festplatten offiziell keine weiteren 2,5 Zoll SSDs ermöglicht, kann man ggf. dennoch eine SSD hinein quetschen. Da SSDs unempfindlich (bzgl. ihrer Lage) sind, sollte das kein Problem darstellen.

Bis zu 16GB RAM möglich (kann bei Nutzung von Virtualisierung oder ZFS ratsam sein).

Das Netzteil hat ausreichend Kapazität für weitere Komponenten.

Es steht 1 PCIe 2.0 Slot zur Verfügung der mit einer Dual-Slot-Karte bestückt werden kann. Interessant wäre z.B. eine (Single oder Multi-Tuner) TV-Karte zum automatisierten Aufzeichnen von TV-Serien oder eine weitere Netzwerkkarte (falls Redundanz gewünscht ist). Von einer leistungsstarken Grafikkarte (um das Gerät auch als Spielekonsole o.ä. zu nutzen) ist allerdings abzuraten, da die APU ihre Leistung stark schmälern würde.

 

Fazit

Für unter 200€ ist es möglich ein kleines, leises, energieeffizientes NAS zu bauen, das einem Mikroserver oder fertigen NAS technisch nur in wenigen Bereichen etwas nachsteht, aber dennoch extrem flexibel ist. Reine NAS-Geräte starten bei diesem Preis erst und sind in ihren Möglichkeiten oft stark beschnitten (z.B. wegen Einsatz von ARM-Prozessoren).

 

 

 

VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

28.12.2014

The following table contains a list of very useful regular expressions which can be used in C#/.NET or other RegEx-capable programming languages. Be aware that the expressions in the table are designed for .NET and may use .NET-specific sequences!

RegEx-Tester is an extremely useful litte tool which may help developing and validating complex regular expressions.

 

RegexDescription
@"<\s*(\w+)\s*((""|').*?(""|')|[^'"">]+)*?\s*>"Matches any string that looks like a XML / HTML tag (while ignoring contents of strings).

Groups[1] = Tagname
@"^([\w0-9_\-\.]+)@([\w0-9_\-\.]+?)\.(\w{2,})"Matches an email address.

Groups[1] = Name
Groups[2] = Domain
Groups[3] = TLD
@"^([a-z]:\\)?([^\\\n]+\\)*?([^\\\n]+)$"Matches a file path

Groups[1] = Drive (if absolute path)
Groups[2] = Array of directories (if present)
Groups[3] = Filename
@"^((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.){3,3}(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])$"Validates a IP Address (incl. IP range)

Groups[2] = Class C Network
Groups[3] = Class C Host
@"^((0|128|192|224|240|248|252|254|255)\.){3,3}(0|128|192|224|240|248|252|254|255)"Validates a Subnet-Mask (incl. valid range)
@"^[A-z_][\w\-]{2,15}$"
or (german):
@"^[A-zöäüÖÄÜ][\wöäüÖÄÜß\-]{2,15}$"
Username (3-16 characters, starting with letter or underscore)
@"^((([A-z]+)://)?(\w+:\w+@)?(([\w\.\-~]+\.)?[\w\.\-~]+)(:\d+)?)?(/([^\n#?!$&'\(\)\[\]/:;=@]+?/)*([^\n#?!$&'\(\)\[\]/:;=@]+)?(\?([\w%]+?=[\w%]+\&)*[\w%]+?=[\w%]+)?(#[\w%]+)?)?$"Validates a URL (relative and absolute) in detail.

Groups[3] = Protocol
Groups[5] = username:password
Groups[6] = Serveraddress
Groups[9] = Port
Groups[11] = Array of resource path
Groups[12] = Resourcename
Groups[13] = Parameter-String
Groups[15] = Text Anchor

 

 

Example of usage:

 

 

VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

07.04.2016

 

Seitenbetreiber

Stefan Tobert
Wiesenstraße 1
36129 Gersfeld
Deutschland

 

Kontakt

addr

 

 


Libaries are designed to easily obtain content from local or remote sources. This can be a

  • zip file (as local or web address)
  • directory of content
  • file (as local or web address)

 

The columns explained

 

  • Name – The visible name of the Libary. Just for information.
  • Path – Specify here the path that contains the source. This can be a single file (the file is the source), a ZIP-file (the contents are the source), a directory or a http/https web-address to a file or zip file.
  • Target Root – Specifies the target where the contents will be copied (relative to the project-directory). Leave empty to use project root directory
  • Source Root – Specifies the subdirectory to copy from (relative to Path). If empty the whole contents of Path will be copied, else only the given subdirectory. Works only if a directory or zip file is given as path
  • Description – The Description of the libary. Just for information

 

 

VN:F [1.9.22_1171]
Rating: 3.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

18.01.2015

  • Installation on restricted accounts
  • Parser

 

  • Run-Command Binding
  • Parser
  • Syntax Highlighting

 

  • Project-Management
  • Libaries
  • System-Theme
  • Dependency Graph

 

  • Updater
  • Polishing

 

  • visual bug (Default Theme)
  • 5 minor bugs
  • 1 major bug

 

  • File Explorer
  • Intelligent Drag and Drop
  • Preview of Files at Mouseover
  • Build Counter

 

  • Positioning of Symbol-Icons
  • Rendering-Improvement
  • Include-Description corrected

 

  • Integration of Acknex-Manual
  • Pre/Post-Build Actions
  • Parser Performance-Improvements
  • Visualisation of Code-Objects

 

  • Changeable Editor Font
  • Editor remembers Startup-Position and -Size

 

  • Toolbar moved

 

  • Line Highlighting
  • Highlight of the Word under Caret
  • Updater
  • Code Snippets
  • Multi Purpose Go To
  • Copy History
  • Aero-Snap-Support for Panels
  • Self-Closing Brackets

 

  • UI Improvements

 

  • Syntax-Highlighting for Lite-C / HLSL
  • Syntax-Highlighting for (X)HTML / CSS / JavaScript / PHP / SQL
  • Intelligent Syntax-Highlighting for HTML
  • Code-Regions
  • Code-Explorer for CSS / Lite-C
  • Lite-C Code Completion
  • Inline-To Do
  • Integrated Webbrowser (Chromium)
  • Lite-Coding for HTML / PHP
  • Multilingual User-Interface
  • 2 Languages included: German, English
  • 3 UI-Themes
  • Copy Declarations for Lite-C
  • On-the-fly Lite-C-Syntax-Check
  • File Loss Protection
  • Editor-Splitview
  • Toggle Comment
  • Acknex-Toolbar (Commandline + Run + Run Current + Multiplayer-Run)
  • Editor-Integrated Color Chooser
  • SQL-Command-Highlighting
  • Custom Places
  • miscellaneous other Standard-Features

 

  • Parser: Recognition of muted vowels and backslashes in strings.
  • Syntax-Definition: Highlighting Bug of Lite-C/HLSL-Funtions
  • Editor-Crash when entering Multiline-Comments

 

  • Syntax-Highlighting for Lite-C / HLSL
  • Syntax-Highlighting for (X)HTML / CSS / JavaScript / PHP / SQL
  • Intelligent Syntax-Highlighting for HTML
  • Code-Regions
  • Code-Explorer for CSS / Lite-C
  • Lite-C Code Completion
  • Inline-To Do
  • Integrated Webbrowser (Chromium)
  • Lite-Coding for HTML / PHP
  • Multilingual User-Interface
  • 2 Languages included: German, English
  • 3 UI-Themes
  • Copy Declarations for Lite-C
  • On-the-fly Lite-C-Syntax-Check
  • File Loss Protection
  • Editor-Splitview
  • Toggle Comment
  • Acknex-Toolbar (Commandline + Run + Run Current + Multiplayer-Run)
  • Editor-Integrated Color Chooser
  • SQL-Command-Highlighting
  • Custom Places
  • miscellaneous other Standard-Features

 

  • Parser: Parsing of special expressions
  • UI-Bug in CodeJumper
  • Grid-Splitter in Editor now centered

 

  • Syntax-Highlighting for Lite-C / HLSL
  • Syntax-Highlighting for (X)HTML / CSS / JavaScript / PHP / SQL
  • Intelligent Syntax-Highlighting for HTML
  • Code-Regions
  • Code-Explorer for CSS / Lite-C
  • Lite-C Code Completion
  • Inline-To Do
  • Integrated Webbrowser (Chromium)
  • Lite-Coding for HTML / PHP
  • Multilingual User-Interface
  • 2 Languages included: German, English
  • 3 UI-Themes
  • Copy Declarations for Lite-C
  • On-the-fly Lite-C-Syntax-Check
  • File Loss Protection
  • Editor-Splitview
  • Toggle Comment
  • Acknex-Toolbar (Commandline + Run + Run Current + Multiplayer-Run)
  • Editor-Integrated Color Chooser
  • SQL-Command-Highlighting
  • Custom Places
  • miscellaneous other Standard-Features

 

  • Black Textbox-background in bright Theme (ChooseURL-Window) fixed
  • Webbrowser cleared content if a new file was created
  • Font Sizes now changeable
  • Optimized setup-routine

 

  • Syntax-Highlighting for Lite-C / HLSL
  • Syntax-Highlighting for (X)HTML / CSS / JavaScript / PHP / SQL
  • Intelligent Syntax-Highlighting for HTML
  • Code-Regions
  • Code-Explorer for CSS / Lite-C
  • Lite-C Code Completion
  • Inline-To Do
  • Integrated Webbrowser (Chromium)
  • Lite-Coding for HTML / PHP
  • Multilingual User-Interface
  • 2 Languages included: German, English
  • 3 UI-Themes
  • Copy Declarations for Lite-C
  • On-the-fly Lite-C-Syntax-Check
  • File Loss Protection
  • Editor-Splitview
  • Toggle Comment
  • Acknex-Toolbar (Commandline + Run + Multiplayer-Run)
  • Editor-Integrated Color Chooser
  • SQL-Command-Highlighting
  • Custom Places
  • miscellaneous other Standard-Features

 

  • no Bugfixes so far

 

VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

23.12.2014

 

Extended Lite-C Syntax Highliting

highlight

The code highlighting is very advanced compared to other IDEs and editors. The highlighting of engine-specific functions and variables differs to user defined content

 

Fully customizable workspace

customize

Like other professional IDEs consists the workspace of panels and documents and can be customized by the developer. The system is based on AvalonDock and supports all of the features, like Aero Snap.

 

Multi-Purpose Go To

goto

An innovative feature which sets Horus apart from other solutions. Just press Ctrl+G and type something in. Horus tries to estimate where do you want to go. This can be a line of the current document, the definition of a var / function / struct or a codefile in the project

 

Copy/Paste-History

history

When copying text in Horus the last 10 scraps remain in the memory and can still be pasted, not with Ctrl+V, but with Ctrl+Shift+V

 

Code-Snippets and Templates

snippets

Create snippets of often used code (for example a function prototype) and fill it in if needed by selecting it via autocomplete. This mechanism is very similar to Visual Studio Code Snippets.

 

Code-Regions

regions

Start a multiline comment with region xxx, add a second one it with endregion and Horus will fold anything between. You can use this for better organizing your code. This is similar to the C# #region directive. But it is based on comment blocks, to remain the correctness of code.

 

File Loss Protection

restore

Horus takes care about your work. The open files are continuously backuped. If your computer crashes Horus will notice this and ask you in a gently way if you want to restore the lost information. Horus itself should not crash, Released versions run on a very well tested codebase. This is one reason why the development of Horus is not very fast, it´s build against reliability

 

No saving needed

Closing Horus will not annoy you by popping up millions of do-you-want-to-save-your-changes-dialogboxes. It will just close Horus without asking you. But all of the unsaved work isn´t lost. It is saved temporarily and gets reloaded if the editor starts again. It is, as you never closed Horus

VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

23.12.2014

Feature-List

The following table contains added and planned  features of the IDE:

VersionTypeDescriptionRelease
3.1Feature[0%] Custom commands - Execute custom logic using shortcuts to be announced
Feature[0%] Multiple Layouts - Save as many UI layouts you like and switch between them easily
Feature[0%] Git Integration - use Git seamlessly in Horus
Improvement[0%] Customizable Theme colors - specify the Theme colors manually to create your personal look and feel
Improvement[0%] Project Explorer - view codefiles in include hierarchy
3.0FeatureProject-Management - Create multiple projects like Eclipse or Visual Studio

2014-08-21

FeatureProject-Explorer - A file explorer for projects
FeatureSystem-Theme - A theme which adapts to the system color scheme
FeatureProject Page: All important information about the project on one view
FeatureCode Metrics: Count SLOC (and more) for projects
FeatureAutomatic Acknex-Configuration: Horus tries to detect an installed GameStudio and configure itself for usage
FeaturePackage Manager: Add content to projects from the internet or your local drive
Improvement Restructure Configuration-Menu
2.3FeatureFile Explorer: browse through the file system directly in the IDE. It is tree-based and provides the explorer context menu, auto-refresh of entires and custom root nodes (i.e. your project path)

2014-04-06

FeatureIntelligent Drag & Drop: Drag and drop files into the code-editor and Horus will insert the file of type x into code of type y with correct syntax. It is based on the snippet engine and can be customized by the user
FeatureIntelligent Tool-Tips: Preview code and image-files on mouseover
FeatureBuild-Counter: Function, that updates a certain Lite-C-Constant (Define) in the code at every publish/run action for automatic versioning of the project
ImprovementBuild against A8.45
2.2FeatureAcknex Manual Integration: The Helpfile of the A7/A8-Engine is now embedded into a panel and on move on an engine-function or variable the corresponding page is opened

2013-12-28

FeaturePre/Post-Build/Run Commands: Custom scripts that can be executed when a run or a publish-process starts or ends
FeatureVisualisation of Variable-Positions: Icons on the left side show positions of variables and functions in Code
FeatureCode-Snippets for structs: New default snippets added
ImprovementParser Performance
BugfixMinor Bugfixes
2.1FeatureCode Snippets: Code can be stored as a snippet and added in the document by using autocomplete or the snippet selector

2012-09-23

FeatureMulti-Purpose Go To: By pressing Ctrl+G the user can go to code lines, variables or open files - depending on the input
FeatureLine and Word Highlight: Highlight of the current word and line
FeatureAero Snap-Support: Panels and Windows can snap to screen-corners
FeatureHistory of copies: The last 10 (or more) copied texts in the clipboard is remembered and can be searched and inserted by pressing Ctrl+Shift+V
FeatureUpdater: Horus checks automatically for Updates
FeatureSelf-closing Brackets: On entering opening brackets the closing bracket can be inserted as well (in the editor configuration)
FeatureParameter selection: Tab can be used to switch between parameters of a function
ImprovementCode Completion Performance
ImprovementUser Interface and Themes
BugfixEditor-Freeze while entering comments

 

Help to Improve

Do you miss a cool feature or do you have found a bug? Please let me know and leave a comment (or send an email).

VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

25.12.2014

Version 1

Codename “cyanPhoelogo_bluenix”

This branch was the first finished branch of Horus.
The main focus of this branch was the basic IDE-Architecture and early support for some Web-Languages like HTML and CSS. A stable Version 1.0.0, 1.1.0 and 1.2.0 has been finished successfully.

Main Features of this branch:

  • Basic Editor-Features (Configuration-Management, File-Management, etc)
  • UI-Design (Menus, Toolbars, arrangeable Panels, etc)
  • Syntax-Highlighting for Web-Languages
  • Integrated Color Chooser

With ending of 1.x the editor was a first useful alternative to some common Web-Editors and prepared for the next big step of its development: Version 2.

 

Version 2

logo_redCodename “firebrickGriffin”

This branch is the first public release of Horus.
The main focus of this branch is the GameStudio-Support. The aim is to provide a useful IDE and an alternative to the scripting editor SED.

Main Features of this branch:

  • Syntax-Highlighting of GameStudio-Related files and formats
  • Build-Task for Acknex-Games (Run and Publish)
  • Code Completion
  • Documenting-System (see Description and Information of functions, etc)
  • Refactoring Tools for Lite-C

There are 4 minor releases: 2.0.0 – 2.3.0
With ending of 2.x the editor is a handy and stable IDE for Lite-C.

 

Version 3

logo_greenCodename “lawngreenParrot”

This is the upcoming branch of Horus. It is currently under development.
The main focus of this branch is the project support. The aim is to provide a better project-management.

Main features of this branch:

  • Project-Files and their management
  • seemless integration of a Bugtracker
  • Versioning-Support

With ending of 3.x the editor should be a full-featured IDE for Lite-C.

 

Version 4

logo_blueCodename “aquaDuck”

This branch will extend version 3 by useful tools and generators.

First versions are not expected before 2015.

 

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: +1 (from 1 vote)

Install the required Software

At first, install

  • .NET 4.0
  • 3D Gamestudio A7/A8
  • Horus IDE

The programs directory doesn´t matter, you can install 3DGS and Horus wherever you want.

Configure for Gamestudio

Start Horus and open the Configuration-Window (Extras > Options).
Next, specify the 3DGS-Installation-Folder. It has to be the GStudio7/GStudio8-Folder. Select your Gamestudio-Edition.
You can also set your project-folder.


The “Rearrange Engine Window”-Feature rearranges both Engine Windows if you click on Multiplayer-Run (Shift+F5), so that they fit perfectly on your screen. If you don´t like this, just switch it off. Before Horus moves the Engine-Window it waits the specified delay (this is needed because the startup-screen of the engine cannot be moved. on slower loading projects you will have to increase this value).

Restart Horus

Now restart the editor. After you´ve started it again you´ll see that the Acknex-Menu and -Toolbar has been added. Now you can use Horus for Gamestudio-Development.

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: +1 (from 1 vote)