Szczegóły grupy Prywatna

administrators

Lista członków

Tpk Tpk
  • Jak wykonać pendrive multiboot z pomocą Ventoy [Poradnik]?

    Cześć! Dzisiaj przedstawię Wam patent na to w jaki sposób można w prosty sposób zrobić pendrive multiboot. Czym cechuje się taki pendrive? Umożliwia uruchomienie wielu obrazów systemów (i nie tylko) z pojedynczego nośnika.

    Jest to właściwie to samo co bootowalny pendrive'a z tą różnicą, że możemy sami wybieramy z którego obrazu ma wystartować - natomiast ponieważ nominalna pojemność standardowego pendrive'a już dawno wynosi powyżej 4gb to jest to o wiele bardziej dostępne niż wcześniej i jest to świetna opcja gdy chcemy zrobić swój własny toolkit.

    Jak się to robiło kiedyś?

    Jeżeli kiedyś próbowaliście samodzielnie wykonać takiego pendrive'a to jest duże prawdopodobieństwo, że otarliście się o poradnik w którym ktoś wykorzystując linux'owego gruba zainstalował go na pendrive i próbuje manualnie dodać odpowiednie wpisy w pliku konfiguracyjnym grub wskazując na poszczególne obrazy dysku znajdujące się na dysku.

    Alternatywnie wykorzystywało się YUMI - które robiło dokładnie to samo tylko w sposób bardziej graficzny.

    Ventoy - czyli zróbmy to sprytniej...

    Dzisiaj chciałbym Wam przedstawić rozwiązanie o niebo lepsze (znacznie łatwiejsze) z pomocą którego w ciągu zaledwie paru minut stworzycie własnego pendrive'a multiboot. Rozwiązanie to Ventoy - open sourcowe narzędzie dzięki któremu stworzenie pendrive'a multiboot od teraz będzie tak proste jak przeniesienie obrazów systemów / narzędzi i innych ISO na docelowy nośnik (*dosłownie).

    Strona projektu: https://www.ventoy.net/en/index.html

    Zanim zaczniemy działać należy oczywiście zaopatrzyć się w nośnik USB o dowolnej pojemności (im większa pojemność tym lepiej - wgramy więcej obrazów).

    Krok pierwszy:

    Pobieramy Ventoy z Github'a w wersji odpowiedniej dla naszej platfromy a następnie rozpakowujemy:

    Windows:
    WinRAR / 7zip lub w przypadku Windows 7+ PPM i opcja z menu kontekstowego "Wyodrębnij wszystkie".

    windows extract all

    Następnie:

    windows extract2

    W efekcie utworzony i otwarty zostanie nowy folder który będzie się nazywał tak samo jak pobrany wcześniej zip.

    Linux:

    1. wget https://github.com/ventoy/Ventoy/releases/download/v1.0.44/ventoy-1.0.44-linux.tar.gz
    2. tar -xvf ventoy-1.0.44-linux.tar.gz
    3. cd ventoy-1.0.44-linux

    Krok drugi:

    Instalacja

    Instalacja Windows

    • Zastanawiałem się czy nie pominąć tego kroku bo jest on na tyle trywialny ale niech będzie, po rozpakowaniu archiwum mamy plik Ventoy2Disk.exe który uruchamiamy:

    Ventoy GUI

    *Przykład przedstawiający aktualizację (jak widać pendrive zawierał wcześniej starszą wersje Ventoy). Jeżeli instalujemy pierwszy raz naciskamy "Install" lub "Update" jeżeli chcemy wyłącznie zaktualizować narzędzie.

    Instalacja Linux

    • Uruchamiamy terminal (Ctrl + Alt + T - pod Gnome) w folderze rozpakowaną paczką lub jeżeli jeszcze nie zamknęliśmy wydajemy polecenie:
      sudo sh Ventoy2Disk.sh -i /dev/XXX

    ventoy shell install

    Oczywiście w miejscu /dev/XXX podajemy aktualną literę przepisaną do naszego pendrive'a, możemy ją sprawdzić poleceniem lsblk:

    usb stick in lsblk

    Jedno z urządzeń będzie miało zauważalnie mniej gb - dokładnie tyle ile ma nasz pendrive (jest to więc /dev/sdg).

    Co więcej od wersji 1.0.36 dostępna jest wersja również GUI dla Linux'a - która działa w przeglądarce.

    Aby ją uruchomić wystarczy wydać polecenie:
    sudo sh VentoyWeb.sh
    Następnie wystarczy uruchomić przeglądarkę i przejść pod adres http://127.0.0.1:24680

    Krok trzeci:

    Gotowe, od teraz wystarczy, że przeniesiemy wybrane przez nas obrazy na pendrive'a a Ventoy sam zadba o to aby odpowiednio je uruchomić. Lista przetestowanych obrazów dostępna jest tutaj.

    Jeżeli posiadamy tylko plik możemy przenieść najnowszy obraz Ubuntu / Gparted / Clonezilla czy dowolny inny.

    Część techniczna

    Ponieważ części z Was tak podstawowy opis jak wprowadzenie do Ventoy nie wystarczy - czas więc na coś extra dla wyjadaczy.

    Zabawny fakt - Ventoy wciąż pod maską bazuje na grub2.
    Możliwe jest rozszerzanie go o dodatkowe pluginy a także modyfikowanie jego wyglądu poprzez stosowanie specjalnie przygotowanego JSON'a opisującego jak ma dokładnie wyglądać - bardzo wygodne rozwiązanie.

    Ciekawostką jest, że tak naprawdę core funkcjonalności Ventoy znajduje się na partycji którą tworzy automatycznie przy instalacji o rozmiarze 32M dzięki czemu jest w stanie skanować zawartość drugiej partycji i dynamicznie dodawać wpisy do menu.

    Aby dostosować Ventoy pod swoje upodobania wystarczy na głównej partycji (tej która po instalacji jest pusta a na której znajdować się będą obrazy iso) stworzyć katalog ventoy a w jego wnętrzu umieścić plik ventoy.json.

    Przykładowy plik:

    {
        "control": [
            { "VTOY_DEFAULT_SEARCH_ROOT": "/ISO" }
        ],
        "theme": {
            "file": "/ventoy/theme/shodan/theme.txt",
            "gfxmode": "1920x1080",
            "display_mode": "GUI",
            "serial_param": "--unit=0 --speed=9600",
            "ventoy_left": "5%",
            "ventoy_top": "95%",
            "ventoy_color": "#0000ff",
            "fonts": [
                "/ventoy/theme/shodan/hack-16.pf2",
                "/ventoy/theme/shodan/hack-24.pf2"
            ]
        },
        "menu_alias": [
            {
                "image": "/ISO/ubuntu-20.04.1-desktop-amd64.iso",
                "alias": "Ubuntu 20.04"
            },
            {
                "image": "/ISO/elementaryos-5.1-stable.20200501.iso",
                "alias": "Elementary OS 5.1"
            },
            {
                "image": "/ISO/kali-linux-2020.4-live-amd64.iso",
                "alias": "Kali Linux"
            },
            {
                "image": "/ISO/linuxmint-20-cinnamon-64bit.iso",
                "alias": "Linux Mint 20 Cinnamon"
            },
            {
                "image": "/ISO/gparted-live-1.1.0-8-amd64.iso",
                "alias": "Gparted"
            },
            {
                "image": "/ISO/clonezilla-live-2.7.0-10-amd64.iso",
                "alias": "Clonezilla"
            },
            {
                "image": "/ISO/dban-2.3.0_i586.iso",
                "alias": "Darik's Boot and Nuke"
            },
            {
                "image": "/ISO/windows-7-ultimate-sp1-x64.iso",
                "alias": "Windows 7 Ultimate (x64)"
            }
        ]
    }
    

    Dzięki temu plikowi możemy też zrobić remap nazw pod którymi będą pojawiać się poszczególne obrazy w menu.
    Ponieważ wykorzystywany jest tutaj Grub dostępne są również Grub Theme i wszystko co z tym związane.

    napisane w Systemy
  • RE: Zdalne uruchamianie komputera w sieci (Wake on Lan / via WAN)

    W przypadku laptopów sprawa wygląda zgoła odmiennie - ponieważ są to urządzenia przenośne podstawowym wymogiem są tutaj funkcje związane z energooszczędnością które automatycznie sprawiają, że pewne rzeczy są w nich utrudnione (co nie oznacza niemożliwe). Jednak w ich przypadku mówimy już o WoL (Wake on Lan) przy fizycznie podłączonej skrętce i WoWlan (Wake on WLAN) przy sieci bezprzewodowej - przy czym o ile z zwykłym kablem raczej nie ma problemu z wybudzaniem to w przypadku WoL po Wifi komputer będzie w stanie wybudzić się tylko z wybranych stanów (np. ACPI state). Działa to w przypadku trybu uśpienia (S3) i hibernacji (S4) ale nie gdy laptop jest całkowicie wyłączony (z oczywistych względów - nie jest podłączony do żadnego punktu AP).

    Jak dotąd opcje odnośnie WoL w UEFI (w przypadku laptopów) widziałem jedynie w Dell'ach ale z tego co wiem są też w HP.

    Na stronach pomocy poszczególnych producentów można znaleźć czasami informacje których urządzeń dotyczą wskazane instrukcje - wybierając jeden z tych modeli masz pewność, że w będzie wspierał (przynajmniej częściowo) funkcje związane z WoL:
    https://www.dell.com/support/kbdoc/pl-pl/000175283/jak-skonfigurować-funkcję-wake-on-lan-wol-w-systemie-firmy-dell
    http://h10032.www1.hp.com/ctg/Manual/c06216871

    Ciężko jednoznacznie stwierdzić czy sprzęt będzie wspierał wybrane funkcje (specyficzne dostępne wyłącznie w BIOS/UEFI) bez podania konkretnego modelu jednak jeżeli będziesz miał jakąś propozycje i/lub wskażesz budżet postaram się pomóc (zachęcam do utworzenia nowego wątku).

    napisane w Benchmark & Diagnostyka
  • RE: Zdalne uruchamianie komputera w sieci (Wake on Lan / via WAN)

    Cześć @manx, temat wymaga odświeżenia - a ja od momentu jego publikacji sporo o samym Wake on Lan się dowiedziałem, czego niestety wcześniej nie byłem świadom - przede wszystkim muszę Cię zmartwić ale rozwiązanie z WoL via WAN nie zadziała. Pisząc ten poradnik testowałem go na zasadzie prób i błędów - więc gdy tylko się udało uznałem, że całość działa co z perspektywy czasu było zwyczajnie błędnym założeniem.

    Powyższe rozwiązanie wydawało się działać dopóki nie przeprowadziłem dłuższego research'u z tym związanego - ponieważ rozwiązanie to czasami działało a czasami nie. Okazuje się, że komputer w ten sposób można uruchomić tylko przez pewien czas od jego wyłączenia (konkretniej dopóki pozostaje on w tablicy ARP routera i jego powiązanie IP -> MAC). Ponieważ wyłączony komputer nie posiada adresu IP a jedynie adres MAC wszystkie pakiety WoL należy wysyłać na adres rozgłoszeniowy naszej sieci (broadcast ~ np. 192.168.1.225) a nie per konkretne urządzenie.

    W praktyce więc okazywało się, że po restarcie router'a / odpięciu urządzeń sieciowych lub końcowych od zasilania na dłuższą chwilę WoL przestawał funkcjonować ponieważ działa on w warstwie 2 modelu OSI a nie 3.

    Musielibyśmy ustawić na stałe w tablicy router'a konkretny wpis - niestety nie jest to możliwe do zrealizowania na konsumenckim routerze takim jak Funbox, a sam router nie posiada w tym przypadku żadnych dodatkowych możliwości które by to umożliwiały. Problemem jest tutaj przekazywanie pakietów broadcastowych przychodzących z internetu - router zwyczajnie nam taki pakiet wytnie. Poniekąd słusznie, dziwnie wyglądałoby to z punktu bezpieczeństwa gdyby ktoś z sieci zewnętrznej mógł wysyłać informacje do wszystkich komputerów za NAT'em.

    Najlepsze rozwiązanie jakie do tej pory wypracowałem to uruchomienie po stronie swojej domowej sieci zaraz za router'em serwera VPN (na urządzeniu pokroju Raspberry PI) które działa ciągle i pozwala w łatwy i prosty sposób dostać się do sieci wewnętrznej a stamtąd zupełnie bez przeszkód uruchamiać sobie komputery domowe wysyłając broadcast'em odpowiednie magiczne pakiety. Dodatkowym atutem jest możliwość zarządzania wszystkimi innymi urządzeniami znajdującymi się w sieci.

    napisane w Benchmark & Diagnostyka
  • RE: Fortnite 100% CPU a 3092MHz

    Nie sądzę aby o to chodziło ale jest jeden wpis na ten temat na tablicy Fortnite:
    https://trello.com/c/hZVlUMnf/1326-framerate-and-resolution-drops-in-v1241

    Status "in development" czyli może niedługo pojawi się jakiś fix właśnie odnośnie spadków klatek.
    Jeżeli masz jakieś programy w tle discord itd one też mają spore zapotrzebowanie na zasoby / spróbuj wyłączyć na czas gry.

    W międzyczasie oczywiście można próbować standardowo robić re-install gry / sterowników / ew. wyłączyć Nvidia V-Sync.

    napisane w Procesory i płyty główne
  • Wesołych świąt i szczęśliwego nowego roku!

    Ho, ho, ho! :santa: Zbliżają się święta w związku z czym pragnę Wam drodzy użytkownicy wraz z ekipą TcgForum.pl złożyć najserdeczniejsze życzenia, aby ten czas spędzić w gronie najbliższych, w spokojnej świątecznej atmosferze, pełni radości i nadziei (na realizacje) wszystkich planów w zbliżający się wielkimi krokami nadchodzącym roku 2020. Aby spełniły się wasze najskrytsze marzenia i abyście w życiu robili to co kochacie ~ bo to jest najważniejsze!

    Mówiąc krótko i zwięźle, Wesołych świąt!

    napisane w Ogłoszenia
  • RE: Gry młodości - w co graliście kiedyś?

    Czas odświeżyć sobie parę tytułów kto pamięta jeszcze Stunt GP, Kajko i Kokosz: Szkoła latania, Ice tower, Beyond Pearl Harbor: Pacific Warriors czy F1 2000?

    Było też kilka tytułów które były nieco słabsze ale z braku innych i w taki się grało: Crazy Chicken, Mój Brat Niedźwiedź, Sonic.
    Zresztą w ogóle były to fajne czasy kiedy gry kupowało się w gazetkach lub na kawałku tektury owiniętym folią do którego dołączona była płytka. Aby nie było też znowu tak kolorowo trafiły mi się także tytuły których nie mogłem uruchomić zwyczajnie ze względu na zbyt słaby komputer / problemy z nośnikiem: Rayman, World Racing i jeszcze jedna gra strategiczna o czołgach (niestety nie pamiętam tytułu).
    Pozostałe: 4x4 Evo 2, L.A.Rush / Overspeed czy nawet Worms'y (choć dość krótko) także dawały radę.

    Nie wspominając już kultowych produkcjach jak wczesne wersjach Fify, MotoGP czy Cs'a do którego wraca się latami ;)

    O dziwo Mario a także GTA poznałem stosunkowo późno, za to Tetris był ze mną od początku, powszechnie znany przeze mnie jako "gierka" w czasach w których o komputerze jeszcze nie słyszałem. Cóż z perspektywy czasu mogę jedynie powiedzieć, że teraz to już historia ;)

    napisane w Hydepark
  • Wprowadzenie do preprocesorów ~ SASS

    Cześć w dzisiejszym wpisie omówimy sobie jeden z preprocesorów jakim jest SASS.

    Co to jest SASS?

    :::

    Jeżeli wiesz jak działa HTML i CSS (czyli jak buduje się podstawowe strony internetowe), SASS poszerzy Ci nieco horyzonty, jest to preprocesor języka CSS czyli innymi słowy CSS na sterydach. Gdybyś jednak nie wiedział jak działają poprzednie dwie technologie wróć tu za jakiś czas gdy je poznasz, nie ma sensu zawracać sobie tym teraz głowy. Wracając, SASS rozszerza nieco sposób w jaki od dawna stylujemy elementy HTML'a o dodatkowe możliwości jak zmienne, pętle, warunki a nawet funkcje (rzeczy znane z normalnych języków programowania), a ponadto include'y, zagnieżdżone stylowanie i wiele więcej.

    :::

    Dobra wstęp mamy już za sobą, teraz czas na szybki przegląd - przede wszystkim istnieją dwie implementacje (jak wszystko w informatyce - nie ma jednej, jedynej słusznej drogi). Istnieje SCSS oraz SASS i takie też mamy rozszerzenia dla tych plików - różnią się praktycznie wyłącznie składnią i kilkoma mało istotnymi niuansami.

    Dla jasności w tym wprowadzeniu skupimy się głównie na SCSS z racji tego, że jest on bliższy temu co zapewne znacie czyli zwykłemu CSS'owi, składnia tego drugiego jest nieco bardziej przejrzysta ponieważ bazuje na wcięciach (nie klamrach) dlatego przypomina trochę pisanie w Python'ie.

    Aby zacząć praktycznie będziemy potrzebować wyłącznie VScode i dwóch dodatków Live Server oraz Live Sass Compiler. Instalacje dodatków jak i samego IDE pozostawiam Wam, nie ma chyba nic co mogłoby spędzić sen z powiek komukolwiek kto czyta ten tutorial.

    Myślę, że jest to najprostszy set-up bez kombinowania z skryptami w Node.js, Ruby czy dedykowanymi kompilatorami z GUI jak Koala i inne.

    Gdy to będziemy mieli tworzymy prosty plik HTML:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
    
        <link rel="stylesheet" href="style.css">
    </head>
    <body>
    </body>
    </html>
    

    VS ma wbudowanego Emmet'a więc wystarczy utworzyć plik index.html a następnie napisać napisać ! i nacisnąć Tab potem wystarczy dopisać w head link:css i zrobić dokładnie analogicznie (lub ręcznie klepać całość).

    Oczywiście jeszcze nie mamy naszego pliku style.css ale tym się na razie przejmujemy za chwile go zbudujemy.

    Tak więc pozostaje nam stworzyć przykładowy plik z rozszerzeniem .scss i/lub .sass (w naszym przypadku style.scss) i dodać do niego przykładową zawartość:

    $dark: #333;
    
    body {
        background-color: $dark;
    }
    
    

    Wszystkie słowa rozpoczynające się od $ oznaczają zmienne do których możemy przypisywać własne wartości.

    Następnie będąc (wciąż w widoku dokumentu) nacisnąć w prawym dolnym rogu:
    Run sass compile

    Dzięki temu uruchomi się konsola która uruchomi kompilator.
    Watcher wygenerował nam plik style.css i dalej będzie śledził jego zawartość.

    Ok, czas na drugi etap, przechodzimy do naszego index.html i PPM (prawy przycisk myszy) i odpalamy :

    PPM > Live Server

    Powinno nam to uruchomić prosty serwer developerski i uruchomić go w przeglądarce (domyślnie na porcie 5500). Gdyby tak się nie stało możecie ręcznie udać się pod adres http://localhost:5500/.

    To co powinniśmy zobaczyć to efekt naszego stylowania, jak pamiętamy był to ciemny kolor tła, i taki też jest:

    Dark background

    Zagnieżdżanie elementów

    Dobra wydaje mi się, że nie było to większym zaskoczeniem - czas na coś ciekawszego, jak wspomniałem SASS ma sporo dodatkowych opcji jednak dzięki następnej świat staje się łatwiejszy, wyżej przedstawiliśmy sobie zmienne to teraz czas na zagnieżdżenia.

    Sporym ułatwieniem jest możliwość zagnieżdżenia kodu wewnątrz samego siebie, załóżmy taki scenariusz - mamy przycisk który ma być podświetlany w chwili najechania na niego. Tworzymy sobie prosty kod w naszym html:

    <button>Witaj Świecie</button>
    

    Ok, aby to ostylować a robimy to w taki sposób:

    // Colors
    $dark: #333;
    $blue: #20b2f7;
    $white: #fff;
    $red: #ff4e4e;
    $red-dark: #d24646;
    
    // Fonts size
    $sm: 0.5em;
    $md: 1em;
    $lg: 2em;
    
    button {
    	background-color: $red;
    	border-radius: 25px;
    	border: none;
    	padding: $sm $md;
    	color: $white;
    
    	&:hover {
    		background-color: $red-dark;
    	}
    }
    

    Sam przycisk (z kodu powyżej) zostanie przerobiony do takiej postaci:
    Red button

    button {
    	background-color: #ff4e4e;
    	border-radius: 25px;
    	border: none;
    	padding: 0.5em  1em;
    	color: #fff;
    }
    
    button:hover {
    	background-color: #d24646;
    }
    

    Jak się domyślanie zbyt wiele zagnieżdżeń wcale nie ułatwia analizy kodu a w przypadku składni scss nawet utrudnia, dlatego starajmy się je mimo wszystko ograniczać, tutaj przykład kodu który poszedł zdecydowanie za daleko:

    #menu {
    	ul{
    		list-style: none;
    		
    		li {
    			float: left;
    				
    			a {
    				display: block;
    				padding: 10px 20px;
    				background-color: #777;
    			}
    		}
    	}
    }
    

    Modułowość

    Dobra ale wróćmy do poprzedniego przykładu dodaliśmy sobie sporo dodatkowych zbędnych zmiennych (kolory, rozmiary fontów), pewnie już rodzi się Wam pytanie po co? Z bardzo prostej przyczyny, po pierwsze aby unaocznić nieco bardziej ich wykorzystanie a po drugie aby pokazać teraz modularność SASS'a.

    Swoją drogą jest to częściowo funkcjonalność zwykłego CSS'a jednak działająca nieco inaczej. Przy zwykłych importach CSS tworzy kolejne zapytania sieciowe natomiast SASS bierze wszystkie wymienione (zazwyczaj w głównym pliku) moduły i łączy w jeden plik który następnie przetwarza.

    Stwórzmy sobie folder modules (choć nazwa nie ma tak naprawdę znaczenia) i dodajmy sobie dwa pliki, tak to wyglądać będzie w naszej drzewku katalogów:

    App

    • modules
      • _colors.scss
      • _fonts.scss
    • index.html
    • style.scss
    • style.css

    W przypadku modułów ważne aby na początku w nazwie było słowo kluczowe _ mówiące SASS'owi, że jest to część (która może być dołączana w innym miejscu).

    Jak się domyślacie w jednym pliku będą znajdować się nasze kolory a w drugim wszystko co związane z czcionkami, rozmiary itd. Utwórzmy więc na bazie tego co sobie dotychczas powiedzieliśmy oba pliki:

    modules/_colors.scss:

    // Colors
    $dark: #333;
    $blue: #20b2f7;
    $white: #fff;
    $red: #ff4e4e;
    $red-dark: #d24646;
    

    modules/_fonts.scss

    // Fonts size
    $sm: 0.5em;
    $md: 1em;
    $lg: 2em;
    

    Ostatnim co nam pozostaje aby całość zadziałała to zmodyfikowanie głównego pliku o dodatkowe dwa wpisy:

    style.scss:

    @import 'modules/colors';
    @import 'modules/fonts';
    
    button {
    	background-color: $red;
    	border-radius: 25px;
    	border: none;
    	padding: $sm $md;
    	color: $white;
    
    	&:hover {
    		background-color: $red-dark;
    	}
    }
    

    Importy nie muszą już zawierać _ ani rozszerzenia. Oczywiście można by wrzucić powyższy plik do tego samego folderu co moduły ale my tego nie zrobimy - ze względu na dodatkowe konfigurowanie pluginu (domyślnie generuje plik css w folderze w którym znajduje się plik źródłowy scss).

    Mixins, funkcje

    Kolejną opcją którą przetestujemy są tzw. mixins czyli tak bardziej po naszemu są to (prawie) funkcje. Prawie bo jeżeli spojrzymy na jakikolwiek język programowania to funkcja zazwyczaj zwraca jakąś (jedną) wartość natomiast mixin zawiera kilka wartości które bezpośrednio dodaje do kodu CSS. Oczywiście zwykłe funkcje także istnieją i możemy je uzyskać poprzez znacznik @function.

    Pewnie zastanawiasz gdzie w CSS mogę mieć potrzebę używania takich struktur? Odpowiedź - wszędzie gdzie musimy wykonywać powtarzalną się zbędną prace.

    Przejdźmy do praktyki, stworzymy sobie kolejne dwa moduły w naszym folderze:

    modules/_mixins.scss

    // Mixins
    @mixin transform($property) {
      -webkit-transform: $property;
      -ms-transform: $property;
      transform: $property;
    }
    

    Działa to w bardzo prosty sposób nasza mixin nazywa się transform a wszystko co posiada w nawiasie nazywamy parametrem, mamy więc jeden parametr $property który jest widoczny jako zmienna ale tylko w obrębie tego mixinu (czyli tam gdzie zaczynają i kończą się klamry).

    Nie jest to może bardzo wyszukany przykład ~ pochodzi z dokumentacji projektu ale bardzo dobrze pokazuje istotę działania w warunkach bojowych.

    Jeżeli robiliście już coś w CSS3 to zapisy wewnątrz tego mixinu nie powinny być dla Was obce, a nawet jeśli są to całe działanie w tym przypadku polega na dodaniu prefix'ow dla odpowiednich przeglądarek (natywnie) nie wspierających danej funkcjonalności (obecnie można by było użyć jakiegoś auto-prefixera ale to innym razem).

    modules/_functions.scss

    // Functions
    @function divide($val){
    	@return  $val  /  2;
    }
    

    Podobnie jeżeli robimy zwykłą funkcje divide tak jak powyżej której zadaniem jest wziąć parametr $val i podzielić na 2. Oczywiście parametr jest w tej chwili dowolny i nie musi być to wcale liczba (można to także bardziej doprecyzować).

    Dobra czas to wreszcie wypróbować wbijamy do naszego głównego pliku i go lekko przerabiamy:

    style.scss

    @import  'modules/functions';
    @import  'modules/mixins';
    @import  'modules/colors';
    @import  'modules/fonts';
      
    button {
    	background-color: $red;
    	border-radius: 25px;
    	border: none;
    	padding: $sm  $md;
    	margin: divide(25px);
    	color: $white;
    	transition: .5s all;
    
    	&:hover {
    		background-color: $red-dark;
    		@include transform(scale(1.1));
    	}
    }
    

    Pamiętamy o imporcie na samej górze, dodatkowo tutaj dla niepoznaki dorzuciłem jeszcze transition: .5s all aby całość nie była taka sztywna.

    Z pomocą @include użyliśmy stworzonego przez nas mixin'a a także własnej funkcji - ale co tak naprawdę się stało możemy zobaczyć dopiero w wynikowym CSS:

    button {
    	background-color: #ff4e4e;
    	border-radius: 25px;
    	border: none;
    	padding: 0.5em  1em;
    	margin: 12.5px;
    	color: #fff;
    	-webkit-transition: .5s  all;
    	transition: .5s  all;
    }
    
    button:hover {
    	background-color: #d24646;
    	-webkit-transform: scale(1.1);
    	transform: scale(1.1);
    }
    

    Tutaj uwidacznia się również pierwsza różnica między scss i sass, chcąc zrobić to samo w sass zamiast @mixins użylibyśmy przedrostka = przed nazwą funkcji a chcąc ją wywołać wystarczyłoby ponownie użyć przedrostka + oraz nazwa funkcji.

    Dziedziczenie, rozszerzanie

    Kolejną świetną sprawą jest dziedziczenie oraz rozszerzanie elementów, wyobraźcie sobie proste pudełko albo nawet dwa. Zróbmy je dodając w index.html:

    <div id="box1">Box 1</div>
    <div id="box2">Box 2</div>
    

    Oba z nich mają mieć taki sam cień wokół pudełka oraz podobne style dotyczące wyświetlanego wewnątrz tekstu, różnica w tym wypadku polega jedynie na zmianie koloru tła. Niech tych właściwości będzie nieco więcej, kopiowanie tego (już nie mówię nawet o przepisywaniu) to droga donikąd. Kompletnie nieoptymalnie i karkołomnie - kompletnie wbrew wszelkim regułą jak np. DRY (Don't repeat yourself ~ nie powtarzaj się!).

    Dlatego robimy to w ten sposób:

    @import 'modules/functions';
    @import 'modules/mixins';
    @import 'modules/colors';
    @import 'modules/fonts';
    
    %universal {
    	width: calc(1/6  *  100vw);
    	height: calc(1/4  *  100vh);
    	margin: 2rem;
    	font-size: $lg;
    	display: flex;
    	justify-content: center;
    	align-items: center;
    	color: $white;
    	box-shadow: 0  4px  8px  0  rgba(0, 0, 0, 0.2), 0  6px  20px  0  rgba(0, 0, 0, 0.19);
    }
    
    #box1 {
    	background-color: $dark;
    	@extend  %universal;
    }
    
    #box2 {
    	background-color: $blue;
    	@extend  %universal;
    }
    
    button {
    	background-color: $red;
    	border-radius: 25px;
    	border: none;
    	padding: $sm  $md;
    	margin: divide(25px);
    	color: $white;
    	transition: .5s  all;
    
    	&:hover {
    		background-color: $red-dark;
    		@include  transform(scale(1.1));
    	}
    }
    

    Dzięki czemu mamy jeden kod który daje nam dwa identyczne pudełka w różnych kolorach ~ czyż to nie jest lepsze? Co więcej jeżeli zrobimy taki element ogólnego przeznaczenia i nigdzie go nie załączymy przez @extend to nie zostanie on zupełnie uwzględniony w kodzie.

    Two boxes

    Sass wspiera także wykonywania zwykłych działań matematycznych, to samo co możecie zobaczyć tutaj powyżej natywnie w funkcji calc można zrobić zwyczajnie przy zwykłych właściwościach, przykład:

    margin: 50px + 23px;
    

    Poza tym dostępne są także instrukcje warunkowe czy pętle na tym, jednak SASS się nie kończą zachęcam do dalszego odkrywania możliwości jakie daje zaglądając na oficjalną stronę projektu,

    napisane w Kodowanie
  • Laptop Dell restartuje się po aktualizacji do Windows 10

    Ostatnimi czasy miałem możliwość aktualizować do Windows'a 10 większą liczbę komputerów biurowych marki Dell, w związku z tym raz trafiały się komputery stacjonarne a innym razem laptopy.
    Będąc już w temacie laptopów natrafiłem na jeden dość ciekawy laptop Dell Latitude z serii 5000 (dokładnego modelu niestety nie pamiętam - a żałuje, że nigdzie nie spisałem).

    Co ciekawe komputer ten po aktualizacji z Win 7 do Win 10 i zalogowaniu się na konto użytkownika samoczynnie się restartował (powtarzając to w nieskończoność). Dokładnie działo się to paręnaście / parędziesiąt sekund po uruchomieniu, zaraz po wyświetleniu konsoli (kto bardziej uważny ten wie, że podczas uruchamiania Windows 10 wyświetla się na kilka nanosekund wiersz poleceń a potem ginie).

    Na początku nie mając czasu na rozwiązywanie takich błahych problemów kolejno stawiałem wszystkie komputery od zera, wszystko konfigurując od podstaw, nieco żmudnie i całkowicie bez sensu (ale skuteczne - umożliwiając tym samym ludziom dalszą pracę, ponieważ gonił mnie czas) jednak w pewnym momencie stwierdziłem, że pasowało by coś z tym zrobić i dowiedzieć się dlaczego tak się dzieje.

    Robiąc trzeciego takiego samego laptopa, po prostu stwierdziłem koniec tego dobrego. Z racji tego, że na starcie było parę sekund zanim dell samoczynnie uruchamiał się od nowa i restartował w nieskończoność, było to wystarczające do tego aby błyskawicznie wejść w msconfig i uruchomić bezpieczny rozruch (z obsługą sieci). Oczywiście są inne sposoby na dostanie się do trybu awaryjnego (np. F8) - ale różnie to działa.

    O dziwo podczas bezpiecznego rozruchu (czy też inaczej trybu awaryjnego) laptop nie wykazywał żadnych nieprawidłowości i po prosu działał.
    Po dłużej chwili, wyłączając poszczególne usługi startujące zaraz po uruchomieniu systemu doszedłem do tego, co jest winowajcą całego zamieszania a jest nim ~ Unified Wireless Application od Qualcomma.

    Poza tym aktualizacja Windows 10 usunęła dwa programy: Intel USB 3.0 eXtensible Host oraz Dell Backup and Recovery co akurat na dobre wyszło bo nie jestem fanem autorskich rozwiązań do tworzenia kopii zapasowych - niemniej wydłużyło to sztucznie całą analizę problemu (zawsze to kolejne dwa programy mogły powodować nieoczekiwane problemy).

    Mam nadzieje, że dzięki temu opisowi osoby mające podobne problemy będą mogły odetchnąć z ulgą. Rozwiązanie to oczywiście wyłączenie wyżej wymienionego programu. Pytanie czy wy także spotkaliście się z podobnym problemem ? Koniecznie dajcie znać w komentarzu.

    napisane w Sterowniki
  • Styl Vertigo [SMF2]

    Cześć!
    Ostatni już z serii przeróbek styl który edytowałem lata temu a który wciąż czekał na re-upload.
    Nazywa się Vertigo choć w oryginale jest to dobrze znany wszystkim Vertex, prosty i stonowany styl.

    Autorem oryginału jest MLM z forum VisualPulse.

    Screen'y:

    Board view

    Admin view

    Post view

    Chciałbym zwrócić uwagę, że nie jestem autorem oryginału ~ styl stworzył MLM!

    Info:

    • Wersja dla SMF: 2.0.* (testowane na ~ 2.0.15)

    Uwagi:

    • Styl archiwalny, brak dalszych aktualizacji / łatania błędów.
    • Dodatkowo dostępne tłumaczenia

    Instalacja:

    1. Logujemy się do ACP naszego forum
    2. Przechodzimy do PA/Konfiguracja/Zarządzanie stylami/Zarządzaj i instaluj, oraz wskazujemy pobraną wcześniej paczkę Vertigo.zip i wybieramy Instaluj!.
    3. Następnie z listy dostępnych stylów wybieramy Vertigo i zapisujemy zmiany.

    Link:

    napisane w Prace użytkowników
  • Przesyłanie plików pomiędzy dwoma urządzeniami z pomocą sieci

    Przesyłanie plików pomiędzy dwoma urządzeniami z pomocą sieci

    Zastanawialiście się kiedyś czy jest możliwe przesyłanie plików bezpośrednio z komputera do komputera z użyciem zwykłej skrętki internetowej (popularnego zwanej kablem sieciowym)?

    Oczywiście jest to możliwe, natomiast w tym poradniku pokaże Wam jak w prosty sposób wykorzystując ten fakt możecie przesyłać ogromne pliki pomiędzy dwoma komputerami nie tracąc na transferze. Jedynym ograniczeniem w tym przypadku będą dyski obu urządzeń i karty sieciowe ograniczające prędkość - pomijając ten element będzie to niesamowicie wydajne łącze (lepsze niż ręczne zgrywanie plików na i z pendrive'a).

    Przede wszystkim należy sobie zdawać sprawę, że najlepszym kablem do tego typu połączenia będzie kabel skrosowany (crossover) czyli taki który z jednej strony jest zakończony standardem EIA/TIA 568A a z drugiej EIA/TIA 568B. Ale i bez tej wiedzy możemy sobie poradzić wystarczy znaleźć odpowiedni kabel ~ przykład: klik

    Kolejnym etapem będzie połączenie obu urządzeń kablem i odpowiednia konfiguracja, w zależności od systemu:

    Windows -> Windows

    W ustawieniach karty sieciowej (Właściwości > IPv4) na jednym z komputerów należy ustawić IP oraz maskę:
    Change IP/Mask Windows

    • PC1:
      IP: 192.168.1.1
      MASK: 255.255.255.0

    Analogicznie robimy na drugim ustawiając inny (wolny adres - w naszym przypadku 192.168.1.2)

    • PC2:
      IP: 192.168.1.2
      MASK: 255.255.255.0

    W razie problemów należy sprawdzić opcje udostępniania oraz odnajdywania sieci i katalogów sieciowych (Centrum sieci i udostępniania > Zmień zaawansowane ustawienia udostępniania).

    Share options

    Wszystko opcje ustawiamy na włączone przy wpisie obok którego pisze "obecny profil" - w naszym przypadku Publiczny choć wcale taki nie musi być. Ostatnią opcję (udostępnianie chronione hasłem wyłączamy).

    Ważne też aby oba komputery pracowały w tej samej grupie roboczej - najlepiej domyślnej WORKGROUP.

    Na koniec pozostaje stworzyć folder (np. Test ) na maszynie źródłowej który chcemy udostępnić drugiemu urządzeniu i w Właściwościach zmienić uprawniania do tego katalogu katalogu: (PPM > Właściwości, zakładka Udostępnianie)

    Directory share option

    Wybieramy "Udostępnij..." i dodajemy użytkownika "Wszyscy" oraz zwiększamy mu zakres uprawnień na "Odczyt/zapis".

    Oczywiście można bardziej zakroić uprawnienia czy też autoryzować wybranego użytkownika do z góry określonego folderu jednak do prostego przesyłania komputerów (offline) ta metoda jest najszybsza i najmniej problematyczna (po wszystkim należy pamiętać o wyłączeniu udostępniania!).

    Potem pozostaje jeszcze znaleźć nasz zasób poprzez zakładkę Sieć w eksploratorze windows (pod warunkiem że nazwy komputerów są różne) na drugim urządzeniu czy też wciskając odpowiednią kombinacje (Ctrl + R) oraz podać ścieżkę do katalogu sieciowego \192.168.1.X\Test (X podmieniamy na adres komputera źródłowego, Test to nazwa udostępnionego katalogu).

    Po całym procesie należy ponownie zmienić ustawienia kart sieciowych na automatyczne (jeżeli takie były).

    Windows -> Linux

    Tutaj sprawa wygląda dużo prościej na Linux'ie (Ubuntu, debian etc.) przechodzimy do Ustawień sieci przewodowej (i/lub bezprzewodowej) i ustawiamy tryb podstawowej karty sieciowej na Link-Local.

    Linux network link-local

    Drugi komputer jeżeli jest pod kontrolą Windows i był wcześniej odpowiednio skonfigurowany (automatycznie pobierany adres IP/maska) to powinien od razu załapać.

    Potem pozostaje konfiguracja Samby na linux'ie - no chyba, że korzystacie z Desktop'a to sprawa z głowy tworzymy katalog o dowolnej nazwie a następnie PPM -> Opcje współdzielenia i ustawiamy nazwę oraz zgadzamy się na Dostęp dla gości oraz Zezwalanie innym na zapisywanie oraz usuwanie plików...

    Share directory linux

    W przypadku ewentualnego komunikatu o uprawnienia zatwierdzamy go i gotowe. Oczywiście wszystkie pliki w przesłane w ten sposób otrzymają uprawnienia nobody oraz nogroup, należy je zmienić chcąc zrobić z nimi cokolwiek pod linux'em (wewnątrz katalogu z terminala wydajemy polecenie sudo chown -R $USER:$USER *).

    Jeżeli chcemy zrobić udostępnianie w drugą stronę robimy udostępnianie dokładnie tak jak w przykładzie Windows -> Windows a na maszynie linux'a możemy znaleźć nasz udział w zakładce Inne położenie jako "smb://192.168.1.X" (X podmieniamy na adres komputera źródłowego).

    Linux -> Linux

    Ostatnia już możliwość, choć zdawałoby się, że to Windows jest najbardziej user-friendly to w tym przypadku nie do końca tak jest. Aby dokonać udostępniania plików bezpośrednio z maszyny pod kontrolą Ubuntu etc. do drugiej takie samej należy jedynie zmienić ustawienia obu kart sieciowych na wspomniany wyżej Link-local.

    Link local ubuntu

    Dzięki temu oba komputery natychmiast po podłączeniu otrzymają adres'y z puli 169.254.X.X. W przypadku problemów należy wyłączyć i włączyć karty sieciowe (tak aby pobrały nowy adres). Sprawdzić to możemy albo w aplecie sieci:

    IP show
    albo z pomocą terminala Ctrl + Alt + T (gnome-terminal) oraz polecenie ifconfig:

    Terminal IP show

    Potem pozostaje już udostępnić zasób (np. samby) i przejść do Inne lokalizacje oraz wpisać odpowiedni adres drugiego z komputerów (w postaci smb://169.254.X.X).

    Można też tak jak w przypadku Windows'ow ustawic statyczny adres na jednej i drugiej maszynie z tą samą maską. Ponadto w przypadku linux'a mamy szereg innych metod transmisji danych jak konsolowy SCP czy nawet postawienie własnego serwera FTP/SFTP.

    MAC -> MAC

    W przypadku urządzeń z nadgryzionym jabłkiem dużo lepiej jest użyć dedykowanego kabla tzw. FireWire dzięki któremu transfer dużych partii danych będzie przebiegał szybko (porównywalnie z przesyłaniem przez LAN) i sprawnie a samo udostępnianie będzie natychmiastowe.

    Gdyby jednak chcieć skonfigurować komputery do przesyłania danych przez sieć powinno to wyglądać podobnie jak w przypadku linux'a.

    To tyle, mam nadzieje, że pomogłem - w razie ewentualnych pytań / problemów zapraszam do sekcji komentarzy poniżej.

    napisane w Internet