title: Jak przechowywać statusy rekordów (takie jak oczekujące, ukończone, robocze, anulowane...)

text: Dość wiele wniosków wymaga, aby rekordy w swoich tabelach miały status, np. „ukończony”, „szkic”, „anulowany”. Jaki jest najlepszy sposób przechowywania tych statusów? Aby zilustrować, o co mi chodzi, jest * bardzo krótki) przykład. Mam prostą aplikację Blog i każdy post ma status jeden z: opublikowany, wersja robocza lub oczekujący. Widzę to na 2 sposoby w bazie danych. 1. Tabela Post zawiera pole tekstowe, które zawiera tekst statusu. 2. Tabela Post zawiera pole statusu, które zawiera identyfikator rekordu w tabeli PostStatus. Przykład Blog tutaj jest bardzo prostym przykładem. Gdzie wyliczenie (jeśli jest obsługiwane) może wystarczyć. Chciałbym jednak, aby odpowiedzi na pytanie uwzględniały, że lista statusów może się w każdej chwili zmienić, więc można dodać lub usunąć więcej. Czy ktoś może wyjaśnić zalety/wady każdego z nich? Twoje zdrowie! Moją początkową opcją jest to, że lepiej jest użyć innej tabeli i sprawdzić stan jako lepszy do normalizacji i zawsze uczono mnie, że normalizacja jest dobra dla baz danych


title: Separacja obaw przy dodawaniu nowych typów

