2016 m. gruodžio 31 d., šeštadienis

Naujųjų metų rezoliucija

Ar pasiteisino naujųjų metų rezoliucija? : [Bus atnaujinta 2017-12-31]

Dalykai kuriuos prisižadu padaryti per ateinančius metus:
  • Elektronikos projektą, kuriuo galima nustatyti, REM miego būseną.[*]  -- X
  • Visus metus kruopštiai mokytis python programavimą kalbą. -- (dalinai)
    Užbaigti skaityti: "Learning Python, 5th Edition" ir kitas knygas apie python, kurios laukia savo eilės. -- V(dalinai)
  • Išmokti naudotis Linux Kali.[*]  -- X
Šie vaizdo įrašai turėtų pagelbėti, kai tau prireiks motyvacijos, ar nežinosi kodėl ne-sekasi daryti, ką esi užsibrėžęs.



Šitą pažiūrėk, kai nuspręsi pasiduoti:

Ną, ką. Sekmės! Susitiksim, kitais metais.


Atnaujinimas 2018-01-01

Pasiteisino keli dalykai dalinai. Tai python kalbos mokymasis, bet nesakyčiau, kad mokiausiai kiekvieną dieną kruopščiai. Tačiau padariau ženklų pokytį.
"Learning Python, 5th Edition" knygos visos neperskaičiau, skaičiau tam tikromis dalimis, bet galima sakyti, kad perskaičiau didžiąją dalį.

Kokios buvo kliūtis?
Jei dalykas atsibosdavo, atidėdavau ir užmiršdavau apie tai. Tęstinumo nebuvimas. Kaip užkirsti kelia šiam tęstinumo nebuvimui? Kelis kartus per savaitę, apžvelgti elgesį. Atsakyti į klausimus:

  • Ką dariau?
  • Ko nedariau?
  • Ką darysiu?
  • Kokios yra problemos?
  • Kaip jas išspręsti?



Dalykai, kuriuos prisižadu padaryti per ateinančius metus. [Bus atnaujinta 2018-12-31]
Atnaujinta 2019-05-17 d. (vakar prisiminiau :D) tuo pačiu galima iškelti klausimą, kaip prisiminti.

  • Susirasti gf - V
    • Nfp - V(dalinai)
  • Neberūkyti/Nebegerti - V(dalinai)
  • Kasdien medituoti -- X
  • Išmokti sąmoningai sapnuoti -- X
    • Suformuoti sapnų žemėlapį -- V(dalinai esu pradėjęs daryti, bet pastaruoju metu nepildau)
Tarp dalykų, kurių norėjau buvo tokių kurie kirtosi tarpusavyje, gavus vieną, kitas išslysdavo. Nebuvo integracijos tarp tikslų. Galvoju susitelkti ties keliais dalykais, tai 


2019 tikslai:

Dalykai, kuriuos prisižadu padaryti per ateinančius metus. [Bus atnaujinta 2019-12-31]

  • Meditacija (buvau vipasanoj)
  • Savęs pažinimas ✅ ( tebevykstantis procesas)
  • Išmokti sąmoningai sapnuoti  ❌

2020 tikslai:

Susirasti darbą ?
Susiransti merginą ?
Išsilaikyti teises 

2021 tikslai:

  • Maratonas. ❌
  • Elektrinė mašina.?
  • Išmokti sąmoningai sapnuoti. ❌
  • Išmokti matyti energetinius faktus. Kaip juda energija. ❌
  • Padėt prieiti iki protą nunešančio jausmo. ❌
 
 

2022 tikslai:

  • Kuopščiai išanalizuoti Castanedos Knygas
    Išmokti sąmoningai sapnuoti

 

Linux pamokos

https://linuxjourney.com/ - Linux-fu komandos ir pamokos.
https://www.codecademy.com/ - Interaktyvios pamokos.
https://www.edx.org/ - Nemokamas edx linux kursas.

http://overthewire.org/wargames/ - Linux wargames.

2016 m. gruodžio 28 d., trečiadienis

Aplikacijų atvaizdavimas ir garso valdymas

Problema 1:
Siunčiant DISPLAY=:0 espeak "test" komandą metą klaidą, kadangi vartotojas nepridėtas prie audio grupės:
No protocol specified
xcb_connection_has_error() returned true
...

