title: Czy ze Scali szczekam niewłaściwe drzewo?

text: Mając trochę wolnego czasu postanowiłem nauczyć się nowego języka programowania, tworząc - dla zabawy, która nigdy nie ujrzy światła dziennego - aplikację webową do administrowania ubezpieczeniami (ubezpieczenia to branża, którą znam). Wybrałem więc Scala jako język do nauki, ale im więcej się uczę, tym więcej zastanawiam się, czy Scala pasuje do aplikacji, którą chcę zbudować. Nie chcę zawracać sobie głowy nauką programowania funkcjonalnego i ignorować wszystkich najlepszych praktyk, zmieniając obiekty mojej domeny - Polisa, Sekcja, Pokrycie, Ubezpieczony, Ubezpieczyciel itp. - zmiennymi. Ubezpieczeni mają Polisy, które mają Sekcje, które mają Ubezpieczenia zapewnione przez Ubezpieczycieli bla bla. Więc istnieje ta wzajemna zależność między wszystkimi tymi obiektami i nie rozumiem, jak zaktualizować jeden obiekt w paradygmacie funkcjonalnym. Czy to możliwe i warte wysiłku?


title: Jakie są najlepsze gadżety Windows 7 dla programistów?

text: Szukam motywu z gadżetami, który ułatwi mi życie jako programista. Googlowanie z komputera to jedna z funkcji, której szukam. Drugie miejsce to integracja z SharePoint lub innymi narzędziami do śledzenia błędów. Każdy inny pomysł, który może sprawić, że będę bardziej produktywny, jest dobry.


title: Noobie chce korzystać z kontroli źródeł, jak byś ich poprowadził?

text: Powiedzmy, że znasz anonimowego noobie, który chce być prowadzony ścieżką prawości. Ten noobie chce użyć jakiegoś rodzaju narzędzi kontroli źródła po prostu dla doświadczenia korzystania z narzędzi kontroli źródła (i być może dla wszelkich korzyści, jakie przynoszą wraz z nimi). Aby jeszcze bardziej ograniczyć rzeczy (i uczynić to być może jeszcze bardziej noobietastycznym), powiedzmy, że utknęli w oknach wywoływanych w Visual Studio. Jak poprowadziłbyś swojego neofitę?


title: Pochodzenie nazwy „OpenServer” dla systemu operacyjnego SCO Unix

text: Przeglądałem ewolucyjną historię systemów uniksowych i uniksopodobnych na Wikipedii i wyróżniała mnie jedna nazwa systemu operacyjnego: **OpenServer**. Sądząc po obrazie, **OpenServer** SCO jest całkowicie _zamknięty_ źródłem_; dlaczego więc SCO **OpenServer** ma w nazwie słowo „otwarty”, jeśli system operacyjny jest zastrzeżony i nie zawiera kodu open source? Podejrzewam, że dzieje się tak dlatego, że oryginalny system operacyjny **Unics** miał licencję mieszaną/współdzieloną, ale wydaje się to dość odległym przodkiem, gdy własnościowy **Xenix** pojawił się również przed **OpenServer**. Czy ktoś może rzucić nieco światła na powód tej nazwy?


title: Łączenie metody szablonowej ze strategią

