title: Dlaczego kompilatory nie wbudowują wszystkiego?

text: Czasami kompiluje wbudowane wywołania funkcji. Oznacza to, że przenoszą kod wywoływanej funkcji do funkcji wywołującej. To sprawia, że wszystko jest nieco szybsze, ponieważ nie ma potrzeby wkładania i wyjmowania rzeczy ze stosu wywołań. Więc moje pytanie brzmi, dlaczego kompilatory nie inline wszystkiego? Zakładam, że dzięki temu plik wykonywalny byłby znacznie szybszy. Jedyny powód, jaki przychodzi mi do głowy, to znacznie większy plik wykonywalny, ale czy to naprawdę ma znaczenie w dzisiejszych czasach z setkami GB pamięci? Czy lepsza wydajność nie jest tego warta? Czy jest jakiś inny powód, dla którego kompilatory nie inline wszystkich wywołań funkcji?


title: Czy krótkie skrócone nazwy metod/funkcji, które nie zawierają pełnych słów, to zła praktyka, czy kwestia stylu?

text: Czy w dzisiejszych czasach jest jakiś argument za zwięzłością nad przejrzystością nazw metod? Dziś wieczorem natknąłem się na metodę Pythona `repr()`, która wydaje mi się złą nazwą dla metody. To nie jest angielskie słowo. Najwyraźniej jest to skrót od „reprezentacja” i nawet jeśli możesz to wywnioskować, nadal nie mówi, co robi metoda. Dobra nazwa metody jest do pewnego stopnia subiektywna, ale założyłem, że współczesne najlepsze praktyki są zgodne, że nazwy powinny być przynajmniej pełne słów i wystarczająco opisowe, aby ujawnić wystarczająco dużo o metodzie, aby łatwo znaleźć taką, gdy jej szukasz. Nazwy metod utworzone ze słów pozwalają na odczytywanie kodu jak w języku angielskim. `repr()` wydaje się nie mieć żadnych zalet jako nazwa poza tym, że jest krótka, a autouzupełnianie IDE sprawia, że nie stanowi to problemu. Dodatkowym powodem podanym w odpowiedzi jest to, że nazwy Pythona są krótkie, dzięki czemu możesz zrobić wiele rzeczy w jednej linii. Z pewnością lepszym sposobem jest po prostu wyodrębnienie wielu rzeczy do ich własnej funkcji i powtarzanie, aż wiersze nie będą zbyt długie. Czy to tylko kac po uniksowym sposobie robienia rzeczy? Polecenia o nazwach takich jak `ls`, `rm`, `ps` i `du` (jeśli można tak nazwać) były trudne do znalezienia i trudne do zapamiętania. Wiem, że codzienne użycie takich poleceń różni się od metod w kodzie, więc sprawa, czy są to złe nazwy, to już inna sprawa.


title: Co oznacza prymitywny typ danych?

text: Moje rozumienie prymitywnego typu danych jest takie, że > Jest to typ danych dostarczany niejawnie przez język (inne są definiowane przez użytkownika > klasy) Tak więc różne języki mają różne zestawy typów danych, które są uważane za prymitywne dla tego konkretnego języka. Czy to prawda? A jaka jest różnica między „podstawowym typem danych” a „wbudowanym typem danych”. Wikipedia mówi, że prymitywny typ danych jest jednym z tych dwóch. **PS - Dlaczego typ "string" jest uważany za typ pierwotny w SNOBOL4, a nie w Javie?**


title: Czy popularność Objective-C stanowi wyzwanie dla C++?

text: Według indeksu popularności języka programowania TIOBE z marca 2012 r., Objective-C jest obecnie prawie tak samo popularny jak C++. Trochę mnie to zdziwiło. Spodziewałem się, że C++ nadal będzie przewyższał popularność Objective-C, czy może się mylę i wskaźnik popularności TIOBE wydaje się poprawny? A może firmy takie jak Apple płacą im za tworzenie szumu wokół swoich produktów?


title: Pytanie o pakiet w R

text: Więc mam to polecenie uruchomione, aby ustawić ćwiczenie: require('ggplot2') load(url('http://www.stolaf.edu/people/olaf/cs125/hw8.RData')) I daje nowe operator `draw()`, więc kiedy uruchamiam `draw(p0x,p0y)`, daje mi szkic jako wykres. Moje pytanie brzmi: kiedy uruchamiam `draw(p2x,p2y)`, daje mi to 4 takie same szkice jak wykres, tylko że ten w prawym górnym rogu jest przesunięty w lewo. Moim zadaniem jest przesunięcie tej części rysunku w prawo, tak aby cztery szkice były rozmieszczone symetrycznie. Ale problem polega na tym, że nie do końca rozumiem `p0x,p0y,p2x,p2y` i nie wiem jak to zrobić. Powiedziano mi, że jedna linia może rozwiązać problem.


title: Kontrolki rysunkowe i kontrolki podrzędne nieświadome swojej lokalizacji w rodzicu

text: Aplikacje i systemy operacyjne mają mnóstwo okien i kontrolek, okien podrzędnych i kontrolek podrzędnych. Zauważyłem, że często zdarza się, że podkontrolki mają zresetowane układy współrzędnych, aby zaczynały się od 0, co znacznie ułatwia rysowanie. Jednak nie jestem pewien, jak to się robi i jak byłbym w stanie to zrobić. Zamierzam stworzyć aplikację, która dużo rysuje w 2D i zawiera takie rzeczy, jak moje własne zaimplementowane paski przewijania i wiele kontrolek, które mają podkontrolki. Chcę, aby układ współrzędnych podkontroli został zresetowany do 0 i chcę, aby kontrolki miały minimalną wiedzę na temat ich lokalizacji w kontrolkach nadrzędnych i nadrzędnych kontrolkach nadrzędnych, ect. Jedyne, o czym mogę pomyśleć, to przekazać współrzędne transformacji i mieć każdą podkontrolę podczas rysowania, aby dodać współrzędne transformacji x i y do ich rysowanych obiektów, aby zostały przetransformowane do właściwej lokalizacji. To szybko staje się bardzo męczące, gdy wiem, że istnieją lepsze sposoby. Nie jestem pewien, czego będę używał, czy będzie to GDI+, OpenGL czy Direct2D. Szukam tylko ogólnych informacji o tym, jak to zrobić, aby podkontrolki mogły rysować w x i y 0 i pojawia się w dowolnym miejscu, w którym znajduje się rzeczywista kontrola.


title: Nazwy klas generycznych – jak uniknąć nazywania ich po prostu „obiektem”? Użyć synonimów?

text: Podczas programowania często kończę na nazywaniu jakiejś ogólnej klasy (pomyśl o abstrakcyjnej klasie bazowej dla rzeczy, którymi zarządzasz w swoim projekcie) na przykład `FooObject`, `FooComponent` lub `FooItem` (gdzie `Foo` jest skrótem nazwy projektu ). Problem w tym, że te nazwy są używane tak często, że stają się bez znaczenia - mam na myśli "obiekt", nikt nie wie, czy mam na myśli "podklasę `FooObject`", czy zwykły obiekt . Myślę, że dobra lista synonimów dla "obiektu", "komponentu", "oddzwaniania", "obsługi", "działania" itd. pomogłaby, ponieważ moglibyśmy po prostu przedefiniować ten świat na podstawie projektu. Możesz nawet wymyślić jakieś zupełnie bezsensowne słowo i zdefiniować swoje znaczenie w dokumentacji. Myślę, że byłoby to jaśniejsze niż nazywanie rzeczy „obiektami”. Oto, co mam na myśli przez „nonsens” (zaczerpnięte z Alicji w Krainie Czarów): > Twas brillig i slily toves > > Robili wirowanie i gimbling w wabe: > > Wszystkie mimiki były borogowe, > > A mome rathy prześcigały się. Może możesz mieć jakieś ładne słowa, których używasz w takich przypadkach? Jak radzisz sobie z podobnymi sytuacjami w swoich projektach? [ Powiązane: Jak unikać ogólnych nazw klas abstrakcyjnych? ]


title: Czy punkty fabularne mają bezpośredni związek z oszacowaniami zadań?

text: W moim obecnym zespole, w którym prowadzimy wiele scrumów, punkty Story są zwykle oparte na wysiłku wymaganym do ukończenia User Story. Na przykład, jeśli Historia Użytkownika ma 2 zadania, każde z nich wymaga 5 dni, przypisuje im się 10 punktów. Tak więc 1 dzień wysiłku jest uważany za jeden Story Point. Czy ta praktyka jest dobra?


title: Czy dobrą praktyką jest umieszczanie epików w historii użytkowników?

text: W moim obecnym zespole istnieje praktyka umieszczania epików w sekcji User Stories, a czasami nawet w sekcji User Stories lub Epics w zadaniach! Na pytanie zwykle odpowiada: **„jeśli to nie jest dobra praktyka, to narzędzie do zarządzania projektami by na to nie pozwoliło!”** (Koncert IBM Rational Team, ponieważ nie zabrania się takiej praktyki). eksperci tutaj myślą o tym?


title: Czy powinieneś obiecać dostarczenie funkcji, której nie jesteś pewien, czy można ją wdrożyć?

text: W artykule HN natknąłem się na następującą radę: > Zawsze mów klientowi/użytkownikowi „tak”, nawet jeśli nie masz pewności. W 90% przypadków znajdziesz na to sposób. W 10% przypadków wrócisz i > przeprosisz. Niska cena za duży rozwój osobisty Zawsze uważałem jednak, że należy przeprowadzić analizę wykonalności _przed_ złożeniem jakichkolwiek obietnic klientowi/użytkownikowi, aby w żadnym momencie nie zostać wprowadzonym w błąd. W jakich więc okolicznościach powyższa rada powinna mieć zastosowanie?


title: Pisanie testów funkcjonalnych dla starszego projektu

text: Próbuję dodać kilka testów do starszego projektu C. Projekt zasadniczo składa się z narzędzia wiersza poleceń, które drukuje coś na standardowe wyjście za każdym razem, gdy ma miejsce zdarzenie. Teraz, ponieważ pisanie testów jednostkowych byłoby dość trudne, biorąc pod uwagę fakt, że moduły są dość ciasno połączone, próbuję napisać kilka testów funkcjonalnych, aby zweryfikować bieżące zachowanie, a następnie kontynuuję dzielenie modułów, aby móc je podzielić przetestuj je. Czy ma sens, aby framework testowy był czymś w rodzaju kilku skryptów Pythona (pamiętaj, że projekt jest czystym C), który obsługuje wszystkie testy funkcjonalne? Zasadniczo Python powinien wywołać moje narzędzie wiersza poleceń, sfałszować jego dane wejściowe i oczekiwać prawidłowego wyniku.


title: Schemat vs Common Lisp: Jakie cechy wpłynęły na Twój projekt?

text: Nie brakuje niejasnych pytań „Scheme vs Common Lisp” zarówno na StackOverflow, jak i na tej stronie, więc chcę, aby to jedno było bardziej skoncentrowane. Pytanie jest skierowane do osób, które kodowały w obu językach: ### Jakie konkretne elementy doświadczenia z kodowaniem w Common Lisp brakowało Ci najbardziej podczas kodowania w Scheme? Lub odwrotnie, podczas kodowania w Common Lisp, czego ci brakowało w kodowaniu w Scheme? Niekoniecznie mam na myśli tylko funkcje językowe. Poniżej znajdują się wszystkie ważne rzeczy do pominięcia, jeśli chodzi o pytanie: * Konkretne biblioteki. * Specyficzne cechy środowisk programistycznych, takich jak SLIME, DrRacket, itp. * Cechy konkretnych implementacji, takie jak możliwość pisania przez Gambit bloków kodu C bezpośrednio w źródle programu Scheme. * I oczywiście funkcje językowe. Przykłady odpowiedzi, na które mam nadzieję: * „Próbowałem zaimplementować X w Common Lisp i gdybym miał pierwszorzędne kontynuacje Scheme, po prostu zrobiłbym Y, ale zamiast tego musiałbym zrobić Z , co było bardziej uciążliwe”. * „Skryptowanie procesu budowania w moim projekcie Scheme stawało się coraz bardziej bolesne, gdy moje drzewo źródłowe rosło i łączyłem się z coraz większą liczbą bibliotek C. W moim następnym projekcie wróciłem do Common Lisp”. * "Mam dużą istniejącą bazę kodu C++ i dla mnie możliwość osadzenia wywołań C++ bezpośrednio w kodzie mojego Gambit Scheme była całkowicie warta wszelkich niedociągnięć, jakie Scheme może mieć w porównaniu z Common Lisp, nawet w tym brak wsparcia SWIG." Mam więc nadzieję na historie wojenne, a nie ogólne sentymenty, takie jak "Schemat jest prostszym językiem" itp.


title: przycisk udostępniania w niestandardowym widoku listy nie działa

text: Obserwuję udostępnij tekst za pomocą przycisku w niestandardowym widoku listy, ale to nie działa. to jest kod dla `OnClick` w `ListViewAdapter.java` : OnClickListener clickListener = new OnClickListener() { @Override public void onClick(View v) { try{ Context context = v.getContext(); String ab = (String) posiadacz.tvComment.getText(); posiadacz.tvComment.setText(ab); Toast.makeText(kontekst, ab, Toast.LENGTH_LONG).show(); Intencja sendIntent = new Intent(); sendIntent.setAction(Intent.ACTION_SEND); sendIntent.putExtra(Intent.EXTRA_TEXT, ab); sendIntent.setType("tekst/zwykły"); context.startActivity(sendIntent); } catch (Wyjątek e){ Log.w("Udostępnij dane", "Błąd!"); } } }; posiadacz.sharebtn.setOnClickListener(clickListener);


title: Co jest bardziej wydajne, pojedynczy pierwiastek kwadratowy czy wielokrotne dzielenie?

