søndag den 18. februar 2018

Running Docker on Homebrew

Docker has been growing in popularity among developers and sysadmins for the last few years, but it wasn’t until recently I decided to look into it for some of the projects I run in my sparetime, and try it out for myself.

What is Docker?

Docker is an open-source engine that automates the deployment of any application as a lightweight, portable, self-sufficient container that will run virtually anywhere.
Docker ships applications using containers, containing any requirements for running the application, ensuring that the application runs in the same manner in production as in development. The use of containers also makes the systems isolated, enabling developers to run applications and their requirements inside a virtual machine, instead of having to install requirements on the workstation.
This means that getting a development environment up and running Rails, Wordpress etc., is now a matter of getting the right image from the Docker repository, and Docker will set up all requirements (application, database, webserver etc.)
There is one catch though, on Mac: It uses technology that doesn’t work natively on Mac. However in recent versions, it’s become pretty easy to handle, as Docker has a lightweight Linux VM, which allows it to run on Mac.

Getting started

We’ll start off by installing Virtualbox, as it’s needed to run the Linux VM. I usually use Homebrew Cask for installing apps, so this is based on you having Homebrew and Homebrew Cask installed on your Mac. Cask is an addon for Homebrew for installing Mac binary packages via the command line. This allows you to install applications like Chrome, OmniFocus, Alfred etc. through command line, rather than having to locate them and download the apps. manually.
Anyway - as mentioned previously, running Docker on a Mac requires VirtualBox, so install that:
brew cask install virtualbox
Then install Docker and the addon boot2docker:
brew install docker
brew install boot2docker
boot2docker installs the VM that Docker needs, in order to run on the Mac. The following will download and install the VM, and setup the daemon that Docker needs to run:
boot2docker download
boot2docker init
boot2docker up
Note: If boot2docker tells you to set DOCKER_HOST manually in order to connect to Docker, you may need to run the command given from the command line (It should look like this export DOCKER_HOST=tcp://localhost:4243).
The docker command line tool should now be ready to talk to the daemon, and you should be able to start up a Docker instance.
I had some issues with port forwarding, when I launched my first Docker instance on my laptop - as I needed to explicitly forward the ports needed for access through VirtualBox. This is a known issue on Mac, which a lot of developers experience. 

Five Things That Motivate Developers

Money isn’t everything

One of the most common misunderstandings of developers I’ve met over the years, is that we are in an industry that pays high salaries, and that’s the reason for us being in the game. Furthermore, I’ve met a lot of middle-managers, who think developers are overpaid and spoiled “nerds” with no life.
During my years as a developer, I’ve met 5% that work as developers for the money, and 100% of those were poor developers, with basic skills and no professional integrity. The reason is, basically, that learning development purely for the money is a bad investment. Most developers with a high skillset will have invested years of sparetime into learning and perfecting their craft, years with little or no pay for the most part.

But then, what motivates developers?

1. Success and “winning” spirit

Most developers are competitive, proud people, who try to deliver the best possible result.
Feeling like a part of a team, with a clear, common goal is probably the most motivating thing for any developer. Convince them that everyone is determined on reaching the same goals, and show them what their role is in the big picture, and most of the time, they will be the ones working like crazy, while others complain about late hours.
On the other hand - being forced into writing poor, unmaintainable code, is one of the worst things you can do to a developer who loves his craft. You wouldn’t ask a construction worker to build your house using the worst possible materials, while being blindfolded.
If you have limited time, cut down on features, not on “doing things the right way”. Delivering a successful product in a developers mind is more than just “launching on time” - if the technical platform is not up to the standards of the developer, they will see it as a failure, on time or not.

2. Making a difference

Developers are commonly fueled by the desire to change the world. Sometimes by automating stupid, human behaviour that waste precious lives, but most commonly by the desire to make everyones lives a bit easier and pleasant.
Most of the time, a developer will choose a position based on the reach of his work: If it affects millions of people, or helps someone, they will choose it over a position that pays a bit more. At the end of the day, developers are pleasers and problemsolvers.

3. Excellent management

No micro-management. The best way to manage a team of software developers, is to present a challenge, encourage independent thinking and shield the team from any disturbances, while not getting in the way of the development process.
The worst mistake made as a manager, is probably to demean the work done by developers. Don’t tell them their estimates are “way off”, unless you’re a developer yourself, and know how a feature should be implemented. Instead, encourage them by explaining the impact of the feature, and the difference it will make for the company, not telling them it “should be easy to implement”.

4. Being heard

Developers are on the frontline, when it comes to the services and systems running the company - and they’re usually the first to know when something is not working. If a system crashes after a developer pointed out the flaws or shortcomings of the platform, over a period of time, he will take it personally if noone listened to the warnings.
The most basic rule - if a developer speaks, you should listen. If more developers agree, you should act.

5. Learning and being challenged

Chances are if you’re hiring a developer that have 10 years of professional experience, you can count on them having at least 2-3 additional years of sparetime invested in their knowledge, and they did that for a reason.
As developers, the world we work in keep changing. Developers need to stay up-to-date, and most will do that on their own, if the challenges of the job require it. Just don’t expect a developer to stay in a position, if the tasks are the same as they were last year.

Now what?

Are you a developer? Take a look at the list, and try to figure out which points are present in your current job, and which aren’t. From my own world, points #1, #2 and #5 are some of the main reasons I’m looking forward to my new job. Are you pleased with your own result?
Are you a manager? Try asking the developers how they feel about the points in this post. Are they satisfied with all points, or are some lacking?

lørdag den 17. februar 2018

content management system

Gå til alle sider på dit websted, og en redigering værktøjslinje giver dig alle de funktioner, du har brug for at opdatere din hjemmeside. Ingen skræmmende manualer, ingen komplicerede administration grænseflader - bare peg og klik og du har verden for dine fødder.
Vi er et open source content management system (CMS) for folk, der ønsker en professionel internet tilstedeværelse, som er nemt at vedligeholde. State-of-the-art systemets struktur tilbyder en høj sikkerhedsstandard og giver dig mulighed for at udvikle søgemaskinevenlige hjemmesider, som også er tilgængelige for mennesker med handicap. Desuden kan systemet udbygges fleksibelt og billigt. 
Nem styring af brugerrettigheder, Live Update Service, den moderne CSS rammer ogmange allerede er integreret moduler (nyheder, kalender, formularer, etc.) har hurtigt gjort Contaoen af ​​de mest populære open source content management systemer på markedet.

  • Online tidsskrifter og aviser.
  • eCommerce sites.
  • Extranet og intranet.
  • By-portaler
  • Offentlige websteder.
  • Small business websites.
  • Websites til Non-profit og organisationer.
  • EU-baserede portaler.
  • Kirke, klub og hold hjemmesider.
  • Personlige eller familiemæssige hjemmesider.
  • Marketing fokuseret sites for en virksomhed.
  • Enhver skole, gymnasium eller universitet hjemmeside.
  • Mange online communities.
  • Alt andet du kan drømme op!

At opbygning- og drive en hjemmeside er to meget forskellige udfordringer. Ganske vist kan en person bære begge kasketter, men processen med at lancere en stor hjemmeside er meget forskelligt fra at køre en stor hjemmeside over tid. Med os kan du gøre begge dele: at bygge og drive alle størrelser af hjemmesider: Fra malermester Hansen til Coca-cola. Mange CMS'er er designet af udviklere, for udviklere. Opbygge og vedligeholde et websted med disse systemer kan være temmelig kompliceret og skræmmende for nogen, der ikke kan eller vil programmere.
At tilføje ny funktionalitet kræver at du har en form for teknisk indsigt, men det kun hvis du ønsker selv at udvikle moduler eller objekter til din løsning.
Med os, får du det bedste fra alle verdener. Alle kan begynde at lave deres egen hjemmeside på få minutter og det eneste kendskab man skal have på forhånd, er kendskab til et tekstbehandlingsprogram. Redigering er super let; bare tryk på det du ønsker at ændre.
Udviklere har mulighed for at lave alt fra super simple hjemmesider til opbygning af meget avancerede web-applikationer.
Ja, vi er piv Gratis og Open Source (FOSS) under MIT softwarelicens . Denne licens blot beskytter vores ansvar og lader dig gøre noget, du ønsker. Vi ønskede alle fra en lille virksomhed til en internet-start for at være i stand til lovligt at bruge kaboozu som en grundlæggende del af deres forretning.

Det vil altid være gratis. Der er ingen Enterprice udgave af systemet. systemet gør alt, hvad du virkelig har brug for, uden at det skal koste en bunke penge. vi lever sit eget liv og der vil være aktiv på udviklingsfronten for altid - systemets kernen ejes ikke af nogle bestemte, men af alle! Der er et voksende fællesskab og markedsplads fyldt med add-ons, som ikke er alle gratis . På denne måde er selv små bidrag med til at der fortsat kan udvikles på kernefunktionaliteten som alle har interesse i.

torsdag den 16. november 2017

individuelle designløsninger

"Vi tilbyder individuelle designløsninger med et personligt udtryk. Vi har fokus på at samle din visuelle identitet og derved styrke dit brand og forretningssucces..."

For at sikre dig den bedste designløsning, skal vi forstå dig. Vores mål er at gøre din historie til en visuel oplevelse og fremme det, som gør dig unik. Et stærkt design dna med en rød tråd skaber genkendelighed til dit brand. For os handler det om at give dig den optimale løsning og synliggøre dig på alle platforme.


https://uddannelse-dk.blogspot.comGRAFISK DESIGN

- Visuel Identitet
- Logo Design
- Web-Bannere
- Animationer / Infographics


- Skræddersyet Webløsninger
- Skræddersyet Plugins
- Facebook Apps
- Nyhedsmail


- Annoncer
- Flyers
- Visitkort

mandag den 16. oktober 2017

Knowledge about complex communication

Knowledge about complex communication, interfaces and security is needed before customer are able to control real-time data for optimal use in the daily business.
Old databases, new devices, new platforms and technologies often force the customer to change to total new platform from one vendor without a profitable business case.
We are specialized in integration. We have a wide knowledge about protocols and interfaces. We are able to design the needed middleware so you can use all the needed business applications and 3.pp hardware in you system.
This will help you to keep a profitable investment.
We has developed a multi host communication system called the UNA-system, which enables devices to communicate with different host environments simultaneously in both LANs and WANs. The UNA-system is a concept rather than a product. The system takes different shapes depending on the customer and the technology in question and therefore often perfect as a middleware product in integration between different platforms.

Top simple navigation + left subnavigation + 1 column

With the Menu Manager you can easily split the navigation in two parts. On this page the top level in the page hierarchy is displayed horizontally and depending on what page is displayed a localized sub-menu is displayed vertically to the left. In this case the sub-menu to the left displays the sub-levels (children) to Default Templates Explained.

The {menu} tag

The {menu} tag is inserted twice in the page template. First where the main navigation is, which should only show the top level. It looks like this: {menu template='simple_navigation.tpl' number_of_levels='1'}.
The sub navigation should only contain the second level and down, depending on what is selected on the first level. Also, the third level links should only display when its parent on the second level is clicked, otherwise they are hidden. That is, the second level is collapsed unless the current page has sub pages.
The tag for the sub navigation looks like this: {menu template='simple_navigation.tpl' start_level='2' collapse='1'}.

Attached style sheets for the menu

As the main navigation and the sub navigation need to be styled differently (one horizontal, the other vertical), two navigation style sheets are attached to this page template. Navigation: Simple - Horizontal is for styling the horizontal main menu. Navigation: Simple - Vertical on the other hand, contains the style for the sub navigation to the left.

Both using the same Menu Manager template

However, as you could see, both parts of the navigation are using the same menu manager template. That is because the output code is the same. It is only through CSS that the two parts get styled differently.

Floating the sidebar to the right

You can easily float the sidebar with the sub navigation to the right instead. Look in the Layout: Top menu + 2 columns style sheet for the float:left; property in the div#sidebar element. Change that to float:right; and the sidebar with the menu will instead be on the right side of the content, of course you will also have to adjust the margins for the sidebar and the div#main, basically just swap the left and right margins.

CMSMS tags in the templates

Here we explain the tags that are used in the default templates that are specific to templates in CMS Made Simple. The rest of the templates are just pure HTML. You can read more about that in the documentation wiki(external link).

Page title

<title>{sitename} - {title}</title>
For each page using these tags in a template the tags are replaced with the site name you specify in Site Admin » Global settings and the title you specify when you add/edit each page.
Read more about the {sitename} and {title} tags in Extensions » Tags in the Admin Panel.


This tag adds to your page any metadata that you have specified in Site Admin » Global settings and also page specific metadata that you can add under the Options tab when adding/editing a page.
It is also used for knowing the base folder for your site when using pretty URLs. So don't remove this if you use Pretty URLs!
Read more about the {metadata}tag in Extensions » Tags in the Admin Panel.

Stylesheets (deprecated)

This tag links to all style sheets (CSS) that you have attached to a template. It means that you only have to add this tag once and all attached style sheets will be linked automatically.
Read more about the {stylesheet} tag in Extensions » Tags in the Admin Panel.


This tag is the newer version of the tag above. The tag links to all style sheets (CSS) that you have attached to a template. It means that you only have to add this tag once and all attached style sheets will be linked automatically.
The new tag allows you to use smarty variables like [[$red]] to indicate a color, and one change will change it througout your layout. The new tag requires that [[root_url]]/ be put in front of images, as the stylesheets are cached.
Read more about the {cms_stylesheet} tag in Extensions » Tags in the Admin Panel.

Relational links

{cms_selflink dir="start" rellink=1}
{cms_selflink dir="prev" rellink=1}
{cms_selflink dir="next" rellink=1}
These are relational links for interconnections between pages, which is good for accessibility and Search Engine Optmization
Read more about the {cms_selflink} tag in Extensions » Tags in the Admin Panel.

Page width in Internet Explorer 6

<script type="text/JavaScript">
//pass min and max -measured against window width
function P7_MinMaxW(a,b){
 var nw="auto",w=document.documentElement.clientWidth;
 if(w>=b){nw=b+"px";}if(w<=a){nw=a+"px";}return nw;
<!--[if lte IE 6]>
<style type="text/css">
#pagewrapper {width:expression(P7_MinMaxW(720,950));}
#container {height: 1%;}
This isn't a tag really, but displays how to insert JavaScript in a CMSMS template.
The default templates use fluid page width. But Internet Explorer 6 doesn't understand min-width and max-width, so for that browser the min and max page width is set with this JavaScript. For other browsers the page width is set in the style sheets beginning with "Layout: ..."

Skip links for accessibility

{anchor anchor='main' title='Skip to content' accesskey='s' text='Skip to content'}
Anchor links (links to an anchor in the same page) are inserted with the {anchor} tag. In the default templates this is used for skip links that are visible to screen readers, but hidden with CSS to visual browsers.
Read more about the {anchor} tag in Extensions » Tags in the Admin Panel.

Header with logo image that links to default page

{cms_selflink dir="start" text="$sitename"}
In the header the <h1> tag (hidden by CSS) is a link to the page that is selected as the default page. The dir="start" parameter in the {cms_selflink} tag is used for this. To get the site name as the text for the link, the $sitename variable is used.
Read more about the {cms_selflink} tag in Extensions » Tags in the Admin Panel.


To insert a search form on your site, simply use the {search} tag. Search is actually a module and should therefore be called as a parameter in the {cms_module} tag, like this: {cms_module module='search'}. But to simplify matters, we did a wrapper tag so that it's easier to remember.
Read more about the Search module in Extensions » Modules in the Admin Panel.


{breadcrumbs starttext='You are here' root='Home' delimiter='»'}
Breadcrumbs is a path to the current page. In the default templates we have chosen to put the text 'You are here' before the path and force 'Home' to always be the root in the path, even if it isn't. With the delimiter parameter you can select the delimiter that separates entries in the path.
Read more about the {breadcrumbs} tag in Extensions » Tags in the Admin Panel.


{menu template='simple navigation.tpl' collapse='1'}
This is how you insert a menu where you want it to appear. Like the {search} tag, this is actually just a wrapper tag, as the Menu Manager is a module.
In the default templates the menu manager template that is used for the menus are stored in files. That's why you see the .tpl extension in the template parameter. But you can easily import menu templates to the database and edit them directly in the Admin Panel. Then you simply omit the .tpl extension in the template parameter.
Read more about the Menu Manager module in Extensions » Modules in the Admin Panel.


{news number='3' detailpage='news'}
This tag will display the last three news articles. When clicking a news article to read the details, it is opened on the page with the page alias 'news'. That's what the detailpage parameter is doing.
Like all core modules there is a wrapper tag for the News module, to make it easier to use.
Read more about the News module tag in Extensions » News in the Admin Panel.

Print button

{print showbutton=true script=true}
The {print} tag is used to insert a print link. With the showbutton parameter set to true we have told the tag to output a button instead of text. The script parameter set to true means the print dialog window opens when clicking the button, for immediate printing.
The {print} tag prints everything that is in your {content} tag, that is only the content for a page.
Read more about the {print} tag in Extensions » Tags in the Admin Panel.

Page content

Maybe the most important tag in your template. Where you put the {content} is where the content for your page will appear.
We have also chosen to put the page title on every page (the {title} tag), so that you don't have to put that in the content for every page.
The default {content} tag is required for all templates.
Read more about the {content} and {title} tags in Extensions » Tags in the Admin Panel.

Previous/next links

{anchor anchor='main' text='^ Top'}
{cms_selflink dir="previous" label="Previous page: "}
{cms_selflink dir="next"}
Some more internal links. These are using the dir parameter to link to the previous and next pages in the page hierarchy (separators and section headers will be omitted as they are no pages).

Page footer

{global_content name='footer'}
Instead of bloating your template with lots of code you can put some code in a Global Content Block. Then call that Global Content Block with the {global_content} tag. It's also useful for content or HTML code that is reused on several pages or templates.
In the default templates we have put the footer text in a Global Content Block with the name 'footer'. You find the Global Content Blocks in the Content menu in the Admin Panel.
Read more about the {global_content} tag in Extensions » Tags in the Admin Panel.

Running Docker on Homebrew

Docker has been growing in popularity among developers and sysadmins for the last few years, but it wasn’t until recently I decided to loo...