text: Zadaniem na moich zajęciach z inżynierii oprogramowania jest zaprojektowanie aplikacji, która może grać w różne formy danej gry. Omawiana gra to Mancala, niektóre z tych gier nazywają się Wari lub Kalah. Te gry różnią się w niektórych aspektach, ale dla mojego pytania ważne jest, aby wiedzieć, że gry mogą różnić się w następujący sposób: * Sposób, w jaki obsługiwany jest wynik ruchu * Sposób, w jaki określany jest koniec gry * sposób, w jaki ustala się zwycięzcę Pierwszą rzeczą, jaka przyszła mi do głowy, aby to zaprojektować, było wykorzystanie wzorca strategii, mam wariację algorytmów (rzeczywistych reguł gry). Projekt mógłby wyglądać tak: ![tutaj podaj opis obrazka](http://i.stack.imgur.com/mk3EA.png) Pomyślałem wtedy, że w grze Mancala i Wari ustalany jest zwycięzca jest dokładnie taki sam, a kod byłby zduplikowany. Nie sądzę, że jest to z definicji pogwałcenie zasady „jedna zasada, jedno miejsce” lub zasady DRY, ponieważ zmiana zasad dla Mancala nie oznaczałaby automatycznie, że zasada powinna zostać zmieniona również w Wari. Niemniej jednak z informacji zwrotnych od mojego profesora odniosłem wrażenie, że znalazłem inny projekt. Wtedy wymyśliłem to: ![tutaj podaj opis obrazu](http://i.stack.imgur.com/3Ad2p.png) Każda gra (Mancala, Wari, Kalah, ...) miałaby po prostu atrybut typ interfejsu każdej reguły, tj. `WinnerDeterminer`, a jeśli istnieje wersja Mancala 2.0, która jest taka sama jak Mancala 1.0, z wyjątkiem sposobu określania zwycięzcy, można po prostu użyć wersji Mancala. Myślę, że wdrożenie tych zasad jako wzorca strategii jest z pewnością zasadne. Ale prawdziwy problem pojawia się, gdy chcę go dalej projektować. Czytając o wzorcu metody szablonowej od razu pomyślałem, że można go zastosować do tego problemu. Czynności, które są wykonywane, gdy użytkownik wykonuje ruch, są zawsze takie same i w tej samej kolejności, a mianowicie: * umieszczaj kamienie w dołkach (to samo we wszystkich grach, więc zostałoby zaimplementowane w samej metodzie szablonu) * określ wynik ruchu * określ, czy gra zakończyła się z powodu poprzedniego ruchu * jeśli gra się skończyła, ustal, kto wygrał Te trzy ostatnie kroki są w moim schemacie strategii opisanym powyżej. Mam duże problemy z połączeniem tych dwóch. Jednym z możliwych rozwiązań, które znalazłem, byłoby porzucenie wzorca strategii i wykonanie następujących czynności: ![tutaj wprowadź opis obrazu](http://i.stack.imgur.com/uiopy.png) Naprawdę nie widzę różnicy w projekcie między wzorcem strategii a tym? Ale jestem pewien, że muszę użyć metody szablonowej (chociaż byłem tak samo pewien, że muszę użyć wzorca strategii). Nie potrafię też określić, kto byłby odpowiedzialny za stworzenie obiektu `TurnTemplate`, podczas gdy przy wzorcu strategii czuję, że mam rodziny obiektów (trzy reguły), które mógłbym łatwo stworzyć za pomocą abstrakcyjnego wzorca fabryki. Miałbym wtedy `MancalaRuleFactory`, `WariRuleFactory` itd., a oni tworzyliby poprawne instancje reguł i przekazywali mi obiekt `RuleSet`. Powiedzmy, że używam strategii + abstrakcyjnego wzorca fabryki i mam obiekt `RuleSet`, który zawiera algorytmy dla trzech reguł. Jedynym sposobem, w jaki czuję, że nadal mogę używać wzorca metody szablonu, jest przekazanie tego obiektu `RuleSet` do mojego `TurnTemplate`. „Problem”, który wtedy pojawia się, polega na tym, że nigdy nie potrzebowałbym moich konkretnych implementacji `TurnTemplate`, te klasy stałyby się przestarzałe. W moich chronionych metodach w `TurnTemplate` mógłbym po prostu wywołać `ruleSet.determineWinner()`. W konsekwencji klasa `TurnTemplate` nie byłaby już abstrakcyjna, ale musiałaby stać się konkretna, czy w takim razie nadal jest wzorcem metody szablonu? Podsumowując, czy myślę we właściwy sposób, czy też brakuje mi czegoś łatwego? Jeśli jestem na dobrej drodze, jak mogę połączyć wzorzec strategii i wzorzec metody szablonu?


title: Kto jest właścicielem praw własności intelektualnej do oprogramowania bez pisemnej umowy o pracę? Pracodawca czy pracownik?

text: Jestem inżynierem oprogramowania, który wpadł na pomysł i samodzielnie opracował zintegrowane oprogramowanie ERP w ciągu ostatnich 2 lat. Wpadłem na pomysł i kodowałem większość oprogramowania w swoim osobistym czasie, wykorzystując własne zasoby, ale także jako stażysta/pracownik w małej hurtowni (firma A). Miałem ustną umowę z firmą, że mogę zachować prawa własności intelektualnej do kodu, a firma będzie miała „prawa sklepu” do korzystania z „kopii” oprogramowania bez ograniczeń. Częścią tej umowy było to, że za utrzymanie praw byłam bardzo źle opłacana. Ostatnio sytuacja w firmie A zaczęła się pogarszać, ponieważ firma rozrosła się dosyć mocno, utworzono nowy zarząd, sprowadzono nowych partnerów. Pierwotni właściciele zdystansowali się od biznesu, a nowa „chciwa” grupa wskazała, że chcą zażądać praw własności intelektualnej do mojego oprogramowania, oferując mi umowę, która podzieliłaby własność własności intelektualnej na 50% współwłasności, całkowicie ignorując początkowe umowy ustne. Jak na razie nie było jednego pisemnego opisu stanowiska i umowy/umowy/polityki, którą podpisałem z firmą A, podpisałem tylko formularze I-9 i W-4. Teraz mam okazję opuścić firmę A i założyć nowy biznes z 2 partnerami (Firma B), oczywiście używając oprogramowania jako podstawowego narzędzia. Nie byłoby bezpośredniego konfliktu interesów, ponieważ firma A sprzedaje towary hurtowo. Moje podstawowe pytanie to: **"Kto jest właścicielem kodu bez umowy? Ja czy firma A? (w FL, US)"** **Pytania szczegółowe:** 1. Znam "prawa sklepu", ja nie ma problemu z pozostawieniem kopii kodu w firmie do wykorzystania/ulepszenia w celu prowadzenia działalności hurtowej. Co mnie martwi, **Czy firma A może zgłaszać jakiekolwiek roszczenia prawne do oprogramowania/kodu/IP i potencjalne zyski/odsetki po moim odejściu i założeniu firmy B?** 2. **Czy może ubiegać się o prawa autorskie do kodu pod adresem http://www.copyright.gov w moim imieniu zapobiec jakimkolwiek sporom prawnym w przyszłości? Czy mogę wykorzystać go jako dowód do obrony prawnej?** Czy dodanie adnotacji określającej firmę A jako wyłącznego posiadacza licencji może wyjaśnić ustalenia? 3. **Jeśli odejdę, a firma A pozwie mnie, jakie dowody wykorzystają przeciwko mnie? Na jakiej podstawie mieliby pozywać, skoro ich działalność jest w zupełnie innej branży niż oprogramowanie (towary hurtowe). Każdy pojedynczy plik źródłowy został utworzony/przechowany na moim komputerze osobistym wraz z odpowiednią dokumentacją, w tym notą o prawach autorskich z moimi danymi uwierzytelniającymi (imię/e-mail/adres/telefon).** Warto również zauważyć, że przed zaangażowaniem opracowuję znaczną część oprogramowania z firmą A jako student. 4. **Jeżeli jestem zmuszony do podpisania umowy, a firma A nie przestrzega ustnego porozumienia, wysuwając roszczenia wobec własności, co mogę zrobić zgodnie z prawem?** Lubię całkowicie unikać procesu prawnego, ponieważ mój budżet na bitwy sądowe jest obecnie bardzo ograniczony. 5. **Czy zmiana kodu nie do poznania i użycie go dla firmy B uniemożliwi firmie A zgłoszenie jakichkolwiek roszczeń dotyczących praw autorskich?** Mój zdrowy rozsądek podpowiada mi, że to, co stworzyłem, jest domyślnie moje pod względem własności intelektualnej, chyba że istnieje podpisana umowa prawna stanowiąca inaczej. Ale patrząc w Internecie może to być całkowicie odwrotne, to naprawdę mnie martwi. _Rozumiem, że to nie jest porada prawna i wiem, że aby uzyskać ostateczną odpowiedź, muszę zatrudnić prawnika. Mam tylko nadzieję, że uzyskam cenny wkład/doświadczenie/poradę/opinię od tych, którzy byli w podobnej sytuacji lub znają temat._ Dziękuję, PT


title: Czysty C++ dla aplikacji na iOS

text: Czy do tworzenia aplikacji na iOS można używać tylko C++? Czy jest to jakiś minus? Czytałem gdzieś, że musisz użyć kombinacji celu C i C++, jeśli chcesz używać C++ tak źle.


title: Przestrzenie nazw i nazewnictwo

text: Mam problemy z rozpracowaniem tego, prawdopodobnie bardziej niż powinienem. To dość duży projekt, o bardzo jasno określonej strukturze, bez oczywistych problemów, ale nie mogę znaleźć optymalnego rozwiązania dla tego przypadku, nawet po przeczytaniu kilku dokumentów z konwencji i tym podobnych. Na przykład, biorąc pod uwagę następującą przestrzeń nazw: \vendor\core\lib\view; Oczywiście odnosi się do przestrzeni nazw "view" ... która technicznie ma w sobie również klasę "view": \vendor\core\lib\view\view To wyraźnie nie jest idealne, ale nie mogę wymyślić lepszego sposób ich nazwania. Weźmy na przykład przestrzeń nazw pamięci podręcznej: \vendor\core\lib\cache; To samo, klasa pamięci podręcznej staje się myląca, gdy znajduje się w tej przestrzeni nazw: \vendor\core\lib\cache\cache; Czy mam po prostu przenieść te „podstawowe” klasy z ich przestrzeni nazw i umieścić je w nadrzędnej przestrzeni nazw? \vendor\core\lib\cache (klasa) \vendor\core\lib\cache\adapter\redis (klasa) A może jest lepsze określenie na określenie tego typu klas? Wybacz mi cykliczność, jest trochę za późno, a moja głowa nie do końca pracuje w optymalnym stanie.


title: Wywiad z pytaniami na temat C++ dla programistów z doświadczeniem głównie w Java/.NET

text: Jakie pytania zadałby kandydat z doświadczeniem głównie w Java/.NET (10 lat+) podczas rozmowy kwalifikacyjnej na stanowisko w C++?


title: Programy, które twierdzą, że nie są przyjazne dla wielu rdzeni

text: Widzisz to zdanie lub podobne zdanie od czasu do czasu, ogólnie odnoszące się do programu, który twierdzi, że nie został zaprojektowany do pełnego wykorzystania procesorów wielordzeniowych. Jest to powszechne zwłaszcza w przypadku programowania gier wideo. (oczywiście wiele programów nie ma współbieżności i jej nie potrzebuje, np. podstawowe skrypty itp.). Jak to może być? Wiele programów (zwłaszcza gier) z natury korzysta ze współbieżności, a ponieważ system operacyjny odpowiada za planowanie zadań na procesorze, to czy te programy z natury nie wykorzystują dostępnych wielu rdzeni? Co w tym kontekście oznaczałoby „wykorzystanie wielu rdzeni”? Czy ci programiści faktycznie zabraniają planowania zadań systemu operacyjnego i wymuszania koligacji lub własnego planowania? (Brzmi jak poważny problem ze stabilnością). Jestem programistą Java, więc może nie miałem do czynienia z tym z powodu abstrakcji czy czegoś takiego.


title: W mojej aplikacji używaj słowa „Apple” i „Safari”

text: Tworzę aplikację i chcę użyć dwóch słów gdzieś w mojej aplikacji. Najpierw chcę użyć słowa „Safari” w opcji menu, która oznacza „Otwórz w Safari” (dla adresu URL). Drugie to słowo „Apple” na moich stronach z Warunkami, gdzie chcę go użyć w wyrażeniu „...jak dostarczone przez Apple”, odnosząc się do technologii i API dostarczonych przez Apple. Czy mogę ich używać, a jeśli tak, w jakich warunkach? (może dodanie znaków "TM" lub "Copyright"?). Dziękuję.


title: Jak działają aplikacje czyszczące pamięć?

text: Jeśli chodzi o architekturę systemu operacyjnego, co oznacza oprogramowanie czyszczące pamięć, aby pozbyć się wszystkich danych wypełniających pamięć wirtualną? Zakładam, że po prostu zapisuje wszystkie dane RAM do pliku, ale jak to dokładnie robi? Co się stanie, jeśli usuniesz plik podczas wykonywania procesu, który ma zasoby w tym pliku? Mam nadzieję, że to nie jest zbyt szerokie pytanie.


title: Co zyskam stosując w tym przypadku wzorzec Strategia?

text: Napisałem program w Javie, który odtwarza prostą muzykę. Obecnie akordy mają tylko jeden sposób (schemat brzdąkania) do grania. Chcę to rozszerzyć i stworzyć różne „wzorce brzdąkania”, które akordy mogą wykorzystać do grania swoich nut. Klasa `Chord` posiada metodę `play()`, która jest odpowiedzialna za zagranie akordu. Obecnie zawiera logikę jedynego „wzoru brzdąkania” sposobu grania nut. Aby dodać nowe wzorce brzdąkania, najprostszym sposobem jest zmiana `play()` na coś takiego: void play(int strummingStyle){ if(strummingStyle == REGULAR_STYLE) playRegular(); if(strummingStyle == COŚ_INNEGO_STYLU) playSomethingElse(); // .. etc } Mieć metodę dla każdego stylu brzdąkania i sparametryzować metodę, aby odtwarzać określony styl. Jednak użycie wzorca Strategia wydaje się lepszym podejściem. Chodzi mi o to, aby zawrzeć każdy wzorzec struming w podklasie `StrummingPattern` i ustawić `Chord` na określony wzorzec strumming: `chord.setStrummingPattern(StrummingPattern pattern);`. `play()` po prostu deleguje do wzorca brzdąkania w następujący sposób: void play(){ pattern.play(); } Chociaż to wyraźnie **wydaje się** lepsze, bardziej OO podejście — uważam, że nie potrafię sobie wyjaśnić, jakie są rzeczywiste korzyści. I ważne jest dla mnie, aby zrozumieć, dlaczego coś robię. Proszę wyjaśnić, dlaczego stosowanie wzorca Strategia w takim przypadku jest lepszym podejściem niż bardziej naiwne podejście „metoda reprezentuje zachowanie”. **Jakie dokładnie są zalety wzorca Strategia w takiej sytuacji? Dlaczego powinienem go używać?**


title: Obiektywne wskaźniki jakości oprogramowania

text: Istnieją różne rodzaje jakości, które można mierzyć w produktach programowych, m.in. przydatność do celu (np. zastosowanie końcowe), łatwość konserwacji, wydajność. Niektóre z nich są w pewnym stopniu subiektywne lub specyficzne dla danej domeny (np. dobre zasady projektowania GUI mogą różnić się w zależności od kultury lub zależeć od kontekstu użytkowania, myślenie wojskowe lub konsumenckie). Interesuje mnie głębsza forma jakości związana z siecią (lub wykresem) typów i ich wzajemnymi powiązaniami, to znaczy do jakich typów odnosi się każdy typ, czy istnieją wyraźnie identyfikowalne skupiska wzajemnych połączeń odnoszących się do właściwie warstwowa architektura, lub odwrotnie, czy istnieje duża „kula” odniesień do typów (kod „monolityczny”). Również rozmiar każdego typu i/lub metody (np. mierzony ilością kodu bajtowego Java lub .Net IL) powinien wskazywać, gdzie duże złożone algorytmy zostały zaimplementowane jako monolityczne bloki kodu, zamiast rozkładać je na łatwiejsze w zarządzaniu/utrzymywaniu kawałki. Analiza oparta na takich pomysłach może być w stanie obliczyć wskaźniki, które są przynajmniej wskaźnikiem jakości. Podejrzewam, że dokładny próg/punkty decyzyjne pomiędzy wysoką i niską jakością byłyby subiektywne, np. ponieważ przez pielęgnowalność rozumiemy pielęgnowalność przez ludzkich programistów, a zatem rozkład funkcjonalny musi być zgodny z tym, jak działają ludzkie umysły. W związku z tym zastanawiam się, czy kiedykolwiek może istnieć matematycznie czysta definicja jakości oprogramowania, która wykracza poza wszelkie możliwe oprogramowanie we wszystkich możliwych scenariuszach. Zastanawiam się również, czy jest to niebezpieczny pomysł, że jeśli obiektywne proxy dla jakości staną się popularne, to presja biznesowa spowoduje, że programiści będą podążać za tymi wskaźnikami kosztem ogólnej jakości (te aspekty jakości nie mierzone przez proxy). Inny sposób myślenia o jakości jest z punktu widzenia entropii. Entropia to tendencja systemów do powrotu ze stanów uporządkowanych do nieuporządkowanych. Każdy, kto kiedykolwiek pracował nad projektem oprogramowania na średnią lub dużą skalę w świecie rzeczywistym, doceni stopień, w jakim jakość kodu ma tendencję do pogarszania się w czasie. Naciski biznesowe zwykle powodują zmiany, które koncentrują się na nowej funkcjonalności (z wyjątkiem sytuacji, gdy sama jakość jest głównym punktem sprzedaży, np. w oprogramowaniu awionicznym) oraz erozji jakości poprzez problemy z regresją i funkcjonalnością „wbijania butów” tam, gdzie nie pasuje ona dobrze. perspektywę jakości i konserwacji. Czy możemy więc zmierzyć entropię oprogramowania? A jeśli tak, to w jaki sposób?


title: Czy wszystkie programy działają w pętli?

text: Zastanawiałem się, czy wszystkie programy działają w pętli, sprawdzając zmiany zmiennych, a następnie reagując na te zmiany, a następnie kolejną pętlę. A może uruchamiają się w instrukcji While, czekając na zmianę zmiennej przed wykonaniem procedury? Czy po prostu całkowicie się mylę?


title: Jeśli obiekt powinien być oflagowany, czy powinien być zbudowany z atrybutem flag?

text: Załóżmy, że mam podstawowy obiekt z kilkoma istotnymi dla siebie punktami danych. class A(object): def __init__(self, x, y, width, length): self.x = x self.y = x self.width = x self.length = x I tak przechodzimy do utworzenia kilku `A ` obiektów i umieścić je na liście, jak to robią programiści. Załóżmy teraz, że te obiekty trzeba co jakiś czas sprawdzać pod kątem określonego stanu, ale nie musimy ich sprawdzać przy _każdym_ przebiegu, ponieważ ich stan nie zmienia się szczególnie szybko. Czyli metoda sprawdzająca jest napisana gdzieś: def check_for_ticks(object_queue): for obj in object_queue: if obj.checked == 0 i has_ticks(obj): do_stuff(obj) obj.checked -= 1 Ah, ale czekaj - było' t zaprojektowany z atrybutem `obj.checked`! No cóż, Python jest miły i pozwala dodawać atrybuty w dowolnym momencie, więc nieco zmieniamy metodę. def check_for_ticks(object_queue): for obj in object_queue: try: obj.checked =- 1 z wyjątkiem AttributeError: obj.checked = 0 if obj.checked == 0 and has_ticks(obj): do_stuff(obj) To działa, ale daje ja pauza. Moje myśli są pomieszane, ponieważ chociaż jest to atrybut funkcjonalny, który daje obiekt i rozwiązuje problem, to ten atrybut nie jest tak naprawdę używany przez obiekt. `A` prawdopodobnie nigdy nie zmodyfikuje swojego własnego atrybutu `self.checked` i tak naprawdę nie jest to atrybut, o którym 'musi wiedzieć' - jest po prostu niesamowicie wygodne, aby nadać mu ten atrybut mimochodem. Ale -- co, jeśli istnieje wiele metod, które mogą chcieć oflagować obiekt? Z pewnością nie tworzy się klasy z każdym atrybutem, dla którego inna metoda może chcieć ją oznaczyć? Czy powinienem w ten sposób nadawać obiektom nowe atrybuty? Jeśli nie, jaka jest lepsza alternatywa dla nadania im nowych atrybutów?


title: Czy istnieje nazwa tej techniki w testowaniu?

text: Kiedy piszę testy dla jakiegoś kodu i chcę się upewnić, że faktycznie testuje to, co powinno, popsuję lub usuwam testowany kod i sprawdzam, czy testy się nie powiodą. Jeśli nie, mam problem. Czy istnieje nazwa tej techniki? To naprawdę kłopotliwe mówienie zdaniami za każdym razem, gdy chcę komuś zasugerować, że to zrobi.


title: Statyczne czy niestatyczne?

text: Na przykład mam te dwie klasy: Pierwsza klasa public Przykład { public Example() { } public int ReturnSomething { return 1; } } Druga klasa public Przykład { public Example() { } public static int ReturnCoś { return 1; } } Chcę użyć metody `ReturnSomething`, która z dwóch klas przydzieliła mniej/więcej pamięci? Kiedy używam int x = Example.ReturnSomething; lub gdy używam obiektu Example = new Example(); int x = obiekt.ReturnCos();


title: Dlaczego prywatne metody statyczne?

text: Chciałem tylko wyjaśnić moje pytanie. Jaki jest sens posiadania prywatnej metody statycznej w przeciwieństwie do zwykłej metody z prywatną widocznością? Myślałem, że zaletą posiadania metody statycznej jest to, że można ją wywołać bez wystąpienia klasy, ale skoro jest ona prywatna, czy istnieje nawet sens, by była statyczna? Jedynym powodem, o którym mogę pomyśleć, jest to, że pomaga koncepcyjnie zrozumieć metodę na poziomie klasy, a nie na poziomie obiektu.


title: Zasada odwrócenia zależności a „Program do interfejsu, a nie implementacja”

text: Próbuję zrozumieć, czym różni się zasada odwrócenia zależności od zasady „program do interfejsu, a nie implementacja”. Rozumiem, co oznacza "Program do interfejsu, a nie implementacja". Rozumiem również, w jaki sposób pozwala na bardziej elastyczne i łatwe w utrzymaniu projekty. Ale nie rozumiem, czym różni się zasada odwrócenia zależności od zasady „Program do interfejsu, a nie implementacja”. Czytałem o DIP w kilku miejscach w sieci i nie wyjaśniło to mojego zamieszania. Nadal nie rozumiem, czym te dwie zasady różnią się od siebie. Dzięki za pomoc.


title: Usługi lokalizacyjne na platformach mobilnych

text: Czy usługi oparte na lokalizacji na urządzeniach mobilnych dokładnie wiedzą, w jakiej branży się znajdujesz, czy też mają tylko ogólne przybliżenie tego, gdzie się znajdujesz i musisz ręcznie zameldować się, aby być konkretnym? Próba sprawdzenia, czy aplikacja w telefonie komórkowym może korzystać z usług lokalizacyjnych w celu określenia, ile danych osób jest w określonej firmie bez konieczności ręcznego meldowania się. Czy jest to możliwe, a jeśli tak, czy byłaby to dokładna informacja, czy luźne przybliżenie? Z góry dziękuję ^ _ ^


title: Jaki projekt jest najlepszy do transformacji danych?

text: Baza danych mojej firmy udostępnia dane wielu aplikacjom zewnętrznym. Więc muszę przekształcić te same dane w wiele widoków _dynamic_. Widzę, że były programista baz danych zaimplementował wiele długich łańcuchów sekwencji wywołań widok-funkcja-procedura, aby dokonać transformacji bardziej wspólnej dla wszystkich zewnętrznych aplikacji. Myślę, że ta architektura i tak długie żądania (przechowywany proc wywołuje funkcję, potem funkcja wywołuje jakiś widok, a ten widok oparty na innym itd.) są problemem wydajnościowym, przynajmniej optymalizator zapytań nie rozwiązuje tych problemów (proszę potwierdzić moje domysły). Czy to dobre podejście? Czy powoduje pogorszenie wydajności? Jeśli tak, w jaki sposób mogę ponownie zaimplementować obiekty bazy danych. W tej chwili widzę następujące kroki, aby to zrobić: * analiza struktury danych źródłowych (dane własne) * analiza wszystkich systemów zewnętrznych (jakie formaty musi zapewniać baza danych) * oddzielne widoki, funkcje, przechowywane procs dla każdego podsystemu zewnętrznego ( Muszę unikać długich łańcuchów, wspólnych dla wielu obiektów DB podsystemów, jeśli jest to przyczyną problemu)


title: Jak obsłużyć Restful Call w stanie RESTless?

text: Mam mały dylemat. Wybieramy nasz DBContext za pomocą dynamicznego konstruktora. Dzieje się tak, ponieważ w obecnej strukturze bazy danych mamy osobny serwer dla każdego „Klienta”. Wszystkie te bazy danych klientów używają tego samego modelu, więc wszystkie mają dokładnie taką samą strukturę. Wprowadź wybierając kontekst, który będzie używany przy każdym połączeniu. Korzystamy z WebApi 2 i Angular. To, co robimy, to na pierwszej „stronie”, którą wybierasz klienta, a my przekazujemy identyfikator klienta i muszę przechowywać tę wartość, dopóki użytkownik nie zdecyduje się na zamianę. Biorąc to pod uwagę, Session i WebApi2 nie są przyjaciółmi. Mam repozytorium podstawowe, które potrzebuje identyfikatora klienta za każdym razem, gdy nawiązywane jest połączenie z jednym z repozytoriów. Musimy sprawdzić, czy używamy odpowiedniego kontekstu dla tego klienta. Więc.... Tam właśnie jestem. Czy powinienem złamać zasady i użyć sesji do przechowywania identyfikatora klienta? Mógłbym użyć mojego kontenera DI do wstrzyknięcia wystąpienia HttpContext.Current do każdego wywołania, aby zignorować fakt, że sesja jest null na WebApiController. Czy istnieje inny sposób na poradzenie sobie z tym?


title: Czy obfitość frameworków ogłupia programistów?

text: Przy wszystkich dostępnych obecnie frameworkach, ORM-ach, wstrzykiwaniu zależności (DI), odwróceniu kontroli (IoC) itp., stwierdzam, że wielu programistów traci lub nie ma umiejętności rozwiązywania problemów potrzebnych do rozwiązywania trudnych problemów. Wiele razy widziałem nieoczekiwane zachowanie wkradające się do aplikacji, a programiści nie byli w stanie naprawdę zagłębić się i znaleźć problemy. Wydaje mi się, że zatraca się głębokie zrozumienie tego, co dzieje się pod maską. **Nie zrozum mnie źle** , nie sugeruję, że te frameworki nie są dobre i nie posunęły branży do przodu, pytam tylko, czy w niezamierzonej konsekwencji programiści nie zdobywają potrzebnej wiedzy i umiejętności do głębokiego zrozumienia systemów.


title: Nauka integracji JavaScript z innymi językami

text: Po zapoznaniu się ze składnią JavaScript, jakie są dobre zasoby do nauki integracji JavaScript z innymi językami (HTML, XML, CSS, PHP) w celu tworzenia prawdziwych, użytecznych aplikacji? Najbardziej interesuje mnie czytanie artykułów lub kodu innych ludzi - nie tak bardzo interesują mnie książki. Zasadniczo zamierzam przejść od programowania rozwiązywania łamigłówek do programowania złożonych aplikacji i przydałoby mi się kilka porad.


title: jaki system dokumentacji technicznej online poleciłbyś?

text: celem jest posiadanie systemu dokumentacji online z następującymi głównymi wymaganiami: * będzie używany głównie jako etap pośredni dla końcowej dokumentacji technicznej wszystkich naszych aplikacji (która prawdopodobnie nigdy nie zostanie ukończona :]). Zwykle używa się go w ten sposób: ktoś ma problem, naprawiam go i natychmiast zapisuję poprawkę. To, co się teraz dzieje, staje się nie do opanowania: ktoś ma problem, ja go naprawiam, zarówno ja, jak i ktoś jesteśmy szczęśliwi, ale 2 miesiące później ktoś inny ma ten sam problem i nikt nie pamięta, jaka była poprawka. * dostępne z dowolnego miejsca, działające za naszym serwerem Apache * zarządzanie użytkownikami/grupami, umożliwiające dostęp tylko do odczytu/odczytu-zapisu/administratora * format nie jest zbyt ważny: wystarczy zwykły tekst, ale styl wiki byłby ładniejszy * tani lub uwolnij kilka moich pomysłów: * po prostu serwuj pliki na udziale plików lub przez ssh (minusy: niezbyt kompatybilne z Windows, plusy: proste, może to być dowolny typ pliku) * trzymaj go w SCM (svn/git, idem jak wyżej) ale łatwiejszy dostęp i kontrola dostępu) * Confluence: używamy już Jira, czy Confluence jest tego warte? Jak integruje się z Jira? * coś innego? Nie wahaj się skomentować tych lub podzielić się swoimi doświadczeniami z innymi systemami.


