title: Czy Mono ma swoje miejsce w świecie przedsiębiorstw?

text: W przypadku rozwiązań opartych na systemie Windows dla przedsiębiorstw czasami najlepszym wyborem jest platforma .NET. Jak na Mono patrzą przedsiębiorstwa, które muszą używać Linuksa (a raczej wolą używać Linuksa)? Zakładając, że programiści nie stanowią problemu i są zaznajomieni z .NET/Mono i innymi możliwymi konkurentami, takimi jak Java. Czy średnia/duża firma uruchomiłaby Mono na swoich serwerach jako przeciwieństwo technologii takich jak Java? Czy znasz taką firmę?


Jaki jest obieg błędów w Twoim zespole Agile/Scrum? Oto nasz: \- Jeśli błąd jest związany z historią w bieżącym sprincie, naprawiamy go. \- Jeśli błąd nie jest związany z historią w bieżącym sprincie i nie jest krytyczny, jest wysyłany do właściciela produktu w celu ustalenia priorytetów. \- Jeśli błąd nie jest związany z historią w sprincie i jest krytyczny, naprawiamy go.


title: Jak przydatne są punkty funkcyjne?

text: Jak przydatne jest mierzenie punktów funkcyjnych? Używamy punktów funkcyjnych w mojej nowej pracy. Słyszałem o punktach funkcyjnych, ale nie miałem żadnego szkolenia ani doświadczenia... ale nie mam zaufania do rzeczy, których nie da się zwięźle wyjaśnić.


title: Czy Google Page Speed nie działa prawidłowo?

text: Dokonuję drobnych ulepszeń w publicznej witrynie ASP.NET, którą mam i kilka razy uruchomiłem ją przez Google Page Speed. Mam specyficzny problem, ale coś, co mnie naprawdę wyrzuciło, to to, że nawet jeśli nie wprowadzałem żadnych zmian i po prostu uruchamiałem go raz za razem (co 5 minut), otrzymywałbym różne wyniki o +-1 lub 2 zwrotnica. To samo w sobie jest dziwne. W każdym razie, jedynym elementem o średnim priorytecie, który mi pozostał, jest to, że PageSpeed mówi, że niektóre obrazy nie mają daty wygaśnięcia (lub mają datę wygaśnięcia w bardzo bliskiej funkcji), czego nie widzę, jak to możliwe, ponieważ są one zasoby statyczne (obrazy) i konfiguruję, że wygasają do 60 dni po pierwszym żądaniu. Nie minie nawet tydzień, a znajdują się one dokładnie w tym samym miejscu, w którym znajdują się pozostałe moje obrazy (a około 95% z nich nie jest oznaczonych jako niemających daty ważności) Więc, jak to możliwe dla Page PRĘDKOŚĆ, niektóre z moich zdjęć mają datę ważności, a inne nie? Uruchomiłem również HttpWatch na mojej stronie i analizuję konkretne żądanie jednego z tych obrazów, i ma on nagłówek max-age = 5184000. wszelkie pomysły są bardzo cenione. Dziękuję.


title: Rozszerzenie Visual Studio, aby podkreślić ponowne użycie kodu?

text: Miałem napięty termin ukończenia projektu w C# iw rezultacie czuję, że nie kodowałem rzeczy w najbardziej wydajny sposób. Teraz, gdy mam czas, aby wrócić i zoptymalizować kod, zastanawiałem się, czy istnieje rozszerzenie Visual Studio lub inny program/usługa do podświetlania podobnych do siebie bloków kodu. W ten sposób mogę rozbić je na funkcje, tak jak potrzebuję.


title: Open source dla oprogramowania, praw autorskich itp.?

text: To może być bardziej pytanie prawne: jakiś facet twierdzi, że ma prawa autorskie do swojego kodu źródłowego, ale ma kilka publicznie ujawnionych przykładów kodu źródłowego na swojej stronie internetowej, ale po prostu umieszcza informację o prawach autorskich na dole strony. Czy automatycznie zakłada się, że może rościć sobie prawa autorskie do dostarczonego przykładowego kodu, który posiada w swoim katalogu oprogramowania „open source”? Według amerykańskiego biura ds. praw autorskich musiałby wystąpić o prawa autorskie do każdej próbki oprogramowania lub programu z publicznie ujawnionym kodem źródłowym na swojej stronie. Czy mam rację? Ponadto jego próbki oprogramowania na stronie nie mają deklaracji o licencji na górze każdej próbki. Czy nadal może egzekwować licencje lub ochronę praw autorskich bez deklaracji? Twierdzi, że ludzie mogą go tylko czytać, ale NIE kopiować na własny użytek lub dystrybucję. Myślałem, że to jest sprzeczne z celem open source, chociaż jego witryna jest zadeklarowana jako katalog open source. Czy mogę założyć, że jego kod źródłowy jest do wzięcia, ponieważ nie ma w nim żadnych deklaracji licencyjnych? Myślałem, że możesz tylko ekrany autorskie i przepływ pracy. Czy można prawnie chronić algorytm lub logikę programowania? Dziękujemy za udostępnienie tego wspaniałego zasobu.


title: Czy "PHP i MySQL Web Development, wyd. 4". przestarzała książka, z której można się uczyć?

text: Chcę dostać się do rzeczy internetowych i myślałem o korzystaniu z PHP + MySQL. Mam doświadczenie w C#, C++, grafice desktopowej, ale żadnych webowych rzeczy poza HTML, CSS, których zacząłem się uczyć 2 miesiące temu. W pytaniu SO PHP-book najwyżej ocenianą książką jest "Obiekty PHP, wzorce i praktyka". Jednak nie jestem pewien, czy jest to książka, od której można zacząć PHP... czy jest to? Większość książek wymienionych w tym pytaniu SO wydaje się być dla tych, którzy już znają PHP. Rozważałem "PHP & MySQL Web Development, 4th Ed.", ale ktoś wspomniał, że "używa funkcji mysql_*, które są prawie przestarzałe". Pomoc?


title: Zalety i wady tworzenia wspólnego kodu rusztowania do testów jednostkowych

text: Do projektu, nad którym pracuje mój zespół i ja, często okazuje się, że potrzebujemy dużych fragmentów kodu rusztowania. Tworzenie obiektów domeny z poprawnymi wartościami, konfigurowanie mocków dla repozytoriów, radzenie sobie z pamięcią podręczną... to wszystko, co często zdarza się podczas testów. Wiele razy pracujemy z tymi samymi podstawowymi obiektami, które są kluczowe dla naszej domeny (osoba,...), więc wiele testów tworzy instancje tych obiektów, nad którymi mogą pracować inne obiekty. Mamy wiele różnych rozwiązań wykorzystujących domenę bazową, więc ten rodzaj kodu jest często rozproszony w tych rozwiązaniach. Myślałem o stworzeniu wspólnych klas, które robią dużo tego rusztowania. To pozwoliłoby nam zażądać osoby z pełną instancją ze wszystkimi ustawieniami (dostęp przez repozytorium, buforowanie...). Usuwa to zduplikowany kod z naszych indywidualnych testów jednostkowych, ale oznaczałoby to również, że istnieje duża ilość kodu, który prawdopodobnie wykonuje „zbyt dużo” na test (ponieważ utworzyłby pełny obiekt, a nie tylko wymagane części). Czy ktoś kiedykolwiek to zrobił? Czy są jakieś spostrzeżenia, uwagi, przemyślenia... które możesz zaproponować, które mogą potwierdzić lub unieważnić to podejście?


title: Jak radzisz sobie ze zmieniającymi się wymaganiami?

text: W mojej obecnej pracy wydaje się, że mamy wiele zmian w wymaganiach. Jesteśmy sklepem „zwinnym”, więc rozumiem, że mamy się dostosować, a co nie, ale czasami zmiana jest duża i nic trywialnego. Moje pytanie brzmi, jak skutecznie komunikujesz koszt zmiany? Ze względu na elastyczność, jeśli zmiana jest wystarczająco duża, coś zostanie usunięte z bieżącego sprintu, ale zwykle zostanie dodane następnym razem. Ponieważ naszym modelem jest SaaS, klientem końcowym jest w rzeczywistości sama firma i wiedzą, że _n_ tygodni później otrzymają tę funkcję. Myślę, że to, do czego próbuję, to usunięcie funkcji, która naprawdę nie jest czymś, co można wykorzystać do komunikacji, ponieważ zostało opóźnione tylko o _n_ tygodni. Jakie inne sposoby musisz skłonić firmę do zrozumienia, ile kosztuje zmiana?


title: Jak radzić sobie ze zmianami wymagań w zwinnym modelu rozwoju?

text: Wiem, że w zwinnych wymaganiach zmiany należy nie tylko planować, ale także uwzględniać. Ale nadal nie wiem, jak zwinnie radzić sobie z tymi zmianami.


title: Argumenty za homologacją Firefoksa w firmie

text: Opracowałem projekt sieciowy dla mojej firmy i ten projekt został zaprojektowany do korzystania z Mozilla Firefox (w tym javascript (jQuery)). Jednak teraz firma chce, aby projekt został przeniesiony do Internet Explorera. Wiem, że w Google jest kilka wyjaśnień dotyczących Mozilla Firefox, które mogę zademonstrować firmie. Ale czy jest jakiś link pokazujący, że Internet Explorer działa zgodnie ze standardami W3C i ma kilka powodów, dla których używa Mozilla Firefox? Szukałem na youtube i slideshare, ale oba mają bardzo słaby argument, aby je wybrać i pokazać firmie. Firma, w której pracuję, nadal jest bardzo naiwna w utrzymaniu Internet Explorera. 1) Projekt jest intranetowy. Tylko 400 wewnętrznych pracowników ma dostęp do sieci. 2) Firma twierdzi, że Mozilla Firefox nie została zatwierdzona przez firmę. Jakieś sugestie? Jakiś link, który pokazuje, że twórcy na świecie nienawidzą Internet Explorera? Link wyjaśniający, dlaczego programiści nie lubią Internet Explorera? Po odpowiedziach, myślę o zrobieniu świetnego slajdu ze wszystkimi niezbędnymi argumentami do homologowanego przez firmę firefoxa. A jednak opublikowane w slideshare. EDIT: Ktoś tutaj musi się zastanawiać, dlaczego nie zaprojektowałem, również dla Internet Explorera. No cóż... Ponieważ termin realizacji projektu jest zawsze krótki, stworzyłem projekt skupiony tylko na Mozilla Firefox, ponieważ przeglądarka Mozilla Firefox bardziej respektuje standardy W3C (i javascript także) niż Internet Explorer.


title: Parametry częstotliwości ściągania w architekturze MVC

text: Załóżmy prosty SPA (aplikacja jednostronicowa), _może pulpit nawigacyjny_ i następujące podstawowe warunki: * **Model** zawiera metody dostępu i wyświetlania danych; * **Widok** zawiera metody ładowania szablonów i zastosowania model.data do szablonu; * **Kontroler** zarządza poleceniami użytkownika; * **Router** obsługuje nawigację; W naszym przykładzie upewnimy się, że użytkownik może skonfigurować pulpit nawigacyjny tak, aby aktualizował się co _N_ sekund, pobierając nowe dane z _back-end_ ( _pullFrequency_ ). W którym komponencie należy ustawić parametr _pullFrequency_: 1. Model? 2. Zobacz? 3. Kontroler? 4. Router? 5. Gdzie indziej?


title: Dlaczego regulator proporcjonalny ma błąd stanu ustalonego?

text: Czytałem o pętlach sprzężenia zwrotnego, ile wynosi ten błąd stanu ustalonego dla danego wzmocnienia i co zrobić, aby usunąć ten błąd stanu ustalonego (dodać wzmocnienie całkowania i/lub pochodnej do kontrolera), ale w ogóle nie rozumiem _dlaczego_ ten błąd stanu ustalonego występuje w pierwszej kolejności. Jeśli rozumiem, jak prawidłowo działa sterowanie proporcjonalne, wyjście jest równe wyjściu prądowemu plus błąd pomnożonemu przez wzmocnienie proporcjonalne (Kp). Czy jednak błąd nie zmniejszałby się powoli w miarę dodawania (osiągając 0 w nieskończonym czasie), nie miałby błędu stanu ustalonego? Z mojego zdezorientowania wygląda na to, że kompletnie nie rozumiem, jak to działa – właściwe wyjaśnienie, w jaki sposób powstaje ten błąd stanu ustalonego, byłoby fantastyczne.


title: czy JS jest językiem pisanym stopniowo?

text: Badałem koncepcje statycznie typowane i typowane dynamicznie i odkryłem, że istnieje inny system typowania zwany stopniowym typowaniem. Z Wikipedii > Stopniowe wpisywanie to system typów, w którym zmienne mogą być wpisywane > w czasie kompilacji (wpisywanie statyczne) lub w czasie wykonywania (wpisywanie dynamiczne), co pozwala > programistom na wybór odpowiedniego paradygmatu typów, z > wewnątrz jeden język. > > W szczególności stopniowe pisanie używa specjalnego typu o nazwie dynamic do reprezentacji statycznie nieznanych typów, a stopniowe pisanie zastępuje pojęcie równości typu nową relacją zwaną spójnością (aka kompatybilnością), która wiąże typy dynamiczne ze wszystkimi innymi rodzaj. Relacja spójności jest > symetryczna, ale nie przechodnia Jeśli dobrze rozumiem te pojęcia, "Javascript" jest językiem stopniowo pisanym. Mam rację?


title: Czy istnieje terminologia niezależna od narzędzi dla czynności kontroli źródła?

text: Mój zespół rozpoczyna dyskusje na temat kontroli źródeł (procesu i ewentualnie narzędzi) i chcielibyśmy mieć terminologię agnostyczną dla różnych działań. Środowisko ma wiele (starych) systemów VCS i wiele pożądanych (nowych) systemów VCS. Czy istnieje standardowa definicja czynności, a przynajmniej jakiś powszechnie akceptowany zestaw? Przykładowe działania (w terminologii CVS): * Oddział * Sprawdź * Aktualizuj * Scal


title: Najlepszy sposób: zrestrukturyzuj istniejące rozwiązanie Team Foundation Server (TFS)

