title: Czy uważasz, że języki z wymaganiami dotyczącymi wcięć są uciążliwe?

text: Myśli o nich? Python jest jednym z przykładów i nie, to nie jest atak przeciwko Pythonowi. Lubię ten język. W jakich językach obowiązuje wymóg wcięć?


title: Czy metadane NuGet to dobre miejsce do wyłącznego ustawiania licencji na kod źródłowy?

text: Znalazłem bibliotekę (którą chciałbym rozwidlić, jeśli to robi jakąkolwiek różnicę). W przypadku NuGet plik projektu informuje, że jest rozpowszechniany na licencji MIT (z linkiem do licencji). Jednak w repozytorium projektu GitHub nie widzę żadnych wzmianek o licencji MIT (ani żadnej innej licencji) ani w plikach kodu źródłowego, ani w readme. Jestem trochę zaniepokojony tym, ponieważ NuGet jest repozytorium plików binarnych i interesuje mnie źródło. **Czy mam założyć, że kod źródłowy jest objęty licencją MIT, sądząc tylko po metadanych NuGet pakietu?** Czy to oznacza, że uprawnienia dotyczą tylko pliku binarnego, a nie źródła?


title: Czy trzymasz swoje pomysły w tajemnicy? i dlaczego?

text: Uważam, że każdy programista ma kilka pomysłów, które uważa za innowacyjne lub przynajmniej wartościowe. Może to być pomysł na nowy produkt, który uczyni ten świat lepszym, nowe podejście do rozwoju itp. Ale świetny pomysł musi zostać wdrożony i promowany/reklamowany. Wymaga to dużo pracy (proof of concept, prototypy, zapowiedzi technologii itp.) i dużo pieniędzy (odpowiednia reklama, marketing itp.). Miesiące później pomysł tkwi w naszych głowach, ale nic więcej nie robimy, bo to trudne, długie i kosztowne, a czasem wręcz niemożliwe dla jednego dewelopera. Z drugiej strony bolesne byłoby dzielenie się naszymi pomysłami i patrzenie na firmę średniej wielkości, która ma wystarczające zasoby, aby zrobić z tego coś pożytecznego i mieć sukces i pieniądze. Więc co robisz ze swoimi pomysłami, których z trudem możesz wdrożyć lub opatentować? Czy swobodnie rozmawiasz o nich na forach dyskusyjnych i z innymi programistami? Czy trzymasz je jak cenną rzecz, nigdy nikomu o nich nie mówiąc? Jeśli zachowujesz swoje pomysły, dlaczego to robisz? Czy tylko dlatego, że masz nadzieję, że kiedyś uda Ci się je zrealizować i odniesiesz ogromny sukces, a z doświadczenia doskonale wiesz, że to utopia?


title: Jak organizować projekty w Redmine?

text: Wczoraj wdrożyłem instalację Redmine, a dziś staram się wypełnić ją odpowiednimi danymi. Jedną z kwestii, na którą natknąłem się, jest sama organizacja projektów. Podczas gdy przyjrzałem się, jak sam Redmine wykorzystuje części oprogramowania, niestety mają skonfigurowany tylko jeden projekt i nie widziałem żadnych innych przykładów. Wiem, że jest to mocno powiązane z twoim przepływem pracy, ale zobaczenie / przeczytanie kilku przykładów poprowadzi mnie na właściwą ścieżkę. Jesteśmy dwoma facetami (projektantem i programistą, oboje robimy również inne rzeczy, takie jak marketing lub papierkowa robota) i mamy ponad 20 projektów, które chcę zmapować do Redmine. Mniej niż kilka projektów jest aktywnych w tym samym czasie i nie są one specjalnie powiązane. Chcemy jednak zobaczyć, ile czasu spędziliśmy nad wszystkimi projektami, a także zobaczyć ogólną sytuację projektową, tj. czy powinniśmy rozpocząć kolejny projekt, czy dodać ten lub tamten do obecnego, czy nie będzie to wykonalne dla tak małego zespołu? W tej chwili mam tendencję do posiadania jednej z tych konfiguracji: 1. Projekt firmy i wszystkie nasze realne projekty zorganizowane jako podprojekty. 2. Oddziel projekty Redmine dla każdego z naszych projektów i ewentualnie podprojekty dla szerszej funkcjonalności w razie potrzeby (obsługa synchronizacji dla aplikacji xyz). Problemy, które widzę przy pierwszym podejściu, polegają na tym, że projekty niekoniecznie są ze sobą powiązane. Mogą mieć wspólne ramy, które są projektem dla siebie, ale poza tym są to naprawdę odrębne rzeczy. Wszystkie są projektami oprogramowania, więc mają wspólne metafory, takie jak Trackery. Nie widziałem sposobu na oddzielenie wersji. Mapa drogowa byłaby przeglądem obecnej sytuacji w pracy, ale może być dość zagmatwana. Najbardziej obawiam się, że będziemy mieć niekończące się listy rozwijane z niepowiązanymi rzeczami, takimi jak wersje z innych projektów. Drugie podejście wydaje się rozsądniejsze, ale moją największą obawą jest to, że nie będziemy mieli ogólnego poglądu. Musielibyśmy spojrzeć na wszystkie inne mapy drogowe, aby zaplanować obecny, nie zobaczylibyśmy tylko jednego kalendarza z rzeczami do zrobienia we wszystkich projektach. Myślę, że sedno problemu polega na tym, że mamy bardzo ograniczone zasoby ludzkie, które muszą być dzielone w wielu projektach, ale nie mogą się pokrywać. Jakieś pomysły, jak można to zmapować do Redmine?


title: Agresywna automatyczna aktualizacja?

text: Jak myślicie, jaka jest najlepsza praktyka dotycząca automatycznych aktualizacji? Na przykład Google Chrome wydaje się aktualizować automatycznie, gdy tylko nadarzy się okazja, bez pytania i nie mam nic przeciwko. Myślę, że większość „normalnych” użytkowników korzysta z aktualizacji będących przejrzystym procesem. Z drugiej strony, niektórzy bardziej techniczni użytkownicy mogą być zdenerwowani, jeśli zaktualizujesz ich aplikację bez pozwolenia, jak widzę, istnieją 3 opcje: 1) Podczas instalacji pole wyboru z napisem „zezwalaj na automatyczne aktualizacje” 2) Po prostu wybierz gdzieś preferencję, która pozwala aby "wyłączyć automatyczne aktualizacje", aby trzeba było "ręcznie sprawdzać aktualizacje", skłaniam się ku 2), ponieważ 1) wydaje się, że może to zrazić nietechnicznych użytkowników i wolę unikać zapytań instalacyjnych, jeśli to możliwe. Zastanawiam się też nad ułatwieniem obniżenia wersji, jeśli uaktualnienie (niebo uchowaj) powoduje kłopoty, co myślisz? Kolejne pytanie, nawet jeśli automatyczne aktualizacje są automatyczne, być może powinny zostać ogłoszone. Jeśli są jakieś nowe funkcje, na przykład inaczej możesz nie zdawać sobie sprawy i ich używać Jedną rzeczą, która mnie przeraża, są konsekwencje dla bezpieczeństwa, ktoś mógłby teoretycznie zhakować mój serwer i rozesłać oprogramowanie szpiegujące/zombieware do wszystkich moich klientów. Wygląda na to, że używanie podpisów cyfrowych w celu zapobiegania atakom typu man-in-the-middle to najmniej, co można zrobić, w przeciwnym razie możesz zostać podłączony do sieci, która fałszuje adres serwera aktualizacji.


title: Czy umieszczanie dwóch typów widoków w tej samej klasie jest złą praktyką?

text: W mojej aplikacji używam widżetu z pokrętłem ładowania, aby wskazać, że oczekuje na żądanie sieciowe. W przypadku niepowodzenia pojawi się inny widok, który zawiera komunikat o niepowodzeniu i przycisk „Załaduj ponownie”. Moje pytanie brzmi, czy skoro oba te widoki/widżety ZAWSZE będą używane razem (albo jeden, albo drugi zostanie pokazany - albo żaden), czy powinienem połączyć je w jeden widżet? Czy to byłaby zła czy dobra praktyka? W ten sposób nie musiałbym przygotowywać ich obu za każdym razem, gdy chcę użyć jednego z nich. Główną wadą, jaką widzę, jest zniszczenie modułowości.


title: Dlaczego te struktury frameworków iOS i OSX zawierają wersję o nazwie „A”?

text: Przyglądałem się strategiom rozwoju frameworków i znalazłem kilka dobrych zasobów. Jednak w strukturze frameworków w iOS i OSX chcę wiedzieć, dlaczego w folderze wersje znajduje się folder o nazwie 'A'? MyFramework.framework/ MyFramework -> Versions/Current/MyFramework Resources -> Versions/Current/Resources Versions/ A/ MyFramework Resources/ English.lproj/ InfoPlist.strings Info.plist Current -> A Zgodnie z dokumentacją Apple wydaje się, że wiele wersje mogą być tworzone, jednak czy istnieje logiczny lub ewentualnie historyczny powód, dla którego używa się znaku „A” zamiast czegoś takiego jak data lub numer wersji? Źródła: * Programista Apple: Anatomy of Framework Bundles * Samouczek dotyczący kakao: Tworzenie własnych ram


title: Pytanie projektowe OOP

text: Pracuję nad aplikacją napisaną w PHP z wykorzystaniem zasad OOP. Klasy w mojej aplikacji zwykle reprezentują tabelę w bazie danych; na przykład „uczeń”, „nauczyciel”, „klasa”, „harmonogram” itp. Ponieważ aplikacja staje się coraz bardziej złożona, zaczynam wpadać w sytuacje, w których wydaje mi się, że napisanie nowego zapytania byłoby bardziej wydajne / szybsze niż ponowne użycie obiektów + metod niższego poziomu niż już napisałem. Jaka jest standardowa filozofia, jeśli chodzi o to? Czy jest to rozpatrywane indywidualnie? Czy **zawsze** ponownie wykorzystujesz swój kod, aby zapobiec powtarzaniu się, nawet kosztem wydajności uzyskanej z jednego zapytania do bazy danych?


title: Zezwalanie enum na wyrażenie prawidłowej kombinacji wartości

text: Załóżmy, że w środowisku produkcyjnym istnieją pewne materiały magazynowe dostępne do użycia w produkcie. Na przykład, istnieje tylko kilka różnych rozmiarów rur miedzianych, z których każdy ma określoną kombinację grubości i średnicy. Czy ze względu na czysty i minimalny kod oraz możliwość kontrolowania dostępnych opcji „enum” jest dobrym rozwiązaniem dla tej kombinacji danych? Myślałem, że mógłbym zrobić „wyliczenie” z członkiem dla każdej ważnej pozycji magazynowej (reprezentującej metal, pomiary fizyczne itp.), a następnie dostarczyć metody rozszerzenia w „wyliczeniu”, aby zwrócić wspomniane szczegóły. Zapasy dostępne do użytku mogą się zmieniać z czasem, więc być może „enum” nie jest najlepszą odpowiedzią. Czy istnieje lepszy sposób wyrażenia prawidłowej kombinacji powiązanych wartości? Używam C#.


title: terminologia: Wyciek pamięci

text: Kiedy słyszę termin _wyciek pamięci_ mam na myśli błąd w programie, który nie powoduje _żadnych_ problemów _z wyjątkiem_ tego, że nie zwalnia zasobów pamięci, a jeśli ciągle to robi, może pochłaniać dużo pamięci, obniżając wydajność systemu i w najgorszym przypadku powoduje awarię programu (lub innego programu, jeśli system operacyjny zdecyduje się go zabić). Ale teraz, w tej sekcji komentarzy do tego pytania, głosy up skłoniły mnie do zastanowienia się, czy to jest całe znaczenie tego terminu. Wcześniej zawsze widziałem, że używam go w tym znaczeniu. http://stackoverflow.com/questions/7451437/is-this-a-mem-leak-in-main Czy nazwałbyś coś prostym wyciekiem pamięci, który powoduje awarię programu z powodu innego efektu ubocznego lub powoduje zablokować, nie zwalniając zamka? **Aktualizacja** \- Uwaga: niestety jakiś administrator usunął tam sekcję komentarzy, więc nie mogę już odnosić się do tej dyskusji :/ Zasadniczo powiedziałem, że wyciek pamięci jest _nieszkodliwy_, z wyjątkiem tego, że pochłania pamięć (i w konsekwencji na dłuższą metę w ten szacunek może być szkodliwy, powodując awarię aplikacji/systemu). Powiedzieli, że to nieprawda, z C++ RAII może to spowodować poważne problemy. - Tak, jeśli nie usuniesz obiektu z jakimś ważnym kodem w destruktorze, który może powodować problemy, ale w moim słowniku jest to poważny błąd, a nie wyciek pamięci.


title: Zaczynamy od Web Project teraz — czy wybieramy HTML5/JS zamiast Silverlight?

text: niedługo rozpoczniemy projekt Web Development (planowanie rozpoczyna się na początku 2011 roku). Czy wybieramy HTML5/JS zamiast Silverlight? Czy są jakieś aplikacje, które teraz działają w HTML5? Próbki? Prosta wyszukiwarka Google doprowadziła mnie tutaj. Wyglądają świetnie (zwłaszcza te z Gwiezdnych Wojen!), ale nie są to tak zwane odpowiednie aplikacje.


title: Jak reprezentować trudne do obliczenia „właściwości” „obiektów” w kodzie funkcjonalnym?

text: W moim programie Clojure mam „klasę” polilinii, która jest reprezentowana przez wektor punktów. (To naprawdę nie jest klasa ani nic.) Długość polilinii (w sensie geometrycznym) jest często potrzebna do obliczeń. Obliczanie za każdym razem, gdy jest to potrzebne, jest również dość powolne. W kodzie OO miałbym po prostu długość jako właściwość klasy Polyline. Ale w kodzie funkcjonalnym jestem zagubiony. Czy powielić wzorzec OO i zrobić z polilinii mapę `{:points points, :length (length points)}`? Czy mogę utworzyć funkcję `długości` i `zapamiętać` ją? Czy po prostu polegam na kompilatorze, aby buforować wyniki?


title: Jakie są najlepsze praktyki zarządzania ciągami wersji w aplikacjach Google App Engine?