title: Dlaczego aplikacje internetowe Pythona mogą utrzymywać sesje między restartem, a nie java?

text: Użyłem zarówno webapp2 + GAE dla Pythona, jak i wielu frameworków Java/JEE webapp. Framework WSGI Pythona może utrzymywać użytkowników zalogowanych podczas ponownego wdrażania aplikacji, podczas gdy żadna z platform internetowych Java, które wypróbowałem, nie może tego zrobić. Jeśli ponownie wdrożę, użytkownicy aplikacji internetowej Java zostaną wylogowani, ale jeśli użyję GAE dla Pythona, ponowne wdrożenie nie spowoduje wylogowania użytkowników. Czy jest to ogólna „funkcja” aplikacji internetowych Python vs Java i czy jest to ogólnie prawdą, czy tylko zbiegiem okoliczności, że te, które wypróbowałem, miały te funkcje? Czy istnieje nazwa dla tej funkcji, możliwość utrzymywania użytkowników zalogowanych między ponownymi wdrożeniami, a także przechowywania pamięci podręcznych (np. memcache) bez usuwania pamięci podręcznej w celu aktualizacji aplikacji =


title: Jak uniknąć błędu pamięci?

text: Pracuję z dość dużymi plikami (pytables) i mam problemy z `błędem pamięci` podczas próby załadowania danych do przetworzenia. Chciałabym podpowiedzieć jak tego uniknąć w moim pytonie 32bitowym, skoro jestem nowa z pandami i pytablesami, a nie wiem jak pracować z dzieleniem danych na małe kawałki. Moje obawy pojawiają się również, gdy mogę podzielić dane, jak obliczyć statystyki, takie jak średnia, std itp., Nie mając całej listy lub tablicy itp. To jest próbka kodu, którego teraz używam, działa to dobrze z małymi tabelkami: def getPageStats(ścieżkaDoH5, strony, wersje, arkusze): with openFile(ścieżkaDoH5, 'r') as f: tab = f.getNode("/pageTable") dversions = dict((i, None) for i w wersjach) dsheets = dict((i, None) for i in Sheets) dpages = dict((i, None) for i in pages) df = pd.DataFrame([[wiersz['strona'],wiersz['index0 '], row['value0'] ] for row in tab.where('(firstVersion == 0) & (ok == 1)') if row['version'] in dversions i row['sheetNum'] in dsheets i row['pages'] in dpages ], columns=['page','index0', 'value0']) df2 = pd.DataFrame([[row['page'],row['index1'], row['value1'] ] for row in tab.where('(firstVersion == 1) & (ok == 1)') if row['version'] in dversi ons i row['sheetNum'] in dsheets i row['pages'] in dpages], column=['page','index1', 'value1']) for i in dpages: m10 = df.loc[df[ 'page']==i]['index0'].mean() s10 = df.loc[df['page']==i]['index0'].std() m20 = df.loc[df[ 'page']==i]['value0'].mean() s20 = df.loc[df['page']==i]['value0'].std() m11 = df2.loc[df2[ 'page']==i]['index1'].mean() s11 = df2.loc[df2['page']==i]['index1'].std() m21 = df2.loc[df2[ 'page']==i]['value1'].mean() s21 = df2.loc[df2['page']==i]['value1'].std() wydajność (i,m10, s10) , (i,m11, s11), (i,m20,s20), (i,m21,s21)) Jak widać, ładuję wszystkie niezbędne dane do DataFrame Pandas, aby je przetworzyć, tylko średnią i do tej pory. To dość szybko, ale za pytable z 22Millions rzędów dostaję `Memory Error`


title: algorytm odcisku palca treści

text: Mam bazę danych zawierającą tylko proste adresy URL. Na razie jest to tak proste, jak się wydaje, a adres URL może prowadzić do strony internetowej lub dokumentu (tj. Wszystko, co można przeanalizować do tekstu). Teraz mam prosty kod, który wstawia rekordy do bazy danych. Problem polega na tym, że strona internetowa/dokument może być w rzeczywistości taka sama, po prostu: * Hostowana gdzie indziej * Niedostępna, tak podlinkowana z Google Cache * Niedostępna, tak podlinkowana z archive.org * Strona może być ponownie opublikowana z innego źródła * itp... _ **Chcę uzyskać jakiś odcisk palca strony internetowej/dokumentu i wymyślę, jak to zrobić._** Co pomyślałem: **Mogę polegać na tytule**, bo nawet jeśli treść jest gdzieś publikowana w innym przypadku lub w pamięci podręcznej na jakimś serwerze prawdopodobnie będzie miał ten sam tytuł. W porządku, ponieważ tytuł jest zwykle krótki i nie zajmuje dużo miejsca. Minusem - działa to tylko na stronie. Być może nazwa pliku jest odpowiednia dla dokumentów, ale można je również zmienić. **Mogę polegać na liczbie słów kluczowych** Problem polega na tym, że po prostu wpisuję adres URL i nie ma słów kluczowych ani nie chcę tego robić. Jest to prosty mechanizm przechowywania adresów URL. **Mogę uzyskać jakąś sumę kontrolną całej zawartości** Ale ta metoda byłaby całkowitym przypuszczeniem. **MOJE PYTANIE TO:** Jak mogę odciskać palcami zawartość, aby później móc zidentyfikować możliwe duplikaty? **EDYTUJ** Nie chcę odciskać palca tylko tytułu. Chcę pobrać odcisk palca całej treści. Treść pozostaje taka sama, ale może być hostowana w dowolnym miejscu, a jej struktura (także tytuł) może się zmienić. W przypadku dokumentów - nazwa pliku też może się zmienić. Chcę pobrać odcisk palca zawartości. Cały tekst, abym mógł później zidentyfikować możliwe duplikaty.


title: Licencje mieszane wewnątrz produktu

text: To pytanie dotyczy licencjonowania oprogramowania. Ktoś zaznajomiony z licencjonowaniem typu open source może być w stanie odpowiedzieć na to pytanie. Mam problem z interpretacją/zrozumieniem niektórych licencji ze względu na barierę językową (angielski nie jest moim językiem ojczystym). Moja sytuacja jest taka, że używam trzech produktów w dystrybuowalnym produkcie komercyjnym o zamkniętym źródle. Są to: * Jersey (Common Development and Distribution License) * Jetty (Dual Apache i Eclipse) * RXTX (LGPL) Powyższe narzędzia nie są modyfikowane w moim projekcie i są używane "tak jak są" dołączone do Mavena. Moje pytanie brzmi, jakie kroki powinienem podjąć, aby mieć całkowitą pewność, że nie naruszam żadnych umów licencyjnych? Czy powinienem (na przykład): * Umieścić jakieś informacje w pliku README, w którym używam tego oprogramowania? * Wydrukować coś w wierszu poleceń? * Czy powinienem umieścić pełne teksty licencyjne tych narzędzi w osobnych plikach (ale może to być mylące dla klienta, ponieważ mój produkt nie ma żadnej Licencji)? * Czy mogę rozpakować te pliki tekstowe licencji podczas pierwszego uruchomienia JAR? Szukam praktycznych informacji, niekoniecznie od prawników.


title: Warstwa dostępu do danych dla aplikacji

text: Pracuję nad aplikacją detaliczną, w której obecnie używam surowego SQL, takiego jak wstawiaj do wartości some_table (Textbox1.Text, Textbox2.Text, ...) i aktualizuję some_table set some_column = value for save and update, ale problemem jest ja trzeba to napisać wszędzie tam, gdzie potrzebne jest zapisanie lub aktualizacja. Czy istnieje lepsze rozwiązanie do obsługi operacji CRUD, takie jak oddzielna klasa zawierająca logikę dostępu do danych, która używałaby metod w warstwie dostępu do danych do wykonywania operacji CRUD?


title: Jak połączyć Google Analytics z relacyjną bazą danych

text: Mam stronę internetową z dużą liczbą zarejestrowanych użytkowników, którzy są przechowywani w bazie danych PostgreSQL. Prowadzę również na stronie Google Analytics do śledzenia użytkowników. Czy istnieje możliwość indywidualnego połączenia danych GA z danymi rejestracyjnymi z serwisu, np.: znaleźć adres e-mail użytkownika, którego znaleźliśmy w GA? Czy istnieje sposób, aby osoby nietechniczne mogły uzyskać dostęp do bazy danych SQL bez znajomości języka SQL? Dziękuję!


title: Automatyzacja testów w przeglądarce nieobsługiwanej przez selen

text: Pracuję w firmie, która posiada system płatności działający pod wykonywalną instancją kiosku programu Internet Explorer 7. gdy aplikacja jest uruchomiona nazwa procesu nie jest podobna do iexplore.exe lub czegoś podobnego. Nazwa procesu Windows jest taka sama jak executable.exe. Nie możemy uruchomić systemu na lokalnym serwerze WWW, ponieważ plik wykonywalny oczekuje, że niektóre strony w czystym .html będą przetwarzać dane i wprowadzać zmiany dla użytkowników. Plik wykonywalny przekazuje informacje do formularzy .html i odwrotnie. Nie możemy więc używać innej przeglądarki. Myślę, że selen nie będzie działać z tą przeglądarką. Jakiś pomysł, jak mogę zautomatyzować testy na interfejsie? **EDIT** Selenium nie powiodło się podczas próby uruchomienia mojego pliku wykonywalnego: _Exception: Nie udało się uruchomić nowej sesji przeglądarki: org.openqa.selenium.server.RemoteCommandException: Błąd podczas uruchamiania przeglądarki_ Myślę, że plik wykonywalny nie jest samą przeglądarką. Jest to tylko plik wykonywalny, który wykonuje pewne zadania związane z bezpieczeństwem, a następnie jakoś wywołuje instancję przeglądarki internetowej. Ale proces przeglądarki internetowej nie pojawia się w procesie Windows.


title: Jakie umiejętności programistyczne używasz najczęściej, w których jesteś kiepski?