text: Mam system, nad którym pracuję w tym tygodniu, w którym mam trudności z równoważeniem separacji problemów z łatwą rozszerzalnością. Dodaję do systemu nowe typy i wydaje mi się, że to chirurgia strzelbowa. Podstawowa idea polega na tym, że dane są zbierane (odpytywane) ze zdalnego systemu, a następnie udostępniane wielu różnym rodzajom klientów. Aby wesprzeć ich typ interfejsu (protokół), robię dużo tłumaczeń. Postaram się to uprościć, aby zmieścić to w polu pytań. Na świecie istnieje FruitService z interfejsem SNMP. Zadaniem mojego wydawcy jest zbieranie tych danych, a następnie ich publikowanie. 1. Więc dla każdego rodzaju nowego owocu, który zdecydujemy się opublikować, tworzę klasę, która wie, jak pobrać atrybuty tego owocu przez SNMP. 2. Wewnętrznie Fruit jest tłumaczony na DTO (te same obiekty używane do rozmowy z klientem nr 1 (RMI)). 3. Pamięć podręczna jest aktualizowana i sprawdzana pod kątem zmian, aby wyzwolić powiadomienia asynchroniczne. 4. Klasa do przetłumaczenia owocu na schemat xml używany przez innego klienta (#2). 5. Klasa do tłumaczenia owocu na proste pary atrybut/wartość używane przez innego klienta (#3). W końcu tworzę 5 klas i edytuję 8 kolejnych, aby podłączyć nowy typ. To nie jest dużo pracy; kilka godzin na napisanie kodu, przetestowanie i zaewidencjonowanie prostego typu. Zauważ, że nie ma zbyt wielu cech wspólnych w typach owoców (np.: gruszka i kokos), więc większość typowych abstrakcji opiera się na procesie aktualizacji danych, a nie na samych danych. Moje obawy projektowe to: 1. Interfejs SNMP zmienia się 2-3 razy w roku 2. Schemat xml (klient 2) zmienia się 10 razy w roku. 3. Dodawanie nowych typów zdarza się rzadziej, zazwyczaj, gdy ktoś się do tego przyzwyczai. Ale może gdyby to było łatwiejsze... Więc założeniem projektu było łatwe radzenie sobie z tymi zewnętrznymi zmianami. Prowadzi to do wszystkich separacji w warstwach translacji. Ale dodawanie typów jest trudniejsze, niż bym chciał. Czy istnieje technika lub przykład, którym mógłbym się przyjrzeć? Brakuje mi pomysłu? Czy źle stosuję SRP i powinien istnieć typ Apple, który mówi SNNP, schemat xml, DTO itp.? ![tekst alternatywny](http://imgur.com/IaAEU.png) EDIT: Klient #1, klient RMI, jest pisany na zamówienie, gdy dodawany jest nowy owoc, aby wykorzystać wszystkie możliwości owocu. Jeśli więc zdecydujemy się pobrać informacje o bananie z FruitService, napiszemy również klienta, który pozwoli Ci obrać banana, otrzymać powiadomienie, gdy jest dojrzały, i powiedzieć, do którego grona należy - wraz z podstawowymi atrybutami owocu, takimi jak rozmiar, waga, kolor, czas do zepsucia itp.


title: Jakie są wady „prostej fabryki”?

text: Czytam książkę »Head First Design Patterns« od O'Reilly. Przed wyjaśnieniem wzorca metody fabrycznej, najpierw wprowadzają prostą fabrykę. Posługują się przykładem pizzerii. W pierwszym kroku pokazują problem: Pizza orderPizza(string type) { Pizza pizza; if (type.equals("Pepperoni") { pizza = new PepperoniPizza(); } else if (type.equals("Salmon") { pizza = new SalmonPizza(); } // ... i tak dalej pizza.Przygotuj (); pizza.Bake(); pizza.Cut(); pizza.Pack(); return pizza; } Oczywistym problemem jest to, że trzeba było zmieniać pizzerię za każdym razem, gdy dodajesz lub usuwasz pizzę. Idiom”. Najpierw przenoszą część tworzącą do klasy „SimplePizzaFactory”. Teraz nie musisz już modyfikować pizzerii podczas dodawania lub usuwania pizzy. Potem mówią, że to podejście nie jest dobre, gdy masz więcej niż jedna pizzeria (w kilku miastach).Tak naprawdę nie rozumiem ich rozumowania.Podają następujący przykładowy kod, a następnie mówią, że każda pizzeria nie korzystałaby z procedury, jak zaimplementowano powyżej, ale używała różnych metod w celu „pieczenia ", "wytnij" i "zapakuj" pizzę. BerlinPizzaFactory berlinFactory = new BerlinPizzaFactory(); P izzeria berlinPizzeria = nowa Pizzeria(berlinFactory); berlinPizza.Order("Pepperoni"); Zamiast korzystać z Simple Factory, sugerują użycie Factory Method Pattern. Po pierwsze, nie rozumiem, dlaczego BerlinPizzeria ma nie stosować tej procedury. To wciąż pizzeria, a kiedy dzwonisz do Zakonu, używasz tej samej procedury. Domyślam się, że sugerują, że jesteś w stanie wdrożyć, powiedzmy, kafeterię (celowo używam czegoś zupełnie innego, aby wyrazić swoją opinię) i skorzystać z fabryki (ponieważ jest niezależna od pizzerii) i przygotować pizza w taki sposób, w jaki chcesz. Ale nawet przy użyciu wzorca metody fabrycznej nikt nie zmusza cię do użycia procedury domyślnej. Jeszcze prościej jest „ukryć”, że robisz to inaczej. Ich przykłady kodu są podane w Javie, a metody Javy są domyślnie wirtualne. Mogę więc zaimplementować BerlinPizzeria i przesłonić Zamówienie (lub musiałem jawnie zadeklarować metodę jako ostateczną). Klient jednak nie zauważyłby, że moja BerlinPizzeria robi inne rzeczy. Podsumowując, nie widzę żadnej znaczącej różnicy między Simple Factory a Factory Method Pattern. Jedyną zaletą wzorca Factory Method, który widzę, jest to, że zaoszczędzisz kilka klas (a mianowicie fabryk „zewnętrznych”). Jakie są więc tak naprawdę wady Simple Factory i dlaczego nie jest dobrym pomysłem „outsourcing” tworzenia części? Albo jaka jest tak naprawdę zaleta wzorca Factory Method i dlaczego warto wymusić zaimplementowanie części tworzącej w podklasie?


title: Otwórz plik .doc z mojej strony w przeglądarce

text: Jaki jest najlepszy sposób, aby dać użytkownikowi końcowemu mojej aplikacji internetowej możliwość otwierania, edytowania i zapisywania (za pośrednictwem przeglądarki) dokumentów tekstowych, które są przechowywane w mojej bazie danych? To działa, wykonując konwersję pliku html (poprzez Aspose Words), ale ta metoda nie wydaje się nawet bliska bezbłędności i staram się to poprawić. Czy integracja z dokumentami Google jest możliwa/dobra? Ich edycja wydaje się niesamowita i bardzo potężna. Nie mogę używać żadnych obiektów Microsoft Word (a nawet MS odradza to). EDYCJA: Aplikacja jest rozwijana w .NET i obecnie korzysta z .NET framework 2.0. Jednak, ponieważ jest to dość przestarzałe, pomysł polega na ponownym uruchomieniu od zera i korzystaniu z frameworka 4.0 i C# lub VB.


title: Wolfram odpadł, jakieś alternatywy? Lub jak przejść na zamówienie?

text: Początkowo planowaliśmy użyć wolfram alpha api do nowego projektu, ale niestety koszt był zdecydowanie zbyt wysoki, jak na to, do czego go używaliśmy. Zasadniczo to, co robiliśmy, to obliczanie wartości żywieniowych dla żywności. (http://www.wolframalpha.com/input/?i=kurczak+piersi+z+brokułami). Czy przed podjęciem próby zbudowania czegoś, co może działać na swoim miejscu w tym przypadku użycia, istnieje jakikolwiek kod open source, który może przeprowadzić tego rodzaju analizę i skompilować dane? Moim zdaniem najtrudniejsze jest to, co ma dla założeń i skąd uzyskuje te dane, aby zasilać obliczenia. Inaczej mówiąc, nie wydaje mi się, abym skupił się na budowaniu czegoś, co oblicza dane wejściowe użytkownika, aby zwracać fakty i wiedzę. Wiem, czy mogę przekonwertować dane wprowadzone przez użytkownika na jakąś ustandaryzowaną formę, a następnie porównać ją z bazą danych o wartościach odżywczych, aby uzyskać potrzebne informacje. Czy ktoś zna jakieś rozwiązania do odtworzenia tego lub interfejsy API, które mogą zapewnić tego rodzaju analizę? Dzięki za jakąkolwiek radę. Próbuję dowiedzieć się, czy ten projekt jest martwy w wodzie, zanim jeszcze się zacznie. Tego rodzaju programowanie wykracza daleko poza mnie, więc mogę tylko mieć nadzieję, że API, open source lub jakiś rodzaj silnika analitycznego zinterpretuje dane wejściowe użytkownika, gdy wiem, jakie dane wprowadza (pomiary i żywność).


title: Kompleksowe pobieranie obiektów domeny

text: Zwykle, gdy chcę pobrać root agregatu według ID, po prostu używam jakiegoś typu funkcji Repository::findByID(...) Zawsze, gdy zaczynałem z DDD, myślałem o fabrykach, gdzie tylko wzorzec do budowy _nowych_ obiektów, ale po spełnieniu niektórych agregatów potrzebujących jedno lub dwa dodatkowe zapytania do załadowania, zdałem sobie sprawę, że Factory::objectWithID(...) były przydatne również do tworzenia instancji obiektów już istniejących w bazie danych. Teraz mam relację drzewa jednostek, taką jak **Projekt->Zadanie**. Ilość relacji jest ogromna i nie mam frameworka zapewniającego leniwe ładowanie. Ponieważ zadania mogą być zagnieżdżone, mają własną złożoność i nie powinny być w pełni pobierane w jednym zapytaniu, utworzyłem **Projekt** i **Zadanie** różne zagregowane korzenie Jak powinienem pobrać i utrwalić **Zadania**? . Wygląda na to, że **ProjectFactory** nie jest tym razem rozwiązaniem, ponieważ **Project** nie zawiera całego drzewa **Task**. Nadal chcę mieć pewne zagregowane funkcje typu root dla mojego **Project** , a ponieważ unikam zapytań wewnątrz moich encji, zdecydowałem się napisać relacje wewnątrz Project-Service-Aggregate. Teraz mogę pobrać pojedynczy **Project** z funkcją Repo::findByID(), ale pobieranie **Task** wygląda jak ProjectAggregationService *service = ProjectAggregationService.new(SomeProject) Task task_1 = service.findTask(.. .) Zadanie task_1_child_2 = service.findTaskChild(task_1,2) W tym momencie jestem zdziwiony, ponieważ: 1. Mam usługę do reprezentowania relacji encji. 2. Deklaruję wiele instancji usługi, podczas gdy wcześniej usługi były dość unikalnymi obiektami. 3. Brak przejrzystego drzewa obiektów, takiego jak Project.tasks[1].subtask[3], sprawia, że powyższy kod wygląda na bardziej złożony niż to konieczne. Zasadniczo mógłbym podsumować moje pytanie: Czy przyjąłem właściwe podejście? Byłbym bardzo wdzięczny za wszelkie uwagi dotyczące mojego rozumowania. Najbardziej martwi mnie degeneracja mojego kodu z nadmierną złożonością, ale nadal uważam, że trzymanie odwołań do zapytań i repozytoriów poza implementacją moich encji jest dobrym celem.


title: Jak wykryć główną przyczynę problemu lub błędu?

text: Często w kodowaniu uważam, że bardzo wolno i trudno jest wykryć główną przyczynę błędu, a czasami kończę w niewłaściwym miejscu w kodzie. To jest bolesne. Wiem, że wykrycie pierwotnej przyczyny błędu to bardzo ważna umiejętność dla programistów. Czy ktoś ma sztuczkę lub technikę sugerującą dobry sposób na znalezienie pierwotnej przyczyny?


title: Zdezorientowany pamięcią wirtualną dla wszystkich procesów

text: Mam nadzieję, że to właściwe miejsce. Jest to zadanie domowe na mój kurs dotyczący systemów operacyjnych i muszę zaimplementować działający system pamięci wirtualnej w C++, więc programowanie jest bezpośrednio zaangażowane. Przeczytałem teraz kilka źródeł na temat stronicowania i pamięci wirtualnej (Tanenbaum, Co każdy programista powinien wiedzieć o pamięci itp.) i zauważyłem, że każdy zaczyna od frazy „Każdy proces otrzymuje własną pamięć wirtualną”. Następnie przechodzą do szczegółowa analiza rozmiaru strony, algorytmów zastępowania stron, MMU i TLB itp. Te rzeczy są w moim przekonaniu całkiem w porządku, to co nie ma sensu to koncepcja pamięci wirtualnej. Jeśli mam cztery procesy działające jednocześnie i każdy proces używa swojej własnej wirtualnej przestrzeni adresowej, w jaki sposób chroniona jest pamięć fizyczna? MMU przetłumaczyło adres wirtualny 0 tak samo, niezależnie od tego, czy pochodzi on z procesu jeden, dwa, trzy czy cztery. Podam przykład: każdy proces ma 32-bitową wirtualną przestrzeń adresową, z której może korzystać. Każdy proces rozpoczyna się w ten sam sposób MOVI 10, 0 // r10 = 0 LOAD 11, 10 // r11 = MEM[r10]; wartość pod adresem 0x00000000 Po prostu nie rozumiem tej koncepcji odrębnej wirtualnej przestrzeni adresowej, jeśli każdy proces próbuje wywołać ten sam adres wirtualny, który zostanie przetłumaczony w ten sam sposób przez MMU. Czyli wszystkie cztery procesy otrzymają te same dane? Mamy tabelę stron, która przechowuje indeks każdej zmapowanej i niezamapowanej strony w ramce strony. Jeśli każdy wpis strony jest unikalny, to w jaki sposób może uwzględniać zduplikowaną wirtualną przestrzeń adresową, którą ma każdy proces? Jestem w punkcie, w którym napisałem szkice projektów dla MMU, TLB i Tabeli Stron, ale nie mogę kontynuować, dopóki nie zrozumiem, jak do cholery wirtualna przestrzeń jest definiowana i używana dla każdego procesu.


title: Czy Clojure to 3GL czy 4GL?

text: Trochę tła (na wypadek, gdybym się mylił) ... Myślę, że to rozumiem (to nadmierne uproszczenie): * ręczne wprowadzanie kodów do pamięci (lub na karcie dziurkowanej) to "język pierwszej generacji" * używanie mnemoników odpowiadających procesorowi instrukcje byłyby 2GL (jak asembler) * C/C#/Java/Objective-C to wszystkie 3GLs * SQL to 4GL Gdzie Clojure by się stało w takiej klasyfikacji? Jestem szczególnie zdezorientowany tym zdaniem z Wikipedii: > Archetypowym przykładem języka deklaratywnego jest czwarta generacja > język SQL, a także rodzina języków funkcjonalnych i logiki > programowanie. To zdanie wydaje się sugerować, że wszystkie języki funkcjonalne są deklaratywne. Czy to jest poprawne? Wtedy Clojure można używać w sposób funkcjonalny (i prawdopodobnie zaleca się używanie go "w miarę możliwości" w stylu FP), więc czy Clojure jest językiem deklaratywnym? Widzę też, że Clojure bardzo ułatwia tworzenie 4GL (np. jako wbudowane DSL, takie jak core.logic odtwarzające programowanie logiczne w około 200 liniach kodu), ale czy Clojure samo w sobie jest 4GL?


title: Jakie są wymagania dotyczące licencji open source w ramach licencji open source?

text: Jeśli dołączam do mojego projektu bibliotekę open source, która jest licencjonowana na licencji MIT, ale zawiera kod na licencji BSD, który wymaga przypisania (prawidłowo przypisanego w projekcie), czy moim obowiązkiem jest przypisanie go ponownie, jeśli zdecyduję się użyć tej biblioteki ? Zwykle nie stanowi to problemu (po prostu przyznałbym kredyt wszystkim bez względu na licencję), ale na platformie mobilnej nie ma zbyt wielu nieruchomości ani skutecznych sposobów pokazywania / łączenia tych licencji.


title: Polimorfizm a autoryzacja

text: Mam coś, co przeszkadza mi w zrozumieniu polimorfizmu (vs rola): Uwaga: używam szyn (ale to ogólne pytanie) Mam **4 modele** : * Użytkownik * Pro * Klient * Firma Istnieje ** powiązanie polimorficzne (profilowalne)** pomiędzy Pro/Klientem a Użytkownikiem [ponieważ Pro ma dużo więcej pól do rejestracji niż Klient]. Użytkownik jest używany do sesji (ja używam devise gem) Zasadniczo użyto czegoś bardzo podobnego do tego zapisu: http://jeffsaracco.com/blog/2012/03/04/ruby-on-rails-polymorphic-user- model/ ### Powiązanie firmy * Teraz chcę utworzyć powiązanie z firmą. * Do tej pory tylko **Pro ma jedną firmę** (ale myślę, że może to być inny profileable_type, który również może mieć firmę). * Klient nie ma firmy. W takim przypadku, które powiązanie jest preferowane: ### Podejście 1 * Użytkownik ma jedną firmę * Firma należy do użytkownika * i zarządzaj autoryzacją (z klejnotem, takim jak cancan), aby umożliwić tworzenie firmy tylko dla wersji Pro (z moim polem profileable_type w tabeli użytkowników) lub : ### Podejście 2 * Pro has_one Firma * Firma należy_do Pro * Więc w tym przypadku nie potrzebuję już żadnego zarządzania uprawnieniami (użytkownik (i klient jako rozszerzenie) nie może domyślnie utworzyć firmy) Szukam zalet / wad 2 podejścia. Jestem prawie pewien, że pierwsze z nich jest najlepszym rozwiązaniem, ponieważ mam identyfikator użytkownika w mojej tabeli firmowej, który byłby bardziej ogólny i rozszerzalny niż posiadanie pro_id. Byłbym zadowolony, gdybym miał pewność. Dziękuję!


title: Jak dodać obsługę obrazów do aplikacji bazodanowej klient-serwer?

text: Mam pytanie architektoniczne dotyczące projektu, nad którym pracuję. Obecnie jest to prosta aplikacja .NET C#, która działa na kilku komputerach klienckich i komunikuje się z centralnym serwerem MySQL w celu przechowywania danych. Obecnie na serwerze nie ma aplikacji ani usługi, tylko MySQL. Chciałbym dodać obsługę obrazów, aby użytkownicy mogli dodawać obrazy do bazy danych (i przeglądać po fakcie), ale po przechowywaniu obrazów bezpośrednio w MySQL jako `BLOB` uznałem, że takie podejście jest złym pomysłem, jak sugerowano w wiele postów na SO. Aplikacja nie może przechowywać obrazów w lokalnym systemie plików, ponieważ byłyby wtedy niedostępne dla innych użytkowników nie na tym samym lokalnym hoście. W związku z tym nie jestem pewien, jak najlepiej zaimplementować obsługę obrazów w przeciwnym razie: * Wszystkie komputery są oparte na systemie Windows, mogę skonfigurować folder współdzielony, ale potem mam ból głowy związany z utrzymywaniem zmapowanego dysku sieciowego i danych uwierzytelniających użytkownika/ uprawnienia. * Myślałem o dodaniu innej aplikacji (lub usługi), która działa na serwerze i obsługuje odczytywanie/zapisywanie obrazów po stronie serwera, ale wydaje się to zbędne w świetle faktu, że komputery są już zdolne do przesyłania plików. * Czy powinienem rozważyć utworzenie aplikacji na serwerze do obsługi całej komunikacji między klientami a bazą danych SQL, dodając tam komunikację systemu plików?


title: Zapisywanie do dziennika zdarzeń — najlepsza praktyka, jeśli dziennik jest pełny

text: Mam aplikację, która zapisuje we własnym źródle zdarzeń. Samo źródło zdarzenia jest tworzone podczas instalacji, aby zapobiec problemom z dostępem użytkownika i administratora w czasie wykonywania. W przypadku niepowodzenia zapisu w naszym własnym źródle zdarzeń zdarzenie jest zapisywane w dzienniku aplikacji (w rzeczywistości dwa zdarzenia, włączone dla oryginalnych danych zdarzenia i inne mówiące „Nie można zapisać do własnego dziennika zdarzeń, ponieważ...” lub coś podobnego) . Niedawno wykryliśmy problem polegający na tym, że gdy dziennik zdarzeń aplikacji jest pełny, wyjątek jest nieobsługiwany. Teraz przyznane, mogę po prostu zjeść wyjątek (podobny do tego, co mówi ta odpowiedź). Więc jakie jest najlepsze zachowanie? Aplikacja próbuje zarejestrować problem i próbuje zarejestrować, że wystąpił problem. Czy powinienem zjeść wyjątek, pozwolić, aby operacja rejestrowania nie powiodła się po cichu i kontynuować wykonywanie? Czy też powinienem pozwolić, aby wyjątek wzbił się w stos wywołań, aby użytkownik/deweloperzy wiedzieli o problemie? Jakie jest zalecane podejście w tych warunkach?


title: Przenieś gracza do innej drużyny, z graczami przechowywanymi w jednej tablicy, a drużynami w innej za pomocą java

text: Zasadniczo mam klasę zespołu, która ma listę tablic, w których są przechowywane graczy. W klasie kierowcy znajduje się tablica arraylist, która przechowuje drużyny. W każdym razie wymyśliłem, jak dodać gracza do określonej drużyny i podobnie usunąć gracza z tej drużyny. Problemy pojawiają się wtedy, gdy próbuję przenieść jednego gracza do drugiego. Rozumiem, że przejrzałem pierwszą drużynę i znalazłem zawodnika. Potem jakoś dodać tego gracza do innego, skanując wybraną drużynę i dodając do niej? Próbowałem w ten sposób, ale wydaje się, że zastępuje oryginalnego gracza nowym graczem w obu drużynach. Moje inne podejście to w jakiś sposób zwrócić parametry obiektu gracza, utworzyć inny z parametrami zwracanymi, usunąć oryginał, a następnie dodać nową instancję w drugim zespole? Naprawdę nie całkiem ogólnie, jak mogę się do tego zabrać, próbowałem całe popołudnie! Jeśli ktoś mógłby zaproponować mi ogólny pomysł, mogę odejść i zastosować zrozumienie do praktyki.


title: Jak przechowywać komunikaty o wyjątkach

text: Jak powszechnie przechowywane są komunikaty o wyjątkach? dla dowolnej domeny. Myślę o tym z punktu widzenia konserwacji. if(!Warunek1) wyrzuć nowy Exception("Pewny wyjątek"); if(!Warunek2) wyrzuć nowy Exception("Pewny wyjątek"); Jeśli zdecydowano, że wiadomość o wyjątku w tym fragmencie wymaga zmiany, należałoby to zmienić w dwóch miejscach; pozostawiając go szeroko otwartym na niespójne wiadomości i tym podobne. Jak w takim razie lepiej przechowywać komunikaty o wyjątkach? Może jako klasa statyczna ze stałymi? publiczne statyczne wyjątki { public const string CONDITION_NOT_MET = "Jakiś wyjątek"; } ... if(!Warunek1) wyrzuć nowy wyjątek(Exceptions.CONDITION_NOT_MET); if(!Warunek2) wyrzuć nowy wyjątek(Exceptions.CONDITION_NOT_MET); Czy często (w produkcji) są zakodowane na sztywno?


title: Wyjaśnienie walidacji i weryfikacji (Boehm) - nie rozumiem jego sensu

text: Mam nadzieję, że mój ostatni wątek o V&V, ponieważ znalazłem B.Boehm to tekst, którego po prostu nie rozumiem dobrze (prawdopodobnie mój techniczny angielski nie jest tak dobry). http://csse.usc.edu/csse/TECHRPTS/1979/usccse79-501/usccse79-501.pdf Zasadniczo mówi, że weryfikacja polega na sprawdzeniu, czy produkty wywodzące się z bazy wymagań muszą jej odpowiadać i że odchylenie prowadzi tylko do zmian w tych produktach pochodnych (projekt, kod). Ale mówi, że zaczyna się od projektu, a kończy na testach akceptacyjnych (możesz sprawdzić model V w środku). Chodzi o to, że zaakceptowałem ISO12207 pod względem walidacji wszystkich testów, ale tutaj nie ma to żadnego sensu. Aby mieć pewność, że produkt spełnia wymagania (test akceptacyjny) muszę go przetestować. Mówi również, że problemy z walidacją oznaczają, że wymagania są złe i należy je zmienić – co nie zdarza się w przypadku testów wykonywanych przez testerów, którzy po prostu sprawdzają zgodność z wymaganiami.


title: Czy istnieje licencja typu open source z warunkami podobnymi do własności?

text: Czy istnieje jakakolwiek licencja spełniająca następujące kryteria: * dostępny kod źródłowy (użytkownicy mogą przeglądać źródło) * użytkownicy mogą modyfikować kod za pomocą kredytów oryginalnego autora * nie wolno sprzedawać samego oprogramowania ani żadnego innego programu przy użyciu kodu z to * może być sprzedawany przez oryginalnego autora


title: Tyle wiesz, ale aplikacja jest problemem?

text: W mojej pracy moi przyjaciele zawsze mi mówią, że wiesz tak dużo o informatyce, inżynierii elektroniki itp. Ale mam trudności z ich zastosowaniem, a mój kod jest gówniany. Jak rozwiązać ten problem? Czy będę lepszy, czy programowanie nie jest moją karierą? Na przykład tak, znam OCTree, który jest używany do partycjonowania przestrzeni w grach i jest używany do optymalizacji, czy go zaimplementowałem? Nie, ale w zasadzie wiem o tym.. Czy znam algorytmy takie jak sortowanie, wyszukiwanie itp.? Tak, znam je całkiem dobrze, ale ich nie realizowałem.. Kiedy dostaję zadanie, trudno mi zastosować to, co znam...


title: Czy podczas definiowania ścieżki do katalogu należy uwzględnić końcowy ukośnik?

text: Powiedzmy, że definiuję katalog, a następnie dołączam z niego pliki. Czy lepiej jest zrobić: define('PATH', 'C:/xampp/htdocs/includes/'); wymagają PATH.'header.php; lub: define('PATH', 'C:/xampp/htdocs/includes'); wymagają ŚCIEŻKI.'/header.php;


title: Używanie foldr do dołączania dwóch list razem (Haskell)

text: W ramach zadania do college'u zadano mi następujące pytanie. Ponieważ moduł jest bardzo krótki, używamy tylko podzbioru Haskella, bez żadnego cukru składniowego ani idiomatycznych skrótów....Muszę napisać: _append xs ys : Lista utworzona przez połączenie list`xs` i ` ys`, w tej kolejności_ append (5:8:3:[]) (4:7:[]) => 5:8:3:4:7:[] Rozumiem koncepcję działania folderu, ale dopiero zaczynam od programowania funkcjonalnego. Udało mi się napisać następujące działające rozwiązanie (ukryte dla dobra innych w mojej klasie...): > append = \xs -> \ys -> foldr (\x -> \y -> x:y) ys xs Jednak po prostu nie mogę za całe życie wyjaśnić **_co do cholery się dzieje!?_** Napisałem to, po prostu bawiąc się w interpreterze, na przykład następującą linię: foldr (\x - > \y -> x:y) [] (2:3:4:[]), co zwróciło `[2:3:4]` , co skłoniło mnie do spróbowania foldr (\x -> \y -> x :y) (2:3:4:[]) (5:6:7:[]), co zwróciło `[5,6,7,2,3,4]`, więc rozpracowałem to stamtąd. Doszedłem do właściwego rozwiązania dzięki zgadywaniu i odrobinie szczęścia... Pracuję z następującą definicją foldr: foldr = \f -> \s -> \xs -> if null xs then s else f (head xs) (foldr f s (ogon xs) ) Czy ktoś może przeprowadzić mnie przez moje poprawne rozwiązanie? Wydaje mi się, że nie mogę tego zrozumieć .... Już przeszukałem sieć, a także przeczytałem kilka wątków SE, takich jak Jak działa folder


title: Czy dobrą praktyką jest posiadanie plików nagłówkowych C++ bez rozszerzenia?

text: Mam kłótnię z kolegą w sprawie wytycznych C++, których należy przestrzegać. Obecnie projektuje wszystkie swoje biblioteki w ten sposób: * Używa niespójnie wielkich i małych liter w swoich nazwach plików * Niektóre z jego nagłówków nie mają żadnego rozszerzenia Uważam, że brak rozszerzenia jest czymś zarezerwowanym dla standardowych plików C++, a używanie wielkich liter jest podatny na błędy (szczególnie, gdy masz do czynienia z kodem, który ma działać zarówno w systemie Windows, jak i Linux). Chodzi o to, że postępuje zgodnie z konwencjami `Qt` (nawet dla kodu, który nie używa Qt) i powtarza: „Jeśli Qt robi to w ten sposób, to nie może być złe”. Teraz staram się zachować otwarty umysł, ale naprawdę źle się czuję, kiedy muszę pracować nad/z jego bibliotekami. Czy istnieje wspólny ustalony zbiór zasad dotyczących tego? Czy norma coś o tym mówi? Dziękuję Ci bardzo.


title: Pola/kolumny dynamiczne

text: Jaki jest najlepszy sposób, aby zezwolić na dynamiczne pola/kolumny bazy danych? Załóżmy na przykład, że mamy system płacowy, który pozwala użytkownikowi tworzyć unikalne struktury wynagrodzeń dla każdego pracownika. Jak można/należy poradzić sobie z tym scenariuszem? Pomyślałem o użyciu tabeli „wynagrodzenie”, w której znajdują się pola składników wynagrodzenia i połączeniu tych kolumn z tabelą „wynagrodzenia”, która przechowuje rzeczywiste wartości. Czy to ma sens? **Przykładowe struktury wynagrodzeń:** zwróć uwagę, jak składniki wynagrodzenia mogą być wspólne lub niepowtarzalne. \-- Wynagrodzenie Jona -- Podstawowe 100 Premia roczna 25 Tel. Dodatki 15 \-- Pensja Jane -- Podstawowe 100 Dodatki podróżne 10 Dwuletnia premia 30


title: Najlepsze praktyki wdrażania wielojęzycznego interfejsu API

text: Mam projekt hobbystyczny i wygląda na to, że potrzebna jest biblioteka API (która z kolei jest nakładką na istniejące API http) przynajmniej dla dwóch języków - JavaScript i Python, przydałoby się też dodanie obsługi Perla. Pytanie brzmi – jakie są najlepsze praktyki minimalizacji kosztów wsparcia i rozwoju takich wielojęzycznych API? Czy lepiej wybrać jeden język i napisać tylko wrappery dla innych? Albo lepiej poruszać się wolniej, ale dokładnie zaimplementować każdą metodę w każdym języku.


title: Czy niezależny rozwój Javy jest wart porównania z Objective-C?

text: Najpierw chciałbym powiedzieć, że nie jestem programistą, ale uwielbiam kodować, kiedy tylko mogę. Używam głównie Perla, który jest językiem, którego używam podczas administrowania systemem. Z różnych powodów (których nie jestem pewien) mój menedżer niedawno polecił mi nauczyć się Java, więc zaczynam to robić. Pomyślałem, że powinienem wykorzystać tę sytuację, aby zbudować kilka aplikacji na Androida. Wygląda jednak na to, że Objective C zyskał ostatnio na popularności za sprawą iPhone’a i iPada. Chcę wiedzieć, czy warto programować w Javie na Androida w porównaniu z programowaniem w Objective C na iPhone'a (lub iPada). Oczywiście nie w oparciu o funkcjonalność APP, powiedzmy, że ktoś opracował APP X dla obu platform. Na jakiej platformie stałby się najbardziej godny? I nie, nie będę się uczyć obu (niestety nie mam dużo czasu) Dziękuję!


title: średnie branżowe dla czasu poświęconego na konserwację

text: Pewien menedżer ogłosił niedawno, że spędza zbyt dużo czasu na naprawianiu błędów. Wydaje mi się, że uważa, że powinniśmy cały czas pisać doskonały kod (oczywiście nadal dotrzymując tych niemożliwych terminów!) i to sprawiło, że zacząłem się zastanawiać, jaka była średnia branżowa czasu poświęcanego na naprawianie błędów i pisanie nowego kodu. Czy ktoś ma jakieś wskaźniki dotyczące czasu spędzonego na naprawianiu błędów związanych z tworzeniem nowego kodu? A może jest jakaś empiryczna analiza czasu naprawy błędów dla całej branży? Czy 50% wydanych na naprawę błędów to za dużo, czy też prawie? Co powiesz na 20% lub 33%? Z radością przyjmuję anegdotyczne dowody z własnego doświadczenia, ponieważ stanowią one część niektórych statystyk, z którymi mógłbym porównać nasze wyniki.


title: Czy dokumentacja nie powinna być pisana razem z testami, a nie w kodzie?

text: Popularne jest pisanie dokumentacji w tym samym pliku co kod i wyodrębnianie jej za pomocą oprogramowania do generowania dokumentów. Aby nie wpływać na wydajność, dokumentacja jest pisana w skomentowanych liniach, w DSL zaprojektowanym właśnie do tego celu. A to często skutkuje niewygodnym plikiem źródłowym. W dzisiejszych czasach rozwój sterowany testami jest popularny i zwykle testy są pisane na oddzielnych plikach z kodu. Ponieważ pliki testowe nie są uruchamiane podczas produkcji, nie wpływa to na wydajność, a zatem testy nie są pisane w skomentowanych wierszach w DSL, ale są napisane w tym samym języku programowania, co kod. Czy nie jest bardziej sensowne pisanie dokumentacji w tym samym pliku co testy nie w komentowanych wierszach, ale w tym samym języku programowania przy użyciu DSL? Dla każdego elementu składniowego, takiego jak klasa, metoda, najpierw można napisać dokumentację opisującą jego cechy, a następnie można wykonać test. To by było moim zdaniem przyjemniejsze. Mam na myśli języki skryptowe, takie jak Ruby, jeśli to ma znaczenie.


title: Jakie są „zapachy kodu”, które wskazują na to, że wymagany jest model nasłuchiwania zdarzeń?

text: Jakie są symptomy w bazie kodu wskazujące, że wymagane jest podejście oparte na nasłuchiwaniu zdarzeń? Wydaje mi się, że gdy istnieją klasy, które muszą być wywoływane przez wiele, niezdefiniowanych w czasie projektowania zbioru innych klas, potrzebny jest jakiś szkielet sygnalizacyjny, ale chciałbym usłyszeć, jakie są inne sytuacje, które by się pojawiły ulepszone poprzez zmianę na model oparty na zdarzeniach.


title: Rozmowa o testach rozwojowych

text: Mam test rozwojowy. Jestem zobowiązany do rozwiązania danego problemu w dowolnym języku, który mi się podoba w około 8 godzin. Firma to GFI gdyby ktoś się zastanawiał. Jak naprawdę mogę się do takiego testu przygotować?


title: Jak kontynuować rozwój bez webserwisu?

text: Tworzymy aplikacje na iOS, w których często otrzymujemy dane w postaci listy z API, następnie wybieramy dane i przechodzimy do kolejnego ViewControllera. Często zdarza się, że serwer nie działa lub jakieś API nie jest gotowe. Jaka jest dobra praktyka programistyczna, w której możemy kontynuować nasz normalny przepływ pracy bez uzależnienia od usługi internetowej, a gdy jest gotowy bez wprowadzania wielu zmian, kontynuujemy korzystanie z usługi internetowej, a do tego czasu używamy stałych danych.


title: Czy używanie kodu generowanego dynamicznie jako pamięci podręcznej to dobry pomysł?

text: Mam interfejs wyszukiwania w sieci, który może porównywać produkty w tabeli. Ten zestaw danych zmienia się kilka razy w tygodniu. Przechowuję listę "DISTINCT" (używaną do wyboru parametrycznego) w tabeli `cache`. Zapytanie jest kosztowne obliczeniowo, ponieważ obejmuje łączenia tabel i tysiące rekordów, stąd powód, aby je buforować. Zastanawiałem się, czy dobrym pomysłem jest "cachowanie" pewnych danych w PHP w dynamicznie generowanym kodzie. Pomysł polega na tym, że mógłbym utworzyć plik cache.php, który jest "dołączony", który zawiera dane w tablicach, które PHP może wykorzystać bez wchodzenia do bazy danych. Ten plik PHP może być buforowany przy użyciu dowolnego bufora kompilatora PHP. Nie mam problemów z szybkością (jeszcze), ale nie podoba mi się pomysł, aby prosić bazę danych o dane z pamięci podręcznej, ponieważ wydaje się, że obciążenie związane z transakcją php->mysql jest drogie.


title: Dlaczego Java nie jest „czystym” OOP?

text: Java została zaprojektowana w podejściu bardzo OO, a nawet „zmusza” programistów do programowania w paradygmacie OO (co można uznać za dobre lub złe, w zależności od opinii). Jednak podczas gdy _prawie_ wszystko w Javie jest klasą lub obiektem, prymitywne typy danych (`int`, `double`, itd.) nie są. Chociaż nie widzę w tym żadnych zalet, są wady. Na przykład, gdy metoda chce przyjąć jako parametr 'dowolną wartość', zwykle deklaruje parametr typu `Object`, nadtyp wszystkich klas w Javie. Jeśli jednak programista chce wprowadzić do metody `int` - doskonale poprawną wartość - musi 'zapakować' tę wartość w instancji klasy `Integer`, stworzonej specjalnie dla tego rodzaju potrzeb (o ile jak rozumiem). Moje pytanie brzmi: dlaczego prymitywów nie ma w klasach Javy, jak wszystko inne?


title: Jakie istnieją antywzorce nazewnictwa?

text: Jest kilka nazw, gdzie jeśli znajdziesz się w ich ręce, wiesz, że już coś zepsułeś. Na przykład: **XxxManager** To źle, ponieważ klasa powinna opisywać, co robi klasa. Jeśli najbardziej konkretnym słowem, jakie możesz wymyślić dla tego, co robi klasa, jest „zarządzanie”, oznacza to, że klasa jest za duża. Jakie inne antywzorce nazewnictwa istnieją? **EDYTUJ** : Aby wyjaśnić, nie pytam "jakie nazwy są złe" - to pytanie jest całkowicie subiektywne i nie ma sposobu, aby na nie odpowiedzieć. Pytam "jakie nazwy wskazują na ogólne problemy projektowe z systemem". Oznacza to, że jeśli okaże się, że chcesz nazwać komponent Xyz, prawdopodobnie oznacza to, że komponent jest nieprzemyślany. Zauważ też, że istnieją wyjątki od każdej reguły - szukam tylko flag ostrzegawczych, kiedy naprawdę muszę się zatrzymać i przemyśleć projekt.


title: Czy używanie ORM w programowaniu na Androida ma sens?

text: Czy ma sens używanie ORM w programowaniu na Androida, czy też framework jest zoptymalizowany pod kątem ściślejszego sprzężenia między interfejsem użytkownika a warstwą DB? * * * **Tło** : Właśnie zacząłem programować na Androida i moim pierwszym odruchem (pochodzącym z tła .net) było szukanie małego mappera obiektowo-relacyjnego i innych narzędzi, które pomogą zredukować schematy (np. POJO + OrmLite \+ Lombok). Jednak podczas tworzenia mojej pierwszej zabawkowej aplikacji natknąłem się na klasę interfejsu użytkownika, która wyraźnie wymaga kursora bazy danych: `AlphabetIndexer`. To sprawiło, że zacząłem się zastanawiać, czy może biblioteka Androida nie nadaje się do ścisłego oddzielenia warstwy UI i DB i że ominie mnie wiele przydatnych, oszczędzających czas funkcji, jeśli spróbuję używać POJO wszędzie (zamiast bezpośredniego dostępu do bazy danych ). * * * **Wyjaśnienie** : Zdaję sobie sprawę z zalet używania ORM _ogólnie_ , jestem szczególnie zainteresowany tym, jak dobrze współpracuje z nim biblioteka klas Androida.


title: Czy C++11 Uniform Initialization zastępuje starą składnię?

text: Rozumiem, że jednolita inicjalizacja C++11 rozwiązuje pewne niejasności składniowe w języku, ale w wielu prezentacjach Bjarne'a Stroustrupa (szczególnie tych podczas prelekcji GoingNative 2012) jego przykłady głównie używają tej składni teraz, gdy konstruuje obiekty. Czy teraz zaleca się używanie jednolitej inicjalizacji we _wszystkich_ przypadkach? Jakie powinno być ogólne podejście do tej nowej funkcji, jeśli chodzi o styl kodowania i ogólne zastosowanie? Jakie są powody, by _nie_ z niego korzystać? Zauważ, że w mojej głowie myślę przede wszystkim o konstrukcji obiektów jako o moim przypadku użycia, ale jeśli istnieją inne scenariusze do rozważenia, daj mi znać.


title: Czy istnieje uniwersalny format daty, który może zrozumieć każdy na świecie?

text: W Kanadzie każdy zna format daty „RRRR-MM-DD”. W Europie lub RPA preferują „DD-MM-RRRR”. Są użytkownicy z RPA, którzy mylą się z formatem daty „RRRR-MM-DD”. Czy istnieje sposób na poradzenie sobie z tą sytuacją? Myślałem o użyciu następującego formatu metody dla wszystkich: `02 lutego 2011`


title: Jakie są najtrudniejsze części języków programowania C++/C#/Java?

text: Zastanawiałeś się tylko, jakie są cechy trzech głównych języków programowania, które pokazują, że jesteś „ekspertem”? Proszę wykluczyć umiejętności „praktyczne”, takie jak wcięcia. Czy mam rację mówiąc, że dla C++ najtrudniejszym aspektem do opanowania jest STL/generics? Java wydaje się o wiele łatwiejsza, ponieważ pamięć jest obsługiwana za Ciebie. Nie jestem też do końca pewien co do C#? Staram się to wykorzystać do oceny mojego obecnego poziomu umiejętności i tego, do czego chcę dążyć. ps to zostało opublikowane na stackoverflow, ale zostało wyrzucone z powodu kłótni, proszę, postaraj się zachować uprzejmość, ponieważ naprawdę interesują mnie odpowiedzi od wszystkich :)


title: Czy programiści dysponują środkami produkcji?

text: Słuchałem dziś rano „Służebnego państwa” Hilare Belloc i zastanawiałem się, czy posiadam środki produkcji, tak jak chłop ze średniowiecza; podobnie jak jego potomkowie po tym, jak oligarchowie Anglii zmusili go do niewoli. Środkiem produkcji były grunty orne, na których siedział chłop pańszczyźniany, z których, mimo że nie był prawnie jego, nie można było go eksmitować. Czy zatem, jako programiści, z nieznanym dotąd zapasem darmowych narzędzi i zasobów, odzyskaliśmy jako klasa robotników, w przeciwieństwie do innych, środki produkcji? Czy biorąc pod uwagę szansę, komputer klasy średniej i stabilne połączenie z Internetem, każdy z nas nie byłby całkowicie samowystarczalny, a nie tylko pracownicy najemni?


title: Wdrażanie aplikacji internetowych i zależności

text: Mam darmową aplikację internetową, która używa innych skryptów wolnego oprogramowania do wyświetlania. Mam problem z podjęciem decyzji, czy powinienem skopiować kod źródłowy używanych skryptów do głównego repozytorium projektu, czy też wylistować je jako zależności i poprosić użytkownika (który instaluje aplikację na swoim serwerze), aby sam je zainstalował? Ponieważ niektóre skrypty rozwiązują problemy z kompatybilnością przeglądarek, a ja nie jestem dobrym projektantem stron internetowych (nienawidzę sprawdzać mojej strony internetowej w IE, aby zobaczyć kompatybilność), użycie najnowszej wersji skryptów jest preferowane i drugie rozwiązanie działa tutaj. Ale ma problem ze skryptami, które nie są kompatybilne wstecz z wersjami, których używałem do rozwoju. Może inna metoda jest dobrze znana z tych problemów, których nie znam.


title: Kiedy nie należy używać wzorca wstrzykiwania zależności?

text: Odkąd nauczyłem się (i pokochałem) automatyczne testowanie, odkryłem, że używam wzorca wstrzykiwania zależności w prawie każdym projekcie. Czy zawsze należy używać tego wzorca podczas pracy z testowaniem automatycznym? Czy są sytuacje, w których powinieneś unikać wstrzykiwania zależności?


title: Dlaczego c++? Gdzie zacząć?

text: Wiem, że było wiele takich pytań, ale proszę poczekać na jeszcze jedno. Wszystkie języki programowania, które teraz znam, są stworzone do celów internetowych. Uczyłam się ActionScript, php i trochę JavaScriptu, AJAX, itp. PHP bardzo mi się podobało, ale wciąż szukam czegoś, co naprawdę pokocham! Dlatego chcę spróbować czegoś nowego. Czy możesz mi powiedzieć, jakie są pozytywne i negatywne strony tego języka? Czy istnieje jakiś duży przykład użycia C++? Czy to dobry język na rozpoczęcie tej podróży (może możesz polecić coś innego)? Czy są jakieś dobre samouczki wideo, które mogę kupić na płycie CD/DVD? Czy mógłbyś polecić jakieś książki? @edit: Po przeczytaniu Twoich odpowiedzi i kilku informacji w Internecie nie mam pewności co do dwóch języków. Są to C++ i Python. Python może być używany w sieci, więc świetnie łączy się z moją obecną wiedzą. Ale co z Pythonem dla aplikacji desktopowych? Czy tworzenie aplikacji wieloplatformowych jest trudne? Czy mógłbyś dla mnie porównać te dwa języki? PS. Bardzo się cieszę ze wszystkich Twoich odpowiedzi. Jest to dla mnie bardzo pomocne i zmusza mnie do produktywnego myślenia o mojej przyszłości ;)


title: Jak mogę przetłumaczyć pomoc aplikacji na Androida i aktualizować ją?

text: Moja aplikacja na Androida jest prawie gotowa i spędzam dużo czasu na tworzeniu zestawu bardzo precyzyjnych stron pomocy w HTML, które wyświetlam za pomocą WebViews. Jestem teraz gotowy na kolejny krok, którym jest _i18n_. Tłumaczenie mojej aplikacji nie stanowi problemu, strings.xml nie jest tak długi i mogę spokojnie poprosić znajomych o jego przetłumaczenie. Mój problem dotyczy tych stron pomocy. Kiedy zaktualizuję swoją aplikację, prawdopodobnie będę musiał również zaktualizować strony pomocy. Widziałem, że to nie jest takie proste, nawet w jednym języku. Potrzebuję twojej opinii, jak wykonać tak ogromną pracę (która wcale nie jest moją pracą jako programisty). Czy muszę: * Ręcznie aktualizować każdą stronę pomocy językowej podczas aktualizacji aplikacji, co oznacza proszenie wszystkich moich tłumaczy o dostarczenie nowej wersji ich pracy za każdym razem, gdy coś zmienię. * Udziel pomocy tylko w domyślnym języku (prawdopodobnie angielskim, mimo że domyślnym językiem jest francuski. Francuzi nadal mieliby francuską pomoc ;-D). * Przetłumacz strony pomocy przez Google, nawet jeśli _"nie jest dobrze angielski"_. Nie wiem, jak zrobić to automatycznie. * Zrób coś innego, o czym prawdopodobnie myślałeś dawno temu. Dziękuję za odpowiedzi, wskazówki i triki.


title: Stworzenie osobnego projektu dla podmiotów JPA

text: Tam, gdzie pracuję, powszechną praktyką jest tworzenie oddzielnych dla encji JPA i projektu dla aplikacji webowej (WAR). Więc w zasadzie masz (przynajmniej) dwa projekty dla każdej aplikacji - appJPA i appWEB. Ludzi, którzy rozpoczęli tę konwencję, już nie ma, więc zastanawiałem się nad korzyściami płynącymi z tego oddzielenia. Jedyną zaletą, o której mogłem pomyśleć, jest aspekt Eclipse JPA, który zapewnia różne narzędzia dla JPA. Ale jeśli się nie mylę, ten aspekt można zastosować również do projektów WAR. Więc moje pytanie brzmi: czy ta separacja jest niepotrzebna?


title: Jak mogę sprzedać mojego szefa na Python+Django zamiast PHP+inny framework?

text: Mój szef zlecił mi przepisanie naszej strony intranetowej. Istniejący system to bardzo stary PHP, który nie używa frameworka. Preferuję przepisywanie w Pythonie i Django, ale mój szef nie lubi składni Pythona (jest również programistą). Jestem na przeciwległym końcu... Nie lubię programować w PHP, a moje doświadczenie w PHP jest bardzo ograniczone, ale dużo pracy wykonałem w Pythonie. Mój szef zna moje doświadczenie, ale nadal chce, żebym go sprzedawał na Pythonie. Niektóre z rzeczy, o których wspomniał, nie lubią w Pythonie: * wcięcie jest jedynym oznaczeniem początku/końca bloku kodu (uwielbia swoje nawiasy klamrowe) * problemy z dokumentacją (mówiłem mu, że dokumentacja Pythona jest świetna) * obsługa IDE jest ograniczony (wspomniany PyCharm i Wing IDE, nie wiem, które jest lepsze) * miał problemy ze zgodnością podczas przechodzenia między starszymi wersjami pythona Być może jest jedyną parą oczu na nowy kod. Jak mogę go przekonać, że Python to lepszy wybór? Czy Ruby to potencjalny środek?


title: Czas wykonania instrukcji montażu

text: Gdzie mogę znaleźć czas wykonania instrukcji x86? Jak sprawdzić, która instrukcja jest szybsza lub mniejsza?


title: Wstawianie kodu HTML za pomocą jquery

text: Jedną z naszych aplikacji internetowych jest strona, która pobiera numer seryjny, a różne informacje są zwracane i wyświetlane użytkownikowi. Numer seryjny jest przekazywany przez AJAX i na podstawie odpowiedzi może wystąpić jedna z następujących sytuacji - * Wyświetlany jest komunikat o błędzie * Nowy formularz zastępuje poprzedni formularz Teraz, sposób, w jaki sobie z tym radzę, polega na użyciu jQuery do $.remove()) tabeli, która wyświetliła początkowy formularz szeregowy, następnie dołączam inną tabelę html, która zawiera inny formularz. W tej chwili dołączam ten dodatkowy formularz jako część źródła html i po prostu ustawiam go na display:none, a następnie używam jQuery, aby pokazać go, gdy jest to właściwe. Jednak nie podoba mi się to podejście, ponieważ jeśli ktoś przegląda źródło na stronie, widzi kod HTML tabeli, który nie jest wyświetlany. Moją następną myślą byłoby użycie AJAX do odczytania innego pliku HTML i dołączenia go w ten sposób. Jednak staram się ograniczyć liczbę plików używanych przez ten projekt, a ponieważ większość stron w naszym projekcie będzie używać AJAX, widziałem przypadek, w którym istnieje wiele plików zawierających fragmenty HTML - i to wydaje mi się niedbałe. Jaki jest najlepszy sposób postępowania w przypadku wyświetlania i usuwania wielu elementów HTML za pomocą jQuery?