text: W Google App Engine możesz przesłać do projektu appspot do 10 różnych wersji. Na przykład, jeśli mam projekt o nazwie `przykład`, adres URL będzie wyglądał następująco: http://example.appspot.com Każda wersja, którą przesyłam, otrzymuje ciąg wersji. Możliwe przykłady to: * dev * 1 * 1_2 * staging * anystring Aby uzyskać dostęp do określonej wersji, poprzedziłbym domenę ciągiem wersji, na przykład: http://1.example.appspot.com Oczywiście, jeśli ta wersja zostanie ustawiona jako wersja „domyślna”, wtedy mogę uzyskać do niej dostęp bez poprzedzania ciągiem wersji, tak jak w oryginalnym adresie URL na początku, http://example.appspot.com. Jakie są aktualne sprawdzone metody zarządzania ciągami wersji w aplikacjach Google App Engine? Ponadto, gdy przekroczę maksymalnie 10 wersji i muszę zacząć je usuwać, jaka jest sugerowana praktyka?


title: Czy ktoś korzystał z programu .NET z SetFocus?

text: Na co dzień jestem programistą PowerBuilder. Nocą marzę o byciu programistą .NET. Jasne, mogę uczyć się głównie wszystkiego, czego potrzebuję, ale uwielbiam też uczyć się w klasie i „zarabiać” na edukację. Rozważam "uczestnictwo" w kursie SetFocus dla rozwoju .NET. Moje wahania? To drogie. Ktokolwiek? Zapraszam do powiedzenia mi, że to szalony pomysł, niezależnie od pieniędzy. Interesują mnie Twoje opinie.


title: Porady, jak zostać lepszym programistą

text: Jestem kierownikiem zespołu zajmującym się programistą z tytułem licencjata informatyki. Ma kilkuletnie doświadczenie i nadal jest małpą kodu. Obserwując go od dłuższego czasu, bardzo wolno programuje nawet pytania w stylu fizzbuzz. W przypadku innych rzeczy stara się zadowolić jedynie majstrowaniem przy kodzie lub proszeniem o pomoc na forach programistycznych. Jeśli chodzi o skrypty, które dostaje, ledwo sobie z tym radzi, ale dla naszej podstawowej pracy systemów wbudowanych przy użyciu naszych zastrzeżonych łańcuchów narzędzi, fora internetowe nie są zbyt pomocne. W rezultacie jest albo bardzo spóźniony, albo niekompletny, przez co jestem zmuszona powierzyć jego pracę innym. W konfrontacji potwierdza to wszystko, ale nie wie, jakie praktyczne kroki musi podjąć, aby poprawić. Przez długi czas utknął w problemach, nie mogąc debugować. Jak rozwinąć swoje umiejętności na wyższy poziom, sprawić, by rozwiązywał problemy, rozwijać umiejętności architektoniczne i rozumieć duże systemy, umiejętności debugowania i planować swoje zadania? We wszystkich swoich corocznych przeglądach wyników nigdy nie oceniał wysoko. Jako kierownik zespołu muszę opracować plan działania w porozumieniu z nim. Poproszenie go o odejście jest zawsze ostatnią opcją, ale chciałbym tego uniknąć.


title: Czy C++ to naprawdę zły język dla początkujących?

text: Uczę się teraz C++ i jest to pierwszy język, którego się uczę. Ciągle widzę na stackexchange i innych forach (Reddit itp.), że powinienem porzucić C++ i nauczyć się języka wyższego poziomu, takiego jak Python lub Java. Jedyne argumenty, jakie widzę, to to, że „C++ jest trudniejszy do nauczenia i jest bardziej niskopoziomowy niż inne”. które tak naprawdę nie dają powodu, aby NIE uczyć się tego. Chcę wiedzieć, czy są jakieś rzeczywiste powody, by porzucić C++ i zająć się innym, „łatwiejszym” językiem. Albo jeśli powinienem się na tym koncentrować i po prostu uczyć się innych później (co planuję zrobić).


title: Jak podchwyciłeś sztukę rozwiązywania prawdziwych problemów życiowych? Czy możesz skrócić proces?

text: Koduję z przerwami w C i do pewnego stopnia w C++ od czasów studiów (2003), ale nigdy nie miałem okazji pracować z twardym rdzeniem programistycznym, który mógłby mnie lepiej nauczyć „kodowania na poziomie przemysłowym”. i co jest naprawdę potrzebne do rozwiązywania rzeczywistych problemów życiowych. Wygląda na to, że przez te wszystkie lata kodowałem naiwne kody, takie jak listy połączone, drzewa binarne oraz algorytmy Dijkstry i Kruskala. Dodatkowo czuję, że moje akademickie doświadczenie właśnie nauczyło mnie języka, a nie rozwiązywania rzeczywistych problemów życiowych. Więc moje pytanie brzmi: * Więc jak podchwyciłeś sztukę rozwiązywania prawdziwych problemów życiowych? * Czy jest jakiś sposób na skrócenie procesu? * Czy to tylko moja edukacja, czy w ogóle wszyscy kodujący edukację byli do bani? * Jak często musisz uczyć się „nowych rzeczy”, aby lepiej rozwiązać problem. Na przykład, chociaż używałem delegatów i zdarzeń do prostego programowania systemu Windows, ale mój obecny problem będzie wymagał znacznie głębszej wiedzy na ten temat, a ponadto zapomniałem o większości z nich. Więc jest dla mnie jak nowy. Będę musiał nauczyć się programowania wątkowego i programowania wielordzeniowego. Więc sprawia to wrażenie – „do diabła, czego naprawdę się nauczyłem przez te wszystkie lata?”


title: Czy umieszczanie w modelu getrów takich jak „FullName” lub „FormattedPhoneNumber” to „zapach wzorca”?

text: Pracuję nad aplikacją ASP.NET MVC i mam zwyczaj umieszczania w moich klasach modelu/encji czegoś, co wydaje się pomocnymi i wygodnymi metodami pobierania. Na przykład: public class Member { public int Id { get; ustawić; } ciąg publiczny Imię { get; ustawić; } ciąg publiczny Nazwisko { get; ustawić; } public string Numer telefonu { get; ustawić; } public string FullName { get { return FirstName + " " + LastName; } } public string FormattedPhoneNumber { get { return "(" + PhoneNumber.Substring(0, 3) + ") " + PhoneNumber.Substring(3, 3) + "-" + PhoneNumber.Substring(6); } } } Zastanawiam się, czy ludzie myślą o getterach `FullName` i `FormattedPhoneNumber`. Ułatwiają tworzenie standardowych formatów danych w całej aplikacji i wydają się oszczędzać wiele powtarzającego się kodu, ale zdecydowanie można argumentować, że format danych jest czymś, co powinno być obsługiwane podczas mapowania z modelu na model widoku. W rzeczywistości początkowo stosowałem te formaty danych w mojej warstwie usług, w której robię mapowanie, ale ciągłe pisanie programów formatujących, a następnie stosowanie ich w wielu różnych miejscach stawało się obciążeniem. Np. używam „Pełnej nazwy” w większości widoków, a konieczność wpisywania czegoś takiego jak `model.FullName = MappingUtilities.GetFullName(entity.FirstName, entity.LastName);` w każdym miejscu wydawała się o wiele mniej elegancka niż samo wpisanie ` model.FullName = entity.FullName` (lub, jeśli używasz czegoś takiego jak AutoMapper, potencjalnie nie wpisując niczego). Więc gdzie narysujesz granicę, jeśli chodzi o formatowanie danych. Czy formatowanie danych w modelu jest „w porządku”, czy jest to „zapach wzorca”? Uwaga: zdecydowanie nie mam żadnego html w moim modelu. Używam do tego pomocników html. Mówię ściśle o formatowaniu lub łączeniu danych (a zwłaszcza danych, które są często używane).


title: Czy kiepską praktyką jest nazwanie właściwości/członka tak samo jak deklarujący typ w C#?

text: Na przykład klasa taka jak: class Dog { } //nieważne, że nic w niej nie ma... a następnie właściwość taka jak: Dog Dog { get; ustawić; } Powiedziano mi, że jeśli nie mogę wymyślić bardziej pomysłowej nazwy, to muszę użyć: Dog DogObject { get; ustawić; } Jakieś przemyślenia, jak je lepiej nazwać?


title: Jak zainicjować projekt oprogramowania społecznościowego FOSS poza 1 psa jedzącego karmę dla psów?

text: Cel rozwojowy to obiekt, który zapewnia szczególnego rodzaju wsparcie strukturalne dla otwartych dyskusji publicznych. Każde oddzielne wdrożenie obiektu jest specyficzne dla jednego tematu dyskusji. Jest to ważne, ponieważ plan polega na inicjowaniu rozwoju obiektu poprzez wdrożenie go na temat samego obiektu; więc twórcy będą jedli własną karmę dla psów. Problem polega na tym, jak samotny programista powinien przyciągnąć innych do miski z jedzeniem? Jedyne odpowiedzi jakie mam do tej pory (i żadna z nich nie wydaje się wystarczająco dobra) to: 1. Nieustannie pytaj na forach publicznych o porady dotyczące pojawiających się problemów rozwojowych, takich jak błędy w projektowaniu lub implementacji. Może ktoś wskoczy i pomoże. (Ale jest to trochę podstępne i podobne do spamu; przepraszam, ponieważ robię to właśnie teraz.) 2. Nieustannie udostępniaj prywatne informacje ekspertom, takim jak socjologowie; w szczególności nowe informacje, które zdarzają się przecinać ich ścieżki wiedzy. Może odwzajemnią się lub odpowiedzą w jakiś inny pomocny sposób. (Ale to wydaje się zbyt wolne samo w sobie.) Jakie są inne strategie? * * * Link do projektu zamieszczę później, na wypadek gdyby ktoś był zainteresowany. Kilka innych rzeczy, które możesz potrzebować w międzyczasie wiedzieć: * Narzędzie jest nowatorskie i unikalne; żaden inny obiekt nie służy temu samemu celowi. * Zarówno narzędzie, jak i baza użytkowników są porównywalne z wyszukiwarką internetową. Wyobraź sobie wyszukiwarkę dyskusji, ale bardziej użyteczną. * Może istnieć potencjał komercyjny, ale może też zostać w dużej mierze zniszczony przez udane, niekomercyjne uruchomienie FOSS. Proszę założyć drugi przypadek. * W pełni funkcjonalny prototyp został już wdrożony na temat samego obiektu (zgodnie z planem) i jest dostępny dla każdego. Został zmontowany z gotowych komponentów. Nie napisano żadnego kodu, aby działał, ale z pewnością będzie potrzebny kod, aby go ulepszyć. * Placówka jest opłacalna tylko z jednym lub dwoma uczestnikami, ale nie ma o czym pisać. Jego użyteczność i atrakcyjność szybko rosną wraz ze wzrostem skali. Działa częściowo poprzez crowdsourcing, a częściowo poprzez samoorganizację i samorządność.


title: Jak nazywa się ten (anty?) wzorzec? (albo jak to opisać)

text: Przypadek, w którym operator na poziomie źródła faktycznie opisuje operację, która ma mieć miejsce w pewnym momencie w przyszłości, odrzucając operator rzeczywisty wraz z jego operandami. Nie wiem, czy ma to jakąś ogólną nazwę, czy może jest to element projektu zbyt niskopoziomowy, aby w ogóle traktować go jako „wzór”, ale i tak jest to element, który jest często widywany w wielu sytuacjach : * Jeśli dobrze rozumiem (nie jest to częsty użytkownik C++), Boost::Phoenix robi to, aby reprezentować swoje lambdy i leniwe operacje, np. przeciążenie +, aby faktycznie przechwycić argumenty wraz z funkcją real + dla ich typu * Kombinatory parsera w językach funkcjonalnych (lub coś takiego jak Spirit) wyglądają jak operatory na danych, ale faktycznie budują parser, który działa później * Inne EDSL (w językach z operatorem przeciążenia) wydają się robić to często, np. funkcjonalne reaktywne biblioteki programowania mają tendencję do niewidzialnego budowania procedur, które zrobią to, co operacja wygląda teraz * (znowu, jeśli dobrze rozumiem) IO w Haskell buduje imperatywne obliczenia z czystych komponentów, które są następnie "wykonywane" przez czarną magię ukryty w środowisku uruchomieniowym języka, a wyglądający tak, jakby po prostu wykonywał funkcje w miejscu * Na prostszym poziomie Greenspuning osadzonego mini-Lispa w programie w języku C można uznać za to samo: wyrażenia S można budować z wywołań do Funkcje C, które zostaną uruchomione później (ten ostatni prawdopodobnie byłby zwykle uważany za przypadek antywzorca), pozwalający wyglądać, jakbyś przekazuje „lambdę” do funkcji C, kiedy naprawdę przekazujesz dane interpretera To oczywiście nie jest antipattern we wszystkich przypadkach, ponieważ w niektórych z nich jest to jedyny sposób na użycie narzędzia, o którym mowa (chociaż zrobienie tego w C może dać jednemu bicie). Nie sądzę, że samo w sobie jest „Greenspunning” lub „korzystanie z EDSL”, ponieważ może być bardziej ogólne i powszechnie stosowane. Nie sądzę, że jest to wzorzec Interpreter, chociaż może nie zrozumiałem tego poprawnie: obliczenia są budowane bezpośrednio przez wykonanie kodu języka hosta (więc skutecznie istnieje w czasie kompilacji, ale zwykle nie jako język pierwszej klasy konstrukcja), a nie analizowane z ciągu lub innych danych załadowanych w czasie wykonywania. We wszystkich przypadkach wydaje się, że operacja wygląda tak, jakby robiła jedną rzecz (niekoniecznie bardzo przekonująco, jeśli jest to C i musisz napisać Add zamiast przeciążać +, ale ten sam pomysł), podczas gdy faktycznie pakuje tę akcję do późniejszego spożycia. Coś w rodzaju wzorca "konstruktora obliczeń"? Ale nie znalazłem tego terminu w użyciu. Nie mam tutaj praktycznego problemu do rozwiązania; po prostu denerwuje mnie, że wydaje się, że istnieje wspólny element projektu, którego nie mogę nazwać. (Pytanie pierwotnie opublikowane na StackOverflow, przeniesione ręcznie)


title: Czy można uciec od GPL, czerpiąc tę samą pracę z wielu źródeł?