text: Jakie są techniki, których używasz prawie codziennie, ale nadal są okropne? Czy jesteś w tym kiepski z powodu trudności zadania, lenistwa w nauce lub z innego powodu?


title: Jak moglibyśmy przepisać licencję „Bez zła”, aby uczynić ją „wolną”?

text: Nie znalazłem strony SE prawników, więc pomyślałem, że najlepiej tu zamieścić. /* * ...z zastrzeżeniem następujących warunków: * * Powyższa informacja o prawach autorskich i niniejsza informacja o zezwoleniu będą dołączone do wszystkich * kopii lub istotnych części Oprogramowania. * * Oprogramowanie powinno być używane dla dobra, a nie dla zła. * * OPROGRAMOWANIE JEST DOSTARCZANE "TAK JAK JEST"... */ To jest licencja "niewolna", Crockford, No-Evil, w stylu MIT. Ta licencja jest uważana za niewolną z powodu wyrażenia: „ **Oprogramowanie powinno być używane w dobrym, a nie złym”. ?


title: Wykonanie podstawowego komputera, który dodaje numer podany przez użytkownika

text: Z jakimi rzeczami powinienem się zapoznać, aby zrobić własny komputer, który potrafi dodawać dwie liczby w taki sam sposób, jak w kalkulatorze? Czy ktoś może mi podać linki, które szczegółowo uczą tych rzeczy? Umiem programować, ale nigdy nie programowałem na poziomie głównym.


title: Jak zidentyfikować i uruchomić najbardziej odpowiednie testy automatyczne?

text: Załóżmy, że masz dość dużą bazę kodu (0,5 - 1 msloc) z dużym zestawem testów (6-7 godzin jednowątkowego środowiska uruchomieniowego; z mieszanką testów jednostkowych i testów integracyjnych zbudowanych przy użyciu różnych narzędzi). Masz proponowaną łatkę (lub diff lub pull-request) dla bazy kodu i chcesz automatycznie uruchomić najbardziej _odpowiednie_ testy. Przeprowadzenie _wszystkich_ testów byłoby zbyt kosztowne. Przeprowadzanie testów dymu byłoby zbyt płytkie. Celem jest znalezienie czegoś pomiędzy. Automatyzując wybór odpowiednich testów, możesz pomóc nowym programistom w uczestniczeniu w TDD – i dostarczać na czas informacje zwrotne przed scaleniem (w ramach przeglądu kodu). Jakich technik lub rozwiązań użyłbyś, aby zidentyfikować „odpowiednie”? (Prosty przykład: jeśli łatka modyfikuje "src/(.*).php", uruchom "phpunit test/{$1}Test.php".) Jakie, jeśli w ogóle, istniejące narzędzia przychodzą Ci na myśl? Lub jakie nowe narzędzia są potrzebne? A może nie jest możliwe, aby oprzyrządowanie mogło pomóc? (Dla kontekstu: w moim konkretnym przypadku pracy pracuję z aplikacjami internetowymi opartymi na LAMP, więc narzędzia lub techniki, które działają z PHP/JS/bash są najbardziej pomocne. Ale podobne problemy prawdopodobnie pojawiają się w przypadku każdej dużej aplikacji/głębokiego stosu, więc przykłady z innych stosów mogą zapewnić wgląd).


title: Jaki jest najbardziej ortogonalny język programowania?

text: Często denerwuje mnie to, że muszę uczyć nowicjuszy o specjalnych regułach językowych (takich jak rozpad tablicy do wskaźnika), które nie mają absolutnie nic wspólnego z programowaniem samym w sobie. Zastanawiałem się więc: jaki jest język programowania z najmniejszą liczbą specjalnych reguł językowych, w którym wszystko jest pierwszej klasy i można je skomponować bez irytujących ograniczeń technicznych? Czy taki język nie byłby idealnym językiem do nauczania? > ### Notatka moderatora > > Szukamy długich odpowiedzi, które dostarczają wyjaśnienia i kontekstu. > Nie wymieniaj tylko języka: wyjaśnij, _dlaczego_ uważasz, że język > odpowiada na pytanie. Odpowiedzi, które niczego nie wyjaśniają, zostaną usunięte. > Zobacz Dobry subiektyw, Zły subiektyw, aby uzyskać więcej informacji.


title: Jaka odpowiednia aplikacja Q & A może zintegrować się z portalem Java?

text: Szukam sugestii, czy **powinniśmy budować** _lub_ **czy istnieją gotowe aplikacje**, które wykonują następujące czynności: * Zezwalaj administratorom na budowanie zorganizowanego przepływu pracy z obsługą pytań i odpowiedzi, podobnie jak w przypadku rozwiązywania problemów z systemem Windows, np. wypróbuj jedną wskazówkę, a otrzymasz następną. * Zezwól użytkownikom końcowym na wyszukiwanie i śledzenie pytań i odpowiedzi Mamy istniejący portal Liferay, do którego chcielibyśmy podłączyć tę aplikację - czy jest jakaś odpowiednia aplikacja, taka jak CMS, która to robi? Mam na myśli budowanie ustrukturyzowanych pytań – nie tylko zwykłej treści, takiej jak wiki. Opcje open source są mile widziane, ale chciałbym również wiedzieć o COTS.


title: Najlepsza praktyka oznaczania błędu jako rozwiązanego w Bugzilli?

text: Zastanawiam się, jak najlepiej poradzić sobie z sytuacją oznaczania błędu jako rozwiązanego i dostarczenia wersji komponentu/produktu, w której można znaleźć tę poprawkę. **Kontekst** W przypadku projektu, nad którym pracuję, używamy Bugzilli do śledzenia problemów i mamy następujące elementy: * Produkt „A” z numerem wersji, takim jak vA.B.C.D, Ten produkt „A” ma następujące komponenty: * Komponent „C1” o numerze wersji jak vA.B.C.D, * Komponent „C2” o numerze wersji jak vA.B.C.D, * Komponent „C3” o numerze wersji jak vA.B.C.D. Wewnętrznie śledzimy, które wersje komponentów zostały użyte do wygenerowania produktu Wersja A vA.B.C.D. Przykład: Produkt „A” w wersji v1.0.0.0 został wyprodukowany z komponentu „C1” v1.0.0.3, komponentu „C2” v1.3.0.0 i komponentu „C3” v2.1.3.5. Produkt „A” w wersji v1.0.1.0 został wyprodukowany z komponentu „C1” v1.0.0.4, komponentu „C2” v1.3.0.0 i komponentu „C3” v2.1.3.5. Każdy komponent jest repozytorium SVN. Osoba odpowiedzialna za generowanie produktu „A” ma dostęp tylko do folderu znaczników różnych komponentów w SVN, a nie do łącza trunk każdego repozytorium komponentów. **Problem** Teraz problem jest następujący, gdy zostanie znaleziony błąd w produkcie „A” i jest on powiązany z komponentem „C1”, wybierana jest wersja produktu „A” (np. v1.0.0 .0), a ta wersja pozwala programiście dowiedzieć się, która wersja komponentu „C1” zawiera błąd (tutaj będzie to v1.0.0.3). Tworzony jest raport o błędzie. Załóżmy teraz, że deweloper odpowiedzialny za komponent „C1” poprawia błąd, a następnie, gdy błąd wydaje się naprawiony i po kilku testach i walidacji, deweloper generuje nowy tag dla komponentu „C1” w wersji v1.0.0. 4. W tej chwili twórca komponentu „C1” musi zaktualizować raport o błędzie, ale co najlepiej zrobić: 1. Oznacz błąd jako rozwiązany/naprawiony i dodaj komentarz „Ten błąd został naprawiony w tagach v1 .0.0.4 składnika C1" ? 2. Zachowaj przypisany błąd, dodaj komentarz „Ten błąd został naprawiony w tagach v1.0.0.4 komponentu C1, zaktualizuj ten stan błędu, aby został rozwiązany dla następnej wersji produktu, która zostanie wygenerowana z najnowszą wersja (v1.0.0.4 z C1)" ? 3. Inny możliwy sposób radzenia sobie z tym problemem. W tej chwili problem polega na tym, że gdy składnik produktu CX zostanie naprawiony, nie jest pewne, w której przyszłej wersji produktu A zostanie on uwzględniony, więc nie mogę powiedzieć, w której wersji produktu zostanie rozwiązany , ale można powiedzieć, w której wersji Component CX został rozwiązany. Kiedy więc musimy oznaczyć błąd jako rozwiązany, gdy wersja produktu A zawiera poprawioną wersję CX, czy tylko wtedy, gdy komponent CX został naprawiony? Dziękujemy za Twoją osobistą opinię i pomysły na ten temat!


title: Czy FPA jest niezgodne z Agile?

text: Obecnie pracuję w projekcie opartym na Agile + SCRUM. Pracuję na niższym poziomie modułu. Prowadzi to do osobliwego problemu. Praca, którą wykonuję, nie może być wielokrotnie bezpośrednio powiązana z historyjką użytkownika. Ponieważ nie mogę powiązać historyjki użytkownika bezpośrednio z moją pracą, często mam problem, że moje wymagania są niejasne. Poza tym mam tendencję do „przeoczenia” kilku rzeczy, które stają się dla mnie jasne dopiero pod koniec sprintu. A pracy moich warstw nie można bezpośrednio przetestować. W podobnym tonie nasz zespół GUI generował wiele błędów z powodu pominięcia drobnych niejawnych wymagań. Na przykład szerokość pola tekstowego była mniejsza niż oczekiwano itp. Używałem FPA wcześniej w innym projekcie i myślę, że jest to dobry sposób na rozbicie wymagań na drobne szczegóły atomowe, wyjaśnienie drobnych punktów, a następnie zbudowanie oprogramowania za pomocą punkty jako listę kontrolną. Naprawdę czułem, że przyniesie to korzyści naszemu projektowi, a zwłaszcza mojej warstwie. Zasugerowałem to na spotkaniu mojego zespołu, ale zostało to odrzucone ze względu na związaną z tym dokumentację. Uzasadnienie „mądrego faceta”: FPA to ciężka dokumentacja, a Agile marszczy brwi na ciężką dokumentację. Twierdziłem, że Agile polega na wytwarzaniu dobrych produktów i jeśli nie można uformować procesu Agile w celu dodania procesu, który zmniejszy defekty i wyprodukuje dobry kod, to po prostu nie jest „zwinny”. W końcu zespół odrzucił propozycję, twierdząc, że nie jest „Zwinna”. jednak podejrzewam, że powodem było raczej lenistwo. Czy FPA jest naprawdę niekompatybilne z Agile ze względu na ilość dokumentacji? A co z wzniosłymi celami Manifestu Agile? Czy to tylko „działający kod” czy „dobry działający kod”?


title: Czy istnieje kanoniczna książka do nauki Javy jako doświadczony programista?

text: Jestem programistą .NET od około 5/6 lat. Nigdy nie zajmowałem się profesjonalnym programowaniem w języku Java, a ostatni raz, kiedy naprawdę go dotknąłem, prawdopodobnie jeszcze na studiach. Bawiłem się trochę językiem Scala, ale nic poważnego. Ostatnio zaoferowano mi możliwość wykonania całkiem fajnej pracy, ale używając Javy zamiast .NET. Myślę, że mogę sobie poradzić z moim obecnym zestawem umiejętności, co oznacza, że już wiem, jak dobrze programować i znam języki takie jak C# i C++, itp. Tak więc składnia i wszystkie te językowe rzeczy naprawdę nie stanowią problemu. To, czego potrzebuję, to naprawdę dobra książka informacyjna i książka o tym, jak myśleć w Javie. Każdy język/framework/stack stara się rozwiązywać problemy w określony sposób i jestem pewien, że Java nie jest inna. Jakie są wspaniałe książki Java, bez których po prostu nie możesz żyć? Czy są jakieś książki, które mówią o najważniejszych częściach Javy, które należy zrozumieć przede wszystkim? Na marginesie, będę zajmować się głównie tworzeniem stron internetowych w Javie. Niezupełnie 100% od tego, jakiego rodzaju rzeczy używają do trwałości, frameworka, serwera itp.


title: Efektywna Java dla doświadczonych programistów Java?

text: Posiadam i czytam 'Java Puzzlers', 'Czysty kod' i 'Wzorce projektowe' GOF'a i bardziej szczegółowe książki technologiczne, jednak nie przeczytałem jeszcze 'Efektywnej Java'. Ilekroć widzę listę książek, które trzeba przeczytać, zawsze widzę kopię „Efektywnej Javy”, ale odłożyłem ją, widząc, że jest to książka do nauki pisania w Javie, a nie pisanie lepszej książki w Javie. Czy nadal warto go przeczytać, a nawet kupić. Co jest szczególnego w tej książce, czego mi brakuje, nie czytając jej. Znam swoje wzorce projektowe i ćwiczę TDD i próbuję pisać czysty kod :), co zyskam dzięki tej książce?


title: Najskuteczniejszy sposób na naukę javy, jeśli już umiesz kodować?

text: > **Możliwy duplikat:** > Czy istnieje kanoniczna książka do nauki Javy jako doświadczony programista? Koduję od blisko 25 lat w basic (C64 i Amiga), (Object) Pascal, C, LPC, a od kilku lat w Pythonie. Python jest zdecydowanie moim ulubionym (i najsilniejszym) językiem. Jednak ostatnio zostałem zmuszony do robienia rzeczy w Javie - do tej pory nigdy nie napisałem ani jednej linijki kodu java. Proszę więc o radę - jaki jest najszybszy i najskuteczniejszy przyspieszony kurs do nauki javy. **EDYTUJ** : Naprawdę szukam czegoś w stylu _nauczanie java ludzi, którzy wiedzą, jak kodować i czym jest OOP_ \- nie coś, co ma _bez wcześniejszego doświadczenia w programowaniu_ w streszczeniu.


title: jaka jest najlepsza książka do nauki zoptymalizowanego programowania w java