title: Co muszę wziąć pod uwagę, projektując interfejs użytkownika wokół relacji 0..1:1?

text: Projektuję schemat bazy danych dla nowej funkcji produktu. W moim obecnym projekcie mam kilka powiązanych danych opcjonalnych. Zamiast mieć pola dopuszczające wartość null, mam osobną tabelę z relacją 0..1:1 z tabelą główną. Wybrałem ten projekt, ponieważ zapytania są prostsze*, jeśli dane o wartości null nie muszą być brane pod uwagę. Kierownik zespołu zwrócił mi uwagę, że skomplikuje to wiązanie danych w interfejsie użytkownika i zasugerował, abym używał tylko pól dopuszczających wartości null. Zastanawiam się, jakie komplikacje wprowadzi opcjonalne podejście tabelowe? Oczywistą rzeczą, która przychodzi mi do głowy, jest to, że kontrolki obsługujące dane nie mogą powiązać się z zamkniętym zestawem danych, więc będę musiał utworzyć rekord w locie, gdy użytkownik spróbuje wypełnić opcjonalne dane, lub utworzyć rekord w w tym samym czasie co rekord główny, negując cel posiadania osobnej tabeli. Czy jest jeszcze coś, o czym powinienem wiedzieć? **Wyjaśnienie** *Prostsze, przez co odnoszę się do oszałamiającej ilości reguł i niejasności dotyczących zachowania wartości null w różnych scenariuszach zapytań w standardzie SQL oraz faktu, że nie ma dwóch producentów, którzy zgadzają się, którą z tych reguł zaimplementować.