text: Powiedzmy, że robię program, który oblicza wszystkie możliwe (całkowe) czynniki pewnej wprowadzonej liczby. Czy teoretycznie bardziej efektywne jest sprawdzanie wszystkich liczb całkowitych do pierwiastka kwadratowego z liczby czy do połowy liczby. Obliczenie pierwiastka kwadratowego zajmie więcej czasu i mocy, ale spowoduje mniej podziałów i odwrotnie dla drugiej opcji.


title: Czy ważne jest, aby rozwiązanie było efektywne?

text: Rozwiązuję wiele problemów, głównie z Top Codera. Otrzymam odpowiedzi na wiele, ale w większości przypadków kończę na nieefektywnym rozwiązaniu. W rzeczywistych wdrożeniach – czy naprawdę ma znaczenie, że rozwiązanie problemu jest skuteczne? Jeśli tak, jak mogę to poprawić?


title: Czy konsultant IT powinien pobierać opłaty za czas poświęcony na planowanie?

text: Jeśli zajmujesz się konsultingiem / freelancerem jako programista, czy powinieneś obciążać klienta za czas poświęcony na planowanie? Planując mam na myśli długie rozmowy telefoniczne, spotkania na miejscu itp.


title: Jak programowo synchronizować wydarzenia w kalendarzach?

text: Chciałbym usłyszeć kilka pomysłów na synchronizację wydarzeń w kalendarzu. Załóżmy, że mam dwa kalendarze z polami (identyfikator, tytuł, początek, koniec, aktualizacja, lokalizacja i opis). Walczę z punktem wyjścia. To proste, jeśli wszystkie wydarzenia są nowe i nie nakładają się na siebie. Ale powiedzmy, że mam już wydarzenia w kalendarzach, niektóre są rzekomo tymi samymi wydarzeniami, niektóre są oddzielnymi wydarzeniami, niektóre może tymi samymi wydarzeniami, ale zmieniły się ich atrybuty, takie jak lokalizacja, tytuł, czas rozpoczęcia i zakończenia. Jak właściwie zsynchronizowałbyś kalendarze z rozsądną inteligentną funkcjonalnością?


title: Jaki jest najlepszy sposób na wprowadzenie nauki do codziennego programowania?

text: Pracuję lepiej, gdy mam mocne fundamenty. Pomaga mi to lepiej rozwiązywać codzienne problemy, ponieważ potrafię je uogólniać. To, co znajduję w programowaniu, to tak wiele rzeczy, które są czarnymi skrzynkami. Logika jest naukowa, ale polecenia nie. Polecenie w języku to po prostu „coś, co coś robi”. Bardzo trudno jest ustalić, jaka jest jego logika, bez zrozumienia podstawowego sprzętu. Nauczyłem się trochę brainfucku i bardzo mi się to podobało, ale wciąż ma polecenia. Te polecenia to pakiety funkcjonalności, których nie można zrozumieć bez zrozumienia wszystkich niższych poziomów logiki, niestety. Chciałbym wiedzieć, czy istnieją jakieś zasady matematyczne lub logiczne, które pomagają w uogólnianiu problemów programistycznych?


title: „Mentoruj” starszego programistę lub kolegi bez obrażania

text: Nie mam wielkich umiejętności społecznych. Podobnie jak wielu programistów, których znam, umiejętności społeczne to coś, nad czym pracuje się i rozwija z biegiem czasu, ponieważ nie jest to cecha naturalna i „wrodzona”. Kiedy komputer robi coś źle, możesz to powiedzieć i „napraw” tak, aby następnym razem działał poprawnie. Nie będzie narzekać. Nie poczuje się obrażony. Właściwie to wydaje mi się, że jest „szczęśliwszy”, ponieważ nie tkwi w ślepym zaułku. * * * Uważam, że o wiele trudniej jest pracować z innymi programistami na moim lub wyższym poziomie w sposób, który umożliwia im szybszą pracę bez okazywania protekcjonalności, obraźliwych czy „wiedzących wszystko” grupy. Wiem, że niektórzy programiści patrzą na to obiektywnie i po prostu mówią: „Ponieważ to dla dobra grupy, poinformuję ich, a jeśli zostaną znieważeni, to ich problem”. To nie jest zła metoda - wszyscy programiści, z którymi kiedykolwiek pracowałem, odpowiednio podchodzą do krytyki. Kiedy mają zły dzień/tydzień/miesiąc/rok/życie, trudno mi podejść do nich bez reaktywnej reakcji emocjonalnej. Naprawdę lubię pracować z ludźmi wokół mnie i nie chcę mieć złej krwi. * **W jakie umiejętności, techniki, a nawet działania poza pracą angażujesz się, aby być wsparciem i zasobem bez napięcia, które może powstać w takich sytuacjach?** * Innymi słowy, jak się masz mentorować kogoś, nie pojawiając się, by go mentorować? Przypuszczam, że pytanie mogłoby/powinno być również odwrócone – jak zachować „otwartość” i uczyć się tak, aby nie odstraszać ludzi, którzy mają dla Ciebie przydatne informacje? W jaki sposób utrzymujesz najwyższe umiejętności, aby ostatni absolwent college'u niekoniecznie był lepszy od ciebie pod względem wzorców projektowych, technologii, przepływu pracy itp.?


title: Jakość danych w testach regresji relacyjnych baz danych

text: Pracuję nad aplikacją internetową do zarządzania kolekcjami muzealnymi o otwartym kodzie źródłowym, która ma być używana do śledzenia akcesyjnych, darowanych, wypożyczonych lub w inny sposób nabytych artefaktów muzeum. Wiązało się to z zaprojektowaniem i stworzeniem dość dużej bazy danych (w porównaniu z moimi wcześniejszymi doświadczeniami), która przechowuje wszelkiego rodzaju różne informacje (informacje o artefaktach, zmieniające się informacje o lokalizacji, osobiste dane kontaktowe, zdjęcia itp.), która musi być elastyczna i łatwo rozszerzalna . Właśnie kończę studia i nie jestem profesjonalistą, jeśli chodzi o projektowanie baz danych, więc naprawdę chcę stworzyć dokładny zestaw testów, aby upewnić się, że to, co mam na miejscu, „działa”. Czytałem o testowaniu baz danych i natknąłem się na kilka artykułów, które wspominają o testowaniu regresji w odniesieniu do baz danych, ale nie do końca rozumiem, z czym to wszystko wiąże się. Czytając ten artykuł w Dr.Dobbs, rozumiem, że jednym z rodzajów testów, które będę musiał wykonać, jest sprawdzenie poprawności logiki w bazie danych. Dlatego utworzyłbym testy, które wstawiają określone dane do bazy danych, a następnie wykonają zapytanie, aby upewnić się, że otrzymam poprawne dane z bazy danych (upewniając się, że wszystkie odpowiednie wyzwalacze lub widoki działają). Zamieszanie pojawia się wraz ze wzmianką o testowaniu „Jakości danych”. W powyższym artykule autor wspomina, że chcesz zweryfikować następujące elementy za pomocą testów: * Reguły wartości domeny kolumn * Reguły wartości domyślnych kolumn * Reguły istnienia wartości * Reguły wartości wierszy * Reguły rozmiaru Jakie rodzaje testów będą to dotyczyć i w jaki sposób uprawomocnić się? Również po raz pierwszy piszę zestaw testów dla bazy danych, czy są jakieś dobre wytyczne dotyczące tego, jak/od czego zacząć lub jakie procesy, które mógłbym zastosować, aby poprowadzić mój rozwój testów?


title: Dlaczego praca w niepełnym wymiarze godzin w programowaniu anomalii?

text: Niedawno zrezygnowałem z pełnoetatowej pracy programistycznej w mega-korporacji i zdecydowałem, że poszukam pracy na pół etatu. Od tego czasu rozmawiałem z pół tuzinem potencjalnych pracodawców i każdy z nich zareagował tak samo, gdy powiedziałem magiczne słowa „w niepełnym wymiarze godzin” – wszyscy zamknęli się i stali się podejrzliwi. Teraz rozumiem, że to może być tylko ja, więc w ramach kontroli zapytałem każdego z nich, co jeśli byłbym gotów pracować na pełny etat, a wszyscy powiedzieli, że prawdopodobnie dostanę ofertę. Moje pytanie jest dwojakie: 1. Dlaczego jako pracodawca zrezygnowałbyś z kompetentnego, nawet świetnego programisty tylko dlatego, że chce pracować 3 dni w tygodniu, a nie 5? 2. Jak lepiej sprzedać historię pracy w niepełnym wymiarze godzin? Zwykle po prostu wymieniam powody, dla których wolę tę równowagę w moim życiu i że chcę pracować nad własnymi projektami, ale to sprawia, że są jeszcze bardziej podejrzliwe - czy sam coś zacznę i zrezygnuję? Czy jestem po prostu leniwy?


title: Wątpliwości co do kilku najlepszych praktyk dotyczących rest api + warstwa usług

text: Zamierzam wkrótce rozpocząć projekt, który udostępnia spokojne interfejsy API do analizy biznesowej. Może nie ograniczać się do spokojnego interfejsu API, więc planuję delegować żądania do warstwy usług, która następnie koordynuje wiele obiektów domeny (z których każdy ma logikę biznesową lokalną dla obiektu). Interfejs API prawdopodobnie będzie miał wiele połączeń, ponieważ jest to projekt długoterminowy. Myśląc o projekcie, przypomniałem sobie kilka dobrych praktyk. 1) Użyj obiektów poleceń w warstwie kontrolera (używam Spring MVC). 2) Użyj DTO w warstwie usług. 3) Sprawdź poprawność zarówno w warstwie kontrolera, jak i usługi, chociaż z różnych powodów. Mam wątpliwości co do tych zaleceń. 1) Używanie obiektów poleceń dodaje wiele dodatkowych klas o jednym przeznaczeniu (potencjalnie jedna na żądanie). Jaka dokładnie jest korzyść? Oczywiście w ten sposób można przeprowadzić walidację opartą na adnotacjach. Co się stanie, jeśli mam dwa żądania, które przyjmują te same parametry, ale mają różne wymagania dotyczące walidacji? Musiałbym mieć dwie różne klasy z dokładnie tymi samymi członkami, ale z różnymi adnotacjami? Bleh. 2) Słyszałem, że używanie DTO jest lepsze niż parametry, ponieważ sprawia, że kod jest łatwiejszy w utrzymaniu (powiedzmy na przykład, że zmieniają się wymagania i parametry usługi muszą zostać zmienione). Nie do końca to rozumiem. Czy api nie powinno być mniej więcej osadzone w kamieniu? Rozumiem, że we wczesnych fazach projektu (a zwłaszcza całej firmy) sama domena nie będzie dobrze rozumiana, a zatem obiekty domeny rdzeniowej mogą się zmieniać wraz z interfejsem API, który manipuluje tymi obiektami. W tym momencie jednak liczba metod api powinna być mała, a ich zależnych niewiele, więc zmiany w metodach mogą być łatwo tolerowane z punktu widzenia konserwacji. W dużym interfejsie API z wieloma metodami i znacznym modelem domeny myślę, że posiadanie DTO dla potencjalnie każdego obiektu domeny stałoby się nieporęczne. Czy coś tutaj nie rozumiem? 3) Widzę walidację w warstwie kontrolera i usługi jako nadmiarową w większości przypadków. Dlaczego miałbym sprawdzać, czy parametry nie są null i ogólnie są dobrze uformowane w kontrolerze, jeśli usługa ma robić dokładnie to samo (i więcej). Czy nie mogę po prostu wykonać całej walidacji w usłudze i zgłosić wyjątek czasu wykonywania z listą złych parametrów, a następnie przechwycić to w kontrolerze, aby komunikaty o błędach były bardziej widoczne? Co więcej, czy nie mogę po prostu sprawić, by komunikaty o błędach były przyjazne dla użytkownika w usłudze i pozwolić wyjątkowi spływać do globalnego programu obsługi (na przykład ControllerAdvice na wiosnę)? Czy jest coś nie tak z którymkolwiek z tych podejść? (Widzę przypadek użycia walidacji kontrolera, jeśli dane wejściowe nie mapują jeden do jednego z danymi wejściowymi usługi, ale ponieważ kontrolery są przeznaczone dla interfejsu API odpoczynku, a nie formularzy, parametry interfejsu API prawdopodobnie będą mapowane bezpośrednio na parametry usługi. ) Mam też pytanie o niesprawdzone vs sprawdzone wyjątki. Mianowicie nie jestem do końca pewien, dlaczego miałbym kiedykolwiek chcieć używać sprawdzonego wyjątku. Za każdym razem, gdy widziałem, jak są używane, po prostu są pakowane w ogólne wyjątki (DomainException, SystemException, ApplicationException, w/e), aby zmniejszyć długość sygnatury metod lub programiści łapią wyjątek, zamiast zajmować się wyjątkami App1Exception, App2Exception, Sys1Exception, Sys2Exception. Nie rozumiem, jak którakolwiek z tych praktyk jest bardzo przydatna. Dlaczego nie zawsze używać niesprawdzonych wyjątków i łapać te, na których ci naprawdę zależy? Możesz po prostu udokumentować, jakie niesprawdzone wyjątki zgłasza metoda.


title: W którym obiekcie należy zaimplementować wait()/notify()?

text: Pracuję w projekcie Android z wielowątkowością. Zasadniczo muszę czekać na odpowiedź serwera, zanim wyślę więcej danych. Zadanie wysyłania danych jest oddzielone flagą `boolean hasServerResponded`, więc `Thread` będzie zapętlać się w nieskończoność bez robienia czegokolwiek, dopóki flaga nie stanie się `true`. Ponieważ ta `boolean` nie jest zadeklarowana jako `volatile` (jeszcze), a także zapętlanie bez robienia czegokolwiek marnuje zasoby, pomyślałem, że może powinienem użyć `AtomicBoolean` a także zaimplementować mechanizm `wait()/notify()`. Czy powinienem użyć metody `notify()` i `wait()` obiektu `AtomicBoolean` czy też utworzyć blokadę `Object`?


title: Testowanie jednostkowe kodu funkcjonalnego wpisanego statycznie

