Leaderboard
Popular Content
Showing content with the highest reputation since 08.10.2015 in Posty
-
Tak może dodam coś na temat Rust, bo wydaje mi się, że jest to jeden z bardziej interesujących języków opracowywanych w ostatnich kilku latach. Killer feature i "materiał eksportowy" w Rust to jest "borrow checker", czyli automatyczny sprawdzacz czasu życia obiektów. Czas życia jest ściśle monitorowany na podstawie tego, kto aktualnie posiada dany obiekt. W jednej chwili tylko jedna rzecz może być właścicielem jakiegoś obiektu, więc nie można sobie np. przekazać tablicy jako argumentu jakiejś funkcji. Trzeba tą tablicę albo "pożyczyć" ("borrow" - wtedy dostęp do niej jest read-only, przez tego co ją pożyczył, i tego, który jest właścicielem, do czasu gdy pożyczenie się zakończy), albo całkowicie "oddać", przy czym wtedy oryginalny właściciel traci dostęp do zasobu i już nie może go używać. To wszystko dzieje się już na etapie kompilacji, a nie działania programu -- jeśli kompilator Rust skompiluje kod, będzie to znaczyło, że przynajmniej istnieje gwarancja na brak ryzyka wystąpienia błędu odczytu pamięci po jej zwolnieniu. Oczywiście temat borrow checkera jest dość obszerny, a powyższy akapit przedstawił jedynie jego prosty zarys, ale może to zachęci kogoś do głębszego zapoznania się z tematem.4 points
-
Chciałbym pokazać Wam mojego bloga: https://anonimowyprogramista.wordpress.com/ Dotyczy on IT, a głównie programowania. Jest to początek jego istnienia. Mam nadzieję, że Wam się spodoba.2 points
-
Polecam zapoznać się z lekturą poradnika początkującego programisty na blogu Gynvaela. W skrócie, wybór nie ma to większego znaczenia. Python i Ruby są tak bardzo do siebie zbliżone, że większość pracodawców nie będzie sprawiać problemów jeżeli kandydat na stanowisko programisty Pythona będzie znał Ruby lub odwrotnie. Jeżeli myślisz o rynku pracy, to wybierz jeden dowolny z nich i zacznij pracować nad swoim portfolio. Pomóż w rozwoju jakiegoś projektu Open Source, napisz kilka swoich bibliotek itd. Znacznie lepiej wypadniesz na rozmowach prezentując trochę kodu, który sam napisałeś niż wykuwając na blachę sam język.2 points
-
Używanie kodu Rust z projektu C++ mam już sprawdzone ;), polega na wykorzystaniu FFI w celu zapewnienia bezpieczeństwa typów. Po stronie Rust, kod źródłowy obiektu dzielonego (DLL), z niego wyjdzie np. libdylib.so: #![crate_type = "dylib"] extern crate libc; use std::ffi::CStr; #[no_mangle] pub fn hello_world(name: *const libc::c_char) { let buf_name = unsafe { CStr::from_ptr(name).to_bytes() }; let str_name = String::from_utf8(buf_name.to_vec()).unwrap(); println!("Hello, {}!", str_name); } Poprzez wykorzystanie specyfikatora "no_mangle", symbol dla funkcji hello_world będzie wyglądał tak, jak np. przy użyciu extern "C" w C++, czyli będzie miał wycięte informacje o typach, etc - "_hello_world". Taką DLL'kę lub obiekt dzielony można załadować standardowo, jak każdy inny obiekt. Po stronie C++: #include <iostream> #include <dlfcn.h> int main() { void* lib = dlopen("./target/release/libdylib.so", RTLD_LAZY); if(!lib) { std::cout << "can't open libdylib.so\n"; return 1; } void* func = dlsym(lib, "hello_world"); if(!func) { std::cout << "can't locate function hello_world()\n"; dlclose(lib); return 1; } typedef void (*hello_world_fun)(const char* somestr); hello_world_fun hello_world = (hello_world_fun) func; hello_world("C++"); dlclose(lib); return 0; } (dlopen to jest to samo co LoadLibrary, a dlsym to jest to samo co GetProcAddress). Wyjście programu: $ ./test Hello, C++! Na Linuxie można też zlinkować wygenerowany obiekt dzielony do exeka pisanego w C++, więc możliwe jest stworzenie takiego programu, wołającego funkcję z Rust'a bezpośrednio, bez potrzeby ładowania dynamicznego: #include <iostream> #include <dlfcn.h> extern "C" void hello_world(const char* ptr); int main() { hello_world("C++"); return 0; }2 points
-
Cześć, Dzięki uprzejmości adminów mamy swój dział na Forum DevStart. Świetna sprawa! Będziemy tu informować Was o tym co słychać w redakcji, jakie artykuły planujemy w nadchodzących wydaniach, jakie materiały są w aktualnych numerach itp. Chętnie też poznamy Wasze opinie o magazynie i z miłą chęcią przyjmiemy sugestie na tematy artykułów. Jeśli nie zetknęliście się jeszcze miesięcznikiem "Programista", to zapraszamy do zapoznania się z nim. Udostępniliśmy bezpłatne wydania do pobrania: http://programistamag.pl/wydanie_probne/ Obecnie, tj. do 20 października w Empikach jest dostępne wydanie nr 39, a w nim np. : przedpremierowe, obszerne fragmenty książki Gynvaela Goldwinda "Zrozumieć programowanie". Książka będzie wydrukowana w ostatnich dniach tego miesiąca, a już teraz możecie się przekonać czy jest warta zakupu. Zamieściliśmy rozdziały: Synchronizacja, Muteksy i sekcje krytyczne, Typy stałoprzecinkowe, Przekierowania... Poza tym w aktualnym numerze znajdziecie artykuł o algorytmach rozpoznawania dźwięków pt." Symfonia problemów", "Kod Schrödingera, czyli maszyna abstrakcyjna języka", "Zaawansowane funkcje systemu Windows 10: śledzenie twarzy" i kilka innych... Spis treści aktualnego wydania: http://programistamag.pl/programista-8-2015-39/2 points
-
1. Jeśli program ma wypisywać wszystkie dni aktualnego miesiąca to działa dobrze, tylko wpisz poprawnie nazwę metody i talbicy.. String[] weekdayNames = new DateFormatSymbols().getShortWeekdays(); do { System.out.printf("%4s", weekdayNames[weekday]); 2. Korzystaj z systemu popowiedzi (zazwyczaj ctrl + space) to wtedy nie będzie takich błędów2 points
-
1 point
-
Miałem pomysł, a teraz mam problem... Spodobało mi się rozwiązywanie zagadek programistycznych ala Advent of Code do tego stopnia, że postanowiłem sprawdzić czy dałbym radę stworzyć sam jakiś fajny event programistyczny, który pozwalałby łączyć przyjemne z pożytecznym czyli programowanie, rozwiązywanie zagadek i rozwój. Posiedziałem po godzinach przez prawie rok i... oto jest: Everybody Codes Mój problem polega na tym, że Event został podłapany niespodziewanie mocno w Indiach i Turcji a w Polsce jakoś tak nie bardzo, a szkoda, bo mamy specjalistów światowej klasy! Jednym z rankingów w tym evencie jest ranking krajów (programiści punktujący w leaderboardach, punktują również dla swojego kraju) i marzy mi się żeby przynajmniej w pierwszym wydarzeniu Everybody Codes zwyciężyła jednak Polska, skoro pomysł narodził się w Polsce i polskimi ręcami polskiego programisty został stworzony... żeby nie być gołosłownym: Pomożecie? Strona: https://everybody.codes Wydarzenie LinkedIn: https://www.linkedin.com/events/7241738676685164544 Wydarzenie Facebook: https://www.facebook.com/events/489350657247536 Twitter X Post: https://x.com/EverybCodes/status/1836134311424090117 pozdrawiam serdecznie wszystkich! Emil Kaczyński Twórca Everybody Codes1 point
-
Produkt jest czarny i też mało wyraźny ma kontur na ciemnoniebieskim tle.1 point
-
Podaj jakiego API, to jest zrzut JSONa. Mając taki zrzut musisz przekonwertować sobie to tak, żebyś mógł z tego korzystać z poziomu Pythona # importuj modul jsona import json # otworz plik z danymi jsona with open('data.json') as json_file: data = json.load(json_file) print("\nbulki:", data['bulki'])1 point
-
A linkujesz do 4programmers :D, u nich nawet do nich linkujesz Moim zdaniem kluczową sprawą w tego typu portalu jest wsparcie prawnicze, im szybciej sobie to załatwisz i będziesz miał zaufaną kancelarię prawną od wszystkiego - tym lepiej. Razi mnie, że używasz skryptów analitycznych Google dając im wgląd w swój portal. Dziwi stosowanie jQuery z 2013 roku (1.9.3). Nie wiem czy to robisz ale polecam blokować rejestrację z tzw. tymczasowych adresów email do tworzenia fejk kont. Np. https://temp-mail.org/en/ Ogólnie taki portal i utrzymanie to ogrom pracy. Nie wiem na ile znasz się i wykorzystujesz skalowalność, ale jeśli liczysz na sukces będziesz musiał szybko się tego nauczyć. No i jak już osiągniesz sukces to życzę Ci żebyś nie powielał błędów Facebooka i nie sprzedawał danych użytkowników na lewo i prawo.1 point
-
Witam, chciałbym podzielić się z poradnikiem mojego autorstwa: https://f4wst53dd.gitbooks.io/abc/content/ Jest oparty na moich doświadczeniach, oraz przemyśleniach. Być może komuś się on może przydać, żeby mieć sugestię na jakich elementach, technologiach warto skupić się w pierwszej kolejności. Niektóre rozdziały mogą być przydatne także dla nie-web developerów. Zawiera on m.in.: - listę przydatnych/wymaganych umiejętności technicznych i nietechnicznych - co powinien zawierać projekt na rekrutację - jak pisać cv, jak wygląda proces rekrutacji - jak wygląda praca w metodyce SCRUM - na jakim sprzęcie pracować - gdzie szukać wiedzy/newsów z branży IT - słowniczek najważniejszych pojęć z programowania/web devlopmentu Poradnik był pisany jako poradnik stosunkowo uniwersalny, nie zawiązany z konkretnym językiem/frameworkiem. Nie jest on jeszcze ukończony, zatem poproszę o opinie, uwagi itp.1 point
-
Cześć, jestem Patryk. Od jakiegoś czasu tworzę materiały edukacyjne dotyczące rozwijania i wytwarzania produktów cyfrowych. Już od prawie dekady tworzyłem różnego rodzaju oprogramowanie jako programista i postanowiłem zacząć dzielić się swoją wiedzą na YouTube. Ostatni stworzyłem materiał, w którym opowiadam o tym co można zrobić, żeby stworzyć produkt typu SaaS, który będzie wyróżniał się na tle innych rozwiązań tego typu. Jeśli potencjalnie temat wydaje wam się ciekawy to zapraszam do odwiedzania, oraz dzielenia się swoimi opiniami w tej tematyce. Materiał jest dostępny w kilku formatach - video, podcast oraz blog, także dla każdego się coś znajdzie YouTube: Spotify: https://open.spotify.com/epis[...]vsGvEE0dw?si=15b5388f4b134533 Blog: https://www.letsmaketechnolog[...]j-saas-wyprzedzi-swoje-czasy/1 point
-
Zakres obowiązków: - rozwijanie aplikacji mobilnej dla jednego z wiodących klientów sieci telekomunikacyjnej; - dbanie o jakość i bezpieczeństwo; - współpraca z całym zespołem. Oczekiwania: - minimum dwuletnie doświadczenie w programowaniu w Javie + front realizowany w Angular; - Znajomość Java w wersji 7 lub wyższej i Java EE w wersji 6 lub wyższej; - Znajomość frameworków Spring, Spring Boot – wymagany poziom średni; - Doświadczenie w pracy z JIRA; Mile widziane: - doświadczenie w integracji z usługami REST, SOAP; - znajomość technologii Hibernate lub JPA; - doświadczenie w korzystaniu z baz SQL i NoSQL; - doświadczenie w pracy z Java Server Face; - doświadczenie w pracy z Sonarqube; - doświadczenie w pracy z Primefaces; Oferujemy: - elastyczny czas pracy z możliwością pracy zdalnej; - pracę w zgranym zespole w świetnej atmosferze; - możliwość rozwoju poprzez udział w innowacyjnych międzynarodowych projektach; Zapraszam do aplikowania: natalia.niklas@pentacomp.pl1 point
-
Hej! Właśnie opublikowaliśmy 2. część serii artykułów JavaScript od podstaw - Wartości. Nauczycie się z niego czym są wartości w JavaScript, jak działają teksty, liczby, wartości logiczne oraz czym są... stringi 🙃 ➡️ https://kt.academy/pl/article/js-wartosci Powodzenia!1 point
-
Wartosc : yScrollAxis masz zainicjalizowaną tylko raz, nie powinieneś jej aktualizować przy każdym evencie czasem?1 point
-
Witam, zapraszam w Pełni na mojego bloga przeznaczonego dla webdeveloperów z zakresu Front-endu, aby pogłębili swoją wiedzę, poczytali o czymś ciekawym, robili pewne czynności szybciej oraz wszystkich, którzy chcieliby zacząć tworzyć strony WWW, kodować, pisać skrypty lecz nie bardzo wiedzą jak to ugryźć. Artykuły pisane rzetelnie i na wesoło, nic nie jest tworzone na siłę, a całość nie przypomina nudnego wykładu na studiach. Zapraszam tutaj: http://furuart.pl1 point
-
musisz dodać import klasy na górze pliku import java.math.BigDecimal;1 point
-
Jest to związane z wewnątrzą reprezentacją liczb zmienno-przecinkowych. Możesz sobie przeczytać tu https://en.wikipedia.org/wiki/Floating_point#Accuracy_problems z czego wynika ten problem. Jeśli chcesz uzyskać precyzyjny wynik użyj klasy BigDecimal. Masz tu kawałek kodu, z którego szybko załapiesz o co chodzi: public static void main(String[] args) { final double stala = 3.00; final double stala1 = 3.14; System.out.println("double: " + stala); System.out.println("double1: " + stala1); System.out.println("double sum: " + (stala1 + stala)); BigDecimal bigDecimalPi = BigDecimal.valueOf(3.14); BigDecimal doublePi = new BigDecimal(3.14); System.out.println(bigDecimalPi.setScale(100)); System.out.println(doublePi.setScale(100)); System.out.println(bigDecimalPi.setScale(100)); System.out.println(BigDecimal.valueOf(stala).setScale(100)); System.out.println(bigDecimalPi.add(BigDecimal.valueOf(stala)).setScale(100)); } Zwróć uwagę na tworzenie bigDecimalPi oraz doublePi.1 point
-
Java na początek jest fajna, uniwersalna. Zobacz może w Codete, zdarzało im się przynajmniej kiedyś przyjmowac mniej doświadczonych, których douczali. Zresztą tam się wszyscy cały czas uczą łącznie z seniorami kórych nie brakuje, fajne to jest tam.1 point
-
1 point
-
Witam, Zapraszam na szkolenia z SQL Server również w weekendy oraz godzinach popołudniowych dla osób, które nie mają możliwości wziąć działu w godzinach standardowych. Szkolenia z każdego obszaru MSSQL. Szkolenia prowadzone są przez autoryzowanego trenera Microsoft z dużym doświadczeniem praktycznym. Miejsce szkolenia: z reguły Warszawa Cena: Zależna od tematyki szkolenia, proponuje 50% cen autoryzowanych. Z reguły około 2000 zł Plan szkolenia: Dowolny z SQL Server, Sharepoint i Windows Część szkoleń jest opisana http://www.strona.radkomp.pl/szkolenia.html Najważniejsze jest zadowolonenie uczestnika, dlatego też plan szkolenia jest opracowywany indywidualnie a jeśli grupa jest większa to wspólnie. Miejsce szkolenia też jest zależne od ilości osób i z której części Polski pochodzi większa część osób. Jestem mobilny Jeśli chodzi o ceny to jestem otwarty na neocjajcje Zachęcam również do konsultacji i wykonania audytu Państwa środowiska bazodanowego. Zweryfikujemy bezpieczeństwo Państwa danych, ustawienia serwera nie tylko SQL Server, ale również wskażemy potencjalne problemy. Zapraszamy do kontaktu: biuro@radkomp.pl tel: 5041944391 point
-
Musisz wykorzystać pętle z odpowiednimi warunkami i dodatkowymi licznikami, czyli w skrócie robisz tyle iteracji ile jest wierszy i kolumn (2 pętle) i wewnątrz pętli sprawdzasz stany liczników pętli i jeśli odpowiadają warunkom z danych punktów wtedy wstawiasz w miejsce tablicy daną watość int i,j; int kolumn = 5 int wierszy = 3 int tablica[5][3]; for (i = 0; i < kolumn; i++) { for (j = 0; j < wierszy; j++) { // przykład - wstawianie 1 na skos // 1 kolumna 1 wiersz, 2 kolumna 2 wiersz itd. if (i == j) { tablica[i][j] = 1; } ... } }1 point
-
Protokół HTTPS jest dzisiaj powszechny na wszystkich stronach z wrażliwymi informacjami. Banki są klasycznym przykładem. HTTPS “gwarantuje”, że dane są przesyłane w szyfrowanej formie, a klient wie, że łączy się z oryginalną stroną. Certyfikat publikowany przez stronę jest gwarantem, że korzystamy właśnie z tej aplikacji, z której zamierzaliśmy. W najprostszej postaci wygląda to zatem następująco: Tego przynajmniej spodziewamy się… Problem w tym, że czasami użytkownicy wpisują adres http://… W takich sytuacjach, programiści przekierowują użytkownika na HTTPS, tzn. sekwencja wygląda następująco: Użytkownik wpisuje adres http://www.domain.com Serwer zwraca kod 302 – przekierowanie na https://www.domain.com Przeglądarka od teraz korzysta z bezpiecznej wersji czyli https://www.domain.com Wygląda więc to następująco: Niestety jest to bardzo niebezpieczna architektura. Bardzo dużo stron, włączając w to banki, korzysta z przekierowania na HTTPS. Wiele banków korzysta z HTTP na stronie głównej, a do HTTPS jest użytkownik przełączony dopiero w momencie chęci zalogowania do strony. Oznacza to, że strona główna banku jest niebezpieczna. Wszystko co na niej znajduje się może zostać podrobione (brak certyfikatu). Jeśli ktoś podmieni stronę główną i wstawi np. link do logowania do kompletnie innej strony, możliwe, że staniemy się ofiarą phishing. Wyobraźmy sobie, że korzystamy z Internetu w miejscu publicznym, np. używając WIFI. Możliwe, że ktoś wstawi proxy między nami, a docelowymi stronami. Co jeśli staniemy się ofiarą ataku man in the middle? Taki serwer proxy będzie w stanie przekierowywać wszystkie nasze żądania. Wtedy powyższa sekwencja może wyglądać już tak: Użytkownik wpisuje http://www.domain.com Man in the middle przechwytuje żądanie i zwraca jakąkolwiek treść.. Użytkownik nie zauważa nic podejrzanego. Strona wygląda identycznie – jesteśmy ofiarami phishing. Czujny użytkownik zauważy, że po kliknięciu loguj na stronie głównej banku nie został przekierowany do https i wciąż korzysta z nieszyfrowanego protokołu. Niestety jest to rzadkość. Problem jest jeszcze większy, ponieważ MITM (man in the middle), może rzeczywiście logować się do banku. Użytkownik poda hasło poprzez HTTP do MITM, a potem MITM nawiąże połączenie szyfrowane HTTPS z prawdziwą stroną banku. Możliwe jest zatem, że użytkownik będzie widział prawdziwe dane (balans konta itp), ale wszystko serwowane będzie przez MITM, który łączy się poprzez HTTPS z prawdziwym bankiem, a potem przekierowuje wszystko w postaci HTTP do użytkownika. Rozwiązanie składa się z dwóch etapów. Przede wszystkim każdy bank powinien w pełni implementować HTTPS – na każdej podstronie. Druga kwestia jest trudniejsza. Użytkownicy wciąż domyślnie będą wpisywać www.domain.com, a nie https://www.domain.com. Jak już wiemy, przekierowanie jest niebezpieczne bo nie wiadomo, czy ktoś po drodze nie przechwyci zapytania i nie będzie “karmił” nas dowolnymi danymi. Z tego względu, wymyślono protokół HSTS (HTTP Strict Transport Security). Jest to protokół implementowany bezpośrednio przez przeglądarki. Jeśli serwer ustawi odpowiedni nagłówek, wtedy przeglądarka jest zobowiązana łączyć się zawsze przez HTTPS, a nie HTTP. Dzięki temu, MITM jest nie możliwy, ponieważ nigdy nie dojdzie do połączenia HTTP, a jak wiemy, dane przesyłane przez HTTPS nie mogą być zmodyfikowane. Aby przeglądarka łączyła się zawsze przez https, serwer strony musi zwrócić następujący nagłówek w odpowiedzi: Strict-Transport-Security:max-age=631138520; includeSubDomains; preload Parametr max-age oznacza, jak długo przeglądarka ma łączyć się zawsze przez https. Powyższy nagłówek zawsze należy zwracać przez HTTPS, a nie przez HTTP. Wynika to z prostego faktu, że przeglądarka nie może ufać niczemu, co pochodzi z HTTP. Łatwo wyobrazić sobie, że przez HTTP, MITM modyfikuje np. max-age do 1. Sekwencja może zatem teraz wyglądać następująco: 1. Użytkownik wpisuje http://www.domain.com 2. Serwer zwraca 302 oraz https://www.domain.com 3. Przeglądarka łączy się z https://www.domain.com 4. Serwer zwraca nagłówek Strict-transport-security. 5. Użytkownik wpisuje http://www.domain.com 6. Przeglądarka automatycznie przekierowuje na https://www.domain.com (kod 307, internal redirect). Od teraz MITM nie jest w stanie nam zaszkodzić, ponieważ nie wychodzi żadne połączenie HTTP. Powyższe rozwiązanie ma jednak wciąż pewną lukę.Pierwsze połączenie HTTP wciąż jest niebezpieczne. Co prawda minimalizuje to groźbę ataku MITM ponieważ wystarczy, że użytkownik chociaż raz wcześniej korzystał ze strony (tak, że HSTS został ustawiony). Niestety w skrajnej sytuacji, wciąż mamy ten sam problem (MITM i pierwsze zapytanie z danej przeglądarki). Z tego względu mamy tzw. pre-loaded lists. Przeglądarki korzystają z tych list i wtedy każda strona, która na niej znajduje się, będzie ładowana automatycznie wyłącznie przez HTTPS. Możemy naszą stronę dodać tutaj. Po dodaniu do listy, przeglądarki będą łączyć się automatycznie przez HTTPS, nawet za pierwszym razem. Możemy również zobaczyć adresy aktualnie dodanych stron do tych list. W następnym wpisie, pokażę jak zaimplementować HSTS w ASP.NET MVC. W międzyczasie zachęcam zapoznać się z kompatybilnością różnych przeglądarek z HSTS . Wyświetl pełny artykuł1 point
-
To pytanie czy co? Dev C++ to przeżytek, nie warto w tym pisać czegokolwiek.1 point
-
1 point
-
Fajnie, właśnie zaczynam ogarniać androida w pakiecie z libGDX więc pewnie się przyda ;)1 point
-
Wizualna uwaga - fonty użyte w headerach nie mają polskich znaków. Brak polskich elementów np. domyślnie wyświetla się "Continue reading ->"1 point
-
By stwierdzić, jaki język jest dla ciebie to je lepiej wypróbuj: Ruby online: http://tryruby.org/levels/1/challenges/0 Python online: http://www.tutorialspoint.com/ipython_terminal_online.php http://www.stavros.io/tutorials/python/ Po tym stwierdzisz co jest lepsze dla Ciebie. Ja używam Rubiego, bo jest takim następca Perla i ma dużo elementów, które ułatwiają pracę.1 point
-
1 point
-
http://www.tedunangst.com/flak/ - developer OpenBSD, rzadko pisze ale b. dobre posty http://undeadly.org/cgi - newsy ze świata BSD http://gynvael.coldwind.pl/ - był już polecany, jego blog wymiata http://lcamtuf.blogspot.com/ - lcamtuf, autor ciszy w sieci i twórca AFL Plus standardowo reddit.com (r/programming, r/openbsd, r/linux, r/coding), lobste.rs i new.ycombinator.com1 point
-
1 point
-
Zaczęłam od Ruby, a skończyłam na Pythonie. Dlaczego? Mogłam liczyć na większą pomoc niż w Ruby i Python nie sprawiał tyle problemów z odpaleniem go na Windowsie1 point
-
Skoro już dogrzebałam się do tego wątku dzięki Bartoszowi to powiem tak: kobiet programujących zawodowo, w firmie lub na zleceniu - nie znam. Ale też nie jestem z branży deweloperskiej więc trudno żebym znała Sama zajęłam się Pythonem nie tak dawno i robię to raczej hobbystycznie - sprawia mi to frajdę. Pewnie liczba kobiet programujących zawodowo się zwiększy - takie czasy i słusznie: każdy ma prawo robić to co lubi i chce robić.1 point
-
Nazwanie używania 'var' lenistwem programistycznym to zdecydowanie nadużycie. Dla przykładu, w moim subiektywnym odczuciu dużo wygodniej czyta się var systemTimeZonesList = TimeZoneInfo.GetSystemTimeZones().ToList();niż List<TimeZoneInfo> systemTimeZonesList = TimeZoneInfo.GetSystemTimeZones().ToList(); Szczególnie uwzględniając fakt, że po najechaniu kursorem na słowo kluczowe 'var' wyświetlany jest w eleganckim tooltipie typ zmiennej. Chyba, że ktoś nie korzysta z VS Myślę, że używając 'var'a kluczowe jest nadawanie odpowiednich nazw zmiennych. Gdyby w powyższym przykładzie zamiast systemTimeZonesList programista nazwał zmienną stzl, czytający faktycznie mógłby mieć problem z rozszyfrowaniem kodu. Sam do niedawna wzbraniałem się przed korzystaniem z 'var', ale teraz nie wyobrażam sobie życia bez niego, szczególnie w połączeniu z LINQ i typami anonimowymi. Oczywiście, można prowadzić wielogodzinne dyskusje czy korzystanie z 'var' jest dobre czy złe, czy to dobra praktyka czy lenistwo programistyczne - ale po co? Każdy używa jak mu wygodniej albo tak jak ustali zespół1 point
-
Sorry, dopiero teraz zauważyłem post. Ostatnia linijka, chyba wypadła Ci nazwa zmiennej z lewej strony operatora ".&.", tzn.: in Data.Char.chr ( rhsfn13 Data.Bits..&. 0xFFFF )U mnie działa $ ghc prog2.hs [1 of 1] Compiling Main ( prog2.hs, prog2.o ) Linking prog2 ... $ ./prog2 abc!1 point
-
oj chyba nie, tamtej już nie ma warto dodać że co 24h jest inna książka do zgarnięcia - obecnie do pobrania jest "Python Geospatial Development"1 point
-
1 point
-
Darmowy ebook od firmy RedGate z 52 tipsami jak przyśpieszyć działanie aplikacji .NET http://www.red-gate.com/products/dotnet-development/ants-performance-profiler/entrypage/52-net-performance-tips1 point
-
Rails jest prosty do nauki, przez co prosto go się nauczyć - jednak na początku najlepiej poznać samego Rubiego, bo posiada wiele fajnych udogodnień dla programistów (trochę przypomina Perla). Największy problem z wydajnością miał Rails, teraz to poprawili. Ruby ogólnie jest dość wydajny: http://benchmarksgame.alioth.debian.org/u64q/ruby.html Odwieczne porównanie z Pythonem Dodatkowo można też czynnikiem ma framework na wydajność: http://www.madebymarket.com/blog/dev/ruby-web-benchmark-report.html1 point
-
Jemu chyba bardziej chodziło o rozwiązania takie jak mysqli dla PHP http://sequel.jeremyevans.net/1 point
-
Nie wiem dokładnie o co chodzi w tym pytaniu, ale systemy zarządzania bazamu danych to: https://pl.wikipedia.org/wiki/MySQL https://pl.wikipedia.org/wiki/PostgreSQL https://pl.wikipedia.org/wiki/SQLite Jeżeli chcesz mieć możliwość podglądu graficznego do konkretnego systemu bazodanowego, to: MySQL: https://www.mysql.com/products/workbench/ PostgreSQL: http://www.pgadmin.org/ SQLite: http://sqlitestudio.pl/1 point
-
Brzmi jak odkrywanie fog of war w grach, ja bym poszedł tą drogą i poszukał algorytmów z gier np. http://www.redblobgames.com/articles/visibility/1 point
-
Myślę, że to dobry pomysł. Generalnie dobrze zarządzane forum internetowe żyje, ma swoją społecznosć. Tutaj konkurujesz trochę ze StackOverflow i w sumie jesteś z góry na straconej pozycji. Ktoś powie, że for internetowych też jest sporo i czy jest sens zakładać kolejne. Ja uważam, ze jest sens ale pod jednym warunkiem - że będzie to naprawdę solidnie przemyślane forum, skirowane do różnych grup użytkowników, a nie jednej. Co mam na myśli? Otóż wystaczy wejść na pierwsze lepsze forum dla "webdeveloperów": co na takich formach się rzuca w oczy? Że są zrobione głównie pod programistów PHP. A gdzie inne języki, ja sie pytam? Przezcież aplikacje WWW dzisiaj się robi coraz częściej w nodeJS, Pythonie, Rubym, Javie, Scali, Groovim, C#, a nawet w GO. Nie wiem dla kogo przeznaczone są takie fora, ale pomijają sporą grupę programistów, którzy miejsc tam dla siebie nie znajdą. Przejdźmy dalej. Pierwsze lepsze forum dla programistów, jakie ma kategorie: Java, C\C++, Inne języki. Zaraz, zaraz. Dlaczego inne języki są wpakowane do jednego wora? Ktoś powie, że Java i C++ są najpopularniejsze. Ja się zgadzam, ale uważam, że takie upakowanie do jednego wora takich języków jak Python czy Ruby razem z jakimiś językami skamilinami typu Ada czy Fortran, to trochę strzał w stopę - ten zabieg również odrzuca całą rzesze programistów od takiego forum. Jak dobrze przemyślisz strukturę forum, jego kateorie, wymyśliz ciekawe działy, które będa rozkręcać to forum: np. programistyczne konkursy weekendowe, w stylu np. "Napisz grę ping pong", "Napisz jakiś algorytm", "Napisz skrypt wyciągający najpopularniejsze obrazki z redditta" itp. - chętni będą wrzucać swoje prace, a pozostali będa mogli głosować na najlepiej dopracowany produkt. Oczywiście to są moje luźne propozycje ;)1 point
-
Ja się uczę programować w JavaScript i innych skryptowych językach, programowałam też troche w PHP. Teraz czekam na kurs certyfikujacy z C# i ASP.NET, wcześniej chodziłam na studia, ale dałam sobie spokuj bo nie mogłam pogodzic ich z pracą.1 point
-
Tak. Spotkałem. Nawet znam osobiście. Ich brak w IT wynika z samospełniającej się przepowiedni. "Jestem dziewczynką więc jestem słaba z matmy", potem z informatyki - w każdym razie wszyscy dają mi to do zrozumienia. A potem nawet jak skończy jakiś kierunek IT - "dajmy ją do wdrożenia, kobiety mają lepszy kontakt z klientem". Mam małą córkę wiec wiem co mówię, a dzieci lubią być akceptowane więc się starają dostosować.1 point
-
Aż dziwne, że nikt nie polecił jeszcze: Wprowadzenie do algorytmów T. H. Cormen to chyba najważniejsza pozycja. Ja oprócz z w/w księgi korzystałem jeszcze z tych: Java: Core Java 2 Podstawy Core Java 2 Techniki zaawansowane PHP: PHP i MySQL Tworzenie stron www C: Język C - K. N. King1 point
-
Zdecydowanie mogę polecić Sublime Text, który wraz z kilkoma pluginami staje się potężnym narzędziem. Działa błyskawicznie, w pamięci zajmuje raptem 15~20 MB więc idealnie nadaje się do słabszych komputerów, w przeciwieństwie do kombajnów pokroju NetBeans'a czy też Eclips'a. Generalnie edytor jest płatny, ale można go z powodzeniem używać za darmo - po prostu bez wykupienia licencji, co dwudzieste zapisanie pliku wyskakuje okienko zachęcające do jej zakupienia. Kilka dodatków, które warto od razu zainstalować: Package ControlBrackt HighlighterEmmetJsFormatSublimeCodeIntelTagWarto zapoznać się z funkcjonalnością programu: http://net.tutsplus.com/tutorials/tools-and-tips/sublime-text-2-tips-and-tricks/ i obejrzeć kilka tutoriali: http://www.youtube.com/playlist?list=PLLnpHn493BHEYF4EX3sAhVG2rTqCvLnsP Po opanowaniu około 6 skrótów klawiszowych, kod html/css/js można pisac kilkukrotnie szybciej niż każda inna osoba pracująca w wielkich programistycznych kombajnach, gdzie każdą pierdółę trzeba 5 razy wyklikać w menu :)1 point
-
Ja pamiętam tą książkę jak uczyłem się assemblera http://www.amazon.com/Assembly-Language-Step---Step-Duntemann/dp/0471578142/ref=sr_1_4?s=books&ie=UTF8&qid=1370962342&sr=1-4 ale to takie pierwsze kroki, chociaż otworzyła mi oczy na niektóre kwestie.1 point