Co nowego na forum?

Onload JavaScript dziś, 17:21
Java - multithreading Java 56 minut temu

DisQ dodał post w Java - multithreading

50 sekund temu Nie poznasz z niej nowych API (np. CompletableFuture), nie mniej warto ją przeczytać...

somekind dodał post w Nowy klient do gita na Windows

5 minut temu Wygląda ciekawie, jakby lepsza wersja GitExtensions z ulepszonym interfejsem, ale ni...

stivens dodał post w Ustawienie kursora JavaFx

10 minut temu To nie kwestia kursora tylko focusu. Sprobuj wywolac .requestFocus() na textfieldie

WeiXiao dodał komentarz w Pisanie posta na wąskim ekranie smartphone w orientacji poziomej

21 minut temu @loza_szydercow: A tak serio, to ile jeździsz?

loza_szydercow dodał komentarz w Pisanie posta na wąskim ekranie smartphone w orientacji poziomej

22 minuty temu Nie zapominaj o zapasowej dętce , łyżkach do zdejmowania opon, pompce, odblaskach, s...

vpiotr dodał komentarz w Nowoczesny język do webdevelopment?

36 minut temu Miał szanse w czasach świetności CoffeeScript. W dobie TypeScript, ScalaJs, KotlinJs...

hurgadion dodał komentarz w Wybór specjalizacji i języka programowania. Nie ma ideału?

39 minut temu nie no spoko, nie zauważyłem jakichś lamerskich wpisów... noo, może poza lożą szyder...

furious programming dodał komentarz w Szukam Programisty do BIZNESU

40 minut temu @Elenthar: nie bądź taki skromny – bierz wszystko, a wypłatę licz w miskach ryżu.

Woo Cash dodał wątek Ustawienie kursora JavaFx

47 minut temu Witam, proszę o podpowiedź, jak można ustawić kursor w TextField w JavaFx. Szukam sp...

TurkucPodjadek dodał post w Wybór specjalizacji i języka programowania. Nie ma ideału?

53 minuty temu hurgadion napisał(a): [...] tak na moje oko, genialny pomysł (stworzenie Scali)... a...

Wibowit dodał post w Wybór specjalizacji i języka programowania. Nie ma ideału?

54 minuty temu Nie wątpię, że te rzeczy mogą sprawić, że React będzie działał szybciej i techniczni...

WeiXiao dodał komentarz w Pisanie posta na wąskim ekranie smartphone w orientacji poziomej

55 minut temu @loza_szydercow: Loże jak Ty pewnie jesteś jednym w tych pedalarzy, którzy na ""wyja...

pain368 dodał post w Paramiko - co najpierw usatwic, channel czy transport

55 minut temu Ok, dzieki. Dam znac gdy to ogarne !! :)

NeutrinoSpinZero dodał post w Java - multithreading

56 minut temu Książka Brian Goetza jest z 2006 roku, nie nauczę się jakiegoś starego shitu?

loza_szydercow dodał komentarz w Pisanie posta na wąskim ekranie smartphone w orientacji poziomej

57 minut temu Problem jest ciut bardziej skomplikowany - nie wszystkie kanały komunikacji są wysta...

bdwn dodał wątek Pandas, matplotlib, ffmpeg

57 minut temu Czy ktoś wie jak w pandas używa się matplotlib.animation?

bdwn dodał post w Paramiko - co najpierw usatwic, channel czy transport

dziś, 17:51 import paramiko kf = "/home/username/.ssh/identififile" transport = paramiko.Transpo...

bdwn dodał post w Paramiko - co najpierw usatwic, channel czy transport

dziś, 17:38 Dawno nie używałem już, ale za dokumentacją: " class paramiko.channel.Channel(chanid...

hurgadion dodał post w Wybór specjalizacji i języka programowania. Nie ma ideału?

dziś, 17:37 nie wspomniano tu jeszcze o programowaniu funkcyjnym... no, ale to bardzo niszowa dz...

DisQ dodał post w Java - multithreading

dziś, 17:37 https://www.amazon.com/Java-C[...]ice-Brian-Goetz/dp/0321349601

Popularne wpisy na mikroblogu

4programmers.net
2018-07-03 20:02Sponsorowane

Rozwiązaniem godnym polecenia szczególnie małym przedsiębiorcom, którzy często są zmuszeni mierzyć się z problemami natury finansowej, jest mikrofaktoring w inviPay.com