text: Załóżmy, że masz dowolny kod bazowy **C** , prawdopodobnie złożony z wielu programów, z których żaden nie jest objęty licencją typu copyleft. Załóżmy, że ten kod, wzięty razem, wykonuje tę samą pracę, co ładny zintegrowany program, **A** licencjonowany na podstawie jakiejś licencji typu copyleft, takiej jak GPL, ale z jakiegoś powodu kod GPL jest lepszy (szybszy, czystszy, mniej błędów, cokolwiek ). Załóżmy teraz, że dla każdej funkcji w **C** , znajdujesz równoważną funkcję w **A** i, poprzez ostrożną refaktoryzację krok po kroku, tworzysz dwa łańcuchy poprawek, które zbiegają się w trzecim programie, **B **. Innymi słowy, możesz pokazać krok po kroku, za pomocą łatek, jak wyprowadzić dowolny z trzech programów z dowolnego z pozostałych: A <--> B <--> C Wygląda na to, że dzięki tej procedurze wyodrębniłeś wartość z **A**, a nawet stworzył pracę pochodną, ale nowa praca niekoniecznie przypomina **A** , a istnieje wyraźny łańcuch dowodów pokazujący, że **B** pochodzi z innej bazy kodu całkowicie. Moje pytanie brzmi: **Czy taka implementacja „ _dialektyczna_ ” dałaby taki sam skutek prawny jak tradycyjna implementacja „clean room”?** _Uwaga: możesz zastąpić licencje A i C najbardziej i najmniej ulubionymi opcjami, odpowiednio. Pytanie dotyczy całego procesu._


title: Biorąc pod uwagę, że dobrowolnie zdecyduję się nie implementować pamięci wirtualnej w moim jądrze, jak będzie działać jednostka zarządzania pamięcią?

text: W moim podstawowym jądrze odmawiam implementacji przerażającego zamieszania związanego z planowaniem pamięci wirtualnej, więc chcę tylko adresów pamięci rzeczywistej do wszystkiego. Niektórzy ludzie kłócili się ze mną, że skoro pamięć wirtualna jest obsługiwana sprzętowo, a czasami sprzęt MMU jest zintegrowany z procesorem, czy jest to reguła, że pamięć wirtualna jest obowiązkowa przy projektowaniu sprzętu? Mam co najmniej jeden dobry powód, aby w tym momencie nie dbać o pamięć wirtualną, ponieważ mam dużo pamięci (32 GB) i nie zależy mi na kłopotach i obejściach z adresowaniem wirtualnym i tym podobnych ( i że szczerze nie podoba mi się ten pomysł, niezależnie od tego, że pomaga w wielu obszarach). Więc jeśli moje pytanie nie było jasne, czy jest możliwe napisanie dedykowanego jądra i _w ogóle_ nie implementowanie pamięci wirtualnej i używanie tylko prawdziwych adresów do wszystkiego, za pomocą MMU? (Niektóre z tych niskopoziomowych koncepcji programowania i sprzętu są zadziwiające, nawet po wielu godzinach nauki i wdrażania). PS: Domyślam się, że odpowiedź w pewnym momencie brzmi „tak”, ale wysłuchanie kogoś, kto ma większą wiedzę na ten temat, zdecydowanie byłoby dobrą wskazówką dla mnie i innych, którzy to czytają.


title: Jak rozwiązać etykietowanie binarne za pomocą cięcia wykresu?

text: Wiele odniesień literaturowych sugeruje, że _problem z etykietowaniem binarnym_ można przekształcić w problem cięcia grafu i rozwiązać za pomocą algorytmu maksymalnego przepływu/min cięcia. Próbuję zrozumieć sformułowanie podane w prezentacji redukcji przez Xiaowei Zhou. Problem etykietowania binarnego polega na podzieleniu `n` elementów (tu segmentów nakładających się obszarów dwóch obrazów) na dwa rozłączne zbiory w sposób minimalizujący funkcję energii. Możemy oznaczyć partycję jako wektor `(x_1, ..., x_n)` którego elementami są `0` lub `1`; mamy również funkcje fitness dla poszczególnych pozycji `D_i`; i definiujemy funkcję przejścia na parę pozycji `V_{i,j}`, która karze nieciągłości. Wtedy funkcja energii jest dana przez E(x_1, ..., x_n) = SUMA_p D_p(x_p) + SUMA_{p,q} V_{p,q}(x_p, x_q) W moim konkretnym przypadku mam 32 odcinki, więc jest 2^32 możliwych wektorów do oceny. Mógłbym ocenić „E” dla każdej kombinacji, wykonując 2^32 oceny, a więc uzyskać minimalną energię i kombinację, która ją osiąga. Tak podpowiada moja intuicja. Ale jest to niepraktyczne, ponieważ złożoność jest wykładnicza. Dlatego chcę zastosować podejście wycinania wykresu, ale nie rozumiem, jak sformułować wykres. 32 segmenty to węzły wykresu, ale jaka byłaby waga krawędzi? A jaka byłaby pojemność?


title: Istniejący kod z błędami czy zupełnie nowy? (z perspektywy czasu)

text: Mam problemy z biblioteką z błędami, którą aktualnie posiadam i która jest używana w moim bieżącym projekcie, muszę ukończyć ten projekt jak najszybciej, aby dostarczyć go naszemu klientowi. Jednak ta biblioteka jest okropna! Mnóstwo błędów, wiele błędów i słaba wydajność, pomyślałem, że napiszę własną bibliotekę do obsługi tego, co ta biblioteka obsługuje (GUI/Graphics i trochę manipulacji danymi), ale brakuje mi na to czasu. Zmarnowałem dużo czasu na naprawę tej biblioteki, więc jestem bardzo blisko mojego terminu z 85% ukończeniem i wciąż wieloma błędami, które napotykam i naprawiam każdego dnia. Może zadasz mi następujące pytanie: > Dlaczego w ogóle go używałeś, skoro wiedziałeś, że jest zabugowany? Odpowiem na to pytanie, powodem jest to, że biblioteka błędów jest uważana za standard w naszej firmie; plus, nie tylko ja uważam, że biblioteka zawiera błędy, prawie wszyscy programiści jej nienawidzą! Moje pytanie brzmi, czy powinienem dostarczyć bieżący projekt z tą biblioteką, a następnie opracować nową bibliotekę i użyć jej do ulepszenia projektu, a następnie dostarczyć go klientowi ponownie jako aktualizację, czy też opracować nową bibliotekę i ponownie uruchomić cały projekt przy użyciu nowej jeden? i dlaczego?


title: Dobre zasady wyjaśniające wykorzystanie obiektów danych

text: Potrzebuję trochę wyjaśnienia nazw. Najpierw krótki opis mojej pozycji. Jako debiutant przygotowuję opisy stanowisk dla junior developera, co również dało inne spojrzenie na to, jak ważna jest komunikacja i nie pozostawia wątpliwości. Po prostu; Lubię rozumieć, co ma na myśli przez „Kontekst” i lubię podawać przyjęty opis tego, czym jest POCO. To nie są dokładnie problematyczne słowa. Nawet jeszcze nie rozmawialiśmy. Opisuję to bardziej jako problem semantyczny i skupiam się na danych i IoC, ponieważ jest miejsce, które spotkamy (He = GUI, jestem BL). Podaję ręcznie wpisaną próbkę jako odniesienie do nazwania różnych jej części. Niektóre terminy są lokalne dla producenta lub narzędzia, a niektóre są używane bardziej ogólne, co wolę to drugie. // Poco, modelka? public class Klient { public int Identyfikator klienta { get; ustawić; } ciąg publiczny Nazwa { get; ustawić; } } // Krótki znak wzorca repozytorium public class CustomerContext { // Czy to jest kontekst, czy nawet encja? Lista<Klient> cust; public CustomerContext() { cust = new List<Klient>(); cust.Add(new Customer() { CustomerId = 1, Name = "Doe" }); cust.Add(new Customer() { CustomerId = 2, Name = "John" }); cust.Add(new Customer() { CustomerId = 3, Name = "Zelda" }); cust.Add(new Customer() { CustomerId = 4, Name = "Kim" }); } public IQueryable<Klient> Get() { return cust; } } * _Jakie terminy najlepiej pasują? *_ Czy „Klient” jest modelem (zaczerpniętym z MVC)? Czy po prostu mamy na myśli to samo z POCO? Jak nazwać przykładowe dane wpisane powyżej? Kpi? Po prostu „Dane”? Jak nazywam obiekt CustomerContext? Repozytorium? Kontekst? Czy to jest podmiot? Czy istnieją inne terminy, które wymykają się z tego zakresu? Wydaje się, że powszechne jest pisanie o repozytoriach i lekach generycznych, mimo że mieści się w zakresie producenta (gdzie np. „Entity” zwykle oznacza Entity Framework). Pomocne byłoby wyraźne wskazanie, jakie terminy oznaczają co (i kiedy).


title: Parametry żądania i odpowiedzi HTTP

text: 1. W jaki sposób są przechowywane i porządkowane parametry żądania dla żądania post, jeśli nie jest to json lub xml? 2. Czy można w ten sam sposób odesłać parametry odpowiedzi?


title: Czy powinienem używać oczekiwać, czy powinienem podczas pisania specyfikacji RSpec?

text: Czy ktoś może mi wyjaśnić, w jaki sposób powinienem podjąć decyzję, czy użyć składni oczekiwać, czy też powinien dla moich przykładów rspec. Z mojego zrozumienia nie powinniśmy już używać składni „powinien”. Zastąpienie polega na użyciu expect().to lub is_expected.to Czy to jest poprawne? W przypadku niektórych naprawdę dobrych referencji wydaje się, że powszechną praktyką jest nadal używanie powinno. I te odniesienia są konsekwentnie aktualizowane. Jakakolwiek pomoc we właściwym kierunku byłaby mile widziana. Referencje (+ inne, ale z wyłączeniem) https://github.com/ Thoughtbot/shoulda-matchers https://www.railstutorial.org/book


title: Najlepsze praktyki wdrażania/konserwacji ASP.NET

text: Jestem w branży tworzenia stron internetowych od około 5 lat, zawsze pracując w środowisku open source. Głównie apache, mysql i php z odrobiną ruby, używając git do kontroli wersji. Ale ostatnio podjął pracę, w której programowanie jest w całości C# ASP.NET MVC. Chociaż byłem w stanie dość łatwo nauczyć się języka itp., Pozostali członkowie mojego zespołu (mający dużo większe doświadczenie w programowaniu MS niż ja) mają inny sposób myślenia, jeśli chodzi o publikowanie i wdrażanie ostatecznej witryny, i szczególnie przyszłe zmiany. Mentalność innych programistów polega na tym, że po opublikowaniu strona jest ostateczna. Na stronie nie można już wprowadzać żadnych zmian, gdy zapytałem o powody tego, odpowiedziałem, że jest to zbyt niebezpieczne, czasochłonne lub trudne. Z mojego dotychczasowego doświadczenia wynika, że aktualizacja witryny jest po prostu przypadkiem przesyłania zmienionych plików, co zwykle jest dość szybkie, jeśli była to niewielka zmiana, lub przestawienia witryny w tryb konserwacji podczas aktualizacji. Niedawno opublikowaliśmy witrynę MVC, a firma skontaktowała się z nami, aby zaktualizować część tekstu i dodać łącze do nowego dokumentu pdf. Reszta mojego zespołu szybko powiedziała, że nie należy tego robić, ponieważ strona jest już aktywna i nie powinna być modyfikowana. Czy jest coś, co przegapiłem, nie będąc „wychowywanym” jako programista Microsoft? Jakie są argumenty przeciwko wprowadzaniu modyfikacji do działającej aplikacji internetowej w środowisku produkcyjnym i czy ten sposób myślenia jest unikalny dla programistów .NET? Naprawdę chciałbym zrozumieć ten sposób myślenia i czy jest on uzasadniony w środowisku programistycznym Microsoft, czy jest to tylko starszy sposób myślenia. _UWAGA: Używamy TFS do kontroli wersji i używamy profili publikowania, aby określić, gdzie witryna zostanie wdrożona (UAT lub Produkcja)_


title: Budowanie silnika szablonów – punkt wyjścia

text: Budujemy projekt oparty na Django z komponentem szablonu/generatora. Ten komponent będzie oddzielony od projektu jako takiego i może być Django/Python, Node, Java lub cokolwiek innego. Ideą jest generowanie pytań na podstawie wzorca. Na przykład chciałbym wygenerować pytania typu "Co to jest 2 + 3", "Co to jest 5 + 8" na podstawie wzorca "Co to jest X + Y; gdzie X,Y < 10". W tym sensie jest jak silnik szablonów. Szablony będą zawierać odniesienia do obiektów z właściwościami, które są zdefiniowane w DB, powiedzmy Bus. Np. mogłoby to być coś w stylu > [object type="pojazd" weight="ciężki"] i musiałby wyciągnąć losowy obiekt z bazy danych spełniający kryteria: type="pojazd" weight="ciężki" (autobus /truck/jet), a następnie zastąp ten znacznik obrazem, powiedzmy, autobusu. Musiałby też być w stanie obsłużyć pewne przetwarzanie. Np.: > Co to jest [X type="integer" lte="10"] + [Y type="integer" lte="10"] > > [opcja X+Y poprawna_ans="prawda"] > > [opcja X-Y correct_ans="false"] > > [opcja X+y+1 correct_ans="false"] Silnik powinien wypełnić losową liczbę całkowitą <= 10 dla X i Y oraz pokazać pola opcji dla każdej z opcji. Musiałby również zapamiętać fakt, że pierwsza opcja jest poprawną odpowiedzią. Czy ma sens pisać coś od podstaw? A może lepiej użyć istniejącego systemu szablonów (takiego jak własny system szablonów Django) jako punktu wyjścia? Jakieś sugestie, jak mogę do tego podejść? edit : Wyjaśnienie przypadku użycia


title: Prowadzenie zespołu offshore