Sprendimas:
Pridedam www-data į audio grupę:

$ sudo adduser www-data audio
$ sudo adduser www-data pulse
$ sudo adduser www-data pulse-access

Problema 2:
Prie kompiuterio prijungtos kolonėlės ir monitorius (su integruotomis kolonėlėmis) hdmi jungtimi. Siunčiant komandas, garsas girdisi ne į pagrindines kolonėles, bet per monitorių.

Patikrinam garso įrenginius:
$ cat /proc/asound/cards 
 0 [SB             ]: HDA-Intel - HDA ATI SB
                      HDA ATI SB at 0xfe8f4000 irq 16
 1 [HDMI           ]: HDA-Intel - HDA ATI HDMI
                      HDA ATI HDMI at 0xfe99c000 irq 32

Kaip sužinoti kuris įrenginys groja?

$ pacmd list-sinks  | egrep "index|state|alsa.card_name"
    index: 0
state: RUNNING
alsa.card_name = "HDA ATI HDMI"
    index: 13
state: SUSPENDED
alsa.card_name = "HDA ATI SB"

Sprendimas:
Šis scenarijus permes visą garsą iš hdmi į kolonėles. Galima pasirinkti, tam tikrą garso įvestį  ir tik ją persiųsti į kitą įrenginį.


#!/bin/bash

SINK=`pacmd list-sinks | grep '  index' |  awk -F": " {'print $2'}`
pacmd set-default-sink ${SINK}
pactl list short sink-inputs | awk '{ print $1 }' | while read sound_input
do
    
    pacmd move-sink-input ${sound_input} ${SINK}
done


Garso įjungimas/išjungimas:
SINK=`pacmd list-sinks|grep  '  index'| awk '/index:/{ print $2 }'` #Surandame veikiantį garsi įrenginį
pactl set-sink-mute $SINK toggle #Kontroliuojam garsą šiame įrenginyje

Tiesioginis garso siuntimas į kolonėles:
$ espeak "Wisdom begins in wonder. " 10 -w wav --stdout > test.wav && aplay  test.wav -v -V mono|stereo # Su garso indikacija

Grojimas papildant tekstą
$ espeak "Appending new text" -w wav --stdout >> test.wav && aplay test.wav

Grafinių aplikacijų siuntimas:

Tam, kad turėtume galimybę siųsti grafines aplikacijas, turime:
  • Paleisti xhost + komandą, kuri duos leidimą jungtis prie X serverio.
  • Murodyti  x11 aplinkos kintamąjį.
$ echo $DISPLAY # Sužinome savo x11 aplinkos kintamąjį
:0

Iš programėlės siunčiame grafines aplikacijas į x11 aplinką:
DISPLAY=:0 glxgears 
DISPLAY=:0 espeak "test" 

Įvykdyti komandos, kuriai reikalingos sudo teisės nepavyks. Turime vartotojui suteikti papildomasteises sudoers dokumente.
$ sudo visudo || sudo nano /etc/sudoers
www-data  ALL = NOPASSWD: /sbin/programos1, /sbin/programa2 # Pridedam šį įrašą, kad gautume prieiga prie nurodytų programų


user_name ALL=(ALL) NOPASSWD: /sbin/poweroff, /sbin/reboot, /sbin/shutdown #Perkrovimo teisės suteikimas


Garso siuntimas į dvejus įrenginius:


$ sudo apt-get install paprefs


Pasileidus komandą einam į Simultaneous Output -> ir Pažymim Varnelę

Kaip padaryti, kad kiekvieną kartą užsikrovus, nustatymai pasiliktų tokie patys

Perkraunam pulse audio
$ systemctl --user restart pulseaudio.service

Ir nustatom output ant keliu įrenginių
$ pavucontrol


2016 m. gruodžio 19 d., pirmadienis

Linux prisijungimo pradžios failai

Abonentui prisijungus prie Linuxų yra skaitomi 3 failai. Jei kuris nors iš jų egzistuoja, sustojama ties juo ir esantys žemiau netikrinami.

  1.  ~/.bash_profile
  2.  ~/.bash_login
  3.  ~/.profile 


Pvz, jei yra tik ~/.profile.  Jame nurodyta, patikrinti konsolės interpretatorių.
Jei naudojam bash'a, vykdomas  .bashrc failas. 

