Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - jano6

Stran: [1] 2 3 4
1
Vývoj / Re:Je Zig jazyk buducnosti?
« kdy: 11. 11. 2022, 10:21:38 »
Preco sa pytam... s Rustu som bol nadseny a pouzival som ho jeden a pol roka aj na vetsich veciach, myslel som si, ze to bude Go-killer. Ale moje nadsenie opadlo. Tak hladam nieco ine, lepsie, v com sa aj da realne programovat.

Ono skor Go-killer je C# a net 6/7 (miliardukrat lepsi jazyk a richlejsi runtime ako Go a 7-cka aj mirene vykonejsia ako Rust (v grpc)).

C#/F# combo sú momentálne moje top jazyky. (C# v posledných rokoch drasticky vylepšil svoju syntax, F# bolo
famózne od začiatku.) Napriek tomu, že syntaxou a svojimi možnosťami ďaleko prekračujú Go, Go je v niektorých
prípadoch pre mňa vhodnejší jazyk.

Go je ideálny jazyk pre command linu a pre tých, čo programujú network. C# doteraz nemá cmd parser, chystá sa
System.CommandLine, zatiaľ to do 7.0 nestihli dať. Go má flags a výborný package Cobra. Go je taký hackerský jazyk.
Trebárs pre porovnanie chcete si pingovať s ICMP. C# má Ping classu s určitími limitujúcimi možnosťami, Go má
celú sadu funkcií pre ICMP: https://pkg.go.dev/golang.org/x/net/icmp.
Go umožňuje ísť oveľa viac do hĺbky a pohrať sa s úplnými detailami. V tomto nemá konkurenciu.

Je úplne v pohode naprogramovať si cmd tool v C#, avšak ak ten tool plánujem pre tisícky ľudí, tak je Go vhodnejšie
pretože výsledná binárka je zlomkom veľkosti .NET binárky.

Go má svoje pevné miesto medzi programovacími jazykmi. A syntaktické možnosti jazyka nie sú všetko. Zásadne sú
tiež knižnice a tooling.

2
Vývoj / Re:Zaškrtávací políčka v Tkinteru
« kdy: 15. 09. 2022, 14:36:03 »
Tu je funkčný program pre check button:

Kód: [Vybrat]
#!/usr/bin/python

from tkinter import Tk, Frame, Checkbutton
from tkinter import BooleanVar, BOTH

class Example(Frame):

    def __init__(self):
        super().__init__()

        self.initUI()


    def initUI(self):

        self.master.title("Checkbutton")

        self.pack(fill=BOTH, expand=True)
        self.var = BooleanVar()

        cb = Checkbutton(self, text="Show title",
            variable=self.var, command=self.onClick)
        cb.select()
        cb.place(x=50, y=50)


    def onClick(self):

        if self.var.get() == True:
            self.master.title("Checkbutton")
        else:
            self.master.title("")


def main():

    root = Tk()
    root.geometry("250x150+300+300")
    app = Example()
    root.mainloop()


if __name__ == '__main__':
    main()

3
Vývoj / Re:Jaky jazyk na male portabilni programy
« kdy: 15. 09. 2022, 14:31:36 »
Citace
Po C# mozes prejst na Javu.
...

Tak to zasa hádam nie. Odtiaľ, potiaľ. Keď Swing alebo OpenJFX, tak potom s Kotlinom.


4
Vývoj / Re:Trendy v PHP
« kdy: 19. 08. 2022, 11:45:53 »
Add Symfony. Mne teda hrozne vadí ideologicácia tohto projektu. Tvoria ho zrejme ultraleft freeks. Teraz tam pchajú heslá o Ukrajine, ale o Donbasse, Yemene, Lýbii či Afganistane nič.

Predtým to bolo black live matters. Dokonca zo svojich stickerov tam čo majú odstraňovali belošské tváre. Vo svojej posadnutosti došli tak ďaleko, že majú nejakú grupu ktorá monitoruje správanie (zrejme najmä chlapov) počas konferencíí, či sa nevhodne nesprávajú. Potom o tom dávajú reporty. No a tak. Čistý úlet.