text: Chciałem zapytać, w jakich przypadkach warto jednostkowo testować statycznie wpisany kod funkcjonalny, tak jak jest napisany w haskell, scala, ocaml, nemerle, f# lub haXe (ten ostatni jest tym, co mnie naprawdę interesuje, ale chciałem sięgnąć po wiedzę większych społeczności). Pytam o to, ponieważ z mojego zrozumienia: * Jednym z aspektów testów jednostkowych jest posiadanie specyfikacji w formie, którą można uruchomić. Jednak przy zastosowaniu stylu deklaratywnego, który bezpośrednio odwzorowuje sformalizowane specyfikacje na semantykę języka, czy rzeczywiście _możliwe_ jest wyrażenie specyfikacji w postaci uruchamialnej w osobny sposób, który dodaje wartości? * Bardziej oczywistym aspektem testów jednostkowych jest wyśledzenie błędów, których nie można ujawnić za pomocą analizy statycznej. Biorąc pod uwagę, że bezpieczny dla typów kod funkcjonalny jest dobrym narzędziem do kodowania bardzo zbliżonego do tego, co rozumie twój analizator statyczny, wydaje się, że możesz przenieść dużo bezpieczeństwa w kierunku analizy statycznej. Jednak prosty błąd, taki jak użycie `x` zamiast `y` (oba są współrzędnymi) w kodzie, nie mogą zostać pokryte. OTOH taka pomyłka może się również pojawić podczas pisania kodu testowego, więc nie jestem pewien, czy jest to warte zachodu. * Testy jednostkowe wprowadzają redundancję, co oznacza, że gdy zmieniają się wymagania, kod je implementujący i testy obejmujące ten kod muszą zostać zmienione. Ten narzut jest oczywiście stały, więc można by się spierać, że to nie ma znaczenia. W rzeczywistości w językach takich jak Ruby tak naprawdę nie ma to porównania do korzyści, ale biorąc pod uwagę, jak statycznie typowane programowanie funkcjonalne obejmuje wiele testów jednostkowych, wydaje się, że jest to stały narzut, który można po prostu zmniejszyć bez kary. Z tego wywnioskowałbym, że testy jednostkowe są nieco przestarzałe w tym stylu programowania. Oczywiście takie twierdzenie może prowadzić tylko do wojen religijnych, więc sprowadzę to do prostego pytania: Kiedy używasz takiego stylu programowania, w jakim stopniu używasz testów jednostkowych i dlaczego (jaką jakość chcesz uzyskać dla twojego kodu)? Lub odwrotnie: czy masz kryteria, według których możesz zakwalifikować jednostkę statycznie wpisanego kodu funkcjonalnego jako _pokrytą_ przez statyczny analizator, a zatem bez potrzeby pokrycia testów jednostkowych?


title: Co to znaczy atomowe zatwierdzenie dla systemu wersjonowania?

text: Jednym z powodów, dla których programiści wolą SVN od CVS, jest to, że ten pierwszy umożliwia atomowe zatwierdzenia? Co to znaczy ?


title: Projektowanie oprogramowania oparte na wtyczkach

text: Jestem programistą, który chce doskonalić swoje umiejętności w zakresie projektowania oprogramowania. Uważam, że oprogramowanie powinno nie tylko działać, ale także mieć solidny i elegancki wygląd, aby można je było ponownie wykorzystać i rozszerzyć na późniejsze cele. Teraz szukam pomocy w ustaleniu dobrych praktyk dla konkretnych problemów. Właściwie staram się dowiedzieć, jak zaprojektować oprogramowanie, które byłoby rozszerzalne za pomocą wtyczek. Mam następujące pytania: * Czy wtyczki powinny mieć dostęp do innych funkcji? Myślę, że przyniosłoby to zależności. * Co powinna oferować główna aplikacja do wtyczek, jeśli chcę, powiedzmy, opracować oprogramowanie multimedialne, które będzie odtwarzać filmy i muzykę, ale które później może uzyskać funkcjonalność dodaną do wtyczek, które, powiedzmy, będą w stanie odczytywać stan wideo (czas, bps, ...) i wyświetl go. Czy oznaczałoby to, że sam odtwarzacz musiałby być częścią głównego programu i oferować usługi wtyczkom, aby uzyskać takie informacje, czy też istniałby sposób na rozwinięcie odtwarzacza jako wtyczki, ale oferowałby w jakiś sposób możliwość do innych wtyczek do interakcji z nim? Jak widzisz, moje pytania służą głównie celom edukacyjnym, ponieważ staram się doskonalić swoje umiejętności tworzenia oprogramowania. Mam nadzieję, że znajdę tu pomoc i przeproszę, jeśli coś jest nie tak z moim pytaniem.


title: Projekt oparty na martwym SVN na GitHub

text: Wcześniej zadawałem to pytanie przy przepełnieniu stosu, ale zostało to zamknięte, uważam, że „programiści” są bardziej odpowiednim miejscem na to pytanie. Zrobiłem trochę pracy nad projektem SVN Importer (licencja Apache), który wydaje się być praktycznie martwy (brak opublikowanych zmian od 5 lat). Mam login do ich serwera svn, ale nie mam uprawnień do wprowadzania zmian. W każdym razie chciałbym przekonwertować ten projekt na Git i wepchnąć własne zmiany do GitHub. Witryna GitHub sugeruje narzędzie svn2git do konwertowania projektów svn na Git, więc planowałem przekonwertować repozytorium SVN na Git, dodać moje zmiany, a następnie wypchnąć to repozytorium Git do GitHub. Zastanawiam się jakie są wymagania prawne i wspólne konwencje tego procesu? Czy można sklonować całą historię projektu i przenieść ją na GitHub? Ponadto, mimo że jest to zasadniczo martwy projekt, po przetłumaczeniu repozytorium na Git, czy powinienem umieścić wszystkie moje zatwierdzenia w gałęzi innej niż master, czy w tym przypadku dopuszczalne jest użycie mastera?


title: Jak powszechne jest przesyłanie artykułów do czasopism lub na konferencje poza środowiskiem akademickim?

text: Przez kilka lat pracowałem w środowisku akademickim, ale bardziej po stronie D R&D. Wyścig po artykuły nigdy mi się nie podobał i jestem typem praktycznym, a nie teoretycznym, ale bardzo lubię czytać artykuły na określone tematy (np. Google Papers, NLP, FB, ...) bardzo. Jak często zdarza się, że normalnie pracujący programiści przesyłają artykuły na konferencje, a nawet do czasopism? Wydaje się, że jest to dość powszechne w niektórych firmach (w mojej nie jest to powszechne ani zalecane). Czy czasopisma lub konferencje biorą pod uwagę nawet artykuły autorstwa nikogo akademickiego (BSc)? Pytam, bo mam kilka szorstkich pomysłów i chciałbym je tylko _formować_ w taki czy inny sposób. Dodatkowe pytanie: Czy istnieje lista CS (w najszerszym tego słowa znaczeniu) konferencji/czasopism z krótkimi opisami? * * * PS (Czterech na pięciu badaczy, których spotkałem, opublikowało całkiem puszyste rzeczy jak na mój gust. Nie jestem ekspertem, ale ci ludzie czasem sami mi mówili, że implementacja nie ma znaczenia, tylko pomysł i prezentacja. Ja zawsze Pewnie mógłbym pisać o pomysłach cały dzień (nie od razu, ale z odrobiną przygotowania), ale realizacja i część praktyczna to _naprawdę trudna część_, którą środowisko akademickie po prostu nie lubi się zajmować. Również wiele gazety wręcz krzyczą: _Ja zostałem napisany, więc lista publikacji mojego autora się wydłuża_ \- co jest stratą czasu dla _wszystkich_ , a często też stratą pieniędzy z podatków. implementacje lub rzeczywiste dane, takie jak np. Google Map Reduce, Serving Large-scale Batch Computed Data with Project Voldemort itp.)


title: Obsługa znaków innych niż angielskie?

text: Czy obsługa znaków innych niż angielskie jest powszechna w językach programowania? To znaczy, technicznie wydaje mi się, że to wykonalne, ale nie mam żadnego doświadczenia w czymkolwiek innym niż angielski, więc nie wiem, jak powszechne jest to. Wiem, że istnieją języki programowania nieanglojęzyczne, ale czy coś takiego jak C#, C++, C, Java lub Python może obsługiwać klasy/metody/zmienne inne niż angielskie? Przykład w go (url, http://play.golang.org/p/wRYCNVdbjC) package main import "fmt" type 世界 struct { 世界 string } func main() { fmt.Println("Witaj, 世界") 世界 : = new(世界) 世界.世界 = "Witaj świecie" fmt.Println(世界.世界) }


title: Związek Metro z deweloperem ASP.Net?

text: Jestem web developerem, pracuję głównie z ASP.Net (webforms + MVC), C#, javascript i tak dalej. Jak wiecie, ciągła nauka jest dla nas bardzo ważna, ale czas nie jest nieskończony. Od czasu do czasu bawię się dziwną technologią, która nie ma nic wspólnego z siecią, ale przede wszystkim staram się dowiedzieć więcej o mojej dziedzinie, aby stać się lepszym w swojej pracy. Mam możliwość uczestniczenia w krótkim kursie ASP.Net MVC lub krótkim kursie aplikacji Metro i nie jestem pewien, który wybrać. Z jednej strony czuję, że znałbym już 75% materiału kursu MVC, więc nie wyniosłbym z niego tak wiele, jak z kursu Metro. ale z drugiej strony zadaję sobie pytanie, na ile przydatny będzie kurs metra w mojej przyszłości jako web developer. Zawsze mógłbym się w tym pobawić, kiedy będę miał czas? Tak więc moje prawdziwe pytanie brzmi, czy jest jakaś realna korzyść dla programisty stron internetowych, który poświęca swój czas na naukę konkretnie Metro, zamiast czegoś innego, jak knockout.js lub jakiś inny tech, który mógłby mi się przydać w moim codziennym życiu zawodowym? Dziękuję


title: Dlaczego używanie nazwanych tras do generowania wychodzących adresów URL stanowi naruszenie separacji obaw?

text: Czym jest oddzielenie obaw? > W informatyce separacja obaw (SoC) to proces dzielenia > programu komputerowego na odrębne cechy, które pokrywają się funkcjonalnością w jak najmniejszym > stopniu. Obawa to dowolna część zainteresowania lub koncentracja > w programie. Zazwyczaj obawy są równoznaczne z cechami lub zachowaniami. > Postęp w kierunku SoC jest tradycyjnie osiągany poprzez modułowość i > enkapsulację z pomocą ukrywania informacji. Z książki _Pro Asp.Net MVC 4_ ( strona 375 ): > Problem z poleganiem na nazwach tras do generowania wychodzących adresów URL ( > @Html.RouteLink("Click me", "MyOtherRoute","Index", "Customer") jest że > robi to przełamuje oddzielenie obaw, które jest tak kluczowe dla wzorca projektowego > MVC. Podczas generowania linku lub adresu URL w widoku lub metodzie > akcji, chcemy skupić się na akcji i kontrolerze, które użytkownik będzie > skierowane do, a nie formatu adresu URL, który będzie używany.Wprowadzając wiedzę o różnych trasach do widoków lub kontrolerów > tworzymy zależności, których wolelibyśmy uniknąć. a) Rozumiem, że tworzymy _zależność_ ( między _metoda działania/widok_ a _modułem konfiguracji routingu_ ) poprzez określenie w `Html.RouteLink` (wywoływanej w ramach _metody działania_ lub _widoku_ ) nazwy _trasy_, której chcemy użyć. Ale czy wprowadzenie takiej „zależności” jest już uważane za „naruszenie SoC”? Mianowicie, mimo że stworzyliśmy _zależność_ pomiędzy _dwoma modułami_ , tak naprawdę nie wprowadziliśmy żadnej dodatkowej _funkcjonalności/problemu_ do żadnego z modułów (z definicji **SoC** wynika, że _naruszenie SoC_ występuje, gdy _nowa funkcjonalność/problem_ jest wprowadzone do _modułu_ ) b) W każdym razie nie rozumiem, w jaki sposób po prostu generowanie adresu URL (w ramach _metody akcji/widoku_ ) przez określenie _nazwanej trasy_ spowoduje skupienie się na _formatie adresu URL_? Dziękuję Ci


title: Tworzenie konta w celu otrzymywania poufnych informacji na urządzeniu mobilnym

text: Na ostatni rok pracuję nad aplikacją na Androida, która pozwala posiadaczowi urządzenia mobilnego na otrzymanie z serwera powiadomienia tekstowego zawierającego potencjalnie poufne informacje. Moje pytanie brzmi, jeśli Użytkownik pobierze aplikację, w jaki sposób może założyć konto/zalogować się na moim serwerze, aby otrzymywać z niego powiadomienia? Myślałem: **Aplikacja** * Otwórz aplikację * Kliknij Zarejestruj * Wypełnij pola (Nazwa / Adres / ID / Nr telefonu) * Wyślij na serwer * Wyświetl "Konto oczekujące" * Jeśli zaakceptowano, wyślij pozytywną wiadomość, zacznij odbierać powiadomienia z serwera. * W przypadku odmowy wyślij negatywną wiadomość, jeśli Użytkownik spróbuje zalogować się na to konto, Aplikacja poinformuje go o odrzuceniu. **Serwer** * Dodaj otrzymane informacje do „Konta oczekującego” * Gdy administrator przejdzie do trybu online, może przejrzeć informacje (Jak mogą mieć pewność, że osoba jest tym, za kogo się podaje?) * Jeśli konto jest zatwierdzone, dane są przenoszone na normalne konto Użytkownika, w przeciwnym razie przenoszone na konta odrzucone. Nie mogę wymyślić innego rozwiązania, które pasowałoby do tego problemu. Jeśli ktoś zna wzór lub projekt, proszę o kontakt.


title: Co to jest programista w teście?

