czwartek, 30 maja 2019

Grunt czy Grunt-CLI


Zajmuje się teraz NodeJS

Definicja:
Napiszę później :-)

Jednym z dostępnych pakietów jest Grunt i odrazu zadaje sobie Pytanie

Co to jest Grunt i czy po co mi Grunt-CLI

Grunt (alternatywa dla Glup) to kod który wykonuje listę tasków (zadań) w reakcji na eventy.

Tylko co to właściwie znaczy?

Przykładowo po zakończeniu pracy zawsze sprawdzamy czy kod nadal działa, możemy ustawić zadanie by sam uruchomił testy, albo chcemy zminifikować js i css (zmniejszyć wielkosć przez usunięcie opisów, spacji i długich nazw) dwa polecenia robią to automatycznie.
Lista zadań jest wciąż rozwijana przez społeczność i już jest pokaźnych rozmiarów.

Jakie eventy? Wymienię dwa:
- plik w podanym katalogu (np. js) został zmieniony
- w konsoli uruchomiłeś grunta z flagą karma (grunt karma)

Konfiguracja i liste flag trzymamy w pliku Gruntfile.js lub Gruntfile.coffee
module.exports = function(grunt) {

  // Project configuration.
  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    uglify: {
      options: {
        banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n'
      },
      build: {
        src: 'src/<%= pkg.name %>.js',
        dest: 'build/<%= pkg.name %>.min.js'
      }
    }
  });

  // Load the plugin that provides the "uglify" task.
  grunt.loadNpmTasks('grunt-contrib-uglify');

  // Default task(s).
  grunt.registerTask('default', ['uglify']);

};
 Opis:
 pobiera dane projektu z package.json
 uglify banner - tworzy komentarz
uglify build - pobiera i zapisuje pliki
Task default - oznacza że gdy niema żadnej flagi

No to co to jest Grunt-CLI ??

Z tego co ustaliłem to jest interface dla Grunta, do urzywania w lini komend.
Przeszukuje ona nasze katalogi w poszukiwania grunta i uruchamia jego konfiguracje, jeśli nie to zwraca błąd.

instaluje się go globalnie -g
npm install -g grunt-cli

Czyli musimy Grunta zainstalować w projekcie lokalnie
npm install grunt --save-dev
polecenie npm install ... dodaje nam wpis do pliku package.json, a flaga --save-dev zadba by dodać do wartości devDepedencies w tym pliku.

Dodam jeszcze, że zainstalowany pakiet w pliku package.json jest z wersją która została zainstalowana ~ oznacza, że jak pojawi się nowsza wersja to ma ją zaktualizować

zainstalowana? no to jeszcze plik configuracji grunt'a który jest niezbędny do pracy.

Może być ten powyżej - jak zainstalujemy grunt-contrib-uglify

albo można użyć generatora pliku, który przeprowadzi nas za ręke.
Może stworzyć tylko plik, albo pobrać liste zainstalowanych już pakietów i opisuje co one nam dają.

npm install –g grunt-init
Tylko to już nie dziś bo dziesko skończyło poranną drzemkę.
Narazie


środa, 29 maja 2019

keymap

Skróty klawiszowe przyspieszają pracę - banał, ale zobacz

odrywasz rękę od klawiatury. Klikasz myszką i wracasz na klawiaturę.

Te same keymap, są wielu programach, nawet pisząc to sprawdzam 

ctrl + ← 
przeskakuje o całe słowo
ctrl + shift + ←    
zaznacza mi całe słowo

szybciej niż po literce, prawda?

Testuje teraz phpstorm i zobaczmy co tam mają użytecznego...

alt + ctrl + s    
otwiera setings z podlądem kaymap 

ctrl + w
Zwiększa zaznaczoną sekcje - super


ctrl + shift + w
odwrotność zmniejsza zaznaczoną sekcje

alt + spacja
pokazuje auto dopowiadanie

shift, shift

otwiera mi  shearch Everywhere - wyszukiwanie w projekcie (pliki, zmienne, moduly)

Bardzo ciekawi mnie opcja Refactior

alt + ctrl + shift + t
ale to później sprawdzę, zapiszę by sprawdzić

ctrl+j
pozwala pracować z templatkami kodu - nie pisać całego, ale wstawić i wypełnić pola

alt + insert
generuje plik w projekcie


Dziecko wstało więc koniec na dziś. 
Mam nadzieję że o takich skrótach jak:
ctrl + c , ctrl + v, ctrl + x, ctrl + z,
ctrl + a, ctrl +f, ctrl +b

wspominać nie trzeba.
ctrl +
 to chyba programiści mają jako tik nerwowy

