title: TDD - Wykonywanie asercji o drzewach wyrażeń C#

text: Jak przetestowałbyś metodę PerformUpdate w poniższym przykładzie? Jest to (bardzo) uproszczona wersja kodu, który wykonuje aktualizacje w bazie danych, w której schemat jest dynamiczny i reprezentowany przez kolekcję pól. EDYCJA: Jeśli nie jest jasne, o co pytam, chciałbym wiedzieć, jak różni deweloperzy podeszliby do testowania\mocowania tego kodu z perspektywy TDD. Na przykład, jakie testy napisałbyś, z czego byś kpił, jak zweryfikowałbyś wywołania metod z odpowiednimi argumentami? interfejs publiczny IUnitOfWork { IEfRepository<Field> Pola { get; } } public class UpdateService { private IUnitOfWork unitOfWork; prywatny IDataUpdater dataService; public Activity PerformUpdate(App app, IDictionary<string, object> data) { var fields = this.unitOfWork.Fields.FindWhere(o => o.App.Identifier == app.Identifier); var aktywność = this.dataService.PerformUpdate(pola, dane); działalność powrotna; } }


title: Jak określić lepszy projekt?

text: Co muszę wziąć pod uwagę, aby określić, który projekt wybiorę, gdy mam następujący scenariusz? Do rozważenia są dwa przypadki; * Biorąc pod uwagę T klasę generyczną, muszę coś zrobić z wieloma Tami (iterowanie każdego z nich). * W innych przypadkach z tym samym T muszę przetworzyć tylko raz. W obu przypadkach, niezależnie od tego, czym jest T i jak będę musiał to przetworzyć, klasa zawierająca T będzie zachowywać się dokładnie tak samo, dlatego nie muszę się martwić o szczegóły implementacji. Możliwe są 2 rozwiązania i nie wiem, jakimi wskazówkami powinienem się kierować, aby się między nimi zdecydować. * Zawsze uważaj za Listę, to dla uproszczenia, ponieważ nie ma różnicy między Listą T a tylko T. * Używaj dziedziczenia; pierwsza klasa potomna otrzyma Listę T i będzie z nią pracować, druga jedno T i będzie z nią pracować. Czy są jakieś dobre praktyki lub artykuł, który pomoże w rozstrzygnięciu takich przypadków? Szukam czegoś takiego jak ten artykuł, lub twojego doświadczenia. * * * **AKTUALIZACJA:** Klasa, którą projektuję, to nie T, ale jej kompozytor.


title: Lepsze trzymanie się MDI czy nauka WPF?

text: Mam osobisty projekt, nad którym wkrótce zacznę pracować. Będzie on oparty na bazie danych i będzie miał różne ekrany, z których operator może chcieć korzystać. Pierwszą rzeczą, o której pomyślałem, było to, że interfejs MDI byłby idealny do tego, czego chcę. Pracuję z Następnie zacząłem badać WPF - częściowo dlatego, że jedną z kontrolek, których chcę użyć, jest kontrolka WPF. Nie pracowałem zbyt wiele z WPF i zastanawiam się, czy warto spróbować się go nauczyć, zamiast korzystać z WinForm i MDI? W mojej obecnej sytuacji używam WinForm i MDI do mojej codziennej pracy. Istnieje możliwość, że w przyszłości będę pracować z WPF, ale jeśli tak się stanie, będę miał czas na naukę w pracy. Czy lepiej jest po prostu trzymać się tego, co wiem, aby uruchomić mój projekt, czy też WPF jest znacznie lepszym ulepszeniem, niż warto iść tą drogą? Jeśli tak, jakie dokładnie korzyści mogę znaleźć w WPF?


title: Dlaczego platformy mobilne nie obsługują pokoleniowego zbierania śmieci?

text: Zarówno Windows Phone/Xbox, jak i Android nie obsługują generacyjnego zbierania śmieci. To frustrujące dla wielu programistów. Wydaje się, że jest to uzasadniony powód inżynieryjny, ale nie mogę tego rozgryźć. Obecne telefony mają więcej pamięci i prawdopodobnie lepsze procesory niż komputery stacjonarne/laptopy z .NET 1.1 z generacją GC w 2001 roku i nie mogę wymyślić żadnych powodów, dla których procesory ARM byłyby gorsze w generacyjnym GC niż x86. Mniejsza jest również potrzeba wielozadaniowości na telefonach i konsolach, więc jest stosunkowo więcej wolnego miejsca na stercie. Więc co daje? **Edycja:** Kilka punktów do wyjaśnienia: * Te platformy używają wyrzucania śmieci wyłącznie dla aplikacji, więc moje pytanie nie dotyczy tego, dlaczego GC nie jest obsługiwany; moje pytanie dotyczy tego, dlaczego _pokoleniowe_ wyrzucanie śmieci nie jest. * Powodem, dla którego ludzie są sfrustrowani brakiem generacyjnego GC jest to, że nie-pokoleniowe GC jest wyjątkowo nieefektywne. (Oznacza to, że żywotność baterii nie jest powodem.) * Wierzę, że istnieje uczciwy techniczny powód braku wsparcia GC. To nie jest pytanie retoryczne.


title: Alternatywa dla SIP, komunikacja głosowa w systemie Android

text: Czy istnieje jakaś alternatywa dla protokołu SIP? Chcę zaimplementować opcję czatu głosowego i wideo w mojej aplikacji. Nie chcę korzystać z SIP, bo potrzebuję tylko prostej komunikacji bez dzwonienia na telefony stacjonarne itp. Wydaje mi się, że może to robić z gniazdami i nagraniami audio, ale nie jestem pewien. Zależy mi na tym, aby wiele osób (np. 1000) mogło jednocześnie prowadzić rozmowę. Czy to możliwe na zwykłym serwerze? Czy to w ogóle możliwe bez serwera? Z poważaniem.


title: Czy powinienem przekonwertować cały projekt na UTF-8?

text: Pracuję nad wysoce spersonalizowanym oprogramowaniem sklepowym, opartym na oprogramowaniu open-source, napisanym w PHP i zwykłych technikach webowych (CSS, HTML, JS). W ciągu ostatnich miesięcy/lat dokonałem wielu dostosowań i opracowałem specyficzne, indywidualne funkcje, które są niezbędne, aby odnieść sukces w naszym oddziale. Sklep i pliki projektu są zakodowane w ISO-8859-1 (firma znajduje się w Niemczech). Teraz chcemy rozszerzyć i wykorzystać system sklepowy w różnych krajach (np. Szwecja, Polska, Wielka Brytania) i dostosować go do potrzeb krajowych. Obawiam się jednak, że później mógłbym napotkać pewne problemy z kodowaniem, więc moje pytanie brzmi: czy mądrze jest zmienić kodowanie całego projektu i środowiska na UTF-8 przed przygotowaniem sklepu do użytku "multi-shop", czy też powinienem Pozostawiam źródło bez zmian i radzę sobie z (ewentualnymi) problemami z kodowaniem dla każdego kraju, gdy się zbliżą później?


title: Jak uzyskać lokalny czas urządzenia odpowiadający znacznikowi czasu serwera NTP?

text: Tak więc próbuję użyć serwera NTP, aby pomóc mi zsynchronizować aplikację na dwóch urządzeniach z Androidem (aby wykonać jakąś akcję dokładnie w tym samym czasie, daj lub weź < 20 ms). Używam tutaj kodu klienta SNTP, jak podano w poście StackOverflow tutaj i działa dobrze. Problem polega na tym, że dokładnie w momencie, gdy serwer NTP otrzymuje swój znacznik czasu, muszę wiedzieć, która godzina jest lokalnie na moim urządzeniu (a więc nie czas, w którym urządzenie otrzymało zwrócony znacznik czasu, ale rzeczywisty czas urządzenia, który odpowiada znacznik czasu z serwera NTP). Oznaczałoby to, że miałbym coś w rodzaju „migawki” z dwoma różnymi znacznikami czasu (jedno urządzenie, jeden serwer NTP), które miały miejsce „dokładnie” w tym samym czasie. Bardzo trudno mi to rozgryźć i zaczynam myśleć, że to w ogóle niemożliwe (co ma sens). Moim najlepszym wysiłkiem było założenie, że lokalny czas urządzenia odpowiadający czasowi zwróconemu przez serwer NTP byłby w połowie czasu żądania-odpowiedzi w obie strony, ale nawet oczywisty błąd jest tym gorszy, im dłuższe żądanie NTP trwa, więc to rozwiązanie po prostu nie jest wystarczająco dobre. Jak mogę to zrobić na Androidzie?


title: Pytanie dotyczące projektowania zorientowanego obiektowo

text: Korzystam z klasy poprzez bibliotekę dll, nad którą nie mam bezpośredniej kontroli. W efekcie jestem tylko klientem tej klasy. Klasa reprezentuje formularz, który można wydrukować, wysłać do klientów i śledzić w systemie. Muszę obliczyć dwa rodzaje dat, po których otrzymanie formularza jest uważane za spóźnione. Zamiast po prostu obliczać późne daty w metodzie, w której już operuję formularzem, chcę wyodrębnić algorytm obliczania późnych dat w osobnej klasie, ponieważ jest to skomplikowane i może ulec zmianie z przyczyn administracyjnych. Ponieważ nie mogę modyfikować oryginalnej klasy. Wymyśliłem następujące możliwe rozwiązania: (Dla odniesienia kod znajduje się w C# 4/.Net 4.) A- Utwórz klasę FormLateDateCalculator, która ma metody zwracania późnej daty dla danego formularza. B- Utwórz klasę FormLateDate, która przyjmuje formularz w swoim konstruktorze i ma właściwość dla każdego typu późnej daty. C- Utwórz dwie metody rozszerzające w klasie Form, które obliczają późne daty. Chociaż wszystkie trzy z tych metod działają (i jestem pewien, że są inne), chciałbym wiedzieć, która jest najlepsza w odniesieniu do projektowania obiektowego i dlaczego?


title: Podejścia do bazy kodu stają się jednakowo powolne

text: Pracujemy nad średniej wielkości bazą kodu C++ (10Mloc), która dzięki naszym wysiłkom optymalizacyjnym staje się jednakowo powolna. Ta baza kodu to zestaw bibliotek, które łączymy, aby działały. Kiedy opracowano ogólne ramy tego, jak te biblioteki się komunikują, położono pewien nacisk na wydajność, a później, gdy dodano więcej części, ogólna struktura niewiele się zmieniła. Optymalizacja została wykonana w razie potrzeby i wraz z rozwojem naszego sprzętu. To sprawiło, że droga wczesna decyzja stała się widoczna dopiero znacznie później. Jesteśmy teraz w punkcie, w którym dalsze optymalizacje są znacznie droższe, ponieważ wymagałyby przepisania dużej części kodu. Zbliżamy się do niepożądanego minimum lokalnego, ponieważ wiemy, że w zasadzie kod powinien działać znacznie szybciej. Czy istnieją jakieś skuteczne metodologie, które pomagają zdecydować, co się obraca, aby przejąć ewolucję bazy kodu w kierunku globalnie optymalnie wydajnego rozwiązania, które nie jest łatwo mylone przez łatwe możliwości optymalizacji? ### EDYTUJ Aby odpowiedzieć na pytanie, w jaki sposób obecnie profilujemy: Tak naprawdę mamy tylko 2 różne scenariusze wykorzystania tego kodu, oba żenująco równoległe. Profilowanie odbywa się zarówno za pomocą czasu zegara ściennego uśrednionego dla dużej próbki danych wejściowych, jak i bardziej szczegółowych przebiegów (koszty instrukcji, błędne prognozy oddziałów i problemy z buforowaniem). Działa to dobrze, ponieważ pracujemy wyłącznie na naszych niezwykle jednorodnych maszynach (grupa kilku tysięcy identycznych maszyn). Ponieważ zazwyczaj wszystkie nasze maszyny są zajęte przez większość czasu, działają szybciej, co oznacza, że możemy przyjrzeć się dodatkowym nowym elementom. Problem polega oczywiście na tym, że gdy pojawią się nowe warianty danych wejściowych, mogą oni otrzymać karę za spóźnienie, ponieważ usunęliśmy najbardziej oczywiste mikronieefektywności w innych przypadkach użycia, w ten sposób prawdopodobnie zawężając liczbę „optymalnie działających” scenariuszy. Obecne odpowiedzi słusznie sugerują oddzielenie danych i algorytmów, aby łatwiej było to dostosować.


title: Podklasy, aby zmienić ustawienia domyślne?

text: Mam zajęcia o nazwie „Oś czasu”. Chcę zezwolić na kilka wartości domyślnych w moim kodzie, takich jak `Oś czasu` ze zdarzeniem `Start` (szczegóły nie są potrzebne. Liczy się tylko to, że mam klasę i chcę mieć kilka różnych ustawienia domyślne). Oto opcje, o których myślałem: 1) Podążając za pomysłem inspirowanym GUI/Swingiem, mógłbym chcieć dodać do klasy podklasę `Timeline` iw jej konstruktorze użyć funkcji publicznych, aby ustawić wartość domyślną. Następnie mógłbym później po prostu utworzyć instancję tych obiektów zamiast nadklasy 2) Klasa fabryczna może mieć funkcje takie jak „getTimeLineWithExplosion” i wszystko skonfigurować. Który z tych dwóch jest lepszym pomysłem? Czy istnieje wzorzec projektowy lepszy niż oba? PS: Jest to zaimplementowane w Javie, ale z łatwością może być w innym języku.


title: Duża struktura bazy danych faktur i renderowanie