text: Niedawno rozmawiałem z rekruterem, który chce umieścić mnie w firmie na stanowisko Developer in Test. Zasadniczo sprawił, że brzmiało to jak stanowisko, w którym można bawić się nowymi technikami programowania, testować błędy i ulepszenia oprogramowania, ale gdzie nie musisz się martwić o standardowe terminy. W swojej pracy możesz być bardzo kreatywny. Ale ten opis wciąż był dla mnie trochę niejasny. Od kilku lat jestem Web Developerem, głównie pracuję w PHP. Chciałem więc wiedzieć, czy inni członkowie społeczności wiedzą więcej o tym, co zazwyczaj oznacza te stanowiska. Wiem, że może to nie być temat odpowiedni dla tego forum, ale było to najlepsze dopasowanie, jakie mogłem znaleźć wśród Stack Exchange i naprawdę byłbym wdzięczny, gdyby nie został zamknięty, ponieważ tak naprawdę nie ma gdzie indziej o to zapytać . Próbowałem go wygooglować, ale nie ma tam zbyt wielu informacji. Czym właściwie jest programista w testach?


title: Jak utworzyć usługę sieciową o dużym natężeniu ruchu, która działa skutecznie z wieloma różnymi użytkownikami?

text: Stworzyłem wcześniej usługi internetowe, z których korzysta niewielka liczba użytkowników, ale mam nowy projekt, który będzie miał wielu użytkowników. Dla każdego użytkownika, który korzysta z usług, zrobiliby to w następujący sposób: 1) Wywołaj metodę w usłudze sieciowej, która oblicza „cenę” na podstawie parametrów przekazanych przez użytkownika. 2) Rzeczywista metoda i algorytm obliczania i zwracania „ceny” nie jest zbyt skomplikowana, a środowisko uruchomieniowe byłoby bardzo szybkie, chociaż dla każdego wywołania konieczne byłoby sprawdzenie tabeli bazy danych. 3) Problem polega na tym, że ta metoda może być wywoływana w kółko dla każdego przedmiotu, który wymaga ceny, i jeśli wielu użytkowników korzysta z usługi sieciowej (nie znam dokładnej liczby, powiedzmy 1000 użytkowników, 10 000 użytkowników , cokolwiek), nie wiem, o jakich różnych rzeczach muszę myśleć, jeśli chodzi o zarządzanie dużym ruchem, wielu różnych użytkowników próbuje używać tej metody w kółko w tym samym czasie, ciągnąc dane z tabeli w kółko i jeszcze raz. Tak więc chciałbym uzyskać porady od kogoś, kto ma doświadczenie z usługami internetowymi o dużym natężeniu ruchu i wielu różnych użytkownikach, z metodą ciągnącą z tabeli bazy danych w kółko, aby wyjaśnić mi kroki / rzeczy, które muszę zastanów się, projektując usługę, aby uniknąć zatorów w ruchu, w którym momencie pewna liczba użytkowników zacznie spowalniać usługę lub po prostu o rzeczach do przemyślenia/zmartwienia itp. Doceniam każdą pomoc, dzięki!


title: Licencjonowanie: praca pochodna i informacja o prawach autorskich

text: Obecnie tworzę coś, co zostało zainspirowane inną biblioteką. Jest to kompletne przepisanie na innej platformie - jednak ma ten sam cel i funkcjonalność i jest napisane w tym samym języku. O ile rozumiem, to nadal jest uważane za dzieło pochodne. Oryginalny utwór jest objęty licencją Apache 2.0. Jakie kroki muszę teraz wykonać, publikując moje źródło na licencji Apache 2.0? Czy muszę zachować informacje o prawach autorskich? Jeśli tak, to oczywiście nie może być w plikach źródłowych (które są nowe i nie mogą być zmapowane do oryginalnego fragmentu). Co muszę zrobić, aby być po bezpiecznej stronie? Co muszę uwzględnić, gdy rozpowszechniam źródła?


title: Narzędzie do adnotacji różnic

text: Wśród 11 sprawdzonych praktyk bardziej efektywnego i wydajnego recenzowania kodu, adnotacja diff wydaje się być tą, która szczególnie dobrze nadaje się do pomocy narzędziowej. Artykuł został napisany przez architekta CodeCollaborator firmy SmartBear, więc oczywiście zaleca korzystanie z tego. Czy ktoś zna jakieś alternatywy? Nie przychodzi mi do głowy nic, co byłoby nawet zbliżone do papieru + długopis + marker w czystej wydajności programisty, jeśli chodzi o wyjaśnienie fragmentu kodu.


title: Czy mogę zmienić nazwę pakietu dla biblioteki pod Apache V2?

text: Stworzyłem bibliotekę u mojego byłego pracodawcy. Po zakończeniu pracy musiałem zabrać ze sobą bibliotekę. Czy Apache v2 zabrania zmiany nazw pakietów, o ile zachowam nienaruszony nagłówek licencji?


title: Nieprawidłowe działanie listview z v1 platformy mobilnej odoo dla Androida

text: W widoku listy w pojedynczym elemencie listy znajduje się textview, button i edittext. A wszystkie elementy są generowane dynamicznie czasami 3 czasami 7 czasami 14 ... Jeśli wstawię wartości w te edittext ... jestem w stanie ustawić wartości 6 lub mniej edittext ... W urządzeniu Genymotion z 4,7" z widocznym elementy na ekranie są częściowe 6 i 7... Podczas gdy w 10" genymotynie, widoczne elementy to 9 Jak uzyskać wartości z całego tekstu edycji z tego dynamicznego widoku listy? ..... public class DeliveryDetailFinal extends BaseFragment { Integer mPickingId = null; Liczba całkowita mLineSize = null; LinkedHashMap<String, String> productData = new LinkedHashMap<String, String>(); List<Object> moveLinesfinalData; Zobacz mDOViewFinal = null; ListView mMoveLinesFinalListDo = null; Kontekst mDBContextDDF = null; List<OEDataRow> moveLinesData; @Override public View onCreateView(LayoutInflater inflater, kontener ViewGroup, Bundle protectedInstanceState) { setHasOptionsMenu(true); mDOViewFinal = inflater.inflate(R.layout.fragment_delivery_order_detail_final_view, kontener, false); Pakiet pakietu = getArguments(); if (bundle != null) { mLineSize = bundle.getInt("lineSize"); }             w tym(); mDODHelper = db().getOEInstance(); mDBContextDDF = (Kontekst) getActivity(); zwróć mDOViewFinal; } prywatny void init(){ initControls(); } private void initControls(){ moveLinesData = mDeliveryOrderData.getO2MRecord("move_lines").browseEach(); mMoveLinesFinalListDo = (ListView) mDOViewFinal.findViewById(R.id.DOMoveLinesFinal); moveLinesfinalData = new ArrayList<Object>(); moveLinesfinalData.addAll(moveLinesData); OEListAdapter listAdapter = new OEListAdapter(mDBContextDDF, R.layout.fragment_final_details_view, moveLinesfinalData){ @Override public View getView(int position, View convertView, ViewGroup parent) { View mView = convertView; if (mView == null) mView = getActivity().getLayoutInflater().inflate(getResource(), parent, false); mView = createListViewRow(mView, pozycja, moveLinesfinalData); mView.setVisibility(1); zwróć mView; } }; mMoveLinesAdapterfinal = listAdapter; Log.d("final", "final mMoveLinesAdapterfinal "+mMoveLinesAdapterfinal); mMoveLinesFinalListDo.setAdapter(mMoveLinesAdapterfinal); } public View createListViewRow(View mView, int position, List<Object> moveLinesObjectData) { final OEDataRow row = (OEDataRow) moveLinesObjectData.get(position); TextView eProductName = (TextView) mView.findViewById(R.id.textViewProductNameFinal); eProductName.setText(row.getString("nazwa").toString()); LinearLayout innerLinearLayout = (LinearLayout) mView.findViewById(R.id.innerLinearLayout); EditText editTextProductId = (EditText) innerLinearLayout.findViewById(R.id.editTextProductId); if(row != null) editTextProductId.setText(row.getInt("id").toString()); EditText eProductSerial = (EditText) innerLinearLayout.findViewById(R.id.editTextProductSerialFinal); Identyfikator ciągu = editTextProductId.getText().toString(); String serialNumber = ((EditText) eProductSerial).getText().toString(); productData.put(id,numer seryjny); Log.d("final", "final productData przed "+productData); eProductSerial.setOnFocusChangeListener(new View.OnFocusChangeListener() { public void onFocusChange(View v, boolean hasFocus) { if (!hasFocus) { LinearLayout parentLayout = (LinearLayout) v.getParent(); if(parentLayout != null) {EditFoTextI = (EditText) parentLayout.findViewById(R.id.editTextProductId); String id = editTextProductIdFocus.getText().toString(); String serialNumber = ((EditText) v).getText().toString(); productData.put( id,numer seryjny); } } } }); końcowy kod kreskowy przycisku = (przycisk) innerLinearLayout.findViewById(R.id.buttonBarcode); BarCode.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { v.getId(); } }); zwróć mView; } @Override public Object databaseHelper (kontekst kontekstu) { return new StockPickingDB(context); } } ..... > fragment_delivery_order_detail_final_view.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android: layout_marginTop="55dp" android:orientation="vertical"> <ListView android:id="@+id/DOMoveLinesFinal" android:layout_width="match_parent" android:layout_height="match_parent"> </ListView> </LinearLayout> > fragment_final_details_view.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/topLayoutID" android:layout_width="match_parent" android:layout_height="match_parent „ android:layout_margin="3dp" android:orientation="vertical" android:padding="2dp" android:visibility="visible"> <TextView android:id="@+ id/textViewProductNameFinal" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginEnd="3dp" android:layout_marginRight="3dp" android:layout_marginLeft="3dp" android:layout_marginStart="3dp" android:text= "@string/product" android:textAppearance="?android:attr/textAppearanceSmall" android:visibility="visible"> <requestFocus /> </TextView> <LinearLayout android:id="@+id/innerLinearLayout" android:layout_width ="match_parent" android:layout_height="wrap_content" android:padding="1dp" android:layout_margin="1dp" android:orientation="poziomy" android:visibility="visible"> <Przycisk android:id="@+id/buttonBarcode" style="?android:attr/buttonStyleSmall" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/kod kreskowy" android:visibility=" widoczne" /> <EditText android:id="@+id/editTextProductId" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/serial_no" android:visibility="gone"> < /EditText> <EditText android:id="@+id/editTextProductSerialFinal" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/serial_no" android:visibility="visible"> </EditText> </LinearLayout> </LinearLayout> proszę o pomoc... Z góry dziękuję...


title: Do czego służy ta funkcja?

text: Czy ta funkcja oznacza jej obliczenie x=(x-1) + x^2? Funkcja nieznana(x) if ( x == 1 ) zwróć 1 w przeciwnym razie zwróć nieznane(x‐1) + x*x


title: Środowiska SQL Dev i Prod

text: Otrzymałem zadanie skonfigurowania środowiska programistycznego SQL i zastanawiałem się, czy ktoś ma jakąś radę, jak to zrobić dobrze? Do tej pory przywróciłem prod DB do innego komputera i zmieniłem wszystkie nasze pakiety SSIS tak, aby używały plików konfiguracyjnych XML, dzięki czemu możemy je wdrożyć w dowolnym środowisku bez zmiany ustawień połączenia DB. Moim planem było przywracanie prod DB przez dev DB co 2 tygodnie (zakładając, że zostało to uzgodnione przez wszystkich innych programistów). Myślałem też, że będę miał przywracaną bazę danych UAT co 1 lub 2 tygodnie, aby przetestować wdrażanie zmian w programie prod. Baza danych UAT istniałaby tylko przez dzień lub 2 w celu testowania rzeczy, a następnie faktyczne wdrożenie miałoby miejsce w środowisku prod. Czy ktoś może pomyśleć o czymś innym, co byłoby dobre do zrobienia, lub ma jakąś radę w innych kwestiach itp.?


title: Notacja/MetaJęzyk do wyrażania algorytmu

text: Muszę nauczyć się języka notacyjnego, abym mógł wyrazić i ewentualnie udowodnić poprawność tego, co uważam za skomplikowany algorytm, który rozdziela korektę kredytu na wiele rachunków za wodę w porządku malejącym według daty wystawienia. Ale nie potrafię powiedzieć, jaki powinien być ten język notacji. Każdy rachunek ma trzy poziomy zużycia, 1-30, 31-60 i ponad 60. Każdy poziom jest powiązany z inną stawką wody i kanalizacji. Im wyższy poziom, tym wyższa stawka. Dwa rachunki za wodę mają zużycie 100ccf, co oznacza, że każdy rachunek jest rozliczany w ten sposób. Oznacza to, że jego rozkład w warstwach 1, 2 i 3 to warstwa 1 = -30, warstwa 2 = -30 i warstwa 3 = -40. Jeśli nie jest to oczywiste, fakturowanie odbywa się od najniższego do najwyższego poziomu, więc kredytowanie odbywa się od najwyższego do najniższego poziomu. Jeśli zastosuję kredyt konsumpcyjny -170, pierwszy rachunek zużywa -100ccfs. To jest pozostałe 70 ccf kredytu, które należy zastosować do drugiego rachunku, który robi się szalony. -40 z tego musi zostać przyznane na poziomie 3, a pozostałe -30 na poziomie 2. Nic nie pozostaje dla poziomu 1 (drugi rachunek). Wiem, że to absolutnie poprawna dystrybucja, bo konsultowałam się z wyroczniami w naszej gminie. Wiedzą, o czym mówią. Gdy pozostało -70 (utrzymywane w jednej zmiennej) i pierwotne zużycie drugiego rachunku (utrzymywane w oddzielnej zmiennej), odejmuję wartość sumy wartości granicznych poziomu 1 i 2 (60ccf) od 100ccf (zużycie w momencie wystawienia rachunku) . Chcę udowodnić, dlaczego tak jest. Nie zadowalam się powiedzeniem „Hej, wygłupiałem się, dopóki nie dostałem miłej odpowiedzi”. Wszelkie pomysły lub pomoc byłyby mile widziane.


