niedziela, 22 lutego 2015

Android: TrackID™ - rozpoznawanie utworów muzycznych

Ostatnio w radiu leciał fajny utwór. Niestety nie mogłem ustalić tytułu i wykonawcy tego utworu. Postanowiłem sobie coś zainstalować na przyszłość w telefonie z Androidem do takiego rozpoznawania muzyki.
Na Google play znalazłem aplikację TrackID™. Ma ona bardzo dużą bazę utworów i rozpoznaje utwory muzyczne po naciśnięciu jednego przycisku po kilku sekundach. Wystarczy nagrać utwór muzyczny z telewizora, radia lub dowolnego głośnika zewnętrznego.
Oprócz wykonawcy i tytułu, TrackID™ podaje także informacje o albumie, z którego pochodzi dany utwór.

wtorek, 17 lutego 2015

Oracle Solaris 11.2 - brak GUI

Po instalacji systemu Oracle Solaris 11.2 brakuje środowiska graficznego. Wystarczą trzy polecenia w konsoli tekstowej, aby mieć Gnoma.

Sprawdzenie statusu pakietu solaris-desktop:

pkg info -r solaris-desktop

Instalacja pakietu solaris-desktop:

pkg install solaris-desktop

Restart systemu:

shutdown -i6 -g0 -y

Opis parametrów polecenia shutdown znajduje się tutaj.

niedziela, 15 lutego 2015

Kurs Bash cz.1

1. Wstęp

Bourne Again Shell (bash) - jest to jedna z wielu powłok występujęcych w systemach uniksowych. Wywodzi się od powłoki Bourne'a sh, która była jedną z pierwszych i najważniejszych powłok systemu Unix oraz zawiera pomysły zawarte w powłokach ksh i csh. Poza tym bash jest również językiem skryptowym.

2. Pierwszy skrypt

Tworzymy nowy plik np. hello.sh a potem nadajemy mu uprawnienia do wykonywania (uruchamiania).

chmod +x hello.sh

W tym pliku wpisujemy kod skryptu np.:

#!/bin/bash
#To jest komentarz
echo "Hello World"

Wykonanie skryptu:

./hello.sh

3. Polecenie echo

Polecenie echo wyświetla napis lub zmienną na ekranie.

Przykłady:

echo "Hello World"
echo "$ZMIENNA"
echo -e "Hello World \n"

Parametr -e umożliwia stosowanie znaków specjalnych np.:

\b - backspace
\n - nowa linia
\t - tabulacja pozioma
\xnn - znak ASCII o wartości szesnastkowej
\unnnn - znak Unicode o wartości szesnastkowej

unicode-table.com - tabela znaków Unicode.

4. Zmienne

Zmienne w bashu mogą być typu tekstowego lub liczbowego, ale też mogą służyć do cytowania poleceń. Myślę, że najlepiej typy zmiennych pokaże nam poniższy przykład.

#!/bin/bash

#zmienne lancuchowe
S1="Zmienna tekstowa (lancuch znakow)"
echo $S1
S2='To tez jest lancuch znakow'
echo $S2

#cytowanie polecen
C=`uname -a`
echo $C

#liczba
X=31
echo $X

W bashu istnieją także zmienne specjalne:

$0 - nazwa naszego skryptu
$# - liczba przekazanych parametrów
$$ - numer indentyfikacjny procesu skryptu (PID)
$* - lista porozdzielanych parametrów
$@ - lista parametrów z którymi został uruchomiony skrypt
$? - kod ostatniego wykonywalnego polecenia
$1,$2,$3,... - poszczególne parametry


Można też używać zmiennych środowiskowych (printenv) np. $HOME, $USER, $SHELL i wielu innych.

Zmienne tablicowe są to takie zmienne, które przechowują listę określonych wartości. W bashu stosujemy tablice jednowymiarowe. Zmienne tablicowe indeksujemy liczbami całkowitymi zaczynając od 0. Poniżej prosty przykład.

#!/bin/bash
TAB=(Alpha Beta Gamma Delta)
echo ${TAB[0]}
echo ${TAB[1]}
echo ${TAB[2]}
echo ${TAB[3]}

Mamy też podział zmiennych na globalne i lokalne. Zmienne globalne są dostępne w obrębie całego skryptu. We wszystkich powyższych przykładach mieliśmy do czynienia ze zmiennymi globalnymi. Zmienne lokalne działają tylko w obrębie danej funkcji. Poprzedzone są słowem kluczowym local. Poniżej przykład pokazujący różnicę między globalnymi i lokalnymi zmiennymi.

#!/bin/bash
ZMIENNA="zmienna globalna"

function fun1 {
  local ZMIENNA="zmienna lokalna"
  echo $ZMIENNA
}

echo $ZMIENNA
fun1
echo $ZMIENNA

Wynik działania tego skryptu:

zmienna globalna
zmienna lokalna
zmienna globalna

5. Polecenie read - wprowadzanie danych