if [ -n "$BASH_VERSION" ]; then #tikrinama ar naudojamas bash
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then #tikrinama ar egzistuoja toks failas
        . "$HOME/.bashrc" # pridedam .bashrc
    fi
fi

2016 m. gruodžio 18 d., sekmadienis

Kaip pašalinti triukšmą iš garso įrašo?

Jums reikės atsisųsti:
Audacity - nemokamas garso failų redaktorius.

Veiksmai:
  1. Pridedam garso įraša: File->Import-Audio
  2. Pažymime triukšmingą įrašo vietą.Nuotraukoje matome su Audacity programa, pažymėtą triukšmingą garso vietą, kurią norime pašalinti
  3. Iškviečiam meniu Effect->Noise Redution ir pasirenkam Get Noice ProfileNuotraukoje matomas Noice Reduction langas, Audacity programoje, kuriame paryškintas Get Noise Profile mygtukas
  4. Pažymime visą garso įrašą, nuspaudžiant:  Ctrl+A.
  5. Dar kartą iškviečiam  Effect->Noise Redution meniu,  šį kartą, spaudžiame OK.Matome audacity programą, su atidarytu Noice Reduction meniu, kuriame jau gautas garso profilis, paryškintas OK mygtukas
Programa automatiškai pertvarkis garso įrašą, pašalinant pažymėtą triukšmo profilį iš pasirinktos garso vietos.

Gavus triukšmo profilį, jį galima pritaikyti pakartotinai su Ctrl + R klavišų kombinacija.


Patarimai:

Kitas būdas kaip pašalinti garsą su spektrograma.


2016 m. gruodžio 15 d., ketvirtadienis

App Inventor 2 vietiniame serveryje

Instrukcija skirta Ubuntu 16.04

Diegiam reikalingus paketus, bibliotekas ir atnaujinimus

$ sudo add-apt-repository ppa:webupd8team/java
$ sudo apt update
$ sudo apt install ant git python-software-properties -y
$ sudo apt install oracle-java7-installer -y
$ sudo apt install lib32z1 lib32ncurses5 zlib1g:i386 libncurses5:i386 libstdc++6:i386  -y

Siunčiames appinventor pirminį kodą
$ cd /home/$USER/Documents && git clone https://github.com/mit-cml/appinventor-sources

Kuriame appinventos slaptą kodą(reikalingas kompiliavimui)
$ cd /home/$USER/Documents/appinventor-sources/appinventor && ant MakeAuthKey

Kompiliuojam appinventor'ių
$ cd /home/$USER/Documents/appinventor-sources/appinventor && ant

Atsisiunčiam AppEngine

Servisų paleidimas
Paleidžiam appengine serverį
$ cd /home/$USER/Documents/appengine-java-sdk/bin && ./dev_appserver.sh --port=8888 --address=0.0.0.0 /home/$USER/Documents/appinventor-sources/appinventor/appengine/build/war

Paleidžiam aplikacijų  kūrimo serverį
$ cd /home/$USER/Documents/appinventor-sources/appinventor/buildserver && ant RunLocalBuildServer

Appinventoriaus sąsaja su USB emuliatoriumi ar Android įrenginiu prijungtu per USB paleidžiama, atsisiuntus aiStarter programą, komanda:
/usr/google/appinventor/commands-for-Appinventor/aiStarter

Lokalus serveris prieinamas:
$ localhost:8888

2016 m. gruodžio 14 d., trečiadienis

Kaip supaprastinti jungimasi su ssh?

Hosts dokumente,  yra įmanoma susieti IP adresus su pavadinimais.

$ cat /etc/hosts
192.168.1.1 ip

Jungimasis per ssh, tereikia įvesti vartotojo vardą ir  susietą pavadinimą iš hosts failo.
$ ssh vartotojas@ip 


Kaip pridėti ssh prisijungimą prie adresyno?

Jei neegzistuoja, sukuriam ~/.ssh/config failą su mėgstamiausiu teksto redaktoriumi.

Šį failą aprašome, tokiu būdu:
Host maršrutizatorius
    HostName 192.168.11.1
    Port 2222
    User root

Dabar jungiantis belieka įvesti šią komandą:
$ ssh maršrutizatorius


Kiti būdai kaip tvarkyti ssh prisijungimus

