title: Gdzie jQuery pasuje do frameworków, takich jak JavaScriptMVC, BackboneJS, SproutCore i Knockout?

text: Z radością używam **JQuery** przez ostatnie 2 lata i udało mi się stworzyć za jego pomocą naprawdę fajną funkcjonalność... więc czuję się z tym bardzo komfortowo. Wierzę również, że przyszłość sieci będzie kontynuowana na obecnej ścieżce po stronie klienta. **Jednak...** Kolejne wyzwanie wydaje się nadchodzić w postaci różnych frameworków kontrolerów: **KnockoutJS**, **BackboneJS**, **SproutCore**, **JavaScriptMVC** (lista jest na). Dodatkowo istnieje kilka świetnych narzędzi **AMD Loader**, takich jak **RequireJS** czy **LabJS** itp. Jednak jQuery ma teraz wbudowane funkcje „define” i „then”. **Coraz trudniej śledzić to wszystko...** A teraz moim zadaniem wydaje się być ocena/decydowanie o strategicznym kierunku korzystania z jakiejś formy klienta frameworka MVC lub MVVM -strona...ale mam tyle pytań. * Gdzie **JQuery** **dopasowuje się** do różnych struktur kontrolerów wspomnianych powyżej? * Czy **JQuery** **używane obok** każdego z nich, czy też niektóre z nich mają własną wbudowaną wersję w stylu **JQuery**? * Czy narzędzia takie jak **RequireJS** **nadal są potrzebne**, jeśli zaimplementujesz jedną z wymienionych powyżej platform kontrolerów? * Czy możliwości `define` i `then` wbudowane w **JQuery** **teraz zastępują** wspomniany powyżej AMD Loader? * Który wydaje się najbardziej modułowy? (patrz uwagi poniżej) **UWAGI:** Jedną z rzeczy, których nie chcę w żadnej przyszłej strukturze, jest wymóg korzystania z ogromnej ilości funkcji, z których nie korzystam. To znaczy, wolałbym używać frameworka, który jest naprawdę modułowy. Na przykład, aby korzystać z interfejsu użytkownika jQuery, musisz przyjąć wiele innych podstawowych bibliotek, których możesz nie używać. Będę eksperymentował z każdym z nich, ale niektóre PRAWDZIWE opinie byłyby świetne. Widziałem kilka „podobnych” pytań, ale żadne tak naprawdę nie odpowiedziało na powyższe przekrzywienie. Z góry dziękuję!


title: Przepływ pracy dla zaciemnionego kodu PHP z ochroną PHP

text: Załóżmy, że mam aplikację internetową opartą na bazie danych napisaną w PHP. Po zaciemnieniu kodu PHP protect zostanie skopiowany na serwer hostingowy. I oto pytanie. Jaki jest obieg pracy programisty, gdy jest błąd w aplikacji i musi edytować kod PHP, aby go naprawić? Jasne jest, że nie może debugować (i edytować) bezpośrednio zaciemnionego kodu.


title: Mobilny wieloplatformowy pakiet SDK do aplikacji wymagających dużej mocy obliczeniowej

text: Znam zestaw narzędzi PhoneGap do tworzenia aplikacji mobilnych na praktycznie wszystkie platformy mobilne o znaczącym udziale w rynku. Jednak kod w PhoneGap, który jest współużytkowany przez różne platformy, jest napisany w JavaScript. Chociaż lubię JS, uważam, że nie nadaje się on do zadań wymagających dużej mocy obliczeniowej. Sytuacja z Titanium jest prawie taka sama. **Czy jest więc jakiś sposób, aby stworzyć wieloplatformową aplikację mobilną, która ma intensywny obliczeniowo kod współdzielony między platformami?** Trochę kontekstu: Oczywiście nie chcę implementować czasochłonnego algorytmu w wielu różnych języki, ponieważ narusza to DRY, zwiększa ryzyko wyślizgnięcia się błędów w co najmniej jednej wersji i wymaga działania standardowego kodu. Przyjrzałem się narzędziom Xamarin MonoTouch i Mono dla systemu Android, ale chociaż obejmują one systemy iOS i Android, nie są tak wszechstronne we wdrażaniu jak PhoneGap. Z drugiej strony (IMO) statyczny charakter C# jest bardziej odpowiedni do intensywnych obliczeń niż JS. Czy są jakieś inne SDK/narzędzia odpowiednie do zadania, o których nie wiem lub punkt dotyczący powyższego, który przegapiłem? Ponadto przesyłanie danych do usługi sieciowej w celu przetworzenia nie wchodzi w grę ze względu na wymagany ruch.


title: zadanie php wymagające dużej ilości pamięci i czasu

text: Przepraszam, jeśli to pytanie zostało zadane wcześniej, ale nie mogłem znaleźć niczego użytecznego. Pracuję nad projektem dla klienta i aktualnie mam do wykonania pętlę przez tabelę użytkowników, która ma około 3000 rekordów i wciąż rośnie. Muszę wykonać kilka obliczeń na noc, których będę używał crona/php. Skrypt obliczeniowy zajmuje około 3,5 MB pamięci, a jego uruchomienie zajmuje około 1 sekundy. Podczas ładowania poszczególnych użytkowników moja obecna konfiguracja php radzi sobie z tym dobrze, ale jeśli spróbuję zapętlić listę użytkowników, upłynie czas wykonania mojego skryptu php. Po przeszukaniu przeczytałem, że mogę sprawić, by strona przeładowała się sama po każdym obliczeniu użytkownika i po prostu zachowam moje poprzednie miejsce w pętli i to brzmi jak dobry pomysł, ale chciałem usłyszeć kilka opinii od innych, którzy zajmowali się podobnym sytuacje i sposób, w jaki radziłeś sobie z tego typu zadaniami. Dziękuję.


title: Dlaczego niektóre kody JavaScript muszą być napisane w różnych tagach, a nie w tych samych?

text: Kiedy korzystałem z pliku modernizr, natknąłem się na ten problem, w którym muszę zaczerpnąć plik i wywołać skrypt. <script src="js/modernizr-min.js"></script> <script> if (!Modernizr.input.placeholder){ $('input[placeholder], textarea[placeholder]').placeholder(); } </script> Dlaczego skrypt nie działa, gdy jest osadzony w tym samym tagu skryptu. Wiele razy przechodziłem przez tę sytuację, ale nie mogłem zrozumieć, co powoduje ten problem. Czy to, że skrypty muszą być napisane w dwóch różnych tagach skryptów, aby działały, albo co zawiedzie.


title: Jakie jest najbardziej inspirujące przemówienie dewelopera, którego kiedykolwiek oglądałeś?

text: _Proszę umieścić bezpośredni link do niego._ **Wymagane** : * Nadal dostępne online (proszę umieścić bezpośredni link do niego) * Musi to być przemówienie obecnego lub byłego programisty * Popularność mówcy nie ma znaczenia * Grupa docelowa powinna być innymi programistami * Nie jest wymagane, aby tematem było programowanie (zadanie). Bardziej szukam tematu ogólnie rozwijającego się tutaj w ramach P.SE niż SO. * Wyjaśnij, dlaczego było to inspirujące _(proszę, native speaker, edytuj moje pytanie)_


title: Czy programowanie Windows Phone może być wykonywane zdalnie?

text: Czy programowanie Window Phone 7 lub 8 może odbywać się zdalnie, na przykład na instancji Amazon EC2 lub wynajętym VPS z systemem Windows, za pomocą klienta RDP lub VNC z komputera PC z systemem Linux (lub OS X, a może nawet iPad)?


title: Jakie są najlepsze praktyki wycofywania przestarzałego kodu?

text: Mam potrzebę wycofania przestarzałej metody. Znam atrybut `[Przestarzałe]`. Czy firma Microsoft ma zalecany przewodnik po najlepszych praktykach w tym zakresie? Oto mój obecny plan: A. Nie chcę tworzyć nowego zestawu, ponieważ programiści musieliby dodać nowe odniesienie do swoich projektów i spodziewam się, że mój szef i współpracownicy będą musieli się smucić, jeśli będą musieli to zrobić. Nie utrzymujemy również wielu wersji zestawu. Używamy tylko najnowszej wersji. Zmiana tej praktyki wymagałaby zmiany naszego procesu wdrażania, co jest dużym problemem (musimy nauczyć ludzi, jak robić rzeczy z TFS zamiast FinalBuilder i skłonić ich do rezygnacji z FinalBuilder) B. Oznacz starą metodę jako przestarzałą. C. Ponieważ zmienia się implementacja (nie podpis metody), muszę zmienić nazwę metody, zamiast tworzyć przeciążenie. Tak więc, aby uświadomić użytkownikom właściwą metodę, planuję dodać wiadomość do atrybutu `[Przestarzałe]`. Ta część mnie niepokoi, ponieważ jedyną zmianą, jaką wprowadzam, jest oddzielenie metody od ciągu połączenia. Ale ponieważ nie dodaję nowego zespołu, nie widzę sposobu na obejście tego. Wynik: [Przestarzałe("Nie używaj już tego, ponieważ nie implementuje IMyDbProvider. Zamiast tego użyj XXX.")]; /// <summary> /// /// </summary> /// <param name="settingName"></param> /// <returns></returns> publiczny słownik statyczny<string, Setting> ReadSettings (string settingName) { return ReadSettings(settingName, SomeGeneralClass.ConnectionString); } public Dictionary<string, Setting> ReadSettings2(string settingName) { return ReadSettings(settingName);// IMyDbProvider.ConnectionString dodany prywatny element członkowski do klasy. Prawdopodobnie trzeba zrobić z tego metodę instancji. }


title: WWDC 2012 ogłosiło funkcje na iOS 5?

text: Jestem stosunkowo nowy w rozwoju iOS, więc po obejrzeniu kilku filmów WWDC zapowiadających nowe niesamowite funkcje dla iPhone SDK, wciąż mam kilka pytań dotyczących ich obsługi starszych urządzeń. W szczególności: * Czy nowe funkcje kompilatora (takie jak obsługa literałów, automatyczna synteza itp.) wymagają systemu iOS 6 na urządzeniu docelowym, czy też nowy kod stylu można wdrożyć na urządzeniach z systemem iOS 5? * Automatyczny układ na iOS, to samo pytanie. Czy będzie obsługiwany tylko na iOS 6, czy też 5? Jeśli jest to tylko 6, jakiego rodzaju awaryjnego rozwiązania oczekujemy? Byłbym bardzo wdzięczny, gdyby ktoś mógł mi to wyjaśnić, ponieważ zastanawiam się nad przepisaniem mojego starszego niedokończonego projektu i chciałbym użyć niektórych z ulepszonych funkcji SDK.


title: Przekształcenie problemu w dane

text: OK, mam aplikację, którą tworzę, ale po prostu naprawdę nie jestem pewien, jak podejść do problemu. Pomysł jest dość prosty. Po prostu nie jestem pewien, jak owinąć go w model danych (lub nawet jeśli powinienem). TBH Czuję, że komplikuję to bardziej, niż jest to konieczne. Jak to działa. Aplikacja będzie miała kółka na górze z rzędu, które należy połączyć z kółkami na dole w rzędzie. 10 kółek u góry. 10 na dole. Jedno połączenie na parę kropek. W każdym razie mogę połączyć kropki. Po prostu nie jestem pewien, jak zapakować to w model danych, abym mógł przeanalizować, co zostało połączone i sprawdzić, czy jest to prawidłowe, czy nie. Kręgi będą pytaniami i odpowiedziami. Mogę stworzyć tablicę obiektów `question` z właściwościami `question` i `answer`. Mogę następnie wyświetlić je jako pary kropek. Po prostu nie jestem pewien, jak zapisać, które pytania zostały połączone z jakimi odpowiedziami. Użytkownik może podać błędną odpowiedź, ponieważ wszystkie one są sprawdzane na końcu. Myślałem o użyciu SpriteKit, ale to nie jest ograniczenie. Mógłbym użyć UIKit lub czegoś innego. TBH, to pytanie jest dość wolne od języka, ponieważ szukam sposobu na jego modelowanie.


title: Jak zaprezentować stabilny model danych w publicznym API, który pozwala na zmianę wewnętrznych struktur danych bez naruszania publicznego widoku danych?

text: Jestem w trakcie tworzenia aplikacji umożliwiającej użytkownikom pisanie skryptów C#. Skrypty te pozwalają użytkownikom wywoływać wybrane metody oraz uzyskiwać dostęp do danych w dokumencie i manipulować nimi. Działa to dobrze, jednak w wersji rozwojowej skrypty uzyskują bezpośredni dostęp do (wewnętrznych) struktur danych dokumentu. Oznacza to, że gdybyśmy mieli zmienić wewnętrzny model/strukturę danych, istnieje duża szansa, że czyjś skrypt nie będzie się już kompilował. Oczywiście chcemy zapobiec tej przełomowej zmianie, ale nadal chcemy umożliwić użytkownikowi pisanie rozsądnego kodu C# (bez ograniczania w rezultacie sposobu, w jaki rozwijamy nasz wewnętrzny model danych). Dlatego musimy oddzielić nasz skryptowy interfejs API i jego struktury danych od naszych wewnętrznych metod i struktur danych. Mamy kilka pomysłów, w jaki sposób możemy umożliwić użytkownikowi dostęp do czegoś, co jest faktycznie stabilną publiczną wersją wewnętrznych danych dokumentu*, ale chciałem rzucić to pytanie komuś, kto może mieć prawdziwe doświadczenie w tym zakresie problem. Uwaga: struktura danych naszego wewnętrznego dokumentu jest dość złożona i zawijanie jej może być dość trudne. Wiemy, że chcemy udostępniać jak najmniej w naszym publicznym interfejsie API, zwłaszcza, że gdy już się pojawi, to na dobre. Czy ktoś może pomóc? * W jaki sposób języki skryptowe / interfejsy API oddzielają swoje publiczne API i struktury danych od ich wewnętrznych struktur danych? * Czy nie ma prawdziwej alternatywy dla konieczności napisania złożonej warstwy interakcji? Jeśli musimy to zrobić, jakie jest dobre podejście lub wzorzec do pakowania złożonych struktur danych, które zawierają zagnieżdżone obiekty, w tym kolekcje? Przyjrzałem się wzorcowi fasady API, który wygląda na to, że próbuje rozwiązać tego rodzaju problemy, ale czy są alternatywy? *Jednym z pomysłów jest zbudowanie fasady danych, która będzie stabilna we wszystkich wersjach naszej aplikacji. Fasada uwidacznia zestaw obiektów danych fasady, które są używane w kodzie skryptu. Zachowują one zgodność wsteczną i zapewniają dostęp do modelu danych naszego wewnętrznego dokumentu.


