title: dobry zamiennik do komentowania kodu?

text: Niepokoi mnie widok zakomentowanego kodu i często wydaje się, że programiści nie są biegli w zaawansowanych funkcjach kontroli kodu źródłowego, ale z drugiej strony kontrola kodu źródłowego nie rozwiązuje problemu, który ma na celu komentowanie dla. Od czasu do czasu widziałem przerzucanie wymagań w taki sposób, że kod, który zostałby nagle usunięty, jest znowu potrzebny. Jeśli kod jest naprawdę usunięty, wydaje się, że nie ma jasnej procedury lokalizowania dokładnego miejsca, w którym można znaleźć ten usunięty kod w kontroli źródła. Czy istnieje lepszy sposób na zaoszczędzenie pracy programistów, która może być ponownie potrzebna, poza wypróbowanym i prawdziwym „komentowaniem”?


title: Organizacje, które zachęcają dzieci do programowania

text: Odkąd mój syn zaczął chodzić do szkoły, zauważam bardzo poważny brak organizacji, które zachęcałyby dzieci do programowania lub przynajmniej dawały im znać, jak się angażować w programowanie. Czy znasz jakieś grupy, które pomagają dzieciom w tym obszarze? I nie mam na myśli narzędzi pomagających dzieciom w nauce, mam na myśli grupy, które pomogą zainteresować dzieci programowaniem. Oto kilka, które znam: * Dreamspark * Lego First Robotics * Imagine Cup A czy są takie, które pracują na poziomie szkoły podstawowej - liceum? Czy są jacyś inni rodzice, którzy zauważyli to samo, czy jest to lokalne w mojej okolicy? Edycja: Szukam również grup zachęcających dzieci, które nie mają programistów dla rodziców. Nie mam problemu z uczeniem własnego syna, bardziej martwię się o inne dzieci.


title: Odnalezienie równowagi między ważnym a interesującym

text: Czasami wybieram to, co uważam za interesujące, zamiast tego, co jest uważane za ważne. Taka postawa była pouczająca i pozwoliła mi tworzyć prace, z których jestem wyjątkowo dumna, ale także sprawiła, że nie dotrzymuję terminów i rozczarowuję ludzi. Czasami myślę, że robię to, ponieważ nie chcę _złamać_ mojej ciekawości. Obawiam się, że jeśli to zignoruję, to mogę stopniowo to stracić. Czy masz jakieś rady? * * * Meta: Jak mogę zrobić z tej społeczności wiki?


title: Czy Flash naprawdę jest lepszy od apletów Java?

text: Nadal jestem studentem, bez dużego doświadczenia w programowaniu. Nigdy nie napisałem niczego większego niż ~5k linii kodu. Napisałem kod zarówno we Flashu, jak iw Javie i po prostu nie mogę zrozumieć, dlaczego ludzie piszą aplikacje internetowe, takie jak odtwarzacze wideo (YouTube itp.) We Flashu, a nie jako aplety Java. Chciałbym więc poprosić was, programistów z praktycznym doświadczeniem, o kilka mądrych słów na ten temat. Nie widzę żadnej rzeczywistej przewagi Flasha nad apletami, podczas gdy z drugiej strony, przynajmniej dla mnie, wydaje się, że jest zapluskwiony jak diabli. Rozumiem, że szybciej jest zrobić coś we Flashu i widzę, dlaczego byłoby to dobre dla szybkiego prototypowania, ale ogólnie, czy warto? Za każdym razem, gdy YouTube wpada w szał, przeklinam programistów za napisanie tego we Flashu. A jeśli używasz Linuksa z Operą, dzieje się tak cały czas. Więc, w zasadzie, dlaczego ludzie używają flasha, a nie apletów?


Czytałem kilka rzeczy o korzystaniu z bibliotek i innych rzeczy, ale wszystkie mówią o nieużywaniu ich do celów komercyjnych. Czy komercja oznacza, że zarabiasz pieniądze, umieszczając reklamę, która Cię wspiera, czy jest to coś innego, jak dla dużej firmy?


title: Czy hierarchiczny backlog produktowy to dobry pomysł w TFS 2012-2013?

text: Chciałbym potwierdzić, że się nie mylę. Mój projekt zespołowy używa Visual Studio Scrum 2.x. Ponieważ każdy obszar / produkt ma wiele wymagań (bezpieczeństwo, interfejs użytkownika, usługi HTTP/REST...), próbowałem zarządzać tym tworząc "rodzice zaległości", które są "otwarte na zawsze" i zawierają ogólne wymagania. Te zaległości nadrzędne mają inne zaległości „otwarte na zawsze” i/lub zaległości sprintu. Na przykład: * Usługi HTTP/REST (na zawsze) * Profile API (na zawsze) * Profil POST (na zawsze) * Potrzebujemy podstawowego interfejsu API profili HTTP/REST, aby zarejestrować nowe profile użytkowników (backlog sprintu) ** Czy to właściwa droga organizacji backlogu produktu?** _Uwaga: wiem, że istnieją różne punkty widzenia i to byłoby dobre dla niektórych, a złe dla innych. Szukam walidacji o tym, czy jest to możliwa dobra praktyka na TFS z Visual Studio Scrum._


title: Czy istnieje logiczny związek między różnymi typami diagramów UML?

text: Próbuję dowiedzieć się, czy istnieje jakaś relacja między różnymi typami diagramów UML, na przykład po opracowaniu przypadku użycia, czy to jest zdarzenie dla każdego z nich w diagramie sekwencji, czy jest jakaś dokładna relacja między przypadkiem użycia a diagramami klas. Swoją drogą skupiam się głównie na poniższych diagramach: * Przypadek użycia * diagram klas * aktywność * sekwencja * zdarzenie jeśli uważasz, że potrzebuję dodatkowego diagramu, aby można go było użyć do połączenia powyższych diagramów ze sobą, proszę też o tym wspomnij. Z góry dziękuję


title: HG: rozwidlenie projektu aplikacji internetowej, aby oddzielić kod API od kodu aplikacji

text: Mam aplikację internetową, która jest aktywnie rozwijana od około 8 miesięcy i staje się jasne, że projekt wymaga zachowania separacji między kodem aplikacji a naszym interfejsem API JavaScript OO. To, co chciałbym zrobić, to mieć inne repozytorium z następującą ogólną strukturą kodu API js. nazwa_repo | +---buduj | +---build_tools | +---doc | +---src | +---js Oczywiście ta struktura różni się od oryginalnej struktury katalogów aplikacji internetowych. Jeśli wprowadzę zmiany w tym nowym repozytorium, jak mogę pobrać te zmiany do repozytorium aplikacji sieci Web bez przypadkowego usuwania plików lub modyfikowania struktury katalogów repozytorium aplikacji sieci Web?


title: Czynniki, które należy wziąć pod uwagę przy zarządzaniu ryzykiem oprogramowania

text: Jakie są czynniki ryzyka, które musimy wziąć pod uwagę podczas planowania projektu oprogramowania.


title: Czy niektóre języki interpretowane ładują skrypty tylko raz?

text: Zaletą skompilowanej aplikacji było to, że wszystkie biblioteki i klasy są ładowane jeden raz i czekają na dane wejściowe, prawda? Pochodzę z tła pracującego z PHP, a użyte zasoby/klasy są ładowane przy każdym żądaniu strony, co powoduje złe obciążenie pamięci serwera. Na przykład, biorąc pod uwagę, że jądro PHP wykorzystuje 1 MB pamięci, a wordpress ładuje kolejne 7 MB obiektów - kończy się to ładowaniem 8 MB _każde żądanie_. Założyłem, że jest to ten sam proces dla innych języków skryptowych, takich jak Python i Ruby. Jednak zacząłem patrzeć na node.js (ponieważ JavaScript jest tak piękny) i wydaje się, że jest on ładowany _raz_ (i jakakolwiek potrzebna pamięć jest pobierana tylko raz), a następnie siedzi i czeka na żądania, dzieląc się klasami, które załadował wśród dowolnych nowe wątki (czy to właściwy termin?), aby nie musieli ich ponownie ładować. Tak więc PHP zajęłoby "8 MB procesu * 10 żądań = 80 MB" dla dziesięciu jednoczesnych żądań do wordpress. Brzmi to tak, jakby node.js zajęło „proces 8 MB + 10 żądań = ~14 MB”. **Czy to naprawdę prawda? Czy istnieją inne języki skryptowe, które to robią?**


title: IIS dla początkujących

text: Mam problem ze zrozumieniem niektórych funkcji w IIS. Na przykład chcę wiedzieć, kiedy używam opcji „Dodaj aplikację”, „Dodaj katalog wirtualny” lub „Dodaj witrynę”. Obecnie mam około 10 stron internetowych, które znajdują się w moim katalogu wwwroot/websitename i automatycznie pojawiają się w witrynach w IIS. Jakie jest najlepsze podejście?


title: Po co uczyć się git, skoro istnieją aplikacje GUI dla GitHub?

text: Biorąc pod uwagę, że GitHub udostępnia aplikacje GUI zarówno dla komputerów Mac, jak i Windows, jakie są korzyści z nauki korzystania z git z wiersza poleceń? Obecnie używam ich aplikacji dla komputerów Mac do aktualizacji moich repozytoriów i jak dotąd wydaje się, że pokrywa ona moje potrzeby. Czego mogę stracić?


title: Jakie są kluczowe terminy r-wartość i l-wartość?

text: W wielu przypadkach mój kompilator wyświetla błędy, takie jak Lvalue lub Rvalue Required. Czym są **Lwartości** i **Rwartości** w **C lub dowolnym języku programowania**? Czy stała wskaźnika jest wartością r?


title: Wysłanie dokładnie jednego powiadomienia n sekund po zdarzeniu

text: Mam system, który sprawdza stan wielu systemów, na przykład czy http działa, czy system odpowiada na ping, tego typu rzeczy. Wszystkie te systemy sprawdzam co 5 minut. Jeśli coś jest zepsute, wysyłam e-mail z powiadomieniem. Jeśli problem zostanie rozwiązany, wysyłam również powiadomienie „wszystko jasne, problem rozwiązany”. Chcę wysłać powiadomienie 30 minut po wykryciu problemu, a problem nadal trwa, a następnie przy awarii +1h, +2h, +4h itd. Nie chcę zalewać użytkownika wiadomościami za każdym razem, gdy zdarzenie " problem nadal trwa” co 5 minut. Mógłbym gdzieś przechowywać „ostatnie powiadomienie wysłane o” i po prostu z nim pracować, ale wolałbym po prostu rozwiązać to w samym kodzie. Czy brakuje mi czegoś bardzo oczywistego, czy jest to jedyny możliwy sposób?


title: Na jakich warunkach powinienem zmienić bazę, a nie scalić?

text: Oto, z grubsza, nasza struktura pracy przy użyciu git, do tworzenia stron internetowych. Mamy gałąź master, a poszczególne lub grupy pracy są wykonywane osobno w gałęziach, a następnie scalane. 1. Przychodzi bilet (lub kilka). . 3. Naprawiamy bilety w kodzie, zatwierdzamy pracę i wpychamy do źródła. 4. Gdy jesteśmy zadowoleni z naszej pracy, ściągamy oddział do repozytorium na naszym serwerze UAT / Staging i sprawdzamy go, aby klient mógł go przejrzeć. 5. Klient zatwierdza pracę. 6. Wracamy do naszego lokalnego repozytorium programistycznego, pobieramy mastera, scalamy gałąź i przesuwamy do źródła. 7. Następnie tworzymy tag z wzorca. 8. Następnie wchodzimy na serwer live, ściągamy master i przenosimy/aktualizujemy tag do nowego. Jest nas 7, pracujemy nad około 15 projektami w ciągu roku. Ogólnie rzecz biorąc, do pracy nad projektem w dowolnym momencie wystarczy jedna osoba, ale czasami dwie osoby mogą pracować w osobnych gałęziach, aby w tym samym czasie połączyć się z gałęzią główną. Generalnie uważamy, że łączenie jest najlepsze, ponieważ, jak rozumiem, zachowuje historię rozwoju z uwzględnieniem tego, co i kiedy zostało połączone. Podczas gdy rebase wydaje się całkowicie to niszczyć i linearyzować główny dziennik. Dlaczego, jeśli to założenie jest poprawne, ktoś chciałby użyć rebase? Czy jest to tylko dla bardzo zajętych projektów, które są stale rozgałęzione i łączone i musi istnieć gwarancja, że scalanie się powiedzie - aby programiści mogli przetestować dodawanie wzorca do swojej pracy i rozwiązywać konflikty przed ponownym połączeniem?


title: Przepisywanie oprogramowania przy użyciu metodologii Agile

text: Załóżmy, że musisz przepisać całą aplikację przy użyciu metodologii Agile, jak byś to zrobił? Myślę, że można by napisać wiele historyjek użytkownika opartych na zachowaniu obecnego systemu. A następnie zaimplementuj je w małych iteracjach. Ale to nie znaczy, że mamy wymagania **UP FRONT**?? A kiedy zaczniesz wypuszczać? Agile mówi, że powinniśmy wypuszczać wcześnie i często, ale nie ma sensu wypuszczać przed ukończeniem kompletnego przepisywania.


title: co otrzymuje wezwanie ajax?

text: Tworzę witrynę, która powinna (a) pobierać informacje od użytkownika w postaci plików i formularzy, (b) przenosić te dane na serwer w celu uruchomienia w aplikacji C oraz (c) pobierać wynik z powrotem i pokaż to użytkownikowi. Kazano mi szukać AJAX do komunikacji z serwerem. BTW, używam szyn. Próbuję zrozumieć, jak działa AJAX. Z tego, co do tej pory rozumiem, z railami dość łatwo nawiązać połączenie. Nie mogę się domyślić, co czeka na ten telefon? jaki proces połączenia? Jeśli dobrze rozumiem, dzięki railsom mógłbym utworzyć funkcję w ruby i sprawić, by była wywoływana przez AJAX, co oznacza - a przynajmniej tak rozumiem - że zostanie wykonana na serwerze. Gdybym używał PHP, czy musiałbym utworzyć serwer http, aby czekał na wywołania AJAX? Po prostu nie znajduję informacji o tym, co czeka na połączenie, a te informacje są przetwarzane. Wszelkie linki, komentarze lub książki są mile widziane!


title: Tworzenie podklasy bardziej specyficznej dla typu za pomocą akcesorów