title: Dlaczego C używa gwiazdki jako wskaźników?

text: Dopiero teraz uczę się o C. Uważam za dziwne, że twórcy wybrali gwiazdkę (`*`) jako symbol wskaźników, a nie symbol, który faktycznie _wygląda_ jak wskaźnik (`->`). Biorąc pod uwagę, jak mylące mogą być dereferencje i wskaźniki funkcji, czy istnieje historyczny, a nawet praktyczny powód, dla którego używa się gwiazdki?


title: Najlepsze praktyki wdrażania MVVM i MVC w delphi Pascal

text: Jestem programistą Delphi pascal, używam najnowszego Embarcadero delphi XE i chciałbym skorzystać z wzorców projektowych, takich jak kontroler widoku modelu i model widoku modelu. Jednak wydaje się, że w sieci nie ma zbyt wielu najlepszych praktyk dotyczących robienia tego w Pascalu. Większość przykładów, które mogę znaleźć, znajduje się w C#, a niektóre funkcje języka nie są obecne w Pascalu, co oznacza, że być może będę musiał znaleźć sposoby na zaimplementowanie tych funkcji. Próbuję zaadaptować kod z tego artykułu tutaj wymienię problemy, z którymi się borykam * **Typy dopuszczające wartość null** Pascal nie ma typów dopuszczających wartość null, tak jak robi to C#, więc stworzyłem własne. TNullable<T> = rekord ściśle prywatnych fHasValue : boolean; fWartość : T; funkcja GetValue:T; procedura SetValue(nowaWartość : T); własność publiczna HasValue : boolean read fHasValue; właściwość Wartość : T read GetValue write SetValue; procedura SetToNull; koniec; w sekcji implementacji funkcja TNullable<T>.GetValue:T; zacznij, jeśli fHasValue, a następnie zacznij Wynik := fValue; end else raise Exception.Create('Wartość nie została ustawiona'); koniec; procedura TNullable<T>.SetValue(nowaWartość : T); początek fWartość := nowaWartość; fHasValue := prawda; koniec; procedura TNullable<T>.SetToNull; początek fHasValue := fałsz; koniec; * **Get/Set for properties** Teraz, kiedy mam typ dopuszczający wartość null, mogę tworzyć właściwości dopuszczające wartość null. Jednak pojawia się trochę zapachów kodu, na przykład jeśli tworzę TFoo = class private function GetBar:TNullable<Integer>; procedura SetBar(x:TNullable<Integer>); własność publiczna Bar : TNullable<Integer> read GetBar write SetBar; w sekcji implementacji funkcja TFoo.GetBar:TNullable<Integer>; begin if **valueExists** then begin Result.Value := **wartość** end else begin Result.SetToNull; koniec; koniec; procedura TFoo.SetBar(x:TNullable<Integer>); begin if X.hasValue then begin //Store/show value here end else begin //handle null przypisanie tutaj end; koniec; To jest w porządku, ale jeśli chodzi o użycie tych właściwości, nie mogę po prostu użyć myFoo.Bar.Value := 1; Muszę użyć var myBar : TNullable<Integer>; początek myBar.Value := 1; myFoo.Bar := myBar; koniec; Co jest nieco bardziej bałaganiarskie. Przypuszczam, że nic nie mogę na to poradzić. * **Odwołania cykliczne** Lubię rozdzielać klasy na różne jednostki. np.: ![struktura](http://i.stack.imgur.com/XD75V.png) utrzymując interfejs użytkownika oddzielnie od logiki sterowania oraz warstwy logiki modelu i danych. Mogę mieć sytuację, w której 2 klasy będą się wzajemnie odwoływać. Chociaż jest to sytuacja, której w większości chciałbym uniknąć, zdarzają się sytuacje, w których jest to potrzebne. na przykład jednostka u_A; interfejs używa u_B ; typ TA = klasa public Foo : TB; koniec; zakończenie wdrożenia; i inną jednostkę jednostki u_B; interfejs używa u_A ; typ TB = klasa public Foo : TA; koniec; zakończenie wdrożenia; Ten kod jest zepsuty, ponieważ te dwie klasy obejmują się nawzajem i nie można tego zrobić w pascalu. To nie jest taki problem w C#. Rozwiązania, które przychodzą mi do głowy: 1. Uwzględnij obie klasy w tej samej jednostce, chociaż jest to problem, jeśli uważam, że nie pasuje to do projektu. 2. Utwórz kolejny interfejs nadrzędny dla B i odziedzicz z niego B, a następnie obejdzie się. Chociaż jest to bałagan jak na tak proste zadanie. * **Klasy statyczne** W Delphi nie ma żadnych klas statycznych, są one przydatne dla klas kontrolnych. * **Najlepsze klasy kontenerów do użycia w Delphi** Obecnie używam TList i TObjectList w Generics.Collections Zostały one wprowadzone w Delphi XE Mam nadzieję, że są najlepsze w użyciu, ponieważ Delphi 7 nie wydaje się mieć żadnych dobrych opcji . Nadal myślę o obsłudze zdarzeń i wszelkich problemach, które mogą się tam pojawić. Być może są jeszcze inne kwestie, o których jeszcze nie pomyślałem. Dzięki za jakąkolwiek radę.


title: Czy to przyzwoity przypadek użycia goto w C?