title: Czy w takich przypadkach należy zawsze przekazywać niezbędne minimum danych do funkcji?

text: Załóżmy, że mam funkcję IsAdmin, która sprawdza, czy użytkownik jest administratorem. Załóżmy również, że sprawdzanie przez administratora odbywa się poprzez dopasowanie identyfikatora użytkownika, nazwy i hasła do jakiejś reguły (nieważne). W mojej głowie są wtedy dwie możliwe sygnatury funkcji: public bool IsAdmin(User user); public bool IsAdmin (identyfikator int, nazwa ciągu, hasło ciągu); Najczęściej wybieram drugi typ sygnatury, myśląc, że: * Sygnatura funkcji daje czytelnikowi dużo więcej informacji * Logika zawarta wewnątrz funkcji nie musi wiedzieć o klasie `User` * Zwykle daje to niewielkie mniej kodu wewnątrz funkcji Czasami jednak kwestionuję to podejście, a także zdaję sobie sprawę, że w pewnym momencie stałoby się to niewygodne. Gdyby na przykład funkcja mapowała między dziesięcioma różnymi polami obiektów w wynikowy bool, oczywiście wysłałbym cały obiekt. Ale poza tak surowym przykładem, nie widzę powodu, aby przekazać rzeczywisty obiekt. Byłbym wdzięczny za wszelkie argumenty przemawiające za którymkolwiek z tych stylów, jak również wszelkie ogólne spostrzeżenia, które możesz zaoferować. Programuję zarówno w stylu obiektowym, jak i funkcjonalnym, więc pytanie powinno dotyczyć wszystkich idiomów.


title: Jakie wzorce Java nadają się do szybkiego, algorytmicznego kodowania?

text: Jestem na studiach, a ostatnio zacząłem startować w zawodach programistycznych z moimi przyjaciółmi. Konkursy te polegają na szybkim rozwiązywaniu problemów algorytmicznych. To świetna zabawa, ale jest jeden problem: jestem zmuszony używać Javy. (Moi koledzy z zespołu używają Javy.) **Tło:** Jestem programistą JavaScript-samoukiem i pisanie kodu w Javie boli. Uważam, że jest to bardzo gadatliwe i nieelastyczne, i czuję się spowolniony, kiedy muszę deklarować typy i decydować, której z osiemdziesięciu list struktury danych użyć. Jestem również sfrustrowany brakiem funkcji programowania funkcjonalnego i tym, jak gadatliwe jest używanie wyrażeń regularnych, tablic i słowników. Jako przykład rozważmy problem znalezienia długości najdłuższego ciągu kolejnych znaków w danym ciągu. Tak więc łańcuch `XX22BBBBccXX222` dałby `4`, jako łańcuch czterech `B`. W Javie musiałbym przechodzić przez pętlę i ręcznie liczyć znaki oraz ręcznie śledzić maksimum. (Przynajmniej z tego, co mi wiadomo - nie znam się na Javie tak dobrze, jak na JavaScript.) W JavaScript znalazłbym to tak: var max = Math.max.apply(Math, str.match(/(.)\1*/g).map(function (s) { return s.length; })); W mojej książce znacznie szybciej i prościej. **Pytanie:** jakie funkcje, techniki lub wzorce Java są odpowiednie do szybkiego kodowania algorytmicznego?


title: Czy istnieje wzorzec projektowy zapobiegający nieaktualnym odniesieniom?

text: Myślałem o projekcie klamek na zamówienie. Chodzi o to, aby klienci nie kopiowali wokół dużych obiektów. Teraz prawdopodobnie wystarczyłaby do tego zwykła klasa uchwytu, ale nie rozwiązuje to „problemu z zawieszonymi referencjami”; Jeśli klient ma wiele uchwytów tego samego obiektu i usuwa obiekt za pośrednictwem jednego z nich, wszystkie inne byłyby nieprawidłowe, ale nie wiedzą o tym, więc klient może zapisywać lub czytać części pamięci, do których nie powinien mieć dostępu. _Czy istnieje wzorzec projektowy, który temu zapobiega?_ * * * Dwie koncepcje: 1. Wzorzec przypominający obserwatora, w którym destruktor obiektu powiadamia wszystkie uchwyty. 2. „Uchwyty klamki” (czy coś takiego w ogóle istnieje?). Wszystkie uchwyty tak naprawdę nie wskazują na obiekt, ale na inny uchwyt. Kiedy obiekt zostanie zniszczony, ten „główny uchwyt” unieważnia sam siebie, a zatem wszystko, co na niego wskazuje.


title: Przechowywanie dokumentów w Bazie Danych vs CMS w aplikacji JSF, Seam, Hibernate w chmurze

text: Mam zamiar zacząć od aplikacji używającej JSF 2, Seam 3, Hibernate i Hibernate search o następujących cechach: * Użytkownicy będą przesyłać dokumenty (pdf, doc). * Mogą istnieć miliony dokumentów. * Aplikacja zostanie wdrożona w chmurze. Oto moje pytania: 1. Jakie będzie najlepsze miejsce do przechowywania dokumentów: baza danych czy system zarządzania treścią (CMS)? 2. Jeśli wybieram bazę danych, czy powinienem wybrać db zorientowany na dokument? 3. Czy istnieje integracja między Hibernate a bazami danych zorientowanych na dokumenty lub CMS w celu pobierania dokumentów i indeksowania ich w Lucene? Zasadniczo szukam podejścia, które będzie dobre do przechowywania dokumentów w chmurze, łatwego dostępu do dokumentów do indeksowania i pamiętania o wydajności. Wszelkie sugestie / doświadczenia lub link na ten temat będą dobre.


title: Czy powinienem przestrzegać wzorców dokumentacji projektu open source, nawet jeśli są one złe?

text: Rozważałem tworzenie modułów i tym podobnych dla różnych języków i innych rzeczy open source. W przypadku, gdy dokumentacja nie jest określona, ale jest de facto standardem komunalnym lub całkowicie ad hoc; czy powinienem spróbować ulepszyć ten standard w moim kodzie, jeśli nie jest on zgodny z tym, czego nauczyłem się, że jest dobrą dokumentacją z renomowanych źródeł ( _Code Complete_ i inni)? A może powinienem zachować spójność we wszystkich, niezależnie od jakości?


title: Jak napisać interpreter/parser poleceń?

text: Problem: Uruchom polecenia w postaci ciągu. * przykład polecenia: `/user/files/ list all;` odpowiednik: `/user/files/ ls -la;` * inny: `post tw fb "W JAKI SPOSÓB ZATRZYMAĆ POTWOR ŁASKOTKI?";` odpowiednik : `post -tf "W JAKI SPOSÓB ZATRZYMAĆ POTWOR ŁASKOTKI?;"` Bieżące rozwiązanie: tokenize string(ciąg, tablica); switch(pierwsza pozycja w tablicy) { case "command": if ( argument1 > stuff) { // wykonaj rzeczywistą pracę; } } Problemy, które widzę w tym rozwiązaniu to: * Brak sprawdzania błędów innych niż zagnieżdżone ifs-else w każdym przypadku. Scenariusz staje się bardzo duży i trudny do utrzymania. * Polecenia i odpowiedzi są zakodowane na stałe. * Brak możliwości sprawdzenia, czy flagi są poprawne, czy brakuje parametrów. * Brak inteligencji sugerującej „możesz chcieć uruchomić $command”. I ostatnią rzeczą, której nie mogę zająć się, są synonimy w różnych kodowaniach, na przykład: case polecenie: case polecenie_in_hebr.: do stuff; przerwanie; Ten ostatni może być banalny, ale cóż, chciałbym zobaczyć solidne podstawy tego rodzaju programu. Obecnie programuję to w PHP, ale może to zrobić w PERL.


title: Przekształcenie Fouriera do przodu i do tyłu w java

text: Czy ktoś może zaproponować bibliotekę java do wykonywania transformacji Fouriera w przód iw tył na obrazach? Albo RGB, skala szarości lub binarna, to nie ma znaczenia, ponieważ przekonwertowałem obraz na wszystkie te elementy ;) Przeszukałem, ale większość bibliotek przetwarzania obrazu, takich jak marvin, JAI itp., nie ma transformacji Fouriera. Pomyślałam więc, że każdy, kto zrobił to wcześniej, może mi coś zaproponować


title: Jak to zrobić : Nextag i inne dynamiczne strony do pobierania danych

text: Wczoraj natknąłem się na Nextag, czyli serwis do porównywania cen różnych produktów różnych sprzedawców. **Czy ta witryna jest zautomatyzowana?** Czy proces pobierania danych z różnych witryn można zautomatyzować w celu porównania ze sobą. Bardzo się starałem zrozumieć, ale nie mogłem zdać sobie z tego sprawy i teraz uważam, że należy nimi zarządzać ręcznie, ponieważ na każdej innej stronie sprzedawcy nazwa produktu była inna i bardzo trudno było rozpoznać podobieństwo do konkretnego produktu. Stworzyłem taki system, w którym można dodać produkt, a następnie dodać odpowiednich sprzedawców i ich ceny. Tutaj wszystko jest ręczne. Dzisiaj będę wprowadzał dane do systemu, ale pomyślałem, że lepiej będzie wiedzieć, czy istnieje sposób na zautomatyzowanie tej rzeczy. Albo idę dobrą drogą, bo nie może być automatyzacji dla takiego systemu, bo dane nie mają podobieństw.


title: Zaprojektuj RESTful API, aby zaktualizować zasób należący do innego zasobu

text: Zajmuję się tworzeniem ASP.NET MVC Web Api z C#. Mam następujące dwa zasoby. Grupa: public class Group { public int GroupId { get; ustawić; } ciąg publiczny NazwaGrupy { get; ustawić; } publiczny Właściciel Użytkownika { get; ustawić; } public Lista<Użytkownik> Członkowie { get; ustawić; } public Lista<Wiadomość> Wiadomości { get; ustawić; } } Wiadomość: public class Wiadomość { public int MessageId { get; ustawić; } ciąg publiczny Treść { get; ustawić; } public DateTime DateSent { get; ustawić; } public Group ToGroup { get; ustawić; } publiczny Nadawca użytkownika { get; ustawić; } publiczny Odbiorca Użytkownika { get; ustawić; } public Lista<Link> Linki { get; ustawić; } } Mam też te dwa identyfikatory URI. Ten do udostępnienia zasobu `Message`: "api/messages/{id}" A ten do udostępnienia wiadomości grupy: "api/groups/{groupId}/messages/{messageId}" Używam drugiego, aby uzyskać bezpośredni dostęp do przesłanie grupy (nie wiem, czy to dobry projekt). Teraz zastanawiam się, którego URI muszę użyć, aby dodać nową wiadomość dla grupy. Myślę, że muszę użyć drugiego URI, aby otrzymać wiadomości grupy. I pierwszy identyfikator URI do dodawania nowych wiadomości. Co myślisz?


title: Zamieszanie „stosu” w programowaniu na poziomie zespołu

text: Czym dokładnie jest „stos”? Czytałem artykuły, próbowałem to zrozumieć poprzez moje zrozumienie, doświadczenie i wykształcone zgadywanie programowania i komputerów, ale jestem tu trochę zakłopotany. „Stos” to region w pamięci RAM? A może jest to jakaś inna przestrzeń, której nie jestem tutaj pewien? Procesor wpycha bity przez rejestry na stos w pamięci RAM, czy mam tu coś złego? Ponadto procesor przenosi bity z pamięci RAM do rejestru, aby je „przetworzyć”, na przykład porównanie, arytmetyka itp. Ale co właściwie może pomóc w zrozumieniu, w jakimś wizualnym lub słownym opisie lub w obu, jak zaimplementować pomysł na „stos” tutaj? Czy stos jest faktycznie taki sam terminologicznie z „stosem maszynowym”, co oznacza, że jest w pamięci RAM? * * * Wiem, czym jest stos oprogramowania. Wiem o LIFO, FIFO itp. Chcę tylko lepiej zrozumieć stos na poziomie montażu, co to jest, gdzie jest, jak dokładnie działa itp...


title: Przechowywanie IEnumerable jako zmiennej instancji — czy oczekiwanie na zmianę to zapach kodu?

text: Mam coś, co działa jak lista o stałym rozmiarze — w moim programie nazywa się to `FixedSizeStack<T>`. Użyję go do przedstawienia X ostatnich wydarzeń, które miały miejsce. Ta lista zdarzeń zostanie następnie zbadana przez różnych obserwatorów i jeśli wykryją wzorce, wywołają pewne działanie. Oczywiście nie widzę powodu, dla którego mieliby wiedzieć o `FixedSizeStack<T>` \- dla mnie sensowne jest przedstawienie go akcjom jako IEnumerable. Rozważam podanie im tej listy zdarzeń w ich konstruktorach, a następnie wywołanie czegoś takiego jak `PreviewEvent(Event e);` i `EventOccured();` i będą iterować po tym IEnumerable. Czuję się trochę nieswojo, wyliczając ten IEnumerable wiele razy i czyniąc z niego część umowy, w której wyliczenie zmienia się - czy uważasz, że to rozsądna metoda?


title: Czy powinienem umieścić logikę obliczeń w podmiocie czy w warstwie biznesowej?

text: Ostatnio spotkałem się z pytaniem, czy proste obliczenia powinny być umieszczone w warstwie Entity, czy też Entity ma być czysto tylko do przechowywania surowych danych i pozostawienia logiki obliczeń w warstwie biznesowej. Więc moje pytanie brzmi, czy sensowne jest hermetyzacja prostych obliczeń we właściwościach w klasie jednostek?


title: Jaka jest różnica (jeśli istnieje) między (null != $object) a ($object != null) podczas korzystania z PHP?

text: Jestem przyzwyczajony do Javy i dlatego zawsze uważam, że warunki są interpretowane od lewej do prawej, tj. jest zasadnicza różnica w `null != $obj` i `$obj != null` Teraz wydaje się, że tak nie jest w przypadku PHP. Czy mogę zrobić coś złego w PHP, kiedy zawsze zaczynam od `null` po lewej stronie? Czy mogę zachować swoje zachowanie z Javy, czy też muszę nauczyć się robić coś innego, gdy mam do czynienia z warunkami PHP?


title: W jakich językach właściwie programują dzisiejsze dzieci? Czy ktoś ma prawdziwe dane?

text: W latach 80. uczelnie uczyły Pascala, ponieważ jest łatwy do nauczenia, podczas gdy ja i wielu innych, takich jak ja, uczyliśmy się BASIC, ponieważ było to nie tylko łatwe do nauczenia, ale także dostępne i modne (jak na niezwykle liberalną definicję mody). Przyszło mi do głowy, że dane empiryczne dotyczące rzeczywistych języków programowania, z których korzystają dzieci, powinny być dobrym wskaźnikiem tego, który język byłby idealnym pierwszym wyborem dla nauczycieli. Pamiętaj, że to pytanie nie brzmi „jak myślisz, jaki jest dobry język programowania dla dzieci?”


title: Gdzie optymalizujesz?

text: Istnieją dwa obszary, które można ewentualnie zoptymalizować pod kątem szybkości: * Gdzie spędza się najwięcej czasu * Kod, który nazywa się najczęściej W którym miejscu najlepiej rozpocząć optymalizację? Często kod, który jest wywoływany najczęściej, ma już krótkie czasy wykonania. Czy optymalizujesz wolniejsze, mniej wywoływane obszary, czy poświęcasz czas na optymalizację szybszych, intensywniej wykorzystywanych obszarów?


title: Najgorszy standard kodowania, jakiego kiedykolwiek musiałeś przestrzegać?

text: Czy kiedykolwiek musiałeś pracować zgodnie ze standardami kodowania, które: * Znacznie obniżyły twoją produktywność? * Czy pierwotnie zostały uwzględnione z ważnych powodów, ale były przechowywane długo po tym, jak pierwotny problem stał się nieistotny? * Czy na liście były tak długie, że nie dało się ich wszystkich zapamiętać? * Czy uważasz, że autor po prostu starał się pozostawić swój ślad, zamiast zachęcać do dobrych praktyk kodowania? * Nie miałeś pojęcia, dlaczego zostały uwzględnione? Jeśli tak, jaka jest twoja najmniej ulubiona zasada i dlaczego? * * * Kilka przykładów tutaj


title: Czy dobrze jest przeglądać programy z seniorami i szefem, nawet jeśli wszystko działa dobrze?

text: W mojej firmie, przed realizacją jakiegokolwiek projektu, mój szef prosi moich seniorów o recenzowanie programów napisanych przeze mnie lub innych członków zespołu lub czasami szef zasiada z nami do recenzji. Myślę, że to dobry sposób na zdobycie wiedzy, ale czasami, gdy programy działają dobrze, nie działają tak samo po przeglądzie i muszę ponownie zajrzeć do mojego programu. Mówią, że przegląd pomaga zoptymalizować wykonywanie programu i zapytań, ale czy możemy preferować optymalizację nad rzeczywiste działanie programu?


title: Czy "konfigurowalne" języki programowania są powszechnie używane niż nie jako "konfigurowalne"?

text: Czy języki, które są bardzo konfigurowalne, takie jak Python (patrz na przykład goto w Pythonie, lekkie sprawdzanie typów Pythona) i JavaScript (patrz jQuery jako jeden przykład tego) są powszechnie używane niż języki, których nie można bardzo dostosować?


title: Jaki jest powszechnie akceptowany termin określający zmienną łańcuchową, która prawdopodobnie zawierałaby ścieżkę i nazwę pliku?

text: W przypadku funkcji, które muszą indeksować pliki w katalogu i zmieniać ich nazwy FileName0001, FileName0002 itd... Często muszę napisać funkcję, która oddziela nazwę pliku od ścieżki pliku i zmienia nazwę pliku. Kiedy ponownie składam nazwę pliku i ścieżkę pliku, nie mam bardzo dobrej nazwy dla zmiennej, która zawiera oba z nich i zwykle po prostu kończę łączenie ich za każdym razem, gdy chcę ich użyć (zwykle używając ich jako parametrów dla funkcji oznaczonych jako nazwa pliku lub ścieżka do pliku), więc nigdy tak naprawdę nie wiem, co robię, dopóki nie zauważę, że wiele plików jest zapisanych w tym samym katalogu, co moje pliki binarne. W każdym razie, jak nazwać nazwę pliku i ścieżkę pliku? Nie chcę nazywać tego plikiem, ponieważ zwykle oznacza to binarne informacje znajdujące się za plikiem. Nie chcę nazywać tego URI, ponieważ zwykle oznacza to, że mam jakiś protokół, którego nie mam. Chcę tylko dobrego sposobu na oznaczenie „c:\somedir\somedir\somedir\somefile.txt”, aby rozładować ten bałagan, w którym właśnie zdałem sobie sprawę, że jestem. * * * Proszę nie wymieniać tylko swoich osobistych preferencji . Myślę, że doskonała odpowiedź powinna „umieścić jej źródła”. (jak w, podaj link do repozytorium z dobrym przykładem kodu używanego zgodnie z opisem)


title: Podejście do pracy z wieloma programistami na jednym module/funkcji

text: Jak 2 lub więcej programistów może zakodować określoną funkcję/moduł oprogramowania? Załóżmy, że moduł jest duży i bogaty w funkcje. Jak mieliby zapobiec wzajemnemu nakładaniu się kodu? Powiedzmy, że mamy tę samą metodę, ale jest zaimplementowana w inny sposób. Czy uważasz, że lepiej byłoby skupić się tylko na określonej funkcji? Czy system kontroli wersji, taki jak Git, pomógłby rozwiązać problem? Czy to prawda, że pozwala to programistom na posiadanie tych „gałęzi”, a następnie scalanie ich później? Jakie jest twoje zdanie na ten temat?


title: Jakie aplikacje do programów samodostosowujących się przychodzą Ci do głowy?

text: Hej wszystkim! Przez programy samodostosowujące się rozumiem programy, które są w stanie dostosować się do konkretnych sytuacji. Na przykład potrafią się naprawiać lub zmieniać swoje zachowanie zgodnie z potrzebami użytkownika. Oczywiście potrzebują jakiegoś rodzaju modułów sztucznej inteligencji, takich jak Intelligent Agents lub tak dalej. Moje pytanie brzmi, jakie aplikacje dla tych programów możesz wymyślić/istnieć? Oczywistą destrukcyjną (!) aplikacją może być złośliwy program/wirus, który może zmienić swoją strategię atakowania ofiary w oparciu o pewne czynniki. Powodem tego pytania jest to, że chcę przeprowadzić badania na ten temat jako projekt uniwersytecki i chcę wiedzieć o różnych rzeczach i zastosowaniach, które mogą przychodzić na myśl! Każda odpowiedź jest bardzo mile widziana! :-)