text: W moim dziale opracowujemy kilka mniejszych AddOns dla jakiegoś serwera ujednoliconej komunikacji. Do wersjonowania i rozwoju rozproszonego używamy Team Foundation Server 2012. Ale: jest tylko jedno duże rozwiązanie TFS dla wszystkich naszych aplikacji i bibliotek: * Główne rozwiązanie * Aplikacje * Aplikacja 1 * Aplikacja 2 * Aplikacja 3 * Zewnętrzne * Biblioteki * Biblioteka 1 * Lib 2 * Narzędzia Ścieżka "Aplikacja" zawiera wszystkie główne aplikacje. Nie są one zależne od siebie, ale zależą od projektów Biblioteki i Zewnętrzne. Ścieżka „Zewnętrzne” zawiera niektóre zewnętrzne biblioteki DLL, do których odwołujemy się w naszych aplikacjach i bibliotekach. Ścieżka Biblioteki zawiera powszechnie używane biblioteki (szablony interfejsu użytkownika, klasy pomocnicze itp.). Nie są one od siebie zależne i są wymienione w projektach Biblioteki i Narzędzia. Ścieżka Tools zawiera kilka programów pomocniczych, takich jak setup helpers, update web services, itp. Jest kilka głównych punktów, dla których chciałbym zmienić tę strukturę: * Nie możemy używać buildów serwera. * Zarządzanie zarządzaniem scrumem TFS za pomocą sprintów, utrudnień itp. przy takiej strukturze rozwiązania jest niewygodne. * Każdy programista zawsze ma dostęp do wszystkich projektów w rozwiązaniu. * Kompletna kompilacja trwa zbyt długo, jeśli przypadkowo naciśnie się klawisz [F6] w programie Visual Studio... Co byś zmienił w tym rozwiązaniu? Jak podzielić te projekty na mniejsze rozwiązania, jak te rozwiązania powinny być zorganizowane. Moim pierwszym podejściem byłoby stworzenie jednego projektu TFS dla każdej aplikacji, biblioteki i narzędzia. Ale jak mogę zapewnić, że m.in. Aplikacja 2 zawsze zawiera najnowszą wersję Lib 1? Czy muszę monitorować zmiany w Lib 1 i ręcznie aktualizować aplikację 2, gdy tylko zmieni się Lib? Czy mogę w jakiś sposób zmusić Visual Studio, aby zawsze jakoś korzystał z najnowszej wersji zewnętrznego projektu? **Edytuj:** W TFS jest tylko jedna kolekcja TFS Team Project, zawierająca jeden TFS Team Project. Projekt zespołowy zawiera jedno duże rozwiązanie Visual Studio, które zawiera kilka folderów zawierających (patrz struktura powyżej), z których każdy zawiera wiele projektów VS. Moje pytanie brzmi teraz, jak byś zreorganizował: 1. Projekty zespołowe TFS 2. Projekty VS


title: Zaleta 2-kierunkowego sortowania przez scalanie w porównaniu z n-kierunkami

text: Wiadomo, że dwukierunkowe sortowanie przez scalanie zajmuje N*logN czasu. Zastanawiam się, jaki byłby czas działania, gdybyśmy podzielili tablicę **o rozmiarze** N na N podtablic, a następnie zrobilibyśmy to samo, co w przypadku łączenia dwukierunkowego?


title: Co zrobić, gdy stajesz przed zadaniem programistycznym, którego nigdy nie robiłeś?

text: Swoją karierę jako programista .NET rozpocząłem 3 miesiące temu i po długim planie szkoleń z różnych technologii, wzorców i koncepcji programiści, którzy mnie nadzorowali, zdecydowali, że jestem gotowy dołączyć do jednego z wielu projektów, którymi zajmuje się firma. Jestem bardzo podekscytowany, że w końcu będę mógł zacząć kodować. Zespół, do którego dołączyłem, jest na razie raczej niewielki, ponieważ zaczynaliśmy od nowego projektu, co jest świetne, ponieważ biorę udział w całym cyklu życia projektu. Jest to projekt SPA oparty na sieci Web z zapleczem, które wykorzystuje interfejs API sieci Web ASP.NET MVC/ASP.NET oraz front-end framework Durandal i powiązane biblioteki. Mój problem polega na tym, że po spotkaniu z kolegami i ustaleniu zadań i kalkulacji na kolejny miesiąc znajduję się w sytuacji, w której nie wiem, czy jestem w stanie podjąć się któregoś z zadań. Nigdy nie wykonałem żadnego z utworzonych zadań i nie wiem, jak mam postępować. Na przykład jednym z utworzonych zadań jest stworzenie ogólnego mechanizmu obsługi błędów dla całej aplikacji. Jak zwykle postępuje się w obliczu zadań, których nigdy nie wykonywał?


title: Kiedy podzielić projekt aplikacji internetowej na wiele produktów?

text: Czy miałeś ten problem? Budujesz złożoną aplikację internetową dla rynku docelowego i po pewnym czasie dochodzisz do punktu złożoności, w którym nie możesz zdecydować, czy budujesz więcej niż jeden produkt. Trzeba podjąć decyzję. Czy dodajesz funkcje, aby przekształcić go w ramy dla wielu domen, czy też opierasz się pokusie i skupiasz się tylko na jednym produkcie. Podam ci teoretyczny przykład; Tworzysz aplikację internetową do przeglądania filmów i programów telewizyjnych. Użytkownicy mogą się logować i pisać własne recenzje. Po miesiącach ciężkiej pracy zaczynasz dostrzegać, jak przydatna może być aplikacja do recenzowania Samochodów. Wszystkie terminy/motywy dotyczą branży filmowej/telewizyjnej. Więc musiałbyś dokonać refaktoryzacji i wziąć pod uwagę strukturę wielostanowiskową, aby uruchomić aplikację internetową na dwóch różnych rynkach. Jak nazywasz tego typu problem i skąd wiesz, kiedy powinieneś, a kiedy nie powinieneś dzielić projektu na wiele domen.


title: analiza obiektowa, brak metodologii

text: Studiowałem wzorce projektowe i zasady oop, nadal czuję, że w większości teorii projektowych czegoś brakuje. Może faktem jest, że nie ma „teorii”, jak to ma miejsce w projektowaniu baz danych. Pozwólcie, że wyjaśnię na przykładzie. Załóżmy, że chcę **modelować różne sposoby produkcji soku pomarańczowego**. Powiedzmy, że zaczynam od klasy `Pomarańcze`, która modeluje dużo pomarańczy, które będą pewnej odmiany, pewnej dojrzałości, mogły być zamrożone itp., a to będzie zgodne z właściwościami mojej klasy Pomarańcze. Następnie kontynuuję, udostępniając Orange metodę ściskania. Wydaje się to słuszne, ponieważ wiąże metodę z danymi, których dotyczy, czyli warunkiem wstępnym osiągnięcia enkapsulacji i innych cennych zasad działania. _Ale szybko okazuje się, że to nie był dobry choiche_ bo nie ma jednego sposobu na wyciśnięcie pomarańczy. Lepiej byłoby mieć klasę „Juicer”, której przykłady zawierają szczegóły metody wyciskania soku: ręcznie, za pomocą elektrycznej sokowirówki, łącznie z miąższem, nie mówiąc już o mieszaniu różnych odmian pomarańczy. Tam, gdzie ta ostatnia otwiera zupełnie nową kategorię możliwości, które nie były dostępne (lub nieosiągalne z łatwością), gdyby każda instancja Oranges była przetwarzana przy użyciu metody ściskania. Powiedzmy, że przeprowadziliśmy „refaktoryzację” naszej architektury oo i przejdźmy do innego podobnego przykładu, który doprowadzi nas do rzeczy. Obecnie powszechną praktyką jest używanie ORM do zapisywania instancji klas w bazie danych i odzyskiwania ich później. W czym jest podobny do przykładu z klasy Oranges? Cóż, tutaj mam klasę, której instancje mogą być utrwalane w bazie danych, czyli „zezwalaj na konkretny proces”. _Ale sama klasa nie zawiera odpowiedniej logiki_ , która w rzeczywistości znajduje się w klasach ORM. Wydaje się więc, że ten sam proces „eksternalizacji” przykładu Orange miał miejsce również w tym przypadku. ### A oto pytanie Biorąc pod uwagę, że pożądane jest zredukowanie liczby prób i refaktoryzacji do minimum, jakie pytania powinien zadać programista, aby przedwcześnie określić, czy metoda powinna być eksternalizowana do innej klasy ? Czy wszystkie metody klasy można ekszernalizować, czy też istnieje zestaw _podstawowych metod_, które są nieodłącznie związane z samą klasą, a więc nie można ich uzewnętrznić? ### Pomysły Jak powiedziałem na początku, nie jestem całkowicie nieświadomy, wydaje mi się, że brakuje „kompleksowej” teorii. Łatwo podać kilka przykładów: jeśli mam klasę, której instancje reprezentują faktury, będę miał metodę 'calculateTotalAmount'. Jest to oczywiście nieodłączna, podstawowa metoda tej klasy, w przeciwieństwie do metod zapisywania tej faktury w bazie danych, która będzie „zewnętrzna” samej klasy. Nie jest to jednak „ostateczna odpowiedź”, ale punkt wyjścia, który służy do wykazania, że „nie wszystkie metody są równe”, ale metody można podzielić na kategorie. Ile (użytecznych) kategorii możemy stworzyć i czy istnieją metodologie, które stawiają te pytania?


title: Czy ten typ strony może być wykonany po stronie klienta?

text: Planuję stworzyć stronę internetową, która będzie zawierała głównie artykuły i filmy. Zamierzam opublikować filmy na YouTube i korzystać z interfejsu API YouTube na mojej stronie. Zastanawiam się, czy mogę stworzyć taką stronę bez użycia technologii po stronie serwera, czy też potrzebowałbym programowania po stronie serwera (PHP, MySQL itp.), Czy byłoby to bardzo dużo? Jestem nowy w tworzeniu stron internetowych i jako pierwsza strona miałem nadzieję, że zrobię wszystko z technologiami po stronie klienta (HTML, CSS, JavaScript). Czy to możliwe?


title: Jak efektywnie zarządzać produktami pośrednimi?

text: Implementuję preprocesor C w C... Mam trzy funkcje: 1. funkcja zastępująca trigraf 2. Funkcja łączenia linii 3. funkcja usuwania komentarzy Jednak te funkcje działają osobno na plikach, tj. Pierwsza funkcja pobierze plik i zastąpi trigrafy tworzenie pliku temp1 jako wyjście Druga funkcja pobiera plik temp1 jako dane wejściowe i splata wiersze i tworzy kolejny plik temp2. Trzecia funkcja przyjmie temp-file2 jako dane wejściowe, usunie komentarz i utworzy kolejny temp-file3. A teraz główne zadania przetwarzania wstępnego zostaną wykonane na pliku temp-file3, a plik .i zostanie utworzony jako wynik końcowy. Teraz mam 3 opcje: 1. Użyj plików tymczasowych 2. Użyj potoków 3. zamiast pośrednich plików tymczasowych lub potoków użyj stringów (tzn. cały plik tymczasowy 1, 2 i 3 będą trzema dużymi stringami!) Mam trzy wątpliwości ... 1. Wariant 1 wydaje się mniej wydajny niż wariant 2 2. Wariant 2 wydaje się być idealny, ale czy będę ograniczony rozmiarem tej nienazwanej rury? (ponieważ mam **_single process_** tj. funkcje 1 2 i 3 będą wywoływane jeden po drugim) Co jeśli rozmiar wyjściowy temp> całkowita pojemność rury? 3. opcja 3... Czy jest wydajna, łatwa w porównaniu z poprzednimi dwoma? Proszę mi powiedzieć, którą opcję mam wybrać?


title: Co powoduje ograniczenie przepustowości pamięci aplikacji?

text: To było coś, co niepokoiło mnie od jakiegoś czasu: Co powoduje _przepustowość_ pamięci aplikacji? Weźmy na przykład tę potworność komputera, który obliczył 5 bilionową cyfrę pi (a później 10 bilionową cyfrę). Zdziwiło mnie, że wybrali niższą, ale szybszą 98 GB RAM przy 1066 MHz zamiast większego, ale wolniejszego 144 GB przy 800 MHz. Jest to szczególnie zaskakujące, biorąc pod uwagę, że do przechowywania wyników obliczeń używa się macierzy HD o pojemności 22 TB; więcej pamięci RAM oznacza mniejsze zapotrzebowanie na dyski twarde. Może dlatego, że nie piszę aplikacji na serwery HPC, ale jak RAM byłby wąskim gardłem? Czy są jakieś inne aplikacje innych niż HPC, które zwykle napotykają ten problem?


title: Jakiego narzędzia używasz do czytania e-booków technicznych?

text: Uważam e-czytnik za narzędzie do tworzenia oprogramowania i chciałbym poznać opinie na temat czytania technicznych e-booków. Mam pytania takie jak: * Jakie problemy z użytecznością napotkałeś w przypadku e-booków w przeciwieństwie do fizycznych książek, jakie są zalety/wady obu? * Jakie doświadczenia mieli ludzie z przemęczeniem oczu na tabletach/komputerach w porównaniu z czytnikami opartymi na e-ink? * Jakie są konkretne doświadczenia ludzi z Kindle jako technicznym czytnikiem e-booków? Czy rozmiar ekranu wpływa na czytelność? Czy miałeś inne obawy/problemy? * Wszelkie inne doświadczenia/problemy z czytaniem technicznych e-booków... rozdzielczość tekstu/diagramów; możliwość utrzymania otwartej strony podczas odwoływania się do innej itp.? * Jakieś sugestie dotyczące rozwiązań dla któregokolwiek z problemów napotkanych podczas czytania e-booków na urządzeniu z problemem? PS Chciałbym usłyszeć rzeczywiste doświadczenia ludzi i dlaczego/jak uważają, że jakiekolwiek urządzenie jest obecnie doskonałym narzędziem do czytania e-booków.


title: Wszelkie dobre referencje dotyczące nauki C++?

text: Jestem nowicjuszem w programowaniu. Więc bądź bardzo dobrą ręką w C++, od czego powinienem zacząć? Czy ktoś mógłby zasugerować mi jakieś podręczniki i materiały.


title: Minimalizacja zużycia papieru

