Mittwoch, 27. Februar 2013

Scientific Linux 6 and Broadcom Wireless LAN adapter...

Many people have tried to install the Broadcom WL adapter on a Laptop below Scientific Linux 6 already. With that small guide, I want to show you which way worked for me.

1.) Forget Broadcom's allround driver http://www.broadcom.com/support/802.11/linux_sta.php - it won't work!!! You won't be able to compile it on Scientific Linux 6.

2.) Update your Scientific Linux with the command "sudo yum update" first.

3.) Download http://pkgs.org/centos-6-rhel-6/atrpms-i386/broadcom-wl-5.100.82.38-5.el6.i686.rpm.html or http://pkgs.org/centos-6-rhel-6/atrpms-x86_64/broadcom-wl-5.100.82.38-5.el6.x86_64.rpm.html (it depends on what you will need for system: 32-bit or 64-bit).

4.) Look after the last installed vmlinuz version with the command "ls /boot/" or "dir /boot/". The last vmlinuz version in my case was (it is the highest number in the directory): vmlinuz-2.6.32-279.22.1.el6.x86_64 (I use a 64-bit architecture).

5.) Download the last WL-KMDL package for your vmzlinuz version and system, in my case it was:  http://dl.atrpms.net/sl6-x86_64/atrpms/stable/broadcom-wl-kmdl-2.6.32-279.22.1.el6-5.100.82.38-5.el6.x86_64.rpm (that's a 64-bit version). As you can see, the correct vmlinuz version and architecture must appear in the file name here.

6.) Double click broadcom-wl-kmdl-<your vmlinuz version>-5.100.82.38-5.el6.<your architecture>.rpm first and then double click broadcom-wl-5.100.82.38-5.el6.<your architecture>.rpm. If you have downloaded the right versions, no error message should appear. Then restart your system and it should work.

7.) You will need to have to repeat the steps when "yum update" updated your kernel version of your Scientific Linux. Always. The broadcom driver doesn't get updated automatically and will get deactivated by the OS update then. You have to do the update of the broadcom driver by yourself. Fortunately, those are only a few steps.

Good luck!!!

Mittwoch, 7. März 2012

DynDNS mit O2 DSL Router...

Für die Einrichtung eines kostenlosen DynDNS Accounts, siehe hier:
http://temporaer-byte2702.blogspot.com/2012/03/dyndns-kostenlos-mit-dyndnscomdyndnsorg.html

Dies ist die Fortsetzung.

1.) Konfigurationsseite des Routers aufrufen und einloggen:



2.) NAT ist aktiviert:



3.) Portweiterleitung zum Server einstellen:



4.) Firewall einstellen:

´

5.) Neue Firewallregel für WAN -> LAN (Internet nach internes Netz) einrichten:



6.) Erweiterte Einstellungen für diese Firewallregel (für Webdienste muss nur der TCP Port 80 eingetragen werden):



7.) Ggf. "Verfügbare Dienste" bearbeiten und weitere Ports hinzufügen (dieser Schritt kann weggelassen werden, wenn nur Webdienste ausgeführt werden sollen):



8.) Die lassen sich mit einem Klick auf die entsprechende "Nr." bearbeiten (dieser Schritt kann weggelassen werden, wenn nur Webdienste ausgeführt werden sollen):



9.) Anschließend noch DynDNS konfigurieren:



10.) Fertig. Getestet werden kann hier nur von Extern (es wurde erfolgreich von dort getestet), von Intern wird nur die Login-Seite des Routers angezeigt. Für Intern kann man ja die direkte Adresse des Servers nehmen oder ggf. http://192.168....
 

DynDNS (kostenlos) mit DYNDNS.COM/DYNDNS.ORG

1.) http:///www.dyndns.com aufrufen und oben rechts auf "Sign In" klicken:


2.) Die Felder entsprechend ausfüllen:


3.) DynDNS möchte eine Bestätigung per e-Mail:


4.) Link von DynDNS bestätigen (Link anklicken):



5.) Anmelden:



6.) Die Angebote ignorieren und oben rechts auf "My Services" klicken:



7.) Links im Menü auf "DynDNS Hosts" klicken:



8.) Den Button "Add New Hostname" anklicken:



9.) Ja, das Spiel müssen wir jetzt einmal mitspielen. Wir simulieren das aber nur, um weiter zu kommen. Daher hier auf den Link "free 14 day trial of DynDNS Pro" klicken:



10.) Dann den gelben Button "Start the Trial" anklicken:



11.) Einen Host anlegen und den Button "Add to Cart" klicken:



12.) Das kann man nicht ändern. Hier bitte auf den Button "Proceed to Checkout" klicken:


13.) Für meinen anderen DynDNS Account habe ich bei Name, Adresse und Telefonnummer meine echten Daten hinterlassen. Bei den Kreditkarteninformationen habe ich aber Fake-Daten angeben. DynDNS wird es für eine Trial sowieso nicht brauchen und ich bin zu faul, es wieder abzumelden. Card Expiration und Security Code können falsch sein. Die Card Number sollte aber einer scheinbar gültige Nummer sein, sonst wird die Nummer nicht akzeptiert. Die hier im Screenshot genannte Nummer wird er nicht akzeptieren. Probieren geht über Studieren. Dann den Button "Sign Up for Trial" klicken:



14.) Natürlich kann DynDNS die Kreditkarte nicht verwerten. Kein Problem, wir spielen das Spiel weiter, wir klicken auf "repeat the checkout process":



15.) Hier klicken wir nun hinter dem "DynDNS Pro Trial (14 days)" auf den Button "remove", denn das will ich nicht. Möglicherweise ist dies ein Bug seitens DynDNS, welchen wir ausnutzen:



16.) Es sollte dann so aussehen (danach auf den Button "Activate Services" klicken):



17.) Nun wird der angelegte Host angezeigt (kann über das Menü links "DynDNS Host" auch aufgerufen werden):



18.) Wenn man den Hostname anklickt, kann dieser jederzeit überarbeitet werden:



19.) Fertig. Nun kann man den Host auch löschen und neu anlegen. DynDNS wird keine Probleme mehr bereiten. Außer vielleicht, dass der Host weiterhin automatisch nach ca. 30 Tagen gelöscht wird, wenn er nicht regelmäßig geupdated wird. ;-)
 

Samstag, 1. Januar 2011

CSS Style for FriendBurst.com

The code comes into the CSS section if you customize the profile:

body {
background-color: #000000 !important;
background-image: url(http://jweschenfelder.de/images/bg.png);
background-attachment: fixed !important;
background-position: center center !important;
background-repeat: no-repeat !important;
color: #eeeeee !important;
border: 0px !important;
}

div#header {
background-color: transparent !important;
border-width: 0px !important;
}

.profile_header {
border-width: 0px !important;
}

div#header ul#main_nav {
background-color: transparent !important;
background-image: url(http://jweschenfelder.de/images/008.png);
background-attachment: fixed !important;
background-position: left top !important;
background-repeat: repeat !important;
border-color: #000066 !important;
border-style: solid !important;
border-width: 1px !important;
}

#profile_nav_list {
background-color: transparent !important;
border-width: 0px !important;
}

#profile_nav_list li a {
background-color: transparent !important;
border-width: 0px !important;
}

div#content_container {
background-color: transparent !important;
border-width: 0px !important;
}

div#sidebar div.block {
background-color: transparent !important;
background-image: url(http://jweschenfelder.de/images/008.png);
background-attachment: fixed !important;
background-position: left top !important;
background-repeat: repeat !important;
border-color: #000066 !important;
border-style: solid !important;
border-width: 1px !important;
}

div#content div.block {
background-color: transparent !important;
background-image: url(http://jweschenfelder.de/images/008.png);
background-attachment: fixed !important;
background-position: left top !important;
background-repeat: repeat !important;
border-color: #000066 !important;
border-style: solid !important;
border-width: 1px !important;
}

div#content div.block div.title {
background-color: #000066 !important;
color: #eeeeee !important;
border-width: 0px !important;
}

div#sidebar div.block div.title {
background-color: #000066 !important;
color: #eeeeee !important;
border-width: 0px !important;
}

.table {
background-color: #eeeeee !important;
color: #000000 !important;
}

.comment_feed {
background-color: #eeeeee !important;
}