text: Nasz klient posiada bazę danych MS SQL, w której znajduje się 1 milion rekordów faktur klientów. Korzystając z bazy danych nasz klient chce, aby jego klienci mogli zalogować się do frontendowej strony internetowej, a następnie móc przeglądać, modyfikować i pobierać faktury swojej firmy. Biorąc pod uwagę rozmiar bazy danych i dużą liczbę klientów, którzy mogą w dowolnym momencie zalogować się na stronie internetowej, jesteśmy zaniepokojeni wydajnością silnika bazy danych i wydajnością renderowania faktur na stronie internetowej. Baza danych z 1 milionem faktur dotyczy tylko 90-dniowej sprzedaży, dlatego usuniemy z bazy faktury starsze niż 90 dni. Większość faktur zawiera wiele pozycji. Możemy łatwo przekonwertować nasze faktury na różne formaty danych, więc na przykład łatwo jest nam przekonwertować z SQL na XML z powiązanym schematem i XSLT. Każda konwersja danych byłaby wykonywana na innym serwerze, aby nie obciążać serwera interfejsu internetowego. Wstępnie zdecydowaliśmy się uruchomić witrynę na serwerze sieciowym .NET Framework IIS z wykorzystaniem MS SQL na MS Azure. 1. Jak sugerujesz, abyśmy ustrukturyzowali naszą bazę danych w celu uzyskania najlepszej wydajności? Na przykład, czy powinniśmy umieścić wszystkie faktury wszystkich klientów znajdujących się w obrębie tych samych 5-cyfrowych lub 6-cyfrowych kodów pocztowych w tej samej tabeli? A może moglibyśmy stworzyć osobny katalog domowy dla każdego klienta w IIS i umieścić faktury każdego klienta w katalogu domowym każdego klienta w formacie XML? 2. A po drugie, co sugerowałbyś jako najlepszą metodę renderowania faktur klientów na stronie internetowej i umożliwienia klientom modyfikacji w celu uzyskania najlepszej wydajności? Zbiór danych XML ADO.net wygląda intrygująco jako metoda, ale nigdy go nie używaliśmy.


title: Czy to normalne, że potrzeba czasu na zrozumienie kodu, który ostatnio napisałem?

text: Ostatnio mam na myśli kilka tygodni temu. Próbuję kontynuować projekt, który opuściłem 2 tygodnie temu i potrzebuję czasu, aby zrozumieć niektóre funkcje, które napisałem (nie skądś skopiowałem) i zajmuje mi to czas. Normalnie nie potrzebuję, ponieważ moje funkcje, metody itp. to czarne skrzynki, ale kiedy muszę coś zmienić, jest to naprawdę trudne. Czy to oznacza, że piszę zły kod? Wciąż jestem w szkole i jestem jedynym, który pisze/używa kodu, więc nie mam informacji zwrotnej, ale obawiam się, że jeśli jest mi trudno go zrozumieć, to będzie 10 razy trudniejsze dla kogoś innego. Co powinienem zrobić? Piszę dużo komentarzy, ale przez większość czasu są one bezużyteczne podczas recenzowania. Masz jakieś sugestie?


title: wykryć, czy kombinacja obiektów ciągów z tablicy pasuje do dowolnych poleceń

text: Prosimy o cierpliwość i przeczytanie mojego obecnego scenariusza. Moje pytanie znajduje się poniżej. Moja aplikacja wykorzystuje wprowadzanie mowy i jest w stanie z powodzeniem grupować pasujące do siebie słowa, tworząc jedno słowo lub grupę słów - zwane frazami; czy to „imię”, „działanie”, „zwierzak” czy „rama czasowa”. Mam główną listę fraz, które są dozwolone i są przechowywane w odpowiednich tablicach. Mam więc następujące tablice: „validNamesArray”, „validActionsArray”, „validPetsArray” i „validTimeFramesArray”. Nowa tablica fraz jest zwracana za każdym razem, gdy użytkownik przestaje mówić. NSArray *phrasesBeingFedIn = @[@"CHARLIE", @"JEDZ", @"O ZEGARZE DZIESIĘCIU", @"KOT", @"PIES", "ODDAWAJ MOCZ", @"DZIECI", @"JEST CZAS NA", @"BAWIĆ SIĘ"]; Wiedząc, że dobrze jest mieć następującą kombinację do utworzenia polecenia: POLECENIE 1: NAZWA + AKCJA + RAMKA CZASU POLECENIE 2: ZWIERZĄT + AKCJA POLECENIE n: n + n, .. + n //W powyższym przykładzie tylko grupy fraz „Charlie je o dziesiątej” i „pies oddaje mocz” //byłyby prawidłowymi poleceniami, wyrażenie „kot” nie kwalifikuje żadnego z poleceń //i dlatego zostanie zignorowane **Pytanie** Jaki jest najlepszy sposób, w jaki mogę przeanalizować wprowadzane frazy i określić, które kombinacje fraz spełnią moją listę poleceń? **MOŻLIWE rozwiązanie, które wymyśliłem** Jednym ze sposobów jest przejście przez tablicę i użycie instrukcji if i else, które sprawdzają frazy z przodu i sprawdzają, czy spełniają jakiekolwiek poprawne wzorce poleceń z listy, jednak moje rozwiązanie nie jest dynamiczne , musiałbym dodać nowy zestaw instrukcji if i else dla każdej nowej permutacji poleceń, którą utworzę. Moje rozwiązanie nie jest wydajne. Jakieś pomysły, jak mógłbym stworzyć coś takiego, co będzie działać i będzie dynamiczne bez względu na to, czy dodam nową sekwencję poleceń kombinacji fraz?


title: Testowanie metodologii programowania ekstremalnego (XP)

text: Mam zamiar podjąć się projektu na uczelnię, a biorąc pod uwagę zakres projektu zdecydowałem się na zastosowanie metodyki XP/agile. Zacząłem od opracowania diagramu przypadków użycia; zbieranie historyjek użytkowników dla pierwszych kilku funkcji. Pomagam klientowi w opracowaniu testu akceptacyjnego i moje pytanie brzmi: _czy historyjki użytkownika dla każdej funkcji mogą być użyte jako test akceptacyjny użytkownika?_


title: Algorytmy do określania, w jakim stopniu czynnik przyczynia się do całkowitej wartości

text: Powiedzmy, że mam setki/tysiące obiektów (wpisów) w bazie danych, a każdy obiekt zawiera 10 atrybutów. Mam sposób na ilościowy pomiar każdego atrybutu, gdzie wyższa liczba oznacza, że obiekt jest lepszy w tym obszarze. Mam też ostateczną cenę związaną z tym obiektem. Czy istnieje sposób, aby programowo (być może za pomocą algorytmu) określić przybliżenie, w jakim stopniu każdy atrybut ma udział w całkowitym koszcie? Zasadniczo chcę móc oszacować średni koszt całkowity = a*atrybut1+b*atrybut2+.....+j*atrybut10, rozwiązując a,b,...,j Zdaję sobie sprawę, że może to być więcej pytania statystycznego niż pytania programistycznego, ale bardziej interesuje mnie implementacja tego poprzez programowanie niż wyjaśnienie w pełni statystyczne. Czy to jest coś bardziej odpowiedniego dla Scipy? nieczuły? jakieś ramy statystyczne?


title: Czy Resque jest odpowiedni dla aplikacji eventowej?

text: Jak mówi tytuł, czy Resque jest odpowiedni dla aplikacji eventowej, która wymaga przyzwoitej szybkości? Pracuję nad aplikacją serwerową, która emuluje domyślny serwer Minecraft i zastanawiałem się, czy Resque będzie bardziej utrudnieniem, czy pomocą w zarządzaniu zdarzeniami (np. odpalaniem zdarzenia po otrzymaniu określonego pakietu sieciowego), czy też lepiej byłoby zastosować podejście synchroniczne (tj. Wisper). Przykład - załóżmy, że otrzymano pakiet `:player_move`. W tym pakiecie mamy x, ay, z. Powinniśmy wtedy powiadomić `WorldController`, że `player` został przeniesiony do xy i z. Następnie `WorldController` robi to samo — na przykład powiadamia odpowiednich graczy w obszarze wokół aktora. Jednak nie chcę ręcznie sztywno kodować, który pakiet `:player_move` mapuje do `WorldController#move_player`, więc obecnie używam Wispera do publikowania zdarzenia `:player_moved`. To świetnie, jednak zdarzenia są obsługiwane synchronicznie i nie ma gwarancji kolejności - to jest coś, co chciałbym mieć, aby móc zaimplementować anulowanie zdarzeń. Oczywiście plusy i minusy Resque nad Wisper są następujące: **Zalety** 1. Wypróbowane i przetestowane (nie ma potrzeby tworzenia własnych z Wisper) 2. Przetwarzanie asynchroniczne 3. Nie ma potrzeby pisania dużej ilości szablonów, aby powiązać każdego subskrybenta każdemu wydawcy. 4. Gwarantowane porządkowanie zadań (i możliwość anulowania zadań) **Wady** 1. Wolniej (prawdopodobnie ze względu na konieczność połączenia z bazą danych) 2. Poleganie na Redis jako pamięci podręcznej (nie żeby to było naprawdę wadą) 3. Brak gwarancji, czy lub kiedy coś się wydarzy (charakter wątków) 4. Wykorzystanie pamięci (podział procesu) Myśli?


title: Wzór adaptera: wzorce projektowe

text: O ile wiem, istnieją dwie formy wzorca adaptera: adapter klasy i adapter obiektu. Czy ktoś mógłby mi wyjaśnić następujące ograniczenie adaptera klasy i dlaczego nie jest to ograniczenie adaptera obiektów: * adapter klasy nie jest odpowiedni, gdy chcemy zaadaptować klasę i wszystkie jej podklasy. Wydaje mi się, że następujące ograniczenie jest uważane za ograniczenie adaptera obiektów: * z adapterem obiektów trudniej jest przesłonić zachowanie Adaptee niż z adapterem klas. Dlaczego?


title: Kupujący kontra sprzedawca w modelu UML

text: Zajmuję się modelowaniem Systemu Ogłoszeń Online, w którym, oczywiście, kto sprzedaje, może też kupować i na odwrót. Pytanie brzmi: czy powinienem mieć dwóch różnych aktorów, kupującego i sprzedającego, czy mógłbym mieć, powiedzmy, klienta aktora zdolnego albo kupować, albo sprzedawać? Jak podchodzisz do tego modelu? Twoje zdrowie,


title: Odpytywanie a zdarzenia plusy i minusy w JavaScript

text: Jestem trochę nowicjuszem w JavaScript, więc zastanawiałem się nad pozytywnymi i negatywnymi stronami używania odpytywania w porównaniu do używania zdarzeń w JavaScript? Kiedy używa się jednego lub drugiego? Odpytując, rozważam każdy efekt wywołany na czymś, co się powtarza, zwykle przy użyciu `setTimeout`. Ale także na przykład: function render() { Bloop.renderComponent(box, document.body); requestAnimationFrame(render); } Odpytuje również od `requestAnimationFrame(render)`, które jest wywoływane przed wywołaniem każdej klatki. Zasadniczo wszystko, co pasuje do tej definicji


title: db dane do szablonu: gdzie uciec z ciągów

text: Mam aplikacje, które wysyłają zapytanie do bazy danych, a następnie renderują szablon asciidoc z danymi z bazy danych i konwertują asciidoc na pdf. Teraz w danych znajdują się pewne znaki, które należy zmienić, aby nie zepsuć formatowania pliku pdf. Mam dwie opcje, gdzie to zrobić: * **Opcja A**: w lub w pobliżu kodu, który wykonuje zapytanie db. Plus: ucieczka zrobiona tylko raz. Minus: kod db musi wiedzieć o składni wyjściowej. * **Opcja B** : w szablonie. Plus: ucieczka zrobiona tam, gdzie należy składnia formatowania. Minus: Ucieczka prawdopodobnie zrobiona więcej niż raz. Skłaniam się ku Opcji B, ale byłbym zainteresowany tym, co inni uważają za najlepszą rzecz do zrobienia.


title: Zarabiam 4-5x więcej punktów fabularnych niż przeciętnie, ale produkuję błędy o połowę szybciej. Wykresy mówią, że to 2x więcej błędów, jak sobie z tym poradzić?

text: Tak więc ogólnie przyjmuje się, że programiści z najwyższej półki mogą stworzyć o rząd wielkości więcej/lepszy kod niż ich bardziej przeciętni koledzy. Powszechnie przyjmuje się również, że liczba błędów popełnianych w kodzie jest **stosunkowo stała** dla programistów. Zamiast tego ma na to wpływ procesy używane podczas pisania kodu i po jego napisaniu. (Jak rozumiem) Ludzie mają tendencję do popełniania błędów w dość stałym tempie - lepsi programiści po prostu zauważają ich więcej i szybciej je naprawiają. * Zauważ, że oba powyższe twierdzenia pochodzą z Code Complete Steve'a McConnella - więc nie jest to kwestia różnych perspektyw. Więc zacząłem to ostatnio widzieć w moim kodzie. Potrafię wykuć około 4-5 razy więcej kodu niż wielu moich kolegów (mierzone na podstawie punktów fabularnych oszacowanych przez zespół), z wyższą jakością (na podstawie wskaźników wydajności i liczby zmian wprowadzonych po zameldowaniu). Ale wciąż popełniam błędy. Pomiędzy lepszymi testami jednostkowymi, lepszym zrozumieniem tego, co robi kod, i lepszym wyczuciem problemów podczas przeglądania kodu. Nie wytwarzam 4-5 razy większej liczby błędów. Ale wciąż tworzę około _dwa razy_ więcej błędów znalezionych przez QA niż inni programiści w moim zespole. Jak możesz sobie wyobrazić, powoduje to pewne problemy z osobami nietechnicznymi wykonującymi pomiary metryczne (czytaj: mój szef). Próbowałem wskazać, że produkuję błędy o połowę szybciej niż moi rówieśnicy (i naprawiam dwa razy więcej), ale trudno się sprzedać, gdy są wykresy mówiące, że wytwarzam dwa razy więcej błędów. Jak więc poradzić sobie z faktem, że zwiększona produktywność doprowadzi do zwiększonej liczby błędów?


title: Rozważania dotyczące wydajności projektu modelu DDD i trwałości repozytorium

text: Więc od jakiegoś czasu czytam o DDD i staram się znaleźć najlepsze podejście do kilku kwestii. Zwykle zgadzam się, że powinienem projektować swój model w sposób uporczywy agnostyczny. A repozytoria powinny ładować i utrzymywać moje modele w prawidłowych stanach. Ale czy te podejścia są praktycznie realistyczne? To normalne, że model zawiera odniesienie do kolekcji innego typu. Utrzymanie tego modelu powinno oznaczać zachowanie całej kolekcji. Cienki. Ale czy naprawdę muszę ładować całą kolekcję za każdym razem, gdy ładuję model? Prawdopodobnie nie. Więc mogę mieć wyspecjalizowane repozytoria. Niektóre, które ładują mogą być podzbiorem grafu obiektu za pośrednictwem DTO, a inne ładują cały graf obiektu. Ale kiedy używać którego? Jeśli mam DTO, co powstrzymuje kod klienta przed bezpośrednim wywoływaniem ich i całkowitym pominięciem modelu? Może mogę mieć maperów i fabryki do tworzenia moich modeli z DTO? Ale w zależności od projektu moich modeli może to nie zawsze działać. Lub może nie pozwolić na tworzenie moich modeli w prawidłowym stanie. **EDIT 1:** Oprócz leniwego/chętnego ładowania i używania frameworka DI do wstrzykiwania repozytoriów w moich modelach, jakie jest inne podejście? Jakie jest właściwe podejście tutaj?