text: Naprawdę waham się o to zapytać, ponieważ nie chcę „prosić o debatę, argumenty, ankiety lub rozszerzoną dyskusję”, ale jestem nowy w C i chcę uzyskać więcej wglądu w powszechne wzorce używane w tym języku. Ostatnio słyszałem trochę niesmaku dla polecenia `goto`, ale ostatnio znalazłem też przyzwoity przypadek jego użycia. Kod taki: error = function_that_could_fail_1(); if (!error) { błąd = function_that_could_fail_2(); if (!error) { błąd = function_that_could_fail_3(); ...do poziomu n-tej zakładki! } else { // radzimy sobie z błędem, oczyszczamy i zwracamy kod błędu } } else { // radzimy sobie z błędem, oczyszczamy i zwracamy kod błędu } Jeśli część dotycząca oczyszczania jest bardzo podobna, można ją trochę napisać ładniejsza (moja opinia?) tak: error = function_that_could_fail_1(); if(błąd) { przejdź do czyszczenia; } błąd = function_could_fail_2(); if(błąd) { przejdź do czyszczenia; } błąd = function_that_could_fail_3(); if(błąd) { przejdź do czyszczenia; } ... czyszczenie: // radzimy sobie z błędem, jeśli istnieje, czyszczenie // zwracamy kod błędu Czy jest to powszechny lub akceptowalny przypadek użycia `goto` w C? Czy istnieje inny/lepszy sposób na zrobienie tego?


title: Udało Ci się wdrożyć wzorce projektowe w krótkich terminach?

text: Zastanawiam się, w napiętych terminach, kto ma czas na wdrożenie wzorców projektowych? Jest o wiele więcej pracy i narzutu na programowanie, aby zrobić to dobrze za pierwszym razem iw ramach czasowych. Wiem, że ma to długofalowe zalety, ale czy udało Ci się poprawnie wdrożyć dowolny wzorzec projektowy, gdy klient siedzi na Twojej głowie i presja rośnie. Wydaje mi się, że po wydaniu pierwszej wersji, gdy masz dużo czasu na następne wydanie, możesz pomyśleć o poprawie jakości kodu i możliwości zarządzania za pomocą wzorców projektowych.


title: Po co nie zezwalać na przypisywanie od wewnątrz do skróconego, ale zezwalać na mnożenie i inną matematykę?

text: W Javie następujący kod nie kompiluje się: int val = 1; krótki shortVal = val; // Niezgodne typy Czy ktoś wie, dlaczego Java decyduje się na narzekanie na to przypisanie, zamiast po prostu obcinać, gdy liczba całkowita × liczba całkowita również może się przepełnić? Dla zilustrowania: int val = 46340; int wynik = val * val; // 2147395600 System.out.println(wynik); int przepełnieniaVal = 46341; int wynik2 = overflowVal * overflowVal; // -2147479015 System.out.println("Cicho przepełnione: " + wynik2);


title: Programowanie Win32 i Win64 w źródłach C?

text: Uczę się OpenGL z C i to sprawia, że dołączam plik `windows.h` do mojego projektu. Chciałbym przyjrzeć się bardziej szczegółowym funkcjom systemu Windows i zastanawiam się, czy możesz przytoczyć jakieś dobre źródła do nauki podstaw programowania Win32 i Win64 w C (lub C++). Używam MS Visual C++ i wolę trzymać się C, mimo że większość Windows API wydaje się być C++. Chciałbym, aby mój program był przenośny, a używając pewnej biblioteki graficznej niezależnej od platformy, takiej jak OpenGL, mógłbym uczynić mój program przenośnym z niewielkimi zmianami w zarządzaniu oknami. Czy możesz skierować mnie za pomocą wskazówek do książek lub linków www, gdzie mogę znaleźć więcej informacji? Przestudiowałem już czerwoną książkę OpenGL i język programowania C, to czego szukam to rzeczy zależne od platformy i jak sobie z tym poradzić, ponieważ używam Linuksa i Windowsa, gdzie uważam, że środowisko programistyczne Visual Studio jest całkiem dobre ale debugger gdb nie jest dostępny w systemie Windows, więc jest to kompromis, który ostatecznie wybiorę - Linux z gcc lub Windows z MSVC. Oto program, który rysuje prymityw graficzny z pewnym użyciem windows.h Ten program można również uruchomić pod Linuksem bez zmiany kodu, który faktycznie rysuje prymityw graficzny: #include <windows.h> #include <gl/gl.h> LRESULT CALLBACK WindowProc(HWND, UINT, WPARAM, LPARAM); void EnableOpenGL(HWND hwnd, HDC*, HGLRC*); void WyłączOpenGL(HWND, HDC, HGLRC); int WINAPI WinMain(WSKAZÓWKA, WSKAZÓWKA hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { WNDCLASSEX wcex; HWND hwnd; HDC-HDC; HGLRC hRC; wiad. MSG; BOOL bZakończ = FAŁSZ; float theta = 0.0f; /* zarejestruj klasę okna */ wcex.cbSize = sizeof(WNDCLASSEX); wcex.style = CS_OWNDC; wcex.lpfnWndProc = WindowProc; wcex.cbClsDodatkowy = 0; wcex.cbWndDodatkowy = 0; wcex.hInstance = hInstance; wcex.hIcon = LoadIcon (NULL, IDI_APPLICATION); wcex.hCursor = LoadCursor (NULL, IDC_ARROW); wcex.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH); wcex.lpszMenuName = NULL; wcex.lpszClassName = "GLSample"; wcex.hIconSm = LoadIcon(NULL, IDI_APPLICATION);; if (!RegisterClassEx(&wcex)) return 0; /* tworzenie głównego okna */ hwnd = CreateWindowEx(0, "GLSample", "Przykład OpenGL", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 256, 256, NULL, NULL, hInstance, NULL); ShowWindow(hwnd, nCmdShow); /* włącz OpenGL dla okna */ EnableOpenGL(hwnd, &hDC, &hRC); /* zaprogramuj główną pętlę */ while (!bQuit) { /* sprawdź komunikaty */ if (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { /* obsługuj lub wysyłaj wiadomości */ if (msg.message = = WM_ZAKOŃCZ) { bZakończ = PRAWDA; } else { TranslateMessage(&msg); Wiadomość o wysyłce (&msg); } } else { /* Tutaj znajduje się kod animacji OpenGL */ glClearColor(0.0f, 0.0f, 0.0f, 0.0f); glClear(GL_COLOR_BUFFER_BIT); glPushMatrix(); glRotatef(theta, 0.0f, 0.0f, 1.0f); glPoczątek(GL_TRIANGLES); glColor3f(1.0f, 0.0f, 0.0f); glVertex2f(0,0f, 1,0f); glColor3f(0,0f, 1,0f, 0,0f); glVertex2f(0,87f, -0,5f); glColor3f(0.0f, 0.0f, 1.0f); glVertex2f(-0,87f, -0,5f); gLend(); glPopMatrix(); SwapBufory (hDC); theta += 1,0f; Sen (1); } } /* zamknij OpenGL */ DisableOpenGL(hwnd, hDC, hRC); /* jawne zniszczenie okna */ DestroyWindow(hwnd); return msg.wParam; } LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_CLOSE: PostQuitMessage(0); przerwanie; przypadek WM_DESTROY: zwróć 0; case WM_KEYDOWN: { switch (wParam) { case VK_ESCAPE: PostQuitMessage(0); przerwanie; }             }             przerwanie; domyślnie: return DefWindowProc(hwnd, uMsg, wParam, lParam); } zwróć 0; } void EnableOpenGL(HWND hwnd, HDC* hDC, HGLRC* hRC) { PIXELFORMATDESCRIPTOR pfd; int iFormat; /* pobierz kontekst urządzenia (DC) */ *hDC = GetDC(hwnd); /* ustawienie formatu pikseli dla DC */ ZeroMemory(&pfd, sizeof(pfd)); pfd.nRozmiar = rozmiar(pfd); pfd.nWersja = 1; pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER; pfd.iPixelType = PFD_TYPE_RGBA; pfd.cKolorBity = 24; pfd.cDepthBits = 16; pfd.iLayerType = PFD_MAIN_PLANE; iFormat = WybierzPixelFormat(*hDC, &pfd); SetPixelFormat(*hDC, iFormat, &pfd); /* tworzenie i włączanie kontekstu renderowania (RC) */ *hRC = wglCreateContext(*hDC); wglMakeCurrent(*hDC, *hRC); } void DisableOpenGL (HWND hwnd, HDC hdC, HGLRC hRC) { wglMakeCurrent(NULL, NULL); wglDeleteContext(hRC); ReleaseDC(hwnd, hDC); }


title: Konwencja nazewnictwa klas przypadku

text: Podczas moich ostatnich przygód w **Scala** odkryłem, że **klasy przypadków** są naprawdę fajną alternatywą dla wyliczeń, gdy muszę dołączyć do nich trochę logiki lub kilka wartości. Często piszę struktury, które wyglądają tak, jednak: obiekt Foo{ case class Foo(name: String, value: Int, other: Double) val BAR = Foo("bar", 1, 1.0) val BAZ = Foo( "baz", 2, 1.5) val QUUX = Foo("quux", 3, 1.75) } Martwię się tutaj przede wszystkim o nazewnictwo obiektu i klasę przypadku. Ponieważ są tym samym, kończę z `Foo.Foo`, aby dostać się do klasy wewnętrznej. Czy rozsądnie byłoby zamiast tego nazwać klasę przypadku w stylu „FooCase”? Nie jestem pewien, czy potencjalna niejednoznaczność może zepsuć system typów, jeśli muszę coś zrobić z podtypami lub dziedziczeniem.


title: Jakie są rozwiązania i kompromisy w celu utrzymania spójności wyników wyszukiwania w aplikacji internetowej?

text: Rozważmy aplikację internetową z niestandardową funkcją wyszukiwania, która musi wyświetlać wyniki w sposób stronicowany (dwadzieścia na stronę z maksymalnie setkami tysięcy łącznych wyników) i możliwością drążenia do poszczególnych wyników z zachowaniem następnych/poprzednich linków do nawigacji wyniki. Ponowne przeprowadzanie wyszukiwania przy każdym żądaniu strony w celu uzyskania odpowiednich wyników dla tej strony danych może być zbyt kosztowne (do 15 s na wyszukiwanie). Ponadto, ponieważ dane bazowe mogą się często zmieniać (np. dodawanie nowych wyników), ponowne wykonanie może spowodować niespójne zachowanie następnej/poprzedniej funkcji (np. te same wyniki pojawiające się ponownie na późniejszej stronie po obejrzeniu na wcześniejszej stronie). ). Jakie opcje istnieją, aby zapewnić wyświetlanie wyników wyszukiwania na wielu stronach w spójny sposób i jakie kompromisy ma każda opcja pod względem wymagań dotyczących sieci, procesora, pamięci i pamięci? EDYCJA: Myślałem, że buforowanie wyników wyszukiwania zapytań jest oczywistą koniecznością. Pytanie tak naprawdę dotyczy tego, gdzie buforować zestaw wyników i jakie kompromisy mogą istnieć dla każdego z nich. Na przykład przechowywanie identyfikatorów jednostek w zestawie wyników na kliencie lub przechowywanie identyfikatorów samych jednostek w sesji użytkownika na serwerze WWW lub w tabeli tymczasowej w bazie danych. Nie szukam konkretnie jednego rozwiązania, ponieważ różne scenariusze mogą skutkować różnymi podejściami (a takie pytanie byłoby bardziej odpowiednie dla stackoverflow.com niż tutaj), ale raczej porównania projektu między możliwymi podejściami.


title: Programowanie kontraktowe / Freelancer, Wstępny proces komunikacji / wysyłanie do nich dokumentów (warunki itp.)

text: Szukałem informacji na temat programowania kontraktowego / niezależnego, jeśli chodzi o kroki, jakie należy podjąć w początkowej komunikacji z klientem (ktoś, kto skontaktował się ze mną w sprawie projektu). Zastanawiam się, czy ktoś ma linki do dobrych zasobów, jeśli chodzi o to, co powinienem im wysłać (czy powinienem wysłać dokument opisujący „mój proces” itp.). Często początkowe wymagania, które wysyłają, są niejasne i chcę natychmiast „przejąć kontrolę” nad procesem i zacząć zadawać im pytania, rozmawiać o cenie itp., ale nie chcę być zbyt narzucający się, więc jestem po prostu ciekaw, czy tam dużo się na ten temat napisano, moje wyszukiwania w Google nie są zbyt dobre w tego typu sprawach.


title: Jakiego podejścia użyć do wysyłania zapytań do wielu plików XML?

text: Otrzymam dziesiątki tysięcy plików XML, które z czasem będą się powiększać wraz z nowymi plikami. Muszę być w stanie przeszukiwać te pliki jako całość (tak jak SQL sprawdzający wszystkie rekordy w bazie danych). Jakich technologii i/lub podejść powinienem szukać w przypadku tego problemu? Czuję, że powinienem patrzeć na XQuery. Jednak nie jestem z tym zaznajomiony. **UPDATE 1:** Przykładowe zapytania, które mogę uruchomić: * Zwróć cały kod produktu, nazwę produktu, opis produktu ze wszystkich plików XML w /folderze 1/ gdzie id dostawcy = x i id magazynu = y * Zwróć cały produkt kod i cena produktu ze wszystkich plików XML w /folderze 2/ gdzie id dostawcy = x i id sklepu = y dwa powyższe zapytania, uzyskaj tylko najnowsze wartości na podstawie jakiegoś tagu / atrybutu w XML **UPDATE 2:** Wygląda na to, że ten artykuł sugeruje, że można użyć XQuery: http://www.ibm.com/developerworks /xml/library/x-xquerymaven/index.html?ca=. Ponieważ wdrażam rozwiązanie LAMP, myślę, że mogą istnieć biblioteki XQuery dostępne dla PHP. Czy to oznacza, że nie potrzebuję bazy danych XML do wysyłania zapytań o pliki XML?


title: Bezpieczny rozwój projektu - bezpłatne repozytoria

text: Jakiś czas temu rozpoczęliśmy prywatny projekt hobbystyczny. Zrobiliśmy projekt na javaforge.com, stworzyliśmy repozytorium svn i zaczęliśmy rozwijać naszą aplikację. W tej chwili jesteśmy naprawdę daleko w naszym projekcie, ale jakoś nigdy nie martwiliśmy się, czy nasz projekt jest naprawdę bezpieczny na takim darmowym narzędziu programistycznym, jak javaforge ? Mam na myśli, co by było, gdyby nasz projekt zarobił trochę pieniędzy, a kod źródłowy stałby się wartościowy? Czy można go ukraść, czy ktoś może go przejąć? Chcemy mieć pewność, że nie marnujemy czasu i chcemy być naprawdę pewni bezpieczeństwa naszego projektu. Czy można bezpiecznie rozwijać projekt w takim darmowym repozytorium? Chcielibyśmy również zacząć korzystać z redmine, więc jeśli znasz jakieś bezpieczne miejsce do przeniesienia naszego projektu, weź to pod uwagę. Wielkie dzięki.


title: Czy naprawdę wymagana jest umiejętność programowania bez dokumentacji API?

text: Dzisiaj ledwo zdałem egzamin z programowania w Javie. Musiałem odpowiedzieć na kilka ogólnych pytań dotyczących wątkowania, które zrobiłem dobrze i napisać mały program z wątkami, który był gorszy. Musiałem podłączyć laptopa do ekranu projektora i od razu napisać program. Moją pierwszą próbą było użycie klas anonimowych, ale zapomniałem dokładnej składni. Może z podekscytowania, a może dlatego, że przez ostatnie dwa tygodnie kodowałem głównie w php. Następnie zapytałem, czy można korzystać z dokumentacji API. Odpowiedź brzmiała „NIE”. Postanowiłem więc pójść inną drogą i zaimplementowałem Runnable. Program robił to, czego zażądano na końcu. Oczywiście egzaminatorzy zauważyli moją pierwszą porażkę i to bardzo wpłynęło na mój wynik. Byłem zdumiony, że nie wolno było korzystać z dokumentacji API. Tak więc moje pytanie brzmi: czy to naprawdę ważne, aby móc bezbłędnie kodować bez dokumentacji API? Czy powinienem rozwijać tę umiejętność? Czy to naprawdę ważne w realnym świecie iw środowisku pracy? Na kursach programowania skupiłem się na nauce wzorców, rozwijaniu umiejętności pisania dobrych aplikacji projektowych, umiejętności korzystania z API i szybkiego znajdowania potrzebnych informacji. Nie próbowałem nauczyć się programować bez dokumentacji API. Czy jest to niezbędne podczas rozmów kwalifikacyjnych (kodowanie bez dokumentacji API)?


title: Jak złapać DllNotFoundException w C#?

text: to pytanie moim zdaniem proste. Jak mogę złapać wyjątek DllNotFoundException w C#, ponieważ jest to tylko atrybut do niektórych metod w następujący sposób: [DllImport("NativeLib.dll")] private static extern void print_line(string str); Kiedy te funkcje są wywoływane? Kiedy instancję klasy zawierającej metody (brzmi dziwnie, ponieważ jest "statyczna")? Lub jak chcę skorzystać z metod?


title: Tworzenie architektur symulacyjnych: Którą wybrać?

text: Piszę symulację, która łączy dyskretne zdarzenia i ciągłą symulację systemu. Na przykład możesz używać obok siebie wykresów stanów, dynamiki systemu i kolejek. Zostaną one następnie zredukowane do DEVS, matematycznie zdefiniowanego i możliwego do wykonania formalizmu modelowania. Teraz utknąłem na tym, jak zorganizować architekturę systemów. Chciałbym użyć jakiegoś wzorca MVC, więc pomyślałem, że zróbmy model maszyny stanów, kontroler i diagram stanów, zróbmy model dynamiki systemu, kontroler oraz wizualizację zapasów i przepływu i tak dalej. Ale są one również wyrażalne za pomocą modelu DEVS, ale byłoby trochę skomplikowane wykonanie tłumaczenia do DEVS w locie wewnątrz kontrolera ... Czy powinienem więc mieć wiele modeli i reprezentacji, które są następnie redukowane do DEVS (model podstawowy) LUB czy powinienem pracować bezpośrednio z bazą DEVS, aby m.in. maszyna stanów jest wizualizowana jako diagram stanów, ale wewnętrznie jest automatycznie konwertowana na model bazowy. Którą architekturę poleciłbyś?


title: Wiele takich samych wystąpień obiektów

text: Co dokładnie dzieje się w Javie, gdy wielokrotnie tworzysz ten sam obiekt? Na przykład: Test test = new Test(); potem wywołam to ponownie, ponownie, `Test test = new Test();` lub wewnątrz pętli. Czy poprzednia instancja zostanie usunięta?


title: Java — dlaczego tablicę nazywamy „wektorem”?

text: Czytam książkę o programowaniu w języku Java i chcę potwierdzić, że rozumiem definicję słowa „wektor”. Wikipedia mówi, że wektor to „jednowymiarowa tablica”, źródło http://en.wikipedia.org/wiki/Vector. Czy nie byłoby prościej nazwać tablicę po prostu tablicą? Czy jest jakiś powód, dla którego musimy używać tak wymyślnego języka jak „wektor”? Czy jest różnica między tablicą a wektorem? ![tutaj podaj opis obrazu](http://i.stack.imgur.com/daFEx.png) Źródło: Cracking the Coding Interview, 4th Edition, Gayle McDowell, strona 47. FAQ Q – Dlaczego nie zamieściłeś tego na polska.stackexchange.com? A - Ponieważ myślę, że tylko ludzie zorientowani na informatykę będą mieli dobrą odpowiedź.


title: Przykłady użycia gniazda domeny UNIX

text: Czy ktoś może podać przykład przypadków, w których gniazda AF_UNIX tj. domeny unix są używane do komunikacji procesów w systemie opartym na uniksie


title: C++11 Biblioteka zawierająca tylko nagłówki: treść w klasie a kod treści spoza klasy?

text: ## BACKGROUND:opcjonalny **Od 2002** powoli buduję własną **Bibliotekę Windows Native C++**. I powiedzmy, że przeskoczyłem **150KLOC** _(kod wielokrotnego użytku)_ mając w sobie wszystko, czego potrzebuję i zlew kuchenny _(z większości Windows API zobiektywizowanych do przyzwoitej implementacji klienta IMAP4 i klienta XMLRPC WordPress dla masowe publikowanie... Zajmuję się marketingiem afiliacyjnym i narzędziami SEO)_. Nie jest to jeszcze `.NET`, ale to nie jest tak daleko :) Jedyne **biblioteki innych firm** użyte w nim to `ZLib`, `MySQL` i `SQLite`. Cała reszta jest budowana od podstaw przy użyciu `STL` i/lub `Windows API`. _(Nadal mam program do zapisywania/odczytywania plików PDF do zaimplementowania, IOCP wszystkie elementy sieciowe i zawsze jest miejsce na więcej pracy...)_ **Przez ostatnie 1,5 roku nieustannie starałem się aktualizować go pod kątem C ++11.** Przenieś semantykę tam, gdzie należy, _(jawne)_ operatory logiczne, konstrukcje łańcuchowe i wiele więcej tego, co przyniósł nam _(skromny MSVC)_ C++11. Plus CRTP dla połączonych wywołań rodzic/dziecko, minimalne użycie wirtualnych, ścisła poprawność. **I się udało.** **Niedawno naprawdę zastanawiałem się nad opublikowaniem tego.** Jest to ogromna praca, którą wykonałem tylko dla własnej korzyści i zakładam, że wciąż są deweloperzy `Windows C++`, którzy przydałoby się coś takiego. Aby to zrobić, przeczytałem **Praktyki kodowania C++ i wytyczne dotyczące projektowania API/Biblioteki**. To było wspaniałe! Sam przyswoiłem sobie 80-85% najlepszych praktyk kodowania. Z kilkoma rzeczami, które wkrótce omówię, i **jedno ważne pytanie**. ## PYTANIE **Obecnie cała biblioteka jest całkowicie szablonowa i zawiera tylko nagłówki.** Oznacza to, że cały kod znajduje się w ciele klas. Nie jest łatwo zarządzać, ale jest OK. Zwijam kod, używam regionu `#pragma` i ładnie układam rzeczy. **ALE BARDZO kusi mnie, po przeczytaniu kilku wytycznych dotyczących kodowania bibliotek C++, aby podzielić je na pliki `.hpp` \+ `.inl`.** Zrobiono to eksperymentalnie dla kilku klas i zwiększa to czytelność i sprawia, że łatwiej innym _(nawet jeśli jest to trochę trudniejsze do pisania)_. Wiem gdzie wszystko _(linia kodu, funkcjonalność)_ jest w danym momencie. Ale inni użytkownicy mogą chcieć szybkiego przeglądu deklaracji klas... i definicji TYLKO jeśli/kiedy jest to konieczne _(debugowanie)_. 1. **Jakie są akceptowane i/lub preferowane praktyki dotyczące oddzielania deklaracji od definicji.** Czy wolałbyś mieć klasy tylko nagłówkowe z kodem w treści lub kodem oddzielonym od deklaracji funkcji? 2. **Jakie są obecne praktyki innych bibliotek?** Zawsze wszystko pisałem sam. Nie tak, jak robią to inni. Z wyjątkiem 3 bibliotek wymienionych powyżej, muszę jeszcze użyć kodu innej firmy. > **To dla mnie ważne pytanie, ponieważ jest to droga jednokierunkowa.** Nie mogę później zmienić jej w drugą stronę, więc **każda opinia ma znaczenie i jest > doceniana**... _Dzięki_.


title: Czy istnieją dobre powody, aby używać, uczyć się lub polecać XSLT?

text: Jestem programistą od 8 lat. Używaliśmy XSLT głównie do przekształcania XML na HTML. Wykorzystaliśmy go również do transformacji XML do XML. Ale teraz mamy zastępstwo dla wszystkiego. HTML można wygodnie tworzyć za pomocą języków programowania, takich jak ASP.Net. XML można czytać i manipulować w dowolnym standardowym języku wysokiego poziomu. Ponieważ programowanie w XSLT jest trochę skomplikowane, każdy wolałby pracować na najnowszych językach programowania. Teraz moje pytanie: czy XSLT będzie znaczącym wyborem w przyszłości, nie biorąc pod uwagę faktu utrzymania już opracowanego XSLT? Czy mogę polecić nowym programistom studiowanie XSLT?


title: Jak postąpić z tworzeniem oprogramowania wtykowego?

text: Jeśli masz jakąś aplikację i chcesz, aby Twoi użytkownicy mogli pisać do niej wtyczki, jak powinna być zaprojektowana? Co musisz wziąć pod uwagę, jakie są do tego wzorce projektowe itp.?


title: Kto zwykle zajmuje się analizą przypadków użycia w zespole?

text: Właśnie rozpocząłem swoją pierwszą pracę w IT w zespole z dwoma programistami (młodszy i senior), kierownikiem projektu i architektem. Moja rola nie jest jeszcze w pełni zdefiniowana i powiedziałem, że poradziłbym sobie zarówno z programowaniem, jak i testowaniem. Na razie umieścili mnie na analizie przypadków użycia, ponieważ PL mówi, że wykorzystałoby to moje umiejętności analityczne (jestem doktorem nauk ścisłych). Teraz pytanie brzmi, kto zwykle odpowiada za analizę przypadków użycia? Jak zwykle umieszcza się na nim nowicjusza? Ukryty strach, który mam to: czy próbują trzymać mnie z dala od programowania (po dwóch tygodniach nadal nie widziałem linijki kodu...)?


title: Dynamiczne typowanie w całym stosie technologicznym – gdzie wymusić ważność danych?

text: Przez ostatni rok lub dwa bawiłem się nowszymi technologiami w moich projektach pobocznych. Jako twórca stron internetowych przeszedłem od następujących (i nadal następujących w pracy): ## „Klasyczny” stos technologii 1. Przeglądarka internetowa wysyła formularze POST do... 2. Zakodowany w C# serwer aplikacji internetowych- strony, komunikowanie się z... 3. usługami zewnętrznymi poprzez XML, a następnie ostatecznie... 4. zapis stanu aplikacji do bazy danych SQL. Do korzystania z zupełnie innego układu: ## W pełni dynamiczny stos technologii 1. Przeglądarka internetowa wysyłająca żądania XmlHttpRequests do... 2. po stronie serwera Node.js zakodowanej w języku JavaScript, komunikująca się z... 3. innymi usługami zewnętrznymi za pośrednictwem RESTful usługi w JSON, ostatecznie... 4. pisanie stanu aplikacji do bazy danych bez SQL Doszło do punktu, w którym mój stos nie ma absolutnie **żadnego wymuszania typu lub schematu, gdziekolwiek**. Teraz było to w porządku wcześniej, podczas korzystania z usług internetowych innych osób. Mogło być nawet dobrze, dopóki bazy danych SQL nie zostały porzucone (wraz z ich schematami DB). Ale teraz utknąłem w: ## Gdzie _deklaratywnie_ zdefiniować, jaka jest prawidłowa struktura danych domeny biznesowej? Chcę wymusić ważność danych przed publicznym udostępnieniem któregokolwiek z moich projektów - w końcu, co ma powstrzymać kogoś przed przesyłaniem nieprawidłowych danych do moich usług i używaniem ich jako tylko zhakowanego, bezpłatnego dostawcy baz danych? W pewnym momencie należy wymusić, że „ta usługa sieciowa zaakceptuje tylko kolekcję co najmniej jednego X. X musi zawierać A, B i opcjonalnie C”. Pierwszym rozwiązaniem, o którym pomyślałem, była walidacja wewnątrz mojego node.js, poprzez duży blok imperatywnego kodu/if-elses/etc. To było złe. Używam CouchDB i przez jakiś czas myślałem, że najlepiej będzie umieścić ten kod walidacji w procedurach obsługi `_update`. Przynajmniej przeprowadzamy walidację jako część trwałości, ale nadal jest to brzydka imperatywna blokada. Następnie przyjrzałem się językom schematów JSON. O ile widzę, nie ma standardu i nie byłem przekonany do wielu oferowanych rozwiązań. Mógłbym rzucić własne, ale wtedy rozszerzyłbym tylko ciało niestandardowych języków schematów JSON. XML? Mógłbym umieścić **X** z powrotem w AJAX i zlecić ich walidację schematu po stronie serwera. Jednak wydaje się, że nie jest to zgodne z trendami w tworzeniu oprogramowania. Ani też nie używałby składnicy danych XML zamiast warstwy trwałości JSON CouchDB/BSON MongoDB. Więc utknąłem. Pomysły? **TL;DR** Gdzie mogę deklaratywnie zdefiniować prawidłową strukturę danych domeny biznesowej, gdy nie używam statycznego języka zorientowanego obiektowo ani powiązanej ze schematem bazy danych SQL w moim stosie technologicznym? Czy jest możliwe, że musi istnieć jakieś statyczne typowanie (lub schemat bazy danych lub zweryfikowany XML) _gdzie_, aby stos technologii miał jakikolwiek sens? Jeśli tak, to gdzie?


title: Jaki jest wieloplatformowy sposób udostępniania tablicy [][] w usłudze sieciowej? Jakieś niuanse JSON, o których należy pamiętać?

text: Muszę udostępnić tablicę [][] wielu różnym klientom (iPhone, Android, PC, Unix itp.) i udostępnić go przez HTTP/s. To prowadzi mnie do JSON i sprawia, że zastanawiam się, jak inne maszyny *endian działają z JSON i czy będę musiał się martwić o to, jak tablica zostanie zrekonstruowana na innych platformach. Początkowo będzie to tablica ciągów UTF8, ale chcę obsługiwać inne typy, na przykład Array[0][] będzie obrazem, a Array[1][] będzie plikiem audio. ...itp. Jeśli JSON jest właściwym sposobem przesyłania danych Array[][] przez HTTP, o jakie „gotchas” powinienem się martwić?


title: Jak buforować dane, które rzadko się zmieniają?

text: W mojej aplikacji ASP.NET są pewne dane, które nie zmieniają się często, więc nie ma sensu odpytywać bazę danych, aby za każdym razem ją sprawdzać. W mojej obecnej sytuacji sprawdzam poświadczenia użytkownika przy każdym żądaniu, aby sprawdzić, czy mają dostęp do tego, co próbują zrobić (tj. wyświetlić konkretną stronę). Informacje o zabezpieczeniach są przechowywane w bazie danych i zauważam spadek wydajności przy każdym załadowaniu strony. Czas ładowania wynosi od 20ms do 200ms z powodu zapytań do bazy danych. Wydaje mi się, że powinienem buforować informacje związane z bezpieczeństwem, aby strony wyświetlały się szybciej (dane można odświeżyć po ponownym uruchomieniu aplikacji), ale nie wiem, jak się do tego zabrać. Szukałem metod buforowania, ale żadne rozwiązania, które widziałem, nie dotyczą tego, co próbuję zrobić. Jednym ze sposobów jest przechowywanie informacji o zabezpieczeniach jako tylko do odczytu w statycznej klasie lub trwałym repozytorium, które jest tworzone i ładowane podczas uruchamiania aplikacji. Innym sposobem jest użycie narzędzia Tracing and Caching Provider Wrappers dla Entity Framework, ale zgodnie z odpowiedzią na StackOVERflow zatytułowaną Jak zrobić pamięć podręczną Entity Framework niektórych obiektów, użytkownik Alex James mówi > czasami to podejście jest przesadą Czy są jakieś wady przechowywania danych w kilka zmiennych tylko do odczytu (problemy dotyczące pamięci?) i jakaś wyraźna zaleta korzystania z dostawcy pamięci podręcznej?


title: Czy byłoby etyczne tworzenie alternatywy open source dla oprogramowania, do którego stworzenia zostałeś zatrudniony?

text: Załóżmy, że zostałeś zatrudniony do tworzenia oprogramowania edukacyjnego, które będzie sprzedawane studentom określonej instytucji akademickiej. Jesteś jedynym programistą pracującym nad tym projektem i napisałeś cały kod. Alternatywa typu open source dla projektu może przynieść korzyści ubogim studentom z całego świata. Krótko mówiąc, wolna alternatywa przyczyniłaby się do większego dobra ludzkości. Czy byłoby „w porządku” stworzyć alternatywę typu open source dla oprogramowania, za którego rozwój otrzymujesz wynagrodzenie? PS Z oprogramowania będą korzystać wyłącznie studenci uczelni. Nie planuje się jego komercyjnej dystrybucji. Aplikacja nie korzysta z własności intelektualnej innych osób.


title: Wprowadzasz zmiany z rozwidlonego repozytorium bez żądania na GitHub?

text: Jestem nowy w społeczności zajmującej się kodowaniem społecznościowym i nie wiem, jak prawidłowo postępować w tej sytuacji: kilka tygodni temu utworzyłem repozytorium GitHub. Ktoś rozwidlił projekt i dokonał kilku drobnych zmian, które były w moich zadaniach. Jestem zachwycony, że ktoś rozwidlił mój projekt i poświęcił czas, aby go dodać. Chciałbym wprowadzić zmiany do własnego kodu, ale mam kilka obaw. 1) **Nie wiem, jak pobrać zmiany przez git z rozwidlonego repozytorium.** Rozumiem, że istnieje łatwy sposób na scalenie zmian za pomocą żądania ściągnięcia, ale wygląda na to, że forker ma wydać to żądanie? 2) **Czy można wprowadzać zmiany bez żądania ściągnięcia?** Dotyczy to pierwszego. Odłożyłem kod na kilka tygodni i wróciłem, aby przekonać się, że to, nad czym będę teraz pracował, zostało zrobione przez kogoś innego i nie chcę po prostu kopiować jego kodu bez przyznania mu w jakiś sposób uznania. Czy nie powinno być miejsca, w którym można by wprowadzić zmiany, nawet jeśli nie są one wyraźnie o to proszone? Jaka jest tutaj etykieta? Może się nad tym zastanawiam, ale z góry dziękuję za wkład. Jestem całkiem nowy w społeczności hakerów, ale chcę zrobić, co w mojej mocy, aby się przyczynić!