text: > **Możliwy duplikat:** > Czy istnieje kanoniczna książka do nauki Javy jako doświadczony programista? > Pozwólcie, że trochę rozwinę: kiedyś byłem programistą C/C++, gdzie używałem koncepcji struktury danych, takiej jak drzewa, stos kolejek itp. i próbowałem zoptymalizować jak najwięcej, minimum nie. pętli, zmiennych i starałem się, aby był wydajny. Minęło kilka lat, odkąd zacząłem pisać kody java, ale po prostu nie jest to tak wydajne pod względem wydajności, dużej ilości pamięci itp. > Do rzeczy: Chcę wprowadzić **wyzwania programistyczne** używając javy, więc muszę poprawić moje podejście do rzeczy, które programuję. Więc proszę zasugeruj mi kilka książek, które pomogą mi lepiej nauczyć się programować i mieć szansę na rozwiązywanie problemów w programowaniu.


title: Koncepcja OOP: czy można zaktualizować klasę skonkretyzowanego obiektu?

text: Próbuję napisać prosty program, który powinien umożliwiać użytkownikowi zapisywanie i wyświetlanie zbiorów danych heterogenicznych, ale w jakiś sposób powiązanych. Dla jasności posłużę się reprezentatywnym przykładem pojazdów. Przebieg programu wygląda następująco: 1. Program tworzy obiekt **Garaż**, który jest w zasadzie klasą, która może zawierać listę obiektów pojazdów 2. Następnie użytkownik tworzy obiekty **Pojazdy**, te **Pojazdy ** każdy ma właściwość, powiedzmy _Rejestr nr_. Po utworzeniu obiekt **Pojazd** zostaje dodany do listy w obiekcie **Garaż** 3. \-- ** _Później_** \--, użytkownik może określić, że dany **Pojazd** obiekt jest w rzeczywistości obiektem **Samochód** lub obiektem **Ciężarówka** (co daje dostęp do pewnych określonych atrybutów, takich jak _Liczba miejsc_ w przypadku Samochodu lub _Waga ładunku_ w przypadku ciężarówki) Na pierwszy rzut oka może to wyglądać jak w podręcznikowym pytaniu OOP obejmującym klasę bazową i dziedziczenie, ale problem jest bardziej subtelny, ponieważ w czasie tworzenia obiektu (i dopóki użytkownik nie zdecyduje się podać więcej informacji), komputer nie zna dokładnego typu pojazdu. Stąd moje pytanie: **jak byś przystąpił do wdrożenia tego przepływu programu? Czy OOP jest właściwą drogą?** Aby udzielić wstępnej odpowiedzi, oto co wymyśliłem do tej pory. Istnieje tylko jedna klasa pojazdu, a różne właściwości/wartości są obsługiwane przez program główny (nie klasę) za pośrednictwem słownika. Jestem jednak pewien, że musi istnieć bardziej eleganckie rozwiązanie (programuję przy użyciu VB.net): Public Class Garage Public GarageAdress As String Private _ListGarageVehicles As New List(Of Vehicles) Public Sub AddVehicle(Vehicle As Vehicles) _ListGarageVehicles.Add(Vehicle) End Sub End Class Public Class Vehicles Public LicensePlateNumber As String Public Enum VehicleTypes Generic = 0 Car = 1 Truck = 2 End Enum Public VehicleType As VehicleTypes Public DictVehicleProperties As New Dictionary(Of String, String) End Class w powyższym przykładzie modyfikatory publiczne/prywatne niekoniecznie odzwierciedlają oryginalny kod


title: Zasoby dotyczące koncepcji/teorii stojących za tworzeniem GUI?

text: Zastanawiałem się, czy istnieją jakieś zasoby wyjaśniające koncepcje/teorię stojącą za rozwojem GUI. Nie mam na myśli zasobu, który wyjaśnia, jak korzystać z biblioteki GUI, ale raczej jak tworzyć własne widżety. Na przykład zasób, który wyjaśnia różne metody implementacji przewijalnych list. Pytam, bo mam pomysł na narzędzie do gry, w którym chciałbym stworzyć własne widżety i pozwolić użytkownikom przeciągać je i upuszczać na jakąś formę. W jaki sposób biblioteki GUI zwykle rysują widżety? Nie jestem pewien, czy zmiana skórki widżetów z biblioteki GUI pasuje do moich potrzeb, ponieważ zachowanie widżetów musi być dynamiczne, oparte na interakcji użytkownika.


title: Jakie są prawidłowe przypadki testowe dla wywołań metod w warunku if-else?