title: Przenośne obszary ASP.NET MVC — czy mogą się komunikować i być używane jako architektura podobna do wtyczek?

text: Przejdę od razu do sedna: zastanawiałem się, czy istnieje wspólny wzorzec używania przenośnych obszarów jako komponentów architektury podobnej do wtyczek. Przykład: mamy 3 wtyczki (obszary przenośne) spakowane i dystrybuowane za pośrednictwem kanału NuGet. Każdy z nich jest zgodny ze standardową strukturą MVC (posiada własne modele, widoki i kontrolery). Powiedzmy, że formularz logowania, nagłówek i stopka. Zastanawiałem się, czy istnieje sposób, aby się porozumieć. Na przykład: gdy użytkownik się loguje, wtyczka login wykonuje własną logikę, loguje użytkownika, a następnie aktualizuje stan wtyczki nagłówka, odpowiednio ją zmieniając. **Edycja** : _Radzenie sobie z połączeniami po stronie klienta_ Kolejną rzeczą, o której nie wspomniałem w oryginalnym poście, jest to, że chciałem udostępnić funkcje wtyczek za pośrednictwem kontrolerów, aby były konsumowane również przez JavaScript. Powiedzmy, że mam całą architekturę na swoim miejscu i wszystkie wtyczki poprawnie zarejestrowały się w systemie (trasy, zależności ... itd.) Na przykład, jeśli kliknę opcję „Zmień kolor” jednej wtyczki „Selektor kolorów”, wywoła to metodę akcji innej plugin (wtyczka obrazu, powiedzmy) i ładuje obraz w żądanym kolorze. Oczywiście wszystko powinno być zrobione przez Ajax bez ponownego przesyłania całej strony, na której znajdują się komponenty. Myślisz, że w proponowanych przez Ciebie rozwiązaniach jest to wykonalny scenariusz? Z góry dziękuję za wszystkie odpowiedzi.


title: Jak znaleźć pracę, która korzysta z narzędzi, które lubię (i utrzymywanie listy płac na wysokim poziomie)

text: Od lat jestem programistą. Pracowałem w dużych firmach, korzystając z własnego standardu i narzędzi. Zawsze byłem w stanie używać niektórych z moich ulubionych narzędzi, takich jak Intellij jako mojego głównego środowiska Java, ale nie zawsze tak jest. Byłem też zmuszony do korzystania z niektórych kiepskich narzędzi (wersji źródeł bloatware, zepsutej aplikacji do ubezpieczenia jakości, ...) i frameworków, które z radością zastąpiłbym innym. Co mogę zrobić, aby znaleźć „idealną” misję, w której używanie moich narzędzi będzie normą, a przynajmniej nie zabronione? Albo jeszcze lepiej, jak mogę znaleźć pracę, korzystając z nietypowego frameworka? Nie chcę poświęcać listy płac na wybrane przeze mnie narzędzia, więc dołączenie do taniego start-upu nie będzie rozwiązaniem. Nie szukam oferty pracy, ale więcej porad używanych przez szczęśliwych programistów, którzy znaleźli idealnie pasującą pracę.


title: Ruby: jak przejść przez kod ruby

text: Staram się nauczyć, jak przejść przez kod Ruby (napisany przez bardziej doświadczonych programistów), aby poszerzyć swoją wiedzę o Ruby. Problem w tym, że tak naprawdę nie wiem, jak to zrobić dobrze. Googlowanie tematu zaprowadziło mnie do strony about.com na Ruby; Pomyślałem, że na StackOverflow powinna należeć bardziej wszechstronna odpowiedź wyższej jakości, więc jeśli ktoś może napisać na nią odpowiedź (z przykładem), pokazując, jak początkujący może przejść przez kod, aby dowiedzieć się o nim jak najwięcej, byłoby to dużo doceniane.


title: Licencja PE a certyfikacja IEEE CSPD

text: Jestem pracującym inżynierem oprogramowania w stanie Pensylwania z ~5 letnim doświadczeniem. Mam licencjat z inżynierii komputerowej, jednak czuję, że muszę uzyskać albo licencję PE, albo certyfikat IEEE CSDP, aby ugruntować swój status jako profesjonalisty. Czy ktoś ma opinię w tej sprawie? Licencja PE (inżynieria komputerowa) Certyfikat IEEE CSDP


title: Technologie o niskim opóźnieniu dla c++, c# i java?

text: Czytałem opisy stanowisk i wielu wspomina o „niskim opóźnieniu”. Zastanawiałem się jednak, czy ktoś mógłby wyjaśnić, jakiego rodzaju technologii miałoby to dotyczyć? Jedna z reklam wspomniała o 'ACE', którą wyszukałem w Google, aby dowiedzieć się, jaka jest technologia telefonii CISCO. Gdybyś zatrudniał kogoś na stanowisko o niskim opóźnieniu, czego użyłbyś jako listy kontrolnej, aby upewnić się, że wie o programowaniu o niskim opóźnieniu? Używam tego, aby sam dowiedzieć się więcej o programowaniu z małymi opóźnieniami.


title: Czy starsi programiści powinni być zobowiązani do objęcia i mentoringu młodszego programisty?

text: Czy w sklepie, który ma być zgrany i wspierający, powinno być częścią kultury, w której starsi programiści są kojarzeni z młodszymi programistami jako mentorami? A może ten mentoring powinien być czymś bardziej organicznym i spontanicznym, tj. niewymaganym, ale dającym się rozwijać bez sztucznej zachęty?


title: Utrzymanie integralności referencyjnej między klientem mobilnym a serwerem

text: Mam więc stosunkowo prosty system. **Klient mobilny tworzy rekordy w bazie danych sqlite, które chciałbym zsynchronizować ze zdalnym serwerem SQL (który jest współdzielony z innymi klientami mobilnymi)**. Kiedy więc tworzę nowy rekord w tabeli sqlite telefonu, następnie przesyłam tę zmianę do mojej usługi zdalnej za pośrednictwem interfejsu API RESTful. Mam problem, **jak uporządkować klucze podstawowe, aby nie było kolizji danych** (tzn. rekord w telefonie ma ten sam klucz podstawowy, co zupełnie inny rekord na serwerze) . **Jaka jest zwykle „najlepsza praktyka odwoływania się do rekordu na kliencie i do odwoływania się do tego samego rekordu na serwerze?**


title: Kontrola źródła: role i obowiązki — najlepsze praktyki

text: Szukam "Best Practices" dotyczących ról i odpowiedzialności, a konkretnie kto jest odpowiedzialny za łączenie gałęzi rozwojowych z głównym (lub głównym). Zasadniczo szukam amunicji, aby pomóc mojej sprawie. Pozwól, że opiszę, z czym się zmagam. Jestem głównym programistą (właścicielem) konkretnej aplikacji. Nasza firma niedawno przeniosła się z VSS (gdzie byłem administratorem bazy danych VSS, w której przechowywana była moja aplikacja) do TFS (gdzie mam uprawnienia tylko do gałęzi rozwojowych utworzonych przez nasz zespół „operacyjny”). W poprzednich pracach byłem administratorem TFS, więc znam się na TFS i MSBuild. Nie mam problemu z używaną strategią rozgałęziania i łączenia (główna gałąź, z gałęziami rozwoju błędów/projektów utworzonymi w razie potrzeby, scalonymi z powrotem do głównej, a następnie awansowanymi do gałęzi wydawniczej). Problemy, które mam to: 1. Nie mogę tworzyć własnych oddziałów. Muszę utworzyć zadanie TFS, aby członek zespołu „operacyjnego” utworzył dla mnie gałąź. 2. Nie mogę połączyć się z Main do mojej gałęzi deweloperskiej. Muszę utworzyć zadanie TFS, aby członek zespołu „operacyjnego” wykonał scalenie, a następnie mam nadzieję, że nie „wkroczy” na żadną z moich zmian w zespole, ponieważ „człowiek od obsługi” może, ale nie musi, być programistą i na pewno to zrobił. niewielka lub żadna wiedza na temat kodu, który łączy. 3. Nie mogę przejść od rozwoju do głównego. Znowu muszę utworzyć zadanie TFS, aby „człowiek z obsługi” wykonał scalenie, mając nadzieję, że zrobi to poprawnie. Następnie muszę utworzyć kolejne zadanie TFS, aby połączyć się z powrotem do mojej gałęzi, aby móc rozwiązać wszelkie problemy, które wystąpiły przez połączenie niedeweloperskie z Main. 4. Nie mogę tworzyć ani edytować skryptów MSBuild. Ponownie muszę pracować z zespołem „ops”, który jest nowy w MSBuild, więc można wykonywać tylko najbardziej podstawowe zadania kompilacji. (Zapomnij o wszystkim, co skomplikowane, albo nie daj Boże niestandardowe zadanie). 5. Nie mogę wykonać skryptu MSBuild. Ponownie może to zrobić tylko zespół „ops”. 6. Na domiar wszystkiego, zazwyczaj jest to zasób „zagraniczny”, który wykonuje żądane zadania, więc nawet jeśli utworzę zadanie (rozgałęzienie/scalenie/budowanie) wczesnym rankiem, prawdopodobnie nie do wieczora. Teraz nie mam problemu z zespołem „operacji” utrzymującym gałęzie wydania. Ponieważ wszystko, co robią, to (w zasadzie) pobieranie najnowszej wersji z Main i promowanie jej do gałęzi wydania; tak długo, jak "Main" jest stabilny i gotowy, gałąź wydania będzie dobra. Moim zdaniem liderzy techniczni (tacy jak ja) powinni być odpowiedzialni za utrzymanie pnia ("Główny") i wszelkie łączenie do/z gałęzi rozwojowych. Lider zespołu powinien mieć również możliwość generowania skryptów MS Build do budowania i wdrażania w środowisku testowym integracji. Czy ktoś może skierować mnie do dokumentu Best Practices, który pomoże mi udowodnić moją sprawę? Wszystkie moje poszukiwania ujawniły tylko najlepsze praktyki dotyczące technik rozgałęziania i łączenia, i nie ma żadnej wzmianki o tym, WHO powinno wykonywać wspomniane rozgałęzianie/scalanie.


title: Specyfikacje wymagań z adnotacjami?

text: Ciekaw jestem, czy istnieją jakieś szablony wykorzystujące adnotacje, takie jak niejednoznaczne, wymaga aktualizacji i tak dalej. Przemysłowy czy akademicki nie ma znaczenia. Jeśli tak, czy są dostępne narzędzia, które wykorzystują te adnotacje, aby pokazać, że „22% wymagań jest oznaczonych jako niejednoznaczne” i tak dalej? Dodatkowe punkty za artykuły akademickie na ten temat (lub prawie pokrewny temat)


title: Umowa zdalna CSS

text: Podpisuję umowę z kimś zdalnym z innego kraju na stworzenie nowego arkusza stylów dla ich strony internetowej. W naszej umowie klient najpierw wpłaca 1/3 kwoty jako depozyt, a reszta zostanie wypłacona, gdy pokażę mu gotowy projekt online. Teraz moje pytanie brzmi: skoro wiem, że CSS można przeglądać online i nie ma sposobu, aby go zakodować, oprócz tego, że muszę mu zaufać, czy jest jakiś sposób, aby chronić swoją pracę przed kradzieżą przed ostateczną płatnością? W jaki sposób programiści motywów zwykle pracują zdalnie? Będę wdzięczny, jeśli podzielisz się ze mną swoimi doświadczeniami


title: Jakie są najważniejsze języki do lokalizacji w App Store?

text: Oczywiste jest, że aby zdobyć więcej klientów na dowolnej platformie, jednym z najważniejszych kroków, jakie należy podjąć, byłoby zlokalizowanie oprogramowania na wiele języków: jak najwięcej, najlepiej. Jednak w przypadku niezależnie opracowanych aplikacji trudno jest zlokalizować je na wiele różnych języków, ponieważ nie ma na to budżetu i / lub czasu. Moje pytanie brzmi: **jeśli miałbym zlokalizować moje aplikacje na języki inne niż angielski w iOS App Store, które języki powinienem traktować priorytetowo?** (Może trzy lub cztery najważniejsze). ogólna aplikacja, która nie obsługuje więcej grup demograficznych w jednym języku niż w innym).


title: Jak ulepszyć aplikację na poziomie przedsiębiorstwa, która składa się wyłącznie z metod statycznych?

text: Jestem nowy w projekcie aplikacji na poziomie przedsiębiorstwa i odkryłem, że 99% wszystkiego, co widziałem w kodzie, to metody statyczne, właściwości statyczne. Dostępna aplikacja to rozproszona aplikacja składająca się z kilku usług WCF, które komunikują się za pośrednictwem warstwy biznesowej z warstwą dostępu do danych. Komponent dostępu do danych jest singletonem. Istnieją transakcje i kolejki MSMQ oraz wiele stron wywołujących usługi WCF w celu powiadomienia bazy danych o zmianach, aktualizacjach wprowadzonych w oddzielnym systemie i tak dalej. Przy pierwszym uruchomieniu małego projektu testowego otrzymałem wyjątek związany z wątkiem za pomocą EntLib5 Logging, mówiący mi, że jakiś kod został wywołany z niezsynchronizowanego bloku kodu. Jestem ciekaw, jak należy postępować i ulepszać prawie całkowicie statyczny projekt. > * Czy obecne podejście ma zalety? > * Jakie są wady? > * Od czego byś zaczął (oprócz zaczynania od początku) i poprawił cały ten bałagan? > Dzięki za Twoje opinie!


title: Czy to stwierdzenie z podstawowych algorytmów Knutha jest nadal aktualne?

text: > W pewnym sensie 10! (dziesięć silni) reprezentuje przybliżoną linię podziału > między rzeczami, które są praktyczne do obliczenia, a rzeczami, które nie są. Pochodzi z książki Knutha TAOCP Fundamental Algorithms (1973). Czy to nadal jest prawidłowe stwierdzenie, czy moc obliczeniowa sprawiła, że jest przestarzały?


title: Jak mogę zintegrować i przechowywać sesje w mojej bazie danych, w przeciwieństwie do przechowywania ich w plikach cookie i systemie plików?