Audra - audra yra komandinės eilutės įrankis, skritas valdyti ssh prisijungimus.

2016 m. gruodžio 13 d., antradienis

Kaip paleisti ISO failą tiesiogiai iš kietojo disko?

Taip, yra galimybė paleisti .iso failus, per grub, neperkelinėjant į USB.

Paprastai kalbant "Grub" yra programa, kuri leidžia pasirinkti su kuria operacine sistema vartotojas nori dirbi.


Jums reikės:
  1. ISO failo.
  2. Grub Unified Bootloader'io, 2 versijos
Veiksmai:

Atsidarom /etc/grub.d/40_custom  failą su mėgstamiausiu failo redaktoriumi ir pakeičiam paryškintas eilutes(žemiau pavyzdys).
$ vi /etc/grub.d/40_custom


Randam .iso failuose kelia iki vmlinuz ir initrd failų.
$ 7z l ~/Downloads/lubuntu-16.10-desktop-amd64.iso | egrep "initrd|vmlinuz"
2016-10-20 03:45:20 .....     28172280     28172280  live/initrd.img
2016-10-20 03:45:20 .....      4104232      4104232  live/vmlinuz

Diskų numeravimas

Žemiau matom, kaip skiriasi grub'o disko apibūdinimas:
hd0msdos1
/dev/sda/dev/sda1

hd1 - tai antra particija /dev/sdb
hd1msdos1
/dev/sdb/dev/sdb1

Ir taip toliau hd2, butų /dev/sdc diskas, reikia atkreipti dėmesį, kad grub skaičiuoja diskus nuo 0.

Naudojant $ sudo fdisk -l komanda pasižiūrim diskų pavadinimus ir atitinkamai atliekam pakeitimus.

Belieka atnaujinti grub. Į terminalą įvedam komandą:
$ sudo update-grub


nuotraukoje matomas grub langas su naujais įrašais
Pasikeitęs grub meniu


40_custom pavyzdys:

exec tail -n +3 $0
# Šis failas leidžia užkrauti iso failus iš hdd
# Meniu įrašus pridedam iš apačios
# "exec tail" komanda, nurodanti grub'ui, nuo kurios eilutės pradėti vykdyti komandas 

menuentry "Lubuntu 16.10 iš Linuxų particijos" {
        set isofile="/home/sup/Downloads/lubuntu-16.10-desktop-amd64.iso"
        loopback loop (hd1,msdos1)$isofile
        linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile noprompt noeject
        initrd (loop)/casper/initrd.lz 
}

menuentry "Ubuntu 16.04 iš kito kietojo disko" {
        set isofile="/iso/ubuntu-16.04.1-desktop-amd64.iso"
        loopback loop (hd0,msdos1)$isofile
        linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile noprompt noeject
        initrd (loop)/casper/initrd.lz 
}


menuentry "Kali" {
    insmod ntfs
    insmod iso9660

      set isofile="/iso/kali-linux-2016.2-amd64/kali-linux-2016.2-amd64.iso"
      loopback loop (hd0,msdos1)$isofile
      linux (loop)/live/vmlinuz boot=live noconfig=sudo username=root hostname=kali findiso=$isofile debug --verbose nomodeset
      initrd (loop)/live/initrd.img
    }

Grub nustatymus kitoms distribucijoms rasi čia.
Ačiū madhur už grub'o Kali linux nustatymus.

2016 m. gruodžio 11 d., sekmadienis

DDWRT - duomenų dalinimasis lokaliam tinkle

Pirmiausiai prie maršrutizatoriaus, prijungiam USB laikmeną.

Paruošiam diską.
# fdisk /dev/sda #Numatytieji nustatymai nustatymai
# mkfs.ext4 /dev/sda1 #Įrašom failų sistemą


Jungiames prie DD-WRT ir konfiguruojam USB:

DD-WRT USB
DD-WRT USB konfiguraciją


Bendrinam USB lokaliame tinkle, įjungę samba:
DD-WRT samba
DD-WRT NAS konfiguracija.

Pataisymas: Nuotraukoje turėtų prie path: būti nurodyta /mnt/sda1

Jei po šių nustatymų, nesimato ar nepavyksta prieiti prie vietinio tinklo, tikėtina kad sistemoje nėra  smbclient paketo.

