#programowanie

232
1496
Nie tak dawno temu dokonałem czegoś niemożliwego - znalazłem błąd który był w obcej bibliotece, a nie w moim kodzie.

Na jednym ze starych armów których używamy, odkryliśmy bład w pythonowym programie, gdzie podczas testowania punktów poza okręgiem o promieniu 30, niekiedy wartości wyskakiwały poza skalę.

W okręgu r<30 mamy ~60 punktów z wartościami, które im dalej od środka, tym bardziej się powinny zmniejszać. Dla punktów spoza okręgu r>30 musimy to ekstrapolować, bo do nich danych nie mamy.

Lokalnie na komputerze wszystko mi działało, choć metoda ekstrapolacji wartości RBFInterpolator(korzystamy ze starszej wersji scipy - nie możemy jej niestety łatwo podnieść na urządzeniu, by przetestować czy została naprawiona) dawała nieco niepoprawne i zawyżone wyniki.

Dla pewności ujednoliciłem wersje wszystkich pakietów(głównie zależności pośrednich, bo główne zależności były w tej samej wersji) pomiędzy urządzeniem i komputerem, jednak nie przyniosło to żadnej poprawy.

Przełożony na wieść że nie występuje problem lokalnie, zasugerował bym upewnił się że wszystko lokalnie sprawdzam z tymi samymi parametrami co na urządzeniu. Niezbyt wziął pod uwagę moje wątpliwości co do tego, że może jest to wina biblioteki - szczerze mówiąc się mu nie dziwię, bo z jego strony nie wyglądało to zbyt dobrze - gościu tylko od roku programujacy mówi że być może to nie jego wina i problem może występować w jednej z najpopularniejszych bibliotek pythona i w issues na githubie nie było nawet jednego podobnego wątku.

Ostatecznie udało mi się zilustrować wartości w siatce w kwadracie (od -100 do 100) przy użyciu matplotlib, gdzie widoczne było że na komputerze wartości w miarę regularnie zmniejszają w miarę oddalania od środka. W przypadku urządzenia ARM, wartości promieniście odchodzące z kątów 0,90,180,270 stopni poza okręgiem(r>30), są wybite poza wszelkie granice.

Wygląda więc że w przyszłości będziemy musieli, zainstalować na produkcyjnym sprzęcie pytest, by sprawdzić czy wszystko działa tak jak powinno na armowym urządzeniu, skoro nikomu już nie można wierzyć.

#python
#programowanie
b48a7301-09cf-499d-ab8f-77e27bef38f0
ZohanTSW

Niesamowite że ktoś pomyślał że może z tym nie być problemu - zawsze powinno się budować, uruchamiać testy na docelowym sprzęcie (przecież tam będzie to wszystko działać na nie na kompie programisty lol). Dobrym pomysłem jest nawet redundancja, macie joba który uruchomi testy na x86_64 i joba na ARM, oba muszą przejść. Gdybyście kompilowali, to również im więcej kompilatorów tym lepiej. W embedded trzeba spodziewać się niespodziewanego.

A już totalną ignorancją okazali się prowadzący ten projekt jeśli uruchamiacie testy na 64 bitowej platformie, a docelową platformą jest 32 bitowy ARM

Ilirian

Najgorzej jak znajdziesz buga w Firefoxie i okazuje się że podobny błąd został zgłoszony w 2006 roku i od 18 lat toczy się pod nim dyskusja. Co jakiś czas ktoś pyta kiedy to będzie naprawione, następnie ktoś z mozilli odpowiada że nad tym pracuje by za dwa lata znowu dostać pytanie o postępy xD


Zauważyłem np że firefox na androidzie bardzo często odświeża strony po powrocie do niego, tak jakby od razu po przeskoczeniu do innej apki czyścił dane strony z pamięci. Oczywiście zgłoszony bug wisi od paru lat w backlogu bo niby ważny błąd ale jakoś tak nie umieją go odtworzyć


(sorki za offtop xD)

sadamasin

Używacie biblioteki scipy i się dziwicie… zaciągnijcie normalnie z github a nie z jakiejś cipy…

Zaloguj się aby komentować

Powerful Python One-Liners

A z jakich jednolinijkowców Wy korzystacie?

#technologia #programowanie #python
24e4fc68-4929-4a23-96a5-695c3f34cd1b
wonsz

import itertools, more-itertools

def

Jedyne do czego używam pythona python3 -m http.server

sebie_juki

@koszotorobur sudo cat /dev/random > /dev/sda1

Zaloguj się aby komentować