text: Nigdy wcześniej nie pracowałem z sesjami w bazie danych i nie jestem pewien, jak one działają. Mam już zaprojektowaną klasę użytkownika, która przechowuje informacje o użytkowniku: nazwę użytkownika, hasło, adres e-mail itp. Mam również klasę sesji, która używa identyfikatora użytkownika do przechowywania pliku cookie sesji w przeglądarce użytkownika, aby po powrocie do aplikacji jest wywoływany, aby sprawdzić, czy: isset($_SESSION['id']){ $this->userId=$_SESSION['id']}, a następnie przenieść użytkownika na stronę administratora. Czytałem, że korzystanie z bazy danych jest bezpieczniejszą metodą obsługi sesji, ale trudno mi się objąć tą koncepcją. Powiedzmy, że chciałem przechowywać informacje o sesji w bazie danych i mieć dostęp do tych informacji, aby na przykład, jeśli użytkownik kliknął link do strony profilu, mógłbym użyć informacji o sesji, aby uzyskać informacje o użytkowniku. Jak mogę to osiągnąć? Czy w ogóle ma sens stosowanie tego podejścia?


title: Jak przechowywać stan/dane obiektu do późniejszego przetwarzania?

text: Jak myślisz, jakie byłoby najskuteczniejsze rozwiązanie, aby utrzymać status obiektu przez cały cykl życia? Cel, aby móc kontynuować z dowolnego stanu w dowolnym momencie. Podczas cyklu życiowego mogą mieć interakcje międzyludzkie na różnych interfejsach. Na przykład zamówienie, które musi zostać zatwierdzone przez kilka osób. A może proces dostarczania danych, który może wymagać zatwierdzenia lub edycji przez wiele osób? Moim zdaniem kilka rozwiązań: * Po wywołaniu funkcja serializuje obiekt i zapisuje go w bazie danych. * Wszystkie etapy procesu zostałyby gdzieś zapisane (baza danych, csv, xml itp.), więc zawsze można je na tej podstawie odtworzyć. * Być może połączenie tych dwóch metod? Jakieś dobre sposoby na rozwiązanie problemu?


title: NLP - Zapytania wykorzystujące semantyczne symbole wieloznaczne w wyszukiwaniu pełnotekstowym, może za pomocą Lucene?

text: Załóżmy, że mam duży korpus (na przykład w języku angielskim lub dowolnym języku) i chcę przeprowadzić na nim wyszukiwanie semantyczne. Na przykład mam zapytanie: „Uważaj: [sztuka] armada [sg] nadchodzi [do sg]!” A korpus zawiera następujące zdanie: „Uważaj: armada obcych statków zbliża się, by zniszczyć naszą planetę!” Widać, że mój ciąg zapytania może zawierać "semantyczne symbole zastępcze", takie jak: [art] - jakiś symbol zastępczy dla artykułów (na przykład a / an po angielsku) [sg], [do sg] - kilka symboli zastępczych dla NP i VP (podmioty i predykaty) Chciałbym stworzyć bibliotekę, która będzie w stanie efektywnie obsłużyć te zapytania. Podejrzewam, że do parsowania tekstu konieczne byłoby jakieś tagowanie POS, ale ponieważ nie chcę w pełni reimplementować już istniejącej wyszukiwarki pełnotekstowej, aby to działało, zastanawiam się, jak mógłbym to zintegrować zachowanie w wyszukiwarce, takiej jak Lucene? Wiem, że istnieją SpanQueries, które mogą zachowywać się podobnie w niektórych przypadkach, ale jak widzę, Lucene nie robi nic semantycznego z przechowywanymi tekstami. Czy można zaimplementować takie zachowanie? Czy muszę napisać własną wyszukiwarkę?


title: Jakie są najlepsze praktyki i strategie przenoszenia zleconego na zewnątrz projektu rozwoju oprogramowania we własnym zakresie?

text: Jakie są najlepsze metody przekazywania wiedzy? Jakiego rodzaju dokumentacji należy się spodziewać? Jakie czynności powinny mieć miejsce przed i po przekazaniu, zarówno przez stronę zewnętrzną, jak i przez nas samych?


title: Czy lepiej kierować się na iOS 5 i ARC, czy na wcześniejszą wersję z MRC?

text: Osobiście niewiele wiem o iOS 5, ale wygląda na to, że dzięki automatycznemu liczeniu referencji (ARC) pozbywasz się wielu problemów z zarządzaniem pamięcią w poprzednich systemach operacyjnych. Więc lepiej jest kierować się na iOS5 (i tworzyć aplikacje, które mogą działać tylko na najnowszych urządzeniach z iOS), czy lepiej jest dla niej skupić się na iOS 4 lub nawet iOS 3, aby zrozumiała podstawy zarządzania pamięcią w Objective-C? Czy są jakieś ważne aspekty rozwoju iOS, które może przegapić, wskakując do iOS 5?


Jakie są książki, które wyjaśniają rzeczy niskiego poziomu, takie jak interfejsy com, wstrzykiwanie dll itp.? Zasadniczo programowanie w systemie Windows na niskim poziomie. Wyszukiwanie w amazon daje mi książki o hakowaniu / 10+ letnie książki, co nie jest tym, czego chcę. Dziękuję.


title: Jaka jest różnica między modelem procesu tworzenia oprogramowania a metodami inżynierii oprogramowania (metodologia)?

text: Jestem człowiekiem akademickim, który wkracza teraz w świat inżynierii oprogramowania, zdziwiony faktem, że wiele terminów wydaje się nakładać na siebie. Czytam kilka książek i nie potrafię odróżnić/skorelować modelu procesu tworzenia oprogramowania od metod inżynierii oprogramowania. Na przykład w _Inżynierii oprogramowania_ Ian Sommerville definiuje model procesu tworzenia oprogramowania jako: > Uproszczona reprezentacja procesu tworzenia oprogramowania, przedstawiona z określonej > perspektywy. Oraz metodologię oprogramowania ( _metody inżynierii oprogramowania_ ) jako: > Ustrukturyzowane podejścia do tworzenia oprogramowania, które obejmują modele systemowe, > notacje, zasady, porady projektowe i wytyczne dotyczące procesu. Jednak Wikipedia definiuje _metodologię rozwoju oprogramowania_ w następujący sposób: > Metodologia rozwoju oprogramowania lub metodologia rozwoju systemu w > inżynierii oprogramowania jest strukturą, która służy do strukturyzowania, planowania i > kontrolowania procesu rozwoju systemu informatycznego. Moim zdaniem definicja modelu procesu tworzenia oprogramowania Sommerville'a może wejść w zakres definicji Wikipedii. Czy ktoś może mnie oświecić w tej kwestii? Przykładem może być rock, np. „A” to model procesu oprogramowania, a „B” to metody inżynierii oprogramowania (metodologia).


title: Jakie są wady publikowania oprogramowania w wersji beta w Android Market?

text: Poświęciłem trochę czasu na opracowanie małej aplikacji na Androida, aby podrapać mój własny swędzenie. Rozważam opublikowanie aktualnej wersji w wersji beta w Android Market. Plusy za opublikowanie go teraz byłyby potencjałem do uzyskania informacji zwrotnej. Byłby to również sposób na ocenę zainteresowania aplikacją, co może wpłynąć na to, czy w ogóle ją dalej rozwijać. Jakie byłyby wady publikowania wersji beta w Android Market?


title: Czy licencja MIT jest odpowiednia dla biblioteki open source, która jest używana tylko w scenariuszach testów jednostkowych?

text: Jakiś czas temu opracowałem mały projekt do wykorzystania w scenariuszach testów jednostkowych i opublikowałem go na Codeplex. Wtedy wybrałem licencję GPL, ale tak naprawdę tego nie rozumiałem. Dziś zmieniłem ją na MIT, ponieważ jest to znacznie prostsza licencja, którą rozumiem. Lubię być uznawany za właściciela praw autorskich, ale chcę, aby każdy mógł korzystać z biblioteki bez martwienia się o problemy licencyjne. Myślę, że MIT obejmuje oba, ale nie na 100%. „ _Wiatralność_ ” nie jest problemem dla tego projektu. Czy ta licencja (MIT) w jakikolwiek sposób uniemożliwi osobie korzystanie z mojej biblioteki do testowania jednostkowego komercyjnego lub prywatnego projektu o zamkniętym kodzie źródłowym? W związku z tym, czy moja ostatnia zmiana na MIT jest zmianą na lepsze?


title: Jak naprawdę rozumieć programowanie?

text: Zacząłem uczyć się programowania. Jestem tym zainteresowany i nie mam nic przeciwko temu, ile czasu zajmuje nauka. Ale zaczynam od książek i stwierdzam, że są pewne rzeczy, które otrzymuję, a inne, o których nie mam pojęcia. Rozumiem kod, gdy widzę przykład, ale czuję się całkowicie zagubiony, jeśli mam wyjść i zrobić coś sam. Nie mam prawie żadnego doświadczenia: może jakieś 20 godzin, co, jak rozumiem, to absolutnie nic. * Kiedy wszystko się układa? * Jakie są najlepsze sposoby na poznanie, które znalazł ktoś inny? * Czy są jakieś dobre projekty, które zrobili ludzie, które były wspaniałym doświadczeniem edukacyjnym?


title: Czego potrzebujesz, aby opanować język i jego technologię?

text: > **Possible Duplicate:** > jak naprawdę opanować język programowania Powiedzmy o Javie (tylko próbka, możesz mówić o C#, PHP, C++ ... jest po prostu podobnie) i 10 (dziesięć) poziomach, 1 to nowicjusz i 10 jest mistrzem. Jak możesz zidentyfikować kogoś na jakim poziomie w oparciu o jego wiedzę? Nie mam tendencji do porównywania języków, zazwyczaj wiem, co wskazuje na mistrza lub nowicjusza w języku _i jego (językowej) technologii_. Tak, wiem, że nie ma na ziemi samodzielnego języka, zawsze towarzyszy mu technologia. Powiedzmy, że w Javie można zapamiętać wszystkie słowa kluczowe i składnię w ciągu zaledwie kilku dni, ale aby _znać_ je (to znaczy zrobić coś z tym efektywnie), trzeba wiele razy przeczytać javadoc Oracle (Sun) (nie jestem wspomnij jeszcze o produkcie innej firmy).


title: Jak naprawdę mogę opanować język programowania?

text: Wiem, że ucząc się języka, możesz po prostu kupić książkę, podążać za przykładami i w miarę możliwości wypróbowywać ćwiczenia. Ale to, czego naprawdę szukam, to jak opanować język, kiedy już się go nauczysz. Teraz wiem, że doświadczenie jest jednym z głównych czynników, ale co z nauką języka wewnętrznego, jaka jest jego podstawowa struktura, itp. Są tam artykuły mówiące: przeczytaj tę książkę, przeczytaj tę książkę, stwórz tę grę i tę grę. Ale dla mnie to nie oznacza opanowania języka. Chcę móc czytać kod innych ludzi i rozumieć go, bez względu na to, jak to jest trudne. Zrozumieć, kiedy użyć funkcji, a kiedy innej itd. Lista może być długa, ale wierzę, że zrobiłem to. :) I na koniec weźmy dowolny język jako przykład, jeśli jest to konieczne, chociaż najlepiej byłoby, gdyby C zostało wzięte za przykład.


title: Jak mogę opracować Menedżera pakietów dla systemów wbudowanych?

text: Muszę opracować/użyć menedżera pakietów dla wbudowanego systemu Linux z następującymi właściwościami: * Master w pełni kontroluje, które pakiety mają zostać zainstalowane (slave nie ma możliwości zapytać administratora o cokolwiek) * Szybkość pobierania na urządzeniu jest niska że nie tylko wszystko z głównej dystrybucji może być ściągnięte do miejsca docelowego * Aktualizacja/Downgrade pakietów musi być możliwa * Powinna istnieć możliwość zastąpienia menedżera pakietów w samym systemie * Możliwość zastąpienia samego systemu operacyjnego * Łatwo go odzyskać przed awariami (utrata zasilania, ...), szczególnie istotne przy rozważaniu dwóch powyższych punktów * Blokady na urządzeniu podrzędnym, które muszą być usuwane ręcznie, nie są w żaden sposób dozwolone * Jeśli nowy (meta?) pakiet zastępuje stary (meta) pakiet i zostały jakieś niepotrzebne pakiety, są one usuwane, aby zaoszczędzić miejsce na urządzeniu * Zdefiniuj jakąś formę kolejności lub zależności w celu zainstalowania pakietów * Być może potrzebna jest jakaś forma systemu odzyskiwania (ho w aby wykryć, że jest to potrzebne, jak go uruchomić, ...) Niektóre punkty są po prostu powtórzeniem innych, a niektóre niekoniecznie są czymś, co musi zrobić sam menedżer pakietów. Zacząłem kopiować pomysły z dpkg (zwłaszcza jak instaluje pliki i zmienia ich nazwy później, aby skrócić ramy czasowe, w których może się zdarzyć coś złego) i używać formatu deb dla samych pakietów (nie używając wszystkich pól). Sam nie jestem pewien, czy to pytanie należy do programistów, ale zamiast pytać o rozwiązanie lub coś w tym stylu, jestem bardziej zainteresowany, czy inni programiści mieli ten sam problem i czy są jakieś godne uwagi zasoby, jak ten problem jest rozwiązany. Osobiście zdarzyło mi się zbyt wiele razy, że urządzenia wbudowane mogły zostać prawie zniszczone przez aktualizację oprogramowania bez żadnej możliwości (bez specjalnego sprzętu) do odzyskania. Niektóre linki, które mogą być istotne dla innych, to: * http://en.wikipedia.org/wiki/List_of_software_package_management_systems * http://en.wikipedia.org/wiki/Ipkg Równie dobrze mógłbym podać podobny pseudokod opis tego, co zamierzam zrobić.


title: Czy w Pythonie mamy enkapsulację klas na poziomie obiektu?