text: Jestem w sytuacji, w której kieruję dwoma zespołami po 4 osoby. Obie drużyny znajdują się w Indiach. Jestem na zachodnim wybrzeżu Stanów Zjednoczonych. Wiodące zdalne zespoły stanowią dla mnie wyzwanie: po pierwsze, ich znajomość języka angielskiego jest słaba. Po drugie, mam trudności ze zrozumieniem ich poprzez ich akcent. Trzeci to czas, dzieli nas 12 godzin. Do komunikacji używamy Skype. Mam miesiąc na wykonanie projektu. Spędziliśmy tydzień na ustawianiu środowisk. W tym momencie rozważam przepracowanie swoich godzin, 11p PDT do 7a PDT, aby przyspieszyć ich pracę, tak abym mógł rozpocząć projekt. 12 godzin opóźnienia to za dużo. Szukam kroków, które mogę podjąć, aby odnieść sukces w prowadzeniu zespołu offshore. **Aktualizacja** Podstawowym zadaniem zespołu offshore jest kodowanie, oczywiście większość zadań związanych z kodowaniem wiąże się z pewnymi pracami projektowymi. Zespół offshore składa się z jednego wiodącego, dwóch średniozaawansowanych (4 do 5 lat) programistów i młodszego (~2 lata) programisty. Projekt to klasyczny wodospad. Przekazaliśmy zespołowi offshore dokument biznesowy i projekt techniczny. Staramy się sprawnie zarządzać offshore. Mamy z nimi codzienne telekonferencje i wymagam od zespołów, aby codziennie wysyłały mi Scrum w formie e-maila z odpowiedziami na następujące pytania: 1. Co dzisiaj zrobiłem? 2. Co mam zamiar zrobić jutro? 3. Czego potrzebuję od Chucka, abym mógł jutro wykonywać swoją pracę? W zadaniach jest pewna niejasność. Intencją było nadanie im wystarczającego kierunku, aby mogli rozwijać zadanie bez pisania dla nich kodu. Nie mam budżetu na podróże. Używam Fogbugz do śledzenia zadań. Każde zadanie zostało wpisane do Fogbugz i nadano mu priorytet. Każdy członek zespołu ma dostęp do FogBugz i może wybrać zadanie, które chce wykonać. _Pytanie pokrewne_ : Co możemy zrobić, aby poprawić sposób działania outsourcingu/offshoringu? **Aktualizacja 2** Zdecydowałem, że nie mogę raz dziennie rozmawiać z zespołem. Muszę z nimi pracować. Od dzisiejszego wieczoru zacząłem pracować w tych samych godzinach co oni. Dzięki temu jestem dla nich dostępny, gdy mają pytania. Pozwala mi też zdobyć ich zaufanie i szacunek. **Aktualizacja 3** Projekt został ukończony i dostarczony na czas. Kluczowym czynnikiem była praca w tym samym czasie co zespół offshore. Gdyby tak się nie stało, jestem przekonany, że ponieślibyśmy porażkę. Zarządzałem dwoma zespołami offshore. Jedna z drużyn podeszła i zwolniłem ich, biorąc się za pracę. Rzeczy, które prowadzą do sukcesu to: Komunikacja, zrozumienie ich kultury i sposobu, w jaki się komunikują. Buduj z nimi relacje. Kilku pracowników, z którymi utrzymuję kontakt rok po zakończeniu projektu. Spotkania, które spotykaliśmy na początku ich dnia, aby można było odpowiedzieć na wszelkie pytania lub zablokowane zadania. Na koniec dnia pracownik wysłał podsumowanie dnia, opisując swój dzień i czy napotkał jakiekolwiek problemy. Najlepiej byłoby, gdybyśmy mogli rozwiązać ich problemy przed rozpoczęciem następnego dnia. Pytania, zadawaj pytania. W większości przypadków informacje nie są podawane dobrowolnie. Bądź widoczny. Dostępność online, dostępna i osiągalna pomoc sprzyjała zaangażowaniu zespołu w projekt. Nie byłem tylko codziennym e-mailem. Uczynić to prostym. Wewnętrznie mieliśmy złożony system kontroli jakości, w którym śledzono błędy. Był złożony i trudny w użyciu. Zapłaciłem $$ za konto we mgle dla każdego z członków zespołu. Większość zespołu korzystała z FogBugz i rozumiała przepływ pracy. Codziennie aktualizowałbym fogbugz o nowe błędy i aktualizował system QA z Fogbugz. **Pytanie o przepełnienie stosu** Kierowanie zespołem offshore


title: Co możemy zrobić, aby usprawnić działanie outsourcingu/offshoringu?

text: W dzisiejszych czasach można usłyszeć tylko argumenty przeciwko outsourcingowi, powołujące się na nieudane projekty, utratę pracy, różnice kulturowe, problemy z komunikacją i tak dalej. Historie sukcesu, oszczędności, wspólne doświadczenia kulturowe są często ignorowane. Co programiści z obu stron świata mogą zrobić jako społeczność, aby ulepszyć sposób działania outsourcingu i uczynić go bardziej znaczącym i odpowiednim? Proszę raczej sugerować konstruktywne pomysły/doświadczenia, niż pozwolić, aby była to kolejna okazja do przemawiania.


title: Jakie metryki, jeśli w ogóle, można zebrać z opracowywania wymagań?

text: Pozyskujemy wymagania naszych interesariuszy produktowych, tworząc i dopracowując historyjki użytkowników podczas comiesięcznych spotkań dotyczących planowania sprintów. Obejmuje to definiowanie przypadków użycia, kryteriów akceptacji i identyfikowanie ograniczeń, a końcowym wynikiem jest sprint backlogu historyjek użytkownika. Wymagania klientów wysokiego poziomu są przekształcane w wymagania dotyczące produktu niższego poziomu poprzez przeglądy projektu wśród zespołu programistów podczas sprintu. Wynikiem przeglądów projektu są diagramy UML, interfejsy oprogramowania i ogólnie opis różnych wymagań oprogramowania w języku ludzkim. Zwiększamy naszą świadomość metryczną jako organizacji, aby móc lepiej identyfikować potencjalne obszary doskonalenia procesów (i tak, abyśmy ostatecznie mogli być oceniani na poziomie 3 CMMI). Jakie przydatne metryki można zebrać w celu wydobycia i udoskonalenia wymagań klientów?


title: Standardy wyników testów jednostkowych

text: Proste pytanie, co jest bardziej powszechne / standardowe / nie sprawi, że przyszli programiści będą patrzeć na mnie ze złością na testy jednostkowe: wyświetlanie tylko błędów lub raportowanie każdego pomyślnego testu?


title: Jak dużego doświadczenia w programowaniu funkcjonalnym można oczekiwać od programistów?

text: Koduję w niefunkcjonalnym języku z mechanizmami funkcjonalnymi (C# konkretnie, ale możesz zastąpić, powiedzmy C++ i użyć wskaźników do funkcji, lub co masz) w małym zespole. Moim zwyczajem jest używanie technik funkcjonalnych – przekazywanie delegatów (obiektów reprezentujących funkcje) jako argumentów, używanie zamknięć, okazjonalnych funkcji anonimowych itp. – i staram się dokumentować to lepiej, niż myślę, że rozsądny programista potrzebuje ich udokumentowania. Patrząc na kod, który widzę w Internecie i na społecznościach Stack Exchange, myślę, że mój styl jest całkiem normalny wśród programistów C#. Nasz zespół nie jest jednak wyrafinowany w tych technikach i ostatecznie muszę sam wyjaśniać (i bronić się) – mój wysoki poziom dokumentacji jest przez nich używany jako dowód, że nie powinienem kodować tak, jak to robię dla ze względu na czytelność. Teraz, biorąc pod uwagę skład mojego zespołu, rozumiem, że mogę po prostu zrezygnować z dobrej walki tutaj i kodować zgodnie z ich standardami, rozumiejąc, że jest to lepsze dla zespołu. Czy ktoś ma udane doświadczenie w korzystaniu z badań empirycznych, kryteriów akredytacyjnych lub list najlepszych praktyk opublikowanych przez szanowane źródła, które sugerują, że programiści mają obecnie większe doświadczenie w tych idiomach programowania funkcjonalnego i dlatego nie musimy ich unikać dla celów konserwowalności?


title: Big Data: czy można je wstępnie przetworzyć?

text: Moje pytanie dotyczy „big danych”. Zasadniczo big data obejmuje analizę dużej ilości danych, aby uzyskać z nich sensowny wgląd. Chciałbym wiedzieć: Czy można wstępnie przetwarzać duże ilości danych? (np. powiedzmy, że prowadzisz jakąś usługę dopasowywania ludzi, więc bierzesz wszystkie posiadane informacje o ludziach i przetwarzasz je w pewnym momencie do późniejszego wykorzystania) **Jeśli możliwe jest wstępne przetwarzanie, w jaki sposób byś zwykle robisz to?** * * * Aby zawęzić zakres mojego pytania, spójrz na ten hipotetyczny scenariusz. > Załóżmy, że mam bazę danych klientów, a moja firma jest globalnym sprzedawcą, który > używa pewnego rodzaju systemu punktowego do nagradzania kupujących (dla argumentów, > punkty są podliczane na typie karty elektronicznej lub aplikacji mobilnej). > > Tak więc w oparciu o mój system nagród, jestem teraz w stanie w pełni wiedzieć, co dokładnie > kupuje kupujący i kiedy zwykle dokonuje zakupów > powtarzających się przedmiotów. > > Moja baza danych cały czas rośnie dzięki tym informacjom i teraz > chciałbym rekomendować (lub wysyłać powiadomienia) kupującym > oferty specjalne kupowanych przez nich produktów lub powiązanych produktów, które mogą ich zainteresować > po wprowadzeniu 1 z sklepy. > > Zamiast przetwarzać wszystkie zgromadzone dane, gdy kupujący wchodzi do > sklepu, chciałbym nieprzerwanie przetwarzać strumień danych w miarę ich pojawiania się > (czyli z poprzednich doświadczeń zakupowych), aby gdy nadejdzie czas > rekomendacja (przy następnym wejściu do sklepu) > jest to po prostu kwestia pobrania rekomendacji i dostarczenia ich listy > kupującemu. > > Mając na uwadze tę metodę, mogę łatwo rozdzielić zadania wymagające dużej mocy obliczeniowej, > zamiast mówić: przetwarzanie wszystkich danych klientów w pracowity dzień, kiedy ruch pieszy > jest natężony. Pytając, jak bym to zrobił, odwołałbym się do powszechnie dostępnych metod osiągnięcia tego celu. Może to obejmować dowolne specjalne bazy danych lub techniki programowania, a nawet specjalistyczne oprogramowanie, które może przeprowadzać te obliczenia czasowe, które mogą „wstępnie przetwarzać” dane w określonym czasie, w celu zrównoważenia zadań intensywnie korzystających z procesora. Scenariusz rekomendacji klienta można uznać za „sytuację”. Jest to najlepszy przykładowy scenariusz, jaki przyszło mi do głowy, wyjaśniający, dlaczego „przetwarzanie wstępne” (lub obliczanie zaleceń w określonym czasie) miałoby sens.


title: Czy ktoś może wskazać mi kilka przykładów/materiałów do czytania, które nakreślają automatyczne aktualizowanie dom?

text: Zasadniczo chciałbym wiedzieć, w jaki sposób aplikacje takie jak hotmail odbierają wiadomości e-mail w czasie rzeczywistym, bez dokonywania okresowych kontroli na serwerze - wysłałem do siebie e-mail z programu Outlook z otwartym hotmailem i zobaczyłem to w konsoli kilka sekund później - GET http://sn108w.snt108.mail.live.com/mail/messageshelper.mvc którego zawartość to html do aktualizacji, ale chciałbym wiedzieć, co nasłuchuje żądania get, które prawdopodobnie odpala jakiś javascript, aby zaktualizować dom? Moje pytanie nie jest specyficzne dla metodologii hotmails, w rzeczywistości daleko od niej, ponieważ będą one działać na platformie .NET, podczas gdy moje umiejętności (jeśli można je tak nazwać!) są w stosie LAMP, ale każdy materiał do czytania na ten temat byłby wielkie dzięki!


title: Jak napisać przypadek wielbłąda dla słów takich jak „numer telefonu”, „motocykl”, „długość fali” itp?

text: Mam problem ze zrozumieniem, jak zastosować składnię camelCase do niektórych nazw moich zmiennych. Na przykład, jak poprawnie napisać słowo takie jak „numer telefonu” w przypadku wielbłąda? Czy to „phoneNumber” czy „phonenumber”? Podobnie z "username", czy jest to `username` czy `userName`? Myślę, że nie wygląda to dobrze w przypadku wielbłądów, takich jak `motorCycle`, `passWord`, `sunDay`, `setUp` lub `waveLength`, ponieważ każde z nich to tylko jedno słowo. Myślę, że może to być powód, dla którego nazywa się `hashMap`, ale także `hashtable` w przypadku wielbłąda bez wielkiej litery w ostatnim przypadku, ponieważ hashtable to jedno słowo, podczas gdy mapa haszowania to dwa słowa. Ale jeśli motocykl ma kolor, to czy będzie to „motorcycleColor”, ponieważ słowo jest połączone? Czy to prawda, czy też powinno to być `phoneNumber`, `waveLength`, `sunBlock` a nawet `sunDay` dla niedzieli tygodnia? Dlaczego na przykład metoda nazywa się `getISOCountries`, podczas gdy mówi `HttpHeaders` np. nie jest jasne, co stanie się małymi literami, jeśli mamy metodę typu `String camelCaseString = dog.toCamelCase()` lub `interfejs CamelCase`.


title: Kiedy freelancer staje się start-upem?

text: W jednym z moich poprzednich pytań w tej witrynie z pytaniami i odpowiedziami ktoś zasugerował mi, że freelancer nie jest dla wszystkich. Zastanowiłem się nad tym i doszedłem do wniosku, że jest poprawne. Chociaż w niektórych krajach może to być wybór weteranów i ekspertów w swoich dziedzinach, w niektórych krajach jest to opcja łodzi ratowniczej, w której panuje zacięta konkurencja. Nie rozumiem, kiedy używać terminu freelancing, a kiedy terminu start-up. Mogę być freelancerem z moim nazwiskiem na wizytówkach, natomiast mogę być freelancerem z jednoosobowym start-upem, z nazwą mojej firmy na wizytówce. Zarejestrowałem swój start-up legalnie, ale nadal jest to show jednoosobowe. Jest to firma jednoosobowa. Czy nadal jest freelancerem? W takim razie, czy powinienem wydrukować nazwę mojej firmy na wizytówce, czy poczekać, aż znajdę garstkę zatrudnionych pracowników? Kiedy znika etykieta freelancera dla kogoś, kto planuje założyć start-up?


title: Jaki system kontroli wersji jest zwykle używany w programowaniu Java Enterprise?

text: Dostępnych jest wiele vcs. Które z nich są zwykle używane w świecie JavaEE?


title: Co zrobić, gdy kodowanie zaczyna wydawać się nudne, jakby wszystko było po prostu takie samo?

text: Zacząłem programować w wieku 6 lat na Commodore 64. Teraz mam 28 lat i muszę ukończyć 4 kursy z pierwszego stopnia informatyki. Po tylu latach zaczynam się nudzić pisaniem kodu. Ukończyłem kurs informatyki w teoretycznych językach komputerowych i 10 lat kodowania systemów C w dziedzinie bezpieczeństwa sieci i po prostu nie dostaję żadnej stymulacji z pisania kodu. Potrafię pisać kod w C, C++, Pythonie lub jakimkolwiek innym języku, ale nie mogę się ekscytować tym, co robię. Nie czuję żadnego wyzwania. Napisałem wielowątkowy kod, proxy HTTPS MITM i aplikację WSGI bez potrzeby posiadania specjalnych umiejętności w zakresie algorytmów. Czuję, że wszystkie te nowe rzeczy są takie same, z prostszymi (lub więcej) abstrakcjami lub automatyzacją, ale dla mnie wszystko brzmi tak samo. W kółko. Język obliczalny jest w całości obliczalny według Turinga, więc kodowanie jest tylko replikacją podobnego wzorca w tym podzbiorze funkcji częściowej. W codziennej pracy czuję się znudzony nawet szukaniem błędów, robieniem benchmarków na kodzie, czy naprawianiem problemu z biblioteką X,Y,Z. Jestem bardzo ciekawą osobą. Zawsze mnie coś pobudza. Ale nie mogę nawet patrzeć na świetny kod. Czuję się bardziej komfortowo w tym, jak te rzeczy działają. **Czy nadszedł czas, aby zrobić postęp w mojej karierze? Lub zdobyć trudniejsze rzeczy w informatyce? Może zrobić główny dyplom z CS?** Zacząłem czytać moją pierwszą książkę o zarządzaniu projektami "Peopleware" i coraz bardziej interesuje mnie cykl życia oprogramowania. Co proponujesz zrobić? Być może próbując dostać się do Google, Microsoftu lub Apple, tak jak zrobili to moi przyjaciele. A może bardziej menedżerska ścieżka kariery. Próbowałem też znaleźć dobrą książkę o zasadach komunikacji i „osobowości ludzi”, aby przygotować mnie na możliwość wejścia w zarządzanie. Jakieś sugestie? P.S: Mam duże zainteresowanie, **nie mam depresji** :) kocham góry, trekking, robię zdjęcia i jestem wspinaczem sportowym, uwielbiam pływać i sport w ogóle, czasami biegam , właściwie czytam książkę o moim kraju (Włochy) historię od AC do dziś i uwielbiam wycieczki (tego lata przejechałem 4000 km, aby zobaczyć wiele miejsc w Hiszpanii i wspiąć się po nich, w ciągu zaledwie 3 tygodni, a nie wakacje ale maraton, 24 km trekkingu zrobiły mi kontuzję przepukliny .. :)))) ), uwielbiam teatr i życie w ogóle * * * Dzięki wszystkim, zastanowienie się nad wszystkimi odpowiedziami daje mi możliwość kroczenia moją drogą bardziej jasne. W celu podsumowania możemy uogólnić na temat najczęściej głosowanej odpowiedzi. Przede wszystkim ludzie głosują za **koniecznością** uczynienia z naszej pracy podpory Twojego życia, a nie jedynego powodu, aby w nim pozostać (to nie moja sprawa), więc jeśli jesteś jedynym powodem życia, jeśli pracując szybko dochodzisz do naprawdę depresyjnej sytuacji. Jak mówią ludzie, Wiedeń na ciebie nie czeka :) Po tym przypomnieniu ludzie sugerują: * Zwiększenie złożoności technicznej, nad którą pracuję, aby zwiększyć wyzwanie i mniej się nudzić. * zmienić dziedzinę wiedzy na nietechniczną, próbując zostać menedżerem lub sprawić, by jakiś opiekun awansował na nietechniczne dziedziny związane z twoją pracą. * zmień dziedzinę wiedzy na inny rodzaj wyzwania technicznego, jesteś programistą systemowym ? postaraj się być mniej znudzony rozwijaniem aplikacji dla ludzi, abyś mógł czuć się bardziej komfortowo patrząc na ludzi używających twojego użytecznego oprogramowania * zrobić postęp w informatyce na swojej ścieżce akademickiej Dla mojego celu właściwą odpowiedzią jest postęp w informatyce, dla mojego wydaje mi się, że programowanie nie jest jedynym sposobem na zdobycie wiedzy z zakresu informatyki i myślę, że lepiej czuję się na innej ścieżce w informatyce, innej niż opiekun inżyniera oprogramowania. Dziękuje za wszystko.