Majte si svoje vyhranejé názory, aké chcete, ale nepchajte ich do IT prostredia. Pre toto Symfony nikdy viac.

5
Tak tu máme v tom evidentne poriadny hokej.

Táto slučka vyzerá na prvý pohľad ako problém:

Kód: [Vybrat]
while True:
content = await page.content()
soup = BeautifulSoup(content, 'html.parser')
data = await parse(data, soup, sport)
asyncio.sleep(1)

Vytvárať vlastné slučky pomocou while True je big, big no.
Asynchrónne programovanie je založené na slučke udalostí, ktorú však vytvorí
asyncio modul.

Citace
asyncio.run function runs the passed coroutine, taking care of managing the
asyncio event loop and finalizing asynchronous generators.

Takmer určite tvoj problém nespôsobil Puppeteer, ale chyba v tvojom programe.

Mne prijde, že sa snažíš vytvoriť pravdepodobne nejaký monitorovací skript.
Ak je to tak, tak si najpr treba vytvoriť skript, ktorý vykoná požadovaný task
a až potom neskôr riešiť monitoring.

Add puppeteer. Headless browser použiješ vtedy, ak sa potrebuješ dostať
za JS bránu, napr. za prihlasovacie okno. Pre ostatné prípady sa bežne
používajú http clienty. Python má httpx, ktorý zvládne aj async programy.

Kód: [Vybrat]
#!/usr/bin/python

import httpx
import asyncio
from bs4 import BeautifulSoup

async def get_async(url):
    async with httpx.AsyncClient() as client:
        return await client.get(url)

urls = ['http://webcode.me', 'https://httpbin.org',
    'https://something.com', 'https://stackoverflow.com',
    'https://github.com']

async def launch():
    resps = await asyncio.gather(*map(get_async, urls))
    data = [resp.text for resp in resps]

    for content in data:
       soup = BeautifulSoup(content, 'lxml')
       print(soup.title)

asyncio.run(launch())

Príklad asynchrónne stiahne HTML kód z viacerých stránok, a výpíše ich
titulky.

Čo je ale vlastne tvoja požiadavka, o čo sa snažíš? Pojem webscrawling
neexistuje, máme web scraping a web crawling. Web scraping je sťahovanie dát
z internetu, trebárs ceny leteniek k danému dňu. Web crawling je to, čo robí
Google.


6
Vývoj / Re:Jaký jazyk bych se měl učit?
« kdy: 01. 06. 2022, 22:40:30 »
Citace
Tak když koukám na F# tak cítím silnej zápach Visual Basicu :) nemůžu si pomoct :D

Visual Basic a F#? Nič iné ich nespája, len že sú .NET jazyky.

Citace
Když to porovnám se Scalou, Rustem, nebo i tím starým Haskellem, tak je C# takovej ubožáček konzervativní.

Problém je, keď porovnávame športové auto s rodinným autom. Úlohou rodinného auta je mať priestor, kam sa všetky decká zmestia, aby bolo bezpečné a odolné. Nie aby jazdilo rýchlo a bolo elegantné.
C# je podľa mňa výborný business jazyk. A porovnávať ho treba s podobnými business jazykmi, do ktorých by som osobne zahrnul Javu, C++ a asi aj Kotlin. Ja napríkad veľmi kvitujem v posledných verziách C# automatické importy, koniec nutnosti odsadzovania pri menných priestoroch, rekordy (ktoré aj fungujú) a hlavne top-level statements, teda možnosť tvoriť kód bez nutnosti public classs/static void Main. Každým rokom prídu nejaké vychytávky, chlapci sa fakt snažia.

Citace
Kód: [Vybrat]
var xs = new List<string>();

Ja to takto tiež preferujem.

Kód: [Vybrat]
Revenue[] revenues =
{
    new (1, "Q1", 2340),
    new (2, "Q1", 1200),
    new (3, "Q1", 980),
    new (4, "Q2", 340),
    new (5, "Q2", 780),
    new (6, "Q3", 2010),
    new (7, "Q3", 3370),
    new (8, "Q4", 540),
};