title: Co zrobić, gdy nie ma logicznych historyjek użytkownika, ale oddzielne zadania programistyczne?

text: Musimy wygenerować wydanie w 3 tygodnie, a dla planowania, które robimy dzisiaj, nie mamy spójnych logicznych historyjek użytkowników z zadań backlogu. Czy prawidłowe jest dopasowanie powiedzmy, że każde zadanie programistyczne jest równoważne historyjce użytkownika? Metodologicznie, jaki jest właściwy sposób załatwienia tego?, bo i tak będziemy mieć spotkania standup i będziemy kontrolować postęp projektu pod kątem tych zadań rozwojowych. Na przykład mamy takie rzeczy jak: . Dostosuj ETL do przetwarzania list numerycznych. Dostosuj składnik licencjonowania . Usuń kod DTC i tak dalej. Więc dla planowania pokera i planowania iteracji jest ważne, aby korzystać z tych zadań? jeśli nie, jaka jest alternatywa?


title: Wybór najprostszej wersji platformy źródła podczas przenoszenia na inną platformę

text: Pytanie zabrzmi dziwnie, ponieważ nie mam zbyt dużego doświadczenia w C, C++ i ASM. Załóżmy, że mam trudności ze znalezieniem rozwiązania C# zarządzanego, tylko z bezpiecznym kodem, aby rozwiązać problem. Potem stwierdzam, że w 1998 r. Niektóre kody (np.) kodeka zostały napisane w C dla PPC, x86, ramienia itp. Ten kod może mieć ponad 20000 linii i muszę go przenieść. Potem wypróbowuję jedną platformę i zauważam wiele wywołań API, rzeczy CUDA, wbudowany assembler w większości kodu. Itd. Czy istnieje preferencja dotycząca przenoszenia między PPC, PS2, x86, arm, sparc itp. podczas przenoszenia na inną platformę, która pomaga zmniejszyć liczbę wystąpień kodu specyficznego dla platformy? Wiem, że wszystkie te kompilacje istnieją zwłaszcza dlatego, że każdy procesor ma określone funkcje, ale zastanawiam się, czy niektóre procesory mają mniej anten, trzeciego oka i czterech nóg i są mniej prostsze (lub „ograniczone”) niż inne. Ostatni tydzień spędziłem na portowaniu kodów i miałem intuicję, że skupienie się na pewnych aspektach pomaga znaleźć więcej kodu międzyplatformowego. Mogę się mylić i wiem, że to w dużym stopniu zależy od umiejętności. Ale to niczego nie zmienia w tym, że np. 20000 wierszy kodu Java może być łatwiej przeportować do .Net dla Windows Phone niż kod asm x86. Mówiąc dokładniej, moje pytanie dotyczy dobrego podejścia przy przenoszeniu Orange do Peach i unikania przechodzenia przez kilka implementacji dla konkretnych platform.


title: Czy zasada substytucji Liskov dotyczy również klas implementujących interfejs?

text: LSP stwierdza, że klasy powinny być substytucyjne dla swoich klas bazowych, co oznacza, że klasy pochodne i bazowe powinny być semantycznie równoważne. Ale czy LSP dotyczy również klas implementujących interfejs? Innymi słowy, jeśli _metoda interfejsu_ zaimplementowana przez klasę jest semantycznie różna od oczekiwanej przez użytkownika, czy zostanie to uznane za naruszenie LSP?


