darmowe mp3 od … Sony BMG

onjin 6 czerwiec 2006, 08:06

Kto by się spodziewał ;). Ale ze strony Sony BMG nie był to krok świadomy.

Nie będę się rozpisywał. Wszystkie konkrety są w artykule na nowej stronie http://www.hack.pl/

Brak komentarzy »

Teoria względności

onjin 30 marzec 2006, 09:03

Znalezione w stopce:

Pracownik jest zbędny w firmie gdy prosi o
podwyżkę, lecz niezastąpiony gdy prosi o urlop

Brak komentarzy »

Własna strona startowa

www, onjin 23 luty 2006, 11:02

Popularne (choć chyba powoli) stają się serwisy oferujące osobiste strony startowe. Strona taka zawiera często newsy z interesujących nas serwisów, okienko logowanie się do naszego serwisu pocztowego, pogodę, kursy walut, notatki i wiele innych.

Z polskich serwisów kojarzę jedynie startowy.com. Ostatnio dużo słychać także o witrynie Microsoftu live.com. Wczoraj natomiast wpadł mi do Firefox’a taki adres jak www.netvibes.com/.

Cechą wspólną tych serwisów jest wygodna edycja swojej strony oraz wygodnie przemieszczanie jej elementów. Aby korzystać z startowy.com należy się zarejestrować. Otrzymujemy wtedy swój osobisty adres np. mojastrona.startowy.com, który możemy propagować wśród naszych znajomych (dokładając np. do niej własny blog). Serwis ten odbiega więc od funkcji tylko naszej osobistej strony startowej.

live.com oraz www.netvibes.com natomiast nie dają możliwości stworzenia własnego zewnętrznego adresu. Zapamiętują Twoje ustawienia za pomocą ciasteczek (cookies) lub po zarejestrowaniu swojego adresu email i ustawieniu hasła, możemy uzyskać dostęp do swojej strony z dowolnego komputera i przeglądarki.
Pod względem różnorodności box’ów (funkcji) www.netvibes.com pozostaje na topie, natomiast live.com umożliwia nam dodatkowo sterowanie layoutem (ilość kolumn, język strony).
Oczywiście live.com (domyślnie) oraz www.netvibes.com są serwisami anglojęzycznymi.

1 komentarz »

słownik wyrazów obcych

www, onjin 10 luty 2006, 16:02

Do strony z wyszukiwarkami dla Firefox’a dodałem wyszukiwarkę do Słownika Wyrazów Obcych Kopalińskiego

Wystarczy kliknąć na dodaj obok opisu w tabelce, przełączyć w prawym górnym rogu Firefox’a wyszukiwarkę z Google na Kopaliński i szukać :D

8 komentarzy »

skracanie formularzy + java script

www, onjin 9 luty 2006, 08:02

Długie formularze, podzielone na kilka sekcji ciągnące się w dół strony, nie są zbyt czytelne. Formularz taki można zmodyfikować dzieląć go na klikalne etapy lub wizualne zakładki. Ale jeżeli mamy wiele takich formularzy napisanych na dodatek w samym HTML’u ?

widok normalny

Możemy to sobie uprościć za pomocą JavaScript. Odpowiednia funkcja wywołana po załadowaniu się strony [body onLoad=”funkcja();”] może wyszukać sekcje naszego formularza i zwinąć je do ciekawszych wizualnie zakładek.

widok z zakładkami

Żeby funkcja wiedziała co jest sekcją, należy je odpowiednio oznaczyć np. poprzez odpowiednią klasę CSS ’subpanel’

Druga ważna rzecz, skrypt musi wiedzieć jak nazwać zakładki. Do tego wykorzystałem atrybut title. Nasz kod wygląda teraz tak:

<div class="subpanel" title="zakładka 1">
    <h2>sekcja 1</h2>
</div>
<div class="subpanel" title="zakładka 2">
    <h2>sekcja 2</h2>
</div>

Teraz za pomocą JavaScript możemy odnaleźć wszystkie znaczniki DIV.

if (!document.getElementsByTagName
    || !document.createElement
    || !document.appendChild) return;