text: Mam usługę rabatową, do której dzwonię, jeśli spełnione są określone warunki. Muszę napisać przypadki testowe, aby sprawdzić, czy usługa rabatowa jest wywoływana. Moje wątpliwości to sprawdzenie, czy usługa rabatu NIE jest wywoływana dla typu 4 i 5 jest poprawnym scenariuszem przypadku testowego. public void ApplyDiscount(int typeId, double kwota) { if(typeId == 1) { //wywołanie usługi rabatowej } else if(typeId == 2) { //wywołanie usługi rabatowej } else if(typeId == 4) { / /zrób inne rzeczy } else if(typeId == 5) { //zrób inne rzeczy } }


title: Jaką kontrolę wersji ma najlepszy silnik scalający?

text: Jeśli chodzi o łączenie, każda wersja sterowania ma swój silnik, który to robi. Konflikty są nieuniknione, ale pytanie brzmi – która kontrola wersji ma najlepszą sztuczną inteligencję, aby uniknąć konfliktu. Czy można coś takiego zmierzyć? Mówiąc dokładniej, myślimy o przejściu na GIT, ponieważ ma fajny szum i plotki, które lepiej radzą sobie z konfliktami... Każdy komentarz jest mile widziany...


title: Czy historyjka użytkownika powinna być udostępniana między programistami?

text: Często widuję historie, które mają back-end i front-end development. Rozważmy na przykład duże okno dialogowe z kilkoma tabelami i kilkoma dynamicznymi kontrolkami. Stworzymy kilka historii (może po jednym dla każdego stołu i innym dla dynamicznego systemu sterowania). Zespół programistów podzieli się wtedy z jedną osobą na zapleczu, a drugą na froncie. Ułatwia to osobie zajmującej się zapleczem tylko martwienie się o strukturę warstwy SQL, podczas gdy osoba od frontu skupia się na takich rzeczach, jak układ. Po uzgodnieniu wstępnego interfejsu między back-endem a front-endem, dwaj programiści mogą skupić swoją uwagę na wykonaniu swojej części do końca sprintu. Potem przychodzi chaos. Kto „posiada” jaką historię? Co oznacza „w toku” lub „zrobione”? Czy powinniśmy stworzyć dwie oddzielne historie dla back-endu i front-endu? Jeśli tak, czy nie łamie to idei historyjek użytkownika opartych na funkcji? Nasz system ma pojęcie „podzadań”, co łagodzi niektóre z tych problemów. Ale pod-zadania dodają dodatkowej złożoności. Czy jest lepszy sposób? Czy to „zły” sposób korzystania ze Scruma? W ciągu ostatnich kilku lat korzystałem z różnych form Agile w kilku miejscach. Nie mam jeszcze oficjalnego szkolenia, więc proszę wybaczcie błędną terminologię lub ideologię. Po prostu próbuję nauczyć się praktycznych sposobów na ulepszenie naszego procesu.


title: Użyj globalnych zmiennych lub metod w interfejsie API

text: Obecnie projektuję bibliotekę graficzną w Javie, a teraz przyszło do tworzenia frontendu Jestem ciekawy, dlaczego nigdy nie widziałem bibliotek używających zmiennych globalnych do swoich ustawień/właściwości - w rzeczywistości niektóre robią wszystko, aby je chronić, takie jak JavaScript biblioteki i oczywiście wybierają metody pobierania i ustawiania, takie jak: Viewport.VSyncEnabled(true) zamiast po prostu Viewport.VSyncEnabled = true; Zakładam, że ma to na celu poinformowanie biblioteki, co się dzieje, ale jest tak wiele zmiennych, które po prostu nie wymagają monitorowania, takich jak dane wyjściowe debugowania. Naprawdę chciałbym użyć zmiennych globalnych, ale jeśli jest to bardzo sprzeczne z konwencją i są korzyści (o których w tej chwili nie wiem), to z przyjemnością użyję metod. Moim powodem, dla którego chcę zamiast tego użyć zmiennych globalnych, jest to, że dzięki moim testom porównawczym szybciej jest uzyskać bezpośredni dostęp w ten sposób.


title: Projektowanie klas z relacjami dwukierunkowymi

text: To pytanie czysto projektowe. Chcę przenieść fajną edukacyjną "grę" Bug Brain na Javę. W tej grze projektujesz sieci neuronowe składające się z trzech elementów: neuronów, węzłów i synaps. Neuron jest używany do wykonywania pewnego rodzaju przetwarzania na swoich sygnałach wejściowych w celu uzyskania pożądanego wyjścia; może być połączony z innymi neuronami/węzłami (połączenia są jednokierunkowe i ważone). Możemy myśleć o węzłach jak o węzłach - mogą być również połączone z innymi neuronami/węzłami (a te połączenia są również jednokierunkowe i ważone), ale wagi nie możemy zmienić wag połączeń wejściowych. Synapsa to połączenie tych dwóch elementów. Podsumowując: neurony i węzły mają zarówno wejścia jak i wyjścia (do innych neuronów/węzłów) i wykonują pewne przetwarzanie wejścia->wyjścia. P: Teraz, jak zaprojektowałbyś tę strukturę klas? To jest szkic, który do tej pory „wyprodukowałem”: zrzut ekranu projektu Ponieważ operacja „połącz dwa złącza (tj. neuron/węzeł)” ma trzy obowiązki (dodaj synapsę, dodaj wyjście do złączenia A, dodaj wejście do złączenia B) I' Postanowiłem umieścić go jako metodę statyczną w klasie kontrolera. Oczywiście mógłbym uniknąć takich dwukierunkowych relacji między elementami: nie muszę śledzić wyjść, tylko dane wejściowe, ale są też inne ograniczenia, m.in. może być tylko 8 wejść/wyjść na złącze, więc musiałbym iterować po wszystkich synapsach za każdym razem, gdy dodam połączenie, aby sprawdzić, czy jest jeszcze jakieś miejsce, w którym można je dodać. W tym przypadku (ta gra) nie będziesz miał zbyt wielu połączeń, więc nie wpłynie to na wydajność, ale chciałbym wiedzieć, jak ogólnie radzić sobie z takimi sytuacjami. Ponieważ jest to podstawą całej logiki tego projektu, chciałbym, aby została wykonana poprawnie. Wszystkie sugestie są mile widziane ;)


title: Jaka jest koncepcja pisania operacji anulowania w c++?

text: Próbuję napisać operację anulowania dla aplikacji do pobierania oprogramowania. Ta aplikacja najpierw przeniesie oprogramowanie na urządzenie, a następnie zainstaluje na nim oprogramowanie. (Są to dane, których nie wolno mi zmieniać). Co powinna zrobić operacja anulowania? Gdy użytkownik naciśnie przycisk „Anuluj”, aplikacja powinna natychmiast przestać przenosić/instalować oprogramowanie. Pytanie: Ponieważ nigdy nie napisałem funkcji „anuluj”, zastanawiam się, jakie rzeczy należy wziąć pod uwagę podczas pisania kodu i jakich typowych błędów powinienem się spodziewać i jak sobie z nimi radzić? Nie mogę znaleźć niczego w google, więc jeśli masz jakieś linki, które byłyby dobre, będę bardzo wdzięczny, ponieważ nie szukam odpowiedzi, szukam tylko wskazówek/makro/pomocy koncepcji


title: Dlaczego C# i Java używają równości odwołań jako domyślnej dla '=='?

text: Zastanawiałem się przez chwilę, dlaczego Java i C# (i jestem pewien, że inne języki) domyślnie odwołują się do równości dla `==`. W programowaniu, które robię (które z pewnością jest tylko małym podzbiorem problemów programistycznych), prawie zawsze chcę równości logicznej podczas porównywania obiektów zamiast równości referencji. Próbowałem zastanowić się, dlaczego oba te języki poszły tą drogą zamiast odwracać ją i mieć `==` być logiczną równością i używać `.ReferenceEquals()` do równości referencyjnej. Oczywiście użycie równości referencji jest bardzo proste do zaimplementowania i daje bardzo spójne zachowanie, ale nie wydaje się, aby pasowało to dobrze do większości praktyk programistycznych, które widzę dzisiaj. Nie chcę wydawać się ignorantem problemów z implementacją logicznego porównania i tego, że musi być zaimplementowane w każdej klasie. Zdaję sobie również sprawę, że te języki zostały zaprojektowane dawno temu, ale ogólne pytanie pozostaje. Czy istnieje jakaś główna korzyść z niewykonania tego, czego po prostu mi brakuje, czy też wydaje się rozsądne, że zachowanie domyślne powinno być równością logiczną, a powrót do równości odwołań, jeśli równość logiczna nie istnieje dla klasy?


title: Obiekty JavaScript i Dobre części Crockforda

text: Ostatnio dużo myślałem o tym, jak zrobić OOP w JS, zwłaszcza jeśli chodzi o enkapsulację i dziedziczenie. Według Crockforda, klasyczne jest szkodliwe z powodu new(), a zarówno prototypowe, jak i klasyczne są ograniczone, ponieważ ich użycie konstruktora.prototype oznacza, że nie można używać domknięć do enkapsulacji. Ostatnio rozważyłem kilka punktów dotyczących enkapsulacji: 1. Enkapsulacja zabija wydajność. Sprawia, że dodajesz funkcje do KAŻDEGO obiektu członkowskiego, a nie do prototypu, ponieważ metody każdego obiektu mają różne domknięcia (każdy obiekt ma różne prywatne składowe). 2. Enkapsulacja wymusza brzydkie obejście "var that = this", aby prywatne funkcje pomocnicze miały dostęp do instancji, do której są dołączone. Albo tak, albo upewnij się, że dzwonisz do nich z privateFunction.apply(this) za każdym razem. Czy istnieją rozwiązania dla jednego z dwóch wymienionych przeze mnie problemów? jeśli nie, czy nadal uważasz, że warto enkapsulacja? Uwaga na marginesie: wzorzec funkcjonalny, który opisuje Crockford, nie pozwala nawet na dodawanie publicznych metod, które dotykają tylko publicznych członków, ponieważ całkowicie rezygnuje z użycia new() i constructor.prototype. Czy podejście hybrydowe, w którym używasz klasycznego dziedziczenia i new(), ale także wywołujesz Super.apply(this, arguments) do inicjalizacji prywatnych składowych i uprzywilejowanych metod, nie byłoby lepsze?


title: Potrzebujesz porady: Pozostajesz techniką lub idziesz na MBA?

text: Wiem, że to bardzo subiektywne pytanie i jestem najlepszą osobą, aby sama o tym decydować... ale szukam tylko Twoich poglądów. Posiadam 5-letnie doświadczenie jako profesjonalny programista. Mam przyzwoite wykształcenie matematyczne i licencjat z inżynierii w CS. Wciąż nie osiągnąłem etapu w mojej karierze, w którym rozwój jest trudny i nie przewiduję tego przez bardzo długi czas, jeśli w ogóle, ponieważ stale (samo) jestem zmotywowany do zdobywania nowych umiejętności. Jednak wielu moich znajomych przeszło ostatnio studia MBA... i to nie z Harvardu czy Kellogs, tylko z przeciętnych uczelni. Jednak zarabiają więcej niż ja, mimo że mają niewielkie lub żadne doświadczenie zawodowe. Biorąc pod uwagę, że mam możliwość kontynuowania studiów MBA i mam uporządkowane finanse (i planuję MBA z INSEAD / IE), czy miałoby sens sprzedanie tego, co lubię robić i przejście na MBA? Czy będę żałować, że nie zrobiłem później MBA, biorąc pod uwagę, że jestem w odpowiednim wieku/doświadczeniu, aby zrobić MBA? Uwielbiam to, co teraz robię, a także ludzi, z którymi to robię, ale martwię się, czy ta kariera będzie równie opłacalna finansowo, jak ta po ukończeniu studiów menedżerskich.


title: Jak uniknąć dużego i niezgrabnego UITableViewController na iOS?

text: Mam problem z implementacją wzorca MVC na iOS. Przeszukałem Internet, ale wydaje się, że nie znalazłem żadnego fajnego rozwiązania tego problemu. Wiele implementacji `UITableViewController` wydaje się być dość dużych. Większość przykładów, które widziałem, pozwala `UITableViewController` implementować `<UITableViewDelegate>` i `<UITableViewDataSource>`. Te implementacje są ważnym powodem, dla którego `UITableViewController` staje się duży. Jednym z rozwiązań byłoby utworzenie oddzielnych klas, które implementują `<UITableViewDelegate>` i `<UITableViewDataSource>`. Oczywiście te klasy musiałyby mieć odniesienie do `UITableViewController`. Czy są jakieś wady korzystania z tego rozwiązania? Ogólnie uważam, że powinieneś delegować funkcjonalność do innych klas "Pomocnika" lub podobnych, używając wzorca delegata. Czy istnieją dobrze ugruntowane sposoby rozwiązania tego problemu? Nie chcę, aby model zawierał zbyt wiele funkcji, ani widoku. Uważam, że logika powinna naprawdę znajdować się w klasie kontrolera, ponieważ jest to jeden z kamieni węgielnych wzorca MVC. Ale najważniejsze pytanie brzmi: **Jak podzielić kontroler implementacji MVC na mniejsze, łatwe w zarządzaniu części? (W tym przypadku dotyczy MVC w iOS)** Może istnieć ogólny wzorzec rozwiązania tego problemu, chociaż specjalnie szukam rozwiązania dla iOS. Proszę podać przykład dobrego schematu rozwiązania tego problemu. Podaj argument, dlaczego Twoje rozwiązanie jest świetne.


title: Jak ustrukturyzować klasy w systemie plików?

text: Mam kilka (widokowych) zajęć. Tabela, Drzewo, PagingColumn, SelectionColumn, SparkLineColumn, TimeColumn. obecnie są płaskie w `app/view` w następujący sposób: app/view/Table app/view/Tree app/view/PagingColumn ... Myślałem o przebudowie, ponieważ drzewa i tabele używają kolumn, ale są niektóre kolumny, które działają tylko w drzewie, niektóre, które działają w drzewach i tabelach, aw przyszłości prawdopodobnie będą tacy, którzy będą pracować tylko w tabelach, nie wiem. Mój pierwszy pomysł wyglądał tak: app/view/Table app/view/Tree app/view/column/PagingColumn app/view/column/SelectionColumn app/view/column/SparkLineColumn app/view/column/TimeColumn Ale ponieważ SelectionColumn jest wyraźnie w przypadku drzew, obawiam się, że przyszli programiści mogą wpaść na pomysł ich niewłaściwego wykorzystania. Ale jak to prawdopodobnie zrestrukturyzować? W ten sposób: aplikacja / widok / tabela / panel / aplikacja tabeli / widok / drzewo / panel / aplikacja drzewa / widok / drzewo / kolumna / aplikacja PagingColumn / widok / drzewo / kolumna / aplikacja SelectionColumn / widok / kolumna / aplikacja SparkLineColumn / widok / kolumna/kolumna czasu Lub tak: app/widok/aplikacja tabeli/widok/drzewo aplikacja/widok/kolumna/SparkLineColumn aplikacja/widok/kolumna/TimeColumn aplikacja/widok/kolumna/drzewo/PagingColumn aplikacja/widok/kolumna/drzewo/SelectionColumn


title: Klasy w OOP , metody i atrybuty wewnętrzne pamięci

text: Zakładałbym, że instancje tej samej klasy faktycznie współdzielą swoje metody i po prostu zapisują różne atrybuty w swojej przestrzeni nazw. Jak często arbitralnie dodajesz metody do pojedynczej instancji? Jednak na przykład w Pythonie tak nie jest. Wszystkie metody instancji są różnymi obiektami. Nawet jeśli udekorujesz je jako `@classmethods` (lub użyjesz `__slots__`) wydają się być różnymi obiektami w pamięci. Czy ktoś może mi podać definicję tego, co tutaj opisuję, a nawet podać te same szczegóły, dlaczego ten model został wybrany? Co dzieje się w innych językach?


title: Termin określający błędy występujące w niektórych środowiskach

text: Jak nazywa się błąd lub błąd, który pojawia się na komputerach tylko z określonymi środowiskami/konfiguracjami? **Kontekst:** Stworzyliśmy własne oprogramowanie antypirackie. Rozprowadzamy aplikacje, które są zablokowane przy użyciu tego oprogramowania antypirackiego. Oprogramowanie antypirackie to po prostu plik wykonywalny systemu operacyjnego Windows bez okien. Kiedy biegnie; pobiera zaszyfrowany plik (plik klienta) z naszego serwera, odszyfrowuje go, sprawdza, czy numer seryjny użytkownika występuje w pliku klienta i zapisuje wynik (zahaszowany) w pliku wynikowym. Każdy z produktów naszej firmy „konsultuje się”/uzyskuje dostęp do tego pliku wykonywalnego, aby sprawdzić, czy użytkownik może uruchomić i korzystać z naszego produktu. Na niektórych komputerach naszych klientów nasz antypiracki plik wykonywalny jest blokowany przed uruchomieniem lub pobieraniem pliku klienta (jeszcze nie wiadomo, jaka jest przyczyna). Ci klienci to firmy inżynierii lądowej, które ze względów bezpieczeństwa mają bardzo kontrolowany i "piaskownicy" system operacyjny Windows. _Podsumowując, oprogramowanie antypirackie działa i przechodzi nasze testy na większości komputerów naszych klientów i na wszystkich naszych wewnętrznych węzłach testowych. Oprogramowanie nie działa na tych kilku komputerach klienckich inżynierii lądowej._ **Jaki byłby termin (jeśli w ogóle) dla tego rodzaju błędu lub błędu w oprogramowaniu?**


title: Dlaczego relacyjne bazy danych akceptują tylko zapytania SQL?

text: O ile mi wiadomo, większość relacyjnych baz danych nie oferuje żadnego interfejsu API na poziomie sterownika dla zapytań, z wyjątkiem funkcji `query`, która jako argument przyjmuje ciąg SQL. Zastanawiam się, jak byłoby prościej, gdyby można było zrobić: var result = mysql.select('article', {id:3}) W przypadku tabel łączonych byłoby to nieco bardziej złożone, ale nadal możliwe. Na przykład: var tables = mysql.join({tables: ['artykuł', 'kategoria'], on: 'kategoriaID'}); mysql.select(tables, {'article.id': 3}, ['article.title', 'article.body', 'category.categoryID']) Czystszy kod, bez narzutów związanych z analizowaniem ciągów, bez problemów z wstrzykiwaniem, łatwiejsze ponowne użycie elementów zapytania... widzę wiele zalet. Czy jest jakiś konkretny powód, dla którego wybrano go, aby zapewniał dostęp tylko do zapytań za pośrednictwem SQL?


Nigdy wcześniej nie zajmowałem się ogólnym programowaniem, będąc bardziej pytonem i ogólnie używając OOP. Kiedy przeszedłem do programowania generycznego, napotkałem pewne problemy. Przeczytałem FAQ, ale nie jestem zadowolony. Chciałbym zadać następujące pytania (najbardziej interesuje mnie pierwsze, ale odpowiedzi na pozostałe będą mile widziane): Czy programowanie ogólne i OOP wzajemnie się wykluczają? Czy na przykład masz mieć metody i funkcje akceptujące szablon, zamiast klasy bazowej lub czystej klasy abstrakcyjnej? * * * Kilka innych pytań, które mam tylko w celu przedstawienia kontekstu mojego braku zrozumienia, to: Jak tradycyjne wzorce projektowe reagują na ogólne podejście i koncepcje programowania? Jak zapobiegać (lub kontrolować) generyczności każdej klasy/szablonu w zależności od logiki programu, w szczególności gdy dwa typy są powiązane i zawsze idą w parze (np. klasa RealNumberProducer i double vs ComplexNumberProducer i std ::złożony)?


title: Jak określa się wpływ zmiany wymagań na istniejący kod?

text: Jak firmy pracujące przy dużych projektach oceniają wpływ pojedynczej modyfikacji na istniejący kod? * * * Ponieważ moje pytanie prawdopodobnie nie jest zbyt jasne, oto przykład: Weźmy przykładową aplikację biznesową zajmującą się zadaniami. W bazie danych każde zadanie ma stan, przy czym 0 to „Oczekujące”, ... 5 – „Zakończone”. Nowe wymaganie dodaje nowy stan między drugim a trzecim stanem. Oznacza to, że: * należy zmienić ograniczenie na wartości 1 - 5 w bazie danych, * w celu dodania nowego stanu należy zmienić warstwę biznesową i kontrakty na kod, * zmienić warstwę dostępu do danych, aby uwzględnić np. stan `StateReady` wynosi teraz 6 zamiast 5 itd. * Aplikacja musi wizualnie zaimplementować nowy stan, dodać do niego nowe kontrolki, nowe zlokalizowane ciągi dla podpowiedzi itp. Gdy aplikacja jest pisana niedawno przez jednego programistę, mniej lub bardziej łatwo jest przewidzieć każdą zmianę, którą należy wykonać. Z drugiej strony, gdy wniosek był pisany przez wiele lat przez wiele osób, żadna osoba nie jest w stanie przewidzieć każdej zmiany natychmiast, bez żadnego badania. Skoro więc taka sytuacja (takie zmiany wymagań) jest bardzo częsta, wyobrażam sobie, że istnieją już sprytne techniki i sposoby przewidywania wpływu. Czy jest jakiś? Czy znasz jakieś książki, które poruszają ten temat? * * * Uwaga: moje pytanie nie jest związane z tematem Jak radzisz sobie ze zmieniającymi się wymaganiami? pytanie. Tak naprawdę nie interesuje mnie oszacowanie kosztów zmiany, ale raczej sposób przewidywania części aplikacji, których zmiana będzie dotyczyć. _Jakie_ będą te zmiany i _jak trudne_ one będą naprawdę nie ma znaczenia w moim pytaniu.


title: Jakie są korzyści z nieuwzględniania innych plików nagłówkowych w pliku nagłówkowym?

text: Czasami plik nagłówkowy używa obiektów, które są zadeklarowane w innych plikach nagłówkowych. Użytkownik tego pliku nagłówkowego i tak musiałby dołączyć zależność i uzyskać poprawną kolejność.


title: Przegląd informatyki, programowanie

text: Gdzie znajdę przegląd informatyki, programowania itp.? Ukończyłem fizykę i chcę zacząć programować lub coś podobnego, ale nie jestem nawet pewien, co tam jest i od czego zacząć. To, czego szukam, to jakiś szeroki przegląd istniejących technologii - tak jak masz książkę "Fizyka cząstek elementarnych", która wyjaśnia ogólny pogląd na ten obszar, ale oczywiście dla komputerów/programowania. Masz jakąś książkę do polecenia?


title: Wskazówki dotyczące pracy w domu?

text: > **Możliwy duplikat:** > Programuję z domu. Co mogę zrobić, aby być bardziej produktywnym? A jeśli twoje biuro jest twoim domem? Nie mówię o samozatrudnionym devoloperze. Mówię o zatrudnieniu i pracy z domu. Czy masz jakieś wskazówki, jak skupić się na pracy? Dziękuję


title: Klasy zagnieżdżone a przestrzenie nazw

text: Czy dobrze jest używać klas zagnieżdżonych, czy zamiast tego powinienem używać przestrzeni nazw? W kontekście: Mam ładowarkę kodeków z szablonami, a kodek ma obiekty In i Out template<class TypeOfData> class Codec { private: typename TypeOfData::In* reader; nazwa_typu TypeOfData::Out* writer; }; Z drugiej strony nie mogę używać using TypeOfData; jeśli nie chcę :: mojej drogi do metody statycznej.


title: Jakie konkretne zadanie może zostać powierzone kandydatowi na tworzenie stron internetowych w języku Java podczas rozmowy kwalifikacyjnej?

text: szukam pomysłów na zadania, które mogę dać kandydatowi na programistę Java, aby sprawdzić jego znajomość języka Java; Specjalnie szukam programisty Java dla aplikacji internetowych.


title: Jak symulować i oszacować długo działającą aplikację

text: Tworzymy dużą, modułową aplikację, która ma działać na wielu procesorach. Muszę opracować metodę oszacowania, ile czasu zajmie uruchomienie wszystkich funkcji. Mam już czas wykonania funkcji na pojedynczym procesorze. Teraz muszę znaleźć sposób na rozliczenie kosztów komunikacji. Muszę również określić, czy istnieje różnica w czasie wykonywania w oparciu o rozłożenie poszczególnych funkcji na kilka procesorów zamiast pozostawania na tym samym procesorze. Jak powinienem symulować całą aplikację, aby zidentyfikować narzut komunikacji i oszacować całkowity czas wykonania?


title: Czy używanie AggressiveInlining na prostych właściwościach ma jakieś wady?

text: Założę się, że sam mógłbym na to odpowiedzieć, gdybym wiedział więcej o narzędziach do analizy zachowania C#/JIT, ale skoro nie wiem, proszę o wyrozumiałość. Mam prosty kod w ten sposób: private SqlMetaData[] meta; [MethodImpl(MethodImplOptions.AggressiveInlining)] private SqlMetaData[] Meta { get { return this.meta; } } Jak widać umieściłem AggressiveInlining, ponieważ wydaje mi się, że powinien być inline. Myślę. Nie ma gwarancji, że JIT wstawi go w inny sposób. Czy się mylę? Czy robienie tego rodzaju rzeczy może zaszkodzić wydajności/stabilności/cokolwiek?


title: Aplikacja internetowa obsługująca inne aplikacje?

text: Próbuję napisać aplikację sieci web, która współdziała z usługą, która uruchamiałaby skrypty na poziomie systemu. Coś jak strona internetowa, na której można zaplanować zadanie, usługa uruchomi zadanie z podanymi danymi wejściowymi, zapisze dane wyjściowe do bazy danych i poinformuje witrynę o jej stanie. Kilka pytań: Jak to się zwykle robi? Czy piszę do tabeli „JOBS_QUEUED” w mojej bazie danych i mam to sprawdzić? Jak mogę przekazać „% zrobione” z powrotem na stronę internetową? Czy istnieje nazwa dla tego typu rzeczy? Nie jestem pewien, czy to ma znaczenie, ale teraz pracuję z Ruby on Rails.


title: Radzenie sobie z piramidą wywołań zwrotnych node.js

text: Właśnie zacząłem używać węzła i szybko zauważyłem, jak szybko wywołania zwrotne mogą narastać do głupiego poziomu wcięcia: doStuff(arg1, arg2, function(err, result) { doMoreStuff(arg3, arg4, function (błąd, wynik) { zrobićEvenMoreStuff(arg5, arg6, function(err, wynik) { omgHowDidIGetHere(; }); }); }); Oficjalny przewodnik po stylu mówi o umieszczaniu każdego wywołania zwrotnego w osobnej funkcji, ale wydaje się to zbyt ograniczające użycie domknięć i udostępnienie pojedynczego obiektu zadeklarowanego na najwyższym poziomie kilka warstw w dół, ponieważ obiekt musi przejść przez wszystkie pośrednie wywołania zwrotne. Czy można w tym miejscu użyć zakresu funkcji? Umieścić wszystkie funkcje zwrotne, które potrzebują dostępu do obiektu globalnego, wewnątrz funkcji, która deklaruje ten obiekt, aby przejść do zamknięcia? function topLevelFunction(globalishObject, callback) { function doMoreStuffImpl(err, result) { doMoreStuff(arg5, arg6, function(err, result) { callback(null, globalishObject); }); } doStuff(arg1, arg2, doMoreStuffImpl); } i tak dalej dla kilku kolejnych warstw... A może istnieją frameworki itp., które pomagają zmniejszyć poziomy wcięć bez deklarowania nazwanej funkcji dla każdego wywołania zwrotnego? Jak radzisz sobie z piramidą połączeń zwrotnych?


title: jeden programista, wiele języków – dylemat nazwy

text: Kiedy pracujesz w wielu językach programowania, pojawia się problem... _**Prawidłowa nazwa (identyfikator) w jednym języku jest nieprawidłowa w innym._** Na przykład... `var` `nowa` `funkcja ` `this` są słowami kluczowymi w JavaScript, ale można ich używać swobodnie w Pythonie. Podobnie `list` `dict` `def` może być bez problemu użyty w JavaScript. Jest to bardzo powszechne i programiści na ogół szybko się zaznajamiają, gdy programują w wielu językach. Jednak pracując we współpracy, musisz określić pewne zasady/wytyczne dla członków zespołu, aby zapewnić spójność i jednolitość kodu. W przypadku zespołów problem ten staje się ważniejszy niż zwykłe pamiętanie, co jest ważne, a co nie, podczas programowania. Więc moje pytanie brzmi, jakie strategie przyjmujesz... * po prostu połącz wszystkie zastrzeżone słowa obecne we wszystkich używanych przez ciebie językach, rozdaj wszystkim listę i powstrzymaj się od ich używania? * zaakceptuj różnorodność i podejmij dodatkowy wysiłek podczas „przełączania kontekstu” * zastosuj grunt pośredni, w którym jeden język może używać drugiego, ale nie odwrotnie (Uwaga: w tym pytaniu mówię tylko o Pythonie i JavaScript ... ale proszę odpowiedz na pytanie szerzej) **\-- AKTUALIZACJA --** Dziękujemy za wszystkie odpowiedzi. Wyłania się więc ogólny konsensus, który pozwala programistom używać dowolnej nazwy, niezależnie od tego, co robią w innych językach – o ile nazwy są opisowe, to nie zaszkodzi.


title: Co byś zrobił, gdyby starszy programista ukradł Twój kod?

text: To było moje doświadczenie w poprzedniej firmie. Ponieważ była to mała firma typu start-up, niektóre z normalnych procedur tworzenia oprogramowania nie były ściśle przestrzegane. Jeden z moich kolegów był starszym programistą w firmie przez 2 lata. Brakowało mu umiejętności. Przydzielał mi swoje zadania, a potem sam przypisywał sobie zasługi. Robił to regularnie, podczas gdy ja musiałem też dokończyć własne zadania. Czułem, że nie mogę przedstawić tej sytuacji kierownictwu wyższego szczebla, ponieważ ten kolega miał ich zaufanie. Później próbowałem opóźniać przydzielone mi zadania, aby źle o nim myśleć (ponieważ nie mógł dokończyć zadań). Ponadto skargi klientów piętrzyły nierozwiązane problemy. Teraz firma o nim wie. Właściwie teraz kieruję się do nowej firmy jako Lead. Teraz jestem całkowicie wolny w takiej sytuacji. Czy ktoś z was doświadczył takich sytuacji? Co byś/zrobiłaś?


title: Co się stało z tego typu konwencją nazewnictwa?

text: Przeczytałem wiele dokumentów dotyczących konwencji nazewnictwa, z których większość poleca konwencje nazewnictwa Pascal i Camel. Cóż, zgadzam się na to, w porządku. Niektórym może się to nie podobać, ale po prostu próbuję poznać Twoją opinię na temat tego, dlaczego nazywasz swoje obiekty i klasy w określony sposób. Co się stało z tego typu konwencjami nazewnictwa i/lub dlaczego są złe? Chcę nazwać strukturę i poprzedzam ją przedrostkiem "struct". Moim powodem jest to, że dzięki IntelliSense widzę wszystkie struktury w jednym miejscu i wszędzie, gdzie widzę prefiks struct, wiem, że jest to „struct”: structPerson structPosition innym przykładem jest enum, chociaż nie mogę go poprzedzić „enum” , ale może z "enm": enmFruits enmSex znowu moim powodem jest to, że w IntelliSense widzę wszystkie moje wyliczenia w jednym miejscu. Ponieważ .NET ma tak wiele wbudowanych struktur danych, myślę, że pomaga mi to w mniej wyszukiwaniu. Zauważ, że w tym przykładzie użyłem platformy .NET, ale z zadowoleniem przyjmuję odpowiedzi niezależne od języka.


title: Co Alan Kay miał na myśli przez „zadanie” we Wczesnej historii Smalltalk?

text: Czytałem The Early History of Smalltalk i jest kilka wzmianek o „zadaniu”, które sprawiają, że kwestionuję moje rozumienie jego znaczenia: > Chociaż OOP wynikało z wielu motywacji, dwie były kluczowe. Wielkoskalowym > było znalezienie lepszego schematu modułów dla złożonych systemów obejmujących ukrywanie > szczegółów, a na małą skalę było znalezienie bardziej elastycznej wersji > przypisania, a następnie próba całkowitego jego wyeliminowania. (od _1960-66 – Wczesne OOP i inne kształtujące idee lat sześćdziesiątych_ , Sekcja I) > To, co otrzymałem od Simuli, to to, że możesz teraz zastąpić wiązania i > przypisanie _celami_. Ostatnią rzeczą, którą chciałbyś, aby zrobił programista, jest > bałagan ze stanem wewnętrznym, nawet jeśli jest przedstawiony w przenośni. Zamiast tego, obiekty > powinny być prezentowane jako _witryna o zachowaniach wyższego poziomu, bardziej > odpowiednia do użycia jako komponenty dynamiczne_. (...) To niefortunne, że wiele z tego, co dzisiaj nazywamy "programowaniem obiektowym", jest po prostu programowaniem w starym stylu z bardziej wyszukanymi konstrukcjami. Wiele programów jest załadowanych > operacjami w stylu przypisania, teraz wykonywanymi przez droższe dołączone > procedury. (z _Styl „zorientowany na obiekt”_, sekcja IV) Czy mam rację interpretując intencję jako, że obiekty mają być fasadami i jakąkolwiek metodą (lub „wiadomością”), której celem jest ustawienie zmiennej instancji na obiekcie ( tj. „zadanie”) jest sprzeczne z celem? Ta interpretacja wydaje się być poparta dwoma późniejszymi stwierdzeniami w Sekcji IV: > Cztery stosowane razem techniki — stan trwały, polimorfizm, > konkretyzacja i metody jako cele dla obiektu — wyjaśniają znaczną część mocy. Żaden z nich nie wymaga użycia "języka zorientowanego obiektowo" -- > ALGOL 68 można prawie przemienić w ten styl -- a OOPL po prostu skupia umysł > projektanta w konkretnym, owocnym kierunku. Jednak prawidłowe wykonanie enkapsulacji jest zobowiązaniem nie tylko do abstrahowania stanu, ale także do wyeliminowania metafor zorientowanych na stan z programowania. ...oraz: > Stwierdzenia przydziału – nawet abstrakcyjne – wyrażają bardzo niskie cele i > więcej z nich będzie potrzebnych, aby cokolwiek zrobić. Generalnie nie chcemy, aby programista bawił się stanem, czy to symulowanym, czy nie. Czy uczciwie byłoby powiedzieć, że zachęca się tutaj do nieprzejrzystych, niezmiennych instancji? A może po prostu odradza się _bezpośrednie_ zmiany stanu? Na przykład, jeśli mam klasę `BankAccount`, mogę mieć metody/komunikaty instancji `GetBalance`, `Deposit` i `Withdraw`; po prostu upewnij się, że nie ma metody/komunikatu instancji `SetBalance`?


title: Jakie są typy tablic języków z typami dynamicznymi?

text: Na przykład w JavaScript mogę robić takie rzeczy: var arr = [1, "dwa", /trzy/, [4]]; Nie ma takiej możliwości w C! Z wyjątkiem użycia `void*`, co nie jest wydajnym/bezpiecznym sposobem. Czy tak to robią wdrożenia? Używasz wszędzie `void*`?


title: Zalecany harmonogram płatności za rozwój freelance

text: Od wielu lat jestem niezależnym programistą i konfiguruję system, który ma przyciągać klientów za pośrednictwem jednej z moich witryn programistycznych. Jeśli się powiedzie, będą to klienci, których nie znam, a niektóre prace mogą być bardzo małe. Pracując z klientami, których znam przy większych projektach, jestem przyzwyczajony do wykonywania pracy zanim dostanę zapłatę. Ale tutaj wydaje się to ryzykowne. Szukam sugestii dotyczących harmonogramu płatności, którego powinienem wymagać przy małych projektach. Podejrzewam, że potencjalni klienci nie będą skłonni zapłacić pełnej kwoty z góry, więc rozwiązaniem będzie prawdopodobnie jakiś kompromis.


title: Powiadomienie o zdarzeniu dla ::SCardListReaders()

text: W aplikacji PC/SC (Personal Computer Smart Card) mam (oparte na MSCAPI USB CCID) 1) Wywołanie ::SCardListReaders() zwraca SCARD_E_NO_READERS_AVAILABLE (0x8010002E). To wywołanie jest wykonywane po ponownym uruchomieniu systemu operacyjnego z wątku, który jest częścią mojej niestandardowej usługi Windows. 2) Dodanie opóźnienia przed wywołaniem ::SCardListReaders() rozwiązuje problem. 3) Jak mogę elegancko rozwiązać ten problem? Nie używam opóźnienia i czekam na powiadomienie mnie o jakimś wydarzeniu. ponieważ a) Różne komputery mogą wymagać różnych wartości opóźnień b) Nie można zapętlić, ponieważ kod błędu jest oryginalny c) Nie można znaleźć tego zdarzenia w ramach usługi powiadamiania o zdarzeniach systemowych lub podobnego interfejsu COM d) platformą jest system Windows 7 Doceniana pomoc.