text: Ostatnio spotkałem się z tym problemem w programie nauczania programowania dynamicznego i szczerze mówiąc nie mam pojęcia, jak określić odpowiedni stan. Otrzymasz **N** (1 <= N <= 70) paragrafów i **M** (1 <= M <= N) cyfr. Każdy akapit **i** wymaga **PL_i** (1 <= PL_i <= 100) wierszy i odniesień co najwyżej do jednej cyfry. Każda figura jest przywoływana dokładnie raz (tj. żadne dwa akapity nie mogą odwoływać się do tej samej figury, a dla każdej figury istnieje akapit, który do niej się odnosi). Każda figura wymaga **PF_i** (1 <= PF_i <= 100) wierszy. Zadanie polega na rozmieszczeniu tych cyfr i akapitów na papierze w kolejności, w jakiej są podane, gdzie jeden papier pasuje co najwyżej do linii **L**. Żaden akapit ani rysunek nie są zbyt duże, aby zmieścić się na jednym papierze. Jeśli akapit **x** umieszczony na papierze **x_p** odnosi się do cyfry **y**, to **y** musi być umieszczone na papierze **x_p - 1** lub **x_p** lub **x_p + 1**. Musimy znaleźć minimalną liczbę wierszy (a tym samym stron) do przydzielenia, aby rozmieścić wszystkie ryciny i akapity. Jakakolwiek pomoc byłaby niezmiernie mile widziana. Z góry dziękuję!


title: Powiadamianie wielu słuchaczy

text: Tworzę aplikację gitarową dla systemu Android i potrzebuję sposobu, aby obiekty `GuitarString` powiadamiały wielu słuchaczy, że właśnie zostały odtworzone. Obejmuje to bieżącą „Aktywność” i wszystkie wystąpienia „GuitarStringView”, które mają go jako „GuitarString” (gitara jest wyświetlana dwukrotnie, powiększona i pomniejszona). Do tej pory radziłem sobie z tym, mając `ArrayList<OnPlayedListener>` na `GuitarString` i każdy `GuitarStringView` lub `Activity` dodaje się do tej listy. Moja klasa `Guitar` to Singleton (na którą niektórzy mogą się krzywić), więc teraz muszę się upewnić, że obiekty usuwają się z tablicy słuchaczy, gdy są usuwane. Więc moje pytanie brzmi, czy to dobre podejście, czy jest jakiś wzorzec, którego powinienem użyć, aby sobie z tym poradzić?


title: Skalowalność korzystania ze zmiennych środowiskowych

text: Właśnie przeniosłem się do świata Ruby on Rails i wraz z nim zostałem wprowadzony do znacznie bardziej liberalnego korzystania ze zmiennych środowiskowych niż to, z czym miałem do czynienia w przeszłości. W szczególności wygląda na to, że istnieje przyjęta konwencja przechowywania kluczy API innych firm i tajnych tokenów jako zmiennych środowiskowych. _UWAGA: to nie jest pytanie dotyczące RoR. Wspominam o tym tylko dla zilustrowania punktu widzenia. Z pewnością widzę korzyści płynące z takiego podejścia; największym z nich jest to, że jedna baza kodu może być identycznie wdrożona na wielu serwerach bez zmiany kodu lub obawy, że aplikacja będzie używać niewłaściwego zasobu. Jednak obawiam się skakania na wagonie zespołu. Po pierwsze, podejście nie wydaje się skalowalne na mojej stacji roboczej (laptopie) ani na serwerach. Jeśli pracuję na 10 różnych stronach internetowych, a każda z nich korzysta z Amazon S3 (na przykład), potrzebuję 10 różnych pojazdów elektrycznych. Zarządzanie będzie trudne: * kolizje nazw są wyraźną możliwością (zwłaszcza jeśli pracuję nad starszymi projektami, nad którymi nie mam pełnej kontroli); * widoczność jest niewyraźna (które pojazdy elektryczne istnieją na docelowej maszynie? które zostały lub mogą zostać wycofane z eksploatacji?); * brak kontroli wersji (kto zmienił EV? kiedy? dlaczego?) Po drugie, jednym z głównych punktów sprzedaży, jak rozumiem, jest to, że używanie EV usuwa poufne dane z repozytorium, gdzie wścibskie oczy mogą je zobaczyć. Wydaje się, że powinno to być problemem dla publicznych repozytoriów, których nie mam. Wszystkie moje repo są prywatne, często z powodu kwestii umownych, takich jak NDA lub prawa własności. Jak to wszystko wygląda w rzeczywistych scenariuszach? Czy to podejście jest lepsze w niektórych sytuacjach niż w innych? Czy są tu inne plusy, które przewyższają moje obawy?


title: Jak cenna i rzadka jest możliwość stworzenia czegoś od podstaw?

text: Niedawno dowiedziałem się, że poprzednia firma internetowa, w której pracowałem przez 8 lat, zostanie prawie zamknięta, z wyjątkiem okazjonalnych aktualizacji i wsparcia istniejących aplikacji. Wróciłem myślami do swoich dni i zdałem sobie sprawę, że jestem naprawdę jedynym programistą, który potrafił budować rzeczy od zera. Zastanawiałem się, jak cenny jest ten zestaw umiejętności i chciałbym usłyszeć Twój wkład. Kiedy mówię buduj rzeczy od podstaw, mam na myśli, że zaczynasz od pustej strony internetowej i bierzesz pomysły i koncepcje klienta w głowie i przekształcasz je w działającą, funkcjonalną aplikację. Jak cenny jest ten zestaw umiejętności? Czy jest to coś, co mogą zrobić wszyscy programiści, czy po prostu uważam za pewnik, że wszyscy programiści mogą tworzyć rzeczy od zera?


title: Płytkie czy głębokie równe, które z nich jest idiomatyczne w Javie?

text: Mam model domeny, w którym używam kilku relacji agregacyjnych, tj. obiekt klasy `A` zawiera zero lub więcej obiektów klasy `B`. Do implementacji używam Javy i taką agregację reprezentuję jako pole typu `List<B>` w `A` i pole typu `A` w `B`. W ten sposób każdy obiekt może być korzeniem drzewa agregacji. Klasy `A` i `B` mogą również zawierać inne **płytkie** pola, tj. pola typu `int`, `float`, `String` i tak dalej. Teraz muszę zdefiniować różne rodzaje metod równości w moim modelu: 1. **Płytka równość** : porównaj dwa wystąpienia „A” porównując tylko jego płytkie pola, tj. pomijając odniesienia do innych obiektów domeny. W tym przypadku interesuje mnie tylko, czy dwa węzły mają tę samą zawartość. 2. **Głęboka równość** : porównaj dwa wystąpienia „A”, porównując jego płytkie pola **i**, porównując rekurencyjnie jego elementy podrzędne. W tym przypadku chcę sprawdzić, czy dwa pełne drzewa są równe. Rozważałem nadpisanie metod `hashCode()` i `equals()` dla klasy `A`, ale nie wiem, czy powinna to być metoda równości płytkiej, czy głębokiej równości. Kiedy już zdecyduję, która z dwóch metod równości jest zaimplementowana jako `A.equals()`, zdefiniuję drugą metodę pod inną nazwą. Jest to ważny wybór, ponieważ metoda `equals()` określa takie rzeczy jak członkostwo w `Zestawie`. Czy zatem jedna z dwóch możliwości (płytka kontra głęboka równość) jest uważana za bardziej idiomatyczny wybór do implementacji metody „równa się” w Javie?


title: ASP.NET MVC — czy M, V i C MVC powinny być jawnie świadome jednostek domeny?

text: Ponieważ to pytanie wydaje się dość subiektywne, zamieszczam je tutaj. Załóżmy, że piszesz własną wersję Stackoverflow przy użyciu ASP.NET MVC, więc istnieją klasy takie jak `Question`, `Answer`, `User` itp. Ponieważ jesteś leniwy, zdecydowałeś się użyć frameworka encji. Tak więc wszystkie klasy wymienione powyżej mają właściwości nawigacyjne: `Question` zna swoje `Answer`, `Answer` zna `User`, który je wysłał itd. Czytałeś wiele książek Martina Fowlera, więc na pewno będziemy mieć warstwę usług, aby zaimplementować tam całą logikę biznesową. Będziesz używać ASP.NET MVC tylko dla funkcji związanych z interfejsem użytkownika i logiką aplikacji. Są 2 pytania: 1. Czy bezpośrednio udostępnisz kontrolerom obiekty `Pytanie`, `Odpowiedź` i inne? 2. Czy zrobisz to samo dla wyświetleń? Zasadniczo nie zamierzam dostarczać interfejsu API REST do mojej aplikacji, ani nie jestem zbyt konserwatywny, aby mieć jakiekolwiek obawy, takie jak „hej, MÓJ WIDOK jest świadomy tego, co to jest „Pytanie”, nie wiem, czy jest złe czy nie, po prostu mi się to nie podoba!”. Szczególnie ciekawi mnie przypadek, w którym klasa `Question` ma pole takie jak `TimePosted` i powiążesz widok `PostNewQuestion` z tą klasą. Wiem, że w przypadku, gdy nie wiążę tego pola z żadną kontrolką na stronie, nie zostanie ono opublikowane, więc ustawię to pole na „null”, gdy otrzymam obiekt po stronie kontrolera. Czy uważa się to za w porządku, czy to zły pomysł? Dwa przeciwstawne podejścia, o których myślę, to „używanie DTO/ViewModels wszędzie” i „wtf, mniej klas jest zawsze lepiej!” Jak myślisz, co jest _właściwym_ podejściem? (Wiem, że nie ma bezpośredniej odpowiedzi, więc w rzeczywistości pytanie brzmi „co należy wziąć pod uwagę, aby zdecydować, czy użycie DTO/ViewModels/Co jeszcze jest _dobre_ w architekturze aplikacji?”) Należy również pamiętać, że rozważamy bardzo uproszczony klon Stackoverflow, a więc: 1. Jest to projekt wyłącznie internetowy (nie będziemy ujawniać REST API ani czegokolwiek innego) 2. Są użytkownicy, pytania, odpowiedzi, tagi i funkcje wyszukiwania (brak wybitnej logiki biznesowej) 3. Są np. 100 aktywnych użytkowników dziennie (bez specjalnych wymagań wydajnościowych) 4. Kod powinien być czytelny i nie powinno być żadnych niespodzianek ani miejsc szczególnie interesujących w przypadku, gdy nowy członek dołączy do zespołu deweloperów. Możesz również wyrazić swoje przemyślenia na wypadek zmiany któregokolwiek z pierwszych 3 punktów - "klient chce teraz, aby nasza usługa pozwalała na 10000 jednoczesnych użytkowników" lub "teraz musimy zezwolić każdemu użytkownikowi na publikowanie tylko raz na 15 minut" itp. Dziękuję!


title: Przekazywanie zależności do klasy kontrolera

text: Szukam podejścia do następującego problemu: Mam bibliotekę wielokrotnego użytku. Zawiera klasę kontrolera w sensie MVC. Załóżmy, że nazywa się to `UserAdministrationController` i służy do edycji użytkowników. Ta klasa wymaga obiektu implementującego `IUserStorage` do przechowywania swoich danych. Biblioteka nie musi znać szczegółów działania tego obiektu. Teraz chcę napisać aplikację zawierającą bibliotekę. W nim przedstawię implementację `IUserStorage`. Aby to utworzyć, będę musiał przekazać mu pewne zależności, takie jak obiekt bazy danych i inne rzeczy, o których moja aplikacja wie tylko w czasie wykonywania. Ale jak przekażę ten obiekt z mojej aplikacji do biblioteki? Nie tworzę instancji `UserAdministrationController` bezpośrednio z mojej aplikacji; jest tworzony przez samą bibliotekę. Mam nadzieję, że to ma sens. Staram się, aby mój opis był abstrakcyjny, a nie specyficzny dla konkretnego frameworka lub języka.


title: Radzenie sobie z wulgaryzmami w kodzie źródłowym

text: Jak ludzie radzą sobie z wulgaryzmami w kodzie źródłowym i komentarzami VCS. Zachować czy usunąć? A co z miękkimi przekleństwami, takimi jak WTF czy Arrgggh? Czy jest to nieprofesjonalne, obraźliwe, czy coś, co należy zlekceważyć?


title: Czy systemy kontroli wersji FOSS działają w przedsiębiorstwach?

text: Załóżmy, że duża korporacja planuje zastąpić dotychczasowy system kontroli wersji. Powiedzmy, że rozważa tylko systemy od głównych dostawców, które kosztują setki tysięcy dolarów, ponieważ mają „wsparcie”. Czy kontrola wersji w środowisku korporacyjnym musi być droga? Czy Twoja średnia/duża korporacja używa FOSS VCS, takiego jak SVN/Git/Mercurial? Jakie było doświadczenie? Myślę, że nie musi to być drogie, ponieważ jest tak wiele darmowych opcji i prawdopodobnie istnieją firmy, które zapewniają płatne wsparcie dla FOSS VCS, jeśli jest to główny problem. Nie zamierzam tego pytania porównywać z VCS ani decydować, który jest najlepszy, ale po prostu zrozumieć doświadczenia z VCS w korporacyjnym środowisku IT.


title: jak napisać test jednostkowy dla bramki logicznej AND

text: Uczę się o testach jednostkowych i mam wątpliwości co do testu, który chcę wykonać, aby zaimplementować bramkę logiczną "AND" A B A^B 0 0 0 0 1 0 1 0 0 1 1 1 jak mogę przetestować metodę to działa jak brama AND?, czy to jest obiekt próbny? czy odgałęzienie? Dzięki, proszę podać pseudokod,


title: Jaka jest logika używania różnych strzałek (-> <-) w Haskell?

text: Ostatnio myślałem o projektowaniu języka i czytałem kilka nowych rzeczy w Haskell (zawsze miłe źródło inspiracji). Uderza mnie wiele dziwnych zastosowań lewego `<-` i prawego `->` operatorów strzałek. Wydaje mi się, że wiele różnych zastosowań pochodzi ze stanu techniki w matematyce i innych językach dotyczących składni strzałek, ale czy jest jakiś inny powód, aby nie próbować uczynić tego użycia bardziej spójnym lub przejrzystym? Może po prostu nie widzę pełnego obrazu? Strzałka w prawo jest używana jako konstruktor typu dla funkcji, separator między argumentem a treścią wyrażeń lambda, separator dla instrukcji case i jest używana w widokach wzorców, które mają postać `(e -> p)`. Strzałka w lewo jest używana w notacji `do` jako coś podobnego do wiązania zmiennych, w wyrażeniach listowych dla tego samego (zakładam, że są takie same, ponieważ wyrażenia listowe wyglądają jak skondensowane bloki `do`) oraz w strażnikach wzorców, które mają postać `(p <-e)`. Teraz ostatnie przykłady dla każdej strzały są po prostu głupie! Rozumiem, że strażnicy i widoki służą różnym celom, ale mają niemal identyczną formę, tyle że jedno jest lustrem drugiego! Zawsze uważałem też, że to dziwne, że zwykłe funkcje są definiowane za pomocą `=`, a lambdy za pomocą `->`. Dlaczego nie użyć strzałki dla obu? Czy równe dla obu? Staje się to również dość dziwne, gdy weźmie się pod uwagę, że w celu porównania jakiejś obliczonej wartości ze stałą jest prawie pół tuzina sposobów na zrobienie tego: test x = x == 4 f x = jeśli test x to g x inaczej h x f' 4 = g 4 f' x = h x f'' x@(test -> prawda) = g x f'' _ = h x f''' x | prawda <- test x = g x | w przeciwnym razie = h x f'''' x = case (x) of 4 -> g x _ -> h x Różnorodność jest jednak przyprawą kodu źródłowego, prawda?