/* pobieramy wszystkie div'y */
var divs = document.getElementsByTagName("div");

Następnie przygotowywujemy dodatkowy element DIV, w którym umieścimy stworzone zakładki.

/*  nr. pierwszego div'a z klasą subpanel */
var firstDiv = -1;

/* tworzymy div na nasze menu */
var menu = document.createElement("div");
menu.className = "panels_menu";
menu.setAttribute("id","panels_menu");

Pozostaje nam przejść się pętlą po wszystkich znalezionych DIV‘ach i wybrać te, które posiadają klasę ’subpanel’. Z każdego z nich pobieramy wartość atrybutu title i naszym ‘menu’ tworzymy odpowiedni odnośnik:

var source = divs[i].getAttribute("title");
if (!source) continue;
var link = document.createElement("a");
link.setAttribute("href","#"+source);
link.setAttribute("onclick","activMenu(this); ");
link.onclick = new Function('activMenu(this);'); // dla IE
link.setAttribute("id","menu_"+divs[i].id); // dla wywołań zewnętrznych
link.appendChild(document.createTextNode(source));

Aktywujemy pierwszą naszą zakładkę i dodajemy je do naszego nowego menu:

if(firstDiv == -1) firstDiv = i;
if(i == firstDiv) {
    divs[i].style.display='block';
    link.setAttribute('class','active');
}
/* dodajemy odnośnik do menu */
menu.appendChild(link);
link.className = "active"; // dla IE

A po zakończeniu całej pętli wklejamy nasze zakładki przed pierwszego DIV‘a z klasą ’subpanel’:

/* wklejamy stworzone menu nad pierwszym div'em */
divs[firstDiv].parentNode.insertBefore(menu,divs[firstDiv]);

Tyle w temacie stworzenia zakładek. Pozostaje nam stworzyć funkcję activeMenu(this), którą wywołujemy po kliknięciu w odpowiednią zakładkę.

function activMenu(menu) {
  menubox = document.getElementById('panels_menu');
  links = menubox.childNodes;

  /* ustalamy clasę 'active' dla naszego
    odnośnika, a reszcie null */
  for(x=0;x<links.length; x++) {
    if(links[x].nodeName.indexOf('A') != -1) {
      links[x].className=null;
    }
  }
  menu.className='active';
  menu.blur();


  var divs = document.getElementsByTagName("div");
  /* chowamy wszystkie div'y prócz aktualnego */
  for (var i=0; i<divs.length; i++) {
    if(divs[i].className == 'subpanel') {
      if(divs[i].getAttribute("title") == menu.innerHTML) {
        divs[i].style.display = 'block';
      } else {
         divs[i].style.display = 'none';
      }
    }
  }
  return false;
}

Całość zwieńcza drobny CSS:

.panels_menu a {
        color: #eee;
        text-decoration: none;
        background: #666;
        padding: 0px 5px;
        margin: 0px 2px;
        border: solid 1px #333;
     }
    .panels_menu a:hover {
        background: #ccc;
        color: #f33;
        border-bottom: solid 1px #ccc;
    }
    .panels_menu a.active {
        background: #eee;
        color: #333;
        border-bottom: solid 1px #eee;
    }
    .subpanel {
                border: solid 1px #333;
        padding: 10px;
        margin: 0 0 10px;
    }

Wystarczy teraz do <body> dodać onLoad=”preparePanels()” i to już wszystko.

Poniżej jest pełen kod funkcji preparePanels():