Artur, młody przedsiębiorca - freelancer IT przez dwa lata pracował przy projekcie stworzenia platformy carsharingu. Współpraca układała się perfekcyjnie do czasu sprzedania firmy carsharingowej zagranicznemu inwestorowi. Nowy właściciel stwierdził, że jeżeli pracownicy są zatrudnieni na kontrakcie, to wydłuży im terminy płatności za faktury z 14 do 45 dni.
Początkowo ta zmiana przeraziła Artura, ale praca bardzo mu odpowiadała i nie chciał z niej rezygnować. Znajomy zaproponował mu współpracę nad drugim projektem.

“Pomóż mi napisać moją aplikację, a nie będziesz musiał pracować w obecnej firmie”.

Artur długo się nie zastanawiał i zaczął tworzyć. Po miesiącu kodowania, gdy nasz freelancer miał wystawić fakturę za pracę, okazało się, że nie ma kontaktu ze znajomym, a projekt okazał się oszustwem. Zrozpaczony Artur pozostał z ogromnym problemem.

“Płatność z firmy carsharingowej dopiero za 1,5 miesiąca, a ja straciłem cashflow”.

Zaczął czytać i szukać rozwiązania, aż w końcu doznał olśnienia. Kolega jego ojca, Pan Marek, który prowadzi firmę outsourcującą programistów, wspomniał na swoim blogu o inviPay.com i przyspieszonych płatnościach. Długo nie myśląc Artur zadzwonił do kolegi ojca, wypytał o szczegóły i się ucieszył.

“Artur, zarejestruj się z mojego linka, a ja w zamian dam Ci kontakt do Pani Magdaleny z inviPay.com, która Cię poinstruuje tak, że pojutrze będziesz miał pieniądze na koncie”.

Następnego dnia Artur zadzwonił do Pani Magdy, która pomogła mu w formalnościach.
Tym razem Pan Marek się mylił, ale na korzyść dla Artura. Po potwierdzeniu faktury w firmie carsharingowej pieniądze otrzymał tego samego dnia, poprawiając w ten sposób swoją sytuację. Był tak ucieszony z rozwiązania, że polecił Pani Magdalenie 8 swoich kolegów, którzy również skorzystali finansowania w inviPay.com, a za polecenia koszt faktoringu obniżył się aż o 80%. Artur zapewnił sobie płynność finansową, której potrzebował i pomógł kolegom borykającym się z podobnym problemem.

Bądź jak Artur - polecaj inviPay.com i zarabiaj na tym.

kobuz80

Na szczęście mi staremu kawalerowi,który tylko intercyza+cywilny "ożenek" w ogóle nie grozi :)

yarel
wczoraj, 10:50

Jakiś czas temu pytałem o HackerX, ale nie doczekałem się odpowiedzi, a zaproszenie na to wydarzenie otrzymałem, więc wiedziony ciekawością wybrałem się.

W skrócie: HackerX to takie "szybkie randki w ciemno" między firmami szukającymi pracowników, a kandydatami. Nie wiadomo jakie firmy będą, więc naturalna wątpliwość jaka w człowieku narasta to "czy moja firma się tam (nie) pojawi?" :-) Jednak przy rejestracji zaznaczało się z jakiej firmy jest "kandydat", właśnie w celu uniknięcia takiej krępującej sytuacji.

Po dotarciu na miejsce okazało się, że:

  • jest stanowisko z wydrukowanymi naklejkami z imieniem i nazwiskiem kandydata (mojego akurat nie było, organizatorzy tłumaczyli, że późno się zarejestrowałem - bo dzień wcześniej)
  • jest catering (piwo, woda mineralna, pizza)
  • jest 6 stanowisk w układzie 3+3 i dwie kolejki do każdego ze zbiorów stanowisk
  • na każdym stanowisku spędza się 5 minut i przechodzi do kolejnego, a następnie do "drugiej" kolejki

Dotarłem na miejsce jakieś 1.5h po oficjalnym czasie rozpoczęcia eventu (pizza, piwo i woda były już nieco przerzedzone). Kolejki były spore (tak z ~10 osób spokojnie), więc ok. godziny czekania na rozmowę i networking w kolejce. W kolejkach przewijały się informacje, że i tak połowa osób się nie pojawiła (tę stwierdzenia były uwiarygodnione przez liczne naklejki z nazwiskami na stanowisku wejściowym).

Z firm, które się pojawiły:

  • amerykańska firma która szczyci się 100% remote work i rekrutująca "chief software architektów" itd. (taki "body shop")
  • firma, która produkuje bazy danych, ale szukała ludzi bardziej do projektów polegających na sprzedaży pudełek (kto był na Oracle Code, ten pewnie kojarzy: blockchain, iot, clud..) i coś tam dziergane na frontendach
  • firma, która robi oprogramowanie szyte na miarę na rynki zachodnie
  • firma prowadząca boot campy
  • jakaś duńska firma energetyczna
  • porządna niemiecka firma, której klocki hamulcowe czasem kupuję