title: Linie modów w kodzie Java

text: Często w kodzie C (i niektórych innych językach) widziałem sekcję w komentarzach najwyższego poziomu dla linii modów. Obejmują one datę dokonania modyfikacji w pliku, użytkownika, który dokonał modyfikacji oraz krótki opis tego, co zostało zmienione. Nie widziałem jeszcze odpowiednika tego w Javie. Myślę, że ta informacja jest przydatna, zwłaszcza gdy próbuję wyśledzić błędy w kodzie, którego nie napisałem. Czy to dlatego, że kod Java jest często pod kontrolą wersji, czy są inne powody? Czy są jakieś sugestie, jak zawrzeć informacje w pliku kodu?


title: Jak za pomocą Javy wyodrębnić schemat JSON z danych bez korzystania z dostępnych bibliotek?

text: Problem w wyodrębnianiu schematu z dowolnych danych polega na tym, że mogą one zawierać inne obiekty JSON, które z kolei mają inne. Należy również rozpoznać typy wartości w parze nazwa-wartość. Jak to zrobić skutecznie w Javie?


title: Jak zakodować funkcję, która ma być używana z wywołaniem zwrotnym lub bez niego w JavaScript?

text: Zastanawiam się, jak (jeśli to możliwe) mogę stworzyć tę samą funkcję, z dokładnie taką samą funkcjonalnością, ale do użycia z wywołaniem zwrotnym lub bez niego. Oto przykład z niedziałającym "efektem pożądanym": function getUsers(req, res, onComplete) { // Jeśli użytkownik nie jest zalogowany, wyślij błąd. W innym przypadku wyślij dane if (!req.session.session_id) { if (typeof onComplete === 'funkcja') { onComplete({error: true, msg: 'Nie jesteś zalogowany'}); } else { res.json({error: true, msg: 'Nie jesteś zalogowany'}); } } else { //Kolejny podobny kod... } } To nie działa, ponieważ jeśli wywołam "getUsers(req, res)", typeof onComplete jest zawsze funkcją, więc nie mogę wykryć, kiedy dzwonię z wywołaniem zwrotnym lub bez. Dokładny problem polega na tym, że mogę wywołać tę funkcję z wnętrza mojego kodu, z wywołaniem zwrotnym (normalne wywołanie, takie jak `getUsers(req, res, function(cb) {//Zrób coś z cb});` LUB mogę to wywołać funkcja z wywołania AJAX na mojej stronie, np. `http://localhost:8080/api/getUsers`, co w tym przypadku jest wtedy, gdy nie działa. W ostatnim przypadku otrzymuję `typeof onComplete === 'function '` jako prawda, więc nigdy nie wykonam części else.Przypuszczam, że "żądanie" wykonane przez wywołanie http ma więcej parametrów niż req&res, i to jest powód, dla którego onComplete jest funkcją, a nie niezdefiniowaną.Zwykłe Wywołanie AJAX wygląda tak (javascript po stronie klienta): function getAllUsers() { $.ajax({ url: '/api/getUsers', type: 'GET', success: function(data) { // Usuń element i ustaw jako główny temat przypisany na serwerze printUsers(data.users[0]);}, błąd: function(XMLHttpRequest, textStatus, er rorThrown) { alert(XMLHttpRequest.responseText); } }); } A trasa zdefiniowana w config.json mojego Node.JS do wywołania końcowej funkcji wygląda tak: {"path": "/api/getUsers", "method":"get", "callback": "api #pobierzUżytkowników"},


title: Jak powiązana jest teoria kodowania/informacji z sieciami komputerowymi?

text: Biorę klasę sieciową (komunikacja danych) w nadchodzącym semestrze. Na wielu kursach na moim dyplomie z informatyki w książkach brakuje treści matematycznych. Nie jestem czarodziejem matematyki, ale myślę, że matematyka ma potencjał, by dać o wiele głębsze zrozumienie różnych pojęć, ale wymaga więcej pracy. Czy dobrym pomysłem jest skupienie się na teorii informacji (znalezienie fajnej książki przez badacza z Bell Labs) i użycie bardziej „wysokiego poziomu” książki, takiej jak Sieć komputerowa, Podejście odgórne jako tekstu uzupełniającego?


title: Dlaczego konieczne jest przetestowanie mojej aplikacji na iPhone'a na rzeczywistym urządzeniu iPhone

text: Stworzyłem jedną aplikację na iPhone'a i teraz chcę ją znaleźć w App Store. Tak wielu moich znajomych maniaków iOS powiedziało mi, żebym przetestował go na rzeczywistym urządzeniu, tj. Na iPhonie. Zastanawiam się więc, dlaczego konieczne jest przetestowanie mojej aplikacji na iPhone'a na rzeczywistym urządzeniu iPhone, chociaż (Apple) podali "symulator", który jest prawie taki sam jak moje urządzenie?


title: Czy powszechne jest tworzenie prototypów w języku wyższego poziomu?

text: Obecnie zastanawiam się nad pomysłem rozpoczęcia projektu, który znacznie przekracza moje obecne umiejętności programowania w języku, w którym mam bardzo małe doświadczenie w świecie rzeczywistym (C). Czy warto byłoby tworzyć prototypy w języku wyższego poziomu, z którym jestem bardziej zaznajomiony (takim jak Perl/Python/Ruby/C#) tylko po to, abym mógł rozpocząć ogólny projekt? Ostatecznie produkt końcowy jest wrażliwy na wydajność (jest to silnik bazy danych), stąd wybór C, ale obawiam się, że nieznajomość C spowoduje, że stracę las na rzecz drzew. Szukając podobnych pytań, zauważyłem, że jeden kolega wspomniał, że programiści kiedyś prototypowali w Prologu, a potem wykręcali to w asemblerze.


title: Korzystanie z wymiany, aby uzyskać możliwe wyniki, aby następnie przeszukać OGROMNĄ ilość danych

text: Mam tabelę bazy danych zawierającą 40 milionów rekordów (tabela A). Każdy rekord zawiera ciąg, który użytkownik może wyszukać. Mam również tabelę z listą zamienników znaków (tabela B), tj. i = Y, I = 1 itd. Muszę być w stanie wziąć ciąg, którego szuka użytkownik, iterować przez każdą literę i tworzyć tablicę każdego możliwy wynik (ciąg użytkowników, a następnie każdy wynik z użyciem alternatywnych liter). Muszę sprawdzić alternatywy dla małych i wielkich liter w słowie Ciąg wyszukiwania nie może być dłuższy niż 10 znaków. Używam PHP i bazy danych MySQL. Czy ktoś ma jakieś przemyślenia/artykuły/wskazówki dotyczące robienia tego w efektywny sposób?


title: Czy istnieją języki programowania, które umożliwiają wykonywanie arytmetyki na typach?

text: Z ciekawości, czy istnieją języki, które pozwalają na ustawianie arytmetyki typów w celu tworzenia nowych typów? Coś takiego: interface A { void a(); nieważne b(); } interfejs B { nieważne b(); nieważne c(); } interfejs C = A i B; // ma interfejs b() D = A | B; // posiada interfejs a(), b() i c() E = (A & B) ^ B; // ma c() Wiem, że w niektórych językach te idee mogą być wyrażane (np. Java ma `List<Comparable & Serializable>` dla unii interfejsów), ale nigdy nie słyszałem o języku obsługującym arytmetykę typów . Dziękuję!


title: Jak przekonać moich użytkowników, aby nie korzystali ze szkicu?

text: Niedawno pracowałem nad prototypem nowego systemu przy użyciu Sketchflow, a teraz niektórzy kluczowi interesariusze naciskają na naszkicowany wygląd w produkcie końcowym. Co gorsza, osoby oglądające prototyp zostały poproszone o przekazanie opinii na temat naszkicowanego wyglądu za pomocą dość wiodącego pytania w ankiecie, na które 80% odpowiedzi było pozytywnych. Jest to aplikacja korporacyjna, która będzie przeznaczona głównie dla klientów wewnętrznych, ale jest również przeznaczona do użytku przez niektórych klientów zewnętrznych. Główne powody, dla których uważam, że to zły pomysł, to: * Nie wygląda na dopracowane ani profesjonalne * Znaczny wysiłek związany ze skórowaniem rzeczywistej aplikacji w stylu szkicowym * Styl szkicowany nie zapewnia efektywnego wykorzystania rzeczywistego ekranu -posiadłość, w której starałem się znaleźć atrakcyjność, a jedyne, co mogę wymyślić, to to, że ludzi pociąga jej prostota — zwłaszcza w porównaniu z istniejącymi systemami zastąpić. Czy ktoś może mi wskazać, dlaczego używanie wyglądu i stylu szkicu jest złym pomysłem? Idealnie coś opartego na badaniach interfejsu użytkownika. Martwię się, że mój głos nie zostanie wysłuchany, jeśli nie wskażę czegoś konkretnego. **[Edytuj]** Powinienem prawdopodobnie dodać, że trudność ze skórowaniem aplikacji jest potęgowana przez fakt, że ma ona być dostarczana jako jeden lub więcej składników webpart Silverlight w witrynie Sharepoint. Uzyskanie spójnego naszkicowanego wyglądu i stylu w obu technologiach może być bardzo trudne. **[Edytuj]** Na wypadek, gdyby ktoś nie był pewien, jak wygląda prototyp Sketchflow (a tym samym o co proszą osoby, o które pytają), zasadniczo prosi o aplikację produkcyjną, która ma wygląd szkieletu szkicu ołówkiem i czuć.


title: Jak wykorzystać edytor na żywo

text: Myślałem o środowisku edycji na żywo, w którym kod / plik źródłowy jest synchronizowany, aby zmiany wprowadzone przez jednego użytkownika były przenoszone na wszystkich innych edytujących plik. Coś jak Google Wave, ale na kod. Czy takie środowisko może być lepsze dla kodu, ponieważ zmiany są udostępniane natychmiast? (oczywiście z kontrolą wersji) Czy ktoś próbował (lub miał potrzebę) używania współdzielonego środowiska dla kodu? Bardzo chciałbym usłyszeć od kogoś, kto używał takiego edytora.


title: Ścieżka języków od szkoły średniej do kariery

text: W przyszłym roku będę studentem pierwszego roku, który programuje od około 3 lat. Obecnie dość dobrze znam Javę, ale patrzę w przyszłość. Jakich języków powinienem uczyć się w szkole średniej, aby znaleźć się na szczycie rynku pracy po ukończeniu studiów?


title: Jakie są konsekwencje posiadania niepotrzebnych odniesień i zastosowań?

text: Jestem trochę schludnym dziwakiem i staram się zachować moje projekty, czyszcząc referencje i używając w każdej klasie, aby zachować tylko to, co jest faktycznie używane. Jaki inny argument mógłbym wysunąć (oprócz uspokojenia nerwu OCD), by trzymać się podstaw? Myślę głównie o referencjach systemowych, każde odniesienie do pracy niestandardowej spowoduje wiele problemów ze zgodnością wsteczną. Czy ślad wydania jest większy? Czas kompilacji dłuższy?


title: InterviewStreet (Vertical Sticks) to tylko wskazówka, od czego zacząć

text: Mając spory problem z tym pytaniem w interviewstreet.com: Mając tablicę liczb całkowitych Y=y1,...,yn, mamy n odcinków takich, że końcami odcinka i są (i, 0) oraz (i, yi) . Wyobraź sobie, że z góry każdego segmentu wystrzeliwany jest poziomy promień w lewo, który zatrzymuje się, gdy dotknie innego segmentu lub trafi w oś y. Konstruujemy tablicę n liczb całkowitych, v1, ..., vn, gdzie vi jest równe długości promienia wystrzelonego ze szczytu segmentu i. Definiujemy V(y1, ..., yn) = v1 + ... + vn. Na przykład, jeśli mamy Y=[3,2,5,3,3,4,1,2], to v1, ..., v8 = [1,1,3,1,1,3,1, 2], jak pokazano na poniższym rysunku: Dla każdej permutacji p [1,...,n] możemy obliczyć V(yp1, ..., ypn). Jeśli wybierzemy jednostajnie losową permutację p [1,...,n], jaka jest oczekiwana wartość V(yp1,...,ypn)? Format wejścia Pierwszy wiersz wejścia zawiera jedną liczbę całkowitą T (1 <= T <= 100). Poniżej znajdują się przypadki testowe T. Pierwszy wiersz każdego przypadku testowego to pojedyncza liczba całkowita N (1 <= N <= 50). Kolejny wiersz zawiera dodatnie liczby całkowite y1, ..., yN oddzielone pojedynczym odstępem (0 < yi <= 1000). Format wyjściowy Dla każdego wyjściowego przypadku testowego oczekiwana wartość V(yp1, ..., ypn), zaokrąglona do dwóch cyfr po przecinku. Poważnie nie chcę żadnego kodu ani algorytmu pseudokodu. Chcę tylko wiedzieć, czy istnieje jakaś **konkretna** teoria informatyczna, czy jest to po prostu coś, co muszę rozgryźć za pomocą niestandardowej metody?


title: Czy firmy programistyczne zabraniają autorom kodu przypisywania sobie zasług za ich pracę? czy autorzy kodu mają coś do powiedzenia?

text: Firma, w której pracuję, zdecydowała, że kod źródłowy zestawu narzędzi, które udostępniają klientom, będzie również udostępniany tym klientom. Ponieważ jestem autorem tego kodu źródłowego i ponieważ wiele plików z kodem źródłowym zawiera moje imię i nazwisko w ramach komentarzy dokumentacji deklaracji klasy, zostałem poproszony o usunięcie informacji o autorze z plików kodu źródłowego, mimo że nagłówki licencji na początku każdego pliku źródłowego wyjaśnij, że firma jest właścicielem kodu. Ponieważ jestem stosunkowo nowy w tej branży, zastanawiałem się, czy uważa się za typowe dla firm, które decydują się na udostępnianie kodu źródłowego osobom trzecim, że nie pozwalają autorom kodu na uznanie za ich pracę, nawet jeśli jest jasne, że autor kodu nie jest właścicielem kodu. Czy mam rację zakładając, że nie mam nic do powiedzenia w tej sprawie?


title: Schemat pokazujący odpowiedzialność za kod

text: Czy ktoś wie, jak wizualnie zilustrować, w jaki sposób przepływ kontroli w kodzie przechodzi między kodem wyprodukowanym przez różne grupy i jak wpływa to na ilość kodu, który musi być starannie napisany/przejrzany/przetestowany, aby właściwości systemu zostały zachowane? * * * To, co staram się pomóc ludziom w wizualizacji, to argumenty w postaci: 1. Aby właściwość P była zachowana, programiści nd muszą pisać kod aplikacji, Ca, bez pewnych rodzajów błędów, a opiekunowie nm muszą upewnić się, że kod nadal nie zawiera tego rodzaju błędów przez cały okres istnienia projektu. 2. Możemy zredukować poziom błędów poprzez edukację programistów nd i opiekunów nm. 3. Aby mieć pewność, że nieruchomość jest aktualna, specjaliści ns nadal muszą testować lub sprawdzać |Ca| linii kodu i kontynuuj testowanie/sprawdzanie zmian przez opiekunów nm. 4. Alternatywnie moglibyśmy być pewni, że P jest słuszne, jeśli wszystkie ścieżki kodu, które mogą naruszać P, przeszły przez kod narzędzia, Ct, napisany przez naszych specjalistów. 5. W naszym przypadku * same zestawy testów nie dają pewności, że P zawiera * nd ≫ ns * nm > ns * |Ca| ≫ |Ct| więc pisanie i utrzymywanie Ct jest ekonomiczne, uwalnia naszych programistów od martwienia się o inne rzeczy i zmniejsza ciągłe zaangażowanie naszych specjalistów w edukację. lub te warunki nie są spełnione, dlatego preferowane jest skupienie się na edukacji i testowaniu. * * * # Przykład 1 Jako konkretny przykład załóżmy, że chcemy się upewnić, że nasza usługa sieciowa generuje tylko prawidłowe dane wyjściowe JSON. Nasz serwis internetowy udostępnia kilka operatorów zapytań i mutacji, które można skomponować w interesujący sposób. Moglibyśmy spróbować edukować każdego, kto utrzymuje te operacje, na temat składni JSON, znaczenia zgodności i dostępnych bibliotek, aby podczas zapisu w buforze wyjściowym każda możliwa sekwencja dołączeń skutkowała poprawnym składniowo JSON. Alternatywnie nie udostępniamy uchwytu strumienia wyjściowego w kodzie aplikacji, a zamiast tego udostępniamy ujście JSON, aby każda ścieżka kodu, która zapisuje odpowiedź, była kierowana przez ujście JSON, które jest napisane i utrzymywane przez specjalistę znającego składnię JSON i potrafiącego używaj dobrze napisanych bibliotek, aby generować tylko prawidłowe dane wyjściowe. # Przykład 2 Musimy się upewnić, że usługa, która otrzymuje adres URL z niezaufanego źródła i próbuje pobrać jego zawartość, nie ujawni wrażliwych plików z systemu plików, takich jak `file:///etc/passwd`. Jeśli istnieje jeden standardowy sposób, którego programista zaznajomiony z bibliotekami języka aplikacji użyłby do pobierania adresów URL, który ma domyślnie wyłączony dostęp do systemu plików, to po prostu uczenie programistów w zakresie standardowego mechanizmu i testowanie tego pliku w niektórych przypadkach kończy się niepowodzeniem. nakłady prawdopodobnie będą wystarczające.


title: Czy można wykorzystać programowanie funkcjonalne do stworzenia pełnej aplikacji korporacyjnej?

text: Dopiero zaczynam się uczyć programowania funkcjonalnego (FP). Pochodzę ze świata OOP, gdzie wszystko jest obiektami, a większość z nich jest zmienna. Trudno mi owinąć się wokół koncepcji, że funkcje nie mają skutków ubocznych. Jeśli coś nie jest zmienne, w jaki sposób zwykłe obiekty, takie jak Pracownik lub Osoba, są reprezentowane w FP. Czy FP można wykorzystać do stworzenia pełnoprawnej aplikacji korporacyjnej?


title: Jaką redundancję/niezawodność powinno wdrożyć złożone oprogramowanie?

text: **W centrum tego pytania:** Niektóre programy wykonują „dodatkową pracę” w celu zwiększenia szansy na „ostatecznie udany/zadowalający” wynik, pomimo jednego lub więcej błędów wewnętrznych w oprogramowaniu, co wymaga dłuższego czasu wykonania, gdy te błędy się zdarzają. Wszystko to dzieje się bez wiedzy użytkownika, jeśli wynik się powiódł. **Definicja złożonego oprogramowania:** * Zawiera kod napisany (przyczyniony przez) przez ponad 10 programistów w ciągu swojego życia i nie napisany w tym samym czasie * Zależy od ponad 10 zewnętrznych bibliotek, każda z zastrzeżeniami * Typowe oprogramowanie zadanie (w celu wygenerowania pożądanego przez użytkownika wyniku) wymaga 10 lub więcej parametrów wejściowych, przy czym większość z nich ma wartości domyślne, ale można je skonfigurować, jeśli użytkownik potrzebuje kontroli. * Co najważniejsze, oprogramowanie, które ma odpowiednią złożoność w stosunku do wykonywanego zadania, tj. _nie jest niepotrzebnie skomplikowane_. _Edytowane:_ Co to jest złożone? Proszę zobaczyć Istnieje duża różnica między złożonymi a skomplikowanymi. (bezpośredni link) **Definicja nadmiarowości/solidności** _w tym pytaniu_ : _(Dodana odporność na podstawie komentarzy)_ * Jeśli zadanie oprogramowania nie powiodło się, gdy używany był bieżący zestaw parametrów, wypróbuj inne parametry. * Oczywiście, musi istnieć wewnętrzna wiedza, że te „różne” parametry używają innej ścieżki kodu, co może skutkować innym (miejmy nadzieję lepszym) wynikiem. * Czasami te różne ścieżki kodu są wybierane na podstawie obserwacji bibliotek zewnętrznych. * Na koniec, jeśli faktycznie wykonane zadanie nieznacznie różni się od specyfikacji użytkownika, użytkownik otrzyma raport z wyszczególnieniem rozbieżności. * Na koniec, podobnie jak 10 plus konfigurowalne parametry, można również konfigurować nadmiarowość i raportowanie. Przykład takiego oprogramowania: * Migracja bazy danych * Baza danych biznesowych * Baza danych kontroli źródeł itp. * Konwersja wsadowa między dokumentem Word a dokumentem OpenOffice, PowerPoint i OpenOffice Draw, itp. * Automatyczne tłumaczenie całej strony internetowej * Automatyczna analiza pakietu oprogramowania , takich jak Doxygen, ale gdzie analiza musi być bardziej niezawodna (tj. nie tylko narzędzie dokumentacji) * Komunikacja sieciowa, w której pakiety mogą zostać utracone i spodziewana jest pewna liczba ponownych prób _To pytanie zostało pierwotnie zainspirowane: Jak radzić sobie z celowo złym kod? ale teraz koncentruje się tylko na jednej z przyczyn rozrostu oprogramowania. To pytanie nie dotyczy żadnych innych przyczyn rozrostu oprogramowania, takich jak dodawanie nowych funkcji._ _Prawdopodobnie powiązane:_ * _Jak radzić sobie ze złożonymi kodami w (ogromnych) projektach_ * _Jak ludziom udaje się pisać i utrzymywać niezwykle złożone i trudne do przeczytać kod?_


title: Jak powinienem przejść do zwinnego/iteracyjnego cyklu programistycznego z obowiązkowymi 3-tygodniowymi wdrożeniami?

text: Jestem częścią małej czteroosobowej drużyny i jestem nieoficjalnym liderem zespołu (w zasadzie prowadzę wszystko oprócz tytułu). Byliśmy w dużej mierze środowiskiem „kowbojskim”, bez architektury i struktury, a każdy robił swoje. Wcześniej nasze wdrożenia produkcyjne odbywały się co kilka miesięcy bez ustalonego harmonogramu, ponieważ rzeczy były dodawane/usuwane z listy zadań każdego programisty. Ostatnio nasz CIO (półtechniczny, ale nie tak naprawdę programista) zdecydował, że będziemy przeprowadzać wdrożenia co trzy tygodnie; z tego powodu od razu pomyślałem, że przyjęcie iteracyjnego procesu rozwoju (niekoniecznie w pełni rozwiniętego Agile/XP, co byłoby ogromną rzeczą, aby przekonać wszystkich innych do zrobienia), znacznie pomoże w prawidłowym zarządzaniu oczekiwaniami, więc nie ma to naciągany pomysł, że każda nowa funkcja zostanie wykonana w ciągu trzech tygodni. Największą przeszkodą IMO jest to, że nie mamy obecnie ŻADNEGO podejścia do rozwoju (między innymi brak CI lub zautomatyzowanych testów). Nie używamy nawet Wodospadu, używamy „Powiedz programiście X, aby wykonał zadanie, oczekuj, że zrobi wszystko i załatwi to”. Czy są jakieś wskazówki, które pomogłyby mi zacząć sprowadzać nas do podejścia iteracyjnego i A) Zaangażować innych programistów i B) Pozyskać kierownictwo do zrozumienia, jak działa iteracja? Do tej pory mój pomysł polegał na próbie skonfigurowania serwera CI i zautomatyzowania naszego procesu budowania (w tej chwili po prostu zbudowanie aplikacji i umieszczenie jej na naszym serwerze deweloperskim zajmuje około 10-20 minut), ponieważ wypychanie testów i/lub TDD będzie spotkać się w tym momencie z DUŻYM oporem i stale zmuszać nas do dzielenia większych projektów na mniejsze części, które można by wykonać iteracyjnie w cyklu trzytygodniowym; moim jedynym zmartwieniem jest to, że o ile się nie mylę, zwinny/iteracyjny proces może, ale nie musi **wydać** oprogramowanie (w zależności od zakresu projektu, możesz mieć „działające” oprogramowanie po trzech tygodniach, ale nie ma wystarczająco dużo, aby umożliwić użytkownikom korzystanie z tego), podczas gdy myślę, że oczekiwanie od kierownictwa jest takie, że zawsze będzie coś „gotowego do działania” za trzy tygodnie, a rozłączenie może spowodować problemy. W tej notatce, czy jest jakaś literatura lub odniesienia, które wyjaśniają podejście zwinne/iteracyjne _z biznesowego punktu widzenia_? Wszystko, co widziałem, skupia się tylko na programistach, jak to zrobić, ale nic nie wydaje się opisywać tego z perspektywy faktycznego uzyskania poparcia od ludzi biznesu.


