2020 m. gruodžio 18 d., penktadienis

git branch

Change branch to different commit
$ git branch -f bugFix <commit hash>

# Deleting branch
$  git push origin --delete gh-pages

Change master to commit
$ git reset <commit hash>

Move head up 2 commits
$ git checkout HEAD~2

Kaip suspausti pdf failus?


Neevia PDF tools

http://convert.neevia.com/pdfcompress/


Komandos
$ convert -background white -alpha remove web.pdf filename.jpg
$ convert -quality 30 -density 300x300 web.pdf rimi-11-%d.jpg


#konvertuoja is pdf i png geru santykiu
http://pdf2png.com/ 




Router wzr600dhp2 firmware upgrade

New firmware

https://dd-wrt.com/support/other-downloads/?path=betas%2F2020%2F07-08-2020-r43711%2Fbuffalo_wzr-600dhp2%2F

https://wiki.dd-wrt.com/wiki/index.php/Index:FAQ#Which_router_should_I_buy.3F
ftp://ftp.dd-wrt.com/betas/


Glossary

https://wiki.dd-wrt.com/wiki/index.php/Basic_Wireless_Settings#Regulatory_Mode

The standard (std) distribution includes all features, with the exception of VOIP. 

The standard-nokaid (std-nokaid) distribution includes all features of standard, with kaid removed to free some flash space. The VOIP distribution includes all features, with kaid removed to make room for Milkfish. The VPN edition includes OpenVPN but does not include IPv6, CIFS client, or kaid. 

The micro edition is a stripped down version designed for the WRT54G v5 and other 2MB router models.


Old firmware (manufacturer):

DD-WRT v24SP2- (04/21/14) std
(SVN revision 23709a)

2020 m. gruodžio 17 d., ketvirtadienis

Logitech 400r function key swap

Function key swap for Windows 10:


Download SetPoint 





OpenVPN

VPN

VPN stands for “virtual private network.” 

VPN protocols:

  • IKEv2 - the fast favorite on mobile OS.
  • OpenVPN - a reliable open-source classic.
  • Shadowsocks - top choice in restrictive countries.
  • WireGuard® - modern and secure solution.


Pros

  •     Hide from prying eyes on the internet
    • Avoid ISP throttling.
    • Get the best deals for online shopping.
    • Access blocked content (websites and apps).
  •     Browse the internet securely 
    • Stay safe on public wifi.
    • Safely share and download files.  


An IPsec

IPsec is a collection of protocols. Internet Protocol Security.

IPsec protocols are usually grouped by the tasks they do: 
  • Authentication Headers 
  • Encapsulating Security Payloads (ESP)
  • Security Associations (SA)
    • And IKEv2 (Internet Key Exchange version 2)

An IPsec VPN is one that uses the IPsec protocol to establish a VPN connection.

IPsec: transport mode vs. tunnel mode


TLS

 HTTPS is an implementation of TLS encryption on top of the HTTP protocol, which is used by all websites as well as some other web services. Any website that uses HTTPS is therefore employing TLS encryption.


What does TLS do?

  •     Encryption: hides the data being transferred from third parties.
  •     Authentication: ensures that the parties exchanging information are who they claim to be.
  •     Integrity: verifies that the data has not been forged or tampered with.



Certificate Authority (CA) 


 PKI (public key infrastructure). The PKI consists of:

  • a separate certificate (also known as a public key) and private key for the server and each client, and
  • a master Certificate Authority (CA) certificate and key which is used to sign each of the server and client certificates.



Compression

By default, OpenVPN doesn't enable compression. This script provides support for LZ0 and LZ4 (v1/v2) algorithms, the latter being more efficient.

However, it is discouraged to use compression since the VORACLE attack makes use of it.

TLS version

OpenVPN accepts TLS 1.0 by default, which is nearly 20 years old.

With tls-version-min 1.2 we enforce TLS 1.2, which the best protocol available currently for OpenVPN.

TLS 1.2 is supported since OpenVPN 2.3.3.




Openvpn


openvpn install script:


$ root@debian:~#  cat /etc/debian_version
9.8

