cmd
2019-09-10 16:36

Jednym z tragicznie zmarłych grotołazów był Józef Kucia.

This past month, we here at CodeWeavers and the wider Wine community suffered a devastating loss. Our friend and colleague, Józef Kucia, died at the age of 28.
Józef first contributed to Wine in March of 2012, showing remarkable skill with Wine’s D3D technology. He became a key contributor to Wine, submitting over 2,500 patches. He also contributed to other open source projects including Mesa and Debian. Józef founded and led the vkd3d project and provided insight and guidance to the Vulkan working group.

https://www.codeweavers.com/a[...]hite/2019/09/08/a-tragic-loss

mr_jaro

jak się zabije 20 osób jadących autami w całej polsce jednego dnia to tragedii nie ma ale jak się rozbije autobus i zgnie też 20 osób to tragedia narodowa. I nie nie ginie tyle ludzi w jaskiniach co piszesz. Tak jak mówię do takich miejsc wchodzą kiedy prawdopodobieństwo jakiś dziwnych zewnętrznych zdarzeń jest bardzo niskie, czyli tak samo jak siadasz do auta i uważasz, że nic się tobie nie stanie. Wbrew twojemu myśleniu to nie są idioci.

cerrato

nie napisałem nigdzie o idiocie, a jedynie o głupku ;) Poza tym przeczytaj proszę jeszcze raz to, co napisałem. Procentowo (nie mówię o ilościach absolutnych) jestem prawie pewien, że mamy większy odsetek śmiertelności wśród wspinaczy górskich i jaskiniowych, niż pośród użytkowników samochodów. A co do tego, że jak ginie 20 osób w całym kraju to spoko, ale jak autobus to tragedia - w pełni się zgadzam, nie lubię takiej hipokryzji. P.S. totalny offtop, ale właśnie sobie obejrzałem podczas obiadu. Widziałeś ten odcinek - https://www.youtube.com/watch?v=OrUY65B7BRU ?

nohtyp
2019-09-10 13:25

O clojure wspomniałem na forum 2 bądź 3 razy: https://4programmers.net/Forum/1618118 i https://4programmers.net/Forum/1601417

Clojure jest super, ale na początku ma ciężką barierę do pokonania. Mi dopiero za 4 razem się udało się wyjść poza ramy prostych programów ;D Dopiero jak zacznie się pisać w nim naturalnie wówczas można dostrzec jego pełen potencjał i wtedy właśnie zaczyna się szybka i ostra zabawa.

Mam w głowie szlak jaki pokonałem, wiem jak go fajnie przedstawić, ale ze względu, że lispy to nisza to nie wiem czy robienie kursu ma sens.

Treść byłaby przeznaczona dla osób, które programują z 2-3 lata w java i / lub javascript.

Kurs byłby na mojej własnej stronie, ponieważ chciałbym tam dać wyselekcjonowane zadania, wrzucić tam moje notatki, i filmiki objaśniające co z czym się je.

Zadania sprawdzałbym w wolnym czasie, i wtedy feedback byłby dużo ciekawszy niż (działa/nie działa) - nie spodziewam się dużego ruchu więc jak najbardziej taka opcję mogę zapewnić. Dodatkowo po rozwiązaniu będzie można podejrzeć rozwiązania innych uczestników.

Ogólnie pierwszy poziom kursu koncentrowałby się na języku clojure, modelowaniu, narzędziach i spięciu wszystkiego w jedną całość. Kurs nie będzie elementarzem, który tłumaczy totalne podstawy. Raczej skłaniam się do formy na luzie, jak przy piwie, gdzie z jednej strony będę mówił jak pewne rzeczy strasznie pomają mi w projektach, a inne zawężają pole działania.

Co o tym myślicie? Czy ktoś rozważałby zakup kursu w cenie 400-600zł?

nohtyp

Jasna sprawa - kurs kursowi nie jest równy, dlatego próbka to must have.

Maciej Cąderek

W jakim języku chcesz ten kurs robić?

Marcin Czarkowski
2019-09-09 20:04

Dlaczego warto czytać książki (techniczne)? 🤔
Jakie 7 książek powinien przeczytać każdy Web Developer? 🤔

Odpowiedzi znajdziesz tutaj 👇
https://www.youtube.com/watch?v=mUa3hqKjo80

czysteskarpety

Ja programuje już szmat czasu i nikt mi nie bedzie pisał jak sie teguje i klajstruje w php.

viader
2019-09-09 12:35

Rusza pierwszy turniej Heroes 5, doświadczonych w PVP graczy w tej części tak naprawdę nie ma, więc wszyscy mają podobne szanse. Jak ktoś grał kiedyś to zachęcam do zabawy.

https://www.youtube.com/watch?v=LJrPs-E7phE

Mistrzostwa Polski w Heroes 3 2019 skończyły się już jakiś czas temu, wygrał Tyranuxus. Odpadłem z turnieju walcząc z nim o wejście do 1/8 także jestem całkiem zadowolony z wyniku.