title: Jakie są główne zalety i wady parsowania LL i LR?

text: Budując parser do języka programowania, co zarobię, a co straciłem wybierając jeden lub drugi?


title: Narzędzie do testowania opinii/raportowania?

text: Zastanawiam się nad stworzeniem wtykowego modułu testów i oceny. To narzędzie będzie używane zwłaszcza w projektach aplikacji desktopowych do zgłaszania i rejestrowania błędów, błędów, brakujących funkcji i sugestii testerów. Narzędzie zostanie podłączone do aplikacji poprzez umieszczenie małej ikony w samej aplikacji. Po naciśnięciu widoczne będzie narzędzie, w którym użytkownik może tworzyć wpisy dotyczące aplikacji. Czy istnieje już takie narzędzie? Nie mówię o testowaniu interfejsu użytkownika przy okazji. Na przykład, to narzędzie może mieć formularz składający się z * Nazwa strony * Informacje o środowisku * Typ wpisu (może to być błąd, propozycja funkcji, sugestia) * Wiadomość * Informacje o użytkowniku (imię i nazwisko, kontakt itp.) * Data Myślę, że takie narzędzie może bardzo pomóc testerom w przygotowaniu raportów. Deweloperzy mogą lepiej zrozumieć problem i śledzić wszystkie raporty.


title: Sortowanie miesięcy z predefiniowaną kolejnością?

text: Chcę posortować miesiące w roku, zaczynając od dowolnego miesiąca, ale styczeń musi pojawić się po grudniu, jeśli styczeń nie jest punktem początkowym. Czy mogę to zrobić w tablicy, czy potrzebuję do tego specjalnej struktury danych lub algorytmu?


title: Symbol atrybutu projektu języka OOP