Specjalne zyczenie dla @Dzemik_Skrytozerca zostalo spelnione: (nie wiem co tam moglo Cie zaciekawic) tekst z rosyjskojezycznej #pravda

Vladislav Avdeev: zrozumienie starszych systemów
Jeden z liderów społeczności IT mówił o starszych systemach
 7:53
NAUKA.
Obecnie legacy-code jest palącym tematem w świecie IT. Czym jest, jakie jest jego miejsce w branży, jak z nim pracować i jakie wyzwania stawia przed najlepszymi programistami? Vladislav Avdeev, jeden z liderów społeczności IT, który ma ponad 10-letnie doświadczenie w branży fintech, przemyśle kosmicznym i nauce, pomógł nam zrozumieć te pytania.
- Co stanowi "dziedzictwo" i jak je postrzegasz?

- Branża dość jasno definiuje główne kryteria legacy: przestarzały stos technologii, niespełnianie przez legacy nowoczesnych wymagań, przestarzałe podejście do rozwoju oprogramowania, słaba dokumentacja lub jej brak.

- Pojawia się jednak również szereg pytań natury filozoficznej: kiedy dokładnie nowoczesne oprogramowanie staje się starsze, być może po upływie określonej liczby lat? Jeśli system informatyczny jest kompetentnie napisany w starym, niewspieranym języku programowania, ale spełnia wszystkie wymagania - czy jest to legacy? A jeśli jutro grupa hakerów znajdzie poważną lukę w najnowszej wersji systemu operacyjnego, czy system ten z dnia na dzień stanie się starszym produktem ze względu na niezgodność z wymogami bezpieczeństwa?

- Uważam, że legacy to proces, któremu podlega każde oprogramowanie od samego wydania, a czasem nawet na etapie rozwoju. Dlatego zadania związane ze spuścizną są bardzo zróżnicowane: od "zaktualizuj kilka linijek kodu, ponieważ framework został zaktualizowany" do "ostatni raz programista był tutaj 20 lat temu".

- Dziedzictwo naprawdę ma swoją własną filozofię! Jak często spotykasz się z nią w swojej pracy?
- W takim czy innym stopniu - w prawie każdym dużym projekcie, ponieważ często jestem głęboko zanurzony we wszystkich aspektach rozwoju. Od czasu do czasu mam bardzo duże projekty, których celem jest albo całkowite przepisanie systemu o krytycznym znaczeniu dla biznesu, albo jego refaktoryzacja - aktualizacja.

Z reguły takie projekty należą do najtrudniejszych. Czasami mamy do czynienia ze starym kodem w przestarzałych językach sprzed 30 lat, który, sądząc po jego objętości, oblicza inflacyjny model wszechświata. Wtedy trzeba zebrać zespół doświadczonych programistów. Ale wszelkie problemy związane z dziedzictwem można rozwiązać przy odpowiednim podejściu. Wierzę, że poważne, udane doświadczenie z dziedzictwem jest znakiem rozpoznawczym starszego programisty.

- Czy to prawda, że deweloperzy starają się unikać pracy związanej z dziedzictwem i dlaczego? Czy ty unikasz takich projektów?
- Tak jak ty wolisz pracować na nowoczesnym komputerze, tak programiści wolą pracować z nowoczesnym stosem. Ponadto praca ze starszymi rozwiązaniami jest poważnym wyzwaniem, które wymaga specjalnych umiejętności. Są to główne powody, które mogą powodować odrzucenie wśród deweloperów. Jednocześnie złożone projekty legacy są często możliwe tylko dla bardzo wybitnych profesjonalistów, ale tacy profesjonaliści mogą sobie pozwolić na wybór spośród wielu innych projektów i często nie poprzestają na legacy. Podczas gdy młodsi, średni, a nawet niektórzy starsi programiści nie mają niezbędnej wiedzy i doświadczenia.

Jeśli chodzi o mnie - nie unikam projektów związanych z dziedzictwem, ale podchodzę do nich selektywnie: niektóre z nich mogą stanowić wyzwanie dla mojego doświadczenia lub dać mi możliwość wdrożenia innowacyjnego podejścia lub pomysłu, który chciałem wdrożyć od dawna. Unikam projektów o niepewnych wymaganiach i takich, które naruszają normy etyczne, ale nie mają nic wspólnego z dziedzictwem jako takim.