title: Co jest lepsze: dla prawidłowej długości bufora?

text: To jest podstawowe pytanie. Ale myślę, że zrozumienie tego byłoby pomocne w zabawie z buforami w „C”. Dziękuję. ## Scenariusz Tylko przykładowy fragment kodu char *test_buff = (char *) malloc(512); //przydziel 512 bajtów w pamięci sterty. bzero(test_buff, 512); //Resetuj bufor zamiast śmieci/śmieci. /* losowy kod do wypełnienia bufora o nazwie "test_buff"...*/ ... /* Wyślij dane do innego hosta/systemu [choć to nie ma znaczenia] * używając bufora "test_buff". */ sendto(sock_descriptor, test_buff /*bufor do wysyłania danych*/, sizeof(*test_buff) ,...,...); // opcja-1 /* LUB */ sendto(sock_descriptor, test_buff /*bufor do wysłania danych*/, 512 /* rzeczywisty nieprawidłowy rozmiar*/ ,...,...); // opcja-2 ## Pytanie 1. Która z dwóch opcji jest lepszym [pomiędzy opcją-1/opcją-2] sposobem wykorzystania bufora? Mam nadzieję, że opcja 1 ma sens, ponieważ ma długość/rozmiar prawidłowych bajtów danych bufora wysyłania lub w tym przypadku "test_buff". Dziękuję za poświęcony czas i wkład.


title: O czym io wszystkich obszarach Linuksa powinien wiedzieć programista PHP? (Jak tylko polecenia lub coś zaawansowanego)

text: Stworzyłem stronę internetową w PHP, ale zaimplementowałem ją w systemie operacyjnym Windows i hostowałem na serwerze Windows. Właśnie przeszukałem rynek pracy PHP, aby poznać bieżące wymagania technologiczne i aktualizować swoją wiedzę zgodnie z rynkiem pracy. Widzę, że więcej proszą o stos LAMP. Rozumiem rodzaj umiejętności wymaganych od programisty w PHP i MySQL. Ale przechodząc do Linuksa i Apache, jakich dokładnie umiejętności firmy oczekują od programisty? Na czym powinienem się skupić w przypadku Linuksa, Apache podczas tworzenia mojej strony internetowej przy użyciu tego stosu LAMP? Zamierzam stworzyć nową stronę internetową i chcę, aby używała LAMP. Ale chcę wiedzieć, jaką to robi różnicę? Dlaczego stos LAMP zyskał większy popyt na rynku pracy w porównaniu do WAMP? Edycja: Przepraszam, myślałem, że moje pytanie powoduje zamieszanie ... więc umieściłem je w różnych słowach jako Co i wszystkie obszary Linuksa, o których powinien wiedzieć programista PHP? (Jak tylko polecenia lub coś zaawansowanego) Uwaga: jestem nowicjuszem w Linuksie


title: Czy mądrze jest pytać podczas rozmowy kwalifikacyjnej o decyzje projektowe dotyczące produktu?

text: Ostatnio myślałem o pytaniach na rozmowę kwalifikacyjną i zastanawiałem się nad złymi doświadczeniami z wywiadów, które miałem w przeszłości. Jedną ze szczególnych uwag jest to, że zapytałem ankietera, dlaczego zespół zdecydował się na użycie EJB 3 zamiast Spring w swoim produkcie. Ankieter prawie oderwał mi twarz, krzycząc "Ponieważ wiosna to nie wszystko i koniec całego rozwoju oprogramowania Java, chcesz tę pracę, czy nie?". W odpowiedzi powiedziałem mu, że to prawdopodobnie nie jest praca dla mnie i szybko wyszedłem z rozmowy kwalifikacyjnej. Na początku rozmowy poinformowano mnie, że firma ma dużą rotację pracowników, produkt, nad którym pracowali, był początkowo stworzony w Modula-3, następnie przeniesiony do Perla, a na końcu do Javy. Dostałem 10-stronicową broszurę z pytaniami technicznymi dotyczącymi Java, EJB, SQL i JDBC oraz pytania dotyczące stosów technologicznych, z którymi pracowałem. Kiedy zostałem poproszony o zadawanie pytań, uznałem, że rozsądnie jest zapytać ich o ich stos technologii i otrzymać rozsądne odpowiedzi, a nie wpędzać ankietera w płomienie. **Pytanie:** Czy warto zbadać wybory architektoniczne podjęte podczas wywiadu? Jeśli nie, dlaczego? Z mojego punktu widzenia rozmowa kwalifikacyjna jest procesem dwukierunkowym. Jeśli ankieterzy sprawdzają moje umiejętności techniczne, mam pełne prawo zadać im te same pytania, aby: 1) dowiedzieć się, jaki jest ich sposób myślenia i nastawienie do tworzenia oprogramowania. 2) Ustal, czy ich podejście jest zgodne z moim podejściem do tego rodzaju problemów. Możliwe, że ankieter, który się zdenerwował, miał słabe umiejętności przeprowadzania rozmowy kwalifikacyjnej i zapomniał, że rozmowa kwalifikacyjna jest wymianą dwustronną. Gdyby mnie o to zapytano, dałbym rozsądną odpowiedź, ale z pewnością nie próbowałbym wprowadzać rozmówcy w stan pokornej kapitulacji, w której głowa po prostu kiwa się w górę iw dół bez rozmowy.


title: ktoś zna te pytania analityczne?

text: Więc... mój rekruter właśnie zadzwonił do mnie, aby potwierdzić rozmowę kwalifikacyjną w czwartek. Wspomniał również, że zostanę poproszony o odpowiedź na dwa pytania analityczne. Dał mi trochę o tych pytaniach. 1. Jest osiem piłek. Jeden z nich jest uszkodzony. 2. Wewnątrz pomieszczenia znajdują się trzy żarówki, ale przełączniki są umieszczone na zewnątrz. To wszystko, co powiedział. Myślę, że nie są to zakończone pytania. Ktoś wie jakie to pytania?? Czy moje pytanie należy do programmer.stackexchange.com? Myślałem, że tak, ponieważ jest to związane z pytaniami do wywiadu.


title: Rozszerzenie składni w słabo pisanych językach?

text: Lubię języki, które dają mi możliwość rozszerzenia składni języka. Jednocześnie wszystkie języki, które znam, pozwolą mi rozszerzyć składnię, mają stosunkowo ciężkie systemy typów. Czy istnieją lżejsze języki, które pozwalają na ten sam rodzaj rozszerzalności składni? A może elastyczna składnia wymaga, abyś był w stanie zdefiniować nowe typy danych (i operacje na tych typach)? Zasadniczo chcę elastyczności składniowej Haskella bez systemu typów Haskella. Czy istnieje sposób, aby to uzyskać, czy też elastyczność składniowa wymaga pomocy systemu typów? Przykładami języków, w których wiem, że system typów można użyć do tworzenia nowej składni, są Haskell, C++ i Python. Możliwe przykłady modyfikacji składni bez silnego systemu typów to Scheme, Forth i Common Lisp. Jednak chociaż widzę, jak przeciążać operatory na pierwszej liście, aby generować nowe konstrukcje składniowe, nie wiem wystarczająco, aby wiedzieć, jak to zrobić na drugiej liście. Może odpowiedzią jest dla mnie przeczytanie makr w Common Lisp. To, czego chciałbym, to język z koncepcyjną prostotą C, Lua lub Erlang, ale z możliwością tworzenia dodatkowych operatorów składniowych według potrzeb. TLDR - podstawowe podsumowanie pytania: Czy słabo typowany język może obsługiwać rozszerzenie składni, czy też możliwość rozszerzenia składni języka (z samego języka) wymaga wdrożenia systemu typów?


title: Praca jako wykonawca – pytania cz. II

