title: Techniki pozwalające uniknąć plątaniny łączenia git podczas pracy nad rozległą zmianą

text: Jestem absolutnie nieszczęśliwy, gdy wchodzę w sytuację, w której muszę scalać zmiany innych programistów z moimi. Kiedy używasz `git` i pracujesz nad naprawdę rozległą zmianą, zdarza się to bardzo często. Kiedy zaczynam pracę nad zmianą, zakładam nowy oddział lokalny i zaczynam w nim pracować. Intencją jest przeniesienie moich zmian na pilota, gdy skończę. Koncepcja wydaje się cudowna, gdyby nie jedna nieznośna komplikacja: inni ludzie wprowadzają w międzyczasie zmiany w tych samych plikach, co ty. Szukam zestawu technik i zasad, aby zminimalizować moje narażenie na konieczność uzgadniania moich zmian ze zmianami innych osób, które wypchnęły swoje zmiany do tego samego pliku po tym, jak ściągnąłem go z pilota, ponieważ nie ma czegoś takiego jak blokowanie w git. Na przykład, czy codzienne przeciąganie się ze zdalnego do mojego lokalnego oddziału zmniejszy ogólną ekspozycję? Czy są inne sztuczki i techniki? Ponadto, jeśli masz zestaw poleceń git, które uruchamiasz w celu regularnej synchronizacji, udostępnij. **Jestem dosłownie w sytuacji, w której spędzam więcej czasu na synchronizowaniu moich zmian z innymi ludźmi niż na pisaniu kodu – i myślę, że to nie jest wydajny model.** Albo robię coś źle, albo coś robimy źle jako zespół. Jestem z tego powodu nieszczęśliwa i to poważnie wpływa na jakość mojego życia. Rozumiem i doceniam zalety git i uwielbiam tak łatwo przełączać gałęzie. Ale czuję, że narażenie, jakie pozostawia na połączenie, jest jak słoń w pokoju, którego wielu w społeczności odmawia lub jest dogmatycznie zniechęconych do dyskusji.


Czy AJAX musi używać języka po stronie serwera, takiego jak PHP/ASP.NET/Java, aby uzyskać dostęp do bazy danych? A może jakiś serwis internetowy związany z tymi językami? A może AJAX jest w stanie komunikować się bezpośrednio z bazą danych?


title: Skąd mam wiedzieć, że moje dane mają charakter relacyjny lub obiektowy?

text: Po prostu przeczytaj te wiersze-> * Jeśli twoje dane mają charakter obiektowy, użyj magazynów obiektów ("NoSQL"). > Będą znacznie szybsze niż relacyjna baza danych. > > * Jeśli Twoje dane mają charakter relacyjny, koszty związane z relacyjną > bazą danych są tego warte. > > from- http://seldo.com/weblog/2011/06/15/orm_is_an_antipattern Skąd więc mam wiedzieć, czy moje dane mają charakter relacyjny czy obiektowy?


title: Czy istnieje konkretny cel dla list heterogenicznych?

text: Pochodzę z C# i Javy, przyzwyczaiłem się do tego, że moje listy są jednorodne i ma to dla mnie sens. Kiedy zacząłem podnosić Lisp, zauważyłem, że listy mogą być niejednorodne. Kiedy zacząłem bawić się słowem kluczowym `dynamic` w C#, zauważyłem, że począwszy od C# 4.0, mogą istnieć również listy heterogeniczne: `List<dynamic> heterogenousList` Moje pytanie brzmi, o co chodzi? Wygląda na to, że heterogeniczna lista będzie miała znacznie większe obciążenie podczas przetwarzania i że jeśli potrzebujesz przechowywać różne typy w jednym miejscu, możesz potrzebować innej struktury danych. Czy moja naiwność podnosi swoją brzydką twarz, czy naprawdę są chwile, kiedy przydaje się niejednorodna lista?


title: Co to jest narzędzie do wdrażania korporacyjnego/zautomatyzowanego?

text: **Co to jest narzędzie do wdrażania korporacyjnego/automatycznego i w jaki sposób może być używane?** Przykłady byłyby plusem, ale nie zamieniaj tego w listę. Jakie są kluczowe czynniki, które należy ocenić, patrząc na takie narzędzie?


title: Czy JavaScript obsługuje tablice indeksowane numerycznie z bardziej zoptymalizowanym algorytmem niż tablica asocjacyjna?

text: Wiem, że Python, Perl, Java, Lua i oczywiście C (ponieważ jest to jedyna tablica w standardzie ANSI afaik) obsługują szybsze wyszukiwanie tablic indeksowanych numerycznie niż wyszukiwanie hash lub coś w tym rodzaju. Czy Javascript również? Jako przykład w kodzie o co mi chodzi, w przypadku Perla: for(i=0;i<10;i++) { # Zrób coś } jest wolniejsze niż: for (1..9) { # zrób coś innego } lub: @var = (1,2,3) foreach(@var) { print $_; # spójrz, podoba mi się } i szybciej niż: foreach mój $klucz (klucze %hash) { print $_; # Spójrz, jestem fantazyjny } i w pythonie, biorąc pod uwagę następujące: class thisClass: def methodOne(i): return i+1 thisDict = { 'number': 1 } Te dwie operacje są podobne pod względem szybkości, ponieważ obie wymagają wyszukiwania skrótu w hash o tej samej szerokości: thisObject = new thisClass i = thisObject.methodOne(1) oraz: i = 1+thisDict['1']; Oba te rodzaje wyszukiwań są wolniejsze niż to: thisTuple = (1,) i = thisTuple[0]+1 Podczas gdy to: thisArray = [1,2] for i in thisArray: print i jest iterowane szybciej niż: thisTuple = ( 1,2) for i in this Tuple: print i przez co listy iterują szybciej niż krotki. Czy JavaScript obsługuje tablice indeksowane numerycznie inaczej niż tablice asocjacyjne? Nie wierzę, że JavaScript obsługuje więcej niż tablice i tablice asocjacyjne, ale jeśli tak, to jak mają się do tych dwóch prędkości?


title: Od freelancera do firmy zajmującej się oprogramowaniem

text: Więc od lat uczę i pracuję jako freelancer. Zarabiam świetne pieniądze i kocham to, co robię. Jednak ostatnio stwierdziłem, że mam więcej osobistych pomysłów na projekty niż mogę pracować. Mam mnóstwo pomysłów na oprogramowanie, na które chciałbym zwrócić uwagę. Postanowiłem, że pod koniec lata przestanę pracować jako freelancer i włożę całą swoją energię w założenie małej firmy programistycznej. Zastanawiałem się, czy ktoś inny poszedł tą samą ścieżką, a jeśli tak, czy masz dla mnie jakieś rady dotyczące tej zmiany kariery?


title: Czy wzorzec Layer Supertype nie uszkodzi naszego modelu domeny?

text: a) Według mojej wiedzy Obiekty Domeny powinny w większości być nieświadome technicznych aspektów projektu. Ponieważ postrzegam dziedziczenie klas jako rozwiązanie techniczne, czy wprowadzenie wzorca Layer Supertype do naszej domeny nie uszkodziłoby go? b) Jeśli się nie zgadzasz, wyjaśnij, dlaczego Dzięki


title: Czy są jakieś korzyści z usuwania nieużywanych referencji w projekcie VS?

text: Czy są jakieś korzyści z usuwania nieużywanych referencji w projekcie VS (takich jak można to zrobić za pomocą narzędzia Resharper), czy też VS automatycznie zajmie się tym podczas budowania/wdrażania?


title: Mnożenie i dzielenie tablic

text: Natknąłem się na pytanie, które (w końcu) sprawiło, że zacząłem się zastanawiać nad arytmetyką tablic. Myślę konkretnie w Ruby, ale myślę, że koncepcje są niezależne od języka. Tak więc dodawanie i odejmowanie są zdefiniowane w Rubim jako takie: [1,6,8,3,6] + [5,6,7] == [1,6,8,3,6,5,6, 7] # Wszystkie elementy pierwszego, potem wszystkie elementy drugiego [1,6,8,3,6] - [5,6,7] == [1,8,3] # Od pierwszego, usuń wszystko, co znajduje się w drugim, a tablica * skalar jest zdefiniowana: [1,2,3] * 2 == [1,2,3,1,2,3] **Ale** Co, koncepcyjnie, powinno być ? Żadna z nich nie jest (na ile mogę znaleźć) zdefiniowana: * Tablica x Tablica: `[1,2,3] * [1,2,3] #=> ?` * Tablica / Skalar: `[1,2 ,3,4,5] / 2 #=> ?` * Tablica / Skalar: `[1,2,3,4,5] % 2 #=> ?` * Tablica / Tablica: `[1,2,3 ,4,5] / [1,2] #=> ?` * Tablica / Tablica: `[1,2,3,4,5] % [1,2] #=> ?` Znalazłem jakieś matematyczne opisy tych operacji dla teorii mnogości, ale tak naprawdę nie mogłem ich przestrzegać, a zbiory nie mają duplikatów (tablice mają). Edycja: Uwaga, **nie** mam na myśli arytmetyki wektorowej (macierzowej), która jest całkowicie zdefiniowana. Edit2: Jeśli jest to zła wymiana stosów, powiedz mi, która jest właściwa, a ja ją przeniosę. Edycja 3: Dodaj operatorów modów do listy. Edycja 4: Wyobrażam sobie, że `array / scalar` można wyprowadzić z `array * scalar`: a * b = c => a = b / c [1,2,3] * 3 = [1,2,3]+[ 1,2,3]+[1,2,3] = [1,2,3,1,2,3,1,2,3] => [1,2,3] = [1,2,3 ,1,2,3,1,2,3] / 3 Które biorąc pod uwagę, że podział programisty ignoruje resztę i ma moduł: [1,2,3,4,5] / 2 = [[1,2], [ 3,4]] [1,2,3,4,5] % 2 = [5] Z wyjątkiem tego, że są to dość wyraźnie operacje nieodwracalne (nie ten moduł kiedykolwiek jest), co nie jest idealne. Edycja: zadałem pytanie dotyczące matematyki, które doprowadziło mnie do Multisets. Myślę, że rozszerzalne tablice są "wielozestawami", ale nie jestem jeszcze pewien.


title: Szukasz nowego języka programowania do tworzenia stron internetowych?

text: Zastanawiam się, czy istnieją jakieś _mniej stronnicze_ zasoby, które dają dobre, _konkretne przeglądy_ języków programowania i ich zamierzonych celów. Chciałbym nauczyć się nowego języka, ale odwiedzanie stron w każdym języku nie działa. Każdy mówi o tym, jaka jest wspaniała, nie wspominając zbyt wiele o swoich słabościach czy konkretnych celach. > Ruby to dynamiczny język programowania o otwartym kodzie źródłowym z naciskiem na > prostotę i produktywność. > > Python to język programowania, który umożliwia szybszą pracę i > bardziej efektywną integrację systemów. Będąc od lat programistą PHP, Vic Cherubini dobrze podsumowuje moją sytuację: > Dobrze znałem PHP, miałem własny framework i mogłem szybko > coś uruchomić. >> Programowałem tak przez całą rewolucję MVC. Dostałem lepszą i > lepszą pracę (czytaj: lepsze płacenie, lepszy tytuł) jako programista PHP, ale > po drodze zdałem sobie sprawę, że kod, który napisałem w wolnym czasie, był świetny, a > kod, nad którym pracowałem był okropny. Gorzej niż strasznie. > Okropne. Zły poziom OS Commerce. Posiadanie projektów pobocznych utrzymywało mnie przy zdrowych zmysłach, ponieważ > kod, z którym pracowałem w pracy, sprawiał, że byłem nieszczęśliwy. > > Dlatego wycofuję się z PHP dla moich projektów pobocznych i nowych przedsięwzięć programistycznych. Zajmuję się PHP. Wyczerpany, jeśli wolisz. Osiągnąłem poziom > gdzie myślę, że jestem na szczycie z tym jako językiem i jeśli wkrótce nie przejdę do > nowego języka, skończę całkowicie z programowaniem i nie > chcę że. Języki, na które się przyjrzałem, to JavaScript (dla node.js), Ruby, Python i Erlang. Myślałem nawet o Scali lub C++. **Problem polega na ustaleniu, które z nich najlepiej zaspokoją moje potrzeby.** Więc gdzie mogę pominąć szum i uzyskać prawdziwe informacje o dojrzałości platformy, wielkości społeczności oraz mocnych stronach i słabości tego języka. Jeśli je znam, wybór języka do dalszego tworzenia stron internetowych powinien być łatwy. **Aktualizacja** Po prostu nie chcę przechodzić 4 miesiące z jakimś językiem i uważam, że to jest do bani, ponieważ każdy wątek ma 4 MB narzutu lub maksymalna liczba jednoczesnych połączeń to 999, nie ma pakietu do zrobienia "X" funkcja lub wsparcie jest wycofywane dla nowej gałęzi języka.


title: Czy licencja BSD jest kompatybilna z Apache?

text: Czy mogę opracować oprogramowanie na licencji BSD, które rozszerza oprogramowanie na licencji Apache (i odwrotnie)?


title: Czy ten kod jest wystarczająco zły, aby uzasadnić przepisanie?

