Zdjęcie w tle

Społeczność

Programowanie

1k+

Zaloguj się aby komentować

algorytmiczna botanika idzie do przodu. Na screenie "drzewka" wygenerowane za pomocą "stochastycznych L-systemów". Strona 28 z książki którą linkowałem ostatnio.

#programowanie #ciekawostki #nauka #biologia #rosliny #hobby #tworczoscwlasna

d03346e8-305a-4fee-a2b7-8f505ad0a508

Zaloguj się aby komentować

Dzisiaj wydałem nową wersję moich aplikacji do wyszukiwania duplikatów(i nie tylko) Krokiet/Czkawka 11.0.

Wpierw wrzuciłem to na Reddita, ale mnie poblokowali, bo w treści miałem odwołanie do strony "dev dot com", więc niech idą na drzewo a post wrzucę tutaj.

Mógłbym opisywać tak jak w innych miejscach, że ta wersja dodaje w Krokiecie łatwiejsze sortowanie, pozwala na skanowanie pojedynczych plików, usuwanie danych exif z obrazów, wyszukiwanie niepożądanych nazw plików, ręczne usuwanie przestarzałych danych cache itd. - ale na końcu i tak ktoś napisze tutaj "A po co mi to?"

Tak więc hejterska społeczność w swym hejcie na pewno doceni 2 nowe funkcjonalności w tej wersji:

- Dodanie ikony do windowsowego pliku exe - zaskakująco wiele osób chciało tą funkcjonalność, ale jak to zwykle bywa nikt do tej pory tego nie zrobił, więc jak większość rzeczy, musiałem zrobić to sam, dzięki temu exe jest teraz łatwo rozpoznawalne(zawiera nowe logo, będące jednorożcem z tarczą, proporcem a na nim narysowanym Krokietem)

- Drugą funkcjonalnością jest ucinanie czarnych pasów z wideo, lub jego statycznych części

Przy przeglądaniu rożnych plików wideo, zauważyłem, że wiele z nich ma dodane jakieś dziwne pasy, przez co czasem je sie trudniej ogląda i na pełnym ekranie, nie wypełniają go całego.

Zatem dla tych plików, mogłem albo ręcznie w ffmpeg przycinać każdy plik obliczając prostokąt z zawartością, korzystać z szemranych stronek przycinających wideo i przy okazji dodające swoje własne logo albo napisać od zera tą funkcjonalność, która działałaby jako tako i ostatecznie wybrałem ostatnią opcję.


Algorytm jest w miarę prosty, z każdej strony testowana jest linia po linii i jeśli 90%(można te wartości zmieniać) pikseli z danej linii z danej ramki, ma różnice w RGB mniejsze niż 20(suma różnic każdej ze składowych), to linia jest oznaczana do usunięcia.

Jeśli w którymkolwiek z kolejnych przebiegów, linia będzie zawierała zbyt dużo różnic względem odpowiadającej jej linii z pierwszej ramki, to jest ona wyrzucana z puli do usunięcia i nigdy później nie jest już testowana.


Na obrazku niżej widać, jak narzędzie poprawnie wykryło ten "ciekawy" obszar wideo i zaznaczyło go na podglądzie(złożonym z 9 klatek z wewnątrz aplikacji), dzięki czemu kliknięcie w optimize, stworzy nowy plik(albo nadpisze stary), bez napisu

Więcej na temat błędów i nowych narzędzi w tej wersji można przeczytać tutaj - https://medium.com/@qarmin/czkawka-krokiet-11-0-c95ee35eccc2


Repozytorium — https://github.com/qarmin/czkawka

Pliki do pobrania wraz z listą zmian — https://github.com/qarmin/czkawka/releases

Licencja — MIT/GPL w zależności od programu (czyli w skrócie za darmo)

#programowanie
#tworczoscwlasna
#rustlang

388bcd6b-0d0b-4f99-9387-2e917ff6eaba