# List of connected users
$ tail  /var/log/openvpn/status.log
$ tail -f -n 15 /var/log/openvpn/status.log
$ watch -d tail  /var/log/openvpn/status.log

# Telnet 25 port test
$ telnet  mx-a.delfi.lt 25
Exiting  Ctrl+] 
Telnet > close



 # Statusas apie Userius:
tail  /var/log/openvpn/status.log
watch -d tail  /var/log/openvpn/status.log


ngix


sudo apt install nginx -y
sudo apt-get install php-fpm

# Change ngix config
nano /etc/nginx/sites-available/default

# Test configurations
nginx -t

php



# Restarting service
$ systemctl restart php7.0-fpm.service

# Configure php
$ nano /etc/php/7.0/fpm/php.ini



<html>
<title>VPN</title>
<body>
<?php include_once '/var/www/html/vpn-parser.php';
$file="vpn_status.log";
$users = parseLog($file);


foreach($users['users'] as $user) {
  echo $user['name'];
  echo " ";
  echo $user['ip'];
  echo '<br>';
}
?>
</body>
</html>



2020 m. gruodžio 16 d., trečiadienis

2020 m. gruodžio 6 d., sekmadienis

Šviesa

  • Apšvietimo lygis. lx
    Renkantis lemputės ryškumą, Jums bus aktualūs liumenai, kuriais matuojamas šviesos srautas: kuo liumenų daugiau, tuo lemputė švies ryškiau.

  • Spalvinė temperatūra, matuojama kelvinais.
     Pagal vietą, kurioje bus naudojamas apšvietimas, rinkitės lemputės spalvinę temperatūrą (ji nurodoma kelvinais). Kuo daugiau kelvinų, tuo balta spalva „šaltesnė“, tiksianti darbingai aplinkai, ir kuo jų mažiau, tuo balta „šiltesnė“, tiksianti miegamajam ar kitoms patalpoms, kuriose intensyvus apšvietimas nebūtinas. 

    • Kuo daugiau kelvinų, tuo šaltėja spalva.
    • Juvelyrika ir sidabras 5000K-6000K kad išryškėtų metališkumas.




  • Šviesos sklidimo kampas
    Jei lemputę naudosite kryptingam apšvietimui, pravartu atkreipti dėmesį į šviesos sklidimo kampą, pavyzdžiui, šviestuvui prie lovos reikalingas siauras kampas, o plataus kampo LED lempa tinkama naudoti bendram patalpos apšvietimui. 
  • Šviesos apsaugos klasė (dulkės vanduo).

Apšvietimas


Lemputės: Spectrum LED
6W veikia kaip 46W.
4K kelvinų, Balta.
Viena pusė, dvi  lempos: 540 lm  * 2 = 1080 lm
Visos lempos:  540 lm * 3 =  1602 lm






Droselis

Droselis naudojamas srovės ribojimui.