title: Jak się nazywa, gdy adres URL witryny zastępuje WWW czymś innym i jakiemu celowi służy?

text: Jak się nazywa, gdy strona internetowa ma inne słowo w miejscu, gdzie zwykle idzie „www”? Na przykład „images.google.com” a „google.com/images”. Wiem, że to drugie to plik na serwerze, który przeglądarka pobiera, ale do czego dokładnie służy ta pierwsza? Dobrze byłoby wiedzieć, jak to się nazywa.


title: Plusy i minusy aplikacji internetowej obsługującej tylko HTML/JavaScript

text: Pochodzę z tła formularzy ASP.NET i odkryłem, że kodowanie po stronie serwera jest bardzo wydajne w przeszłości. Ostatnio jednak chciałem wycofać kod front-endu po stronie serwera i zastąpić go czystym HTML/JavaScript, który uzyskuje dostęp do danych za pośrednictwem usług internetowych JSON. Nie mam w tym żadnego realnego doświadczenia, więc chciałbym usłyszeć, czy to sprawdzony model. Jakie są też pułapki, które go otaczają? Uważam, że formanty użytkownika ASP.NET są bardzo przydatne, więc chciałbym zachować teorię za tym, przechowując szablony znaczników w osobnych plikach HTML na serwerze. Będą one pobierane i używane odpowiednio przez wtyczkę jQuery AJAX i jQuery HTML templates. Każdy wkład będzie niezwykle mile widziany. PS Przepraszam za pytanie noob, ale czy ten rodzaj architektury sieci Web jest określany jako web-2.0, czy też całkowicie zboczyłem z kursu?


title: Czy aplikacje zbudowane przez Xamarin mogą zostać zablokowane przez Apple do sprzedaży w sklepie z aplikacjami?

text: Rozważ posiadanie ograniczonych zasobów ludzkich i rozważ wykorzystanie Xamarin studio do tworzenia aplikacji wieloplatformowych. Czy będziesz się bał, że Apple spróbuje zablokować wszystkie aplikacje NIE opracowane przez xCode? Mam na myśli przyszłość. Oczywiście nie jest to obecnie zakazane. Pytam tylko o to, ponieważ usłyszałem to na dzisiejszym spotkaniu jako argument za nieużywaniem Xamarin Studio. Nie jestem ekspertem w tej dziedzinie, ale jestem bardzo ciekawy, bo brzmi to dziwnie. Aplikacja powinna zostać zbanowana ze względu na rodzaj wygenerowanego kodu, który jest zawsze obecny podczas budowania aplikacji przy użyciu Xamarin.


title: Programowanie bez ego, czy jest to możliwe, a nawet pożądane?

text: Po przeczytaniu tego pytania; Dlaczego tak wielu programistów jest aroganckich? Nasuwa mi się na to pytanie. Czy możliwe jest programowanie bez ego, czy nawet jest to pożądane? Jako zawód wydaje się, że chcemy pochwalić się najnowszym gadżetem, techniką lub powiedzieć „spójrz na ten niesamowity kawałek kodu, który napisałem”. Mimo to możemy stać się bardzo defensywni, gdy zostaniemy poproszeni o przesłanie elementów pracy do przeglądu kodu lub otrzymanie negatywnych komentarzy od innych programistów (słyszenie terminu WTF nigdy nie było dobrym znakiem). Czy jako zawód jesteśmy w stanie usiąść i przeanalizować fragment kodu, danych lub architektury pod kątem jego zalet lub ograniczeń oraz w spokojny i pełen temperamentu sposób, bez obrażania i antagonizowania naszych kolegów, czy też jesteśmy tylko archetypową postacią Dilberta, szalejącą przeciwko systemowi?


title: Algorytm gry liczbowej

text: Problem Link - http://www.iarcs.org.in/inoi/2011/zco2011/zco2011-1b.php Zadaniem jest znalezienie maksymalnego wyniku, jaki możesz uzyskać w grze. Takie problemy, oparte na grach, w których trzeba symulować, przewidywać wynik lub uzyskać maksymalną możliwą liczbę punktów, zawsze mnie intrygują. Mogę to zrobić z rekurencją, biorąc pod uwagę dwa przypadki - pierwszą wybraną liczbę lub ostatnią wybraną liczbę, z których każdy ponownie rozgałęzia się na dwa stany w podobny sposób i tak dalej... co w końcu może dać maksymalny możliwy wynik. Jest to jednak podejście bardzo nieefektywne czasowo, ponieważ czas rośnie wykładniczo ze względu na duże przypadki testowe. Jakie jest najbardziej pragmatyczne podejście do problemu i ogólnie do takich problemów?


title: Konsultant w firmie, która nie rozumie technologii!

text: Dostałem pracę jako konsultant w firmie, w której pracuje 3 innych programistów. Moim zadaniem jest przepisanie całego starego systemu w Javie, Springu itp., ale programiści znają tylko perla, a kierownik nie zna się na żadnym programowaniu. Staram się, aby zrozumieli, że mam tutaj 6 projektów do przepisania, ale nikt nie ma dokumentacji projektowej ani specyfikacji. programiści sztabowi nigdy nie musieli pisać żadnych dokumentów. Poza tym nie mogę zmusić kierownika do zrozumienia nowych technologii Java. Dokąd mam się udać, aby menedżer zrozumiał, że programiści lub ktoś musi napisać dokument projektowy, abym wiedział, co zbudować. lub jeśli muszę napisać dokumenty, jak uzyskać informacje?


title: Przykłady, kiedy będziemy używać języka interpretowanego zamiast języka skompilowanego?

text: Rozumiem różnice między językami interpretowanymi i kompilowanymi, ale jeśli ktoś mógłby podać kilka przykładów sytuacji, w których istnieje prawdopodobieństwo, że używa się języków interpretowanych zamiast skompilowanych, a także sytuacji, w których prawdopodobnie używa się języków kompilowanych zamiast języków interpretowanych, być naprawdę pomocnym.


title: Jak skutecznie umieścić kod na żywo

text: Jakie są ogólne strategie, które należy zastosować, próbując upewnić się, że moduł kodu będzie działał poprawnie w aktywnym systemie? Częstym problemem w naszym software house jest to, że zazwyczaj wdrażamy rozwiązania na zdalnym serwerze klienta, na którym nie ma zainstalowanego żadnego oprogramowania związanego z tworzeniem oprogramowania. Kiedy pojawiają się problemy (nieuniknione) we wdrożonym oprogramowaniu, denerwują nas klienci, którzy każą nam naprawić problem, ale ponieważ nie możemy zdalnie debugować kodu, wpadamy w cykl skutecznego odgadywania, czy nasz kod będzie działał wcześniej wdrażamy go, a następnie powtarzamy cykl, gdy wdrożony kod ma problemy. Ponadto, ze względu na oddalenie klienta, zazwyczaj nie jest możliwe uzyskanie pełnej działającej kopii testowej jego systemu po naszej stronie, więc kończymy na tym, że rozwijamy się na podstawie aproksymacji ich systemu po naszej stronie. To sprawia, że debugowanie i planowanie kodu po stronie programistycznej jest znacznie mniej efektywne, ponieważ podczas wdrażania nie wiemy dokładnie, jaka zmienna między naszym systemem testowym a systemem rzeczywistym powoduje problemy z naszym kodem. Do tej pory zaimplementowałem podstawowy rejestrator błędów we wszystkich wdrożonych kodach, który przechwytuje ślad stosu, szczegóły wyjątków, metodę, klasę, przestrzeń nazw, parametry oraz dodatkowe komunikaty i kody błędów przy każdym wyjątku, ale to naprawdę przyspiesza proces naprawienie tego konkretnego błędu. Próbowałem również pisać indywidualne testy dla określonych podsekcji modułów jako plików wykonywalnych i uruchamiać je w systemie klienta, ale dla modułów, które mają dziesiątki tysięcy linii, zwykle nie jest to możliwe bez zatrzymania całego rozwoju. Próbuję opracować strategię, która pomogłaby nam lepiej unikać wyjątków, ale utknąłem w tym, że: * Nie mamy (i zazwyczaj nie możemy uzyskać) testu roboczego system, który dokładnie modeluje system na żywo, m.in. obraz systemu live, jeśli go mamy, oznacza to, że jest on nieaktualny od miesięcy * Brak dostępu do kopii działającego systemu oznacza, że nie możemy pisać efektywnych testów jednostkowych, które faktycznie modelują warunki, w jakich będzie działał kod po stronie klienta. Jeśli to pomaga, kod jest zazwyczaj C# uruchomiony pod .NET 3.5. Jak lepiej poradzić sobie z tym problemem?


title: Radzenie sobie ze współpracownikami podczas rozwoju, potrzebujesz porady

text: Opracowałem naszą obecną architekturę projektu i zacząłem ją rozwijać samodzielnie _(osiągając coś w rodzaju `wersji 40`)_. Pracujemy nad prostym frameworkiem routingu metra i mój projekt wydawał się być wykonany bardzo dobrze - _kilka głównych modeli, odpowiadające im widoki, główna logika i struktury danych zostały wymodelowane "tak jak powinny być" i całkowicie oddzielone od renderowania, zaimplementowano również część algorytmiczną poza głównymi modelami i miał niewielką liczbę punktów przecięcia._ Nazwałbym ten projekt skalowalnym, konfigurowalnym, łatwym do wdrożenia, współdziałającym głównie w oparciu o „interakcję z czarną skrzynką” i, cóż, bardzo ładnym. **Teraz co zostało zrobione:** * Rozpocząłem implementacje odpowiednich interfejsów, przeportowałem kilka wygodnych bibliotek i napisałem skróty implementacyjne dla niektórych części aplikacji. * Miałem dokument opisujący styl kodowania i przykłady użycia tego stylu kodowania (mój własny napisany kod). * Wymusiłem użycie mniej lub bardziej nowoczesnych technik programistycznych w `C++`, w tym kodu `no-delete` (opakowane za pomocą inteligentnych wskaźników) itp. * Udokumentowałem cel konkretnych implementacji interfejsów i sposób ich używania. * Testy jednostkowe _(głównie testy integracyjne, bo nie było dużo "rzeczywistego" kodu)_ oraz zestaw makiet dla wszystkich podstawowych abstrakcji. * * * _**Nie było mnie 12 dni**._ * * * **Co mamy teraz (projekt został opracowany przez 4 innych członków zespołu):** * 3 różne style kodowania w całym projekt _(przypuszczam, że dwóch z nich zgodziło się na użycie tego samego stylu :)_ , to samo dotyczy nazewnictwa naszych abstrakcji _(np.`CommonPathData.h`, `SubwaySchemeStructures.h`)_, które są w zasadzie nagłówkami deklarującymi niektóre struktury danych. * Absolutny brak dokumentacji dla ostatnio wdrożonych części. * To, co ostatnio mógłbym nazwać „abstrakcją jednego celu”, obsługuje teraz co najmniej 2 różne typy wydarzeń, ma ścisłe powiązanie z innymi częściami i tak dalej. * Połowa używanych interfejsów zawiera teraz zmienne składowe `(sic!)`. * Surowe użycie wskaźnika prawie wszędzie. * Testy jednostkowe wyłączone, ponieważ „`(Rev.57) Nie są potrzebne w tym projekcie`”. * ... _(to chyba nie wszystko)_. Historia zaangażowania pokazuje, że mój projekt został zinterpretowany jako przesada i ludzie zaczęli łączyć go z rowerami osobistymi i przerobionymi kołami, a potem mieli problemy z **integracją** fragmentów kodu. Teraz - projekt wciąż robi tylko niewielką część tego, co ma do zrobienia, mamy poważne problemy z integracją, zakładam pewne wycieki pamięci. * * * **Czy jest coś do zrobienia w tym przypadku?** Zdaję sobie sprawę, że wszystkie moje wysiłki nie przyniosły żadnych korzyści, ale termin jest już niedługo i musimy coś zrobić. **Czy ktoś miał podobną sytuację?** W zasadzie myślałem, że dobry (cóż, zrobiłem wszystko, co mogłem) start projektu prawdopodobnie doprowadzi do czegoś miłego, jednak rozumiem, że się mylę. Wszelkie porady byłyby mile widziane, przepraszam za mój zły angielski.