Pozdrawiam





poniedziałek, 27 maja 2019

Raport z Ćwiczeń nad gitem

Dziś ćwiczyłem pracę z Gitem.

Narzędzie:
- używam TortoiseGit

Zadanie.
1)
- Stworzyć repozytorium : https://bitbucket.org/born-kes/composer/src/master/
- Stworzyć instalator Composera w batch,
- plik bat, który pobiera pliki Composera i zapisuje w projekcie (tworzymy środowisko pracy).
- Sprawdzić czy pamiętam jak konfiguruje się composser'a

2)
- Stworzyć kilka wątków/kanałów (Branch) na repozytorium Git'a
- Wprowadzić zmiany, w każdym z wątków inne.
- Połączyć (Marge...) wątki (Branche)

Raport, jakie kroki podjołem:
- stworzyłem repozytorim
- sklonowałem na dysk
- stworzyłem wątki
- przełając się między nimi potworzyłem różne konflikty między wersjami (wątkami)

3) Rozwiązuje problem?
1) ustawiam wątek ( Switch/Checkout... )
 np.master
2) zaktualizować wątek (Pull...)
- są dwa wątki master (localny i serwera repozytorium)
3)  dołączyć (Marge..) do niego poprawki (commit'y)  z innego wątku (Branch)

4) Edytować poprawkę jeśli dotyczy jednego pliku...

5) Wysłać (Push...) na serwer
- bez dołączania już nowych plików z tego co widzę, nie mamy tu wyboru.

6) Hura udało się?


środa, 22 maja 2019

Kupno działki, opieka nad dziećmi i kilka książek i tygodni później, od rozpoczęcia porządkowania wiedzy.

Książki o :
-wzorcach projektowych,
- testowaniu danych,
- Twórcy ofiary i

i efektem jest Class'a testowa,
Ogarnę gita i dodam link do repozytorium.



/**
 * Class ExampleTest
 * $this->assertTrue
 * $this->assertFalse
 * $this->assertEquals ==
 * $this->assertSame ===
 * $this->assertContains('value', $array) ['value']
 * $this->assertArrayHasKey('key', $array) ['key'=>'value']
 * $this->assertInternalType('array', $a); type_of2

$date = new DateTime();
$this->assertInstanceOf('DateTime', $date);
 */


<?php
use PHPUnit\Framework\TestCase;

  
  
class EtestTest extends TestCase
{
    /** @var  \Prophecy\Prophecy\ObjectProphecy */
    private $prophet;
    private $mock;
    private $Basic;
    private $x;

    protected function setup() {
        $this->prophet = new \Prophecy\Prophet;
        /** @var Prophecy\Prophet $x TYPE_NAME */
        $x = $this->x = $this->prophet->prophesize()->willImplement ('Basic\Routing');


        $x->get('b')->willReturn('hello b');
        $x->get('a')->willReturn('hello');
        $this->mock = $x->reveal();

        $this->Basic   = new \Basic\Basic($this->mock);
    }

    protected function tearDown() {
        $this->prophet->checkPredictions();
    }

    public function testBasicRun()
    {
        //$this->x->get('b')->willReturn('hello nowe');

         $this->assertEquals($this->Basic->run(), 'hello b') ;
        return true;
    }

    /**
     * jeśli test poprzedni działa
     * @depends testBasicRun
     */
    public function testNext($a)
    {
        $this->assertTrue($a);

    }

    /**
     * Dane z Provider'a
     * @dataProvider additionProviderOne
     * @dataProvider additionProviderSecond
     */
    public function testAdd($a, $b, $expected)
    {
        $this->assertSame($expected, $a + $b, "{$a}, {$b}, {$expected}");
    }
    /**
     * Dane z Provider'a
     * @dataProvider additionProviderOne
     * @dataProvider additionProviderSecond
     */
    public function testAddSecond()
    {
        list( $a, $b, $expected) = func_get_args();
        $this->assertSame($expected, $a + $b, "{$a}, {$b}, {$expected}");
    }

    public function additionProviderOne()
    {
        return [
            [0, 0, 0],
            [0, 1, 1],
            [1, 0, 1],
         //   [1, 1, 3]
        ];
    }

    public function additionProviderSecond()
{
    return [
        'adding zeros'  => [0, 0, 0],
        'zero plus one' => [0, 1, 1],
        'one plus zero' => [1, 0, 1],
     //   'one plus one'  => [1, 1, 3]
    ];
}

    public function testFailingInclude()
    {
        $this->expectException(Error::class);

        throw @include 'not_existing_file.php';
    }