var res = from revenue in revenues
          group revenue by revenue.Quarter
          into g
          where g.Count() == 2
          select new { Quarter = g.Key, Total = g.Sum(c => c.Amount) };


foreach (var line in res)
{
    Console.WriteLine(line);
}

record Revenue(int Id, string Quarter, int Amount);

To new má pekné uplatnenie pri tvorbe objektov v kolekciách, tak ušetrí dosť zbytočného opakovania.
Spolu s LINQ a rekordami je moderný C# fakt príjemný.

7
Vývoj / Re:Jaký jazyk bych se měl učit?
« kdy: 28. 05. 2022, 21:45:05 »
Citace
C# je opajcovana Java s nekteryma.drobnyma vylepsenima, jako je LINQ a par syntaktickyma cukrikama.

Objektívne treba povedať, že to bola pravda. Tak okolo roku 2003. Dnes je však rok 2022 a .NET prešiel rozsiahlym vývojom. JVM a .NET sú dva top vývojárske ekosystémy, každý má oblasti v ktorých vedie.
.NET má trebárs ďaleko lepšiu podporu asynchrónneho programovania, JVM má zas lepšie multiplatformové GUI. Ak porovnávame Javu a C#, tak C# je o niekoľko tried lepšie navrhnutý, bohatší a expresívnejší jazyk.

trebárs: 

Kód: [Vybrat]
$ dotnet new console -o DownloadImage
$ cd DownloadImage
$ code .

Kód: [Vybrat]
using var httpClient = new HttpClient();
var url = "http://webcode.me/favicon.ico";
byte[] imageBytes = await httpClient.GetByteArrayAsync(url);

using var fs = new FileStream("favicon.ico", FileMode.Create);
fs.Write(imageBytes, 0, imageBytes.Length);

Console.WriteLine("Image downloaded");

Kód: [Vybrat]
$ dotnet run

Nech sa páči, a teraz si to spravte v Jave, ja by som na to teda nemal nervy. Samozrejme Java ekosystém, má aj iné jazyky, trebárs Groovy:

Kód: [Vybrat]
def bytes = new URL("http://webcode.me/favicon.ico").bytes
Files.write(Paths.get("favicon.ico"), bytes)

A v ňom je radosť programovať.

Citace
System.out.println ani gettery samozrejme nikdo nepise, to dela IDE.

A to vám nikdy neťuklo, že na výpis textu na konzolu potrebujete pomoc IDEčka? :))))

Citace
a o 2 rady mene artefaktu (280k vs 28M)

To si myslíte fakt, že JVM má 28 miliónov knižníc?  Podľa http://www.modulecounts.com/
je to 476 tisíc (JVM) vs 308 tisíc (.NET). Realisicky si myslím, že repozitáre majú kvalitné, udržiavané
knižnice rádovo v tisícoch max desiatkach tisíc. 



8
Vývoj / Re:Jaký jazyk bych se měl učit?
« kdy: 27. 05. 2022, 22:41:40 »
Tak toto je pozoruhodný názor.  .NET samozrejme svoj repozitár má:

https://www.nuget.org/

Sú knižnice, ktoré má lepšie JVM a sú, ktoré sú lepšie v .NET. Námatkovo napr. Java má trebárs JavaFX, Swing, LibrePDF a .NET trebárs Unity, ML.NET či Mailkit.

Už tri roky za sebou sa .NET Core zjavil na špici technológií "Most Loved".

Keď JVM, tak rozhodne Groovy či Clojure. C# je fundamentálne lepší jazyk ako Java. O niekoľko levelov. 
Ak sa niekomu páči to, že na jednoduchý program musíte vytvoriť classu, public static void main, System.out.println namiesto println ako u debilov na dvore, ak sa niekomu páči neustále písať gettre a settre, ten kvázi funkcionálny bazmeg, neexistencia literálového zápisu pre kolekcie, tak nech sa páči. Ale prosím tu netvrďte, že je to ten naj jazyk aký existuje.