function preparePanels() {
  if (!document.getElementsByTagName
    || !document.createElement
    || !document.appendChild) return;
  /* pobieramy wszystkie div'y */
  var divs = document.getElementsByTagName("div");

  /* nr. pierwsze div'a z klasą subpanel */
  var firstDiv = -1;

  /* tworzymy div na nasze menu */
  var menu = document.createElement("div");
  menu.className = "panels_menu";
  menu.setAttribute("id","panels_menu");

  for (var i=0; i<divs.length; i++) {
    /* jeśli klasa div'a to subpanel to: */
    if(divs[i].className == 'subpanel') {
      if(firstDiv == -1) firstDiv = i;

      /* sprawdzamy istnienie atrybutu 'title' */
      var source = divs[i].getAttribute("title");
      if (!source) continue;

      /* chowamy div'a */
      divs[i].style.display='none';

      /* tworzymi odnośnik do div'a w naszym menu */
      var link = document.createElement("a");
      link.setAttribute("href","#"+source);
      link.setAttribute("onclick","activMenu(this); ");
      link.appendChild(document.createTextNode(source));

      /* jeśli div jest pierwszym to go aktywujemy */
      if(i == firstDiv) {
        divs[i].style.display='block';
        link.setAttribute('class','active');
      }

      /* dodajemy odnośnik do menu */
      menu.appendChild(link);

    }
  }
  /* wklejamy stworzone menu nad pierwszym div'em */
  divs[firstDiv].parentNode.insertBefore(menu,divs[firstDiv]);
}

Działający przykład znajduje się tutaj. Odnośniki w lewym górnym rogu strony uruchamiają wersję kolejno z i bez preparePanels().

Jeżeli komuś się ta wiedza przyda, to miło mi będzie :)

13 komentarzy »

Ciekawe gadżety

onjin 2 luty 2006, 09:02

Skarbnicą dziwnych i ciekawych gadżetów jak dla mnie jest ThinkGeek. Serwis działa już parę ładnych lat i jak na razie nie znalazłem jego polskiego odpowiednika (choć specjalnie go też nie szukałem).

Niedawno w Firefox‘a wpadł mi link do Gadzet.net - katalog rzeczy fajnych. Jak piszą sami autorzy serwisu, jest on “[…] magazynem/blogiem/(zwij jak chcesz) wypatrującym wszelkiej maści nowinek gadżetowych, ale także tych starych, mało znanych.[…]” i jest polskim projektem.

Mi spodobał się latający budzik ;)

Brak komentarzy »

Trochę śmiechu na weekend

onjin 20 styczeń 2006, 18:01

Dziś dostałem linka do historii o Chuck’u Norris’ie. Po przeczytaniu odpowiedniej ilości ubaw zapewniony :D.

Podpowiedź: w Firefox’ie w menu widok->kodowanie znaków pomaga ustawienie na WINDOWS-CP-1250.

I jeszcze kilka w tym temacie:

Miłego weekendu.

Brak komentarzy »

Google Talk

onjin 18 styczeń 2006, 07:01

17 stycznia Google otworzyło połączenia między serwerowe pomiędzy swoim serwisem Google Talk, a resztą świata XMPP. Tak więc każdy kto posiada konto pocztowe w domenie @gmail.com, może teraz komunikować się używając identycznego JID.

Do pełni szczęścia mogłoby brakować jedynie komunikatora Google Talk dostępnego na inne platformy niż Windows. Ale udostępnienie przez Google libjingle oraz ich współpraca z twórcami komunikatora Psi wróży na dobre.

Brak komentarzy »

aktualizacja

onjin 12 styczeń 2006, 09:01

Niedawno pojawił się Wordpress 2.0. Jest znacznie szybszy od poprzednich wersji (wysyłanie, edytowanie, oglądanie), wykorzystuje technologię AJAX i ma nowy panel admina.

I z racji tych i innych onjin.net też posiada już wersję 2.0. Witamy, witamy ;)

Brak komentarzy »

Sortowanie tabel

www, onjin 10 styczeń 2006, 10:01

Chyba każdy wyrzucił kiedyś na ekran tabelkę w HTML’u. Jeśli danych dużo i dynamiczne, to użył do tego PHP. Aby lepiej ogarnąć dane, nagłówki kolumn zostały odnośnikami z końcówką mniej więcej taką:

<ht><a href="?order=data">data</a>
<th><a href="?order=ilosc">ilość</a></th>

Ta sama tabelka, te same dane. Ale aby ją posortować trzeba znów odwoływać się do serwera. Wygodniej by było gdyby tabelka mogła się sortować po stronie klienta (np. JavaScript). Tu z pomoca przychodzi nam biblioteka sorttable napisana właśnie w JavaScript. Skuteczna i prosta w użyciu. Spójrzcie na mały przykład z opisem.

I nie lepiej tak ?

1 komentarz »