text: Projektuję język i zastanawiam się, jakiego znaku (lub ciągu) użyć do reprezentowania, że coś jest atrybutem czegoś innego. We wszystkich używanych przeze mnie językach odbywa się to za pomocą kropki - `my_class_instance.attribute`. Jednak w tym języku chcę mieć to, co zwykle byłoby metodami jako cukier składniowy dla normalnych funkcji, na przykład: x.f(y, z).g(a, b).h(p, q) to to samo, co x = f(x, y, z) x = g(x, a, b) x = h(x, p, q) Jednakże, jeśli użyję również `.`, aby pokazać, że atrybut należy do klasy, którą myślę to będzie mylące, więc szukam innego symbolu do tego celu (lub innego rozwiązania). Obecnie myślę, że powinienem użyć albo apostrofu - `instance'attribute` \-, który pokazuje własność w jasny sposób, ale oznacza, że nie może być używany dla łańcuchów, a znak - `instance`attribute` \- rodzaj wygląda jak apostrof, który jest dobry w tym sensie, że pokazuje własność, ale zły w tym sensie, że można go pomylić z apostrofem i jest rzadziej wpisywany, a zatem prawdopodobnie wolniej się go wpisuje (i brakuje go na niektórych klawiaturach). Ewentualnie, czy są jakieś symbole, którymi mógłbym zastąpić kropkę używaną w funkcji inplace cukru składniowego wywołującego coś?


title: php - automatycznie wypełnij zmienną członka modelu z tabeli bazy danych

text: Utknąłem na bardzo starej, dużej stronie internetowej, którą muszę wprowadzić kilka modyfikacji. Nie mogę użyć ani zintegrować nowego frameworka MVC, ponieważ aktualna witryna jest przestarzała z niektórymi niestandardowymi kodami wykonanymi dawno temu. Piszę niestandardową klasę odbicia dla tabeli użytkownika w bazie danych, ale uważam, że łatwo jest pracować nad tworzeniem modelu, gdy parametr przeszedł lub klucz podstawowy i wypełnił zmienne składowe, a następnie używał ich w kodzie. na przykład $user= nowy użytkownik($user_id); a następnie, jeśli potrzebuję wieku, mogę użyć if($user->age > 18) Aby to zrobić, możesz powiedzieć, że łatwo jest po prostu utworzyć metodę konstruktora, wybrać i przypisać je do zmiennych składowych .. jednak trudna część jest Chcę 1. Nawet projekt tabeli bazy danych został zmieniony Chcę, aby zostały odzwierciedlone w kodowaniu bez zmiany kodu, tj. jeśli dodamy nowe pole do tabeli bazy danych, chcę, aby było wywoływane za pomocą `$user->new_field;` bez dotykania kodu. (Wiem, że Yii może to zrobić, ale nie mogę używać Yii, ponieważ muszę napisać całą funkcjonalność witryny, jeśli muszę przejść do frameworka) 2. jeśli to możliwe, przypisz je do zmiennych składowych z typem danych tj. Strings, Int etc czytanie ich z bazy Jak zbudować bazę modelu na podstawie powyższego (właściwie metoda konstruktora)?


title: Motywacja i wykorzystanie konstruktorów ruchów w C++

text: Ostatnio czytałem o konstruktorach przenoszenia w C++ (patrz np. tutaj) i staram się zrozumieć, jak działają i kiedy należy ich używać. O ile rozumiem, konstruktor przenoszenia służy do łagodzenia problemów z wydajnością spowodowanych kopiowaniem dużych obiektów. Na stronie wikipedii czytamy: „Przewlekły problem z wydajnością w C++03 to kosztowne i niepotrzebne głębokie kopie, które mogą wystąpić niejawnie, gdy obiekty są przekazywane przez wartość”. Zwykle radzę sobie z takimi sytuacjami *, przekazując obiekty przez referencję, lub * używając inteligentnych wskaźników (np. boost::shared_ptr) do przekazywania obiektu (inteligentne wskaźniki są kopiowane zamiast obiektu). W jakich sytuacjach powyższe dwie techniki są niewystarczające i wygodniejsze jest użycie konstruktora ruchu?


title: Co to jest strumień i jak działa?

text: Podobnie jak w przypadku strumienia danych, może to być strumień we/wy, strumień pamięci, strumień plików lub cokolwiek innego. Rozumiem, że jest to jakiś strumień bajtów, który można odczytać, aby w razie potrzeby przeanalizować bardzo duże ilości danych, ale nie rozumiem, jak to działa. Czy można „przeoczyć” dane ze strumienia, jeśli zaczniesz je czytać zbyt późno? czy to czeka na ciebie? Wiele samouczków, które znajduję w Internecie, mówi tylko o tym, jak korzystać ze strumienia, ale tak naprawdę nie wyjaśnia, jak to działa, jeden samouczek wyjaśniał to jak rzeka, ale to po prostu bardziej mnie dezorientuje; woda płynąca w rzece nie czeka, co znowu mnie sprowadza; co jeśli przeczytam to za późno? Czy ktoś może mi wyjaśnić tę koncepcję?


title: Jakie korzyści mamy tworząc osobną tabelę mapowania dla dwóch tabel relacyjnych?

text: W różnych CMS typu open source zauważyłem, że istnieje osobna tabela do mapowania dwóch tabel relacyjnych. Podobnie jak w przypadku kategorii i produktów, istnieje osobna tabela `product_category_mapping`. Ta tabela zawiera tylko klucz podstawowy i dwa klucze obce z kategorii i tabel produktów. Moje pytanie brzmi, jakie są zalety tego projektu bazy danych, a nie tylko bezpośrednie łączenie tabel poprzez zdefiniowanie klucza obcego w dowolnej tabeli? Czy to tylko kwestia wygody?


title: Dlaczego przypisanie zmiennej do false zwraca false?

text: Dlaczego: coś = fałsz zawsze zwraca fałsz? Ponieważ jest to przypisanie, a nie porównanie, wydaje się, że bardziej sensowne byłoby zwrócenie wyniku (powodzenie/niepowodzenie) przypisania ( **jak prawie każde inne przypisanie** ). **EDYTUJ - to jest błędne, jak wskazują poniższe odpowiedzi. Mój błąd. Lekki pierdnięcie mózgu. Zobacz oryginalny impuls dla tego pytania w komentarzach poniżej.** Co się stanie, jeśli `jakaś_zmienna_logiczna = false` z jakiegoś powodu nie powiedzie się (mało prawdopodobne, ale teoretycznie możliwe, zwłaszcza jeśli zdefiniowałeś niestandardową metodę dla tego działania)? To również zwróciłoby fałsz, więc nie masz żadnych wskazówek, czy zadanie faktycznie zadziałało. Zasadniczo oznacza to po prostu, że nie możesz połączyć przypisania i porównania w jednej linii, tak jak możesz to zrobić z prawie wszystkim innym w Rails. Na przykład nie możesz zrobić: jeśli coś = false (zwróć uwagę na pojedyncze =) do stuff end, to znaczy, że możesz to zrobić, ale nie, jeśli chcesz najpierw sprawdzić i upewnić się, że zadanie się powiodło. Po prostu bardzo dziwne dla mnie. Jestem pewien, że jest ku temu powód, więc proszę mnie oświecić :) Z góry dziękuję!


title: Wiedza biznesowa na kursach technicznych

text: Kilka miesięcy temu zostałem zaproszony na forum na lokalnym uniwersytecie, aby dyskutować o rynku pracy programistów. Forum przyłączyło się do nauczycieli i przedstawicieli firm, aby zrozumieć ten problem. Ostatecznym wnioskiem z debaty było to, że uczniowie skupiają się na technicznej części oprogramowania, ale nie rozumieją koncepcji biznesowych, ponieważ zajęcia skupiają się na tym trochę lub wcale. Uczelnia zobowiązała się do wprowadzenia większej liczby koncepcji biznesowych na niektórych kursach technicznych. Co o tym myślisz? Więcej koncepcji biznesowych naprawdę pomogłoby firmom i studentom, czy kursy techniczne muszą koncentrować się na rzeczach technicznych? **EDYTUJ:** Wydarzenie koncentrowało się na Business Intelligence. Tak więc firmy były zainteresowane programistami, którzy również łatwo rozumieli zasady biznesowe. Myślę, że w tej dziedzinie niezbędna jest ta wiedza.


title: Czy programiści powinni wyszczególnić testowanie projektów?

text: Niedawno wynająłem zespół programistów do przeniesienia mojej aplikacji na iPada na platformy iPhone i Android. Teraz w osobnej umowie proszę o zaimplementowanie kilku wskazówek, jak grać w aplikację, podobnie jak w Candy Crush czy Cut the Rope. Chcą pobierać opłatę za 12 godzin za 35 USD za godzinę „Testowanie wszystkich wskazówek”, mówiąc mi, że normalnie zajęłoby im to więcej niż 25 godzin, ale „poniosą różnicę”. Nie znam tego poziomu wyszczególnienia, ale może to nowa praktyka? Jestem przyzwyczajony do tego, że deweloperzy sami przeprowadzają kontrolę jakości, a następnie mają okres testowania/akceptacji. Używają Cocos 2D-X i mówią, że wskazówki trafiające na wiele platform sprawiają, że wszystkie godziny się podkręcają. Czuję, że mogą się przeładować i trudno mi to stwierdzić, ponieważ to trochę jak z mechanikiem. „Wymiana chłodnicy zajęła nam 5 godzin”. Jak możesz to zakwestionować? Wydaje mi się, że większość z was pobierałaby opłaty za pracę, ale NIE za godziny, które „testujecie”. Czy czegoś mi brakuje? Dzięki za każdą pomoc i porady, których możesz udzielić!


title: Czy istnieją bardziej efektywne sposoby wyszukiwania pomocy/dokumentacji niż Google/SO/...?

text: Google czasami wymyśla nieistotne linki, nie wszystko jest dostępne w SO, są przypadki, w których lokalna dokumentacja jest denerwująca do przeglądania... Czy istnieją inne skuteczne sposoby wyszukiwania?


title: Co zrobić, gdy ktoś rozwidla mój projekt open-source o tej samej nazwie?

text: Mam ten projekt na GPL, utknął na rok, naprawdę podoba mi się ten pomysł, potem ktoś go rozwidlił i zmienił całość, ale użył tej samej nazwy, nie mam nic przeciwko kodowi (w końcu była to GPL) ale podoba mi się nazwa. Jaka jest etykieta w takiej sytuacji? Projekt przyniesie mi korzyści i podoba mi się, jednak nazwa nie była na sprzedaż.. EDIT: Wiem, że jeśli skontaktuję się z autorem, zrozumie i zmieni nazwę, ale nie mam czasu na pracę nad tym projektem dobrze teraz, więc nie chcę być „imionowym trollem” dla moich ludzi (mała społeczność), więc tym razem pozwolę, moje pytanie dotyczy bardziej etykiety widelca. Jeśli projekt zostanie najwyraźniej porzucony, czy mogą się rozwidlić i użyć tej samej nazwy, czy też MUSZĄ otrzymać nową nazwę?


title: Doradztwo, jak przeprowadzić migrację ogromnej, monolitycznej aplikacji Java w kierunku czegoś zorientowanego na usługi

text: Mam do czynienia z problemem migracji ogromnej, monolitycznej aplikacji internetowej Java w kierunku podejścia bardziej zorientowanego na usługi. Aplikacja od lat wyrosła z tego, do czego była pierwotnie zaprojektowana i wciąż się rozwija. Oznacza to wiele zmienionych wymagań klientów, gdzie rozwój pod presją czasu z niewielką troską o jakość kodu. Doprowadziło to do bardzo złożonej struktury kodu (brak modułowych pakietów, wiele złożonych dziedziczeń, mieszanka funkcjonalności w klasach i tak dobra jak brak dokumentacji). Teraz krok po kroku funkcjonalność zostanie wydobyta i uruchomiona jako usługa. Wymiana/przebudowa obecnie nie wchodzi w rachubę. Dlatego kod powinien zostać wyodrębniony i opakowany, aby można go było później zastąpić nową, czystszą wersją. Problem, z którym mam teraz do czynienia, polega na tym, że naprawdę trudno jest zidentyfikować kod, który reprezentuje funkcjonalność i wyodrębnić go bez naruszania innych funkcjonalności lub nawet całej aplikacji. Jakieś pomysły, jak mogę podejść do tego problemu? Jestem otwarta na wszystko.


title: Jak wyjaśnić mojemu tacie, co zaprogramowałem?

text: > **Możliwy duplikat:** > Mój tata niecierpliwi się tempem mojej nauki programowania. Co ja robię? Mam 14 lat i uczę się programowania od 4 miesięcy (3 miesiące Python, 1 miesiąc Ruby). Nie byłam do tego nakłaniana przez rodziców, zajęłam się tym sama. Ilekroć próbuję pokazać coś, co zrobiłem mojemu tacie, mówi, że nie widzi w tym żadnej wartości. Na początku pisałem proste gry tekstowe, takie jak tekstowa wersja nożyczek do papieru skalnego, ruletka, blackjack itp. Kiedy stało się to zbyt łatwe, starałem się uczynić je tak zaawansowanymi, jak to tylko możliwe. Zrobiłem ruletkę w Ruby w oparciu o `instance_eval` i `method_missing`. Pokazałem mu je, a on powiedział, że robienie gier jest „dziecinne”. Po tym, jak gry stały się zbyt łatwe, zacząłem rozszerzać funkcje języków, stworzyłem moduł dla "Zmiennego zakresu" w Pythonie, w którym można po prostu napisać: j = crange.CRange(5), a następnie j.shift(10) aby przesunąć początek i zatrzymać o dziesięć i j.reverse(), aby utworzyć odwrócony zakres. Pokazałem mu to, a on powiedział: „Nie ma w tym żadnej wartości”. Czy można mu wytłumaczyć, że moje programy mają wartość, czy też po prostu poruszam się w bardzo wolnym tempie w nauce?


title: Co jest bardziej restrykcyjne, RPL czy AGPL?

text: Jaka jest różnica między licencją RPL a licencją AGPL? Który z nich jest bardziej restrykcyjny?


title: Przejście od programisty do nauczyciela programowania

text: Interesują mnie doświadczenia programistów, którzy zostali nauczycielami programowania -- w gimnazjum, college'u nauczycielskim lub liceum. Zastanawiam się, czy ktoś dokonał zmiany i czy się z tym uporał, czy też wrócił do przemysłu – i dlaczego. Przez ostatnie 7 lat myślałem (z przerwami), że chciałbym to wypróbować i zobaczyć, jak to jest. Mam przyjaciół, którzy są nauczycielami i wydają się kochać swoją pracę. Z tego, co moi znajomi wiedzą o mnie iz tego, co ja wiem o sobie, myślę, że by mi się to spodobało.


title: Licencja AGPL - czy ma zastosowanie w tym scenariuszu?

text: Istnieje oprogramowanie (klient) oparte na AGPLv3, które wykonuje wywołania usług internetowych (za pomocą SOAP) do innego oprogramowania (serwer - komercyjny, oparty na chmurze). Nie ma wspólnego kodu ani żadnego połączenia między tymi dwoma, z wyjątkiem wykonywanych wywołań usług internetowych. Moje pytania - 1. Czy serwer również musi być AGPL? Chyba nie - ale chciałbym potwierdzić. 2. Powiedzmy, że adres URL punktu końcowego serwera można skonfigurować po stronie klienta (edytując plik XML), aby połączyć go z różnymi serwerami (ponownie, nie ma połączenia innego niż wykonywane wywołania usług internetowych) czy to wymaga któryś z tych serwerów jest AGPL? 3. Czy są jakieś problemy z uruchomieniem Klienta jako biblioteki DLL, która jest ładowana przez inne komercyjne aplikacje na pulpitach użytkowników? Czy te inne aplikacje również muszą być AGPL?


title: Jakie są korzyści z używania wiersza poleceń do tworzenia oprogramowania?

text: Jakie korzyści czerpie się z używania wiersza poleceń do tworzenia oprogramowania w porównaniu z alternatywnym GUI? Czy wiersz poleceń jest szybszy w przypadku niektórych zadań? Czy niektóre narzędzia są dostępne tylko z wiersza poleceń?


title: Jak zarządzać wieloma użytkownikami urządzeń mobilnych po stronie serwera?

text: Zbudowałem aplikację społecznościową na Androida, w której użytkownicy mogą widzieć innych użytkowników wokół siebie na podstawie lokalizacji GPS. Na początku wszystko szło dobrze, ponieważ miałem małą liczbę użytkowników, ale teraz, gdy mam ich coraz więcej (około 1500 +100 każdego dnia), ujawnił się poważny problem w moim projekcie. W moim aplecie Google App Engine mam statyczną mapę HashMap, która przechowuje wszystkie obiekty profili użytkowników, obecnie 1500 i ta liczba będzie wzrastać w miarę rejestracji większej liczby użytkowników. **Dlaczego to robię?** Każdy użytkownik, który prosi o użytkowników wokół niego, porównuje swój GPS z innymi użytkownikami i sprawdza, czy znajdują się w jego promieniu 10 km. Dzieje się to średnio co pięć minut. W związku z tym nie mogę za każdym razem pobierać użytkowników z bazy danych, ponieważ limit operacji odczytu/zapisu GAE rozerwie mnie na strzępy. **Problem z tym projektem?** Wraz ze wzrostem liczby użytkowników Hashmap zmienia się w zero co 4-6 godzin, myślę, że ten czas się skraca, ale nie jestem pewien. Naprawiam to, przeładowując użytkowników z db za każdym razem, gdy wykryję, że staje się on pusty, ale powoduje to DOS dla moich użytkowników przez 30 sekund, więc szukam lepszego rozwiązania. Domyślam się, że dzieje się tak z powodu rozmiaru hashmapy. Czy mam rację? Poradzono mi, abym używał przestrzennej bazy danych, ale oznacza to, że nie mogę już pracować z GAE, a to oznacza, że muszę od nowa zbudować mój duży serwer i stracić istniejącą bazę danych. Czy mogę coś zrobić z istniejącymi narzędziami? Dziękuję.


title: Dwukropki w umiędzynarodowionym interfejsie użytkownika

text: Kiedy używasz gettext lub podobnego frameworka, czy łańcuchy tłumaczeń powinny zawierać `':'` (jak `"Label:"`) do generowania etykiet dla UI, czy też powinienem dodać `':''' w samym kodzie UI?