@qarmin Co do przycinania czarnych pasów w video, to w sumie ffmpeg ma wbudowaną funkcjonalność automatycznego wykrycia obszaru do przycięcia. Wiem bo kiedyś dodawałem podobną funkcjonalność do swojego GUI do ffmpeg.
Tutaj link do dokumentacji ffmpeg gdzie ją opisują: https://ffmpeg.org/ffmpeg-filters.html#cropdetect

I jeszcze pytanie jeśli może wiesz, czy paczki w AUR "krokiet-bin" i "krokiet" różnią się czymś poza tym że jedna jest już zbudowana a druga nie? Chodzi mi o te dodatkowe backendy o których pisałeś oraz wsparcie dla dodatkowych formatów.

Zaloguj się aby komentować

Ostatnio mnie zainteresował temat symulacji rozwoju roślin i znalazłem bardzo fajna książkę na ten temat więc się z Wami podzielę: https://algorithmicbotany.org/papers/abop/abop.pdf


Jak będę miał efekty implementacji to oczywiście również wrzucę, póki co opanowałem dodawanie pionowych segmentów gałęzi, czyli bardziej walka z silnikiem niż algorytmami.


Teraz pora na symulowanie żółwia i wrzucenie kilku sekwencji z książki do odtworzenia, żeby coś ciekawego się na ekranie pojawiło. Kto w logo programował ten wie ocb #pdk


#programowanie #ciekawostki #nauka #biologia #rosliny #hobby

Zaloguj się aby komentować

Chciałem się pochwalić małym projektem, który ostatnio wdrożyłem na swoją stronę.
Jeśli zdarza Wam się grać w Scrabble albo Literaki, to pewnie znacie ten ból: macie litery na stojaku, widzicie fajne słowo na planszy i wiecie, że da się tam coś "dokleić", ale standardowe wyszukiwarki słów w ogóle w tym nie pomagają.


Większość stron w polskim necie to proste anagramatory. Żeby sprawdzić tzw. przedłużki, trzeba ręcznie wpisywać dziesiątki kombinacji. Stwierdziłem, że szkoda na to czasu, więc napisałem wyszukiwarkę, która robi to automatycznie.

Jak to działa w praktyce? Podajesz słowo, które już leży na planszy oraz swoje litery (blanki też wchodzą w grę).

Skrypt wyrzuca gotową listę wszystkich możliwych przedłużeń zgodnych z OSPS i SJP.


Co dodałem ekstra:

  • Punktacja: Wyniki są od razu posortowane po wartości punktowej (liczyłem to zgodnie z zasadami gry).

  • Definicje: Przy każdym słowie jest link do SJP – przydaje się, bo niektóre dopuszczalne słowa w polskim języku brzmią jak abstrakcja.

Link dla chętnych: https://poocoo.pl/przedluzki-slowa

Będę wdzięczny za feedback – co poprawić w UI albo jakie filtry dorzucić, żeby korzystało się z tego jeszcze szybciej?

#scrabble #literaki #jezykpolski

8a0be268-7d2c-4af9-a873-f36eba79a44a

Zaloguj się aby komentować

Zaloguj się aby komentować

Czasem ludzie pytają mnie „wombat, tak dobrze ci się żyje, może ja bym sobie też po godzinach dorobił na tym #programowanie ?”


Ja w takiej sytuacji zawsze polecam przeczytanie pierwszego rozdziału „Automate the Boring Stuff with Python” https://automatetheboringstuff.com/ i wrócenie do mnie żeby przerobić pytania z końca rozdziału. Do tej pory nikt jeszcze nie wrócił.


#pytanie do Was Tomeczki, czy macie jakąś inną rekomendację? Zakładam że problem jest w moich rozmówcach, ale może są też jakieś nowsze, ciekawsze, łatwiejsze, darmowe materiały do polecania zainteresowanym #naukaprogramowania ?

@wombatDaiquiri serce na tacy wyłożyłem żeby przyjaciół i znajomych nauczyć programowania jak ssało jak po⁎⁎⁎⁎ne. Przygotowałem zadanka, organizowałem spotkania, własne książki dawałem. Jeden znajomy skorzystał, reszta olała.