.editor_menu {
background-color: #eeeeee !important;
}

.comment_box {
background-color: transparent !important;
}

.comment_header {
background-color: transparent !important;
border-width: 0px !important;
color: #eeeeee !important;
text-decoration: none !important;
}

.comment_content {
background-color: transparent !important;
}

.comment_link {
background-color: transparent !important;
}

input {
background-color: #ffffff !important;
}

textarea {
background-color: #eeeeee !important;
border-color: #000000 !important;
border-style: solid !important;
border-width: 1px !important;
color: #333333 !important;
}

#profile_menu ul li a {
background-color: transparent !important;
background-image: url(http://jweschenfelder.de/images/008.png);
background-attachment: fixed !important;
background-position: left top !important;
background-repeat: repeat !important;
border-color: #5599ff !important;
border-style: solid !important;
border-width: 1px !important;
color: #5599ff !important;
text-decoration: none !important;
}

.comment_link li a {
background-color: transparent !important;
border-color: #5599ff !important;
border-style: solid !important;
border-width: 1px !important;
color: #5599ff !important;
text-decoration: none !important;
}

.label_flow {
border-color: #000066 !important;
border-style: solid !important;
border-width: 1px !important;
}

.profile_header a {
color: #eeeeee !important;
text-decoration: none !important;
}

#ttitopnavbar #ttiwelcome #first_name {
color: #eeeeee !important;
text-decoration: none !important;
}

.profile_header a:hover {
color: #eeeeee;
text-decoration: none;
}

div#header div#top_nav_holder {
border-color: #000066 !important;
}

div#header ul#main_nav li a {
color: #5599ff !important;
text-decoration: none !important;
}

div#header div#right_nav ul li a {
color: #5599ff !important;
text-decoration: none !important;
}

div#header ul#main_nav li ul {
border-color: #5599ff !important;
}

div#header div#right_nav ul li ul {
border-color: #5599ff !important;
}

div#header ul#main_nav li:hover a {
text-decoration: none !important;
background-color: #000000 !important;
}

div#header ul#main_nav li.hover a {
text-decoration: none !important;
background-color: #000000 !important;
}

div#header ul#main_nav li.active a {
text-decoration: none !important;
background-color: #000000 !important;
}

div#header div#right_nav ul li:hover a {
text-decoration: none !important;
background-color: #000000 !important;
}

div#header div#right_nav ul li.hover a {
text-decoration: none !important;
background-color: #000000 !important;
}

div#header div#right_nav ul li.active a {
text-decoration: none !important;
background-color: #000000 !important;
}

a {
color: #5599ff !important;
text-decoration: none !important;
}

div#header div#top_nav {
color: #000000 !important;
}

div.info_left {
color: #eeeeee !important;
text-decoration: none !important;
}

div.info_right {
color: #eeeeee !important;
text-decoration: none !important;
}

div .extra_info {
color: #eeeeee !important;
text-decoration: none !important;
}

div#sidebar div.block div.content {
color: #eeeeee !important;
text-decoration: none !important;
}

div#content div.block div.content {
color: #eeeeee !important;
text-decoration: none !important;
}

a.editor_button {
border-width: 0px !important;
}

div#bottom ul li a {
color: #000000 !important;
text-decoration: none !important;
}

div#sidebar div.block div.bottom {
background-color: transparent !important;
}

div.row1 {
border-width: 0px !important;
}

div.row2 {
border-width: 0px !important;
}

#profile_menu ul li a:hover {
background-color: #000066 !important;
background-image: url(http://jweschenfelder.de/images/008.png);
background-attachment: fixed !important;
background-position: left top !important;
background-repeat: repeat !important;
}

ul.action li a {
background-color: transparent !important;
border-width: 0px !important;
}

div#sidebar div#menu {
background-color: transparent !important;
border-width: 0px !important;
}

/* on other pages */
div#content h1 {
border-width: 0px !important;
}

/* on other pages */
div#content .h1 {
border-width: 0px !important;
}

/* on other pages */
div#sidebar div#menu li a {
border-width: 0px !important;
}

/* on other pages */
div#sidebar div#menu li a:hover {
background-color: #000066 !important;
}
 