$ sudo apt install smbclient #Diegiam smb klientą

Į vietinį diską perkeliam muziką ar filmus. Peržiūrai naudojam vlc.
vlc vietinis tinklas
VLC programos, Androide, vietinio tinklo langas, 


2016 m. gruodžio 5 d., pirmadienis

iptables

Viršutinė taisyklė laimi.





/etc/sysconfig/iptables - čia saugomos iptable taisyklės.
/etc/sysconfig/iptables-config - iptables konfigūracinis failas.

Paketas praeina pro vieną iš šių grandinių:

Chains:
  • INPUT - paketai skirti ugniasienei.
  • OUTPUT - paketai išsiunčiami iš ugniasienės.
  • FORWARD - maršrutizuojami paketai.
Tiesioginis iptables redagavimas:
# vi /etc/sysconfig/iptables
# iptables-restore /etc/sysconfig/iptables #Išsaugom pakeitimus

Naujos grandines kūrimas:
# iptables -N nauja-grandine

Naujos grandinės tinimas:
# iptables -X nauja-grandine

Permeta visus paketus į nauja-grandinę:
# iptables -t filter -A INPUT -j nauja-grandine

Ip tables atvaizdavimas
# iptables -L [CHAIN]

Iptables atvaizdavimas su eilės numeriais
# iptables -L --line-numbers

Rodo išsamią info kartu su paketų statistika
# iptables -L -n -v

Iptables įrašo trynimas:
# iptables -D [CHAIN] [skaicius]
Iptables gui interfeisas:
# system-config-firewall-tui

Iptables taisyklių išsaugojimas:
# service iptables save
# /sbin/service iptables save 

Tam, kad iptables veiktų po perkrovimo su CentOS:
# chkconfig iptables on
# chkconfig --list iptables
iptables 0:off  1:off   2:on   3:on   4:on   5:on   6:off

Su Ubuntu:
$ sudo invoke-rc.d iptables-persistent save


Iptables taisyklės:

Taisyklės įsigalioja iš karto!

Paketams gali būti taikomos šios taisyklės:

Rule Targets:

  • DROP – numeta paketą.
  • ACCEPT – priima paketą.
  • LOG – įrašo paketą naudojant syslog.
  • REJECT – su klaidos pranešimu atmeta paketą.
  • No target – gali būti naudojama statistikai.
Ryšių būsenos:

Connection Tracking
  • NEW - paketas prašantis užmegsti naują ryšį, pavyzdžiui, HTTP užklausa.
  • ESTABLISHED - užmegztas ryšys.
  • RELATED - kai vienas ryšys susijęs su kitu, pavyzdžiui FTP.
  • INVALID - neatpažintas paketas, kuris nepriklauso nei vienam užmestam ryšiui, ryšių sekimo lentelėje.

Nustatymai:
-A (Append) - Nauja taisyklė pridedama apačioje.
-I (Insert)  - Nauja taisyklė prideda viršuje.


Loginimas:
# iptables -N LOGGING
# iptables -A INPUT -j LOGGING
# iptables -A LOGGING -m limit --limit 2/min -j LOG --log-prefix "IPTables-Dropped: " --log-level 4
# iptables -A LOGGING -j DROP

Taisyklės keitimas, pakeičiant paketų įrašimo greitį:
# iptables -L --line-numbers #Pasižiūrim eilės numerį
# iptables -R LOGGING 1 -m limit --limit 5/s -j LOG --log-prefix "IPTables-Dropped: " --log-level 4

localhost praleidimas:
# iptables -A INPUT -i lo -j ACCEPT
# iptables -A OUTPUT -o lo -j ACCEPT

IP adreso blokavimas:
# iptables -A INPUT -s 192.168.50.1 -j REJECT #Jungiantis rodys klaidos kodą

ssh praleidimas; shh prisijungimas iš tam tikro ip: -s 192.168.50.1
# iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT

http praleidimas:
# iptables -I INPUT -p tcp --dport 80 -j ACCEPT

http ir https praleidimas:
# iptables -A INPUT -p tcp -m multiport --dports 80,443 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT

mysql praleidimas:
#  iptables -A INPUT -p tcp --dport 3306 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT

Serverio blokavimas per pietų pertrauką:
# iptables -A INPUT -p tcp -m time --timestamp 12:00 --timestop 13:00 -j DROP
# iptables -A INPUT -p udp -m time --timestamp 12:00 --timestop 13:00 -j DROP

Svetainių blokavimas tam tikru laiko intervalu:
# iptables -A OUTPUT -p tcp -m multiport -dport http,https -m time --timestart 12:00 --timestop 13:00 -d IP_adresas -j ACCEPT 

Apsauga nuo ddos atakų, tokių kaip hping:
# iptables -A INPUT -m limit --limit 50/minute --limit-burst 200 -j ACCEPT
# iptables -A INPUT -j REJECT

Draudžia tam pačiam ip adresui jungtis daugiau nei 10 kartų:
# iptables -A INPUT -p tcp -m multiport --dport 80,443 -m state d-state NEW -m recent --set
# iptables -A INPUT -p tcp -m multiport --dport 80,443 -m state --state NEW -m recent --update --seconds 100 --hitcount 10 -j DROP


iptables bazinis šablonas:
# Praleidžiam betkokį susijusi ar jau užmegstą ryšį
-I INPUT 1 -m state --state RELATED, ESTABLISHED -j ACCEPT
-I OUTPUT 1 -m state --state RELATED, ESTABLISHED -j ACCEPT

# Praleidžiam loopbacj
-A INPUT -i lo -j ACCEPT
-A OUTPUT -o lo -j ACCEPT

# Praleidžiam DHCP užklausas
-A OUTPUT -o eth0 -p udp --dport 67:68 --sport 67:68 -j ACCEPT

# Praleidžiam SSH
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -m state --state NEW -j ACCEPT

# Praleidžiam/nepraleidžia pašto
-A INPUT -p tcp -m tcp --dport 25 -m state -state NEW -j ACCEPT

-A OUTPUT -p tcp -m tcp --dport 25 -j DROP


# Išorinėms DNS užklausoms:
-A OUTPUT -p udp -m udp --dport 53 -j ACCEPT

# Išorinėms ping užklausoms:
-A OUTPUT -p icmp -j ACCEPT

# NPT - Tinklo laiko protokolui
-A OUTPUT -p udp --dport 123 --sport 123 -j ACCEPT

# HTTP serveriams
-A OUTPUT -p tcp -m tcp --dport 80 -m state --state NEW -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 443 -m state --state NEW -j ACCEPT

COMMIT


Naudingi patarimai dirbant su iptables

  • Pasidaryk iptables atsarginę kopiją.

/sbin/iptables-save > /root/iptables-backup-$(date +%F)
/root/iptables-backup-2016-12-06

/sbin/iptables-save > /root/iptables-backup-$(date +%F_%H:%M)
/root/iptables-backup-2016-12-06_11:48

Iškilus bėdai atstatom iptables, su komanda:
/sbin/iptables-restore /root/iptables-backup-`date +%F`
  • Bandymo metu, atstatyk iptables lenteles, numatytu laiko intervalu su cron.
$ ln -s /root/iptables-`date +%F` /root/iptables-veikianti-naujausia

crontab -e įrašas, atstatis iptables lenteles, kas 5 minutes.
*/5 * * * * /sbin/iptables-restore /root/iptables-backup-`date +\q%F` >/dev/null 2>&1

  • Pridėti  savo IP pirmoje taisyklėje, apsisaugant nuo užsiblokavimo 
# iptables -I INPUT -s <ip-adresas> -j ACCEPT

  • Naudokim system-config-firewall-tui programą su grafinių interfeisu
#CentOS 6.8
# yum install system-config-firewall-tui dbus dbus-python
# service messagebus start
# system-config-firewall-tui



Kiti


Porto nukreipimas į kitą portą, pvz tokiu atvėju, kaip prie opvenvpn norime prisijungti per kelis portus (1194, 1195) :

-A INPUT -i <inteface>-p udp -m udp --dport 1194 -j ACCEPT
-A INPUT -i <inteface>-p udp -m udp --dport 1195 -j ACCEPT
...
-A PREROUTING -i <inteface>-p udp --dport 1195 -j REDIRECT --to-port 1194


Kaip blokuoti svetaines per iptables?

$ host -t a facebook.com
facebook.com has address 31.13.93.36

$ whois  31.13.93.36
inetnum:        31.13.93.0 - 31.13.93.255