- Czym różni się proces rozwoju w przypadku legacy i jakich metod używasz?
- Ogólnie rzecz biorąc, każdy proces tworzenia oprogramowania jest iteracyjny i wygląda podobnie, ale każdy kierunek ma swoje osobliwości. Praca ze starszymi systemami poprzedzona jest dokładną analizą bazy kodu, a także zebraniem istniejącej dokumentacji i jej uzupełnieniem. W niektórych przypadkach część rozwoju może odbywać się w języku używanym przez starszy system: na przykład w celu pokrycia go testami, jeśli z jakiegoś powodu inne opcje nie są odpowiednie. Wiele zależy od zadania: zawsze trudniej jest całkowicie przepisać legacy, ale w niektórych przypadkach jest to najbardziej odpowiednie rozwiązanie niż refaktoryzacja.
Mówiąc o metodach, preferuję nowoczesne zautomatyzowane podejścia wszędzie tam, gdzie jest to możliwe. Najczęściej dla każdego dużego projektu tworzę osobne narzędzia do autoanalizy bazy kodu, które są parserami i zestawami skryptów do tworzenia schematycznej reprezentacji projektu, jego poszczególnych części i ich wzajemnych zależności. To samo podejście stosuję w przypadku przepisywania kodu, ale tutaj sprawa wygląda o wiele bardziej skomplikowanie, ponieważ tak naprawdę mówimy o tworzeniu translatorów kodu z jednego języka programowania na inny. Tworzenie takich narzędzi do automatyzacji wymaga sporo czasu, ale takie podejście wielokrotnie przyspiesza pracę nad dużym projektem. Ponadto taka praca jest inteligentna i angażująca. Ponadto uważam, że zastosowanie technologii sztucznej inteligencji jest najbardziej obiecującym podejściem w takich zadaniach i od czasu do czasu eksperymentuję z trenowaniem modeli sieci neuronowych. Podejście to wciąż ma jednak nierozwiązane problemy, które czynią je nieefektywnym.

- Jak złe jest podejście manualne i dlaczego nie można skorzystać z gotowych rozwiązań lub doświadczeń z innych projektów?

- Podejścia manualne są możliwe i niestety nadal często się do nich uciekają - jest to również powód, dla którego programiści nie lubią legacy. W niewielkim stopniu ręczne podejście jest nieuniknione niezależnie od stosowanych metod, ale jeśli mówimy o moich najbardziej "ciężkich" projektach legacy liczących 200-250 tysięcy linii kodu, całkowicie ręczna praca zajęłaby wiele miesięcy i żaden kompetentny specjalista po prostu nie podjąłby się zrobienia tego w ten sposób. Jest to sprzeczne z samą istotą programowania: wszystko, co można zautomatyzować, musi zostać zautomatyzowane.

Oczywiście istnieją gotowe translatory kodu i już dostępne rozwiązania z innych projektów. Ale wszystko to rzadko może być z powodzeniem wykorzystane ze względu na wspomnianą różnorodność dziedzictwa, które może być kodem napisanym w dziesiątkach języków i mieć wiele unikalnych cech architektonicznych. W tym miejscu jeden projekt legacy różni się od drugiego. Jest to również jeden z powodów, dla których wykorzystanie technologii sieci neuronowych wciąż nie jest wystarczająco wydajne, ponieważ wymagają one rozległego i, co najważniejsze, wysokiej jakości próbkowania danych, co z definicji rzadko może zapewnić starszy kod.

- Jak widzisz przyszłość starszego kodu?

- Tak szybko, jak rozwija się branża, tak szybko "rośnie" spuścizna. Ale spuścizna jest nie tylko obciążeniem, ale także cennym dziedzictwem branży. Pomimo faktu, że nowoczesne podejścia do rozwoju zmniejszają jego negatywny wpływ, a kod starzeje się teraz znacznie wolniej, nie możemy łatwo odrzucić tej spuścizny, ponieważ pod wieloma względami jest ona podstawą naszych osiągnięć. Znajdujemy coraz skuteczniejsze sposoby radzenia sobie ze spuścizną, a technologie sztucznej inteligencji wkrótce sprawdzą się również tutaj. Dziedzictwo jest nieuniknionym elementem naszej branży i uczymy się na nim, aby stać się jeszcze bardziej wydajnym i innowacyjnym.
#programowanie #rosja
26888de4-c0b1-4213-bc7b-c40c9c36b849
Dzemik_Skrytozerca

Dzięki. Zadziwiająco dobry tekst. Ogólniki, ale podane w sposób, ktory ułatwia przyswojenie.


Artykuł wyraźnie nie przystaje do pozostalych.

Zaloguj się aby komentować

#programowanie
czy jeżeli sprzedaje swój kod za pieniądze
a mój kod ssie, i ciągle sie pierdoli
to czy zostałem właśnie sutenerem dla mojego kodu?
#heheszki
Gepard_z_Libii