    public function testExpectFooActualFoo()
    {
        $this->expectOutputString('foo');
        echo 'foo';
    }
}

// cls => czeuszczenie cmd

Notatka: instalacja narzędzi dla programistów

 -------------------------------------------
 Grunt / Glup (alternatywa)

- wykonuje listę tasków (zadań) napisanych w js.
minifikuje kod, łączy pliki, podmienia tagi na tekst, śledzi zmiany w plikach, powtarza testy.

 -------------------------
  front-end
 https://bower.io/

 śledzi pakiety które chcesz mieć w projekcie i ściąga potrzebną wersje, albo aktualizuje.

  -------------------------
  http://yeoman.io/ 

- Tworzy i rozbudowuje szkielet aplikacji - korzysta z gotowych generatorów
(aplikacje/strony mobilne, rozszerzenia firefox'a/chroma, wordpress itp),
 tworzy też procedury dla Grunt'a/Glup'a i zestawy testów jednostkowych.
  -------------------------

 Instalacja w cmd:

Czy masz zainstalowanego nodejs ?

nie:
 - pobierz z https://nodejs.org

tak:
sprawdzamy wersje nodejs & npm
npm --version



Czy masz plik package.json

Nie:
{
 - generate file package.json
npm init

 - zainstaluj grunt globalnie

npm install -g grunt-cli

 - zainstaluj grunt'a i modułów w projekcie

 npm install grunt --save-dev grunt-contrib-connect grunt-contrib-watch --save-dev

 - instal karma :supports test-driven development i moduły
 npm install karma grunt-karma karma-jasmine jasmine-core karma-browser-reporter karma-story-reporter --save-dev

 - instal launcher for browsers to test for karma
 npm install karma-chrome-launcher karma-cli karma-firefox-launcher karma-ie-launcher karma-phantomjs-launcher karma-script-launcher --save-dev
}

Tak:
npm install


 - Tworzymy pliki config
 * gruntfile.js
 * karma.config.js



 zapomniałem o  Composer jest dla php
https://getcomposer.org/

Tu za instalacje odpowiada w CMD
phar i wget
 

wget https://phar.phpunit.de/phpunit-6.5.phar
php phpunit-6.5.phar --version
 
 
ale opisze bardziej innym razem.

plik config phpunit
phpunit.xml

czwartek, 28 marca 2019

Postanowiłem uporządkować trochę moją pracę i zebrać narzędzia które znam i zacząć ich używać .

Jest znany problem ludzi którzy tak są zajęci nauką, że zapominają wdrażać tej wiedzy.
Mimo, że pozornie się rozwijają to stoją w miejscu.

Startujemy.
Źródło https://www.youtube.com/watch?v=vRqvaTasYZc za Romanem 

Dźwięki do puszczania przy pracy ( dźwięki tła / białe dźwięki )
https://www.noisli.com/

wtyczki do przeglądarki:
https://muz.li/ - Źródło inspiracji - przy otwarciu nowej karty pokazuje informacje z różnych portali.

http://raindrop.io - pozwala uporządkować zakładki ( kiedyś chciałem coś takiego napisać bo się gubię w ilości zakładek )

Do robienia notatek
https://evernote.com/intl/pl

https://bear.app/ jest na mac'a :(

Program do grafiki
https://www.sketch.com/get/ (30 dni free )

GIT
dodawanie aliasów dla terminala
editconfig
https://stackoverflow.com/questions/2553786/how-do-i-alias-commands-in-git

Telminal od zsh ?
https://github.com/changs/slimzsh

Dobra bobas wstał i żąda uwagi
Pozdrawiam i zanikam
Łukasz

wtorek, 22 maja 2018

Strona sklepu


Pierwsze podrygi w sieci zaczęliśmy od fan-page na Facebooku PiernikarniaCafe.
Dodatkowo działa też fan-page Matka Polka Piernicząca.

Rozwijamy się i od jakiegoś czasu pracujemy nad stroną - Piernikarnia jest już też w sieci poza portalami społecznościowymi.


Dostawa Prezentów

Dajcie nam trochę czasu na wypełnienie strony treścią i uruchomienie sklepu internetowego.
Wysyłki są już przetestowane, zamówienia przyjmujemy:
- Telefonicznie
- e-mail
- fan-page
- w lokalu

informacje są w zakładce Kontakt na stronie.

Jeśli macie jakieś propozycje na poprawki zapraszamy do pisania.
Konstruktywna krytyka, czy feedback od was, pomoże nam lepiej współpracować w przyszłości.
Może inni podpatrzą u nas wasze rozwiązania które zastosują u siebie?

Pozdrawiam
Łukasz Martyn