<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8479718283588684928</id><updated>2026-09-14T17:22:15.733+02:00</updated><category term="personal branding"/><category term="automation"/><category term="marketing"/><category term="programming"/><category term="url shortener"/><category term="Progress OpenEdge ABL"/><category term="blogging"/><category term="corporate design"/><category term="linux/unix"/><category term="mac"/><category term="virtual machine (VM)"/><category term="virtualbox"/><category term="vmware"/><category term="website"/><category term="RESTful"/><category term="SAP BusinessObjects Business Intelligence"/><category term="SAP Web Intelligence"/><category term="about.you"/><category term="angular"/><category term="angular 2.0"/><category term="angularjs"/><category term="brand"/><category term="branding"/><category term="business cards"/><category term="cake recipe"/><category term="cleancode"/><category term="components"/><category term="design"/><category term="hashtag"/><category term="javascript"/><category term="js"/><category term="kendo ui"/><category term="ng-controller"/><category term="ng-model"/><category term="ng-repeat"/><category term="ng-run"/><category term="promise"/><category term="qrcode"/><category term="recipe"/><category term="software development"/><category term="stamp"/><category term="tweet a picture"/><category term="tweets"/><category term="twitter"/><category term="vi editor"/><title type='text'>technology inspiration</title><subtitle type='html'>a brainstorm about technology, methods and life</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.bmline.de/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8479718283588684928/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://blog.bmline.de/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>rotwuschl</name><uri>http://www.blogger.com/profile/10607947701179624674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>15</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8479718283588684928.post-4163383211651588085</id><published>2016-10-17T20:00:00.000+02:00</published><updated>2017-03-08T13:33:30.552+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="angular"/><category scheme="http://www.blogger.com/atom/ns#" term="angular 2.0"/><category scheme="http://www.blogger.com/atom/ns#" term="angularjs"/><category scheme="http://www.blogger.com/atom/ns#" term="cleancode"/><category scheme="http://www.blogger.com/atom/ns#" term="components"/><category scheme="http://www.blogger.com/atom/ns#" term="javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="js"/><category scheme="http://www.blogger.com/atom/ns#" term="kendo ui"/><category scheme="http://www.blogger.com/atom/ns#" term="ng-controller"/><category scheme="http://www.blogger.com/atom/ns#" term="ng-model"/><category scheme="http://www.blogger.com/atom/ns#" term="ng-repeat"/><category scheme="http://www.blogger.com/atom/ns#" term="ng-run"/><category scheme="http://www.blogger.com/atom/ns#" term="promise"/><title type='text'>AngularJS for newbies</title><content type='html'>A few days ago Angular was announced in the final version 2.0.0. Time to make a review on the version AngularJS 1.x and on some best practice examples.
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
&lt;h3&gt;Architecture&lt;/h3&gt;&lt;br /&gt;
&lt;h3&gt;The MVC* model&lt;/h3&gt;
The AngularJS architecture use the MVC (Model View Controller) design pattern, a two-way data binding and dependency injection. Unlike some other MVC frameworks AngularJS extends the HTML code but, instead of abstracting it. With the MVC pattern, the application logic is separated from the user interface layer. The controller get all requests from the application and worked with the model to prepare the data for the view. The view use all these data to present them to the user.&lt;br /&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsGGrZ-XtP_2HsTuVALx9Rp4cj8p3Whw1zL6qjvUi_oFwrdq5YJnShr-vq8oX7zOE3QkYDuLT8l-LisOYg4wcKxVColf2x6gKRjeRpW2XMQcgMFeLSvdVSHRNQv_ccCne-DBuzXERpRmxr/s1600/mvc-model.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsGGrZ-XtP_2HsTuVALx9Rp4cj8p3Whw1zL6qjvUi_oFwrdq5YJnShr-vq8oX7zOE3QkYDuLT8l-LisOYg4wcKxVColf2x6gKRjeRpW2XMQcgMFeLSvdVSHRNQv_ccCne-DBuzXERpRmxr/s400/mvc-model.jpg&quot; width=&quot;400&quot; height=&quot;225&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
The Model:&lt;br /&gt;
The model is responsible for managing application data. It responds to the request from view and to the instructions from controller to update itself.
&lt;br /&gt;&lt;br /&gt;
The View:&lt;br /&gt;
A presentation of data in a particular format, triggered by the controller&#39;s decision to present the data.
&lt;br /&gt;&lt;br /&gt;
The Controller:&lt;br /&gt;
The controller responds to user input and performs interactions on the data model objects. The controller receives input from the injected factory service and then performs business operations that modify the state of the data model. With the two-way data binding any changes on the view layer could be detected in the controller.&lt;br /&gt;&lt;br /&gt;
The Service:&lt;br /&gt;
An additional layer will be archived by use a factory service to fetch the data from the back-end system. In the factory service the data will be validated, enriched and hold. This will make the controller lighter and improve performance. A target is here to make the controller as small as possible. In combination with Dependency Injection, the factory services that called the back-end system, is used in the controller by inject them.&lt;br /&gt;&lt;br /&gt;
&lt;h3&gt;AngularJS 1.x&lt;/h3&gt;
To make managing a portion of an HTML page of AngularJS, this must be enclosed in an element with the attribute &quot;ng-app&quot;. After loading the page index.html, AngularJS searches for the element &quot;ng-app&quot; and analyzes thereof enclosed area. The application will be bootstrapped by detected this area.
&lt;pre class=&#39;prettyprint&#39;&gt;
&amp;lt;body id=&amp;quot;myapp&amp;quot; ng-app=&amp;quot;app&amp;quot; class=&amp;quot;full-height&amp;quot;&amp;gt;
   &amp;lt;div class=&amp;quot;full-height&amp;quot;&amp;gt;
      &amp;lt;div class=&amp;quot;header&amp;quot; ui-view=&amp;quot;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;
      &amp;lt;div class=&amp;quot;menu&amp;quot;   ui-view=&amp;quot;menu&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;
      &amp;lt;div class=&amp;quot;split&amp;quot;  ui-view=&amp;quot;splitter&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;
   &amp;lt;/div&amp;gt;
   &amp;#x2026;
&amp;lt;/body&amp;gt;
&lt;/pre&gt;
Now the ng-module concept comes into the focus. The ng-module is a global place for creating, registering and retrieving Angular modules. All modules that should be available to an application must be registered using this mechanism. A module is a collection of services, controllers, filters, directives and configuration information. Ng-module is used to configure the dependency injection part. We named the ng-app “app”, so angular is search in the javascript module files this name.&lt;br /&gt;&lt;br /&gt;
Ng-module is also used to inject foreign packages. In our programs we inject the &lt;a target=&quot;_blank&quot; href=&quot;https://github.com/angular-ui/ui-router&quot;&gt;ui-router service&lt;/a&gt;, &lt;a target=&quot;_blank&quot; href=&quot;https://github.com/Foxandxss/angular-toastr&quot;&gt;toastr&lt;/a&gt;, &lt;a target=&quot;_blank&quot; href=&quot;https://material.angularjs.org&quot;&gt;angular material&lt;/a&gt;, &lt;a target=&quot;_blank&quot; href=&quot;https://github.com/andresesfm/angular-underscore-module&quot;&gt;underscore&lt;/a&gt; and &lt;a target=&quot;_blank&quot; href=&quot;http://docs.telerik.com/kendo-ui/AngularJS/introduction&quot;&gt;Kendo UI&lt;/a&gt; (alternative &lt;a target=&quot;_blank&quot; href=&quot;https://github.com/angular-google-chart/angular-google-chart&quot;&gt;Google charts&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;

In our application the next element is now the ng-run, these element is the initial start point for the application. We use these point to start the current state of the application with the ui-router part. Our application knows at this construction point only one state (or if you will to say, only one page “detailview”). But the ui-router part has also other issues, because it separates parts from each other, make them simpler and bring some performance improvements.&lt;br /&gt;&lt;br /&gt;
With the design of three parts (header, menu and detail) we get a flexible state based concept that allow us to create several pages in one structure in combination with the router concept.&lt;br /&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgoKGVe-Z4VYleiRYLXRUrzS0oy7YSm0Bp3f1UNZWHpB6j1XYRPOpk5lrhDPnoa3mWnNv85SyYbp_b45i4JNRXP1j22E7SQC6Da3ve4nOACNUICZ6zn42jN0HTTDf5BE25gBfugqKeJywZ/s1600/detail.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgoKGVe-Z4VYleiRYLXRUrzS0oy7YSm0Bp3f1UNZWHpB6j1XYRPOpk5lrhDPnoa3mWnNv85SyYbp_b45i4JNRXP1j22E7SQC6Da3ve4nOACNUICZ6zn42jN0HTTDf5BE25gBfugqKeJywZ/s320/detail.jpg&quot; width=&quot;320&quot; height=&quot;180&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;
Every element could now be defined separated in the config file of the router, so that based on the state of the application, several pages could be displayed. The combination allow us now to define per view a html sub-page and a controller for this part.

&lt;pre class=&#39;prettyprint&#39;&gt;
   .state(&#39;tileview&#39;, {
                url: &#39;/&#39;,
                views: {
                    &#39;&#39;: {
                        templateUrl: &#39;./js/header/header.html&#39;,
                        controller: &#39;headerController&#39;,
                        controllerAs: &#39;hc&#39;
                    },
                    &#39;menu&#39;: {
                        templateUrl: &#39;./js/menu/menu.html&#39;,
                        controller: &#39;menuController&#39;,
                        controllerAs: &#39;mc&#39;
                    },
                    &#39;detail&#39;: {
                        templateUrl: &#39;./js/detail/detail.html&#39;,
                        controller: &#39;detailController&#39;,
                        controllerAs: &#39;dc&#39;
                    }
                }
            })
        
&lt;/pre&gt;
Controller are defined in AngularJS using the property &quot;ng-controller&quot;. Controller and view communicate via the &quot;scope&quot;, a container can be accessed on its contents from both sides. With the &quot;{{}}&quot; notation can be accessed by means of a one-way binding in HTML on elements of the &quot;scope&quot;. The data can be displayed, but not restored. Two-way bindings allow writing in the &quot;scope&quot; and logically can only be used on input elements. To get the data from the back-end system, we inject factory services in the controller.&lt;br /&gt;&lt;br /&gt;
The ng-provider service factory is the next main part of the concept. These services are singleton objects and are functions which, in turn, are created by a service provider. The service providers are constructor functions. When instantiated they must contain a property which holds the service factory functions.&lt;br /&gt;&lt;br /&gt; 
&lt;h3&gt;Components Folder&lt;/h3&gt;
The components folder will contain the actual part of the angular app. So you could think of this like a multiple mini AngularJS application inside of your AngularJS application. 
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMy27-xR2QFxYYF2D2BMudcByOmF1fA_9UKH1EnnTEHUnfkJawItcaia0YURtA17V1Yfez_3Ke08tIjdC746z97nwI2LZ-0Q9vs-aEn-aE3-hcGs5998_jXwZE5gkYd77BmXbDLyU6cV61/s1600/component_mini_mvc-model.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMy27-xR2QFxYYF2D2BMudcByOmF1fA_9UKH1EnnTEHUnfkJawItcaia0YURtA17V1Yfez_3Ke08tIjdC746z97nwI2LZ-0Q9vs-aEn-aE3-hcGs5998_jXwZE5gkYd77BmXbDLyU6cV61/s400/component_mini_mvc-model.jpg&quot; width=&quot;400&quot; height=&quot;225&quot; /&gt;&lt;/a&gt;&lt;/div&gt;

In this example we describe the header section. The header part is separated into four files and for simple collection reasons separated in an own folder named “/header”. So for every part of the application we get components folders, these folders holds all necessary information for a component.&lt;br /&gt;&lt;br /&gt;
&lt;table style=&quot;text-align: left&quot;&gt;
      &lt;tr valign=&quot;top&quot;&gt;
        &lt;th&gt;header.html&lt;/th&gt;
        &lt;th&gt;The html page. The scope is presented by “hc” (headerController).&lt;/th&gt;
      &lt;/tr&gt;
      &lt;tr valign=&quot;top&quot;&gt;
        &lt;th&gt;header.module.js&lt;/th&gt;
        &lt;th&gt;Makes a module for this part, so that is could be injected by other element and factual holds other modules for a deeper nesting.&lt;/th&gt;
      &lt;/tr&gt;
      &lt;tr valign=&quot;top&quot;&gt;
        &lt;th&gt;header.controller.js&lt;/th&gt;
        &lt;th&gt;The controller, based on the same module name.&lt;/th&gt;
      &lt;/tr&gt;
      &lt;tr valign=&quot;top&quot;&gt;
        &lt;th&gt;header.service.js&lt;/th&gt;
        &lt;th&gt;The factory service, based on the same module name and injected in the controller. This service fetches data from back-end system and prepare data for the controller.&lt;/th&gt;
      &lt;/tr&gt;