title: Co to jest „operacja mnożenia 1620”?

text: Natknąłem się na Wikipedię, kiedy natknąłem się na wpis dotyczący FLOPS, a konkretnie na tabelę w tej sekcji. Pierwszy wpis dotyczy komputera z 1961 r., komentarz po prawej mówi > Operacja mnożenia w 1620 trwa 17,7 ms.[46] Co to za operacja? Zakładam, że oznacza to, że może wykonać mnożenie w 17,7 ms?


title: Czy programiści powinni wykonywać wszystkie zadania, czy powinni się specjalizować?

text: Zastrzeżenie: Celem tego pytania nie jest rozeznanie, co jest lepsze dla indywidualnego dewelopera, ale dla systemu jako całości. Pracowałem w środowiskach, w których pewnymi obszarami zarządzały małe zespoły. Na przykład, istniałby mały zespół dla każdej z tych funkcji: 1. UI 2. Framework 3. Logika biznesowa/aplikacyjna 4. Baza danych Pracowałem również w zespołach, w których programiści byli odpowiedzialni za wszystkie te obszary i więcej (QA, analityka itp.). Moje obecne środowisko promuje zwinny rozwój (w szczególności scrum) i każdy ma swoje ręce w każdej z wymienionych wyżej dziedzin. Chociaż istnieją plusy i minusy każdego podejścia, chciałbym się dowiedzieć, czy jest więcej zalet i wad niż wymienione poniżej, a także jakie są ogólne odczucia, które podejście jest lepsze. **Deweloperzy robią wszystko** **Zalety** 1\. Deweloperzy mogą być bardziej zaokrągleni 2\. Programiści wiedzą więcej o systemie **Wady** 1\. Każdy ma swoje ręce we wszystkich obszarach, co zwiększa prawdopodobieństwo uzyskania mniej niż optymalnych wyników w tym obszarze 2\. Zrobienie czegoś, czego nie znasz, może zająć więcej czasu (główka wszystkich transakcji, mistrz żadnej) **Specjalizacja programistów** **Zalety** 1\. Deweloperzy mogą tworzyć zasady i procedury dla swojej dziedziny wiedzy i łatwiej je egzekwować 2\. Deweloperzy mają większą szansę na zdobycie głębokiej wiedzy na temat swojej konkretnej dziedziny i uczynienie z niej jak najlepszej 3\. Inni programiści nie przekraczają granic i nie degradują innego obszaru **Wady** 1\. Jak ujął to jeden z kolegów: „Dlaczego miałbyś się tak zaszufladkować?” (Oznacza to, że niektórzy programiści nie będą mieli szansy na pracę w pewnych obszarach.) Łatwo powiedzieć, jak wspaniała jest agile i że powinniśmy to wszystko zrobić, ale jestem trochę fanem posiadania obszarów wiedzy. Bez tego doświadczenia widziałem degradację kodu, trudności w zarządzaniu schematami baz danych, hackowanie kodu interfejsu użytkownika itp. Spójrzmy prawdzie w oczy, niektórzy ludzie robią karierę tylko z pracy z interfejsem użytkownika lub po prostu z pracy z bazami danych. Nie jest tak łatwo po prostu wypełnić i wykonać tak dobrą pracę jako ekspert w tej dziedzinie.


title: Jak nabrać nawyku korzystania z repozytorium (np. GitHub)?

text: Czy są jakieś najlepsze praktyki na froncie repozytorium lub jakieś typowe pułapki dla nowo przybyłych, których powinienem unikać? Ostatnio czytałem o korzyściach płynących z repozytoriów nawet w przypadku projektów dla jednego dewelopera, a ponadto prawdopodobnie za chwilę zacznę pracować z wieloma innymi inżynierami, ale jak przejść od nigdy nieużywania repozytorium do ustawienia jednego up - nawet dla wielu osób! **Tło:** Przede wszystkim jestem inżynierem elektronikiem i chociaż programowanie aplikacji było częścią tego, nigdy nie robiłem tego dużo - głównie były to fragmenty C dla systemów wbudowanych, gdzie byłem jedyna osoba nad tym pracująca.


title: Próbując zrozumieć 2N lnN porównuje dla szybkiego sortowania

