Zaloguj się aby komentować
Społeczność
Programowanie
#programowanie #rustlang
Zaloguj się aby komentować
#humorinformatykow #memy
Mi się właśnie wydaje że dużo programistów to dynamiczniaki
Zaloguj się aby komentować
Zostań Patronem Hejto i tylko dla Patronów
- Włączona możliwość zarabiania na swoich treściach
- Całkowity brak reklam na każdym urządzeniu
- Oznaczenie w postaci rogala , który świadczy o Twoim wsparciu
- Wcześniejszy dostęp, do wybranych funkcji na Hejto
W skrócie to autor biblioteki w wersji 5.6.0/5.6.1 zaczął dodawać stopniowo "obfuscated"(czyli to chyba się tłumaczy jako zaciemniony) kod, który ostatecznie miał raczej pozwalać na umożliwienie zdalnego dostępu do maszyny(ponieważ xz jest używany przez openssh).
Analiza - https://www.openwall.com/lists/oss-security/2024/03/29/4
Inna analiza - https://gist.github.com/thesamesam/223949d5a074ebc3dce9ee78baad9e27
Wątki na internecie - polecam przeczytać komentarze, które wyjaśniają niektóre rzeczy:
-
https://www.reddit.com/r/linux/comments/1bqt999/backdoor_in_upstream_xzliblzma_leading_to_ssh/
-
https://www.reddit.com/r/archlinux/comments/1bqx81e/arch_linux_news_the_xz_package_has_been_backdoored/
-
https://www.reddit.com/r/programming/comments/1bqxynh/major_linux_distributions_impacted_by_xz/
-
https://news.ycombinator.com/item?id=39865810
Backdoor został wykryty, ponieważ powodował duże spadki wydajności oraz nie lubiał się z valgrindem, który przeczuwał że coś z binarką nie jest w porządku(wygląda że plik binarny sam się modyfikował)
Dla uspokojenia, problematyczne wersje były używane głównie w niestabilnych wersjach dystrybucji.
#programowanie
#linux
#opensource
I nikt nie napisze gdzie doszło do naruszenia bezpieczeństwa? Ludzie, wy macie jakieś pojęcie o dokumentowaniu rzeczy? A wystarczy dodać:
Backdoor in upstream xz/liblzma leading to SSH server compromise [CVE-2024-3094]
Ten dopisek ma też od razu funkcje, że dobrze się sprawdza w Google.
@qarmin Jak się kładłem spać to widziałem już o tym jakiś artykuł. Jak po obudzeniu się odpaliłem kompa to od razu mi się odpaliła przeglądarka bo nowy wpis w "arch news" a tam żeby szybko zaktualizować system bo jest backdoor w paczce. No to szybkie pacman -Syu i patrzę, mam już zainstalowaną wersję bez backdoora, taki Arch moment bo nawet nie wiem kiedy zrobiłem ten update xD
@qarmin szczerze powiedziawszy, to mnie wcale nie dziwi, AI i te gówno czaty GPT pchają oprogramowanie w closed source.
Taki zabieg ma na celu coś takiego " ej no nie dajmy tak sobie puszowac komustam coś w sieć, zablokujemy dostęp do kodu".
Na co tępe masy przystaną, nadzieja dziwna epoka, w której programiści będą się uczyć, lub też nie, języków na zlecenie pracodawców, a to już nie będzie indiańskie eldorado.
Zaloguj się aby komentować
Za 5$ płytka rozwojowa z linuchem na pokładzie, 64mb ram, support h264, support usb i innych gadźetów.
No ale cena - za 30zł można kupić na aliexpresie, czyli cena porównywalna do esp32 lub rsp pico (no może 50% droższa)
Czekam na dostawę, jak będzie tak jak opisują - to miazga :3
#arduino #esp32 #diy #programowanie
@Klopsztanga Jak znam życie z tymi tanimi płytkami, to problem będzie z dokumentacją. Co drugi pin GPIO będzie działał tak jak powinien, i żeby to w ogóle działało, będziesz musiał pohaczyć ze sobą kilka niekompatybilnych bibliotek.
Po tym, jak na jednej z tanich płytek musiałem brute forcem ustalać który PIN przekłada się na które oznaczenie (i czy w ogóle działa) stwierdziłem, że pierdzielę i następnym razem biorę RPI.
@Klopsztanga testował. I nie ma problemu z dokumentacją.
powiem nawet więcej że tak testowałem że zamówiłem na spróbusa kilkanasice egzemplarzy
na arace.tech masz nieco lepsze ceny
@Klopsztanga a, no i jeszcze jeden ważny resource: https://community.milkv.io/c/duo/5
google translate ch -> en daje radę, jak tylko uprzątnę biurkowarsztat to pobawię się w tinyfb.
Zaloguj się aby komentować
#programowanie #rustlang #webdev #programista15k #petproject
Paweł, daj link do githuba
Coś jak ImageMagick tylko w Rust?
@rayros Koniecznie daj w readme na gicie i crates jakiś przykład jak tego użyć w rustcie. Za każdym razem jak szukam czegoś na crates to gdy paczka ma taki przykład to jest dużo większa szansa że tego faktycznie użyje bo mogę szybko skopiować, wkleić do siebie i sprawdzić jak działa. A zwłaszcza podczas nauki rusta gdzie nie mam pojęcia jak ten język działa na tyle by wywnioskować z plików jak mam tego użyć. Najlepiej dać przykład lub parę pokazujących najważniejsze use case.
Zaloguj się aby komentować
Przy próbie dodania dodatku, ci od firefoxa dali sobie 1 dzień na jego sprawdzenie i... pomyślnie przeszedł weryfikację!
Link do dodatku - https://addons.mozilla.org/en-US/firefox/addon/imager/
Najfajniejsze jest to że jak próbuję to wyszukać w wyszukiwarce dodatków po frazie "imager" to nic mi nie wyszukuje(pewnie musi być nieco bardziej popularny).
Link do kodu na githubie - https://github.com/qarmin/imager - jednak nie zalecam tam patrzeć, jakość kodu nie powala i oczywiście nie ma tam wbudowanej funkcji która kopie bitcoiny i przelewa utarg na moje konto, które wykorzystuję do kupowania kebabów - nie ma tam takiej funkcji, więc sprawdzać tego nie musicie.
Wołam @RACO i @Odczuwam_Dysonans bo chcieliście skrypt, więc oto jest
Filmik przedstawia krótką instrukcję jak zainstalować dodatek i go używać
Jeśli zaznaczonych jest wiele kart, to potrafi na nich wszystkich za jednym razem zadziałać
https://streamable.com/yx4r8g
#programowanie
#firefox
#tworczoscwlasna
Robienie własnych rozszerzeń zawsze na propsie, jest tam coś specyficznego zapiętego z Firefoxa czy na innych przeglądarkach też pójdzie? Czy się mylę bo robię na Chlam a FF to inna bajka?
@qarmin dzięki!
@qarmin o kurde, to ty stoisz za czkawką
Zaloguj się aby komentować
Mam jednak problem z tym, że po podmianie całej strony, przy użyciu
document.body.innerHTML = "";
var scripts = document.getElementsByTagName('script');
for (var i = scripts.length; i >= 0; i--) {
if (scripts[i] && scripts[i].parentNode) {
scripts[i].parentNode.removeChild(scripts[i]);
}
}dalej w tle skrypty są uruchomione i czasami wpadają w jakąś dziwną pętlę.
W jaki sposób mogę wyszyścić ze strony absolutnie wszystko?
Na filmiku widać że popup z hejto wyskoczył, mimo że w tle podmieniłem całą stronę
Jest kilka różnic w stosunku do ostatniej wersji:
-
kod się roztył do 300 linijek javascriptu - całkowicie nieotypowany, nie wiem jak to może działać, ale działa
-
obrazy są teraz pokazywane w x kolumnach bez niepotrzebnych pustych przestrzeni
-
dodane są ustawienia(ale nie wiem czy działają po ponownych uruchomieniu przeglądarki) - można dostosować liczbę kolumn, ignorowane linki, śledzenie href linku czy ignorowanie linków bez rozszerzeń obrazowych
-
nowe, brzydkie logo
https://streamable.com/9sltr8
#programowanie
@qarmin Może po prostu otworzyć nową kartę z tymi obrazkami zamiast nadpisywać całą stronę?
@Catharsis Nie wiem jak się to robi.
Myślałem bardziej o tym by dla aktualnej karty, zamiast podmiany zawartości, otwierała się jakaś wbudowana strona o identycznym wyglądzie, ale nic takiego nie znalazłem.
Zaloguj się aby komentować
Link do repo: image-resizer
#programowanie #rustlang
@rayros Obrazoom
@rayros a może nazwij go po prostu Wiesław, albo Ryszard ( ͡° ͜ʖ ͡°)
Szwagropic, albo picpol
Zaloguj się aby komentować
edit: żeby było jasne - jestem stosunkowo zielony w tej dziedzinie programowania
#programowanie #llm
@mortt próbowałem tutorial z Realpython.com ale mnie przerosło wchodzenie w szczegóły danych szpitalnych i nie potrafiłem tego przełożyć na swoje potrzeby, więc mi bardziej się przyda "za proste" podejście.
@htcone nie mam zbytnio przykładu w pytonie bo robiłem to w node. Prawda jest taka, że i tak najcięższe zadania dzieją się poza aplikacją.
Zależy co chcesz zrobić ale najbardziej bazowe rozwiązanie to indeksowanie całych plików bez analizowania ich. Wtedy to jest tylko kwestia zrobienia tego co opisałem. Vector z plików zapisać do chromy przy użyciu ollama embedings (longchain ma to wbudowane) a potem wyciągnąć z chromy kolekcję i zrobić chain longchainowy łączący vektor z ollamą i voila. Można czekać na pełny respons albo stresmować. Więcej roboty jest z tym, żeby uploadować pliki albo wskazać ścieżkę i zaindeksować albo żeby napisać klienta do tego niż samo gadanie llm z wektorami
Zaloguj się aby komentować
Doświadczenia z javascriptem w przeglądarce miałem 0, więc nie obyło się bez problemów i wygląda to brzydko.
Wcześniej myślałem nawet, że mógłbym nawet udostępnić dodatek w sklepie firefoxa bo być może inni też potrzebują takiego narzędzia, ale okazało się że udało mi się to napisać w 150 liniach kodu i w sumie każdy kto chciał to sobie to sam napisał
#programowanie
https://streamable.com/6qxf6y
@qarmin Hmm też kiedyś coś takiego potrzebowałem i też to sam napisałem bo to tylko querry selector na wszystkie img ale
nigdzie nie znalazłem dodatku, który by to robił.
https://chromewebstore.google.com/detail/download-all-images/ifipmflagepipjokmbdecpmjbibjnakm
https://chromewebstore.google.com/detail/download-all-images/nnffbdeachhbpfapjklmpnmjcgamcdmm
https://chromewebstore.google.com/detail/images/iieipaakoflfijmpbjdoicmhgafhmgme
takich dodatków jest masa xD, wiem bo kiedyś też szukałem i żadne mi się nie podobało dlatego napisałem swoje.
@Catharsis Tyle że ja niczego nie chcę pobierać, tylko wylistować sobie wszystkie obrazy - na wykopie był kiedyś tryb galerii we wpisach i chciałem coś podobnego zrobić, tyle że dla każdej strony.
Akurat używam firefoxa i znalazłem ani jednego dodatku który by działał w podobny sposób tak jak to teraz to zrobiłem
@qarmin widzę nie tylko ja taktycznie przed zrobieniem screena czy nagraniem screencapa chowam bookmarki
@mike-litoris Zwykle chowam, ale tutaj nie musiałem. To jest przeglądarka uruchomiona poleceniem web-ext specjalnie do tworzenia dodatków i przy każdym uruchomieniu się czyści sama
A Firefox nie ma wbudowanej takiej opcji?
@libertarianin Nie sądzę, nie znalazłem ani tego wbudowanego ani jako dodatku(jeśli istnieje, to porzucam to co robię i zaczynam używać wbudowanej funkcji, bo to łatwiejsze)
Wiem że w narzędziach w menu gdzieś była opcja żeby wyświetlić media na danej stronie ale nie jestem pewny czy dalej jest
Zaloguj się aby komentować
#programowanie #rustlang #github
@rayros a jak, a prawdziwa wartosc testow sie poznaje jak regresje wylapuja
Małe projekty zazwyczaj robię w TDD. Czyli najpierw piszę testy bo wtedy gdy piszę testy to od razu wiem czego od programu oczekuję, a potem gdy mam nawet 15 min wolnego czasu to naprawiam kod aby przechodIł dany test.
Przy większych projektach zazwyczaj mi się to nie sprawdza bo za dużo czasu idzie na przepisywanie testów gdy koncepcja się zmienia, ale piszę testy gdy coś implementuję. Gdy test testuje moją apkę zamiast (robić to manualnie) to wiem, że zrobi to tak samo za każdym razem
@dotevo akurat w rust pisanie testów tak mi jakoś bardzo dobrze podchodzi. Ale to prawda jak koncepcja się szybko zmienia albo to POC to testowanie czasem bywa bez sensu
@rayros Take się pisze normalnie rusta czy dopiero się uczysz?
@Orzech Dopiero się uczę, pewnie jeszcze dużo nie wiem. Ale clippy mi pomaga, ustawiłem na pedantic xd
Zaloguj się aby komentować
Na internecie, głównym problemem jest brak np. avx, ale ten program normalnie działa, tylko czasami się wysypuje, tylko podczas importu.
Macie jakiś może pomysł co może powodować problem i w jaki sposób go próbować naprawić?
Fatal Python error: Illegal instruction
Current thread 0x76fc8010 (most recent call first):
File "/usr/lib/python3.9/site-packages/matplotlib/__init__.py", line 593 in __setitem__
File "/usr/lib/python3.9/site-packages/matplotlib/__init__.py", line 760 in _rc_params_in_file
File "/usr/lib/python3.9/site-packages/matplotlib/__init__.py", line 796 in rc_params_from_file
...
File "<frozen importlib._bootstrap>", line 680 in _load_unlocked
File "<frozen importlib._bootstrap>", line 986 in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 1007 in _find_and_load
File "<frozen importlib._bootstrap>", line 1030 in _gcd_import
File "/usr/lib/python3.9/importlib/__init__.py", line 127 in import_module
File "/usr/lib/python3.9/site-packages/celery/loaders/base.py", line 89 in import_module
File "/usr/lib/python3.9/site-packages/celery/utils/imports.py", line 105 in import_from_cwd
File "/usr/lib/python3.9/site-packages/celery/loaders/base.py", line 92 in import_from_cwd
File "/usr/lib/python3.9/site-packages/celery/loaders/base.py", line 86 in import_task_module
...
File "/usr/lib/python3.9/site-packages/celery/bin/celery.py", line 217 in main
File "/usr/lib/python3.9/site-packages/celery/__main__.py", line 15 in main
File "/usr/lib/python3.9/site-packages/celery/__main__.py", line 19 in
File "/usr/lib/python3.9/runpy.py", line 87 in _run_code
File "/usr/lib/python3.9/runpy.py", line 197 in _run_module_as_main
lub
Fatal Python error: Illegal instruction
Current thread 0x76fdd010 (most recent call first):
File "/usr/lib/python3.9/textwrap.py", line 431 in dedent
File "/usr/lib/python3.9/site-packages/pandas/util/_decorators.py", line 477 in __call__
File "/usr/lib/python3.9/site-packages/pandas/core/window/rolling.py", line 2041 in Rolling
File "/usr/lib/python3.9/site-packages/pandas/core/window/rolling.py", line 1862 in
...
File "<frozen importlib._bootstrap>", line 680 in _load_unlocked
File "<frozen importlib._bootstrap>", line 986 in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 1007 in _find_and_load
File "<frozen importlib._bootstrap>", line 1030 in _gcd_import
File "/usr/lib/python3.9/importlib/__init__.py", line 127 in import_module
File "/usr/lib/python3.9/site-packages/uvicorn/importer.py", line 21 in import_from_string
File "/usr/lib/python3.9/site-packages/uvicorn/config.py", line 477 in load
File "/usr/lib/python3.9/site-packages/uvicorn/server.py", line 67 in serve
File "/usr/lib/python3.9/asyncio/runners.py", line 44 in run
...
File "/usr/lib/python3.9/site-packages/click/core.py", line 782 in main
File "/usr/lib/python3.9/site-packages/click/core.py", line 829 in __call__
File "/usr/lib/python3.9/site-packages/uvicorn/__main__.py", line 4 in
File "/usr/lib/python3.9/runpy.py", line 87 in _run_code
File "/usr/lib/python3.9/runpy.py", line 197 in _run_module_as_main
#programowanie
Porównaj syslogi . Może Linux czasem czegoś nie zdąży załadować.
@Klopsztanga Wstępnie przeglądałem i nie zauważyliśmy żadnych powiązań z wysypywaniem się a kolejnością uruchamiania systemowych.
Cała aplikacja uruchamia się jest zależna od redisa, który dość późno się uruchamia, więc raczej gdy aplikacje się importują, to już wszystko w systemie prawie wstało.
@wonsz - akurat jak z ręki go uruchamiamy po dłuższym okresie czasu, to problemy raczej nie występują(choć pewni nie jesteśmy). Więc dodanie delayu, pewnie nieco by problem zmniejszyło, ale jest dla nas bardzo ważne jest by ta aplikacja się uruchamiała jak najszybciej jak to możliwe.
@qarmin ok, ale opóżnienia możecie użyć do określenia wymagań środowiska do poprawnego uruchomienia skryptu. jakiś skrypt puścić co weżmie jakieś opóźnienie, zrzuci info o środowisku, spróbuje odpalić skrypt, zanotuje czy się wyjebał, zaktualizuje odpowiednio wartość opóźnienia do kolejnej iteracji, restart...i zostawić na weekend niech napierdala i zbiera dane
Masz to w dokerze? Bo wlasnie po to jest doker zeby nie bylo "u mnie dziala". Jesli nie masz kodu w dokerze to spora szansa ze to naprawi sprawe
@666 Cały system z zależnościami jest zbudowany przez nas przy użyciu Yocto i szans na wgranie dockera tam nie ma.
@qarmin no to moze raz zbudowac z tego skryptu binarke (pod konkretna platforme) tak zeby za kazdym razem nie interpretowac kodu - o ile sie nie myle to python jest interpretowalny? JIT?
Masz cały callstack, weź po prostu sprawdź co dokładnie poszło nie tak w pliku źródłowym.
Zaloguj się aby komentować
Use-case: chcę mieć platformę do taniego i szybkiego publikowania swoich aplikacji w internecie. W tym celu tworzę sobie mini-datacenter w domu oparte na kubernetesie, chwilowo składające się z jednego komputera. Dostęp do niego z publicznego internetu robię przez Cloudflare Tunnel https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/
Chcę żeby setup był rozszerzalny i chcę zachować jak najmniejszy stack technologiczny, bo nie lubię się uczyć rzeczy "od zera". Obecnie zastanawiam się jak załatwić temat relacyjnej bazy danych. Myślałem nad postawieniem postgresa bezpośrednio na baremetalu, ale wydaje mi się że networking żeby potencjalnie dopuścić do niego ruch z kolejnych nodów w przyszłości to będzie tragedia.
#technologia #komputery #siecikomputerowe #programista15k #naukaprogramowania #lajko
@wombatDaiquiri - ja Kubernetesa mam po dziurki w pracy, żeby się z nim jeszcze w domu pierdzielić
Oczywiście z tym Postgres Operatorem od Zalando nie miałem do czynienia - ale patrząc po README.md z GitHuba to wygląda dobrze - możesz opisać co dokładnie Cię w tym urzekło do Twoich zastosowań jak masz tylko jedną maszynę?
Ja jako, że jestem minimalistą to używam Podmana i uruchamiam bardziej skomplikowane rzeczy w podach.
Na Malince 5 z 8GB ramu mam teraz właśnie Postgresa bo postawiłem kilka rzeczy i codzienny backup robię na mojego Bieda-NASa rsynciem (który później też rsynciem jest backupowany na większy serwer tak na wszelki wypadek - już kiedyś opisywałem mój setup i dlaczego tak akurat robię) - mi starcza
Generalnie bardziej staram się zrozumieć co Ty tam próbujesz osiągnąć z tym swoim setupem bo cały wysiłek, który w to wkładasz oceniam bardzo pozytywnie - nie każdemu się chce i nie każdy potrafi - zwłaszcza jeśli to co robisz ma Ci się przydać w pracy i by zarabiać lepszą kasę
@koszotorobur próbuję się wyzbyć metody szukania "poprawnego rozwiązania" więc bardzo dziękuję Ci za Twojego posta.
Generalnie chciałem postawić jakoś instancję bazy danych żebym mógł z niej korzystać w kontenerkach. A dzięki Twojej sugestii zmieniłem trochę zapytanie do google i dostałem tutorial na prostszych komponentach które już z nam więc plan właśnie uległ zmianie https://www.digitalocean.com/community/tutorials/how-to-deploy-postgres-to-kubernetes-cluster
Wysokopoziomowo - jestem programistą. Jestem nieskromnie mówiąc niezły w pisanie programów. Ale całe środowisko w którym te programy były uruchamiane były własnością firmy w której pracowałem. W ten sposób zawsze uczyłem się procedur które ktoś mi przygotował, ale na własne potrzeby nadal korzystałem z `./binarka &` bo w sumie działa.
No i z wiekiem odczuwam potrzebę podzielenia się wiedzą jak tworzyć cyfrowe produkty, ale do tego potrzebuję środowiska uruchomieniowego które uczeń będzie mógł zreplikować i rozszerzać według własnych potrzeb. A i mi się przyda wyrobić opinię i usystematyzować stack bo często ciekawe pomysły upadają jak staję przed wizją pierdół do wykonania zanim się zaczną ciekawe zadania.
@wombatDaiquiri - widzę, że zacząłeś od bardzo wysokiego poziomu abstrakcji i komplikacji, którym jest Kubernetes (nawet w konfiguracji Sinlge Node K8s) - dobrze go oczywiście znać ale do swoich zastosowań często jest to overkill jeśli nie wybrałeś tego rozwiązania świadomie ze wglądu na benefity, które faktycznie Tobie oferuje (a dalej musisz płacić cenę za skomplikowanie projektu).
Ja od zeszłego roku preferuję Podmana zamiast Dockera gdyż Docker wymaga dwóch daemonów ciągle działających na systemie (dockerd oraz containerd) a Podman jest daemonless i może uruchamiać aplikacje od razu w podach (i też można użyć z nim Compose).
Jeśli chodzi o super prosty deployment Postgresa (jak nie masz klastra K8s) to możesz uruchomić go w łatwy sposób z obrazu kontenera tak by mieć data persistance oraz być w stanie zrobić backup.
Utwórz dwa foldery na serwerze ~/postgres_data oraz ~/postgres_backup.
Uruchom kontener:
podman run -p 5432:5432 --name postgres -v ~/postgres_data:/var/lib/postgresql/data -v ~/postgres_backup:/home -e POSTGRES_PASSWORD=<YOUR_PASS> -d docker.io/library/postgres:alpine
A tak wywołać psql w działającym kontenerze:
podman exec -it <CONTAINER_NAME_OR_ID> psql -U postgres
Od tego kroku, droga jest prosta uruchamiania w ten sam sposób narzędza pg_dump lub pg_dumpall czy pg_basebackup (i zrobienia backupu do folderu /home kontenera) a następnie potem zbackupowania dumpa z folderu ~/postgres_backup serwera na innego hosta przy pomocy narzędzia rsync.
Zaloguj się aby komentować
Załóżmy, że jest sobie jakieś tam API udostępniające różne funkcje. API nie jest obiektowe i stanowi po prostu jedną płaską listę funkcji, które można wywołać z różnymi parametrami. Obowiązkowym parametrem każdej funkcji jest identyfikator klienta (pluginu), który funkcję wywołuje.
Chciałem sobie to API jakoś opakować i porobić na jego podstawie jakieś proste obiekty, którymi potem będzie można manipulować, ale nie wiem jak to rozwiązać architektonicznie, głównie przez ten obowiązkowy identyfikator, który trzeba zawsze przekazywać. Każdy jeden obiekt musiałby znać ten identyfikator, więc musiałby być on globalny. Z drugiej strony nie może być za bardzo globalny (np. jako obiekt statyczny), ponieważ teoretycznie w tej samej przestrzeni pamięci będą przebywać różne pluginy z różnymi identyfikatorami. Z kolei przekazywanie identyfikatora jawnie do obiektów za każdym razem trochę mija się z celem, gdyż właśnie tego chcę uniknąć.
Może zetknęliście się kiedyś z takim problemem, albo istnieje jakiś wzorzec na coś takiego?
#programista15k #programowanie #csharp#dotnet #cpp (dla zasięgu)
@MostlyRenegade No to niech sobie każdy obiekt trzyma ten API key - wtedy nie będziesz go musiał za każdym razem do obiektu przekazywać. Różne pluginy w tej samej przestrzeni bdą, oczywiście, musiały korzystać z innych instancji danej klasy.
@sierzant_armii_12_malp Właśnie wymyśliłem, że przecież i tak te obiekty muszę najpierw pobrać funkcją API, a potem wszelkie zmiany zatwierdzić innymi funkcjami, więc już na etapie ich pobierania mogę im przypisać klucz. A gdybym tworzył nowy obiekt, to nic nie stoi na przeszkodzie, aby pobrana kolekcja (w sensie obiekt) również trzymała klucz i przekazywała go obiektom w miarę potrzeby.
Czasem wystarczy napisać posta na hejto i rozwiązanie samo przychodzi ( ͡° ͜ʖ ͡°)
@MostlyRenegade o widzisz, a ja się zastanawiałem dla kogo pisze @elszczepano a pisze dla Ciebie - polecam jego bloga@MostlyRenegade
w większości przypadków wystarczy użyć konstruktora obiektu z parametrem: https://www.frontstack.pl/blog/constructor-design-pattern
dla bardziej specyficznych zastosowań możesz chcieć użyć: https://devszczepaniak.pl/wzorzec-projektowy-builder/ lub https://devszczepaniak.pl/wzorzec-projektowy-factory-fabryka/
@wombatDaiquiri - zaoszczędziłeś mi wymądrzania się
jeśli Cię dobrze rozumiem to możesz to ogarnąć przez clousures albo klasę z konstruktorem zależy czy funkcyjnie czy obiektowo.
edit - wombat dał bardziej kompleksową odpowiedź.
Zaloguj się aby komentować
TypeException("expected 15 constructor parameters ...
( ͠° ͟ʖ ͡°)
#programowanie
@grzmichuj_gniezno pa na to :D
https://github.com/microsoft/referencesource/blob/master/mscorlib%2Fsystem%2Ftuple.cs
Zaloguj się aby komentować
@rayros Ale za co?
Banalny projekt, jakich miliony. Ale to nawet można przeboleć i dać na zachętę. Gdyby nie był niechlujny - masz tam pięć komentów na krzyż, z których niewiele wynika. README zawiera jedynie napis TODO. Więc nie.
@ataxbras poprawię, dam ci znać
@rayros widać napracowanko, widać też inne rzeczy...
@rayros Jak wyjaśnisz co to jest i jak z tego korzystać.
@rayros - ImageMagick z tego raczej nie będzie - ale jest to jakiś początek i można się wiele nauczyć pisząc taki program - chwal się postępami
Zaloguj się aby komentować
Jest sobie aplikacja, do której można pisać pluginy. Wtyczki mają postać bibliotek dll, które muszą eksportować odpowiednie funkcje i muszą znajdować się w odpowiednim folderze w ścieżce aplikacji np. "c:\Aplikacja\plugins\"). Interfejs i API jest natywne, ale mam narzędzie napisane w C#, które chciałem podpiąć. Jedna opcja to użycie jakiegoś starego pakietu z NuGeta (DllExport), które dokleja tablicę eksportów do dotnetowego zestawu, ale pomyślałem, że zrobię po prostu pomost w C++/CLI, z którego będą wywoływał obiekty napisane w C#.
Problem polega na tym, że nie mam pomysłu jak poprawnie skonfigurować ścieżki w projekcie, żeby wszystkie DLLki ładowały się od razu przy starcie wtyczki, bez konieczności ręcznego ładowania zestawów dotnetowych i pokazywania ścieżek. Obecnie zestawy dotnetowe muszą być obok aplikacji wywołującej (w "c:\Aplikacja\"), a chciałbym, aby były folderze z pluginami, albo jeszcze lepiej - w dedykowanym folderze wewnątrz katalogu z pluginami (c:\Aplikacja\plugins\MojaWtyczka\). Oczywiście dobrze by było, żeby wszystkie dll-ki budowały się od razu do docelowych folderów przy debugowaniu.
A może jednak trzeba napisać własny resolver, żeby pokazać, gdzie dotnet ma szukać dll-ek?
#programista15k #programowanie #cpp #csharp #dotnet
@MostlyRenegade https://stackoverflow.com/a/398911
@fadeimageone no właśnie nad czymś takim pracuję: natywna aplikacja zewnętrzna + wrapper C++/CLI i reszta w C#. Chodzi mi natomiast o konkretny problem ze ścieżkami do wszystkich potrzebnych dll-ek. Nie mogą się znajdować gdziekolwiek, gdyż wtedy to nie działa.
I jak teraz na to patrzę, to chyba najefektywniej będzie po prostu napisać własny resolver, w którym będzie wskazana ścieżka do ich wyszukiwania.
Komentarz usunięty
Napisałem kiedyś kalkulator w c++ - w czym mogę pomóc?
Zaloguj się aby komentować
https://www.youtube.com/live/MTAnM0CQywg?feature=shared
#programowanie #chatgpt
Zaloguj się aby komentować
Zostań Patronem Hejto i tylko dla Patronów
- Włączona możliwość zarabiania na swoich treściach
- Całkowity brak reklam na każdym urządzeniu
- Oznaczenie w postaci rogala , który świadczy o Twoim wsparciu
- Wcześniejszy dostęp, do wybranych funkcji na Hejto
Aż się pochwalę. Siedziałam nad tym 4 godziny. jeszcze nie skończone bo docelowo ma odczytywać pliki z danymi na temat pogody i w analizie podawać np średnie ciśnienie spośród tych w pliku. Ale cel główny: zaimplementować słabe wiązania do przeglądania i analizy plików spełniony
Na zdjęciach widać że można wybrać plik z podanego folderu i wyswietla się pewna zawartość pliku oraz analiza pliku.
co pozostało:
-
utworzyć foldery o odpowiednich nazwach
-
wygenerować pliki z danymi
-
napisać metodę analizującą dane pogodowe
-
uruchomic program z roznymi opcjami VM
-
zebra dane w pliku readme
-
utworzyc projekt na gitlabie
-
wrzucic wszystko do gitlaba
No i jest jeszcze drugi projekt do zrobienia... chodz mysle ze z tego projektu to sie nie bee bawic w ta pogode i powiem ze poprosze trzy, a jak się zapyta czemu to powiem że wolałam pisać posty na hejto lol (nie no nie powiem tak)
@camonday - BTW czemu GitLab a nie GitHub tak jak każdy obecnie? - nie to że mam coś do GitLaba bo hostowałem go przez lata i ze swoim CI/CD był lata przed GitHub Actions.
@koszotorobur na gitlabie można mieć konto uczelniane z logowaniem przez e-science i łatwiej jest prowadzącemu zebrać wszystkich w gitlabie połączonym z e-science i mieć maile studenckie do wszystkich
@camonday - ma to sens
A nie lepiej zacząć od projektu na gitlabie i od razu pushować tam wszystkie commity?
@Shivaa problem taki że zaczęłam w zeszły czwartek (to już drugie laby) a uczelnianego gitlaba wskrzesili w ten piątek
ja na studiach wszystko od razu na repo wrzucałem po tym jak raz mi dysk padł, a termin oddania pracy był za 2dni XD
@camonday nie masz błędu przesunięcia o 1? Wczytujesz plik, który ma: `1, 2, 3, ., ., .` znaki. Dla mnie to 6: 3 liczby 3 kropki. Czyli pewnie iterujesz od 0.
Zaloguj się aby komentować