Ja odwiedziłem pierwsze 3 z wyżej wymienionych i udałem się do domu :-)

Wrażenia:

  • 5 minut to za krótko, żeby o czymś sensownym porozmawiać i dowiedzieć się co faktycznie robią, a nie słuchać ogólników (Ci bardziej przygotowani mieli konkretne pytania: ile lat używasz X, Y,Z i wypełnienie tej ankiety praktycznie zjadało czas)
  • jeśli ktoś się wybiera w celu poszukiwania pracy, a nie wrażeń, to powinien przygotować sobie jakąś strukturę rozmowy/ankietę, którą będzie powielał z każdym potencjalnym pracodawcą
  • niektórzy z kolejkowiczów żalili się, że bootcamp nawet widełek nie chciał podać..
  • niektórzy z pracodawców żalili się, że spodziewali się innej grupy docelowej niż się pojawiła

Jak dla mnie strata czasu, ale doświadczenie bezcenne :)

WeiXiao
dziś, 00:51

Uczcie się dzieci, bo będziecie pisać taki soft jak ja (niewydajny :D)

Chciałem napisać toola, który podczas np. nagrania, prezentacji itd. "wyciemnia" cały ekran, a w okół myszki daje zostawia przezroczyste pole - no aby na tym skupić uwagę. O ile z użyciem Bitmapy było tragicznie (@somekind o tym już kiedyś pisał - "bitmap locks"), to z użyciem wziętej z neta implementacji Direct bitmap było spoko, lecz przy większych rozmiarach czuć różnice - manipulowanie większą częścią obrazka przy każdym mouseMove (widać pod koniec gifa) = laaaags - jak oni prostytutka w grach robią takie wydajności? :D

Dodatkowo zerknąłem ile mój gif recorder (z poprzedniego wpisu) zużywa RAMu na takiego gifa jak w załączniku - również Bóg wydajności

WeiXiao

@furious programming: Bo generalnie SetPixel w natywnej bitmapie jest baaaardzo wolny, a FastBitmap to jest (wyżej dałem linka do stacka) szybsza implementacja do działań na bitmapie (no tak +-)

furious programming

SetPixel w zagnieżdżonych pętlach zawsze będzie o wiele wolniejszy niż jakakolwiek wbudowana metoda do malowania jednego obrazka na drugim, bez względu na API.

Jeśli obie bitmapy mają identyczną głębię (a tym samym identyczny rozmiar danych opisujących pojedynczy piksel), to absolutnie najszybszym rozwiązaniem jest skopiowanie całego bloku pamięci spod jednego adresu do drugiego. To pozwala kopiować obraz wierszami, a nie pikselami.

Użycie metody dostępu lub modyfikacji danych konkretnego piksela jest czasochłonne, bo gettery i settery muszą być wykonane, co raczej w żadnej sposób nie zostanie zoptymalizowane przez kompilator. Na każdą iterację pętli najniższego rzędu wykonywany jest jeden getter (pobranie koloru piksela) oraz jeden setter (modyfikacja koloru piksela). Do tego mogą jeszcze dochodzić konwersje/rzutowania intów i inne pośrednie operacje. Jeśli bitmapa ma rozmiar ekranu, to miliony razy wykonywane są gettery i settery, co potwornie spowalnia kopiowanie.


Bardzo czasochłonna jest też poniższa metoda:

private fastBitmap DrawFilledRectangle(int x, int y)
{
    fastBitmap bmp = new fastBitmap(x, y);
    using (Graphics graph = Graphics.FromImage(bmp._Bitmap))
    {
        Rectangle ImageSize = new Rectangle(0, 0, x, y);
        graph.FillRectangle(Brushes.Black, ImageSize);
    }
 
    return bmp;
}

Każde jej wywołanie jest równoznaczne ze stworzeniem całkiem nowej bitmapy o zadanym rozmiarze. To marnuje czas procesora i zmusza GC do intensywnego sprzątania pamięci (tak obstawiam, bo się nie znam). Bitmapę musisz stworzyć raz i ją w kółko jedynie przemalowywać, a jej rozmiar modyfikować tylko wtedy, kiedy to konieczne.

masjav
wczoraj, 15:47

czemu ?

Integer a = 100, b = 100, c = 200, d = 200;
 
System.out.println(c==d);//false?
System.out.println(a==b);//true?
Spine

@furious programming: Shalom też, a mu tego nie wytykasz :P

furious programming

@Shalom wyjaśnił OP na czym rzecz polega – nie odniósł się do mojego komentarza, bo pisał wcześniej. ;)