title: Jak się dowiedzieć, czy stworzyć ogólny system, czy zhakować rozwiązanie?

text: Jestem nowy w kodowaniu, właściwie uczę się go od zeszłego roku. Jednym z moich najgorszych nawyków jest to, że: Często próbuję stworzyć rozwiązanie, które jest zbyt duże, zbyt złożone i nie osiąga tego, co należy osiągnąć, kiedy może pasować hacky. Ostatni przykład był następujący (patrz link do wklejania bin poniżej) http://pastebin.com/WzR3zsLn Po wyjaśnieniu mojego problemu jedna miła osoba ze stackoverflow zamiast tego zaproponowała to rozwiązanie http://stackoverflow.com/questions/25304170/update -a-field-by-usuwając-kwartał-lub-miesiąc-usuwając Kiedy powinienem zachować prostotę kodu, a kiedy powinienem stworzyć „duże”, ogólne rozwiązanie? Czasami czuję się głupio, budując coś tak wielkiego, tak niezręcznego, tylko po to, by rozwiązać prosty problem. Nie przyszło mi do głowy, że będzie łatwiejsze rozwiązanie. Wszelkie wskazówki są mile widziane. To, co najlepsze


title: Jak przyspieszyć proces wpisywania specyfikacji podczas spotkania z programistami?