title: Czy potencjalny spadek wydajności z LINQ jest tego warty, aby poprawić czytelność?

text: Rozważamy użycie LINQ (to Objects) w naszych projektach (klasy komercyjnej), w których wydajność może być problemem. Słyszałem, że może to mieć wpływ na wydajność, ale kod jest o wiele bardziej czytelny i łatwiejszy w utrzymaniu. Czy ten kompromis naprawdę jest tego wart?


title: Programujesz własną dystrybucję Linuksa?

text: Tak więc przez kilka dni zastanawiałem się, czego potrzeba, aby stworzyć własną dystrybucję Linuksa. Od czego właściwie zacząć? Chciałbym mieć kilka bardzo podstawowych wskazówek na ten temat. Uważam się za porządnego programistę, głównie w C++ i Object C. A jakie są granice tworzenia dystrybucji?


title: Dlaczego duże firmy finansowe/ubezpieczeniowe powinny używać git i/lub github?

text: Pracuję dla dużego przedsiębiorstwa (30 tys. pracowników) w branży finansowej/ubezpieczeniowej. Chociaż „IT” nie jest naszym głównym celem, bądźmy szczerzy, są to branże oparte na informacjach, a firmy z większą przewagą technologiczną wydają się szybciej rozwijać. W mojej firmie jest wiele zespołów programistycznych. Są na całej mapie z kontrolą wersji, nie mówiąc już o używanych językach/frameworkach. Niektórzy nie używają żadnego (wiem), niektórzy używają PVCS, niektórzy używają VSS, a najbardziej oświeceni używają SVN. Chcę wprowadzić git do mojego przedsiębiorstwa. Dokładniej, chcę wprowadzić GitHub (prywatne repozytoria). Znam odpowiednich ludzi, z którymi można o tym porozmawiać, ale bądźmy szczerzy, takie drastyczne posunięcia zwykle są odrzucane w dużych przedsiębiorstwach z powodu niejasnych obaw o bezpieczeństwo lub faktu, że żaden z naszych konkurentów go nie używa (i mogę jako referencje cytuj tylko jQuery, Ruby on Rails, Facebook itp.). Więc moje pytanie jest takie. Jakie są najbardziej przekonujące powody, dla których duże przedsiębiorstwo powinno powoli i celowo przechodzić z PVCS/VSS/SVN na hostowane rozwiązanie git, takie jak GitHub (prywatne repozytorium). Oczywiście część mojego planu obejmuje POC dla nieistotnego projektu rozwojowego.


