2017. szeptember 27., szerda

Szemöldökráncolás és PHP III.

Type hinting

class Task
{
    protected $title;
    protected $complete;

    public function __construct(string $title,
                                bool $isComplete = false)
    {
        $this->title = $title;
        $this->complete = $isComplete;
    }

    public function isComplete(): bool
    {
        return $this->complete;
    }
}

$task = new Task("Go to the store", "false");

var_dump($task->isComplete());

Az eredmény bool(true), ami nem meglepő, hiszen a nem nulla hosszúságú karakterláncok logikai értéke igaz, viszont ami melepő, hogy alapértelmezetten nem akad ki az interpreter. Magunknak kell rendelkeznünk arról, hogy declare(strict_types=1); hogy nehogy ilyen kis BUG forrást vigyünk a rendszerbe...

Szemöldökráncolás és PHP II.

Függvényhívás tömb paraméterrel

Kódrészlet

function addElement($list)
{
    $list[] = 4;
}

$myList = [1, 2, 3];

addElement($myList);

var_dump($myList);

Eredmény

array(3) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
}

Ismét csak a python-os, C#-os, Java-ás stb. beidedződés alapján azt várnám, hogy a $myList tömb négy elemű lesz, amelynek negyedik eleme 4. Value type VS Reference type. A PHP a tömböknél nem a referenciát adja át, hanem másol, gyakorlatilag érték típusként viselkedik. A megoldás & operátor alkalmazása a pareméterek definiálásánál... Az csak történelmi érdekesség, hogy PHP4-es esetében az objektumoknál is alkalmazni kellett az & operátort, például assignment esetén is. Szerencsére azóta már az objektumok Reference type-ok a PHP varázslatos világában is...

2017. szeptember 26., kedd

Szemöldökráncolás és PHP I.

Változók hatásköre

Van pár programozási nyelv, amellyel foglalkoztam és vannak titkos kedvencek is, de van hogy az embernek olyan programozási nyelvvel kell foglalkoznia, amely nem a szíve csücske, de attól még munkája során megkerülhetetlen. A legjobb tanulás, ha az ember másoknak magyarázza el az "AHA" élményeit. Tehát ez a kis sorozat amolyan személyes kis jegyzet, amely segít rögzíteni a friss élményeket.

Az alábbi kód a következő hibát dobja Notice: Undefined variable..., ami a nem túl kellemes frusztráció élményét okozza, ha az ember a python LEGB változó hatáskörének szabályain nőtt fel...

$myGlobal = 1;

function printGlobal()
{
    echo $myGlobal;
}

printGlobal();

Természetesen a PHP javára kell írni, hogy ezzel a húzással egyértelművé teszi hogy egy a függvényen belüli lokális változóval dolgozunk, vagy pedig egy globális változóval...

$myGlobal = 1;

function printGlobal()
{
    global $myGlobal;
    echo $myGlobal;
}

printGlobal();

2017. április 26., szerda

macOS Sierra - Nem jelennek meg az alkalmazások a Spotlight-ban

El kezdtem ismerkedni a PC világa után egy kicsit a Mac világával, és már a kezdetekkor szembetaláltam magam egy igen idegesítő bug-val.

Az újonnan telepített alkalmazások nem jelentek meg a spotlight-ban. A hivatalos support által javasolt megoldás sajnos nem segített. Végül a következő megoldás hozott eredményt:

  • Spotlight kikapcsolása
    sudo mdutil -a -i off
  • Spotlight kiürítése
    sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.metadata.mds.plist
  • Spotlight betöltése
    sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.metadata.mds.plist
  • Spotlight újraindítása
    sudo mdutil -a -i on

Tanulság, hogy minden rendszer használata szívás, és minden rendszernek meg van a maga előnye.

Forrás

2016. szeptember 28., szerda

Sublime Text beállítása Git szövegszerkesztőjeként

  1. Sublime Text beállítása, hogy futtatható legyen parancssorból: Windows 10
  2. Következő parancs futtatása:
    git config --global core.editor "subl -n -w"

Sublime Text 3 megnyitása parancssorból

Kedvenc szövegszerkesztőm mostanában a Sublime Text. Munkában az általam kevésbé kedvelt Windows 10-et használom, ezért nagyon örültem anno, amikor rábukkantam a megoldásra, hogy hogyan lehet elindítani a Sublime Text-et parancssorból (egész pontosan Git Bash-ból)

Sublime Text hozzáadása a Path rendszerváltozóhoz

  1. Parancssor elindítása, sysdm.cpl futtatása, amely megnyitja a Rendszer tulajdonságai ablakot
  2. Speciális (fül) -> Környezeti változók... (gomb) -> Új Rendszerváltozó (gomb)
    • Változó neve: SUBLIME
    • Változó értéke: C:\Program Files\Sublime Text 3
  3. A Path Rendszerváltozóhoz hozz kell adni %SUBLIME% értéket
  4. A parancssor újraindítása után már működnie kell a subl parancsnak

Fájl vagy könyvtár megnyitása új ablakban

subl fajl_neve vagy subl konyvtar_neve

Fájl vagy könyvtár megnyitása aktuális ablakban

subl fajl_neve --add vagy subl konyvtar_neve --add

Forrás: scotch.io

USB 3.0 külső winchester eltűnik windows 8.0, 8.1 és 10 - MEGOLDÁS

Az USB 3.0 külső winchester-rel állandóan megszakadt a kapcsolat a Windows-os gépemen, s bár elvileg a 2919355 frissítés orvosolja a problémát, nálam a legfrissebb Windows 10-es telepítésnél is megszakad a kapcsolat a külső winchester-emmel. Szerencsére van rá megoldás, amely a következő:

  1. ToggleSuspend.ps1 PowerShell szkript letöltése
  2. Jobb klikk a Windows gombon, és "Parancssor (rendszergazdai)" opció kiválasztása
  3. Elnavigálás abba a könyvtárba a cd parancssal, ahova le lett töltve a PoweShell szkript
  4. Powershell -ExecutionPolicy Bypass -NoProfile -File ToggleSuspend.ps1 parancs futtatása. A szkript kilistázza a csatlakoztatott eszközöket.
  5. A meghajtó számának kiválasztásával tudjuk állítani a "SuspendOnIdle" opciót

Természetesen vannak grafikus/kattingatós módja is ennek a megoldásnak, amely megtalálható a belinkelt forrásban, csak az véleményem szerint jóval hosszadalmasabb, mint ez a pár lépéses megoldás.

Forrás: Microsoft Windows USB Core Team Blog