text: Zostałem ugryziony przez użycie operatora `is`, kiedy powinienem użyć `==`. Zdaję sobie sprawę, że to pierwsze sprawdza równość tożsamości obiektów, a drugie sprawdza równość zawartości obiektów. Pomyślałem, że użycie `is` również domyślnie sprawdza równość zawartości. Na przykład „jeśli a jest b” jest prawdziwe, to zawartość musi być taka sama. To było robocze założenie i wierzę, że nadal jest prawdziwe. Ale odkryto i należało wiedzieć, że jeśli „jeśli a jest b” jest fałszywe, to zawartość a i b może być taka sama lub nie. Przykład (Python 3.3.3): class Jedzenie: def ulubiona_restauracja(self): return "the foo diner" if __name__ == '__main__': fr = "bar z sokami" print('%r to %r: %r' % (fr, 'bar z sokami', (fr to 'bar z sokami'))) print('%r == %r: %r' % (fr, 'bar z sokami', (fr == 'the batonik z sokami'))) f = Food() result = f.favourite_restaurant() print('%r to %r: %r' % (wynik, 'knajpka z jedzeniem', (wynik 'knajpka z jedzeniem')) ) print('%r == %r: %r' % (wynik, 'w barze', (wynik == 'w kebani'))) Pierwszy blok wydruku mówi: 'bar z sokiem' to 'the juice bar': True 'the juice bar' == 'the juice bar': True Drugi blok druku mówi: wynik: 'foo diner' 'foo diner' to 'foo diner': False 'foo diner' == 'the foo diner': Prawda Wygląda na to, że obiekty utworzone w instancji klasy mają własną grupę p identyfikatorów, oddzielone od obiektów spoza klasy. Rozumiem, że enkapsulacja w Pythonie jest tak naprawdę kwestią „zgody na dorosłych”. Czy rzeczywiście mamy enkapsulację na jakimś niższym poziomie?


title: Czy istnieje język imperatywny z systemem czcionek podobnym do Haskella?

text: Próbowałem nauczyć się Haskella kilka razy w ciągu ostatnich kilku lat i być może dlatego, że znam głównie języki skryptowe, jego funkcjonalność zawsze mnie niepokoiła (monady wydają się ogromnym bałaganem przez robienie wielu I/O ). Myślę jednak, że jego system typów jest _idealny_. Czytając przewodnik po typach i typeklach Haskella (takich jak ten), nie widzę powodu, dla którego wymagałyby one języka funkcjonalnego, a ponadto wydaje się, że byłyby idealne dla języka obiektowego klasy przemysłowej ( jak Java). To wszystko nasuwa pytanie: **czy ktoś kiedykolwiek wziął system pisania Haskella i zrobił z nim imperatyw, język OOP?** Jeśli tak, to chcę go użyć.


title: Pytanie dotyczące początkujących użytkowników JavaScript: Zdefiniuj zmienne w tekście

text: Jestem biegły w HTML i CSS, ale nadal jestem dość niepewny, jeśli chodzi o JavaScript. To powiedziawszy, udało mi się zbudować witrynę za pomocą internetowego czytnika książek archiwalnych, który opiera się na reader.js. Oto kopia jednej z moich wersji reader.js https://gist.github.com/dylan-k /ed4efed2384e221d46cc To dobra strona, ale muszę dużo powtarzać. Zasadniczo mam jedną kopię reader.js na każdą stronę/książkę prezentowaną w witrynie. Wydaje się, że musi być lepszy sposób. Używam skryptu ponownie, robiąc kopie tylko po to, by zmienić wiersze `28`, `80`, `83`, `84`. Czy jest sposób, abym mógł dołączyć tylko jedną kopię reader.js, a następnie użyć tagu `<script>` do zdefiniowania tych 4 linii dla poszczególnych stron?


title: W jaki sposób oprogramowanie pośredniczące sesji ogólnie weryfikuje sesje przeglądarki?

text: Od lat używam oprogramowania pośredniczącego do tworzenia aplikacji internetowych: od wbudowanej w PHP warstwy obsługi sesji do warstwy pośredniczącej sesji połączenia węzła. Jednak nigdy nie próbowałem (ani nie potrzebowałem) tworzyć własnej warstwy obsługi sesji. Jak by się do tego zabrać? Jakie kontrole są konieczne, aby zapewnić przynajmniej odrobinę ochrony przed przejmowaniem sesji HTTP? Myślę, że ustawiam plik cookie z tokenem, aby śledzić sesję, a następnie może sprawdzić, czy źródłowy adres IP sesji nie zmienia się i czy oprogramowanie przeglądarki klienta pozostaje spójne. Mam nadzieję, że usłyszę o aktualnych najlepszych praktykach...


title: Szacowanie czasu pozostawania w kolejce z wieloma pracownikami

text: Próbowałem znaleźć sposób obliczania szacowanego czasu pozostałego dla elementu w kolejce, gdy istnieje wielu pracowników przetwarzających elementy z pojedynczej kolejki. Klient przesyła zadanie do kolejki, ale ponieważ przetwarzanie może zająć trochę czasu, chciałem oszacować informację zwrotną. Wiem * Liczba pozycji w kolejce * Pozycja w kolejce * Czas potrzebny na przetworzenie pozycji * * Ilu pracowników pracuje * Kiedy każdy pracownik ostatnio wykonał zadanie Nie wiem * Jak daleko jest przetwarzanie pracownika , tylko wtedy, gdy zaczyna się i kończy** *Czas przetwarzania to 90 percentyl czasu przetwarzania poprzednich zadań w rozsądnym przedziale czasu. Nie do końca dokładne, ale nieco przeceniam i jest wystarczająco dokładne dla moich potrzeb. **Pracownicy dzwonią do usługi zewnętrznej, więc najlepszym oszacowaniem postępu jest czas. Z pojedynczym pracownikiem mogę użyć funkcji takiej jak szacowane_sekundy_pozostałe = ( (pozycja_w_kolejce + 1) * średni_czas_przetwarzania_sekund ) - ( średni_czas_przetwarzania_sekund - czas_od_pracownik_ostatnie_zakończone_sekundy ) `u(pozycja_w_sekundach ) * średnia_czasu_przetwarzania_sekund` daje mi czas potrzebny na przetworzenie wszystkich elementów w kolejce plus tego, który jest aktualnie przetwarzany, a następnie odjęcie `średniego_czasu_przetwarzania_sekund - czas_od_pracy_ostatnich_zakończonych_sekund` daje mi szacowany czas pozostały do przetworzenia bieżącego elementu kolejki. Działa to dość dobrze i jest wystarczająco dokładne, aby raportować, ponieważ różnice w czasie przetwarzania są dość małe. Ale w produkcji będę obsługiwał wielu pracowników, więc wielu pracowników będzie przetwarzać elementy z tej samej kolejki. Najprawdopodobniej będzie 3 lub 4 pracowników, ale czasami może być ich ponad 10. Najprostszą opcją jest po prostu zmodyfikowanie mojego wzoru tak, że szacowane_sekundy_pozostałe = ( (pozycja_w_kolejce + 1)/liczba_pracowników * średni czas_przetwarzania_sekund ) - ( średni_czas_przetwarzania_sekund/liczba_pracowników - czas_od_ostatnich_zakończonych_sekund ) na wyświetlaczu czasy skaczą w górę i w dół w zależności od tego, kiedy wszyscy pracownicy kończą pracę. Czy istnieje prosty sposób, na podstawie posiadanych informacji, na obliczenie dość dokładnej prognozy czasu pozostałego do przetworzenia elementu z kolejki?


title: Jaki jest absolutnie minimalny zestaw instrukcji wymaganych do zbudowania kompletnego procesora Turinga?

text: Mam ogólne pojęcie o tym, jak procesor obsługuje instrukcje, ale spędzam czas pracując głównie w językach wysokiego poziomu. Może ktoś, kto pracuje bliżej żelaza, może dostarczyć cennego wglądu. Zakładając, że języki programowania są w zasadzie bardzo wysokopoziomowymi abstrakcjami zestawu instrukcji procesora, jaki jest najbardziej podstawowy zestaw instrukcji niezbędnych do stworzenia kompletnej maszyny Turinga? _Uwaga: nie wiem nic o różnorodności architektur sprzętowych, ale dla uproszczenia załóżmy, że jest to typowy procesor z jednostką ALU (jeśli to konieczne) i stosem instrukcji._ *


title: Architektura interfejsu API Node.js

text: Obecnie pracuję nad aplikacją internetową i chcę zaprojektować interfejs między nodejs / mangoose a aplikacją szkieletową. Krótki opis aplikacji: Użytkownik rejestruje się w aplikacji i otrzymuje konto użytkownika, na którym może założyć organizację (np. klub piłkarski). W tych organizacjach możesz tworzyć projekty. W ramach tych projektów możesz zdefiniować zadania, które możesz komuś przypisać) Chcę mieć RESTful API dla aplikacji. Mój problem polega na tym, że użytkownik może mieć więcej niż jedną organizację, jeśli mam API dla projektów takich jak GET /projects/ POST /projects/ GET /projects/:id PUT /projects/:id DELETE /projects/:id Jak to zrobić określić, do jakiej organizacji należy projekt? Czy dodaję parametr do API, czy wysyłam dodatkowe pole zawierające identyfikator organizacji? Każda pomoc jest mile widziana!


title: Czy analitycy biznesowi (lub inni członkowie zespołów spoza zespołu deweloperskiego) często śledzą historie razem z programistami?

text: Używamy JIRA z Greenhopper, a obecnie nasz analityk biznesowy ma zadania do ich analizy, które ostatecznie doprowadzą do umieszczenia nowych historii w backlogu, biegnących obok historii z bieżącego sprintu. nie nakładają się na przepływ pracy dla historii rozwoju. Czy zdarza się, że tak się dzieje? Tak być powinno? Wydaje mi się, że analiza powinna być zewnętrznym procesem, który wprowadza się do rejestru produktu, a nie czymś, co wiąże się z rejestrem sprintu, ale scrum jest dla mnie nowy. Skonsultowałem się z przewodnikiem po scrum i nie zauważyłem niczego wyraźnego, i chociaż tak naprawdę nie mamy właściciela produktu (chociaż czasami powiedziałbym, że nasz menedżer pełni tę rolę, innym razem również analityk biznesowy), myślę, że mógłbym Sformułuj też pytanie w następujący sposób: Czy Product Ownerzy powinni śledzić swoje zadania obok historii, nad którymi pracuje zespół programistów?


title: Co oznacza „poliadyczny” w kontekście programowania funkcjonalnego i systemów typu?

text: A jak to (lub nie) odpowiada „polimorficznemu”? Sporadycznie widzę to pojęcie jak w: Implementuj i reprezentuj operacje poliadyczne. Sprawdziłem Wikisłownik, ale podaje on tylko ogólne znaczenie, a nie specyficzne dla programowania funkcyjnego.


title: C++ IDE i narzędzia z integracją z Clang

text: Niedawno czytałem ten blog o tym, jak Google integruje parser Clang z narzędziami do analizy kodu. Jest to coś, w czym C++ jest co najmniej dziesięć lat za innymi językami, takimi jak Java, ale teraz, gdy llvm-clang jest prawie gotowy na C++, myślę, że jest narzędzia do analizy kodu C++ mogą efektywnie zacząć używać parsera C++, ponieważ został on zaprojektowany od podstaw właśnie w tym celu. Zastanawiam się, czy istnieją istniejące projekty open source lub znane komercyjne projekty podążające tą ścieżką, integrujące się z Clang, aby zapewnić wyższe narzędzia do analizy na poziomie?


title: Najlepsza praktyka zwracania długiego ciągu znaków w stub

text: Mam kilka metod, które próbuję przetestować, które używają zależności StreamReader, którą mockuję za pomocą mocków Rhino. Ale jest to duży plik xmlFile. W duchu testów jednostkowych staram się unikać używania pliku testowego w moim projekcie testowym. Z drugiej strony kopiowanie i wklejanie 100 wierszy xml do mojej klasy testowej wydaje się trochę brzydkie. Jaka jest najlepsza praktyka podczas zwracania dużych ciągów za pomocą kodu pośredniczącego.


title: Czy "Informatyka != Inżynieria Oprogramowania" jest wymówką do słabego nauczania programowania?

text: Wszyscy to słyszeliśmy; za każdym razem, gdy mówi się o tym, że absolwenci CS mają słabe umiejętności programistyczne, ktoś w końcu mówi: > Informatyka nie jest inżynierią oprogramowania. Problem, który widzę, polega na tym, że programowanie i tworzenie oprogramowania _są_ nauczane na kursach CS. Są po prostu słabo nauczani. Jeśli się tego uczy, to dlaczego nie nauczyć tego prawidłowo za pierwszym razem? * Chciałabym więc zobaczyć, jakie są opinie na 2 pytania: 1. Czy argument CS != SE jest wykrętem lub wymówką dla niewłaściwego nauczania umiejętności programowania. 2. Niezależnie od Twojej odpowiedzi na pytanie 1; gdybyś był w wszechmocnej pozycji do podjęcia takiej decyzji: czy wymusiłbyś nacisk na prawidłowe nauczanie programowania na kursach CS? *. Mam podejrzenie, oparte na niepotwierdzonych dowodach, które zdobyłem podczas mojej edukacji, że większość naukowców w tej dziedzinie nie musiała pisać kodu do utrzymania i nie utrzymywała kodu, w wyniku czego nie ma wiedzy/umiejętności uczyć go skutecznie.


title: Nierozróżniający kolorów członek naszego zespołu

text: Mój zespół w dużym stopniu opiera się na kolorze w naszym kodzie, aby określić funkcje, nad którymi należy popracować (kolorujemy linie kodu, które wymagają uwagi). Mamy bliskiego przyjaciela, który jest daltonistą i chce dołączyć do naszego zespołu. Co możemy zrobić, aby podkreślić potrzeby pracy bez użycia koloru? Mamy w zespole około 25 osób, które są przyzwyczajone do systemu kolorowania linii i uznaliśmy go za najbardziej wydajny.


title: Czy standard kodowania jest już potrzebny?

text: Wiem, że udowodniono, że standard kodowania ogromnie pomaga. Istnieje jednak wiele różnych narzędzi i środowisk IDE, które sformatują do dowolnego standardu preferowanego przez programistę. Dopóki kod jest schludny/komentowany (a nie bałagan spaghetti), nie widzę potrzeby stosowania standardu kodowania. Czy są jakieś argumenty za opracowaniem standardu kodowania (nie mamy, ale chciałem go stworzyć)?


title: Jak to się nazywa?

text: Mam nadzieję, że istnieje książka lub coś, co mogę zdobyć... Jeśli mam klasę, w której zmienną instancji jest Collection, jak nazywa się ta metoda kodowania? Wzorzec projektowy? Jeśli tak, gdzie mogę znaleźć więcej informacji na ten temat? Pracując z tym mentorem, naprawdę pomógł mi zrozumieć moją słabość programistyczną, którą jest myślenie w kategoriach kolekcji lub relacji między obiektami. Po prostu wydaje mi się to teraz takie trudne i muszę czytać, aby stać się mądrzejszym. Mój mentor jest świetnym facetem, ale zaczynam czuć, że sam muszę się czegoś nauczyć. public class Ocena { private List<Kryterium> kryterium = null; public Evaluation() { kryterium = new List<Kryterium>(); } }