title: Gdzie powinienem przechowywać moje dane sesji użytkownika?

text: Czy powinienem przechowywać tylko identyfikator sesji użytkownika wraz z danymi w tabeli, czy powinienem przechowywać identyfikator sesji użytkownika w tabeli i uzyskać dostęp do tablicy danych z identyfikatora sesji użytkownika? i dlaczego? Co jest bardziej wydajne? Nie będę generował żadnych raportów.


title: Gdzie są wszystkie wzorce projektowe programowania funkcjonalnego?

text: Literatura programistyczna OO jest pełna wzorców projektowych. Większość książek o programowaniu obiektowym poświęca rozdział lub dwa na wzorce projektowe, takie jak fabryki i dekoratory. Więc jakie są równoważne wzorce w językach funkcjonalnych i dlaczego nikt jeszcze nie napisał o nich książki? Czy jest coś szczególnego w językach funkcjonalnych, co eliminuje potrzebę wzorców projektowych?


title: Gdzie mogę znaleźć dostępne bazy danych błędów/problemów z pełną historią wersji

text: Przeprowadzam badania i analizy dotyczące baz danych śledzenia błędów/problemów, a dokładniej tego, w jaki sposób programiści i zespoły programistów faktycznie z nimi współdziałają. To, czego szukam, obejmuje zrozumienie, jak te bazy danych zmieniają się w czasie. Więc czego **nie** potrzebuję na przykład: to baza danych wszystkich błędów jakiegoś projektu open source, ponieważ błędy istnieją dzisiaj. To, czego potrzebuję, to kompletny zestaw historii zmian dla każdego problemu/błędu w bazie danych. To pozwoliłoby mi wybrać konkretną datę i czas i powiedzieć, że tutaj jest lista wszystkich problemów/błędów, które istniały w tym momencie. W każdym razie znasz niektóre publicznie dostępne bazy danych problemów/błędów, które ujawniają te dane wersji? Idealnie, wersja wyglądałaby mniej więcej tak (pokazana dla pojedynczego błędu, z dwiema wersjami) WYDANIE PRI SEV PRZYPISANE DO ZMODYFIKOWANE WALIDUNTIL 1 2 2 mel 1 kwietnia 2010: 17:00 1 kwietnia 2010: 18:00 1 2 3 steve kwietnia 1-2010: 18:00 NULL


title: Nakładanie przycisków, gdy liczba musi zostać naciśnięta więcej niż raz podczas równania?

text: Jestem bardzo nowy w HTML5 (i ogólnie w kodowaniu internetowym) i próbuję stworzyć interaktywny kalkulator. Postaram się to wyjaśnić jak najdokładniej. Podstawową ideą jest to, że użytkownik użyje wstępnie ustawionych równań, aby dodać liczby za pomocą kalkulatora. Wszystkie przyciski kalkulatora będą miały animowany efekt „naciśnij”, ale przyciski, które należy nacisnąć, aby wykonać równanie, będą podświetlać się pojedynczo po każdym kolejnym naciśnięciu przycisku. Utknąłem w rozwijaniu tego, gdy liczba musi zostać wciśnięta więcej niż raz podczas równania... tj. 257+6732. - zauważ, że # 7 jest używany dwukrotnie. Oto moje dwa pomysły (oba się nie powiodły): 1. W tym przykładzie przycisk #7 musiałby wykonać dwie funkcje (1. podświetlenie przycisku plusa przy pierwszym kliknięciu, i 2. podświetlenie przy "trzech" przycisk po drugim kliknięciu). Wiem, że zakodowanie przycisku w celu wykonywania dwóch funkcji w ten sposób jest możliwe, jednak przycisk może być aktywny TYLKO w prawidłowych punktach równania. W pozostałej części równania kliknięcie przycisku #7 nie spowoduje dowolna funkcja i da tylko animowany efekt wciśnięcia LUB 1. Przycisk #7 może zostać zduplikowany i po pierwszym kliknięciu górny przycisk zniknie.Drugi przycisk #7 pozostanie ukryty do odpowiedniego czasu w trakcie równania. Ponownie, przycisk nr 7 miałby wyszarzony wygląd i dawałby animowany efekt wciśnięcia tylko wtedy, gdy przycisk nie jest używany. Czy ktoś może rzucić na to trochę światła? Wyciągam z tego włosy. projekt jest kompletny i wszystko wygląda fantastycznie, ale wartość tego projektu jest dodatkowa g do punktu sprzedaży, dopóki nie rozpracuję kodowania.


title: Historia użytkownika nie pasuje do sprintu

text: > **Możliwy duplikat:** > Scrum: jak radzić sobie z elementami backlogu, które są dłuższe niż jeden sprint Mam projekt ze złożonymi historyjkami użytkownika, których wdrożenie zajmuje dużo więcej czasu niż długość wiosny. Na przykład: historyjka użytkownika brzmi tak: > „Użytkownik może otrzymywać raport codziennie o 10:00” Ale za kulisami wymaga to około 2,5 miesiąca rozwoju, więc nie pasuje do naszych dwutygodniowych sprintów. Czy możesz podzielić się najlepszymi praktykami w tej sprawie?


title: Strukturyzacja folderów programu Visual Studio

text: Jeśli tworzę stronę internetową, kończę z folderami takimi jak "Kontrolery, Widoki, Modele, Rozszerzenia i Pomocnicy". Jeśli robię bibliotekę DLL, kończę z folderami odzwierciedlającymi przestrzenie nazw moich klas. Jeśli piszę aplikację komputerową, kończę z „Prezentacją i modelami”, gdzie modele są dalej dzielone przez przestrzenie nazw. Moje pytanie brzmi, gdzie jest wspólne miejsce do umieszczania klas, które niekoniecznie są częścią twojej logiki lub modelu? Na przykład, jeśli znajdę kod do konwersji XML na dowolny format, zwykle umieszczam go w klasie statycznej i umieszczam w folderze o nazwie narzędzia. To proste, ale kiedy przejdę do czegoś, co graniczy z logiką domeny, która konwertuje z XML na język specyficzny dla domeny, gdzie mam narysować granicę? To dość specyficzny przypadek, ale natrafiam na mnóstwo takich, w których jestem rozdarty, umieszczając go w folderze Utilities, folderze helpers itp. **To są wszystkie foldery, których używam, ale mam nadzieję, że koncepcja jest jasna, po prostu nie nie wiem, jak uporządkować mój kod, gdy logika domeny nie jest jasna.**


title: Jakie są wady projektowania klasy?

text: Kiedy czytałem książkę Efektywna Java, rozdział 4, spotkałem kilka zdań, ale nie mogę ich przemyśleć: 1. Jaka jest implementacja podczas projektowania klasy, dlaczego podklasa będzie polegać na szczegółach implementacji superklasy? 2. Dlaczego dziedziczenie przerwie hermetyzację?


title: Jak działa testowanie jednostkowe?

text: Staram się, aby mój kod był bardziej niezawodny i czytałem o testach jednostkowych, ale bardzo trudno jest znaleźć rzeczywiste użyteczne zastosowanie. Przykład z Wikipedii: public class TestAdder { public void testSum() { Adder adder = new AdderImpl(); asercja(adder.add(1, 1) == 2); asercja(adder.add(1, 2) == 3); asercja(adder.add(2, 2) == 4); asercja(adder.add(0, 0) == 0); asercja(adder.add(-1, -2) == -3); asercja(adder.add(-1, 1) == 0); asercja(adder.add(1234, 988) == 2222); } } Czuję, że ten test jest całkowicie bezużyteczny, ponieważ musisz ręcznie obliczyć pożądany wynik i go przetestować. Czuję, że lepszym testem jednostkowym byłby tutaj attach(adder.add(a, b) == (a+ b)); ale to jest po prostu kodowanie samej funkcji w teście. Czy ktoś może mi podać przykład, w którym testowanie jednostkowe jest rzeczywiście przydatne? FYI Obecnie koduję głównie funkcje „proceduralne”, które pobierają ~ 10 wartości logicznych i kilka intów i na tej podstawie dają mi wynik int. Czuję, że jedynym testem jednostkowym, jaki mógłbym zrobić, byłoby po prostu przekodować algorytm w test. edit: powinienem był też sprecyzować to podczas portowania (prawdopodobnie źle zaprojektowanego) kodu ruby (którego nie zrobiłem)


title: PHP przekazujące parametry do funkcji

text: Chcę przekazać parametr do funkcji jak poniżej dla jasności. Nie daje żadnego błędu. Ale czy to zła praktyka. Czy muszę tego unikać. test('','','',$d='tekst',''); test funkcji($a, $b, $c, $d, $e){ }


title: „Połowa wszystkiego, co wiesz, będzie przestarzała za 18-24 miesiące” = (Prawda czy fałsz? )

text: Po prostu natknąłem się na to i zastanawiałem się, czy ktoś ma sposób, aby udowodnić lub obalić to stwierdzenie: > Coś, o czym należy pamiętać… jaki jest okres półtrwania wiedzy w > zaawansowanych technologiach? Jest zgodny z prawem Moore'a: połowa wszystkiego, co wiesz, będzie > przestarzała w ciągu 18-24 miesięcy. **ŹRÓDŁO:** W ramach odpowiedzi **Craiga Tradera** na to pytanie „ **Jaka jest najskuteczniejsza rzecz, jaką zrobiłeś, aby poprawić swoje umiejętności programistyczne?**”


title: Artykuł badawczy na temat przetwarzania rozproszonego - Porady?

text: Piszę swój pierwszy artykuł badawczy na temat rozproszonych systemów pamięci masowej. Mamy też działający prototyp (częściowo). Projekt był kompletnym projektem wdrożeniowym, w którym przewidujemy pójście o krok dalej i dalszy rozwój. Tak więc moje pytania to: 1\. Jak powinienem zabrać się za tworzenie „szkieletu” lub zarysu papieru? Wszelkie wskazówki. 2\. Rozumiem, benchmarki i niektóre statystyki pracy systemów są ważne, ale na czym polega rozpad? Ile treści należy poświęcić algorytmom teoretycznym (które wdrożyliśmy, nie tworzyliśmy nowych) oraz danym benchmarkowym. 3\. Jaki format (IEEE, ACM itp.) wybrać i dlaczego? PS: Projekt tak naprawdę nie koncentruje się na tworzeniu czegoś nowego i unikalnego, ale ma na celu stworzenie aplikacji, która może być używana przez studentów i naukowców, aby lepiej zrozumieć dziedzinę studiów. Wydajność nie jest dla nas celem, ponieważ istnieje wiele wdrożeń open source (jakość produkcji) tej samej domeny. Pomyśl o Kaffe for JVM, to właśnie tworzymy dla rozproszonych systemów pamięci masowej.


title: Oddzielnie śledząc awarie i usterki oprogramowania

text: Niedawno skończyłem czytać kilka książek Geralda Weinberga na temat zarządzania oprogramowaniem wysokiej jakości. W nich zdecydowanie zaleca organizacjom rozróżnienie między **awariami** oprogramowania (które nazwalibyśmy błędami) a **błędami** oprogramowania, tj. błędami kodowania. Zaleca również, aby organizacja oddzielnie śledziła awarie i usterki, łącząc jedną lub więcej z tych pierwszych z jednym z tych ostatnich. Konkretne terminy, których używa, to **Incydent dotyczący problemu z systemem** w przypadku zgłoszenia awarii i **Analiza awarii systemu** w przypadku pracy, która prowadzi do wykrycia usterki. Szukałem w Internecie dalszych odniesień do tych terminów, ale nic nie znalazłem. Czy ktoś pracuje w organizacji, w której awarie i usterki są rejestrowane osobno? A jeśli tak, czy istnieją narzędzia, które pozwolą Ci to zrobić bezproblemowo i połączą awarie z usterkami? Czy to warte zachodu?


title: Najszybszy sposób na skonfigurowanie serwera JSON na moim komputerze lokalnym

text: Jestem programistą front-end. Do wielu eksperymentów muszę mieć serwer, który komunikuje się w formacie JSON z moją aplikacją po stronie klienta. Zwykle ten serwer jest prostym serwerem, który odpowiada na moje POST i GET. Na przykład muszę skonfigurować serwer, który zapisuje, modyfikuje i odczytuje dane z "bibliotecznej" bazy danych w następujący sposób: * `POST /books` tworzy książkę * `GET /book/:id` pobiera książkę i tak dalej.. Jaki jest w tym przypadku najszybszy w konfiguracji i najłatwiejszy stos technologiczny dla bazy danych i serwera? Jestem otwarty na korzystanie z Ruby, Nodejs i wszystkiego, co szybko i łatwo wykona tę pracę. Czy jest jakiś framework (w dowolnym języku), który robi dla mnie takie rzeczy?


title: Wykorzystanie przesłanego kodu w produkcie komercyjnym

text: Zrobiłem produkt, na którym korzystałem na licencji GPL, a teraz otrzymuję pull requesty od innych autorów. Produkt posiada również mniej restrykcyjną licencję komercyjną dostępną do zakupu. Czy mogę dołączyć przesłany kod do produktu objętego licencją komercyjną?


title: Mój diagram klas UML jest zbyt skomplikowany, co mam zrobić?