Nie, a zamiast ciupać programy powinieneś zająć się handlem

NiebieskiSzpadelNihilizmu

@redve123 ostrożnie- stręczycielstwo jest w Polsce na cenzurowanym Co nie zmienia faktu, że jak to obudujesz w jakiegoś vtubera, to możesz założyć temu czemuś konto na OF. Nic nie mówię. ¯\_(ツ)_/¯

cododiaska

@redve123

mój kod ssie, i ciągle sie pierdoli

przestań pisać w php

Zaloguj się aby komentować

Piszę licencjat z matematyki, w którym opisuje sposoby proceduralnego tworzenia treści w grach, tak żeby twórca gry miał jak najwięcej kontroli nad tym, w jaki sposób świat się "losowo" wygeneruje (czyli przykładowo, jak w optymalny sposób wygenerować układ planet w kosmosie, zużywając możliwie jak najmniej pamięci, albo jak wygenerować losowe próbki o zadanym rozkładzie prawdopodobieństwa).

Narazie mam kilka stron, ale szukam dodatkowych źródeł. Macie propozycje gdzie, poza google scholar szukać metod tworzenia losowych światów, układu mapy, przeciwników etc. ?
Znacie jakieś ciekawe algorytmy?
#matematyka #programowanie taguje bo taguje też tych co siedzą w game devie, i zajmowali się tym od technicznej strony #gamedev
moll

@redve123 sprawdź materiały od devów Warfarme. Oni tak zaprojektowali generowanie map statków i lokacji.

Może poza live streamami coś jeszcze wydłubiesz

Vakarian

@redve123 poszukaj wykładów na kanałach youtube konferencji gamedevowych - z polskich to digital dragons i game industry conference, z zagranicznych np. GDC

Sam taki wykład może być mocno ogólny, ale często na końcu będziesz miał źródła lub kontakt do prelegenta np. na X czy maila


https://www.youtube.com/@DigitalDragonsForGamedev/featured

https://www.youtube.com/@RPGPP

https://www.youtube.com/channel/UC0JB7TSe49lg56u6qH8y_MQ

l__p

@redve123 spróbuj scite.ai

Zaloguj się aby komentować

Dobra zrobilem lepszy risercz dotyczący uzywanych laptopów

i w cenie 7,5-8,5k pln

można kupić

nowego g15 z i9 13 generacji i karta 4070 8gb

albo

pochodzacego z zeszlego roku alienware 17 z i9 12 generacji i karta 3080ti 16gb

karty wg wszystkich rankingow sa mocno porownywalne, zajmuja odpowiednio 65 i 67 miejsce (wersje mobile)

i rodzi sie pytanie, czy lepiej kupic alienware ze wzgledu na lepsze wykonanie i miec model z zeszlego roku czy jednak postawic na 100% brand new serie G

no i w seri G mamy mniejszy laptop co ma zarówno plusy jak i minusy

#komputery #pcmasterrace #programowanie
Mefiaczek

Może jeszcze sprawdź ofertę lenovo z aktualniejszą ofertą, mam takiego 5 pro 16" z i7 12700 i rtx 3070, ddr5 i śmiga pięknie po dłuższym użytkowaniu, wykonanie laptopa i chlodzenie też bym uznał za solidne w tych lapkach.

forAwhile

Osobiście brałbym lapka z kartą, która ma większy zapas vramu, zwłaszcza jeżeli w rankingach wypadają bardzo podobnie do siebie pod względem wydajności... według mnie lepiej się zestarzeje, a co do samego frame gen, z tego co się orientuję, to domyślnie nie jest to wspierane, ale i tak da się to uruchomić 😉 toć to sam gtx 1060 miał wersję 6 GB, a jest to karta z 2016 roku, trochę niepoważne jest ładować tylko 8 GB do 4070 w dzisiejszych czasach

Catharsis

Było ankietę zrobić to byś się więcej dowiedział bo komu się chce pisać komentarz. Sam bym wziął tego Alienware. A tak wgl to zapytam kontrolnie czy sprawdziłeś jakie TGP mają oba układy graficzne w tych konkretnych laptopach? Bo jak wiadomo, nie sama karta gra ale też zasilanie jej i jeżeli karta nie dostanie max mocy to będzie miała gorszą wydajność.

Zaloguj się aby komentować

Co tutejsze grono programistyczne gejmingowe sądzi o zakupie łapka alieware po odświeżeniu +/- 8k plnow

Na nowego alieware mi nie starczy więc patrzyłem na powystawowki i poleasingowe

#komputery #programowanie #darmowegry
VonTrupka