&lt;/table&gt;
&lt;br /&gt;&lt;br /&gt;
The folder structure of the app looks like this:&lt;br /&gt;&lt;br /&gt; 
&lt;table style=&quot;text-align: left&quot;&gt;
      &lt;tr valign=&quot;top&quot;&gt;
        &lt;th&gt;js/&lt;/th&gt;
        &lt;th&gt;header/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;menu/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;detail/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;common/&lt;/th&gt;
        &lt;th&gt;header.html&lt;br /&gt;
        header.module.js&lt;br /&gt;
        header.controller.js&lt;br /&gt;
        header.service.js&lt;br /&gt;
        menu.html&lt;br /&gt;
        menu.module.js&lt;br /&gt;
        menu.controller.js&lt;br /&gt;
        menu.service.js&lt;br /&gt;
        detail.html&lt;br /&gt;
        detail.module.js&lt;br /&gt;
        detail.controller.js&lt;br /&gt;
        detail.service.js&lt;br /&gt;
        service/&lt;br /&gt;&lt;br /&gt;
        directive/&lt;br /&gt;
        filter/&lt;br /&gt;
        constant&lt;/th&gt;
        &lt;th&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;message.service.js&lt;br /&gt;...&lt;br /&gt;...&lt;br /&gt;...&lt;br /&gt;...&lt;/th&gt;
      &lt;/tr&gt;
      &lt;tr valign=&quot;top&quot;&gt;
        &lt;th&gt;...&lt;/th&gt;
      &lt;/tr&gt;