@wombatDaiquiri Też kiedyś polecałem tę książkę nawet jeśli nie lubię Pythona oraz go nie znam dobrze xD. Ale zawsze uprzedzałem, że realistycznie nie ma szans żeby byli się w stanie nauczyć bezboleśnie i w krótkim czasie całej potrzebnej wiedzy żeby móc w tym zarabiać na boku i że jeśli chcą to jedynie aby sobie napisać coś dla siebie do pomocy w pracy np. automatyzując jakieś excele albo dla hobby. Ewentualnie polecałem też naukę JS bo wydaje mi się, że dla takich osób jest lepszy bo szybciej widać "widoczne rezultaty" w postaci jakiś prostych stron a zanim dojdą do GUI w Pythonie to im się znudzi xd.

Od czasu powstania gen AI to mówię, że już zwyczajnie nie warto poza hobby ponieważ większość prostych rzeczy które chcieli by zautomatyzować ogarnie im już AI.

Zaloguj się aby komentować

https://github.com/torvalds/AudioNoise


Repo Linusa Torvalds w którym pisze, że jest wywajbkodowane.

Also note that the python visualizer tool has been basically written by vibe-coding. I know more about analog filters -- and that's not saying much -- than I do about python. It started out as my typical "google and do the monkey-see-monkey-do" kind of programming, but then I cut out the middle-man -- me -- and just used Google Antigravity to do the audio sample visualizer.

#linustorvalds

Zaloguj się aby komentować

Zwykle udostępniam tu artykuły, które publikuję na swoim blogu. Tym razem mam jednak do pokazania coś większego


294 dni. Tyle minęło od napisania pierwszego zdania do postawienia ostatniej kropki mojego najnowszego e-booka. „Kolejna książka o Gicie” w końcu ujrzała światło dzienne i jestem ogromnie dumny z produktu, który mogę Ci dziś zaprezentować!


„Kolejna książka o Gicie” to ponad 180 stron konkretnej i praktycznej wiedzy. E-book przeprowadzi Cię krok po kroku od podstaw po bardziej zaawansowane treści. Nie jest to jedynie teoretyczny opis działania Gita, ale opisałem również praktyczne wskazówki i rekomendacje, które pomagają pracować z nim lepiej i efektywniej.


Oprócz treści teoretycznej w e-booku znajdziesz sporo ćwiczeń praktycznych pozwalających na przetrenowanie zdobytej wiedzy i wykorzystanie Gita w skryptach czy automatyzacjach.


W premierowym artykule znajdziesz szczegółowe informacje dotyczące zawartości e-booka


https://devszczepaniak.pl/kolejna-ksiazka-o-gicie-premiera/


#git

#ebook

#programowanie

#informatyka

#programista15k

#frontend

#naukaprogramowania

#backend

W premierowym artykule znajdziesz szczegółowe informacje dotyczące zawartości e-booka

Dla tych co jak ja już chcieli pytać co jest w kolejnej i czy koniecznie trzeba zaglądać do poprzedniej

Jestem akustykiem - jak dołączałam do branży do super ekspert miał na nazwisko Szczepaniak, teraz programuję akustyczne rzeczy, i nadal ekspert to Szczepaniak, damn... rodzina geniuszy?

Zaloguj się aby komentować

adeptom #programowanie polecam myśleć o testach jednostkowych jako "zbiorze aksjomatów o kodzie których znajomości oczekujesz od próbujących rozwijać twój system".

dodatkowe twierdzenie do udowodnienia w swojej duszy dla chętnych - #sztucznainteligencja nie chce nic, więc większość testów jednostkowych które proponuje jest k⁎⁎wa bez sensu xD

#autyzm #psychiatria #komunikacja

prompt: zaproponuj wpis na portal społecznościowy hejto na temat "co to testy jednostkowe"

Pewnie każdy coś słyszał, ale krótko i po ludzku

Co to są testy jednostkowe?

Testy jednostkowe to małe, automatyczne sprawdziany dla kodu.
Biorą najmniejszy sensowny kawałek programu (funkcję, metodę, klasę) i sprawdzają, czy:

  • dla danych wejściowych X

  • zwraca wynik Y

  • zawsze i przewidywalnie

To trochę jak test smaku w kuchni:

zanim podasz danie gościom, próbujesz łyżeczką sosu, a nie czekasz aż ktoś się zatruje.

Po co to komu?

  • szybciej rozumiesz własny kod (i cudzy)

  • zmiany nie psują rzeczy, które już działały

  • refaktoryzacja przestaje być rosyjską ruletką

  • mniej „działało u mnie”

Czego testy jednostkowe NIE robią:

  • nie sprawdzają UI

  • nie testują całego systemu

  • nie zastępują myślenia

Najczęstszy błąd:
„Napiszę testy na końcu”
(spoiler: na końcu już się ich nie pisze)

Dobrze napisany test jednostkowy to:

  • szybki

  • deterministyczny

  • czytelny

  • testuje jedną rzecz

A najlepszy moment na testy?
w chwili, gdy kod jeszcze boli od świeżości

Jeśli chcesz, w kolejnym wpisie mogę:

  • pokazać zły vs dobry test

  • albo wytłumaczyć testy bez frameworków i buzzwordów

@wombatDaiquiri


Biorą najmniejszy sensowny kawałek programu

To jest mega nieoczywiste. Moim zdaniem AI często testuje zbyt nisko, betonując kod.


To jest mega artykuł na ten temat - w Pythonie, ale imo lang agnostic. Cała książka też sztos.

https://www.cosmicpython.com/book/chapter_05_high_gear_low_gear.html


Generalnie narzucanie architektury dla kodziku to jedna z ważniejszych rzeczy przy vibe-codowaniu.

Ja ogólnie lubię TDD i wydaje mi się, że to najlepszy sposób na AI. Odpalasz takiego gemini cli i mowisz aby na podstawie wymagań (tutaj uzupelniasz) napisał Ci testy. Sprawdzasz czy mają sens i potem w kolejnej iteracji mówisz aby zaimplementował kod jtóry przejdzie testy i spełni wymagania. Potem każda poprawka to najpierw poprawa testów, a dopiero potem zmiany w kodzie. Takie coś u mnie się sprawdza

@dotevo


mowisz aby na podstawie wymagań (tutaj uzupelniasz)


Czyli dosłownie przekazujesz logikę testów a AI je tylko tłumaczy na język programowania? Czy w ogóle piszesz test i mówisz „uzupełnij przykłady dla następujących warunków brzegowych”? Pragnę zwrócić jedynie Twoją uwagę na fakt, ze całe „myslenie” tj. „podejmowanie decyzji na podstawie ekspertyzy” nadal w swoim podejściu odpowiadasz sam.

@wombatDaiquiri ależ oczywiście. Zresztą osobiście mało używam AI w pracy. Za to do hobbistycznych projektów owszem bo mocno przyśpiesza pracę, a przy tym trenuję sobie jak pracować z AI.


Wydaje mi się, że dałoby radę napisać jednego dobrego prompta, który zrobi wszystko. Używam gemini-cli i piszę mu tylko "W pliku readme.md masz opis projektu, zaimplementuj go używając TDD w języku XYZ. Projekt będzie gotowy gdy ...., pamiętaj o podziale na moduły oraz kod musi być w języku angielskim". Potem mieli cały dzień i na koniec wychodzi coś sensownego. W prompcie najlepiej wprost powiedzieć na co musi zwrócić uwagę. Np. bezpieczeństwo, testy e2e, dokumentację itd.


Druga sprawa to czego używasz do kodowania? bo wg mnie chatgpt jest słaby, gemini ok, claude najlepszy - ale za free mało można.

@wombatDaiquiri Mój problem z UT (po nastu latach pracy w zawodzie) jest taki, że są to duplikaty większości aksjomatów które w kodzie... już są. W kodzie.


Kod produkcyjny jest sam w sobie właśnie takim aksjomatem. Więc dodanie duplikatu powoduje w wielu (nie wszystkich!) wypadkach marnowanie czasu na pracę "żeby testy przeszły" po najmniejszej zmianie: czy to funkcjonalnej, czy refaktorze.


Dlatego z mojej perspektywy podwójnie chore są "progi pokrycia testami jednostkowymi" które spotykam w różnych firmach.


