title: Czy RESTFUL API jako usługa zaplecza jest jednym z najlepszych (lub odpowiednich) wyborów dla aplikacji mobilnej?

text: Mam doświadczenie w programowaniu .NET, ostatnio zostałem poproszony o zakodowanie usługi back-end dla aplikacji mobilnej. Miałem doświadczenia na MVC, a teraz próbuję zrozumieć więcej na Restful Web API. Moje pytania brzmią: Czy Restful API jako usługa zaplecza jest jedną z najlepszych (lub odpowiednich) opcji dla aplikacji mobilnej? Jakie jest obecnie powszechne rozwiązanie dla usługi back-endu aplikacji mobilnej? **Edytuj** : (nie na temat) Przeczytałem to, zanim zadam to pytanie. > Jeśli jest to związane z koncepcjami programowania wyższego poziomu lub jest konceptualne (ale > nadal związane z programowaniem), powinno być na programistach. To nie jest pytanie o **polecam narzędzie, bibliotekę lub ulubiony zasób off-site** **Pytałem o** * czy spokojny web API nadaje się do tworzenia usługi mobilnej * jakie są typowe rozwiązania do budowy API aplikacji mobilnej


title: Czy doświadczenie jest bardzo ważne podczas zatrudniania/bycia zatrudnionym w Twoim kraju?

text: W indyjskiej branży IT odkryłem, że niezależnie od poziomu umiejętności kandydata, filtrowanie odbywa się na podstawie liczby lat doświadczenia. Odkryłem, że osoby z 5-letnim doświadczeniem zawodowym mają przerażające umiejętności programowania, ogólne uzdolnienia i inteligencję. W większości są to osoby, które na studiach odbyły kursy niezwiązane z CS, ale niekoniecznie (niestety). Myślę, że lata doświadczenia są bardzo marginalnym i niewiarygodnym wskaźnikiem poziomu umiejętności danej osoby. Ktoś mógłby spędzić 5 lat jako programista wykonując przeciętną pracę poniżej standardów. Ale nadal są uważani za wartościowego kandydata, biorąc pod uwagę „certyfikat doświadczenia”, który mogą wyprodukować. Ale taka jest rzeczywistość w Indiach. Jaka jest ogólna praktyka w USA i innych krajach? Czy rekruterzy filtrują na podstawie lat doświadczenia? Jeśli jesteś rekruterem i rozumiesz praktykę filtrowania opartą na wieloletnim doświadczeniu, czy możesz wyjaśnić logikę stojącą za tym? Edycja: Chociaż zgadzam się, że doświadczenie przebija dodatkowe kwalifikacje (w kategoriach stopni), nie sądzę, aby LATA doświadczenia – dokument stwierdzający to samo – były wiarygodnym wskaźnikiem umiejętności lub dojrzałości. To było moje pytanie. Indyjska rekrutacja IT pracuje na certyfikatach. Nie mam na myśli niespotykanych firm, które handlują tylko na fakcie, że 1 USD = 45 rupii. Znalazłem to w firmach takich jak Oracle! Certyfikat doświadczenia kwalifikuje Cię lub nie kwalifikuje do rozmowy kwalifikacyjnej. Pewnie, DOMYŚLAM, że nie chcesz oddawać świeżo upieczonej uczelni na stanowisko kierownika projektu. Nawet tam nie jestem pewien, jak duże powinno ważyć doświadczenie w kwalifikacjach kandydatów do rozpatrzenia rekrutacji.


title: Ado połączone i odłączone klasy .net?

text: ## Plusy i minusy oraz zastosowanie Przygotowuję się do rozmowy kwalifikacyjnej na stanowisko programisty na platformie .net. W przypadku problemów związanych z bazą danych muszę do punktu o połączonych i rozłączonych klasach ADO .NET. Przeczytałem kilka artykułów, ale nadal nie mam idealnego obrazu tych dwóch terminów. Stąd jestem w najlepszym miejscu na konkretną dupę. Czy ktoś może mi wyjaśnić zalety i wady oraz scenariusze użytkowania?


title: Jakie są wady testów automatycznych?

text: Na tej stronie znajduje się wiele pytań, które dostarczają wielu informacji na temat korzyści, jakie można uzyskać z automatycznego testowania. Ale nie widziałem niczego, co przedstawiałoby drugą stronę medalu: jakie są wady? Wszystko w życiu jest kompromisem i nie ma srebrnych pocisków, więc z pewnością muszą istnieć jakieś ważne powody, aby nie przeprowadzać zautomatyzowanych testów. Czym oni są? Oto kilka, które wymyśliłem: * Wymaga więcej początkowego czasu programisty dla danej funkcji * Wymaga wyższego poziomu umiejętności członków zespołu * Zwiększenie potrzeb w zakresie narzędzi (uruchamiacze testów, frameworki itp.) * Złożona analiza wymagana w przypadku niepowodzenia napotkano test - czy ten test jest przestarzały z powodu mojej zmiany, czy mówi mi, że popełniłem błąd? **Edytuj** Powinienem powiedzieć, że jestem wielkim zwolennikiem testów automatycznych i nie chcę być do tego przekonany. Chcę zrozumieć, jakie są wady, więc kiedy idę do mojej firmy, aby to zrobić, nie wyglądam, jakbym rzucał następną wyimaginowaną srebrną kulą. Ponadto wyraźnie _nie_ szukam kogoś, kto zakwestionuje moje przykłady powyżej. Przyjmuję za prawdę, że _muszą_ być jakieś wady (wszystko ma kompromisy) i chcę zrozumieć, co to jest.


title: Czy pamięć .Net jest głodna?

text: Mój przyjaciel powiedział mi, że .NET Framework jest głodny pamięci i podał mi przykład, że jeśli stworzę aplikację (w formularzach internetowych .NET), która zajmie 20 MB pamięci RAM, będzie faktycznie marnować 1,5 MB. Oznacza to że wycieknie 15 MB dla aplikacji 200 MB, co jest zdecydowanie za dużo. Czy to prawda? Czy ktoś może podać mi linki, które to opisują?


title: Alternatywa dla Access+SQL Server dla projektów korporacyjnych

text: Jesteśmy małą firmą programistyczną, opracowującą projekty dla zakładów produkcyjnych w zakresie analizy, identyfikowalności, raportowania itp. Używamy Access jako front-end, SQL Server jako back-end. Mamy też dość dużych klientów, a nasza firma się rozwija. Jak dotąd działa dobrze, ale zastanawiam się, czy powinniśmy przejść do bardziej wpływowych technologii, takich jak rozwiązania internetowe. Co myślisz o przyszłości Access?


title: Jak można uczynić pisanie dokumentacji mniej nieprzyjemnym?

text: Co sprawia, że pisanie dokumentacji jest dla niektórych nieprzyjemne i co można zrobić, aby było mniej nieprzyjemne? Bieżące przemyślenia: 1. Upewnij się, że opisywany program ma sens (np. nie ma w nim zbyt wielu krówek lub +1 lub -1). Źle się czujesz i jest to trudniejsze, opisując program, który nie ma sensu! 2. Pokonaj strach przed pisaniem. Popraw swoje umiejętności pisania, być może w przyjemnych zadaniach.


title: Czy istnieją jakieś główne alternatywy dla Waterfall i Agile?

text: Jestem ciekaw, czy ktoś zna jakiekolwiek metodologie, które są znacząco różne (nie rekombinacja), a szczególnie doceniłbym każdego, kto przedstawił jakiekolwiek doświadczenia z alternatywami.


title: jak obsługiwać / architekt soa gdy usługa staje się niedostępna?

text: Załóżmy, że mam usługę innej firmy o nazwie Cool.io, która zapewnia interfejs API RESTful, ale często nie działa. Moje aplikacje wykorzystują ten interfejs API, ale kiedy Cool.io przestaje działać, moja aplikacja naprawdę niewiele może ... ale powinna! Powiedzmy, że tworzę proxy do Cool.io, które przechowuje kopię danych Cool.io i zapewnia punkty końcowe RESTful dla mojej aplikacji. Załóżmy, że moje proxy ma 100% niezawodności, a przynajmniej więcej niż Cool.io. Załóżmy również, że mój serwer proxy nie ma problemu z propagacją PUT/POST do Cool.io i nie ma problemów z otrzymywaniem tego samego z Cool.io (innymi słowy, nie ma problemów z synchronizacją danych między moim serwerem proxy a Cool.io). To oddziela zależność mojej aplikacji od Cool.io, która cały czas spada... ale nie oddziela serwera proxy od usługi Cool.io. W związku z tym, gdy moja aplikacja modyfikuje coś na serwerze proxy, dane proxy zmieniają się i próbuje wysłać tę zmianę do Cool.io. Ale jeśli Cool.io nie działa, to żądanie powoduje tylko błąd niedostępności (lub nieudane połączenie). Jaki jest właściwy sposób na zaprojektowanie czegoś takiego? W jaki sposób faceci tacy jak Amazon czy Netflix rozdzielają swoje usługi tak, aby awaria nie wpłynęła na konsumenta, a jeśli tak, to robi to z wdziękiem? Czy kolejka wiadomości jest tutaj w porządku? Czy istnieje prostsze rozwiązanie niż tworzenie proxy do zawodnej usługi?


title: Rozsądne wymagania dotyczące pokrycia testami w kontaktach z wykonawcą?

text: Zlecamy część pracy zewnętrznemu programiście, więc jestem zajęty pisaniem umowy o tym, co stanowi element wynikowy. Na razie wymagam, aby kod był dostarczany z automatycznymi testami. Ale jaki jest rozsądny sposób określenia szczegółów testów z góry w umowie w mierzalny sposób? Niechętnie mówię „100% pokrycia kodu”, ponieważ dość często ustalono, że 100% jest zupełnie bez znaczenia, a malejące zwroty powyżej około 70-80% prawdopodobnie tylko niepotrzebnie podniosą nasze koszty, a być może nawet podniosą. złożoność pewnych rzeczy, które w przeciwnym razie mogłyby być bardzo proste. Wewnętrznie pozostawiamy naszym programistom decyzję o wymaganym poziomie testów, w oparciu o ich intuicję i doświadczenie. W przypadku kontrahenta istnieje jednak stała cena, którą należy uzgodnić z góry i potrzebujemy jakiegoś sposobu, aby wymusić pewien poziom jakości. Wszelkie sugestie lub polecane materiały do czytania będą mile widziane!


title: Algorytm minimalizujący różnice odległości między współrzędnymi 2D