title: Czy F# oferuje coś szczególnie przydatnego do tworzenia stron internetowych opartych na bazach danych?

text: Moja organizacja w końcu w tym roku przeszła na MS Visual Studio 2010. Jedną z dużych nowych funkcji oferowanych przez program Visual Studio 2010 jest język programowania F#. Rozumiem, że F# oferuje paradygmat programowania funkcjonalnego, podobny do Lisp. Jednak w przeciwieństwie do Lisp, F# jest kompilowany do kodu zarządzanego dla platformy .net. Obecnie zajmuję się tworzeniem aplikacji internetowych opartych na bazach danych. Obecnie pracuję z aplikacją n-warstwową z kodem SQL na zapleczu i aplikacją sieci web C#.net AJAX na interfejsie. Chciałbym wiedzieć, czy F# oferuje coś, co byłoby szczególnie przydatne do tego typu programowania.


title: Czy dyrektywa angularjs powinna bezpośrednio wchodzić w interakcję z usługami, czy jest uważana za antywzorzec?

text: Który jest uważany za lepszy: * posiadanie dyrektywy, która bezpośrednio współdziała z usługami, czy * posiadanie dyrektywy, która ujawnia pewne zaczepy, z którymi kontroler może powiązać zachowanie (zaangażowanie usług)?


title: Czy mimo całego bałaganu w JCP nadal używałbyś Javy w swoim następnym projekcie?

text: Wygląda na to, że wokół obecnego JCP jest cały bałagan. Sporo szanowanych facetów, takich jak Doug Lea, Tim Peierls, odszedł z JCP. Odniesienie: Czy JCP nie żyje? oraz Końcowe wyniki głosowania JSR Review Ballot dla JSR #336 To postawiło Javę w niekorzystnej przyszłości. Czy jako programista Java nadal będziesz rozważał użycie Javy w swoim następnym projekcie?


title: Wcięcia etykiet w C

text: Zauważyłem, że w Vimie automatycznie wcina się etykiety w dość nieintuicyjny sposób (IMHO). int main(void) { idź do końca; end: return 0 } Czy istnieją wytyczne dotyczące stylu dla etykiet? Dla osób o słabych nerwach, goto, których używam, służą do obsługi błędów w kontrolowany i uporządkowany sposób.


title: Projekty open source i MDD?

text: Wydaje się, że programowanie oparte na modelach wzbudza spore zainteresowanie w pewnych kręgach inżynierii oprogramowania, ale nigdy nie spotkałem się z projektami MDD o otwartym kodzie źródłowym „na wolności”. Czy są jakieś projekty open source wykorzystujące programowanie oparte na modelach? (Nie chodzi mi tylko o to, że istnieje jakaś dokumentacja UML, ale o to, że głównymi artefaktami, którymi manipulują programiści, są modele, a nie kod).


title: Podejście do architektury rozwoju oprogramowania

text: Planuję ujednolicić nasz sposób tworzenia projektów dla naszych nowych projektów. Obecnie używamy architektury 3warstwowej, gdzie mamy nasz projekt ClassLibrary, który zawiera naszą warstwę dostępu do danych i warstwę biznesową Coś takiego: Rozwiązanie ClassLibrary >Projekt ClassLibrary : >DAL(folder) > Klasy DAL >BAL(folder) > Klasy BAL I ta klasa Biblioteka dll była odniesieniem w naszej prezentacji Layer Project, która jest aplikacją (web/desktop) Coś w stylu: Rozwiązanie WebUniversitySystem>Libraries(folder)>ClassLibrary.dll>WebUniversitySystem(Project):>Reference ClassLibrary.dll>Pages itp... Teraz Planuję zrobić coś takiego: Rozwiązanie WebUniversitySystem>DataAccess(Project)>BusinesLayer(Project)>Reference DAL>WebUniversitySystem(Project):>Reference BAL>Pages itp. Czy to jest O K? Czy istnieje dobre podejście, które możemy zastosować?


title: Jak obsłużyć „zależność cykliczną” we wstrzykiwaniu zależności?

text: Tytuł mówi „Circular Dependency”, ale to nie jest właściwe sformułowanie, ponieważ wydaje mi się, że konstrukcja jest solidna. Rozważmy jednak następujący scenariusz, gdzie niebieskie części są od partnera zewnętrznego, a pomarańczowe to moja własna implementacja. Załóżmy również, że istnieje więcej niż jeden `ConcreteMain`, ale chcę użyć konkretnego. (W rzeczywistości każda klasa ma trochę więcej zależności, ale starałem się to uprościć tutaj) ![Scenariusz](http://i.stack.imgur.com/GplrD.png) Chciałbym to wszystko zademonstrować za pomocą Depency Injection (Unity), ale oczywiście otrzymuję `StackOverflowException` w poniższym kodzie, ponieważ Runner próbuje utworzyć instancję ConcreteMain, a ConcreteMain potrzebuje Runnera. IUnityContainer ioc = nowy UnityContainer(); ioc.RegisterType<IMain, ConcreteMain>() .RegisterType<IMainCallback, Runner>(); var runner = ioc.Rozwiąż<Runner>(); Jak mogę tego uniknąć? Czy istnieje sposób na uporządkowanie tego, abym mógł go używać z DI? Scenariusz, który teraz robię, polega na ręcznym skonfigurowaniu wszystkiego, ale to stawia twardą zależność od `ConcreteMain` w klasie, która ją tworzy. Tego właśnie staram się unikać (z rejestracjami Unity w konfiguracji). Cały kod źródłowy poniżej (bardzo uproszczony przykład!); public class Program { public static void Main(string[] args) { IUnityContainer ioc = new UnityContainer(); ioc.RegisterType<IMain, ConcreteMain>() .RegisterType<IMainCallback, Runner>(); var runner = ioc.Rozwiąż<Runner>(); Console.WriteLine("wywoływanie runnera..."); biegacz.ZróbCośAwesome(); Konsola.CzytajLinię(); } } public class Runner : IMainCallback { private readonly IMain mainServer; public Runner(IMain mainServer) { this.mainServer = mainServer; } public void DoSomethingAwesome() { Console.WriteLine("próbuję zrobić coś niesamowitego"); głównySerwer.ZrobićCoś(); } public void SomethingIsDone(object coś) { Console.WriteLine("hej patrz, coś jest już zrobione."); } } interfejs publiczny IMain { void DoCoś(); } interfejs publiczny IMainCallback { void SomethingIsDone(object coś); } public abstract class AbstractMain : IMain { chronione tylko do odczytu wywołanie zwrotne IMainCallback; protected AbstractMain(IMainCallback callback) { this.callback = callback; } public abstract void DoCos(); } public class ConcreteMain : AbstractMain { public ConcreteMain(IMainCallback callback) : base(callback){} public override void DoSomething() { Console.WriteLine("zaczyna robic cos..."); var task = Task.Factory.StartNew(() =>{ Thread.Sleep(5000);/*bardzo długie zadanie*/ }); task.ContinueWith(t => callback.SomethingIsDone(true)); } }


title: Jakie typowe podejścia istnieją do wersjonowania bazy danych w przypadku rozwoju opartego na funkcjach?

text: Nie jest jasne, w jaki sposób zapewniana jest spójność danych dla różnych oddziałów. Posiadamy obszerną bazę wiedzy, która jest uzupełniana przez ekspertów i dostarczana jako aktualizacje naszym klientom. Dane te są również wykorzystywane do testowania produktu. Ale jeśli mamy sporo gałęzi funkcji (rozwijanych równolegle) i każda funkcja wymaga własnego, nieco innego schematu bazy danych, czy nie będzie to piekło? Zdecydowanie musi istnieć jakiś sposób zapełniania wszystkich baz danych z jednego scentralizowanego sklepu. I tu pojawia się pytanie? Jakie są te metody? Teraz jedynym rozwiązaniem, które widzę, jest stworzenie mechanizmu mapowania i zapisanie mapowań w odpowiedniej bazie danych, ale uważam, że istnieją bardziej eleganckie podejścia. **Aktualizacja:** aby wyjaśnić problem. Mamy jeden (nazwijmy go master db). I N baz danych z nieco „węższymi” schematami w porównaniu do schematu mastera. Tj. master ma najbogatszy schemat: inne bazy danych mają mniej tabel/kolumn.


title: Czy CK Metrics nadal są uważane za przydatne? Czy istnieje narzędzie typu open source, które może pomóc?

text: Chidamber i Kemerer zaproponowali kilka metryk kodu obiektowego. Wśród nich głębokość drzewa dziedziczenia, ważona liczba metod, liczba funkcji składowych, liczba dzieci i sprzężenie między obiektami. Korzystając z bazy kodu, próbowali skorelować te metryki z gęstością defektów i pracami konserwacyjnymi za pomocą analizy kowariantnej. Czy te metryki są przydatne w projektach? Być może mogą pokierować refaktoryzacją. Na przykład ważona liczba metod może pokazać, które klasy Boga należy podzielić na bardziej spójne klasy, które odnoszą się do jednego problemu. Czy istnieje podejście zastąpione lepszą metodą i czy istnieje narzędzie, które może zidentyfikować kod problemu, szczególnie w przypadku średnio dużego projektu przekazywanego nowemu programiście lub zespołowi?


title: Bułka tarta w nowoczesnej aplikacji internetowej, ma sens?

text: Obecnie zaczynam tworzenie nowej aplikacji internetowej. Cała aplikacja internetowa będzie dostępna w zakładkach, a wszystkie strony będą dostępne za pośrednictwem żądań _GET_ i parametrów url. Powiedziawszy to, załóżmy, że w mojej aplikacji mam trzy encje: „Klient”, „Zespół” i „Miasto”. Każdy „Klient” i „Zespół” należy do miasta i mam stronę „Szczegóły miasta”, która wyświetla szczegóły dla konkretnego miasta. Możliwe są więc kolejne przypadki nawigacji: _Klienci -> Dane klienta (id=2) -> Dane miasta (id=3)_ _Drużyny piłkarskie -> Dane drużyny (id=5) -> Dane miasta (id=3)_ _Miasta - > Szczegóły miasta (id=3)_ Istnieją trzy możliwe sposoby przejścia do widoku szczegółów miasta. Moje pytanie brzmi, czy ma sens zaimplementować okruszek chleba, aby pokazać taką historię, mając ją dostępną w samej przeglądarce? Czy bardziej stosowne byłoby pokazanie okruszka z ostatnim przypadkiem, bez względu na to, skąd pochodzimy (hierarchiczny okruszek)? Oto, na co zwraca uwagę Jakob Nielsen: > Oferowanie użytkownikom historii w stylu Jaś i Małgosia jest w zasadzie bezużyteczne, > ponieważ po prostu powiela funkcjonalność oferowaną przez przycisk Wstecz, który > jest drugą najczęściej używaną funkcją w sieci. > > Ścieżka historii może być myląca: użytkownicy często wędrują w kółko lub przechodzą > do niewłaściwych sekcji witryny. Posiadanie każdego punktu w niejasnym postępie u góry bieżącej strony nie jest zbyt pomocne. > > Wreszcie, ścieżka historii jest bezużyteczna dla użytkowników, którzy trafiają bezpośrednio na stronę > głęboko w witrynie. Ponadto, nawet jeśli ślad historii wydaje się najbardziej naturalnym sposobem jego wdrożenia, wymaga dodatkowego wysiłku, aby cały ślad był HTTP jako środek bezstanowy.


title: Czy dobrym pomysłem jest stworzenie współdzielonej biblioteki UI, która byłaby natywnie renderowana na różnych platformach?

text: Projektuję aplikację o następującym przepływie: 1. Użytkownik projektuje formularz za pomocą aplikacji webowej ( **J2EE** backend application) 2. Formularz wysyłany jest na urządzenie mobilne ( **Android** ) 3. Urządzenie mobilne Użytkownik wypełnia z formularza zaprojektowanego w 1. 4. Wyniki są synchronizowane z backendem. Jednym z moich pomysłów jest stworzenie wspólnej biblioteki java UI do tworzenia formularzy, których potrzebuję. Ta biblioteka miałaby również natywne renderery dla różnych platform (w pierwszej kolejności zostałyby zaimplementowane Web i Android). Chodzi o to, aby mieć natywne doświadczenie po stronie internetowej i Androida. Czy istnieją rozwiązania, które spełnią moje wymagania? Czy to dobre podejście do ich osiągnięcia?


title: Czy instalacja aplikacji Metro jest ograniczona tylko do Sklepu Windows?

text: Odkryłem, że Windows 8 umożliwia pakowanie i wdrażanie aplikacji Metro i można go zainstalować, klikając plik ".bat". W jaki sposób technicznie zostanie zapewnione, że aplikacje będą mogły być instalowane wyłącznie za pośrednictwem Sklepu Windows? Czy programiści nie mogą po prostu hostować pakietu w innym miejscu niż użytkownicy mogą go zainstalować?


title: książki/artykuły o zarządzaniu projektami/przewodnictwo innych programistów

text: Wkrótce zostanę przydzielonych kilku innym programistom do prowadzenia przez proces rozwoju i będę pełnił rolę _git_ ("Menedżer ds. integracji") i generalnie zostanę kierownikiem projektu. Prawdę mówiąc, nigdy czegoś takiego nie robiłem. Rozumiem, że takie doświadczenie przychodzi poprzez praktykę, ale nie zaszkodzi czytać o doświadczeniach innych. Może znasz jakąś książkę lub zestaw artykułów lub coś w tym rodzaju o zarządzaniu projektami? Interesuje mnie nie tylko to, jak rozdzielać zadania i kontrolować ich wykonanie, ale także część psychologiczną. Powiedz, jak inspirować programistów, utrzymywać dobrą atmosferę w grupie i „nagradzać” / „karać” w razie potrzeby i jak robić to poprawnie; jak wskazać, że jakieś rozwiązanie nie jest wystarczająco dobre bez obrażania członka zespołu itp. itp.