Sugeneravus CIDR:
 31.13.93.0/24 

Galutinis rezultatas:
$ iptables -A OUTPUT -p tcp -d  31.13.93.0/24 -j DROP

2016 m. gruodžio 4 d., sekmadienis

Raspberri Pi GPIO programavimas

Diegiam gpiozero paketą, skirtą raspbery pi gpio valdymui:
$ sudo apt install python3-gpiozero -y


GPIO išvadai:
Avietės GPIO išvadai su paaiškinimais
Reiktų žinoti, kad netinkamai sujungus GPIO išvadus yra įmanoma sudeginti avietės grandinės komponentus.

Prijungimas ir programavimas

Lemputės prijungimo schema
Tam, kad apskaičiuotume rezistoriaus varžą panaudokime Omo dėsnį:
Varža = (Įtampos Šaltinis - LED praleidimo Įtampa) / LED Maksimalios srovės

GPIO programavimas su python'u

$ python3
>>> from gpiozero import LED #Iš gpiozero bibliotekos importuojam LED
>>> led = LED(18) #Pasirenkam GPIO išvadą, prie kurio prijungta lemputė
>>> led.on() #Lemputė įsijungia
>>> led.off() #Lemputė išsijungia
>>> led.blink() #Lemputė mirksi numatytu, 1 sekundės intervalu
>>> led.toggle() #Ta pačia komanda lemputė įsijungs/išsijungs 


ledblink(švietimo_būsenos_laikas, išjungimo_būsenos_laikas) 
led.blink(2, 2) -  2 sekundes bus švies, ir tiek pat laiko bus išjungta.
led.blink(0.5, 1) - pusę sekundės švies, 1 sekundę bus išjungta.


Mirksinčios lemputės pavyzdys:

Tolesnius pavyzdžius išsaugom su mėgstamiausiu teksto redaktoriumi ir paleidžiam python3 programos_pavadinimas.py komanda.

from gpiozero import LED
from time import sleep

led = LED(18)

while True:
    led.on()
    sleep(1)
    led.off()
    sleep(1)


Mygtuko prijungimo schema


Pavyzdys su mygtuku:

from gpiozero import Button
button = Button(24)
button.wait_for_press()
print('Mygtukas buvo nuspaustas')


Lemputė mirksi nuspaudus mygtuką:

from gpiozero import LED, Button
from time import sleep

led = LED(18)
button = Button(24)

button.wait_for_press()
print("Button clicked")
while True:
        led.on()
        sleep(1)
        led.off()
        sleep(1)



Lempute užsidega. tik tuomet, kai mygtukas nuspaustas:

from gpiozero import LED, Button
from signal import pause

led = LED(18)
button = Button(24)

button.when_pressed = led.on
button.when_released = led.off

pause()

2016 m. gruodžio 3 d., šeštadienis

Kur rasti nemokamų garso įrašų?

https://musopen.org/ - Visiškai nemokama Royalty free muzika.
https://www.freesound.org/ - Creative commons licenzijuoji garsai.
http://soundbible.com/ - Royalty free garso efektai.
https://gamesounds.xyz/ - Nemokami garsai žaidimams.

http://raisedbeaches.com/ - Nemokami mobilių aplikacijų interfeiso garsai.
http://www.freesfx.co.uk/

Apie licencijas:

Royalty Free - galima naudoti ir komerciniams tikslams.

Creative commons:
zero (cc0): Visiškai nemokama, public domain.
attribution (by) - Visiškai nemokama ir komerciniai veiklai, paminint autorių.
attribution noncommercial (by-nc): Tokia pati kaip ir attribution(by), tik skirta nekomerciniai veiklai.

2016 m. gruodžio 1 d., ketvirtadienis

Blogger stiliaus keitimas



Kaip pridėti css stilius?

Tarp <head> </head> tagų įterpiam:
<link href='https://fonts.googleapis.com/css?family=Ubuntu' rel='stylesheet'/> <!-- Eddited pridetas body fontas -->
    <link href="https://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet"/> <!-- Eddited pridetas header fontas -->


Kaip pakeisti temos antraštė?