Gdyby tylko zamiast nad testami UT spędzić więcej czasu nad kodem produkcyjnym, przygotowaniem zmian... : ).


UT nie są zupełnie bezużyteczne. Nie wszystko da się łatwo wyczytać z kodu, wyłączam z tego zbioru UT na bardzo nietypowe edge case'y (typu reprodukcje bugów) i testy modułowe (które de facto nie są UT, ale to często te same narzędzia i ten sam run).

@baklazan ja osobiście potrzebuje „sanity check” ze każdy komponent który napisałem działa tak jak sie spodziewam zanim będę składał komponenty ze sobą. Ale ja pracuję też dość głęboko w infrastrukturze dużych serwisów, więc mogę mieć zboczenie na bezawaryjność.


Natomiast zazdroszczę ludziom którzy są przekonani ze napisali to co chcieli po tym jak to napiszą xD

@wombatDaiquiri Nigdy nie jesteś pewien na 100%, więc testy są konieczne: po prostu z reguły UT są najmniej użyteczne. Generalnie chodzi o to żeby tworzyć zmiany małymi krokami, używając do tego bardzo małych commitów, jednocześnie nie zmieniając zachowania tam gdzie nie trzeba.


Podam Ci przykład jak do tego podchodzę:

Zmiana w aplikacji rozszerzającej zachowanie jakiegoś modułu.

Zaczynasz od refactorów, które mają nie zmieniać zachowania klasy. Każdy refactor to osobny commit. Każdy commit musi być czysty (tzn nie zawierać innych zmian, nie będących częścią tego co robisz), więc np:
- osobny commit na uporządkowanie zmiennych w funkcji, tak, żeby dało się jej część wyciągnąć robiąc niewiele więcej niż kopiuj-wklej,

- osobny commit na wydzielenie metody,

- itd.

Generalnie osobny commit na każdy krok refactoringowy. Podobnie przy dodawaniu nowego kodu, idealnie byłoby podzielić go na kawałki.


Każdy commit musi działać! (przechodzić wszystkie testy itp)


Z reguły zmiany wprowadzające zmianę zachowania są na końcu takiego brancha/patchsetu i powinny być tryawialne: żebyś był w stanie szybko je wycofać, ale też szybko wyłapać jakiś problem.


Wiadomo - przeoczysz wiele błędów. Ale jeśli przy każdym commicie przejrzysz zmiany które zrobiłeś, zmniejszasz szansę na wprowadzenie regresji, i to wielokrotnie. Pomaga przy tym pisanie dobrych opisów commitów: opisując nie "co zrobiłem" tylko "po co to zrobiłem" - to "co zrobiłeś" widać w commicie, zwłaszcza jeśli jest mały i prosty. Pytanie "dlaczego ten commit zrobiłeś" jest jeśli nie nieoczywiste to na pewno trudne do zgadnięcia. Finalnie: odpowiedź na to pytanie wiele razy sprawiła że wywaliłem dane zmiany jako kompletnie niepowiązane ; D.


To jest workflow do którego się trzeba przyzwyczaić, wymaga dużo czytania i rozumienia kodu, ale bardzo szybko powoduje, że nie dość że robię o wiele mniej błędów, to do tego bardzo dobrze rozumiem co się dzieje w kodzie - żeby przygotować dobry patchset musisz dobrze zrozumieć co robi kod w którym pracujesz.


Prywatnie zmieniło to moje podejście do pisania kodu o 180 stopni. Jeśli zaczniesz stosować ten workflow i nabierzesz wprawy zaczynasz pisać kod paradoksalnie bardzo szybko i bez błędów - nie marnuję czasu na debugowanie, bo najczęściej nie mam po co go robić.


I powoduje że UT są po prostu upierdliwe, bo przenoszę ciężar z "napisz kod produkcyjny i opisz go testami" na "napisz kod produkcyjny tak żeby działał i nic nie popsuł". Testuję go najczęściej tylko manualnie wysokopoziomowo, czasem piszę i odpalam testy modułowe/systemowe.

Zaloguj się aby komentować