text: Jest to kontynuacja tej dyskusji: Praca jako wykonawca – pytania Nadal chciałbym uzyskać więcej informacji na temat następujących punktów, pracując jako wykonawca, a nie jako pracownik bezpośredni: * Mieszkanie: w przypadku umów krótkoterminowych ( powiedzmy 6 miesięcy lub mniej), które nie znajdują się w Twojej okolicy, gdzie i jak szukasz krótkoterminowego, elastycznego mieszkania? Zwłaszcza, że pracodawca zazwyczaj chciałby, abyś zaczął od razu, więc nie masz czasu, aby wychodzić i odkrywać. Poza tym, czy zazwyczaj szukałbyś umeblowanych mieszkań, ponieważ koszt transportu własnych mebli przez kilka miesięcy nie jest uzasadniony? * Godziny pracy i płace: czy wykonawcy są ściślej nadzorowani (w zakresie wykonania określonej pracy), ponieważ otrzymują wynagrodzenie godzinowe? Mają też otrzymywać wynagrodzenie za nadgodziny (w wyższej stawce), jeśli pracują więcej niż 40 godzin tygodniowo, czy to naprawdę się dzieje? A może pracują bez wynagrodzenia, tak jak wielu zwykłych pracowników? * Niektórzy potencjalni pracodawcy wspomnieli o płaceniu „diem”, czyli zasadniczo niepodlegającej opodatkowaniu diety dziennej, która ma być wykorzystana na pokrycie kosztów utrzymania. Te pieniądze są odejmowane od stawki godzinowej, ale zaletą jest to, że płacisz mniejszy podatek. Jednak z informacji, które widziałem, dieta może być wypłacona tylko wtedy, gdy utrzymujesz „stałe” miejsce zamieszkania, do którego zamierzasz wrócić. Czy sprawdza się to w praktyce, a jeśli tak, to w jaki sposób?


title: Czy przyjęcie DVCS będzie miało pozytywny wpływ na szybkość rozwoju?

text: Zastanawiałem się, na ile bezpiecznie można to powiedzieć — ponieważ programiści mają swobodę tworzenia wersji i mają lepsze i bardziej organiczne przepływy pracy — kod zostanie dostarczony szybciej. Dużym czynnikiem jest tutaj oczywiście wielkość zespołu i powiedziałbym, że zespół jest wystarczająco duży, aby dostrzec tę korzyść (10-15 programistów podstawowych i może 5 do 15 więcej współtwórców wspólnego kodu). **Edytuj** : Jak może to wpłynąć na szybkość rozwoju: * Piekielne łączenie może być jednym z przypadków, które spowalniają ludzi (DVCS znacznie lepiej radzą sobie z łączeniem). * Lepsze przepływy pracy, które ~~mogą działać tylko~~ działają bardziej naturalnie w DVCS **Menedżer integracji** ![Menedżer integracji](http://i.stack.imgur.com/IxVc7.png) **Dyktator & Lieutenants** ![tutaj wpisz opis obrazka](http://i.stack.imgur.com/63H5O.png) * Możliwość używania kontroli wersji (tj. zatwierdzania) bez powodowania potencjalnie niestabilnych zmian wszystkim, których po prostu chcę znać jeśli ktoś widział takie rzeczy, pomaga w ogólnej szybkości zespołów/projektów jako całości.


title: Czy mogę (rozsądnie) odmówić podpisania umowy NDA na pracę pro bono?

text: Mój przyjaciel (nazwijmy go _Joe_) pracuje nad obiecującym projektem i poprosił mnie o pomoc. W ramach przyjaźni zgodziłem się (ustnie) nie omawiać szczegółów, ale teraz ma potencjalnego inwestora, który chce, abym podpisał umowę o zachowaniu poufności (NDA). Ponieważ do tej pory cała moja praca była pro bono, powiedziałem Joemu, że nie czuję się komfortowo nakładając się na udokumentowany prawny obowiązek bez jakiejś rekompensaty za ryzyko. (To nie musi być ściśle finansowe. Zaakceptowałbym niewielki udział własności lub nawet gwarantowane kredyty w kodzie i dokumentacji.) Czy moja prośba jest rozsądna, czy po prostu wprowadzam niepotrzebną złożoność?


title: Mój kolega nie rozumie rzeczy, z którymi pracuje. Co robić?

text: Spędziłem 3 dni na debugowaniu jednego bardzo niejasnego błędu w bibliotece stworzonej przez mojego kolegę, ten błąd zdarza się bardzo rzadko. W końcu odkryłem, że ten błąd występuje z powodu wielowątkowego dostępu do obiektu bez blokady. Właściwie nie jest to pierwszy tego typu błąd, podobne błędy występowały już wcześniej. Po prostu przeprowadza testy jednostkowe, a jeśli coś zawiedzie, zakłada gdzieś zamek. A jeśli nic nie zawiedzie, hmmm, to jego kod jest doskonały. Wygląda na to, że nie ma pojęcia o bezpieczeństwie gwintowania. Jestem w 100% pewien, że istnieje wiele podobnych błędów, które jeszcze się nie pojawiły. Wygląda na to, że PM też nie rozumie zagadnień związanych z wątkowaniem. Problem w tym, że pracuje w firmie znacznie więcej czasu niż ja. W każdym razie nie mogę po prostu powiedzieć „ten facet jest niekompetentny w tej dziedzinie”, bo to zawsze pokazuje cię jako „złego gracza zespołowego” itp. Jakieś pomysły, co mogę zrobić?


title: Nie twórz struktury danych w dół

text: W poście na blogu Nie twórz struktury danych w dół autor omawia różne sposoby strukturyzowania typu danych circle i implementacji parametrów w funkcji Radius. obszar({okrąg, {punkt,0,0}, 17.4}) Rodzaj bałaganu. A co z funkcją, która zbuduje dla nas krąg? Następnie moglibyśmy to zrobić: area(make_circle(0, 0, 17.4)) Moglibyśmy również mieć krótszą wersję make_circle, która przyjmuje tylko promień, domyślnie ustawiając punkt środkowy na 0,0. Dobra, przestań, konstruujemy się na śmierć. Potrzebujemy tylko prostej funkcji do obliczenia pola powierzchni koła: area(R) -> math:pi() * R * R. Mówi o funkcjach w języku Erlang, który jest funkcjonalny, a nie obiektowy ( OO). Moje pytanie brzmi, czy ten argument jest odpowiedni dla języków OO i czy dla języków funkcjonalnych?


title: Planowanie wydań w programowaniu zwinnym/ekstremalnym

text: Studiowałem kilka książek o tym, jak dokładnie wdrożyć agile. Jestem zdezorientowany co do planowania wydania. Nasza aplikacja to System Ubezpieczeniowy składający się z różnych modułów (Kwotowanie, Zarządzanie Polisami, Zarządzanie Roszczeniami itp.). W pierwszej fazie dopiero planujemy wydać Cytowanie i szacujemy na to około 4 miesiące. Teraz moje pytanie brzmi, czy musimy najpierw zidentyfikować historyjki użytkownika dla całego systemu (w tym wszystkie inne moduły) przed rozpoczęciem pracy nad naszym pierwszym wydaniem (tj. cytowaniem)? A może planowanie wydania jest również procesem iteracyjnym?


title: Schemat blokowy - proces podczas pętli

text: Mam trudności ze zrozumieniem, czy jest to właściwy proces do użycia w przypadku schematu blokowego, który ilustruje procesy zaangażowane w algorytm. W tym celu załóżmy, co następuje: Blok danych 1D `X = [0, 1, 2, 3,........]` jest podzielony na bloki 2D: x = {[0 1]} {[2 3]} Dla każdego z tych bloków zliczana jest całkowita energia, jeśli całkowita energia jest mniejsza niż wartość progowa, blok jest usuwany. Jeśli energia jest wyższa, to zostaje zachowana i algorytm przechodzi do następnego bloku. Oto mój schemat: ![tutaj podaj opis obrazu](http://i.stack.imgur.com/B2mcq.jpg) Teraz patrzę na to tak, że uruchamiam algorytm, który dzieli sygnał na ramki, oblicz energię dla każdego sygnału (2D) jeśli energia < to usunie ramkę A NASTĘPNIE zakończ algorytm. Jeśli energia jest wyższa niż próg, wygląda na to, że blok sygnału (2D) jest przekazywany z powrotem do algorytmu, energia sygnału jest ponownie obliczana. Moje pytania:- 1) Czy powinna istnieć pętla while, która mówi „Jeśli na końcu bloku”? 2) Czy powinienem określić, że bloki `x[n][n]` mogą być przekazywane do obliczanej energii? Ewentualnie, czy to wygląda dobrze i powinienem zastosować opis tego procesu w tekście pisanym? Każda pomoc byłaby bardzo mile widziana :)


title: Skanowanie miliarda wierszy w ultraszybkiej bazie danych

text: ## Tło Lokalna baza danych zawiera prawie 1,3 miliarda unikalnych wierszy. Każdy wiersz jest pośrednio powiązany z określoną szerokością i długością geograficzną (lokalizacją). Każdy wiersz ma datownik. ## Przypadek użycia Problem jest następujący: 1. Użytkownik ustawia datę początkową/końcową oraz zakres wartości (np. 100 do 105). 2. System zbiera wszystkie wiersze pasujące do podanej daty, pogrupowane według lokalizacji. 3. System przeprowadza określa lokalizacje, które w tych terminach mają statystyczne prawdopodobieństwo, że znajdą się w podanym przedziale wartości. 4. System wyświetla użytkownikowi wszystkie pasujące lokalizacje. To jest problem szybkości i skali. ## Pytanie Jaka jest najtańsza architektura rozwiązania, jaką możesz sobie wyobrazić, która pozwoliłaby takiemu systemowi na pobieranie wyników dla użytkowników w mniej niż pięć sekund? ## Obecny system Obecnie środowisko to: * PostgreSQL 8.4 (możliwa aktualizacja; przełączanie baz danych nie jest opcją) * R i PL/R * XFS * WD VelociRaptor * 8 GB RAM (Corsair G.Skill; 1,3 GHz) * Quad rdzeń GenuineIntel 7 (2,8 GHz) *Dopuszczalne są aktualizacje sprzętowe Ubuntu 10.10. ## Aktualizacja - Struktura bazy danych Miliardy wierszy znajdują się w tabeli przypominającej: id | podjęte | identyfikator_lokalizacji | kategoria | wartość1 | wartość2 | wartość3 * id - klucz podstawowy * pobrany - data przypisana do wiersza * id_lokalizacji - odniesienie do kategorii szerokość/długość geograficzna * - opis danych * wartość1 .. 3 - inne wartości, o które użytkownik może zapytać zazwyczaj kolejne daty na „identyfikator_lokalizacji”, czasami każda lokalizacja zawiera dane od 1800 do 2010 r. (około 77 000 dat, wiele z nich jest zduplikowanych, ponieważ każda lokalizacja ma dane z tego samego zakresu dat). Istnieje siedem kategorii, a tabele są już podzielone według kategorii (przy użyciu tabel podrzędnych). Każda kategoria zawiera ~190 milionów wierszy. W niedalekiej przyszłości liczba wierszy na kategorię przekroczy miliard. Istnieje około 20 000 lokalizacji i 70 000 miast. Lokalizacje są skorelowane z miastem według szerokości i długości geograficznej. Przypisanie każdej lokalizacji do konkretnego miasta oznacza znalezienie granic miasta, co nie jest trywialnym zadaniem. ## Pomysły Niektóre pomysły, które mam to: * Znajdź usługę w chmurze do obsługi bazy danych. * Utwórz pasek RAID (świetny film). * Utwórz tabelę, która łączy wszystkie lokalizacje według miasta (wstępne obliczenia). Dziękuję Ci!


title: Po 15 latach programowania, jak się z tego wydostać?

text: > **Possible Duplicate:** > Nie chcę już być programistą To może wydawać się dziwne pytanie, ale wydaje mi się, że już prawie nie miałem go do czynienia z programowaniem. Lubiłem wracać, gdy miałem 11 lat (teraz mam 31 lat) i naprawdę byłem w tym naprawdę świetny w młodym wieku. W liceum znałem już c++, wzorce projektowe i inne rzeczy i budowałem dość wyrafinowane rzeczy. Potem tworzenie stron internetowych stało się modne i, jak wiele osób, zostałem wciągnięty w to – do tego stopnia, że to wszystko, czego naprawdę pragnął. Szczerze mówiąc, nigdy mi się to nie podobało. Po uczeniu się tak wielu technologii i języków rok po roku, mam dość ponownego uczenia się tego samego rodzaju rzeczy, które umiałem robić wcześniej, ale inaczej. Mam dość ciągłego uczenia się nowych błędów, błędów projektowych i dziwactw nowych technologii. Czasami wydaje się, że raczej się cofamy niż robimy postępy. Liczba języków, które musisz znać tylko po to, aby uruchomić aplikację internetową, jest po prostu obrzydliwa. Jest bardziej rozdęty niż powinien. Sprawy również stały się o wiele bardziej złożone. Chociaż doceniam wiele dostępnych obecnie frameworków, które _próbują_ ułatwić Ci życie, wydaje się, że debugowanie i wiedza o tym, co się dzieje, stały się o wiele trudniejsze. Nigdy nie natknąłem się na więcej błędów w kodzie innych ludzi niż w ciągu ostatnich 1,5 roku w ciągu moich 15 lat programowania. To denerwujące, wysysa tonę mojej energii. Po prostu nie pasjonuję się już tym. Nauka i praca z technologiami dla ich własnego dobra to tylko środek do celu - to nie jest zabawne. Właściwie już mnie to nie obchodzi. Pomimo tego, jak proste są niektóre rzeczy, to niesamowite, jak trywialne problemy przeradzają się w rozwiązania, których naprawienie wymaga 4 lub 8 godzin... a te rzeczy nie mają nic wspólnego z rzeczywistymi wymaganiami aplikacji - to tylko naprawianie bzdur, które inni ludzie mylił się. Żyjemy również w epoce, w której frameworki i biblioteki muszą promować swoje narzędzia i muszą udowodnić, jak łatwe są w porównaniu do rzeczy, które pojawiły się wcześniej… ale prawie zawsze sprawiają, że przeskakujesz przez miliard pętli do zrobienia coś skomplikowanego. Zanim zorientujesz się, jak osiągnąć złożone wymagania w nowym narzędziu, stracisz dużo czasu, który był mniej więcej taki sam, jak czas, który zajęłoby starą technologię. Jaki był więc sens uczenia się nowej technologii? Chociaż stara technologia wymagała więcej kodu, była bardziej ogólna i elastyczna. Można argumentować, że uczenie się nowych dziwactw dla tych złożonych wymagań buduje kapitał intelektualny, który może być później wykorzystany, ale kiedy trzeba będzie wykorzystać tę wiedzę po raz drugi, pojawia się kolejna nowa technologia, która sprawia, że ta wiedza staje się przestarzała. Ponieważ strony internetowe muszą być teraz bardzo bogatymi aplikacjami klienckimi, te bestie stały się niezwykle trudne do przetestowania. Nie możesz już po prostu napisać większości swojego kodu w jednym języku, a bycie niesamowicie dobrym w JavaScript wydaje się samo w sobie monumentalnym zadaniem. Jesteśmy teraz w erze masowej specjalizacji i to mnie nie interesuje, ponieważ wszelkie projekty, nad którymi chcę pracować, muszę robić sam. Jak się wydostać? Zdecydowałem, że po prostu skończyłem z tym wszystkim. Naprawdę chcę wyjść. Właśnie zainwestowałem tyle czasu i energii w bycie świetnym programistą przez większość mojego życia, że wydaje się smutne, że w zasadzie zamierzam to wszystko wyrzucić. **EDYTUJ** Po przeczytaniu niektórych komentarzy myślę, że to też są problemy. 1) Wypalenie. Bez względu na to, jak długo mam przerwę, nie interesuje mnie praca nad programowaniem, gdy muszę zacząć od nowa. 2) Nie dbam już o pisanie "dobrego" oprogramowania, tak jak kiedyś. Nie dostajesz nagrody za wykonanie pracy lepszej niż 99% programistów. Nikogo też nie obchodzi, czy robisz to dobrze. To naprawdę niesamowite, że umiejętności, kunszt i troska nie są wartością dla większości ludzi w tej branży. 3) Nuda. Pisanie bezmyślnych zapytań, logiki biznesowej i pompowanie danych do widoku przez tyle lat po prostu nie jest interesujące. Po pracy nad tabelami bazy danych 1500-2000 i logiką aplikacji, która na nich działała, nic z tego nie jest dla mnie interesujące ani trudne. 4) Tworzenie wartości. Nic, nad czym pracuję, nie ma znaczenia. Jasne, to ma znaczenie dla klientów, ale dla mnie to nie ma znaczenia.