text: Mam super klasę: `TriggerManager` z podklasą `TimedTriggerManager`. UWAGA: Pracuję w javie `TimedTriggerManager` zajmuje się tylko `TimedTrigger` s, podklasą `Trigger`. `TriggerManager` odwołuje się do wszystkich obiektów `Trigger`. Aby zmodyfikować podklasę (`TimedTriggerManager`), aby akceptowała tylko `TimedTriggers` do swoich akcesorów i mutatorów (gettery i settery) mam następujące pytania: 1) Mam w `TriggerManager` następujące `public void addTrigger(Trigger t)` . W `TimedTriggerManager` powinienem po prostu nadpisać metodę, aby zgłosić błąd, jeśli argument (`t`) nie jest `TimedTrigger`. Jeśli tak, jaki błąd powinienem zgłosić? Jeśli nie, co mam zrobić? 2) Czy powinienem dodać inną metodę `getTimedTrigger`, aby działała równolegle z `getTrigger` klasy kolacji, aby nie musiałem ciągle rzucać typów? (Ponieważ ten ostatni zwróciłby obiekt `Trigger`) 3) Czy jest jeszcze coś, o czym zapominam lub jakaś powszechna praktyka, której nie robię?


title: Wzór do użycia dla różnych etapów w oprogramowaniu