text: Przeglądałem analizę szybkiego sortowania w książce Sedgewicka Algorithms. Tworzy następującą relację rekurencji dla liczby porównań w quicksort podczas sortowania tablicy N odrębnych elementów. ![tutaj podaj opis obrazu](http://i.stack.imgur.com/6g8bm.jpg) Trudno mi to zrozumieć... Wiem, że każdy element musi stać się osią prawdopodobieństwa 1/N i że jeśli k staje się osią obrotu, to lewa podtablica będzie miała k-1 elementów, a prawa podtablica będzie miała N-k elementów. 1. Jak koszt partycjonowania wynosi N+1 ? Czy do partycjonowania potrzeba N+1 porównań? 2.Sedgewick mówi, że dla każdej wartości k, jeśli je zsumujesz, prawdopodobieństwo, że element partycjonujący to k + koszt dla dwóch podtablic, otrzymasz powyższe równanie. * Czy ktoś może to wyjaśnić, aby osoby z mniejszą wiedzą matematyczną (ja) mogły to zrozumieć? * Konkretnie, jak uzyskać drugi wyraz w równaniu? * Co dokładnie oznacza ten termin?


title: Jak zaprojektować wzór złożony w Pythonie?

text: # Koncepcja Programuję interfejs w pygame jako osobisty projekt, aby ułatwić mi tworzenie gier. Do tej pory udało mi się zaprojektować architekturę, która zachowuje się w ten sposób: * Obiekty są komponentami do wyświetlenia, które mogą pojawiać się i poruszać na ekranie * Obiekty mogą mieć obiekty potomne * Gdy obiekt wyświetla się sam, prosi wszystkie swoje dzieci, aby wyświetlały się na ekranie rodzica. powierzchnia. * Obiekty mają trzy ważne elementy: system wywołań zwrotnych, system graficzny i system fizyczny, które odpowiednio działają, wyświetlają i przesuwają. Następnie, kiedy chcę stworzyć "scenę" gry, tworzę obiekt "root", który zawiera inne obiekty, takie jak gracz, mysz, ziemia, potwory... Potem wystarczy poprosić roota, aby się wyświetlił, a każdy obiekt pojawia się rekursywnie. Zaprojektowałem to, nie znając na początku wzorca złożonego, tylko podstawy OOP. Moim głównym problemem było sprawienie, aby właściwość zastępowalności obiektów, która pochodzi z dziedziczenia, działała dobrze z utworzoną przeze mnie kompozycją rekurencyjną. Mam na myśli to, że mam „abstrakcyjną” klasę o nazwie „Object” (umieszczam abstrakcję w cudzysłowie, ponieważ Python tak naprawdę nie ma takiej koncepcji), która jest dziedziczona przez klasy „Image” (aby móc wyświetlić) lub „MovingObject” (aby móc się poruszać). Tutaj dziedziczenie ma na celu rozszerzenie moich umiejętności obiektu. Ale mój złożony wzór wymaga, aby „grupy obiektów były traktowane tak samo jak pojedyncze obiekty”. Więc kiedy rekurencyjnie wywołuję metodę z obiektu, wywołuje tę metodę z każdego dziecka obiektu, niezależnie od faktu, że niektóre z nich mogą nie mieć tej metody. # Przykład Na przykład użyjmy tego elementu głównego : * root (Obraz) * player (MovingObject) * cloud (MovingObject) * background (Obraz) * sun (Obraz) Załóżmy teraz, że chcemy wywołać metodę `move()` na elemencie root, aby każdy potomek się poruszał : Po pierwsze, nie możemy, ponieważ root jest instancją Image, więc nie zna metody `move()`. Ale nawet gdyby tak było, dzieci „tło” i „słońce” nie wiedziałyby o tym. Postanowiłem więc umieścić pustą metodę `move()` wewnątrz mojej „abstrakcyjnej” klasy Object, aby każdy obiekt o tym wiedział, nawet jeśli nic nie robi. Problem polega na tym, że moja klasa Object zawiera teraz puste metody, których nie rozumie ani nie potrzebuje, tylko po to, aby zezwolić na zachowanie rekurencyjne. # Możliwe rozwiązanie Wtedy usłyszałem o całym zamieszaniu "dziedziczenie kontra kompozycja" i jednym z rozwiązań, które przyszło mi do głowy, było zaprzestanie używania dziedziczenia dla zdolności Object i zamiast tego użycie kompozycji. Oznacza to, że utworzyłbym na przykład klasę „Body”, klasę „Image” i klasę „Callback”, które reprezentowałyby różne akcje, a następnie podłączyłbym je do instancji Object, aby ją „wyposażyć” i nadać jej więcej mocy . Ale potem pomyślałem, że to ledwie coś zmieni, bo będę musiał wywołać `move()`, a wtedy obiekt sprawdzi, czy ma wtyczkę Body, i użyje jej. Ale nadal wymaga, aby metoda `move()` była obecna wewnątrz klasy Object. #Pytania Zwracam się więc do Was o rady dotyczące mojego wzoru: * Czy dobrze rozumiałem, jak działa wzór kompozytowy? * Czy moje podejście jest prawidłowe? * Czy użycie klas "wtyczkowych" mi pomoże ? * Czy zachowanie rekurencyjne to dobry pomysł? * Czy są inne wzory bardziej pasujące do moich potrzeb? Mam nadzieję, że możesz dać mi kilka wskazówek!


title: Tworzenie uzasadnienia biznesowego dla przyszłościowej aplikacji Silverlight

text: Niedawno zacząłem pracować dla całkiem dużego banku piszącego aplikacje wewnętrzne. Jestem podwykonawcą firmy, w której pracuję (w której również niedawno zacząłem pracować). Ten bank **w ostatnim czasie** został zaktualizowany do Windows XP, wcześniej używali Windows 2000. Otrzymałem zadanie przepisania aplikacji do przeglądania raportów, którą obecnie robię w MVC4 (Windows XP == Visual Studio 2010). Oryginalna aplikacja została napisana w .net 2 z webfomami i jest trochę bałaganu. Cała aplikacja wydaje się opierać na stanie, gdzie MVC polega na przyjęciu bezstanowej natury sieci, ponieważ dane wprowadzane do formularza A wpływają na opcje widoczne w formularzu B, opcje wybrane w formularzu B wpływają na formularz C itp. itd. (Uwielbiam MVC i uważam, że jest to świetna rzecz we właściwym kontekście). Całe utrzymywanie modeli między stanami zaczyna być dość nieuporządkowane i nie mogę powstrzymać się od myślenia, że albo robię to źle, albo nie używam odpowiedniego narzędzia do pracy. Myślę, że WPF byłby do tego idealny, ale komputery są kontrolowane przez zewnętrzną agencję i są dość zablokowane. Mamy nieco większą kontrolę nad serwerami, na których znajdują się aplikacje. Oczywista następna opcja to Silverlight (myślę, że może się strasznie się mylę!) Kilka pytań. Po pierwsze: czy MVC ASP faktycznie jest najlepszą opcją tutaj, czy robię to źle? Po drugie: Jaki argument przedstawiłbyś kierownictwu, gdybyś zgodził się ze mną i myślał, że aplikacja oparta na Silverlight jest właściwą drogą? Korzystanie z technologii innych niż MS nie jest możliwe. MVC4 budzi kontrowersje.


title: Czy mogę wyłączyć biały znak programu Visual Studio na dole plików kodu?

text: W każdym otwartym pliku w programie Visual Studio istnieje możliwość przewijania całego kodu poza zasięgiem wzroku ”. Innymi słowy, pod wierszami kodu znajdują się stosy białego miejsca, do którego można przewinąć. To dla mnie nie ma sensu , a kiedy ściągam kółko myszy z agresją, mój kod znika z ekranu.Czy istnieje sposób, aby wyłączyć tę irytację?Ponadto, czy ktoś może mi wyjaśnić jakiś logiczny powód, dlaczego tam jest?ps: otagowałem to pytanie jako visual-studio, ponieważ jestem prawie pewien, że pojawiło się w każdej wersji VS, z której kiedykolwiek korzystałem... chociaż obecnie używam visual-studio-2010 ![Ta przestrzeń jest całkowicie bezużyteczna](http: //i.stack.imgur.com/HKsUI.png) ![Teraz jest jeszcze gorzej, bo przewinąłem do dołu \(zwróć uwagę na linię #46\)](http://i.stack.imgur.com/QPfVf .png) ## EDYCJA Jon Galloway wskazał mi inny wątek stwierdzający, że został dodany na popularne żądanie.Nadal nie ma sensu, dlaczego nie mieliby włączyć/wyłączyć tej funkcji


title: Czy kontrola wersji bazy danych jest praktyczna?

text: Temat kontroli wersji baz danych coraz częściej pojawia się w mojej pracy iw dyskusjach społecznych. Ale prawda jest taka, że nie spotkałem nikogo, kto faktycznie to robi. Jedyne, co kiedykolwiek dało Google, to drogie produkty/usługi. Czy to naprawdę wszystko, co istnieje? Czy rozwiązanie typu open source (lub przynajmniej _standard_, a nie tylko „Kontrola wersji firmy x”) istnieje dla KAŻDEGO typu bazy danych (transakcyjnej lub innej)? Jestem zakochany w tym pomyśle, ale nie wiem od czego zacząć.


title: Jaki jest (lub gdzie mogę znaleźć) algorytm dekodowania FLAC do PCM?

text: Próbuję zaprogramować bardzo podstawowy odtwarzacz FLAC przy użyciu 100% C# całkowicie od podstaw. Moje zrozumienie tego typu rzeczy jest bardzo ograniczone, więc używam tego projektu jako sposobu na poznanie kompresji i dekompresji. Obecnie studiuję informatykę i matematykę, więc nie mam nic przeciwko uczeniu się matematyki. Sprawdziłem specyfikacje formatu na xiph.org i rozumiem strukturę nagłówków i wszystkich, ale nie mogę znaleźć zwięzłego wyjaśnienia, jak działa kompresja dźwięku. Jak mogę przekonwertować ramki na pcm? Niestety moja wiedza na temat C/C++ jest bardzo ograniczona, ponieważ mam tylko doświadczenie z Javą i C#. W związku z tym próba nawigowania po kodzie C++, który już istnieje, nie jest dobrym punktem wyjścia. Spojrzałem na FlacBox i sporo się z niego nauczyłem, ale prawie w ogóle nie jest to komentowane i gubię się, próbując dowiedzieć się, jak działa konwersja z flac do pcm. Więc co powinienem przeczytać, jeśli chodzi o matematykę, abym mógł zacząć od tego? Gdzie mogę znaleźć podstawowy algorytm konwersji ramek audio na wav? Dziękuję.


title: Czym „przykręcany” jest taki sam lub różny od dodatku, rozszerzenia lub modułu?

text: Słyszę termin „bolt-on” używany w wielu kontekstach, szczególnie w mojej organizacji, w której PeopleSoft jest szeroko stosowany. Nie wiem dokładnie, czym różni się to od „rozszerzenia” istniejącego produktu, nowego modułu w aplikacji lub „dodatku”, jaki kupiłbyś do posiadanego produktu. Czy istnieje bardziej formalna definicja „przykręcania”, której nie znam?


title: Jak to lepiej zaprojektować?

text: Zajmuję się tworzeniem systemu przy użyciu .NET, który będzie używany przez wielu użytkowników. Z tego powodu muszę zidentyfikować w bazie danych, które dane należą do każdego użytkownika. Wyjaśniając na przykładzie, wyobraź sobie, że mam encję `Produkt`. Wtedy każdy użytkownik ma swoje produkty, a więc w bazie danych w tabeli produktów musimy być w stanie rozróżnić produkty każdego użytkownika. Mówiąc to, moim rozwiązaniem było dodanie do bazy danych dodatkowej kolumny dla każdej tabeli dla identyfikatora użytkownika. Teraz w moim kodzie było to to samo, co dodanie do moich repozytoriów parametru, aby otrzymać identyfikator użytkownika, aby repozytorium mogło zlokalizować prawidłowe dane. Konkretna implementacja repozytorium do obsługi relacyjnych baz danych wystarczy sprawdzić te kolumny. Problem polega na tym, że aby móc uzyskać te kolumny dostępne w moim repozytorium i na moim ORM (w przypadku EF), musiałem dodać do każdej jednostki jedną właściwość `UserID`. Problem polega na tym, że jeśli pomyślę przez chwilę, nie wydaje się to dobrym rozwiązaniem. Łączę encje domeny ze szczegółami dotyczącymi utrwalania danych. Co więcej, łączę każdy podmiot ze sposobem, w jaki zarządzam dostępem do danych i wydaje się to złym podejściem. W związku z tym, czy istnieje lepszy sposób na zaplanowanie tego? Jak upewnić się, że możemy powiązać dane z użytkownikami, a jednocześnie uniknąć tych właściwości w encjach domeny?


title: jakie jest najlepsze rozwiązanie tego problemu

text: Potrzebuję pomocy. Mamy stronę internetową (stronę PHP) i ma ona różne oprogramowanie (takie jak koszyk na zakupy, oprogramowanie do czatu, oprogramowanie do sprzedaży biletów, blog, .... ).


title: Używanie Django do tworzenia witryn podrzędnych

text: Tworzę serię małych stron, korzystam z frameworka django. Teoria głosi, że użytkownik wchodzi na główną witrynę, rejestruje się, a następnie otrzymuje własną witrynę podrzędną. Przykład: * przejdź do example.com * użytkownik tworzy konto „mojastrona” * użytkownik otrzymuje własną witrynę: mojawitryna.example.com i może to dowolnie konfigurować Moje pytanie: * czy nie byłoby lepiej mieć „złoto” ” wersja witryny, która jest tworzona dla każdej witryny? na przykład: cp ~/goldsite ~/mysite i odpowiednio zmień wskaźniki bazy danych ** minusem jest to, że jeśli kiedykolwiek będę musiał przeprowadzać konserwację pliku, musiałbym zmienić wszystkie podstrony. ...lub * mieć jednego hosta i skonfigurować bazę danych do obsługi wielu witryn. DB może zrobić bałagan. Jakakolwiek opinia byłaby świetna.


title: Czy można zacząć od szablonów w rozwoju MVC?

text: Jestem nowy w tworzeniu stron internetowych i rozpocząłem pracę nad projektem w mojej firmie, który korzysta z DJANGO. Czuję, że elastycznie zaczynam mój rozwój bezpośrednio od szablonów. Myślę, że będzie łatwiej, jeśli najpierw zwizualizuję rzeczy. Więc moje pytanie: czy można zacząć od szablonu, zamiast zaczynać od modeli? Czy natknę się na jakieś zamieszanie, jeśli pójdę tą metodą rozwoju?


title: Testowanie bardzo specyficznej funkcji w dużej, złożonej aplikacji

text: Jestem nowy w testowaniu, ale z całego serca zdaję sobie sprawę, jak ważne jest to. Głównym problemem jest to, że moja firma w ogóle nie ma odgórnego wsparcia dla testów. Oznacza to, że nie mamy żadnych testów jednostkowych, a tylko trochę testów na ludziach (mam nadzieję, że używam właściwej terminologii). Próbowałem rozpocząć testowanie tutaj i muszę to robić subtelnie, ponieważ często jestem pytany „kiedy zostanie wykonana funkcja X” i dlatego nie mogę rozpocząć tygodniowego projektu pisania testów dla całej naszej spuścizny kod. Które musiałyby zostać przepisane tylko po to, aby zapewnić szwy do testowania (jeśli mam prawo do pojęcia „szwów”). Mogę jednak podkraść się trochę czasu, żeby przetestować jedną funkcję. A przynajmniej myślę, że mogę. Piszę kod, który w zasadzie przetwarza sporo danych, a następnie renderuje je za pomocą D3. Chciałbym napisać test dla jednej z najważniejszych funkcji, `binData`. Pobiera jeden opcjonalny argument (data, od której zaczyna się binning) i uzyskuje dostęp do kilku właściwości, takich jak `this.rows` i `this.timestamps`. Jak bym to zrobił? Myślę, że będę musiał stworzyć obiekt pozorny do przechowywania `this.data` i `this.timestamps` (oraz innych dostępnych właściwości). W rzeczywistości wyobrażam sobie kilka różnych pozorowanych obiektów, które umożliwiłyby testowanie kilku różnych zestawów danych. Ale poza tym trochę utknąłem. Jeśli chodzi o frameworki, słyszałem o Mocha, Jasmine i Vows, ale nie wiem, który byłby najlepszy. Nie wiem również, jak powiązać z ogromną (i złożoną) hierarchią klas i modułów oraz sprostać zależnościom każdego obiektu. Oznacza to, że funkcja `binData` znajduje się w pliku o nazwie, powiedzmy, `dataBinner.js`, który wymaga wszelkiego rodzaju innych funkcji w innych plikach, ale nie zawiera jawnie niczego samodzielnie. Zamiast tego sam jest zawarty w pliku „menedżera”, który zawiera wszystko, czego będą potrzebować dataBinner.js i inne moduły. Przypuszczam, że będę musiał znaleźć sposób na utworzenie instancji wszystkiego, co jest niezbędne do przetestowania `binData`. Nie boję się trochę (lub dużo) czytać, aby lepiej zrozumieć rzeczy. Jakakolwiek pomoc dotycząca tego konkretnego zadania, jakim jest napisanie testu dla `binData` lub większe pytanie, jak powoli wdrażać testowanie w miejscu nieprzyjaznym dla testów, byłaby mile widziana. WYJAŚNIENIE Jestem w 100% na pokładzie, jeśli chodzi o testy. Wiem, że to ważne i wiem, że moja firma nie ma racji, nie przeprowadzając testów. Można by się spodziewać, że e-maile z napisem „naprawiona regresja spowodowana naprawieniem błędu 1413” coś wywołają. Albo że rzeczy, które nie powinny trwać tak długo, zabierają waaaaaay za długo (ponieważ jest to kod starszego typu spaghetti). To, o co pytam, to _biorąc pod uwagę_ to, jak przetestować moją jedyną funkcję, która opiera się na starym kodzie spaghetti. To znaczy, w jaki sposób ktoś wstrzykuje trochę testów w miejsce bez tego? Zgaduję, że będę musiał napisać własny framework testowy, ponieważ będę musiał stworzyć makiety dla kodu starszego spaghetti. Abym mógł utworzyć wystąpienie mojego obiektu i wywołać moją funkcję poza zakresem aplikacji.


title: Do jakiego poziomu HDBC Haskella jest leniwy?

text: Dokumentacja HDBC stwierdza: > fetchAllRows :: Instrukcja -> IO [[SqlValue]]Źródło >> Lazily pobiera wszystkie wiersze z wykonanej instrukcji. >> Możesz myśleć o tym jako o hGetContents zastosowanym do zbioru wyników bazy danych. > > Wynikiem tego jest leniwa lista, a każdy nowy wiersz zostanie > odczytany leniwie z bazy danych w trakcie przetwarzania listy. >> Po wyczerpaniu listy Oświadczenie zostanie zakończone. > > Należy pamiętać, że nieostrożne korzystanie z tej funkcji może prowadzić do nieprzyjemnych > zachowań. W szczególności, jeśli nie zużyłeś całej listy >, a następnie spróbujesz zakończyć lub ponownie wykonać instrukcję, a następnie spróbuj > skonsumować więcej elementów z listy, wynik prawie na pewno nie będzie taki, jak chcesz. >> Ale podobne zastrzeżenia dotyczą hGetContents. >> Konkluzja: jest to bardzo wygodna abstrakcja; używaj mądrze. > > Użyj fetchAllRows', jeśli potrzebujesz czegoś, co jest surowe, bez tych wszystkich > ostrzeżeń. Zastanawiam się więc, do jakiego poziomu sięga lenistwo? Powiedzmy, że mogę mieć conn <- connectSqlite3 databaseFilePath rows <- quickQuery conn ("SELECT * FROM foo") [] mapM_ bar $ take n rows Disconnect conn Czy faktycznie pobierze tylko `n` wierszy? Na przykład, czy z punktu widzenia bazy danych będzie to odpowiednik `SELECT * FROM foo LIMIT (n)`? Ponieważ pobranie wszystkich wierszy na poziomie sterownika bazy danych, a następnie „pobranie” z nich, wydaje się głupie i w pewnym sensie niweczy cel. Jeśli jest leniwy w stosunku do samej bazy danych, jak to jest zaimplementowane? Czy używa kursorów? Wiem, że istnieje kilka sterowników dla samego HDBC. Proszę tylko o zasadę realizacji.


title: Używasz „nowego” w projekcji?

text: Chcę zaprojektować kolekcję z jednego typu (`Something`) do innego (`SomethingElse`). Tak, to bardzo otwarte pytanie, ale którą z dwóch poniższych opcji wolisz? **Tworzenie nowej instancji przy użyciu `new`:** var result = query.Select(something => new SomethingElse(something)); **Używając fabryki:** var result = query.Select(coś => SomethingElse.FromSomething(coś)); Kiedy myślę o projekcji, zazwyczaj myślę o niej jako o _konwersji_. Użycie `new` daje mi wyobrażenie, że podczas konwersji tworzę nowe obiekty, co nie wydaje się właściwe. Semantycznie, `SomethingElse.FromSomething()` zdecydowanie lepiej pasuje. Chociaż druga opcja wymaga dodania kodu do skonfigurowania fabryki, co może stać się niepotrzebnie kompulsywne.


title: Oddzielenie serwera i klienta za pomocą REST API

text: Myślałem o tym, jak mogę całkowicie rozdzielić aplikację internetową na komponent po stronie serwera i komponent po stronie klienta. Chcę oddzielić aplikację do tego stopnia, aby móc hostować oba komponenty na osobnych serwerach. Na przykład miałbym: 1. Serwer 1 (serwer API): komponent po stronie serwera działający na `Django` na czymś takim jak Heroku lub EC2. 2. Serwer 2 (Serwer Statyczny): Komponent po stronie klienta działający na `AngularJS` na statycznym serwerze, takim jak S3 lub CloudFront. Komunikacja pomiędzy tymi komponentami będzie odbywać się za pomocą JSON REST API. **Pytania:** 1. Czy to podejście jest powszechne? wskazany? > Czy firma taka jak Facebook lub Twitter _głównie_ wykorzystuje ten sam interfejs > > API do aplikacji internetowej, co do aplikacji mobilnych lub otwartego interfejsu API? 2. Czy warto używać oAuth2 do procesu logowania? > Więc użytkownik jest przekierowywany na stronę logowania na **Serwer 1** (jest to jedyna strona > na serwerze 1), a następnie przekierowywany z powrotem do **Serwera 2** z tokenem, jeśli uwierzytelnianie się powiedzie. Czy to najlepsze podejście? Wygląda na to, że jestem trochę> „przerywam przepływ”, jeśli to zrobię. Czy to normalne? Motywacją do tego jest możliwość korzystania z tego samego interfejsu API dla moich klientów internetowych, iOS i Android. Dziękuję!


title: Zarządzanie walidacjami po stronie klienta i serwera w jednym miejscu

text: Jestem w 100% przekonany, że należy zdecydowanie używać walidacji danych zarówno po stronie klienta, jak i po stronie serwera. Jednak we frameworkach i środowiskach, w których pracowałem, podejścia, które widziałem, nigdy nie były SUCHE. W większości przypadków nie ma planu ani wzorca — walidacje są zapisywane w specyfikacji modelu, a walidacje są zapisywane w formie w widoku. (Uwaga: większość moich doświadczeń z pierwszej ręki dotyczy Railsów, Sinatry i PHP z jQuery) Rozważając to, wydaje się, że nie byłoby trudno stworzyć generator, który biorąc pod uwagę zestaw walidacji (np. nazwa modelu, pole(a), stan), mogą wytworzyć zarówno niezbędne materiały po stronie klienta, jak i po stronie serwera. Alternatywnie, takie narzędzie mogłoby wziąć walidacje po stronie serwera (takie jak kod `validate` w modelu ActiveRecord) i wygenerować walidacje po stronie klienta (takie jak wtyczki jQuery, które następnie zostałyby zastosowane do formularza. Oczywiście powyższe jest tylko zadumą „hej, miałem ten pomysł", a nie formalną propozycją. Z pewnością jest to trudniejsze, niż się wydawało, gdy ten pomysł mnie uderzył. To prowadzi mnie do pytania: **Jak podszedłbyś do projektowania technika "napisz raz, uruchom na serwerze i kliencie" do walidacji danych?** Powiązane tematy: Czy takie narzędzia istnieją dla konkretnych frameworków lub technologii klient-serwer? Jakie są główne problemy lub wyzwania związane z utrzymaniem tylko jednego zestawu walidacji ?


title: Czy moja wieloserwerowa baza danych RDBMS lub moja aplikacja powinna obsługiwać integralność referencyjną bazy danych?

text: Czy pozycje takie jak klucze obce, ograniczenia, wartości domyślne itd. powinny być obsługiwane przez system zarządzania bazą danych (w tym przypadku MS SQL 2005) czy aplikację? Słyszałem opinie z obu stron i szczerze nie jestem pewien, w którą stronę iść. Istnieje szansa, że będziemy łączyć wiele serwerów/baz danych i nie sądzę, aby klucze obce mogły być używane na połączonych serwerach. Oprócz tego w projekcie bazy danych znajdują się odwołania cykliczne, które uniemożliwiają mi używanie opcji `ON UPDATE CASCADE` na wszystkim. Baza danych to MS SQL 2005 (prawdopodobnie 2008) i wszystkie interakcje z nią powinny przechodzić przez aplikację.


title: Jak zamodelować system, aby pomóc mojemu zespołowi uchwycić szerszy obraz projektu?

text: Z punktu widzenia inżynierii oprogramowania powinienem modelować system, aby ułatwić innym ludziom zrozumienie, nad czym pracują. W tym celu użyłem programu do rysowania Dia. Ale po pewnym czasie korzystania z Dia stwierdzam, że nie pomaga mi ona poprawnie i efektywnie modelować mój projekt. Jak zwykle radzisz sobie z tym problemem (modelowanie projektu w dużej skali) i jakie narzędzia poleciłbyś do pracy i dlaczego?


title: Dlaczego niektórzy uważają analizę statyczną za testowanie, a niektórzy nie?

text: Przygotowując się również do certyfikacji ISTQB, odkryłem, że nazywają analizę statyczną właściwie testowaniem statycznym, podczas gdy w pewnej książce inżynierskiej rozróżnia się między analizą statyczną a testowaniem, które jest czynnością dynamiczną. Mam tendencję do myślenia, że analiza statyczna nie jest testowaniem w prawdziwym tego słowa znaczeniu, ponieważ nie testuje, tylko sprawdza/weryfikuje. Ale na pewno chciałbym usłyszeć opinie prawdziwych ekspertów tutaj. Dziękuję Ci


title: Dlaczego unsigned int w porównaniu ze znakiem ze znakiem daje nieoczekiwany wynik?

text: Dlaczego poniższy kod wyświetla **y>x**, gdy wyraźnie 1>-1? bez znaku x=1; znak ze znakiem y=-1; if(x>y){ printf("x>y"); } else { printf("y>x"); } Proszę wyjaśnić ten wynik.


title: Czy istnieje półnaukowy termin na to zachowanie filtrujące?

text: Szukam terminu, który odnosi się do pewnego rodzaju zachowania filtrującego. Jest często używany w interfejsach przypominających sklepy internetowe, w których duże ilości danych są filtrowane na podstawie wybranych kryteriów filtrowania. Najbardziej wyróżniającą cechą jest to, że _nie można wybrać kryterium filtra, które nie prowadzi do żadnych wyników_ , ponieważ filtry, które by to robiły, są ukryte wraz z aktualizacjami w czasie rzeczywistym. Aby zobaczyć przykład, spójrz na tę sekcję wyszukiwarki rozruchowej w sklepie internetowym blue-tomato.com. Czy istnieje termin na tego rodzaju filtrowanie?


title: Jak sprawdzić, czy widok klienta jest zgodny z modelem zdalnym?

text: Projektuję system klient-serwer za pośrednictwem przeglądarki internetowej i mam ten problem: wysyłam dane do klienta przez JSON, a następnie widok javascript pokazuje rzeczy. Następnie użytkownik podejmuje działania, a polecenia są odsyłane z powrotem do serwera. Zwykłe rzeczy, problem polega na tym, że dane widoku są uszkodzone lub stare? Jednym z rozwiązań, o którym myślałem, jest wykonanie skrótu przez SHA1 lub inny algorytm pełnych obiektów w modelu klienta, ale dane JSON nie są uporządkowane, co również powoduje opóźnienia w systemie. Jak Dokumenty Google zarządzają takimi rzeczami? Ponadto wysyłanie WSZYSTKICH DANYCH za każdym razem, gdy model jest aktualizowany, nie ma sensu, ale jak zachować spójność, wysyłając tylko zmiany? Myślę, że cały problem jest tylko jeden.


title: Płatna aplikacja open source

text: Pytanie, które mnie niepokoi, to czy jest możliwe/wykonalne/rozsądne oczekiwać, że aplikacja open source będzie dobrze sprzedawać się na rynku mobilnym? Czy mam wierzyć, że moi użytkownicy będą korzystać z mojej aplikacji, zamiast tworzyć wersję pobraną, i, co ważniejsze, jak mogę poradzić sobie z konkurencją, jeśli udostępnię moją aplikację na licencji OSS? Jak dotąd jedyny link na ten temat, jaki znalazłem, to http://blog.zachwaugh.com/post/17554643060/selling-open-source-apps, jednak dotyczy on aplikacji na Mac OS X. Powinienem wspomnieć, że moje pytanie nie dotyczy iOS, Androida ani innego systemu operacyjnego, ale ogólnie dotyczy aplikacji mobilnych. EDYCJA: Zadano bardzo rozsądne pytanie, czy moi użytkownicy są programistami. Nie oczekuję, że większość moich użytkowników będzie choć trochę zaznajomiona z programowaniem.


title: Minima listy wypukłej przy użyciu wyszukiwania binarnego

text: Lista jest ściśle wypukła, jeśli jej elementy najpierw maleją, a potem rosną. Jak mogę napisać funkcję w Pythonie, która akceptuje listę wypukłą i zwraca jej minima w złożoności czasowej O(log(n)), gdzie n jest rozmiarem listy. (NIE UŻYWAJ JAKICHKOLWIEK WBUDOWANYCH FUNKCJI NA LISTACH)


title: "Czy kiedykolwiek zmieniłeś wartość 4?" - jak to się stało w quizie Hayes-Thomas?

text: W 1989 roku Felix Lee, John Hayes i Angela Thomas napisali test hakerski w formie quizu z wieloma dowcipami poufnymi: „Czy jesz śluzowce?” Rozważam następującą serię: 0015 Czy kiedykolwiek zmieniłeś wartość 4? 0016... Nieumyślnie? 0017 ... W języku innym niż Fortran? Czy istnieje jakaś anegdota, która sprawia, że liczba „4” jest wyjątkowa w serii? Czy jakaś implementacja Fortrana pozwalała na modyfikację wartości stałych? Czy było to możliwe w innych powszechnie używanych wówczas językach?


title: Dlaczego powinienem używać refleksji?

text: Jestem nowy w Javie; podczas moich studiów przeczytałem, że refleksja służy do wywoływania klas i metod oraz do poznania, które metody są wdrażane, a które nie. Kiedy powinienem używać refleksji i jaka jest różnica między używaniem odbicia a tworzeniem instancji obiektów i wywoływaniem metod w tradycyjny sposób?


title: Telepraca z Australii – ustalenia podatkowe

text: Mieszkam w Australii i obecnie przyglądam się niektórym ofertom pracy zdalnej w krajach takich jak USA/Wielka Brytania. Jednak bardzo mało rozumiem, co należy zrobić, aby zgłosić taki dochód - tj. czy muszę uzyskać ABN, sam zapłacić podatek od wynagrodzeń itp. Jeśli miałeś jakieś doświadczenie w tej dziedzinie, chciałbym, abyś się tym podzielił.


title: Wydaj zaktualizowaną aplikację na iOS z innym modelem rozliczeniowym

text: Rozpoczynam nowy projekt iOS i wstępnie planuję wydanie prostej darmowej wersji, aby zebrać opinie. Nie zamierzam zarabiać ani sprzedawać tej początkowej wersji. Uważam jednak, że "Wersja 2" tej aplikacji będzie wystarczająco dobra, aby zapłacić. Wolałbym wydać wersję 2 jako aktualizację z wersji 1, niż wydać ją jako oddzielną aplikację. W ten sposób mogę zarezerwować nazwę dla aplikacji. Łatwiej też będzie przechowywać wszystko w jednym repozytorium. Czy są jakieś wady tego podejścia? Rozumiem, że mogę zmienić cenę aplikacji w dowolnym momencie, więc nie powinno być problemu z przejściem na płatną aplikację, prawda?


title: Konwencje nazewnictwa zmiennych

text: Podczas programowania, jakich konwencji nazewnictwa używasz dla swoich zmiennych? Nie chodzi mi o to, kiedy nazwa zmiennej powinna być oczywista; tj. suma, suma, pierwszy, ostatni. Ale kiedy nazywasz zmienne, które tak naprawdę nie pasują do kategorii/oczywistej struktury, jakiego rodzaju nazw używasz? Czy to myVar1 czy test1 czy zmienna1 itd...?


title: Jak dokładnie działają Patchery?

text: Szukałem Patcherów i niczego nie znalazłem. Ale poważnie Patchers: Jak one działają? Zrobiłem trochę googlowania i mam mieszane wyniki. Mam na myśli, że wydaje się, że prawdopodobnie mają jakiś sposób na wejście i zmianę plików (może porównywanie różnic między plikami), ale wydaje się, że prawdopodobnie dzieje się więcej. Czy to naprawdę tak proste, jak uruchomienie porównania. vs inny plik .... a następnie zastosowanie zmian?


title: Bazy danych XQuery i XML

text: Zdecydowałem się uczyć XML z profesjonalnej książki zamiast czytać tutoriale online, po kilku badaniach postanowiłem przeczytać książkę "Beginning XML, 4th Ed" i była to bardzo interesująca książka i polecam ją każdemu, kto chce nauczyć się XML, moje pytanie brzmi: : czy czytanie i uczenie się tych rozdziałów: 1. XQuery, XML Query Language 2. XML i bazy danych naprawdę są potrzebne komuś, kto zajmuje się głównie: Hibernacją/JPA dla trwałości obiektowej/relacyjnej? czy innymi słowy, czy nauka baz danych XQuery i XML jest naprawdę wymagana przez obecne umiejętności w zakresie standardów branżowych? Z góry dziękuję


title: Java i pozostałe języki OOP - kiedy używać super lub this

text: Programuję javę od roku lub dłużej i zawsze używam słów kluczowych `this` i `super`. A wczoraj mój kumpel przeczytał jedno z moich źródeł i powiedział mi, żebym go nie nadużywał, chyba że pomijasz metodę. class A extends JPanel { public A { super.setSize(400, 400);// zamiast nie używać słowa kluczowego super } } Ale miał na myśli to, jak go używać, to: class A extends JPanel { public A { super. ustawRozmiar(4,4); } public void setSize(int a, int b) {} } Tak więc język będzie wiedział, że twój konstruktor wywołuje metodę nadrzędną, a nie lokalną. Czy powinienem używać słów kluczowych tylko w tej sytuacji, czy używać słów kluczowych wszędzie dla lepszej czytelności? Wiem, że słowo kluczowe `this` zwraca całą lokalną instancję łącznie z rodzicem i wszystkimi jego rodzicami i interfejsami. A słowo kluczowe `super` zwraca instancję klasy nadrzędnej i wszystkie jej instancje (rodzice i interfejsy). Ale moje pytanie brzmi, czy zawsze należy używać tych słów kluczowych?


title: Jakich witryn używać do prezentacji bezpłatnych aplikacji open source?

text: Po wydaniu nowej darmowej aplikacji open source chciałbym ją zaprezentować jak największej liczbie osób. Jakie strony internetowe (katalogi) należy wykorzystać do prezentacji darmowych aplikacji open source? Szukasz listy witryn takich jak Freshmeat, Sourceforge, ...


title: Android: rozważanie narzędzia ORM

text: Tworzę aplikację na Androida, w której muszę dodać funkcję czatu. Muszę też zapisać historię czatów. Zrealizuję to zadanie za pomocą SQLlite. Ale nie jestem pewien, czy powinienem rozważyć użycie ORM, takiego jak GreenDAO lub ORMLite, czy powinienem użyć tradycyjnego sposobu utrwalania danych w SQLite. Właściwie nie jestem pewien, kiedy powinienem skorzystać z ORM i jak mogę z niego skorzystać.


title: Najlepsze praktyki i etykieta konfiguracji powiadomień e-mail

text: Jeśli zamierzałeś ustawić Alerty E-mailowe dla klientów Twojej witryny, aby mogli się na nie zasubskrybować, jakich zasad etykiety należy przestrzegać? Przychodzi mi do głowy kilka z nich: * Użytkownicy mogą zrezygnować * Tylko tekst (lub gustowne obrazy zdalne) * Nie są wysyłane częściej niż raz w tygodniu * Klienci mają szczegółową kontrolę nad tym, o czym otrzymują e-maile (Otrzymuj tylko to, co ich interesuje) Jakie inne punkty należy wziąć pod uwagę? Z programistycznego punktu widzenia, jaka jest najlepsza metoda konfigurowania i uruchamiania powiadomień e-mail? * Czy powinienem używać usługi ASP.NET? Usługa Windows? Jakie są pułapki? * Jak mam rejestrować wysyłane e-maile? Nie obchodzi mnie, czy zostaną odebrane, ale muszę być w stanie udowodnić, że wysłałem lub nie wysłałem e-maila.


title: Czy HDTV jest dobrym monitorem programisty?

text: Zastanawiam się, czy ktoś ma jakieś doświadczenie z programowaniem na telewizorze HD. Próbuję wybrać między monitorem z dwoma komputerami a jednym dużym telewizorem HD, na przykład 32-calowym (a może nawet podwójnym hdtv). Zaletą hdtv jest to, że kosztują o wiele mniej niż monitor komputerowy o równoważnej wielkości. do programowania i grafiki (photoshop, itp.) Zastanawiam się tylko, czy HDTV jest zły, jeśli używam go jako stacji roboczej b/c może jest gorszy dla oczu lub niezbyt dobry do programowania (b/c może czcionki będą być wystarczająco ostre) itp. Jakieś myśli? Dzięki


title: Czy Extreme Programming (XP) to najlepszy sposób na naukę od ekspertów?

text: Byłem zaangażowany w wiele modeli programistycznych i uważam, że XP jest najlepszy dla nowego programisty z punktu widzenia nauki, ponieważ współpraca między członkami zespołu jest bardzo wysoka, a możliwości dzielenia się wiedzą są świetne. Jakie są opinie ekspertów na ten temat?


title: Kto może zmienić widok w MVC?

text: Pracuję nad aplikacją wyświetlającą i manipulującą grubym grafem klienta. Próbuję zastosować wzorzec MVC do naszego składnika wizualizacji 3D. Oto, co mam dla modelu, widoku i kontrolera: Model — wykres i jego metadane. Obejmuje to wierzchołki, krawędzie i atrybuty każdego z nich. Nie zawiera informacji o pozycji, ikon, kolorów ani niczego związanego z wyświetlaniem. Widok — jest to powszechnie nazywane wykresem sceny. Obejmuje informacje o wyświetlaniu 3D, informacje o fakturze, informacje o kolorze i wszystko inne, co jest związane konkretnie z wizualizacją modelu. Kontroler — kontroler pobiera widok i wyświetla go w oknie przy użyciu OpenGL (ale potencjalnie może to być dowolny pakiet grafiki 3D). Aplikacja posiada różne „układy”, które zmieniają położenie wierzchołków na wyświetlaczu. Na przykład jeden układ może ułożyć wierzchołki w kole. Czy często te układy mają bezpośredni dostęp do widoku i zmieniają go? Czy powinni przejść przez kontroler, aby uzyskać dostęp do widoku? Jeśli przechodzą przez kontroler, czy powinni po prostu poprosić o bezpośredni dostęp do widoku, czy każda zmiana powinna przechodzić przez kontroler? Zdaję sobie sprawę, że jest to nieco inne niż standardowy przykład MVC, w którym istnieje skończona liczba widoków. W takim przypadku Widok może zmieniać się na nieskończoną liczbę sposobów. Być może rozbijam tutaj jakąś podstawową zasadę MVC. Z góry dziękuję!


title: Koncepcje programowania obiektowego

text: > W szczególności programowanie bez dziedziczenia wyraźnie nie jest zorientowane > obiektowo; nazywamy to programowaniem z abstrakcyjnymi typami danych. Znalazłem tę świetną linijkę z książki Grady Booch „Object-Oriented Analysis and Design With Applications”. Więc aby program był OO, czy dziedziczenie, abstrakcja, enkapsulacja i polimorfizm(?) muszą być rzeczami koniecznymi? Czy ktoś mógłby mi wyjaśnić?


title: Który EXPLAIN SELECT jest lepszy — ten w PostgreSQL czy ten w MySQL?

text: A może te dwa są w zasadzie takie same, jeśli chodzi o wymyślanie właściwych indeksów?


title: Wstawianie średników po czasie i instrukcji if w C++

text: Jak w C++ wstawiasz: while (wyrażenie); pętla while nie działa bez względu na to, czy wyrażenie jest prawdziwe, czy nie. Jeśli jednak umieścisz: if (wyrażenie); oświadczenie działa bez względu na to, czy wyrażenie jest prawdziwe, czy nie. Wygląda na to, że oboje powinni zachowywać się tak samo.


title: Jak działa ten znormalizowany przykład?

text: Miałem następujący schemat bazy danych: Wypożyczalnia samochodów klienta ------- ---- ------ Nazwa Nazwa ID_samochodu ID ID ID_klienta Data Mówi się, że nie jest znormalizowana, ponieważ data może się powtarzać (wielu klientów może wypożyczyć samochód na ten sam dzień). Tak więc nauczyciel powiedział, że powinno wyglądać tak: Data samochodu klienta ------- --- ---- i powiązać z kluczami obcymi. Cóż, nie rozumiem - jak mogę po prostu wpisać, że "Jan wynajął BMW 2/3/2013"?


title: Jak efektywnie przechowywać wszystkie dane OpenStreetMap w sposób zindeksowany?

text: Mam plik PBF, który zawiera następujące informacje o kraju: * Węzły, każdy z własną długością, szerokością geograficzną i właściwościami; służy do przechowywania punktów w przestrzeni 2D. * Sposoby, każdy ze swoimi właściwościami, są połączone węzłami; służy do przechowywania dróg, granic. Chociaż ten plik ma tylko 80 MB w postaci skompresowanej, to 592 MB po zdekompresowaniu i przechowywaniu w bazie danych. Tak, i to tylko w jednym kraju, Belgii. Wyobraź sobie przechowywanie obok siebie Francji, Niemiec i Włoch. * * * Weźmy na przykład jedną autostradę, z Antwerpii przez Brukselę do Charleroi. Składałoby się to z tony węzłów do przechowywania wszystkich zakrętów na autostradzie, ale czy potrzebuję wszystkich tych zakrętów? Wątpię. Powiem ci, co chcę zrobić: * Chcę oglądać mapę na różnych poziomach powiększenia; główne miasta, mniejsze miasta i przynajmniej na poziomie ulic. * Chcę mieć możliwość uzyskania informacji o routingu między dwoma punktami. * Chcę mieć możliwość obliczenia drogi najbliższej mojej lokalizacji GPS. * Wyszukaj lokalizację za pomocą indeksu w bazie danych. Ale co najważniejsze, **baza danych nie powinna być zbyt duża, ponieważ będzie przechowywana na urządzeniu mobilnym**. * * * Pomyślałem więc o połączeniu dwóch technik: * Kafelki obrazów do celów przeglądania, aby obejść przechowywanie/przetwarzanie wszystkich poszczególnych węzłów. * Przechowywanie punktów końcowych dróg dla informacji o wyznaczaniu tras wraz z informacjami o drodze. Problem polega na tym, że nie mogę obliczyć najbliższej drogi do mojej lokalizacji GPS, mając tylko te informacje; wyobraź sobie, że zakręt na autostradzie, nie mogę określić, że jestem na autostradzie tylko z dwoma punktami końcowymi. Myślałem o przechowywaniu węzłów pośrednich między punktami końcowymi, ale myślę, że byłoby to bardzo kosztowne do wygenerowania. Ponadto określenie punktów końcowych dróg (które są podobne do rozłamu T) najprawdopodobniej nie jest nawet tak łatwe, ponieważ muszę dowiedzieć się, czy muszę przechowywać punkt środkowy na górze tego podziału, czy nie. Tak więc przeglądanie jest łatwe dzięki kafelkom obrazu; ale nie mogę znaleźć łatwego sposobu wyznaczania tras i znajdowania lokalizacji GPS, jaką techniką przechowywania powinienem się zająć? Uważam, że to trochę niewygodne, że plik `80 MB` zamienia się w bazę danych `592 MB`, chcę zmniejszyć ten rozmiar tak bardzo, jak to możliwe... Co mogę zrobić, aby zrobić to tak wydajnie, jak to możliwe? Pod względem dysku i procesora. Celuję w WP7...


title: Podział jednego projektu na biblioteki

text: Pracuję nad projektem/aplikacją, która moim zdaniem nie jest zbyt dobrze zorganizowana, a jej części przeplatają się na różne sposoby. Wszystko działa, ale widzę, że rzeczy nie są bardzo modułowe. _Czy rozsądne jest dzielenie aplikacji na różne biblioteki, nawet jeśli nie mogą one być ponownie wykorzystane przez inną aplikację?_ Sama myśl o podzieleniu jej na biblioteki ujawnia wiele problemów z bieżącym systemem. Czuję, że zachęci to do lepszego projektowania i ponownego wykorzystania w przyszłości (podobno będzie nowy projekt, który mógłby skorzystać z przynajmniej niektórych z tych bibliotek). Moje obawy to * Jak wpłynie to na wydajność? * Jak daleko powinienem się posunąć w dzieleniu rzeczy? * Jeśli wszystkie trzy biblioteki są od siebie zależne, czy jest sens robienia ich bibliotekami? (być może sugeruje zmianę architektury modułów) Moje pytanie wydaje się być sprzeczne z mądrością tej odpowiedzi, ponieważ _biblioteki dynamiczne nigdy nie powinny być tworzone dla pojedynczej aplikacji_. Wtedy pojawia się pytanie – jak zapewnić modułowość w dużej aplikacji? Dziękuję! **EDYTUJ:** Wygląda na to, że zbyt często użyłem terminu „biblioteka współdzielona”, więc usunąłem go, aby sugerować jakąkolwiek bibliotekę (statyczną lub dynamiczną). Istotą pytania jest to, czy podzielić pliki na dowolne biblioteki.


title: Certyfikacja programisty Oracle Enterprise JavaBeans (EJB)

text: Chciałbym uzyskać certyfikat "Oracle Enterprise JavaBeans (EJB) Developer". Zgodnie z tą stroną muszę wziąć udział w kilku zajęciach, z których każde kosztuje do kilku tysięcy GB. Czy to naprawdę jedyny sposób na uzyskanie certyfikatu? Czy nie mogę po prostu kupić przewodnika certyfikacyjnego od amazon i po prostu przejść wymagane testy? W tej chwili nie mam doświadczenia w Java EE i uważam, że niemożliwe jest uzyskanie rozmów kwalifikacyjnych na stanowiska, które mnie interesują. Mam nadzieję, że przynajmniej pomoże mi to przejść przez drzwi.


title: Specyfikacja SQL-99, czy jest określone, aby najpierw uporządkować wynik, a później go ograniczyć?

text: Gdybym napisał to w MySQL SELECT * FROM foo ORDER BY bar LIMIT 1 najpierw uporządkowałby wynik, a potem go ograniczył. Zawsze dostaję najniższy pasek. Zastanawiam się, czy jest to określone w standardach SQL i jak to sprawdzić? Wszystko, co znalazłem, to niektóre BNF, które nie wyjaśniają, jak coś powinno działać, ale tylko jaka jest poprawna składnia.


title: Chcę, aby mój kod był bardziej czytelny dla innych programistów w moim zespole

text: Pracuję nad projektem w **delphi 7** i tworzę instalator dla aplikacji, są trzy główne części. 1. Instalacja/deinstalacja **PostgreSQL** 2. **mojaaplikacja** (instalacja mojej aplikacji jest tworzona przy użyciu nsi) instalacja/deinstalacja. 3. **Tworzenie tabel** w Postgresie za pomocą skryptu (plików wsadowych). Wszystko działa dobrze i płynnie, ale jeśli coś zawiedzie, stworzyłem rejestrator, który będzie rejestrował każdy krok procesu, taki jak ten LogBook.Log('[INSTALACJA POSTGRSQL] : [ACTION]:Instalacja Postgres rozpoczęta'); Funkcja `LogBook.Log()` To zapisze zawartość do pliku. Działa to ładnie, ale problem polega na tym, że zepsuło to kod, ponieważ trudno jest **czytać** kod, ponieważ można zobaczyć tylko wywołanie funkcji `LogBook.Log()` wszędzie w kodzie przykład if Not FileExists(sOSdrive+'\Mapannotation.txt'), a następnie rozpocznij, jeśli CopyFile(PChar(sTxtpath+'Mapannotation.txt'), PChar(sOSdrive+'\Mapannotation.txt'), False) then LogBook.Log(2,'[POSTGRESQL INSTALACJA] : [ACTION]:kopiowanie pliku Mapannotation.txt do '+sOSdrive+'\ sucessful') else LogBook.Log(2,'[INSTALACJA POSTGRSQL] : [ACTION]:copying Mapannotation.txt do '+sOSdrive+'\ Failed') ; koniec; if Not FileExists(sOSdrive+'\Mappoint.txt'), a następnie rozpocznij if CopyFile(PChar(sTxtpath+'Mappoint.txt'), PChar('c:\Mappoint.txt'), False) then LogBook.Log(2,'[ INSTALACJA POSTGRESQL] : [ACTION]:copying Mappoint.txt do '+sOSdrive+'\ sucessful') else LogBook.Log(2,'[INSTALACJA POSTGRESQL] : [ACTION]:copying Mappoint.txt do '+sOSdrive+'\ Failed' ); koniec; jak widać, istnieje wiele wywołań `LogBook.Log()`, wcześniej było to, jeśli Not FileExists(sOSdrive+'\Mapannotation.txt'), a następnie CopyFile(PChar(sTxtpath+'Mapannotation.txt'), PChar(sOSdrive+'\ Mapannotation.txt'), False) if Not FileExists(sOSdrive+'\Mappoint.txt') then CopyFile(PChar(sTxtpath+'Mappoint.txt'), PChar('c:\Mappoint.txt'), False) to jest przypadku w całym moim kodzie teraz. jej trudne do odczytania. czy ktoś może mi zasugerować dobry sposób na uporządkowanie połączeń do logowania? jak 1. Wcięcie wywołania ' LogBook.Log()' w ten sposób if Not FileExists(sOSdrive+'\Mapannotation.txt'), a następnie rozpocznij, jeśli CopyFile(PChar(sTxtpath+'Mapannotation.txt'), PChar(sOSdrive+'\Mapannotation.txt '), False) then {Far away--->>} LogBook.Log(2,'[POSTGRESQL INSTALLATION] : [ACTION]:copying Mapannotation.txt do '+sOSdrive+'\ pomyślnie') else {Far away-- ->>} LogBook.Log(2,'[INSTALACJA POSTGRSQL] : [AKCJA]:skopiowanie pliku Mapannotation.txt do '+sOSdrive+'\ Failed'); koniec; 2. Oddzielna **jednostka**, taka jak `logger` Ta jednostka będzie miała wszystkie komunikaty dziennika w `przypadku przełączania`, takim jak ta Function LoggingMyMessage(loggMessage : integer) begin case loggMessage of 1 : LogBook.Log(2,'[POSTGRESQL INSTALACJA] : [CZYNNOŚĆ]: kopiowanie pliku Mapannotation.txt do '+sOSdrive+'\ udane'); 2 : LogBook.Log(2,'[INSTALACJA POSTGRESQL] : [AKCJA]:skopiowanie pliku Mapannotation.txt do '+sOSdrive+'\ Failed'); 150 : LogBook.Log(2,'[coś] : [AKCJA]: coś ważnego); koniec; więc mogę po prostu wywołać LoggingMyMessage(1) tam, gdzie jest to wymagane. Czy ktoś może mi powiedzieć, jakie jest lepsze i czystsze podejście do rejestrowania w ten sposób?


title: Zarządzanie bazą kodu dla podstawowej i pro edycji projektu

text: Mam projekt, który będzie miał podstawową i profesjonalną edycję. Edycja profesjonalna będzie miała wszystkie cechy edycji podstawowej. Używam git do zarządzania bazą kodu projektu. Uważam, że po jego skończeniu rozwidę repo edycji podstawowej. Następnie zacznę kodować edycję profesjonalną w repozytorium rozwidlonym. Mój problem polega na tym, że gdyby w przyszłości pojawił się błąd w edycji podstawowej, nie chcę dwukrotnie naprawiać błędu w edycji podstawowej i profesjonalnej. Jak poradzić sobie z tą sytuacją?