title: Potrzebujesz porady na temat przejścia ze sklepu deweloperskiego .NET do sklepu Java

text: Przez prawie całą moją karierę zawodową programistów (powyżej 15 lat) pracowałem lub zarządzałem zespołami programistycznymi, które głównie korzystają z technologii Microsoft (VB6, ASP, ASP.NET, C#, SQL Server itp.). przez firmę, która wydaje się być bardzo zainteresowana mną na stanowisko zarządzania ich zespołem programistycznym, którym jest sklep Java. Chociaż ostatnio brałem udział w niektórych kursach Java na poziomie uniwersyteckim, było to typowe środowisko akademickie programowania, to znaczy dużo teorii, nadmierne skupienie się na składni i głównie aplikacjach typu konsolowego, z tylko trywialną aplikacją na końcu kursu z czymkolwiek zdalnie przypominający nowoczesny interfejs użytkownika z systemem Windows. Nie martwię się w ogóle o elementy składni, przejmowanie nowych języków programowania nie jest takie trudne, a C# jest tak podobny do Javy, że myślę, że powinien być pod tym względem dość płynny. Jednak myśląc wstecz o wszystkich narzędziach, frameworkach i wiedzy na temat platformy, żargonie, które zgromadziłem dla rozwoju MS, martwię się, jak szybko mogę nabrać prędkości na tyle, aby być produktywnym w tym środowisku i zdobyć szacunek, którego będę potrzebować skutecznie zarządzaj zespołem doświadczonych programistów, którzy potencjalnie mogą mieć uprzedzenia wobec programistów MS. Czy ktoś z was przeszedł ze sklepu .NET do sklepu Java? Jeśli tak, jakie były najtrudniejsze aspekty zmiany? Czy trudniej było ci zdobyć uznanie w zespole na podstawie twojego doświadczenia z inną platformą? Dla tych z Was, którzy już pracują w zespole Java, jak czulibyście się, gdyby doświadczony programista/menadżer .NET przejął stery zespołu? Co ta osoba mogłaby zrobić lub powiedzieć, abyś czuł się bardziej komfortowo, ufając jej?


title: Jak śledzisz swoje wcześniejsze projekty?

text: Po ciężkich próbach zapamiętania szczegółów moich poprzednich projektów kilka lat temu, zastanawiałem się, jak programiści zwykle to śledzą? Tego rodzaju informacje przydają się podczas rozmów kwalifikacyjnych itp. Czy zapisujesz stosowane technologie, napotykane wyzwania itp. w jakimś „jumbo CV”? A może po prostu ufasz swojej pamięci?


title: Cel-C jako pierwszy język OOP?

text: Właśnie kończę drugi semestr studiów CS. Do tej pory poznałem C, wszystkie podstawowe algorytmy i struktury danych (np. wyszukiwanie, sortowanie, listy połączone, sterty, tablice haszujące, drzewa, wykresy itp.). W przyszłym roku zaczniemy od OOP, używając Javy lub C++. Ostatnio wpadłem na kilka pomysłów na niektóre aplikacje na iPhone'a i zacząłem nad nimi pracować. Jednak w przeszłości słyszałem kilka złych rzeczy o Objectice-C, więc zastanawiam się, czy nauka go jako mojego pierwszego języka OOP może stanowić problem. Nie wspominając o tym, że myślę, że trudno będzie znaleźć książki/kursy online, które uczą podstawowych pojęć OOP przy użyciu Objective-C do zilustrowania pojęć (w przeciwieństwie do książek używających Javy lub C++, których jest mnóstwo), więc może to być kolejny problem . **Podsumowując** : czy powinienem zacząć uczyć się pojęć Objective-C i OOP już teraz sam, czy poczekać jeszcze jeden semestr, aż nauczę się Java/C++ na uniwersytecie, a następnie przejść do Objective-C? **Aktualizacja** : Dla tych, którzy są zainteresowani rozpoczęciem korzystania z OOP przez Objective-C, znalazłem kilka fajnych samouczków w bibliotece programistów Apple -> http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual /OOP_ObjC/Wprowadzenie/Wprowadzenie.html


title: Jak wyglądać profesjonalnie w moim pierwszym niezależnym projekcie?

text: Potrzebuję pomocy, aby wyglądać bardzo profesjonalnie w moim pierwszym niezależnym projekcie. Jak / Co powinieneś zrobić, aby to osiągnąć? * * * **Tło** : Zacząłem jako pełnoetatowy programista WWW 18 miesięcy temu, dwa awanse później jestem teraz starszym inżynierem oprogramowania. Nigdy nie miałem problemów z zaprojektowaniem / opracowaniem / kodowaniem skomplikowanego systemu. Pomyślałem, że przydałaby mi się pomoc na Boże Narodzenie i zacząłem licytować projekt i teraz mam jedną - od bardzo renomowanego stowarzyszenia prawników w Londynie. _Nie mam problemu z faktycznym wdrożeniem systemu, ale nie mam pojęcia, jak wyglądać profesjonalnie w całym procesie._ **O projekcie** : To stowarzyszenie prawników rozpoczyna szkolenia na odległość i oprócz posiadania stronę internetową, aby pochwalić się wszystkimi swoimi klientami itp., chcą strefę dla studentów, w której ich uczniowie będą się logować, pobierać przydzielone im materiały szkoleniowe itp. oraz sekcję administracyjną, w której przypisują kursy do studentów / tworzą nowe / przesyłają materiały itp. * * * ## Podział pytań: 1) Od czego zacząć zbieranie wymagań? Czy użycie scrum to dobry pomysł, czy powinienem użyć czegoś takiego jak szablon Volere – i co powinienem z tym zrobić? czy powinienem dostarczyć kopię klientowi itp. 2) Jak często powinienem spotykać się z klientem? Czy raz na dwa tygodnie byłby dobry? 3) Jakie procesy/protokoły muszę przestrzegać, aby byli ze mnie zadowoleni i uważali, że jestem bardzo profesjonalny 4) Ile powinienem zapłacić za produkt? 5) Jak uzyskać wycenę / umowę / paragon na cały projekt? **6) Jakie kroki przechodzą profesjonalni freelancerzy w trakcie cyklu życia projektu?** * * * **Moje dotychczasowe badania** Nie pomaga przyglądanie się Ile powinienem pobierać.. Żyję w Londynie, strefa 1, choć nie mam pojęcia, ile kosztowałby projekt tej wielkości. Pomoc w tej sprawie byłaby mile widziana. Artykuły o tym, jak być profesjonalnym, mówią o pracy/zarządzaniu czasem itp., a nie o rzeczywistym procesie, o tym, co robiliby prawdziwi ludzie itp. To jak teoria akademicka, ale nie praktyczne. * * * Jeśli to wymaga korekty, daj mi znać, nie zamykaj go z jakiegokolwiek powodu, zmienię pytanie lub szczegóły, aby dopasować je do potrzeb. Dzięki za przeczytanie długiego pytania.


title: Jakie istnieją współczesne alternatywy dla receptur numerycznych?

text: W przeszłości książka Numerical Recipes była uważana za złoty standard odniesienia dla algorytmów numerycznych. Po najwcześniejszej edycji Fortran pojawiły się wydania w językach C i C++ oraz inne, dzięki czemu stała się ona bardziej aktualna. Dzięki nim dostarczył kod referencyjny dla najnowocześniejszych algorytmów dnia. Starsze wydania są obecnie dostępne online za darmo. Niestety uważam, że obecnie służy głównie jako księga historyczna. Praktyki „inżynierii oprogramowania” wydają mi się przestarzałe, a rzeczywista treść nie nadąża za literaturą. Na jakie podobnie obszerne, ale przystępne odniesienia powinien spojrzeć w zamian współczesny programista?


title: Dlaczego HashMap dopuszcza tylko jeden klucz null?

text: „HashMap” pozwala tylko na jeden klucz „null”. Czy to dlatego, że dopuszcza tylko unikalne klucze? A może jest inny powód?


title: Jakie jest uzasadnienie dwukrotnego wpisywania adresu e-mail w celu rejestracji?

text: Wiele witryn internetowych prosi użytkowników o dwukrotne wpisanie adresu e-mail, czasami podejmując trud wyłączenia funkcji kopiowania i wklejania. Jaka jest za tym logika? Czy to np. środek bezpieczeństwa?


title: Czy istnieje zasób, który wyjaśnia korzyści płynące z programowania warstwowego?

text: Załóżmy, że mamy aplikację winform ze zdarzeniem buttonclick. Buttonclick obsługuje wszystko, od konfiguracji interfejsu użytkownika po wywołanie bazy danych i manipulację danymi. Tak więc otrzymujesz metodę, która ma 100 linijek kodu. Poza faktem, że ten kod z różnych powodów nie może być uważany za testowalny, ten styl programowania jest wrażliwy na zmiany. Mogę mówić o OO, anty-wzorcach itp. Problem polega na tym, że każdy odrębny temat, który mogę wymyślić, wymaga wielu wyjaśnień, aby zrozumieć potencjalne korzyści. Poza znalezieniem nowej pracy (**wiele** firm programuje w ten sposób), jak mogę nauczyć takich programistów, jak pisać lepszy kod? Oczywiście nie możemy siedzieć przy okrągłym stole i dyskutować o zaletach i wadach przez cały dzień ze względu na ograniczenia czasowe i rzeczywistą pracę, którą trzeba wykonać. Chociaż trening i intensywny trening to jedyne, o czym przychodzi mi do głowy, aby rozwiązać te problemy. Żeby nie powiedzieć, że piszę doskonały kod, na pewno nie. Uważam, że istnieją pewne najlepsze praktyki, których należy przestrzegać z zasady Np. OO w kontekście .NET. Najczęstszą wymówką, jaką słyszę, jest „nie możemy pisać kodu wystarczająco szybko, jeśli robimy to w ten sposób”.


title: Szukasz rozproszonego wzoru blokowania

text: Muszę wymyślić niestandardowy mechanizm blokowania obiektów rekurencyjnych\wzorzec dla systemu rozproszonego w C#. Zasadniczo mam system wielowęzłowy. Każdy węzeł ma **wyłączne uprawnienia do zapisu** na _n_ -liczba elementów stanu. Ten sam stan jest również dostępny w formie **tylko do odczytu** na _co najmniej jednym_ innym węźle. Niektóre zapisy/aktualizacje muszą być atomowe we wszystkich węzłach, podczas gdy inne aktualizacje w końcu staną się spójne dzięki procesom replikacji w tle, kolejkom itp... W przypadku atomowych aktualizacji szukam wzorca lub próbek, które skutecznie pozwolą mi oznaczyć obiekt jako zablokowane dla **zapisów**, które mogę następnie dystrybuować, zatwierdzać, wycofywać itd. Ponieważ system ma wysoki poziom współbieżności, zakładam, że będę musiał mieć możliwość nakładania blokad, które będą albo przekroczyć limit czasu, albo zostać rozwinięty po zwolnieniu blokad. Kwestie dotyczące transakcji lub wiadomości nie są przedmiotem tego pytania, ale dodałem je dla dodatkowego kontekstu. Mając to na uwadze, możesz swobodnie wyrazić, jakie wiadomości, które Twoim zdaniem będą potrzebne, jeśli chcesz. Oto niejasna próbka tego, co wyobrażałem sobie, chociaż jestem otwarty na wszelkie nowe pomysły poza wdrażaniem zupełnie nowych produktów thing.AquireLock(LockLevel.Write); //Zrób coś.ReleaseLock(); Myślałem o użyciu metod rozszerzających, które mogą wyglądać jak ta publiczna static void AquireLock(this IThing instance, TupleLockLevel lockLevel) { //TODO: Dodaj oczekiwanie na akwizycję, ponowną próbę, licznik rekurencji, obsługę limitu czasu itp... //TODO : Nie zezwalaj na żądania blokady odczytu, jeśli „rzecz” jest już zablokowana do zapisu //TODO: Zrzuć wyjątek, gdy akwizycja nie powiedzie się instancja.Lock = lockLevel; } public static void ReleaseLock(ta instancja IThing) { instance.Lock = TupleLockLevel.None; } Aby wyjaśnić kilka szczegółów... * Cała komunikacja odbywa się za pośrednictwem protokołu TCP/IP przy użyciu binarnego protokołu żądanie/odpowiedź * Nie ma technologii pośredniczących, takich jak kolejki lub bazy danych * Nie ma centralnego węzła głównego. W tym przypadku układ blokowania jest definiowany przez inicjatora blokady i partnera, który spełni żądanie z pewną formą limitu czasu, aby zarządzać jego zachowaniem. Czy ktoś ma jakieś sugestie?


title: Jak zaimplementować gesty do paska narzędzi wykonanego z niestandardowego widoku w Androidzie, czy jest to zalecane podejście?

text: Chciałbym opracować element wielokrotnego użytku poziomego paska narzędziowego Slidable. Chciałbym spróbować opracować własny widok zamiast ActionBar. Mój widok niestandardowy rozszerza VieGroup zawiera i niestandardową klasę przycisku obrazu jako widoki podrzędne. Widok niestandardowy zawiera wiele przycisków narzędzi. Czy jest to zalecane podejście? czy mamy lepsze podejście bez użycia ActionBar. Minimalna wersja Androida powinna wynosić 4.0, a docelowa to 4.x, a jedna z rozdzielczości ekranu to 480X640 na ekranie 4,7 cala. Pasek narzędzi wielokrotnego użytku byłby używany na różnych ekranach/widokach w tej samej i wielu aplikacjach. Rozumiem, że pasek akcji zawiera wiele standardowych funkcji paska narzędzi, w tym różne funkcje gestów.


title: Algorytm łączenia przegubów do użytku z kinematykami odwrotnymi

text: Jestem częścią zespołu programistycznego programu do animacji 2D. Jedną z kluczowych cech programu jest możliwość pozowania figur za pomocą kinematyki odwrotnej. Chociaż mamy tę część w dół, musimy być w stanie przypiąć stawy na swoim miejscu, aby przesunięcie innego stawu nie przesunęło przypiętego ani żadnego poza nim. Obecnie działa to w przypadku przypinania pojedynczego połączenia przy użyciu bieżącego algorytmu, którego używamy. Jednak konieczne jest, abyśmy byli w stanie połączyć wiele połączeń jednocześnie, a algorytm, którego używamy, po prostu nie jest zaprojektowany do pracy z tym, a wszyscy w zespole są zakłopotani, jeśli chodzi o rozwiązanie. Czy istnieją jakieś algorytmy napinania połączeń do użytku z kinematykami odwrotnymi, jednocześnie pamiętając, że będzie to musiało działać dla każdego rodzaju niezamkniętej figury?


title: Strategia przeglądu kodu przed scaleniem do mastera z gałęzi funkcji

text: Ja i mój zespół używamy gałęzi funkcji (z git). Zastanawiam się, jaka jest najlepsza strategia na przegląd kodu przed scaleniem do mastera. 1. Pobieram nową gałąź z mastera, nazwijmy ją fb_#1 2. Zatwierdzam kilka razy, a potem chcę scalić ją z powrotem do mastera 3. Zanim połączę, ktoś powinien zrobić przegląd kodu Teraz są 2 możliwości : 1. 1. Łączę **master z fb_#1** ( **nie** fb_#1 z masterem), aby był jak najbardziej aktualny 2. Kolega z drużyny przegląda zmiany między master head a fb_# 1 głowa 3. Jeśli fb_#1 jest w porządku, łączymy fb_#1 z masterem 4. Plusy: brak przestarzałego kodu w przeglądzie 5. Minusy: jeśli ktoś inny łączy coś pomiędzy „1”. i „2”. jego zmiany pojawiają się w recenzji, choć należą do innej recenzji. 2. 1. Kolega z zespołu przegląda zmiany między punktem kasy (git merge-base master fb_#1) a fb_#1 head 2. Plusy: widzimy dokładnie, co zostało zmienione podczas pracy nad gałęzią funkcji 3. Wady: trochę przestarzałego kodu może pojawić się w recenzji. Jak myślisz, który sposób jest lepszy i **dlaczego**? Może istnieje inne bardziej odpowiednie podejście?


title: Czy stwierdzenia if/else powinny być uporządkowane według rzadkości przypadków lub trudności w radzeniu sobie z nimi?

text: W pewnym kodzie, który teraz piszę, mam coś takiego: if (uncommon_condition) { do_something_simple(); } inny { zrobić(); coś(); długie(); oraz(); skomplikowany(); } Część mnie myśli "W porządku, jak to jest napisane. Proste przypadki powinny iść na pierwszym miejscu, a bardziej skomplikowane sprawy powinny iść dalej." Ale inna część mówi: „Nie! Kod `else` powinien znajdować się pod `if`, ponieważ `if` dotyczy nietypowych przypadków, a `else` dotyczy wszystkich innych przypadków”. Która jest poprawna czy lepsza?


title: Czy należy agregować błędy internetowego interfejsu API?

text: ### Sytuacja Piszemy REST API, które z góry wykonuje walidację. Kod jest napisany tak, aby starał się znaleźć jak najwięcej błędów. Jednak każdy błąd może odpowiadać innemu kodowi stanu HTTP. Dodatkowo klient (HTML) nie ma wygodnego sposobu analizowania/wyświetlania błędów. ### Pytanie Czy lepiej po prostu rzucić, gdy tylko pojawi się pierwszy błąd? A może powinniśmy zrobić co w naszej mocy, aby jakoś zagregować błędy? Nawiasem mówiąc, nie ma wymogu, aby próbować obsłużyć jak najwięcej naraz. Nie szukam opinii. Byłem ciekaw, czy w REST jest standardowa praktyka. ### Dlaczego to ma znaczenie Obecny kod jest naprawdę złożony. Niektóre walidacje można przeprowadzić tylko wtedy, gdy inne elementy są ważne. Tak więc istnieje wyraźna zależność między testami. Jest na tyle złożony, że gwarantuje korzystanie z biblioteki innej firmy. Ale wolę po prostu wyeliminować przyczynę złożoności, jeśli mam nad tym spędzać czas.


title: Dlaczego tak wiele zaszyfrowanych i zaszyfrowanych ciągów kończy się znakiem równości?

text: Pracuję w C# i MSSQL i jak można się spodziewać przechowuję moje hasła solone i haszowane. Kiedy patrzę na skrót przechowywany w kolumnie nvarchar (na przykład dostawca członkostwa aspnet out the box). Zawsze ciekawiło mnie, dlaczego wygenerowane wartości Salt i Hash zawsze wydają się kończyć jednym lub dwoma znakami równości. Widziałem podobne rzeczy podczas pracy z algorytmami szyfrowania, czy to zbieg okoliczności, czy jest ku temu powód?


title: Czy istnieje nazwa konstrukcji 'break n'?

text: W rozmowie na początku tego tygodnia omawiałem pewne cechy języka i zdałem sobie sprawę, że nie mam dobrego słowa / wyrażenia, aby opisać konkretną funkcję. Niektóre języki, takie jak PHP, mają konstrukcję językową, która pozwala wyrażeniom `break` i `continue` akceptować parametr numeryczny wskazujący, który blok powinien zostać zmieniony. Na przykład: for ($i = 0; $i < 10; $i++) for ($j = 10; $j > 0; $j--) if ($j == $i) przerwa 2; echo $i; Ponieważ `break 2;` powoduje przerwanie zewnętrznej pętli, wynikiem jest `1`. Gdyby to było „przerwa 1;” lub po prostu „przerwa;”, wynik byłby „10”. C# nie ma takiej konstrukcji. Odpowiednik byłby taki: for (i = 0; i < 10; i++) { bool broken = false; for (j = 10; j > 0; j--) { if (j == i) { uszkodzony = prawda; przerwanie; } } jeśli (zepsuty) pęknie; } Konsola.WriteLine(i); Ale oczywiście można to również osiągnąć za pomocą „goto”. Więc moje pytanie brzmi, jak to nazywasz? Czy istnieje konkretna nazwa dla tej konstrukcji „break _n_ ”? Chciałbym móc powiedzieć " _Język X ma parametryczne przerwanie i kontynuację instrukcji_ " lub coś w tym stylu.


title: Jakie jest Twoje ulubione/idealne środowisko programistyczne?

text: Gdybyś mógł opisać swoje idealne środowisko programistyczne, co by to było? Należy wziąć pod uwagę wiele rzeczy, w tym między innymi: 1. Sprzęt 2. Oprogramowanie ( _Wybór systemu operacyjnego_ , płatne i bezpłatne oprogramowanie, ...) 3. Środowisko fizyczne (oświetlenie, plan otwarty, lokalizacja, ...) 4. Niekończący się zapas kawy... 5. ... Innymi słowy, gdybyś mógł powiedzieć swojej firmie, co może zrobić, aby poprawić jakość Twojego rozwoju, co by to było?


title: Czy podczas rozmowy kwalifikacyjnej z programistami umiejętności rozwiązywania problemów związanych z algorytmami są odpowiednie dla danej pracy, jeśli rozwiązywanie takich problemów z algorytmami nie jest zwykle potrzebne?

text: Oprogramowanie tworzone dla niektórych dziedzin biznesowych nie wymaga od pracujących tam programistów intensywnego wykorzystywania umiejętności rozwiązywania problemów algorytmów w pracy. Na przykład programista JEE może przez większość czasu potrzebować tylko przenoszenia danych z systemu do systemu, wykonywania transformacji danych, a następnie przetwarzania tych danych w celu uzyskania różnych raportów, projektowania systemów z dobrze zdefiniowanymi granicami itp. Jako programista potrafisz rozwiązywać problemy i powinieneś wiedzieć, jak rozwiązywać problemy algorytmów. Ale niektórzy programiści tak naprawdę nie robili tego od szkoły, jeśli ich dziedzina wiedzy nie wymagała tej umiejętności, więc umiejętność nie jest aktualna. W przypadku takich domen, czy nadal ma sens wybór rozmowy kwalifikacyjnej, która wymaga od kandydatów rozwiązania problemów z algorytmami (takich jak problemy matematyczne, manipulowanie ciągami znaków, sortowanie tablic itp.), czy też rozmowa kwalifikacyjna powinna skupiać się tylko na umiejętnościach potrzebnych w konkretnej domenie?


title: Jak chciałbyś, aby chroniona była własność intelektualna oprogramowania?

text: Czytając odpowiedzi na to pytanie i wiele innych dyskusji na temat patentów na oprogramowanie, wydaje się, że większość z nas jako programistów uważa, że patenty na oprogramowanie to zły pomysł. Jednocześnie znajdujemy się w grupie, która najprawdopodobniej straci, jeśli nasza praca zostanie skopiowana lub skradziona. Jaki poziom ochrony własności intelektualnej wymaga kod i oprogramowanie? Czy prawa autorskie są wystarczające? Czy patenty są potrzebne? Skoro oprogramowanie nie jest ani obiektem fizycznym, ani prostym tekstem, czy powinniśmy myśleć o trzeciej ścieżce, która znajduje się gdzieś pomiędzy nimi? Czy w ogóle potrzebujemy ochrony? Gdybyś miał możliwość ustanowienia takiego prawa, co byś wybrał?


title: Najlepsze praktyki testowania jednostkowego dla początkujących testerów jednostkowych

text: W ostatnich latach pisałem tylko małe komponenty dla ludzi w większych projektach lub małych narzędziach. Nigdy nie napisałem testów jednostkowych i zawsze wydaje mi się, że nauka ich pisania i faktyczne wykonanie zajmuje dużo więcej czasu niż samo uruchomienie programu i przetestowanie go w rzeczywistości. Właśnie zaczynam projekt na dość dużą skalę, którego ukończenie może zająć kilka miesięcy i chociaż będę próbował testować elementy podczas ich pisania (jak zawsze), zastanawiam się, czy testowanie jednostkowe może zaoszczędzić mi czasu. Zastanawiałem się tylko, czy ktoś mógłby dać dobrą radę: 1. Czy powinienem przyjrzeć się testom jednostkowym na początku projektu i ewentualnie przyjąć podejście TDD. 2. Czy powinienem pisać testy w miarę postępów, po zakończeniu każdej sekcji. 3. Czy powinienem dokończyć projekt, a na końcu napisać testy jednostkowe.


title: Analiza poprawności i złożoności algorytmu

text: Jeśli dany algorytm przemierza graf (powiedzmy z algorytmem pierwszego przechodzenia wszerz). Powiedzmy, że kodujesz go w taki sam sposób, jak pokazano w tym samouczku wideo (od 04:30 najpierw dla szerokości). Następnie zostałeś poproszony o wykonanie analizy poprawności i złożoności kodu. O czym myślisz, analizując algorytm? To znaczy zacznijmy od Analizy Poprawności.. czy jest to po prostu kwestia ustawienia mojego algorytmu do pracy na setkach i tysiącach różnych wykresów i jeśli przejście wszystkich z nich jest sukcesem, mówię „Tak, przeanalizowałem to i to jest poprawne!" Czy jest w tym coś więcej? **Jak przeanalizowałbyś poprawność fragmentu kodu?** Również złożoność .. jest tak wiele parametrów złożoności, ale zgaduję, że jest to algorytm, przyda się porozmawiać o tym n metrykach rzeczy, n do potęgi 2 i tak dalej ... czyli złożoność, prawda? Im wyższa potęga n, tym bardziej złożony algorytm. Jak mogę obliczyć potęgę n dla jakiegoś kodu? **Jak określić złożoność algorytmu?**


title: Poszukiwanie dobrych praktyk w zarządzaniu oddziałami i programistami w Git

text: Jakiś czas temu dołączyłem do nowego zespołu programistów, a ostatnio mieliśmy nasze pierwsze duże wydanie. Korzystamy z Gita od początku projektu i do tej pory czujemy się z nim dość swobodnie. Jednak teraz, gdy produkt jest w terenie, odkrywamy nowe problemy/procesy, które należy ustalić. Do tego momentu wszystko, co zrobiliśmy, polegało na odwoływaniu się do bardzo popularnego, udanego wpisu o modelu rozgałęzień, co rzeczywiście było bardzo pomocne. Obecnie mamy następujące branche, wszystkie aktywne i wszystkie aktualizowane: * master - tylko wydany, stabilny kod ( otagowane za każdym razem, gdy zwolnienie zostanie wycięte) * rozwinięcie - szeroko otwarte. używane do długoterminowego rozwoju * hotfix-1.0.1 — odgałęzienie tagu mastera 1.0.0 dla małych, bardzo ukierunkowanych poprawek, które już są w kolejce * release-1.1 — jest to małe wydanie przyrostowe, które chcemy wprowadzić stosunkowo szybko, więc chciałem nim zarządzać oddzielnie od rozwoju i ograniczyć zakres zmian. Oto zasady scalania, które ustalamy: 1. Jeśli zmiana kodu zostanie wprowadzona w wersji 1.1, musi zostać scalona w celu rozwoju. 2. Jeśli zmiana kodu została dokonana w hotfix-1.0.1, musi zostać scalona do wydania 1.1. 3. Nikt poza jednym członkiem zespołu nie powinien scalać czegokolwiek do wzorca, a to scalanie ma miejsce tylko wtedy, gdy wersja produktu ma zostać wysłana. Moje pytania to: 1. Kiedy powinny odbyć się fuzje? Jak tylko poprawka zostanie zastosowana w gałęzi niższego poziomu? Lub okresowo w kawałkach zmian? Jeśli okresowo, jak zwykle określasz okres łączenia? 2. Kto powinien przeprowadzać fuzje? Osoba dokonująca oryginalnej zmiany kodu? Lub jedną osobę, która zostałaby wyznaczona na „Dyrektora usług Git”? Powodem, dla którego o to wszystko pytam, jest to, że wydaje się, że chociaż Git jest bardzo elastyczny (i uwielbiam tę część), pozwala również łatwo strzelić sobie w stopę. Wystarczy kilka poleceń, aby ktoś mógł łatwo i miejmy nadzieję, że nie celowo, połączyć nowe oprogramowanie bezpośrednio z poprawką, która powinna zostać wydana w ciągu 2 dni. Wielu z nas jest nowicjuszami w Git i wciąż staramy się poruszać w tym narzędziu. Zastanawiałem się, jak moje inne firmy/zespoły radziły sobie z takimi koncepcjami w przeszłości i myślę, że największą różnicą jest to, że większość innych produktów do kontroli kodu, z których korzystałem, działa z indywidualnymi zatwierdzeniami, więc każdy programista może być odpowiedzialny za upewnienie się, że swoje poprawki są stosowane we właściwych miejscach. Ale z Git, gdy jeden programista uruchomi: git checkout release-1.1 git merge hotfix-1.0.1 ... po jego zatwierdzeniu, te polecenia połączą całą gałąź, w tym kod, którego nigdy wcześniej nie widział i może nie być najlepszą osobą do rozwiązania, jeśli są jakieś konflikty.


title: Wspólny kontekst: dobry czy zły?

text: RSpec umożliwia użytkownikom udostępnianie kontekstu między testami/przykładami, co znacznie zmniejszyłoby liczbę linii kodu w mojej aplikacji. Z drugiej strony, w jakiś sposób związany z kwestią współdzielenia bazy kodu między testami, jednym z powodów, dla których używam Factories, a nie Fixtures, jest to, że nie chcę, aby testy były zależne od kodu przechowywanego poza testami. Ryan Bates wyjaśnia to lepiej: > Istnieje silna zależność między testami a osprzętem i możemy > spowodować, że testy zakończą się niepowodzeniem tylko poprzez zmianę osprzętu. Zależności zewnętrzne >, które są tak silne, nie są dobrym pomysłem i powodują, że testy są kruche. Jaka jest najlepsza praktyka, aby udostępniać kontekst między testami lub mieć niezależny kontekst dla każdego testu?


title: Używając node.js, jak serwować treść bez użycia frameworka takiego jak express?

text: Próbuję nauczyć się node.js i stworzyć aplikację internetową i chociaż robię co w mojej mocy, aby po prostu używać tylko node.js do jej tworzenia, mam bardzo trudny czas na znalezienie zasobów i przykładów opisujących proces bez korzystania z innych frameworków lub bibliotek. W szczególności, jak mogę wyświetlać zawartość HTML i CSS bez używania zakodowanych na stałe zmiennych łańcuchowych, ale dynamicznie wyświetlać pliki HTML i CSS za pomocą samego node.js?


title: Czy „przerwa” i „kontynuuj” są złymi praktykami programistycznymi?

text: Mój szef nonszalancko wspomina, że źli programiści używają `break` i `continue` w pętlach. Używam ich cały czas, ponieważ mają sens; pozwól, że pokażę Ci inspirację: function weryfikuj(obiekt) { if (obiekt->wartość < 0) return false; if (obiekt->wartość > obiekt->max_wartość) zwraca false; if (obiekt->nazwa == "") zwraca false; ... } Chodzi o to, że najpierw funkcja sprawdza, czy warunki są poprawne, a następnie wykonuje faktyczną funkcjonalność. IMO to samo dotyczy pętli: while (primary_condition) { if (loop_count > 1000) break; jeśli (time_exect > 3600) przerwa; if (this->data == "undefined") kontynuuj; if (this->skip == true) kontynuuj; ... } Myślę, że to ułatwia czytanie & debug; ale też nie widzę wady. Proszę skomentuj.


title: Czy "kontynuuj" i "przerwij" w pętlach jest antywzorcem/złą praktyką w Javie?

text: Widzę główny cel "kontynuuj" w programowaniu, może on wyjść z pozostałych kroków pętli, takich jak: while(warunek1){ ... kod ... if(!warunek2){ Continue; } ... kod ... if(warunek3){ przerwa; } ... kod ... } Rozumiem, że condition2 i condition3 mogą zależeć od kodu wewnętrznego, dzięki czemu przydatne jest utworzenie oddzielnej trasy ucieczki z kroku pętli. Ale czy to oznacza, że kod powinien zostać zrefaktoryzowany, zamiast tworzyć drogi ucieczki, jak na przykład przemyślenie pierwotnego warunku1? Powiedziałbym, że jeśli potrzebuję kilku części `continue` i `break`, źle się czuję z moim kodem, zwykle pracuję bez `continue` i tak naprawdę nie tęsknię za tym. Innym zastosowaniem „continue” i „break”, które mogę zaakceptować, jest optymalizacja, ale nadal mam to samo odczucie, co powiedziałem powyżej. Z jakichś powodów czuję, że "używam GOTO". **Czy mam rację, jeśli nie, to dlaczego?**


title: jakie są zalety i wady umieszczania kodu dla niedokończonego projektu na github

text: Zamierzam pracować nad projektem, który zamierzam wydać jako open source za pośrednictwem githubów. Jakie są zalety umieszczania kodu na githubie od samego początku, w przeciwieństwie do czekania, aż projekt będzie gotowy do pracy przed opublikowaniem. Jeśli ma to znaczenie, ten konkretny projekt jest aplikacją/usługą C#, a ja mam tylko darmowe konto github (więc nie mogę uczynić go prywatnym, a następnie wycofać okładki później)


title: Lepsze OOP w Javascript - wiele metod czy metod z opcjami?

text: Powiedzmy, że mam taki obiekt: function Foo() { this.parser = new DataParser(); }; Wewnątrz Foo mam metodę, która robi coś takiego: Foo.prototype.getResponse = function(message, callback) { var payload = {data: message, type: 'normal'}; var response = this.parser.parse(payload, function(data){ callback(data); }); } Teraz powiedzmy, że gdzieś indziej muszę wywołać `foo.getResponse()`. Przez większość czasu chcę, aby działał tak, ale czasami potrzebuję nieco innego formatu ładunku — powiedzmy, że muszę określić inny typ. Czy lepiej byłoby stworzyć inną metodę dla tego nieco innego rodzaju żądania, na przykład... Foo.prototype.getSimilarResponse = function(message, callback) { var payload = {data: message, type: 'other'}; var response = this.parser.parse(payload, function(data){ callback(data); }); } ... lub skorzystaj z opcji `getReponse`, na przykład... Foo.prototype.getSimilarResponse = function(message, type, callback) { var payload = {data: message, type: type}; var response = this.parser.parse(payload, function(data){ callback(data); }); } ... czy zrobić coś zupełnie innego? Użycie opcji `type` w powyższym przykładzie jest o wiele bardziej DRY, ale nie podoba mi się sposób, w jaki wymaga ona od dzwoniącego wiedzy o typie ładunku, co w rzeczywistości jest problemem `Foo` i nie musi być wystawione gdziekolwiek indziej. Jak poleciłbyś podejście do sytuacji takiej jak powyżej?


title: Materiały szkoleniowe - książki vs webcasty

text: Jestem w trakcie doboru materiałów szkoleniowych dla naszego zespołu. Skupiamy się głównie na C# (Silverlight i ASP.NET). Pomyślałem, że dobrym pomysłem będzie zaopatrzenie się w książki (aby być na bieżąco), ale natknąłem się również na strony internetowe, które oferują webcasty/warsztaty z rocznymi opłatami abonamentowymi. Zdecydowanie wolę śledzić jakiś film i faktycznie wypróbowywać kod, niż czytać Biblię C#, dlatego spodobał mi się ten pomysł. **Czy ktoś miał jakieś doświadczenie z tymi materiałami wideo/webcastami/naukami warsztatowymi? Czy są tam jakieś dobre?**


title: Jak przypisujesz kody błędów?

text: Jak, opracowując projekt średniej wielkości, identyfikujesz, tworzysz i utrzymujesz kody błędów? Za życia nie mogę wymyślić prostej i czystej metody na zrobienie tego. Niektóre z moich pomysłów konwertują nazwy klas i nazwy metod na ciągi całkowite, ale jest to zbyt długie, aby wyświetlić je użytkownikowi, oprócz tego, że nazwy metod i nazwy klas mogą się zmieniać (mam nadzieję, że nie!). Inni po prostu używają rosnącego systemu dzienników (tj. kiedy tworzę nowy komunikat o błędzie, po prostu dodaj 1 do ostatniego identyfikatora komunikatu o błędzie). Ale to jest po prostu całkowicie niezorganizowane. **Edytuj 1:** Mówiąc dokładniej, mówię o kodzie błędu, takim jak: „Błąd 401 Nieautoryzowane”.


title: Jak dostać się na poziom, na którym można pobierać 300$/godz.

text: Od około 9 lat jestem programistą dla finansów/funduszy hedgingowych na północnym wschodzie. Jestem konsultantem i chciałbym tak pozostać. Co muszę zrobić, aby osiągnąć około 300 USD za godzinę? Przez całą swoją karierę byłem czystym programistą, więc wygląda na to, że wymagane będzie większe zarządzanie. Czy ten cel jest w ogóle możliwy?


title: Jaki jest rozmiar zmiennej referencyjnej w java. Czy można to obliczyć?

text: Ponieważ wskaźniki w C wymagają 2 bajtów rozmiaru pamięci, niezależnie od rozmiaru typu danych, na który wskazują. Czy to samo dotyczy również odwołań do javy?


title: Zawijanie argumentów konstruktora

text: Biorąc pod uwagę klasę bazową z około 25 podklasami, zauważyłem, że dodanie argumentu do konstruktora bazowego jest bolesne. protected AbstractController(Service1 s1, Service2 s2, Service3 s3){ ... } public Concrete1Controller(Service1 s1, Service2 s2, Service3 s3) : base(s1, s2, s3) public Concrete2Controller(Service1 s1, Service2 s2, Service3 s3) : base(s1, s2, s3) Teraz, gdy potrzebuję kolejnego obiektu przekazanego do mojego kontrolera bazowego, zastanawiam się nad wprowadzeniem klasy wrappera i refaktoryzacji, aby w konstruktorach (większości) konkretnych instancji wymagany był tylko jeden parametr. klasa publiczna ServiceLayer { public Service1 S1 {get; zestaw prywatny; } usługa publiczna2 S2 {get; zestaw prywatny; } usługa publiczna3 S3 {get; zestaw prywatny; } public ScheduledReportServices(Usługa1 s1, Usługa2 s2, Usługa3 s3) { S1 = s1; S2 = s2; S3 = s3; } } Co pozwoli mi trochę posprzątać. protected AbstractController(ServiceLayer sl){ ... } public Concrete1Controller(ServiceLayer sl) : base(sl) public Concrete2Controller(ServiceLayer sl) : base(sl) Biorąc pod uwagę ilość, jaka to zmniejsza bałagan, jestem albo narkomanem, że tego nie robię to na początek lub istnieje uzasadniony argument przeciwko takiemu podejściu. Chciałbym a) wiedzieć, jak nazywa się ten „wzór” i b) czy będę tego żałować, a jeśli tak, to dlaczego?