title: Czy przeprowadzam testowanie jednostkowe czy testowanie integracyjne moich procedur składowanych?

text: Miałem ostatnio wiele okazji, w których musiałem utrzymywać złożone procedury i funkcje składowane. Zostały one już zepsute, zwykle w dość subtelny sposób - było bardzo niewiele przypadków, w których można było wywołać SP z prawidłowymi parametrami i po prostu nie działało. Moje rozwiązanie polegało na rozwinięciu struktury, która wykonuje procedury składowane wewnątrz transakcji, po zainicjowaniu bazy danych do wymaganych przeze mnie warunków początkowych, a następnie przetestowaniu pod kątem oczekiwanego rezultatu, również w ramach tej samej transakcji. Transakcja została wycofana pod koniec testu. To zadziałało bardzo dobrze. Ale niektórzy nazwaliby to „testami integracyjnymi”, ponieważ wiąże się to z integracją z bazą danych. Nazywam to testowaniem jednostkowym, ponieważ testowałem poszczególne komponenty i poszczególne przypadki testowe dla tych komponentów, a także ponieważ całkowicie kontrolowałem początkowy stan bazy danych. Ale gdzie należy wytyczyć linię? Czy to testy integracyjne czy testy jednostkowe? Czy jest jakiś praktyczny powód, dla którego tego rodzaju test jest złym pomysłem? Jeśli jest to „tylko” testowanie integracji, czy ktoś ma sugestie dotyczące wykonywania rzeczywistych „testów jednostkowych” tych procedur składowanych?


title: Czy byłoby możliwe opublikowanie mojego kodu na oficjalnej stronie z biblioteką innej firmy?

text: Tworzę dość duży i obszerny wrapper w Delphi dla systemu pocztowego o nazwie Mandrill. Istnieją wrappery dla tego API w wielu innych językach, ale nie dla Delphi. Mam więc nadzieję, że wyprodukuję pierwsze pełne opakowanie. Problem polega na tym, że używam parsera JSON innej firmy o nazwie superobject. Obawiam się, że jeśli skończę ten wrapper, nie będę w stanie udostępnić mojego kodu Mandrillowi z powodu tej zewnętrznej biblioteki. Jeśli ukończę ten wrapper, czy jest jakaś szansa, że Mandrill będzie mógł legalnie opublikować go na swojej stronie, opierając się na fakcie, że używam superobiektu? A może musiałbym przeanalizować mój własny JSON, aby miał zastosowanie? PS – mam na myśli to pytanie w ogólnej koncepcji, niekoniecznie dla mojego dokładnego scenariusza, ale ogólnie, jeśli korzystam z biblioteki innej firmy, czy mogę legalnie opublikować je wraz z moim kodem na stronie innej firmy?


title: Relacje opcjonalne encji: oddzielne klasy czy pojedyncza klasa?

text: Skupmy się na obiekcie domeny, który jest powiązany z **więcej** innymi (różnymi!) jednostkami. Czasami potrzebujemy jednej relacji, a czasami drugiej. Bądźmy zwinni i powiedzmy: nie wiemy na froncie, ile jeszcze będzie relacji. Innymi słowy: mamy obiekt **A** powiązany jeden do jednego z **B** i jeden do wielu z **C** i ponownie jeden do jednego z **D* * i tak dalej. Teraz, podczas opracowywania warstwy prezentacji, często potrzebuje ona dużej ilości danych do wyświetlenia; jak stół **A** z **B** , lub w innym miejscu jeden **A** z wieloma **C** i tak dalej. Jak będziemy modelować te relacje? Oto przykład: „Konkurs”. Czasami przychodzi i trzeba go używać m.in. „Miejsce”. Czasami z np. „Lista<Zdarzenie>”. Ponieważ zależy Ci na wydajności, powiedzmy również, że powiązane obiekty (`Miejsce` i lista `Event`s) pochodzą z pojedynczego wejścia/metody repozytorium/metody wyszukiwania/jednego złączenia SQL (jakkolwiek to nazwiesz) - i że może być _wstrzyknięty_ do `Konkurencji` za pomocą jakiegoś narzędzia do mapowania. W ten sposób wyrażamy rzeczywiste relacje między podmiotami. Pytanie: czy powinniśmy zachować obie relacje/referencje w klasie `Competition` i zignorować drugą, gdy jest używana, czy też powinniśmy stworzyć wiele oddzielnych klas - po jednej dla każdej relacji? (Nie ma znaczenia, czy jest to relacja 1-1, czy 1-wiele, pytanie jest takie samo.) Innymi słowy, czy powinniśmy mieć: **[A]** Wszystko w jednej klasie. Metody Gettera reprezentują relacje. To na nas należy wypełnienie obiektu, jeśli potrzebna jest relacja. klasa Konkurencja { ... dane o zawodach... prywatne Miejsce; Miejsce publiczne getVenue() { miejsce powrotu; } prywatne Lista<Zdarzenie> zdarzenia; public List<Event> getEvents() { return zdarzenia; } } Ale wtedy, gdy twoja metoda aplikacji zwraca `Konkurencję`, nie wiesz, jakie relacje są wypełniane i musisz to rozgryźć, przeglądając kod metod aplikacji lub po nazwie metody (np. `findCompetitionWithEvents...()` ). **[B]** Dla każdej relacji mamy typ lub interfejs. Jednym ze sposobów, aby to zrobić, bez interfejsów dla uproszczenia tego przykładu, jest: class CompetitionVenue extends Competition { private Venue location; Miejsce publiczne getVenue() { miejsce powrotu; } } i class CompetitionEvents rozszerza Competition { private List<Event> events; public List<Event> getEvents() { return zdarzenia; } } Teraz typ sam mówi, jaka relacja jest zwracana, a zatem metoda aplikacji, która go zwraca, gwarantuje, że relacja istnieje. Ale wtedy każda relacja miałaby własną klasę lub interfejs; EDYCJA: **[C]** Każda relacja jest reprezentowana przy użyciu ogólnej klasy, takiej jak `Tuple<Competition, List<Event>>` i `Competition` nie ma gettera dla listy zdarzeń?


title: Czy możesz/powinieneś opracować komponenty dla ASP.NET MVC?

text: Idąc za poprzednim pytaniem zacząłem się zastanawiać - czy jest możliwe zaimplementowanie "Components" w ASP.NET MVC (najnowsza wersja)? A czy powinieneś? Wyjaśnijmy, co mam na myśli z „komponentem”. Mam tu na myśli "kontrolkę" (aka "widget"), podobną do tych, na których zbudowane są formularze webowe ASP.NET. Dobrym przykładem może być widok siatki. W formularzach internetowych mogę umieścić w formularzu komponent źródła danych (jedna linia kodu), komponent gridview (kolejna linia kodu) i powiązać je ze sobą (określ atrybut w widoku grid). W pliku codebehind wypełniam źródło danych danymi (kilka linijek kodu zapytań DB) i wszystko gotowe. W tym momencie widok siatki jest w pełni funkcjonalnym samodzielnym komponentem. Mogę otworzyć formularz i zobaczę wszystkie dane. Mogę to posortować, klikając nagłówki kolumn; jest podzielony na kilka stron; Mogę przeciągać nagłówki kolumn i zmieniać ich kolejność; mogę włączyć tryb „grupowania”; itd. I nie muszę pisać kolejnej linii kodu dla żadnego z nich. Gridview, jako składnik, ma już cały kod schowany w swoich klasach i zespołach. Po prostu umieszczam go w formularzu, inicjuję i po prostu działa. Czasami (np. sortowanie lub nawigacja na inną stronę) będzie również wykonywać wywołania zwrotne ajax do serwera, ale one również będą obsługiwane wewnętrznie, a mój kod nie ma o tym żadnej wiedzy. Są też zdarzenia, które mogę dołączyć, jeśli chcę otrzymywać powiadomienia, gdy coś się wydarzy. W MVC nie widzę sposobu na zrobienie tego czysto. Jasne, są częściowe widoki, ale one rozwiązują tylko połowę problemu - renderują początkowy kod HTML. Trochę więcej można osiągnąć za pomocą JavaScript po stronie klienta (jak rearanżacja kolumn), ale kiedy siatka musi wykonać wywołanie zwrotne ajax (powiedzmy, aby pobrać następną stronę danych), mój kod będzie musiał się zaangażować i przetworzyć to żądanie. W najlepszym razie wydaje mi się, że mogę dostarczyć kilka metod pomocniczych, aby je przetworzyć, ale będę musiał napisać kod, który je wywołuje, a także dostarczyć metodę kontrolera z podpisem pasującym do argumentów tego wywołania zwrotnego. Myślę, że mógłbym zrobić kilka hacków z globalnymi wydarzeniami lub specjalnymi trasami lub coś takiego, ale to wydaje się po prostu... hackowe. Nieelegancka. Może to nie jest droga MVC? Choć zrealizowałem w nim jeden projekt, wciąż daleko mi do bycia ekspertem MVC. Ale co to jest? W aplikacji intranetowej, którą budujemy, takich siatek są dziesiątki. Oczywiście chcę, aby wszystkie miały ujednolicony wygląd i zachowanie, i nie chcę powtarzać tego samego kodu w każdym miejscu. Więc jakie jest podejście „MVC” do tego problemu?


Trochę pomylony z pojęciem architektur stanowych/bezstanowych. Wybacz, jeśli nie wiem. Pytania: Czy możemy uznać interakcję klienta z serwerem sieciowym za stanową, jeśli serwer sieciowy utrzymuje stan za pomocą zmiennych sesji lub plików cookie? Co jeśli założymy, że jakakolwiek zmiana tych informacji pochodzi w jakikolwiek sposób od strony klienta i nie zależy od innych użytkowników? * A co ze sklepem internetowym amazon? Chociaż stan może się zmienić i nie zostać automatycznie odzwierciedlony klientowi... jeśli klient próbuje operować na nieaktualnych danych, system rozpoznaje to i działa odpowiednio. Czy nadal jest to czysto bezpaństwowe? Albo gdzieś pomiędzy? * Co by było, gdybyśmy dodali warstwę skryptu java, który stale co sekundę odpytuje serwer, aby aktualizować stronę klienta? Czy na poziomie abstrakcyjnym nie byłoby to uważane za stanowe, ponieważ klient będzie miał stale aktualizowany stan? Definicje/Modele, z którymi próbuję pracować: Bezstanowa architektura stron internetowych: HTTP jest protokołem bezstanowym. Klient wysyła żądanie WWW HTTP. Serwer przelicza/przetwarza żądanie i zwraca klientowi odpowiednią informację o aktualnym stanie serwisu. Gdy klient ma te informacje, witryna może zmienić stan, a zmiany te nie zostaną odzwierciedlone po stronie klienta, dopóki klient nie zgłosi kolejnego żądania sieci Web. Architektura stanowa: klient może po prostu działać zakładając, że wszelkie widoczne dane reprezentują rzeczywisty stan serwera.


title: Pobierając listę plików do przetworzenia, czy powinienem przechowywać je na liście ciągów, czy na liście strumienia?