text: Studiuję kod źródłowy z innymi programistami, a moim zadaniem jest wpisywanie specyfikacji, podczas gdy główny programista opisuje, co robi każda funkcja. Czy są jakieś wskazówki/sztuczki, aby zrobić to szybciej? Wiele razy muszę go prosić, żeby się powtórzył, bo nie słyszałem tego dobrze. Jak mogę być lepszym autorem specyfikacji?


title: Jakie są opcje dzielenia układu interfejsu użytkownika z logiki kodu przy użyciu języka znaczników?

text: Jakie narzędzia podobne do UIBinder GWT istnieją w innych językach? Mam tu na myśli system, w którym można zdefiniować układ interfejsu użytkownika w języku znaczników (najlepiej html+css) i dołączyć funkcjonalność do układu za pomocą kodu. Najbardziej interesuje mnie wszystko dla Pythona, ale odpowiedzi w innych językach również by mnie zainteresowały. Jestem zainteresowany, ponieważ korzyści płynące z pracy osoby niebędącej programistą bezpośrednio na układzie bez konieczności dotykania kodu i dostosowywania wielu wywołań metod zestawu narzędzi interfejsu użytkownika są bardzo produktywne. Znam Flex dla flasha, ale czy jest tam coś jeszcze? Jakich terminów wyszukiwania mogę użyć, aby znaleźć takie ramy? Rozejrzałem się, ale nic konkretnego nie znalazłem. Edycja: interesują mnie nie tylko frameworki internetowe, ale również aplikacje desktopowe. Edit2: Moje pytanie wydaje się być zbliżone do duplikatu http://stackoverflow.com/questions/2962874/what-are-the-open-source- alternatives-to-wpf-xaml


title: Jak mogę spełnić ten wymóg projektu?

text: Jestem częścią dwuosobowego zespołu, który buduje internetową aplikację wirtualnej wycieczki z określonymi dodatkowymi funkcjami, które nie istnieją w obecnych aplikacjach. To jest projekt szkoły letniej. Kierownik zespołu chce, aby ta aplikacja była jak najbardziej niezależna od platformy i zależności. W tym celu używamy interfejsów API Fusion Tables i StreetView firmy Google, aby wyświetlać zdjęcia i służyć jako baza danych. W ten sposób klient instalujący tę aplikację na swoim serwerze nie musi martwić się konfiguracją i utrzymaniem lokalnej bazy danych, a wszystko, co jest potrzebne po jego stronie, to konto Google Apps i same obrazy. Mój problem polega na tym, jak klient wysyła żądania obrazów i danych bez języka po stronie serwera? Większość, jeśli nie wszystkie dane, będą tekstowe, a zatem będą mogły być renderowane jako JSON i analizowane jako takie. Pozostaje jednak kwestia samych obrazów. Będą hostowane w określonej lokalizacji i potrzebuję jakiegoś sposobu, aby uzyskać do nich dostęp. Używając Ajax, mogę wykonać wywołanie PHP, aby łatwo załadować obraz i już wiem, jak to zrobić. Sugerowano, że używam biblioteki klienta Java do łączenia się z usługami GData, ale uważam, że jest to zbyt skomplikowane. Moje argumenty za włączeniem PHP jako wymagania aplikacji to 1. PHP jest synonimem hostingu. Jeszcze nie spotkałem komercyjnego hosta, który nie oferuje PHP 2. Już wiem, jak zaimplementować wywołania Ajax do funkcji PHP. 3. Ponieważ ta aplikacja ma termin 6 tygodni, wolałbym trzymać się tego, co wiem, zamiast uczyć się zupełnie nowej metodologii Jego argumenty za szukaniem gdzie indziej to 1. Nie ma gwarancji, że PHP zostanie załadowane na serwer, aby można było użyć . CMS naszej szkoły jest oparty na Javie, a PHP nie jest zainstalowane 2. Java jest standardowym włączeniem do konfiguracji serwera i klienta 3. Aplikacja powinna być niezależna od serwera i zależności w tym sensie, że można ją przesłać do folderu i uzyskać do niej dostęp bez żadnych konfiguracja Szczerze mówiąc, gdybym miał czas, byłby to ciekawy projekt poboczny, aby uwzględnić tego typu funkcjonalność, zwłaszcza, że nigdy wcześniej tego nie robiłem i brzmi to interesująco. Ale ciągle myślę o tym sześciotygodniowym terminie, a ponieważ to ja będę robił większość kodowania, po prostu nie sądzę, żebym mógł to zrobić na czas bez PHP.


title: Implementacja protokołu komunikacji szeregowej

text: Potrzebuję zaimplementować protokół szeregowy do komunikacji z urządzeniem za pomocą .NET (C#). Ta implementacja powinna być biblioteką (.dll) do wykorzystania w różnych projektach. Posiadam arkusz danych opisujący protokół (szybkość transmisji, bity stopu, protokół wiadomości, polecenia itp.) i wiem, że muszę użyć klasy `SerialPort` z przestrzeni nazw `System.IO.Ports`. Ale mam pewne wątpliwości, jak skonstruować/zorganizować kod. Oto kilka pytań: 1. Czy powinienem się martwić o zarządzanie wątkami, czy ten aspekt powinien być zarządzany przez sposób korzystania z biblioteki? 2. Czy mogę zarządzać otrzymanymi/wysłanymi danymi za pomocą ciągów znaków, czy powinienem używać bajtów? 3. Polecenia i stałe treści powinny być przechowywane za pomocą `enum`, `constans` czy czegoś innego? Może te pytania mogą być subiektywne, ale chciałbym otrzymać informację zwrotną od kogoś z większym doświadczeniem niż ja. Jeśli ktoś ma jakieś przykłady, wskazówki, najlepsze praktyki itp. na ten temat to będę bardzo wdzięczny.


title: w którym katalogu zainicjować repozytorium git

text: Dopiero zaczynam pracę z Git. Będę zajmował się rozwojem PHP i zastanawiałem się, czy powinienem zainicjować moje repozytorium w folderze głównym serwera lub dowolnym katalogu na dysku twardym i opublikować moje zmiany w folderze głównym serwera. Czy to naprawdę ma znaczenie, jakieś plusy/minusy? Na razie jest to tylko śledzenie osobistych projektów, które robię dla zabawy, ale wszelkie opinie na temat najlepszych praktyk, osobistych preferencji/doświadczeń, nakazów i zakazów będą mile widziane.


title: Jakie są korzyści z hipermediów (HATEOAS)?

text: Nie rozumiem korzyści dla HATEOAS dla interfejsów API przeznaczonych do użytku przez programy (w przeciwieństwie do ludzi bezpośrednio przeglądających Twój interfejs API). Jasne, klient nie jest powiązany ze schematem adresu URL, ale jest powiązany ze schematem danych, który moim zdaniem jest tym samym. Załóżmy na przykład, że chcę wyświetlić artykuł w zamówieniu, załóżmy, że już znalazłem lub znam adres URL zamówienia. HATEOAS: zamówienie = get(adresURL); item = get(order.itemURL[5]); non-HATEOAS: order = get(orderURL); item = get(getItemURL(order,5)); W pierwszym modelu muszę wiedzieć, że obiekt order posiada pole itemURL. W drugim modelu muszę wiedzieć, jak skonstruować adres URL pozycji. W obu przypadkach muszę coś „wiedzieć” z wyprzedzeniem, więc co właściwie HATEOAS dla mnie robi?


title: Dlaczego REST Api nie podąża za wzorcem projektowania elewacji

text: Porównując strukturę REST [api] z modelem OO, widzę następujące podobieństwa: Oba: * Są zorientowane na dane * REST = Zasoby * OO = Obiekty * Operacja surround wokół danych * REST = surround CZASOWNIKI (Get, Post, ...) wokół zasobów * OO = promowanie operacji wokół obiektów przez enkapsulację Jednak dobre praktyki OO nie zawsze opierają się na interfejsie API REST przy próbie zastosowania wzorca fasady, na przykład: w REST nie masz 1 kontrolera do obsługi wszystkich żądań ORAZ nie masz ukryć wewnętrzną złożoność obiektu. ![Prosta relacja obiektu między 2 pojęciami](http://i.stack.imgur.com/SyVav.png) ![Analogia między OO i REST](http://i.stack.imgur.com/1CAFF.png ) Wręcz przeciwnie, REST promuje publikowanie przez zasoby wszystkich relacji z zasobem i innych w co najmniej dwóch formach: 1. poprzez relacje hierarchii zasobów (kontakt o identyfikatorze 43 składa się z adresu 453) : `/api/contacts/43 /addresses/453` 2. poprzez linki w odpowiedzi REST json: > > >> GET /api/contacts/43 > << HTTP Response { > id: 43, ... > adresy: [{ > id: 453, ... > }], > links: [{ > ulubiony adres: { > id: 453 > } > }] > } > ![Podstawowa złożoność ukryta przez obiektA](http://i.stack.imgur.com/xwaSC .png) Wracając do OO, wzorzec projektowy elewacji uwzględnia `Low Coupling` pomiędzy _objectA_ a jego '_objectB client_ ' oraz `High Cohesion` dla tego _objectA_ i jego wewnętrznej kompozycji obiektów ( _objectC_ , _objectD_ ). Dzięki interfejsowi _objectA_ umożliwia to programiście ograniczenie wpływu na _objectB_ wewnętrznych zmian _objectA_ (w _objectC_ i _objectD_ ), o ile nadal przestrzegane są _objectA_ api (operacje). W REST dane (zasób), relacje (łącza) i zachowanie (czasowniki) są rozbijane na różne elementy i dostępne w sieci. Bawiąc się REST, zawsze mam wpływ na zmiany kodu między moim klientem a serwerem: ponieważ mam `High Coupling` między moimi żądaniami `Backbone.js` i `Low Cohesion` między zasobami. Nigdy nie wymyśliłem, jak pozwolić mojej aplikacji `Backbone.js javascript` radzić sobie z " _zasobami i funkcjami REST_ " **odkrywaniem** promowanymi przez linki REST. Rozumiem, że WWW ma być obsługiwany przez wiele serwerów i że elementy OO musiały zostać eksplodowane, aby mogły być obsługiwane przez wiele hostów, ale dla prostego scenariusza, jak „zapisanie” strony pokazującej kontakt z jej adresami, Kończę z: > > GET /api/contacts/43?embed=(adresy) > [przycisk zapisz wciśnięty] > PUT /api/contacts/43 > PUT /api/contacts/43/addresses/453 > co mnie prowadzi przenieść akcję zapisu atomową odpowiedzialność transakcyjną na aplikacje przeglądarek (ponieważ dwa zasoby mogą być adresowane oddzielnie). _Mając to na uwadze, jeśli nie mogę uprościć procesu programowania (wzorce projektowe elewacji nie mają zastosowania) i jeśli przyniosę klientowi większą złożoność (obsługa transakcyjnego zapisywania atomowego), jakie są korzyści z bycia zgodnym z REST?_


title: Jaki jest najprostszy format pliku archiwum, do którego należy dążyć podczas zapisywania kolekcji plików?

text: Stworzyłem system zarządzania dokumentami oparty na PHP i hostowałem go na moim Raspberry Pi. Stworzyłem funkcję "backup", która skompresuje wszystkie dokumenty, ale zajmuje to zbyt dużo czasu ze względu na ograniczenia sprzętowe Pi, a także fakt, że kompresja nie może być wyłączona podczas tworzenia plików zip w PHP. To skłoniło mnie do myślenia, że być może powinienem po prostu wymyślić jakiś rodzaj binarnego formatu pliku, który pozwalałby na przechowywanie w nim wielu plików, i zrzucić do niego wszystkie moje nieskompresowane dokumenty, gdy użytkownik poprosi o kopie zapasowe. Co dziwne, niekoniecznie jestem zaniepokojony brakiem możliwych "unarchiversów". Który format pliku jest najłatwiejszy do wdrożenia, czy to format standardowy, czy proponowany nowy format? Czy jest jakaś inna alternatywa dla rozwiązania mojego problemu, która nie wymaga implementacji niestandardowego archiwizatora? Zauważ, że chcę uniknąć następujących rzeczy: * Polecenia powłoki (nieprzenośne). * Instalowanie zależności stron trzecich (może nie działać w systemie hostowanym przez stronę trzecią). * Przepisanie mojego systemu w innym języku.


title: Czy moi koledzy powinni przejrzeć nawzajem kod z systemu kontroli źródła?

text: Oto moja historia: jeden z moich kolegów używa do przeglądania całego kodu, hostowanego w systemie wersji. Nie mówię o adekwatnym przeglądzie zmian w częściach, do których należy. Ogląda kod od pliku do pliku, wiersz po wierszu. Każdy nowy plik i każdy zmodyfikowany. Czuję się jak szpiegowany! Domyślam się, że jeśli kod był już hostowany w systemie kontroli, należy mu przynajmniej zaufać. Moje pytanie brzmi, może jestem zbyt paranoiczny i praktyka wzajemnego przeglądania kodu jest dobra? PS: Jesteśmy zespołem składającym się tylko z trzech programistów i obawiam się, że jeśli będzie nas więcej, kolega po prostu nie będzie miał czasu na przeglądanie całego kodu, który napiszemy.


title: Czy podejmowane są próby stworzenia wspólnie edytowanego odnośnika HTML/JS/DOM?

text: W3Schools ma reputację niekompletnych, czasem niepoprawnych i wypełnionych reklamami; wciąż jednak, gdy szukasz czegoś lub linku do dokumentacji podczas odpowiadania na pytanie SO, nadal jest to jedyny przydatny zasób dla wielu przeglądarek. Istnieją inne zasoby, takie jak sieć programistów Mozilla, która coraz lepiej dokumentuje JavaScript oraz legendarny i wspaniały tryb Quirksmode. Ale one, tak genialne, jak są, obejmują tylko część obszarów, o których mówię, i nie zapewniają żadnych opcji edycji i kontroli jakości przez społeczność. Czy ktoś wie o próbach stworzenia wspólnie edytowanej encyklopedii HTML/CSS/JavaScript/DOM dla różnych przeglądarek? Jeśli chcesz, myślę o pretendentze do W3Schools, takim jak SO było dla Experts Exchange.