text: Tworzę oprogramowanie dla laboratorium do testowania niektórych urządzeń. Aby przetestować każde urządzenie, należy wykonać wiele podtestów, aby osiągnąć ostateczny wynik. Aby wykonać pełny test, oprogramowanie musi przejść etap 1, następnie automatycznie przechodzi do etapu 2, następnie etapu 3 i tak dalej, aż do zakończenia całego testu. w międzyczasie użytkownik może wybrać, aby wykonać tylko Stage3 lub Stage2 lub dowolne inne Stage (które wybiera w czasie wykonywania). to jest to, co zrobiłem do tej pory: ![tutaj podaj opis obrazu](http://i.stack.imgur.com/UTpiF.png) public class IronTestWorkFlow:ITestWorkFlow { private tylko do odczytu List<ITestStages> _testStageses; public IronTestWorkFlow(List<ITestStages> testStageses ) { if (testStageses == null) { throw new ArgumentNullException("testStageses"); } _testStages = testStages; } } Używam kontenera DI. Ale nie wiem, jak zmienić listę etapów w `ITestWorkFlow` w czasie wykonywania. **Pytania:** 1- Czy dobrze to projektuję? 2- Jeśli tak, jakiego wzorca mam przestrzegać, aby przestrzegać zasad i zmieniać etapy w czasie wykonywania? i jak mogę to zrobić?


title: Konwencja wielkich liter dla pól chronionych C#

text: Jakie są konwencje dotyczące wielkich liter dla chronionych nazw pól w języku C#? Czy jest to _myVar (jak pole prywatne) czy MyVar (jak właściwości)?


title: Próbuję znaleźć najlepszy sposób na zrozumienie, jak buforować obiekty domeny

text: Zawsze robiłem to źle, jestem pewien, że wielu innych też to robi, trzymaj referencję za pomocą mapy i pisz do DB itp. Muszę to zrobić dobrze, a ja po prostu nie wiem, jak iść o tym. Wiem, jak chcę, aby moje obiekty były buforowane, ale nie jestem pewien, jak to osiągnąć. Co komplikuje to, że muszę to zrobić dla starszego systemu, w którym DB może się zmienić bez powiadomienia mojej aplikacji. Tak więc w kontekście aplikacji internetowej, powiedzmy, że mam `WidgetService`, która ma kilka metod: Widget getWidget(); Kolekcja<Widget> getAllWidgets(); Collection<Widget> getWidgetsByCategory(String categoryCode); Collection<Widget> getWidgetsByContainer(Integer parentContainer); Collection<Widget> getWidgetsByStatus(Status ciągu); Biorąc to pod uwagę, mógłbym zdecydować się na buforowanie według sygnatury metody, tj. `getWidgetsByCategory("AA")` miałby pojedynczy wpis w pamięci podręcznej lub mógłbym buforować widżety pojedynczo, co moim zdaniem byłoby trudne; LUB, wywołanie dowolnej metody najpierw buforuje WSZYSTKIE widżety z wywołaniem `getAllWidgets()`, ale `getAllWidgets()` utworzy bufory, które pasują do wszystkich kluczy dla wywołań innych metod. Weźmy na przykład następujący nieprzetestowany kod teoretyczny. Collection<Widget> getAllWidgets() { Entity entity = cache.get("ALL_WIDGETS"); Kolekcja<Widget> res; if (entity == null) { res = loadCache(); } else { res = (Kolekcja<Widget>) entity.getValue(); } return res } Collection<Widget> loadCache() { // Pobierz widżety z bazowej bazy danych Kolekcja<Widget> res = db.getAllWidgets(); cache.put("ALL_WIDGETS", res); Map<String, List<Widget>> byCat = new HashMap<>(); for (Widget w : res) { // cache przez różne typy wywołań metod, tj. według kategorii if (!byCat.containsKey(widget.getCategory()) { byCat.put(widget.getCategory(), new ArrayList<Widget> } byCat.get(widget.getCatgory(), widget); } cacheCategories(byCat); return res; } Collection<Widget> getWidgetsByCategory(String categoryCode) { CategoryCacheKey key = new CategoryCacheKey(categoryCode);Entity ent = cache. get(key); if (entity == null) { loadCache(); } ent = cache.get(key); return ent == null ? Collections.emptyList() : (Collection<Widget>)ent.getValue() ; } _UWAGA_ : Nie pracowałem z menedżerem pamięci podręcznej, powyższy kod ilustruje `cache` jako jakiś obiekt, który może przechowywać pamięci podręczne według par klucz/wartość, chociaż nie jest to modelowane na żadnej konkretnej implementacji.Korzystając z tego mam tę zaletę, że jestem w stanie buforować wszystkie obiekty w różne sposoby będą wywoływane tylko z pojedynczymi obiektami na stercie, podczas gdy gdybym miał buforować wywołanie wywołania metody przez powiedzmy Spring To (wierzę) buforowałoby wiele kopii obiektów. Naprawdę chciałbym spróbować zrozumieć najlepsze sposoby buforowania obiektów domeny, zanim pójdę złą ścieżką i utrudnię sobie później. Przeczytałem dokumentację na stronie internetowej Ehcache i znalazłem różne interesujące artykuły, ale nic nie daje dobrej solidnej techniki. Ponieważ pracuję z systemem ERP, niektóre wywołania DB są bardzo skomplikowane, nie dlatego, że DB jest powolny, ale reprezentacja biznesowa obiektów domeny sprawia, że jest to bardzo niezgrabne, w połączeniu z faktem, że w rzeczywistości istnieje 11 różnych baz danych, w których informacje można stwierdzić, że ta aplikacja konsoliduje się w jednym widoku, co sprawia, że buforowanie jest dość ważne.


title: Czy Clojure, Scala i inne są ograniczone przez JVM vs CLR?

text: Realizatorzy Javy wydają się powoli wdrażać ulepszenia języka, na przykład porównując C# z pełnymi domknięciami, drzewami wyrażeń, LINQ itp. z Javą, a nawet odepchnięcie niektórych rzeczy do Javy 8 nadal pozostawi je w tyle za obecną implementacją C#. Jednak ponieważ nie zamierzam używać ani Javy, ani C#, ta konkretna wojna językowa nie jest zbyt interesująca, bardziej interesuje mnie JVM vs CLR. Czy to opóźnienie ma zastosowanie również do JVM? Czy Scala, Clojure itp. będą w stanie nadal wprowadzać innowacje lub uzyskiwać optymalną wydajność w obliczu wolno postępującej podstawowej maszyny wirtualnej, takiej jak JVM? Czy Clojure/Scala są obecnie ograniczone ograniczeniami JVM?


title: Jaka jest różnica między SocketAddress a ServerSocket w Javie?

text: Nauka tworzenia małego wbudowanego serwera HTTP do przypisania do klasy oraz podane przykłady użycia `com.sun.net.httpserver.HttpServer` używają `InetSocketAddress`, który rozszerza `SocketAddress` jako łącze między klientem a serwerem . Jednak wszystkie moje poprzednie zadania związane z programowaniem sieci wykorzystywały `Socket` i `ServerSocket` do tworzenia surowych połączeń między serwerem a klientem w celu przesyłania niestandardowych protokołów tam iz powrotem. Oczywiście te dwie klasy różnią się od siebie, ponieważ nie mają wspólnego przodka poza `java.lang.Object`. Co jest z natury wyjątkowego w każdym z nich, co czyni je fundamentalnie różnymi?


title: Model danych do sprzedaży grup produktów jako jednego produktu

text: Załóżmy, że mam sklep internetowy z modelem danych podobnym do poniższego, który umożliwia „Sprzedaż” opisanie, w jaki sposób sprzedaje się pojedynczy „Produkt”. Ten podział umożliwia wielokrotną sprzedaż produktu na różne sposoby (inna cena lub oferowanie w innym momencie). Działa to świetnie, gdy wyprzedaż dotyczy jednego produktu. **Wyprzedaż** * product_id (wyprzedaż należy do produktu) * inne szczegóły oferty, takie jak cena, data ważności wyprzedaży, treści marketingowe itp **Produkt** * produkt ma wiele wyprzedaży * faktyczne dane o produkcie takie jak nazwa, zdjęcie, opis producenta, itp. * * * **Problem:** Jak ulepszyć ten model danych, aby sprzedaż obejmowała wiele produktów? Na przykład, aby utworzyć pakiet składający się z 1 produktu A i 1 produktu B. Więc jeśli klient chce ilość=3 tych pakietów, otrzyma w sumie 3 A i 3 B. Lub sprzedaż może dotyczyć wielokrotności jednego produktu. W tym przypadku sprzedaż dotyczyłaby 5 produktów C. Czyli jeśli klient chce ilość=3 tych pakietów, otrzyma 15 produktów C. * * * Najlepszym pomysłem, jaki mam do tej pory, jest dodanie nowej tabeli. Dzięki temu sprzedaż może odwoływać się do wielu przedmiotów do zamówienia, które opisują zawartość pakietu. **Zamówienia** * należy do produktu * należy do sprzedaży * ilość w paczce Ale refaktoryzacja na taką skalę to monumentalne zadanie. Liczba wystąpień `sale.product` w bazie kodu z różnych powodów jest ogromna. I każdy przypadek musi być poprawiony w kodzie i prawdopodobnie również w prezentacji. Więc zanim zbyt mocno zaangażujemy się w to podejście, zastanawiam się, czy jest iskierka nadziei, której jeszcze nie widziałem, czy moja przyszłość jest pełna bólu i niebezpieczeństw tej epickiej refaktoryzacji.


title: Czy CTRL+C działa na całym świecie?

text: Chciałbym wiedzieć, czy skrót klawiaturowy CTRL+C (kopiowanie) działa we wszystkich wersjach systemu Windows powyżej 1998 roku, we wszystkich systemach w wersji innej niż angielski i na wszystkich klawiaturach (angielskiej, niemieckiej, chińskiej...)?


title: Algorytm do defragmentacji problemów z cross-pipe w sieci w celu routingu sygnałów?

text: Mam sieć, przez którą odpowiadam za przekazywanie sygnałów. Możesz myśleć o sieci jako o ukierunkowanym grafie węzłów (sprzętu), ale każda krawędź jest tak naprawdę rurą zdolną do dopasowania określonej przepustowości, mogę kierować sygnały do dowolnego indeksu na tej rurze i może mieć wiele sygnałów o różnych „rozmiarach” w poprzek rury. Co jest warte, sygnały mają z góry określone rozmiary i nie zawsze będą prostą wielokrotnością dwójek. Wiem, jak łatwo zdefragmentować pojedynczą 'fajkę'. Jednak teoretycznie jest możliwe, że musiałbym przenosić sygnały w wielu rurach, aby stworzyć wystarczająco dużo miejsca na nowy sygnał. W trywialnym przykładzie mógłbym mieć dwie krawędzie od A do B z wystarczającą ilością miejsca, aby zmieścić sygnał o rozmiarze „4” i sygnał o rozmiarze „8”. Aby dopasować sygnał w poprzek, musiałbym przenieść niektóre sygnały z potoku 2 do 1, tak aby 1 był całkowicie uwolniony, żyjąc pełnymi szczelinami „8” dostępnymi dla mojego nowego sygnału do skierowania. **Jak wykryć i prawidłowo defragmentować tego rodzaju problemów z cross-pipe?** Oczywiście w prawdziwym świecie być może będę musiał kierować sygnały przez zupełnie inne urządzenia, być może sygnały obierają mniej bezpośrednie trasy, aby zwolnić wystarczająco dużo miejsca dla mojego nowego sygnału na dowolnej rurze. Krótko mówiąc, w całym systemie tych sieci chcę 1. znaleźć metodę uzyskania sygnału z wejścia do miejsca docelowego w zatłoczonym środowisku, w którym być może będę musiał przenieść wiele sygnałów, aby obrać inną ścieżkę do miejsca docelowego, aby uwolnić wystarczająco dużo miejsca na danej rurze 2. zastanów się, jak to zrobić przy minimalnej liczbie fizycznie przeniesionych sygnałów 3. zastosuj podejście, które minimalizuje potrzebę wykonywania powyższych kroków poprzez minimalizację fragmentacji tak bardzo, jak to możliwe. Jest to skomplikowana seria wymagań samych w sobie i nie szukam odpowiedzi, jak to wszystko zrobić, chociaż taka odpowiedź jest mile widziana.


title: Jak znaleźć najbardziej zoptymalizowany sposób pisania kodu?

text: W swojej karierze programistycznej pisałem Javę i PHP, Javascript i trochę Rubiego. Nie jestem specjalistą w dziedzinie CS, ale zająłem się tworzeniem stron internetowych z szerszego stopnia współpracowników Internet Professional, który koncentrował się na projektowaniu, doświadczeniu użytkownika i rozwoju. Zaczynałem jako Front-end Developer i szybko dostałem świetną pracę pracując nad złożonymi aplikacjami, które po opanowaniu świata front-endu, miałem okazję zostać Inżynierem Oprogramowania przy projektach, ponieważ rozumiałem system i potrafiłem dowiedzieć się, jak to zrobić. zaprojektuj go, aby robił to, co chcę. Oczywiście pracuję z większością innych, którzy mają stopnie CS i chociaż mogę być szybszy w wymyślaniu, jak sprawić, by aplikacja, nad którą pracujemy, robiła coś, zwykle rozumieją podstawowe pojęcia lepiej niż ja. Biorąc to pod uwagę, oczywiście są dokumenty językowe tam dla Javy i PHP, ale jakie są tam zasoby, które mówią o najlepszych praktykach pisania dobrego zoptymalizowanego kodu. Czytanie tych dokumentów nie jest wystarczająco dobre, aby móc pisać kod, a następnie pokazywać ludziom takim jak niektórzy z was i nie otrzymywać wielu „dlaczego tego nie zrobiłeś” lub „Nie mogę uwierzyć, że tego nie zrobił Istnieje wiele blogów, ale tu i ówdzie można znaleźć artykuł autorstwa osoby, która koncentruje się na wyjaśnianiu, jak napisać lepszy kod. A może się mylę, nawet nie wydaje mi się, że wyjaśniam to pytanie tak jasno. Moim głównym problemem jest to, że potrafię napisać kod, aby działał, myślę, że jest napisany dobrze, ale nie jestem do końca pewien. Poza tym, że kod działa po prostu, skąd wiesz, że napisałeś go w taki sposób, w jaki inni na niego patrzą, mówią sobie, że ten facet wie, co robi :). Jeśli ktoś ma teraz jakieś specyficzne zasoby językowe, wolałbym te PHP, ponieważ nad tym pracuję.


title: Techniki Zarządzania Projektami (wysoki poziom)

text: Nasz zespół programistów korzysta obecnie z kanban w naszych cyklach rozwoju i, biorąc pod uwagę stosunkowo krótkie doświadczenie kilku miesięcy, myślę, że idzie całkiem dobrze (oczywiście w porównaniu do kilku miesięcy temu, kiedy tak naprawdę nie mieliśmy metodologii). Nasz zespół jest jednak kierowany do pracy zdefiniowanej przez kierowników projektów (nie kierowników projektów oprogramowania, tylko ogólnych biznesów) i korzystają oni z metodologii PMBOK. Pytanie brzmi, w jaki sposób tradycyjna metodologia, taka jak PMBOK, Prince2 itp., pasuje do metodologii szczupłego tworzenia oprogramowania, takiej jak kanban lub scrum? Czy to tylko marnowanie czasu wszystkich, ponieważ wszystkie wymagania są skutecznie opracowywane na początku (choć nieuchronnie zmieniane po drodze)?


title: Zapisz zmiany bazy danych w warstwie usług lub kontrolerze mvc .net

text: Ostatnio używam warstwy usług, aby wyabstrahować wiele logiki biznesowej mojej aplikacji. Jednak pojawił się problem, w którym nie jestem pewien, jaka jest najlepsza praktyka w zakresie rzeczywistego utrzymywania wszelkich zmian, które mogę wprowadzić w moich modelach. 1) Czy najlepiej jest zaimplementować SaveChanges() w mojej warstwie usług, a więc wstrzyknąć IUnitOfWork do każdego, którego używam. public class BaseService : IService { private readonly IUnitOfWork _unitOfWork; protected BaseService(IUnitOfWork unitOfWork) { _unitOfWork = unitOfWork; } public void SaveChanges() { _dbContext.SaveChanges(); } } W związku z tym moje kontrolery byłyby wstrzykiwane tylko z moimi różnymi usługami i wywoływałbym na nich SaveChanges. 2) Czy najlepiej jest pozwolić, aby mój kontroler lub użytkownik usługi zawierał odwołanie IUnitOfWork i wywoływał bezpośrednio zapis. public class MyController { private readonly IUnitOfWork _unitOfWork; prywatny tylko do odczytu IMyService _myService; protected MyController( IUnitOfWork unitOfWork, IMyService myService) { _unitOfWork = unitOfWork; _mojaUsługa = mojaUsługa; } public void MyAction() { // robienie rzeczy z warstwą usług _unitOfWork.SaveChanges(); } } **Uwaga** : Użyłbym frameworka DI, takiego jak Autofac, Ninject, Unity itp. do zarządzania tworzeniem UnitOfWork przez okres istnienia InstancePerHttpRequest. 3) Czy mogę wykorzystać filtry akcji i zachować zmiany w ActionExecuted. public class UnitOfWorkActionAttribute: ActionFilterAttribute { public IUnitOfWork UnitOfWork { get; ustawić; } nadpisanie publiczne void OnActionExecuted(ActionExecutedContext filterContext) { UnitOfWork.SaveChangesAsync().WaitAndUnwrapException(); } }


title: Mierzysz wydajność symulatora sieci?

text: Napisałem program w Pythonie do testowania nowego algorytmu routingu sieciowego, który wykorzystuje podejście Content Centric Network Approach do obsługi żądań (CCN), w którym router CCN przechowuje 3 struktury danych: * PIT lub Pending Interest Table, która przechowuje żądania, dla których router nie otrzymał jeszcze odpowiedzi. * FIB lub Forwarding Interest Base, która mapuje żądania do następnego routera, do którego żądanie może zostać przekazane. * Magazyn zawartości, do którego router może buforować zawartość z poprzednich żądań. Symulator jest prosty: \- Jest zgodny z projektem opartym na zdarzeniach, w którym „pakiety atrapy” są wysyłane z obiektu serwera do innych obiektów serwera zawierających dane o żądanej treści i miejscu docelowym, w którym znajduje się obiekt treści. **W szczególności** , jak mogę zaprojektować symulator lub testy, aby uzyskać widok z lotu ptaka na to, jak mój nowy algorytm pasuje do standardowego routingu IP? Mam przeczucie, że będę musiał przetestować prędkość, co moim zdaniem można zrobić, mierząc czas podróży w obie strony na żądanie. Ale nie wiem, jak przetestowałbym inne aspekty tego algorytmu. Mam niewielkie lub żadne doświadczenie w networkingu, więc doceniam każdą radę lub wskazówki.


title: API zapewniające funkcję do uruchomienia w wątku a wątek, który uruchamia tę funkcję

text: Piszę bibliotekę Pythona, która udostępnia pewien interfejs nasłuchiwania zdarzeń. Użytkownik może rejestrować wywołania zwrotne do obsługi różnych typów zdarzeń. Istnieje również funkcja, która obsługuje rzeczywiste zdarzenia. Ta funkcja robi coś takiego: def get_event(): while(1): event = wait_for_event() # blokowanie wywołania process_event(event) Ta funkcja ma być uruchamiana we własnym wątku. Tak naprawdę sposobem na użycie tego jest def start_listening(): thread = threading.Thread(target=get_event) thread.start() Dla uproszczenia ignoruję mechanizmy blokujące i tym podobne. W module API mogę udostępnić `get_event` lub `start_listening`. Jakie są plusy i minusy robienia jednego z drugim? Czy jest na to „pytoniczny” sposób?


title: Czy źle jest używać tych samych nazw klas lub idiomów, co w interfejsie API innej firmy, którego używasz?

text: FlashPunk jest graficznym interfejsem API innej firmy do tworzenia prostych gier w AS3 i przyjmuje to, co faktycznie jest sprite'ami lub obiektami wyświetlanymi, i określa je jako "Entities". `Entity` to rzeczywista nazwa klasy i jest to główna klasa używana do animowania czegoś, na przykład postaci poruszającej się po ekranie. W tej chwili istnieje pewna konwencja, w której mówisz o takich rzeczach jak bariery, wrogowie, postacie itp. jako „byty”. Biorąc to pod uwagę, jeśli używasz FlashPunk do grafiki, czy źle jest tworzyć klasę bazową do reprezentowania takich rzeczy i nazywać ją również „Entity”? (W szczególności, czy to narusza powszechnie przyjętą konwencję kodowania?) Oczywiście byłoby to w innym pakiecie, a większość ludzi prawdopodobnie oddzieliłaby grafikę od rzeczywistego stanu gry, więc nie ma tam zbyt dużego nakładania się. Po prostu używa tego samego tytułu. A co z takimi scenariuszami ogólnie z programowaniem? _Czy istnieje konkretna konwencja?_


title: Wdróż RPC przez SIP

text: Spójrz na następujący przypadek użycia. Mam aplikację kliencką (Java), która chce uzyskać/ustawić stan innej, zdalnej aplikacji (C). Komunikacja między nimi odbywa się przez SIP, który jest uruchamiany w innym wątku. Interfejs SIP może wykonywać następujące czynności: sendMessage onRequest Mam dwa pomysły na architekturę: **RPC (JSON-RPC)** Zdefiniuj klasę, która wykonuje marshalling/unmarshalling dla JSONRPCRequests i JSONRPCResponse (http://software.dzhuvinov. com/json-rpc-2.0-base.html) Zdefiniuj klasę Invoker, która ma coś w rodzaju metody **call(server, name, arguments)**. W klasie Invoker nazwa i argumenty są umieszczane w JSONRPCRequest i wysyłane przez warstwę SIP sendMessage Teraz pojawia się mój problem. Jak właściwie dostać się z powrotem do rozmówcy? Przepływ sterowania jest teraz: Wywoływana jest metoda onRequest, ale teraz wiem, czy jest to odpowiedź na moje poprzednie wywołanie. To, co robię, to umieszczanie wszystkich odpowiedzi docierających do mojego serwera do Mapy i po prostu odpytywanie tej listy w Invoker. Może to być szorstki szkic; **Invoker (dostarcza API klientowi)** class Invoker { private Channel channel; publiczny wywołujący(kanał kanału) { this.channel = kanał; } public Object call (String server, String name, Object .. args) { JSONRPCRequest req = ...; channel.sendMessage(serwer, żądanie.doString()); while( ! channel.hasResponse(req.id()) { Thread.sleep(42); } return channel.getResponse(req.id()).result(); } } **Kanał (interfejs do komunikatora):* * class Channel { private Map<Object, JSONRPCResponse> responses = new //;private Sip sip = new Sip() { public void onRequest(String msg) { JSONRPCResponse response = JSONRPCResponse.parse(msg); responses.put(msg. id(), response); } }; public void sendMessage(String server, String message) { sip.sendMessage(); } public boolean hasResponse onRequest(Object id) { responses.hasKey(id); } public JSONRPCResponse getResponse(Object id) { responses.get(id); responses.delete(id);} } **SIP (sam komunikator):** abstract class Sip { public void sendMessage(String msg) { // SIP magic } public abstract void onRequest(String msg); } Czy jest na to lepszy sposób? Moje największe problemy/zapachy kodu to: * blokowanie w Invokerze * protokół jest w Invokerze, może chcę przełączyć marshalling na coś innego * mapa jako środek do uzyskania poprawnej odpowiedzi na żądanie * metoda abstrakcyjna SIP wygląda dziwnie * Brak obsługi błędów * Brak limitu czasu **Przekazywanie wiadomości** Czy istnieje prosty sposób na pozbycie się RPC i zaimplementowanie czegoś takiego jak RPC z samym przekazywaniem wiadomości? Wszelkie wskazówki dotyczące wzoru są mile widziane. Nie potrzebuję samego kodu, jestem całkowicie w porządku z samą architekturą. Próbowałem wygooglować implementacje przekazujące komunikaty i jak faktycznie zmieniają stan za ich pomocą, ale nie znalazłem niczego użytecznego. Jak zaimplementować timeout/obsługę błędów? Każda dobra książka/literatura na ten temat jest również mile widziana, ponieważ nigdy nie programowałem takich dystrybuowanych rzeczy. Wszelkie inne pomysły dotyczące tego, który protokół użyć wewnątrz SIP do zmiany stanu są również mile widziane, ponieważ RPC było moją pierwszą myślą i nie znalazłem niczego innego przydatnego. Kod się nie skompiluje, chyba tylko po to, żeby zwizualizować mój pomysł.


title: JavaScript... co do testów jednostkowych

text: Chciałbym poznać opinię innych osób na temat tego, co testować jednostkowo w JavaScript. Myślałem o tym i eksperymentowałem i pozwoliłem sobie zaprezentować to, co wydaje mi się słuszne. Przede wszystkim, aby móc testować jednostkowo swój kod produkcyjny, musisz podzielić kod produktu na trzy warstwy: (1) DOM/jQuery, (2) Logic i (3) AJAX. Patrz załączony obraz. ![tutaj podaj opis obrazu](http://i.stack.imgur.com/XkqwX.png) Warstwa logiki znajduje się między warstwą DOM/jQuery a warstwą AJAX, czyli warstwa DOM/jQuery nie jest powiązana do warstwy AJAX. Tak więc moim zdaniem jedyną warstwą, która powinna być testowana jednostkowo, jest Logic. Pisanie testów jednostkowych powinno być łatwe, inaczej programiści ich nie napiszą. Jaki jest pożytek z pisania testów jednostkowych dla warstwy DOM/jQuery - ok, dodałeś element li do elementu ul, dlaczego mam to potwierdzać, nie powinno tam być instrukcji if. Jeśli chodzi o warstwę AJAX, co można potwierdzić... użyty adres URL to „blah”, wiem, że był to „blah”. Bez względu na to, jakie dane zostały uzyskane w warstwie AJAX, należy je przekazać warstwie logicznej. Teraz warstwa logiki to inna historia, na przykład w teście jednostkowym można podać dane, które rzekomo pochodzą z wywołania AJAX, i użyć pozorowanej warstwy DOM/jQuery, aby sprawdzić, czy dane zostały wyświetlone poprawnie. Powiedz mi co myślisz.


title: Gdzie powinny być umieszczone biblioteki, w oknach?

text: Właśnie przeniosłem się z Linuksa na Windows i muszę korzystać z biblioteki Zend Framework. Gdzie powinna być umieszczona biblioteka? * Bezpośrednio na dysku C * Utwórz folder lib, taki jak C:/lib/ * Utwórz folder lib w moim folderze użytkownika Zastanawiam się, czy istnieje klasyczny folder, w którym znajdują się tego rodzaju biblioteki. **Aktualizacja** :Pytam o lokalizację z własnego punktu widzenia. Biblioteka Zend Framework to framework PHP.


Jaka jest różnica między MariaDB a MySQL? Nie znam obu. W większości jestem przede wszystkim front-end developerem. Czy są do siebie podobne składniowo? Czym różnią się te dwa języki zapytań? Wikipedia wspomina tylko o różnicy między licencjonowaniem: MariaDB to stworzona przez społeczność gałąź bazy danych MySQL, której bodźcem jest utrzymywanie przez społeczność jej wolnego statusu na licencji GPL, w przeciwieństwie do jakiejkolwiek niepewności co do statusu licencji MySQL pod jej obecnym właścicielem przez > Wyrocznia.


title: Otwórz pozyskiwanie wewnętrznego projektu, który zawiera poufne informacje w starych wersjach.

text: > **Possible Duplicate:** > Jak otworzyć kod źródłowy projektu, którego repozytorium git ma w historii media chronione prawem autorskim >? Nasza firma spędziła rok pracując nad wewnętrzną aplikacją internetową i zdecydowała się na open source'owy projekt i hostowanie na githubie. Aplikacja była pierwotnie wersjonowana z Bazaarem i zamierzamy zachować historię zmian podczas konwertowania jej do git. W historii zatwierdzenia znajdują się pewne poufne informacje, takie jak informacje z wewnętrznej bazy danych. **Pytanie:** czy istnieje sposób na zachowanie historii zatwierdzeń podczas usuwania lub ukrywania wszelkich śladów poufnych informacji? Głównym powodem jest to, że mieliśmy pracowników, którzy pracowali nad projektem, którzy przenieśli się do ~~wyżej płatnych~~ innych miejsc pracy i chcemy zachować uznanie dla ich ciężkiej pracy.


title: Najlepsze praktyki dotyczące organizowania kodu integracyjnego stron trzecich w ruby

text: Mam aplikację do obsługi kolei. Piszę kod integrujący go z usługą innej firmy "Foo Bar". Integracja wpływa na wiele części systemu – modele, kontrolery i opakowanie API. Do tej pory wprowadzałem elementy integracji do modułów każdego modelu i kontrolera. Tak więc wewnątrz **app/models/user/foo_bar.rb** znajduje się `User::FooBar`, który następnie dołączam do mojego modelu użytkownika. Mam wrapper API wewnątrz **lib/foo_bar_api.rb**. Przyszło mi dzisiaj do głowy, że być może powinienem mieć cały mój kod integracyjny w **lib**. Zatem **lib/foo_bar/user.rb** zawierałby `FooBar::User`, który następnie dołączyłem do mojego modelu użytkownika. Czy jest jakiś szczególnie standardowy sposób robienia tego, czy jest to 6 z jednego, pół tuzina innego? (ps, to jest moje pierwsze pytanie z programers.stackexchange.com -- pasuje tutaj, prawda?)


title: Podstawowe porady dotyczące relacji z bazą danych?

text: Trudno mi zebrać w jednym miejscu różne rodzaje relacji używanych do różnych rzeczy i chciałbym dowiedzieć się, które mam poprawne i niepoprawne oraz właściwe „techniczne” terminy dla różnych rodzajów relacji. Przykład: W bazie danych mamy: Jeden do jednego Jeden do wielu Wiele do wielu Wierzę (chociaż mogę się mylić z tym pytaniem), że te typy relacji są zbiorczo określane jako relacje „wielości”. Czy to prawda, a jeśli tak, czy istnieją inne nazwy. W programowaniu mamy do czynienia z: Ihneritance Encapulslation Polymorphism Uważam (i tutaj mogę się bardzo mylić), że są to różne typy relacji „złożonych”. Jeśli wszystkie są tym samym rodzajem związku złożonego, to czy istnieją dla niego inne nazwy. Jeśli są różne, jak się nazywają. Chciałbym również wiedzieć, czy istnieją inne typy relacji w ogólnym świecie baz danych / programowania, które byłyby używane do pewnego stopnia bez wchodzenia w zapomnienie, jak jakiś rodzaj nieużywanej relacji science-fiction „molekularne mumbo jumbo bumbo”. Po prostu trzymanie się tego, co byłoby ogólnie przydatne w prawdziwym świecie. Myślę, że dobrze rozumiem różne typy relacji, to bardziej terminy używane do ich opisania, i wymyślam krótki opis 2 lub 3 linii, który naprawdę to podsumowuje (zakładając, że ktoś już ma uczciwe zrozumienie). Właściwa i przejrzysta znajomość terminów technicznych pomoże mi, jeśli będę musiał doradzić innym, czego szukać gdzie indziej. Czy ktoś może zaproponować mi sugestie bez zbytniego wchodzenia w kwestie techniczne. Z góry dziękuję.


title: Dlaczego (nie) segmentacja?

text: Studiuję systemy operacyjne i architekturę x86, a kiedy czytałem o segmentacji i stronicowaniu, naturalnie byłem ciekawy, jak nowoczesne systemy operacyjne radzą sobie z zarządzaniem pamięcią. Z tego, co znalazłem, Linux i większość innych systemów operacyjnych zasadniczo unika segmentacji na rzecz stronicowania. Kilka z powodów, które znalazłem, to prostota i przenośność. Jakie są praktyczne zastosowania segmentacji (x86 lub inne) i czy kiedykolwiek zobaczymy, jak będą go używać solidne systemy operacyjne, czy też będą nadal faworyzować system oparty na stronicowaniu. Teraz wiem, że jest to obciążone pytanie, ale jestem ciekawy, jak segmentacja byłaby obsługiwana w nowo opracowanych systemach operacyjnych. Czy faworyzowanie stronicowania ma aż tyle sensu, że nikt nie będzie rozważał bardziej „segmentowego” podejścia? Jeśli tak, dlaczego? * * * A kiedy mówię o segmentacji 'wystrzegaj się', sugeruję, że Linux używa jej tylko tak dalece, jak to konieczne. Tylko 4 segmenty dla segmentów kodu/danych użytkownika i jądra. Czytając dokumentację Intela, odniosłem wrażenie, że segmentacja została zaprojektowana z myślą o bardziej solidnych rozwiązaniach. Z drugiej strony wielokrotnie powtarzano mi, jak bardzo skomplikowane może być x86. * * * Znalazłem tę interesującą anegdotę po tym, jak zostałem powiązany z oryginalnym „ogłoszeniem” Torvalda dla Linuksa. Powiedział to kilka postów później: > Po prostu powiedziałbym, że portowanie jest niemożliwe. Jest głównie w C, ale > większość ludzi nie nazwałaby tego, co napisałem C. Używa on każdej możliwej > funkcji 386, jaką mogłem znaleźć, ponieważ był to również projekt, który miał mnie nauczyć o 386\. Jak już wspomniano, używa MMU zarówno do stronicowania (jeszcze nie na dysk) jak i segmentacji. To segmentacja sprawia, że jest NAPRAWDĘ 386 zależne > (każde zadanie ma segment 64Mb na kod i dane - max 64 zadania w 4Gb. > Każdy, kto potrzebuje więcej niż 64Mb/zadanie - trudne ciasteczka). Myślę, że moje własne eksperymenty z x86 skłoniły mnie do zadania tego pytania. Linus nie miał StackOverflow, więc po prostu zaimplementował go, aby go wypróbować.


title: gdzie śledzisz decyzje zespołu

text: Byłem w wielu zespołach deweloperskich i wraz z dojrzewaniem zespołu podejmowane są decyzje dotyczące kierunku. Te decyzje często powracają w kółko. Na przykład dlaczego nie wypełnimy tego pola, dlaczego nie użyliśmy memcache zamiast niestandardowych rozwiązań. Decyzje te sumują się z czasem i stają się istotną częścią standardów kodowania przewodników stylu i testów jednostkowych. Moje pytanie brzmi: nigdy nie natknąłem się na dobry sposób śledzenia tych decyzji lub odkrycia, które doprowadziło do ich podjęcia. Czy ktoś ma najlepszą praktykę.


title: Jaka technologia jest używana do budowy „Visual Studio 11”?

text: Zapowiedź nowego „Visual Studio 11” została niedawno pokazana na konferencji BUILD firmy Microsoft. Z ciekawości, jaka technologia jest używana do jej tworzenia? Zakładam, że nie jest to WinRT (co, jak sądzę, jest przeznaczone tylko dla aplikacji w stylu Metro w nowym środowisku dotykowym Windows 8) Czy nadal używa WPF (jak 2010)? Czy jest zbudowany na platformie .NET 4.5? Czy wchodzą w to jakieś nowe technologie? Czy wiemy?


title: Zapewnienie niesprzecznych komponentów w systemie modułowym

text: Powiedzmy więc, że tworzymy prosty framework „system modułowy”. Nagie kości mogą być zarządzaniem użytkownikami. Ale chcemy, aby elementy takie jak Page Manager, Blog, Galeria obrazów były "opcjonalnymi" komponentami. Deweloper może więc zainstalować Page Managera, aby umożliwić swojemu klientowi dodanie statycznej strony głównej i strony z zawartością, którą może łatwo edytować za pomocą edytora wysiwyg. Deweloper może wówczas również zainstalować składnik Blog, aby umożliwić klientowi dodawanie wpisów blogu. Deweloper może wtedy również zainstalować komponent Gallery, aby umożliwić klientowi pokazanie wielu obrazów. Chodzi o to, że wszystkie te elementy są zaprojektowane tak, aby były niezależne, więc jak mamy zapewnić, że nie będą się ze sobą kolidować? Np. upewnienie się, że klient nie utworzy strony /gallery za pomocą Page Managera, a następnie zastanawia się, dlaczego galeria przestała działać, lub ten sam problem z komponentem Blog, zakładając, że pozwalamy użytkownikom dostosować strukturę adresów URL bloga (ponieważ pamiętaj, Menedżer stron niekoniecznie musi tam być, więc możemy nie chcieć, aby nasze posty na blogu były sformatowane według daty/tytułu), podobnie nasi klienci nie zawsze będą zadowoleni, że ich strony będą miały formatowanie stron/tytułu . Moje podstawowe pytanie brzmi: kiedy budujemy system modułowy, jak zapewnić, że moduły nie będą kolidować bez ograniczania funkcjonalności? Czy po prostu pozostawiamy to klientom/programistom używającym modułów, aby upewnić się, że zostaną skonfigurowani w sposób, który nie powoduje konfliktów?


title: Jak rozpoznać problem jako odpowiedni do programowania dynamicznego?

text: Ostatnio czytam o programowaniu dynamicznym. Chciałbym usłyszeć od kogoś, kto zaczynał od zera, a teraz jest całkiem dobry w identyfikowaniu i rozwiązywaniu problemów DP. Walczę z identyfikacją tych problemów jako DP i sformułowaniem zwięzłego rozwiązania. Przeszedłem przez większość problemów z DP dla początkujących i zasobów MIT itp.


title: Test jednostkowy kodu DAO przy użyciu SQL Lite, gdy bazą danych aplikacji jest Oracle

text: Posiadamy aplikację z backendem Oracle. Warstwa DAO jest napisana w C# i wykorzystuje nHibernet do wykonywania operacji na danych. Do testów jednostkowych naszego kodu DAO używamy SQL Lite, który tworzy bazę danych na podstawie naszego istniejącego mapowania w projekcie. Niektóre z naszych zapytań nHibernate, które trafiają do Oracle, używają (+) dla złączeń zewnętrznych. Teraz SQL Lite nie rozumie (+). Może istnieć więcej składni Oracle, których SQL Lite nie rozumie. Jak rozwiązujemy takie problemy? Jakie są inne systemy bazodanowe, które można wykorzystać do testowania jednostkowego kodu aplikacji.


title: Używanie zamknięcia, aby uniknąć powielania kodu w Pythonie

text: Czasami chcę uruchomić ten sam kod z kilku różnych miejsc w tej samej funkcji. Powiedzmy, że mam jakąś funkcję func1 i chcę zrobić to samo z kilku różnych miejsc w func1. Normalnie sposobem na zrobienie tego byłoby napisanie innej funkcji, nazwanie jej "func2" i wywołanie func2 z kilku różnych miejsc w func1. Ale co z tym, kiedy wygodnie jest mieć dostęp do zmiennych func2, które są lokalne dla func1? Piszę zakończenie. Oto sztuczny przykład: import losowy import ciągu def func1 (param1, param2): def func2(foo, bar): print "{0} {1} {2:0.2f} {3} {4} {0}". format('*'*a, b, c, foo, bar) a = random.randrange(10) b = ''.join(random.choice(string.letters) for i in xrange(10)) c = random .gauss(0, 1) if param1: func2(a*c, param1) else: if param2 > 0: func2(param2, param2) Czy jest to sposób na rozwiązanie tego problemu w Pythonie? Zamknięcie wydaje się być tutaj dość ciężkim mechanizmem, zwłaszcza biorąc pod uwagę, że muszę konstruować nową funkcję za każdym razem, gdy wywoływana jest funkcja func1, mimo że ta funkcja będzie w zasadzie za każdym razem taka sama. Ale pozwala uniknąć zduplikowanego kodu iw praktyce nie ma dla mnie znaczenia narzut związany z wielokrotnym tworzeniem func2.


title: Co należy przeprowadzić przed aktualizacją witryny internetowej?

text: Poświęcam swój czas na aktualizację strony internetowej dla lokalnej firmy. Obecna strona internetowa, którą mają, nie jest aktualna i nie przeszła kilku „testów internetowych”. Na przykład strony są za duże, obrazy nie są skompresowane, a witryna nie jest przyjazna dla urządzeń mobilnych. Wszystkie te rzeczy są mierzalne - m.in. czas ładowania (w sekundach), przepustowość (w kb) oraz lista urządzeń, na których witryna wyświetla się poprawnie. Moim zamiarem jest zanotowanie tych punktów odniesienia przed rozpoczęciem projektu i po jego zakończeniu. Moje pytanie brzmi: jakie benchmarki prezentują programiści stron internetowych swoim klientom?


title: Pomóż mi z plikiem o swobodnym dostępie bez korzystania z bazy danych w vb6.0

text: Jestem studentem informatyki i musimy zrobić projekt o swobodnym dostępie do pliku bez użycia bazy danych, używając tylko plików tekstowych. Zastanawiałem się więc, czy ktoś tutaj mógłby mi w tym pomóc. Chcę mieć przykład, żebym mógł go przestudiować. Wystarczy prosty program do plików o dostępie swobodnym. Przykładem jest książka telefoniczna, w której można zapisać nazwisko i numer telefonu. Możesz go edytować i usuwać. A także wyszukiwać nazwiska lub numery telefonów, a także losowo przeglądać wszystkie pliki. Jeśli wiesz, jak to się robi lub masz jakieś próbki, które mogę przestudiować, odpowiedz. Twoja pomoc jest naprawdę doceniana. I dam ci kredyty, jeśli zrobię mój program. Z góry dziękuję....


title: Pytania do rozmowy kwalifikacyjnej z programistą: czy szybkość jest wszystkim?

text: Może jestem po prostu mniej sprytny niż inni, ale tym razem chciałbym powiedzieć, że wszystkie łamigłówki, zagadki, pytania do kodu i ćwiczenia z kodu na papierze wydają mi się trochę trudne. Zawsze uważałem się za ponadprzeciętnego mądrego faceta, ale w wywiadzie, kiedy proszą mnie o rozwiązanie czegoś lub napisanie kodu na papierze, aby o coś zapytać, myślę, że po prostu się do tego nie nadaje. Może nie jestem tak produktywny jak ktoś, kto jest całkowicie reaktywny i szybko myśli, ale uważam się za kreatywnego myśliciela, kogoś, kto jest w stanie rozwiązać każdy problem, jeśli ma wystarczająco dużo czasu (co nie jest EONS, tylko trochę więcej niż szybko i wściekle myślący wnioskodawca). Moim zdaniem nie ma gwarancji, że szybko myślący jest mądrzejszy niż myśliciel mniej szybki (nie wolno, tylko MNIEJ szybki). Czy szybkość jest wszystkim w rozmowach twarzą w twarz z papierem?


title: Uzyskanie tego, co najlepsze z obu światów: MVC i WebForms

text: Zamiast zadawać ogólne pytanie dotyczące formularzy WebForms vs MVC (takich jak w ASP.NET v/s ASP.NET MVC), mam określone pytanie. Wydaje się, że główne różnice między tymi dwoma podejściami to 1. WebForms jest oparty na zdarzeniach i wykorzystuje wstępnie zbudowane komponenty 2. MVC ma wbudowaną warstwę, której nie ma WebForms: model 3. MVC ma kontrolery w oddzielnym folderze niż widoki, podczas gdy kontrolerem WebForms jest CodeBehind. Jeden z nich mógłby łatwo dodać folder do projektu WebForm o nazwie „Model”, który przechowuje całą logikę biznesową użytą w Code Behind (oddzielając je). Głównym argumentem przeciwko WebForms jest to, że „łatwo” jest napisać logikę biznesową w CodeBehind. Ale można łatwo dodać logikę biznesową do kontrolera MVC, całkowicie naruszając rozdział obaw. Teraz pytanie: czy nie jest tak, że można napisać projekt WebForms w taki sposób, aby logika biznesowa była oddzielona od Controller/Code Behind, która miałaby wszystkie zalety MVC (separacja obaw) przy zachowaniu zalety WebForms: bogate kontrolki, sterowane zdarzeniami (jeśli lubisz zdarzenia)?


title: Czy ktoś może wyjaśnić zakulisowy proces łączenia konta aplikacji z kontem na Facebooku?

text: Tworzę aplikację, która będzie korzystać wyłącznie z interfejsów API logowania do Twittera i Facebooka. Załóżmy, że nowy użytkownik pobiera aplikacje i ma możliwość zalogowania się przez Facebooka lub Twittera. Użytkownik wybiera Facebooka. Myślę, że procedura w tym momencie polega na a) utworzeniu automatycznie wygenerowanego identyfikatora użytkownika w mojej tabeli Użytkownicy b) zapisaniu poświadczeń Facebooka w automatycznie wygenerowanym identyfikatorze użytkownika, co do części b. Czy Facebook zwraca unikalny identyfikator, gdy wywoływany jest jego interfejs API, który mogę przechowywać z moim identyfikatorem użytkownika, czy istnieje jakiś alternatywny proces? Innymi słowy, co dokładnie oznacza przechowywanie danych logowania do Facebooka?


title: Czy luki w zabezpieczeniach to zguba?

text: _Pytam o to tutaj, a nie na stronie poświęconej bezpieczeństwu, ponieważ to jest pytanie o "architekturę oprogramowania" i "metodologie rozwoju", które są omówione w FAQ._ **EDYTUJ** : Mówię o czysto zdalne exploity oprogramowania root/admin. Nie chodzi o fizyczne włamanie się osoby z wewnątrz do laboratoriów / firm / domów / sieci / maszyn. Za każdym razem, gdy pojawia się wpis na blogu lub artykuł na temat nowego exploita bezpieczeństwa, mnóstwo ludzi pisze, że: _ „Żadne oprogramowanie nigdy nie będzie bezpieczne, każde oprogramowanie może zostać wykorzystane. Daj każdemu piratowi wystarczająco dużo czasu, a on w końcu wykorzystać dowolne oprogramowanie o wysokiej wartości docelowej”._ To jest stała. Tego typu komentarze zawsze są modyfikowane jak szalone i większość ludzi wydaje się akceptować to jako fakt. I naprawdę zastanawiam się: czy jakakolwiek architektura oprogramowania i metodologie rozwoju mogą być wykorzystane do stworzenia bezpiecznego oprogramowania, czy też jest coś technicznego, co uniemożliwia nam pisanie bezpiecznych systemów/programów/systemów operacyjnych/serwerów? Im więcej o tym myślę, tym bardziej nie rozumiem, dlaczego technicznie nie możemy zbudować w 100% bezpiecznego oprogramowania. Aż w dół od systemu operacyjnego, a potem w górę: przeglądarki, wtyczki... Zauważ, że nie jestem zainteresowany dyskusją tutaj: chcę wiedzieć, czy technicznie jest coś, co może uniemożliwić, powiedzmy, system operacyjny być napisane w 100% bezpieczny sposób i dlaczego tak jest. Teraz, jeśli technicznie nie ma nic, co uniemożliwiałoby nam napisanie w 100% bezpiecznego systemu operacyjnego, a następnie napisanie w 100% bezpiecznego serwera, dlaczego tego nie zrobiono? Czy to oznacza, że nasza architektura i metodologie rozwoju (i narzędzia?) są głęboko wadliwe?


title: Pytanie o pętlę CUDA — warte rozwinięcia?

text: Wiadomo, że rozgałęzienie jest złe dla CUDA. Pytanie, które mam, jest trochę bardziej szczegółowe. Mam pętlę (statyczną). Statyczny w tym przypadku oznacza, że za każdym razem podąża dokładnie tą samą ścieżką i wykonuje tę samą liczbę razy. Wewnątrz pętli znajdują się rozgałęzienia, ale w danej iteracji za każdym razem następuje ta sama gałąź. Tak więc, jeśli rozwiniemy/rozwiniemy tę pętlę i spłaszczymy oczywiste gałęzie, będzie to zwykły kod sekwencyjny. Czy warto rozwinąć tę pętlę do wykonania na urządzeniu CUDA, czy też przewidywanie rozgałęzień działa wystarczająco dobrze i wykonuje tylko jedną gałąź na wątek? Ponieważ w przeciwnym razie istnieje około 34 ścieżek w kodzie, które można obrać, i staram się uniknąć, aby każdy wątek podążał każdą ścieżką. Przykładowa pętla: for (int i = 0; i < 33; i++) { if (i % 3 == 0) ... if (i % 3 == 1) ... if (i % 3 == 2) ... }


title: Punkty fabularne dotyczące zadań naprawiania błędów: Czy nadaje się do Scrum?

text: Zastanawiam się tylko, czy powinniśmy przydzielać punkty fabularne do zadań naprawiania błędów, czy nie. JIRA, nasze oprogramowanie do śledzenia problemów, nie ma pola story point dla problemów typu _Bug_ (tylko dla _Story_ i _Epic_ s). Czy powinniśmy dodać typ sprawy _Bug_ do odpowiednich typów spraw w polu _Story Points_? Jakie są plusy i minusy? Czy byłby odpowiedni dla Scruma?


title: Dlaczego relacyjne bazy danych nie obsługują zwracania informacji w formacie zagnieżdżonym?

text: Załóżmy, że tworzę blog, w którym chcę mieć wpisy i komentarze. Tak więc tworzę dwie tabele, tabelę „posts” z kolumną „id” z autoinkrementacją i tabelą „comments”, która ma klucz obcy „post_id”. Następnie chcę uruchomić to, co prawdopodobnie będzie moim najczęstszym zapytaniem, czyli pobranie posta i wszystkich jego komentarzy. Będąc raczej nowym w relacyjnych bazach danych, podejście, które wydaje mi się najbardziej oczywiste, to napisanie zapytania, które wyglądałoby mniej więcej tak: SELECT id, content, (SELECT * FROM comments WHERE post_id = 7) AS comments FROM posts WHERE id = 7 Which podałby mi identyfikator i treść posta, który chcę, wraz ze wszystkimi odpowiednimi wierszami komentarzy zapakowanymi w tablicę (zagnieżdżona reprezentacja, której używasz w JSON). Oczywiście SQL i relacyjne bazy danych nie działają w ten sposób, a najbliższym, co mogą uzyskać, jest połączenie „postów” i „komentarzy”, które zwrócą wiele niepotrzebnych zduplikowanych danych (z powtórzeniem tych samych informacji o poście w każdym wierszu), co oznacza, że czas przetwarzania jest spędzany zarówno na bazie danych, aby zebrać wszystko razem, jak i na moim ORM, aby wszystko przeanalizować i cofnąć. Nawet jeśli poinstruuję mój ORM, aby gorliwie ładował komentarze do posta, najlepiej, co zrobię, to wysłać jedno zapytanie o post, a następnie drugie zapytanie, aby pobrać wszystkie komentarze, a następnie złożyć je razem po stronie klienta, co jest również nieefektywny. Rozumiem, że relacyjne bazy danych to sprawdzona technologia (do diabła, są starsze ode mnie) i że przez dziesięciolecia przeprowadzono w nie mnóstwo badań i jestem pewien, że istnieje naprawdę dobry powód, dla którego (i SQL standard) są zaprojektowane tak, aby funkcjonowały w ten sposób, ale nie jestem pewien, dlaczego podejście, które nakreśliłem powyżej, nie jest możliwe. Wydaje mi się, że jest to najprostszy i najbardziej oczywisty sposób na zaimplementowanie jednej z najbardziej podstawowych relacji między rekordami. Dlaczego relacyjne bazy danych nie oferują czegoś takiego? (Zastrzeżenie: głównie piszę aplikacje internetowe używając datastores Rails i NoSQL, ale ostatnio wypróbowałem Postgresa i naprawdę bardzo go lubię. Nie chcę atakować relacyjnych baz danych, jestem po prostu zakłopotany.) ** EDYCJA:** Ponieważ kilka osób wydaje się być zdezorientowanych, nie pytam, jak zoptymalizować aplikację Railsową, ani jak zhakować ten problem w konkretnej bazie danych. Pytam, dlaczego standard SQL działa w ten sposób, skoro wydaje mi się to sprzeczne z intuicją i marnotrawstwem. Musi być jakiś historyczny powód, dla którego pierwotni projektanci SQL chcieli, aby ich wyniki wyglądały tak. Myślę też, że ludzie mówiący „po prostu uruchom dwa zapytania” też nie mają racji – mogę nie znać identyfikatora posta, kiedy tworzę zapytanie. Może nie będę musiał skwapliwie ładować jednego związku, ale dziesiątki. Użyłem konkretnego przykładu nie dlatego, że próbuję rozwiązać konkretny problem, ale dlatego, że ilustruje on mój punkt widzenia. Dla osób poniżej, które twierdzą, że zadaniem bazy danych nie jest zwracanie danych gotowych do wyświetlenia, wydaje mi się, że złączenia i widoki bazy danych wykonują w zasadzie tę samą funkcjonalność - ułatwiają składanie i używanie zdenormalizowanych danych w bazie danych (nie koniecznie wyświetlaj, ale używaj). Myślę, że to, co zaproponowałem powyżej, jest w zasadzie równoważne złączeniu, po prostu łatwiejsze do przeanalizowania i wykorzystania przez programistę.


title: WPF, MVVM, EF, POCO wytyczne wymagane w przypadku prostej architektury

text: (przepraszam za mój słaby angielski) Tworzę aplikację przy użyciu WPF, EF Code First przy użyciu MVVM (Caliburn.Micro). Powinien być używany głównie do pracy CRUD. Utworzyłem klasę `BaseViewModel<T>`, z której wszystkie inne ViewModele dziedziczą i udostępniają właściwość `T Selected` do powiązania z Widokiem. Wiem, że nie zaleca się wystawiania modelu na widok, ale po prostu ułatwia to uruchomienie aplikacji. Problem polega na tym, że nie chcę zanieczyszczać moich modeli (klas EF POCO) za pomocą `INotifyPropertyChanged`, `IDataErrorInfo`, `IEditableObject`, itp... Jest więc coś, co mogę tutaj zrobić lub muszę naprawdę zduplikować wszystkie Właściwości modelu do ViewModel i zrezygnować z bezpośredniego powiązania modelu? Chciałbym również skorzystać z walidacji atrybutów, ponieważ wszystkie modele już je posiadają. Używałem tego podejścia w przeszłości z Silverlight/RIA, ale w tym przypadku usługi RIA Services wygenerowały dla mnie klasy z całym kodem hydraulicznym. Mogę uzyskać błędy walidacji za pomocą klasy Validator, ale muszę również wskazać komponent, który ma błąd, bez interfejsu użytkownika i myślę, że muszę zaimplementować `IDataErrorInfo` w moim modelu, aby tak się stało, prawda? W przypadku `INotifyPropertyChanged` mogę użyć czegoś takiego jak NotifyPropertyWeaver, ale moim problemem jest `IEditableObject` i coś, co umożliwia korzystanie z walidacji atrybutów. Byłoby fajnie coś w stylu `MagicBusinessBaseClassThatImplementAllThoseInterfaces<Model>` do hermetyzacji modelu, abym mógł go po prostu powiązać i przejść dalej. Wiem, że mogę sprawić, by to zadziałało, ręcznie implementując interfejsy na każdej maszynie wirtualnej - ale pomyśl tylko o tym, że cały "zduplikowany" kod sprawia, że się wzdrygam :( Jak programiści WPF robią dziś takie rzeczy? Jest jakaś tajna technika ninja, której nie jestem świadomy?


title: Najlepszy sposób na skontaktowanie się z partnerem biznesowym, aby zrozumieć potrzebę usług internetowych B2B

text: Obecnie współpracujemy z firmą, która ma dość uproszczony system internetowy do przetwarzania informacji gwarancyjnych. Jedynym sposobem na wyciągnięcie z niego danych jest eksportowanie do Excela. Kompilacja tych danych i korelacja z naszymi systemami musi być ręczna i sprawia, że reagujemy w odpowiedzi. Idealną sytuacją byłoby skonfigurowanie usługi internetowej po ich stronie i automatyczne połączenie jej z naszymi danymi, abyśmy mogli mieć dobre i aktualne informacje bez kosztów ludzkich lub cotygodniowego wąskiego gardła. Kiedy jednak wspomnieliśmy im o tym samym argumencie, ich dział IT wykradł się od nas, chcąc uzyskać dostęp do ich systemów „bezpośrednio”, ponieważ mają inne informacje dla innych dostawców, którzy są naszą konkurencją. **Innymi słowy, wydaje im się, że to coś dziwnego i niepewnego**. Moje pytanie brzmi: jak sprawilibyście, aby zrozumieli potrzebę unowocześnienia swoich systemów?, czy mielibyście jakieś doświadczenie w przekonywaniu firmy, od której chcecie skorzystać z serwisu? lub wynająć konsultanta, który to oceni i zamiast tego porozmawia z nim? Edycja: Dostarczamy naszym klientom urządzenia elektroniczne na zamówienie, które następnie sprzedajemy użytkownikom końcowym. Użytkownicy końcowi mają do czynienia z naszymi klientami i, w zależności od przypadku, klient zajmuje się z nami, jeśli wymaga poprawek oprogramowania/sprzętu do następnej wersji.


title: Wersjonowanie semantyczne dla aplikacji desktopowych

text: Mogę z łatwością postępować zgodnie z zaleceniami wersjonowania semantycznego, jeśli tworzę bibliotekę lub interfejs API, ale co, jeśli opracowanym produktem jest strona internetowa lub aplikacja komputerowa? Kiedy w takim przypadku należy zwiększyć `główny` składnik? W przypadku całkowitego przeprojektowania interfejsu użytkownika? Albo coś innego? Myśli?


title: Jak ważny jest certyfikat SSL dla wewnętrznej strony internetowej?

text: Wiem, że wiele osób zadało to samo pytanie, ale myślę, że tak naprawdę zależy to od rodzaju strony internetowej. Dlatego zadaję pytanie o moją stronę. Zajmuję się tworzeniem aplikacji webowej PHP dla firmy ubezpieczeniowej. aplikacja zawiera wszystkie informacje o klientach, ale ta aplikacja jest używana tylko przez administratorów i sprzedawców firmy. Administrator tworzy użytkownika, a następnie ten użytkownik może dodawać klientów lub odnawiać ubezpieczenie. adres będzie podobny do example.com/manage/, a login jest przeznaczony tylko dla użytkowników utworzonych przez administratora. Oczywiście będę używał walidacji, soli, szyfrowania itp. Ale czy potrzebuję certyfikatu SSL?


title: Co może zrobić Go chan, czego nie potrafi lista?

text: Chcę wiedzieć, w jakiej sytuacji Go chan sprawia, że kod jest znacznie prostszy niż użycie listy, kolejki lub tablicy, które są zwykle dostępne we wszystkich językach. Jak stwierdził Rob Pike w jednym ze swoich wystąpień o Go lexerze, kanały Go pomagają organizować przepływ danych między strukturami, które nie są homomorficzne. Interesuje mnie prosty przykład kodu Go z chan, który staje się DUŻO bardziej skomplikowany w innym języku (na przykład C#), gdzie chan nie jest dostępny. Nie interesują mnie próbki, które używają chan tylko po to, aby zwiększyć wydajność, unikając oczekiwania danych między generowaniem listy a zużyciem listy (co można rozwiązać poprzez chunking) lub jako sposób na zorganizowanie bezpiecznej kolejki wątkowej lub bezpiecznej wątkowo komunikacji (co może łatwo rozwiązać przez blokowanie prymitywów). Interesuje mnie próbka, która sprawia, że kod jest prostszy strukturalnie bez względu na wielkość danych. Jeśli taka próbka nie istnieje, to próbka, w której liczy się rozmiar danych. Myślę, że pożądana próbka zawierałaby dwukierunkową komunikację między generatorem a konsumentem. Również gdyby ktoś mógł dodać tag [kanał] do listy dostępnych tagów, byłoby świetnie.


title: Która z tych implementacji jest bardziej odpowiednia dla mojego interfejsu API REST?

text: ### Tło Mam więc API REST, które pozwala aplikacjom klienckim na dostęp i manipulowanie danymi użytkowników. Jestem w trakcie pisania klasy Objective-C do prostego wykorzystania tego API REST, ale utknąłem między dwiema metodami implementacji. ### Metoda 1 klasa MYClient ciąg nazwa użytkownika ciąg hasło metody do używania GET, PUT, POST, DELETE na pytaniach // pytania to słowniki z ciągami 'title' i 'body' ### Metoda 2 klasa MYUser ciąg ciąg nazwa użytkownika ciąg hasło tablica tokeny class MYToken string title string body // klasy z natury synchronizują się z serwerem w swoich inicjatorach, setterach i getterach ### Pytania * Czy istnieje taki, który jest bardziej odpowiedni do użycia w (na przykład) aplikacjach na iOS? * Czy jest taki, który jest ogólnie bardziej odpowiedni? * Jakie są wyraźne zalety metody 1 nad metodą 2 i na odwrót?


title: Sposoby modularyzacji bloków kodu w ASP Classic

text: Mam jeden ogromny plik.asp ze wszystkimi moimi raportami. Zmodularyzowałem stronę za pomocą ciągu zapytania, więc tworzy to wiele „stron wirtualnych” z raportem nr 1, raportem nr 2 i tak dalej. Mam kilka bloków kodu, których używam więcej niż raz na stronie. Właściwie powtarzam kod, ale już zacząłem używać Function do np. formatowania daty. Ale bloki kodów są jak panele z niektórymi selekcjami w bazach danych, tabelach i tak dalej... Mam na myśli, że jeden panel może mieć ponad 200 linijek kodu. Chciałbym stworzyć jakąś funkcję do ponownego wykorzystania kodu, zamiast go za każdym razem powielać. Z klasycznym boleniem, ile mam opcji? Jeden, który odrzuciłem, to utworzenie jednego pliku asp na panel, aw pliku głównym dołącz panel tam, gdzie jest to konieczne. Naprawdę nie mam takiego podejścia. Czy funkcja jest najlepszym podejściem?


title: Najlepsza praktyka/wzorce dwukierunkowej synchronizacji danych

text: Dość często w mojej pracy pojawia się pomysł dwukierunkowej synchronizacji danych pomiędzy systemami bazodanowymi. Klasycznym przykładem są dwa nieco różne systemy CRM (powiedzmy, Raiser's Edge i Salesforce) i potrzeba dwukierunkowej synchronizacji danych Contact między nimi. Pomijając względy API, zakładając, że masz wspólny klucz do synchronizacji i wyłącznie myśląc o algorytmie/wzorze, który ma zostać zastosowany, jest to zadanie, które często jest niedoceniane przez osoby nie związane z technologią. Na przykład, musisz uważać na: * Czy możesz łatwo wykryć, które rekordy uległy zmianie w obu systemach (lub będziesz musiał porównać wszystkie rekordy między systemami, aby wykryć zmiany) * Jeśli wybierasz się raz na- Synchronizacja N-godzinna, jak radzić sobie z konfliktami, w których ten sam rekord zmienia się mniej więcej w tym samym czasie w obu systemach * Jeśli masz zamiar przeprowadzić synchronizację w czasie rzeczywistym (tzn. aktualizacja w jednym systemie natychmiast wyzwala aktualizację do innego systemu) jak radzić sobie z rozbieżnością w czasie z powodu błędów lub awarii systemu Osobiście mogę wymyślić sposoby rozwiązania tego wszystkiego, ale zastanawiam się, czy istnieją jakieś dobrze znane wzorce, literatura lub najlepsze praktyki, do których mógłbym się odwołać.


title: Nauka Zend Framework 1 czy 2?

text: Przez kilka lat programowałem w php a teraz mam zamiar nauczyć się zend framwork. Zend jest bardzo popularny i istnieje wiele samouczków, książek i dokumentacji. Ale widziałem w ostatnich miesiącach, że istnieje druga wersja Zend, ale nie jest ona tak używana i popularna, jeszcze nie. Myślę, że lepiej zacząć od nowej wersji, ale nie wiem, co teraz zrobić, bo kiedy widzę oferty pracy, wiele osób wymaga pierwszej wersji. Którą wersję mi proponujesz?


title: Jaki był pierwszy język po stronie serwera

text: Myślałem o różnych językach po stronie serwera i to pytanie natychmiast pojawiło się w mojej głowie. Jaki był pierwszy język programowania po stronie serwera, przy użyciu którego tworzono strony internetowe? Czy to była java czy jakiś inny język? Uwaga: Myślę, że niektóre języki stały się pierwszorzędne po stronie serwera, ponieważ dostarczały, a raczej miały na celu zapewnienie lepszych narzędzi i bibliotek do łatwego programowania. Zgadzam się, że Java nie była głównie po stronie serwera, ale zapewniała lepsze narzędzia i dlatego była i jest często używana.


title: Jak ocenić kompromis między odpornością a „leniwym” kodem w projektowaniu API?

text: Prawo Postela: > Bądź konserwatywny w tym, co robisz, bądź liberalny w tym, co akceptujesz od innych. Kod „leniwy” (według The Pragmatic Programmer): > Bądź surowy w tym, co zaakceptujesz, zanim zaczniesz, i obiecaj w zamian jak najmniej. Opracowuję framework finansowy (wycena aktywów itp.) dla Pythona. Pytanie: projektując API dla frameworka, jakie czynniki powinienem wziąć pod uwagę, gdy oceniam kompromis między byciem surowym a liberalnym w odniesieniu do danych wejściowych? Przykład: Mam następującą metodę, która pobiera ceny akcji z Yahoo. def history_prices(ticker, start=Brak, end=Brak, data='d', convert=True): # Wykonaj rzeczy Dla argumentów daty (`start` i `end`), mógłbym: * Być surowy i tylko zezwól na ciąg w formacie ISO RRRR-mm-dd, lub * Bądź liberalny i akceptuj obiekty daty i godziny, ciągi (o określonych formatach) itp.


title: Czy mogę zapisać i przechowywać zgłoszenie użytkownika w sposób, który dowodzi, że dane nie zostały zmienione i że sygnatura czasowa jest dokładna?

text: Istnieje wiele sytuacji, w których ważność znacznika czasu dołączonego do danego postu (przesłanie informacji) może być nieoceniona dla legalnego wykorzystania przez właściciela posta. Nie szukam usługi, aby to osiągnąć, jak prosiłem w tym wspaniałym pytaniu, ale raczej metody osiągnięcia takiej usługi. W przypadku legalnego (w większości systemów prawnych) uwierzytelnienia treści tekstowej i czasu jej przesłania właściciel treści musiałby udowodnić: * że sam znacznik czasu nie został zmieniony i od początku był dokładny. * że treść tekstu powiązana ze znacznikiem czasu nie została zmieniona Chciałbym wiedzieć, jak to osiągnąć poprzez programowanie (nie jest to rozwiązanie specyficzne dla języka, ale raczej metodologia rozwiązania). * * * 1 sprawdzony sposób?** Innymi słowy, czy mogę zapisać i przechowywać zgłoszenie użytkownika w sposób, który dowodzi, że dane nie zostały zmienione, a sygnatura czasowa jest dokładna? Nie przychodzi mi do głowy żadna metoda programowania, która by to umożliwiła, ale nie jestem najbardziej doświadczonym programistą. W oparciu o odpowiedź MidnightLightning na pytanie, które zacytowałem, robi się tego rodzaju rzeczy. * * * **Wyjaśnienie:** Poszukuję metody (hashing, szyfrowanie itp.), która pozwoliłaby takiemu jak ja przeciętnemu facetowi osiągnąć pożądany efekt poprzez programowanie. Interesuje mnie ten temat na potrzeby Publikacji Obronnej. Chciałbym nauczyć się metody, która pozwala codziennemu programiście wziąć do ręki swój komputer, napisać program, przepuścić przez niego informacje i powiedzieć: > Stworzyłem ten tekst w tej chwili i mogę to udowodnić. Oznacza to, że informacje powinny być również chronione przed programistą, który pisze kod. Być może wymagany byłby zewnętrzny interfejs API. Nie przeszkadza mi to.


title: Pobieranie znaków Unicode w gVim w systemie Windows

text: Co próbuję zrobić? Używam gVim w systemie Windows i próbuję uzyskać coś, co wygląda tak. ![tekst alternatywny](http://i.stack.imgur.com/IqEuN.png) Widzisz wcięcia i znaki tabulacji? _(sprawdź link, aby zobaczyć duży obraz, jeśli ten jest za mały)_ Próbowałem już wielu rzeczy, niektóre z nich mają związek z czcionkami, niektóre z kodowaniami, niektóre z nich muszą (wydaje się) przy obecnym ciśnieniu powietrza i prędkości wiatru. Ale żaden z nich nie działał.


title: Jakie jest znaczenie zdania „chcieliśmy go skompilować, aby nie spalał procesora, robiąc złe rzeczy”.

text: Czytałam ten artykuł. Ma następujący akapit. > A czy Scala okazała się szybka? Cóż, jaka jest twoja definicja szybkiego? > Mniej więcej tak szybko, jak Java. Nie musi być tak szybki jak C lub Assembly. > Python nie jest znacząco szybszy niż Ruby. Chcieliśmy zrobić więcej przy > mniejszej liczbie maszyn, lepiej wykorzystując współbieżność; chcieliśmy, aby był > skompilowany, aby nie spalał procesora, robiąc złe rzeczy. Szukam sensu ostatniego zdania. W jaki sposób interpretowany język sprawi, że procesor będzie robił "złe" rzeczy?


title: Czym jest opcja wyjścia z kariery IT

text: W doradztwie zarządczym iBanking... istnieje popularne określenie opcja wyjścia. Do czego dokładnie odnosi się to w kategoriach laika? Czy termin ten ma znaczenie również w karierze IT? Na przykład dla programisty/kierownika projektu?


title: Którą dystrybucję Linuksa wybrać na wolontariat?

text: Liczba dystrybucji Linuksa jest duża. Ktoś, kto chce zostać wolontariuszem z jednym z nich, może mieć trudności z wybieraniem między nimi, ponieważ trudno jest wyczuć kulturę, środowisko, poziom społeczności i esprit de corp. Ponadto niektóre mogą być bardzo surowe z długimi procesami, zanim ci się zaufa, lub znacznie luźniejsze z mniejszą społecznością z większym zaufaniem. Trudno powiedzieć, gdzie szukać informacji. Może jeden jest w wielkiej potrzebie, a inni są ugruntowani i mniej potrzebują. Jak dowiem się, kto jest w największej potrzebie? Dołączenie do zespołu pisarzy, programistów, testerów, koordynatorów i administratorów dystrybucji Linuksa to poważna decyzja. To niezwykle delikatne pytanie i mam nadzieję, że nikt nie zostanie zlekceważony ani pytaniem, ani odpowiedziami.


title: Jak przekonwertować stronę html na pdf za pomocą javascript?

text: Opracowuję projekt, w którym mam stronę z paragonem (jest to strona html, którą chcę przekonwertować na pdf) i muszę ją wydrukować. Podczas drukowania wyrównanie tej strony nie przebiega prawidłowo. Jeśli przekonwertuję go do formatu pdf, to tylko pdf zajmie się wyrównaniem, dzięki czemu moja praca stanie się łatwa i efektywna. Byłem ograniczony do używania bibliotek JavaScript lub js tylko do wykonania tego zadania. Czy ktoś z was mógłby mi pomóc?


title: Jaki jest najmniejszy fragment kodu, który może być objęty prawami autorskimi?

text: Oczywiście coś tak prostego jak „int i = 0;” lub „for (int i = 0; i < 10; i++)” nie może być objęte prawem autorskim, ale cała funkcja może być. Gdzie przebiega granica między prawami autorskimi a nieautoryzowanymi?


title: Czy dokument opisujący architekturę stanowi naruszenie zasady DRY?

text: Zasada DRY (Nie powtarzaj się) stwierdza, że „każda wiedza musi mieć jedną, jednoznaczną, autorytatywną reprezentację w ramach systemu”. W większości przypadków odnosi się to do kodu, ale często jest również rozszerzane na dokumentację. Mówi się, że każdy system oprogramowania ma architekturę, niezależnie od tego, czy ją wybrałeś, czy nie. Innymi słowy, oprogramowanie, które budujesz, ma strukturę, a ta struktura „po zbudowaniu” jest architekturą oprogramowania. **Ponieważ zbudowany system oprogramowania ma architekturę, czy tworzenie opisu architektury tego systemu jest pogwałceniem zasady DRY?** W końcu, jeśli chcesz poznać architekturę, zawsze możesz po prostu spojrzeć na kod.. .


title: Nowa praca, a mojego szefa często nie ma

text: Właśnie zacząłem pracę na nowym stanowisku w świetnej firmie, dla której praca jest niemal marzeniem. Jedynym problemem jest to, że istnieje stroma krzywa uczenia się dla rodzaju danych, z którymi będę pracował, a mojego szefa/kierownika szkoleniowego **nigdy tam nie ma.** Myślę, że po 10 latach doświadcza wypalenia. Jest tu prawdopodobnie 3-10 godzin w tygodniu, a nawet wtedy nie ma gwarancji, że się zameldował. Wciąż mogę wnieść jakiś wkład (nie potrzebuję szkolenia z programowania), ale mam już dwa miesiące i nadal nie czuję się komfortowo na swoim stanowisku z powodu braku jednego na raz. Mogę uczestniczyć w niektórych projektach, do których się zgłaszam, ale są one trochę poza zakresem moich podstawowych obowiązków. Obawiam się, że wyżej wymienieni mogą uznać, że wolno mi się przystosowuję. Jakieś sugestie dotyczące zmiany tej sytuacji? edit: Więc wziąłem sugestię w wielu odpowiedziach, aby zaplanować czas na twarz. Zrobiłem to i zajęło nam około 20 minut, aby wykonać zadanie, które powinno zająć około 5. Dlaczego trwało to tak długo? **Mówił o swoim dziecku.** FML


title: Poprawiasz obsługę wyjątków?

text: Jestem początkującym programistą i niedawno zacząłem uczyć się obsługi wyjątków w Javie. Wiem, co robią bloki try, catch i ostatecznie, ale naprawdę muszę zrozumieć, jak ich dobrze używać i gdzie obsłużyć coś w stosie wywołań... Mam teraz projekt, który obejmuje I/O i wszystko, czym jestem robi to obsługa wyjątku w najniższej możliwej metodzie w stosie wywołań. Jestem pewien, że moja obsługa wyjątków może zostać ulepszona, więc pytam was, jak myślicie o obsłudze wyjątków? Jak wy staliście się w tym dobrzy i jak mogę lepiej ogarnąć ten pomysł?


title: Model oddziału GIT dla prac pochodnych

text: Planuję użyć modelu rozgałęzień Vincenta Driessena, który okazał się świetny do mojego obecnego rozwoju. Myślę, że podejście Vincenta jest bardzo ogólne dla każdego projektu deweloperskiego, ale trudno mi poradzić sobie z następującym scenariuszem. Pracuję nad aplikacją, która będzie oznaczona marką dla kilku klientów, więc każdy z moich pakietów jest inną gałęzią, którą `rebazuje` z gałęzi `develop` za każdym razem, gdy ma być wydana nowa kompilacja. Każda marka ma swoje atuty (obrazy i tekst) i nie kolidują one ze zmianami w branży `develop`, ponieważ w tej branży nigdy nie dotykam aktywów. Moje pytanie brzmi: teraz, kiedy planuję go używać, jak mogę obsługiwać różne wersje w oparciu o tę samą bazę kodu, ale z różnymi zasobami?


title: czy do programowania gier potrzebny jest c lub c++?

text: Czy musisz nauczyć się c lub c++ do programowania gier? Jestem bardzo dobry w javie. Czy to prawda, że większość silników gier jest w c lub c++. Czy powinienem nauczyć się c lub c++ lub zacząć tworzyć gry w javie? Czy możesz zasugerować kilka książek na początek


title: Kiedy powłoka drukuje „TBD: utwórz wątek testowy, aby wydrukować informacje z obiektu testowego”, co oznacza „TBD”?

text: Zrobiłem to po wykonaniu 'make' dla niektórych plików C++, a następnie uruchomieniu jednego z nich. Czy ktoś wie, jakie znaczenie ma akronim „TBD”?


title: Czy definiowanie/używanie funkcji „Preset” to zła praktyka?

text: Załóżmy, że mam niezwykle solidną i wszechstronną funkcję: `void DoWszystko(akcja, cel, kontekst)` W moim programie, 90% czasu wywołuję tę funkcję, ma ona te same parametry: );` Czy definiowanie funkcji takiej jak: `void EatLunch(){ DoAnything(eat, food, lunchtime) jest dla mnie złą formą; }` I nazwać to zamiast?


title: Jak zostaliśmy obarczeni (hierarchicznym) systemem plików jako podstawową strukturą danych?

text: Jestem samoukiem i nie mam dyplomu CS. Im więcej dowiaduję się o strukturze danych, tym bardziej zastanawiam się w dzisiejszych czasach, w jaki sposób nadal jesteśmy obarczeni systemem plików, katalogami i plikami, jako podstawową strukturą przechowywania danych w systemie operacyjnym? Rozumiem prostotę tego, ale wydaje się, że w dzisiejszych czasach mogłoby być więcej opcji dostępnych natywnie. O ile mi wiadomo, jedynym projektem poprawiającym podstawową funkcjonalność systemu plików był ReiserFS, gdzie można było stwierdzić, która linia pliku została zmieniona przez kogo i kiedy. Na przykład, gdybym mógł mieć natywne tagowanie plików, w którym mógłbym oznaczać obrazy, diagramy, dokumenty edytora tekstu, całe repozytorium kodu, a wszystko to jako należące do jednego projektu, byłoby to dla mnie naprawdę pomocne. Ponieważ utknąłem w paradygmacie systemu plików, wiem, że mógłbym umieścić je wszystkie w jednym folderze/katalogu, ale co, jeśli już istnieją w różnych katalogach i muszą tam pozostać? Wiem, że istnieją programy, które mogą to zrobić, ale dlaczego nie ma ich w systemie plików? Coś, co byłoby miło mieć, to jakiś rodzaj relacyjnej funkcji w systemie plików, jak w przypadku RDBMS. Rozumiem, że to miało być częścią Vista/7, ale to też spadło z listy funkcji. Jasne, że każdy program może przechowywać plik binarny i mieć w nim dowolną strukturę danych, dlaczego system operacyjny nie mógłby oferować bardziej złożonych sposobów przechowywania danych, poza prostą hierarchią systemu plików?


title: Jak w CV przedstawić moje doświadczenie startupowe?

text: Zacząłem programować urządzenia mobilne na Androida (z partnerem) jakiś czas temu. Robię to w niepełnym wymiarze godzin. Staram się dowiedzieć, jak wyświetlić te informacje w moim CV, ponieważ uważam, że są one istotne dla stanowisk programistycznych, których szukam (nie tylko ze względu na zdobyte doświadczenie Java/Android, ale także pod względem wykazujące pewne cechy osobowości). Mógłbym umieścić go w sekcji „Doświadczenie zawodowe”, ale obawiam się, że może się „łuskać” (tj. Próbować przekazać hobby jako prawdziwe doświadczenie). Chociaż tak naprawdę jest to prawdziwe doświadczenie... Jakieś sugestie? Z góry dziękuję. PS: Pytam, ponieważ umieściłem to jako normalny wpis „praca” w moim CV (zawiera link do strony startupu, która zawiera opis produktu/aplikacji itd.). W zeszłym tygodniu miałem wywiad i zostałem przesłuchany na ten temat. Mianowicie użycie wyrażenia „założyciel” wydawało się intrygować panią HR. Zastanawiam się więc, czy może to wywołać dziwne wibracje, czy może wyglądać, jakbym udawał jakieś doświadczenie.


title: Czy mogę przesłać mój kod do GitHub, gdy jest jeszcze we wczesnej fazie rozwoju?

text: Mam kilka projektów, które są na bardzo wczesnym etapie rozwoju. Nie zbliżają się do ukończenia, ale hostuję je (jako publiczne repozytoria) na GitHub, ponieważ: * Mam wiele komputerów i chcę wszędzie mieć dostęp do mojego kodu * Chcę wykonać kopię zapasową mojego kodu * Chcę, aby było to łatwe, jeśli ktoś chce współpracować w jakiś sposób * Używam GitHub Issues jako oprogramowania do zarządzania projektami dla ubogich Czy można publikować projekt na GitHubie, nawet jeśli jest to bardzo wczesny etap rozwoju? Jestem trochę zaniepokojony tym, że ktoś może przyjść i powiedzieć „OMG, to jest totalne zepsucie, ten kod jest taki zły!”, patrząc na nie dopracowany/wciąż w fazie rozwoju/nie testowany kod. Jakie są twoje praktyki, kiedy rozpoczynasz nowe projekty publiczne? Czy czekasz, aż będziesz miał coś istotnego do pokazania, czy tworzysz nagie repozytorium bezpośrednio na GitHubie i zaczynasz od tego? Używałem `GitHub` w tym poście, ale dotyczy to każdej usługi hostingu kodu.


title: Dlaczego nie wszędzie stosuje się leniwą ocenę?

text: Właśnie dowiedziałem się, jak działa leniwa ocena i zastanawiałem się: dlaczego leniwa ocena nie jest stosowana w każdym obecnie produkowanym oprogramowaniu? Dlaczego nadal korzystać z chętnej oceny?


title: Mówienie „nie” ludziom zadającym pytania

text: > **Możliwy duplikat:** > Kiedy nie udzielasz pomocy mniej doświadczonym programistom? Obecnie stwierdzam, że dużo mojego dnia zajmują ludzie zadający pytania dotyczące wiedzy o domenie/systemu. Wpływa to na wydajność osobistą. Czy programiści powinni nauczyć się więcej mówić „nie”, aby mieć pewność, że będą zadawać mniej pytań i być bardziej produktywni, czy też programiści powinni pomagać sobie nawzajem? Rzeczy są dokumentowane, ale często łatwiej jest zadać „szybkie pytanie”. Jak radzisz sobie z tego rodzaju scenariuszem?


title: Wzorce oprogramowania dla frameworków

text: Obecnie prowadzę badania dotyczące wzorców oprogramowania i wzorców architektonicznych dla frameworków. Google tak naprawdę nie popisuje się tym tematem, więc jestem ciekaw, które wzorce uznalibyście za szczególnie ważne dla architektury frameworków? Skupiam się na frameworkach dla oprogramowania webowego, mobilnego i desktopowego, takiego jak Rails, UIKit itp.


title: Dlaczego C# ma znacznie więcej funkcji niż Java?

text: Należy pamiętać, że nie ma to być argument Java vs. C#. Jestem programistą Java bez doświadczenia w C#, pytam tylko z ciekawości. Poczytałem trochę na C# i wygląda na to, że ma znacznie więcej funkcji niż Java. Kilka przykładów: * Wnioskowanie o typie. * słowo kluczowe `dynamic`. * Delegaci. * Parametry opcjonalne. * Lambda i LINQ _(właściwie nie mam pojęcia, co to jest)._ * Właściwości. Jednak Java tak naprawdę nie zawiera niczego, czego nie ma C#. Moje pytanie brzmi: dlaczego C# ma znacznie więcej funkcji natywnych niż Java? I dlaczego Java nie dodała niektórych z nich przez lata, na przykład Właściwości lub wnioskowanie o typie? Czy projektanci języka Java przyjmują bardziej uproszczone podejście? Jaki jest tego powód?


title: Czy istnieje realna zaleta języków dynamicznych?

text: Najpierw chciałbym powiedzieć, że Java jest jedynym językiem, jakiego kiedykolwiek używałem, więc proszę wybacz moją ignorancję w tym temacie. Języki z typami dynamicznymi pozwalają na umieszczenie dowolnej wartości w dowolnej zmiennej. Na przykład możesz napisać następującą funkcję (psuedokod): void makeItBark(dog){ dog.bark(); } I możesz w nim przekazać dowolną wartość. Dopóki wartość ma metodę `bark()`, kod będzie działał. W przeciwnym razie zgłaszany jest wyjątek środowiska uruchomieniowego lub coś podobnego. (Proszę mnie poprawić, jeśli się mylę). Pozornie daje to elastyczność. Jednak czytałem trochę o językach dynamicznych i ludzie mówią, że ** projektując lub pisząc kod w języku dynamicznym, myślisz o typach i bierzesz je pod uwagę, tak samo jak w języku statycznie pisanym. ** Więc na przykład pisząc funkcję `makeItBark()`, zamierzasz akceptować tylko 'rzeczy, które mogą szczekać' i nadal musisz się upewnić, że przekazujesz do niej tylko takie rzeczy. Jedyna różnica polega na tym, że teraz kompilator nie powie ci, kiedy popełniłeś błąd. Jasne, jest jedna zaleta tego podejścia, że w statycznych językach, aby osiągnąć „ta funkcja akceptuje wszystko, co może szczekać”, trzeba by zaimplementować jawny interfejs `Barker`. Mimo to wydaje się to niewielką zaletą. Czy czegoś mi brakuje? Co właściwie zyskuję, używając dynamicznie wpisanego języka?


title: Jak bezpieczne jest moje prywatne repozytorium na bitbuckecie

text: Czy ktoś wie, jak bezpieczne są moje prywatne repozytoria na bitbucket.org? Czy mogę na tym polegać? Mam kilka repozytoriów i chcę, aby były dostępne tylko dla mnie i dwóch innych.


title: Szybkie prototypowanie i refaktoryzacja

text: Czasami, kiedy zaczynam mały projekt (jak aplikacja na Androida), nie wiem, które podejście zadziała na końcu, i po prostu wybieram jedno podejście i próbuję. Ale jeśli nigdy wcześniej nie stosowałem tego podejścia (dla aplikacji, której nigdy wcześniej nie programowałem), to jest jak wejście w nieznany teren. Nie wiem, których bibliotek użyć (może muszę wypróbować kilka bibliotek) i jest tak wiele nieznanych (takich jak: jak uzyskać surowe dane audio w Androidzie) Więc mój proces rozwoju wygląda tak: * Napisz kawałek kodu, aby sprawdzić, czy podejście ma szansę. (Im bardziej niepewne jest podejście, tym brzydszy jest kod) * Jeśli to działa, refaktoruj dużo, aż stanie się piękne. Myślę, że to strata czasu, gdybym szczegółowo zaplanował mój projekt oprogramowania na tym etapie jak planowanie podróży bez mapy. Czy to część rozwoju aglie? Jak radzisz sobie z nieznanym terenem w tworzeniu oprogramowania?


title: Czy istnieją jakieś aplikacje internetowe z ciekawostkami w czasie rzeczywistym, do których mógłbym się przyczynić?

text: Chcę zbudować aplikację z ciekawostkami, w której ludzie będą mogli wziąć udział w osobistym konkursie ciekawostek z przeglądarki telefonu. Na przykład pytanie pojawia się na ekranie i każdy może odpowiedzieć ze swojego telefonu. Czuję, że to już prawdopodobnie jest coś i chciałbym wnieść wkład w istniejący projekt zamiast budować od podstaw. Ale nie mogę znaleźć czegoś takiego. Czy jest coś takiego?


title: „Warunek ochrony jest fałszywy”

text: Na platformie StackExchange do nauki języka angielskiego jest to pozornie proste pytanie, czy w „ocenia się” należy dodać „być”: ocenia jako fałszywe vs ocenia jako fałszywe „Być” to słowo, które większość programistów Pomyślałbym - czułby się _"w drodze"_. Ktoś już odpowiedział na tę część. I prawdopodobnie nie pomyślałbym o tym zbyt wiele i kliknąłem... _gdyby_ nie było odpowiedzi, że bardziej naturalne zdanie brzmi _"warunek jest fałszywy"_. To doprowadziło mnie do wewnętrznego rozważenia, że to, co uważałem za właściwe słowa, będzie uproszczeniem. _"Warunek jest **spełniony**"_ ... _"Warunek jest **spełniony**"_ przyszedł mi na myśl. Potem pomyślałem o wymienności tego, w jaki sposób używamy słowa „warunek” w znaczeniu „wyrażenia warunkowego” i to sprawiło, że chciałem porozmawiać o bardziej subtelnych punktach. Ryzyko, o którym wspominam, polega na tym, że jeśli mamy powiedzieć, że warunki są „prawdziwe” lub „fałszywe”, oznacza to, że mamy ograniczone słownictwo. Kiedy masz kod, który mówi `if (foo - bar)`, wtedy napotykasz problemy, gdy mówisz o **"warunku"**. Powiedziałbym, że powszechnym użyciem jest to, że „warunek” odnosi się głównie do „wyrażenia warunkowego”; to znaczy, że „warunkiem” byłoby „foo - bar”. Ale nawet jeśli uważamy, że odrzucenie „oceny” jest w porządku, to ponieważ fałszywe wartości w języku mogą różnić się od logicznego fałszu rządzącego stwierdzeniami warunkowymi, powinniśmy preferować „warunek nie jest spełniony” lub „warunek nie jest spełniony”, chyba że naprawdę chcą podkreślić, że ocena okazała się fałszywa. W tym sensie nie uważam, że „warunek jest fałszywy” jako dobry substytut; jeśli ktoś miałby otrzymać dosłowność, może to nawet sugerować, że kod mówi „jeśli (false)”. Uczący się języka angielskiego nie mają szerokiego grona programistów, więc pomyślałem, że przyniosę to pytanie tutaj, aby uzyskać wgląd. Pomyśl o `if (foo - bar)`, gdzie foo i bar są liczbami całkowitymi w języku z osobnym typem logicznym (na przykład C++). Jakie sformułowanie jest najlepsze? Kiedy – jeśli kiedykolwiek – można powiedzieć „warunek ochrony jest fałszywy”?


title: Spring MVC Workflow: wiele konfiguracji dla deweloperów, etapów i produkcji

text: Szukam informacji o najlepszych praktykach obsługi wielu konfiguracji (nie mylić z wieloma plikami konfiguracyjnymi) w celu bezproblemowego rozwoju aplikacji opartej na Spring MVC. Pochodzę ze świata "dużych" frameworków PHP, gdzie wszystko co musisz zrobić to pisać konfiskaty specyficzne dla każdej fazy (dev, staging, production) w osobnych plikach nazwanych tak jak framework chce (Symfony) lub napisać jeden ogromny config plik i podzielenie go na sekcje (Zend), i to faktycznie zadziała. Czasami trzeba też/dodatkowo umieścić dodatkowe, ignorowane pliki `vcs` i to wystarczy. Jak sobie z tym poradzić w Spring MVC lub ogólnie w aplikacjach Tomcat? Jeśli nie jesteś pewien, o czym mówię, zapoznaj się z tym artykułem. Aby wyjaśnić jeszcze bardziej: 1. Mówię (głównie) o `web.xml` i `pom.xml`. 2. Chcę mieć (a może to, o czym marzę): * konfigurację lokalną - dla każdego developera w zespole, aby uruchamiać projekt lokalnie, na `localhost:8080`, wyświetlając pełne komunikaty o błędach i ślady stosu * konfigurację dev - do uruchomienia na serwerze testowym, `dev.example-private.com`, pokaż błędy * konfiguracja staging - podgląd klienta, `staging.example-private.com`, ładne strony błędów, wysyłanie maili z błędami krytycznymi i śladami stosu * konfiguracja produkcyjna - ` example.com, ładne strony błędów, wysyłaj maile z błędami 3. Nie chcę ręcznie zmieniać konfiguracji. Chcę, aby `spring` rozpoznawał środowisko (może za pomocą konfiguracji `tomcat`) i używał odpowiednich plików konfiguracyjnych. Dzieje się tak głównie dlatego, że chcę, aby wdrażanie było tak proste, jak łączenie oddziałów.


title: Jak wybrać odpowiedni procesor graficzny Nvidia do nauki CUDA

text: Jaki byłby dobry procesor graficzny do rozpoczęcia nauki CUDA? Czy jakieś procesory graficzne są nieodpowiednie?


title: Jak najlepiej zaangażować junior developera w projektowanie aplikacji od podstaw?

text: Jesteśmy zespołem 3 programistów (2 doświadczonych devów i junior). Właśnie rozpoczęliśmy nowy projekt. Zaprojektowaliśmy aplikację, skoncentrowaliśmy wysiłki na doborze odpowiedniej architektury, a teraz układamy pierwsze linijki kodu. Piszemy jej rdzeń, który będzie podstawą całej aplikacji. To też nie jest łatwa aplikacja. Trudne wymagania dotyczące wydajności, masowo rozproszony, złożony model jednostki itp. Wszyscy jesteśmy poza naszą strefą komfortu, zwłaszcza junior. Nie ma doświadczenia, aby z góry stworzyć dobry projekt. Nie jest to jednak problem, ponieważ ja i drugi programista jesteśmy po to, aby pomóc i oboje wierzymy w mentoring i budowanie zespołów, ale... nie wiemy dokładnie, jaki byłby najlepszy sposób na zrobienie tego, aby dostał przyjemne doświadczenie i nauczy się maksymalnej ilości umiejętności. Oboje zdaliśmy sobie sprawę, że nie mamy juniora w nowych projektach, tylko w istniejących, gdzie juniorowi było łatwiej, ponieważ miał całą bazę kodu, z której można się uczyć i inspirować. Ale dla tej aplikacji nie mamy prawie żadnego kodu. Dopiero zaczęliśmy. Zastanawialiśmy się nad kilkoma podejściami: * niech spróbuje sam przez kilka dni, a następnie zainterweniuje i zrefaktoruje kod razem z nim, pokieruje go we właściwym kierunku, a następnie powtórz => Może nie być dla niego zabawnym doświadczeniem, ponieważ my będzie wskazywał swoje błędy na każdym refaktorze; * pozwól mu sparować programowanie z jednym z nas => może stać się tylko „obserwatorem” i zgadzać się ze wszystkim, co robimy, bez faktycznego uczenia się lub przetrawiania wielu informacji; * zbuduj szkielet każdego modułu, z solidną konstrukcją, a następnie daj mu moduł, aby dodać brakujące elementy => może nie być zabawne, aby odebrać po nas i istnieje ryzyko, że zwraca uwagę tylko na wypełnienie luk, a nie całego projektu. Jak możemy zaangażować go w projekt, aby nie czuł się w jakiś sposób pozostawiony poza nim i aby wiele się nauczył z doświadczenia i nabrał wystarczającej pewności siebie, aby wypróbować go na własną rękę?


title: Jaka jest właściwa procedura dla scalania subversion?

text: Mamy projekt z kilkoma gałęziami wydania i pniem. Ostatnio dodaliśmy poprawki błędów i nowe funkcje do gałęzi wydania, jednocześnie rozwijając infrastrukturę na magistrali. To spowodowało pewne problemy. Dzisiaj powiedziano mi, żebym scalił zmiany z gałęzi do pnia, używając HEAD jako wersji początkowej/końcowej. Wygenerowało kilkanaście konfliktów, które rozwiązałem głównie akceptując roboczą kopię bagażnika. Po wykonaniu tej czynności znalazłem trochę zaszyfrowanego kodu i kilka zmiennych, które nie należały do funkcji. Oprócz tego, że boli mnie głowa, zmusza mnie to do ponownego przemyślenia sposobu, w jaki podszedłem do łączenia. Czy lepszą praktyką jest scalanie z OSTATNIEJ wersji początkowej, w przeciwieństwie do początku gałęzi? Właściwie najpierw zrobiłem to w ten sposób i nie spowodowało to żadnego zaszyfrowanego kodu ani niewłaściwie umieszczonych zmiennych.


title: Czy rozpowszechnianie zasobów GPLd za pomocą aplikacji innej niż GPL narusza licencję?

text: Próbuję dowiedzieć się, czy mogę rozpowszechniać ikony Faenza, które są na licencji GPL, z jakimś oprogramowaniem na licencji MIT, nad którym pracuję. Co tak naprawdę oznacza licencja GPL, gdy jest stosowana na nośniku innym niż oprogramowanie, takim jak zestaw ikon, który jest używany głównie w aplikacjach? * Jeśli ładuję ikony dynamicznie z plików zewnętrznych zamiast kompilować je do pliku wykonywalnego, czy naruszałoby to licencję GPL? * Jeśli nie, czy zrobiłoby to różnicę, gdyby ikony zostały wkompilowane? * Jeśli mogę skompilować je do programu, czy licencja oznacza tylko, że nie mogę skompilować „kodu źródłowego” ikon w formacie SVG do programu? * Jeśli nie mogę skompilować źródła SVG do programu nie na licencji GPL, czy mogę załadować go dynamicznie? * Nawet jeśli technicznie mogę spakować ikony z moim oprogramowaniem pod niektórymi z powyższych warunków, czy naruszyłbym _duch_ licencji? Istotne: Czy rozpowszechnianie zasobów nieobjętych GPLd za pomocą aplikacji GPL narusza licencję?


title: Półinteligentne narzędzie „różnicowe”

text: Część etapów kontroli jakości wymaganych dla projektu, w który jestem zaangażowany, wymaga, aby osoba odpowiedzialna za integrację nowej wersji pliku źródłowego najpierw obliczyła, ile wierszy zostało dodanych, usuniętych i „zmienionych”. Zmiany mogą obejmować fizyczne przeniesienie całej funkcji lub procedury wokół pliku źródłowego (bez zmiany zawartości, tylko reorganizacja) i jest to liczone jako „brak zmian” podczas faktycznej zmiany wiersza, powiedzmy od a=b; do a=b--; Oczywiście dopasowanie nie powinno zawierać dodatkowych spacji ani komentarzy. Pytanie brzmi: czy możesz wskazać coś (przypuszczam, że na początek wystarczyłby skrypt Perla), co przy danych dwóch wersjach pliku może: Usunąć komentarze Policzyć dodane, usunięte i „zmodyfikowane” wiersze, dając trzy wyniki, a nie liczysz całe funkcje/procedury, które zostały przesunięte w górę lub w dół w pliku bez zmiany działania? Język to C/C++. Obecnie odbywa się to poprzez porównywanie dwóch plików źródłowych i ręczne liczenie wierszy. Wynik nie musi być dokładny - w zasadzie jeśli przekroczysz pewien limit "istotnych zmian", źródło przechodzi przez bardziej skomplikowaną fazę integracji/testowania, więc dopóki wyniki są wystarczająco zbliżone do rzeczywistych zmian, jest OK , w przypadku „zbyt wielu zmian” i tak zostanie przejrzany przez człowieka.