Sunnydev

Ooo coś nowego. Będzie oglądane :)

no_solution_found
2019-09-09 09:12

No to ja chciałem się pochwalić tym, iż udało mi się dostać do programu #GDE (Google Developer Expert) z języka Go -> https://google-developers.app[...]file-bart_C5_82omiej_klimczak
Co ciekawe, to jestem pierwszą osobą z tej części europy (w tym Polski), której udało się to osiągnąć.

Z profitów:

  • lans na dzielni
  • wszystkie IDE od JetBrains za free
  • szansa na wyjazd na Google I/O oraz GDE Summit za free
  • dostep do inżynierów Google oraz informacje o featurach/produktach przed publicznym ogłoszeniem
viader

@WeiXiao jak taki ciekawy to łap, może poduczysz się czegoś nowego, a jak nie z tego to jeszcze poszukaj sobie na tym repie :) https://android-review.google[...]form/frameworks/base/+/885333
@tdudzik dłuższy temat do dyskusji :) nevermind, po prostu nie pracują w Googlu sami wymiatacze i sporo rzeczy robią tak jak typowe firmy z mniejszym naciskiem na jakość kodu, ale by działało

no_solution_found

no jasne, że tak. Często google przejmuje jakieś firmy wraz z pracownikami.

mr_jaro
2019-09-08 23:32

Ten film powinien zostać przypięty w dziale kariera

https://www.youtube.com/watch?v=_q-l6Cn6WxY

stivens

W ogole ciekawe czy ci ludzie z codetwo siedza tu na forum

cerrato

A pewien czas temu też o tym samym myślałem. Zresztą jeśli są, to i tak się pewnie nie ujawnią :D

Shizzer
2019-09-08 19:32

Wczoraj postawiłem duży krok w kierunku rozwiajania swojej kariery w branży security. Osiągnąłem jeden ze swoich celów - chociaż miałem nadzieję, że kiedyś mi się to uda to byłem przekonany, że nie nastąpi to tak szybko (zacząłem się uczyć security mniej więcej po tym jak założyłem ten temat -> Cyberbezpieczeństwo). Tym celem było zagranie z drużyną w konkursie CTF większej rangi niż Pico i tym podobne. Miałem przyjemność zagrać gościnnie z jedną z najlepszych drużyn na świecie -> @p4. :)

Wzięliśmy udział w dwóch konkursach -> TrendMicro (https://www.trendmicro.com/en[...]mpaigns/capture-the-flag.html) i DefCamp (https://dctf.def.camp/). Nie były to finały, ale kwalifikacje do nich. Udało się awansować w obu przypadkach, żeby tak się stało musieliśmy zająć miejsca w top 10 rankingów drużyn. Zajęliśmy odpowiednio 3. i 8. miejsce.

Co do mojego debiutu to wszystko zaczęło się o 6 rano w sobotę kiedy zaczęły się kwalifikacje do TrendMicro CTF'a. Walka o miejsca zakończyła się o 11 rano dnia następnego kiedy to zakończyły się qualsy do Defcamp'a. Grałem od około 7 rano do około 1:00 w niedzielę. Właściwie teoretycznie zostało jeszcze 10 godzin do końca, ale nie wyposażyłem się w żadne energetyki ani kawę więc po grubo ponad 12 godzinach rozwiązywania zadań czułem się wyczerpany. Tzn. uznałem, że moje siedzenie przed monitorem i tak nic nie da, bo po prostu nie miałem sił myśleć. Żeby było śmieszniej - nastawiałem się na granie całego przedziału czasowego z krótkimi przerwami, ale jak widać nie jest to takie proste. (jeszcze) ;/

Na siebie wziąłem zadanie z TrendMicro w kategorii RE za 200 punktów. Była to binarka ELF na arch x64. Wszystko fajnie tylko niestety była linkowana statycznie i trzeba było zgadywać, które funkcje są z libc i za co odpowiadają. Płatna IDA sama sobie "rewersuje" te nazwy, ale niestety nie mam płatnej wersji, bo bieda.
Generalnie siedziałem nad całym tym zadaniem koło 15h, czyli czas mojego grania bez doliczania przerw. Po zrewersowaniu okazało się, że trzeba dokładnie 6 razy sprawić, żeby został wywołany SIGFPE, jeśli się udało to input był flagą. Do tego celu można było użyć jakiegoś z3 solvera, żeby wyliczył znaki flagi odpowiednie do wyowłania SIGFPE tyle razy ile nam potrzeba. Oprócz mnie z tego co wiem to @Shalom i des patrzyli na to kilka godzin. Z tego wszystkiego powstał taki program, którego autorem był des -> https://pastebin.com/mX42s9a4, ale nie dawał flagi na stdout, bo wynik z3 był unsat. Też pisałem swoją wersję programu i constrainty do z3 były dokładnie takie same co w efekcie nic nie dało. Wtedy stwierdziłem, że jestem tak zmęczony, że nic już więcej nie wymyślę.

Podsumowując: Niestety nie rozwiązałem żadnego zadania przez co nie jestem do końca zadowolony, bo nie czuję, żebym pomógł drużynie. Z drugiej strony dość szybko udało mi się zagrać CTF'a z jednymi z najlepszych ludzi w branży i wybrałem dość trudne zadanie jak na debiut, a brakowało do jego rozwiązania naprawdę niewiele. To była świetna przygoda i mam nadzieję, że jeszcze będę mógł z Wami zagrać. Dzięki @p4!

A no i zapomniałem dodać -> energetyki i kawa musi być następnym razem, bo bez tego znów będę trupem wcześniej niż tego oczekiwałem :D

cw

jako osoba z wieloletnim doświadczeniem w informatyce śledczej powiem tylko, że żaden konkurs nie dostarczy takich emocji jak prawdziwa sprawa. Próbowałem analizować zadania z różnych konkursów (informatyka śledcza !=cyberbezpieczeństwo, ale trochę to o siebie zahacza) i po prostu nie dałem rady się na nich skupić, nuda. To trochę jak porównać pisanie programów na podstawie tutoriala z pisaniem programu dla rzeczywistego klienta

Shalom

@cw jasne, przecież takie CTFy są na 24-48 godzin więc nie mogą zawierać nie-wiadomo-czego, szczególnie że zwykle masz do rozwiązania kilka zadań przynajmniej :) Niemniej akurat TrendMicro robi na swoich CTFach sporo wielopoziomowych zadań z zakresu forensics/osint/