div#content p {
color: #eeeeee !important;
}

 
Attention: FriendBurst.com doesn't accept pictures from Photobucket.com!

Samstag, 13. November 2010

CSS Style for MySpace profile 1.0 and SiteModel.net

The code comes into the About Me section if you edit the profile:

<style>
table, tr, td {
   background-color:transparent !important;
   border:none !important;
   border-width:0px !important;
   }
body, .bodyContent {
   background-color:000000 !important;
   background-image:url(http://i293.photobucket.com/albums/mm73/byte2702/_MySpace/001.png);
   background-attachment:fixed !important;
   background-position:center center !important;
   background-repeat:no-repeat !important;
   scrollbar-face-color:3333FF !important;
   scrollbar-highlight-color:6666FF !important;
   scrollbar-3dlight-color:3333FF !important;
   scrollbar-darkshadow-color:000066 !important;
   scrollbar-shadow-color:0000CC !important;
   scrollbar-arrow-color:000000 !important;
   scrollbar-track-color:000066 !important;
   }
table, tr, td, li, p, div {
   color:CCCCCC !important;
   }
.btext {
   color:CCCCCC !important;
   }
.blacktext10 {
   color:CCCCCC !important;
   }
.blacktext12 {
   color:CCCCCC !important;
   }
.lightbluetext8 {
   color:CCCCCC !important;
   }
.orangetext15 {
   color:CCCCCC !important;
   }
.redtext {
   color:CCCCCC !important;
   }
.redbtext {
   color:CCCCCC !important;
   }
.text {
   color:CCCCCC !important;
   }
.whitetext12 {
   color:CCCCCC !important;
   }
.nametext {
   color:CCCCCC !important;
   }
a:active, a:visited, a:link {
   color:CCCCCC !important;
   text-decoration:underline !important;
   }
a:hover {
   color:CCCCCC !important !important;
   text-decoration:line-through underline !important;
   }
a.redlink:active, a.redlink:visited, a.redlink:link {
   color:CCCCCC !important;
   text-decoration:underline !important;
   }
a.redlink:hover {
   color:CCCCCC !important;
   text-decoration:line-through underline !important;
   }
a.navbar:active, a.navbar:visited, a.navbar:link {
   color:CCCCCC !important;
   }
table table {
   border-width:0px !important;
   background-color:transparent !important;
   }
.profileInfo {
   width:300px !important;
   border-width:1px !important;
   border-color:000066 !important;
   border-style:solid !important;
   padding:5px !important;
   background-color:transparent !important;
   background-image:url(http://i293.photobucket.com/albums/mm73/byte2702/_MySpace/008.png);
   background-attachment:fixed !important;
   background-position:left top !important;
   background-repeat:repeat !important;
   }
.contactTable {
   width:300px !important;
   height:151px !important;
   border-width:1px !important;
   border-color:000066 !important;
   border-style:solid !important;
   padding:5px !important;
   background-color:transparent !important;
   background-image:url(http://i293.photobucket.com/albums/mm73/byte2702/_MySpace/015.png);
   background-attachment:inherit !important;
   background-position:left top !important;
   background-repeat:repeat !important;
   }
.contactTable a img {
   visibility:hidden !important;
   }
.userProfileURL {
   width:300px !important;
   border-width:1px !important;
   border-color:000066 !important;
   border-style:solid !important;
   padding:5px !important;
   background-color:transparent !important;
   background-image:url(http://i293.photobucket.com/albums/mm73/byte2702/_MySpace/008.png);
   background-attachment:fixed !important;
   background-position:left top !important;
   background-repeat:repeat !important;
   }
.userProfileURL td {
   background-color:transparent !important;
   }
.interestsAndDetails {
   width:300px !important;
   border-width:1px !important;
   border-color:000066 !important;
   border-style:solid !important;
   padding:5px !important;
   background-color:transparent !important;
   background-image:url(http://i293.photobucket.com/albums/mm73/byte2702/_MySpace/008.png);
   background-attachment:fixed !important;
   background-position:left top !important;
   background-repeat:repeat !important;
   }
.userProfileDetail {
   width:300px !important;
   border-width:1px !important;
   border-color:000066 !important;
   border-style:solid !important;
   padding:5px !important;
   background-color:transparent !important;
   background-image:url(http://i293.photobucket.com/albums/mm73/byte2702/_MySpace/008.png);
   background-attachment:fixed !important;
   background-position:left top !important;
   background-repeat:repeat !important;
   }
.extendedNetwork {
   width:435px !important;
   height:120px !important;
   border-width:1px !important;
   border-color:000066 !important;
   border-style:solid !important;
   padding:5px !important;
   background-color:transparent !important;
   background-image:url(http://i293.photobucket.com/albums/mm73/byte2702/_MySpace/016.png);
   background-attachment:inherit !important;
   background-position:left top !important;
   background-repeat:repeat !important;
   }
.latestBlogEntry {
   width:435px !important;
   border-width:1px !important;
   border-color:000066 !important;
   border-style:solid !important;
   padding:5px !important;
   background-color:transparent !important;
   background-image:url(http://i293.photobucket.com/albums/mm73/byte2702/_MySpace/008.png);
   background-attachment:fixed !important;
   background-position:left top !important;
   background-repeat:repeat !important;
   }
.blurbs {
   width:435px !important;
   border-width:1px !important;
   border-color:000066 !important;
   border-style:solid !important;
   padding:5px !important;
   background-color:transparent !important;
   background-image:url(http://i293.photobucket.com/albums/mm73/byte2702/_MySpace/008.png);
   background-attachment:fixed !important;
   background-position:left top !important;
   background-repeat:repeat !important;
   }
.friendSpace {
   width:435px !important;
   border-width:1px !important;
   border-color:000066 !important;
   border-style:solid !important;
   padding:5px !important;
   background-color:transparent !important;
   background-image:url(http://i293.photobucket.com/albums/mm73/byte2702/_MySpace/008.png);
   background-attachment:fixed !important;
   background-position:left top !important;
   background-repeat:repeat !important;
   }
.friendSpace img {
   max-height:150px !important;
   max-width:100px !important;
   overflow:hidden !important;
}
.friendsComments img {
   max-height:100% !important;
   max-width:100% !important;
   overflow:hidden !important;
}
</style>
<br>Your Text<br>

The more !important, the better... ;-)

Sonntag, 7. November 2010

Abstract Data Type (ADT) in C/C++: Sorted Linked List

C/C++:

I won't explain the source code below. Either you understand it or you don't understand it.
My GNU C++ Compiler under Ubuntu does understand the source code, too. ;-)
The code is written for C++, but you can use the code for C as well.


Header file 'my_list.h': 
#ifndef MY_LIST_H
#define MY_LIST_H
struct node
{
  int data;
  node *next;
};
node *insert_element_in_ascending_order(node *mylist, int data);
node *insert_element_in_descending_order(node *mylist, int data);
void delete_mylist(node *mylist);
void write_mylist(FILE *textfile, node *mylist);
#endif


CPP file 'my_list.cpp':                 // replace 'my_list.cpp' by 'my_list.c' for a C program
#include <iostream>               // remove this line if it shall be a C program
#include <cstdio>                 // replace 'cstdio' by 'stdio.h' if it shall be a C program
#include <cstdlib>                // replace 'cstdlib' by 'stdlib.h' if it shall be a C program
#include "my_list.h"

using namespace std;              // remove this line if it shall be a C program

node *insert_element_in_ascending_order(node *mylist, int data)
{
  node *element = 0;              // replace '0' by 'NULL' if it shall be a C program
  node *newelement = 0;           // replace '0' by 'NULL' if it shall be a C program
  node *before = 0;               // replace '0' by 'NULL' if it shall be a C program
  if (mylist == 0)                // replace '0' by 'NULL' if it shall be a C program
  {
    // create a new list if it doesn't exist
    mylist
= new node;
    mylist->data = data;
    mylist->next
= 0;
             // replace '0' by 'NULL' if it shall be a C program
  }
  else
  {
    // insert at the end of the list
    element = mylist;
    while (element->next != 0)    // replace '0' by 'NULL' if it shall be a C program
      element = element->next;
    if (element->data < data)
 
    {
      newelement = new node;
      newelement->data = data;
      newelement->next
= 0;       // replace '0' by 'NULL' if it shall be a C program
      element->next = newelement;
    }
    else
    {
      if (mylist->data > data)
      {
        // insert at the beginning of the list
        newelement = new node;
        newelement->data = data;
        newelement->next
= mylist;
        mylist = newelement;
      }
      else
      {
        // insert somewhere between the beginning and the end of the list (sorted)
        for (element = mylist; element != 0; element = element->next)   // C: repl. '0' by 'NULL'
          if (element->data < data)
            before = element;
        newelement = new node;
        newelement->data = data;
 

        newelement->next = before->next;
        before->next = newelement;
      }
    }
  }
  return mylist;
}

node *insert_element_in_descending_order(node *mylist, int data)
{
  node *element = 0;              // replace '0' by 'NULL' if it shall be a C program
  node *newelement = 0;           // replace '0' by 'NULL' if it shall be a C program
  node *before = 0;               // replace '0' by 'NULL' if it shall be a C program
  if (mylist == 0)                // replace '0' by 'NULL' if it shall be a C program
  {
    // create a new list if it doesn't exist
    mylist = new node;
    mylist->data = data;
    mylist->next
= 0;
             // replace '0' by 'NULL' if it shall be a C program
  }
  else
  {
    // insert at the end of the list
    element = mylist;
    while (element->next != 0)    // replace '0' by 'NULL' if it shall be a C program
      element = element->next;
    if (element->data > data)
    {
      newelement = new node;
      newelement->data = data;
      newelement->next
= 0;       // replace '0' by 'NULL' if it shall be a C program
      element->next = newelement;
    }
    else
    {
      if (mylist->data < data)
      {
        // insert at the beginning of the list
        newelement = new node;
        newelement->data = data;
        newelement->next
= mylist;
        mylist = newelement;
      }
      else
      {
        // insert somewhere between the beginning and the end of the list (sorted)
        for (element = mylist; element != 0; element = element->next)   // C: repl. '0' by 'NULL'
          if (element->data > data)
            before = element;
        newelement = new node;
        newelement->data = data;
        newelement->next
= before->next;
        before->next = newelement;
      }
    }
  }
  return mylist;
}

void delete_mylist(node *mylist)
{
  node *temp = 0;                 // replace '0' by 'NULL' if it shall be a C program
  while (mylist != 0)             // replace '0' by 'NULL' if it shall be a C program
  {
    temp = mylist->next;
    delete mylist;
    mylist = 0;                   // replace '0' by 'NULL' if it shall be a C program
    mylist = temp;
  }
}

void write_mylist(FILE *textfile, node *mylist)
{
  int i = 0;
  node *element = 0;              // replace '0' by 'NULL' if it shall be a C program
  fprintf(textfile, "Output:\n\n");
  for (element = mylist; element != 0; element = element->next)   // C: replace '0' by 'NULL'
    fprintf(textfile, "%8d\t%8d\n", ++i, element->data);
} 



Example: 
#include <iostream>               // remove this line if it shall be a C program
#include <cstdio>                 // replace 'cstdio' by 'stdio.h' if it shall be a C program
#include <cstdlib>                // replace 'cstdlib' by 'stdlib.h' if it shall be a C program
#include "my_list.h"

using namespace std;              // remove this line if it shall be a C program
 
int main(void)
{
  struct node *mylist = 0;        // replace '0' by 'NULL' if it shall be a C program
  int dataarray[5] = {15, 3, 1, 20, 7};
  for (int i = 0; i < 5; i++)
    mylist = insert_element_in_ascending_order(mylist, dataarray[i]);
 
write_mylist(stdout, mylist);
 
delete_mylist(mylist);
}



The brown parts should be easy to memorize because the parts are equal.
The
violet parts show only the used functions of the Sorted Linked List.

The difference between the functions
insert_element_in_ascending_order(...) and insert_element_in_descending_order(...) is that the three red '<' and '>'
signs change their direction. That's all.

This program uses words like 'data' and 'before'. You should visit one of the following pages here:
- Official Webpage of Brent Spiner
- Official MySpace page of Brent Spiner
- Official Twitter page of Brent Spiner


Many thanks!