text: Klasy mają ze sobą 10-20 linków i nic nie widać w tym bałaganie diagramu Niestety skończyliśmy już kodowanie i jeśli zmienimy diagram klas, musimy wszystko przerobić


title: Dlaczego w algorytmie Kruskala unika się pętli?

text: Czytałem algorytm Kruskala tak, jak jest przedstawiony na Wikipedii. Tam jest napisane, że jest to algorytm w teorii grafów, który znajduje minimalne drzewo rozpinające dla połączonego grafu ważonego. Ale przeglądając przykłady ilustrujące ten algorytm nie jestem w stanie zrozumieć, dlaczego unika się _pętli_ poprzez zaznaczenie niektórych krawędzi na czerwono. Jaki jest tego powód?


title: Logika programowania do grupowania działań użytkowników, takich jak Facebook

text: Dlatego staram się opracować kanał aktywności dla mojej witryny. Zasadniczo, jeśli połączę kilka działań w kanał, otrzymałbym coś takiego, jak poniżej. > **Chris** jest teraz znajomym z **Mark** > > **Chris** jest teraz znajomym z **Dave** Chcę jednak ładniej grupować te podobne posty, aby kanał się nie wyświetlał podać nadmiar informacji... Np. > **Chris** zaprzyjaźnia się z **Markiem** , **Davem** i **4 innymi**. Masz jakieś pomysły, jak mogę podejść do tego logicznie? Używam Classic ASP na serwerze SQL. Oto instrukcja `UNION`, którą mam do tej pory: SELECT U.UserID As UserID, L.UN As UN,Left(U.UID,13) As ProfilePic,U.Fname + ' ' + U.Sname As FullName, ' powiedział ' + WP.Post AS Activity, WP.Ctime FROM Users AS U LEFT JOIN Loginy L ON L.userID = U.UserID LEFT OUTER JOIN WallPosts AS WP ON WP.userID = U.userID GDZIE WP.Ctime NIE JEST NULL UNION SELECT U.UserID As UserID, L.UN As UN,Left(U.UID,13) As ProfilePic,U.Fname + ' ' + USname As FullName, 'commented' + C.Comment AS Activity, C.Ctime FROM Użytkownicy AS U LEFT JOIN Logowania L ON L.userID = U.UserID LEFT OUTER JOIN Komentarze AS C ON C.UserID = U.userID WHERE C.Ctime NIE JEST NULL UNION SELECT U.UserID As UserID, L.UN As UN ,Left(U.UID,13) As ProfilePic, U.Fname + ' ' + USname As FullName, 'połączone z ' + (SELECT Użytkownicy.Fname + ' ' + Użytkownicy.Sname FROM Użytkownicy WHERE userID = Cn.ToUserID) + '' AS Aktywność, Cn.Ctime FROM Użytkownicy AS U LEFT JOIN Loginy L ON L.userID = U.UserID LEFT OUTER JOIN Połączenia AS Cn ON Cn.UserID = U.userID GDZIE CN.Ctime NIE JEST NULL


title: Jak naszkicować niestandardowe języki programowania, nietekstowe?

text: Wiele razy używałem i tworzyłem języki specyficzne dla domeny (np. używając yacc/lex). Normalnie zaczęlibyśmy od gramatyki napisanej w BNF i kilku słów kluczowych. Jest to łatwe do zrobienia, łatwe do udostępnienia. Ostatnio zacząłem pracować z językami programowania z diagramami - najbliższym odpowiednikiem są schematy obwodów w elektronice, gdzie bardzo trudno jest wyrazić idee w tekście, ale bardzo łatwo wyrazić je w schematach połączeń. Jest to dla mnie nowy i nowatorski problem: jak skutecznie wyrażać te mini-języki i dzielić się nimi z kolegami? (tj. jak programować w nich tablicę. Rzeczywiste programowanie jest łatwe - masz pod ręką fizyczne komponenty) Czy są do tego narzędzia? Lub dobre/najlepsze praktyki (np. odpowiednik „zawsze używaj BNF jako punktu wyjścia dla nowego DSL i używaj narzędzi takich jak yacc do generowania parsera, kompilatora itp.”). Mój googlefu okazuje się słaby - wszystko, co otrzymuję, to fałszywe alarmy dotyczące schematów połączeń i edytorów UML (ponieważ są to języki niestandardowe, UML wydaje się nie pomagać)


title: "błąd" w tekście C++11 autorstwa Stroustrupa?

text: Znalazłem pozorną sprzeczność w tekście c++ związaną z wynikiem funkcji `c_str()` działającej na `std:strings` (w moim egzemplarzu definicja i sprzeczność znajdują się na p1040). Najpierw definiuje funkcję `c_str()` jako coś, co tworzy łańcuch w stylu „C” (zakończony zerem), ale później mówi o tym, w jaki sposób wartość c_str w C++ może osadzić w stylu „C” koniec -terminatory ciągów (tj. NUL) osadzone w ciągu (który jest zdefiniowany przez zakończenie NUL). Um... czy ktoś jeszcze czuje, że jest to „rozciągnięcie” definicji struny C poza jej definicję? Tj. Myślę, że oznacza to, że gdybyś spojrzał na funkcję `length()` jako zastosowaną do `łańcucha`, pokaże inny koniec ciągu niż przy użyciu definicji z-ciągu w C -- taki, który może zawierać dowolny znak z wyjątkiem NUL i jest zakończony przez NUL. Prawdopodobnie nie muszę się tym martwić w moich programach, ale wydaje się, że jest to subtelne rozróżnienie, które sprawia, że C++ `c_str` nie jest tak naprawdę napisem **'C'**. Czy źle rozumiem ten problem? Dziękuję!


title: Aplikacja na iPhone'a/Androida – tworzenie chatroomu – jaki framework i hosting potrzebuje?

text: Mam pewne doświadczenie w rozwoju iPhone'a i Androida, ale teraz walczę z rozwiązaniem nowej klasy problemów: aplikacji, które obejmują funkcję czatu klient/serwer. Oznacza to aplikację, w której ludzie mogą wymieniać tekst przez Internet, bez konieczności ciągłego „wyciągania” treści z serwera. Aby ten problem nie mógł zostać rozwiązany za pomocą normalnej witryny php/mysql, na serwerze musi być uruchomiona jakaś aplikacja, która jest w stanie wysłać wiadomość z serwera na telefon, zamiast mieć telefon do sprawdzania nowych wiadomości co 10 sekund. Więc szukam sposobów rozwiązania różnych problemów tutaj: * Jakiego frameworka powinienem użyć po obu stronach (telefon / serwer)? Powinna to być jakaś biblioteka, która nie przeszkadza mi w pisaniu płatnych aplikacji. Powinno być również możliwe posiadanie tego samego serwera dla wersji aplikacji na iPhone'a i Androida. * Jakiego serwera / rozwiązania hostingowego potrzebuję z jakimi funkcjami, po prostu nie mam doświadczenia z aplikacją serwerową, która może obsługiwać i inicjować wiele połączeń i jest hostowana na sprzęcie, który jest zawsze online Próbowałem znaleźć zasoby online, ale nie mogłem do tej pory albo biblioteki miały zły rodzaj licencji/języka, albo po prostu nie rozumiałem. Czasami był fajny samouczek, ale dla różnych potrzeb, takich jak czat peer2peer przez sieć lokalną. To samo z serwerem i problemem z hostingiem, nie jestem pewien, od czego zacząć, dzwonię po pomoc i obiecuję, że uzupełnię tę stronę o notatki dotyczące doświadczenia, które otrzymam. Oczywiście idealnym rozwiązaniem byłoby znalezienie samouczka, którego przegapiłem, zawierającego kod klienta, kod serwera i darmowy serwer skalowalny. Biorąc to pod uwagę, jeśli widzę coś tak dobrego, prawdopodobnie oznacza to, że ponownie zjadłem niewłaściwy rodzaj grzyba. Tak więc, jeśli to się nie uda, każda wskazówka, która mogłaby mi pomóc w tym poszukiwaniu, byłaby bardzo doceniana.


title: Jaka jest dobra dynamika, która może poprawić naukę na kursie programowania internetowego?

text: ~~W mojej firmie rozpoczynamy kurs za darmo, który obejmie 4 moduły (`Standardy HTML/CSS i W3C, Javascript i jQuery, PHP, MySQL`) w ciągu 7 miesięcy. Głównym celem jest możliwość szkolenia nowych potencjalnych pracowników i jednoczesne dzielenie się wiedzą z pasjonatami programowania, choć jest to bardzo spersonalizowana (8-10 osób). Dynamika to: jedna 4-godzinna lekcja (z przerwą) co tydzień i duża praca domowa, która obejmuje badanie i praktykę. Również raz w tygodniu studenci przychodzą do biura, aby popracować nad przykładami z życia i uzyskać pomoc w odrabianiu zadań domowych. To byłby trzeci raz, kiedy to zrobimy. Kiedy zaczynaliśmy, nie byliśmy nauczycielami, ale ogólnie byliśmy zadowoleni z wyników. Jednak zawsze jest miejsce na ulepszenia, zauważyliśmy na przykład pewne trudności przy próbie wprowadzenia programowania po raz pierwszy (`javascript`) również przy przechodzeniu z programowania opartego na zdarzeniach do programowania proceduralnego (`php`). Moje pytanie brzmi, czy są jakieś porady lub wskazówki oparte na doświadczeniu, których możesz nam udzielić, aby poprawić jakość nauki? Jakie zasoby powinniśmy wziąć pod uwagę przy nauczaniu tworzenia stron internetowych od zera?~~ > **AKTUALIZACJA** : Aby szerzej zadać pytanie, jaka jest dobra dynamika (lub > porady), która może usprawnić proces uczenia się w sieci kurs programowania?


title: Wyodrębnianie interfejsu użytkownika z domeny

text: Mój tekst kursu sugeruje utworzenie klasy „fasady”, aby całkowicie wyabstrahować interfejs użytkownika z warstwy domeny. Oznacza to, że interfejs użytkownika używa tylko podstawowych typów, a jeśli potrzebuje odniesienia do obiektu domeny, zna go tylko jako „Obiekt”. Aby dać ci pomysł, to może wyglądać tak (przykład w Javie, ale równie dobrze może dotyczyć innych języków): public class Facade { ... public Object getLastOrder(Object customer) { Customer castCustomer = (Klient)klient; Ostatnie zamówienie = domainController.getLastOrder(castCustomer); powrót ostatnieZamówienie; } } Uwaga: Nie jestem pewien, czy jest to w rzeczywistości rodzaj wzorca fasady (słyszałem, że gdzie indziej jest inaczej definiowany), ale nie chcę _zbyt_ grzęznąć w terminologii. W porównaniu do niczego (posiadanie interfejsu użytkownika bezpośrednio wywołuje kontroler domeny), widzę, że ma to tę zaletę, że interfejs użytkownika jest znacznie bardziej niezależny od zmian w implementacji modelu domeny. Zawsze istnieje ryzyko, że bardzo poważne zmiany (takie jak brak niczego reprezentującego zamówienie) zepsują wszystko, ale wydaje się, że jest to w stanie wchłonąć wszystko inne. Wydaje się jednak, że poświęca się sprawdzanie typów, a to oznacza, że uzyskanie nawet prostych właściwości obiektów domeny jest bardziej zawiłe niż jest to konieczne (`anOrder.getNumber()` vs `facade.getOrderNumber(anOrder)`). * * * Moją własną myślą było, że byłoby lepiej, gdyby interfejs użytkownika odwoływał się do obiektów domeny w kategoriach interfejsów, a nie zwykłych obiektów. Na przykład: public class Fasada { ... public IOrder getLastOrder(IClient klient) { Klient castCustomer = (Klient)klient; Ostatnie zamówienie = domainController.getLastOrder(castCustomer); powrót ostatnieZamówienie; } } lub nawet jeśli sam kontroler domeny ujawnił tylko typy interfejsów, całkowicie zapominając o „fasecie”. O ile widzę, jest to lepsze z punktu widzenia sprawdzania typu. Poważne zmiany (np. usunięcie `Order` z systemu) mogą coś zepsuć, ale dotyczyło to rozwiązania `zwykłego `Object``. Wszystkie metody, które są stabilne (np. `anOrder.getNumber()`) mogą być określone w interfejsach, więc wywoływanie ich z interfejsu użytkownika jest prostsze i bardziej zorientowane obiektowo. Oczywiście dotyczy to tylko metod, których sygnatury są stabilne, aby uniknąć zepsucia interfejsu użytkownika, ale implementacja nadal może się zmieniać. Czy jest coś, czego mi brakuje? Czy moje rozwiązanie „interfejsowe” ma jakieś wady, których nie zauważyłem? A może jest zupełnie inne, lepsze rozwiązanie, o którym nie pomyślałem?


title: Właściwa struktura istniejącego projektu w architekturze MVC

text: Zajmuję przestarzały klasyczny projekt asp do bardziej nowoczesnej technologii (ostatnio pracowałem z ASP.NET MVC, więc użycie tej koncepcji utkwiło mi w głowie), ale próbuję wymyślić, jak ustrukturyzować projekt . Pomysł polega na tym, że firma świadczy usługę klientom, ale usługa jest umieszczona na stronie internetowej firmy (zamiast strony klienta) i ma pewne cechy marki/specyfikę dla klienta. Załóżmy, że usługa ma 4 lub 5 stron/kroków, ale kilka z tych stron/kroków można dostosować dla każdego klienta. Więc co bym wolał to: `*/krok1` `*/krok2` `*/krok3` `*/krok4` `*/krok5` Gdzie `*` to nazwa `klienta`, ale kroki są wielokrotnego użytku. To nie wydaje się pasować do standardowej struktury MVC, albo nie widzę lasu dla drzew. Nie chciałbym mieć kontrolera dla każdego `klienta` i powtarzać czynności dla `n` klientów. Wolałbym mieć 5 kroków, w których „krok 2” lub „krok 3” można by rozszerzyć dla klienta X, rozszerzyć o więcej dla klienta Y i pozostawić w spokoju dla klienta Z. Jeśli firma ma 100 klientów, którzy chcą standardowych 5 kroków (nie dostosowanie), nie chciałbyś 100 kontrolerów obsługujących 5 kroków (500 stron `.cshtml` w projekcie)... prawda? Jak właściwie to zaprojektować?


title: Jak powinienem nazwać mniej niż i podobne operatory?

text: Większość języków programowania obsługuje operatory podobne do poniższych 6, które są pisane tutaj jak w C. == != < <= > >= Znam kilka terminów używanych do uwzględnienia wszystkich tych operatorów. W przybliżeniu w mojej postrzeganej kolejności najlepszy-pierwszy są to... Lista **EDYTUJ** naprawiona po odpowiedzi Jerry'ego Coffinsa... * Operatory relacyjne * Operatory porównania * Operatory warunkowe * Operatory względne Jakie są powody preferowania/unikania każdego z nich termin.