a jak osiągowo i cenowo wygląda w porównaniu do delli z serii G?

ErwinoRommelo

@Sweet_acc_pr0sa kumpel dawno temu kupil aliena z 2giej reki, jeszcze jak byly te z gruba dupa. Niby sie wieszal przy heavy loadzie, a dzban wlasciciel zgubil zasilacz i za slaby zamiennik kupil. Lapek chodzi do dzisiaj 9 lat juz go ma. Wymienil tylko grafike, u aliena dostal servicbooka z prostymi instr jak zmienic kazdy komponent. Niewiem jak z nowymi modelami.

jestem_na_dworzu

@Sweet_acc_pr0sa kupujesz potężnego peceta za sensowne pieniądze i używasz. Jeżeli potrzeba, to tani lapek i łączysz się zdalnie z PC. Wychodzi taniej i lepiej.

Zaloguj się aby komentować

Korzystał ktoś z samby(libsmbclient) z wielu wątków?

Chciałem w każdym uruchomionym wątku, stworzyć sobie klienta łączącego się z serwerem, przesyłającego jakieś kilku megabajtowe pliki a na końcu zamykający połączenie.

Jednak zauważyłem że wywoływanie smbc_new_context z wielu wątków jednocześnie, powoduje problemy z pamięcią i wysypywanie się programu a nie znalazłem innej metody na łączenie się z serwerem i przesyłanie danych.

Próbowałem grzebać w bindingach które używamy, ale nie udało mi się nic zdziałać - issue https://github.com/veeso/pavao/issues/17

Obecnie w programie dodaję globalnego locka na operacje i tylko jedna na raz może się wykonywać.

Czy samba jest ograniczona do działania tylko w jednym watku w programie, czy może to błąd nakładki której używam, czy może istnieje jakaś opcja do uruchomienia wsparcia wielu wątków?

#samba
#jezykc
#programowanie
koszotorobur

@qarmin - ale do przesyłania plików weź ty użyj czegoś normalnego jak scp, rsync, robocopy, gołe SSH, sftp a nawet ftp(s).

Zaloguj się aby komentować

Pytanko do kozaków od #programowanie

Jest sobie taki program jak gerbv, ma swoją stronę na githubie
https://github.com/gerbv/gerbv

Umie on przeanalizować plik w sposób, który mi odpowiada, ale wyświetla to w formie debilnej tabelki, której nie da się skopiować. Chciałbym sobie dorobić guzik z eksportem do csv, ale nie wiem jakiego narzędzia potrzebuję, żeby ten projekt wygodnie otworzyć, dopisać co trzeba i skompilować. nigdy nie pisałem w C pod windowsa. Mógłby mnie ktoś pokierować?
MostlyRenegade

jakiego narzędzia potrzebuję

@Felonious_Gru fprintf() ( ͡° ͜ʖ ͡°)

Felonious_Gru

@MostlyRenegade ( ͡° ͜ʖ ͡°)

Fprintf mi nie skompiluje projektu, ale zaiste się przyda

MostlyRenegade

@Felonious_Gru jeśli to było robione pod gcc, to najszybciej będzie chyba użyć MinGW. A edytor to już dowolny.

rayros

Załóż autorowi projektu issue I poczekaj aż zrobi ( ͡° ͜ʖ ͡°)

Felonious_Gru

@rayros z pewnością, skoro od lat wiszą pull requesty ( ͡° ͜ʖ ͡°)

koszotorobur

@Felonious_Gru - Readme przecież mówi jak program został skompilowany na Windowsa:

Windows 10 (amd64 cross compiled from Fedora as well as native x86/amd64 using MSYS2)

Instalujesz więc środowisko https://www.msys2.org/ na Windowsie i w nim z linii komend kompilujesz.

Felonious_Gru

@koszotorobur dziękuję

koszotorobur

@Felonious_Gru - daj znać jak kompilowanie poszło

Zaloguj się aby komentować

Niecały rok temu, pokazałem szefostwu że może warto było użyć Rusta w jednym projekcie zamiast na maxa optymalizować pythona, z którym mieliśmy od groma wydajnościowych problemów, ale przez długi czas odpowiedzią było "nie", bo to nie jest nam potrzebne(kolega optował za C++ i całe szczęście jego pomysł miał bardziej stanowcze "nie" - zbyt wiele wycierpiałem by używać go jako głównego języka w projekcie który tworzę).

Dopiero pół roku temu najbardziej krytyczne części powoli zaczęły być przepisywane na ten język i jak można było przewidzieć, problemy wydajnościowe przy naszym używaniu programu prawie nie występują.