scibi92
2019-09-08 18:05

Kod źródłowy Springa... #zCykluBezKomentarza

        @Override
        @Nullable
        public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
            // Invocation on ConnectionProxy interface coming in...

            if (method.getName().equals("equals")) {
                // Only considered as equal when proxies are identical.
                return (proxy == args[0]);
            }
            else if (method.getName().equals("hashCode")) {
                // Use hashCode of Connection proxy.
                return System.identityHashCode(proxy);
            }
            else if (method.getName().equals("toString")) {
                // Allow for differentiating between the proxy and the raw Connection.
                StringBuilder sb = new StringBuilder("Transaction-aware proxy for target Connection ");
                if (this.target != null) {
                    sb.append("[").append(this.target.toString()).append("]");
                }
                else {
                    sb.append(" from DataSource [").append(this.targetDataSource).append("]");
                }
                return sb.toString();
            }
            else if (method.getName().equals("unwrap")) {
                if (((Class<?>) args[0]).isInstance(proxy)) {
                    return proxy;
                }
            }
            else if (method.getName().equals("isWrapperFor")) {
                if (((Class<?>) args[0]).isInstance(proxy)) {
                    return true;
                }
            }
            else if (method.getName().equals("close")) {
                // Handle close method: only close if not within a transaction.
                DataSourceUtils.doReleaseConnection(this.target, this.targetDataSource);
                this.closed = true;
                return null;
            }
            else if (method.getName().equals("isClosed")) {
                return this.closed;
            }

            if (this.target == null) {
                if (method.getName().equals("getWarnings") || method.getName().equals("clearWarnings")) {
                    // Avoid creation of target Connection on pre-close cleanup (e.g. Hibernate Session)
                    return null;
                }
                if (this.closed) {
                    throw new SQLException("Connection handle already closed");
                }
                if (shouldObtainFixedConnection(this.targetDataSource)) {
                    this.target = DataSourceUtils.doGetConnection(this.targetDataSource);
                }
            }
            Connection actualTarget = this.target;
            if (actualTarget == null) {
                actualTarget = DataSourceUtils.doGetConnection(this.targetDataSource);
            }

            if (method.getName().equals("getTargetConnection")) {
                // Handle getTargetConnection method: return underlying Connection.
                return actualTarget;
            }

            // Invoke method on target Connection.
            try {
                Object retVal = method.invoke(actualTarget, args);

                // If return value is a Statement, apply transaction timeout.
                // Applies to createStatement, prepareStatement, prepareCall.
                if (retVal instanceof Statement) {
                    DataSourceUtils.applyTransactionTimeout((Statement) retVal, this.targetDataSource);
                }

                return retVal;
            }
            catch (InvocationTargetException ex) {
                throw ex.getTargetException();
            }
            finally {
                if (actualTarget != this.target) {
                    DataSourceUtils.doReleaseConnection(actualTarget, this.targetDataSource);
                }
            }
        }
    }
Koziołek

@wartek01: w dwóch wątkach masz referencję do tego samego beana i każdy z nich ma referencję do tego samego CP.

jarekr000000

@wartek01: pisałem ogólnie o magii springowej, która się wywala w połączeniu z wątkami (o ile nie są to wątki zarządzane przez spring), nie o tym konkretnym kawałku.