title: Jak utrzymujesz te wszystkie języki w głowie?

text: Znam Javę, C#, C++. Użyłem Perla i wybieram Pythona i Actionscripta 3. Jest to z pewnością ścieżka, którą przeszli inni, więc pytam, jak zachować te wszystkie języki w głowie?


title: Programowanie par przy użyciu różnych edytorów

text: Bardzo lubię programowanie w parach dla konkretnych projektów lub funkcji. Może działać jako natychmiastowa kontrola poprawności i zwiększać pokrycie kodu w całym zespole programistów. To powiedziawszy, zawsze mam problem z redaktorami. Przede wszystkim koduję Rubiego i osobiście lubię używać VIM, podczas gdy inni programiści w moim zespole używają EMACS, TextMate lub RubyMine. Co więcej, nawet jeśli dwóch programistów korzysta z tego samego edytora, wydaje się, że każdy ma inne makro do uruchamiania testów lub wykonywania określonego pliku. Moje pytanie brzmi: jak kontynuować łączenie programów w pary, kiedy każdy ma inne preferencje edytora? Czy istnieje jakieś oprogramowanie lub praktyka programistyczna, która pozwoliłaby dwóm programistom sparować program z różnych edytorów? Czy po prostu musisz zgodzić się na wspólny edytor, z którego obaj możecie korzystać? Jak rozwiązujesz ten problem w swojej firmie?


title: Jak poprawić moje umiejętności czytania kodu?

text: Cóż, pytanie jest w tytule - jak poprawić moje umiejętności czytania kodu. Środowisko oprogramowania/sprzętu, w którym obecnie pracuję, jest dość wolne w odniesieniu do czasów kompilacji i czasu, jaki zajmuje cały system do przetestowania. System jest dość stary/złożony i dlatego podział na kilka mniejszych, łatwiejszych w zarządzaniu podprojektów nie jest wykonalny w najbliższej przyszłości. Zdałem sobie sprawę, że to, co naprawdę utrudnia postęp w rozwoju, to moja umiejętność czytania kodu. Jak poprawić moje umiejętności czytania kodu, aby móc wykryć większość błędów i problemów w kodzie, nawet przed naciśnięciem klawisza „do kompilacji”, nawet przed uruchomieniem debugera?


title: Jak mogę otrzymać zapłatę za zmniejszenie długu technicznego?

text: Obecnie pracuję dla małej firmy, która posiada kilka skomplikowanych technicznie produktów. Jestem jedynym programistą dla jednego z nich. Mniej więcej rok temu dostałem starszą wersję produktu i zacząłem ją „wspierać”. Klient mówi tylko o nowych funkcjach, wartości biznesowej i innych tego typu. Problem polega na tym, że chociaż kod jest w C#, jest dość proceduralny. Nie ma abstrakcji, klasy są używane tylko tam, gdzie wymaga ich Visual Studio - na przykład formularze. Implementacje tych klas są naprawdę okropne, a kod jest naprawdę trudny do utrzymania. Przez cały ten rok poświęcam swój własny czas na refaktoryzację. W najnowszej wersji są dość abstrakcje i takie tam. Musiałem ponownie zaimplementować wiele komponentów od zera i naprawdę czuję, że dodanie nowej funkcji lub zmiana zachowania tych komponentów jest DUŻO łatwiejsza niż innych. Problem w tym, że spędzam swój czas. Bardzo podobają mi się wyniki, ale nie lubię pracować 12 godzin dziennie. Czy byłeś kiedyś w podobnej sytuacji? Czego powinienem spróbować? Próbowałem już o tym dyskutować, ale nadal bez powodzenia. Po prostu boję się momentu, w którym zdecydujemy się wdrożyć nową funkcję, która wymaga wielu zmian w starszym kodzie. To może być szokujące dla klienta: dlaczego potrzebujesz 8 godzin na zmianę tych ikon? Klienta po prostu nie obchodzi, że w kodzie jest 500 miejsc, które muszę zmienić. Powinienem też najpierw znaleźć wszystkie te 500 miejsc. Jakieś pomysły?


title: Kiedy potrzebuję makra zamiast funkcji?

text: Jestem nowy w Clojure, jestem nowy w makrach i nie mam wcześniejszego doświadczenia w Lisp. Następnie stworzyłem własny przypadek przełącznika, taki jak formularz, i skończyłem z tym: (defmacro switch-case [v case default] (if (cases v) (cases v) default )) a następnie spróbowałem utworzyć funkcję i skończyłem z this: (defn fn-switch-case [v przypadków domyślnie] (if (przypadki v) (przypadki v) domyślnie )) Zarówno (switch-case 5 {6 "sześć" 7 "siedem"} "nie ma") i ( fn-switch-case 5 {6 „sześć” 7 „siedem”} „nie ma”) Działa dobrze. Jaki mógłby być scenariusz, w którym będę potrzebować makra i funkcja nie będzie działać? Czy istnieje wada w moich implementacjach funkcji lub makr?


title: Dlaczego komputery nie przechowują liczb dziesiętnych jako drugiej liczby całkowitej?

text: Komputery mają problem z przechowywaniem liczb ułamkowych, w których mianownik jest czymś innym niż rozwiązaniem 2^x. Dzieje się tak, ponieważ pierwsza cyfra po przecinku ma wartość 1/2, druga 1/4 (lub 1/(2^1) i 1/(2^2)) itd. Po co zajmować się wszelkiego rodzaju błędami zaokrąglania, gdy komputer mógł po prostu zapisać część dziesiętną liczby jako inną liczbę całkowitą (co jest zatem dokładne?) Jedyne, o czym myślę, to radzenie sobie z powtarzaniem ułamków dziesiętnych (w podstawie 10), ale mogło istnieć rozwiązanie krawędziowe (tak jak obecnie mamy z nieskończonością).


title: Jaki jest najlepszy sposób dla doświadczonego programisty na pracę nad blogiem WordPress?

text: Zaczynam pracę nad moim pierwszym blogiem WordPress, jednak zauważyłem, że większość samouczków po prostu wymaga modyfikacji (takich jak zmiany motywu, instalowanie wtyczek) w witrynie produkcyjnej. Martwi mnie to z kilku powodów: * Brak kopii zapasowych * Brak kontroli wersji * Jeśli popełnisz błąd, wpłynie to na twoją witrynę produkcyjną * Zdalne programowanie jest wolniejsze niż programowanie lokalne, szczególnie podczas dostrajania plików css. Rozumiem, dlaczego WordPress działa w ten sposób - pozwala osobom bez doświadczenia programistycznego zarządzać swoją instalacją WordPress (lub tą, którą dostarcza ich dostawca usług). Pozwala również na pracę nad instalacją WordPress bez dostępu ssh do serwera. Jednak ponieważ czuję się komfortowo pracując z narzędziami takimi jak git i ssh oraz używam wirtualnego serwera do bloga, nie jest to dla mnie bardzo ważne. Zastanawiałem się więc, jakich technik używają doświadczeni programiści podczas pracy nad blogiem WordPress. Na przykład: * Czy tworzysz lokalnie, a następnie wprowadzasz zmiany do działającej witryny? Jak Ty to robisz? * Jak zarządzasz zmianami bazy danych i kopiami zapasowymi? * Co przechowujesz pod kontrolą wersji (jeśli w ogóle)? * Jeśli wtyczka zmienia bazę danych, czy w jakiś sposób śledzisz zmiany, które robi w kontroli wersji, aby w razie potrzeby cofnąć zmiany wprowadzone przez wtyczkę? A może po prostu nadmiernie wszystko komplikuję, jeśli praca w miejscu produkcji nie jest tak ryzykowna, jak mi się wydaje. Byłbym wdzięczny za wszelkie odpowiedzi.


title: Jak mogę powiązać interfejs z klasą określoną przez konfigurację xml lub bazy danych podczas uruchamiania aplikacji?

text: Pracuję ponownie nad projektem istniejącej aplikacji, która jest kompilowana przy użyciu WebForms. Obecnie planuje się przekształcenie go w aplikację wzorca MVP przy użyciu Ninject jako kontenera IoC. Powodem obecności Ninject jest to, że szef chciał pewnej elastyczności w systemie, abyśmy mogli budować w modelu różne rodzaje logiki biznesowej i pozwolić programiście wybrać, której użyć w oparciu o żądanie klienta, albo poprzez Konfiguracja XML lub ustawienie bazy danych. Wiem, że Ninject nie potrzebuje konfiguracji XML, jednak jestem zdezorientowany, jak może pomóc w dynamicznym wstrzyknięciu zależności do systemu? Wyobraź sobie, że mam interfejs `IMember` i muszę powiązać ten interfejs z klasą określoną przez konfigurację xml lub bazy danych podczas uruchamiania aplikacji, jak mogę to osiągnąć?


title: Jakie są zalety i wady uruchamiania wielu wystąpień aplikacji na rynku?

text: Jedna aplikacja, aby nimi wszystkimi rządzić, a w ciemności wiązać ich. W tej chwili szukam aplikacji klienckiej. Ta sama usługa ma być dostarczana do dwóch oddzielnych hrabstw, a zawartość w ramach: użytkowników, elementów zamówienia itp. NIE powinna przecinać się między rynkami. To prowadzi mnie do myślenia, że najlepszym podejściem jest posiadanie dwóch oddzielnych instancji aplikacji z osobnymi bazami danych. Jednak... Brzmi to jak DUŻO dodatkowej pracy i duplikacji dla dwóch systemów, które byłyby w większości identyczne. podejście, z odpowiedzią na swoje preferencje? FWIW to aplikacja rails 4 wdrażana z Capistrano


title: W jaki konkretny sposób Pascal i/lub Delphi wpłynęły na Javę?

text: Czytałem na pasku bocznym strony wiki języka Java i mówi, że był pod wpływem Pascala i Delphi. to już nie jest fakt, nie ma żadnych odniesień do Delphi na całej wskazanej stronie wiki od tej edycji, prawdopodobnie powinno usunąć wszystkie odniesienia do Delphi z tego pytania Na pierwszy rzut oka Java wydaje się być po prostu C++ z odśmiecaczem i bez wskaźników. Delphi i Java wyszły w tym samym roku. Jestem ciekaw, czy ktoś, kto naprawdę dobrze zna Javę i Pascal/Delphi, mógłby spojrzeć na Javę i powiedzieć ** „Funkcja X w Javie jest pod wpływem funkcji Y w Pascalu (lub Delphi).”** Dodatkowo był wpływ w późniejszych wersjach Java (więc funkcja z Pascala lub Delphi pojawiła się dopiero w Javie w wersji Z), czy faktycznie była w nasionach języka Java? Delphi i Java pojawiły się w tym samym roku, więc wpływ Delphi na genezę Javy wydaje się mniej prawdopodobny. Ewentualnie może być tak, że Delphi lub Pascal w jakiś inny sposób wpłynęły na platformę Java, a nie na język. _[To zostało przepisane, aby było jaśniejsze. Mogło to zmienić zakres pytania do tego stopnia, że istniejące komentarze i odpowiedzi nie pasują. Moim zamiarem było wyjaśnienie, a nie zmiana.]_


title: Jaka była długość życia Quick Pascala?

text: Microsoft miał kompilator Pascala o nazwie Quick Pascal. Widziałem kilka sprzecznych raportów na temat tego, kiedy był dostępny. Czy ktoś wie na pewno? Czy wprowadzono jakieś nowe funkcje językowe w porównaniu z alternatywami, czy była to tylko wersja Microsoftu?


title: Czy w tym Turbo Pascal 4 zostały wprowadzone jednostki?

text: Byłem zaskoczony, gdy usłyszałem, że Pascal początkowo nie miał jednostek. O ile dobrze pamiętam zostały wprowadzone w Turbo Pascal 4. Czy inne wersje pascala miały wcześniej jednostki? Ile czasu upłynie, zanim inni Pascal dostaną jednostki?


title: Czy Free Pascal jest po prostu otwartym, wieloplatformowym klonem Turbo Pascal i Delphi?