Obecnie projekt ma ~50k linii w pythonie i ~10k linii w rust i szefostwo uznało, że najwyższy czas przepisać to na rusta, skoro tak dobrze się sprawdza i naprawi kilka pomniejszych błędów i oczywiście jako jeden z tych co zna ten język, znaczna część pracy przypada mnie.

Minusem jest to że jest od groma przy tym roboty na kilka miesięcy i być może to w 100% nie będzie to działało identycznie jak wcześniej(a powinno).
Plusem jest to że w końcu zaczynam się naprawdę uczyć tego języka - przy robieniu projektów dla zabawy nie musiałem zbytnio się przejmować stylem, a tutaj nie dość że trzeba pisać programy tak, by się samemu je rozumiało, to trzeba zrobić je tak by inni je zrozumieli - a rust czasami bywa trudnawy do zrozumienia.

#programowanie
#rustlang
krokietowy

@Giblet5280 Na początku myśleliśmy żeby zrobić jedną aplikację z dwoma językami, jednak to by komplikowało proces budowania i oprócz błędów z rusta i pythona, dodawało błędy z warstwy pośredniej, więc obecnie mamy dwa osobne serwisy o bardzo podobnej odpowiedzialności.


Najprawdopodobniej byśmy użyli PyO3 - https://github.com/PyO3/pyo3, gdybyśmy szli w tę stronę.

Astro

@krokietowy wybacz za bezpośrednie pytanie ale czy dostałeś znaczącą podwyżkę? Bo to chyba najlepszy moment na negocjacje.

Pokazałeś dużo zapału, warto by ktoś go docenił.

krokietowy

@Astro Podwyżka była, ale przed ostateczną decyzją o przepisaniu i raczej była związana z rosnącym moim stażem pracy i odejściem jednego ze współpracowników.


W sumie, nawet gdyby nie było podwyżki, to i tak bym został tam dłuższą chwilę, bo pracuje mi się tam po prostu dobrze, w fajnej atmosferze, robię w miarę ciekawe projekty i się dużo uczę(przyszedłem jako junior i od początku cisnęli mnie, bym się uczył robić dobry software, a nie że dali mi klawiaturę i kazali po prostu robić taski, by po prostu działały).

Astro

@krokietowy no to powinieneś poprosić o podwyżkę w związku z projektem.

Po pierwsze żeby doceniali wagę pracownika.

Po drugie żebyś ty nie czuł sie wydymany gdy pracy i komplikacji będzie przybywało wraz ze zmianami.

A po trzecie żeby nie psuć rynku :)

rm-rf

@krokietowy no wszystko spoko tylko jest jedno ale - uczenie się języka na produkcyjnej aplikacji to koniec końców i tak jej pisanie raz jeszcze po skończeniu nauki. Niestety znam to

krokietowy

@rm-rf Pythonową wersję robiłem w dużej części sam i to była moja pierwsza styczność z pythonem, ale niemal każdy MR był czujnie sprawdzany przez bardziej obeznanych programistów i ostatecznie, mimo że nie jest to ósmy cud świata, to kod jest w miarę czytelny i wystarczająco łatwy do modernizacji i gdyby nie problemy wydajnościowe, to by został na miejscu.


Z rustową wersją powinno być dużo łatwiej, bo mam więcej doświadczenia, zarówno w rust jak i pisaniu aplikacji, a oczy które sprawdzają MR się nie zmieniły, więc nie sądzę by został stworzony program który trzeba by było później przepisywać

rm-rf

@krokietowy a kompilowaliscie to do jakiejś implementacji c Pythona tak z ciekawości?

Zaloguj się aby komentować

Dodałem na główną sortowanie po popularności ogłoszenia. Algorytm użyłem z posta na stack overflow https://stackoverflow.com/questions/11128086/simple-popularity-algorithm

Ciekawie to teraz wygląda, ciągle coś nowego na głównej się pojawia, ale chyba muszę odfiltrować boty z wyświetleń. Tu można zobaczyć efekt:
https://mamrzeczy.pl

#programowanie

Zaloguj się aby komentować

Mam problem w github CI, że projekt który kompiluję bierze całą dostępną przestrzeń dyskową.

Używam C++ i problem występuje przy linkowaniu - nie ważne czy używam lld, gold czy mold, zawsze jest to samo.

Da się coś na to zaradzić? Np. jest jakiś krok przed linkowaniem, który usuwa pliki źródłowe i zostawia tylko to co potrzebne do linkowania?