text: w przypadku listy plików pochodzących z listy, takiej jak z okna dialogowego pliku, czy lepiej przechowywać listę jako listę ciągów, czy też powinienem przekonwertować każdy plik na otwarte strumienie przechowywane na liście? Na przykład List<string> files = new List<string>(); List<FileStream> fileStreams = new List<FileStream>(); foreach (strumień f w fileStreams) { //strumień przetwarzania } **VS** foreach (ciąg s w plikach) { //otwórz strumień plików FileStream fs = new FileStream(s, FileMode.Open); //proces             }


title: Dlaczego języki znaczników w postaci zwykłego tekstu (takie jak LaTeX lub Markdown) nie są bardziej popularne w procesie tworzenia oprogramowania?

text: Obecnie jestem stażystą u kontrahenta rządowego i odczuwam (nieprzyjemnie nieuniknione) wrażenie, że Word jest de facto standardem w procesie tworzenia oprogramowania. Jego binarny format bardzo utrudnia współpracę nad dokumentami w sposób, w jaki jestem przyzwyczajony do współpracy na bazie kodu. Użycie znaczników zwykłego tekstu (w takich językach jak LaTeX, Markdown, ReStructured Text, _etc._ ) pozwala na stworzenie dokumentu przyjaznego dla różnic, który dobrze współpracuje z normalnym przepływem pracy programisty. Jeśli chodzi o komentarze, w których język ich nie obsługuje (np. Markdown), istnieje wiele istniejących rozwiązań, które umożliwiają wspólne komentowanie na podstawie kodu (np. GitHub, Bitbucket), które można _łatwo_ zastosować do innych plików tekstowych zawierających znaczniki. Rozumiem, że potrzeba współpracy z technologicznie niepiśmiennym zarządzaniem wymaga jakiegoś interfejsu graficznego do wszystkiego, ale takie interfejsy istnieją dla większości z tych formatów. (Na przykład LaTeX ma swego rodzaju „rozgałęzienie” zwane LyX, które umieszcza graficzny nakładkę na zwykły tekst składni podobnej do LaTeXa. Ten plik, mimo że głównie graficzny w edycji, jest _nadal_ przyjazny dla różnic. ( Komentarz początkowy: zawiera również komentarze w stylu Worda.)) Wiele z tych rozwiązań może być jeszcze używanych zamiast Worda, a zdecydowana większość jest bezpłatna lub open-source. Jednak używamy Worda nawet do własnej wewnętrznej dokumentacji, której nikt inny nie widzi. Pracujemy z tekstem przez znaczną część naszej kariery — dlaczego dokumentacja jest tak wyjątkowa?


title: Wiele typów danych dla pojedynczej zmiennej w C

text: Próbuję zaimplementować podstawowe cons, car i cdr SCHEME w C. Zrobiłem prosty program, który pozwala mi na cons dwie liczby całkowite, jak pokazano w programie głównym. Jednak chcę, aby mój program był w stanie przeciwstawić „obiekt zgodny” z cyfrą, a także przeciw „obiektu zgodny” z innym „obiektem uznanym”, jak pokazano poniżej: * (przeciw 2 3) * (przeciw 2 (przeciw 2 3)) * (przeciw (przeciw 2 3) (przeciw 2 3)) Ponieważ ograniczenie powstaje, ponieważ dane w strukturze są typu int, czy jest możliwe, aby zmienna akceptowała wiele typów danych w C? Jeśli tak, to jak? Jeśli nie, czy istnieje inny sposób rozwiązania tego problemu? Oto mój kod: #include <stdio.h> #include <string.h> typedef struct cons_object { int data; struct node* następny; } cons_object; cons_object* cons(int x, int y) { cons_object* samochód = NULL; cons_object* cdr = NULL; samochód = malloc(sizeof(struct cons_object)); cdr = malloc(sizeof(struct cons_object)); samochód->dane = x; samochód->następny = cdr; cdr->dane = y; cdr->następny = NULL; samochód powrotny; /*zwraca wskaźnik car*/ } int car(cons_object* lista) /*pobiera consed object*/ { cons_object* car = lista; int y; y = samochód->dane; zwróć y; } int cdr(cons_object* lista) { cons_object* cdr = lista; cdr = cdr->następny; int z; z= cdr->dane; powrót z; } int main () { int y = samochód (cons(33,42)); printf("%d\n",y); int z = cdr (przeciw(3,4)); printf("%d\n",z); zwróć 0; }


title: MVC: Model „użytkownika” staje się duży i zatłoczony. Czy metody, które wykonują operacje CRUD na danych relacji jeden-do-wielu, powinny być w różnych modelach?

text: W większości projektów internetowych MVC istnieje klasa User. Wiele razy użytkownik ma coś innego w relacji jeden-do-wielu, np. zamówienia. Jeśli mamy klasę użytkownika, która ma wiele zleceń, to czy metody dodające, edytujące lub usuwające zlecenia dla użytkownika należy umieścić w klasie user, czy w osobnej klasie Order? tj. 1. user.add_order(nazwa_zamówienia) //Metoda instancji vs 2. Order.add_order_for_user(user_id, order_name) //Metoda statyczna lub alternatywnie 3. order = new Order(user_id,order_name) order.save() (Również, w przypadku opcji 3, czy należy to połączyć z opcją 1 i umieścić w tej metodzie)? Moim głównym problemem z opcją 1 jest to, że model użytkownika ma tendencję do powiększania się. Czy to narusza SRP? Na przykład w jednym z moich projektów użytkownik ma wiele "rzeczy", takich jak zaprzyjaźnionych użytkowników, kanały, przesłane pliki, ostrzeżenia, kary, a lista jest długa. Zasadniczo dodaję metody CRUD dla wszystkich tych "rzeczy", których dany użytkownik ma wiele, w samej klasie User. Czy to zła rzecz i czy powinienem rozłożyć metody CRUD na różne klasy? Jednak jedną z zalet opcji 1 jest to, że mogę kontrolować logikę w tych metodach CRUD przy użyciu atrybutów bieżącego obiektu użytkownika, bez konieczności wysyłania zapytań do użytkownika. Na przykład, jeśli mam metodę „add_file”, mogę sprawdzić, czy całkowita przestrzeń plików użytkownika (atrybut użytkownika) jest mniejsza niż maksymalna bez konieczności wykonywania kolejnego zapytania.


title: Kategoryzuj zadania/błędy według ryzyka zmian

text: Projekt, nad którym obecnie pracuję, ma pewien problem: błędy i zadania są często przydzielane osobom zbyt nowym lub niedoświadczonym, a ich praca kończy się produkcją kolejnych błędów. Problem polega na tym, że części naszego oprogramowania są o wiele bardziej „niebezpieczne” w pracy niż inne z powodu problemów z jakością kodu. Próbowałem zwalczyć ten problem, szacując ryzyko związane z zadaniami i zwracając szczególną uwagę na to, którym programistom przypisuje się jakie zadania. Używamy JIRA, więc zacząłem problemy z etykietowaniem, aby śledzić to oszacowanie. Zauważyłem, że używam kilku wskaźników do kategoryzacji błędu/zadania: * Jak jasne/proste to jest. Np. czy jest to coś, co będzie wymagało dużo pracy projektowej, czy tylko prostej poprawki błędu interfejsu użytkownika. * Jak konserwowalny jest dany obszar kodu. Czy to dobrze zaprojektowany obszar, czy wielka kula błota. * Myślę, że na ile programu wpłynie wymagana zmiana. Moje etykiety są trochę bałaganiarskie, ponieważ nie miałem jasnego pomysłu, kiedy zaczynałem, jakie będą możliwe kategorie i nadal nie mam. Zastanawiam się nad złożeniem wniosku o dodanie nowego pola (coś w rodzaju „Ryzyko”), abyśmy mogli wymagać oszacowania przed przypisaniem komuś pracy. Czy ktoś miał do czynienia z tego rodzaju sprawami wcześniej?


title: Produkt komercyjny korzystający z GPL OS

text: planujemy stworzyć produkt komercyjny. Produkt składa się z kilku mikrokontrolerów i małego komputera (w tej chwili pracujemy nad Raspberry Pi). Komputer potrzebuje systemu operacyjnego, ponieważ chcielibyśmy, aby rzeczy takie jak WLAN i uruchamianie były jak najprostsze. Stworzyliśmy oprogramowanie działające na tym komputerze (aplikacja node.js). Większość systemów operacyjnych, takich jak Arch Linux, jest licencjonowanych na licencji GPL. Sprzedawany przez nas produkt zawiera komputer z preinstalowanym systemem operacyjnym i oprogramowaniem. System ten działa jako centralny punkt dostępu do urządzeń MCU i jest w stanie nimi sterować. W naszym produkcie używamy cudzego oprogramowania. Nie modyfikujemy ich kodu źródłowego. Produkt (część komputerowa) składa się z komputera, systemu operacyjnego i oprogramowania, które tworzymy. 1. Jak korzystanie z systemu operacyjnego wpływa na nasz własny kod (licencję)? 2. Czy istnieje możliwość uniknięcia GPL dla własnego kodu? np. wysyłka oprogramowania oddzielnie? 3. Czy są jakieś skutki dla innych składników naszego produktu, np. część MCU? 4. Aplikacja node.js dostarcza WebApp do klienta, gdzie jest wykonywana. Czy są jakieś efekty (ponieważ chcielibyśmy sprzedawać części kodu jako dodatkową aplikację w App Store)? Wiem, że korzystamy z pracy społeczności i szanuję to. Problem polega na tym, że samo oprogramowanie jest bezużyteczne bez urządzeń MCU. Nie oczekuję porady prawnej.


title: Jak języki statycznie typowane obsługują wykrywanie testów?

text: Pochodzę z Pythona, więc jestem przyzwyczajony do całkiem automatycznego wykrywania testów. Na przykład biblioteka `py.test` automatycznie lokalizuje wszystkie pliki zaczynające się od `test`, znajduje klasy, których nazwy zaczynają się od `Test` wewnątrz tych plików, a następnie wywołuje wszystkie funkcje, których nazwy zaczynają się od `test_` w te zajęcia. Ten rodzaj wykrywania testów jest możliwy dzięki głębokiemu wsparciu Pythona dla refleksji i dynamiki. Te cechy są często nieobecne w językach statycznie typowanych, ponieważ trudno je zintegrować z systemem typów. Dlatego interesuje mnie, jakie podejścia stosują języki statycznie typowane, aby uprościć odkrywanie testów?


title: Jak mogę poprawić wykorzystanie pamięci przez moją aplikację?

text: Piszę aplikację C# i widzę wzrost użycia pamięci wraz ze wzrostem czasu działania aplikacji. Czy są jakieś narzędzia lub techniki, które mogłyby monitorować wykorzystanie pamięci przez moją aplikację, identyfikować wycieki pamięci i ogólnie poprawiać wykorzystanie pamięci przez moją aplikację?


title: Poszukiwanie terminologii dla relacji podmiotu i predykatu

text: Pisząc predykaty do filtrowania zbiorów, natknąłem się na dobór odpowiednich słów na relację podmiotu z predykatem (angielski jest dla mnie językiem obcym). Skończyło się na tym, że napisałem "Tematy **pasujące** do tego predykatu..." Wydaje się to niepoprawne, ponieważ predykaty są funkcjami, a nie wyrażeniami regularnymi. Ale powiedzenie "Tematy, dla których ten predykat zwraca prawdę..." również brzmi dla mnie niezręcznie. Więc jaki byłby właściwy termin?


title: Losowa lista liczb w C

text: Właśnie rozpocząłem kurs programowania w C i do tej pory zajmowałem się tylko podstawami, takimi jak `printf`, poczytałem trochę o zmiennych itp. w podręczniku. Nauczyciel zlecił nam napisanie programu, który przyjmie wartość wprowadzoną przez użytkownika, będzie to liczba uczniów w klasie (w tej chwili 25, ale może być zmienna). Następnie losowo wymieni liczbę uczniów i umieści ich w 3 kolumnach. Celem jest losowe podzielenie uczniów na grupy po 3 osoby, a następnie wyświetlenie na ekranie w kolumnach. Teraz moje pytanie nie dotyczy kodu, który pokonuje cel, dla którego próbuję wykonać ćwiczenie, ale jak go ustrukturyzować. Widzę, że do wyświetlenia listy można użyć tablicy, ale tak naprawdę po kilku wskazówkach, jak najlepiej podejść do problemu w blokach, mogę spróbować zaprogramować każdy blok.


title: Wzorzec repozytorium: Doctrine2 a Microsoft Entity Framework?

text: Od kilku lat używam Symfony2 z Doctrine2. Niedawno zacząłem używać Entity Framework firmy Microsoft z MVC5. Z mojego doświadczenia z Symfony2 rozumiem, że zadaniem repozytorium jest tylko pobieranie i zwracanie obiektów, bez dodatkowych operacji, takich jak Zapisywanie. Teraz każdy przykład, który widziałem dla EF, ma metodę Save/Update jako część repozytorium. Dla symfony tworzyłem klasy menedżerskie w następujący sposób: interface IManager { function getClassName(); IRepository getRepository(); funkcja Zapisz(obiekt); funkcja Aktualizacja(); } Więc omijam menedżera, jeśli muszę pobrać obiekty, wywołuję bezpośrednio repozytorium. Jeśli muszę zapisać, dzwonię do metody oszczędzania menedżera. Czy repozytorium ma obsługiwać zapisywanie/aktualizację? Co myślisz o mojej klasie IManager, czy powinienem jej również używać do EF?


title: Czy dobrym pomysłem jest zwracanie wartości domyślnej, jeśli nie można znaleźć pola w zapytaniu?

text: W miejscu, w którym pracuję, używamy klasy SafeReader, która opakowuje IDataReader. Jedną z „funkcji” jest to, że jeśli pole, do którego próbujesz uzyskać dostęp, nie było w zapytaniu, to po prostu zwraca wartość domyślną. Tak więc pracuję z pewnym kodem, który jest już na miejscu, ale najwyraźniej nigdy w pełni nie działał, ponieważ uzyskuje dostęp do pól, które nie są zwracane z przechowywanego proc, które wywołuje, ale nie wyrzucił żadnych wyjątków, ponieważ SafeReader uprzejmie zwrócił wartości domyślne. Osobiście mi się to nie podoba, ponieważ oznacza to, że gdy są błędy w kodzie (ktoś zapomina dołączyć pole w zapytaniu, a może błąd ortograficzny) to trudniej to złapać. Moje pytanie brzmi, czy narusza to jakiekolwiek ogólne „najlepsze praktyki” w zakresie programowania lub ideały programowania obiektowego? A może wydaje się to całkiem rozsądne?


title: Jak menedżerowie wybierają języki programowania

text: Nie jest dla nikogo tajemnicą, że menedżerowie mogą i często narzucają język programowania, który będzie używany w projekcie. Będąc programistą, nigdy nie byłem w stanie tego zrozumieć. Ale teraz myślę, że tak: właśnie doznałem objawienia, gdy Joel Spolsky powiedział w podkaście, że powinni używać QuickBooks, ponieważ „każdy księgowy na świecie o tym wie”. Uderzyło mnie to jako bardzo podobne do „wybrał Javę, ponieważ każdy programista na świecie o tym wie”. Teraz, gdy zobaczyłem ten sam problem z innej perspektywy, niewiele wiem o rachunkowości, ale wiem coś o programowaniu, zastanawiam się, w jaki sposób programista może pomóc w doborze odpowiedniego języka programowania do projektu ?


title: W jaki sposób programista powinien uzyskać to, czego potrzebuje/chce od administratora systemów?

text: W jaki sposób ludzie polecaliby programistę, aby poinformować administratorów systemu o potrzebie nowszych, bardziej aktualnych bibliotek. W naszej organizacji programiści często wykonują wiele zadań administracyjnych systemu, takich jak aktualizacje systemu, instalacja oprogramowania, zarządzanie oprogramowaniem, odzyskiwanie określonych systemów po awariach itp. Programiści są obecnie ograniczeni wiekiem niektórych dostępnych systemów i chcieliby nowszych Dostępne dla nich systemy operacyjne, a następnie biblioteki. Jaki jest dobry sposób przekazywania tych życzeń SA, którzy ostatecznie decydują o tym, jakie systemy operacyjne mają zostać zainstalowane. Edytowane w celu uproszczenia całego pytania. Dziękuję.


title: Co zrobili moi koledzy programiści Delphi, aby środowisko Eclipse/Java było bardziej podobne do Delphi?

text: Jestem doświadczonym programistą Delphi pracującym nad moją pierwszą prawdziwą aplikacją na Androida. Jako środowiska programistycznego używam Eclipse i Javy. Rzeczą, za którą tęsknię najbardziej, są oczywiście komponenty VCL Delphi i związane z nimi narzędzia IDE do edycji w czasie projektowania i tworzenia kodu. Na szczęście uważam, że Eclipse jest piekielnym IDE z jego bogatą pomocą kontekstową, rozbudowanymi funkcjami autouzupełniania i kreatora kodu oraz innymi drobiazgami. To ogromna podwójna uczta, ponieważ jest **bezpłatny**. Jednak tutaj jest przykład czegoś w środowisku Eclipse/Java, co spowoduje zatrzymanie programisty Delphi. Wykorzystam prosty przypadek dodania skrótu kodu "na kliknięcie" dla przycisku OK. **DELPHI** * Upuść przycisk na formularzu * Dwukrotnie kliknij przycisk na formularzu i wypełnij kod, który uruchomi się po kliknięciu przycisku **ECLIPSE** * Upuść przycisk na układzie w graficznym edytorze plików XML * Dodaj Interfejs View.OnClickListener do listy „implementów” klasy zawierającej, jeśli jeszcze jej tam nie ma. ( _Command+1 na komputerach Mac, Ctrl + 1 na komputerach, o których sądzę_). * Użyj środowiska Eclipse, aby automatycznie dodać fragment kodu dla niezaimplementowanych metod potrzebnych do obsługi interfejsu View.OnClickListener, tworząc w ten sposób skrót funkcji obsługi zdarzeń. * Znajdź skrót i wypełnij go. Jeśli jednak masz więcej niż jedno możliwe źródło zdarzenia kliknięcia, musisz sprawdzić parametr View, aby zobaczyć, który element View wyzwolił zdarzenie OnClick(), co wymaga instrukcji case do obsługi wielu kliknij źródła zdarzeń. **UWAGA: Jestem stosunkowo nowy w środowisku Eclipse/Java, więc jeśli istnieje znacznie prostszy sposób na zrobienie tego, daj mi znać.** Teraz przepływ pracy nie jest aż taki okropny, ale znowu jest to po prostu najprostszy w użyciu sprawy. Zwiększ ilość dodatkowej pracy i myślenia dla bardziej złożonego komponentu (aka widżetu) i dużej liczby właściwości/zdarzeń, które może mieć. Już niedługo będziesz bardzo tęsknił za inteligentnym edytorem właściwości Delphi i innymi projektantami. Eclipse próbuje rozwiązać ten problem, udostępniając obszerną listę właściwości w menu, które pojawia się po kliknięciu prawym przyciskiem myszy komponentu/widżetu w graficznym edytorze układu XML. To ogromna i mile widziana pomoc, ale nie jest to nawet bliskie wygodzie Delphi IDE. Powiem bardzo jasno. Absolutnie nie mówię ani nie chcę rozpoczynać dyskusji na temat ideologii Delphi vs. Java. Android/Eclipse/Java jest tym, czym jest i jest wiele rzeczy, które mnie imponują. Chcę wiedzieć, co inni programiści Delphi, którzy przeszli na środowisko Eclipse/Java IDE, zrobili, aby uczynić rzeczy bardziej podobnymi do Delphi, a nie tylko w celu ułatwienia tworzenia kodu zdarzeń komponentu/widgetu, ale każdego zadania programistycznego. Na przykład: * Sprytne porady/sztuczki * Znalezione wtyczki Eclipse * inne pomysły? Wszelkie świetne posty na blogu lub zasoby internetowe na ten temat również są mile widziane. \-- roschler


title: Czy makra są wartościami, typami danych, identyfikatorami, zmiennymi, stałymi lub...?

text: Makra istnieją w wielu językach programowania, na przykład C. 1. Typ danych to zbiór wartości z operacjami na wartościach. Czy makra są wartościami czy typami danych? 2. Czy makra są identyfikatorami, zmiennymi czy stałymi? 3. Czy makra są czymś, co nie należy do języka programowania, a czymś, co zostanie przetłumaczone na język programowania na etapie wstępnego przetwarzania kompilacji? Dziękuję,


title: Jeśli możemy programować w Pythonie, czy potrzebujemy określonego języka programowania funkcjonalnego?

text: Używając generatorów i lambdy, możemy programować w Pythonie funkcjonalnie. To samo możesz osiągnąć z Ruby. Więc pytanie brzmi: dlaczego potrzebujemy określonych języków programowania funkcjonalnego, takich jak Erlang, Haskell i Scheme? Czy jest coś innego, co zapewniają te konkretne funkcjonalne języki programowania? Dlaczego nie możemy po prostu użyć Pythona do programowania funkcjonalnego?


title: Oblicz statystyki dla aplikacji internetowej

text: Planuję dodać kilka statystyk użytkowania do mojej aplikacji internetowej. Kilka typowych rzeczy, takich jak: zarejestrowani użytkownicy, ilość komentarzy/postów itp. w czasie (ostatnie 24 godziny / ostatni tydzień / ostatni miesiąc / ostatni rok), które chcę wyświetlić graficznie wszystkim administratorom. Wiem, że mogę pobrać wszystkie informacje z zapytań do bazy danych, ale mam złe przeczucie, przeglądając w kółko „stare dane”. Przykład: _Wczoraj poprosiłem o liczbę użytkowników, którzy zarejestrowali konto w zeszłym roku. Administrator XYZ żąda dziś tych samych statystyk._ Proste zapytanie typu „wybierz wszystkich użytkowników-data-rejestru-data zeszłego roku” byłoby zbędne i spowodowałoby duży ruch w bazie danych, prawda? **Jakie jest najlepsze podejście do obliczania takich danych statystycznych?**


title: Dlaczego Reflector jest tak niezbędnym narzędziem?

text: Przeczytanie plotek dotyczących płatnego Reflectora sprawiło, że zacząłem myśleć o produkcie i jego zastosowaniach. Wiele osób uważa to za niezbędne narzędzie. Muszę przyznać, że od lat nie używałem Reflectora. Mam na myśli, że istnieje dokumentacja zarówno API .Net, jak i komponentów innych firm, których używam. W przeszłości za każdym razem, gdy kolega wyjmował Reflector z pasa na narzędzia, miałem wrażenie, że idzie w chwasty. Czytanie całej pasji związanej z Reflectorem prowadzi mnie do pytania, czy naprawdę czegoś tu brakuje. Dlaczego potrzebujesz czegoś takiego jak Reflector tak często, że uważasz go za niezbędne narzędzie? Widzę, że jest to potrzebne w bardzo rzadkich przypadkach, ale nie na tyle, aby uznać go za niezbędne narzędzie. Proszę, oświeć mnie.


title: Jaki jest najłatwiejszy sposób wyświetlania tablicy bajtów RGB jako obrazu?

text: Mam tablicę bajtów przechowywaną w pliku. Chcę najszybszego i najłatwiejszego sposobu przeglądania obrazu, niezależnie od tego, czy jest to pisanie kodu, czy korzystanie z narzędzia lub strony internetowej.


title: JITy kodu maszynowego i bit blokady wykonywania

text: W jaki sposób kod maszynowy generowany w czasie wykonywania (na przykład dane wyjściowe JIT) jest faktycznie wykonywany przez procesor, jeśli procesor/system operacyjny ma bit Execution Disable? O ile mi wiadomo, wiele nowoczesnych procesorów i systemów operacyjnych zawiera obsługę bitu NX (w tym Intel i ARM), co uniemożliwia wykonanie kodu maszynowego przechowywanego pod dowolnym adresem _innym_ niż sekcja kodu skompilowanego pliku binarnego. Oczywiście jest to dobra zaleta bezpieczeństwa, ponieważ zapobiega atakom polegającym na wstrzykiwaniu kodu powłoki. Ale w jaki sposób silniki JIT, takie jak LLVM, które dynamicznie generują kod maszynowy, mogą to obejść?


title: Czy odręczne pisanie kodu to skuteczny sposób na naukę języka programowania?

text: Na moim wstępie do C++ w zeszłym semestrze wszystkie nasze testy były papierem/ołówkiem i musieliśmy pisać kod długopisem lub ołówkiem, aby odpowiedzieć na pytania. W tamtym czasie wydawało się to sprzeczne z intuicją, ale zapewniało też, że uczniowie znają odpowiedź aż do ostatniego średnika. Biorąc pod uwagę, że notatki pisane odręcznie są niezbędną praktyką w nauce innych tematów zarówno w klasie, jak iw domu, jak wydajne są przykłady kodu pisma ręcznego i dokumentacja?


title: Wersjonowanie semantyczne i rozdzielanie biblioteki, zapewniając kompilację w pakiecie

text: Mam ładną, dość popularną bibliotekę JavaScript, która podąża za wersjonowaniem semantycznym. Obecna biblioteka ma kilka bibliotek zależności, które są dostępne jako osobne pliki do pobrania lub jako część pojedynczego pakietu do pobrania. Widzę potrzebę dalszego podążania tą ścieżką. Chcę wyodrębnić dodatkowe, mniejsze biblioteki z jednej większej biblioteki. Każda z tych wyodrębnionych bibliotek byłaby dostępna jako osobne pliki lub ponownie w jednej dołączonej kompilacji. Jeśli pójdę tą ścieżką wyodrębniania bibliotek i dostarczenia dołączonej wersji ostatecznego kodu, czy wymaga to pełnej zmiany wersji w wersji semantycznej? Czy musiałbym przeskoczyć z 1.x na 2.x? Moja pierwsza myśl, że nie: nie zmienię żadnego publicznego API, więc nie muszę zmieniać głównego numeru wersji. Ale potem się zastanawiam… cóż, przebudowuję wiele rzeczy, nawet jeśli ostateczny interfejs API dla wersji w pakiecie byłby taki sam. Czy istnieje jasna odpowiedź od semver na coś takiego? Czy muszę wbić pierwszą, drugą czy trzecią kropkę? Albo coś innego?


title: Dlaczego NIE mielibyśmy robić częstego wdrażania w PROD lub na serwerze testowym?

text: Mój kierownik projektu poinstruował mnie, że należy unikać częstego wdrażania w PROD lub na serwer testowy. Ale nie rozumiem dlaczego? Przenosimy naszą kopię testową do PROD na każdym końcu sprintu, ale nagle klient poprosiłby o prostą zmianę w istniejącej aplikacji, która wymagałaby ponownego wdrożenia. Kiedy wszystko zostało dobrze przetestowane i zatwierdzone do kontroli jakości. dlaczego powinniśmy unikać częstego wdrażania? Jak to się powszechnie robiło?


title: Jakie są najlepsze praktyki szybkiego prototypowania przy użyciu wyłącznie HTML/CSS/JS?

text: Zajmuję się tworzeniem **prototypu** aplikacji internetowej. Chcę używać tylko HTML, CSS i JavaScript. Wolę korzystać z mojego edytora tekstu i nie musieć uczyć się (ani płacić, o to chodzi) nowego narzędzia, takiego jak Axure. Jakie byłyby według Ciebie najlepsze praktyki? Dla mnie jest wiele cech dobrego prototypu: * Szybko się rozwija * Łatwy do ulepszenia * Uczciwa wierność w zakresie UX (to dyskwalifikuje narzędzia takie jak Omnigraffle czy PowerPoint, które są bardziej dedykowane do wireframing) Staram się uczyć tak szybko, jak to możliwe, ale ja chciałbyś wiedzieć, w oparciu o twoje doświadczenie, jak udało ci się być szybkim i zwinny. Odniesienie: * http://www.boxesandarrows.com/view/prototyping-with


title: Nawigacja po kodzie w Visual Studio

text: OK, więc mój plik klasy robi się dość duży i to jest zapach kodu. Ale dopóki nie będę mógł tego zmienić, muszę się tym zająć. Opcje podstawowe: 1. Regiony kodu. 2. Podział na klasy cząstkowe. Nigdy tak naprawdę nie lubiłem regionów kodu. Pisanie zajmuje im trochę czasu i wydaje mi się, że zawsze składam/rozkładam regiony, żeby coś znaleźć. Podoba mi się pomysł na częściową klasę. Powiedzmy na przykład, że wszystkie właściwości publiczne i prywatne przechodzą do klasy częściowej, gdy stają się zbyt liczne. Czy to ma sens? Najważniejsze jest to, że po prostu muszę być w stanie szybko znaleźć metody i właściwości, tj. Nawigować po kodzie. Więc naprawdę pytam, jaki jest najlepszy sposób na nawigację po kodzie?


title: Informatyka: sztuka czy nauka?

text: Różne uczelnie i uniwersytety mogą oferować dyplom z informatyki jako sztukę lub naukę. Jakie są różnice między nimi? Czy rekruterzy i ci, którzy przeprowadzają rozmowy kwalifikacyjne, faworyzują jednego nad drugim? _(Bachelor of Arts vs Bachelor of Sciences itp...)_ **Aktualizacja** \- Chciałem tylko dodać ten link do strony Joela Spolsky'ego, aby uzyskać lepszy układ odniesienia: licencjat lub licencjat z informatyki


title: „Żądania ściągnięcia” w stylu Github bez Github

text: Pracuję jako analityk dla instytucji finansowej, która ze względu na wrażliwość danych nie będzie przechowywać żadnych danych w chmurze. Jednak odnoszę pewne sukcesy w zachęcaniu mojego zespołu do używania Git do zarządzania kodem. Zastanawiałem się, czy istnieje sposób na zaimplementowanie pull requestów w stylu Github na naszym własnym serwerze. Specyficzną funkcją, która mnie interesuje, jest możliwość przesyłania zestawu zmian _do komentarzy_ , bez faktycznego łączenia go z daną gałęzią. Podoba mi się przepływ pracy (1) przesyłanie zmian, (2) przeglądanie i komentowanie zmian oraz (3) akceptowanie zatwierdzenia lub odrzucanie go. Czy można to zaimplementować (jeszcze lepiej, czy można to _łatwo_ zaimplementować) na naszych własnych serwerach?


title: Synchronizacja lokalnej i zdalnej pamięci podręcznej w buforowaniu rozproszonym

text: W przypadku rozproszonej pamięci podręcznej podzbiór pamięci podręcznej jest przechowywany lokalnie, podczas gdy reszta jest przechowywana zdalnie. * W operacji **get**, jeśli wpis nie jest dostępny lokalnie, zostanie użyta zdalna pamięć podręczna, a wpis zostanie dodany do lokalnej pamięci podręcznej. * W operacji **put** aktualizowana jest zarówno lokalna, jak i zdalna pamięć podręczna. Inne węzły w klastrze również muszą zostać powiadomione o unieważnieniu ich lokalnej pamięci podręcznej. Jaki jest najprostszy sposób na osiągnięcie tego, jeśli **zaimplementowałeś to sam** , zakładając, że węzły nie są świadome siebie nawzajem. **Edytuj** Moja obecna implementacja wygląda tak: * Każdy wpis w pamięci podręcznej zawiera znacznik czasu. * Operacja Put zaktualizuje lokalną pamięć podręczną i zdalną pamięć podręczną * Operacja Get wypróbuje lokalną pamięć podręczną, a następnie zdalną pamięć podręczną * Wątek w tle na każdym węźle będzie okresowo sprawdzać zdalną pamięć podręczną dla każdego wpisu w lokalnej pamięci podręcznej. Jeśli znacznik czasu na zdalnym jest nowszy, nadpisz lokalny. Jeśli wpis nie zostanie znaleziony w zdalnym, usuń go z lokalnego.