text: Czy Free Pascal wprowadza jakieś znaczące funkcje językowe w porównaniu z Turbo Pascal, a następnie Delphi, czy po prostu wprowadza smaki Pascala Turbo Pascal i Delphi na więcej platform?


title: Czy ktoś jeszcze ma problem z refaktoryzacją?

text: Wygląda na to, że po tym, jak napisałem znaczną ilość kodu, odczuwam niepokój, jakbym nie zrobił tego w najlepszy możliwy sposób, i kończę na ciągłym refaktoryzacji i spędzaniu zbyt dużo czasu nad projektem lub nigdy nie dostaję to się czasem zdarzało. Czy zdarza się to kiedykolwiek komuś innemu i jak sobie z tym radzisz?


title: Jakich zakładek przydatnych dla programistów używasz?

text: Chcę zakładki specyficzne dla pomocy w zadaniach programistycznych, a nie do każdego zadania. Jeśli zakładka jest niesamowita dla każdego użytkownika, nie umieszczaj jej tutaj jako odpowiedzi. Oddam głos i sugeruję, aby użytkownicy zrobili to samo. Do ogólnych zakładek proszę publikować na Webapps.StackExchange Dobrą odpowiedzią jest zakładka, która pomaga programiście w pracy. Nie oczekuję zbyt wielu odpowiedzi, chociaż byłoby wielką niespodzianką, gdyby tak się stało. Proszę wyjaśnić, co robi zakładka i gdzie można jej użyć.


title: MVC i poszczególne elementy modelu w ramach wspólnej klasy bazowej

text: Trzeba przyznać, że moje doświadczenie w stosowaniu wzorca MVC jest ograniczone. Można by argumentować, że tak naprawdę nie oddzielam V od C, chociaż oddzielam M od VC na tyle, na ile mogę. Rozważam scenariusz, w którym model aplikacji zawiera szereg elementów, które mają wspólną klasę bazową. Na przykład postacie wroga w grze wideo lub typy kształtów w aplikacji do grafiki wektorowej. Widok chce wyrenderować te elementy. Oczywiście różne podklasy wymagają innego renderowania. Problem w tym, że elementy są częścią modelu. Ich renderowanie jest koncepcyjnie częścią widoku. Ale sposób ich renderowania zależy od parametrów obu: * Atrybuty i stan elementu są parametrami modelu * Ustawienia użytkownika są parametrami widoku - i aby obsługiwać wiele platform i/lub trybów widoku, można użyć różnych widoków Jaki jest twój preferowany sposób radzenia sobie z tym? * Umieścić kod renderujący w klasach modelu, przekazując dowolne parametry widoku? * Umieścić kod renderowania w widoku, używając przełącznika lub podobnego, aby wybrać odpowiedni renderowanie dla typu elementu modelu? * Czy masz jakieś klasy pośrednie jako interfejs model-widok, z których model będzie tworzył obiekty na żądanie, a widok następnie je renderuje? * Coś innego?


title: Co by się naprawdę stało, gdyby java.lang.String nie była ostateczna?

text: Jestem od dawna programistą Java i wreszcie po studiach mam czas na porządną naukę, żeby przystąpić do egzaminu certyfikacyjnego... Jedna rzecz, która zawsze mnie niepokoiła to, że String jest „ostateczny”. Rozumiem to, gdy czytam o kwestiach bezpieczeństwa i podobnych rzeczach... Ale poważnie, czy ktoś ma na to prawdziwy przykład? Na przykład, co by się stało, gdyby String nie był ostateczny? Jakby tego nie było w Ruby. Nie słyszałem żadnych skarg pochodzących od społeczności Ruby... I jestem świadomy StringUtils i klas pokrewnych, które musisz zaimplementować samodzielnie lub przeszukać sieć, aby po prostu zaimplementować to zachowanie (4 wiersze kodu) jesteś chętny.


title: Uzyskaj informacje z bazy danych lub zbuduj informacje z wywnioskowanych informacji?

text: Czy bardziej sensowne jest przechowywanie i pobieranie właściwości lub informacji bezpośrednio związanych z pozycją w bazie danych, czy też, powiedzmy w takim przypadku, że identyfikator produktu może opisywać informacje o nim, czy należy z tego zebrać informacje? Przykład: Pozycja SKU - 4HBU12 4 - to liczba silników H - napięcie B - kolor, niebieski U - model 12 - długość Czy te poszczególne atrybuty należy przechowywać razem z SKU, czy tylko SKU i zbuduj z niego atrybuty?


title: Jak sprawnie uzyskać dostęp do funkcji w klasach rozszerzonych?

text: W PHP mam klasy jak poniżej class Animal { //niektóre vars public function printname(){ echo $this->name; } } class AnimalMySql extends Animal { static public function getTableFields(){ return array(); } } class AnimalPostgreSql extends Animal { static public function getTableFields(){ return array(); } } Teraz mam obiekt `$lion = new Animal();` i chcę zrobić if($store == mysql) //getTableFields z klasy AnimalMySql else //getTableFields z klasy AnimalPostgreSql Jestem nowy w OOP i nie pewni, jaki jest najlepszy sposób wywołania metody z określonej klasy P.S. Proszę zostawić notatkę z odpowiedzią, aby wyjaśnić skuteczność podejścia


title: Projektowanie listy zdefiniowanej przez użytkownika do przechowywania w relacyjnej bazie danych — czy należy dołączyć indeks użytkownika?

text: Przez indeks rozumiem, że gdy użytkownik tworzy listę, każdy element otrzymuje indeks w postaci liczby całkowitej określający swoje miejsce na tej konkretnej liście. Ponieważ pojawi się tabela ListItems, wolę unikać używania nazwy „Indeks” dla pola. Potem pomyślałem - czy powinienem w ogóle uwzględnić indeks listy w bazie danych? Pomyślałem, że zrobię to, ponieważ lista byłaby wtedy tworzona w ten sam sposób za każdym razem. Lub mógłbym uporządkować listę dla użytkownika na podstawie jego rzeczywistego klucza podstawowego, ponieważ elementy listy i tak są tworzone po kolei... Co mam zrobić?


title: Wzorzec dla typów danych, które są powiązane, ale zasadniczo różnią się użytecznością

text: # Tło Obecnie pracuję nad kodem, który ma stać się "silnikiem treści" przyszłej strony internetowej, gdzie będzie pobierał różne typy standardowych danych (zaimplementowanych w XML), parsował je, a następnie dynamicznie i odpowiednio generował treść. Same dane zawierają również listę wskazówek kontekstowych lub obiektów pomocniczych do wyszukiwania, porównywania, analizowania itp., która jest rozwijana równolegle w grupę jako warstwa interakcji danych i jest całkowicie oddzielona od silnika. Każda wygenerowana treść będzie emitować pewne osadzone „podpisy”, które mogą zostać przeszukane przez warstwę interakcji w celu przetworzenia (prawdopodobnie z kilkoma wygenerowanymi ukrytymi wartościami wejściowymi). # Problem Niemniej jednak, bezpośredni problem, z którym się zmagam, polega na tym, że chociaż lista ukrytych sygnatur jest związana z generowaną treścią, zasadniczo silnik nie musi informować przeglądarki, w jaki sposób treść powinna być prezentowana na początku. Logicznie rzecz biorąc, czy zazwyczaj zadaniem silnika jest parsowanie wszystkich danych, bez względu na ich typ, aby warstwa interakcji mogła później nimi po prostu manipulować? Lub, ponieważ ten typ danych działa jako pomocnik w manipulacji danymi, czy warstwa interakcji powinna wkroczyć i działać jako rodzic dla tego typu danych, tak aby silnik mógł po prostu skoncentrować się na treści? Źródłem problemu jest to, że zacząłem rozdzielać rzeczy na ich wyspecjalizowane komponenty, aby zapewnić lepszą konserwację w przyszłości, ale nie jestem do końca pewien, gdzie przestać rozdzielać fragmenty na podstawowe elementy. Czy powinienem traktować dane jako zwykłe dane? To nie może być prawda.


title: Testowanie jednostkowe — zależności zewnętrzne i wewnętrzne

text: Testy jednostkowe powinny być izolowane, zautomatyzowane (tzn. nie musimy wykonywać żadnej wcześniejszej konfiguracji, aby wszystkie testy były uruchamiane jednym kliknięciem) i spójne w swoich wynikach. Z tych powodów powinniśmy odciąć wszystkie _zewnętrzne zależności_ (tj. bazy danych, usługi sieciowe itp.) używane przez jednostkę w teście **UUT** (w przypadku testów integracyjnych **UUT** używają zależności zewnętrznych). Ale na podstawie jakich kryteriów decydujemy, które _wewnętrzne zależności_ wywoływane przez **UUT** (przez _wewnętrzne zależności_ mam na myśli kod, który jest pod naszą kontrolą i który nie komunikuje się z żadnymi systemami zewnętrznymi) również muszą zostać zablokowane i które nie muszą być? Czy może kryteria, według których metody zdefiniowane w tej samej klasie co **UUT** nie muszą być zastępowane, podczas gdy metody zdefiniowane w innych klasach powinny być, czy...?


title: n:m jako jedyny sposób przechowywania powiadomień?

text: Mam użytkownika i tabelę powiadomień. Chcę mieć pewność, że każdy użytkownik zobaczy nowe powiadomienie raz i tylko raz. Nie więcej, nie mniej. Intuicyjnym pomysłem jest posiadanie tabeli relacji n:m z userId:notificationId. Ale czy tworzenie nowego stołu tylko do tego nie jest zbyt dużym obciążeniem? A co z bazami danych NoSQL? Czy dobrym pomysłem byłoby dodanie tablicy identyfikatorów powiadomień do poszczególnych użytkowników w tabeli użytkowników?


title: Rodzaj komputera dla programisty w podróży

text: Planuję trochę podróżować po Eurazji i Azji (Rosja, Chiny, Korea, Japonia, Azja Południowo-Wschodnia...) i chociaż jest wiele wspaniałych rzeczy do zobaczenia i zrobienia, muszę dalej pracować: (. Jestem programistą Pythona, oddanym głównie projektom webowym. Korzystam z django, sqlite3, przeglądarek i okazjonalnie (tylko jeśli nie mam wyboru) instaluję postgres, mysql, apache lub inne serwery powszechnie używane w internecie. koduję na vimie, używam ssh do łączenia, lftp do przesyłania plików, IRC, grep/ack... Więc spędzam większość czasu w powłokach terminali. , a także jakieś inne oprogramowanie (które przecież nie jest obowiązkowe w mojej codziennej pracy).Obecnie pracuję na Macbooku Pro (teraz 3 lata) i jak na razie jestem bardzo zadowolony z wydajności.Ale ja nie chce mi sie go nosic, jesli bede dlugi "w tranzycie", jest po prostu ogromny i ciezki jak na to, co planuje zaladowac do mojego raczej malego plecaka e podróże, mniej znaczy więcej, wiesz). Czytam więc tutaj wszelkiego rodzaju opinie o netbookach, bo na pierwszy rzut oka jest to komputer, który myślałem, że muszę wybrać. Zamierzam do tego użyć Linuksa, Microsoft nie jest moją filiżanką herbaty, a Mac nie jest dla nich dostępny, chyba że mam kupić Macbook Air, coś, czego nie zrobię, ponieważ jeśli zostanę okradziony lub deszcz/kurz/ Ładowarki do ciężarówek ją psują, bym się rozpłakał. Martwię się o wydajność i łączność Wi-Fi, zamierzam użyć jednej z tych dystrybucji/narzędzi linuksowych do hakowania/testowania w „otwartych” sieciach (jeśli wiesz, co mam na myśli), na wypadek, gdybym nie był w miejscu z prawdziwym bezpłatnym Wi-Fi dostępu i znajduję się w sytuacji awaryjnej. Szybkość procesora powinna być akceptowalna, ale ponieważ nie planuję uruchamiania Photoshopa ani drogich IDE, myślę, że przez większość czasu nie będę przeciążał maszyny. Poza tym może (na pewno) brakuje mi innych funkcji do rozważenia. W związku z tym (przepraszam za długość) pojawia się moje pytanie, powstałe z głębokiej ignorancji dotyczącej wojny między betbookami a notebookami (zakładam, że tablety nie są jeszcze przeznaczone do programowania): Jeśli kupię netbooka, będę musiał go wyrzucić z dala po 1 miesiącu w trasie i kupić notebooka? Czy będzie dobrze? Dziękuję! Hector **Aktualizacja** Do tej pory otrzymałem świetne opinie! Chciałbym podkreślić, że będę podróżować po wielu różnych krajach i scenariuszach. Jestem pewien, że podczas pobytu w Japonii będzie mi więcej niż dobrze ze wszystkim, co dotyczy technologii, łączności itp. Ale weź pod uwagę, że będę na przykład w pociągu przez Rosję (transsyberyjski) i przejadę również Mongolię. Czasem zostanę u znajomych, ale przez większość czasu będę musiał pracować z hostelowych pokoi, pociągów, autobusów, plaż (hej ten ostatni nie brzmi tak źle hehe!). Myślę, że niektórzy z twoich odpowiedzi wydają się skupiać na części geeków, ale tracą sens tego faktu „w drodze”. Jestem bardzo świadomy i zgadzam się, że netbooki są do bani w porównaniu z notebookami, ale staram się tutaj znaleźć równowagę i odkryć swoje doświadczenia z netbookami, aby zobaczyć z pierwszej ręki, czy netbook zawiedzie w średnioterminowej perspektywie podróż dla moich celów. Wróciłem więc do głównych pojęć wyrażonych tutaj na tej małej liście, w dowolnej kolejności: * odczucie klawiatury/touchpada: używam vima, więc nie muszę tak bardzo przesuwać kursorów myszy, chyba że przeglądam sieć, ale intensywnie używam klawiatury stan rzeczywisty ekranu: znowu, terminal działa przez większość czasu * żywotność baterii: myślę, że coś bardzo ważnego * waga/rozmiar: również bardzo ważne * wygląda, że nie warto go ukraść, nie przejmuj się, jeśli zostanie zgubiony/skradziony/ zepsute: może to zależeć od rodzaju osoby, twojej ekonomii itp. Aby zapobiec utracie pracy, będę przesyłać WSZYSTKO do chmury, gdy tylko będę miał okazję. * wifi: nie chcę odkryć, że moje wifi to jedno z tych, które nie radzi sobie z połową routerów na tej planecie lub ma słabą łączność. Jeszcze raz dziękujemy za odpowiedzi i komentarze!