To jest krok z budowaniem aplikacji z address sanitizerem, więc nie mogę wyciąć żadnej opcji, która zmniejszyłaby rozmiar binarki.

#programowanie
#cpp
mike-litoris

@krokietowy ustaw sobie ramdysk jako target do kompilacji, tam przechowywanie objfile zlinkują sięjak trzeba a po tym procesie zyskasz binarkę na fizycznym storage'u

krokietowy

@mike-litoris Ramu w github CI jest chyba tylko 7GB i większość jest używana, więc raczej to nie jest mozliwe(nie wiem czy ramdysk w CI jest możliwy do zrobienia)

mike-litoris

@krokietowy do rzeczy, jaki masz błąd, ile logów jesteś w stanie załączyć?

m_h

A nie dałoby rady budować bibliotek (.a) z poszczególnych komponentów i na koniec z linkować je do końcowej binarki?

mike-litoris

@m_h a czasem nie tak działa proces kompilacji i linkowania wszystkich śmieci do ELF'a?:D

groman43

@krokietowy Z czystej ciekawości, co to za projekt. Bo to musi być niezła kobyła, w co nie za bardzo chcę mi się wierzyć.

vinclav

@groman43 podpinam się

krokietowy

@groman43 Ano kobyła, dużo zależności nie linkowanych dynamicznie, ale wklejanych bezpośrednio w projekt.

Razem z zależnościami, ma 1.8 miliona linii w C i podobną ilość w C++.

Niestety projekt prywatny, więc nie mogę udostępnić.


@mike-litoris


Bezpośredni błąd to:

Unhandled exception. System.IO.IOException: No space left on device : '/home/runner/runners/2.315.0/_diag/Worker_20240410-010354-utc.log'

  at System.IO.RandomAccess.WriteAtOffset(SafeFileHandle handle, ReadOnlySpan`1 buffer, Int64 fileOffset)

  at System.IO.Strategies.BufferedFileStreamStrategy.FlushWrite()

  at System.IO.StreamWriter.Flush(Boolean flushStream, Boolean flushEncoder)

  at System.Diagnostics.TextWriterTraceListener.Flush()

  at System.Diagnostics.TraceSource.Flush()

  at GitHub.Runner.Common.TraceManager.Dispose(Boolean disposing)

  at GitHub.Runner.Common.TraceManager.Dispose()

  at GitHub.Runner.Common.HostContext.Dispose(Boolean disposing)

  at GitHub.Runner.Common.HostContext.Dispose()

  at GitHub.Runner.Worker.Program.Main(String[] args)

System.IO.IOException: No space left on device : '/home/runner/runners/2.315.0/_diag/Worker_20240410-010354-utc.log'

  at System.IO.RandomAccess.WriteAtOffset(SafeFileHandle handle, ReadOnlySpan`1 buffer, Int64 fileOffset)

  at System.IO.Strategies.BufferedFileStreamStrategy.FlushWrite()

  at System.IO.StreamWriter.Flush(Boolean flushStream, Boolean flushEncoder)

  at System.Diagnostics.TextWriterTraceListener.Flush()

  at GitHub.Runner.Common.HostTraceListener.WriteHeader(String source, TraceEventType eventType, Int32 id)

  at GitHub.Runner.Common.HostTraceListener.TraceEvent(TraceEventCache eventCache, String source, TraceEventType eventType, Int32 id, String message)

  at System.Diagnostics.TraceSource.TraceEvent(TraceEventType eventType, Int32 id, String message)

  at GitHub.Runner.Worker.Worker.RunAsync(String pipeIn, String pipeOut)

  at GitHub.Runner.Worker.Program.MainAsync(IHostContext context, String[] args)