title: Najważniejsze porady dla nieprofesjonalnego programisty

text: Jako dodatek do mojej regularnej pracy (nauczanie) podjąłem się zadania opracowania systemu rezerwacji wizyt, który zostanie wdrożony na serwerze szkoły (SQL Server 2008 R2 / IIS 7.5). Od samego początku zajmuję się pisaniem i programowaniem stron internetowych, dzięki czemu dobrze znam się na stronie klienta (w tym jQuery). Posiadam również pewną wiedzę i doświadczenie w programowaniu baz danych (Access i mySQL). Od kilku miesięcy uczę się programowania po stronie serwera (głównie poprzez książki Apress na MVC3, ASP.Net i C# oraz poprzez tutoriale na Pluralsight). Będę rozwijał system w Visual Studio 2010 , i napisałem jedno lub dwa podstawowe rozwiązania praktyczne w MVC3, które działają dobrze w moim lokalnym systemie programistycznym. Moje pytanie: Jaka jest najważniejsza rzecz, którą powinienem wiedzieć lub zrobić, kiedy rozpoczynam ten projekt? (PS. Zobowiązuję się do używania MVC3, Entity Framework 4.1, C# i Visual Studio.)


title: Jak zwykle zarządza się przekazywaniem żądań we wzorcu Łańcucha Odpowiedzialności?

text: Po prostu eksperymentowałem z wzorcem **Łańcuch odpowiedzialności**, wdrażając własną wersję. Obecnie czytam wzorce projektowe, ale nie jestem do końca pewien, czy DP każe zatrzymać przekazywanie żądań po wykonaniu pojedynczej akcji, czy po prostu kontynuuje do końca łańcucha. To, co mnie interesuje, to jak zarządzana jest ta cecha wzorca COR w większości przypadków. W poniższym przykładzie pozwoliłem, aby przekazywanie kontynuowało się do końca mojego łańcucha. Nie sądzę, że potrzebujesz żadnego źródła, ale i tak możesz je znaleźć tutaj. Jeśli **ominąłem kilka akapitów DP** mówiących o tym, proszę podać jego lokalizację!


title: Czy Little Endian wygrał?

text: Kiedy ostatnio uczyłem o bitwie Big vs. Little Endian, uczeń zapytał, czy została ona rozstrzygnięta, a ja zdałem sobie sprawę, że nie wiem. Patrząc na artykuł w Wikipedii, wydaje się, że najpopularniejsze obecnie pary system operacyjny/architektura używają Little Endian, ale protokół internetowy określa Big Endian do przesyłania wartości numerycznych w nagłówkach pakietów. Czy byłoby to dobre podsumowanie obecnego stanu? Czy obecne karty sieciowe lub procesory zapewniają obsługę sprzętową przełączania kolejności bajtów?


title: Jakie cechy ma „przeciętny” programista?

text: Na tej stronie i w innych miejscach dużo się mówi o porównywaniu produktywności doskonałych programistów z „przeciętnymi” programistami. Podobnie mówi się o tym, jak zostać świetnym programistą zamiast „przeciętnym”. Każdy może się zgodzić, że na pewno jest kilku niesamowitych programistów i dużo więcej (bardzo) kiepskich programistów. Są one łatwe do zdefiniowania (zaprojektowanie i napisanie edytora tekstu w Assemblerze na Nintendo DS w ciągu weekendu w porównaniu do sprawdzania kodu „kopiuj i wklej”, który nie kompiluje się codziennie). Ale jakie cechy ma przeciętny koder? Myślę, że jest to ważne poza zwykłą dyskusją akademicką, taką jak podejmowanie decyzji o zatrudnieniu i ocenianie miejsca, w którym się znajdujesz, na gówniano-niesamowitą skalę. Jakie więc cechy ma lub powinien mieć „przeciętny” programista?


title: Jaka jest korzyść z wielu wartości zwrotów

text: Czuję, że instrukcja powrotu powinna zwracać tylko jedną wartość. Kiedy zwraca wiele, sprawy stają się zagmatwane. Wiem, że ponieważ typ zwracany w Javie musi być zadeklarowany, jest to trudne do zrobienia, ale w językach takich jak Python jest to bardzo proste. Czy wiele wartości zwracanych jest oznaką złego projektu lub stylu kodowania? Przykład Pythona def get_name(): # twój kod zwraca imię, nazwisko


title: Czy powinienem organizować moje bazy danych w oparciu o prawdziwą formę danych lub jak planuję wykorzystać te dane?

text: To w większości pytanie hipotetyczne, ale jest to coś, czym się rzucam i zastanawiam się, co myślą inni ludzie. Oto wymyślny przykład ilustrujący: Załóżmy, że tworzę aplikację, która pozwala użytkownikom wybrać kilka słów kluczowych, a następnie pokazać im zdjęcia oznaczone tymi słowami kluczowymi. Z jednej strony mogłem stworzyć tabele `user`, `keyword` i `photo`, które przechowują istniejące encje danych. Umożliwiłoby mi to łatwą zmianę funkcji aplikacji bez konieczności zmiany podstawowych struktur danych, ale wymaga również kilku zapytań w celu pobrania danych, których potrzebuję dla aplikacji. Albo mógłbym po prostu mieć pojedynczą tabelę „zdjęcia użytkowników” i jakoś upchnąć tam wszystkie dane. Ułatwiłoby to pobieranie danych, których potrzebuję dla aplikacji, ale trudniej byłoby wykonać jakiekolwiek inne zapytania dotyczące tych danych. W końcu, `user-photo` nie jest tak naprawdę _rzeczą_ \-- to tylko wygodna struktura danych do tego jednego celu. To może być zły przykład, ale głównym celem mojego pytania jest: czy struktura twojej bazy danych powinna być oparta na rzeczywistych elementach, które przechowują, czy też możesz używać skrótów, aby ułatwić korzystanie z danych do swoich celów?


title: Implikacje złożoności czasowej podczas projektowania skryptów powłoki dla dużych ilości danych/dużej liczby plików?

text: Istnieje wiele pytań dotyczących wydajności poleceń lub skryptów w zasobie _U+L_ SE. Ponieważ czas jest najważniejszy, jest on często oceniany przy użyciu `bash` time _słowa zastrzeżonego_ lub zewnętrznego polecenia `time` i podzbioru danych docelowych, przy średnim lub bez obciążenia. Istnieją jednak scenariusze, które dotyczą albo dużej liczby plików, albo po prostu operacji na bardzo dużych plikach. W niektórych przypadkach dokładna analiza tego, co dzieje się w powłoce, skomplikowana wiedza na temat zachowania poleceń, a nawet względy sprzętowe, zapewniają wgląd w wydajność. Ale benchmarking nie jest prostą sprawą. W jednym przypadku niedawno członek społeczności skomentował _złożoność czasową_ polecenia, sugerując, że skoro nie było _operacji sortowania_ \- a nie tylko polecenia `sortowania', ostatecznie skalowanie byłoby lepsze przy większej ilości danych. Rozwiązanie obejmowało `awk`, podczas gdy inne rozwiązanie obejmowało na przykład kombinację poleceń `grep`, `sort` i `head`. * Czy to tylko przykład "im prościej, tym lepiej" - jakie są główne konsekwencje _złożoności czasowej_ podczas projektowania skryptów powłoki, które operują na ogromnych zestawach danych (liczba lub rozmiar)? * Poza zdrowym rozsądkiem i _sortowaniem_ (operacją, dla której istnieje pozornie wysoki poziom intuicji co do kosztów wydajności, nawet dla osoby niebędącej ekspertem), czy istnieje dobrze znany przykład _powszechnej złożoności czasowej_, który pokazałby, w jaki sposób koncepcje mają zastosowanie w praktyce do powłoki skrypty?


title: Czy operator instanceof w Javie jest uważany za odbicie i co definiuje odbicie?

text: Rozmawiałem dzisiaj ze współpracownikiem, czy użycie operatora Java `instanceof` jest rodzajem refleksji. A dyskusja szybko przekształciła się w to, co właściwie definiuje refleksję. **Jaka jest więc definicja odbicia?** **Czy użycie `instanceof` jest uważane za „używanie odbicia”?** Ponadto, jeśli `instanceof` jest uważane za odbicie, to czy polimorfizm nie jest również „używaniem odbicia”? odbicie"? Jeśli nie, jaka jest różnica?


title: Jak piszesz przypadki testów jednostkowych?

text: Czasami kończę pisanie przypadków testów jednostkowych dla kodu napisanego przez innych programistów. Zdarzają się sytuacje, kiedy naprawdę nie wiedziałem, co programista próbował zrobić (część biznesowa) i po prostu manipulowałem przypadkiem testowym, aby uzyskać zieloną linię. Czy to normalne w branży? Jaki jest normalny trend? Czy programiści, którzy napisali kod, mają pisać przypadki testów jednostkowych?


title: Czy istnieje nazwa metody testowania, w której porównuje się zestaw bardzo różnych projektów?

text: „Testy A/B” definiuje się jako „metodę testowania marketingowego, za pomocą której porównuje się podstawową próbkę kontrolną z różnymi próbkami testowymi z jedną zmienną w celu poprawy wskaźników odpowiedzi”. Chodzi tu oczywiście o to, aby wiedzieć, które małe zmiany jednej zmiennej są bardziej optymalne, w celu znalezienia optimum lokalnego. Można jednak wyobrazić sobie nieco pokrewny, ale inny scenariusz testowania wskaźnika odpowiedzi w przypadku większych przeprojektowań: weź podstawowy projekt kontrolny, weź jeden lub więcej zupełnie różnych projektów i uruchom próbki testowe na tych przeprojektowanych projektach, aby porównać wskaźniki odpowiedzi. Jako praktyczny, ale wymyślny przykład, wyobraź sobie testowanie zestawu projektów dla tej samej strony internetowej, z których jeden to minimalistyczny projekt „googly”, drugi to zagracony projekt „Amazony”, a drugi to artystyczny projekt „projektowy” (np. maksymalne wykorzystanie elementów projektu w przeciwieństwie do Google ale minimalna jednocześnie prezentowana informacja, jak Google ale w przeciwieństwie do Amazon) **Czy istnieje oficjalna nazwa dla takich testów?** Zdecydowanie nie są to testy A/B, ponieważ ich główny składnik (znalezienie lokalnego optimum poprzez testowanie pojedynczej zmiennej małe zmiany, które można przypisać przesunięciu odpowiedzi) nie są obecne. Chodzi bardziej o próbę porównania zestawu lokalnych optimum i porównanie, aby zobaczyć, który z nich działa lepiej jako globalny optimum. Nie jest to testowanie wielozmiennowe, A/B/N ani żadne inne, ponieważ tak naprawdę nie ma konkretnych zmiennych, które można przypisać, tylko różne projekty.


title: umiejętność vim (lub innego edytora tekstu) jako miara dla potencjalnych kandydatów do pracy w dziedzinie technologii

text: Nie jestem pewien, czy jest to pytanie „subiektywne”, czy nie. Zastanawiam się nad zatrudnieniem średniopoziomowego programisty java i zdałem sobie sprawę, że wszyscy kompetentni programiści, z którymi pracowałem, mieli bardzo dobrą znajomość wybranego przez siebie edytora. Wybrany przeze mnie edytor to vim (czasami używam go jako wtyczki w IntelliJ IDEA). Więc w przypadku, gdy ktoś twierdzi, że używa vima do programowania, rozważałem danie im kilku szybkich zadań, aby zobaczyć, jak sobie z tym poradzą. Coś, co możesz zrobić na różne sposoby. Na przykład dzisiaj miałem plik xml z ciągami znaków zastępczych w postaci <?xml version="1.0"?> <element-główny> ....xml.... ${placeholder.here} jakiś tekst ${placeholder. tam} i trochę więcej tekstu ${placeholder.everywhere} ....xml.... </root-element> i chciałem przekonwertować go na ciąg, który mógłbym następnie wkleić jako literał tablicy ciągów java, posortowany alfabetycznie. np. ["placeholder.everywhere", "placeholder.here", "placeholder.there"] Czy ktoś używał tego rodzaju lub danych w procesie rozmowy kwalifikacyjnej, a jeśli tak, jakie były wyniki? Jeśli użyłeś zdolności edytora jako metryki, jakie zadania edycyjne ustawiłeś? Jakieś problemy z używaniem tego jako wskaźnika (oczywiście między innymi kryteriami) umiejętności?


title: Dlaczego w ostatnich dziesięcioleciach tempo popularyzacji języka programowania zwolniło?

text: Jeśli dobrze rozumiem, we wczesnych dekadach informatyki miały miejsce ogromne narodziny języków programowania, ale potem wszystko się ustabilizowało. Zasadniczo, dlaczego wiele uniwersytetów i branż nadal używa języków takich jak C i C++ (które powstały dekady temu), skoro od tego czasu minęło wiele dziesięcioleci, aby ulepszać i tworzyć bardziej efektywne (i przyjazne dla człowieka) języki?


title: Sprawdzone metody routingu restrykcyjnego dla Google App Engine z pythonem?

text: Powiedzmy, że mam prostą strukturę: app = webapp2.WSGIApplication([(r'/', 'pages.login'), (r'/profile', 'pages.profile'), (r'/dashboard', 'pages .dash'), ], debug=True) W zasadzie wszystkie strony wymagają uwierzytelnienia z wyjątkiem logowania. Jeśli odwiedzający próbuje wejść na restrykcyjną stronę i nie jest autoryzowany (lub nie ma uprawnień), zostaje przekierowany do widoku logowania. Pytanie dotyczy projektu routingu. Czy powinienem sprawdzić uprawnienia auth i ACL w każdym z modułów (`pages.profile` i `pages.dash` z powyższego przykładu), czy po prostu przekazać wszystkie żądania przez pojedynczy mechanizm routingu: app = webapp2.WSGIApplication([ (r '/', 'pages.login'), (r'/.+', 'router')], debug=True) Nadal jestem całkiem nowy w GAE, ale moja aplikacja wymaga uwierzytelnienia, a także ACL. Zdaję sobie sprawę, że na poziomie konfiguracji serwera jest dyrektywa `login`, ale nie wiem jak to działa i jak mogę to zacisnąć moją logiką ACL, a co gorsza nie potrafię oszacować czasu potrzebnego do uruchomienia. Poza tym wygląda na to, że udostępnia tylko 2 grupy użytkowników: `admin` i `user`. W każdym razie takiej konfiguracji używam: handlers: - url: /favicon.ico static_files: static/favicon.ico upload: static/favicon.ico - url: /static/* static_dir: static - url: .* script: main.app secure: always Czy coś tu brakuje i ACL można ustawić w pliku konfiguracyjnym? Dziękuję.


title: Przydatny schemat wersjonowania projektu git?

text: Mam mały projekt github, do którego muszę dodać opcję, aby wyświetlić numer wersji w wierszu poleceń. Problem w tym, że nie mam pojęcia, jak „obliczyć” numer wersji. Czy to jakiś losowy proces? Czy powinienem zacząć od 1.0 (prawdopodobnie tworząc tag lub coś takiego) i umieścić liczbę po `.` dla poprawek? Wiem, że to pytanie jest trochę niejasne... Po prostu nigdy nie miałem z tym do czynienia i chcę użyć jakiegoś rozsądnego schematu wersjonowania. **EDYTUJ** Interesuje mnie również, jak automatycznie zaktualizować ten numer wersji, być może za pomocą czegoś takiego jak git hook.


title: Najlepsza rada dla programistów gier, którzy chcą być niezależni?

text: Więc. Obecnie pracuję jako stażysta w firmie zajmującej się tworzeniem gier mobilnych. Używam Unity dość często od 1 roku, ale to jest całe moje doświadczenie z projektowaniem/rozwojem gier. Oto rzeczy. Chcę iść na indie, głównym powodem jest zabawa, naprawdę lubię gry, a tworząc gry niezależne, wierzę, że mogę pozwolić mojej wyobraźni latać i tworzyć osobiste, osobiste rzeczy. Niestety ja... po prostu nie wiem od czego zacząć! Interesuje mnie tworzenie gier mobilnych i internetowych, więc co... mam pobrać Stencyl? Construct 2?...XCODE na iOS, może świetna wtyczka do Unity byłaby w porządku? Jaka byłaby twoja najlepsza rada dla kogoś takiego jak ja? (programista i interesuje się designem) :)


title: Wydajna struktura danych do przechowywania wykresu

text: Problem Link - http://opc.iarcs.org.in/index.php/problems/NUMTRIPLE Moim zdaniem problem można rozwiązać za pomocą struktury danych, która pokazuje, jak każda liczba jest połączona z drugą najmniejszą możliwą wartość. Ale moje pytanie brzmi, jaka struktura danych (najbardziej wydajna) może przechowywać/reprezentować takie dane? Czy istnieje też lepszy (szybszy) sposób rozwiązania tego problemu. Dziękuję