Tarp <b:skin> </b:skin> tagų pakeičiam:
 <Group description="Post Title" selector="h3.post-title, .comments h4">
     <Variable name="post.title.font" description="Font" type="font"
         default="normal normal 22px Arial, Tahoma, Helvetica, FreeSans, sans-serif" value="normal normal 22px &#39;Open Sans MS&#39;,Trebuchet,Verdana,sans-serif"/>
   </Group>

į:

   <Group description="Post Title" selector="h3.post-title, .comments h4">
     <Variable name="post.title.font" description="Font" type="font"
         default="normal normal 22px Arial, Tahoma, Helvetica, FreeSans, sans-serif" value="normal normal 22px &#39;Raleway sans-serif MS&#39;,Trebuchet,Verdana,sans-serif"/>
   </Group>


Kaip pakeisti teksto stilių?

Randam šia eilutę ir papildom, prirašom font-family eilutė.
html body $(page.width.selector) {
  min-width: 0;
  max-width: 100%;
  width: $(page.width);
  font-family: 'Ubuntu', sans-serif;
}

Kaip įvykdyti scenarijų sistemai išsijungiant ar persikraunant?

Su systemd

Ubuntu systemd servisų katalogas: /lib/systemd/system/

$ sudo vim /lib/systemd/system/pries-persikraunant.service #Sukuriam unit failą

Unit skriptas:

[Unit]
Description=/etc/rc.local.shutdown Compatibility
Before=shutdown.target

[Service]
ExecStart=/bin/true
ExecStop=/home/user/bin/backup.sh
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

$ sudo systemctl enable pries-persikraunant #Įgalinam servisą

Serviso klaidų gaudymas:
$ journalctl -u <čia įrašom serviso pavadinimą>



Kitos systemd komandos:
$ sudo systemctl daemon-reload #Pakeitus unit failą, reikia perkrauti servisą
$ sudo systemctl status pries-persikraunant #Informacija apie unit failą


Systemd klasikiniai SysVinit target konfigūraciniai failai:
$ ls -l /lib/systemd/system/runlevel*.target
lrwxrwxrwx 1 root root 15 Lie 12 19:28 /lib/systemd/system/runlevel0.target -> poweroff.target
lrwxrwxrwx 1 root root 13 Lie 12 19:28 /lib/systemd/system/runlevel1.target -> rescue.target
lrwxrwxrwx 1 root root 17 Lie 12 19:28 /lib/systemd/system/runlevel2.target -> multi-user.target
lrwxrwxrwx 1 root root 17 Lie 12 19:28 /lib/systemd/system/runlevel3.target -> multi-user.target
lrwxrwxrwx 1 root root 17 Lie 12 19:28 /lib/systemd/system/runlevel4.target -> multi-user.target
lrwxrwxrwx 1 root root 16 Lie 12 19:28 /lib/systemd/system/runlevel5.target -> graphical.target
lrwxrwxrwx 1 root root 13 Lie 12 19:28 /lib/systemd/system/runlevel6.target -> reboot.target

Be systemd

Runlevel yra sistemos būsena rodanti ar sistema kraunasi, persikrauna, išsijungia ar yra vieno-vartotojo režime ar paprastoje būsenoje.

Šiame kataloge scenarijai bus vykdomi patekus į runlevel 6, o tai reiškia perkrovimą.
Scenarijaus pavadinimai yra svarbūs, jie turi prasidėti K99_pavadinimas.sh ir turėti +x teises,

Scenarijai prasidedantis K raide  yra vykdomi išjungiant, S - užsikraunant.

Scenarijai vykdomi abėcėline tvarka.
Išjungimo scenarijų katalogas  /etc/rc0.d/
Užsikrovimo scenarijų katalogas /etc/rc2.d/  arba /etc/rc.local
Perkrovimo scenarijų katalogas  /etc/rc6.d 


Run level numeriai
0Visi servisai sustabdomi ir serveris išjungiamas. Halt the system.
1Vieno vartotojo rėžimas. Single-user mode (for special administration).
2Multivartotojų režimas. Local Multiuser with Networking but without network service (like NFS)
3Praplėstas multivartotojų režimas. Full Multiuser with Networking
4Pritaikomas savo reikmėms. Not Used
5Grafinis režimas. Full Multiuser with Networking and X Windows(GUI)
6Perkrovimas. Reboot.

Runlevel atvaizdavimas:
$ runlevel 
N 5

Perkrauti galima su init atba telinit komanda:
$ init 6