&lt;/table&gt;
&lt;br /&gt;
&lt;h3&gt;Implementation
&lt;/h3&gt;
No we have a look at some of the key features of AngularJS.&lt;br /&gt;&lt;br /&gt;
&lt;h3&gt;Cleancode&lt;/h3&gt;
When you work in a team, it is easier to use a style that is accepted from all over the world. My code examples based on the clean code &lt;a href=&quot;https://github.com/johnpapa/angular-styleguide/blob/master/a1/README.md&quot;&gt;style guide&lt;/a&gt; from John Papa (&lt;a href=&quot;https://twitter.com/john_papa?lang=en&quot;&gt;@John_Papa&lt;/a&gt; ) for AngularJS.&lt;br /&gt;&lt;br /&gt; 
&lt;h3&gt;Component Design Example: header&lt;/h3&gt;
The following code examples shows the combination of the header part. Through the loose coupling between the areas, we can get easy to maintain system.&lt;br /&gt;&lt;br /&gt; 
&lt;h4&gt;Header module (header.module.js)&lt;/h4&gt;
The module name for this area is “header”. The controller and the service factory get the same module name for this area and could be loaded as package when needed.
&lt;pre class=&#39;prettyprint&#39;&gt;
(function () {
    &#39;use strict&#39;;
    angular.module(&#39;header&#39;, [
    ]);
})();
&lt;/pre&gt;
&lt;h4&gt;Service factory module (header.service.js)&lt;/h4&gt;
The service factory get the initialization during the injection in the controller. The factory send back the available services. In this example we inject the $http service. The $http service is a standard function from AngularJS. $http returns a promise so we can return back the promise immediately. This means that the “.then” part runs after the result from the back-end systems arrived.
&lt;pre class=&#39;prettyprint&#39;&gt;
(function () {
    &#39;use strict&#39;;

    angular
        .module(&#39;header&#39;)
        .factory(&#39;headerService&#39;, headerService);

    headerService.$inject = [&#39;$http&#39;, &#39;$q&#39;];

    function headerService($http, $q) {
        var service = {
            user: [],
            client: [],
            loadHeaderData: loadHeaderData,
        };
        return service;

        ////////////

        function loadHeaderData() {
            return $q.all([loadUserData(),loadClientData()]).then(function (result) {
                service.user = result[0];
                service.client = result[1];
            });
        }

        function loadUserData() {
            return $http.get(&#39;../js/header/user.json&#39;);
        }

        function loadClientData() {
            return $http.get(&#39;../js/header/client.json&#39;);
        }
    }
})();
&lt;/pre&gt;
&lt;h4&gt;Controller module (header.controller.js)&lt;/h4&gt;
The controller get now the factory service injected. An asynchronous call was started during the start process and will be finished when the promises get a result from the back-end system.
&lt;pre class=&#39;prettyprint&#39;&gt;
(function () {
    &#39;use strict&#39;;

    angular
        .module(&#39;header&#39;)
        .controller(&#39;headerController&#39;, headerController);

    headerController.$inject = [&#39;headerService&#39;, &#39;messageService&#39;];

    function headerController(headerService, messageService) {
        var hc = this;

        hc.user = [];
        hc.reload = reload;
        hc.spin = headerService.spin;
        loadData();
        
        /////////
        function reload() {
            messageService.addMessage(&#39;reload&#39;, &#39;reload&#39;, null, null);
        }
       
        function loadData() {
            headerService.loadHeaderData().then(function () {
                hc.user = headerService.user;
            });
        }
    }
})();
&lt;/pre&gt;
In our code example we used simple json structure for the client.json 
&lt;pre class=&#39;prettyprint&#39;&gt;
{
    &amp;quot;client&amp;quot;: &amp;quot;D01&amp;quot;,
    &amp;quot;id&amp;quot;: &amp;quot;11&amp;quot;
}
&lt;/pre&gt;
and for the user.json.
&lt;pre class=&#39;prettyprint&#39;&gt;
{
    &amp;quot;name&amp;quot;: &amp;quot;Donald Duck&amp;quot;,
    &amp;quot;city&amp;quot;: &amp;quot;Duckburg&amp;quot;
}
&lt;/pre&gt;
Both files are stored in the same &quot;header&quot; folder.&lt;br /&gt; &lt;br /&gt;
&lt;h4&gt;Html Part (header.html)&lt;/h4&gt;
The databinding between Controller and View Model, which was served by the scope (in our case the scope get the name “hc” – headerController) is realized by “{{}}” the two brackeds. In this example hc.user.name holds the information about the user name. “hc” is the scope variable, “user” is the collection and “name” holds the information about the user name.
&lt;pre class=&#39;prettyprint&#39;&gt;
&amp;lt;div class=&amp;quot;pure-g header-box&amp;quot;&amp;gt;
    &amp;lt;div class=&amp;quot;pure-u-14-24 header-pos&amp;quot;&amp;gt;
        &amp;lt;label  ng-if=&amp;quot;::hc.user.name&amp;quot; class=&amp;quot;header-user&amp;quot;&amp;gt;{{::hc.user.name}}&amp;lt;/label&amp;gt;
    &amp;lt;/div&amp;gt;

    &amp;lt;div class=&amp;quot;pure-u-7-24 header-pos&amp;quot;&amp;gt;
    
    &amp;lt;/div&amp;gt;

    &amp;lt;div class=&amp;quot;pure-u-3-24 header-pos&amp;quot;&amp;gt;
        &amp;lt;div class=&amp;quot;pull-right pointer&amp;quot; ng-click=&amp;quot;::hc.reload();&amp;quot; title=&amp;quot;Reload&amp;quot;&amp;gt;
            &amp;lt;i class=&amp;quot;fa fa-refresh&amp;quot; ng-class=&amp;quot;{&#39;fa-spin&#39; : hc.spin}&amp;quot;&amp;gt;&amp;lt;/i&amp;gt;
        &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/pre&gt;
Ng-if shows the information about the user only, when the collection exists. AngularJS has per default a double binding on the element by “{{}}”, to reduce this binding during the refresh of a page, it is possible to create a single binding by add the both double points  “::”. This is a performance issue, and in this case the user information is only one time updated. So it is not necessary to update this information more than once.&lt;br /&gt;&lt;br /&gt;
&lt;h3&gt;$http and Promises&lt;/h3&gt;
$http service is used to get data from the back-end system. $http give a promise back and this is one of the key factors to use AngularJS, other concept use promises as well and in Angular 2.0 observables are the new concept, but based on the request of the most backend systems, this is one of the killer features of use AngularJS. This is not new and is available in other MVCs as well (but in AngularJS automatic integrated in the main core), but this allows you to build fast and small application in a short time. The old way is to use callbacks, but this often ends in a callbacks nested callbacks, nested inside callbacks … (After this you could not maintain such a system any more).
&lt;br /&gt;&lt;br /&gt;
A promise is a proxy for a value not necessarily known at its creation time. With promises, rather than an asynchronous call accepting a callback, it instead returns a promise. The calling code can then wait until that promise is fulfilled before executing the next step. To do so, the promise has a method named “then”, which accepts a function that will be invoked when the promise has been fulfilled. 
&lt;br /&gt;&lt;br /&gt;
Promises helps to run functions asynchronously, and use their return values when they are done processing. There are various ways to combine them. With race conditions, chaining and combining it is possible to run complex based combination of data fetching in the simple way. 
&lt;br /&gt;&lt;br /&gt;
In the controller service the data will be updated when they are available from the injected factory service “headerService”.
&lt;pre class=&#39;prettyprint&#39;&gt;
//controller
loadData();

function loadData() {
            headerService.loadHeaderData().then(function () {
                hc.user = headerService.user;
            });
        }

&lt;/pre&gt;
As result usually a json object is fetched. In the factory service the data will be fetched asynchronously from the back end service.
&lt;pre class=&#39;prettyprint&#39;&gt;
//factory 
function loadHeaderData() {
         return $http.get(&amp;quot;Z_CR_BSP_GET_USER_RUNTIME_DATA&amp;quot;)
                .then(function (result){
                   service.user = result;
                });
}
&lt;/pre&gt;
Now when the data returns, the system automatic update the front end part. How easy is this! So this is a non blocking asynchrony code combine with modules in the router. These combination makes it very fast, module oriented and easy to maintain, instead of a callbacks, that nested in callbacks, that nested in callbacks ….
&lt;br /&gt;&lt;br /&gt;
For common failure messages we abstact the $http service in a separate module with the name rest.service.js. This allows us to create common messages when the connection between the front-end part and back-end system fails. What does this mean? Instead of inject the $http service in the factory service of a module and manage the failures there, we inject the common rest.service.js in the factory. So if a failure from the connection between the front-end system comes up, we could there give information to the user on a common module and have not implemented it everywhere.
&lt;br /&gt;&lt;br /&gt;
&lt;h3&gt;Ng-controller&lt;/h3&gt;
There are more options to set a controller for a html file. In the ui-router module the controller was set externally (see ui-router). The other way is used in the html part. Here the controller will set when then html part was called by a part of the code component. In this example we implement this in the chart.html file chart.controller.js.
&lt;pre class=&#39;prettyprint&#39;&gt;
&amp;lt;div class=&amp;quot;charts&amp;quot; ng-controller=&amp;quot;chartController as cc&amp;quot;&amp;gt;
       ...
    &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/pre&gt;
&lt;h3&gt;Broadcast events&lt;/h3&gt;
So now we have a loose coupled system, with the maximum on parallelization on back-end request. Between the controllers, we implement a broadcast event, so that on a click on the header part, the tiles used sub-elements could be reloaded.
&lt;br /&gt;&lt;br /&gt;
Therefore we inject the “messageService” in both controllers.
With the click event on the html Page ng-click=&quot;hc.reload();&quot; in the controller of the header “headerController”, we fire the messageService event.
&lt;pre class=&#39;prettyprint&#39;&gt;
function reload() {
         messageService.addMessage(&#39;emailController&#39;, &#39;reload&#39;, null, null);
}
&lt;/pre&gt;
The messageService factory is from type singleton and is only one time initialized. 
&lt;pre class=&#39;prettyprint&#39;&gt;
(function () {
    &#39;use strict&#39;;

    angular
       .module(&#39;common.service&#39;)
       .factory(&#39;messageService&#39;, messageService);

    messageService.$inject = [&#39;$rootScope&#39;];

    function messageService($rootScope) {
        var service = {
            addMessage: addMessage,
            message: {}
        };

        return service;

        ///////
        function addMessage(receiver, type, value, text, caller) {
            service.message = {
                receiver: receiver,
                type: type,
                value: value,
                text: text,
                caller: caller,
                timestamp: new Date()
            };

            $rootScope.$broadcast(&#39;messageAdded&#39;);
        }
    }
})(); 
&lt;/pre&gt;
In the controller of an element that should be reloaded (example tileController), we search in the global scope variable for updates, and if a message was received for this controller, we fire the event based on the request. This allow you to combine light message sharing between the controllers. For heavy data loading between two controllers it is better to create an own factory service.
&lt;pre class=&#39;prettyprint&#39;&gt;
$scope.$on(&#39;messageAdded&#39;, function () {
            var message = messageService.message;
            if (message &amp;amp;&amp;amp; (message.receiver === &#39;emailController&#39;)) {
                switch (message.type) {
                    case &amp;quot;reload&amp;quot;:
                        loadData();
                        break;
                }

            }
        });
&lt;/pre&gt;
&lt;h3&gt;Ng-repeat&lt;/h3&gt;
The ng-repeat directive instantiates a template once per item from a collection. Each template instance gets its own scope, where the given loop variable is set to the current collection item. This allows you to repeat given collection of data. In our project this could be tiles or grid combinations.  Ng-repeat could be insert in every type of html tag. 
&lt;br /&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuMocOD6XIx3bu96wAr-KpA3lbqooSschQXZdB60_vuPYFxFUWqwmex60HxeLxBDAfU1FHtXcFzdq0COzJxIj4DYbX92r6EeqrMQdC6xynd58NeOoFkUV6mq7eaitEf0RpQReQEotqgCJm/s1600/ng-repeat.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuMocOD6XIx3bu96wAr-KpA3lbqooSschQXZdB60_vuPYFxFUWqwmex60HxeLxBDAfU1FHtXcFzdq0COzJxIj4DYbX92r6EeqrMQdC6xynd58NeOoFkUV6mq7eaitEf0RpQReQEotqgCJm/s400/ng-repeat.jpg&quot; width=&quot;400&quot; height=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;br /&gt;
Each size of the component grid could be defined with a other html file. This allows a maximum of flexibility and also an easy to maintain the system.&lt;br /&gt;&lt;br /&gt;
&lt;h3&gt;Build process&lt;/h3&gt;
We combine all AngularJS module files into one big application javascript file. This could be done with gulp process We make then the javascript file available in the index.html file. When combine all javascript parts in one javascript file, it is necessary to bring the elements of the modules (*.module.js) at the first place.
&lt;br /&gt;&lt;br /&gt;
Now have a look at &lt;a target=&quot;_blank&quot; href=&quot;http://bmline.de/angularjs2&quot;&gt;part II&lt;/a&gt; of the AngularJS 1.x version. If you are looking for Angular 2.0 example, please check out &lt;a target=&quot;_blank&quot; href=&quot;http://bmline.de/angular&quot;&gt;this&lt;/a&gt;. 
&lt;br /&gt;&lt;br /&gt;
If you want to check-out one of my applications that was build with angular 1.x and is available in the app store, follow this &lt;a target=&quot;_blank&quot; href=&quot;http://cementgold.bmline.de&quot;&gt;link&lt;/a&gt;.

</content><link rel='replies' type='application/atom+xml' href='http://blog.bmline.de/feeds/4163383211651588085/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.bmline.de/2016/10/angularjs.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8479718283588684928/posts/default/4163383211651588085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8479718283588684928/posts/default/4163383211651588085'/><link rel='alternate' type='text/html' href='http://blog.bmline.de/2016/10/angularjs.html' title='AngularJS for newbies'/><author><name>rotwuschl</name><uri>http://www.blogger.com/profile/10607947701179624674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjsGGrZ-XtP_2HsTuVALx9Rp4cj8p3Whw1zL6qjvUi_oFwrdq5YJnShr-vq8oX7zOE3QkYDuLT8l-LisOYg4wcKxVColf2x6gKRjeRpW2XMQcgMFeLSvdVSHRNQv_ccCne-DBuzXERpRmxr/s72-c/mvc-model.jpg" height="72" width="72"/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8479718283588684928.post-5380579985643076543</id><published>2014-10-10T12:52:00.001+02:00</published><updated>2017-03-17T14:57:47.830+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="automation"/><category scheme="http://www.blogger.com/atom/ns#" term="linux/unix"/><category scheme="http://www.blogger.com/atom/ns#" term="mac"/><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><category scheme="http://www.blogger.com/atom/ns#" term="website"/><title type='text'>Shell script to generate HTML5 gallery</title><content type='html'>You know that, with the years, some collected digital photos are languish in folders. Although there are all kinds of tools to manage this, but if you want to make it public and you do not want to manually bind in a HTML5 file, you need something that do this binding automatically for you.&lt;br /&gt;
For this we use a Bash (shell) script, that can be easily created and modified on Linux / Mac systems.&lt;br /&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;
This script produce several HTML5 files from a flat folder structure that includes an image collection and creates some beautiful sliders based on CSS3. Have a look at the result &lt;a href=&quot;http://berndmartin.net/photos/gallery.html&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt; on berndmartin.net.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://berndmartin.net/photos/gallery.html&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;gallery html5 css3 on berndmartin.net&quot; border=&quot;0&quot; src=&quot;http://bmline.de/img/blog/gallery-html5-css3-berndmartin.png&quot; title=&quot;gallery html5 css3 on berndmartin.net&quot; width=&quot;480&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
[&lt;a href=&quot;http://twitter.com/home/?status=Create%20a%20CSS%20only%20slider%20from%20a%20picture%20collection%20by%20a%20script%20bmline.de/gal%20pic.twitter.com/raDogbvoME&quot; target=&quot;_blank&quot;&gt;Tweet this image&lt;/a&gt;]&lt;/div&gt;
&lt;br /&gt;
The shell script create a main page which is named &quot;gallery.html&quot; in the folder &quot;photos/&quot;, in this file you can see an image for each sub-directory. When you open these link behind an image, you will directed to the picture slider of the sub-directory which is named as &quot;photos/[sub-directory].hmtl&quot;. So the name of the sub-directory is also the name of the created HTML5 file. A hyphen in the sub-directory is displayed as a blank sign for the designation (the subfolder &quot;photos/new-york/&quot; is displayed as &quot;NEW YORK&quot;). The folder structure is flat and end with &quot;photos/[sub-directory]/&quot;.&lt;br /&gt;
&lt;br /&gt;
The image size is controlled by the CSS3 file and in my setting it is 640 px (Pixel). It is recommended previously to reduce the size of the pictures in any sub-directory folder so that the charging time is reduced on the web. On a Mac you can use this command to reduce the size of each image at once to a maximum high or width of 640 px.
&lt;br /&gt;
&lt;pre class=&quot;notranslate&quot; style=&quot;background-color: grey; border: 0px; color: white; font-size: 12px; line-height: 21.599998474121094px; max-height: 15em; overflow: auto; padding: 0px 0.3em;&quot;&gt;sips -Z 640 *.jpg&lt;/pre&gt;
&lt;br /&gt;
Here you can &lt;a href=&quot;http://bmline.de/gzip&quot;&gt;download&lt;/a&gt;&amp;nbsp;the script that generates the &lt;a href=&quot;http://berndmartin.net/photos/gallery.html&quot; target=&quot;_blank&quot;&gt;gallery&lt;/a&gt;&amp;nbsp;and the other html files. You can run this script on Linux, Unix or Mac systems. Therefore you have to executable the script with this command.&lt;br /&gt;
&lt;pre class=&quot;notranslate&quot; style=&quot;background-color: grey; border: 0px; color: white; font-size: 12px; line-height: 21.599998474121094px; max-height: 15em; overflow: auto; padding: 0px 0.3em;&quot;&gt;chmod&amp;nbsp;+x photo-gallery-berndmartin.sh&lt;/pre&gt;
&lt;br /&gt;
Now you can run the script with this command.&lt;br /&gt;
&lt;pre class=&quot;notranslate&quot; style=&quot;background-color: grey; border: 0px; color: white; font-size: 12px; line-height: 21.599998474121094px; max-height: 15em; overflow: auto; padding: 0px 0.3em;&quot;&gt;./photo-gallery-berndmartin.sh&lt;/pre&gt;
&lt;br /&gt;
Make sure that you use the same folder structure that begins with &quot;photos/&quot;. The nice thing is now, if you add more pictures and folders, you can simply run it again.&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.bmline.de/feeds/5380579985643076543/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.bmline.de/2014/10/shell-script-to-generate-html5-gallery.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8479718283588684928/posts/default/5380579985643076543'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8479718283588684928/posts/default/5380579985643076543'/><link rel='alternate' type='text/html' href='http://blog.bmline.de/2014/10/shell-script-to-generate-html5-gallery.html' title='Shell script to generate HTML5 gallery'/><author><name>rotwuschl</name><uri>http://www.blogger.com/profile/10607947701179624674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8479718283588684928.post-5387669807756577090</id><published>2014-10-08T11:00:00.003+02:00</published><updated>2014-11-21T11:45:49.505+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux/unix"/><category scheme="http://www.blogger.com/atom/ns#" term="mac"/><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><category scheme="http://www.blogger.com/atom/ns#" term="vi editor"/><title type='text'>vi editor commands for Unix, Linux and Mac</title><content type='html'>About editor might have been written as about other issues, especially about the &lt;b&gt;vi&lt;/b&gt; editor already more. He is one of the older representatives and remains one of the most important tools in Unix, Linux, and perhaps also in the Mac environment. Of course, today there are &lt;a href=&quot;http://en.wikipedia.org/wiki/List_of_text_editors&quot; target=&quot;_blank&quot;&gt;many editors&lt;/a&gt; who have become each an important part of the development and administration process, particularly noteworthy are &lt;b&gt;sublime text&lt;/b&gt; and &lt;b&gt;textpad&lt;/b&gt;. But one of the fastest representatives at all, not only on servers, is the editor &lt;b&gt;vi&lt;/b&gt;.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;b&gt;vi&lt;/b&gt; is considered controversial and also acts as a deterrent to some, because it works a totally different ideology follows. In the operation of all other programs and editors one is usually equal in editable mode, not in &lt;b&gt;vi&lt;/b&gt;, you have to give him only a instruction feedbacks that you would now like to add something. Other functions are only some getting used to, but the learning curve is very steep and with a few keystrokes you can reach over with your mouse and keyboard from other programs.&lt;br /&gt;
&lt;br /&gt;
This short command summary of the &lt;b&gt;vi&lt;/b&gt; editor (and his clones VIM, calvin, elvis, lemmy, Nvi, WinVi, ...) is not intended as a compendium to document all the commands and the honored readers alike to take the courage that was indeed documented with countless here commands the reference of the writer, but also at the same time the desire to learn this editor was taken.&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
How to start with &lt;b&gt;vi&lt;/b&gt;&lt;/h2&gt;
First we open the editor on the console with this command and create the non existing file &quot;test.txt&quot;.
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://bmline.de/&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;vi editor, open and create a new file &quot; border=&quot;1&quot; src=&quot;http://bmline.de/img/blog/vi-editor-open.png&quot; title=&quot;vi editor, open and create a new file &quot; width=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Then we want to insert something by first press the key &quot;i&quot;, now we are in the insert mode, now we write the words &quot;Hello World&quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://bmline.de/&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;vi editor, switch to insert mode and type Hello World&quot; border=&quot;1&quot; src=&quot;http://bmline.de/img/blog/vi-editor-insert.png&quot; title=&quot;vi editor, switch to insert mode and type Hello World&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Now we leave the insert mode, by press the &quot;ESC&quot; button, save the results and close the vi editor by insert the keys &quot;:&quot;, &quot;w&quot; and &quot;q&quot;.
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://bmline.de/&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;vi editor, escape from insert mode, save and close the result&quot; border=&quot;1&quot; src=&quot;http://bmline.de/img/blog/vi-editor-close.png&quot; title=&quot;vi editor, escape from insert mode, save and close the result&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Now you are ready to perform more experiments and experiences.
&lt;br /&gt;
&lt;br /&gt;
&lt;table class=&quot;vim-table&quot;&gt;
&lt;tbody&gt;
&lt;tr class=&quot;vim-firstrow&quot;&gt;&lt;th&gt;subtitle&lt;/th&gt;&lt;th&gt;command&lt;/th&gt;&lt;th&gt;description&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;help&lt;/td&gt;&lt;td&gt;vi -h&lt;/td&gt;&lt;td&gt;start help page of vi editor (man vim)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;modi&lt;/td&gt;&lt;td&gt;normal mode&lt;/td&gt;&lt;td&gt;vi knows three different modi, the normal mode (usally to open a file and navigate in the lines)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;insert mode&lt;/td&gt;&lt;td&gt;switch from normal mode to insert mode or to use command line mode by press one of this characters &quot;i&quot;, &quot;I&quot;, &quot;a&quot;, &quot;A&quot;, &quot;o&quot;, &quot;O&quot;, &quot;c&quot;, &quot;C&quot;, &quot;s&quot; or &quot;S&quot;, to go back to normal mode use the ESC button&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;command mode&lt;/td&gt;&lt;td&gt;usally used to save a file with insert :w or leave a file with :p or do both with :wq, to view file in coloured mode set :syntax on &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;start&lt;/td&gt;&lt;td&gt;vi myfile.txt&lt;/td&gt;&lt;td&gt;open vi editor with file myfile.txt OR create a new file when file does not exits&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;vi -R myfile.txt&lt;/td&gt;&lt;td&gt;open vi editor with file myfile.txt in read-only modus&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;vim myfile.txt&lt;/td&gt;&lt;td&gt;open vim editor (vi clone)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;vi +99 myfile.txt&lt;/td&gt;&lt;td&gt;open vi editor with file myfile.txt on line 99&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;vi -r myfile.txt&lt;/td&gt;&lt;td&gt;recovery of a corrupt file myfile.txt (after a crash of vi)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;vi +/PADERN myfile.txt&lt;/td&gt;&lt;td&gt;opens file myfile on first position with PADERN&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;basic&lt;/td&gt;&lt;td&gt;:q&lt;/td&gt;&lt;td&gt;quit editor&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;:q!&lt;/td&gt;&lt;td&gt;quit editor force&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;i&lt;/td&gt;&lt;td&gt;start insert mode (more on subtitle insert)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;ESC&lt;/td&gt;&lt;td&gt;leave the current insert mode &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;:w&lt;/td&gt;&lt;td&gt;write to file&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;:w!&lt;/td&gt;&lt;td&gt;write to file force&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;:w myfile.txt&lt;/td&gt;&lt;td&gt;write to file myfile.txt&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;:wq&lt;/td&gt;&lt;td&gt;write to file and quite VI&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;:syntax on&lt;/td&gt;&lt;td&gt;start coloured mode&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;navigation&lt;/td&gt;&lt;td&gt;h&lt;/td&gt;&lt;td&gt;go left&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;j&lt;/td&gt;&lt;td&gt;go down&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;k&lt;/td&gt;&lt;td&gt;go top&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;l&lt;/td&gt;&lt;td&gt;ro right&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;:99&lt;/td&gt;&lt;td&gt;jump to line 99&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;99&lt;/td&gt;&lt;td&gt;takes you 99 lines down from your current position&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;go to first character of line&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;$&lt;/td&gt;&lt;td&gt;go to last character of line&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;/PADERN&lt;/td&gt;&lt;td&gt;search &quot;PADERN&quot; forward in file&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;?PADERN&lt;/td&gt;&lt;td&gt;search &quot;PADERN&quot; backward in file&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;n&lt;/td&gt;&lt;td&gt;same search as before forward&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;N&lt;/td&gt;&lt;td&gt;same search as before backward&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;5G&lt;/td&gt;&lt;td&gt;go to the 5 line in file&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;G&lt;/td&gt;&lt;td&gt;go to the end of the file&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;redo, undo&lt;/td&gt;&lt;td&gt;.&lt;/td&gt;&lt;td&gt;redo last command&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;u&lt;/td&gt;&lt;td&gt;undo last change&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;U&lt;/td&gt;&lt;td&gt;undo last change in whole line&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;delete&lt;/td&gt;&lt;td&gt;dw&lt;/td&gt;&lt;td&gt;delete word&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;dd&lt;/td&gt;&lt;td&gt;delete line &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;dgg&lt;/td&gt;&lt;td&gt;delete everthing from your current line to the top of your line&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;D&lt;/td&gt;&lt;td&gt;delete until end of line&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;:g/^$/d&lt;/td&gt;&lt;td&gt;delete all empty lines&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;:g/with this/d&lt;/td&gt;&lt;td&gt;delete all lines with this&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;:g/^\s*$/d&lt;/td&gt;&lt;td&gt;delete all lines that are empty or contains white space&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;:v/^\s*&quot;/d&lt;/td&gt;&lt;td&gt;delete all lines that are not empty or contains white spare&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;:v/this\|that\othersl/d&lt;/td&gt;&lt;td&gt;delete all lines that not this, that or others&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;copy and paste&lt;/td&gt;&lt;td&gt;&quot;ayy&lt;/td&gt;&lt;td&gt;copy current line in named buffer a (vi could work with several buffers a,b,c)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&quot;add&lt;/td&gt;&lt;td&gt;delete current line in named buffer a&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&quot;ap&lt;/td&gt;&lt;td&gt;paste from buffer a in &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&quot;ayG&lt;/td&gt;&lt;td&gt;copy all lines to the end of the file in buffer a&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;replace&lt;/td&gt;&lt;td&gt;:g/old text/s//new text/g&lt;/td&gt;&lt;td&gt;combined with ex command :g, replace &quot;old text&quot; with &quot;new text&quot; in all lines&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;:s/replace this//&lt;/td&gt;&lt;td&gt;&quot;replace this&quot; with nothing in all lines&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;:%s/r/s&lt;/td&gt;&lt;td&gt;replace r with s&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;:%s/&lt;ctrl-v&gt;&lt;ctrl-m&gt;//g&lt;/ctrl-m&gt;&lt;/ctrl-v&gt;&lt;/td&gt;&lt;td&gt;replace all ^M, therefore you must enter &lt;ctrl-v&gt; and then &lt;ctrl-m&gt;&lt;/ctrl-m&gt;&lt;/ctrl-v&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;enhanced insert&lt;/td&gt;&lt;td&gt;i&lt;/td&gt;&lt;td&gt;start insert mode before current position&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;I&lt;/td&gt;&lt;td&gt;start insert at the beginning of the current line&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;a&lt;/td&gt;&lt;td&gt;append after current character&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;A&lt;/td&gt;&lt;td&gt;append after current line&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;o&lt;/td&gt;&lt;td&gt;start insert on a new line below&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;O&lt;/td&gt;&lt;td&gt;start insert on a new line before&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;s&lt;/td&gt;&lt;td&gt;substitute one character and start insert mode&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;S&lt;/td&gt;&lt;td&gt;substitute line and start insert mode&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;several files&lt;/td&gt;&lt;td&gt;vi file.1 file.2 file.3&lt;/td&gt;&lt;td&gt;open vi with file.1, file.2 and file.3, file.1 is first visible&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;:n&lt;/td&gt;&lt;td&gt;open next file.2, and so on (maybe it is necessary to save the file that you edit before)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;:rew&lt;/td&gt;&lt;td&gt;rewind, at the end of all file.*, show file.1 again&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;:e#&lt;/td&gt;&lt;td&gt;open file before (opposite from :n)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;:e nextfile.txt&lt;/td&gt;&lt;td&gt;opens nextfile.txt, maybe it is necessary to save the file that you edit before or you open it with :e! nextfile.txt&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;:r myfile.txt&lt;/td&gt;&lt;td&gt;insert file myfile.txt on current position&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;:! ls -ltr&lt;/td&gt;&lt;td&gt;enable you to call the shell command ls -ltr from vi&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
If, despite all the care one error have crept in, so I ask this to be made ​​known to me. </content><link rel='replies' type='application/atom+xml' href='http://blog.bmline.de/feeds/5387669807756577090/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.bmline.de/2014/10/vi-editor-commands-for-unix-linux-mac.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8479718283588684928/posts/default/5387669807756577090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8479718283588684928/posts/default/5387669807756577090'/><link rel='alternate' type='text/html' href='http://blog.bmline.de/2014/10/vi-editor-commands-for-unix-linux-mac.html' title='vi editor commands for Unix, Linux and Mac'/><author><name>rotwuschl</name><uri>http://www.blogger.com/profile/10607947701179624674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8479718283588684928.post-1713985928975202176</id><published>2014-09-19T11:33:00.003+02:00</published><updated>2014-10-01T11:08:40.770+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="automation"/><category scheme="http://www.blogger.com/atom/ns#" term="marketing"/><category scheme="http://www.blogger.com/atom/ns#" term="personal branding"/><category scheme="http://www.blogger.com/atom/ns#" term="qrcode"/><category scheme="http://www.blogger.com/atom/ns#" term="url shortener"/><title type='text'>URL QR code generator </title><content type='html'>QR codes are very practical when the physical things should be connected to the digital world by a print or a sticker that transports information in a QR code. The information can be extract by smartphones, tablets or scanner and read the accordingly the information in form of a URL, e-mails or key values ​​refer and give you create opportunities also in Marketing to connect the things with your domain. Learn how to combine this with your own shortener URL service.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
The main convenient is that the user does not have to write long destination information or the information is processed automatically like it is in logistics. The capacity of QR codes is of course limited and also depends on the size, but it is a simple digital rule: the shorter the code is, the higher the quality.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;a href=&quot;http://blog.bmline.de/2014/09/short-url-qrcode.html&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: none; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;connect physical things with qr-code to digital world&quot; border=&quot;0&quot; src=&quot;http://bmline.de/img/qr-code-to-url.png&quot; height=&quot;355&quot; title=&quot;connect physical things with qr-code to digital world &quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Originally, the QR code was developed in Japan, but the number of applications today is diverse and has detail found in all possible areas. I am mostly interested in transporting of URL information and use this in my Marketing activities. Accordingly, it is always useful when a website link is transported, to shorten the URL by a&amp;nbsp;&lt;a href=&quot;http://blog.bmline.de/2013/12/shorten-url-service.html&quot; target=&quot;_blank&quot;&gt;service&lt;/a&gt; before the QR code is generated.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://blog.bmline.de/2014/09/short-url-qrcode.html&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;examples of qr-code to url&quot; border=&quot;0&quot; src=&quot;http://bmline.de/img/qr-code-usage.png&quot; title=&quot;examples qr-code to url&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
To create your QR code, there are several options out in the world wide web, I only make a simple variant in form of a google app (a) and integrate the service in the existing URL shortener service (b) solution. Both based on the same google QR code generator:&lt;br /&gt;
&lt;br /&gt;
a)&lt;br /&gt;
This short code example create a QR code for any website:&amp;nbsp;&lt;a href=&quot;http://bmline.de/qrcodegen&quot; target=&quot;_blank&quot;&gt;simple QR code generator&lt;/a&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
b)&lt;br /&gt;
This &lt;a href=&quot;https://github.com/mendozatron/doza.it/wiki/Plugin-=-QRCode-ShortURL&quot; target=&quot;_blank&quot;&gt;plugin&lt;/a&gt; for &lt;a href=&quot;http://yourls.org/&quot;&gt;yourls.org&lt;/a&gt; use the google code generator and creates the QR code when you add .qr to the shorten URL on your service, see the example for http://bmline.qrcode here &lt;a href=&quot;http://bmline.de/qrcode.qr&quot; target=&quot;_blank&quot;&gt;http://bmline.de/qrcode.qr&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Both example produce a image that could be used in the field&amp;nbsp;what you want to make it easier for your customers. Try it and find your usage possibility.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://blog.bmline.de/2014/09/short-url-qrcode.html&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; margin-bottom: 1em;&quot;&gt;&lt;img alt=&quot;short qr-code to url&quot; border=&quot;0&quot; src=&quot;http://bmline.de/img/url-qr-code-generator.png&quot; title=&quot;qr-code&quot; width=&quot;60&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://blog.bmline.de/feeds/1713985928975202176/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.bmline.de/2014/09/short-url-qrcode.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8479718283588684928/posts/default/1713985928975202176'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8479718283588684928/posts/default/1713985928975202176'/><link rel='alternate' type='text/html' href='http://blog.bmline.de/2014/09/short-url-qrcode.html' title='URL QR code generator '/><author><name>rotwuschl</name><uri>http://www.blogger.com/profile/10607947701179624674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8479718283588684928.post-3858818607075409390</id><published>2014-08-29T15:22:00.001+02:00</published><updated>2014-09-29T17:28:22.502+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Progress OpenEdge ABL"/><category scheme="http://www.blogger.com/atom/ns#" term="RESTful"/><category scheme="http://www.blogger.com/atom/ns#" term="SAP BusinessObjects Business Intelligence"/><category scheme="http://www.blogger.com/atom/ns#" term="SAP Web Intelligence"/><title type='text'>Progress OpenEdge RESTful Webi BusinessObjects Viewer</title><content type='html'>To get everything out of your SAP BusinessObject Business Intelligence 4.x (BO BI Webi) take a look at the&amp;nbsp;&lt;a href=&quot;http://help.sap.com/businessobject/product_guides/boexir4/en/xi4sp6_webi_restful_ws_en.pdf&quot; target=&quot;_blank&quot;&gt;RESTful web service SDK&lt;/a&gt;&amp;nbsp;that allow you to get even more than just some reports. To start the first experiments, the CURL described in the documentation offers approach. In my record the socket connection with Progress OpenEdge takes place.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
In the attached example that was realized with Progress OpenEdge are listed some of the reports and wanted then to the reports the objects out. For a different view on objects already created so far is in a very extensive reporting again possible, since you can generate and query in the report in addition to the documents, the folder structure, CUID, universes, objects, ...&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;a href=&quot;http://blog.bmline.de/2014/08/progress-openedge-restful-webi.html&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: none; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;class webi documents.cls&quot; border=&quot;0&quot; src=&quot;http://bmline.de/img/class-webi-documents.png&quot; title=&quot;class documents.cls for webi&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
The first step is to connect to the BI server and send an XML/JSON file with username, password and authentication mode, in response we obtain a logon token that is used for the further correspondence with the BI platform.&lt;br /&gt;
&lt;br /&gt;
After this you can start to load the documents, list the associated reports, check the queries, and much more.&lt;br /&gt;
&lt;br /&gt;
The code has been implemented with Progress OpenEdge, you gain on&amp;nbsp;&lt;a href=&quot;http://bmline.de/bov&quot; target=&quot;_blank&quot;&gt;github.com&lt;/a&gt;.&amp;nbsp;A Java version of the code exists as well, please &lt;a href=&quot;http://bmline.de/contact&quot; target=&quot;_blank&quot;&gt;contact me&lt;/a&gt; for this.&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.bmline.de/feeds/3858818607075409390/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.bmline.de/2014/08/progress-openedge-restful-webi.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8479718283588684928/posts/default/3858818607075409390'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8479718283588684928/posts/default/3858818607075409390'/><link rel='alternate' type='text/html' href='http://blog.bmline.de/2014/08/progress-openedge-restful-webi.html' title='Progress OpenEdge RESTful Webi BusinessObjects Viewer'/><author><name>rotwuschl</name><uri>http://www.blogger.com/profile/10607947701179624674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8479718283588684928.post-9176624802070126781</id><published>2014-07-24T22:36:00.002+02:00</published><updated>2014-09-25T17:32:10.933+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Progress OpenEdge ABL"/><title type='text'>Progress OpenEdge: Dynamic fill a Temp-Table/ProDataSet</title><content type='html'>There are several ways to fill a dynamically generated Temp-Table in Progress OpenEdge ABL. But here I&#39;ll show you the most elegant and the fastest method.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
In the first example you see the classical way for filling a temp table.
&lt;br /&gt;
&lt;pre class=&quot;notranslate&quot; style=&quot;background-color: grey; border: 0px; color: white; font-size: 12px; line-height: 21.599998474121094px; max-height: 61em; overflow: auto; padding: 0px 0.3em;&quot;&gt;DEFINE VAR bCustomer    AS HANDLE NO-UNDO.
DEFINE VAR h-ttCustomer AS HANDLE NO-UNDO.   
DEFINE VAR httCustomer  AS HANDLE NO-UNDO. 
DEFINE VAR hquery       AS HANDLE NO-UNDO.

CREATE BUFFER bCustomer FOR TABLE &quot;Customer&quot;.
CREATE TEMP-TABLE h-ttCustomer.
h-ttCustomer:CREATE-LIKE(bCustomer).
h-ttCustomer:TEMP-TABLE-PREPARE(&quot;tt-Customer&quot;).
httCustomer = h-ttCustomer:DEFAULT-BUFFER-HANDLE.
      
CREATE QUERY hquery.
hquery:SET-BUFFERS(bCustomer).
hquery:QUERY-PREPARE(&quot;FOR EACH Customer NO-LOCK&quot;).
hquery:FORWARD-ONLY.
hquery:QUERY-OPEN.
hquery:GET-FIRST(NO-LOCK).
DO WHILE NOT hquery:QUERY-OFF-END.
  httCustomer:BUFFER-CREATE.
  httCustomer:BUFFER-COPY(bCustomer).
  hquery:GET-NEXT(NO-LOCK).
END.
hquery:QUERY-CLOSE.
DELETE OBJECT hquery.&lt;/pre&gt;
&lt;br /&gt;
Now the same fill the same Temp-Table with the use of a ProDataSet.

&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;notranslate&quot; style=&quot;background-color: grey; border: 0px; color: white; font-size: 12px; line-height: 21.599998474121094px; max-height: 61em; overflow: auto; padding: 0px 0.3em;&quot;&gt;DEFINE VAR bCustomer    AS HANDLE NO-UNDO.
DEFINE VAR h-ttCustomer AS HANDLE NO-UNDO.   
DEFINE VAR httCustomer  AS HANDLE NO-UNDO. 
DEFINE VAR hDsSource    AS HANDLE NO-UNDO.
DEFINE VAR hDs          AS HANDLE NO-UNDO.

CREATE BUFFER bCustomer FOR TABLE &quot;Customer&quot;.
CREATE TEMP-TABLE h-ttCustomer.
h-ttCustomer:CREATE-LIKE(bCustomer).
h-ttCustomer:TEMP-TABLE-PREPARE(&quot;tt-Customer&quot;).
httCustomer = h-ttCustomer:DEFAULT-BUFFER-HANDLE.

/* we need a ProDataSet to fill*/      
CREATE DATASET hDs.
hDs:ADD-BUFFER(httCustomer).
      
CREATE DATA-SOURCE hDsSource.
hDsSource:ADD-SOURCE-BUFFER(bCustomer,?).
httCustomer:ATTACH-DATA-SOURCE(hDsSource).
hDsSource:FILL-WHERE-STRING = &quot;WHERE&quot;. /*...*/
hDs:FILL().
httCustomer:DETACH-DATA-SOURCE().
    
DELETE OBJECT hDsSource.&lt;/pre&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.bmline.de/feeds/9176624802070126781/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.bmline.de/2014/07/progress-openedge-dynamic-fill-temp.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8479718283588684928/posts/default/9176624802070126781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8479718283588684928/posts/default/9176624802070126781'/><link rel='alternate' type='text/html' href='http://blog.bmline.de/2014/07/progress-openedge-dynamic-fill-temp.html' title='Progress OpenEdge: Dynamic fill a Temp-Table/ProDataSet'/><author><name>rotwuschl</name><uri>http://www.blogger.com/profile/10607947701179624674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8479718283588684928.post-6932197438110978471</id><published>2014-06-05T13:32:00.000+02:00</published><updated>2014-09-25T14:20:28.246+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="virtual machine (VM)"/><category scheme="http://www.blogger.com/atom/ns#" term="virtualbox"/><category scheme="http://www.blogger.com/atom/ns#" term="vmware"/><title type='text'>Convert virtual machine (VM) from VMware to Virtualbox</title><content type='html'>In one of my mandates I got a 80 GB virtual machine for the VMware platform. On this machine the complete development platform was installed. Since I use VirtualBox on my Mac and really wanted to stay on this platform, I have been looking for methods to convert the VM from VMware to Virtualbox and then import them into it.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
First I found a tool that could be downloaded from VMware (&lt;a href=&quot;https://www.vmware.com/support/developer/ovf/ovf350/ovftool-351-userguide.pdf&quot; target=&quot;_blank&quot;&gt;ovftool&lt;/a&gt;), I had installed it and used addtionally some modification - but I could not convert the VM.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;notranslate&quot; style=&quot;background-color: grey; border: 0px; color: white; font-size: 12px; line-height: 21.599998474121094px; max-height: 15em; overflow: auto; padding: 0px 0.3em;&quot;&gt;ovftool /myPath/my_vm.vmx /myNewPath/my_new_vm.ovf&lt;/pre&gt;
&lt;br /&gt;
After visiting of some forums, I decided to install the trial version of VMware Fusion, and with the command below I could convert at least my VM.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;notranslate&quot; style=&quot;background-color: grey; border: 0px; color: white; font-size: 12px; line-height: 21.599998474121094px; max-height: 15em; overflow: auto; padding: 0px 0.3em;&quot;&gt;/Applications/VMware Fusion.app/Contents/Library/VMware OVF Tool/ovftool /myPath/my.vmx /myNewPath/my.ovf&lt;/pre&gt;
&lt;br /&gt;
That went without any problems (about 40 minutes to convert the 80 GB), then, I wanted to import the new my_new_vm.ovf file directly into the Virtualbox machine, unfortunately, came close to completion an error to the fore (SCSI controller not found). But even this, there is a solution. Maybe there is a shorter way, but I had to import the VM into VMware Fusion and then modify the hard disk controller from SCSI controller to IDE controller.&lt;br /&gt;
&lt;br /&gt;
After this, I used again the ovftool to create a new VM that could be imported into Virtualbox.&lt;br /&gt;
&lt;pre class=&quot;notranslate&quot; style=&quot;background-color: grey; border: 0px; color: white; font-size: 12px; line-height: 21.599998474121094px; max-height: 15em; overflow: auto; padding: 0px 0.3em;&quot;&gt;/Applications/VMware Fusion.app/Contents/Library/VMware OVF Tool/ovftool /myPath/new.vmx /myNewPath/new.ovf&lt;/pre&gt;
&lt;br /&gt;
See my long path to success, unfortunately, the size of the system has given me problems, so that I had to outsource files to an external USB disk.
&lt;iframe allowfullscreen=&quot;true&quot; frameborder=&quot;0&quot; height=&quot;474&quot; mozallowfullscreen=&quot;true&quot; src=&quot;https://docs.google.com/presentation/d/1h8BtqerM_3WuC8MZW45oxE4co6_ZWCbpPlCbJKkQ0qM/embed?start=false&amp;amp;loop=false&amp;amp;delayms=3000&quot; webkitallowfullscreen=&quot;true&quot; width=&quot;800&quot;&gt;&lt;/iframe&gt;&lt;br /&gt;
I found a very good description on the internet on the &lt;a href=&quot;https://blogs.oracle.com/fatbloke/entry/moving_a_vmware_vm_to&quot; target=&quot;_blank&quot;&gt;oracle blog&lt;/a&gt; that describes the whole process in pictures.</content><link rel='replies' type='application/atom+xml' href='http://blog.bmline.de/feeds/6932197438110978471/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.bmline.de/2014/06/convert-virtual-machine-vm-from-vmware.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8479718283588684928/posts/default/6932197438110978471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8479718283588684928/posts/default/6932197438110978471'/><link rel='alternate' type='text/html' href='http://blog.bmline.de/2014/06/convert-virtual-machine-vm-from-vmware.html' title='Convert virtual machine (VM) from VMware to Virtualbox'/><author><name>rotwuschl</name><uri>http://www.blogger.com/profile/10607947701179624674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8479718283588684928.post-7631643978817775395</id><published>2014-05-22T10:59:00.000+02:00</published><updated>2014-09-25T14:18:59.299+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="virtual machine (VM)"/><category scheme="http://www.blogger.com/atom/ns#" term="virtualbox"/><category scheme="http://www.blogger.com/atom/ns#" term="vmware"/><title type='text'>Virtuality computing with virtualbox</title><content type='html'>When I was in the previous millennium with a company, there was only Windows PC as a virtual variant on an older Linux server allowed. Because of a Windows PC was considered potentially highly dangerous and there was no other way to tie this into the corporate network. Only the virtual version of Windows with Linux as the host operating system was allowed.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
Partly due to lack of time and partly also that I always used Linux on my older notebooks I did not have to look for the requirements and the time for a solution. Several years have now passed here and the whole market of virtuality computing (VMware, Virtualbox, Parallels, ...) has become huge and has left the nursery long. Currently there are all sorts of actors which drive on the VM market around.&lt;br /&gt;
&lt;br /&gt;
I only want to do a few tests with my notebook and so a free desktop version is quite enough for me. If you are interested in this area, you have to select the criteria by yourself. The decisive for me was, I could run the system on the following hosts (Windows, Linux , Mac OS), it is available for free and the clients can be Windows or/and Linux (please check the licenses for all VM clients).&lt;br /&gt;
&lt;br /&gt;
My final choice falls on Virtualbox, others are even excellent, but my goal is eventually I would like to try out my test on all systems to which I take my three laptop computers and install each with Virtualbox. This runs smoothly, it buzz on the net some examples of this around. As a guest operating system Linux comes in the distribution Lubuntu in question (resources carefully and I need only 512 MB ​​of RAM).
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlp2gIRC7VfeCHHxUGft6aK1E5iQOnG-hk1E0kUGYIoHK-Kmz0bhWrraYU8Fd6dnUuaVApx_9rFzXjM0skfRLSliOMDcP2VHzdewX7_3nzl6AxNj4wog_WJDJprMBEYuQYmZ6o1AV2NF_b/s1600/Bildschirmfoto+2014-05-22+um+11.11.38.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlp2gIRC7VfeCHHxUGft6aK1E5iQOnG-hk1E0kUGYIoHK-Kmz0bhWrraYU8Fd6dnUuaVApx_9rFzXjM0skfRLSliOMDcP2VHzdewX7_3nzl6AxNj4wog_WJDJprMBEYuQYmZ6o1AV2NF_b/s1600/Bildschirmfoto+2014-05-22+um+11.11.38.png&quot; height=&quot;528&quot; title=&quot;Virtualbox on Mac with Lubuntu client&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
After &lt;a href=&quot;http://lubuntu.net/&quot; target=&quot;_blank&quot;&gt;Lubuntu/Linux&lt;/a&gt; is running, I use the Synaptic Package Manager to install Java, Chromium and Netbeans.&lt;br /&gt;
&lt;br /&gt;
A few more notes, system updates and installation of software can be run on Ubuntu/Lubuntu using the following commands (I simplify the process here and show only a few points):&lt;br /&gt;
&lt;br /&gt;
Reread All package lists.&lt;br /&gt;
&lt;pre class=&quot;notranslate&quot; style=&quot;background-color: grey; border: 0px; color: white; font-size: 12px; line-height: 21.599998474121094px; max-height: 15em; overflow: auto; padding: 0px 0.3em;&quot;&gt;sudo apt-get update&lt;/pre&gt;
&lt;br /&gt;
Perform an upgrade to the newly read package lists.&lt;br /&gt;
&lt;pre class=&quot;notranslate&quot; style=&quot;background-color: grey; border: 0px; color: white; font-size: 12px; line-height: 21.599998474121094px; max-height: 15em; overflow: auto; padding: 0px 0.3em;&quot;&gt;sudo apt-get dist-upgrade&lt;/pre&gt;
&lt;br /&gt;
However, I need a different version of Java to achieve this I need to include another repository with the following command.&lt;br /&gt;
&lt;pre class=&quot;notranslate&quot; style=&quot;background-color: grey; border: 0px; color: white; font-size: 12px; line-height: 21.599998474121094px; max-height: 15em; overflow: auto; padding: 0px 0.3em;&quot;&gt;sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update&lt;/pre&gt;
&lt;br /&gt;
In my case I have to install Java 1.7.&lt;br /&gt;
&lt;pre class=&quot;notranslate&quot; style=&quot;background-color: grey; border: 0px; color: white; font-size: 12px; line-height: 21.599998474121094px; max-height: 15em; overflow: auto; padding: 0px 0.3em;&quot;&gt;sudo apt-get install oracle-java7-installer
sudo update-java-alternatives -s java-7-oracle&lt;/pre&gt;
&lt;br /&gt;
Java 1.8 would look like this&lt;br /&gt;
&lt;pre class=&quot;notranslate&quot; style=&quot;background-color: grey; border: 0px; color: white; font-size: 12px; line-height: 21.599998474121094px; max-height: 15em; overflow: auto; padding: 0px 0.3em;&quot;&gt;sudo apt-get install oracle-java8-installer
sudo update-java-alternatives -s java-8-oracle&lt;/pre&gt;
&lt;br /&gt;
Switch between the Java version with this command:&lt;br /&gt;
&lt;pre class=&quot;notranslate&quot; style=&quot;background-color: grey; border: 0px; color: white; font-size: 12px; line-height: 21.599998474121094px; max-height: 15em; overflow: auto; padding: 0px 0.3em;&quot;&gt;sudo update-alternatives --config java&lt;/pre&gt;
&lt;br /&gt;
In order to establish the chromium-browser as the default browser, this can be done using the following command.&lt;br /&gt;
&lt;pre class=&quot;notranslate&quot; style=&quot;background-color: grey; border: 0px; color: white; font-size: 12px; line-height: 21.599998474121094px; max-height: 15em; overflow: auto; padding: 0px 0.3em;&quot;&gt;sudo update-alternatives --config x-www-browser&lt;/pre&gt;
&lt;br /&gt;
After everything was done, comes the best part , I can duplicate the virtual machine and start my tests - Ludi incipiant.&lt;br /&gt;
&lt;br /&gt;
Addendum:&lt;br /&gt;
The screen resolution is not quite appropriate under some circumstances, for this type the following command.
&lt;br /&gt;
&lt;pre class=&quot;notranslate&quot; style=&quot;background-color: grey; border: 0px; color: white; font-size: 12px; line-height: 21.599998474121094px; max-height: 15em; overflow: auto; padding: 0px 0.3em;&quot;&gt;sudo apt-get install virtualbox-guest-dkms virtualbox-guest-utils virtualbox-guest-x11&lt;/pre&gt;
</content><link rel='replies' type='application/atom+xml' href='http://blog.bmline.de/feeds/7631643978817775395/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.bmline.de/2014/05/virtuality-computing-with-virtualbox.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8479718283588684928/posts/default/7631643978817775395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8479718283588684928/posts/default/7631643978817775395'/><link rel='alternate' type='text/html' href='http://blog.bmline.de/2014/05/virtuality-computing-with-virtualbox.html' title='Virtuality computing with virtualbox'/><author><name>rotwuschl</name><uri>http://www.blogger.com/profile/10607947701179624674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlp2gIRC7VfeCHHxUGft6aK1E5iQOnG-hk1E0kUGYIoHK-Kmz0bhWrraYU8Fd6dnUuaVApx_9rFzXjM0skfRLSliOMDcP2VHzdewX7_3nzl6AxNj4wog_WJDJprMBEYuQYmZ6o1AV2NF_b/s72-c/Bildschirmfoto+2014-05-22+um+11.11.38.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8479718283588684928.post-6947238166015307090</id><published>2014-04-07T09:21:00.001+02:00</published><updated>2014-10-08T12:18:21.512+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="cake recipe"/><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><category scheme="http://www.blogger.com/atom/ns#" term="recipe"/><title type='text'>Carrot cake recipe</title><content type='html'>There are numerous attempts to explain programming with recipes through to programming &lt;a href=&quot;http://esolangs.org/wiki/Chef&quot; target=&quot;_blank&quot;&gt;chief&lt;/a&gt;, an esoteric programming language look like recipes in the programs. Here, however, I would just like to introduce my favorite cake. 
A carrot cake that tastes so wonderfully juicy. The picture shows the cake I baked for my wife birthday.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://blog.bmline.de/2014/04/carrot-cake-recipe.html&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://bmline.de/img/blog/carrot-cake-recipe.jpg&quot; height=&quot;267&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;The ingredients:&lt;/b&gt;&lt;br /&gt;
250 g carrots&lt;br /&gt;
300 g ground almonds (or hazelnuts and / or coconuts)&lt;br /&gt;
300 g of sugar&lt;br /&gt;
5 eggs separated,&lt;br /&gt;
60 g flour&lt;br /&gt;
1 teaspoon of baking soda&lt;br /&gt;
1/2 lemon rind&lt;br /&gt;
1 pinch of salt&lt;br /&gt;
butter/margarine and crumbs for the form&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Plating:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
chocolate glaze with white and brown chocolate (see picture above)&lt;br /&gt;
or&lt;br /&gt;
sugar glaze&lt;br /&gt;
150 g icing sugar&lt;br /&gt;
1 tablespoon water&lt;br /&gt;
2 tablespoons lemon juice&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;The preparation:&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
Grate the carrots finely and then put them in a large bowl with the almonds, the salt and the lemon peel.&lt;/div&gt;
&lt;div&gt;
Separate the eggs and stir the yolks with 2/3 of the sugar until fluffy, at least add the flour with the baking powder.&lt;br /&gt;
Put together with the carrots and almonds.&lt;/div&gt;
&lt;div&gt;
The egg white should be mixed until stiff and stir, then add the remaining sugar slowly. The mass now carefully fold into the carrot / nut mixture.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Grease a mold and sprinkle with bread crumbs.&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
Fill the mass in a form and bake the cake about 50 minutes at 180° C (355° F).&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Cover after cooling, either with chocolate or lemon frosting and decorate as desired.&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Bon appétit.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://blog.bmline.de/feeds/6947238166015307090/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.bmline.de/2014/04/carrot-cake-recipe.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8479718283588684928/posts/default/6947238166015307090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8479718283588684928/posts/default/6947238166015307090'/><link rel='alternate' type='text/html' href='http://blog.bmline.de/2014/04/carrot-cake-recipe.html' title='Carrot cake recipe'/><author><name>rotwuschl</name><uri>http://www.blogger.com/profile/10607947701179624674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8479718283588684928.post-2301125812738281624</id><published>2014-03-25T08:26:00.000+01:00</published><updated>2014-09-30T13:19:53.095+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="corporate design"/><category scheme="http://www.blogger.com/atom/ns#" term="marketing"/><category scheme="http://www.blogger.com/atom/ns#" term="personal branding"/><category scheme="http://www.blogger.com/atom/ns#" term="stamp"/><title type='text'>Stamp</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
Make a stamp itself or make a logo itself is now pretty easy with &lt;a href=&quot;http://google.com/docs&quot; target=&quot;_blank&quot;&gt;google docs&lt;/a&gt;, begin with a new drawing. While playing with colours, fonts and figures you can develop a unique design.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;float: left; text-align: left;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqBXo-GeqSc1WAaDqYY8NNRMqBcQzhHXsVrWGY36iw6YAwMuBYCRj-VCF730iUzczHA2TinBM8D3iTrpKNWCWU_M6EK0i5UkSNw8EEvXyQxtj4u5u_W32cMCjnA-Eh1RWGpXqRdHOOhdYp/s1600/Bildschirmfoto+2014-09-05+um+11.20.59.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;&quot;&gt;&lt;img alt=&quot;Bernd Martin Dot Net created with google drive&quot; border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqBXo-GeqSc1WAaDqYY8NNRMqBcQzhHXsVrWGY36iw6YAwMuBYCRj-VCF730iUzczHA2TinBM8D3iTrpKNWCWU_M6EK0i5UkSNw8EEvXyQxtj4u5u_W32cMCjnA-Eh1RWGpXqRdHOOhdYp/s1600/Bildschirmfoto+2014-09-05+um+11.20.59.png&quot; height=&quot;523&quot; title=&quot;&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
Store the result in a scalable file format and which your preferred stamp manufacturer needs. A lot of further decisions are necessary, what kind of material I want to print, should the color be dry quickly or should a greater liability to be achieved? Which colour should have the stamp?&lt;br /&gt;
&lt;br /&gt;
After a few days waiting, you can admire the result and play around.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/proxy/AVvXsEiw72ikoS3myadgjR0XKRw_mmKMJtSL82-_SPWfjTnnamMcjWFV2MFt2H295uTu_er79IUD-6BGsjcuRA-n9_oNx35gZABxRtfQGqLheKUZhyBKCIGrOjKQ1u7T6vKPoHrIJXZa88jKUQpnXIwF1w2X8vWf=&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;stamp from Bernd Martin Dot Net&quot; border=&quot;0&quot; src=&quot;http://berndmartin.net/img/Bernd_Martin_stempel.jpg&quot; title=&quot;&quot; width=&quot;512px&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Please &lt;a href=&quot;http://blog.bmline.de/p/contact-me.html&quot; target=&quot;_blank&quot;&gt;contact me &lt;/a&gt;if you want to create a unique branding for yourself or your company.&lt;br /&gt;
&lt;br /&gt;

&lt;!-- Blogger automated replacement: &quot;https://blogger.googleusercontent.com/img/proxy/AVvXsEiw72ikoS3myadgjR0XKRw_mmKMJtSL82-_SPWfjTnnamMcjWFV2MFt2H295uTu_er79IUD-6BGsjcuRA-n9_oNx35gZABxRtfQGqLheKUZhyBKCIGrOjKQ1u7T6vKPoHrIJXZa88jKUQpnXIwF1w2X8vWf=&quot; with &quot;https://blogger.googleusercontent.com/img/proxy/AVvXsEiw72ikoS3myadgjR0XKRw_mmKMJtSL82-_SPWfjTnnamMcjWFV2MFt2H295uTu_er79IUD-6BGsjcuRA-n9_oNx35gZABxRtfQGqLheKUZhyBKCIGrOjKQ1u7T6vKPoHrIJXZa88jKUQpnXIwF1w2X8vWf=&quot; --&gt;&lt;!-- Blogger automated replacement: &quot;https://images-blogger-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2Fberndmartin.net%2Fimg%2FBernd_Martin_stempel.jpg&amp;amp;container=blogger&amp;amp;gadget=a&amp;amp;rewriteMime=image%2F*&quot; with &quot;https://blogger.googleusercontent.com/img/proxy/AVvXsEiw72ikoS3myadgjR0XKRw_mmKMJtSL82-_SPWfjTnnamMcjWFV2MFt2H295uTu_er79IUD-6BGsjcuRA-n9_oNx35gZABxRtfQGqLheKUZhyBKCIGrOjKQ1u7T6vKPoHrIJXZa88jKUQpnXIwF1w2X8vWf=&quot; --&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.bmline.de/feeds/2301125812738281624/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.bmline.de/2014/03/stamp.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8479718283588684928/posts/default/2301125812738281624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8479718283588684928/posts/default/2301125812738281624'/><link rel='alternate' type='text/html' href='http://blog.bmline.de/2014/03/stamp.html' title='Stamp'/><author><name>rotwuschl</name><uri>http://www.blogger.com/profile/10607947701179624674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqBXo-GeqSc1WAaDqYY8NNRMqBcQzhHXsVrWGY36iw6YAwMuBYCRj-VCF730iUzczHA2TinBM8D3iTrpKNWCWU_M6EK0i5UkSNw8EEvXyQxtj4u5u_W32cMCjnA-Eh1RWGpXqRdHOOhdYp/s72-c/Bildschirmfoto+2014-09-05+um+11.20.59.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8479718283588684928.post-7397939865718477181</id><published>2014-03-21T13:02:00.002+01:00</published><updated>2014-09-30T13:15:42.002+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="about.you"/><category scheme="http://www.blogger.com/atom/ns#" term="brand"/><category scheme="http://www.blogger.com/atom/ns#" term="branding"/><category scheme="http://www.blogger.com/atom/ns#" term="business cards"/><category scheme="http://www.blogger.com/atom/ns#" term="corporate design"/><category scheme="http://www.blogger.com/atom/ns#" term="design"/><category scheme="http://www.blogger.com/atom/ns#" term="personal branding"/><category scheme="http://www.blogger.com/atom/ns#" term="website"/><title type='text'>Development of a corporate design / personal branding</title><content type='html'>The strongest brand you are self, therefore the name of my current project is also &lt;a href=&quot;http://berndmartin.net/aboutyou.html&quot; target=&quot;_blank&quot;&gt;ABOUT.YOU&lt;/a&gt;. The core element of this new corporate design is the ring with the web address. By coupling the web link with terms, nearly every catchword or slogan can be communicated. This mechanism takes place through the entire CD.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;The business cards is reduced to the most essential element: the web address. 
&lt;br /&gt;
&lt;br /&gt;
&lt;img alt=&quot;business card Bernd Martin Dot Net&quot; src=&quot;http://berndmartin.net/img/Bernd_Martin_BC.svg&quot; height=&quot;208&quot; title=&quot;&quot; width=&quot;321&quot; /&gt;
&lt;br /&gt;
&lt;br /&gt;
The website is intended as a starting point for all my past and future activities. The ring is therefore a key element in the design of my new website. It reflects the small world again in which we find ourselves. In which we like to come back, but at the same time escape to discover new and expand our horizons.&lt;br /&gt;
&lt;br /&gt;
&lt;iframe allowfullscreen=&quot;true&quot; frameborder=&quot;0&quot; height=&quot;474&quot; mozallowfullscreen=&quot;true&quot; src=&quot;https://docs.google.com/presentation/d/1VoccCunIoNz2WcDvEMY9_5pVqJfxzi4pkqUEf7utKNI/embed?start=false&amp;amp;loop=false&amp;amp;delayms=6000&quot; webkitallowfullscreen=&quot;true&quot; width=&quot;800&quot;&gt;&lt;/iframe&gt;

&lt;br /&gt;
Have a look at the result &lt;a href=&quot;http://berndmartin.net/&quot; target=&quot;_blank&quot;&gt;Bernd Martin Dot Net&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://blog.bmline.de/feeds/7397939865718477181/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.bmline.de/2014/03/corporatedesign.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8479718283588684928/posts/default/7397939865718477181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8479718283588684928/posts/default/7397939865718477181'/><link rel='alternate' type='text/html' href='http://blog.bmline.de/2014/03/corporatedesign.html' title='Development of a corporate design / personal branding'/><author><name>rotwuschl</name><uri>http://www.blogger.com/profile/10607947701179624674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8479718283588684928.post-2577752799521049372</id><published>2013-12-06T14:06:00.000+01:00</published><updated>2015-03-24T11:46:14.107+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="blogging"/><category scheme="http://www.blogger.com/atom/ns#" term="hashtag"/><category scheme="http://www.blogger.com/atom/ns#" term="marketing"/><category scheme="http://www.blogger.com/atom/ns#" term="personal branding"/><category scheme="http://www.blogger.com/atom/ns#" term="tweet a picture"/><category scheme="http://www.blogger.com/atom/ns#" term="tweets"/><category scheme="http://www.blogger.com/atom/ns#" term="twitter"/><category scheme="http://www.blogger.com/atom/ns#" term="url shortener"/><title type='text'>Create your #footprints with own click-to-tweet-links</title><content type='html'>&lt;a href=&quot;http://clicktotweet.com/&quot;&gt;ClicktoTweet.com&lt;/a&gt; allow users to promote their stuff on twitter, but it is also easy to build such a service by your own. Create your own click-to-tweet-links on your websites, presentations or your other personal sites. Here is an &lt;a href=&quot;http://twitter.com/home/?status=Create%20your%20%23footprints%20with%20own%20click-to-tweet-links%20http://bmline.de/cl2tw%20@martinbernd&quot;&gt;example&lt;/a&gt; how to build such a link.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
All starts with the link:&lt;br /&gt;
http://twitter.com/home/?status=&lt;br /&gt;
&lt;br /&gt;
You must replace empty space &#39; &#39; with %20 when you add some content:&lt;br /&gt;
http://twitter.com/home/?status=Create%20your&lt;br /&gt;
&lt;br /&gt;
If you want to add a #hashtag then replace the hash(#) with %23:&lt;br /&gt;
http://twitter.com/home/?status=Create%20your%20%23footprints&lt;br /&gt;
&lt;br /&gt;
Combine this technics with a own shorten URL (&lt;a href=&quot;http://blog.bmline.de/2013/12/create-your-footprints-with-own-click-to-tweet-links.html&quot;&gt;long URL&lt;/a&gt; -&amp;gt;&amp;nbsp;&lt;a href=&quot;http://bmline.de/cl2tw&quot;&gt;short URL&lt;/a&gt;) service &lt;a href=&quot;http://blog.bmline.de/2013/12/shorten-url-service.html&quot;&gt;(shortener URL service)&lt;/a&gt;:&amp;nbsp; &lt;br /&gt;
http://twitter.com/home/?status=Create%20your%20%23footprints%20with%20own%20click-to-tweet-links%20http://bmline.de/cl2tw&lt;br /&gt;
&lt;br /&gt;
If you want to enter a&amp;nbsp;@-symbol to add your twitter account then please replace also the&amp;nbsp;@ with %40. If you really need a % percent symbol you can replace this also with %25. That&#39;s it is.&lt;br /&gt;
&lt;br /&gt;
As result you get the link:&lt;br /&gt;
&lt;a href=&quot;http://twitter.com/home/?status=Create%20your%20%23footprints%20with%20own%20click-to-tweet-links%20http://bmline.de/cl2tw%20@martinbernd&quot;&gt;
http://twitter.com/home/?status=Create%20your%20%23footprints%20with%20own%20click-to-tweet-links%20http://bmline.de/cl2tw%20%40martinbernd&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
Additional you could also combine these code with a &lt;a href=&quot;http://blog.bmline.de/2013/12/shorten-url-service.html&quot;&gt;shortener URL service&lt;/a&gt;&amp;nbsp;so that the input is not so ugly. Try it out and click to &lt;a href=&quot;http://bmline.de/cl2tw2&quot; target=&quot;_blank&quot;&gt;tweet&lt;/a&gt; it now.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;#Update 03/2015&lt;/b&gt;&lt;br /&gt;
It&#39;s been over a year ago when I wrote this blog entry. But what has always interested me and what I have so far had no solution, how do I send a tweet with a picture in a html link. The reason, with a picture in a tweet you got more chance to be retweeted.&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;span style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;a href=&quot;http://twitter.com/home/?status=Tweet%20embedded%20pictures%20with%20own%20click-to-tweet-links%20http://bmline.de/cl2tw%20pic.twitter.com/91kv39imTM&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjndzLj-ym0wRAHbBsEN1-QWB3WCTFL1Xjvy_RteEXURy_uZSoDMCJkfPzjcINgJNFmyeUiul72Z8WBdtu6YeZbIq20zSMSo2jxoHKjtYeyO5EkfNnlBjmAJNAqeh882-wdEWq4Cju4nWP/s1600/tweet-this-picture+(1).png&quot; height=&quot;180&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://twitter.com/home/?status=Tweet%20embedded%20pictures%20with%20own%20click-to-tweet-links%20http://bmline.de/cl2tw%20pic.twitter.com/91kv39imTM&quot; target=&quot;_blank&quot;&gt;Tweet this picture&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
How to operate? That works, if you have your picture tweeted before, then you can find out how the URL is of the image. Each twitter picture serves two URLs, only that which begins pic.twitter.com/[No] works.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
How you can find this picture URL? Go to your pictures in twitter and press right button for view the source code in html of the twitter page. Then all pictures are listet, find out which picture you are interested in. Select this picture URL and add this to your tweet:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://twitter.com/home/?status=Create%20your%20%23footprints%20with%20own%20click-to-tweet-links%20http://bmline.de/cl2tw%20pic.twitter.com/91kv39imTM&quot; target=&quot;_blank&quot;&gt;http://twitter.com/home/?status=Create%20your%20%23footprints%20with%20own%20click-to-tweet-links%20bmline.de/cl2tw%20pic.twitter.com/91kv39imTM&lt;/a&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
Have fun!&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://blog.bmline.de/feeds/2577752799521049372/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.bmline.de/2013/12/create-your-footprints-with-own-click-to-tweet-links.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8479718283588684928/posts/default/2577752799521049372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8479718283588684928/posts/default/2577752799521049372'/><link rel='alternate' type='text/html' href='http://blog.bmline.de/2013/12/create-your-footprints-with-own-click-to-tweet-links.html' title='Create your #footprints with own click-to-tweet-links'/><author><name>rotwuschl</name><uri>http://www.blogger.com/profile/10607947701179624674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjndzLj-ym0wRAHbBsEN1-QWB3WCTFL1Xjvy_RteEXURy_uZSoDMCJkfPzjcINgJNFmyeUiul72Z8WBdtu6YeZbIq20zSMSo2jxoHKjtYeyO5EkfNnlBjmAJNAqeh882-wdEWq4Cju4nWP/s72-c/tweet-this-picture+(1).png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8479718283588684928.post-3083279707226269954</id><published>2013-12-04T13:07:00.000+01:00</published><updated>2014-09-30T13:11:22.487+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="automation"/><category scheme="http://www.blogger.com/atom/ns#" term="marketing"/><category scheme="http://www.blogger.com/atom/ns#" term="personal branding"/><category scheme="http://www.blogger.com/atom/ns#" term="url shortener"/><title type='text'>Shortener URL service</title><content type='html'>There are running a lot of shortener URL service (&lt;a href=&quot;http://longurl.org/services&quot;&gt;list services&lt;/a&gt; to shortener URL) around, all of them are good and doing there job very well. Their existence authority is to convert a long URL into a short URL, this is particularly very useful when a service is used like twitter to post information and not need the available space with a long link to.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;a href=&quot;http://blog.bmline.de/2013/12/shorten-url-service.html&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: none; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;shortener URL service with qr code example&quot; border=&quot;0&quot; src=&quot;http://bmline.de/img/shortener-url-service.png&quot; height=&quot;355&quot; title=&quot;Shortener URL service&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Or you have created hardware and you want to be sure that the link is still working in future. However, this URL shortener service bring some discomfort by the users, because you do not know what you click here &lt;a href=&quot;http://goo.gl/rDQGJU&quot;&gt;http://goo.gl/rDQGJU&lt;/a&gt;, the destination is unclear by cryptic combinations, this brings the lose of branding opportunity, the lose of credibility and others. This is the right time to start a owned service, not necessary a public service, but a own URL shortener.&lt;br /&gt;
&lt;br /&gt;
After a phase of orientation and of trial, I am finally stuck with &lt;a href=&quot;http://yourls.org/&quot;&gt;yourls.org&lt;/a&gt;. The good documentation, easy installation, enable the rapid and extensive functionality of this service has also completely convinced me.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;a href=&quot;http://bmline.de/shurl&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://www.bmline.de/img/bmlineyourls.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
The result are, you get well formed links, that documents the traffic so that you could address various channels and analyze the result. There are several detail view of the traffic available that give you a good overview of your links and there usage. Moreover, there are a number of&amp;nbsp;s&amp;nbsp;&lt;a href=&quot;https://github.com/YOURLS/YOURLS/wiki/Plugin-List&quot; target=&quot;_blank&quot;&gt;plugins&lt;/a&gt;&amp;nbsp;for &lt;a href=&quot;http://yourls.org/&quot;&gt;yourls.org&lt;/a&gt; available, for example a &lt;a href=&quot;http://bmline.de/qrcode&quot; target=&quot;_blank&quot;&gt;QR Code generator&lt;/a&gt; which automatically creates QR Code from the given links, .&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;a href=&quot;http://blog.bmline.de/2013/12/shorten-url-service.html&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: none; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;shortener URL service&quot; border=&quot;0&quot; src=&quot;http://bmline.de/img/shorten-url-service-bmline-de.jpg&quot; title=&quot;Shortener URL service&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
Check out a few of links which I have generated:&lt;br /&gt;
&lt;a href=&quot;http://bmline.de/presume&quot;&gt;http://bmline.de/presume&lt;/a&gt;&amp;nbsp;was previously&amp;nbsp;&lt;a href=&quot;http://de.slideshare.net/bernd_martin/pdf-presume-bernd-martin-1&quot; target=&quot;_blank&quot;&gt;http://de.slideshare.net/bernd_martin/pdf-presume-bernd-martin-1&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://bmline.de/gplus&quot;&gt;http://bmline.de/gplus&lt;/a&gt;&amp;nbsp;was previously&amp;nbsp;&lt;a href=&quot;http://plus.google.com/111997463922026514911&quot;&gt;http://plus.google.com/111997463922026514911&lt;/a&gt;&lt;br /&gt;
&lt;div&gt;
&lt;a href=&quot;http://bmline.de/twitter&quot;&gt;twitter&lt;/a&gt;&amp;nbsp;was previously&amp;nbsp;&lt;a href=&quot;http://twitter.com/MartinBernd&quot;&gt;http://twitter.com/MartinBernd&lt;/a&gt;&lt;/div&gt;
&lt;a href=&quot;http://bmline.de/linkedin&quot;&gt;linkedIn&lt;/a&gt;&amp;nbsp;was previously&amp;nbsp;&lt;a href=&quot;http://www.linkedin.com/in/berndmartin&quot;&gt;http://www.linkedin.com/in/berndmartin&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://bmline.de/facebook&quot;&gt;facebook&lt;/a&gt;&amp;nbsp;was previously&amp;nbsp;&lt;a href=&quot;http://www.facebook.com/bernd.martin.79&quot;&gt;http://www.facebook.com/bernd.martin.79&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
With much more options for &lt;a href=&quot;http://bmline.de/shop&quot;&gt;shopping&lt;/a&gt;,&amp;nbsp;&lt;a href=&quot;http://bmline.de/blogging&quot;&gt;blogging&lt;/a&gt; or social media like &lt;a href=&quot;http://bmline.de/xing&quot;&gt;xing&lt;/a&gt;,&amp;nbsp;&lt;a href=&quot;http://bmline.de/slideshare&quot;&gt;slideshare&lt;/a&gt;,&amp;nbsp;&lt;a href=&quot;http://bmline.de/github&quot;&gt;github&lt;/a&gt;&amp;nbsp;and ...&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.bmline.de/feeds/3083279707226269954/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.bmline.de/2013/12/shorten-url-service.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8479718283588684928/posts/default/3083279707226269954'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8479718283588684928/posts/default/3083279707226269954'/><link rel='alternate' type='text/html' href='http://blog.bmline.de/2013/12/shorten-url-service.html' title='Shortener URL service'/><author><name>rotwuschl</name><uri>http://www.blogger.com/profile/10607947701179624674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8479718283588684928.post-4372264375736814796</id><published>2013-11-14T12:47:00.000+01:00</published><updated>2017-03-17T15:00:14.044+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="automation"/><category scheme="http://www.blogger.com/atom/ns#" term="programming"/><category scheme="http://www.blogger.com/atom/ns#" term="software development"/><title type='text'>Serving software</title><content type='html'>The software development process is more complex than ever, with the methodology of LEAN and the circle of &quot;learn &amp;gt; build &amp;gt; measure&quot;, you transform your software development department into a serving software division.&lt;br /&gt;
&lt;br /&gt;&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://blog.bmline.de/2013/11/serving-software.html&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://bmline.de/img/learn-build-measure.png&quot; height=&quot;187&quot; width=&quot;200&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;

&lt;br /&gt;
How to be quick on the market?&lt;br /&gt;
How to be in budget?&lt;br /&gt;
How to reach fast the required quality?&lt;br /&gt;
How fulfill all the expectations?&lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
Of course their is not a general answer, nor there is a royal road to lead you on the way. Small steps are necessary to try and learn from it. One thing is indispensable: Speak direct to your customer and listen, just listen.&lt;br /&gt;
&lt;br /&gt;
&lt;iframe allowfullscreen=&quot;true&quot; frameborder=&quot;0&quot; height=&quot;624&quot; mozallowfullscreen=&quot;true&quot; src=&quot;https://docs.google.com/presentation/d/1UDsXAeN8cKchJy8jQz4Ep6xRE-D9VW0rfi_z5je8x4o/embed?start=false&amp;amp;loop=false&amp;amp;delayms=6000&quot; webkitallowfullscreen=&quot;true&quot; width=&quot;800&quot;&gt;&lt;/iframe&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.bmline.de/feeds/4372264375736814796/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.bmline.de/2013/11/serving-software.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8479718283588684928/posts/default/4372264375736814796'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8479718283588684928/posts/default/4372264375736814796'/><link rel='alternate' type='text/html' href='http://blog.bmline.de/2013/11/serving-software.html' title='Serving software'/><author><name>rotwuschl</name><uri>http://www.blogger.com/profile/10607947701179624674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8479718283588684928.post-6710769068195499589</id><published>2013-11-13T09:51:00.000+01:00</published><updated>2014-10-01T13:02:51.365+02:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="blogging"/><category scheme="http://www.blogger.com/atom/ns#" term="personal branding"/><title type='text'>Blogging is a method to structure, organize, share and conserve your thoughts</title><content type='html'>I had searched the last years for a method to write down my thoughts. I like to use ink and feather, I had used hardcore notepads in the time where the only portable electronic devices were a pocket calculator, I had used for the years a lot of electronic devices, with different software on pc&#39;s notebooks, smartphones and tablets to conserve my thoughts and my work. Therefore I tested a lot of methods, techniques and software. But at least I found all of the stuff a little impractical.&lt;br /&gt;
&lt;br /&gt;
&lt;a name=&#39;more&#39;&gt;&lt;/a&gt;&lt;br /&gt;
In an autobiography of Irish novelist James Joyce, I read once that he used to make himself notes each occasion, he wrote on everything he could find, napkins, coasters or in short everything he can find and plug he used. He then collected these notes, convicted them in card file boxes, which he in turn was able to incorporate in his works.&lt;br /&gt;
&lt;br /&gt;
For me the change took place with cloud computing and the several apps that coming up in the past. It happens when I was reading about Matt Mullenweg and how automatic grow up in a startup with&amp;nbsp;&lt;a href=&quot;http://www.businessinsider.com/automattics-awesome-remote-work-culture-2013-8&quot; target=&quot;_blank&quot;&gt;remote work culture&lt;/a&gt;&amp;nbsp;and their cool idea to meet up somewhere once per year in a new fantastic place over the world. I was fascinated about this meetings and thought about the blogger culture. That decided me to start a blog and share all the stuff in my mind. Blogging seems to me to personally and I never thought I could write good enough to share with others - and maybe this is still true, but I decided to write for me and do this in a foreign language.&lt;br /&gt;
&lt;br /&gt;
In our days blogging belongs to a professional basic attitude, and no one can afford more to return his/her back to this. A blog is a simple way, to share your thoughts through a medium that is simple to use, you can write down your thoughts, you can bring it clear to a document, you can create collections about your interests, you can do a internet journey self tracking, you can filing on it, you can share it or not, create a channel, you can get response of your doing. That is for me the perfect way to write down my thoughts, so this blog was born. I know there are other cooperation product outside like&amp;nbsp;&lt;a href=&quot;http://asana.com/&quot;&gt;asana&lt;/a&gt;,&amp;nbsp;&lt;a href=&quot;http://evernote.com/&quot; target=&quot;_blank&quot;&gt;evernote&lt;/a&gt;&amp;nbsp;and other that offers also a fantastic world. At the moment I believe blogging could be a place to put all together and share this with an audience.&lt;br /&gt;
&lt;br /&gt;
Today I use various blogs (private and public) to collect my thoughts, I make notes about my work or a few popular excursions into the internet in order to document them can then visit again later or to create my own collections. I had also answered the question for me, which blog software is the right and which is not so comfortable, I tested some of them and find out for me that the easiest and quickest way is &lt;a href=&quot;http://wordpress.com/&quot;&gt;wordpress.com&lt;/a&gt; and &lt;a href=&quot;http://blogger.com/&quot;&gt;blogger.com&lt;/a&gt;. Which one you want to use, well that are many blogs in the internet that describe the pro and contra of both. My decision fall to &lt;a href=&quot;http://blogger.com/&quot;&gt;blogger.com&lt;/a&gt; (blogspot), but the easy feeling could you only get when you started one and get some practice.&lt;br /&gt;
&lt;br /&gt;
You can also read several blogs that describe the technical options and extensions (best further information for blogger is &lt;a href=&quot;http://helplogger.blogspot.de/&quot;&gt;helplogger.blogspot.de&lt;/a&gt;). If you want to know which software and hardware I also use, you can find my&amp;nbsp;&lt;a href=&quot;http://blog.bmline.de/p/setup.html&quot; target=&quot;_blank&quot;&gt;setup&lt;/a&gt;&amp;nbsp;on this site.&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;div&gt;
So please tell me your thoughts about the practicable part and which is the best way you think is to conserve some thoughts (&lt;a href=&quot;mailto:thoughts@bmline.de?Subject=Think%20allowed:%20&quot; target=&quot;_blank&quot;&gt;thoughts@bmline.de&lt;/a&gt;).&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;a href=&quot;mailto:thoughts@bmline.de?Subject=Think%20allowed:%20&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img alt=&quot;think allowed - Give freedom of thoughts&quot; border=&quot;0&quot; src=&quot;http://bmline.de/img/think-allowed.png&quot; height=&quot;446&quot; title=&quot;think allowed&quot; width=&quot;800&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
Thank you for your time :)&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.bmline.de/feeds/6710769068195499589/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.bmline.de/2013/11/blogging-is-method-to-structure-share.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8479718283588684928/posts/default/6710769068195499589'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8479718283588684928/posts/default/6710769068195499589'/><link rel='alternate' type='text/html' href='http://blog.bmline.de/2013/11/blogging-is-method-to-structure-share.html' title='Blogging is a method to structure, organize, share and conserve your thoughts'/><author><name>rotwuschl</name><uri>http://www.blogger.com/profile/10607947701179624674</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>