title: Różni klienci w tym samym rozwiązaniu ASP.NET?

text: Prowadzę stronę asp.net działającą na żywo z jej specyficznym stylem i specyficzną zawartością. Z tej witryny zbudowaliśmy kolejną witrynę z tą samą logiką (w innych projektach), ale z innym stylem i inną zawartością (i różnymi plikami) w tym samym rozwiązaniu. Zmieniliśmy opcje uruchamiania z Default.aspx na folder główny tej drugiej witryny. Teraz chcę zbudować bardziej ogólną witrynę, która będzie działać dla kilku klientów, korzystając z tej samej logiki i warstwy danych — ale z innym stylem i zawartością. Obecne witryny w dużym stopniu opierają się na SQL Server 2008 R2, gdzie znajduje się większość zawartości — ale nie cała. Cała zawartość może zostać umieszczona w bazie danych z pewnym nakładem pracy, jeśli zajdzie taka potrzeba - zwłaszcza jeśli otrzymamy bardziej ogólną witrynę. Moim pomysłem jest użycie innego pliku startowego dla każdego nowego klienta, takiego jak: Default_Customer1.aspx, Default_Customer2.aspx itp., ale nie jestem pewien, czy jest to właściwy sposób. Nie chcę mieć różnych rozwiązań dla każdego klienta. Wiem, że wszyscy klienci otrzymają cały skompilowany kod, nawet jeśli część kodu nigdy nie zostanie wykorzystana przez tego konkretnego klienta (który ma swoje specyficzne potrzeby). Więc co mam zrobić? Czy powinienem spróbować użyć różnych opcji startu (plików) dla każdego klienta, jak wspomniano powyżej, czy może jest lepszy sposób obsługi różnych klientów w tym samym rozwiązaniu?


title: Symulacja mnożenia w języku japońskim - czy program rzeczywiście może poprawić szybkość obliczeń?

text: Na SuperUser zadałem (być może głupie) pytanie o procesory za pomocą skrótów matematycznych i chciałbym rzucić okiem na możliwość **aplikacji oprogramowania** tego pojęcia. Chciałbym napisać symulację japońskiego mnożenia, aby uzyskać punkty odniesienia dla dużych obliczeń przy użyciu skrótu w porównaniu z tradycyjnym mnożeniem procesora. **Jestem ciekaw, czy to ma sens.** ![tutaj wpisz opis obrazu](http://i.stack.imgur.com/swF5p.png) **Moje pytanie:** Chciałbym wiedzieć, czy skrót matematyczny, jak opisano powyżej, jest w ogóle skrótem. To jest kwestia koncepcji programistycznej. Wykorzystując symulację mnożenia japońskiego, ** czy program rzeczywiście może poprawić szybkość obliczeń? A może od samego początku jestem skazany?** * * * **Odpowiedź na to pytanie nie jest _wymagana_ do określenia, czy eksperyment się powiedzie**, ale raczej czy jest to logicznie możliwe w dowolnym programie, używając tej koncepcji jako przykładu. * * * **Moja teoria** mówi, że ponieważ dodawanie jest obliczane szybciej niż mnożenie, symulacja mnożenia japońskiego może w rzeczywistości pozwolić programowi na mnożenie (dużych) liczb szybciej niż może to zrobić jednostka arytmetyczna procesora. Myślę, że byłoby to bardzo interesujące odkrycie, gdyby okazało się to prawdą. Gdyby w mnożeniu liczb o **dowolnym ogromnym rozmiarze** skrótem było obliczenie wyniku za pomocą mniejszej liczby instrukcji (lub szybszej) niż tradycyjne mnożenie ALU, uznałbym eksperyment za sukces.


title: Regulamin w instalatorze lub na stronie ok

text: Obecnie jestem w trakcie pakowania mojej pierwszej aplikacji c# wpf. Aplikacja zostanie opłacona, więc wymaga od użytkownika zgody na pewne warunki. Czy najlepiej jest mieć je wbudowane w instalator? Czy mogę uniknąć sytuacji, w której użytkownik zaakceptuje je w witrynie, w której je kupuje, podczas zakupu i przed pobraniem aplikacji?


title: Idealna struktura danych/techniki przechowywania ogólnych danych harmonogramu w C#

text: Próbuję zaimplementować obiekt harmonogramu generycznego w C# 4, który wyprowadza tabelę w HTML. Podstawowym celem jest pokazanie jakiegoś obiektu wraz z różnymi atrybutami oraz tego, czy w danym czasie coś robił. Program planujący wygeneruje tabelę wyświetlającą nagłówki: `Pole szczegółów 1 ....N| Date1.........N` Chcę zainicjować tabelę z datą początkową i datą końcową, aby utworzyć zakres dat (najlepiej byłoby również zrobić inne okresy, np. godziny, ale to nie jest konieczne). Następnie chcę dostarczyć ogólny obiekt, który będzie miał skojarzone zdarzenia. Jeśli obiekt ma zdarzenia w okresie chcę, aby komórka tabeli była oznaczona Np. Nazwa Wzrost Waga 01.01.2011 02.01.2011 01.03.20011...... 31.01.2011 Ben 5.11 75 X X X Bill 5.7 83 X X Utworzyłem harmonogram z datą rozpoczęcia=1/1/2011 i data końcowa 31.01.2011 Chciałbym nadać jej obiekt mojej osoby (już posortowany) i powiedzieć, które pola chcę wyświetlić (Nazwa, Wzrost, Waga) Każda osoba ma zdarzenia, które mają datę początkową i końcową. Niektóre wydarzenia zaczynają się i kończą poza czasem, ale nadal powinny być pokazywane w odpowiednim dniu itp. Idealnie chciałbym móc zapewnić mu również obiekt rezerwacji klasowej. Więc staram się zachować ogólne. Widziałem implementacje Javasript itp. podobnych. Jaka byłaby do tego dobra struktura danych? Wszelkie przemyślenia na temat technik, których mógłbym użyć, aby uczynić to ogólnym. Nie radzę sobie z lekami generycznymi, więc doceniam wszelkie wskazówki.


title: Środowisko programistyczne do zarządzania wieloma bazami danych Oracle

text: Pracuję w środowisku korporacyjnym, w którym mamy aplikacje, które muszą działać z wieloma bazami danych Oracle. Deweloperzy mogą potrzebować zarządzać wieloma rocznikami tych baz danych, aby obsługiwać różne dane testowe lub diagnozować błędy w różnych wersjach kodu. Obecnie dysponujemy ograniczonym zestawem środowisk testowych skonfigurowanych na „prawdziwych” serwerach Oracle w centrum danych. Żonglujemy nimi między grupami ds. rozwoju i zapewniania jakości i z tego powodu powstaje wiele konfliktów i nieefektywności. Przyglądam się Oracle Express Edition, które pozwoliłoby mi na rozkręcenie lokalnej bazy danych Oracle. Jest to podobne do przepływu pracy, który najczęściej widuję w SQL Server. Deweloperzy pracują na maszynie lokalizacyjnej, dopóki nie będą gotowi do integracji, a następnie wprowadzają zmiany w bazie danych do środowisk integracyjnych / QA. Jednak z tego, co przeczytałem, wynika, że Oracle XE obsługuje tylko jedną instancję bazy danych na raz. Więc jeśli mam aplikację, która korzysta z dwóch różnych baz danych, nie mogę uruchomić obu z nich na moim lokalnym komputerze. Czy to jest poprawne? Czy edycje Oracle Standard lub Personal omijają to ograniczenie? Gdybym miał jedną z tych zainstalowanych lokalnie, jak trudno byłoby uruchomić wiele baz danych na tej samej maszynie deweloperskiej? Jak sklepy deweloperskie radzą sobie z tworzeniem aplikacji względem Oracle, gdzie muszą używać kilku różnych instancji Oracle dla swoich aplikacji?


title: Czy Silverlight jest odpowiedni dla internetowego interfejsu użytkownika produktu klasy korporacyjnej?

text: Nasz zespół pracuje obecnie nad stworzeniem HIS (Szpitalnego Systemu Informacyjnego) nowej generacji, składającego się z ponad 30 modułów (obecnie szacowanych na 400 osobo-miesięcy), które mogą być hostowane w centralnej lokalizacji i dostępne w różnych lokalizacjach geograficznych. Stąd głównymi NFR UI (wymagania niefunkcjonalne) byłyby * Kompatybilność z wieloma przeglądarkami * Szybkie ładowanie stron z bogatym GUI * Możliwość integracji z urządzeniami sprzętowymi, takimi jak skanery biometryczne, czytniki biometryczne itp. * Łatwość tworzenia, konserwacji (włączanie zmian), krótsze cykl rozwoju * Możliwość otwierania wielu formularzy w tym samym oknie przeglądarki (bez uruchamiania dodatkowych okien) **Zalety:** 1. **UI będzie niezależny od przeglądarki** , nie musimy się martwić o to, aby nasze strony działały z IE 7, 8, 9++/ Chrome 8, 9, 18++/ Mozilla Firefox (obecnie wiele wysiłku włożonego w sprawdzanie zgodności i naprawę) 2. Moglibyśmy prawdopodobnie uczynić naszą aplikację bardziej modułową, w przeciwieństwie do monolitycznej Aplikacja ASP.Net 3. Wykorzystanie izolowanej pamięci masowej na komputerze klienckim **Wady:** 1. Problemy z wyciekiem pamięci Silverlight. Zmierzyliśmy się z nimi w kilku próbkach, które zbudowaliśmy przy użyciu SL i mamy ten sam problem w starszej aplikacji XBAP. Poniższe linki uzasadniają strach http://davybrion.com/blog/2010/08/silverlight-getting-worse-when-it-comes-to-memory-leaks/ http://stackoverflow.com/questions/5091636 /silverlight-4-memory-leaks 2. Microsoft nie wydaje się być bardzo zainteresowany przyszłością SL. Wydaje się, że inwestują więcej w HTML 5. Przyszłe wydania SL 5 lub 6 również są niepewne. http://support.microsoft.com/gp/lifean45 http://www.zdnet.com/blog/microsoft/microsoft-our-strategy-with-silverlight-has-shifted/7834 http://www.zdnet. com/blog/microsoft/will-there-be-a-silverlight-6-and-does-it-matter/11180 3. Moduły HIS otworzyłyby się jako wiele kart w tym samym oknie przeglądarki (mówimy o maksymalnie 8 kart otwiera się jednocześnie). Jak bardzo obciążyłoby to wystąpienie przeglądarki i jak wpłynęłoby to na problem z wyciekiem pamięci? 4. Krzywa uczenia się dla programistów ASP.Net 5. Kolejny link do stosu na SL Silverlight, Wpf Web App (xbap) lub Click Once? Plusy i minusy **Neutralne** 1. Zgodność z SEO nie jest problemem _**Moje zapytania są?_** 1. Czy użyłbyś SL, znając powyższe (i inne) plusy i minusy 2. W przypadku, gdy używamy Wzorzec MVVM do zbudowania produktu z SL jako front-endem, czy możliwe byłoby zastąpienie UI jutro innym UI (ASP.Net lub coś innego). Rozumiem, że przeróbka byłaby znacząca. Co myśli społeczność? 3. Spędziliśmy dużo czasu na powyższej analizie (i tworzeniu dowodu koncepcji). Czy jest jakiś ważny fakt / decydujący czynnik, którego przeoczamy? _Proszę nie oznaczać tego jako duplikatu, ponieważ w to ćwiczenie włożono wiele badań i wysiłku._ PS: Spędziliśmy ostatnie 6 miesięcy na tworzeniu produktu przy użyciu formularzy internetowych ASP.Net (przy użyciu wzorca MVP) i teraz jesteśmy patrząc na zmianę technologii z powyższych powodów.


title: Projektowanie przypadków testowych - czy dla wszystkich testów pozytywnych istnieją również te negatywne?

text: We wszystkich artykułach, które przeczytałem, jest niejasność, więc chciałbym zapytać o następujące wymaganie: **Wymaganie: Jako mistrz gry mogę uzyskać dostęp do menu GM, wpisując „menuInvoke”.** Próbuję to zrobić jak zwykle. player - czy **to test negatywny, czy nadal pozytywny pod względem weryfikacji wymagania?** Ponieważ niektórzy autorzy twierdzą, że testowanie negatywne oznacza zajmowanie się danymi wejściowymi nieznanymi w specyfikacji, co nie miałoby miejsca, ponieważ specyfikacja mówi, że musisz być Mistrz Gry, co oznacza, że nie jest to dozwolone dla innych. Jeśli jednak tak myślisz, zawsze jest to niejawne: zakres 1-1000 oznacza, że nie można wprowadzić niczego innego, ale testujemy to jako test negatywny. Przykład niejednoznaczności: system logowania. Niektórzy twierdzą, że podanie nieprawidłowego hasła w celu otrzymania błędu logowania jest testem negatywnym, ale zgadzam się z innymi - jest to zwykły pozytywny test, ponieważ wymaganie zdecydowanie określa, że tylko użytkownik z poprawnym hasłem może się zalogować.


title: Jak radzisz sobie ze swoim marginalizowanym talentem?

text: W przeszłości czułem się sfrustrowany niektórymi pracami, ponieważ kierownictwo marginalizowało mój talent, nawet po kilku latach „udowadniania” im tego. Rzeczy takie jak przepisanie jednej metody od podstaw (wystarczy zbudowanie parametrów poleceń i wykonanie procedury składowanej, zwrócenie wyniku), zamiast używania kodu, który napisałem, czyli w produkcji w wielu aplikacjach, tylko dlatego, że to napisałem. I marne wymówki BS, których użyli, aby to usprawiedliwić. Zabawne jest to, że jestem JEDYNYM w firmie, który przestrzega standardów kodowania, wzorców i praktyk, analiz, testów jednostkowych i zakresu kodu! Jak radzisz sobie z pracą, która sprawia, że czujesz się, jakbyś marnował swój talent i był marginalizowany?


title: Licencje i umowy EULA

text: Po pierwsze, czy jest jakaś różnica między licencją a umową EULA? Po drugie, czy programista może napisać własną licencję, czy jest jakieś specjalne prawne gówno, które musisz zrobić. Wreszcie, czy jest jakiś prawnik, który specjalizuje się w pisaniu licencji na oprogramowanie? Jakiego prawnika zatrudniłbyś do zrobienia czegoś takiego?