text: Jest to aplikacja internetowa do przetwarzania płatności. Utrzymuję go tutaj od prawie dwóch lat, więc mam dobre pojęcie o problemach z systemem. Około pół roku po rozpoczęciu tutaj zacząłem przepisywać w php/mysql, które nie zostały wykorzystane (nie z dobrych powodów, takich jak „nie zostało przetestowane” lub „skąd mamy wiedzieć, czy będzie stabilne?”). ale „php/mysql to nie Microsoft i dlatego są złe” oraz „musimy kupić licencję na mysql / będziemy musieli udostępnić nasz kod źródłowy, jeśli go użyjemy / żadne sklepy nie używają niczego poza produktami Microsoft” - to były dokładnie zabawne rozmowy. Skończyło się to na w pełni funkcjonalnym jednorazowym prototypie. Nie byłem zadowolony z efektu końcowego (głównie z tego, jak HTML był połączony z kodem, byłoby piekłem dla projektanta stron internetowych), ale zadziałało i przynajmniej uzyskałem pełny wgląd w dane wejściowe/przetwarzanie/wyjścia całego systemu.Obecny system, którego używamy, działa, ale jest delikatny i trudny do dodania funkcji bez zepsucia czegoś innego lub wymagającego wielu ręcznych poprawek. Ale czy to wystarczająco złe, aby potrzebować przepisania, aby iść do przodu i spotkać? wymagania i cechy nowych potencjalnych klientów? Tak myślę. Oto lista zapachów kodu: * Pierwotnie zaprojektowany w Visual Basic w 2003 r. lub wcześniej, bez większych zmian projektowych od tego czasu * Brak klas lub jakiegokolwiek rodzaju projektowania obiektowego * Plik Module1.vb zawierający 3700 wierszy * Ręczne wdrażanie plików wykonywalnych i plików aspx * Kompletny bałagan HTML zaprojektowany w 2003 r., niewykorzystane arkusze stylów * Nowi klienci zostali stworzeni poprzez skopiowanie i zmianę nazw stron i funkcji * Skopiowane nazwy funkcji, np. function1, function2, function3 * Wysoce połączona z SQL Server * Nadmiarowe połączenie z bazą danych->polecenie->bloki czytników * Wysoce połączona z naszym obecnym procesorem płatności * Wiele funkcji z 6 parametrami (wiele byref, ponieważ nie ma klas) * Brak testów jednostkowych , trzeba debugować od początku aplikacji do końca za każdym razem * Bez względu na bezpieczeństwo * Styl kodowania jest całkowicie niespójny, z wyjątkiem tego, co robi VB * Ustawienia (w tym hasła) są zakodowane na sztywno w skompilowanych plikach (oprócz tych, które przeniosłem do web.config) * Komentarze są albo martwym kodem (znajdującym się wszędzie, czasem do 50 linii), stwierdzają oczywistość, albo nieistnieją * Niezwykle kruche - podczas poprawek zmiana kodu w jednym miejscu wpływa na stabilność w innym miejscu. * Poprawiłem parametr byref jednej funkcji, aby nie zawsze był pusty (więc faktycznie umieściłby wartość w zmiennej, którą miał otrzymać, ale kto mógł powiedzieć, czy została użyta, czy nie?) tylko po to, aby mieć blok kod z oczywistą usterką (która istniała tam od ponad 5 lat) nagle zaczyna działać. * Brak obiektów testowych - wszystkie dane testowe są pobierane z aktywnych baz danych lub kopii aktywnych baz danych * Brak konieczności projektowania tabel bazy danych - tabele zawierają bezużyteczne i nadmiarowe dane. * Kod silnie powiązany z tabelami/nazwami pól/typami/procedurami bazy danych * Ostrzeżenie 279 Przekroczono maksymalną liczbę ostrzeżeń. * Brak rozdzielenia kodu debugowania i kodu produkcyjnego oprócz instrukcji if (miał w tym ogromny błąd pod koniec 2009 r.) * Wiele, wiele nadmiarowych zapytań SQL do aktualizacji wierszy z danymi sesji * Plik JavaScript jest całkowicie nieudokumentowany i ma funkcje i ma bezużyteczne i nadmiarowe nazwy (np. testFun, validate1, 1a, 2, 2b, 2c itd.) * Zewnętrzna dokumentacja to tylko przegląd. Od tego czasu napisałem przyzwoitą dokumentację.


title: Jak mogę debugować stronę JSP?

text: Próbuję edytować JSP dla projektu i otrzymuję NullPointerException gdzieś w JSP, gdy zażądano go od mojego serwera. Mój serwer WWW (JBoss) zgłasza wyjątek, ale podaje mi fałszywy numer linii. Raportuje, że wyjątek zdarzył się w linii 702, ale mój JSP ma tylko 146 linii, więc nie jestem w stanie określić, która linia się dławi. Jakie są dobre techniki debugowania błędów w stronach JSP? Jako IDE używam IntelliJ 9 Ultimate. Dziękuję


title: Skąd wzięła się tradycja podpowiedzi powłoki we fragmentach kodu?

text: Większość przykładów kodu, które widzę, demonstruje kod powłoki poprzedzający każde polecenie słowem `$`. Posiadanie prefiksu ma sens, ale nie rozumiem, dlaczego w szczególności używa się `$`. Niektóre inne symbole, takie jak `!`, które można skopiować i wkleić do znaku zachęty bez wpływu na wykonanie polecenia, mają dla mnie znacznie więcej sensu. Skąd więc wzięła się ta notacja?


title: Czy możemy nazwać pole końcowe jako stałą obiektu?