Droselis vaidina lemiamą vaidmenį veikiant fluorescencinei lempai, nes sukuria priimtinas sąlygas tokio tipo apšvietimo įtaisui veikti: jis sulaiko didėjančią srovę tam tikru lygiu, o tai leidžia išlaikyti pakankamą įtampą lemputės elektroduose.
  • užtikrinant fluorescencinės lempos, kuriai taip pat reikalingas starteris, veikimą;
  • sugebėjimas apriboti srovę tam tikru lygiu;


  • 2020 m. lapkričio 26 d., ketvirtadienis

    Heroku frontend from subdirectory

    Runing react frontend(node) in heroku from subdirectory:

    Logging to heroku:

    $ heroku apps

    $ heroku git:remote -a takai-front

    $ heroku logs --tail


    Using buildpack: 

    https://github.com/timanovsky/subdir-heroku-buildpack

    2020 m. lapkričio 16 d., pirmadienis

    Razen palyginimas








     

    2020 m. lapkričio 15 d., sekmadienis

    ThinkPad E14 Gen 2 Issues

    Issues:

     

    Linux configs:

    More in-depth reviews:


    2020 m. lapkričio 4 d., trečiadienis

    2020 m. birželio 5 d., penktadienis

    React native

    $ npm install expo-cli --global

    Creating new project
    $ expo init my-project

    Starting application
    $ expo start 

    React fonts documentation; google fonts

    React navigation getting started; version 5
    import { NavigationContainer } from '@react-navigation/native'
    import { createStackNavigator } from '@react-navigation/stack'


    React navigation stack 
    $ npm install react-navigation-stack

    Drawer
    $ npm install @react-navigation/drawer


    Checking for uused dependecies:
    $ sudo npm install -g depcheck


    2020 m. gegužės 24 d., sekmadienis

    Tomcat linux working tutorial

    Tomcat working install tutorial

    $ sudo ./bin/startup.sh
    $ sudo ./bin/shutdown.sh
    $ sudo ./bin/shutdown.sh && sudo ./bin/startup.sh #Restart

    $ sudo catalina.sh run #command will print the logs to your terminal 


    http://localhost:8080 




    Skiping tests

    mvn install -DskipTests
    mvn clean package

    2020 m. gegužės 20 d., trečiadienis

    Java spring logging


    The available logging levels in Logback are:

    OFF (output no logs)
    ERROR
    WARN
    INFO
    DEBUG
    TRACE

    Loging messeage meanings:
    LOGGER.trace("doStuff needed more information - {}", value);
    LOGGER.debug("doStuff needed to debug - {}", value);
    LOGGER.info("doStuff took input - {}", value);
    LOGGER.warn("doStuff needed to warn - {}", value);
    LOGGER.error("doStuff encountered an error with value - {}", value);


    To disable dublicating log code to log, add to logback.xml:
    additivity="false"


    Adding logger like:
    private static final Logger log = LoggerFactory.getLogger(YourClassName.class);


    Sources:

    2020 m. gegužės 19 d., antradienis

    2020 m. gegužės 12 d., antradienis

    Java .jar generavimas


    jaro generavimas
    $ jar cvfe VardasCalc.jar lt.vtmc.ems.Main -C bin .

    Priklausomybiu generavimas
    $ jdeps bin/lt/vtmc/ems/Main.class > calcdependency.txt


    2020 m. balandžio 22 d., trečiadienis

    Windows 10 update time script

    You can add this in Task Scheduler and make it run automatically

    C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -command "Start-Process cmd -ArgumentList '/s,/c,C:\Windows\System32\net.exe start w32time & w32tm /resync"' -Verb runAs"

    2020 m. balandžio 16 d., ketvirtadienis

    Teksto atpažinimas - OCR


    Nemokami variantai:

    Online:
    https://www.onlineocr.net/
    https://github.com/naptha/tesseract.js#tesseractjs
    https://www.gdpicture.com/solutions/ocr-sdk/
    Microsoft OneNote- (Copy Text from Picture )
    Google Drive - Upload .pdf or img and open 'As Document'.


    Mokamos:
    https://finereaderonline.com/en-us/Tasks


    Pavyzdys naudojant tesseract, išvestis į terminalo langą out, norint išsaugoti į failą, rašomas 'file.txt'

    $ tesseract '/home/sup/Pictures/Screenshot from 2019-01-31 17-25-22.png' stdout

    Resolution 0 dpi. Using 70 instead.
    Estimating resolution as 147
    SIANDIEN = DARBODIENA —SAVAITGALIS


    2020 m. balandžio 12 d., sekmadienis

    Creating React, Viu.js projects

    React

    $ sudo apt install npx -y
    $ npx create-react-app test

    Install axios:
    $ nmp install axios

    Setup:
    Visual studio code plugins:
    ES7 React/Redux/GraphQL/React-Native snippets

    With this tool, it's possible to access properties from console:
    $r.props

    Chrome plugins: 

    React in web-browser:
    https://codesandbox.io


    Resources:

    UI components: www.primefaces.org
    React CRUD applicaiton tutorial
    Interactive React tutorial with build in editor.
    React Events


    Viu.js
    Chrome plugins: 

    2020 m. balandžio 10 d., penktadienis

    git komandos

    Konfigūracija patį pirmą kartą
    Github komandų vizualizacija

    $ git config --global user.name "Vardas"
    $ git config --global user.email "a@a.lt"
    $ git config --global core.excludesfile ~/.gitignore_global #Pridedamas globalus ignoravimo failas

    $ git config --system --list #Rodo parametrus
    $ git config --global --edit #Varda ir el-pašto konfigūravimas faile
    [user]
            email = you@example.com
            name = username
    [credential]
            helper = cache
    [core]
            excludesfile = /home/user/.gitignore_global


    # Spalvina git komandas
    $ git config color.status always

    Taip pat, kad automatiškai spalvintų git komandas, ir nereiktų atskirai suvedinėti, galima sukurti color sekciją ~/.gitconfig faile:
    [color]
      diff = auto
      status = auto
      branch = auto
      interactive = auto
      ui = true
      pager = true
    *
    Kaip pažiūrėti esamą konfigūraciją?
    $ git config --list
    user.email=you@example.com
    user.name=Vardas
    credential.helper=cache
    core.excludesfile=/home/sup/.gitignore_global


    Git Siuntimas/Sinchronizavimas 

    Vienos rinkmenos įkėlimas:
    $ git add dokumento_pavadinimas

    Viso  turinio įkėlimas:
    $ git add .

    Būtinas komentaro pridėjimas:
    $ git commit -m "Pridėjimo žinutė"

    Viso turinio įkėlimas, kartu su komentaro pridėjimu:
    $ git commit -am "Pridedami visi failai ir prirašoma pridėjimo žinutė"


    Nuotolinės repozitorijos nustatymas:
    $ git remote add origin remote_repository_URL

    Siunčiam pakeitimus į serverį:
    $ git push origin master

    Sinchronizuojamės su git repositorija:
    $ git pull origin master


    Klonavimas

    Klonavimas pakeitus pavadinimą, naudinga kai tame pačiame kataloge dvi vienodos repositorijos:
    $ git clone https://github.com/user/pavadinimas.git pavadinimas2

    Trinimas

    Kaip iš kompiuterio pašalinti paskutinį atnaujinimą?
    $ git reset --hard HEAD~1

    Kaip iš remote pašalinti paskutinį pakeitimą?
    $ git reset --hard HEAD~ && git push origin +master

    Kaip peršokti į praeitą tam tikrą reviziją:
    $ git reset --hard 6ca74a6
    $ git push -f # Šiuo atveju grįš prie 6ca74a6 revizijos. Ačiū Mitesh Shah

    Atitaisymas,  kai meta klaidą "Your branch is behind 'origin/master'
    $ git checkout master
    $ git pull origin


    Visų pakeitimų trynimas lokalioje repositorijijoje
    $ git reset --hard
    $ git clean -fd

    Failų ignoravimas

    Tam, kad repozitorijoje būtų ignoruojami failai, joje reikia pridėti .gitignore failą.

    Kaip sukurti globalų git failų ignoravimą?
    $ git config --global core.excludesfile ~/.gitignore_global
    $ echo "*~" >> ~/.gitignore_global #Ignoruos gedit teksto rengyklės daromas atsargines kopijas 

    Perrašymas

    Siuntimas į serverį perrašant visas rinkmenas:
    $ git push -f origin master
    Pastebėjimas: -f komandą, perrašys visus dokumentu git repozitorijoje.


    Šakos

    $ git branch #Rodo visas šakas
    $ git checkout master   #Pakeičia esamą šaką į master šaką arba
    $ git switch master 


    $ git checkout -b [šakos pavadinimas] #git šakos kūrimas ir perėjimas į naują šaką
    $ git branch [šakos pavadinimas] #Arba
    $ git checkout -b [šakos pavadinimas] origin/[šakos pavadinimas]#git šakos kūrimas ir parsisiuntimas šakos iš github repo ir įrašymas į naujai sukurtą šaką

    $ git push origin [šakos pavadinimas] #Šakos siuntimas į repo

    Šakų sujungimas:

    $ git branch
    naujasaka
    * master
    $ git merge naujasaka #Naujos šakos sujungimas į master

    Šakos pavadinimo keitimas:
    $ git branch -m [senas_pavadinimas] [naujas_pavadinimas]

    Šakos trynimas:
    $ git branch -d [šakos pavadinimas]

    $ git diff master nauja-saka --stat #Lygina šakų šakas ir atspausdina skirtumus

    Tagai

    Prideda tagą prie dabartinio commito:
    $ git tag 1.0.0 --force && git push --tags --force

    Prideda tagus prie ankstesnio commito ir išsiunčia į serverį:
    $ git tag -a 1.0.1 7bcd55 && git push --tags --force   

    Atvaizdavimas Logai

    $ git log --oneline #Atvaizduos visus pakeitimus suspaustu formatu

    Kaip pasižiūrėti paskutinius  2 pakeitimus?
    $ git log -n 2

    Avaizduoja visus komitus po eilutę
    $ git log --decorate --oneline --graph


    Atvaizdavimas pagal user-commitus:
    $ git shortlog -s 

    $ git log rev-list --count šaka #Bendras komitų kiekis šakoje


    Darbas komandoje

    Git workflow kelims žmonėms:
    $ git pull --rebase

    Git pull = rebase konfigūravimas:
    $ git config --global pull.rebase true

    Dirbant su forkai's [*]

    Pritedam upstream pas save iš forkintos repo
    $ git remote add upstream git://github.com/ORIGINAL-DEV-USERNAME/REPO-YOU-FORKED-FROM.git


    $ git fetch upstream
    $ git pull upstream master


    Kitos komandos


    Kaip atstatyti seną commitą, neištrinant ankstesnių:
    git revert --no-commit 7bcd5..HEAD && git commit 

    Kaip patikrinti ar nebuvo pakeitimų?
    $ git fetch origin
    $ git diff origin master

    Git repositorijos pridėjimas į dabartine direktoriją
    $ git init
    $ git remote add origin Kelias/iki/repositorijos
    $ git pull origin master

    Kaip įsiminti git slaptažodį?
    $ git config --global credential.helper cache

    Git buvimo vietos keitimas/atvaizdavimas:
    $ git remote set-url origin git@git....
    $ git remote -v

    Kiek programuotojų dirba projekte?
    $ git log --format='%an' | sort -u | wc -l
    518


    Kiek įrašų (commits) turi projektas?
    $ git rev-list --count devel
    22783


    Kuris programuotojas padarė daugiausiai įrašų?
    $ git shortlog -s -n | head -1
      4230  METEOR: benjam
    n

    Kurie programuotojai padarė ne mažiau kaip 5 įrašus?
    $ git shortlog -s -n | awk -F" " '$1 > 4 {print $1, $2}'

    Kiek kodo eilučių buvo parašyta projekte (iš viso)
    $ git ls-files | xargs cat | wc -l
    490963


    Kiek šakų (branches) turi projektas?
    $ git branch -r | wc -l
    1083



    Pakeistos repositorijos pushinimas į naują repo:

    $ git remote set-url origin https://github.com/.../....git
    $ git push --all



    Atsisiuntimas

    Kaip atsisiųsti tik vieną failą iš github repositorijos?
    https://raw.github.com/vartotojas/repositorijos-pavadinimas/šaka-master-dev/failo-pavadinimas




    Literatūra:
    Git gidas su paaiškinimais - https://rogerdudler.github.io/git-guide/.

    2020 m. kovo 22 d., sekmadienis

    Design petterns

    All design paterns:
    https://refactoring.guru/
    https://en.wikibooks.org/wiki/Computer_Science_Design_Patterns
    https://java-design-patterns.com/patterns/

    Decorator pattern:
    https://www.tutorialspoint.com/design_pattern/decorator_pattern.htm

    Commander pattern:
    https://www.youtube.com/watch?v=8gE-icd93WA

    Solid principles
     S — Single Responsibility Principle
     O — Open/Closed Principle
     L — Liskov Substitution Principle
     I — Interface Segregation Principle
     D — Dependency Inversion Principle 

    2020 m. kovo 15 d., sekmadienis

    Kaip atvaizduojamas tekstas


    image source *The Tech Train

    A simbolis UTF-8 , koduojamas vienu bitu A:'1000001' 


    $ echo "A" > failas.txt
    $ ll failas.txt 
    -rw-r--r-- 1 sup sup 2 kov.   15 09:05 failas.tx

    Matome, kad failas užima 2 baitus bet kodėl? Įrašėme tik vieną simbolį, 'A' vieną baitą informacijos.

    Toliau tikrinant galime pastebėti, kad

    $ od -A o -t u1c failas.txt
    0000000  65  10
              A  \n
    0000002


    Po 'A' simbolio, buvo įterptas naujos eilutės simbolis. Taigi `echo` komandą, automatiškai prideda '\n\' simbolį ir todėl failo dydis 2baitai. Panaudokime specialią `echo` vėlėvėlę

    -n     do not output the trailing newline

    $ echo -n "A" > failas.txt 
    1 ✗ sup /tmp $ od -A o -t cd failas.txt
    0000000   A
                         65
    0000001


    $ ls -la failas.txt 
    -rw-r--r-- 1 sup sup 1 kov.   15 09:10 failas.txt


    Pirmieji baitai nurodo kokio ilgio bus bitas.

    0xxxxxxx - vienas bitas (maximali reikšmė 127 = 64+32+16+8+4+2+1)
    110xxxxx 10xxxxx - du baitai (max reikšmė 16191)
    ...

    (Source: https://en.wikipedia.org/wiki/UTF-8)


    Tam kad naršyklėse tekstas butų teisingai atvaizduotas, reikia nustatytų žymę:
    <meta charset="UTF-8">


    2020 m. kovo 6 d., penktadienis

    Spring boot

    Guides: https://spring.io/guides
    Spring initializer: https://start.spring.io/
    Docs: https://docs.spring.io/
    HttpStatus Status values

    REST - Representational State Transfer
    DAO - Data access object (ryšys su duombaze)
    model?
    JSON - Javascript Object Notation
    POJOS - Plain Old Java Objects
    JAR - Java Archive
    ORM - Object relation mapping
    ODBC - Object Database Connectivity
    JDBC - Java Database Connectivity

    @RestController = @Controller + @ResponseBody 
     
    @Service or @Component or @Repository

    Running with maven
    $ mvn clean package
    $ mvn spring-boot:run

    $ mvn clean
    $ mvn install #target direktorijoje atsiras .jar failiukas
    Autowiring@Autowired




    GET

    @GetMapping
    @RequestMapping(method = RequestMethod.GET)

    @GetMapping(path="/hello")
    @RequestMapping(method = RequestMethod.GET, path="/hello"))

    @GetMapping(path="/{name}")
    public String getName(@PathVariable String name)

    POST

    @PostMapping()
    @RequestMapping(method = RequestMethod.POST)
    @ResponseStatus(HttpStatus.CREATED)


    DELETE

    @DeleteMapping(path = "/{username}")
    @RequestMapping(path = "/{username}", method = RequestMethod.DELETE)
    public void deleteUser(@PathVariable final String username) {}

    application.properies

    logging.level.org.springframework.web: DEBUG
    logging.level.org.springframework: DEBUG
    server.port=9090

    spring.jackson.serialization.write-dates-as-timestamps=false





    Links

    Lombok in Eclipse.
    Project auto refresh with devtools
    Java validation annotations:
    Jwt security


    2020 m. vasario 20 d., ketvirtadienis

    Installing Java

    How to find where java sdk is located?

    $ update-java-alternatives -l

    If there is multiple java versions, configuration can be done by:

    $ sudo update-alternatives --config java

    How to check java version?

    $ javac -version


    2020 m. sausio 30 d., ketvirtadienis

    Unicode

    Website for automagicaly detecting unicode:
    Python encoding fixer ftty

    Encoding tricks

    Joining multiple mp3 files

    $ sudo apt-get install mp3wrap

    $ mp3wrap output file1.mp3 file2.mp3 file3.mp3

    $ sox file* output.mp3

    Problem:
    sox FAIL sox: Input files must have the same sample-rate

    Fixing sample rate with sox

    $ sox CD1.mp3 -r 41000 CD1.mp3

    2020 m. sausio 19 d., sekmadienis

    Disabling Ubuntu 19.10 screenshot sound effect

    mkdir -p ~/.local/share/sounds/__custom
    touch ~/.local/share/sounds/__custom/screen-capture.disabled