|
311 | 311 | margin-left: auto; |
312 | 312 | margin-right: auto; |
313 | 313 | } |
| 314 | + .hacker-lang-section h3 { |
| 315 | + font-size: 24px; |
| 316 | + margin: 20px 0 10px; |
| 317 | + color: #FFFFFF; |
| 318 | + } |
| 319 | + .hacker-lang-section ol, .hacker-lang-section ul { |
| 320 | + text-align: left; |
| 321 | + max-width: 800px; |
| 322 | + margin: 0 auto 20px; |
| 323 | + color: #B0B0B0; |
| 324 | + } |
| 325 | + .hacker-lang-section ol li, .hacker-lang-section ul li { |
| 326 | + margin-bottom: 10px; |
| 327 | + } |
| 328 | + .hacker-lang-section pre { |
| 329 | + background-color: #1A1A1A; |
| 330 | + padding: 10px; |
| 331 | + border-radius: 5px; |
| 332 | + font-family: 'Courier New', Courier, monospace; |
| 333 | + color: #B0B0B0; |
| 334 | + text-align: left; |
| 335 | + max-width: 800px; |
| 336 | + margin: 0 auto 20px; |
| 337 | + overflow-x: auto; |
| 338 | + } |
| 339 | + .tabs-container { |
| 340 | + display: flex; |
| 341 | + max-width: 800px; |
| 342 | + margin: 0 auto; |
| 343 | + background-color: #1A1A1A; |
| 344 | + border-radius: 8px; |
| 345 | + overflow: hidden; |
| 346 | + box-shadow: 0 2px 8px rgba(0,0,0,0.3); |
| 347 | + } |
| 348 | + .tab-menu { |
| 349 | + width: 200px; |
| 350 | + background-color: #121212; |
| 351 | + padding: 20px; |
| 352 | + border-right: 1px solid #2F3A44; |
| 353 | + } |
| 354 | + .tab-menu ul { |
| 355 | + list-style: none; |
| 356 | + } |
| 357 | + .tab-menu li { |
| 358 | + margin-bottom: 15px; |
| 359 | + cursor: pointer; |
| 360 | + padding: 10px; |
| 361 | + border-radius: 5px; |
| 362 | + transition: background-color 0.3s, color 0.3s; |
| 363 | + color: #B0B0B0; |
| 364 | + font-weight: bold; |
| 365 | + } |
| 366 | + .tab-menu li:hover { |
| 367 | + background-color: #2F3A44; |
| 368 | + color: #FFFFFF; |
| 369 | + } |
| 370 | + .tab-menu li.active { |
| 371 | + background-color: #2F3A44; |
| 372 | + color: #FFFFFF; |
| 373 | + } |
| 374 | + .tab-content { |
| 375 | + flex: 1; |
| 376 | + padding: 20px; |
| 377 | + text-align: left; |
| 378 | + } |
| 379 | + .tab-pane { |
| 380 | + display: none; |
| 381 | + } |
| 382 | + .tab-pane.active { |
| 383 | + display: block; |
| 384 | + } |
| 385 | + .tab-pane h3 { |
| 386 | + font-size: 24px; |
| 387 | + margin-bottom: 15px; |
| 388 | + color: #FFFFFF; |
| 389 | + } |
| 390 | + .tab-pane p, .tab-pane ul, .tab-pane ol { |
| 391 | + color: #B0B0B0; |
| 392 | + } |
| 393 | + .tab-pane img { |
| 394 | + max-width: 100%; |
| 395 | + border-radius: 10px; |
| 396 | + margin-top: 20px; |
| 397 | + } |
314 | 398 | .hacker-kernel-section { |
315 | 399 | max-width: 1200px; |
316 | 400 | margin: 50px auto; |
|
384 | 468 | .hacker-lang-section p { |
385 | 469 | font-size: 16px; |
386 | 470 | } |
| 471 | + .tabs-container { |
| 472 | + flex-direction: column; |
| 473 | + } |
| 474 | + .tab-menu { |
| 475 | + width: 100%; |
| 476 | + border-right: none; |
| 477 | + border-bottom: 1px solid #2F3A44; |
| 478 | + } |
| 479 | + .tab-menu ul { |
| 480 | + display: flex; |
| 481 | + justify-content: space-around; |
| 482 | + } |
| 483 | + .tab-menu li { |
| 484 | + margin-bottom: 0; |
| 485 | + } |
387 | 486 | .hacker-kernel-section { |
388 | 487 | padding: 20px; |
389 | 488 | } |
|
460 | 559 | gamingPs[0].innerHTML = 'Gaming on Windows games on HackerOS is possible thanks to a tool called Proton (90% of games work). Unfortunately, some online games, e.g., Fortnite, are blocked on Linux HackerOS. You can find more information on: <a href="https://www.protondb.com" target="_blank" class="protondb">ProtonDB</a>, <a href="https://areweanticheatyet.com" target="_blank" class="anticheat">Are We Anti-Cheat Yet?</a>.'; |
461 | 560 | gamingPs[1].textContent = 'By default, it uses the XanMod kernel.'; |
462 | 561 | gamingPs[2].innerHTML = 'You can see how HackerOS handles games: <a href="https://www.youtube.com/channel/UCwYT5jqUhZHoRhNKOrjKTrQ" target="_blank" class="youtube">YouTube</a>.'; |
463 | | - document.querySelector('.hacker-lang-section h2').textContent = 'Hacker Programming Language'; |
464 | | - document.querySelector('.hacker-lang-section p').textContent = 'HackerOS features its own scripting programming language called Hacker. To use this tool, simply run the command "hackerc".'; |
| 562 | + document.querySelector('.hacker-lang-section h2').textContent = 'Programming Languages HackerOS'; |
| 563 | + // Update tab menu and content for English |
| 564 | + document.querySelectorAll('.tab-menu li')[0].textContent = 'Hacker Lang'; |
| 565 | + document.querySelectorAll('.tab-menu li')[1].textContent = 'HackerScript'; |
| 566 | + const tabPanes = document.querySelectorAll('.tab-pane'); |
| 567 | + tabPanes[0].querySelector('h3').textContent = 'Hacker Lang Programming Language'; |
| 568 | + tabPanes[0].querySelector('p:first-of-type').textContent = 'Syntax description:'; |
| 569 | + // Similarly update other texts in tabPanes[0] and tabPanes[1] for English if needed |
465 | 570 | document.querySelector('.hacker-kernel-section h2').textContent = 'Hacker Kernel'; |
466 | 571 | const kernelPs = document.querySelectorAll('.hacker-kernel-section p'); |
467 | 572 | kernelPs[0].innerHTML = 'Do you want to develop the hacker kernel? Report to gmail hackeros068@gmail.com or to <a href="https://github.com/HackerOS-Linux-System/HackerOS-Website/issues">issues</a> or <a href="https://github.com/HackerOS-Linux-System/HackerOS-Website/discussions">discussions</a> (apply if you want to actively develop this project)'; |
|
476 | 581 | }); |
477 | 582 | }); |
478 | 583 | }); |
| 584 | + // Tab switching logic |
| 585 | + const tabLinks = document.querySelectorAll('.tab-link'); |
| 586 | + const tabPanes = document.querySelectorAll('.tab-pane'); |
| 587 | + tabLinks.forEach(link => { |
| 588 | + link.addEventListener('click', () => { |
| 589 | + tabLinks.forEach(l => l.classList.remove('active')); |
| 590 | + link.classList.add('active'); |
| 591 | + tabPanes.forEach(p => p.classList.remove('active')); |
| 592 | + document.getElementById(link.dataset.tab).classList.add('active'); |
| 593 | + }); |
| 594 | + }); |
479 | 595 | }); |
480 | 596 | </script> |
481 | 597 | </head> |
@@ -597,9 +713,132 @@ <h2>Granie na HackerOS</h2> |
597 | 713 | </div> |
598 | 714 | </section> |
599 | 715 | <section class="hacker-lang-section"> |
600 | | - <h2>Język Programowania Hacker</h2> |
601 | | - <p>HackerOS posiada własny skryptowy język programowania o nazwie Hacker. Aby korzystać z tego narzędzia, użyj komendy <span style="font-family: 'Courier New', Courier, monospace;">hackerc</span> lub dla większych projektów <span style="font-family: 'Courier New', Courier, monospace;">hli</span> oraz do instalacji bibliotek <span style="font-family: 'Courier New', Courier, monospace;">bytes</span>.</p> |
602 | | - <img src="hacker-lang-screenshot.png" alt="Hacker Language Screenshot"> |
| 716 | + <h2>Języki programowania HackerOS</h2> |
| 717 | + <div class="tabs-container"> |
| 718 | + <div class="tab-menu"> |
| 719 | + <ul> |
| 720 | + <li class="tab-link active" data-tab="hacker-lang">Hacker Lang</li> |
| 721 | + <li class="tab-link" data-tab="hacker-script">HackerScript</li> |
| 722 | + </ul> |
| 723 | + </div> |
| 724 | + <div class="tab-content"> |
| 725 | + <div id="hacker-lang" class="tab-pane active"> |
| 726 | + <h3>Język Programowania Hacker Lang</h3> |
| 727 | + <p>Opis składni:</p> |
| 728 | + <ol> |
| 729 | + <li>Podstawowe operatory (Prefiksy)<br>Każda linia zaczyna się od symbolu definiującego jej przeznaczenie: |
| 730 | + <ul> |
| 731 | + <li>* > – Zwykła komenda systemowa.</li> |
| 732 | + <li>* >> – Komenda z obsługą zmiennych.</li> |
| 733 | + <li>* >>> – Komenda wykonywana jako oddzielny plik/proces.</li> |
| 734 | + <li>* & – Uruchomienie komendy w tle (background).</li> |
| 735 | + <li>* ^ – (Modyfikator) Dodany przed operatorem (np. ^>) wymusza użycie sudo.</li> |
| 736 | + <li>* !! – Blokowy komentarz (przełącznik: włącz/wyłącz).</li> |
| 737 | + <li>* \\ – Ładowanie pluginu.</li> |
| 738 | + </ul> |
| 739 | + </li> |
| 740 | + <li>Zarządzanie zmiennymi i typowanie<br>Język obsługuje typy: int, bool, str, list (składnia [a,b]), dict (składnia {k:v}). |
| 741 | + <ul> |
| 742 | + <li>* @nazwa:typ = wartość – Zmienna globalna.</li> |
| 743 | + <li>* $nazwa:typ = wartość – Zmienna lokalna.</li> |
| 744 | + <li>* $nazwa – Odwołanie do zmiennej wewnątrz komend lub funkcji.</li> |
| 745 | + </ul> |
| 746 | + </li> |
| 747 | + <li>Funkcje i Biblioteki |
| 748 | + <ul> |
| 749 | + <li>* :nazwa(param:typ=default) – Definicja funkcji.</li> |
| 750 | + <li>* : – Zakończenie bloku funkcji.</li> |
| 751 | + <li>* .nazwa(argumenty) – Wywołanie funkcji.</li> |
| 752 | + <li>* #prefiks:nazwa – Import bibliotek zewnętrznych:</li> |
| 753 | + <li> * #rust:..., #python:..., #java:... – Biblioteki językowe.</li> |
| 754 | + <li> * #bytes:... – Inne skrypty Hacker Lang (szuka pliku main.hacker).</li> |
| 755 | + <li>* // – Deklaracja zależności systemowych (system deps).</li> |
| 756 | + </ul> |
| 757 | + </li> |
| 758 | + <li>Struktury sterujące<br>Język mapuje specyficzne skróty na konstrukcje powłoki: |
| 759 | + <ul> |
| 760 | + <li>* Pętle: =liczba > komenda (wykonuje komendę określoną liczbę razy).</li> |
| 761 | + <li>* Warunki: ?warunek > komenda (generuje if warunek; then komenda; fi).</li> |
| 762 | + <li>* Foreach: %lista > komenda (iteracja po elementach listy).</li> |
| 763 | + <li>* Try-Catch: T> try C> catch F> finally (obsługa błędów wykonania).</li> |
| 764 | + </ul> |
| 765 | + </li> |
| 766 | + <li>Konfiguracja |
| 767 | + <ul> |
| 768 | + <li>* [ oraz ] – Sekcja konfiguracyjna (klucz = wartość), parsująca ustawienia do słownika config_data.</li> |
| 769 | + </ul> |
| 770 | + </li> |
| 771 | + </ol> |
| 772 | + <p>Komendy/narzędzia CLI:</p> |
| 773 | + <ul> |
| 774 | + <li>hl - główne narzędzie Hacker Lang - kompiluj/uruchamiaj programy w .hk lub .hacker</li> |
| 775 | + <li>hli - interfejs dla narzędzia hl - zainstaluj za pomocą hacker unpack hl-utils</li> |
| 776 | + <li>hlh - informacje o narzędziach cli + informacje o Hacker Lang</li> |
| 777 | + <li>bytes - manager bibliotek dla Hacker Lang</li> |
| 778 | + </ul> |
| 779 | + <img src="hacker-lang-screenshot.png" alt="Hacker Lang Screenshot"> |
| 780 | + </div> |
| 781 | + <div id="hacker-script" class="tab-pane"> |
| 782 | + <h3>Język programowania HackerScript</h3> |
| 783 | + <p>Przykładowa składnia:</p> |
| 784 | + <ol> |
| 785 | + <li>Struktura i Importy |
| 786 | + <ul> |
| 787 | + <li>* Dyrektywy: --- automatic --- (domyślne zarządzanie pamięcią) lub --- manual ---.</li> |
| 788 | + <li>* Importy: * import <c:stdio> (biblioteki systemowe C).</li> |
| 789 | + <li> * import <virus:nmap> (lokalne moduły .hcs).</li> |
| 790 | + </ul> |
| 791 | + </li> |
| 792 | + <li>Zmienne i Typy |
| 793 | + <ul> |
| 794 | + <li>* Typowanie: Dynamiczne/Inferred (kompilator sam zgaduje typy: int, char*, Array, struct).</li> |
| 795 | + <li>* Literały: * tekst = "Hacker" (Stringi).</li> |
| 796 | + <li> * liczba = 100 (Integery).</li> |
| 797 | + <li> * lista = ["a", "b"] (Tablice).</li> |
| 798 | + <li>* Interpolacja: "Wartość: {zmienna}" (Automatyczne formatowanie tekstu).</li> |
| 799 | + </ul> |
| 800 | + </li> |
| 801 | + <li>Programowanie Obiektowe (OOP) |
| 802 | + <ul> |
| 803 | + <li>* Klasy: Definiowane za pomocą class Nazwa [ ... ].</li> |
| 804 | + <li>* Metody: Pierwszy parametr to zawsze self.</li> |
| 805 | + <li>* Tworzenie obiektów: obj = new Klasa().</li> |
| 806 | + <li>* Dostęp do pól: self.pole = wartość (Działa jak struktury w C).</li> |
| 807 | + </ul> |
| 808 | + </li> |
| 809 | + <li>Kontrola Przepływu |
| 810 | + <ul> |
| 811 | + <li>* Bloki kodu: Zawsze w nawiasach kwadratowych [...].</li> |
| 812 | + <li>* Instrukcje warunkowe: if expr [...] else if expr [...] else [...].</li> |
| 813 | + <li>* Pętle: for element in kolekcja [...] (Iteracja po tablicach).</li> |
| 814 | + </ul> |
| 815 | + </li> |
| 816 | + <li>Funkcje i System |
| 817 | + <ul> |
| 818 | + <li>* Definicja: func nazwa(paramy) [ return wartość ].</li> |
| 819 | + <li>* Funkcja Main: func main(args) [...] – punkt startowy programu.</li> |
| 820 | + <li>* Wbudowane:</li> |
| 821 | + <li> * log "msg" – Wypisywanie do konsoli.</li> |
| 822 | + <li> * curl_get(url) – Żądania HTTP.</li> |
| 823 | + <li> * allocate(size) / deallocate(ptr) – Zarządzanie pamięcią.</li> |
| 824 | + </ul> |
| 825 | + </li> |
| 826 | + </ol> |
| 827 | + <p>Narzędzia/komendy:</p> |
| 828 | + <ul> |
| 829 | + <li>virus - kompiluj programy napisane w .hcs do binarki (wszystkie narzędzia hackerscript możesz zainstalować za pomocą hacker unpack hackerscript)</li> |
| 830 | + </ul> |
| 831 | + <p>Jakie repozytoria biblioteki obsługuje HackerScript:</p> |
| 832 | + <ul> |
| 833 | + <li>virus - zamknięte repo zwykły użytkownik nie może dawać tu własnych bibliotek jest to repo zarządzane przez wybranych ludzi</li> |
| 834 | + <li>vira - otwarte repo każdy użytkownik może tu dawać biblioteki</li> |
| 835 | + <li>HackerScript obsługuje również biblioteki c i c++</li> |
| 836 | + </ul> |
| 837 | + <p>Jakie pliki posiada HackerOS - do konfiguracji projektu używaj pliku Virus.hcs, gdzie znajdę kod źródłowy HackerScript w /cmd, jaki format plików ma HackerScript ? Posiada .hcs co oznacza ten skrót ? Hacker C Script</p> |
| 838 | + <img src="hackerscript-screenshot.png" alt="HackerScript Screenshot"> |
| 839 | + </div> |
| 840 | + </div> |
| 841 | + </div> |
603 | 842 | </section> |
604 | 843 | <section class="hacker-kernel-section"> |
605 | 844 | <h2>Hacker Kernel</h2> |
|
0 commit comments