Tak hlavní věc je, že jazyk je jen nástroj, to jestli budeš dobrý nebo ne stejně záleží na tvých schopnostech a schopnosti pochopení problematiky.

Vezmi C#, dnes už je multiplatformní vč. androidu i apple ekosystémů. K tomu se nauč (T-)SQL, JavaScript, HTML a CSS (aspoň trochu).

Kdyz se naučíš C#, budeš schopný číst i upravovat Javu, PHP, Kotlin a další C-like jazyky (jen ti to bude připadat jako krok zpět ;-), ale to jsem skrtnul zápalkou)

Tak zrovna C# a TSQL jsou do budoucna naprosto k nicemu, vybehove technologie legacy aplikaci, s tim se tazatel odsoudi leda k udrzovani nejake stare hruzy ve wokennim svete.
C# ma oproti jave navic par syntaktickych cukriku, naprosto ale propada v ekosystemu, Spring tomu uz zdech, nema.nic jako Maven Central.
TSQL je ciste MSSQL zalezitost a neznam nikoho, kdo by na.tom stavel nove veci. Ty se delaji na Postgresu + Tmescale, Influxu, Elasticu, MongoDB.

Osobne bych radil Javu jako nejpouzivanejsi klasicky jazyk, popr Kotlin, na Backendy.
Pokud si chces hrat s mikroservicama, potom go.
Na skriptovani python

Na predek Typescript, to je prekvapive dobry OOP jazyk.

9
Vývoj / Re:Jaký jazyk bych se měl učit?
« kdy: 27. 05. 2022, 11:08:18 »
Nechcem tu príliš politizovať, ale budúcnosť jazykov súvisí s práve prebiehajúcim
mocenským súperením medzi viacerými krajinami. Španielčina je super jazyk na cestovanie
po svete, ale z ekonomického hľadiska ju zrejme predčia nemčina a francúzština.
O ruštine nehovoriac. Počty hovoriacich nie sú všetko. Rusky sa doruzumie "len" 258 miliónov ľudí,
ale odhaduje sa, že ruština je na internete 2. najpoužívanejší jazyk po angličtine. Žiadna iná krajina
nemá Runet, prakticky plnohodnotnú alternatívu anglickému webu. Rusi majú všetko, od svojho vyhľadávača, cez sociálne siete, encyklopédie, Q/A stránky... Pokiaľ viem, nič také španieli nemajú.

Americké impérium sa nám pred očami rúca a aj preto, portugalčina a farsi majú veľký potenciál
do budúcnosti, ak sa Brazília a Irán zbavia americkej agresie.  Je predpoklad, že sa Brazília stane lídrom v Latinskej Amerike (234 mil ľudí hovorí portugalsky).

Farsi je perzský jazyk, ktorým sa dohovorí 110 miliónov ľudí v Iráne, Afganistane a Tadžikistane. Ak sa Iránu podarí dominovať na blízkom východe (súperia s nimi Turci a SAE), tak sa z neho stane ekonomicky veľmi atraktívny regionálny jazyk. Iránci sú podľa mňa oveľa šikovnejší ako Arabi, ale ničia ich 40+ rokov trvajúce americké sankcie.





Kód: [Vybrat]
Medzi najperspektívnješie jazyky ..., farsi a portugalčina.
Farsi? WTF?

A prečo práve portugalčina a nie Španielčina? Španielčinu má za materinský jazyk viac ako 2x toľko ľudí ako portugalčinu. A navyše milióny ľudí ju ovládajú ako svoj druhý jazyk.

10
Vývoj / Re:Jaký jazyk bych se měl učit?
« kdy: 26. 05. 2022, 15:35:38 »
Pozoruhodné, ja si naopak myslím, že záujem o ruštinu, resp. užitočnosť jej znalosti pretrváva, v súčasnosti rastie a v neďalekej budúcnosti bude dramaticky rásť. Business nie sú len iphony, automobily, či všelijaké služby. Ale aj pre život zásadné suroviny ako obilie, nerastné bohatstvo ako drevo, uhlie; hnojivá, tažký priemysel železo, oceľ a samozrejme ropa a zemný plyn.
A v tomto ohľade sa ruština teda zíde.