Polecenie read służy do wprowadzania danych przez użytkownika. Mogą to być wartości tekstowe lub liczbowe. Poniżej prezentuję skrypt operujący na wejściowych danych tekstowych oraz liczbowych.

#!/bin/bash

echo -en "Podaj swoje imie: "
read IMIE
echo "Witaj $IMIE"

echo -en "Podaj liczbe X: "
read X
echo -en "Podaj liczbe Y: "
read Y
let Z=X*Y
echo "$X * $Y = $Z"

Koniec części pierwszej, cdn.

środa, 11 lutego 2015

NetHogs - monitorowanie łącza

NetHogs to niewielki konsolowy program dla linuksa służący do wyświetlenia informacji o bieżącym obciążeniu łącza. Pokazuje statystyki dla poszczególnych programów.


Znaczenie poszczególnych kolumn

  • PID - identyfikator procesu
  • USER - użytkownik uruchamiający dany program
  • PROGRAM - aplikacja wykorzystująca łącze
  • DEV - interfejs sieciowy np. eth0, wlan0 itp.
  • SENT - upload
  • RECEIVED - download 
Klawisze

[M] - przełącznik pomiędzy widokiem średnich wartości wysyłania/odbierania [kB/s] a sumarycznym zestawieniem wysłanych i odebranych danych [kB; B; MB]

[Q] - wyjście

Instalacja programu (Debian, Ubuntu, Mint)

sudo apt-get install nethogs

Uruchomienie programu (tylko z prawami root-a)

sudo nethogs interfejs_sieciowy

np. sudo nethogs wlan0

Początki systemu Linux

Na grupie dyskusyjnej comp.os.minix można zobaczyć post Linusa Torvaldsa z sierpnia 1991 roku na temat tworzenia darmowego systemu operacyjnego podobnego do miniksa. Później system ten stał się linuksem.

What would you like to see most in minix? 

From: torvalds@klaava.Helsinki.FI (Linus Benedict Torvalds)
Newsgroups: comp.os.minix
Subject: What would you like to see most in minix?
Summary: small poll for my new operating system
Keywords: 386, preferences
Message-ID: <1991Aug25.205708.9541@klaava.Helsinki.FI>
Date: 25 Aug 91 20:57:08 GMT
Organization: University of Helsinki
Lines: 20

Hello everybody out there using minix -

I'm doing a (free) operating system (just a hobby, won't be big and
professional like gnu) for 386(486) AT clones.  This has been brewing
since april, and is starting to get ready.  I'd like any feedback on
things people like/dislike in minix, as my OS resembles it somewhat
(same physical layout of the file-system (due to practical reasons)
among other things).

I've currently ported bash(1.08) and gcc(1.40), and things seem to work.
This implies that I'll get something practical within a few months, and
I'd like to know what features most people would want.  Any suggestions
are welcome, but I won't promise I'll implement them :-)

                Linus (torv...@kruuna.helsinki.fi)

PS.  Yes - it's free of any minix code, and it has a multi-threaded fs.
It is NOT protable (uses 386 task switching etc), and it probably never
will support anything other than AT-harddisks, as that's all I have :-(.



Czołem użytkownicy miniksa.

Tworzę darmowy system operacyjny (takie hobby, nie będzie tak wielki i profesjonalny jak gnu) dla klonów AT 386 (486). Tworzę go od kwietnia, i już jest prawie gotowy. Przydałyby mi się uwagi na temat tego, co lubcie w miniksie, a czego nie, bo mój system go przypomina (taki sam rozkład plików systemowych, tak będzie praktycznie).

Przeportowałem basha (1.08) i gcc (1.40) i zdaje się, że działają. Oznacza to, że uda mi się osiągnąć za kilka miesięcy coś do praktycznego wykorzystania, chętnie poznam wasze potrzeby. Sugestie mile widziane, ale nie obiecuję, że je zaimplenetuję :-)

                Linus (torv...@kruuna.helsinki.fi)


P.S. Nie ma tu kodu miniksa, ma wielowątkowość, nie jest multiplatformowy (wykorzystuje zarządzanie zadaniami w 386) i najpewniej nigdy nie będzie obsługiwał innych dysków twardych niż AT, bo tylko taki mam :-(.

wtorek, 10 lutego 2015

Historia systemów z rodziny Unix

Na stronie www.levenez.com/unix/unix_a4.pdf znajduje się świetny diagram przedstawiający historię systemów uniksopodobnych od 1969 roku.

Pod adresem www.levenez.com można też zobaczyć diagramy dla języków programowania i systemów z rodziny Windows.

Witam...

Witam na moim blogu. Będę tu przeważnie wrzucał teksty dotyczące systemów uniksopodobnych, języków programowania oraz języków skryptowych. Być może znajdą się też informacje z dziedzin takich jak: elektronika, fizyka i matematyka.

Ja obecnie w domu używam systemu Linux Mint 17.1 Cinnamon 64-bit zainstalowanego na dysku SSD - działa rewelacyjnie.

W pracy oprócz administrowania serwerami linuksowymi, muszę też popracować na windowsach.