text: Pola `statyczne końcowe` nazywamy `stałymi`, raczej powinienem powiedzieć `stałą klasy`. Czy zatem możemy nazwać tylko „końcowe” pola jako „stałą obiektu”? Czy słusznie to powiedzieć? Edytowane :: Rozważmy następujący kod: class JustFinal { final int a=20; ostateczna int b; JustFinal(int x, int y){ //a=x; b=y; } public static void main(String arg[]) { JustFinal jf = new JustFinal(100,200); } } W powyższym kodzie pole `a` będzie miało tę samą wartość dla wszystkich instancji obiektu, a pole `b` może mieć inną wartość dla innej instancji obiektu. Czy nie powinniśmy nazywać „pola końcowego a” jako „STAŁY”, a „pola końcowego b” jako „STAŁA OBIEKTU”?


title: Co może zrobić ASP.NET MVC, a Ruby on Rails nie?

text: ASP.NET MVC i Rails mają podobny obszar zastosowania, są zbudowane wokół tej samej architektury, oba frameworki są stosunkowo nowe i są open source. Jako programista Rails chciałbym wiedzieć, co może zrobić ASP.NET MVC, a Ruby on Rails nie i na odwrót?


title: Niejasność Lispu we wspólnych projektach

text: Bawię się ideą uczenia się Scheme, ale mam kilka obaw. Z tego, co rozumiem, Lisp intensywnie korzysta z makr, które pozwalają programistom na drastyczną zmianę samego języka. Rozumiem, dlaczego jest to przydatne, ale jak to wpływa na projekty współpracy? Ile zamieszania może to spowodować, jeśli inni programiści implementują niejasne makra, z dokumentacją lub bez? Czy istnieją dobrze zdefiniowane wytyczne dotyczące unikania tego zamieszania, czy też istnieją funkcje językowe, które pomagają tego uniknąć? Pytam, ponieważ moja obecna praca to C++ i musimy używać własnego frameworka. Nasz starszy programista próbował rozszerzyć C++, aby był jak najbardziej na poziomie Java. Musimy rozsypać nasz kod niejasnymi makrami, aby wszystko stało się smartpointerem (oczywiście w domu, a nie standardowym typem biblioteki) i wyjątkami homebrew itp. W rezultacie wszystko, co piszemy, zamienia się w kupę bałaganu i kiedy te magiczne makra się psują, nie mam pojęcia, jak je naprawić. Oczywiście w grę wchodzi bezpieczeństwo pracy, ale zapomnijmy o polityce i załóżmy, że wszyscy są tutaj z właściwego powodu. Z tego, co czytałem, preprocesor C jest bardzo prymitywny w porównaniu z Lispem. Więc czy taka sytuacja byłaby 1000 razy gorsza w Lispie, czy jakoś byłaby lepsza?


title: Jak sprawić, by stos szablonów C++ działał z podstawowymi typami danych i zmiennymi złożonymi?

text: Szablony są dobre dla podobnych algorytmów różnych typów danych. Powiedzmy, że tworzę stos szablonów podstawowego typu danych... Stack<int> stck(10); stck.Push(5); Popchnąłbym to... int x = stck.Pop(); x byłoby 5. Jeśli ponownie wywołam pop, nie ma żadnych elementów, więc mam metodę, która zwraca 0 dla wartości null. Może to być coś innego, ale cokolwiek. Ale teraz, jeśli zmienię typ szablonu na zmienną złożoną (typ struktury - powiedzmy RECT), a stos jest pusty, nie może zwrócić 0. Oczekuje typu RECT, ale nie mam już żadnego . Jak sprawić, by to działało dla podstawowych typów danych i zmiennych złożonych? Wyjątki?


title: Czy wydanie kodu, który nie jest open source, to zła decyzja?

text: Pracuję dla firmy, która posiada kilka programów o zamkniętym kodzie źródłowym. Jedno z naszych programów służy do obsługi klientów i generowania dochodów, więc ma dla nas wartość komercyjną (i opłaca moją pensję). Mówiłem o otwartym sourcingu kodu, ale opcja otwartego sourcingu w ramach czegoś takiego jak MIT lub GPL lub jakakolwiek inna licencja open source, która pozwala konkurentom na zainstalowanie go i oferowanie naszym klientom po niższej cenie, spotkała się z wyraźnym oporem. A co z pokazywaniem kodu, ale nie na licencji open source? Argumenty, które otrzymałem przeciwko temu, są takie, że ten ruch zmyli klientów i programistów i przyniesie nam więcej złego rozgłosu niż cokolwiek dobrego. Twórca PAINT.NET zwykł publikować swój kod i miał sporo wątpliwości, kiedy zaczął przypominać konkurentom, że kod jest przeznaczony wyłącznie do celów edukacyjnych i nie jest tak naprawdę open source. Powiedziano mi również, że open sourcing dla samego open sourcingu nie ma sensu, bla bla bla, i jeśli nie mam planu, jak to przyniesie większe przychody, to nie jest dla nas. Cóż, szczerze mówiąc nie mam planu, ale pomyślałem, dlaczego nie spróbować. Oczywiście nie mogę powiedzieć, czy to nam pomoże, czy nam zaszkodzi. Nie chcę brać odpowiedzialności za posunięcie, które może zaszkodzić firmie, która dobrze sobie radzi i spowodować zwolnienie ludzi. Jak powiedziałem, licencja open source nie wygląda na opcję, więc jest między zamkniętym kodem a wyświetlaniem kodu, ale nadal pod normalną licencją praw autorskich. Ale jak powiedziałem, istnieje opór przed pokazywaniem kodu z powodu obaw, że konkurencja użyje naszego kodu do stworzenia własnego. Czy ktoś zna jakiekolwiek fakty, które mogą pomóc w podjęciu tej decyzji, za lub przeciw pokazaniu kodu.


title: Ile wersji konta jest przy tworzeniu responsywnego projektu?

text: Uczę się tworzyć responsywne layouty stron i aplikacji internetowych. Mówi się, że musimy użyć zapytań o media, aby określić szerokość (rozdzielczość), a następnie wybrać układ (szkielet) dla tego ekranu. Chciałbym wiedzieć, ile układów (szkielet) powinienem wykonać? Proszę o poradę zgodnie ze swoim doświadczeniem. Na przykład: * 960x * 480x * 800x


title: Bezpośrednie modyfikowanie superglobalnych

text: Widziałem ludzi (którzy zazwyczaj piszą dobry kod) bezpośrednio zmieniali tablicę `$_POST` za pomocą kodu w następujący sposób: // Dodaj wartość, która nie została w rzeczywistości opublikowana $_POST['last_activity'] = time(); // Zmień istniejącą wartość posta $_POST['name'] = trim($_POST['name']); // Nasza funkcja pretendowania // Przekaż całą tablicę $_POST jako dane do pracy w funkcji // Funkcja update_record() odczyta tylko te wartości, których faktycznie potrzebujemy update_record($_POST); // ...To z pewnością było łatwiejsze niż tworzenie nowej tablicy // tylko z wartościami $_POST, których faktycznie potrzebujemy. To ma sens, że `update_record()` nie powinien mieć bezpośredniego dostępu do $_POST, więc możemy na przykład przekazywać do niego inne tablice danych, ale z pewnością jest to leniwe, zły projekt, a może po prostu źle? Jednak nadal przekazujemy poprawną tablicę do `update_record()`, więc po co tworzyć nową? Nie o to chodzi, tylko przykład użycia. Jednak słyszałem, jak wiele osób mówi, że nie powinno się tego robić z danymi `$_REQUEST` i jest to zła praktyka. Ale dlaczego? Wygląda wystarczająco nieszkodliwie. Przykłady: * Ustawienie domyślnej wartości `$_GET` (lub post), która tak naprawdę nie istnieje * Dodanie wartości `$_POST`, które nie zostały wysłane po przesłaniu formularza * Bezpośrednie oczyszczanie lub filtrowanie wartości tablicy `$_GET` _lub klucze_ bardzo wcześnie w skrypcie (zastępcze warunki sanitarne... dlaczego nie?) * Ręczne ustawianie wartości `$_POST` przed wysłaniem formularza w celu wypełnienia danych wejściowych wartością domyślną (gdy wejście brzmi `$_POST` jako wartość domyślną ; Zrobiłem to) * Tworzysz własne wartości `$_SERVER`? Jasne, hej, czemu nie? * A co z innymi, takimi jak `$_COOKIE` i `$_SESSION`? Oczywiście musimy je bezpośrednio zmodyfikować, prawda? Dlaczego więc nie pozostali? Czy należy dokonywać bezpośredniej modyfikacji superglobalnych **_nigdy_**, czy jest to w porządku w **_niektórych_** instancjach?


title: Czy naprawdę możliwe jest tworzenie tajnych systemów?

text: > Agencja chce stworzyć wysoce tajny system komputerowy z wykorzystaniem > publicznych wykonawców. Zatrudniają więc różne firmy do wdrażania różnych > komponentów systemu. Kiedy wszystkie komponenty są złożone razem, > system działa, ale każdy komponent z osobna nie ujawnia > prawdziwej natury systemu. Często charakter systemu jest kontrowersyjny, > nielegalny lub niebezpieczny. Scenariusz ten był wielokrotnie powtarzany w filmach i książkach, ale czy naprawdę jest możliwe zbudowanie takiego systemu komputerowego w świecie rzeczywistym bez znajomości jego charakteru przez co najmniej jedną firmę. Na przykład w filmie Batman: Mroczny rycerz. Batman wykorzystuje kontrahentów do zbudowania sieci szpiegowskiej, która pozwala mu używać telefonów komórkowych jako urządzeń sonarowych. Twierdzi w filmie, że nikt nie zna natury systemu, ponieważ pochodził z wielu różnych stron. Brzmi dobrze w science fiction, ale w prawdziwym świecie można tak skonstruować systemy. Chociaż wiem, że części systemu można łatwo zlecić na zewnątrz. Czy agencja mogłaby zbudować duży, złożony system komputerowy, korzystając z wykonawców, tak aby nikt nie znał natury tego systemu?


title: Czy naprawdę możliwe jest, aby biblioteki nie były zależne od innych bibliotek?

text: Często spotykam się z radą, aby każda biblioteka była niezależna. A jednak w rzeczywistości wydaje mi się, że nigdy tego nie osiągnę. Czy ta rada BS, czy rzeczywiście jest realistyczna? Przykład: Piszę bibliotekę wektorów 2D, a następnie używam jej do stworzenia biblioteki kolizji 2D. Następnie buduję bibliotekę fizyki 2D, która wykorzystuje zarówno bibliotekę wektorów 2D, jak i bibliotekę kolizji 2D. Czy poważnie oczekuje się ode mnie wymyślenia sposobu, aby biblioteka fizyki nie była zależna od pozostałych 2 bibliotek? Prawdopodobnie w końcu będę chciał móc serializować/deserializować dane dotyczące fizyki i kolizji, co oznacza, że będę chciał uczynić je bardziej zależnymi od jakiejś biblioteki serializacji. Inny przykład: mam bibliotekę ciągów z wieloma funkcjami ciągów (pomyśl `endsWith(str, ending)` i `startsWith(str, start)` lub cokolwiek. Następnie piszę bibliotekę szablonów, która używa mojej biblioteki ciągów. Rzadko wydaje mi się aby móc napisać nową bibliotekę, która nie korzysta z innych bibliotek.Mógłbym napisać interfejsy, a następnie napisać adaptery dla wszystkich, aby spróbować oddzielić jedną bibliotekę od drugiej, ale jest mało prawdopodobne, aby była wydajna i często modele różnych bibliotek oznacza to, że nawet gdybym mógł rozdzielić z interfejsem, próbując użyć innej biblioteki niż pierwotnie oddzielona, okaże się to niemożliwe lub masowo niewykonalne.Czy to jest oryginalna rada BS, czy istnieje jakiś sposób na faktyczne zastosowanie porady w realny świat?


title: Sprzedaż oprogramowania zamiast pracy na żądanie

text: Wykonywanie pracy na żądanie stresuje mnie i nie jest dobre dla moich pleców. Jakie wskazówki mógłbyś zaoferować, jeśli masz doświadczenie w dostrzeganiu potrzeb i pisaniu oprogramowania na zamówienie?


title: Planowanie pokera z kolegą z dysfunkcją wzroku

text: W biurze właśnie pojawił się nowy kolega z dysfunkcją wzroku. Odpowiadam za organizację sesji pokerowych planowania, a nowy kolega musi uczestniczyć jako członek zespołu. Mamy te ładne zestawy kart pokerowych z planowanymi numerami pokerowymi, ale to oczywiście nie pomaga naszemu nowemu koledze. Do tej pory rozwiązywaliśmy ten problem, po prostu nazywając szacunki, pozwalając nowemu koledze powiedzieć oszacowanie zaraz po tym, jak reszta odłożyła kartę, a potem reszta odwraca kartę, a ja wymieniam szacunki z rzędu. **Moje pytania:** Czy jest ktoś, kto ma doświadczenie w tego typu sytuacjach i ma lepsze rozwiązanie? Czy istnieje coś takiego jak pokerowe karty Braille'a? Obecne rozwiązanie działa, ale myślę, że można to poprawić dla nas wszystkich, na przykład kartami brajlowskimi.


title: Jak wstawić/zaktualizować dużą ilość danych do mysql za pomocą php

text: Mam arkusz Excela, który zawiera dużą ilość danych. Używam php do wstawiania danych do serwera mysql. Mam dwa problemy 1) Muszę zaktualizować wiersz, jeśli identyfikator już istnieje, w przeciwnym razie wstaw dane. 2) DUŻY PROBLEM: Mam ponad 40 000 wierszy, a limit czasu na serwerze sql ustawiony przez administratora wynosi 60 sekund. Kiedy uruchamiam zapytanie update/insert, zajmie to więcej niż 60 sekund i z tego powodu nastąpi przekroczenie limitu czasu. Więc cały proces się nie powiedzie. Czy mogę to zrobić? Obecnie sprawdzam identyfikator studenta, jeśli istnieje, a następnie aktualizuję w inny sposób. Wydaje mi się, że zajmuje to dużo czasu i powoduje, że serwer się wyłącza. Również mam to pole w mysql podające, kiedy dane zostały zaktualizowane (last_update). Myślałem o użyciu tej daty, a jeśli minęła konkretna data (tj. Kiedy ostatnio uruchomiłem program), to tylko te wiersze powinny zostać zaktualizowane. Czy to w ogóle pomoże? A jakie zapytanie mogę uruchomić, aby sprawdzić tę datę w bazie mysql, czy jeśli minęła konkretna data to tylko te wiersze trzeba zaktualizować, a nie wszystko inne. (Proszę o pomoc z przykładowym zapytaniem dla powyższego!!!!!!!!!!!!!!!!!!!)


title: Jakie rodzaje programowania wymagają praktycznej teorii kategorii?

text: Teoria kategorii ma zastosowanie w informatyce teoretycznej i oczywiście ma kluczowe znaczenie dla matematyki abstrakcyjnej. Słyszałem, że ma również bezpośrednie praktyczne zastosowania w programowaniu i tworzeniu oprogramowania. Do jakiego rodzaju programowania potrzebna jest praktyczna teoria kategorii? Do czego programiści wykorzystują teorię kategorii? Zwróć uwagę, że w tym poście używam słów „niezbędne” i „wymagane”. Zdaję sobie sprawę, że w pewnym sensie większość programistów skorzysta na posiadaniu doświadczenia w różnego rodzaju teoriach, ale szukam aplikacji bezpośrednich, w których wykorzystanie teorii kategorii jest niezbędne, tzn. jeśli nie znałeś teorii kategorii, prawdopodobnie nie mogłeś Zrób to. Ponadto chciałbym wyjaśnić, że przez „jaki rodzaj programowania” mniej liczę na szeroką odpowiedź, taką jak „programowanie funkcjonalne”, a bardziej na konkretne aplikacje, takie jak „pisanie oprogramowania bankowego” lub „tworzenie systemów operacyjnych”.


title: Jaki jest najlepszy sposób śledzenia zmian w bazie danych w dużym zespole?

text: Jaki jest najlepszy sposób śledzenia wszelkich zmian dokonanych w bazie danych SQL Server przed przejściem do produkcji w przypadku dużego zespołu? Używaliśmy arkuszy Excela, ale dość często brakuje rzeczy, które wychodzą z SQL porównując tylko podczas przenoszenia zmian do produkcji?


title: Jak powinienem dokonać refaktoryzacji takich instrukcji switch (Włączanie typu), aby były bardziej OO?

text: Widzę taki kod w naszej bazie kodu i chcę go zrefaktoryzować: (Następuje następujący pseudokod Typescript): class EntityManager{ private findEntityForServerObject(entityType:string, serverObject:any):IEntity { var existingEntity:IEntity = null; switch(entityType) { case Types.UserSetting: existingEntity = this.getUserSettingByUserIdAndSettingName(serverObject.user_id, serverObject.setting_name); przerwanie; case Types.Bar: existingEntity = this.getBarByUserIdAndId(serverObject.user_id, serverObject.id); przerwanie; //Dużo więcej instrukcji dotyczących wielkości liter... } return existingEntity; } } Wady typu włączania są oczywiste. Normalnie, zmieniając zachowanie na podstawie typu, staram się umieścić zachowanie w podklasach, aby móc zredukować to do pojedynczego wywołania metody, a polimorfizm zajmie się resztą. Jednak dwie następujące rzeczy dają mi przerwę: 1) Nie chcę łączyć serverObject z klasą, która przechowuje wszystkie te obiekty. Nie wie, gdzie szukać bytów określonego typu. I niestety, tożsamość typu ServerObject różni się w zależności od typu ServerObject. (Więc czasami jest to tylko identyfikator, innym razem jest to kombinacja identyfikatora i jednoznacznie identyfikującego ciągu itp.). A to zachowanie nie pasuje do tych podklas. Jest to odpowiedzialność EntityManager i jego delegatów. 2) W tym przypadku nie mogę modyfikować klas ServerObject, ponieważ są to zwykłe stare obiekty danych. Należy wspomnieć, że mam inne instancje powyższej metody, które przyjmują parametr taki jak „IEntity” i robią prawie to samo (ale nieznacznie modyfikują nazwy metod, które wywołują, aby uzyskać tożsamość podmiot). Możemy więc mieć: case Types.Bar: existingEntity = this.getBarByUserIdAndId(entity.getUserId(), entity.getId()); przerwanie; W takim przypadku _mogę_ zmienić interfejs jednostki i podklasy, ale to nie jest zachowanie, które należy do tej klasy. Więc myślę, że to wskazuje mi na jakąś mapę. Więc ostatecznie wywołam: private findEntityForServerObject(entityType:string, serverObject:any):IEntity { return aMapOfSomeSort[entityType].findByServerObject(serverObject); } private findEntityForEntity(someEntity:IEntity):IEntity { return aMapOfSomeSort[someEntity.entityType].findByEntity(someEntity); } Co oznacza, że muszę zarejestrować jakiś rodzaj klas/funkcji strategicznych w czasie wykonywania z tą mapą. I znowu, cholera lepiej pamiętam, aby zarejestrować po jednym dla każdego z moich typów, albo dostanę wyjątek w czasie wykonywania. Czy istnieje lepszy sposób na refaktoryzację tego? Czuję, że brakuje mi tutaj czegoś naprawdę oczywistego.


title: Trudno ocenić, jak dobry jest Twój własny produkt. Czy istnieje nazwa tego problemu?

text: Właśnie rozmawiałem z moim partnerem o tym, jak trudno jest osobiście ocenić po pewnym czasie, jak dobry jest twój produkt, ponieważ używasz go tak często. Dosłownie spędzasz godziny na komputerze, nie robiąc nic poza pracą nad tą „konsumencką” aplikacją i zaczynasz odczuwać lekkie zmęczenie, używając jej w kółko, co najmniej sto razy dziennie. Boisz się, że zmęczenie może oznaczać, że produkt, który tworzysz, może mieć taki sam wpływ na użytkowników i może oznaczać, że robisz coś źle. Czy jest na to nazwa w rozwoju produktu? Za to, że jako projektant + programista + wszystko inne, twój produkt może nie być tak do bani, jak myślisz, po prostu dlatego, że spędzasz z nim zbyt dużo czasu, a może to odmiana?


title: Jak działają globalne polecenia anulowania/zakończenia w bash?

text: Jak już wielokrotnie robiłem, napisałem skrypty bash i tylko ogólne polecenia, które nigdzie nie prowadzą. Po prostu mrugają małym kursorem wiersza poleceń na nieskończoność, dopóki nie kontroluję + C polecenia. Kiedy anuluję polecenie, co dokładnie się dzieje, gdy to robię? Czy jakoś zatrzymuję i zabijam obecny PID, nad którym pracuję? Czy przeskakuje na inny poziom działania i wykonuje coś, aby zakończyć polecenie? Z nieco innej nuty, nigdy nie byłem w stanie wymyślić, jak skonfigurować coś takiego w skrypcie lub programie, nad którym pracowałem. Ponieważ programuję głównie w Ruby, czy mogę ustawić coś takiego, jak naciśnięcie określonego klawisza zatrzymuje program? Za każdym razem, gdy szukałem czegoś podobnego, zawsze kończy się to rozłączaniem, jeśli chodzi o dane wejściowe użytkownika, niezależnie od tego, czy jest to pętla oczekująca na warunek, czy coś takiego: def Break() user_break = gets.strip end def Main() Funkcja1() Break() Funkcja2() Break() [...] end Wygląda na to, że jest niesamowicie nieporęczna i zdecydowanie nie jest łatwa do skalowania w górę lub w dół.


title: Callbacki: kiedy zwrócić wartość, a kiedy zmodyfikować parametr?

text: Kiedy piszesz wywołanie zwrotne, kiedy najlepiej jest, aby wywołanie zwrotne zwracało wartość, a kiedy najlepiej, aby wywołanie zwrotne modyfikowało parametr? Czy jest jakaś różnica? Na przykład, gdybyśmy chcieli pobrać listę zależności, kiedy byś to zrobił: function GetDependencies(){ return [{"Dział1" : 1.1}, {"Dział2": 1.2}, {"Sek.3" : 1.3}] ; } A kiedy to zrobisz? function RegisterDependencies(rejestr){ register.add("Dep1", 1.1); register.add("Dep2", 1.2); register.add("Dep3", 1.3); }


title: Jak dostarczyć 3 różne parametry do klasy w jednej metodzie (2 z 3 są opcjonalne)

text: Potrzebuję twojej pomocy, jak to dobrze i ładnie zaimplementować. To dość prosty problem. Mogę to rozwiązać, ale potrzebuję pomocy, jak zrobić to lepiej. Moja klasa ma logikę działającą przy użyciu trzech parametrów. Dostaje je z innej klasy. Problem polega na tym, że: 1. pierwszy parametr to enum (wymagane) 2. drugi parametr to kolejne enum (opcjonalne - istnieje możliwość, że ten parametr nie istnieje) 3. trzeci parametr to wektor innych wyliczeń (jest opcjonalnie - istnieje możliwość, że ten parametr nie istnieje). Jak obsłużyć te parametry w mojej klasie? Jakieś pomysły? Chciałbym uzyskać te parametry w jednej metodzie, np. `updateParameters(...)`. Może powinienem mieć przeładowane metody dla każdej możliwości, ale myślę, że to nie jest miłe. Nie mogę uzyskać jakiegoś kontenera z parametrami, ponieważ mam różne typy.


title: Kontrola C++ osiąga koniec funkcji nieunieważnionej

text: Mam funkcję, która wygląda mniej więcej tak: ClassA& ClassB::Check(int x){ //niektóre obliczenia w pętli, jeśli warunek jest spełniony, podane jest odwołanie do obiektu ClassA } Otrzymuję " kontrola osiąga koniec nieunieważnionej funkcji "błąd. O ile rozumiem, dzieje się tak dlatego, że funkcja nie zawsze coś zwróci, mam rację? Funkcja pobiera współrzędne myszy i sprawdza, które obiekty zostały wybrane. Jeśli coś zostało wybrane, rób różne rzeczy, w przeciwnym razie nic nie rób. Jaka byłaby najlepsza opcja rozwiązania tego problemu? Czy powinienem utworzyć i zwrócić obiekt z jakąś flagą do sprawdzenia?


title: Doskonalenie umiejętności programowania i matematyki w domu

text: Przepraszamy, jeśli brzmi to jak blog. Obecnie kończę szkołę wyższą, aby zostać przyjętym na kurs CS na uniwersytecie i chciałbym wiedzieć, jakie opcje są dostępne dla mnie, aby poszerzyć swoją wiedzę z programowania i matematyki w domu. Nie skończyłem szkoły średniej i mam dość podstawową wiedzę na temat matematyki, chociaż nigdy się z tym nie zmagałem. Nie jestem pewien, na jakim poziomie matematyki jestem, wystarczy powiedzieć, że miałbym problem z rozwiązywaniem skomplikowanych równań algebraicznych. Nigdy nie miałem formalnej edukacji w zakresie programowania, ale robię to odkąd wiedziałem, co to jest. Powiedziałbym, że mam dobrą wiedzę praktyczną, ale prawie nie rozumiem niczego zaawansowanego. Aby poszerzyć swoją wiedzę matematyczną, potrzebuję listy tematów, które należy omówić, zaczynając od poziomu przeciętnego 16/17-latka. Musiałbym też wiedzieć, jakie tematy poruszyć przed innymi. Moją pierwszą myślą jest kupienie podręcznika do matematyki w szkole średniej na początek. Nie jestem pewien, co powinienem zrobić, aby poszerzyć swoją wiedzę programistyczną, ale na pewno wiem, że daleko mi do odpowiadania na pytania takie jak: „Używając tylko prymitywów do rysowania linii, skonstruuj trójwymiarowe demo samochodu, w którym gracz może prowadzić samochód." (aby użyć przykładu z całkiem niesamowitego zadania związanego z podaniem o pracę). Nie jestem pewien, czego oczekuję od odpowiedzi, być może tylko porady od ludzi, którzy byli w podobnej sytuacji. Mam rok, zanim wejdę na kurs CS i chcę wejść z pełną bronią. Dziękuję.


title: Czy WSZYSTKIE elementy div powinny unosić się w lewo?

text: Projektuję w aplikacji, którą odziedziczyłem. Zrobiłem dużo pracy, aby "skonsolidować" CSS, który był bardzo przepracowany przez wiele kopiowania i wklejania bez dużej strategii. Jedną ciekawą rzeczą, którą znalazłem, było nadanie WSZYSTKICH divów stylu: <style> div{ float: left; } </style> Czy robią to inne aplikacje? Przez cały czas „unosiłbym się” divami, ponieważ większość moich zastosowań divów to w rzeczywistości podział treści, wymuszający nową linię dla elementów takich jak telefony komórkowe i tablety. W moich praktykach będę stylizował div float-left, jeśli jest to szczególnie potrzebne.


title: czy powinienem przechowywać wspólne dane między dwiema tabelami w trzeciej oddzielnej tabeli w mojej bazie danych?

text: Jeśli mam 2 tabele w mojej bazie danych, powiedzmy na przykład „kupujący” i „sprzedawcy”, ale zbieram wspólny zestaw danych dla obu, na przykład numer telefonu, adres e-mail, adres itp. Czy lepszą praktyką jest posiadanie jednej wspólnej tabeli dla 'contact_details' z odniesieniem do tabeli i wiersza, dla których są dane kontaktowe, czy ponieważ są to oddzielne jednostki, czy lepiej jest w całkowicie oddzielnych tabelach?


title: Reklamy i GPL

text: Planuję udostępnić odwiedzającym oprogramowanie na licencji GPL po interakcji z reklamą. Ta reklama będzie generować dochód dla naszej firmy, więc będzie to miało zastosowanie komercyjne. Rozumiem, że podczas komercyjnej dystrybucji oprogramowania GPL wymaga od nas podania źródła lub pisemnej obietnicy udostępnienia źródła na żądanie. Chciałbym wiedzieć, czy podanie linku do strony twórcy oprogramowania, wraz z instrukcją uzyskania źródła, wystarczy, aby spełnić tę klauzulę w GPL?


title: Java: kwestie prawne związane z pisaniem komercyjnej aplikacji w Javie

text: Opracowałem oprogramowanie naukowe do wykorzystania we własnych badaniach naukowych. Rozważam przeniesienie go na inny język, taki jak Java, i wypuszczenie na sprzedaż komercyjnej wersji o zamkniętym kodzie źródłowym. Zaglądałem do Javy, ale mam kilka pytań dotyczących kwestii prawnych związanych z licencjonowaniem Javy dla komercyjnej aplikacji, a ludzie, którzy odbierają telefony w Oracle, mówią mi, że nie rozmawiają z programistami. Uważnie przeczytałem umowę licencyjną JDK tutaj. Ale wciąż mam pytania. Czy ktoś, kto to czyta, ma jakieś doświadczenie w publikowaniu komercyjnych aplikacji o zamkniętym kodzie źródłowym działających na Javie? Jeśli tak, czy możesz przesłać mi linki do informacji o kwestiach prawnych? Moje własne wyszukiwania w sieci ciągle wymyślają te same rzeczy. Rozumiem, że musiałbym redystrybuować Javę 6 z moją aplikacją i że moja aplikacja musiałaby sprawdzić, czy Java jest zainstalowana na komputerze użytkownika końcowego, a następnie zainstalować Javę, jeśli nie jest zainstalowana lub czy nowsza wersja Java musi być zainstalowana. Wiele z tych komputerów użytkowników końcowych może znajdować się w dużych organizacjach, które mogły nie kupić licencji Oracle. Czy moja komercyjna aplikacja może w ten sposób bezpłatnie rozpowszechniać platformę Java bez uiszczania opłaty na rzecz Oracle? A może są to opłaty lub inne ograniczenia? Czy możesz zamieścić link do jakichkolwiek informacji w sieci na ten temat? Z tego, co przeczytałem, jedyne opłaty wydają się być związane z komercyjnymi funkcjami Javy, które ograniczają się do narzędzi do optymalizacji dużych aplikacji korporacyjnych. Ale chciałbym usłyszeć od innych programistów i przeczytać informacje, do których możesz linkować w sieci w swoich odpowiedziach, jeśli chcesz. Alternatywnie rozważyłbym napisanie mojej aplikacji w C++ lub w c#.net.


title: Kod Kata zorientowany na twórców gier?

text: (Pytam tutaj, ponieważ gamedev.stackexchange.net nie jest tak widoczny dla programistów jak ta strona) Code Kata to dobre ćwiczenia programistyczne (patrz Code Kata ). Uważam, że podane ćwiczenia są dobre do rozwiązywania ogólnych problemów. Teraz najbardziej interesuje mnie wszystko, co jest specyficzne dla tworzenia gier i podobne typowe ograniczenia. Nie chodzi mi o rzeczy niskiego poziomu (jak manipulowanie bitami tekstur, to zbyt specyficzne), ale raczej o implementację buforowanych systemów zdarzeń lub podobnych systemów używanych w typowych grach. Może podstawowa szybka kolizja. Czy jest gdzieś lista kata kodu dla twórców gier?


title: Czy programowanie funkcjonalne zwiększa złożoność kodu?

text: Przez cały miniony rok pisałem kod Scala (wywodzący się z Javy). Naprawdę podobało mi się, jak można stworzyć prostszy i czystszy kod, z wartościami, klasami przypadków, funkcjami map/filter/lambda, niejawnymi i wnioskowaniem o typie. Używałem go głównie do aplikacji opartej na Akka. W tym roku jestem w projekcie Scala z nowym zespołem, który bardzo lubi programowanie funkcjonalne. Często używają Scalaz, a kod jest wypełniony wszędzie aplikacjami, ograniczeniami kontekstu, monadą czytnika/zapisu/stanu, nawet główna metoda jest „opakowana” w monadę I/O. Ich rozumowanie jest takie, że sprawia to, że kompilator „pracuje dla nas”, zapewniając, że kod jest poprawny, a każda funkcja jest wolna od skutków ubocznych. Mimo to, z mojego punktu widzenia, cała ta składnia naprawdę przeszkadza w logice biznesowej. Na przykład typ „MyBusinessObject” jest w porządku, podobnie jak typy takie jak „List[MyBusinessObject]”, „Option[MyBusinessObject]”, a nawet „Future[MyBusinessObject]”. Wszystkie mają jasne znaczenie i cel. Z drugiej strony kod taki jak: def metoda[M[_]: Applicative] = { case (a, b) => (ca[M](a) |@| cb[M](b)) { case t @ (ra, rb) => if (ra.result && rb.result) t.right else t.left } } czy zwiększa to złożoność programu, czy tylko ja nie jestem do tego przyzwyczajony programowanie?


title: Duży raport csv na html

text: Pracuję nad web frontendem + front end services. Otrzymuję pliki csv w dobrej wielkości (10k linii). Mój serwis przetwarza je i kondensuje w jeden większy plik csv (do 300k linii). Ten większy plik zostanie przekształcony w raport html/pdf po pewnej ekstrapolacji. Moje pytania to: 1. Pobranie 17 000 plików i przekształcenie ich w 1 zajmuje NA ZAWSZE (18 godzin, kiedy ostatnio próbowałem). Bieżący proces polega na pobraniu wiersza pliku csv, przeanalizowaniu go, aby sprawdzić, czy istnieje w mojej tablicy głównej, i albo utworzeniu nowego wpisu, albo dodaniu danych do istniejącego wpisu w tablicy. Czy jest na to lepszy sposób? Wygląda na to, że ostatnia pozycja zajęłaby wykładniczo dłużej niż pierwsza. 2. Po utworzeniu tego dużego pliku parsowanie również zajmuje trochę czasu. Czy powinienem odejść od pisania do wyjścia csv i skorzystać z JSON, aby przyspieszyć masowanie danych? czy nawet lekki db?


title: Co to jest programowanie zorientowane na komponenty i czym różni się od programowania programowego?

text: Czym dokładnie jest programowanie zorientowane na komponenty i czym różni się od programowania zorientowanego obiektowo? Dziękuję


title: Gdzie umieścić interfejs INotifyPropertyChanged w modelu lub ViewModel

text: Jestem nowy we wzorcu MVVM Mam okno, które ma 3 pola tekstowe, a mianowicie Nazwa, Adres, Opis , przycisk Zapisz i widok listy, który wyświetla odpowiednio powyższe pola Nazwa, Adres, Opis . Po kliknięciu przycisku Zapisz chcę zapisać pola do bazy danych, a także pokazują rekord w widoku listy. Gdzie umieścić model interfejsu INotifyPropertyChanged lub w ViewModel lub w obu miejscach?


title: Wywołuj bazę danych za każdym razem lub utwórz obiekt w pamięci, a jeśli tak, to jak i jak często aktualizować?

text: Tworzę aplikację w javascript/nodejs i używam neo4j jako bazy danych. Załóżmy, że w mojej bazie danych znajduje się encja „Użytkownik”. Ma wiele właściwości, takich jak `boxes_collected` i `places_visited`, które aktualizują się niezależnie od siebie w trakcie działania mojej aplikacji. Do tej pory mam funkcje, które komunikują się z bazą danych, aby bezpośrednio aktualizować te właściwości. Ale robi się trochę bałaganiarski i myślę o stworzeniu jednego obiektu/klasy wysokiego poziomu, która obsługuje wszystko w znacznie czystszy, ładniejszy i elokwentny sposób. Oto mała wersja mojego "modelu", aby lepiej wyjaśnić, co mam na myśli: Załóżmy, że mam funkcję taką jak ta function UpdateUserValue_plants(number) {// update database} Ale gdybym miał utworzyć obiekt `User` i włączyć powyższe do it, var User = function User(rośliny, inne...) { this.plants= rośliny; } User.prototype.updateValue_plants = function(liczba) { this.plants += liczba; // najpierw zaktualizuj sam model } Kiedy mam zaktualizować bazę danych? I czy nie robiłbym aktualizacji dwa razy w ten sposób: najpierw właściwość obiektu, a potem baza danych? Czy jest na to eleganckie rozwiązanie?


title: Coś mylącego na temat zasady pojedynczej odpowiedzialności

text: 1) > W rzeczywistości, jeśli zawsze oczekuje się zmiany dwóch obowiązków > w tym samym czasie, prawdopodobnie nie powinieneś rozdzielać ich na różne klasy, ponieważ > prowadziłoby to, cytując Martina, do „zapachu niepotrzebnej złożoności”. To samo > dotyczy odpowiedzialności, która nigdy się nie zmienia - zachowanie jest > niezmienne i nie ma potrzeby dzielenia go. Zakładam, że nawet jeśli oczekuje się, że niezwiązane obowiązki zawsze będą się zmieniać z tego samego powodu (lub jeśli nigdy się nie zmienią), nadal nie powinniśmy umieszczać ich w tej samej klasie, ponieważ nadal naruszałoby to zasadę wysokiej spójności? 2) Znalazłem dwie całkiem różne definicje SRP: > Zasada pojedynczej odpowiedzialności mówi, że podsystem, moduł, klasa, a nawet funkcja nie powinna mieć więcej niż jednego powodu do zmiany. oraz > Nigdy nie powinno być więcej niż jednego powodu zmiany klasy. Czy ta druga definicja nie zawęża **SRP** do poziomu klasy? Jeśli tak, to czy pierwszy cytat nie jest błędny, twierdząc, że **SRP** można również zastosować na poziomie podsystemu, modułu i funkcji? Dziękuję Ci


title: Plagiat kodu: jak trudno lub jak łatwo to wykryć?

text: Załóżmy, że chcesz opracować aplikację, w trakcie której dowiadujesz się, że istnieje już jedna podobna aplikacja, ciesząca się dużym uznaniem i jest używana. Jest to aplikacja wieloplatformowa, ale nie wiadomo, czy jest to aplikacja typu open source, czy nie. Jednak decydujesz się na inżynierię wsteczną bez dbania o jej licencję i ostatecznie ci się to udaje. A teraz część tego wykorzystujesz w swojej aplikacji, co w pewien sposób ulepszanie aplikacji i – opierając się na tym samym pomyśle i ukierunkowaniu na niektóre platformy, które obejmuje również oryginalna aplikacja – staje się dla niej prostą konkurencją. Czy oryginalny programista może wykryć, że dokonałeś plagiatu oryginalnego kodu? Jeśli tak, to jak?


title: Uprawnienia superużytkownika w środowisku programistycznym?

text: Czy to zbyt dużo, by prosić dział IT o udostępnienie mojemu zespołowi programistycznemu środowiska, w którym możemy korzystać z dowolnego oprogramowania, które możemy pobrać, bez konieczności sprawdzania bezpieczeństwa tych narzędzi? Oczywiście oprogramowanie można sprawdzić pod kątem bezpieczeństwa przed wdrożeniem do testowania, a środowisko programistyczne może znajdować się w sieci VLAN, która nie jest dostępna z zewnątrz. Pomogłoby nam to bardzo, umożliwiając nam korzystanie z dowolnych narzędzi testowych o otwartym kodzie źródłowym. Pytam, ponieważ mamy tak restrykcyjne ograniczenia w procesie zatwierdzania oprogramowania, a słyszę o innych zespołach, które mają środowisko, w którym mogą konfigurować swój lokalny serwer tak, jak chcą i mogą używać dowolnych narzędzi. Jaka jest tam norma? Dziękuję za wszelkie uwagi!


title: Formatowanie kodu : układanie funkcji w oparciu o hierarchię wywołań w pliku klasy?

text: Sugestia Boba Martina „Czysty kod” skłania mnie do drapania się po głowie. „Jeśli raz funkcja wywoła inną, powinna być pionowo blisko, a wywołujący powinien znajdować się nad wywoływanym” Do tej pory byłem mniej więcej blisko wytyczne .Net, które grupują członków klasy według typu (właściwości, ctory, funkcje) i widoczności (publiczne / chronione / prywatne). Porada na początku wydaje się kłopotliwa… ale to „po prostu może zadziałać”. Osobiście spotkałem się z przypadkami, w których podobał mi się ten układ - łatwiej jest drążyć, gdy jesteś we właściwym łańcuchu połączeń. Pomysł na wskazówkę wydaje się rozsądny, ale inne scenariusze, takie jak „pozwól mi spojrzeć na publiczny interfejs tej klasy”, mogą się pogorszyć. Może Wujek Bob stawia na małe klasy i obsługę IDE do przeglądania typów... Czy ktoś próbował tego przez dłuższy czas? Aktualizacja: Wygląda na to, że fragment kodu znajduje się w kolejności class SomeType() { /// pola, ctors, et. all public void Metoda1() { // wywołuje HelperMethod1 i HelperMethod2 } private void HelperMethod1 { // wywołuje HelperMethod3 } private void HelperMethod3 {} private void HelperMethod2 {} public void Metoda2 () { // i tak dalej... } }


title: Jak przejść przez analizę do paraliżu podczas pracy nad nowym projektem?

text: Mam problemy z uruchomieniem mojego projektu. Mam stary pakiet oprogramowania, który wymaga rozpaczliwego przepisania. Nie kompilowałem kodu źródłowego od 2004 roku. Nadal się sprzedaje, jest stabilny, ale wymaga polecenia „Uruchom ten program w trybie zgodności dla:” w wielu nowszych systemach Windows. Jest to również jeden z tych zakodowanych na sztywno programów rozdzielczości ekranu 640 x 480. Fuj! Nie mogę zacząć od tego przepisywania. Cały czas bawię się różnymi rzeczami. Przez chwilę będę się bawił różnymi układami płynów. Potem zaczynam się przyglądać, jak powinno działać i wyglądać menu główne. Szybko dowiaduję się, że istnieje coś takiego, jak „Cool Bars” i będę się z tym bawić godzinami. Potem zaczynam myśleć o rzeczach takich jak „Och, muszę się upewnić, że rozmiary ekranu są zachowane, aby po ponownym uruchomieniu aplikacja pamiętała, jak ekrany były ustawione”. Co prowadzi do tego, co się stanie, jeśli mają dwa monitory? Co prowadzi do tego, co się stanie, jeśli mają poczwórny ekran? Oj, to musi się skończyć. Zawsze byłem powolnym starterem. Myślę o rzeczach długich i trudnych z góry. To zawsze mnie dręczyło. Kiedy już podejmę decyzję, choć bam... ruszam i biegnę. Szukam porady od innych jednoosobowych firm zajmujących się oprogramowaniem, które mogą pomóc komuś takiemu jak ja w szybszym starcie? ### Sukces Dziękujemy wszystkim za motywację. W końcu mam plan. Chciałbym podzielić głosowanie między @haylem i @ThorbjørnRavnAndersen. Wszedłem na download.com i przefiltrowałem pliki do pobrania według mojej kategorii oprogramowania. Posortowałem według „Wybór redaktorów” i pobrałem kilka najwyżej ocenianych programów. Przy drugim uderzeniu znalazłem ostatnią inspirację, której potrzebowałem. Uwielbiam żółte karteczki samoprzylepne. ![tutaj wprowadź opis obrazu](http://i.stack.imgur.com/086P7.jpg)


title: Cykl życia EJB i związek z WARs

text: Czytałem na EJB (3.x) i _wierzę_, że rozumiem podstawy. To pytanie jest "wezwaniem do potwierdzenia", że poprawnie zinterpretowałem dokumentację Java EE i rozumiem te podstawowe pojęcia: * EJB jest do kontenera aplikacji jako aplikacja internetowa (WAR) do kontenera internetowego * Tak jak ty wdrożyć WAR w kontenerze internetowym, a ten kontener zarządza cyklem życia WAR, wdrażasz EJB w kontenerze aplikacji, a kontener zarządza cyklem życia EJB * Gdy kontener aplikacji uruchomi się i wdroży EJB, otrzymuje unikalny „identyfikator” i adres URL, które mogą być używane przez JNDI do wyszukiwania EJB z innej warstwy (np. warstwy internetowej) * Tak więc, gdy Twoja aplikacja internetowa chce wywołać jedną z metod EJB, wyszukuje EJB za pomocą pewnego rodzaju lokalizatora usług (JNDI) i wywołaj metodę w ten sposób. Czy jestem tutaj na trasie, czy poza bazą? Proszę mnie poprawić i wyjaśnić, czy którykolwiek z tych elementów jest nieprawidłowy. Z góry dziękuję!


title: Rozpoczęcie kariery w finansach ilościowych

text: Czytałem książkę Johna Hulla (Options, Futures and Other Derivatives) głównie z ciekawości. Czytałem w przeszłości inne książki o rynkach finansowych (takie jak Elder's Trading for Living i powieść Reminiscences of a Stock Operator). Ale jestem naprawdę zafascynowany książką Johna Hulla. Moje wykształcenie to głównie obliczenia naukowe: przetwarzanie liczb, wizualizacja i przetwarzanie obrazów. Głównie w C++, gdzieniegdzie trochę C, Fortran, Python, Ruby. Myślałem o przejściu do finansów ilościowych - chciałbym to zrobić. Jaki byłby najlepszy sposób na rozpoczęcie? Jakieś wskazówki?


title: Jaka jest różnica między zasadą pojedynczej odpowiedzialności a separacją obaw?

text: a)Jaka jest różnica między **SRP** a **SoC**? Być może, że **SRP** jest stosowane na poziomie klasy, podczas gdy **SoC** może być stosowane na poziomie _system_ , _podsystem_ , _moduł_ , _klasa_ lub _funkcja_. b) Jeśli odpowiedź na _a)_ brzmi tak, to czy _SoC_ jest stosowane na _poziomie_ klasy_ jest synonimem **SRP**? Dziękuję Ci


title: Jak przydatne jest podwojenie specjalizacji z elektrotechniki i informatyki?

text: Jestem w połowie podwójnego kierunku w obu kierunkach i tak samo kocham te przedmioty. Dopiero zaczynam tak bardzo nie lubić ludzi z elektrotechniki, że chcę przestać chodzić na zajęcia z EE. Czy są jakieś prace, które wymagałyby lub byłyby szczególnie pomocne, aby ukończyć oba kierunki?


title: Jak nazwać prywatną metodę w języku, który nie obsługuje prywatności?

text: Jaki jest standard kodowania dla nazywania metody prywatnej w języku, który nie ma modyfikatora private? W szczególności mówię o Javascript. Poniżej umieściłem podkreślenie na końcu nazwy mojej prywatnej metody, ale kolega powiedział mi, że podkreślenie jest zwykle używane w polach klas. var MojaKlasa = Class.create({ Initialize: function() { alert('constructor'); }, publicMethod: function() { alert('jest public'); }, privateMethod_: function() { alert('i jestem prywatny'); } });


title: Czy ktoś używał narzędzi do testów funkcjonalnych do oceniania ćwiczeń laboratoryjnych?

text: Pracuję na zajęciach obejmujących narzędzia programowe i języki. Oczywiście zajęcia będą bardziej wartościowe, jeśli uczniowie faktycznie ** zrobią ** część tego, czego powinni się nauczyć, więc planuję włączyć pracę laboratoryjną. Czy ktoś używał automatycznych narzędzi do testowania funkcjonalnego do oceniania zadań laboratoryjnych? Laboratorium 1 ma zainstalować Apache, więc serwer testowy sprawdza, czy komputer laboratoryjny nasłuchuje na porcie 80 i odpowiada domyślną stroną indeksu. Laboratorium 2 polega na utworzeniu strony, która przyjmuje `?name=MyName` i odpowiada „Hello, MyName!”, więc serwer testowy pobiera `?name=random` i oczekuje „Hello, random!”. Jeśli sam ich nie używałeś w ten sposób, jakie narzędzia **mogą** być dobrym kandydatem?


**To intro to tylko moja naiwna próba zrobienia milowej migawki, która pomoże mi ustawić moje pytanie.** Każdy użytkownik próbujący odpowiedzieć na moje pytanie, który próbuje uporać się z jednym aspektem programowania, będzie musiał przezwyciężyć moje naiwne zrozumienie, po prostu z powodu mojego specyficznego wykształcenia. Więc tutaj umieszczam swój temat w szeregu tematów opisujących czynności związane z programowaniem i oprogramowaniem: 1. Podstawy programowania (wzorce projektowe oprogramowania, idiomy, modele) 2. Ponowne wykorzystanie i integracja kodu (biblioteki, frameworki, API) 3. Ciągły rozwój (dokumentacja, komentowanie, kontrola wersji) 4. Dobre praktyki utrzymania (administracja systemami) * * * Interesuje mnie skupienie moich umiejętności programistycznych na tematach ponownego wykorzystania kodu i integracji. Ten temat z pewnością może zacząć się od języków programowania oprogramowania i różnic między programowaniem funkcjonalnym a programowaniem obiektowym. Jednak to, na czym chciałbym się skupić _szczegółowo i szczegółowo, to różnorodność zastosowań bibliotek, frameworków i apisów_. Moja edukacja programistyczna pochodzi z tego, co mogę łatwo znaleźć w Internecie i książkach. Wcześniej w tym roku zapisałem się na zajęcia z podstaw na Coursera, Języki Programowania, prowadzone przez profesora Daniela Grossmana, które mają na celu przygotowanie studentów do programowania w dowolnym języku. Ponowne użycie zostało wymienione jedynie jako właściwość funkcji i obiektu. _Możesz rozpocząć poszukiwania 'ponownego użycia i integracji' od podstaw i nie zbliżać się do niego._ Odkąd zacząłem uczyć się Rubiego, php, zebrałem lepsze zrozumienie 'ponownego użycia i integracji', ale wszystko to jest wybrukowane i połatane. Opublikowane materiały to w większości #1, a potem jakiś idiosynkratyczny mix #2-4. _Możesz przeczytać wiele książek i nadal nie rozumiesz, jak te wszystkie abstrakcje do siebie pasują._ Uczestniczyłem nawet w dyskusji tutaj na p.se na temat pedagogicznego problemu studentów programistów kultu cargo, którzy „ _...kopiują -wklej kod z poprzednich, podobnie wyglądających zadań..._ " Podczas gdy moja własna odpowiedź na to pytanie odzwierciedla moje uznanie dla troski PO, ale moja wyobraźnia nie może powstrzymać zazdrości tym studentom, którzy z taką łatwością potrafią czerpać z poprzednich projektów _po prostu trochę._ Nie czytałem książki, nie brałem udziału w zajęciach ani nie słyszałem dyskusji, która ma na celu zbadanie całości paradygmatów ponownego użycia i integracji. Gdzie w edukacji informatycznej „ponowne wykorzystanie i integracja” znajduje obszerny zakres?


title: Atrybucja oprogramowania / kredyty projektowe

text: Właśnie zakończyliśmy tworzenie aplikacji webowej dla klienta. I jak zwykle, dodałem w stopce opracowane przez "Moja Firma" w bardzo małym, nieznacznym rozmiarze. Wysłałem klientowi licencję użytkownika końcowego, stwierdzając, że niektóre z poniższych podsumowań nie mogą być odsprzedawane, rozpowszechniane itp. bez naszego powiadomienia ... nie można usunąć przypisów lub kredytów projektowych, które klient zwrócił do mnie i złożył skargę, mówiąc mnie teraz, że on też dla kogoś się rozwijał i że „nie mogę dodać mojej atrybucji” bez jego/jej zgody, ale? Chociaż podpisuję umowę NDA w podsumowaniu, stwierdzam, że nie mogę nikomu ujawniać oprogramowania. Przed projektem nie było porozumienia, że nie będzie dodawania punktów za projekt lub przypisania. Wiem, że posiada je każde instalowane przeze mnie oprogramowanie, podobnie jak wszystkie produkty firm, głównie produkty technologiczne. Jak to działa (dodawanie punktów za projekt)?


title: Jaka jest wada fabryki niestandardowej w porównaniu z fabryką generyczną?

text: Mam metodę fabryki podaną poniżej public class AutomobileFactory { Dictionary<string, ICar> internalFactory = new Dictionary<string, ICar>(); public AutomobileFactory() { internalFactory.Add("fiat",nowy Fiat()); internalFactory.Add("ford", nowy Ford()); } public ICar Create(string carType) { return internalFactory[carType]; } } To bardzo skromny kod. Teraz odniosłem się do wzorca Factory z generykami. Ale nie jestem w stanie zrozumieć, co może zaoferować to ogólne podejście. **PYTANIE** Jaka jest wada powyższej fabryki w porównaniu z fabryką generyczną?


title: Jak zadziała algorytm, który dzieli/sortuje liczby na trzy grupy, aby były one równie duże?

text: Muszę napisać algorytm, który dzieli/sortuje liczby na trzy grupy, aby były równie duże. Mówiąc dokładniej: mam trzy grupy, nazwijmy je **A** , **B** i **C**. Wtedy mam dużo liczb. Każdy numer ma przypisaną grupę, do której należy, ale chodzi o to, że jeden numer może należeć do jednej z dwóch lub jednej z trzech grup (do jednej z nich, ale nie wiemy dokładnie do której). Przykładowe dane: Numer | Grupa 1 | A (ten numer MUSI BYĆ w grupie A) 2 | 3 | B 4 | C 5 | AC (numer ten może należeć do grupy A lub C) 6 | BC (może być w grupie B lub C) 7 | 8 | B9 | ABC (może być w grupie A, B lub C) ... Jednym z poprawnych wyników tej próbki może być: A: 1, 2, 7 B: 3, 8, 9 C: 4, 5, 6 t ma znaczenie, która grupa zostanie wybrana, jeśli do jednego numeru przypisanych jest wiele grup (najlepiej byłoby, gdyby był wybierany losowo). Celem jest podzielenie tych liczb, aby każda grupa była równie duża (lub jak najbliżej niej). Moje pytanie brzmi: jak napisałbyś algorytm, aby osiągnąć pożądany rezultat? Wystarczy pseudokod lub opis słowny.


title: Paradygmaty pasujące do programowania interfejsu użytkownika

text: Jest to bardziej szczegółowe pytanie (a właściwie dwa, ale są one powiązane) pochodzące z komentarzy dotyczących śmierci technologii OOP, w których ktoś stwierdził, że OOP nie jest właściwym paradygmatem dla programowania GUI. Czytając komentarze tam i tutaj nadal mam wrażenie, że jest rzeczy do nauczenia się: które paradygmaty programowania są uważane za dobrze dopasowane i dlaczego są lepsze od innych (może z przykładami ilustrującymi?) _Usunąłem przykład tk z tytułu i pytania_


title: Czy istnieją dobre miejsca, do których można łączyć ludzi, aby uzyskać licencje na oprogramowanie „w prostym języku angielskim”, podobnie jak w przypadku Creative Commons?

text: Jeśli klikniesz link cc-wiki na dole tej strony, otrzymasz ładny, prosty, angielski opis tego, czym jesteś, a czego nie możesz robić. Prawnicze rzeczy też tam są, ale jako ktoś, kto chce korzystać z biblioteki, nie chcę legalizmu, chcę listę tego, co mogę, a czego nie mogę zrobić. Czy istnieje podobny zasób licencji na oprogramowanie, taki jak MIT, BSD-3clause, BSD-4clause, BSL, GPLv2, GPLv3 itp.?


title: Zgodnie z normą IEEE 12207, kto musi przeprowadzać testy integracji oprogramowania?

text: Zgodnie z normą IEEE 12207, kto musi przeprowadzać testy integracji oprogramowania (SOIPL): zespół testujący SW czy zespół programistów SW?


title: W jaki sposób testy jednostkowe Guava zostały wygenerowane automatycznie?

text: Guava ma automatycznie generowane przypadki testów jednostkowych: > Guava ma oszałamiającą liczbę testów jednostkowych: od lipca 2012 r. pakiet guava-tests > zawiera ponad 286 000 indywidualnych przypadków testowych. Większość z nich jest > **automatycznie** generowana, a nie pisana ręcznie, ale zakres testów Guava > jest niezwykle dokładny, szczególnie w przypadku com.google.common.collect. Jak zostały wygenerowane? Jakie techniki i technologie zostały użyte do ich zaprojektowania i wygenerowania?


title: Dziwne nazwy poprawek?

text: Pracuję w firmie, która ma dziwną politykę. Nie mogą trzymać się jednej nazwy dla wersji oprogramowania. Z jakiegoś powodu mają gałęzie, wersje, wydania i być może inny termin. Nigdy nie wyjaśniają, co to znaczy. Jaki jest standardowy sposób oddzielenia różnych wersji, aby były mniej zagmatwane?


title: Czy tworzenie oprogramowania to dziedzina odpowiednia dla osób, które mają niekonwencjonalne metody rozwiązywania problemów?

text: Mam tendencję do samodzielnego myślenia, często wymyślając niekonwencjonalne, czasem niekonwencjonalne sposoby rozwiązywania problemów. Nie lubię słuchać autorytetów, takich jak konieczność pisania kodu w określony sposób lub przestrzeganie ścisłych wytycznych i formatów. Czy dziedzina inżynierii oprogramowania byłaby trudna dla kogoś takiego jak ja? Jeśli nie, to jakie dziedziny informatyki na to pozwalają?


title: Kolejność egzekucji w strumieniach C++

text: Wiadomo, że pierwszy wypisuje 7 7, ale dlaczego drugi wypisuje 8 8 7 ? Dlaczego nie 7 8 8? Jak takie konstrukcje działają w c++? int atrament(int *x){ *x += 1; powrót *x; } int main(){ int *a; intb = 6; a = &b; cout << ++b << " " << b << endl; cout << b << " " << atrament(a) << " " << b; zwróć 0; }


title: Kwestionowanie sprawdzania typu Pythona

text: Widziałem niezliczoną ilość razy następujące podejście sugerowane do "wzięcia kolekcji obiektów i zrobienia X, jeśli X jest Y i ignorowania obiektu w przeciwnym razie" def quackAllDucks(ducks): for duck in ducks: try: duck.quack(" QUACK") z wyjątkiem AttributeError: #Nie kaczka, nie mogę kwakać, nie martw się o to pass Poniższa alternatywna implementacja zawsze dostaje flak za spadek wydajności spowodowany przez sprawdzenie typu def quackAllDucks(ducks): for duck in ducks: if hasattr(duck,"quack"): duck.quack("QUACK") Jednak wydaje mi się, że w 99% scenariuszy chciałbyś skorzystać z drugiego rozwiązania z następujących powodów: * Jeśli użytkownik otrzyma błędne parametry wtedy nie będą traktowani jak kaczka i nie będzie żadnych wskazań. Dużo czasu zostanie zmarnowane na debugowanie, dlaczego nie ma kwakania, dopóki użytkownik w końcu nie zrozumie swojego głupiego błędu. Drugie rozwiązanie wyrzucałoby ślad stosu, gdy tylko użytkownik próbowałby zakwakać. * Jeśli użytkownik ma jakieś błędy w swojej metodzie quack(), które powodują AttributeError, zostaną one po cichu połknięte. Po raz kolejny zmarnujemy czas na szukanie błędu, gdy drugie rozwiązanie dałoby po prostu ślad stosu pokazujący natychmiastowy problem. W rzeczywistości wydaje mi się, że jedyny moment, w którym chciałbyś użyć pierwszej metody, to: * Blok kodu, o którym mowa, znajduje się w niezwykle krytycznej dla wydajności sekcji aplikacji. Kierując się zasadą „unikaj przedwczesnej optymalizacji”, zrozumiałbyś to oczywiście dopiero po wdrożeniu bezpieczniejszego podejścia i stwierdzeniu, że stanowi ono wąskie gardło. * Istnieje wiele rodzajów kwakających obiektów i jesteś zainteresowany tylko kwakającymi obiektami, które kwakają z bardzo specyficznym zestawem argumentów (wydaje mi się to bardzo rzadkim przypadkiem). Biorąc to pod uwagę, dlaczego tak wielu ludzi woli pierwsze podejście od drugiego? Czego mi brakuje? Zdaję sobie też sprawę, że istnieją inne rozwiązania (takie jak używanie abc), ale są to dwa rozwiązania, które najczęściej widzę w podstawowym przypadku.


title: Czym jest dobry projekt kontenera, zadania i przedmiotów

text: ------------- 1 * -------------- * 1 -------- | Kontener |--------| Przypisanie |-----------| Użytkownik | ------------- -------------- -------- ^ ^ | | ---------- ------------- | | | | ---------- ---------- ---------- --------------- | Lot | | Kolacja | | Rezerwacja| | Rezerwacja | ---------- ---------- ---------- --------------- Ten problem to taki, który Natknąłem się na kilka różnych okazji, ale nigdy nie znalazłem eleganckiego rozwiązania dla: W moim modelu systemu (w szynach), który mapuje do bazy danych, potrzebuję „Użytkowników”, których można dodać do „Kontenerów” poprzez „Przypisania” `. Teraz może być wiele rzeczy, które mogą być kontenerami: * `Lot` to `Kontener`. Może pomieścić „Użytkownicy”. W takim przypadku konkretnym „Zleceniem” jest „Rezerwacja”. * „Kolacja” to „kontener”. Może pomieścić „Użytkownicy”. W takim przypadku konkretnym „Zleceniem” jest „Rezerwacja”. * I wiele więcej. Rozumiesz mój punkt widzenia. Mam więc abstrakcyjne pojęcia „Kontener” i „Przydział”. „Kontenery” zawierają „Zadania”, a ja też mam ich konkretne implementacje, przy czym każda konkretna implementacja „Kontenera” odpowiada konkretnej implementacji „Zadania”. Prosta konstrukcja jest jak powyżej. Moim głównym problemem jest to, że nie wyraża relacji między każdym konkretnym kontenerem a konkretnym zadaniem. Jakieś pomysły, jak to lepiej zaprojektować?


title: Od programisty do inżyniera oprogramowania

text: Obecnie jestem web developerem budującym aplikacje webowe w PHP i Javascript. Naprawdę bardziej podoba mi się aspekt programowania niż front-end. Chciałbym zacząć skupiać swoją uwagę na tym, aby w ciągu najbliższych kilku lat zostać inżynierem oprogramowania. Więc moją pierwszą myślą było nauczenie się C++, ale czy to jest najlepsza rzecz na początek? W przyszłości chciałbym pracować nad rozwojem takich rzeczy jak systemy operacyjne i aplikacje natywne. Kiedy patrzę na prace inżynierskie, powiedzmy, w Google, Facebooku, Apple, wszystkie wydają się prosić o **C/C++ ORAZ OR JAVA**. Obecnie nie znam żadnego z nich, ale jestem zaznajomiony z ogólnymi koncepcjami programowania, takimi jak pętle, funkcje, oop itp. Poza tym, poza C/C++ i JAVA, co jest bardziej prawdopodobną szansą na awans w mojej karierze? Moim problemem byłoby to, że podczas nauki powiedz „C++”, do czego miałbym go używać? Obecnie nie mam z tego żadnego pożytku, ale naprawdę chciałbym kariery poważnego inżyniera, a nie tylko rzeczy opartych na sieci. Mam komputer Mac i PC z systemem Linux i chciałbym zacząć od kilku przykładowych projektów i samouczków, aby po prostu dobrze zrozumieć język


title: Jak wchodzić w interakcję z C++ API za pomocą poleceń http?

text: Mam C++ API, chcę wysyłać polecenia przez http, aby uruchomić dowolną metodę c++ z tego API. Używam libmicrohttpd. Jakie kroki powinienem wykonać, aby wykonać taką pracę?


title: Przegląd kontraktów dla kontraktów międzynarodowych

text: Zamierzam pracować jako niezależny wykonawca, pisząc oprogramowanie dla klienta z innego kraju. Moja praca będzie dostarczana w formie elektronicznej, więc nie będę musiał się przenosić. Pojawia się jednak dylemat prawny, tak jak ja to widzę: 1. Jeżeli projekt umowy przewiduje, że prawem właściwym jest prawo kraju siedziby klienta, bardzo trudno będzie mi znaleźć prawnika, który zechce dokonać przeglądu umowy . (To było moje doświadczenie.) 2. Jeżeli projekt umowy przewiduje, że prawem właściwym jest prawo mojego kraju, klient stanie przed tym samym problemem: _on_ będzie miał trudności ze znalezieniem prawnika, który zechce dokonać przeglądu umowy. Prawidłowy? 3. _Nie ma realistycznej trzeciej opcji_. Umowa musi przewidywać wybór prawa – wszystko inne byłoby śmieszne. Pozwólcie, że omówię bardziej szczegółowo, dlaczego opcja nr 1 jest trudna: * Prawnicy w moim kraju, którzy znają tylko prawo mojego kraju, po prostu podniosą ręce i powiedzą: „Nie mogę ci pomóc – chyba że zmienią określone przepisy”. * Prawnicy emigranci z kraju klienta, pracujący w tym kraju, nawet jeśli pochodzą z odpowiedniego stanu lub prowincji, prawdopodobnie będą zbyt zajęci pracą dla klientów korporacyjnych, aby zainteresować się moją (z ich punktu widzenia) drobną przeglądem umowy. * Wygląda na to, że pozostało mi tylko... zatrudnić prawnika z kraju klienta? I wchodzić z nimi w interakcję przez telefon/VOIP, e-mail i faks? czy to możliwe? Czy w ogóle będzie _legalnie_ przyjąć mnie jako klienta? Jak mogę otrzymać rekomendację? Czy jest coś, czego mi brakuje?


title: Porównanie zabezpieczeń między xmlHttpRequest i HttpRequest

text: Czy istnieje różnica między HttpRequest i xmlHttpRequest pod względem bezpieczeństwa? Czy jeden jest bezpieczniejszy od drugiego? Czy bezpieczniej jest wysyłać ważne dane, takie jak hasła, za pośrednictwem HttpRequest niż za pośrednictwem xmlHttpRequest ? Czy pakowanie danych odbywa się w obu przypadkach w ten sam sposób?


title: Równoważenie obciążenia dla słuchaczy

text: Jak powinniśmy równoważyć obciążenie słuchaczy usługi innej firmy? np. Musimy czytać wiadomości gtalk przez XMPP Listener i budować aplikację wykorzystując interakcje użytkownika z chatbotem. W takim przypadku, w jaki sposób zapewnimy, że możemy mieć odbiorniki XMPP na wielu serwerach i zrównoważymy obciążenie wiadomości między odbiornikami? Z góry dziękuję.


title: Czy powinieneś kiedykolwiek wydać coś, co sam mógłbyś zhakować?

text: Będąc twórcą programu, jesteś prawdopodobnie w lepszej sytuacji niż ktokolwiek, aby być świadomym luk w zabezpieczeniach i potencjalnych ataków hakerskich. Jeśli wiesz o luce w systemie, który napisałeś, czy jest to znak, że zwiększone bezpieczeństwo MUSI zostać dodane przed wydaniem, czy też powinno to być oceniane indywidualnie dla każdego przypadku, aby określić wagę luki w zabezpieczeniach?


title: Dlaczego konstruktory danych o tej samej nazwie są niedozwolone w konstruktorach różnych typów?

text: Poniższa deklaracja daje błąd: typ Vec2d = (Float, Float) typ Vec3d = (Float, Float, Float) -- Rect x y definiuje prostokąt rozciągający się od (0,0) do (x,y) danych Obj2d = Rect Float Pływak | Translate Vec2d Obj2d -- Prostopadłościan x y z definiuje prostopadłościan rozciągający się od danych (0,0,0) do (x,y,z) Obj3d = Prostopadłościan Float Float | Tłumacz Vec3d Obj3d czyli `Wiele deklaracji 'Tłumacz'`. Teraz zastanawiam się, dlaczego wprowadzono to ograniczenie? Gdyby nie było ograniczenia, można by napisać „Tłumacz (1, 1) Prost 2 2” i „Tłumacz (1, 2, 3) Prostopadłościan 1 1 1”, co brzmi naturalnie. Nie rozumiem (od razu), jak może to spowodować problem z analizowaniem licytacji, aby zabronić używania tej samej nazwy, typ można wywnioskować na podstawie argumentu (`Rect 2 2` to `Obj2d`, `Prostopadłościan 1 1 1` jest `Obj3d`). Jestem pewien, że istnieje dobry powód, dla którego projektanci języka zdecydowali się zabronić używania tej samej nazwy dla różnych typów konstruktorów danych, ale chciałbym się dowiedzieć: dlaczego, skoro nie jest to oczywiście konieczne? (A ujednoznacznienie typów to chleb powszedni Haskella!)


title: Dlaczego import cykliczny jest uważany za tak zły?

text: Poważnie, o co chodzi w posiadaniu kilku cykli na wykresie importu? Uważam to za mniejsze zło niż posiadanie bardzo drobnoziarnistych importów, które sprawiają, że śledzenie, gdzie szukać kodu, jest absolutnym koszmarem.


title: Czy można sklasyfikować maszynę Turinga?

text: Czy maszynę Turinga można sklasyfikować m.in. jako maszyna Mealy? Dlaczego nie? Czy maszyna Turinga może być wprowadzona do innej maszyny Turinga bez komplikacji, takich jak problemy z zatrzymaniem? Dziękuję


title: Moje doświadczenie to programowanie po stronie serwera i zarządzanie bazami danych, chcę nauczyć się C++, od czego zacząć?

text: Tytuł jest tematem, ponieważ jestem głównie programistą stron internetowych, moje umiejętności hakerskie ograniczają się do tych luźnych języków, takich jak PHP i Javascript. Ale chcę być bardziej zdolnym programistą. Zobaczyłem Hip Hop PHP stworzone przez Facebooka i zdałem sobie sprawę, że C++ jest koniecznością, to znaczy zmniejszyło zużycie procesora o 50% i dodało poprawę wydajności o 1,8%. Postanowiłem więc, że muszę poważnie podejść do języka C++. Czy możesz mi pokazać, od czego zacząć, kilka przyjaznych tutoriali. ponieważ przeczytałem kilka tutoriali w C++ i zauważyłem, że bardzo różni się od PHP.


title: Jakie są dobre książki HTML 5 i PHP 5?

text: Szukam książek dla początkujących na temat PHP 5 (może z odrobiną MySQL?) i HTML 5. Zacząłem samodzielnie uczyć się PHP, chociaż stało się to problemem, ponieważ samouczki online są albo przestarzałe, albo po prostu bzdury. Udało mi się również rozpocząć naukę z bardzo małą znajomością HTML, więc chcę odświeżyć swoją wiedzę na temat HTML i zagłębić się w PHP. Nie jestem też pewien, czy powinienem zaglądać do XHTML lub HTML5, czy obu, więc odpowiedź na to byłaby świetna. Po prostu chcę stać się bardziej samowystarczalny i mniej zależny od innych dla moich potrzeb programistycznych. Przeszukałem Google w poszukiwaniu książek, ale nie jestem pewien, która z nich jest dla mnie „najlepsza” i zapewnia dobre praktyki i nawyki, które mnie tutaj sprowadzają.


title: Czy jest to powód, dla którego wszyscy narzekają na wydajność aplikacji we flashu, ponieważ większość aplikacji we flashu jest zbudowana z wykorzystaniem frameworka flex?

text: Czy uważasz, że wydajność flasha jest zła głównie z powodu tego, że większość ludzi tworzy aplikacje flashowe przy użyciu frameworka flex? W przeciwieństwie do problemu, który ma wszystko do czynienia z systemem lamp błyskowych niższego poziomu. Jaki procent aplikacji flash jest zbudowanych w technologii flex?


title: Czy posiadanie firmy, która często ma błędy w bezpieczeństwie w twoim CV, byłoby szkodliwe?

text: Zaraz zajmę stanowisko w pewnej grupie, która nie otrzymała zbyt dobrej prasy w kwestii bezpieczeństwa ich komputerów. Nawet jeśli moja praca tak naprawdę nie odnosi się do tego rodzaju pracy, czy nadal istnieje ryzyko, że moje CV zostanie wyrzucone do kosza za to, że jest z nimi powiązane?


title: Jakie zasoby dotyczące biznesu powinien znać programista wewnętrznego działu IT

text: Jestem programistą / analitykiem w wewnętrznym dziale IT w średniej wielkości firmie. Cały czas mam do czynienia z ludźmi biznesu i wiele rzeczy, które tworzę, może mieć ogromny wpływ na biznes. Zaczynam żałować, że nie brałam żadnych zajęć z biznesu na studiach, ponieważ nie rozumiem pierwszej rzeczy w prowadzeniu biznesu, więc nie zawsze rozumiem, czego chcą ludzie, najlepsze, co mogę zrobić, to „przemyśleć to”. Czy ktoś zasugerował metody uczenia się tych rzeczy, może jakieś zasoby. I proszę, nie mów tylko, żeby pytać ludzi, którzy tu pracują. Próbowałem tego wcześniej i nie mam gdzie.


title: Czy framework Entity jest wystarczająco niezawodny, aby użyć go w projekcie korporacyjnym? Czy powinienem używać Entity?

text: > **Możliwy duplikat:** > Czy framework Entity jest wystarczająco niezawodny, aby można go było użyć w projekcie korporacyjnym? Czy powinienem > używać Entity? Jestem młodszym programistą, który właśnie ukończył projekt przy użyciu frameworka Entity. Niestety, zostałem przeżuty przez jednego ze starszych programistów w mojej pracy, powołując się na to, że powinienem był użyć ADO.net i cytat z Entity Framework: „Nie jest wiarygodny ani wykonalny w aplikacji korporacyjnej”. Chociaż myślę, że to w większości przesada – czy jest jakaś prawda w jego twierdzeniach? Jeśli tak, jakie są fakty/źródła (i czy zmieni się to wraz z wydaniem Entity Framework 5)? Jeśli nie - czym mogę uzasadnić moje stanowisko, że Entity jest tak samo wiarygodne jak ADO.net.


title: Najlepsza praktyka przetwarzania listy przedmiotów

text: Mam listę obiektów, które trzeba w jakiś sposób przetworzyć. W ten sposób może nie być poprawny dla elementu, a tym samym wywołać wyjątek. W pseudokodzie wyglądałoby to tak: proccessItems (lista) error = nowa pusta lista dla pozycji na liście: try: process_item(item) catch Whatever, err: error.append(err) return error Czy istnieje wzorzec do zrobienia tego rodzaj rzeczy? Czy są jakieś antywzorce, których należy unikać? Lepszy kod (wyjątek nie używany do sterowania przepływem), ale nadal zgodny z tą samą logiką, byłby następujący: proccessItems (lista) error = nowa pusta lista dla pozycji na liście: ret = process_item(item) if null != ret error.append( ret) zwróć błąd


title: Jeśli nowa funkcja jest zaimplementowana i jest błąd, czy kontrola jakości powinna ją odrzucić, czy zaakceptować ją i zgłosić nowy błąd?

text: W pracy używamy narzędzia do śledzenia błędów o nazwie Pivotal Tracker (www.pivotaltracker.com), które umożliwia inżynierom zgłaszanie funkcji i błędów. Jeśli zostanie dostarczona funkcja lub poprawka błędu, zadaniem kontroli jakości jest jej odpowiednie zaakceptowanie lub odrzucenie. Jeśli inżynier zaimplementuje nową funkcję, która zawiera błąd, czy kontrola jakości powinna zaakceptować tę funkcję i zgłosić błąd osobno, czy też powinna odrzucić tę funkcję i zgłosić błąd w komentarzu? Potencjalna zaleta odrzucenia funkcji: Większe szanse na zauważenie i naprawienie błędu przez inżynierów przed wydaniem kodu Potencjalna zaleta zgłoszenia oddzielnego błędu: Pozwala to inżynierom lepiej ocenić, ile błędów się pojawiło (jeśli jest to naprawdę przydatne)


title: Co oznacza CR w numerach wersji?

text: Hibernate ma przyrostek CR w swoich wydaniach dla wersji 4.0 hibernate, na przykład 4.0.0.CR7. Co oznacza część CR? Kiedy powinienem używać tego rodzaju numeracji wydań?


title: Skrypty pośmiertne, które działają w przypadku przedwczesnej śmierci?

text: Czy znasz jakieś ciekawe historie z prawdziwego życia, w których programiści napisali skrypty wykonywane na wypadek ich śmierci? Czy masz jakieś skrypty, które uruchomiłyby się w przypadku twojej przedwczesnej śmierci? Gdybyś miał napisać taki scenariusz, co by to było? Jeśli już napisałeś dla siebie, co robi ten skrypt?


title: Szukam określonego typu danych, jeśli istnieje

text: Szukam pewnego rodzaju danych. Główną ideą tego typu danych jest opisanie linii produkcyjnej zawierającej kilka kroków. Każdy krok powinien być reprezentowany jako „wierzchołek” zawierający obiekt dowolnego typu. Wtedy dla każdego „wierzchołka” możliwe są „podlinie produkcyjne” łączące linię. Mogłoby więc wyglądać mniej więcej tak: O -> O -> | # podprodukcja | # punkt połączenia O -> O -> O -> O -> O -> O -> O # główna linia produkcyjna | # punkt połączenia O -> O -> O -> | # podprodukcja | # punkt połączenia O -> | #subproductionline Czy ktoś z Was zna taki typ danych? Gdybym miał zakodować taki typ danych... Widzę dwie możliwości zrobienia tego: * Typ danych jako Array (główna linia produkcyjna) zawierający tablice (zawierający jako pierwszy element dane zawierające dane każdego wierzchołka) i resztę elementów zawierających subproductionlines jako rekurencyjne ten typ danych lub * Typ danych jako tablica zawierająca dane przechowywane w wierzchołku. Ostatnim elementem jest albo element, do którego łączy się ta podlinia produkcyjna, albo konkretny element reprezentujący koniec głównej linii produkcyjnej, jeśli taka jest. Jak myślisz, co jest lepszym rozwiązaniem? Język programowania, o którym myślę, że używam, to c / c++.


title: Kto zaprojektował wyjątki?

text: Skąd wzięły się wyjątki i obsługa wyjątków? Podoba mi się, jak .NET go używa, podoba mi się, jak C++ go obsługuje (ale biblioteki niestety używają kodu powrotu lub są napisane w C). Znam jego standard we wszystkich nowych językach, ale kto go zaprojektował jako pierwszy lub skąd się wzięła? Czy C++ jest pierwszym językiem, który go używa? Nie znam żadnego innego starszego.


title: Który projekt jest lepszy, gdy użyjesz klucza obcego zamiast ciągu do przechowywania listy identyfikatorów?

text: Buduję system egzaminacyjny online. Zaprojektowałem do stołu, `Pytanie` i `GeneralExam`. Tabela `GeneralExam` zawiera informacje o egzaminie, takie jak nazwa, opis, czas trwania,... Teraz chciałbym zaprojektować tabelę `GeneralQuestion`, która będzie zawierała identyfikatory pytań należących do egzaminu ogólnego. Obecnie mam dwa pomysły na zaprojektowanie tabeli GeneralQuestion: 1. Będzie ona miała dwie kolumny: general_exam_id, question_id. 2. Będzie miał dwie kolumny: general_exam_id, list_question_ids (ciąg/tekst). Chciałbym wiedzieć, które projektowanie jest lepsze, plusy i minusy każdego projektowania. Korzystam z bazy Postgresql.


title: Jak ogólnie obsługiwane są tabele złożone, gdy nie ma dostępnego narzędzia ORM?

text: Zajmuję się tworzeniem składnika środowiska uruchomieniowego systemu Windows (C#), który ma być używany w nakładce HTML/JS dla aplikacji ze sklepu Windows. Teraz jednym z żądań jest posiadanie bazy danych w systemie lokalnym do przechowywania metadanych o plikach, które zostaną pobrane. Po rozejrzeniu się wszędzie zacząłem używać SQLite w połączeniu z biblioteką wrappera sqlite-net. Wydaje się, że jest to powszechnie uważane za najlepszą opcję, ale jest to dla mnie poważny problem z rozpoczęciem pracy. Być może moim największym problemem jest to, że nie może mapować typów kolekcji na tabele złożone. Doprowadziło to do pisania własnych zapytań SQL dla całej struktury bazy danych, ale szybko okazało się to bardzo niewygodnym rozwiązaniem. Aby wyjaśnić, jest to sytuacja, o której mówię: class School { string Name { get; ustawić; } Lista<Osoba> Uczniowie { get; ustawić; } } class Osoba { int Id { get; ustawić; } string Nazwa { get; ustawić; } } Dla tak małego przykładu z pewnością mógłbyś samodzielnie napisać zapytania SQL dla trzech tabel, ale w obecnej sytuacji mam obiekt, który przechowuje kilka kolekcji, które z kolei przechowują kolekcje kilka poziomów w dół. Może jestem zepsuty przez Entity Framework, ale trudno uwierzyć, że albo każdy używa podstawowych modeli, które zawierają tylko (bardzo) ograniczony zestaw typów obsługiwanych przez sqlite-net, albo każdy pisze własne opakowanie wokół niego, aby uwzględnić modele z kilkoma dodatkowymi złożoność. Jak ogólnie traktuje się te sytuacje? Czy przeoczam jakieś bardzo proste rozwiązanie?


title: Jak określić wymaganie funkcjonalne?

text: Mam takie wymaganie: Aplikacja musi umożliwiać Administratorowi edycję, tworzenie i usuwanie Użytkowników. Teraz słyszałem, że każda akcja musi znajdować się w wymaganiu funkcjonalnym, a moje pytanie brzmi: Które z poniższych stwierdzeń byłoby bardziej odpowiednie (jeśli istnieją): 1: Aplikacja musi umożliwiać Administratorowi edycję, tworzenie i usuwanie Użytkowników . 2: Aplikacja musi umożliwiać Administratorowi edycję Użytkowników. Aplikacja musi umożliwiać Administratorowi tworzenie Użytkowników. Aplikacja musi umożliwiać Administratorowi usuwanie Użytkowników.


title: Co to jest zgodność wsteczna platformy .NET Framework?

text: Tworzymy aplikację windowsową w .NET 4 z bazą danych MySQL. Gdy mamy zamiar wdrożyć tę aplikację, instalujemy w naszym kliencie framework .NET 4, a podczas instalacji .NET Connector for MySQL wymaga on .NET framework 3.5. Ale .NET 4 jest już zainstalowany. Czy platforma .NET Framework nie była wstecznie kompatybilna? W końcu instalujemy dwa .NET framework (3.5 i 4), który nie jest mały pod względem rozmiaru dysku. Co dokładnie oznacza zgodność wsteczna?


title: Czy złą praktyką jest posiadanie interfejsu do definiowania stałych?

text: Piszę zestaw klas testowych junit w java. Istnieje kilka stałych, na przykład ciągi znaków, których będę potrzebować w różnych klasach testowych. Zastanawiam się nad interfejsem, który je definiuje i każda klasa testowa by go zaimplementowała. Korzyści, jakie widzę, to: * łatwy dostęp do stałych: "MOJA_STAŁA" zamiast "ThatClass.MOJA_STAŁA" * każda stała zdefiniowana tylko raz Czy to podejście jest raczej dobrą czy złą praktyką? Mam ochotę trochę nadużywać koncepcji interfejsów. Możesz odpowiedzieć ogólnie o interfejsach/stałych, ale także o testach jednostkowych, jeśli jest w tym coś specjalnego.


title: Jaki wyjątek poprosić o argumenty spoza zakresu?

text: Jaki typ wyjątku powinienem zgłosić? Mam klasę konsoli opisującą prostokąt komórek, które użytkownik może indeksować, przekazując współrzędną: szerokość, wysokość = 80, 25 konsola = Console.new(szerokość, wysokość) x, y = 2, 5 point_on_screen = Point.new (x, y) console[point_on_screen] = 'a' Zastanawiam się teraz, jakie typy wyjątków należy zgłosić, gdy indeks wykracza poza granice. Oznacza to, że poza (stałymi!) domenami x:[0, szerokość] i y:[0, wysokość]. Mógłbym rzucić `RangeError` lub `ArgumentError` *. 1. Czy ma znaczenie, jaki typ wyjątku zgłosić, o ile komunikat o błędzie jest przydatny? 2. Czy powinienem używać tego samego typu wyjątku zarówno do konstrukcji konsoli, jak i indeksowania? Czy te dwie rzeczy są naprawdę semantycznie różne? * zwrócenie pewnego rodzaju obiektu poza granicami jest prawdopodobnie lepszą opcją - czymś w rodzaju wzorca obiektu zerowego - ale nie to, nad czym się tutaj zastanawiam. ### ArgumentError Jedną z opcji jest zgłoszenie „ArgumentError”, ponieważ argument jest oczywiście błędny, wymiary nigdy nie mogą być nieujemne. To właśnie wrzucam w przykładzie 1, ponieważ powinniśmy z góry wiedzieć, że wymiary powinny być nieujemne. Przykład 1: konsola = Konsola new(-3, 4) # Błąd argumentu ### RangeError Inną opcją jest zgłoszenie `RangeError`, ponieważ argument jest poza poprawnym zakresem. Używam ich do indeksowania. Argument jest zawsze poza zakresem, jeśli x < 0, ale jeśli x ≥ 0, to zależy od szerokości konsoli, jeśli x jest w domenie. Przykład 2: konsola = Console.new(20, 40) pt = Point.new(-3, 4) Console[pt] # RangeError


title: Jak wesprzeć produkt zbudowany ze zwinnym rozwojem?

text: Dwie z funkcji, jakie nasza firma zapewnia naszym klientom, to: * Nasz zespół ds. rozwoju liczący około 10 pracowników tworzy oprogramowanie dla firm z określonej branży. Oprogramowanie jest używane na setkach komputerów naszych klientów. Chociaż dla większości klientów produkt jest gotowy, więksi klienci napędzają jego rozwój, więc jest to coś pomiędzy oprogramowaniem termokurczliwym a oprogramowaniem niestandardowym. * Nasz zespół wsparcia składający się z około 25 pracowników zapewnia wsparcie techniczne zarówno dla naszego własnego oprogramowania, jak i kilku innych produktów oprogramowania, dla których jesteśmy dostawcą. Nasz zespół programistów niedawno przeszedł na Scrum ze względu na swoją metodologię rozwoju i chociaż popieram tę zmianę, obawiam się, że nasz zespół wsparcia będzie miał więcej problemów w przyszłości. Dzięki szybszemu cyklowi wydań nasi klienci będą mieli funkcje i produkty w produkcji, o których Support nie jest nawet świadomy, dopóki klient nie zadzwoni. Nigdy nie byliśmy szczególnie dobrzy w pozyskiwaniu dokumentacji i informacji z działu rozwoju do wsparcia, ale obawiam się, że Scrum tylko zaostrzy problem. Jakie są dobre referencje na temat tego, jak firmy godzą chęć częstego wydawania wersji deweloperskich z pragnieniem pomocy technicznej, aby mieć pełną dokumentację i informacje dotyczące pomocy technicznej, zanim klienci zobaczą produkt? Jak firma powinna ustrukturyzować zarządzanie wydaniami i zmianą, stosując metodyki zwinne? EDIT: Interesują mnie szczegóły dotyczące tego, w jaki sposób firmy radzą sobie z tymi problemami. Czy zespół scrumowy wypycha wydania klientom? Czy oprogramowanie musi przejść przez zespół zarządzający wydaniami/zmianami, który nie zostanie wdrożony, dopóki pomoc techniczna nie otrzyma dokumentacji i nie zostanie przyspieszona? W jaki sposób szybko przekazujesz informacje klientom, a jednocześnie informujesz wszystkich o zmianach i nowych funkcjach?


title: Jakie są dobre praktyki przed sprawdzeniem kodu źródłowego?

text: Mój zespół używa Team Foundation Server do kontroli źródła, a dzisiaj naprawiłem kilka błędów i przed zaewidencjonowaniem aplikacji Smoke Test, ale zapomniałem skomentować jakiś kod. (Ten kod sprawił, że interfejs użytkownika był trochę dziwny.) Chcę wiedzieć, jakie są dobre praktyki przed sprawdzeniem kodu - nie chcę ponownie popełniać tego rodzaju błędu.


title: Użyj mojego własnego kodu na licencji GPL w produkcie komercyjnym

text: Tworzę projekt oprogramowania w języku Java/Swing na licencji GPL v3. Później chcę stworzyć aplikację na Androida, która korzysta z algorytmów aplikacji Java/Swing. Ta aplikacja na Androida będzie produktem komercyjnym (sprzedawanym w sklepie Google Play). Czy jest to problem, gdy używam własnego kodu GPL w komercyjnym SW opracowanym przeze mnie?


title: Czy rzucenie palenia jest jedyną rozsądną odpowiedzią na tę sytuację?

text: Przeczytałem ciekawy artykuł _10 powodów, dla których warto rzucić IT_. Cytuję fragment tego tekstu: > „To niezrozumienie zarówno obowiązku, jak i technologii robi jedną rzecz: uniemożliwia > twoją pracę. Znasz swoją > pracę i wiesz, że znasz swoją pracę. Kierownictwo nie zna twojej pracy, ale > nie wiedzą, że nie znają twojej pracy. To wszystko to okrutny pasek > stresu Mobiusa." To jest dokładnie to, co obecnie dzieje się w moim projekcie. Klient, czyli ten, który płaci, chce być wszystkim. Chce odegrać w projekcie każdą możliwą rolę. Chce nawet szczegółowego wyjaśnienia technicznego, mimo że nie wie nic o programowaniu. A kiedy coś nie działa, obwinia za to kogoś innego. Czy ktoś miał podobne doświadczenia? Jakieś porady, jak radzić sobie w takich sytuacjach?


title: Czy liczy się doświadczenie zawodowe zdobyte w oczekiwaniu na wejście do firmy?

text: Mój kuzyn otrzymał list z ofertą od firmy programistycznej (został umieszczony na ostatnim roku inżynierskim), ale firma powiedziała, że będzie musiał poczekać nieznaną liczbę miesięcy, zanim będzie mógł rozpocząć pracę. W międzyczasie zdecydował się na pracę w innej firmie, bo nie chce marnować czasu. Jeśli pracuje w innej firmie programistycznej (przez jeden z kontaktów jego taty), czy jego doświadczenie będzie się liczyło? Czy będzie to dla niego warte?


title: jak zmienić sekwencję używaną w planowaniu pokera

text: Czy można zmienić używaną sekwencję w Planning Poker, w przypadku niektórych historii uważa się, że gdy historie stają się większe, zawiera więcej niepewności, ale historie mają prawie dokładne oszacowania czasu i te oszacowania nie spadają do dwóch granic zdefiniowanych przez szereg Fibonacciego .


title: Dobra praktyka przekazywania tych informacji przez parametr adresu URL

text: W zasadzie załóżmy aplikację, która zarządza niektórymi spotkaniami użytkowników. Mam na stronie strefę filtrowania, która ma na celu określenie kategorii przedmiotów, które muszę zwrócić. Zakładając dwa rodzaje filtrów: * Odzyskiwanie **moich rzeczywistych spotkań** (spotkań obecnie odbywających się lub planowanych w najbliższej przyszłości) * Odzyskiwanie **moich przeszłych spotkań** (spotkań, które już minęły) Myślę o przekazaniu pewnego rodzaju adresu URL parametr taki: `www.myapp.com?me=actual` lub `www.app.com?me=past` Rzeczywiście, nie mogę mieć jednocześnie `actual` i `past` w tym samym wywołaniu, ponieważ nie być odpowiednie dla aukcji. Tak więc po mojej stronie serwera obsługiwałbym prostą warunkową przekazaną wartość, aby przefiltrować zapytanie. Czy wystarczy przekazać „ciąg” jak ten („przeszłość” lub „rzeczywisty”), czy też istnieje lepsza praktyka obsługi tego przypadku? Pamiętaj, że domyślnie, czyli bez filtrowania, zwracane są wszystkie spotkania.


title: Budowanie ogólnych umiejętności programistycznych?

text: Obecnie jestem całkiem nowy w programowaniu, miałem kontakt z kilkoma językami (C#, PHP, JavaScript, VB i kilkoma innymi) i jestem całkiem nowy w OOP. Zastanawiałem się tylko, jaki jest najlepszy sposób na rozwijanie ogólnych umiejętności programowania/rozwiązywania problemów bez specyficznego języka? Myślałem może o czymś w rodzaju Project Euler, ale bardziej nastawionym na nowicjuszy? Dziękuję! Edycja: Zastanawiam się, jak zająć się skryptowaniem/programowaniem gier, jestem już w grach, ale w innej dyscyplinie :)


title: Czy 64-bitowy laptop będzie problemem dla aplikacji „Metro”?

text: Patrzę na przykładową aplikację w stylu „Metro” systemu Windows 8 C# (bingPushpin). Po dwukrotnym kliknięciu MainPage.xaml pojawia się komunikat „Widok projektu jest niedostępny dla platform docelowych x64 i ARM”. Mój laptop Acer Aspire jest rzeczywiście 64-bitowy. Czy to nadal będzie dla mnie problemem, czy istnieje obejście? Jeśli to pierwsze, czy ktoś może polecić maszynę deweloperską z systemem Windows 8 (laptop)?


title: Funkcje zwracające wskaźniki

text: C++ noob tutaj. Mam bardzo podstawowe pytanie dotyczące konstrukcji, którą znalazłem w czytanej książce C++. // deklaracja klasy class CStr { char sData[256]; public: char* get(void); }; // implementacja funkcji char* CStr::get(void) { return sData; } Tak więc funkcja `Cstr::get` ma oczywiście zwracać wskaźnik znakowy, ale funkcja przekazuje coś, co wygląda jak wartość (`return sData`). Czy C++ wie, aby zwrócić adres zwróconego obiektu? Domyślam się, że definicja funkcji to `return &sData`.


title: Oblicz, które pakiety ilościowe użyć na podstawie ilości rezerwacji

text: W mojej aplikacji można zarezerwować wiele spotkań na zajęcia. Każda czynność ma wiele pakietów cenowych z ceną i ilością. Pokazując koszyk, muszę zastanowić się, jakiej kombinacji pakietów użyć, aby uzyskać dla użytkownika najlepsze ceny i umożliwić rozliczenie wszystkich spotkań. Nie zawsze jest 1 opakowanie. Czy istnieje wspólny wzorzec, który można zastosować do tego? Oto, dokąd dotarłem, zanim zdałem sobie sprawę, jak trudne to będzie: cost = 0 i = meetings.count activity.packages.order(:quantity => :asc).each do |package| if i >= package.quantity && i.modulo(package.quantity) == 0 cost = koszt + (package.price * i/package.quantity ) i = i - i/package.quantity end end if i > 0 raise "błąd: pakiety nie obejmują liczby dzieci." koniec To w rubinach (szyny). Czyli problem nie dostrzegłem dopóki nie napisałem wyżej to, co jeśli jest 8 spotkań, a pakiety na 4 i 5 - użyje pakietu 5, to ostatnie 3 nie zmieszczą się w pakiecie 4 i to zawiedzie. EDYCJA: Więcej szczegółów Tak więc struktura to działania has_many pakiety pakiety: ilość: liczba całkowita cena: float Tak więc pakiet definiuje cenę za pakiet spotkań dla czynności. Na przykład lekcje żeglarstwa kosztują 500 USD za 5 lub 430 USD za 4. Jeśli użytkownik zamówił 8 lekcji żeglarstwa, aplikacja musi ustalić, że powinna użyć dwóch z 4 pakietów = 860 USD. Jeśli użytkownik zamówił 9 lekcji żeglarstwa, aplikacja powinna wypracować, że potrzebują 1 pakietu 5 sztuk i jednego pakietu 4 sztuk. itp


title: Wykorzystanie oddziałów do mini projektu lub modułu projektu: Dobra praktyka?

text: W moim repozytorium mam 3 ściśle powiązane mini projekty: 1 serwer i 2 klientów. Wszystkie są dość małe (<3 pliki każdy). Ponieważ są tak małe i tak blisko spokrewnione, po prostu wrzuciłem je do folderów w jednym repozytorium. Jednak teraz, gdy wiem, że nie mogę sklonować pojedynczego katalogu w wybranym przeze mnie systemie VCS (Mercurial), rozważam ich podzielenie. Jednak jestem zdezorientowany co do ogólnych najlepszych praktyk: czy można umieszczać różne małe projekty w różnych gałęziach, czy też wszystkie powinny być umieszczane w różnych repozytoriach? Obecnie skłaniam się ku rozgałęzianiu, ponieważ nie mogę łatwo podzielić historii plików różnych projektów, ale wtedy używasz funkcji w sposób, w jaki nie była przeznaczona do użycia.