Medzi najperspektívnješie jazyky podľa mňa okrem ruštiny patria čínština, arabčina, farsi a portugalčina.


Anglicky mluví kdejaká opice, to už se dnes bere jako samozřejmost. Přidaná hodnota angličtiny je dneska nulová, zejména v IT, kde je to opravdu většinou základní požadavek. Peníze může vydělat nemčina, nebo jazyk nekterého z bohatých severských národů. Francouzky a španělsky se člověk domluví v kdejaké díře, což v určitých částech světa platí i o ruštině, ale ta je v úpadku, a business s rusy asi teď moc nepokvete...

11
Hardware / Re:Nažltlé farby na Acer Swift
« kdy: 28. 04. 2022, 23:48:11 »
Našiel som Night light voľbu, to bude asi to. Ale to mám vypnuté.

Zkus hledat, jestli nemas zapnuty rezim, ktery ma setrit oci. Funguje to tak, ze ubere na modry barve a kvuli tomu je vsechno takovy zluto/cerveny... Videt je to hlavne na bile...

12
Hardware / Nažltlé farby na Acer Swift
« kdy: 28. 04. 2022, 11:22:27 »
Zdravím,

Kúpil som si Acer Swift 3. https://www.alza.sk/acer-swift-3-evo-steam-blue-celokovovy-d6963706.htm?o=2
Notebook vyzerá byť vcelku OK, akurát ma rušia také nažltlé biele farby.
Aj čierna je taká "iná" čierna. To bude asi feature, nie bug? Myslím, že sa tomu hovorí, že teplejšie
farby.  Pohral som sa trochu s nastaveniami, tak vypnutie adaptovania jasu na okolie v niečom trochu pomohlo;
pre VS Code v dark theme je to  ostrejšie. Skúšal som live Xubuntu, tam je to rovnaké.

Keď si to porovnám so svojím Thinkpadom L380 z roku 2018, tak Thinkpad má jasnejšiu bielu aj čiernu farbu.
To sa mi viac páči. Čo som sa díval na špecifikácie, tak Thinkpad má IPS antireflexný a Acer IPS matný. Že by
v tom bol rozdiel? (Nie som na HW expert, roky som fungoval na starých notebookoch z bazoša.)

Aké máte s tým skúsenosti? Dá sa na to zvyknúť, alebo budem ešte rok nadávať? Je to dôvod pre vrátenie notebooku?
Ako hovorím, noťas vyzerá byť ináč faj, ľahučký, tichučký, pevné kovové telo, akurát tie farby ma zarazili.



13
Vývoj / Re:Úprava kódu malého programu v Clojure do funkcií
« kdy: 11. 03. 2022, 23:41:34 »
Mno je to takove krpate.....
Kód: [Vybrat]
(defn connect []
  (let [session (Session/getDefaultInstance props)
        store (.getStore session "pop3")
        _ (.connect store host port user password)
        inbox (.getFolder store "Inbox")
        _ (.open inbox Folder/READ_ONLY)
        messages (.getMessages inbox)]
    (.close inbox true)
    (.close store)
    messages))


Snad by to i mohlo fungovat a language server by nemusel nadavat... ale stejne bych se kouknul po nejaky clojure knihovne co tu jakartu zabali...

Pracovat s tema side efektama je fakt osklive...

Aha, takže sa tam dá discard. Diq. Funguje to čiastočne. Padne to s hláškou Folder is not open.
Zrejme tie dáta bude treba vytiahnuť z kolekcie messages už priamo v tej connect funkcii, nejako asi
cez map a vrátiť. (V main funkcii je store už uzatvorený).

Clojure má postal knižnicu, ale tá je len pre SMTP, POP tam nie je.



14
Vývoj / Re:Úprava kódu malého programu v Clojure do funkcií
« kdy: 11. 03. 2022, 22:31:23 »
https://clojure.org/guides/learn/functions