System.IO.IOException: No space left on device : '/home/runner/runners/2.315.0/_diag/Worker_20240410-010354-utc.log'

  at System.IO.RandomAccess.WriteAtOffset(SafeFileHandle handle, ReadOnlySpan`1 buffer, Int64 fileOffset)

  at System.IO.Strategies.BufferedFileStreamStrategy.FlushWrite()

  at System.IO.StreamWriter.Flush(Boolean flushStream, Boolean flushEncoder)

  at System.Diagnostics.TextWriterTraceListener.Flush()

  at GitHub.Runner.Common.HostTraceListener.WriteHeader(String source, TraceEventType eventType, Int32 id)

  at GitHub.Runner.Common.HostTraceListener.TraceEvent(TraceEventCache eventCache, String source, TraceEventType eventType, Int32 id, String message)

  at System.Diagnostics.TraceSource.TraceEvent(TraceEventType eventType, Int32 id, String message)

  at GitHub.Runner.Common.Tracing.Error(Exception exception)

  at GitHub.Runner.Worker.Program.MainAsync(IHostContext context, String[] args)


Jednak przy bliższym przepatrzeniu, okazało się że to nie bezpośrednio problem linkowania, ale kopiowania po linkowaniu - nie mogę niczego podobnego znaleźć w sconstruct(używamy scons) i wygląda mi to trochę jakby to sam scons wykonywał to topiowanie


scons -j2

Linking Static Library core/libitem.x86_64.a ...

Ranlib Library core/libitem.x86_64.a ...

Linking Program bin/project.x86_64 ...

scons: done building targets.

[Time elapsed: 0034.621]

cp: error writing '../project.x86_64': No space left on device

Zaloguj się aby komentować

Witam serdecznie! Tak jak wspomniałem ostatnio brałem udział w game jamie, był to mój pierwszy jam ever.

Otóż dziś zaczął się etap głosowania, więc można zagrać w każdą dodaną grę.
DODANO ICH PONAD 500! Jest w czym wybierać
Są tam gry małe i słabe ale też większe i bardzo fajne - niektóre z lepszą oprawą, inne z gorszą.

Jedną z takich wg. mnie perełek jest Fish Train:
https://individualkex.itch.io/fishtrain

Jeśli macie chwilę to polecam zagrać w dowolną:
https://itch.io/jam/fishfest/entries

W komentarzu dodam też link do gry którą ja zrobiłem.

#gry #darmowegry #gamedev #programowanie #diy #hobby

Czy zagrałeś w jakąś grę z powyższego linku?

15 Głosów
Tylko-Seweryn

@Vuaaas powiem tak, zajebiscie ten fishtrain działa na telefonie. A no I to jest mobilny Sonic Dash, nawet ringi, kraby, styl rozgrywki jest taki sam xd

Catharsis

@Vuaaas Zastanawiałem się czemu wszystkie gry są z rybami a potem zobaczyłem nazwę tego jama xD

24c6189e-7606-45a7-aeb3-de325afbe4c1
Felonious_Gru

@Vuaaas nie grałem, ciekawa sprawa

Zaloguj się aby komentować

Czołem koledzy linuksiarze. Pojawiła się opcja przejścia na nowe Teamsy dla appki PWA!

Wstępnie polecam, chodzi szybciej, a powiadomienia działają dużo lepiej! Oczywiście to nadal gówno PWA, ale lepszy rydz niż nic.

Miłego dnia pracy!

#linux #microsoft #programowanie
CyberDomino userbar
7bc2869d-5e36-4b6a-b96a-c4b41e331db7
Vuaaas

@CyberDomino Podeślesz jakiegos linka albo dasz tipa jak to uruchomić? Ostatnio używałem appki linuksowej, potem przestali ją wspierać i używałem przeglądarki a teraz mam na FireFoxie informację że moja przeglądarka nie jest wspierana a mam 124.0.2 xd

CyberDomino

kurcze, to chyba tylko chromium based

jak wejdziesz tu:

https://teams.microsoft.com/

to tam się w lewym górnym rogu pojawi ten przełącznik z obrazka

mike-litoris

@CyberDomino https://github.com/IsmaelMartinez/teams-for-linux

trochę mniej gówniane PWA


a tak w ogóle to na archive.org jest jeszcze do pobrania .deb z "klasycznym" teamsem. niecierpliwie czekam aż ktoś mądrzejszy ode mnie przepisze funckjonalność calli + czatów na coś niewebowego, tak jak Ripcord dla Slacka i Discorda.

Zaloguj się aby komentować

eloszka #programowanie jak robicie migracje #bazydanych ? każda technologia mile widziana #ankieta dla zasięgów xD #gownowpis też

ja dopisuję swój własny kod jako jedną z komend możliwych do wywołania w zbudowanej binarce, potem wywołuję przy starcie instancji #golang

Jak robisz migracje?

92 Głosów
psalek

@wombatDaiquiri Django spięte z CI/CD.

rm-rf

No zależy. Update u mnie dzielą się na 2: te co można cofnąć i te, których nie da rady cofnąć ze względu na zależności z aplikacją. Każda migracja leci w blue/green deployment razem z softem, gdzie pierw migruje się kopia bazy, później testy, później apka i testy i przelaczenie blue green apkii. Liquibase na migracjach db. Jak testy nie przechodzą to nie przełącza Blue green. Baza leci ze snapshot z aws pierw do testów a później leci migracja na produkcji.

green-greq

Piszę do DevOpsów ( ͡° ͜ʖ ͡°)

Zaloguj się aby komentować

Następna