text: Szukałem algorytmu, który zoptymalizowałby odległość między 2 listami współrzędnych i wybrał, która współrzędna powinna iść razem. Powiedzmy, że mam Lista 1: 205|200 220|210 200|220 200|180 Lista 2: 210|200 207|190 230|200 234|190 Obliczona odległość między współrzędnymi: 205|200 do 210|200 == 5,00 205| 200 do 207|190 == 10,20 205|200 do 230|200 == 25,00 205|200 do 234|190 == 30,68 220|210 do 210|200 == 14,14 220|210 do 207|190 == 23,85 220| 210 do 230|200 == 14,14 220|210 do 234|190 == 24,41 200|220 do 210|200 == 22,36 200|220 do 207|190 == 30,81 200|220 do 230|200 == 36,06 200| 220 do 234|190 == 45,34 200|180 do 210|200 == 22,36 200|180 do 207|190 == 12,21 200|180 do 230|200 == 36,06 200|180 do 234|190 == 35,44 Ten algorytm wybrałby: 205|200 do 230|200 == 25,00 220|210 do 207|190 == 23,85 200|220 do 210|200 == 22,36 200|180 do 234|190 == 35.44 Algorytm wybrałby te liczby jako byliby grupą, która miałaby najmniejszą różnorodność między odległością. Warunki: 1. Współrzędna może być używana tylko jako jedna z każdej listy. 2. Jeśli Lista 1 lub Lista2 jest większa niż, nadal używa każdej współrzędnej tylko raz, ale próbuje uzyskać najmniejszą wariancję odległości i nie robi nic z nieużywanymi współrzędnymi. Jeśli potrzebujesz więcej wyjaśnień, zapytaj. PS Przyjrzałem się węgierskiemu algorytmowi i wygląda na to, że wykona swoją pracę, ale nie do końca tak, jak się spodziewałem. Algorytm węgierski spróbuje tylko uzyskać najmniejszą odległość od wszystkich współrzędnych, co może oznaczać najmniejszą wariancję, ale nie za każdym razem, ponieważ wariancja jest tutaj ważniejsza niż optymalizacja najmniejszej odległości. **Dodatkowe informacje** Będę miał tablicę Lista1, Lista2, a następnie odległości: Odległość[List1_element_0][List2_item_0] = 5; Odległość[List1_item_0][List2_item_1] = 10,20; Odległość[List1_item_0][List2_item_2] = 25,00; Odległość[List1_element_0][List2_item_3] = 30,68; Odległość[List1_item_1][List2_item_0] = 14,14; Odległość[List1_item_1][List2_item_1] = 23,85; Odległość[List1_item_1][List2_item_2] = 14,14; Odległość[List1_item_1][List2_item_3] = 24,41; Odległość[List1_element_2][List2_item_0] = 22,36; Odległość[List1_item_2][List2_item_1] = 30,81; Odległość[List1_element_2][List2_item_2] = 36,06; Odległość[List1_element_2][List2_item_3] = 45,34; Odległość[List1_item_3][List2_item_0] = 22,36; Odległość[List1_item_3][List2_item_1] = 12.21; Odległość[List1_item_3][List2_item_2] = 36,06; Odległość[List1_item_3][List2_item_3] = 35,44; Z odległości['List1_item_#] musiałbym wybrać odległość. Po wybraniu tej odległości [List2_item_#] NIE MOŻE być wybrany przez inny [List1_item_#]. Odległości wybrane dla każdego elementu [List1_item_#] musiałyby zostać wybrane w taki sposób, aby różnica między nimi wszystkimi była minimalna. Tak więc odległość dla każdego [List1_item_#] powinna być jak najbliżej siebie, bez ponownego użycia [List2_item_#] więcej niż raz.


title: Jakie są najpopularniejsze IDE na język?

text: Nie ma to nic wspólnego z posiadaniem ulubionego edytora ani nic w tym stylu. Zastanawiałem się tylko, jakie są najpopularniejsze zintegrowane środowiska programistyczne w poszczególnych językach? Może top 2-3, jeśli jest jakaś niezgoda. (Wystarczy spostrzegana popularność) Do tej pory: **C#** - Visual Studio, SharpDevelop **Java** - Eclipse, NetBeans, IDEA **Objective-C** - Xcode **Delphi** - RAD Studio **Obiekt Pascal** - Delphi, Lazarus **C, C++** - Visual Studio, Vim **PL/SQL** - RapidSQL, Oracle SQLDeveloper **PHP** - Eclipse, NetBeans, Nusphere PHPed **Actionscript (AS2, AS3 )** - FlashDevelop **Flex** - Flash Builder 4 **Python** - Eclipse, IDLE **Perl** - Padre **Common Lisp** - Lispworks, Emacs **Ruby** - TextMate **Haskell ** — Vim **Fortran** — Vim **Visual Basic** — Visual Studio


title: Dlaczego kompilatory są tak niezawodne?

text: Używamy kompilatorów na co dzień tak, jakby ich poprawność była dana, ale kompilatory to także programy i potencjalnie mogą zawierać błędy. Zawsze zastanawiałem się nad tą nieomylną solidnością. Czy kiedykolwiek napotkałeś błąd w samym kompilatorze? Co to było i skąd zorientowałeś się, że problem tkwi w samym kompilatorze? ...i jak _do_ sprawiają, że kompilatory są tak niezawodne?


title: Projektowanie aplikacji wewnętrznych VS Projektowanie aplikacji internetowych

text: Wywodzę się z tworzenia aplikacji webowych i staram się zrobić małą aplikację desktopową. Szukam dobrego sposobu na zbudowanie szkieletu mojej aplikacji desktopowej. Od strony projektu szkieletem zajmuje się głównie przeglądarka internetowa połączona z serwerem WWW, który zarządza stanami aplikacji (każdą stronę można porównać do stanu), co w pewien sposób „opakuje” całą aplikację i daje dostęp do podstawowych informacje takie jak zmienne `post` i `get` (i wiele innych). Na koniec możesz owinąć całą aplikację internetową w projekt MVC. Zastanawiam się, jak mogę zrobić to samo (lub coś podobnego) w aplikacji desktopowej? Jak mogę (lub powinienem) właściwie zapakować swoją aplikację? Czy powinienem wybrać projekt maszyny stanowej w połączeniu z MVC, czy jest coś lepszego? Dziękuję za Twój czas


title: Sposoby obsługi asynchronicznych połączeń odbiorczych

text: Wdrażam prymitywny system przekazywania wiadomości. Obecnie projektuję funkcję odbierania dla połączeń asynchronicznych. Czy mogę zaimplementować taką funkcję asynchronicznego odbierania bez użycia funkcji zwrotnych?


title: Jak uniemożliwić tym samym użytkownikom ocenianie treści internetowych, takich jak wideo, więcej niż raz?

text: Mamy rodzaj strony internetowej youtube, na której obliczamy ocenę dla każdego filmu. Na podstawie oceny przyznajemy gotówkę. Nasz problem polega na tym, że ten sam użytkownik nie może ocenić filmu więcej niż raz. Pomyśleliśmy, że jeśli będziemy śledzić statyczny adres IP, będziemy w stanie to osiągnąć, ale odkryliśmy, że istnieją narzędzia innych firm, które można wykorzystać do manipulowania adresem IP i złamania go. **Uwaga:** myśleliśmy, że tylko zalogowani klienci mogą ocenić film, ale klient prosi, aby nawet gość mógł ocenić film. Czy mamy inną metodę śledzenia tego, aby użytkownik nie mógł ocenić więcej niż raz?


title: Czy są jakieś dobre biblioteki Java/JVM dla mojej architektury Expression Tree?

text: Wraz z moim zespołem opracowujemy aplikację na poziomie przedsiębiorstwa i opracowałem dla niej architekturę, którą najlepiej można opisać jako „drzewo wyrażeń”. Podstawowa idea polega na tym, że węzły liścia drzewa są bardzo prostymi wyrażeniami (być może prostymi wartościami lub łańcuchami). Węzły bliżej pnia będą coraz bardziej złożone, przyjmując prostsze węzły jako dane wejściowe i zwracając bardziej złożone wyniki dla swoich rodziców. Patrząc na to z innej strony, aplikacja wykonuje jakieś zadanie i do tego tworzy wyrażenie root. Wyrażenie root dzieli swoje dane wejściowe na mniejsze jednostki i tworzy wyrażenia podrzędne, których po ocenie może użyć do zbudowania własnego wyniku. Proces dzielenia trwa do najprostszych węzłów liści. Istnieją dwa bardzo ważne aspekty tej architektury: * Musi istnieć możliwość manipulowania węzłami drzewa po jego zbudowaniu. Węzłom można nadać nowe wartości wejściowe do pracy, a każda zmiana wyniku dla tego węzła musi być propagowana z powrotem w drzewie do węzła głównego. * Aplikacja musi jak najlepiej wykorzystywać dostępne procesory i być skalowalna do innych komputerów w sieci grid lub w chmurze. Węzły w drzewie często aktualizują się jednocześnie i powiadamiają inne zainteresowane węzły w drzewie, gdy otrzymają nową wartość. Niestety, nie mogę omawiać mojej rzeczywistej aplikacji, ale aby trochę pomóc w zrozumieniu, możesz wyobrazić sobie rodzaj aplikacji arkusza kalkulacyjnego implementowanej o podobnej architekturze, w której zmiany w komórkach w tabeli są propagowane w całym miejscu do innych komórek, które potrzebują wyniku. Arkusz kalkulacyjny może stać się tak ogromny, że zastosowanie wielordzeniowego, wielokomputerowego systemu rozproszonego do jego rozwiązania byłoby korzystne. Mój prototyp „Expression Engine” działa ładnie na jednym wielordzeniowym komputerze, ale zacząłem napotykać na kilka problemów ze współbieżnością (zgodnie z oczekiwaniami, ponieważ do tej pory nie byłem zbyt ostrożny), więc teraz jest Czas zacząć myśleć o migracji silnika do bardziej niezawodnej biblioteki, a to prowadzi do szeregu powiązanych pytań: 1. Czy jest jakiś precedens dla mojej architektury „drzewa wyrażeń”, który mógłbym zbadać? 2. Jakie koncepcje programistyczne powinienem wziąć pod uwagę. Zdaję sobie sprawę, że to podejście ma wiele podobieństw do stylu programowania funkcjonalnego i znam już koncepcje wykorzystania przyszłości i aktorów. Czy są jeszcze jakieś inne? 3. Czy są jakieś języki lub biblioteki, których powinienem się uczyć? To pytanie jest inspirowane moim przypadkowym odkryciem Scali i biblioteki Akka (która ma dobre wsparcie dla Actors, Futures, Distributed workloads itp.) i zastanawiam się, czy jest jeszcze coś, na co również powinienem patrzeć?


title: c++ Model View Presenter: Gdzie zbudować prezenter?

text: Używam wzorca Model View Presenter (MVP) zgodnie z opisem w dokumencie The Humble Dialog Box (pdf) z projektem MFC. Jestem pewien, że problem jest taki sam w przypadku większości zestawów narzędzi GUI. To, co mnie niepokoi, to konkretny widok (tj. klasa dialogu) to tworzenie nie tylko prezentera, ale także usług, których potrzebuje prezenter. Czy to normalne? Dlaczego widok musi wiedzieć, jakich usług potrzebuje prezenter? Myślę, że powinienem zależności wstrzyknąć prezentera do klasy okna dialogowego. Główną kontrolką dla aplikacji jest klasa wywodząca się z CWinApp. Czy powinienem więc skonstruować usługi i prezenter w tej klasie, a następnie wstrzyknąć je do klasy okna dialogowego? Chociaż w jaki sposób miałbym wstrzyknąć prezenter do klasy okna dialogowego, gdy prezenter potrzebuje odwołania do klasy widoku w swoim konstruktorze? `MyPresenter(IView *view, MyService *service);` Co powiesz na to, że jeśli główne okno odradza się z wyskakującego okienka, gdzie powinny zostać skonstruowane szczegóły dotyczące tego prezentera i usług systemu Windows? Ponieważ jest to C++, nie sądzę, żebym był zainteresowany jakimkolwiek frameworkiem DI. **UPDATE** Jednym z pomysłów, jaki miałem, było skonstruowanie prezentera z widokiem zerowym, konstruktor wstrzykuje prezenter do klasy okna dialogowego, a następnie w konstruktorze klasy okna wywołuje metodę `SetView(IView *view)` na prezenter z `this` gdzie `this` byłoby klasą okna dialogowego (pochodzącą z IView). A więc: MojaAplikacja::Start() { SomeService *service = new SomeService(); MyPresenter *presenter = new MyPresenter(null, service); MyDialog *dialog = new MyDialog(prezenter); ... } MyDialog::MyDialog(MyPresenter *prezenter): prezenter_(prezenter) { prezenter_->SetView(this); } Wydaje się trochę niezgrabny, ale utrzymuje konstrukcję usługi poza klasą Dialog. Zerowy widok wydaje się trochę niebezpieczny. Alternatywą byłoby skonstruowanie klasy NullView, która miała puste treści metody, a następnie przekazanie jej do konstruktora prezentera.


title: Przygotowanie do rozmowy kwalifikacyjnej z programistą aplikacji Mac

text: Jestem programistą aplikacji dla komputerów Mac z doświadczeniem 1 rok i 8 miesięcy. Muszę zmienić firmę. Jakich pytań powinienem się spodziewać podczas rozmowy kwalifikacyjnej? Pracowałem nad 2 projektami, z których drugi jest bardzo duży i pracuję nad nim od ponad roku do teraz. Ale żaden z nich nie jest jeszcze na rynku. Oba są aplikacjami komputerowymi. * Jak dobrze powinienem przygotować się do rozmowy kwalifikacyjnej? * Na czym powinienem się bardziej skoncentrować? * To będzie mój pierwszy wywiad jako doświadczony. Nie pracowałem na iOS. Czy to będzie przewinienie? * Czy posiadanie niepublikowanych projektów w moim CV byłoby wadą? * Czy powinienem pomyśleć o włączeniu innych projektów, nad którymi nie pracowałem (ale studiowałem) do mojego CV, nawet wiedząc, że nie jest to dobre?


title: Książki C++ „pod maską” dla zaawansowanych czytelników?

text: Czy są jakieś szczególnie dobre książki do zrozumienia, jak C++ działa „pod maską”? Moje powody, dla których o to pytam, są takie, że jestem bardzo zainteresowany programowaniem systemów wydajnościowych w C++ (niskie opóźnienia itp.). Zasugerowano mi, co następuje, ale nie jestem pewien, czy są jakieś inne: Często zadawane pytania na temat C++ Nowoczesne projektowanie w C++ Efektywne C++ Zasadniczo nie chcę książek, które nauczą mnie składni C++, ale raczej jeśli stworzę ten obiekt, tak się naprawdę dzieje i jest to osiągane za pośrednictwem tej części systemu operacyjnego bla bla itp. Przykład czegoś, czego się niedawno nauczyłem i chciałbym poznać więcej podobnych ciekawych faktów: jeśli za dużo wstawisz kod C++, zwiększysz program rozmiar instrukcji, liczbę stron systemu operacyjnego, które zajmuje, a to zwiększy prawdopodobieństwo chybień TLB dla procesora.


title: Miałem złą rozmowę o pracę, ale nadal dostałem pracę. Jak radzę sobie z relacjami z moim nowym menedżerem?

text: Uczestniczyłam w serii wywiadów na stanowisko, na którym niedawno zostałam zatrudniona. Podczas rozmowy kwalifikacyjnej byłem przesłuchiwany 6 razy. 3 wywiady techniczne i 3 wywiady sytuacyjne/biznesowe. Podczas mojej drugiej (i najtrudniejszej) rozmowy kwalifikacyjnej, która jest teraz moim menedżerem, poprosiła mnie o dostarczenie rozwiązania problemu programistycznego z dnia na dzień. Złożyłem rozwiązanie następnego dnia, ale wkrótce dowiedziałem się, że nie tego oczekiwał ankieter. Szybko zastosowałem inne rozwiązanie, które zawierało poprawną odpowiedź i zostało uznane za takie przez firmę przeprowadzającą wywiady. Teraz wiem, że za kulisami, w tym okresie, proces rozmowy kwalifikacyjnej został zmieniony, ponieważ kierownik nie zatrudnił żadnych pracowników na to stanowisko w okresie 6 miesięcy. Teraz, gdy mam już to stanowisko, obawiam się, że ta konkretna sytuacja wywołała w ustach tego menedżera zły smak, jeśli chodzi o moje stanowisko (co, jak sądzę, zostało zrobione ponad jego głową, ponieważ proces nowego zatrudnienia trwa zbyt długo). Jestem w pracy od ponad 2 miesięcy i NIE miałem ŻADNEJ bezpośredniej interakcji z tym menedżerem, po prostu kierownikiem zespołu. Uważam, że spisałem się dobrze i otrzymałem pochwały i potwierdzenie moich spostrzeżeń od lidera zespołu. Z profesjonalnego punktu widzenia, jak mogę się upewnić, że mój przełożony to widzi, zwracając uwagę na historię moich rozmów kwalifikacyjnych? Z góry dziękuję za wszelkie odpowiedzi.


title: Przetwarzać dowolnie duże listy bez jawnej rekurencji lub funkcji list abstrakcyjnych?

text: To jedno z dodatkowych pytań w moim zadaniu. Konkretne pytania polegają na zobaczeniu listy wejściowej jako zbioru i wypisaniu wszystkich jej podzbiorów na liście. Możemy **używać tylko cons, first, rest, empty?, empty, lambda i cond**. A możemy zdefiniować tylko **dokładnie raz**. Ale po całonocnym namyśle nie widzę możliwości przejrzenia arbitralnie długiej listy bez mapy czy folderu. Czy istnieje sposób na wykonanie rekurencji lub alternatywy dla rekurencji tylko z tymi funkcjami?


title: Szukasz bezpłatnych stażystów (2) - czy jestem szalony?

text: **Edytuj – 6.10.11 w odpowiedzi na pierwszą partię odpowiedzi** : Wow, co za odpowiedź. Pozwolę sobie omówić kilka punktów. 1. Już powiedziałem, że będę miał program nauczania, a moim zamiarem jest nauczenie ludzi tego, do czego nie przygotowują Cię kursy na uczelni (cały proces CI i wszystkie związane z nim technologie) 2. Wszystkich ludzi, którzy narzekać na **programy CS, które nie przygotowują studentów do wejścia na rynek pracy**... gdzie jesteś? Wygląda na to, że odszedłeś i zaprosiłeś na swoje miejsce brygadę przeciw wykorzystywaniu studentów, a na swoje miejsce komitet ty-tani-skurwielu. 3. Tak naprawdę nie chciałem reklamować faktu, że jestem **nie dla zysku**, ponieważ właśnie zniszczyłem swój dział IT (i zasłużenie). ale wolałem nie ułatwiać identyfikowania się z ludźmi w mojej organizacji 4. Nie jestem tak przekonany, jak wielu tutaj wydaje się, że jest wiele lokalnych firm, które chcą stażystów (płatnych lub nie), ale na pewno będę przekonaj się o tym z lokalnymi szkołami, jeśli zdecyduję się pójść do przodu 5. Jeśli chodzi o bycie tanim... poważnie? Jestem programistą. Nie menedżer, nie ktokolwiek, kto może wydać budżet. Staram się doskonalić siebie (poprzez mentoring), innych (stażystów, a co za tym idzie społeczność), mój zespół i pracodawcę. 6. **Nie** odniosłem się do **bezużytecznych** dyplomów CS. Odniosłem się do **bezradnych** absolwentów CS. Podobnie jak w przypadku wielu pytań na tym forum, które dotyczą przekonania, że absolwenci CS nie wiedzą nic o faktycznym stosowaniu nabytych umiejętności technicznych. **End Edit/Rant** Tylko po to, by dać ci wyobrażenie o tym, skąd pochodzę... Jestem programistą w małym zespole odpowiedzialnym za biznes (tak, biznes... mamy okropne, dyktatorskie IT oddział, który odmawia zaspokojenia potrzeb biznesowych, stąd kilka zespołów rozwoju biznesu) w dość dużej firmie. Moje motywacje do poszukiwania stażystów obejmują: * Podnoszenie własnych umiejętności (technicznych i innych) poprzez mentoring innych * Nauczanie stażystów (a nawet współpracowników) pomysłów i metod tworzenia oprogramowania, które wykraczają poza rozwiązywanie problemów biznesowych (czytelny/możliwy do utrzymania kod, korzyści projektowania i testowania itp. * Przyspiesz adopcję .Net w zespole * Pomóż rozwiązać problem, na który wszyscy narzekamy - że będąc bezradnymi absolwentami CS, ani przez sekundę nie wierzę, że otrzymanie bezpłatnych stażystów będzie darmową siłą roboczą. Zanim jeszcze zejdę tą ścieżką, przygotuję całą konfigurację CI, co oczywiście będzie jedną z korzyści dla stażystów.Będę też musiał znaleźć mały projekt lub kawałek projektu, który można oderwać i podarowane stażystom do przeżucia. Będę miał trochę programu nauczania, który będzie zawierał wprowadzenie do wszystkich technologii związanych z CI i innymi koncepcjami tworzenia oprogramowania. Będę również przygotowany do spędzania z nimi czasu każdego dnia, aby pomóc ustaw kierunek i pomóc, gdy uderzą w ścianę. Już od jakiegoś czasu kopałem ten pomysł w głowie, a ostatnie pytania skłoniły mnie do opublikowania. Właściwie byłam zaskoczona tak negatywną reakcją na bezpłatne staże, ale z drugiej strony może to norma, że bezpłatne staże nie są tak pomocne dla stażysty? Czy ktoś, kto ma doświadczenie w pracy ze stażystami (albo jest jednym z nich, albo uczy) ma jakieś myśli?


title: Przy projektowaniu kolejki zadań, co powinno determinować zakres zadania?

text: Mamy system kolejki zadań, który z radością przetworzy każdą powierzoną mu pracę. Zamierzamy go używać do przetwarzania zadań, z których każde zawiera 2 zadania: * Zadanie (przekazywanie informacji z jednego serwera na drugi) * Pobieranie zadania (pobieranie danych, powoli) * Wysyłanie zadania (wysyłanie danych, stosunkowo szybko) Ponownie mamy do czynienia z tym, że nie wiemy, czy podzielić zadania na osobne zadania, czy przetworzyć zadanie za jednym razem. Czy istnieją jakieś najlepsze praktyki lub przydatne odniesienia na ten temat? Czy jest jakaś oczywista korzyść z metody, której nam brakuje? Jak dotąd widzimy te korzyści dla każdej metody: **Podział** * Długość dzierżawy zadań odzwierciedla długość zadania: zamiast łącznie dwóch * Większa szczegółowość odzyskiwania: jeśli utracimy łączność wychodzącą, możemy powiedzieć wszystkim, aby spróbowali ponownie * Początkowa stan drugiego zadania jest zapisywany w historii zadań: pomaga w debugowaniu (chociaż podobne rejestrowanie można dodać w metodzie pojedynczego zadania) **Pojedyncze** * Pojedyncze zadanie do zaplanowania: Mniejsze obciążenie przetwarzania * Dane nie są przestarzałe podczas odzyskiwania: Jeśli przestój wychodzący jest dość długi, oczekujące zadania wysyłania mogą być nieaktualne


title: Jakie jest kanoniczne podejście do korzystania z VCS od samego początku projektu?

text: ## Tło W przeszłości używałem VCS (głównie `git`) do zarządzania wieloma istniejącymi projektami i działa to świetnie. Zazwyczaj przy istniejącym projekcie sprawdzałbym każdą zmianę, którą wprowadzam w kodzie, która albo optymalizuje, albo zmienia ogólną funkcjonalność (wiesz o co mi chodzi, w odpowiednich krokach, a nie w każdej linijce, którą zmieniam). ## Problem Jedną z rzeczy, w których nie mam tyle praktyki, jest tworzenie nowych projektów. Jestem w trakcie rozpoczynania nowego projektu, który prawdopodobnie będzie dość duży, ale stwierdzam, że jest _dużo_ do zrobienia i wiele się zmienia w ciągu pierwszych kilku dni/godzin/tygodni/okresu w górę dopóki produkt nie zacznie faktycznie funkcjonować w swojej najbardziej podstawowej formie. Czy jest jakiś sens, abym sprawdzał na każdym etapie procesu, tak jak w przypadku istniejącego projektu? Nie przerywam projektu zmianami, które wprowadzam, ponieważ jeszcze nie działa. W tej chwili po prostu używam VCS jako kopii zapasowej na koniec każdego dnia, kiedy odchodzę od komputera. Moimi pierwszymi kilkoma zatwierdzeniami były takie rzeczy, jak "Podstawowa struktura katalogów na miejscu" i "Utworzone tabele DB". Jak korzystać z VCS podczas rozpoczynania nowego projektu?


title: Dlaczego miałbym chcieć używać CRaSH?

text: Justed natknął się na CRaSH i chociaż wygląda to bardzo interesująco, zastanawiam się, dlaczego programista Java powinien inwestować czas i energię w naukę (jeszcze innego) języka powłoki. Do jakich standardowych i chłodnych aplikacji można używać CRaSH? Czy to jest jak wersja Groovy Jythona? Myślę, że kiedy opadnie kurz, szukam czynników „wow” CRaSH. Jestem pewien, że tam są, ale po spędzeniu około 20 minut na przeglądaniu dokumentacji po prostu ich nie widzę. Z góry dziękuję!


title: Zaczynam swój pierwszy projekt i nie mam o nim pojęcia. Przewodnik proszę

text: Jestem studentem informatyki (6 semestr). Chcę wykonać projekt i mam 4-osobowy zespół (Moi znajomi). Jesteśmy więc 5 osobami i zdecydowaliśmy się stworzyć " **przeglądarkę plików w przeglądarce**". Projekt będzie podobny do TEGO. Jak zacząć z tym projektem? Nie wiemy zbyt wiele o programowaniu. Znam trochę Javę i jestem RHCE, więc mogę obsłużyć serwer i wszystkie takie sprawy administracyjne. Skoro to nasz pierwszy projekt, więc nie mamy pojęcia, jak to zrobimy? Znam Javę, a inni ludzie w grupie znają C#, ASP.NET, PHP, SQL i Joomla. Proszę kierować i przedstawiać swoje sugestie. Dziękuję Ci. PS: Być może moje pytanie nie jest kompletne, jeśli chcesz więcej informacji, zostaw komentarz, edytuję pytanie.


title: Jaka jest wada używania klasy abstrakcyjnej jako połączenia z bazą danych w zend framework 2 zamiast lokalizatora usług?

text: Jeśli używam bazy danych, tworząc adapter ze sterownikami, zainicjuj go w jakiejś klasie abstrakcyjnej i rozszerz tę klasę abstrakcyjną na wymagany model. Następnie użyj prostej instrukcji zapytania. W ten sposób: przestrzeń nazw My-Model\Model\DB; klasa abstrakcyjna MysqliDB { protected $adapter; public function __construct(){ $this->adapter = new \Zend\Db\Adapter\Adapter(array( 'driver' => 'Mysqli', 'database' => 'my-database', 'username' => ' root', 'hasło' => '' )); } } I używaj abstrakcyjnej klasy bazy danych w moich modelach: class States extends DB\MysqliDB{ public function __construct(){ parent::__construct(); } chronione $stany = tablica(); funkcja public select_all_states(){ $data = $this->adapter->query('wybierz * ze stanów'); foreach ($data->execute() as $row){ $this->states[] = $row; } return $this->stany; } } Jestem nowy w zend framework, zanim zdobyłem doświadczenie w pracy w YII i Codeigniter. Podoba mi się obiekt zorientowany w zend, więc chcę go używać w ten sposób. I nie chcę go używać przez lokalizator usług coś takiego: funkcja public getServiceConfig(){ return array( 'factories' => array( 'addserver-mysqli' => new Model\MyAdapterFactory('addserver-mysqli'), 'loginDB' => function ($sm){ $adapter = $sm->get('addserver-mysqli'); zwróć nowe LoginDB($adapter); } ) ); } W module. Czy zgadzam się z tym podejściem?


title: Czy ktoś może wyjaśnić reprezentację float w pamięci?

text: To nie jest duplikat pytania, tak jak czytałem poprzednie pytanie. Czy ktoś może mi pomóc w zrozumieniu `w jaki sposób wartości zmiennoprzecinkowe są przechowywane w pamięci`. Wątpię, czy w tym przypadku wartości zmiennoprzecinkowe zawierają '`.'` ('na przykład 3.45') jak ''.'` będzie reprezentowane w pamięci? Czy ktoś może mi wyjaśnić schemat?


title: O czym należy pamiętać, podpisując umowę NDA z klientem?

text: Jestem bardzo nowy w branży IT i nie mam wcześniejszego doświadczenia. Jednak zetknąłem się z imprezą, która jest przygotowana do zbudowania aplikacji mobilnej. Ale chcą, żebym podpisał NDA (No Disclosure Agreement). Definicja wydaje się niejasna, > W niniejszej Umowie mają zastosowanie następujące definicje: Informacje poufne > oznaczają informacje dotyczące koncepcji aplikacji internetowych i mobilnych > omawianych i które: > > * (a) zostały ujawnione Odbiorcy przez lub w imieniu XYZ; > * (b) nabyte przez Odbiorcę bezpośrednio lub pośrednio od XYZ; > * (c) jest generowany przez Odbiorcę (sam lub z innymi); lub > * (d) w inny sposób dochodzi do wiedzy Odbiorcy, > Gdy mówią inaczej dochodzi do wiedzy Odbiorcy. Czy to oznacza, że gdybym przyszło mi do głowy jakiś pomysł z własnego twórczego umysłu, który jest podobny do ich pomysłu, to byłoby to złamaniem tej umowy? a także czy można powiedzieć, aby uwzględnić nazwę aplikacji w definicji, ponieważ obecnie brzmi to dla mnie jak każda internetowa koncepcja aplikacji mobilnej, którą uważają, że nie powinienem jej nikomu ujawniać. `„Informacje poufne oznaczają informacje dotyczące omawianych koncepcji aplikacji internetowych i mobilnych oraz że:”` Bardziej interesuje mnie ta część, > Bez ograniczania praw XYZ, Odbiorca zgadza się wypłacić XYZ > wszelkie roszczenia, straty , zobowiązania, koszty lub wydatki jakiegokolwiek rodzaju > poniesione bezpośrednio lub pośrednio w wyniku lub w związku z naruszeniem > przez nią lub przez któregokolwiek z jej członków kierownictwa, pracowników lub konsultantów niniejszej > Umowy. Czy to naprawdę powszechne w branży IT podpisywanie takiej umowy między klientem a deweloperem? Jakaś konkretna rzecz, o którą powinienem się martwić?


title: Standardy i zgodność dla bezpiecznego tworzenia aplikacji internetowych?

text: Obecnie pracuję z programistami, którzy piszą kod tak, jak chcą, a kiedy mówię im, aby zrobili to w inny sposób, odpowiadają, że to tylko kwestia preferencji, jak to zrobić i mają swój sposób, a ja mam swój. Nie mówię o formatowaniu kodu, ale o sposobie organizacji strony w klasy i sposobie ich wykorzystania. i sposób, w jaki tworzą funkcje i formy procesów itp. Ich kodowanie nie odpowiada moim standardom, ale znowu przekonują, że jest to kwestia preferencji i tak długo, jak cel został osiągnięty, można to zrobić inaczej. Zgadzam się, ale okazało się, że ich sposób zawiera błędy i spędzamy z nimi dużo czasu, jeżdżąc tam iz powrotem, aby naprawić wszystkie problemy związane z bezpieczeństwem lub funkcjonalnością, ale nadal piszą ten sam kod, bez względu na to, ile razy prosiłem ich, aby przestali robić pewne rzeczy . Teraz jestem gotów je odrzucić, ale mój przyjaciel powiedział mi, że ma dokładnie taki sam problem z niezależnymi programistami, z którymi pracuje. Więc nie chcę wymieniać jednego złego jabłka na drugie. **Pytanie, czy istnieje jakiś światowy (lub przynajmniej europejski i amerykański) standard lub zgodność pisania bezpiecznych aplikacji internetowych. Jaka architektura aplikacji powinna być dla aplikacji konserwowalnych.** Czy istnieje jakiś ogólny standard, który może być użyty dla dowolnego języka ruby php lub java, który zarządza bezpieczeństwem, funkcjonalnością i jakością kodu? A przynajmniej dla PHP i MySQL używam na mojej stronie. Mogę więc zmusić ich do przestrzegania tego surowego standardu i przestać szukać wymówek.


title: Jak wybrać najbardziej prawdopodobną opcję z listy na podstawie tekstu użytkownika Input

text: Pracuję nad aplikacją OCR, w której muszę wybrać opcję na podstawie tekstu wprowadzanego przez użytkownika. Np: Dostępne opcje: ["python", "ruby", "java", "clojure", "haskell"] Wejście: kava Wyjście: java Wejście: ruby Wyjście: ruby Wejście: clujuro Wyjście: clojure itp. moja aplikacja jest oparty na Pythonie, czy istnieje już algorytm, który rozwiąże ten problem.


title: Dlaczego dobrze jest dzielić program na wiele klas?

text: Nadal jestem uczniem liceum (wchodzę do 10 klasy) i jeszcze nie ukończyłem kursu komputerowego w szkole. Wszystko, co do tej pory zrobiłem, to książki. Te książki nauczyły mnie takich pojęć, jak dziedziczenie, ale jak pomaga podział programu na wiele klas? Książki nigdy mi nie powiedziały. Pytam o to głównie z powodu niedawnego projektu. To zręcznościowa gra wideo, coś w rodzaju gry Flash, jak powiedzieli niektórzy ludzie (chociaż nie mam pojęcia, co to jest gra Flash). Chodzi o to, że to tylko jedna klasa. Działa doskonale (chociaż z niewielkim opóźnieniem) tylko z jedną klasą. Więc pytam tylko, jak pomogłoby rozbicie tego na wiele klas. Ten projekt był w Javie i dla przypomnienia tylko ja pracuję nad nim.


title: Czy kiedykolwiek martwisz się, że bardziej interesuje Cię to, jak coś jest budowane, niż to, co faktycznie budujesz?

text: Jako programista mam wrodzoną irytację moich narzędzi, kodu innych ludzi, mojego kodu, świata w ogóle. Zawsze chcę to poprawić. Więc refaktoryzuj, pozostaję na bieżąco z najnowszymi technikami. Próbuję uczyć się wzorców, staram się wykorzystywać frameworki, aby nie wymyślać koła na nowo. Mogę napisać specyfikację techniczną, która zdmuchnie twoje skarpetki ilością wzorów, które mogę wcisnąć. Jednak ostatnio wydaje mi się, że faktycznie wiem więcej o narzędziach, których używam, niż o tym, jak faktycznie wdrożyć udane oprogramowanie. Czuję, że brakuje mi umiejętności związanych z czynnikami ludzkimi i wierzę, że aby być odnoszącym sukcesy inżynierem oprogramowania, potrzeba czegoś więcej niż znajomość najfajniejszego frameworka. Myślę, że potrzebuje też niektórych z poniższych umiejętności. * Projektowanie interakcji * Doświadczenie użytkownika * Marketing Mam trochę tego, czego nauczyłem się od ludzi, z którymi pracowałem i wspaniałe projekty, nad którymi pracowałem, ale nie czuję, że "posiadam" te umiejętności. Czy mam rację? Czy powinienem starać się dalej rozwijać te umiejętności, czy też pozostawić je osobom, które robią to dla kariery? Jak możesz upewnić się, że nie jesteś zbyt przywiązany do tego, jak coś robisz, i upewnij się, że „sprawiasz, że Twoi użytkownicy są niesamowici”? Czy ktoś zna dobre zasoby do nauki tych umiejętności z punktu widzenia programowania?


title: Najlepsze praktyki OO dla programów C

text: _"Jeśli naprawdę chcesz cukierka OO - użyj C++"_ - to natychmiastowa odpowiedź, którą otrzymałem od jednego z moich przyjaciół, kiedy o to zapytałem. Wiem, że dwie rzeczy są tutaj całkowicie błędne. Po pierwsze OO NIE jest "cukrem", a po drugie C++ NIE wchłonął C. Musimy napisać serwer w C (front-end, który będzie w Pythonie), więc badam lepsze sposoby zarządzania dużymi programami C . Modelowanie dużego systemu pod kątem obiektów i interakcji obiektów sprawia, że jest on łatwiejszy w zarządzaniu, łatwiejszy w utrzymaniu i rozszerzalny. Ale kiedy próbujesz przetłumaczyć ten model na C, który nie zawiera obiektów (i wszystkiego innego), stajesz przed kilkoma ważnymi decyzjami. Czy tworzysz niestandardową bibliotekę, aby zapewnić abstrakcje obiektowe, których potrzebuje Twój system? Rzeczy takie jak obiekty, enkapsulacja, dziedziczenie, polimorfizm, wyjątki, pub/sub (zdarzenia/sygnały), przestrzenie nazw, introspekcja itp. (na przykład GObject lub COS). Lub po prostu używasz podstawowych konstrukcji C (`struktur` i funkcji) do aproksymacji wszystkich klas obiektów (i innych abstrakcji) w sposób ad hoc. (na przykład niektóre odpowiedzi na to pytanie w SO) Pierwsze podejście daje uporządkowany sposób na zaimplementowanie całego modelu w C. Ale dodaje również warstwę złożoności, którą musisz utrzymać. (Pamiętaj, że złożoność była tym, co chcieliśmy zmniejszyć, używając przede wszystkim obiektów). Nie wiem o drugim podejściu ani o tym, jak skutecznie przybliża wszystkie abstrakcje, których możesz potrzebować. Tak więc moje proste pytania brzmią: Jakie są najlepsze praktyki w realizacji projektu obiektowego w C. Pamiętaj, że nie pytam JAK to zrobić. To i te pytania o tym mówią, jest nawet książka na ten temat. Bardziej interesują mnie realistyczne porady / przykłady, które odnoszą się do rzeczywistych problemów, które pojawiają się podczas robienia tego. _**Uwaga: proszę nie doradzać, dlaczego C nie powinno być używane na korzyść C++. Przeszliśmy już dobrze ten etap._**


title: Za dużo kontroli wersji i narzutu na śledzenie błędów na zmianę?

text: Pracuję w miejscu, które jest zwariowane na punkcie CVS i obłędu w Bugzilli. 1. W każdym wydaniu jest tak wiele gałęzi, że nie sposób ich policzyć. Wszyscy nieustannie się łączą. 2. W tej pracy nie ma _płynności_. Wszystko wydaje się _lock-step_. Nawet prosta rzecz zajmuje 25 kroków. To nie jest jak bycie na fabrycznej linii produkcyjnej: to tak, jakbym codziennie sam zakładał fabrykę. Przykładowa sytuacja: Aby naprawić pojedynczy błąd, najpierw otrzymuję czystą, nową maszynę wirtualną. Następnie tworzę gałąź dla tej pojedynczej poprawki błędu, opartą na innej gałęzi opisanej w raporcie Bugzilli. Instaluję gałąź na maszynie, skonfiguruję to. Naprawię błąd. Sprawdzam go, pozostawiając go i maszynę innym do przetestowania. Następnie muszę przejść do oprogramowania do kontroli błędów i wyjaśnić, co zrobiłem, i napisać przypadek testowy ze wszystkimi krokami. W końcu ktoś inny łączy to z wydaniem. Bez względu na to, jak mały jest błąd, muszę zrobić wszystkie te rzeczy. Czasami ludzie łączą pracę nad wieloma błędami, ale jak powiedziałem, jest tak wiele gałęzi, że jest to prawie niemożliwe. W każdej innej pracy po prostu wchodzę i naprawiam błąd. Ledwo pamiętam, jak używałem SCM, chociaż w każdej pracy, w jakim pracowałem, używali go: to dlatego, że w każdej innej jakoś go trzymali _na uboczu_. _Czy jest moment, w którym proces staje na przeszkodzie i staje się celem samym w sobie? Czy to nawet inżynieria?_


title: Gdzie idzie Web Reference w aplikacji 3-warstwowej?

text: Mam aplikację 3 warstwową. * Warstwa prezentacji (PL): aplikacja ASP.NET MVC * Projekt warstwy logiki biznesowej (BLL) * Projekt warstwy dostępu do danych (DAL) Muszę dodać odwołanie do sieci Web do usługi dla bramy płatności. Dokąd to zmierza? „PL” czy „BLL”? PS Przed skorzystaniem z usługi sieciowej muszę pobrać pewne dane z bazy danych i wysłać je do usługi sieciowej.


title: Czy wszystko w informatyce można sklasyfikować jako dane lub proces?

text: Pracując w dziedzinie zwanej „zapewnianiem przychodów” zasadniczo buduję systemy do walidacji innych systemów. Po pewnym czasie na tym rynku wydaje mi się, że wszystkie te „walidacje” weryfikują albo proces ze środowiska mojego klienta, albo dane wykorzystywane przez te procesy. Mając to na uwadze rozważam użycie takiej definicji do zorientowania sprzedawców, a nawet architektów pracujących nad produktami. Jednak badając ten temat, nie mogłem znaleźć ostatecznej odpowiedzi, chociaż nie odrzuciłem też możliwości. Czy zatem wszystko jest jednym z dwóch?


title: Jakie umiejętności są niezbędne do profesjonalnego programowania, których nie uczy się powszechnie w szkołach?

text: Jestem studentem pierwszego roku informatyki. Poszedłem na targi pracy, rozdałem CV, ku mojemu zdziwieniu dostałem rozmowę kwalifikacyjną i ostatecznie staż jako programista. Wyjaśniłem ankieterowi (który będzie moim szefem), że jestem dopiero na pierwszym roku i nie mam dużego doświadczenia w programowaniu. Powiedział mi po prostu, że ponieważ mam mocne podstawy matematyczne (prawie skończyłem licencjat z matematyki, plus mam za sobą kilka kursów podyplomowych), jest przekonany, że poradzę sobie dobrze. Dobrze radzę sobie na wszystkich kursach programowania, ale nadal czuję, że jestem w gorszej sytuacji. W tej chwili naprawdę chcę po prostu dobrze wykonywać tę pracę, kiedy się zacznie. Praca będzie polegała głównie na użyciu C#, ale poza oczywiście nauką trochę C#, jakiej umiejętności chciałbyś się nauczyć, zanim zostałeś prawdziwym programistą? Wszelkie rady są bardzo mile widziane, ale jeśli masz na myśli jakieś książki, poinformuj o tym. Dziękuję!


title: Rozwój eksploracyjny a rozwój przyrostowy

text: W metodologiach inżynierii oprogramowania... Rozwój ewolucyjny zawiera eksplorację i prototypowanie... Czy rozwój eksploracyjny jest taki sam jak rozwój przyrostowy... Co rozumiesz przez rozwój eksploracyjny?


title: Dodatkowe klasy Java MVC

text: Mam prosty projekt MVC. Moje aktualne pakiety: * gui * kontroler * db * domena Chcę umieścić dodatkowe klasy z których będę korzystał np. hashowanie md5, walidator e-maili (metody, których będę używał w więcej niż jednej klasie). Gdzie je umieścić? Prawdopodobnie nie użyję ich tylko w jednym pakiecie, ale w dwóch lub trzech (nie w modelu na pewno). Czy tworzę dodatkowe pakiety, czy umieszczam je w domenie, ponieważ są „statyczne” (nie można ich zmienić)?


title: Kafka, czy po wyprodukowaniu można uzyskać przesunięcie wiadomości?

text: Czy podczas korzystania z Apache Kafka można uzyskać offset powstałego komunikatu? Na stronie dokumentacji Kafki jest napisane: > każda wiadomość w partycji ma przypisany unikalny sekwencyjny identyfikator/numer > o nazwie Offset Teraz załóżmy, że kiedy tworzę wiadomość, chcę pobrać przesunięcie, które zostało do niej przypisane.


title: Jak często zespół pisze wszystko we własnym zakresie?

text: W niedawnym wywiadzie zapytałem ankieterów „jak oceniasz nowe technologie i biblioteki (takie jak SignalR) i wprowadzasz je do użytku?”. Powiedzieli, że nie, że zamiast tego piszą wszystko sami, więc nie muszą polegać na nikim innym. Firma nie pracuje dla rządu, wykonawców obronnych, żadnych projektów krytycznych dla bezpieczeństwa ani niczego w tym rodzaju. Byli tylko twoją przeciętną, średniej wielkości firmą programistyczną. Moje pytanie brzmi: **jak często zespoły piszą wszystko same? Czy powinienem być zaniepokojony zespołami, które to robią?** Edytuj -- Większość odpowiedzi mówi, że jest to coś, czym należy się niepokoić. **Czy druga rozmowa kwalifikacyjna byłaby odpowiednim momentem na poproszenie ich o wyjaśnienie/powtórzenie swojego stanowiska w kwestii pisania wszystkiego we własnym zakresie?**


title: Najlepsze praktyki dotyczące umieszczania danych tabelarycznych w sieci, aby użytkownicy mogli je edytować?

text: W ASP.net pracuję od ponad trzech lat. Projekt, nad którym pracuję, jest zaprojektowany z 3-warstwową prezentacją/biznesem/projektem danych. Warstwa prezentacji to strona internetowa ASP.net. Warstwa biznesowa i danych również znajdują się w .net, a warstwa danych współpracuje z serwerem SQL. Ostatnio musiałem dodać kilka nowych ekranów do mojej aplikacji webowej ASP.net. Zamówienie od mojego klienta brzmiało zasadniczo: „Weź te arkusze kalkulacyjne Excel i umieść je w Internecie, abym nie musiał przekazywać ich różnym osobom, które wprowadzają zmiany, i nie muszę się martwić o śledzenie zmiany." Brzmi prosto, prawda? Cóż, robię to, ale czuję, że utrudniam ten projekt, niż powinien. Chciałbym opowiedzieć, jak to zrobiłem i chciałbym wiedzieć, jak mogę ulepszyć mój proces. (1) Pokazałem arkusze kalkulacyjne mojemu administratorowi, który utworzył tabelę dla każdego arkusza kalkulacyjnego z kolumną dla każdej kolumny w arkuszu kalkulacyjnym. Chciałbym podkreślić, że w moim biurze tylko DBA może zmieniać cokolwiek w strukturze danych w SQL. (2) Utworzyłem funkcje w warstwie biznesowej i danych, które (a) Pobierają wiersze z tabel. (b) Wstaw wiersze. (c) Zaktualizuj wiersze. (3) Zakodowałem stronę internetową ASP.net, aby użyć ASP.net GridView w celu wyświetlenia użytkownikowi danych tabelarycznych. Jest jeden przycisk, który użytkownik może kliknąć, aby dodać nowy wiersz, a drugi przycisk, który użytkownik może kliknąć, aby edytować istniejący wiersz. (4) Napisałem JavaScript, aby po kliknięciu przycisku użytkownik zobaczył formularz, za pomocą którego może dodać nowy wiersz lub edytować istniejący. (5) Napisałem kilka metod strony ASP.net, które pozwalają użytkownikowi wysyłać zmiany z powrotem do serwera ASP.net przy użyciu AJAX po wypełnieniu formularza. (6) Umieściłem ASP.net GridView w ASP.net UpdatePanel, aby można było odświeżyć tabelę bez ponownego ładowania całej strony. To jest mój proces. Robię to dla każdego arkusza kalkulacyjnego otrzymanego od klienta. Czuję, że powinien być lepszy sposób na zrobienie tego. Mam współpracownika, który naprawdę lubi rzeczy związane z DHTMLX, ale może to tylko zastąpić lub uprościć kroki 4 i 6. Jaki jest lepszy sposób na osiągnięcie tego, czego chce mój klient?


title: uruchom lokalną aplikację php/bazy danych na komputerze z systemem Windows bez wamp

text: Mam aplikację php/mysql, którą zaprojektowałem, a klient nie chce, aby była ona online (zainstalowana na serwerze www) lub dostępna w internecie, chce, aby jego pracownicy korzystali z niej w lokalnym systemie. Nie chcę, aby przechodzili przez proces uruchamiania wampa, aby uzyskać dostęp do programu, czy istnieje prosty sposób na uruchamianie programów internetowych php na lokalnym komputerze z systemem Windows? korzystasz z bazy mysql?


title: Co może zrobić wiele wątków, czego nie może zrobić jeden wątek?

text: Chociaż wątki mogą przyspieszyć wykonywanie kodu, czy są rzeczywiście potrzebne? Czy każdy fragment kodu można wykonać przy użyciu jednego wątku, czy istnieje coś, co można osiągnąć tylko przy użyciu wielu wątków?


title: Jaką część twojej pracy należy do firmy, gdy programujesz dla niej?

text: Załóżmy, że jesteś inżynierem oprogramowania, co tak naprawdę posiada firma z Twojej pracy? Czy są właścicielami kodu źródłowego, pliku binarnego, obu? A co z kodem, który wykonujesz poza miejscem pracy? Czy mają do tego jakieś roszczenia? Po prostu zastanawiałem się z prawnego punktu widzenia, jak to wszystko działa.


title: Jaka jest przewaga edytora wizualnego nad prostym programowaniem?

text: Próbuję dowiedzieć się, jakie korzyści płyną z posiadania edytora HTML WYSIWYG nad twardym kodowaniem, poza, powiedzmy, dostępnością. Wydaje się, że to strata czasu, aby nauczyć się korzystać z czegoś takiego jak Dreamweaver w Notepad ++. Czy coś mi umyka? Za każdym razem, gdy używam jednego, wracam do kodu, aby naprawić problemy, które spowodował edytor wizualny.


title: Scrum – przykład z życia?

text: Zaczynam od scrum i widziałem wiele częściowych przykładów w książkach i samouczkach, ale kiedy próbuję użyć scrum w prawdziwym życiu, nie jest łatwo napisać historie użytkowników i stworzyć backlog produktu. Chcę zobaczyć prawdziwy projekt z historyjkami użytkowników, rejestrami produktów i rejestrami sprintów, aby sprawdzić, czy robię to we właściwy sposób. Czy istnieje jakiś projekt open source z publicznym zaległością produktu? Czy istnieją udostępniane kompletne historie użytkowników i zaległości dotyczące produktów z prawdziwego projektu?


title: Odczytywanie danych z pliku i const

text: Czy to rozsądne, aby metoda odczytu obiektu pliku była stała? Na przykład size_t read(void* buffer,size_t length) const; Metoda read nie zmienia zawartości pliku, ale aktualizuje wskaźnik pliku, który jest niewidoczny za uchwytem.


title: aplikacja admin-over-clients

text: Mam tę samą aplikację internetową działającą na kilku różnych serwerach. Teraz chcę mieć centralne miejsce do administrowania wszystkim w jednym interfejsie internetowym. Jaki jest najlepszy sposób, aby to zrobić? Czy powinienem zapewnić interfejs REST w każdej aplikacji internetowej i pozwolić aplikacji administratora na wykonywanie wszystkich połączeń? Wydaje się, że to powszechny problem, który został już rozwiązany przez mądrzejszych ode mnie ludzi. AKTUALIZACJA: Chcę zmienić dane aplikacji dla aplikacji internetowej + zobaczyć wyniki dla aplikacji internetowej


title: Jak bardzo muszę się martwić o równoważenie obciążenia?

text: Obecnie pracuję nad projektem, w którym aplikacje klienckie (desktop & android & web) będą komunikować się z różnymi procesami działającymi na serwerze (serwerach). Moje pytanie brzmi: ile powinienem myśleć o równoważeniu obciążenia i tym podobnych? Wszystkie projekty, nad którymi pracowałem, polegały na tworzeniu aplikacji do użytku wewnętrznego w firmach, więc liczba połączeń była zawsze bardzo niska (prawdopodobnie nie więcej niż 50 na raz). Jednak w swoim czasie postanowiłem zacząć tworzyć oprogramowanie księgowe, tylko dlatego. Tak więc skończyłem z aplikacją komputerową WPF i witryną internetową ASP.NET MVC i aplikacją na Androida, które łączą się z różnymi procesami/danymi uruchomionymi na moim serwerze. Na serwerze znajduje się baza danych SQL (MS), różne usługi WCF do komunikacji między klientem a serwerem oraz kilka usług obsługujących czynności związane z czyszczeniem. Działa to dobrze, gdy testuję i jest to tylko ja podłączony. Jednak nie mam pojęcia, jak to się skaluje, jeśli kilka osób zacznie się łączyć naraz. Nie jestem nawet pewien, czy wydam oprogramowanie, nie mówiąc już o tym, że ktokolwiek z niego korzysta! Jednak w ramach ćwiczenia szkoleniowego, jak powinienem rozwijać system, aby mógł przejmować duże obciążenie i nie ulegać awarii/opóźnieniom. Zdaję sobie sprawę, że to może być bardzo otwarte pytanie i może być subiektywne w wielu sprawach, ale jak mówię, nie mam doświadczenia w tym dziale i chciałbym się tego nauczyć.


title: Dlaczego String jest niezmienny w Javie?

text: Nie mogłem zrozumieć przyczyny tego. Zawsze używam klasy String jak inni deweloperzy, ale gdy modyfikuję jej wartość, muszę utworzyć nową instancję String. Co może być przyczyną niezmienności klasy String w Javie? Wiem, że istnieje kilka alternatyw, takich jak StringBuffer lub StringBuilder. To tylko ciekawość.


title: Pochodzenie struktur i klas

text: Jakie problemy projektowe i implementacyjne musieli rozwiązać programiści, kiedy po raz pierwszy zdecydowali się na użycie struktur i klas? Kiedy to się stało i kim byli pionierzy tych pomysłów? Uwaga, to jest podwójne pytanie, ponieważ struktury i klasy są ze sobą powiązane. Zdaję sobie sprawę, że struktury są starsze niż klasy. Byłoby wspaniale, gdyby odpowiedź mówiła osobno o obu z nich i przytaczała niektóre źródła.


title: Algorytm znajdowania nakładających się czasów

text: Częścią naszego systemu ERP jest podsystem do wykonywania zadań w tle. Śledzimy różne metadane dotyczące naszych ofert pracy w tabeli, w tym sygnatury czasowe przesłania, rozpoczęcia i zakończenia. Tworzę raport pokazujący wydajność naszego systemu pracy z podziałem na dzień. Jeden kluczowy wskaźnik wydajności to maksymalna liczba zadań uruchomionych jednocześnie. Algorytm, którego obecnie używam, to: dim cnt as integer 'liczba nakładających się zadań dim max as integer 'maksymalna liczba zadań uruchomionych jednocześnie dla każdego zadania, gdzie Job.SubmitTs = dzisiaj 'bJob jest drugim wystąpieniem zadania dla każdego zadania bJob gdzie bJob.SubmitTs = dzisiaj i bJob.StartTs <= Job.EndTs i bJob.EndTs >= Job.EndTs cnt = cCnt + 1 next if cnt > max then max = cnt next Problem z tym algorytmem polega na tym, że jest bardzo powolny z powodu wszystkich pętli. Zastanawiałem się, czy istnieje szybszy sposób na wdrożenie tego? **Edytuj** Nie mogę używać zapytań SQL w celu uzyskania dostępu do danych.


title: Nowicjusz martwił się o narzędzie CASE

text: Szukam wskazówek dotyczących narzędzi CASE i tego, czy moje obawy są zasadne. Ostatnio byłem na spotkaniu mojego pracodawcy z zewnętrzną firmą programistyczną, która posiada obecnie narzędzie CASE w wersji beta. Zademonstrowali nam to narzędzie, pokazując, jak buduje się model UML w Enterprise Architect (lub coś podobnego), a następnie, za pomocą ich narzędzia, ten model UML jest przekształcany w projekt Visual Studio, z plikami C#, procedurami składowanymi dla SQL Server , kod warstwy danych, elementy WCF, kod rejestrowania i wszystkie rodzaje. Teraz muszę przyznać, że nie widzę w tym sensu, ponieważ nie jestem przekonany, że zaoszczędzi to tyle czasu (dodatkowo wydaje mi się, że to przesada). Autorzy narzędzia powiedzieli, że wypróbowanie narzędzia w innej firmie zaoszczędziło tamtejszemu zespołowi 5 tygodni czasu rozwoju (od 6 tygodni do około 1 tygodnia) przy użyciu tego narzędzia. Trudno mi uwierzyć w dokładność tych szacunków. Moim głównym zmartwieniem jest to, czy używanie tego narzędzia spowolni moją produktywność. Na przykład - powiedzmy, że mam model UML, z którego zbudowałem rozwiązanie VS. Teraz chcę zmienić nazwę metody klasy na coś innego; czy będzie to oznaczać konieczność uprzedniego zaktualizowania modelu UML, a następnie przebudowania kodu? Czy tak zwykle działają narzędzia do skrzynek? Coś, co będę musiał sprawdzić u autorów, to struktura wygenerowanego rozwiązania VS. Podoba mi się sposób struktury projektu Domain Driven Design - Infrastruktura, Usługi, Model itp. Bardzo wątpię, aby to narzędzie to zrobiło. Ponadto bawiłem się z Entity Framework Code First i myślę, że jest to świetny sposób na budowanie modelu danych. Mam ładne repozytoria, klasy jednostek pracy i inne wzorce projektowe, które dobrze współpracują z EF. Mam adnotacje danych i tego typu rzeczy, które działają świetnie. Nie mając EF (narzędzie CASE używa własnego kodu warstwy danych) obawiam się, że kod warstwy danych tego narzędzia może nie nadawać się do integracji we wzorcu UoW, repozytoriach itp. Będę musiał to zweryfikować, gdy dostanę bliższe spojrzenie na wygenerowany kod. Jakie są doświadczenia innych osób z narzędziami CASE? Czy nie mam paranoi na nic? Czy jestem niesprawiedliwy – czy moje negatywności są bezpodstawne? EDYCJA: Lubię używać TDD/BDD do budowania kodu, a użycie narzędzia CASE wygląda na to, że to utrudni. Ponownie, wszelkie opinie na ten temat byłyby świetne. Twoje zdrowie. Jas.


title: Projekt architektury aplikacji internetowej, która uruchamia połączenia SSH ze zdalnymi serwerami

text: To jest kontynuacja mojego pytania tutaj. Muszę stworzyć web GUI dla biblioteki, która zarządza zdalnymi klastrami przez SSH. Głównym punktem jest to, że ta biblioteka tworzy wątki i podprocesy (Popen) wewnętrznie (dla połączeń SSH), więc myślę, że jestem związany z tymi połączeniami we/wy. Chcę zapobiec awarii mojego serwera, gdy tylko otrzymam 20-50 jednoczesnych żądań. Nie mam pojęcia, jak postępować z architekturą. Nie wiem, czy mogę rozwiązać ten problem na poziomie serwera za pomocą mocniejszego serwera (gevent??) czy powinienem zrobić coś takiego jak używanie wątków w tle (twisted reaktor??) Kilka uwag: * Pracuję z django, więc serwer (jeśli w końcu mam tylko jeden) musi być WSGI. * Potrzebuję zarówno połączeń blokujących, jak i nieblokujących przez SSH. * Prawdopodobnie będę również potrzebował współdzielonego stanu między kolejnymi żądaniami.


title: Czy nawiasy kwadratowe i nawiasy klamrowe w Clojure nadal są wyrażeniami S?

text: Próbuję nauczyć się Lisp i patrzeć na wszystkie Lispy i ich różnice. Widzę, że w niektórych implementacjach Scheme można używać nawiasów kwadratowych zamiennie z nawiasami okrągłymi dla czytelności, więc ponieważ są one traktowane tak samo, zakładam, że nadal są to tylko wyrażenia S, jak wszystko inne. Jednak w Clojure widzę, że nawiasy kwadratowe i nawiasy klamrowe są używane do reprezentowania różnych typów danych, takich jak wektory i tak dalej. Czy to również nadal ważne wyrażenia S, czy też muszą być uważane za atomy? Czy to nie „łamie” całej koncepcji S-ekspresji, czyniąc Clojure „nieczystym” Lispem?


title: Web Developer czy inżynier oprogramowania?

text: Pytanie, które sobie zadawałem i naprawdę nie wiedziałem, którą ścieżkę wybrać. Więc potrzebuję waszej pomocy, co do zalet i wad tych 2 zawodów w dzisiejszym świecie. Uwielbiam tworzenie aplikacji internetowych, ponieważ Internet jest najlepszą rzeczą, jaka może się wydarzyć w tej epoce i prawie każdy radzi sobie w sieci World Wide Web. A także mają tendencję do ciągłego uczenia się o nowych technologiach i usługach internetowych. Z drugiej strony lubię inżynierię oprogramowania również dla aplikacji desktopowych, ponieważ mam doświadczenie w tworzeniu oprogramowania na małą skalę w VB.Net, Java, C++ itp. Która ścieżka ma większy zakres i lepszą przyszłość? Jaki jest twój pogląd?


title: Dlaczego niektóre projekty open source nie akceptują pull requestów, ale wysyłają tylko pliki z poprawkami?

text: Dlaczego niektóre projekty typu open source nie akceptują żądań ściągnięcia, ale wymagają od współtwórców przesyłania pocztą elektroniczną tylko plików poprawek? np. Git Chociaż publikują kod w github lub innym rozproszonym hostingu scm. Wysyłanie plików poprawek nie jest ani interaktywne, ani wygodne. Plik łatki to staromodny sposób. Żądania ściągnięcia są interaktywne. Inni ludzie również mogą dyskutować.


title: Czy istnieje uzasadniony powód, aby zawijać wbudowany tekst własnym?

text: Edytuję niektóre c++ i wszystkie wbudowane typy zostały opakowane w odpowiednią klasę otoki. Wszystkie operatory zostały przeciążone, aby wykonywać dziwaczne rzeczy, takie jak zakodowany operator[], aby zignorować argument lub dokładnie to, co zrobiłby typ bazowy. Czy to jest wrogie, czy jest jakaś możliwość, że to dobry pomysł w innym wszechświecie.


title: Jaka jest definicja klas użytkowników w odniesieniu do korzystania z oprogramowania?

text: Piszę dokument Specyfikacji wymagań dotyczących oprogramowania dla oprogramowania, które rozwijam. Częścią SRS jest identyfikacja klasy użytkownika. Czy ktoś może podać lub odesłać mnie do definicji klasy użytkownika w odniesieniu do produktu oprogramowania?


title: Algorytm obliczania współrzędnych obrazu

text: Patrzyłem na kod biblioteki _Jcrop_ do obliczania skalowanego rozmiaru obrazu, ale nie mogłem jasno zrozumieć algorytmu używanego w następującej funkcji: https://github.com/tapmodo/Jcrop/blob/master/js/jquery.Jcrop.js# L187 funkcja presize($obj, w, h) { var nw = $obj.width(), nh = $obj.height(); if ((nw > w) && w > 0) { nw = w; nh = (w / $obj.szerokość()) * $obj.wysokość(); } if ((nh > h) && h > 0) { nh = h; nw = (h / $obj.wysokość()) * $obj.szerokość(); } xscale = $obj.width() / nw; yscale = $obj.wysokość() / nh; $obj.szerokość(nw).wysokość(nh); } Wiem, że używa obiektu obrazu jquery oraz boxWidth i boxHeight, jak opisano na poniższym linku: http://deepliquid.com/content/Jcrop_Sizing_Issues.html Ale chcę zrozumieć używany algorytm.


title: Jak podczas rozmów kwalifikacyjnych ocenić szacunek firmy dla mojego stanowiska?

text: Jestem web developerem, który wcześniej dołączył do firmy programistycznej, nie znając jej wartości i szacunku, poszedłem na analizę big data, a nie na ich stronę internetową. Jasne, potrzebowali ogólnodostępnej strony internetowej, ale w końcu odkryłem, że najbardziej ekscytujące i cenione projekty trafiły do zespołów zajmujących się danymi. Zdając sobie z tego sprawę, członkowie zespołu internetowego zostali wybrani i zmienili zespoły, co utrudniało pozostałym pracę i sprawiało, że wyglądaliśmy źle. Czasami wydawało się, że kultura firmy szydzi z nas, zastanawiając się: „Co ten zespół w ogóle robi tutaj?” Mój przyjaciel miał odwrotny problem w innej firmie programistycznej. Jedyne, czego chciał, to zgniatać duże liczby. Narzekał jednak, że reszta firmy nie zamyka się przed rozwijaniem użyteczności swojej strony internetowej. Tymczasem jego zespół analityczny marnował. Słyszałem też o tym, że sprzedawcy zdobywają miłość w firmie, podczas gdy inżynieria jako całość jest niedoceniana lub odwrotnie. Jeśli chodzi o moją historię, gdybym mógł wiedzieć, że firma taka jest, to w pierwszej kolejności może uniknąłbym tej pracy. Tak więc, zanim dołączę do nowej firmy, jak ocenić jej rzeczywisty szacunek dla mojej roli programisty? Za inne role? Chcę unikać firm, które nie traktują poważnie mojego szczególnego zainteresowania programowaniem, lub, być może, firm, które nie cenią wszystkich, którzy tam pracują. (Uwaga, myślę, że te powiązane pytania obejmują ocenę stosunku firmy do podstawowych potrzeb jej programistów).


title: Rozsądne wynagrodzenie za staż?

text: Otrzymałem ofertę w dwóch firmach na wiosenną spółdzielnię. Oba są związane z inżynierią oprogramowania. Pierwsza firma (C1) zaoferowała mi 22/godz. Czy 22 USD/godz. + stypendium mieszkaniowe to rozsądna oferta? Okolica jest tania do zamieszkania, co skłania mnie do przekonania, że 22/godz. to dobra oferta. Czy byłoby możliwe/rozsądne negocjowanie tego? Nadal nie otrzymałem szczegółów oferty od drugiej firmy (C2), ale powiedzieli, że obecnie przygotowują pismo. C2 jest w Bostonie, który oczywiście będzie droższy. C2 całkowicie płaci za mieszkanie. Moim głównym problemem jest wybór między nimi. Oba są najwyraźniej dobrymi miejscami do pracy, więc główny problem sprowadza się do zapłaty. Pomijając wszystko inne, jakie wynagrodzenie / stawkę godzinową powinien oferować C2 dla topowego C1?


title: Funkcjonalne języki, które kompilują się do maszyny wirtualnej Dalvik z Androidem?

text: Mam problem z oprogramowaniem, który pasuje do funkcjonalnego podejścia do programowania, ale docelowym rynkiem będzie system operacyjny Android. Pytam, ponieważ istnieją języki funkcjonalne, które kompilują się do maszyny wirtualnej Javy, ale kod bajtowy Dalvik != kod bajtowy Java. Alternatywnie, czy wiesz, czy narzędzie `dx` może inteligentnie konwertować pliki `.class` wygenerowane z języków funkcjonalnych, takich jak Scala? **Edytuj** : Czy mogę nieco doprecyzować pytanie, aby zwiększyć pomoc społeczności i pomóc mi w lepszym wyborze? * Czy używałeś alternatywnych języków z Dalvik? Które? * Jakie są „gotchas” (problemy), na które mogę się natknąć? * Czy wydajność jest akceptowalna? Mam na myśli to, że aplikacja nadal reaguje na użytkownika. Nigdy nie zajmowałem się tworzeniem telefonów komórkowych, ale dorastałem na ograniczonych urządzeniach i nie mam złudzeń, że korzystanie z niestandardowych języków na platformie wiąże się z kosztami. Muszę tylko wiedzieć, czy koszt jest taki, że powinienem przekuć moje podejście do języka domyślnego (tj. zastosować zasady funkcjonalne w języku OOP).


title: Najlepsza opinia dla potencjalnego klienta

text: Mam znajomego, który pracuje w firmie. Używają oprogramowania, które jest przestarzałe i napisane w Delphi. Firma ta ma obawy dotyczące życia firmy dostarczającej oprogramowanie (za korzystanie z której płaci miesięczną licencję). To dość _specyficzne_ oprogramowanie. Mój przyjaciel rozmawiał ze swoim szefem i zostałem zaproszony z potencjalną możliwością „przepisania” ich aplikacji dla systemu Windows z myślą o dostarczeniu kodu źródłowego (C# planuję zapewnić, jeśli to się zacznie). Zastanawiając się nad tym i chociaż może to dać mi trochę ładnie potrzebnej gotówki, zastanawiam się, jaka jest tutaj najlepsza opcja... Wygląda na to, że początkowym wymogiem jest zreplikowanie tej aplikacji dokładnie tak, jak jest. Nie został opracowany we własnym zakresie i dlatego jest używany również przez inne firmy. Jest duży i złożony. Chociaż mnie to nie martwi, niepokoi mnie koszt i czas, aby to zrobić tylko po to, aby wprowadzić to „w domu”. Wygląda na to, że nie chcą żadnej nowej lub innej funkcjonalności, tylko posiadanej przez nich bazy kodu. Więc chyba moje prawdziwe pytanie; teraz, gdy masz podstawowe informacje - czy warto zasugerować, że zamiast przepisywać tę rzecz kropka po kropce i funkcja po funkcji, aby rzeczywiście zobaczyć, jakich części używają / nie używają - i zaprojektować aplikację dostosowane specjalnie dla nich, a nie standardowe, z półki, z której korzystają? Powielanie aplikacji tylko po to, by mieć prawo własności, wydaje się ogromnym marnotrawstwem, ale jestem programistą, a nie decydentem biznesowym :) Jakieś pomysły/myśli/płomienie?


title: Odpowiednia struktura danych dla głęboko zagnieżdżonych danych?

text: Nie wiem, jaka struktura danych byłaby odpowiednia dla mojego problemu. Muszę napisać scenariusz, który będzie liczył niektóre zdarzenia. Wejście to lista zdarzeń (tysiące). Każde zdarzenie to obiekt o następujących atrybutach: klasa Firma impreza wydział urzędu miasta Można na to spojrzeć tak: „Każde wydarzenie jest powiązane z jedną firmą w danym mieście w jednym urzędzie iw jednym wydziale tego urzędu”. Mój skrypt musi wypisać całkowitą liczbę zdarzeń dla firmy, urzędu miasta i wydziału. Zasadniczo musi wypisać zdania takie jak: Suma zdarzeń w firmie X w mieście Y w biurze Z w dziale T : 15 Suma zdarzeń w firmie X w mieście Y w biurze Z w dziale R: 36 ... Suma zdarzeń w firmie N w miasto Y w urzędzie G w dziale T: 89 ... Jak mam przechowywać te obliczenia i jak je liczyć. Myślałem o użyciu zagnieżdżonych słowników (w Pythonie) lub bazy danych SQL w pamięci. Czy jest inny sposób?


title: Punktacja/analiza testów subiektywnych do oceny umiejętności

text: Mam szczęście w tym sensie, że dostałem możliwość bycia „technicznym rozwiązywaczem problemów” dla naszego zespołu ds. rozwoju offshore. Chociaż jestem pewny siebie i zdolny do radzenia sobie z większością problemów, natknąłem się na coś, czym nie jestem. Na podstawie wstępnych rozmów z różnymi członkami zespołu, zarówno na lądzie, jak i na morzu, określono wymóg „powtarzanej, spójnej” oceny umiejętności. Moim zdaniem najlepszym sposobem na osiągnięcie tego byłoby połączenie testów obiektywnych i subiektywnych. Ten pierwszy jest zwykle wstępną oceną umiejętności online na różne tematy, na przykład ogólne C#, WCF i MVC. Ten ostatni jest testem technicznym, w którym kandydat musiałby rozwiązać różne problemy i (miejmy nadzieję) wyjaśnić procesy myślowe związane z rozwiązaniem. Oczywiście pierwsza metoda jest spójna, powtarzalna i niezwykle dokładna. Drugi zawsze będzie subiektywny i oparty na podejściu, rozwiązaniu (lub ewentualnie nie) i innych czynnikach. „Punktacja” będzie również sprowadzana do doświadczenia i umiejętności asesora i tu leży mój problem; * Osoba, która początkowo ma być asesorem (ja) nie ma doświadczenia. * Osoby, które ostatecznie będą kontynuować ten proces dla innych osób, nigdy nie pozostaną takie same ze względu na ograniczenia projektu i przyczyny wewnętrzne, co zmienia punkt odniesienia dla porównania. * Nie znam żadnego odpowiedniego systemu, który można by zaklasyfikować jako spójny i powtarzalny dla testów subiektywnych z powyższymi 2 czynnikami, nie mówiąc już o tym, gdyby takowe nie istniały. Tak czy inaczej, muszę przedstawić plan, który ostatecznie wygeneruje analizę umiejętności/luki i jest mało prawdopodobne, że będę w stanie użyć obiektywnej metody (najbardziej prawdopodobna przyczyna ograniczeń budżetowych). Jedyne, co pozostało, to metody subiektywne i powyższe kwestie. Czy ktoś ma jakieś sugestie dotyczące podejścia, które może zaznaczyć wszystkie pola?


title: Co robi ten plik javascript? Czy to wirus?

text: Podczas wyszukiwania w google znalazłem stronę, która pokazuje inne treści Google Botowi i jego użytkownikom, a także bardzo podejrzany plik javascript. Może to wirus/złośliwe oprogramowanie śledzące pliki cookie, nie wiem, więc pytam tutaj, czy ktoś może mi wyjaśnić kod? document.write ('\n'); var a1156tf="51la";var a1156pu="";var a1156pf="51la";var a1156su=okno.location;var a1156sf=dokument.referrer;var a1156of="";var a1156op="";var a1156ops=1 ;var a1156ot=1;var a1156d=new Date();var a1156color="";if (navigator.appName=="Netscape"){a1156color=screen.pixelDepth;} else {a1156color=screen.colorDepth;} spróbuj{ a1156tf=top.document.referrer;}catch(e){} try{a1156pu =window.parent.location;}catch(e){} try{a1156pf=window.parent.document.referrer;}catch(e){ } try{a1156ops=document.cookie.match(new RegExp("(^| )a1156_pages=([^;]*)(;|$)"));a1156ops=(a1156ops==null)?1: (parseInt (unescape((a1156ops)[2]))+1);var a1156oe =new Date();a1156oe.setTime(a1156oe.getTime()+60*60*1000);document.cookie="a1156_pages="+a1156ops+ ";path=/;expires="+a1156oe.toGMTString();a1156ot=document.cookie.match(new RegExp("(^| )a1156_times=([^;]*)(;|$)")); if(a1156ot==null){a1156ot=1;}else{a1156ot=parseInt(unescape((a1156ot)[2])); a1156ot=(a1156ops==1)?(a1156ot+1):(a1156ot);}a1156oe.setTime(a1156oe.getTime()+365*24*60*60*1000);document.cookie="a1156_times="+ a1156ot+";path=/;expires="+a1156oe.toGMTString();}catch(e){} try{if(document.cookie==""){a1156ops=-1;a1156ot=-1;}}catch (e){} a1156of=a1156sf;if(a1156pf!=="51la"){a1156of=a1156pf;}if(a1156tf!=="51la"){a1156of=a1156tf;}a1156op=a1156pu;spróbuj{lainframe}catch (e){a1156op=a1156su;} a1156src='http://web.51.la:82/go.asp?svid=8&id=17211156&tpages='+a1156ops+'&ttimes='+a1156ot+'&tzone='+(0 -a1156d.getTimezoneOffset()/60)+'&tcolor='+a1156color+'&sSize='+screen.width+','+screen.height+'&referrer='+escape(a1156of)+'&vpage='+escape(a1156op) +'&vvtime='+a1156d.getTime(); setTimeout('a1156img = nowy obraz;a1156img.src=a1156src;',0);


title: Czy mogę używać czcionek FontAwesome z własnymi niestandardowymi plikami CSS?

text: Chcę użyć biblioteki ikon WebFont FontAwesome (FA) dla wszystkich ikon w moim projekcie. Używają SIL OFL 1.1 dla czcionek i licencji MIT dla plików źródłowych. Mój problem polega na tym, że chcę używać czcionek FA w moim projekcie, jednak nie chcę być przywiązany do ich plików CSS. Czy mogę używać czcionek z własnymi niestandardowymi stylami CSS, bez jakiejkolwiek zależności od plików CSS FA? Nie mam nic przeciwko popieraniu projektu na mojej stronie internetowej, ale jeśli nawet to zrobię, chcę tylko poprzeć grafikę, a nie kod. Licencja FontAwesome: http://fortawesome.github.io/Font-Awesome/license/


title: Jaki jest najbardziej pragmatyczny i podstawowy wzór interfejsu użytkownika do naśladowania dla Silverlight i/lub WPF

text: Oto kontekst. Aplikacje będą: * wykorzystywać istniejące (i standardowe) usługi sieciowe. * aplikacja intensywnie korzysta z interfejsu użytkownika (interfejs jest często aktualizowany i zawiera dużo danych do wyświetlenia). * poziom doświadczenia zespołu programistów jest średni. * Zespół programistów ma bardzo mało doświadczenia w Silverlight i WPF. * Chcę, żeby było to proste, ale chcę uniknąć całkowitego przepisywania w najbliższej przyszłości, więc muszę (spróbować) obrać właściwą ścieżkę od początku. Wiem, że używanie żadnego wzorca jest najłatwiejszym i najszybszym sposobem, a wdrożenie MTVT jest fantazmatem wszystkich architektów .NET. Ale nie mam budżetu ;) Potrzebuję rozwiązania pragmatycznego, łatwego do wdrożenia, łatwego do zrozumienia i to działa. Kiedy przeglądam internet, MVVM Light jest dobrze pozycjonowany, ale Microsoft proponuje własną implementację. Czy stanie się standardem jak ASP.NET MVC?


title: Git Workflow - zmiana lokalnego repozytorium w „centralne”

text: Mam lokalne repozytorium z projektem zabawkowym, który okazał się poważniejszy niż myślałem. Tak więc z jednej gałęzi programistycznej, w której beztrosko się zaangażowałem, zacząłem używać gałęzi podobnych do słynnego http://nvie.com/posts/a-successful-git-branching-model/, który chciałbym teraz mieć „centralne” zdalne repozytorium, do którego mogę przesyłać moje drzewo programowania i masteringu. Pierwsza kwestia to: jak to zrobić. Czy mam zainicjować puste repozytorium na moim serwerze i odwoływać się do tego repozytorium jako zdalnego źródła w moim lokalnym repozytorium? Czy muszę wcześniej tworzyć gałęzie w zdalnym repozytorium, czy wystarczy je popchnąć? Po drugie, pierwsze zmiany w moim lokalnym repozytorium są naprawdę niewygodne, więc chciałbym skumulować wiele z tych wczesnych zmian w jednym, albo w formie --no-off, albo jak rozumiem, aby je zmiażdżyć. Jak rozumiem, działa to tylko z gałęzią pośrednią. tj. teraz mam 2 gałęzie " **develop** " i " **master** " w moim lokalnym repozytorium. Wpadłem na dwa pomysły jak „zmienić historię”. Tworzę dwie gałęzie **develop-squashed** i **master-squashed**. Zmień bazę moich oryginalnych gałęzi na te podczas zgniatania commitów, które chcę stracić. Po tym, jak **-zgniecione** gałęzie będą równoważne z oryginalnymi gałęziami głównymi i rozwinę gałęzie, mogę usunąć oryginalne gałęzie i „zmienić nazwy” gałęzi ***-zgniecionych** na **master** i **deweloperski** . Wreszcie mogę wepchnąć **_master_** i **_develop_** do repozytorium _remote_. * Czy to jest droga do zrobienia? * Jak mogę się upewnić, że poprzez zmianę bazy, obie gałęzie, **master** i **develop**, mają tę samą historię do momentu, w którym zacząłem stosować „sukcesy model rozgałęziania git”? (W tej chwili mają taką samą historię).


title: zoptymalizuj moje rozwiązanie

text: Właśnie to rozwiązałem, ale chcę wiedzieć, jak efektywnie mnożyć macierze M : ------ 1 1 0 0 0 5 3 2 0 f[n] = M^n Zaimplementowałem używając Exponentiation_by_squaring Czy jest bardziej wydajny niż to ?


title: Zawartość Projektu Wiki

text: Założyłem mały projekt Google Code. Czuję się trochę zobligowany do korzystania z wbudowanej funkcji wiki, ale nie jestem pewien, do czego jej używać. Projekt jest w zasadzie biblioteką C++ dla klas kontenerów. Obecnie jestem jedynym członkiem mojego projektu, ale mogę zaangażować kilku przyjaciół. Więc do czego powinienem używać wiki? Czy w ogóle muszę go używać?


title: Powody, dla których programiści odchodzą

text: Chciałbym dowiedzieć się, dlaczego programiści odchodzą z pracy i czy powody odejścia pojawiły się ponownie w Twojej obecnej pracy? Czy powodem odejścia jest po prostu wynagrodzenie, lokalizacja, nienawidzę szefa/współpracownika, brak uznania czy przejście na emeryturę/nową ścieżkę kariery. Aktualizacja: Jestem odpowiedzialny za zespół programistów i testerów i chciałbym lepiej zrozumieć, co może motywować mój zespół do odejścia i mam nadzieję, że spróbuję rozwiązać takie problemy.


title: Czy kompletne przepisanie jest zgodne z licencją/eula tego oprogramowania?

text: Okej, więc od jakiegoś czasu myślałem o przepisaniu serwera minecraft, tym razem w języku o nazwie golang. To tylko przykładowy projekt, dzięki któremu mogę nauczyć się nowego języka programowania. Moje pytanie brzmi: Jeśli -przepiszę- serwer Minecraft-,: * Czytałem EULA Minecrafta, a oni mówią tylko o -modyfikowaniu- aktualnej serwer lub klient. Nic o odtworzeniu tego. Czy naruszam umowę EULA, jeśli odtwarzam serwer Minecraft w golangu? * Jeśli kiedykolwiek skończę projekt, mając w pełni funkcjonalny przepisany serwer. Czy mogę go zwolnić? * A jeśli mogę go uwolnić, czy mogę na nim zarabiać w formie darowizn? Dziękuję!


title: Czy istnieje wymówka dla krótkich nazw zmiennych?

text: Stało się to dużą frustracją związaną z bazą kodu, w której aktualnie pracuję; wiele naszych nazw zmiennych jest krótkich i nieopisowych. Jestem jedynym deweloperem, który pozostał w projekcie i nie ma dokumentacji, co robi większość z nich, więc muszę poświęcić dodatkowy czas na śledzenie tego, co reprezentują. Na przykład czytałem jakiś kod, który aktualizuje definicję powierzchni optycznej. Zmienne ustawione na początku były następujące: double dR, dCV, dK, dDin, dDout, dRin, dRout dR = Convert.ToDouble(_tblAsphere.Rows[0].ItemArray.GetValue(1)); dCV = convert.ToDouble(_tblAsphere.Rows[1].ItemArray.GetValue(1)); ... i tak dalej Może to tylko ja, ale w zasadzie nic mi to nie mówiło o tym, co przedstawiały, co utrudniało dalsze zrozumienie kodu. Wiedziałem tylko, że była to zmienna przetworzona gdzieś w konkretnym wierszu z określonej tabeli. Po kilku poszukiwaniach dowiedziałem się, co mają na myśli: dR = promień dCV = krzywizna dK = stała stożkowa dDin = wewnętrzna apertura dDout = zewnętrzna apertura dRin = wewnętrzny promień dRout = promień zewnętrzny Zmieniłem ich nazwy na zasadniczo takie, jakie mam tam na górze. Wydłuża niektóre linie, ale wydaje mi się, że to uczciwy kompromis. Ten rodzaj schematu nazewnictwa jest jednak używany w większości kodu. Nie jestem pewien, czy jest to artefakt od programistów, którzy nauczyli się pracując ze starszymi systemami, czy też jest za tym jakiś głębszy powód. **Czy istnieje dobry powód, aby nazywać zmienne w ten sposób, czy też uzasadnione jest aktualizowanie ich do bardziej opisowych nazw, gdy się na nie natknę?**


title: Właśnie otrzymałem skargę od użytkownika prowadzonej przeze mnie witryny. Czy powinienem coś zrobić?

text: Otrzymałem dużą ścianę tekstu od użytkownika witryny, którą prowadzę w swojej pracy. Są wyraźnie zdenerwowani, że mają do czynienia z strasznie przestarzałą aplikacją internetową, która nie widziała żadnych poważnych aktualizacji od ponad 6 lat. Nie dokonano żadnej refaktoryzacji, jakość kodu jest okropna, bezpieczeństwo niesprawdzone, zgodność z zasadami zignorowana, a ponadto jest brzydka i szczerze żenująca. Należy pamiętać, że jest to mała firma, ale z witryny korzystają codziennie setki osób. Jestem tam jednym z dwóch programistów i pracuję tam od dwóch lat. Ta osoba mówi, że jest w moim wieku (22 lata) i rozumie technologię (ale nie potrafi używać poprawnej gramatyki). Skarga wspomniała o niewygodnych stronach i działaniach w witrynie, ale nie mają nawet pojęcia o głębokości wad tej witryny. Teraz chciałbym szczerze im powiedzieć, że z tą firmą jest wiele nie tak i że ta aplikacja została zbudowana, gdy byliśmy w liceum. I chociaż to nie moja wina, że strona jest okropna, to ja jestem w stanie ją naprawić. Ale z drugiej strony mogłem po prostu nic nie mówić i to zignorować. Czy zrobienie tego publicznie przyniosłoby jakąkolwiek korzyść przyszłym pracownikom (okazywanie uczciwości), czy byłoby to po prostu całkowicie bezsensownym błędem? Szanse są, nawet jeśli odpowiem, że tylko jedna osoba to przeczyta. Niezależnie od tego, prawdopodobnie po prostu zignoruję to i kontynuuję projekt refaktoryzacji witryny.


title: Data i godzina – zastosować aktualny, czy „wtedy” czas letni?

text: Projektuję funkcję, która ze znacznikiem czasu UTC przekonwertuje go na czas lokalny. Mam pytanie, czy do konwersji należy zastosować bieżące ustawienia czasu letniego, czy ustawienia dat DST sygnatur czasowych? Jeśli pójdziesz z pierwszym, aktualnym ustawieniem czasu letniego zastosowanym do znacznika czasu - oznaczałoby to, że godzina 16, która została zarejestrowana z DST+1, będzie godziną 15 z DST+0 i godziną 16 z DST+0, w zależności od pory roku, w której sprawdziłeś datę o godzinie . Jeśli pójdziesz z tym drugim, zostanie do niego zastosowane ustawienie znaczników czasu czasu letniego - tak więc godzina szesnasta zarejestrowana za pomocą DST+1 zawsze będzie oznaczać godzinę szesnastą, bez względu na porę roku, o której to sprawdziłeś. Co jest bardziej preferowane w praktyce?


title: różnica między wzrostem wykładniczym i logarytmicznym

text: Dlaczego `for(k=1;k<=n;k*=2)` rośnie logarytmicznie = `O(logn)`, ale czuję, że rośnie wykładniczo, ponieważ sekwencja wygląda jak `1,2,4,8.. ..` a dla serii Fibonacciego ludzie mówią, że rośnie wykładniczo. co dla mnie nie wygląda jak „0,1,1,2,3,5...”, ale dlatego mówią „O(2^n)”. Proszę wytłumacz


title: Jak często powinno następować zapisywanie na dysku w automatycznie zapisującym edytorze tekstu?

text: Zajmuję się tworzeniem prostego edytora tekstu i chciałbym, aby aplikacja automatycznie zapisywała tekst. Innymi słowy, użytkownik nigdy nie musiałby naciskać przycisku zapisu. Widziałem inne aplikacje, które to robią i zastanawiałem się, jak często można bezpiecznie zapisywać pliki na dysku? Z punktu widzenia user experience wydaje się, że im częściej tak się dzieje, tym lepiej, ale martwię się o wydajność i możliwe zużycie dysku (zwłaszcza przy zapisach na dyski SSD). Wygląda na to, że buforowanie dysku systemu operacyjnego może pomóc w uniknięciu tych problemów, ale nie wiem też, czy bezpiecznie jest polegać na tym w przypadku takiej aplikacji. Planowałem zapisywać cały dokument na dysku przy każdym zapisie, ale wydaje się to po prostu strasznie nieefektywne, jeśli system operacyjny często zapisuje go na dysku, ale poleganie na rozładowaniu programu może spowodować utratę danych w przypadku awarii. Czy ktoś ma jakieś doświadczenie w radzeniu sobie z tym, które może być w stanie pomóc?


title: Czy tabele baz danych odniesień mają miejsce w projekcie opartym na domenie?

text: Najpierw trochę tła. Załóżmy, że mamy system, w którym klient składa zamówienie w interfejsie internetowym. Przedmioty zamawiane przez klienta mogą być wyceniane na różne sposoby. Czasami wliczając koszt dostawy, a czasami wcale. Faktyczne ustalanie cen zależy od wielu czynników, w tym od własnego modelu cenowego dostawcy, indywidualnych umów tego dostawcy z klientami, jak również od umów tego dostawcy z jego własnymi dostawcami. Załóżmy, że gdy klient złoży zamówienie na konkretny towar i wybierze umowę, jeśli istnieje, sposób dostawy może być określony przez zmienne w tych umowach. Te metody dostarczania również znajdują się we własnej tabeli w bazie danych i mają różne właściwości używane w dalszej kolejności. Sensowne jest, aby informacje te były przechowywane w odnośnikach krzyżowych lub tabelach przeglądowych. Ta tabela zostałaby załadowana do domeny i mogłaby być następnie wykorzystana do zastosowania odpowiedniej metody dostawy podczas przetwarzania zamówienia. Czy ma to sens w kontekście projektowania opartego na domenach? A może moje myślenie jest zbyt relacyjne? Czy ta logika powinna być wbudowana we własną klasę/metodę (mam na myśli poza zastosowaniem danych z tabeli odniesień krzyżowych)?


title: Użyj wzoru adaptera dla połączonych klas

text: Potrzebuję (dla celów testów jednostkowych) stworzyć adaptery dla klas bibliotek zewnętrznych. ExchangeService i ContactsFolder to implementacje Microsoftu w jego bibliotece EWS. Stworzyłem więc moje adaptery, które implementują moje interfejsy, ale wygląda na to, że ContactsFolder ma w swoim konstruktorze zależność od ExchangeService. Problem polega na tym, że nie mogę utworzyć wystąpienia ContactsFolderAdapter bez uzyskania dostępu do rzeczywistego wystąpienia ExchangeService (w zakresie widzę tylko ExchangeServiceAdapter). Czy istnieje lepszy wzorzec, który zachowuje klasy adaptera? A może powinienem „zainfekować” ExchangeServiceAdapter jakąś metodą GetActualObject? ![tutaj wprowadź opis obrazu](http://i.stack.imgur.com/rgpv1.png)


title: Czy ma sens wprowadzanie obowiązkowego pola, które ma wartość domyślną?

text: Rozważ listę rozwijaną „Czas trwania”, która ma 3 opcje 1. 30 dni 2. 60 dni 3. 90 dni i domyślnie 30 dni będzie wybraną wartością. Czy ma sens, aby to menu rozwijane było obowiązkowe? Czy naprawdę musimy wstawić ***** (Obowiązkowy znak) w tym polu?


title: Dlaczego język Stab nie jest powszechnie używany?

text: Zastanawiam się, czy istnieją powody techniczne, które sprawiają, że Stab jest nieodpowiednią alternatywą dla Javy. Stab mocno zapożycza od C#, wprowadzając wiele funkcji C# do JVM: * Mniejsza szczegółowość * Wnioskowanie o typie (wpisywanie niejawne) * Właściwości i indeksatory * Operator łączenia wartości null * Skróty 'using' i 'as' * delegaci * wyrażenia lambda * typy anonimowe * generatory (bloki iteracyjne/zwroty wydajności) * niesprawdzane wyjątki * inicjatory * częściowe klasy i metody * metody rozszerzające * forma LINQ * inne rzeczy Wiele z powyższych funkcji wydaje się być rzeczami, o które ludzie domagają się w Javie. Stab wydaje się być sposobem na uzyskanie tych funkcji w dzisiejszych czasach, nie odstając zbytnio od drzewa Java. Jestem zaskoczony, że Stab nie był bardziej popularny wśród programistów C#, którzy również muszą pisać i utrzymywać kod na JVM. Stab nie jest w 100% taki sam jak C#, ale jest dość zbliżony i myślę, że programiści C# woleliby kodowanie w Stab niż kodowanie w Javie. Dziwię się, że Stab nie doczekał się większej adopcji wśród programistów Javy. Ma składnię, która jest bardzo podobna i przyrostowa do Javy, używa zwykłego waniliowego JDK i generuje biblioteki, które bardzo naturalnie współdziałają z Javą na JVM. Scala jest również oczywistą alternatywą i ma jeszcze większy zestaw funkcji. Rozumiem, dlaczego wybrałbyś Scala. Moim zdaniem Scala to większy skok koncepcyjny, pod względem składni, a nawet bibliotek dla programistów Javy i C#. Nawet w świecie, w którym Scala jest wyborem, jestem zaskoczony, że Stab nie widział większej przyczepności. Wygląda na to, że może być kilka powodów: * Ludzie po prostu nie są tego świadomi * Ludzie Javy nie lubią wpływu Microsoftu * Te funkcje nie są tak atrakcyjne, jak sobie wyobrażam w porównaniu z waniliową Javą * Istnieją problemy techniczne z używaniem Pchnięcie w realnym świecie Ostatnia opcja wydaje się najbardziej odpowiednia do dyskusji w tym miejscu. Więc jakie są techniczne powody, które sprawiają, że Stab nie jest popularnym wyborem podczas programowania na JVM? Myślę, że to może być pierwsze pytanie o Stab. Cejlon ma już pytania i nikt jeszcze tego nie widział.


title: Jakieś powody, by nie używać wielu systemów kontroli wersji?

text: Pracuję nad projektem, który wykorzystuje GIT jako główny system kontroli wersji dla trunków, oficjalnych oddziałów i większości podprojektów/nieoficjalnych oddziałów. W związku z tym chcę, aby mój własny oddział używał GIT, aby umożliwić reszcie społeczności dostęp do mojego oddziału za pomocą znanego im systemu. Jednak pracuję nad częścią projektu, która nakłada się zarówno na oficjalne, jak i nieoficjalne gałęzie, wraz z kilkoma łatami, które nigdy nie wejdą do pnia - jako taki muszę być w stanie oddzielić moje łatki, aby wszystkie mogły być używane w moja gałąź i selektywne plastry do stosowania w pniu. To naturalnie skłania się do korzystania z kolejek rtęciowych. Czy jest jakiś powód, dla którego nie mogę używać mercurial do własnego lokalnego repozytorium, ale przesyłam całość do repozytoriów hostowanych zarówno przez GIT, jak i Mercurial? A raczej, czy jest jakiś dobry powód, żeby tego nie robić, jestem pewien, że to możliwe.


title: Ciekawe odmiany FizzBuzz?

text: W zatrudnianiu programistów powszechnym testem jest test Fizz Buzz. Jakie są fajne/ciekawe wariacje na temat szumu musu, które utrzymują się na mniej więcej tym samym poziomie trudności? Zasadniczo, gdybym poprosił kogoś o wykonanie testu buzz buzz przez e-mail lub coś takiego, chciałbym się upewnić, że nie może po prostu wygooglować kodu.


title: Jaki jest sens właściwości?

text: Oto kilka argumentów przemawiających za właściwościami i moje kontrargumenty: ### Łatwiejsze w użyciu niż pisanie metod pobierających i ustawiających Pary metod pobierających i ustawiających to zapach kodu. Ułatwienie ich pisania jest jak ułatwienie oblania testu z matematyki poprzez użycie formularza Scantron i wpisanie wszystkich „C”. Obiekty, które zawierają tylko stan, dla trwałości, nie powinny używać getterów/setterów i powinny tworzyć niezmienne obiekty w czasie trwałości. Dla konsumenta przedmiotu ważne jest to, co robi, a nie jak to robi. Jego zachowanie jest tym, co robi; jej stan jest taki, jak to robi. Jeśli uważasz, że troszczysz się o stan obiektu (z wyjątkiem trwałości, chociaż to również łamie OO), po prostu nie robisz OOP i tracisz jego zalety. ### Dają konsumentom przybliżoną informację o wydajności. To coś, co może się zmienić w przyszłości dla każdej nieruchomości. Załóżmy, że w wersji 1.0 dostęp do PropertyX po prostu zwraca pole. W wersji 1.5, jeśli pole ma wartość NULL, PropertyX używa wzorca Null Object do tworzenia nowego obiektu NULL. W wersji 2.0 pole jest dalej sprawdzane przez metodę pobierającą w PropertyX. Ponieważ właściwość staje się coraz bardziej złożona, wskazanie wydajności korzystania z właściwości wydaje się coraz mniej zgodne z prawdą. ### Są lepsze niż pola publiczne To prawda. Ale takie są metody. ### Reprezentują one fundamentalnie inny aspekt przedmiotu niż metody i wszyscy konsumenci przedmiotu powinni się tym zainteresować. Czy jesteś pewien, że oba powyższe stwierdzenia są prawdziwe? ### Łatwiej je pisać, człowieku Jasne, wpisanie `myObject.Length` jest łatwiejsze niż wpisanie `myObject.Length()`, ale czy nie można tego naprawić za pomocą odrobiny syntaktycznego cukru? * * * ### Po co używać metod zamiast właściwości? * Brak gwarancji wydajności. API pozostanie prawdziwe, nawet jeśli metoda stanie się bardziej złożona. Konsument będzie musiał sprofilować swój kod, jeśli napotka problemy z wydajnością i nie będzie polegać na słowie API. * Mniej dla konsumenta do myślenia. Czy ta nieruchomość ma seter? Metoda na pewno nie. * Konsument myśli z właściwego nastawienia OOP. Jako konsument API jestem zainteresowany interakcją z zachowaniem obiektu. Kiedy widzę właściwości w interfejsie API, wygląda to bardzo podobnie do stanu. W rzeczywistości, jeśli właściwości robią zbyt wiele, nie powinny nawet być właściwościami, więc tak naprawdę właściwości w stanie API ARE są wyświetlane konsumentom. * Programista API zastanowi się głębiej nad metodami ze zwracanymi wartościami i w miarę możliwości uniknie modyfikowania stanu obiektu w takich metodach. W miarę możliwości należy wymuszać oddzielenie poleceń od zapytań. * * * Pytam więc, po co używać właściwości zamiast metod? Większość punktów w witrynie MSDN to zapachy kodu same w sobie i nie należą do żadnych właściwości ani metod. (Te myśli przyszły mi do głowy po myśleniu o CQS.)


title: Jaka strategia na zdobycie stanowiska w przedsiębiorstwie, biorąc pod uwagę przeszłość niezwiązaną z przedsiębiorstwem?

text: Jestem w miejscu potencjalnej zmiany kariery. Wśród opcji jest pozostanie w rozwoju oprogramowania, ale przejście do pracy w systemach komercyjnych i korporacyjnych. Moja przeszłość to głównie praca z naukowcami i inżynierami w organizacjach akademickich i badawczych. Fajnie jest być w czołówce odkryć, ale chłód nie pomaga w kupowaniu mebli, budowaniu długoterminowych oszczędności, kupowaniu paneli słonecznych, pobudzaniu lokalnej gospodarki ani finansowaniu pomysłów na start znajomych. Wynagrodzenie może być przyzwoite według ogólnych standardów populacji, ale wynosi około 2/3 do 1/2 tego, co mogłoby być w firmie komercyjnej. Poza pieniędzmi jest też charakter pracy. Grupy akademickie często nie mają dobrych metodologii tworzenia oprogramowania. Mam szczęście, że mam svn w moim obecnym projekcie. Wielu programistów to studenci o niedojrzałym podejściu do projektowania, którzy mają w oczach gwiazdy glamour z każdej nowej, modnej techniki. Wielu ludzi o wysokim IQ z doświadczeniem w jednej dziedzinie, którzy próbują tworzyć aplikacje wykraczające poza samą matematykę i kreślenie, których naprawdę potrzebują, ma tendencję do przeprojektowania wszystkiego. Jeden z niedawnych projektów analizy danych naukowych, napisany przez kilka osób, z których żadna nie miała holistycznego spojrzenia na projekt, obejmował taką plątaninę źle zorganizowanych warstw abstrakcji dla rzeczy, które naprawdę nie potrzebują abstrakcji, z nadużywaniem… och nigdy pamiętaj, to nie jest miejsce, w którym można się o tym wszystkim gadać! W przeciwieństwie do tego, wszystkie projekty komercyjne są dobrze zarządzane za pomocą odpowiednich narzędzi, wnikliwej oceny, dobrze dostrojonej regresji i testów jednostkowych oraz wydajnych metodologii. Prawidłowy? Prawidłowy? (następuje śmiech...) No dobrze, trawa nie jest właściwie _nigdzie_ bardziej zielona, ale akceptuję niedoskonałość. Bardziej ekscytuje mnie tworzenie dobrego produktu, który rozwiązuje rzeczywiste problemy, jednocześnie zarabiając dobrą pensję z realnym potencjałem premii lub innych nagród za pracę o krytycznym znaczeniu dla misji, wykonaną w ramach budżetu i na czas. Kolejną dużą zaletą komercyjnej i korporacyjnej pracy IT jest to, że można mieszkać w dowolnym mieście lub w jego pobliżu, podczas gdy swdev pracują w silnych klastrach tam, gdzie nauka jest wykonywana: miasta uniwersyteckie i pobliskie ośrodki badawcze, takie jak NIH, NASA, Fermilab, NRAO itp. Chociaż mam ponad 20 lat doświadczenia w oprogramowaniu, mam niewielką wiedzę o bazach danych (poza przykładami zabawek podanymi w samouczkach mysql), sieciach (poza konfiguracją domowej sieci LAN), sprawach finansowych, punktach sprzedaży, Rzeczy BI lub cokolwiek zdalnie przedsiębiorczego. Myślę, że BI może być interesujące, ale niewiele wiem, jak to przeliterować. Więc jaka jest przepaść (lub kanion), którą muszę pokonać, aby dokonać tej zmiany? Jakie są skuteczne strategie dokonywania tej zmiany? Czy niektóre typy organizacji lub określone stanowiska pracy lepiej nadają się do tej zmiany? Jakiego szoku kulturowego mogę się spodziewać i jak sobie z nim poradzić, zwłaszcza jeśli chodzi o to, co powiedzieć na rozmowie o pracę? Potrafię dowiedzieć się, jakie konkretne umiejętności są potrzebne z opisów stanowisk; to, czego szukam, to wszystkie inne rzeczy, niepisane i trudne do zdefiniowania rzeczy do rozważenia. A może jestem głupcem, że w ogóle rozważam to wszystko?


title: Czy Twoja organizacja nadal używa terminu „ekrany” do opisania interfejsu użytkownika?

text: Jestem w tej dziedzinie wystarczająco długo, aby pamiętać, kiedy termin „ekran” pojawił się w naszym leksykonie. Choć trudno w to uwierzyć, wczesne systemy, na których pracowałem, nie miały interfejsu użytkownika (UI). Systemy te działały jako zadania produkcyjne „obrazu karty” w czasach, gdy bycie operatorem komputera wymagało dość głębokiego zrozumienia, jak działają komputery. Przechodząc do dnia dzisiejszego: wzdrygam się za każdym razem, gdy słyszę, jak praktycy systemów używają terminu „ekran”. Metafora nie pasuje już do medium. Termin ten nieco się zmienił, gdy okno dialogowe użytkownika pochłonęło 100% dostępnej powierzchni monitora; jednak termin ten stracił na znaczeniu w momencie, gdy przenieśliśmy się do środowisk z oknami. Mając powyższe na uwadze, czy Twoja organizacja nadal używa terminu „ekrany” do opisania interfejsu aplikacji? Czy komuś udało się usunąć ten termin z organizacji? Dla tych, którzy nie używają tego terminu do opisania elementów okna dialogowego interfejsu użytkownika, jakiego terminu używasz zamiast „ekranu”.


title: Dopuszczalne # linijek kodu dla projektów, które mają być przedstawione ankieterowi?

text: Niedługo kończę szkołę i myślałem. Mam kilka naprawdę małych projektów/skryptów (~100-200 LOC), które zrobiłem w wolnym czasie i mam je na Github. Zastanawiałem się, czy są na tyle „godne”, by zaprezentować je przyszłym pracodawcom? A może powinienem uwzględnić tylko te, które są duże (~1000 LOC)?