Task              Java                     Clojure    
Instantiation        new Widget("foo")      (Widget. "foo")
Instance method  rnd.nextInt()             (.nextInt rnd)
Instance field       object.field                (.-field object)
Static method      Math.sqrt(25)            (Math/sqrt 25)
Static field           Math.PI                      Math/PI

a je vymalovani, v hlave si to prepises do javy, nasekas to do funkci a vratis do clojure :-)
nic v tom neni, jen zpusob zapisu je "divny"

Túto časť som viac-menej pochopil. Podarilo sa mi prepísať Groovy kód do Clojure a funguje
to.

Čo sa mi nepodarilo je prepísať tento kód do osobitnej funkcie:

Kód: [Vybrat]
(def props (System/getProperties))

(def session (Session/getDefaultInstance props))
;; (.setDebug session true)
(def store (.getStore session "pop3"))
(.connect store host port user password)
(def inbox (.getFolder store "Inbox"))
(.open inbox Folder/READ_ONLY)
(def messages (.getMessages inbox))

Funkcia by mala sa pripojiť na store, stiahnuť emaily do listu, uzavrieť prostriedky
a vrátiť dáta callerovi. Funkcia by sa mala volať z main funkcie.

Usmolil som niečo takého:

Citace
;; (defn connect []
;;   (let [props (System/getProperties)
;;         session (Session/getDefaultInstance props)
;;         store (.getStore session "pop3")
;;         inbox (.getFolder store "Inbox")]


;;     (.connect store host port user password)
;;     (.open inbox Folder/READ_ONLY)
;;     (def messages (.getMessages inbox))
;;     (.close inbox true)
;;     (.close store)
;;     messages)

Ale nefunguje to. Čiže kód je funkčný, emaily sa stiahnu, ale zatiaľ neviem
kód pekne upratať idiomaticky à la Clojure.

15
Vývoj / Úprava kódu malého programu v Clojure do funkcií
« kdy: 11. 03. 2022, 13:55:31 »
Zdravím, mám príklad v Clojure, ktorý funguje, ale je potrebné ho nejako upraviť
do funkcií aby bol kosher. Language server ma upozorňuje, že inline definície nie sú
vhodné, tak som dal definície nad main funkciu.

Ale mám to problém nejako dať dokopy do funkcie connect. Potrebujem vrátiť
dáta, ukončiť inbox a store. Poznám x jazykov ale s LISPom má môj mozog zatiaľ
problém.


Kód: [Vybrat]
(ns pop3.core
  (:import (jakarta.mail Session Folder)))

(def user "username")
(def password "passsword")
(def host "pop3.mailtrap.io")
(def port 9950)


;; (defn connect []
;;   (let [props (System/getProperties)
;;         session (Session/getDefaultInstance props)
;;         store (.getStore session "pop3")
;;         inbox (.getFolder store "Inbox")]


;;     (.connect store host port user password)
;;     (.open inbox Folder/READ_ONLY)
;;     (def messages (.getMessages inbox))
;;     (.close inbox true)
;;     (.close store)
;;     messages)


(def props (System/getProperties))

(def session (Session/getDefaultInstance props))
;; (.setDebug session true)
(def store (.getStore session "pop3"))
(.connect store host port user password)
(def inbox (.getFolder store "Inbox"))
(.open inbox Folder/READ_ONLY)
(def messages (.getMessages inbox))


(defn -main []

  (println (count messages))

  (doseq [m messages] (let [subject (.getSubject m) body (slurp (.getInputStream m))]
                        (println subject)
                        (println body)
                        (prn "---------------------------")))

  (.close inbox true)
  (.close store))

Toto sú závislosti:

Kód: [Vybrat]
  :dependencies [[org.clojure/clojure "1.10.3"]
                 [com.sun.activation/jakarta.activation "2.0.1"]
                 [com.sun.mail/jakarta.mail "2.0.1"]]
  :main pop3.core/-main

Stran: [1] 2 3 4