title: Jak skutecznie znaleźć, zatrudnić i współpracować z kontrahentami?

text: Wiem, że jest kilka pytań, które są podobne do tego, ale nie sądzę, aby którekolwiek z nich naprawdę zadało lub odpowiedziało na mój zestaw pytań. Trochę tła: około 6 miesięcy temu przeszedłem od pracy dla dużej, biurokratycznej, opartej na procesach firmy programistycznej do bardzo małego start-upu. Chciałem pracować dla mniejszego, szybszego zespołu i firmy -- uwaga: uważaj na to, czego sobie życzysz! :) Chociaż mam znacznie bardziej wyszukany tytuł, jestem głównie dev managerem (oraz architektem oprogramowania na pół etatu i kierownikiem technicznym). Jednym z moich największych wyzwań w mojej karierze zawsze było zatrudnianie. Średnio dostaję 1 dobrego programistę na każde 5, które zatrudniam. To ogromna strata czasu i pieniędzy. Uważam, że nadal mam z tym problemy, ale teraz, gdy pracuję głównie z wykonawcami, wyzwania są nieco inne (dobra wiadomość jest taka, że wykonawców łatwiej jest zwolnić niż pełnoetatowych pracowników z USA). Najpierw najważniejsze... Znajdowanie, przeprowadzanie wywiadów i zatrudnianie: Z jakich źródeł korzystasz? Jakie pytania zadajesz? Pytasz o referencje? Czy prosisz ich, aby pracowali nad problemami/przesyłali próbki kodu? Uwaga: nigdy nie chcę ryzykować, że ktoś prześle komuś innemu adres IP, ale w przeszłości potencjalni pracodawcy prosili mnie o stworzenie aplikacji, która rozwiąże problem itp. Nie chcę, aby była to kwestia kulturowa, ale czy zadajesz różne pytania w zależności od kraju pochodzenia? Znowu, nie chcę, żeby to się zmieniło w nie korzystaj z wykonawców z tego czy innego kraju, bo to bzdury… wszędzie są dobrzy deweloperzy, ale też wielu złych. Czy uważasz, że lepiej współpracować z osobami prywatnymi lub firmami wykonawczymi? Myślę, że dużo więcej czasu spędziłem pracując z większymi firmami. Po zatrudnieniu, jak efektywnie z nimi pracować? Jakich technologii używasz? Na przykład nie wyobrażam sobie, żebym próbował wykonywać tego rodzaju pracę bez DVCS. Nie sądzę, że kiedykolwiek wrócę do SVN! :) Jakich narzędzi/stron do współpracy używasz? Czy miałeś lepsze doświadczenia z umowami o stałej cenie lub umowami godzinowymi? Udało mi się oba i rozumiem niektóre plusy i minusy każdego z nich, ale przysięgam, że nadal nie odkryłem, który jest lepszym „zakładem” (i tak, moim zdaniem jest to w zasadzie zakład). Myślę, że dla mnie muszę zacząć zatrudniać co godzinę, ponieważ nie podoba mi się kontrola, którą wydaje mi się, że rezygnuję z kodu, gdy ma stałą cenę? Czy chcesz mieć dostęp do kodu podczas tworzenia, aby móc przejrzeć i zobaczyć, czy czujesz, że otrzymujesz wysokiej jakości pracę? Jak radzisz sobie z kiepskim kodem? Jakich SLA wymagasz w umowie? Na przykład pokrycie testów jednostkowych? itd. Wreszcie wiem, że większość ludzi mogłaby wziąć którąkolwiek z tych rzeczy i napisać kilka na ten temat. Proszę odpowiedzieć tylko na jedną część pytania. Lub podaj link do posta na blogu, w którym Twoim zdaniem ktoś odpowiedział na podobny zestaw pytań.


title: Nazewnictwo interfejsów dla trwałych wartości

text: Mam 2 różne typy trwałych wartości, które mam problem z prawidłowym nazwaniem. Są one zdefiniowane w następującej strukturze Java, zapożyczając na przykład element Optional Guava i używając nazw ogólnych, aby uniknąć zakotwiczenia: interface Foo<T> { T get(); pusty zestaw (wartość T); } interfejs Bar<T> { Opcjonalne<T> get(); pusty zestaw (wartość T); } * W przypadku `Foo`, jeśli wartość nie została ustawiona jawnie, dostępna jest jakaś wartość domyślna lub wstępnie ustawiona. * W przypadku `Bar`, jeśli wartość nie została ustawiona jawnie, występuje wyraźny stan „brak wartości”. Próbuję zoptymalizować nazwy ich witryn połączeń. Na przykład, ktoś używający `Foo` może nie dbać o to, czy w grę wchodzi wartość domyślna, tylko że ma gwarancję, że zawsze będzie miał wartość. Jak byś nazwał te interfejsy?


title: Czy to jest wzorzec projektowy?

text: Mam następujący kod C#. Pomogło mi to w dobry sposób uniknąć niektórych powtórzeń kodu. Metoda `ExecuteQueryGenericApproach<T>` odbiera jako argument delegata ogólnego `Func`. Delegowana metoda ma parametr, który jako argument otrzymuje `IDataRecord`. Oznacza to, że metoda `ExecuteQueryGenericApproach<T>` dostarcza wymagany IDataRecord do przekazywanych do niej funkcji. **PYTANIA** 1. Jak nazywa się ten wzór? (Na podstawie wzorców projektowych `GoF`) 2. Czy istnieje inny scenariusz, w którym ten wzorzec jest używany? **Uwaga** : Znajomość nazwy tego wzoru pomoże mi lepiej go zbadać i znaleźć możliwości jego wykorzystania. CommonDAL public class CommonDAL { public static IEnumerable<T> ExecuteQueryGenericApproach<T>(ciąg commandText, List<SqlParameter> commandParameters, Func<IDataRecord, T> methodToExecute) { string connectionString = @"Server=XXXX;Database=AS400_Source;ID użytkownika= dxxx;Hasło=xxxx5"; //Action, Func i Predicate są wstępnie zdefiniowanymi delegatami Generic. //Więc jako delegaci mogą wskazywać na funkcje z określonym podpisem. using (SqlConnection connection = new SqlConnection(connectionString)) { using (SqlCommand = new SqlCommand()) { polecenie.Połączenie = połączenie; command.CommandType = CommandType.Text; polecenie.TekstPolecenia = TekstPolecenia; polecenie.Czas polecenia = 0; if (commandParameters != null) { command.Parameters.AddRange(commandParameters.ToArray()); } połączenie.Otwórz(); using (var rdr = command.ExecuteReader()) { while (rdr.Read()) { yield return methodToExecute(rdr); } rdr.Zamknij(); } } } } } EmployeeDAL public class EmployeeRepositoryDAL { public statyczna Lista<Pracownik> GetEmployees() { string commandText = @"SELECT E.IdentyfikatorPracownika,E.NazwaPracownika,R.IDRoli,R.RoleName FROM dbo.JOINERPracownik.Role Pracownik E ON E.EmployeeID= ER.EmployeeID INNER JOIN dbo.[Role] R ON R.RoleID= Er.RoleID "; //IEnumerable<Pracownik> pracownicy = MyCommonDAL.ExecuteQueryGenericApproach<Pracownik>(CommandText, commandParameters, Employee.EmployeeFactory); //Grupuj według jest potrzebne, aby wyświetlić wszystkie role pracownika. Pracownicy IEnumerable<Employee> = CommonDAL.ExecuteQueryGenericApproach<Employee>(commandText, null, Employee.EmployeeCreator) .GroupBy(x => new { x.EmployeeID, x.EmployeeName }, (key, group) = {> newpracownik key.EmployeeID, EmployeeName = key.EmployeeName, Roles = group.SelectMany(v => v.Roles).ToList() } ). Notować(); zwróć pracowników.ToList(); } } Entity public class Pracownik { public int IDPracownika { get; ustawić; } public string EmployeeName { get; ustawić; } public Lista<Role> Role { get; ustawić; } //IDataRecord Zapewnia dostęp do wartości kolumn w każdym wierszu dla DataReader //IDataRecord jest implementowany przez dostawców danych .NET Framework, którzy uzyskują dostęp do relacyjnych baz danych. //Metoda statyczna public static Employee EmployeeCreator(IDataRecord record) { var worker = new Employee { EmployeeID = (int)record[0], EmployeeName = (string)record[1], Roles = new List<Role>() }; pracownik.Roles.Add(nowa rola { RoleID = (int)record[2], RoleName = (string)record[3] }); pracownik powrotu; } }


title: Jakiej koncepcji brakuje mi w prywatnych metodach i testach?

text: Czytałem dużo blogów spierających się o prywatne metody i testowanie. Niektórzy mówią, że nie powinieneś testować prywatnych metod, mówią, że powinieneś je upublicznić lub umieścić te metody w nowej klasie. Ale co z enkapsulacją? powiedzmy: 1. Mam tę metodę, która jest wystarczająco prosta, aby nie należeć do nowej klasy, i 2. Może być użyteczna tylko do wewnętrznych rzeczy, więc nie ma powodu, aby upubliczniać ją. Moja ogólna zasada o tym, że metody są publiczne lub prywatne, jest prosta, jeśli jest użyteczna na zewnątrz, jest publiczna, jeśli jest użyteczna tylko wewnątrz, jest prywatna. Czy brakuje mi czegoś w tej logice?


title: Czy mądrze jest zaakceptować, że backend developer pracuje tylko nad frontendową częścią aplikacji tylko dlatego, że nawet dobrze ją znasz?

text: Jestem programistą Pythona, mam doświadczenie w tworzeniu aplikacji internetowych przy użyciu Pythona. Ponieważ zajmuję się web , muszę mieć trochę wiedzy na temat frontendu , stąd nauczyłem się nawet HTML, CSS i JS. Jako swoją domenę kariery wybrałem Pythona. Niedawno przeniosłem się do nowej firmy badawczo-rozwojowej, zatrudnili mnie jako programistę Pythona z ogromnym pakietem i dali mi aplikację internetową do opracowania. Nie mieli żadnego projektanta do pracy nad częścią frontendową, więc w ciągu pierwszych kilku tygodni opracowałem jego projekt i zacząłem tworzyć aplikację samodzielnie, wykonując frontend i backend. Wszyscy byli pod dużym wrażeniem projektu i przepływu aplikacji na przedniej części. W dwa miesiące ukończyłem prawie 30% pracy. Jak dotąd wszystko było dobrze. Nagle zatrudnili nowego faceta, który ma doświadczenie w Perlu do innego projektu, a ponieważ kierownik chciał wkrótce dokończyć mój projekt, poprosił faceta od perla, aby tymczasowo pracował nad częścią zaplecza mojej aplikacji (Python) i poprosił mnie o wykonanie tylko część przednia. Teraz czuję, że to degraduje mój profil. Ponieważ do tej pory nie dałem żadnej pracy w pythonie. Zatrudnili mnie jako programistę Pythona, a ponieważ przejąłem inicjatywę i wykonałem front-end aplikacji, więc chciałem, aby mój produkt wyglądał dobrze. A teraz, odkąd wszystkim spodobał się sposób, w jaki zaprojektowałem ten projekt, zrobili ze mnie pełnoetatowego programistę front-end. **Kilka informacji o mnie:** Przed wejściem do tej firmy miałem 5 ofert pracy w pythonie, w tym niektóre z gigantycznych firm, ale wybrałem to, ponieważ była to tylko firma badawczo-rozwojowa, a nawet najwyższy pakiet. I ta firma przeprowadziła około 4 rund na pytona i po wybraniu mnie powiedzieli, że czekają na takiego faceta jak ja przez ostatnie sześć miesięcy. Wszystkie osoby, które przeprowadzały ze mną wywiady dla Pythona, pochodziły z innego zespołu. Potem, kiedy zacząłem rozwijać projekt, dowiedziałem się, że praca w Pythonie jest nieco mniejsza w porównaniu z frontendową częścią js, ponieważ jest to cała aplikacja SPI z pełnym napędem ajax. A w mojej poprzedniej firmie robiłem nawet JS i back-end python dla moich projektów. Ponieważ robię część Pythona, czułem się dobrze pracując w ten sposób. Potem w nowej firmie też pracuję w ten sam sposób, ale od tej pory kierownik dowiedział się, że python ma mniej pracy, poprosił o to mniej doświadczonego faceta. Aby projekt został wkrótce ukończony. Menedżer myśli tylko o dokończeniu projektu, nie dba o nas pracowników i naszą główną domenę. **Powód, dla którego warto wybrać Pythona:** Myślę, że mogę śmiało powiedzieć, że jestem już ekspertem w dziedzinie front-endu, ale czuję, że Python jest ogromną stroną i mogę potrzebować wielu lat doświadczenia, aby uzyskać eksperta to. A python to domena, która dała mi szybki wzrost w mojej karierze, gdy porównuję z moimi przyjaciółmi w innych technologiach internetowych, takich jak php. To, co mówi moje serce, to stać się ekspertem od Pythona w każdej jego dziedzinie. Proszę, ktoś mi zasugeruje, jak sobie z tym poradzę? Czy muszę informować kierownika o tym, jak się czuję? Czy te firmy produktowe działają w ten sposób? Czy powinienem zmienić pracę?


title: Jaki rodzaj licencji jest wymagany dla Visual FoxPro?

text: Zastanawiam się nad stworzeniem niestandardowego oprogramowania dla komputerów stacjonarnych w Visual FoxPro 9 i chcę wiedzieć, jaki rodzaj licencji jest wymagany. Czy jako programista musiałbym mieć licencję Visual FoxPro 9, a moi użytkownicy musieliby mieć licencję użytkownika końcowego? Jakie licencje byłyby potrzebne do wydania komercyjnego? Jak zmieniłaby się licencja, gdybym wydał ją jako freeware?


title: Czy CSV jest dobrą alternatywą dla XML i JSON?

text: Czy CSV jest uważany za dobrą opcję w stosunku do XML i JSON dla języków programowania? Generalnie używam XML i JSON (lub czasami zwykłego pliku tekstowego) jako przechowywania plików płaskich. Jednak ostatnio natknąłem się na implementację CSV w PHP. Generalnie widziałem CSV używany do wprowadzania danych w plikach Excela, ale nigdy nie używałem go do programowania. Czy byłoby to lepsze niż XML lub JSON w jakikolwiek sposób?


title: Dlaczego GWT.. jakie są zalety?

text: > **Możliwy duplikat:** > Jakie są sprawdzone zalety narzędzi takich jak GWT nad czystym JavaScriptem > frameworkami? Kiedy powinniśmy zdecydować się na użycie GWT, jakie są jego zalety w porównaniu z normalnym projektowaniem aplikacji internetowych za pomocą html/jsp, css, js itp. Nadal musimy projektować nasze strony, css/style, ale nie możemy debugować za pomocą narzędzi takich jak Firebug ... Wydaje się, że być złożonym kodowaniem Java do projektowania stron internetowych - co ostatecznie jest html'em, który nigdy nie jest zrozumiały, złożony javascript. Czy możemy łatwo zaprojektować złożone strony internetowe za pomocą GWT?


title: Czy uważa się, że najlepszym rozwiązaniem jest dynamiczne wiązanie zwracanych typów z kontekstu Entity?

text: Kontekst MyDbEntities = new MyDbEntities(); var wynik = context.StoredProcedureName(userId); Czy w powyższej sytuacji za najlepszą praktykę uważa się użycie `var` lub `ObjectResult<ComplexType>`?


title: Optymistyczne współdzielenie pracy w słabo rozproszonych systemach

text: Jak wyglądałby system taki jak BOINC, gdyby został napisany dzisiaj? W czasie tworzenia BOINC bazy danych były podstawowym wyborem do utrzymywania współdzielonego stanu i współbieżności między węzłami. Od tego czasu opracowano wiele podejść do zadań z optymistyczną współbieżnością (OT, prymitywy synchronizacji, takie jak zegary wektorowe, wirtualna synchronizacja, współdzielone iteratory itp.). Czy istnieje paradygmat optymistycznego rozmieszczania jednostek pracy na słabo rozproszonych systemach, które komunikują się poprzez przekazywanie wiadomości? Przepraszam, jeśli to trochę niejasne. PS Koncepcja spacji krotek jest świetna, ale blokowanie jest nieodłączną częścią jego definicji. **Edit2** : Cały system jest słabo rozproszony - mogą komunikować się tylko przez WAN. A komunikacja _może_ być powolna i błędna. Pytanie brzmi, jak najlepiej rozdzielić jednostki pracy wśród nich bez centralnego koordynatora i przy jak najmniejszym konsensusie (ponieważ konsensus jest drogi). Odpowiedzi tutaj wydają się mówić o bazach danych - dane nie stanowią problemu. Problem tkwi w dystrybucji pracy. **Edytuj** : Mam już system federacyjny, który działa dobrze. Chcę go rozszerzyć, aby klienci wykonywali jednostki pracy.


title: Czy powinienem skupić się na byciu głębokim czy szerokim?

text: Jestem profesjonalnym programistą od nieco ponad pół roku i byłem zdumiony, jak duży jest świat poza uczelnią. W wolnym czasie kontynuowałem naukę, ale zastanawiam się, na czym powinienem się skupić? FOCUS 1) Stos programistyczny używany przez moją firmę. Najszybsza wypłata w moim codziennym rozwoju. #Deepest FOCUS 2) Inny język o tym samym paradygmacie. Zobacz, czy potrafię uogólnić swoją wiedzę i sposób myślenia. FOCUS 3) Inny język, inny paradygmat. Poszerz moje granice i naucz się nowych sposobów robienia rzeczy. #Broadest Jeśli ktoś ma inny cel, możesz to ujawnić.


title: Programowanie w znanym języku czy nauka nowego w czasie wolnym?

text: > **Możliwy duplikat:** > Czy powinienem skupić się na byciu głębokim czy szerokim. Który z {kodowania,uczenia się} polecisz programiście w jego wolnym czasie? Oczywiście to pytanie jest ważne w przypadku programistów, którzy są w stanie robić rozsądne rzeczy w co najmniej jednym języku głównego nurtu. być sytuacjami, w których musimy używać innych języków. * Jeśli ktoś nauczy się nowego języka, zamiast korzystać z tego, czego się nauczył, spowoduje utratę przynajmniej części wiedzy na temat języka, którego się już nauczył. * Bez wątpienia nikt nie może całkowicie nauczyć się języka, więc przejście na nowy język może mu / jej nic nie zrobić


title: czy lepiej spędzić wolny czas na opanowaniu języka, z którym pracuję, czy na nauce nowego?

text: > **Możliwy duplikat:** > Czy powinienem skoncentrować się na głębokim czy szerokim zakresie, pracuję na pełny etat nad projektem Androida i czuję się bardzo komfortowo zarówno z javą, jak i frameworkiem dla Androida. W dobry dzień oceniałbym swoje umiejętności na 8, a może na 7 w zły dzień. Ostatnio znalazłem więcej wolnego czasu niż jestem przyzwyczajony, więc pracowałem nad wieloma osobistymi projektami. Zaczynam się zastanawiać, co o tym myślą inni; czy warto poświęcić swój czas na dalsze eksperymentowanie i rozwijanie Androida, czy lepiej byłoby nauczyć się innego języka? Co wszyscy o tym myślicie? Co byś zrobił z większą ilością wolnego czasu i energii, niż wiesz, co zrobić?


title: Dlaczego „odwołanie do obiektu nie jest ustawione na instancję obiektu” nie mówi nam, który obiekt?

text: Uruchamiamy system i czasami otrzymujemy słynny wyjątek `NullReferenceException` z komunikatem `Odwołanie do obiektu nie jest ustawione na instancję obiektu`. Jednak w metodzie, w której mamy prawie 20 obiektów, posiadanie dziennika, który mówi, że obiekt jest pusty, tak naprawdę nie ma sensu. To tak, jakby powiedzieć ci, kiedy jesteś agentem ochrony seminarium, że mężczyzna spośród 100 uczestników jest terrorystą. To ci się naprawdę nie przyda. Powinieneś uzyskać więcej informacji, jeśli chcesz wykryć, który mężczyzna jest zagrażającym człowiekiem. Podobnie, jeśli chcemy usunąć błąd, musimy wiedzieć, który obiekt jest pusty. Teraz coś opętało mój umysł od kilku miesięcy, a mianowicie: **Dlaczego .NET nie podaje nam nazwy, a przynajmniej typu odwołania do obiektu, który jest null?**. Czy nie może zrozumieć typu z odbicia lub innego źródła? Ponadto, jakie są najlepsze praktyki, aby zrozumieć, który obiekt ma wartość NULL? Czy powinniśmy zawsze ręcznie testować wartość null obiektów w tych kontekstach i rejestrować wynik? Czy jest lepszy sposób? **Aktualizacja:** Wyjątek `System nie może znaleźć podanego pliku` ma ten sam charakter. Nie możesz znaleźć pliku, dopóki nie dołączysz do procesu i nie debugujesz. Myślę, że tego typu wyjątki mogą stać się bardziej inteligentne. Czy nie byłoby lepiej, gdyby .NET mógł powiedzieć nam, że „c:\temp.txt nie istnieje.” zamiast tego ogólnego komunikatu? Jako programista głosuję na tak.


title: Systemy typów: nominalne vs strukturalne, jawne vs niejawne

text: Jestem trochę zdezorientowany różnicą między systemami typu nominalnego i strukturalnego. Czy ktoś może wyjaśnić, czym się różnią? Z tego, co rozumiem: * Nominalne: Zgodność typu jest oparta na nazwie typu. * Strukturalny: Kompatybilność typów zależy od struktury typu, np. w C jeśli 2 zmienne są typami struktur o różnych nazwach, ale tej samej strukturze, to ich typy są kompatybilne. Teraz o jawnym i niejawnym: dlaczego różni się od typowania statycznego i dynamicznego? W typowaniu statycznym typy będą jawne, podczas gdy w typowaniu dynamicznym typy są niejawne. Czy mam rację?


title: Jak zaprogramować alokację wątków na procesorach wielordzeniowych?

text: Chciałbym poeksperymentować z wątkami na wielordzeniowym procesorze np. stworzyć program, który wykorzystuje dwa różne wątki, które są wykonywane przez dwa różne rdzenie procesora. Jednak nie jest dla mnie jasne, na jakim poziomie wątki są przydzielane do różnych rdzeni. Mogę sobie wyobrazić następujące scenariusze (w zależności od implementacji systemu operacyjnego i języka programowania): 1. Alokacją wątków zarządza system operacyjny. Wątki są tworzone przy użyciu wywołań systemowych systemu operacyjnego i jeśli proces działa na procesorze wielordzeniowym, system operacyjny automatycznie próbuje przydzielić / zaplanować różne wątki na różnych rdzeniach. 2. Alokacją wątków zarządza implementacja języka programowania. Przydzielanie wątków do różnych rdzeni wymaga specjalnych wywołań systemowych, ale standardowe biblioteki wątków języka programowania automatycznie radzą sobie z tym, gdy używam standardowej implementacji wątku dla tego języka. 3. Przydział wątków musi być zaprogramowany jawnie. W moim programie muszę napisać jawny kod, aby wykryć ile rdzeni jest dostępnych i przydzielić różne wątki do różnych rdzeni za pomocą np. funkcji bibliotecznych. Aby sprecyzować pytanie, wyobraź sobie, że napisałem swoją wielowątkową aplikację w Javie lub C++ w systemie Windows lub Linux. Czy moja aplikacja w magiczny sposób zobaczy i użyje wielu rdzeni, gdy zostanie uruchomiona na procesorze wielordzeniowym (ponieważ wszystko jest zarządzane przez system operacyjny lub standardową bibliotekę wątków), czy też muszę zmodyfikować swój kod, aby mieć świadomość istnienia wielu rdzeni ?


title: Różnica między maszyną wirtualną języka a emulacją maszyny wirtualnej?

text: Mam trudności ze zrozumieniem różnicy między maszyną wirtualną emulacji a maszyną wirtualną języka. Zacząłem od badań i implementacji emulacji wirtualnej maszyny. Przede wszystkim emulacja dość starych 16-bitowych architektur. Chcę poznać podstawy maszyny wirtualnej języka. Czy oba systemy są podobne? Czy oba używają architektur opartych na rejestrach i stosowych? Mam wrażenie, że językowa maszyna wirtualna jest w zasadzie środowiskiem wykonawczym. W zależności od złożoności maszyny wirtualnej może mieć ona garbage collector, kompilator JIT itp. Czy to założenie byłoby poprawne? EDYCJA: Mówię również o maszynach wirtualnych z kodem bajtowym, ale natywny kod maszynowy też działa.


title: Książki, które musi przeczytać każdy architekt systemu oprogramowania/modelarz danych

text: Mam nadzieję, że nie mylę pojęcia architektura systemu z modelem danych/bazą danych. Czy istnieje książka, która jest standardem opisującym najlepsze praktyki, metodologie projektowania i inne przydatne informacje na temat projektowania architektury i modelu danych dla aplikacji internetowej? Co w tej książce czyni ją wyjątkową?


title: Analiza kosztów i korzyści wyboru frameworka javascript dla aplikacji webowej typu excel

text: Jestem zaangażowany przez zespół sprzedaży firmy telekomunikacyjnej do opracowania aplikacji internetowej, która zastąpi ich obecny przepływ pracy. Ich obecny przepływ pracy składa się z wielu arkuszy kalkulacyjnych zawierających dane o produktach, cenach i sprzedaży. Udało mi się to pomyślnie, ale ciągle chcą, abym pozwalał im pobierać określone dane do plików Excela, aby mogli je wyświetlić. Doceniam, dlaczego chcą tego, ponieważ a) czasami chcą dużo danych, a paginacja w aplikacji internetowej po prostu nie działa dla nich. b) są tak przyzwyczajeni do Excela i jego funkcji, że trudno je całkowicie odzwyczaić. Jako sprzedawca chcę połączyć wygodę zarówno programu Excel, jak i aplikacji internetowej, dzięki czemu surfowałem po frameworki javascript, które pozwalają mi symulować oprogramowanie Excel w aplikacji internetowej. Moja aplikacja internetowa została napisana w CakePHP 2.4.2 przy użyciu MySQL jako bazy danych. Zawęziłem się do 2 opcji: dhtmlx i wijmo. Ta aplikacja internetowa jest hostowana w firmowym systemie intranetowym. Najważniejsze funkcje Excela, z których korzysta zespół sprzedaży: 1. Chcą zakładek 2. Chcą widzieć pasek formuły, aby wiedzieć, dlaczego liczba wynosi 1789,45, np. 3. Chcą móc wybrać kilka komórek, a następnie znaleźć sumę liczb w komórkach lub liczbę. 4. Chcą mieć możliwość sortowania i filtrowania tak, jak to się robi w programie Excel za pomocą pól wyboru. Zobacz załączony zrzut ekranu. ![tutaj podaj opis obrazka](http://i.stack.imgur.com/RlkPm.png) Chociaż zawęziłem swój wybór do tych 2 bibliotek JavaScript, jestem otwarty na inne możliwości. Inną ważną rzeczą jest to, że biblioteka musi być tak prosta, aby początkujący mógł napisać aplikację, jak to tylko możliwe.


title: Czy to legalny lub dobry pomysł, aby mieć kopię zapasową wszystkich witryn klienckich na własnym serwerze?

text: Wielokrotnie widziałem, że jeśli zbudujemy stronę internetową dla klienta, to istnieje możliwość, że ta strona będzie się zmieniać z czasem. Myślałem, że od teraz, niezależnie od tego, jaką witrynę stworzę, będę hostować kopię witryny na osobistym serwerze. Podobnie jak `client1.myserver.com`, więc nawet jeśli go zmienią, mam jego kopię. Więc jeśli muszę komuś pokazać lub muszę polecić sobie kilka rzeczy, mam tam dowód. Nie będę ich upubliczniał, ale zabezpieczę hasłem. Chcę wiedzieć, czy jest to legalne i dobry pomysł, czy nie.


title: Ściśle z perspektywy zatrudnialności, jaki jest najlepszy framework do tworzenia stron internetowych, którego można się teraz nauczyć?

text: Mimo że Ruby on Rails wydaje się być najbardziej popularnym miejscem na większość wakatów, czy jest jakiś przekonujący powód, by nauczyć się na przykład django? Może dlatego, że wszyscy uczą się RoR i brakuje programistów django w stosunku do zapotrzebowania? A może php wraz z popularnym frameworkiem php jest drogą do zrobienia po prostu ze względu na ogromną liczbę zadań związanych z php?


title: Dowód złego projektu: Aktualizacja elementu A przerywa/koliduje z istniejącym elementem B

text: Pracuję nad aplikacją JavaScript Web App i odkrywam, że gdy rozszerzam program i dodam nowe funkcje (nowe animacje), powoduje to, że istniejące funkcje psują się lub działają inaczej niż przed dodaniem tej nowej funkcji. Tak więc, gdy kontynuuję kończenie aplikacji, wciąż łamie ona stare funkcje i muszę wrócić i przerobić / zaktualizować te funkcje. Wygląda więc na to, że nigdy nie kończę żadnej funkcji, ponieważ zawsze do niej wracam, aby móc ładnie współpracować z innymi funkcjami. Czy to wskazuje na zły projekt aplikacji? A może jest to normalna cecha programowania komputerowego, tj. tak jak w każdym programie spędzisz 20% czasu na rozwijaniu programu i 80% czasu na naprawianie błędów (czy jest to utrzymanie programu?)? **Czy istnieją techniki projektowania i/lub inne techniki, które mogę zastosować, aby uniknąć wystąpienia tego problemu?** Aplikacja jest rendererem (który pobiera plik XML zawierający informacje o obiektach wykonujących animacje - poruszanie się, zanikanie itp.) który tworzy elementy HTML i animuje je. Projekt jest OOP, jak najbliżej klas w Javascript za pomocą prototypu. Zatrudnia DUŻO wielokrotnego dziedziczenia. W miarę możliwości wykorzystuje również funkcje anonimowe, więc myślę, że byłoby to bardzo podobne do projektu Java, ponieważ oba mają OOP, funkcje anonowe i dziedziczenie. Istnieje klasa przeznaczona wyłącznie do animacji o nazwie AnimatedObject i wiele obiektów dziedziczy po tej klasie. Po prostu wykonujesz animację, po prostu wywołując funkcję z tej klasy, taką jak myAnimObj.performFade() lub myAnimObj.performRotate().


title: Clangowe flagi ostrzegawcze dla rozwoju Celu-C

text: Jako programista C i Objective-C jestem trochę paranoikiem z flagami ostrzegawczymi kompilatora. Zazwyczaj staram się znaleźć kompletną listę flag ostrzegawczych dla używanego przeze mnie kompilatora i włączam większość z nich, chyba że mam naprawdę dobry powód, aby go nie włączać. Osobiście uważam, że może to faktycznie poprawić umiejętności kodowania, a także potencjalną przenośność kodu, zapobiec niektórym problemom, ponieważ zmusza cię do bycia świadomym każdego najmniejszego szczegółu, potencjalnych problemów z implementacją i architekturą itd. To również moim zdaniem dobre narzędzie do codziennej nauki, nawet jeśli jesteś doświadczonym programistą. Jeśli chodzi o subiektywną część tego pytania, jestem zainteresowany wysłuchaniem innych programistów (głównie C, Objective-C i C++) na ten temat. Czy naprawdę przejmujesz się takimi rzeczami, jak pedantyczne ostrzeżenia itp.? A jeśli tak lub nie, dlaczego? Teraz, jeśli chodzi o Objective-C, ostatnio całkowicie przerzuciłem się na łańcuch narzędzi LLVM (z Clang), zamiast na GCC. W moim kodzie produkcyjnym zwykle ustawiam te flagi ostrzegawcze (jawnie, nawet jeśli niektóre z nich mogą być objęte przez -Wall): * -Wall * -Wbad-function-cast * -Wcast-align * -Wconversion * -Wdeclaration-after -instrukcja * -Wdeprecated-implementations * -Wextra * -Wfloat-equal * -Wformat=2 * -Wformat-nonliteral * -Wcztery-znakowe-stałe * -Wimplicit-atomic-properties * -Wbrakujące-nawiasy klamrowe * -Wbrakujące-deklaracje * -Wmissing-field-initializers * -Wmissing-format-attribute * -Wmissing-noreturn * -Wmissing-prototypes * -Wnested-externs * -Wnewline-eof * -Wold-style-definition * -Woverlength-strings * -Wnawiasy * - Wpointer-arith * -Wredundant-decls * -Wreturn-type * -Wsequence-point * -Wshadow * -Wshorten-64-do-32 * -Wsign-compare * -Wsign-conversion * -Wstrict-prototypes * -Wstrict-selector -match * -Wswitch * -Wswitch-default * -Wswitch-enum * -Wundeclared-selector * -Wuniinitialized * -Wunknown-pragmas * -Wunreachable-code * -Wunused-function * -Wunused-label * -Wunused-parameter * -Wunused-value * -Wunused-variable * -Write-strings Jestem zainteresowany tym, co mają do powiedzenia na ten temat inni programiści. Na przykład, czy myślisz, że przegapiłem konkretną flagę dla Clang (Cel-C) i dlaczego? A może uważasz, że dana flaga nie jest przydatna (lub w ogóle nie jest potrzebna) i dlaczego? **EDYTUJ** Aby wyjaśnić pytanie, pamiętaj, że `-Wall` zawiera tylko kilka podstawowych ostrzeżeń. W rzeczywistości są to znacznie więcej flag ostrzegawczych, których nie obejmuje `-Wall`, stąd pytanie i lista, którą dostarczam.


title: Jak wymawia się „cron” jak w „cron job”?

text: Zanim ktoś zbanuje to pytanie, tak jak w przypadku wszystkich innych pytań dotyczących wymowy, pozwól mi wyjaśnić jego znaczenie. Ważna jest komunikacja werbalna między współpracownikami i partnerami; dzisiaj brałem udział w telekonferencji z ludźmi, którzy dyskutowali o tym, co moim zdaniem ma coś wspólnego z „Chrome”, jak w Google Chrome. Wymawiam „crona” w „robocie crona” z krótkim O, podobnie jak „tron”, „zniknął” lub „pionek”, ale ta osoba wymawia to długim O, jak w „naostrzony”, „kość” , lub „kamień” (zwróć uwagę na e na końcu wszystkich!). Czy istnieje _standardowa_ wymowa? Czy to kwestia opinii. Na przykład nie ma nic dwuznacznego w wymowie słowa „Firefox”, ale szaleje debata na temat „ziemniaków” i „pomidorów”.


title: Dynamiczne zapytanie w Mysql

text: Tworzę aplikację internetową J2EE ze Struts2, Mybatis i bazą danych MySQL, więc chcę umożliwić użytkownikowi swobodę wyboru różnych parametrów w celu wykonania wyboru do tabeli w bazie danych. Na przykład mam Tabelę o nazwie SPRZEDAŻ, więc chcę, aby użytkownik wybrał różne parametry zgodnie z potrzebami. Może chce filtrować według dat i nazwiska pracownika, a następnie chce filtrować tylko według klienta i tak dalej. Czy powinienem pokazać wszystkie niezbędne dane do filtrowania po stronie klienta za pomocą js, czy mogę wykonać zapytanie do kilku tabel po wybraniu parametrów przez użytkownika? jeśli to możliwe, jak mam napisać zapytanie z parametrami, które mogą być obecne lub nie?


title: peer to peer w przeglądarce internetowej

text: Jakiś czas temu zbudowałem aplikację peer to peer w QT i C, ale musiałem zbudować całość z moim przyjacielem. Zastanawiam się czy da się zbudować taką aplikację w przeglądarce internetowej. Czy istnieje biblioteka open source, interfejs API lub cokolwiek, co może pomóc mi osiągnąć to w przeglądarce?


title: Co myślisz o modelu aktorskim?

text: Model aktora używany przez Erlanga wydaje się być zupełnie innym sposobem programowania współbieżnego. Co myślisz o modelu aktorskim? Czy będzie to popularne rozwiązanie dla współbieżności?


title: Czy PHP można używać do tworzenia aplikacji desktopowych?

text: Chcę wiedzieć, czy możliwe jest tworzenie aplikacji desktopowych w języku PHP. W moim przypadku nigdy go nie opracowałem. Jeśli to możliwe, podaj mi link polecający lub szczegółowe informacje o tym, gdzie mogę poprawić swoje umiejętności.


title: Wprowadzenie nowego języka programowania JVM do ugruntowanego środowiska korporacyjnego

text: Wyobraź sobie, że Twoje obecne miejsce pracy to sklep Java. Istnieje wiele rozbudowanej wiedzy na temat języka Java oraz kompleksowy proces budowania i wdrażania, aby obsłużyć wszystko w płynny i zwinny sposób. Pewnego dnia pojawia się projekt, który aż krzyczy, że trzeba go napisać, powiedzmy, w Ruby. Tylko starsi programiści mają jakiekolwiek pojęcie o Ruby, ale istnieje ogólne przekonanie, że skoro JRuby istnieje dla JVM, istniejąca infrastruktura może być nadal używana i wspierana. Ponadto JRuby może wskazać drogę do lepszego sposobu implementacji bieżących aplikacji z mniejszą ilością kodu, co może reprezentować trwającą migrację. Pamiętaj, że JRuby to tylko przykład, może to być również Clojure lub Groovy lub cokolwiek innego, co działa na JVM. Pytanie brzmi, jak byś podszedł do wprowadzenia takiej zmiany – jeśli w ogóle?


title: Dobrze udokumentowane projekty open source do nauki dla początkującego?

text: Czytam/uczę się C przez tydzień lub dwa i zastanawiałem się, czy ktoś mógłby polecić jakieś bardzo dobrze udokumentowane projekty open-source, które mógłbym studiować? Rzeczy takie jak sourceforge są świetne i tak dalej, ale jest wiele rzeczy, których nie rozumiem w większości projektów tam i mógłbym zrobić z nieco większym trzymaniem się za rękę. Propozycje?


title: Dlaczego warto uzyskać certyfikat MCTS?

text: Właśnie dowiedziałem się o MCTS (Microsoft Certified Technical Specialist). Ale dlaczego miałbyś uzyskać certyfikat? Dlaczego po prostu nie studiować rzeczy i nie przystępować do egzaminu. Oszczędza ci to kilka dolców i tyle samo wiesz.


title: Czy można używać GNU GPL do aplikacji, które nie mają źródła?

text: Chodzi mi o to, że możliwe jest stworzenie aplikacji bez kodu źródłowego - na przykład przy pomocy edytora HEX lub jakiegoś debuggera, który potrafi asemblować instrukcje (właściwie każdy porządny debugger potrafi). Tworzenie programów w ten sposób jest oczywiście trudne, ale możliwe dla małych aplikacji. Mogę sobie nawet wyobrazić przypadki, w których jest to jedyny możliwy sposób - na przykład na bardzo starym sprzęcie, na którym po prostu nie ma żadnych narzędzi programistycznych. Dla innego przykładu - przeczytaj artykuł "Programowanie w ekstremalnych warunkach", opublikowany w czasopiśmie programistycznym Assembly, numer 9 A co jeśli autor takiej aplikacji chce ją rozpowszechniać na licencji GNU GPL?


title: Skąd wzięło się pojęcie „tylko jeden powrót”?

text: Często rozmawiam z programistami Java, którzy mówią „Nie umieszczaj wielu instrukcji powrotu w tej samej metodzie”. Kiedy proszę ich, aby powiedzieli mi dlaczego, wszystko, co otrzymuję, to „Standard kodowania tak mówi”. lub „To mylące”. Kiedy pokazują mi rozwiązania z pojedynczą instrukcją return, kod wydaje mi się brzydszy. Na przykład: if (blablabla) return 42; w przeciwnym razie zwróć 97; "To jest brzydkie, musisz użyć zmiennej lokalnej!" int wynik; jeśli (blablabla) wynik = 42; w przeciwnym razie wynik = 97; zwróć wynik; W jaki sposób to 50% rozdęcia kodu ułatwia zrozumienie programu? Osobiście uważam to za trudniejsze, ponieważ przestrzeń stanów właśnie powiększyła się o kolejną zmienną, której można było łatwo zapobiec. Oczywiście normalnie bym po prostu napisał: return (blablabla) ? 42:97; Ale operator warunkowy cieszy się jeszcze mniejszą popularnością wśród programistów Java. "To niezrozumiałe!" Skąd wzięło się pojęcie „tylko jeden powrót” i dlaczego ludzie się do niego sztywno trzymają?


title: Najlepsze praktyki dotyczące wyjścia w Delphi

text: Współpracownik i ja dyskutujemy o tym, co najlepsze. Obie koncepcje działają i działają dobrze, ale czy istnieje ogólna zgoda co do nie wzywania do wyjścia? Co lepsze? Aby wywołać exit w ramach procedury, aby uniknąć wykonywania reszty kodu, jak w ... if Staging.Current = nil, następnie wyjdź DoSomethingA(FileNameA); CzyCośB(NazwaPlikuB); Staging.UsuńBieżący; lub nie wywoływać exit i zamiast tego zawijać je w początek i koniec, jeśli Staging.Current <> nil, a następnie zacznij DoSomethingA(FileNameA); CzyCośB(NazwaPlikuB); Staging.UsuńBieżący; koniec; Obie działają. Wolę używać instrukcji exit, ponieważ skutkuje ona mniejszą liczbą wierszy kodu i wygląda na czystszą, ale czy istnieje jakiś powód lub jakikolwiek konsensus wśród programistów, aby uniknąć używania exit do opuszczenia procedury?


title: Python - tylko jeden zwrot na metodę?

text: Próbuję ustalić, czy jest to tylko kwestia osobistych preferencji, czy rzeczywiście jest to zła praktyka w taki czy inny sposób. Próbowałem najpierw odnieść się do PEP8 i nie znalazłem odpowiedzi. To, o czym tutaj mówię, to użycie więcej niż jednego wyrażenia `return`. W tych przykładach nie jest to _tak_ wielka sprawa, ponieważ są one bardzo krótkie i łatwe do odczytania. def foo(obj): if obj.condition: return True return False def bar(obj): answer = False if obj.condition: answer = True return answer Przypisywanie zmiennej za każdym razem, gdy wywoływane jest `bar()` , zamiast po prostu określić odpowiedź i zwrócić ją. Ale w dłuższej funkcji drugi `return` może być ukryty, więc ktoś czytający kod może nie zorientować się, że funkcja może zwrócić wartość przed końcem linii: def spam(obj): blurb = "Francis" if obj.warunek: blurb = map(gormf, [z dla z w porp(obj)]) return blurb[2] elif nie obj.warunek i dreg(obj.jek): blurb = obj.hats * 17 if blurb % 13 : return blurb else: blurb = nazwa_obiektu return "Wieloryby i %s" blurb To okropna funkcja, ale myślę, że widzisz, w co się czepiam. Czy więc lepiej jest utworzyć funkcję, która ma _pojedyncze, jasne wyjście_ \-, nawet jeśli jest to kilka operacji więcej, niż faktycznie potrzebujesz? A może należy spróbować wykorzenić to, gdy tylko jest to możliwe, na rzecz krótszego kodu?


title: Czy powinienem wrócić z funkcji wcześniej, czy użyć instrukcji if?

text: > **Możliwy duplikat:** > Skąd wzięło się pojęcie „tylko jeden powrót”? Często pisałem tego rodzaju funkcje w obu formatach i zastanawiałem się, czy jeden format jest preferowany nad innym i dlaczego. public void JakaFunkcja(bool JakisWarunek) { if (jakiśWarunek) { // Zrób Coś } } lub public void JakaFunkcja(bool JakiśWarunek) { if (!jakiśWarunek) return; // Zrób coś } Zwykle koduję z pierwszym, ponieważ tak działa mój mózg podczas kodowania, chociaż wydaje mi się, że wolę drugi, ponieważ od razu zajmuje się obsługą wszelkich błędów i uważam, że jest łatwiejszy do odczytania


title: Jakie są zalety i wady zmiennych tymczasowych w porównaniu z wielokrotnymi zwrotami?

text: Weźmy następujące przykłady: public static String returnOnce() { String resultString = null; if (jakiśWarunek) { CiągWyników = "warunek jest spełniony"; } else { stringString = "warunek jest fałszywy"; } return StringString; } public static String returnMulti() { if (jakiśWarunek) { return "warunek jest prawdziwy"; } return "warunek jest fałszywy"; } Czy jedno podejście jest obiektywnie lepsze od drugiego, czy jest to tylko kwestia preferencji? Pierwsza wymaga zmiennej tymczasowej, ale ma tylko jedno miejsce, do którego zwracana jest metoda. Czy decyzja zmienia się, jeśli metoda jest bardziej złożona z wieloma czynnikami, które mogą zmienić wynik?


title: „Kontynuuj, jeśli prawda” kontra „zatrzymaj, jeśli fałsz” w stwierdzeniach „jeżeli”

text: Podczas pisania prywatnej metody pomocniczej w Javie musiałem dodać sprawdzenie warunku wstępnego, który spowoduje, że metoda nic nie zrobi, jeśli nie zostanie spełniony. Kilka ostatnich wierszy metody znajdowało się tuż u dołu obszaru edycji w IDE, więc w epickim pokazie lenistwa napisałem czek w następujący sposób: function(){ if (warunek wstępny == false){ return; } //Rób rzeczy } zamiast znaleźć koniec bloku, aby napisać bardziej „tradycyjne” stwierdzenie, takie jak: function(){ if (warunek wstępny == true){ //Rób rzeczy } } To mnie zastanowiło: czy jest powód, aby unikać mojej wersji na rzecz drugiej, czy jest to tylko różnica stylistyczna? (Zakładając, że są one używane w taki sposób, że _mają one być funkcjonalnie równoważne)


title: Czy funkcja powinna używać przedwczesnych zwrotów, czy owijać wszystko w klauzule if?

text: > **Możliwy duplikat:** > Skąd wzięło się pojęcie „tylko jeden powrót”? Co jest lepsze? Widzę zalety i wady obu, więc nie mogę się zdecydować, którego się trzymać. ## Zawijaj funkcję klauzuli if doIt() { if (successfulCondition) { whenEverythingGoesWell(); } } * **Pro** : Pokazuje intencje programisty poprzez wcięcie. * **Con** : Wcięcie może być naprawdę głębokie, jeśli musisz wielokrotnie zwierać. Na przykład, `doThirdThing()` wymaga sukcesu `doSecondThing()`, co z kolei wymaga sukcesu `doFirstThing()`. Zdarza się to często przy tworzeniu stron internetowych, gdzie wiele usług internetowych nie jest niezawodnych. ## Przedwczesna funkcja powrotu doIt() { if (!SuccessfulCondition) { return; } Kiedy wszystko idzie dobrze(); } * **Pro** : Wpisy Subversion byłyby zwięzłe. Czasami widzę, jak współpracownicy umieszczają bardzo długie funkcje w klauzuli if. Cały ten huk zostaje zaewidencjonowany i sprawia, że odczytywanie różnic Subversion jest trudne. * **Con** : Wymaga przeczytania całej funkcji, aby znaleźć różne ścieżki uruchamiania.


title: warunek wyjścia z funkcji podczas sprawdzania spójności parametrów

text: Jaka jest najlepsza strategia sprawdzania spójności parametrów na górze treści funkcji? Ten: chroniona funkcja void (parametr obiektu) if (parametr == null) return; //... rób rzeczy } ...albo to: protected void function(Object parameter) if (parameter != null) { //...do things } }


title: Jaka jest zaleta parowania podczas programowania, której nie ma w przypadku parowania w innych zadaniach?

text: Z pewnością dwie osoby siedzące razem, wykonujące niezliczoną ilość innych prac, odniosłyby te same korzyści. Dlaczego programowanie zostało wyróżnione w tej praktyce?


title: rozpalać biały papier

text: Jak dobry jest kindle paperwhite do czytania e-booków programistycznych?, szukałem info ale ktoś udziela jakiejkolwiek odpowiedzi z własnego doświadczenia, a obecne odpowiedzi są nieaktualne (>2 lata) Jest to kindle paperwhite polecany jako narzędzie do czytania dla developerów ? Chciałbym usłyszeć rzeczywiste doświadczenia ludzi.


title: Która jest poprawna pod względem architektonicznym dla nazw metod warstwy dostępu do danych — Pobierz czy Wybierz?

text: Widziałem słowa Fetch i Select używane pozornie zamiennie przy nazywaniu metod warstwy dostępu do danych (np. Person.Select lub Person.Fetch). Który jest prawidłowy? Moim instynktem jest to, że celem warstwy dostępu do danych jest abstrakcyjny dostęp do danych, a zatem termin Fetch byłby być może bardziej abstrakcją niż Select. Ale jeśli przez chwilę można sobie wyobrazić, że SQL nie był istniejącą technologią, sam termin Select może być odpowiedni.


Robiłem małą listę frameworków PHP MVC (takich jak Zend, CakePHP, Yii itp.) i zauważyłem, że wszystkie są open source. Potem próbowałem znaleźć jakiś zastrzeżony framework, ale moje badania zakończyły się niepowodzeniem. **Czy istnieje jakiś zastrzeżony framework PHP MVC? Dlaczego jest ich tak mało (jeśli są)?**


title: Czy specjalizacja jest korzystna w branży IT?

text: Od kilku lat zastanawiam się, czy warto uczyć się zaawansowanych technik w niektórych dziedzinach IT, czy też lepiej po prostu być we wszystkim dobrym i wszędzie używać najprostszego kodu. Użyję C++ jako języka do porównań, ponieważ jestem programistą C++. Jako programista C++ możesz napisać naprawdę interesujący kod, począwszy od kodu, który wygląda jak C z prostymi funkcjami dookoła, po szablonowe metaprogramowanie, czasami przemieszane z czystymi abstrakcyjnymi klasami. Zacząłem ostatnio zauważać, że skłaniam się ku później. Problem w tym, że przy większych rozwiązaniach programiści rzadko pracują sami i najprawdopodobniej umiejętności też się nie pokrywają. Więc niektóre części kodu, które piszę, mogą być mylące dla innych członków zespołu i na odwrót. Mogę polubić STL i szablony, podczas gdy inni mogą wszędzie preferować czyste klasy abstrakcyjne, inni będą polegać na dynamic_castingu lub kodzie generowanym przez kreatory VC. Podczas gdy niektórzy po prostu lubią wszystko napisane w bardzo prosty sposób, podobny do C. To również obala fakt, że ludzie, którzy nie pracowali, powiedzmy, z klasami wirtualnymi, mogą nawet nie wiedzieć, dlaczego nowa klasa, którą otrzymali, jest uszkodzona z powodu braku wirtualnego destruktora. Tak więc kod, który piszesz, toruje drogę do wycieku pamięci, jeśli inne osoby zdecydują się ponownie użyć twojego kodu później. Czy masz doświadczenie w pracy w środowiskach z wieloma programistami o różnych umiejętnościach? Czy próbujesz znaleźć wspólnego dominatora w swoich środowiskach? Czy korzystanie z umiejętności każdej osoby sprawdza się nawet w większych projektach?


title: Jeśli specyfikacja jest błędna, czy nadal należy jej przestrzegać?

text: Zostałem przydzielony do wykonania integracji jednej z aplikacji mojego pracodawcy z zewnętrznym systemem opracowanym przez naszego klienta. Specyfikacja naszego klienta dotycząca integracji, która ma rażące wady związane z bezpieczeństwem. Luki umożliwiłyby nieautoryzowanemu użytkownikowi dostęp do systemu w celu przeglądania zastrzeżonych danych. Wskazałem na wady i ich potencjalne zagrożenia bezpieczeństwa, jeśli są zaimplementowane zgodnie z projektem, i zapewniłem alternatywę bez wad, ale (w skrócie) klient powiedział mi „zrób to tak, jak określiliśmy”. Czy programista ponosi etyczną odpowiedzialność za NIE wdrażanie kodu o znanych zagrożeniach bezpieczeństwa? W którym momencie wymagania klienta przewyższają etyczną odpowiedzialność, jaką jako twórcy oprogramowania ponosimy za tworzenie bezpiecznych aplikacji?


title: Jak moja witryna powinna korzystać z własnego API?

text: Tworzę mały serwis internetowy, który dostarczy moim użytkownikom dane przez API. Ponadto niektóre dane będą dostępne bezpośrednio na mojej stronie internetowej. Pytanie jak korzystać z własnego API? Czy moja witryna powinna wysyłać zapytanie do, na przykład, `http://website.com/api/users/?format=json`, a następnie renderować dane? Ponieważ mogę korzystać ze standardowych funkcji Django ORM, ale nie oznacza to korzystania z własnego API. Aby uzyskać więcej wyjaśnień, spójrz na ten tekst: https://gist.github.com/xelblch/bde4c8f107f1ed398a7e aktualizacja: Wyobraź sobie, że mam bazę danych pełną gier z datą premiery, nazwą gry, platformą gry itp. A na mojej własnej stronie pokaż te gry jako listę lub siatkę. Ponadto dane te można uzyskać za pośrednictwem interfejsu API w formacie JSON, dane te można aktualizować za pomocą interfejsu API, a nawet usuwać. A na własnej stronie mam formularze html, które pozwalają mi wykonywać te czynności w sposób przyjazny dla użytkownika. Jak więc uzyskać dostęp do własnego API? Przez żądanie POST do mojego API lub przez django ORM bezpośrednio do bazy danych?


title: ludzie rozwijają mój projekt, ale nie pobierają go z wcześniejszych źródeł — co mogę zrobić?

text: Kilka osób rozwidlało moje repozytorium na githubie, ale nie udało im się połączyć z upstreamem. Więc moje oryginalne repozytorium znacznie się rozwinęło od czasu rozwidlenia, a tymczasem ci ludzie pokazują starą, nieaktualną wersję mojej pracy, co sprawia, że wyglądam źle (np. to, co wyświetlają, jest niekompletne, zawiera błędy, które mam naprawiono od tego czasu itp.). Ci ludzie najwyraźniej nie rozumieją, do czego służy widelec; po prostu naciskają przycisk widelca (być może jako sposób na powiedzenie „to jest fajne”), a następnie odchodzą. Idealnie bym chciał, żeby albo aktualizowali swój widelec z wcześniejszych źródeł, albo wnieśli znaczący wkład lub usunęli widelec. Czy mogę coś z tym zrobić? (Nie ma, prawda? To tylko cena bycia open source, prawda?)


title: Jak spełniłbyś wszystkie swoje oczekiwania w historyjce użytkownika?

text: Ustawiam pewne wymagania dla rozszerzenia oprogramowania i próbuję wykorzystać historyjki użytkownika do opisania tego, co chcę osiągnąć. > Jako twórca chcę dodać nowy wpis, aby użytkownicy mieli do niego dostęp poprzez > stronę główną. Mam pomysł na dodanie wpisu przez Drag&Drop. Moja firma ma pewne wytyczne, aby każde polecenie było zawsze dostępne za pośrednictwem menu kontekstowego i wstążki. Czy powinienem podzielić moją historię pochodzenia na osobne akcje? * Jako twórca chcę przeciągnąć nowy wpis na stronę główną, aby umożliwić użytkownikom dostęp do niego. * Jako twórca chcę utworzyć nowy wpis na stronie głównej za pomocą wstążki, aby umożliwić użytkownikom dostęp do niego. * Jako twórca chcę utworzyć nowy wpis na stronie głównej za pomocą menu kontekstowego, aby użytkownicy mieli do niego dostęp. Takie podejście skutkowałoby co najmniej trzema historyjkami użytkowników na funkcję, co nie byłoby dla mnie wygodne. Mógłbym dodać te oczekiwania podczas dyskusji, ale wydaje mi się, że daje to „drogę do naśladowania” dla programistów. Jak więc zapewnić osiągnięcie wymaganej jakości/doświadczenia użytkownika?


title: Średni rozmiar klatki wideo dla kodeka wideo

text: W prostych słowach, czy to prawda, że średni rozmiar zakodowanej klatki wideo to `FrameSize = BitRate/FrameRate`? Ponieważ `BitRate` pokazuje, ile danych przesyłamy na jednostkę czasu, a `FrameRate` pokazuje, ile klatek zawiera ta jednostka czasu.


title: Czy kompilatory i interpretery mogą zawierać błędy i co możemy (jako użytkownicy) zrobić, aby sobie z nimi poradzić?

text: Jeśli praca kompilatora polega zasadniczo na tłumaczeniu kodu źródłowego na kod maszynowy, czy może być jakaś usterka w kompilatorze, np. wadliwe „tłumaczenie”? To samo dotyczy tłumacza: czy czasami może nie wypisać wymaganej treści? Nie słyszałem o żadnych błędach w kompilatorach/interpreterach, ale czy one istnieją?


title: Jak mogę bardziej zaangażować analityków biznesowych w BDD?

text: Jestem zwolennikiem Behavior Driven Development, głównie z Cucumber i RSpec, a na moim obecnym koncercie (sklep Microsoft) przedstawiam SpecFlow jako narzędzie pomagające w testowaniu. Chciałbym, aby analitycy biznesowi z mojego zespołu byli zaangażowani w pisanie funkcji i scenariuszy, ale zniechęca ich aspekt „techniczny”, czyli tworzenie plików w programie Visual Studio (lub nawet posiadanie programu Visual Studio na swoich komputerach ). Chcą wiedzieć, czy możemy umieścić wszystkie scenariusze funkcji w Jira. To, czego szukam, to sugestie dotyczące przepływu pracy, które będą dobrze współpracować z typami BA, które są przyzwyczajone do narzędzi do zarządzania projektami/śledzenia pracy, takich jak Jira (używamy również Greenhoppera).


title: Czy istnieje bezpieczny sposób na dodanie do aplikacji strony rozwiązywania problemów z bazą danych?

text: Mój zespół tworzy produkt (oprogramowanie do zarządzania biznesem), który nasi klienci instalują na własnych serwerach. Produkt wykorzystuje bazę danych SQL do przechowywania danych i konfiguracji aplikacji. Było sporo przypadków, w których coś dziwnego wydarzyło się w bazie danych klienta (spowodowane błędami w naszej aplikacji, a także czasami administratorami, którzy majstrują w bazie danych). Aby dowiedzieć się, co jest nie tak z danymi, musimy wysłać klientowi skrypty SQL i powiedzieć mu, jak je uruchomić na serwerze bazy danych. Następnie, gdy już wiemy, jak to naprawić, musimy wysłać kolejny skrypt, aby naprawić dane. Czy istnieje bezpieczny sposób na dodanie strony w naszej aplikacji, która umożliwia administratorowi aplikacji wprowadzanie skryptów SQL, które odczytują i zapisują bezpośrednio w bazie danych? Nasz zespół pomocy technicznej mógłby to wykorzystać, aby pomóc klientom uruchamiać te skrypty bez konieczności bezpośredniego dostępu do serwera SQL. Moje wielkie obawy dotyczą tego, że ktoś może nadużyć tej władzy, aby uzyskać dane, których nie powinien mieć, i być może usunąć lub zmodyfikować dane, których nie powinien móc modyfikować. Nie martwię się o administratorów systemu, ponieważ mogliby znaleźć inny sposób na zrobienie tego samego. Ale co, jeśli ktoś inny uzyska dostęp do formularza? Czy jest jakiś sposób na bezpieczne robienie tego typu rzeczy?


title: co oznacza „domena” w odniesieniu do DDD?

text: Co oznacza słowo domena w odniesieniu do kierowanego projektowania/rozwoju? Nie pod względem semantyki czy naukowej definicji, ale pod względem tego, jak modyfikuje procesy lub filozofie? Czytałem post: Twoje podejście do rozwiązywania problemów z oprogramowaniem Natknąłem się na modne hasło DDD i tak naprawdę nie wiedziałem, co to oznacza.


title: Czy w dzisiejszych czasach uczenie się języków asemblerowych nadal ma jakąś wartość?

text: Specjalnie dla programisty gier. Jeśli naprawdę potrzebujesz procedur asemblera, możesz poszukać pomocy, podczas gdy w latach 80./90. był to jeden z głównych języków. Czytałem, że kompilatory mogą ogólnie równać się (lub pokonać) większość ręcznie napisanego kodu asemblera, więc jeśli nie jesteś programistą osadzonym, który może zaprogramować tylko jakieś urządzenie w asemblerze, na przykład, czy jest jakiś sens w uczeniu się tego w dzisiejszych czasach?


title: OpenCart (GPLv3)

text: Planuję użyć OpenCart do zbudowania strony internetowej. Zgodnie z licencją (GPLv3) konieczne jest podanie kodu źródłowego wszelkich dokonanych modyfikacji. Czy dopuszczalne jest udostępnienie tego na żądanie, czy też powinno się do niego linkować z każdej strony w sklepie?


title: LINQ TO SQL czy ADO.NET?

text: Jaki jest najlepszy wybór LINQ TO SQL (.DBML) lub użycie ADO.NET z procedurami dla bazy danych z 29 tabelami i około 30 równoczesnymi użytkownikami, którzy będą uruchamiać system, który zamierzam zbudować? Wiem, że ADO.NET jest szybszy niż LINQ TO SQL, ale o wiele prostsza jest praca z LINQ TO SQL. Czy LINQ TO SQL obsłuży całą współbieżność? A może pojawią się problemy z wydajnością? System, który zamierzam zbudować, będzie usługą WCF wykorzystującą wiele warstw: * Warstwa usług * Biznes * Repozytoria * Warstwa dostępu do danych


title: Czy standardowy nagłówek include powinien być określony w każdym pliku, czy jako parametr kompilatora?

text: Mam plik taki jak ten: #ifndef STDINCLUDE #define STDINCLUDE #include <pamięć> #include <stdexcept> #endif Chcę, aby ten plik był dołączony do każdego pliku nagłówkowego, ponieważ tak bardzo używam rzeczy z tych nagłówków. Czy lepiej jest dołączyć to za pomocą opcji kompilatora (`-I stdinclude.hpp`), czy powinienem fizycznie dołączyć je do każdego nagłówka? (`#include <stdinclude>`). Zauważ, że staram się być wieloplatformowy. Używam cmake do obsługi przynajmniej Unixa i Windowsa.


title: Dlaczego nie ujawnić klucza podstawowego

text: W mojej edukacji powiedziano mi, że błędnym pomysłem jest ujawnianie użytkownikowi rzeczywistych kluczy podstawowych (nie tylko kluczy DB, ale wszystkich podstawowych akcesorów). Zawsze myślałem, że jest to problem z bezpieczeństwem (ponieważ atakujący może próbować czytać rzeczy, które nie są jego własnymi). Teraz muszę sprawdzić, czy użytkownik i tak ma dostęp, więc czy jest za tym inny powód? Ponadto, ponieważ moi użytkownicy i tak muszą uzyskać dostęp do danych, będę musiał mieć klucz publiczny do świata zewnętrznego gdzieś pośrodku. Teraz ten klucz publiczny ma te same problemy, co klucz podstawowy, prawda? * * * Była prośba o przykład, dlaczego tak się dzieje, więc oto jeden. Pamiętaj, że pytanie ma dotyczyć samej zasady, nie tylko jeśli ma ona zastosowanie w tym przykładzie. Odpowiedzi dotyczące innych sytuacji są wyraźnie mile widziane. Aplikacja (Web, Mobile) obsługująca aktywność, posiada wiele UI i co najmniej jedno zautomatyzowane API do komunikacji międzysystemowej (np. dział księgowości chce wiedzieć, ile obciążyć klienta na podstawie tego, co zostało zrobione). Aplikacja ma wielu klientów, więc oddzielenie ich danych (logicznie dane są przechowywane w tej samej bazie danych) jest koniecznością systemu. Każde żądanie zostanie sprawdzone pod kątem ważności bez względu na wszystko. Aktywność jest bardzo drobnoziarnista, więc jest razem w jakimś obiekcie kontenerowym, nazwijmy to "Zadaniem". Trzy przypadki użycia: 1. Użytkownik A chce wysłać Użytkownika B do jakiegoś Zadania, więc wysyła mu link (HTTP) do wykonania tam jakiejś Aktywności. 2. Użytkownik B musi wyjść na zewnątrz budynku, aby otworzyć Zadanie na swoim urządzeniu mobilnym. 3. Księgowość chce obciążyć klienta za Zadanie, ale korzysta z zewnętrznego systemu księgowego, który automatycznie ładuje Zadanie / Czynność przez jakiś kod, który odwołuje się do REST - API Aplikacji Każdy z przypadków użycia wymaga (lub staje się łatwiejszy, jeśli) agent, aby mieć adresowalny identyfikator dla Zadania i Czynności.


title: Usługa internetowa WCF lub ASMX

text: Zostałem poproszony o stworzenie usługi internetowej, która komunikuje się z Auth.NET CIM i Shipsurance API. Mój serwis internetowy będzie używany przez wiele aplikacji (jedną komputerową, a drugą internetową). Jestem zdezorientowany, czy powinienem zbudować usługę sieci Web WCF lub asmx. Auth.NET CIM i Shipsurance API mają usługi sieciowe asmx, które wywołałbym w mojej nowo utworzonej usłudze sieciowej. Czy WCF jest właściwym podejściem, czy mogę pozostać przy asmx?


title: Jak zmienić stan singletona w czasie wykonywania

text: Zastanów się, że zamierzam napisać prosty rejestrator oparty na plikach `AppLogger` do użycia w moich aplikacjach, najlepiej powinien to być singleton, abym mógł go wywołać przez public class AppLogger { public static String file = ".."; public void logToFile() { // Zapis do pliku } public static log(String s) { AppLogger.getInstance().logToFile(s); } } I żeby go użyć AppLogger::log("To jest instrukcja logu"); Problem polega na tym, jaki jest najlepszy czas, w którym powinienem podać wartość pliku, ponieważ jest to po prostu singleton? Lub jak zrefaktoryzować powyższy kod (lub pominąć używanie singletona), abym mógł dostosować ścieżkę do pliku dziennika? (Załóżmy, że nie muszę pisać do wielu jednocześnie) p.s. Wiem, że mogę korzystać z biblioteki m.in. log4j, ale uważaj, że to tylko pytanie projektowe, jak zrefaktoryzować powyższy kod?


title: Podejścia do rozmowy kwalifikacyjnej i pytania dla stażysty programisty

text: Jakie są dobre pomysły, wspólne podejścia i odpowiednie pytania, które przyniósłbyś podczas rozmowy kwalifikacyjnej ze stażystą programistycznym, aby dołączyć do Twojego zespołu? Naprawdę nie mam żadnych oczekiwań wobec tej osoby, rozumiem, że jako stażysta bez wcześniejszego doświadczenia zawodowego nie będzie miał wiele do wniesienia do stołu. Mniej więcej szukam dobrego nastawienia i kogoś chętnego do nauki. Co byłoby właściwe, jeśli zamierzasz odbyć staż 70/30 (testowanie/kodowanie QA)? Czy Twoim zdaniem byłby to dobry staż?


title: Symbole zastępcze w ciągach

text: Zauważyłem, że czasami używam symboli zastępczych w ciągach, takich jak: $ cat example-apache <VirtualHost *:80> ServerName ##DOMAIN_NAME## ServerAlias www.##DOMAIN_NAME## DocumentRoot /var/www/##DOMAIN_NAME##/ public_html </VirtualHost> Teraz jestem pewien, że jest to drobny problem, jeśli symbolem zastępczym jest `##DOMAIN_NAME##`, `!!DOMAIN_NAME!!`, `{{DOMAIN_NAME}}` lub inny wariant. Jednak teraz muszę przeprowadzić standaryzację z innymi programistami w projekcie, a wszyscy mamy żywotny interes w tym, aby nasz własny format zastępczy stał się standardem w organizacji. Czy są jakieś dobre powody, aby wybrać któreś z tych lub innych? Staram się skwantyfikować te rozważania: 1. **Estetyka i użyteczność**. Na przykład `__dict__` może być trudny do odczytania, ponieważ nie wiemy, ile jest w nim podkreśleń. 2. **Kompatybilność**. Czy jakiś język będzie próbował zrobić coś zabawnego za pomocą składni `{}` w ciągu (tak jak PHP robi z `"Witamy dzisiaj w {$siteName}!"`)? Właściwie wiem, że PHP i Python nie, ale inne? Czy preprocesor C++ zadławi się formatem `##`? Jeśli muszę przechowywać wartość w jakimś silniku SQL, czy nie uzna to za komentarz? Czy są jakieś inne pułapki, których należy się wystrzegać? 3. **Obsługa techniczna**. Czy nowy facet pomyli `##SOME_PLACEHOLDER##` jako konstrukcję językową? 4. **Nieznane**. Z pewnością mądrzy ludzie tutaj pomyślą o innych aspektach tej decyzji, o których ja nie pomyślałem. Być może pozbywam się tego, ale jeśli istnieją prawdziwe problemy, które mogą się czaić, z pewnością chciałbym się o nich dowiedzieć, zanim nakażę naszym programistom przestrzeganie potencjalnie problematycznej konwencji.


title: Jak myśli się o projektowaniu zorientowanym obiektowo i projektowaniu zorientowanym aspektowo?

text: Pracowałem przy kilku projektach, w których zastosowano zarówno AOP, jak i paradygmat zorientowany obiektowo. Ale użycie AOP było ograniczone tylko do rejestrowania. Myślę, że AOP jest znacznie potężniejszą techniką. Moje pytanie do tych, którzy pracowali zarówno z paradygmatem AOP, jak i OOP w projektach, brzmi: w jaki sposób wymyślają rozwiązanie łączące te potężne paradygmaty. Czy myślą najpierw AOPwise, a następnie projektują obiekty, czy odwrotnie. Moje ogólne pytanie do tych, którzy intensywnie używali AOP, brzmi, czy uważają, że jest to potężna technika modularyzacji. Jeśli tak, proszę podać przykłady.


title: Czy technologie używane w aplikacji są częścią architektury, czy reprezentują implementację/szczegółowe szczegóły projektu?

text: Projektując i pisząc dokumentację do projektu należy jasno zdefiniować architekturę: jakie są wysokopoziomowe moduły systemu, jakie są ich obowiązki, jak się ze sobą komunikują, jakie protokoły są używane itp. Ale na tej liście , czy należy określić konkretne technologie, czy jest to faktycznie szczegół wdrożenia i należy go określić na niższym poziomie? Rozważmy na przykład aplikację rozproszoną, która ma dwa moduły, które komunikują się asynchronicznie za pośrednictwem protokołu AMQP, za pośrednictwem brokera komunikatów. Fakt, że te moduły wykorzystują bibliotekę Spring AMQP do wysyłania i odbierania wiadomości, jest faktem, który należy określić w architekturze, czy jest to szczegółowy szczegół projektu/implementacji niższego poziomu?


title: Jak zapoznać się z Pythonem

text: Jestem początkującym Pythonem. Zacząłem programować w Pythonie 1,5 miesiąca temu. Pobrałem dokumentację Pythona i przeczytałem niektóre części samouczka. Programowałem na codechef.com i rozwiązywałem problemy związane z projecteulerem. Zastanawiam się nad przeczytaniem Wstępu do algorytmów i przejściem tego kursu na MIT opencourse ware, ponieważ niewiele się poprawiłem w programowaniu i marnuję dużo czasu na zastanawianie się, co powinienem zrobić, gdy mam do czynienia z jakimkolwiek problemem programistycznym. Ale myślę, że nadal nie znam właściwego sposobu na naukę samego języka. Czy powinienem zacząć od odniesienia do biblioteki, czy kontynuować samouczek Pythona? Czy algorytmy uczenia się są przydatne dla języków takich jak C, a nie tyle dla Pythona, ile zawierają „baterie”? Czy są jakieś inne zasoby do zapoznania się z językiem i ogólnie do nauki rozwiązywania problemów programistycznych? Czy po prostu muszę poświęcić trochę więcej czasu?


title: Czy paradygmat programowania obiektowego jest przestarzały, ponieważ jest antymodułowy i antyrównoległy?

text: Przeczytałem kontrowersyjny artykuł Ucząc FP dla pierwszoroczniaków opublikowany przez Roberta Harpera, który jest profesorem CMU. Twierdził, że CMU nie będzie już uczyć programowania obiektowego w ramach kursu wprowadzającego, ponieważ jest ono „nieodpowiednie dla nowoczesnego programu nauczania CS”. I twierdził, że: > Programowanie obiektowe jest całkowicie wyeliminowane z programu > wprowadzającego, ponieważ jest ono zarówno antymodułowe, jak i antyrównoległe ze swej natury. Dlaczego uważać OOP za antymodułowe i antyrównoległe?


title: Wskazówki, jak przekonać szefa, że przegląd kodu to dobra rzecz

text: Powiedzmy, że ktoś pracuje w hipotetycznej firmie, która ma kilku programistów, którzy rzadko pracowali razem nad projektami, a Szef nie wierzył, że przeglądy kodu są warte czasu i kosztów. Jakie są różne argumenty, które można przedstawić w tym scenariuszu, które będą przedstawiać korzyści z przeglądu kodu? Co więcej, jakie są tutaj potencjalne argumenty przeciwko przeglądowi kodu i jak można im przeciwdziałać?


title: EE a informatyka: wpływ na podejście i style programistów?

text: Czy są jakieś systematyczne różnice między programistami (inżynierami, architektami, niezależnie od stanowiska) z wykształceniem elektronicznym lub inżynierskim, a tymi, którzy rozpoczęli ten zawód dzięki informatyce? Przez wykształcenie elektroniczne mam na myśli stopień EE lub samouka majsterkowicza w dziedzinie elektroniki, innych typów inżynierów i fizyków eksperymentalnych. Zastanawiam się, czy wejście do zawodów programistycznych z silną znajomością klapek, buforów trójstanowych, czasów narastania krawędzi zegara i tak dalej, zwykle prowadzi do wyraźnego podejścia do problemów, sposobu myślenia lub doskonałych umiejętności w niektórych specjalnościach i braku umiejętności u innych, w porównaniu do informatyków, którzy są pełni pojęć, takich jak abstrakcyjne typy danych, orientacja obiektowa, normalizacja bazy danych, którzy mówią o „zamknięciach” w językach programowania - rzeczy, które nie mają sensu dla tłumu lutownicy, dopóki nie nauczyć się programowania. Jestem pewien, że prawdziwy świat oferuje mnóstwo indywidualnych wyjątków, ale w większości czy możesz powiedzieć, że istnieją ogólne różnice? Czy miałoby to wpływ na zatrudnienie, np. (żeby coś wymyślić) „nigdy nie zatrudniaj poskramiacza elektronów do projektowania baz danych”? Czy wiedza o jakichkolwiek różnicach może pomóc osobom poszukującym pracy w skuteczniejszym znalezieniu czegoś odpowiedniego? Albo udzielić oświecenia lub praktycznych porad tym, którzy nie pasują do określonej roli zawodowej? (Przy okazji, nigdy nie brałem udziału w zajęciach z informatyki; moje wrażenie na temat tego, co one obejmują, jest niewyraźne. Sam jestem typem elektroniki/fizyki/sztuki.)


title: Generatory Railsów do obsługi subskrypcji i obsługi płatności?

text: Myślałem o stworzeniu generatora do zarządzania subskrypcjami z opcjami dla kilku różnych usług przetwarzania płatności, jest to coś, z czego bym skorzystał. Czy są jakieś istniejące przykłady lub myśli o generatorze. Pomyślałem, że może działać jak funkcja rusztowania, podobna do funkcji uwierzytelniania w fajnych generatorach. EDYCJA: Wydaje się również, że podczas wdrażania przetwarzania płatności powinno być wiele problemów związanych z bezpieczeństwem, ponieważ spójny i wspólny sposób generowania tego pozwoliłby mi upewnić się, że najlepsze praktyki i bezpieczeństwo są takie same we wszystkich moich aplikacjach.


title: Dane geograficzne IP w API Stackoverflow?

text: Właśnie spojrzałem na stackgeografię i na soapi. Nie widzę, skąd pochodzą dane geograficzne, ponieważ nie ma ich na mydle. Czy ktoś może rzucić na to trochę światła? Więcej informacji na temat stackgeografii


title: (Jak mogę / czy mogę) używać Google Maps jako tekstury w obiekcie OpenGL?

text: _**Uwaga** : Zadałem bardzo podobne pytanie na StackOverflow, ale nie otrzymałem zbyt wiele uwagi, więc zostałem skierowany na http://programmers.stackexchange.com, ponieważ kwestie licencyjne wydają się być tutaj bardziej interesujące..._ Jestem nie jestem ekspertem w zakresie zasad Google Maps, chociaż zdaję sobie sprawę, że pobieranie / buforowanie kafelków mapy w ogóle nie jest zalecane. W systemie Android programiści otrzymali klasy MapActivity i MapView, które próbują zapewnić wszystkie możliwe usługi wyświetlania kafelków mapy, a nawet modyfikowania ich w locie, jeśli to konieczne, ale są one dla mnie dość bezużyteczne, ponieważ chciałbym użyć kafelków mapy jako tekstury na obiekcie 3D OpenGL. Chciałbym wiedzieć, w jakich warunkach dozwolone jest używanie kafelków mapy jako tekstury OpenGL. Ktokolwiek? _**UPDATE, aby wyjaśnić moje pytanie po komentarzu Gavina:_** **"Biorąc pod uwagę, że interfejs API Map Google NIE zapewnia sposobu na bezpośredni dostęp do kafelków mapy jako bitmap niskiego poziomu, co jest wymagane przez funkcje teksturowania OpenGL, czy są jakieś sposób na zaimplementowanie tego bez łamania zasad licencyjnych Google?"**


title: Nauka koncepcji systemów operacyjnych i języków programowania dla osób starszych

text: Nie jestem pewien, czy byłoby to właściwe forum do zadania pytania (proszę o informację, a przeniosę pytanie na odpowiednie forum). Chciałbym wiedzieć, jaki może być najlepszy sposób, w jaki starsi (w moim przypadku moi rodzice) mogą nauczyć się programowania. Patrzyłem na dzieci Qimo 4 jako możliwą platformę, aby moi rodzice mogli bliżej przyjrzeć się środowiskom Linux. Ale wygląda na to, że Qimo składa się głównie z gier edukacyjnych. Nie wiem też, który język programowania byłby najlepszy. Jeśli ktoś mógłby mi udzielić informacji, jak się zabrać do tego "projektu", to byłoby bardzo wdzięczne!!!


title: problem z wyjaśnieniem pojedynczego środowiska uruchomieniowego for-loop

text: Analizuję niektóre czasy działania różnych pętli for, a ponieważ zdobywam więcej wiedzy, jestem ciekawy, aby zrozumieć ten problem, którego jeszcze nie poznałem. Mam to ćwiczenie zatytułowane "Ile gwiazdek jest wydrukowanych": for (int i = N; i > 1; i = i/2) System.out.println("*"); Odpowiedzi do wyboru to ` A: ~log N B: ~N C: ~N log N D: ~0,5N^2` Więc odpowiedź powinna brzmieć A i zgadzam się na to, ale z drugiej strony. Powiedzmy `N = 500` czym wtedy byłby `Dziennik N`? Byłoby 2,7. Co z tego, jeśli w powyższym ćwiczeniu powiemy, że „N=500”? To z pewnością wydrukowałoby więcej niż 2,7 gwiazdek? Jaki to ma związek? Ponieważ sensowne jest stwierdzenie, że gdyby pętla for wyglądała tak: for (int i = 0; i < N; i++) wypisałby `N` gwiazdek. Mam nadzieję, że znajdę tutaj wyjaśnienie tego, może źle interpretuję te wszystkie rzeczy i źle o tym myślę. Z góry dziękuję.


title: Jaki jest najlepszy sposób przechowywania wielojęzycznych danych w MongoDB?

text: Chcę zapisywać/serwować dane wielojęzyczne w mojej aplikacji CMS przy użyciu Mongoose. Czy to właściwy sposób? name: { global: { type: String, default: '', trim: true, wymagane: 'Proszę wypełnić nazwę', }, en_US: String, tr_TR: String, sv_SE: String }


title: Jak podchodzisz do pisania kawałka kodu?

text: Jestem młodszym programistą php/js i pracuję od około roku. Kiedy zaczynam pracę nad zadaniem, mam tendencję do szybkiego myślenia o tym, co należy zrobić, a następnie wskakiwać od razu, w nieco brutalnym podejściu. Myślę jednak, że utrudnia to moją produktywność, ponieważ nie określiłem ścieżki do wykonania zadania. Co uważasz za najlepsze podejście i sposób na przygotowanie pisania kodu? Zwłaszcza mając do czynienia ze starszym kodem


title: jQuery - kiedy powiązać detektory zdarzeń?

text: Zajmuję się tworzeniem średniej wielkości "pojedynczej" aplikacji JavaScript przy użyciu jQuery. Jeśli uwzględnisz wszystkie możliwe funkcje aplikacji, istnieje 134 powiązań typu „klik”. Ponieważ większość treści jest ładowana dynamicznie, nie mogę po prostu zrobić tego: `$(element).click(function() { ... });` Zamiast tego robię to: `$(document). on('click', selector, function() { ... });` Obecnie wiążę to wszystko na `$(document).ready`. Ale czy to zła praktyka? Czy to kwestia prędkości? Alternatywą byłoby powiązanie detektorów zdarzeń za każdym razem, gdy zawartość jest ładowana, na przykład: $('#content').html(...); $('#nowazawartość').click(function() { ... }); Problem polega na tym, że trudno to zorganizować. Jaką radę możesz mi dać?


title: Zmiana nazwy klasy półki Pythona

text: Głównym powodem, dla którego używam Shelve jest możliwość szybkiego tworzenia kodu bez martwienia się o strukturę tabeli db. Niestety zmiana nazwy klasy z, powiedzmy, „klasa1” na „klasa2” daje „AttributeError: obiekt „moduł” nie ma atrybutu „klasa2”” przy następnym uruchomieniu. Jaki jest kanoniczny sposób zmiany nazwy klasy półki? Jakie inne podobne niespodzianki czają się głębiej w strukturze db Shelve?


title: Czy wzorce projektowe tłumią kreatywność?

text: Wiele lat temu rozmawiałem z profesorem ekonomii o wzorcach projektowych, o tym, jak tworzyły wspólny język dla programistów i jak ładnie rozwiązywali znane problemy, itp. itd. Potem odpowiedział mi, że to jest dokładnie przeciwnego podejścia, które zastosował wobec swoich studentów ekonomii. Zazwyczaj przedstawiał problem i prosił, aby najpierw znaleźli rozwiązanie, aby najpierw mogli się nad nim zastanowić i najpierw spróbować znaleźć sposoby rozwiązania problemu, a dopiero potem przedstawił rozwiązanie „klasyczne”. Zastanawiałem się więc, czy podejście „wzorca projektowego” jest naprawdę czymś, co czyni programistów mądrzejszymi lub głupszymi, ponieważ wiele razy po prostu otrzymują „właściwe rozwiązanie tego problemu”, zamiast może użyć kreatywności i wyobraźni, aby rozwiązać jakiś problem w nowy i innowacyjny sposób. Co myślisz?


title: Moja pierwsza praca w zespole deweloperskim – jakie powinny być moje priorytety?

text: Właśnie dostałem wymarzoną pracę - pracę w dużej (słynnej) firmie jako frontend web developer. Nigdy wcześniej nie pracowałem w odpowiednim zespole programistycznym - przez ostatnie 4 lata, odkąd zacząłem uczyć się web devu, pracowałem nad własnymi witrynami i aplikacjami dla małych klientów biznesowych, których znalazłem. Chcę jak najlepiej rozpocząć moją nową pracę, ale nie idzie to tak łatwo, jak myślałem – jest bardzo mało wprowadzenia lub szkolenia – to trochę jak rzucenie się na głęboką wodę, a co gorsza, w większości przypadków pozostali programiści w biurze, choć są przyjaźni i pomocni, mówią w języku, którego nie rozumiem zbyt dobrze. Kiedy mówią po angielsku, używają wielu terminów technicznych / żargonu / nazw produktów / systemów itp., o których nigdy nie słyszałem. Chcę zrobić dobre wrażenie i nie chcę się pokazywać, zadając zbyt wiele głupich pytań. Jakie rady sugerowaliby wszyscy doświadczeni weterani zespołów deweloperskich?


title: Czy istnieje miernik, który można zrównać ze złożonością w kategoriach laików?

text: Często użytkownicy nie są w stanie pojąć złożoności oprogramowania. Uważają, że skoro problem jest łatwy do opisania, to jest łatwy do rozwiązania. Chcę zrównać złożoność „prostego programu”, który zbudowałem, ze złożonością procesu z wymiernym rezultatem. Czy istnieje system, który może przyjąć namacalne procesy i przypisać im złożoność, taką jak: Budowa wychodka = 5 Budowa domu = 50 Budowanie Empire State Building = 5000, które mogę następnie w sensowny sposób przyrównać do oprogramowania: ten projekt = 5 Być może waga projektu zależy od złożoności cyklomicznej. Cokolwiek to jest, nie jest takie ważne. Co ważne, taki system istnieje. Czy taki system istnieje? **Aktualizacja** Szukam sposobu na porównanie złożoności dwóch kompletnych systemów. Nie szukam metod szacowania. Ograniczenie, które widzę w korzystaniu z „pieniędzy i roboczogodzin” polega na tym, że laicy (a może nawet nieco techniczni) mogą przypisać powód, dla którego projekt trwał tak długo i kosztował tak dużo pieniędzy, ponieważ programiści po prostu nie byli dobrzy w ich prace. Rozważając możliwość... Wyobrażam sobie, że rozwiązanie tego problemu może być podobne do algorytmu Dijkstry. Utwórz schemat blokowy dla Systemu1 i drugi dla Systemu2. Nadaj każdej decyzji wagę na podstawie liczby tras, które zawiera decyzja. Każdemu działaniu nadaj również wagę. Skumulowaną wagę każdego odpowiedniego wykresu można następnie wykorzystać do porównania dwóch procesów. 1. W przypadku „namacalnego procesu”: gdyby jakiś inżynier zmapował schemat blokowy „budowania wychodka”, wówczas moglibyśmy użyć takiego algorytmu, aby uzyskać „całkowitą wagę” procesu. 2. W przypadku „procesu niematerialnego”: Zakładając, że cały program można zmapować do maszyny skończonej, można go opisać jako schemat blokowy i przypisać mu wagę. Tak więc proces wychodka jest ważony na 50, a „mój program” na 60. Więc jest to mniej więcej tak skomplikowane, jak budowanie wychodka.


title: Jaki jest idiomatyczny sposób utrwalania danych w tej prostej aplikacji opartej na danych?

text: Zastanawiam się nad stworzeniem prostej aplikacji w Javie do gry, która pozwoli użytkownikowi śledzić, jakie przedmioty posiada i jakie doświadczenie zdobyli podczas używania przedmiotu. Wszystkie te dane są wprowadzane przez użytkownika. Jaki jest idiomatyczny/standardowy sposób utrwalania manipulowanych danych (model)? Wydaje się, że bezpośrednimi możliwościami jest zapisanie go do pliku, serializacji, baz danych itp., ale wiele z nich wydaje się przesadą dla prostych pól tekstowych, które nie wymagają obiektów. Jaki jest idiomatyczny/tradycyjny sposób radzenia sobie z czymś takim?


title: Zorientowane obiektowo opakowanie wokół biblioteki dll

text: Tak więc piszę otokę zarządzaną C# wokół macierzystej biblioteki dll. Biblioteka dll zawiera kilkaset funkcji. W większości przypadków pierwszym argumentem każdej funkcji jest nieprzezroczysty uchwyt do typu wewnętrznego biblioteki dll. Tak więc oczywistym punktem wyjścia do definiowania niektórych klas w opakowaniu byłoby zdefiniowanie klas odpowiadających każdemu z tych nieprzezroczystych typów, przy czym każda instancja przechowuje i zarządza nieprzezroczystym uchwytem (przekazywanym do jego konstruktora) Sprawy są trochę niezręczne, gdy mamy do czynienia z wywołaniami zwrotnymi z dll. Oczywiście, procedury obsługi wywołań zwrotnych w moim opakowaniu muszą być statyczne, ale niezmienne argumenty wywołań zwrotnych zawierają nieprzezroczysty uchwyt. Aby dostać się ze statycznego wywołania zwrotnego z powrotem do instancji obiektu, stworzyłem słownik statyczny w każdej klasie, kojarząc uchwyty z instancjami klas. W konstruktorze każdej klasy wpis jest umieszczany w słowniku, a następnie ten wpis jest usuwany z destruktorów. Po otrzymaniu wywołania zwrotnego mogę sprawdzić słownik, aby pobrać instancję klasy odpowiadającą odwołaniu nieprzezroczystemu. Czy są w tym jakieś oczywiste wady? Coś, co wydaje się być problemem, polega na tym, że statyczny słownik istnienia oznacza, że garbage collector nie będzie działał na instancjach mojej klasy, które są nieosiągalne w inny sposób. Ponieważ nigdy nie są zbierane śmieci, nigdy nie są usuwane ze słownika, więc słownik rośnie. Wygląda na to, że być może będę musiał ręcznie pozbywać się moich obiektów, czego absolutnie chciałbym uniknąć. Czy ktoś może zaproponować dobry projekt, który pozwoli mi tego uniknąć?


title: OOP, co oznacza komunikacja obiekt-obiekt

text: Czytałem w podstawowych pojęciach OOP, ponieważ staram się przejść od skryptów transakcyjnych do bardziej oop w php, i często spotykam się z tą definicją: > Obiekt przechowuje swój stan w polach (zmiennych) i eksponuje swoje zachowanie > poprzez metody (funkcje). Metody operują na wewnętrznym stanie obiektu > i służą jako podstawowy mechanizm komunikacji obiekt-obiekt, a prosty przykład: > Obiekty takie jak obiekty z życia codziennego mają stan i zachowanie. Psy mają stan > (imię, kolor, rasę, głód) i zachowanie (szczekanie, aportowanie, merdanie ogonem). z definicji widzę, że metody powinny albo manipulować stanem wewnętrznym (setterami) albo komunikować się z innymi obiektami; ale kiedy próbuję zastosować to do przykładu z bloga. składa się głównie z 2 domen Użytkownik i posty. **co może być zachowaniem `obiektu użytkownika` ?** Nie mogę znaleźć żadnego ! 1. zaloguj się, to jest auth lib. rzecz, więc nie powinienem go uwzględniać w użytkowniku. 2. publikowanie artykułów to obiekt typu Post; ponownie użytkownik przeprowadza to; ale jego bardziej dotyczy obiektu postu, aby utworzyć post, prawda? Użytkownik może być głównym obiektem Aggregate na blogu; jednak użytkownik jest bardziej podobny do Twórcy Innych Obiektów, ale nie ma Zachowania, o którym mógłbym pomyśleć; jest używany - i jego stan - przez inne obiekty w większości przypadków, że wszystkie ! **w skrócie :** jakie są dozwolone typy metod wewnątrz obiektu ?


title: Portlety (i portale) a zwykłe aplikacje internetowe

text: Pracuję nad dużym projektem zawierającym m.in. dwie aplikacje internetowe: jedną zaimplementowaną za pomocą Spring MVC, a drugą za pomocą Web Experience Factory (portlety). Dużym problemem związanym z korzystaniem z Web Experience Factory jest słaba społeczność. Głównym motywem wykorzystania portletów w drugiej aplikacji jest istniejący już system zarządzania użytkownikami w IBM Websphere Portal (jak każdy inny portal). Kolejnym krokiem będzie integracja pierwszej aplikacji (Spring MVC) z portalem Websphere. Mam więc tutaj kilka pytań: 1) Czy integracja aplikacji internetowej (Spring MVC) z portalem Websphere jest oczywista? A na jakie problemy powinienem być gotowy? 2) Czy to naprawdę dobry powód, aby korzystać z portalu tylko po to, aby skorzystać z jego systemu zarządzania użytkownikami (uwierzytelniania/autoryzacji), wiedząc, że obie integrowane aplikacje są wdrażane przez ten sam zespół? Naprawdę doceniam wszelkie wskazówki, zwłaszcza jeśli zawierają solidne argumenty.


title: Czy implementacja Leptonica „Zmodyfikowanego cięcia medianowego” w ogóle nie wykorzystuje mediany?

text: Bawię się trochę przetwarzaniem obrazu i postanowiłem przeczytać, jak działa kwantyzacja kolorów, a po odrobinie czytania znalazłem algorytm Modified Median Cut Quantization. Czytałem kod implementacji C w bibliotece Leptonica i natknąłem się na coś, co wydawało mi się nieco dziwne. Teraz chcę podkreślić, że daleko mi do eksperta w tej dziedzinie, nie jestem maniakiem, więc przewiduję, że to wszystko sprowadza się do tego, że nie rozumiem tego wszystkiego, a nie, że implementacja algorytmu jest zła w ogóle. Algorytm stwierdza, że \u200b\u200b_vbox_ powinien zostać podzielony wzdłuż ostatniej osi i że powinien zostać podzielony zgodnie z następującą logiką > Największa oś jest dzielona przez zlokalizowanie kosza z medianą piksela (przez > populację), wybranie dłuższego boku i podzielenie pośrodku tej strony >. Moglibyśmy po prostu umieścić kosz z medianą piksela po krótszej stronie >, ale we wczesnych stadiach podziału ma to tendencję do umieszczania klastrów > o niskiej gęstości (które nie są brane pod uwagę w podziale) w tym samym vboxie, co > część klaster o wysokiej gęstości, który przegłosuje go w medianie koloru vbox, > nawet z przyszłymi podziałami opartymi na medianie. Zastosowany tutaj algorytm jest > szczególnie ważny we wczesnych podpodziałach, a 3 jest przydatny do nadawania widocznym, ale niskiej populacji grupom kolorów ich własnych vboxów. Ma to niewielki wpływ na podział klastrów o wysokiej gęstości, które ostatecznie będą miały mniej więcej równą populację w swoich vboxach. Ze względu na argument załóżmy, że mamy vbox, który jest w trakcie dzielenia i że oś czerwona jest największa. W algorytmie Leptonica, w wierszu 01297, kod wydaje się wykonywać następujące czynności * Iteruje po wszystkich możliwych zielonych i niebieskich odmianach koloru czerwonego * Dla każdej iteracji dodaje do _całkowitej_ liczby pikseli (populacji) znalezionych wzdłuż czerwonego oś * Dla każdego czerwonego koloru sumuje populację aktualnej czerwieni i poprzednich, przechowując w ten sposób skumulowaną wartość dla każdego czerwonego _uwaga: kiedy mówię „czerwony”, mam na myśli każdy punkt wzdłuż osi, który jest objęty iteracją , rzeczywisty kolor może nie być czerwony, ale zawiera pewną ilość czerwonego_ Tak więc dla ilustracji, załóżmy, że mamy 9 „pojemników” wzdłuż osi czerwonej i że mają one następujące populacje > 4 8 20 16 1 9 12 8 8 Po iteracji wszystkich czerwonych pojemników tablica _partialsum_ będzie zawierała następującą liczbę dla wymienionych powyżej pojemników > 4 12 32 48 49 58 70 78 86 A _całkowita_ będzie miała wartość 86. Gdy to zrobisz, nadszedł czas na wykonanie rzeczywistego _średniego cięcia_ a dla osi czerwonej jest to wykonywane na li ne 01346 Iteruje nad pojemnikami i sprawdza, czy zgromadziła sumę. A oto część, która mnie rzuca z opisu algorytmu. Szuka pierwszego pojemnika, który ma wartość _większą_ niż _łącznie/2_ Czy _łącznie/2_ nie oznaczałoby, że szuka pojemnika, który ma wartość większą niż _średnia_ wartość, a nie _mediana_? Mediana dla powyższych przedziałów wyniosłaby _49_ Użycie _43_ lub _49_ może potencjalnie mieć ogromny wpływ na sposób podziału pudełek, mimo że algorytm przechodzi następnie do środka większej części miejsca, w którym znajdowała się dopasowana wartość. Inną rzeczą, która mnie trochę zastanawia, jest to, że w dokumencie określono, że powinien znajdować się kosz z wartością mediany, ale nie wspomina, jak postępować, jeśli istnieje parzysta liczba koszy.. mediana byłaby wynikiem _( a+b)/2_ i nie ma gwarancji, że którykolwiek z pojemników zawiera tę liczbę populacji. Więc to sprawia, że wydaje mi się, że istnieją pewne przybliżenia, które są nieistotne z powodu tego, w jaki sposób podział faktycznie bierze udział w środku większego boku wybranego kosza. Przepraszam, jeśli trochę się rozkręciło, ale chciałem być jak najdokładniejszy, ponieważ od kilku dni doprowadza mnie to do szału ;)


title: Posuwanie się naprzód z iteracją kodu

text: Są chwile, kiedy pracuję nad moimi projektami programistycznymi i dochodzę do punktu, w którym jestem gotowy, aby przejść do następnej części mojego programu. Jednak kiedy siadam do wdrożenia tej nowej funkcji, w pewnym sensie utknąłem. Nie chodzi o to, że nie wiem, jak zaimplementować tę funkcję, ale o to, że utknąłem w wymyślaniu _najlepszego_ sposobu zaimplementowania tej funkcji. Siadam więc przez dzień lub dwa i pozwalam fermentować pomysłom, aż poczuję się komfortowo z projektem. Martwię się, że mogę nie napisać czegoś tak dobrze, jak mogłoby być, lub że będę musiał wrócić i przerobić całość; więc odkładam to. To jest duży powód, dla którego nigdy tak naprawdę nie skończyłem wielu osobistych projektów. Ktoś inny tego doświadcza i jak utrzymujesz swoje ja do przodu w swoim projekcie?


title: Pomocne artykuły na temat zarządzania programistami?

text: Jakie są najbardziej pomocne artykuły na temat zarządzania programistami? Niedawno natknąłem się na ten i pomyślałem, że był doskonały - Niewypowiedziana prawda o zarządzaniu maniakami Co jeszcze tam jest?


title: Rozważając zmianę kariery na rzecznika patentowego/inżyniera patentowego

text: Po 17 latach profesjonalnego programowania, rozważam zmianę kariery i zostanie rzecznikiem patentowym/inżynierem. Czy ktoś inny podążał tą ścieżką lub ją oceniał? Jakieś spostrzeżenia, tyrady lub rave'y?


title: Komunikacja z Zarządem

text: Jakie są konkretne sugestie i techniki komunikacji z kierownictwem? Moim założeniem na to pytanie jest to, że jako programiści myślimy w sposób znacznie bardziej szczegółowy/zorientowany na szczegóły niż menedżerowie. Nie chodzi o to, że menedżerowie nie mogą myśleć na tym poziomie, po prostu o to, że ich decyzje i osądy dotyczą innego spektrum. Tam, gdzie menedżer może myśleć w kategoriach „zrobione” / „niezrobione”, programista może myśleć w kategoriach poszczególnych funkcji, przypadków testowych lub błędów. Tam, gdzie menedżer może myśleć „wiele błędów” / „wolny od błędów”, programista może myśleć w kategoriach stosunku funkcji do błędów lub złożoności funkcji lub pokrycia testów.


title: Tworzenie biblioteki w dwóch językach jednocześnie

text: Zamierzam napisać bibliotekę do analizowania kodu HTML typu open source w .Net, tak aby projekt był na wolności, kiedy zaczynam szukać pracy dla deweloperów. Teraz w moim programie magisterskim zacząłem uczyć się Java i stwierdziłem, że również mi się podoba, a także pomyślałem, że mógłbym jednocześnie napisać bibliotekę w Javie, aby od razu poprawić swoje umiejętności w języku Java. Czy byłoby to wskazane? Czy fakt, że Java i C# są podobnymi językami, wpływa na decyzję o stworzeniu dwóch bibliotek jednocześnie? Moim głównym zmartwieniem jest to, że zamiast jednej świetnej biblioteki, mam dwie przeciętne biblioteki. Będąc nowym w rozwoju, czy są jakieś inne pułapki, na które powinienem zwrócić uwagę? Czy posiadanie biblioteki na JVM i .Net działałoby na moją korzyść nie tylko jedną z tych platform, jeśli chodzi o przyszłych pracodawców? Widziałem to pytanie, ale moje motywacje nie są takie same i planuję wydanie również tego kodu, więc nie jestem pewien, czy odpowiedzi będą się różnić.


title: umiejętności, których nie można zlecić na zewnątrz – związane z tworzeniem stron internetowych

text: Nigdy nie wiem, gdzie można opublikować coś takiego, więc proszę wybacz, jeśli jest w niewłaściwym miejscu. Jestem bardzo zainteresowany dalszym rozwojem sieci; Znam trochę javascript, trochę php i tak dalej, ale teraz widzę te usługi, które przejdą od psd do wordpress za 200 dolców i zastanawiam się, jak do diabła można z tym konkurować? Zastanawiam się więc, czy ci, którzy mają większą wiedzę ode mnie, mogą mi powiedzieć, które obszary są najmniej prawdopodobne, aby zostać zlecone na zewnątrz, za 5 dolców dla jakiegoś dzieciaka w Uzbekistanie (bez obrazy dla tego dzieciaka).. myślisz, że to jest na strona zarządzania bazami danych, a może tworzenie aplikacji? doceniane pomysły.


title: Przekonaj samotnego programistę do korzystania z oddzielnego narzędzia do kompilacji zamiast kompilacji jednym kliknięciem IDE

text: Przez lata programowania w Javie, a ostatnio w Scali, nigdy nie używałem Ant, Maven, Gradle ani żadnego z tych narzędzi do budowania dla Javy. Wszędzie, gdzie pracowałem, był menedżer kompilacji, który zajmował się tym wszystkim — kompilowałem lokalnie ze środowiskiem IDE na potrzeby programowania i testów jednostkowych, a następnie sprawdzałem kod źródłowy i powiadamiałem kierownika kompilacji, który zrobił to, co było konieczne do skompiluj wszystkie pliki dla współdzielonego środowiska. Teraz, kiedy jestem pomiędzy kontraktami, pracuję nad własnym projektem, który sam sfinansowałem i dochodzi do punktu, w którym może być wystarczająco dobry, aby faktycznie zarabiać pieniądze. Mam nawet w kolejce potencjalnego inwestora i planuję pokazać mu wersję beta w ciągu najbliższych kilku tygodni. Ale przez cały czas po prostu klikam przycisk kompilacji na IDE i tworzy plik Jar i działa dobrze. Oczywiście konwencjonalna mądrość sugeruje, że „powinienem” pisać własne skrypty Ant/Maven/Gradle i używać ich zamiast IDE, ale jakie są konkretne zalety tego w mojej sytuacji (pracując w pojedynkę)? Przeczytałem trochę o tym, jak korzystać z tych narzędzi do kompilacji i wygląda na to, że pisałbym setki linii XML (lub Groovy lub cokolwiek innego), aby zrobić to, co robi IDE za pomocą jednego kliknięcia (wygenerowane przez IDE Ant XML dla projektu ma ponad 700 linii). Po prostu wygląda na podatne na błędy, czasochłonne i niepotrzebne w mojej sytuacji. Nie wspominając o krzywej uczenia się, która zajęłaby czas całej innej pracy, którą wykonuję, aby przygotować produkt do pokazania ludziom.


title: WinRT i .NET: Co to jest, gdzie go umieszczam i co to zmienia?

text: Powiedzmy, że jestem programistą .NET i chcę zbudować moją aplikację na WinRT. Przeczytałem, że jest to zupełnie nowe API dla Windows 8, silnie powiązane z aplikacjami w stylu Metro. Zakładam, że mogę rozwijać dla WinRT w .NET/C#? Jak to się ma na przykład do WPF lub Silverlight? Czy WinRT zapewnia własną strukturę interfejsu użytkownika, czy mogę zbudować aplikację WPF na bazie WinRT? A co z podstawowymi wejściami/wyjściami. .NET zapewnia metody do tego, jeśli programuję z/dla WinRT, czy muszę używać innych metod, czy też platforma .NET będzie używać WinRT pod maską? Poza tymi konkretnymi pytaniami, ogólne pytanie brzmi tak naprawdę, jak to się ma do innych interfejsów API i frameworków, z którymi jestem obecnie zaznajomiony jako programista .NET/C#?


Problem, z którym się zmagam i chciałbym mieć jakiś wkład w to; Właściciel Produktu wprowadza nieprzygotowane (nieznane, nie szacowane) Historie Użytkownika na spotkanie Planowania Sprintu. Problem, który to spowodował, polega na tym, że zespół spieszy się, aby zrozumieć i oszacować Historyjki Użytkownika, co wywiera znaczną presję czasową na część dotyczącą zaangażowania podczas spotkania Planowania Sprintu. Zespół wydaje się również być niepewny swoich szacunków ze względu na pospieszny charakter przygotowania ich na spotkaniu Planowania Sprintu. Efektem końcowym tego jest pośpieszne, połowiczne zaangażowanie w Sprint, które zwykle jest niedostatecznym zobowiązaniem ze względu na tak dużą niepewność. Widziałem dwie wyraźnie różne przyczyny późnego wprowadzenia historii użytkownika: 1. Zespół jest nowy w Scrumie i miał trudności z przygotowaniem historii przed planowaniem. 2. Zupełnie nowa historia użytkownika o wysokim priorytecie pojawiła się tuż przed spotkaniem dotyczącym planowania sprintu. Omówiłem te kwestie z Właścicielem Produktu i zdecydowaliśmy o działaniach. Zastanawiam się, czego próbowałeś, gdy Właściciel Produktu wprowadza zupełnie nową historyjkę użytkownika o wysokim priorytecie tuż przed lub nawet podczas spotkania Planowania Sprintu? Co zadziałało, co zawiodło? Zespół, który ma trudności z przygotowaniem historii użytkowników w nowym Scrum; stąd podejrzewam, że pomoże im trochę ułatwienie sesji groomingowych, mentoring i trochę czasu. Czy masz jakieś inne sugestie, jak pomóc zespołom w szybkim szacowaniu Planning Pokera?


title: Co powinienem uwzględnić w komentarzach dokumentacji XML?

text: Próbuję lepiej udokumentować mój kod, zwłaszcza jeśli chodzi o komentarze XML dotyczące członków klasy, ale często jest to po prostu głupie. W przypadku obsługi zdarzeń konwencja nazewnictwa i parametry są standardowe i przejrzyste: /// <summary> /// Program obsługi zdarzenia CollectionChanged myCollection. /// </summary> /// <param name="sender">Nadawca zdarzenia</param> /// <param name="e">Argumenty zdarzenia</param> private void myCollection_CollectionChanged(nadawca obiektu, NotifyCollectionChangedEventArgs e ) { // aktualny kod... } Często używam również prostych właściwości, które są (IMO) nazwane w sposób czytelny, dzięki czemu podsumowanie jest zbędne: /// <summary> /// Wskazuje, czy element jest zaznaczony. /// </summary> public bool ItemIsSelected { get { return (SelectedItem != null); } } Nie wydaje mi się, żeby takie komentarze nie zawierały żadnych informacji, których sama deklaracja już nie przekazuje. Ogólna mądrość wydaje się być taka, że komentarz, który powtarza kod, najlepiej pozostawić niepisany. Oczywiście dokumentacja XML to coś więcej niż zwykłe komentarze w kodzie inline, a najlepiej byłoby, gdyby miała 100% pokrycia. Co **_powinnam_** pisać w takich przypadkach? Jeśli te przykłady są w porządku, jaką dodają wartość, której być może teraz nie doceniam?


title: Czy istnieją boty, które pobierają nowe aplikacje na iOS bez pytania?

text: Zauważyłem, że pierwszego dnia moja aplikacja na iOS trafiła do sklepu z aplikacjami, pobrałem ją z Albanii i kolejną z Chin. Aplikacja jest przydatna tylko dla określonej grupy, z których wszystkie znajdują się w określonym mieście w USA. Czy istnieją boty, które automatycznie pobierają każdą nową aplikację? Jeśli tak, to w jakim celu?


title: Gdzie mogę dowiedzieć się więcej o JavaScript i Pythonie?

text: Uczyłem się kodować przez ostatnie cztery miesiące - głównie w JavaScript, ale dopiero zacząłem Pythona - i dzisiaj doznałem objawienia. Potrafię pisać w JavaScript całkiem nieźle, ale właściwie nie wiem, czym **jest** JavaScript. Zasadniczo wiem, jak go używać, ale nie wiem, jakie są zalety/wady, jego pochodzenie, cel itp. Jaki jest cel i tło JavaScriptu i dlaczego został stworzony?


title: Co decyduje o tym, które funkcje Javascript są blokujące, a które nieblokujące?

text: Od kilku lat zajmuję się webowym JavaScriptem (vanilla JS, jQuery, Backbone, itp.), a ostatnio trochę pracuję z Node.js. Zajęło mi trochę czasu opanowanie programowania „bez blokowania”, ale teraz przyzwyczaiłem się do używania wywołań zwrotnych dla operacji IO i tak dalej. Rozumiem, że Javascript jest z natury jednowątkowy. Rozumiem pojęcie „kolejki zdarzeń” węzła. To, czego NIE rozumiem, to to, co określa, czy dana operacja javascript jest „blokująca” czy „nie blokująca”. Skąd mam wiedzieć, na których operacjach mogę polegać, aby synchronicznie wygenerować dane wyjściowe, które będą używane w późniejszym kodzie, a do których będę musiał przekazać wywołania zwrotne, aby móc przetworzyć dane wyjściowe po zakończeniu początkowej operacji? Czy istnieje lista funkcji JavaScript, które są asynchroniczne/nieblokujące i lista tych, które są synchroniczne/blokujące? Co sprawia, że moja aplikacja JavaScript nie jest jednym wielkim wyścigiem? Wiem, że operacje, które zajmują dużo czasu, takie jak operacje IO w operacjach Node i AJAX w sieci, wymagają, aby były asynchroniczne i dlatego używają wywołań zwrotnych - ale kto decyduje, co kwalifikuje się jako „długi czas”? Czy w tych operacjach jest jakiś wyzwalacz, który usuwa je z normalnej „kolejki zdarzeń”? Jeśli nie, co odróżnia je od prostych operacji, takich jak przypisywanie wartości do zmiennych lub przechodzenie przez tablice, na których, jak się wydaje, możemy polegać, aby zakończyć w sposób synchroniczny? Być może nawet nie myślę o tym poprawnie - mam nadzieję, że ktoś mnie wyprostuje. Dziękuję!


title: Czy jest to uważane za implementację wzorca nadtypu warstwy?

text: **1.** Zgodnie z definicją Fowlera ten wzorzec jest zaimplementowany przez dziedziczenie wszystkich klas w warstwie z nadklasy. Ale po pewnym czasie googlowania okazuje się, że wszystkie poniższe elementy są uważane za implementacje wzorca _Layer Supertype_: a - wszystkie klasy w warstwie dziedziczące z tej samej nadklasy b - posiadanie tylko niektórych (a więc nie wszystkich) klas w warstwie dziedziczącej po superclass c - warstwa posiadająca superklasy **S1** i **S2** , gdzie klasy **A** i **B** dziedziczą po **S1** , natomiast **C** dziedziczy po **S2 ** Więc które z powyższych są uważane za implementacje _Nadtypu warstwy_? **2.** Jeśli a,b i c są uważane za implementacje _Layer SuperType_ , to nie widzę, jak ten wzorzec różni się od zwykłego _dziedziczenia klas_. Innymi słowy, czy nie moglibyśmy wtedy twierdzić, że używamy _Nadtypu warstwy_ za każdym razem, gdy jakaś klasa dziedziczy z innej klasy? Dziękuję


title: Który komponent odpowiada za aktualizację schematu bazy danych?

text: Mamy coś, co można nazwać _aplikacją rozproszoną_: jedną w pełni rozwiniętą aplikację internetową i małą usługę REST. Oba muszą być rozmieszczane oddzielnie. Oba mają dostęp do tego samego schematu bazy danych (w rzeczywistości dzielą tylko dwie tabele). Wspólna funkcjonalność jest zawarta we wspólnym artefakcie (tutaj plik JAR, ponieważ wszystko jest w Javie). Na razie w porządku. Jednak nie jestem pewien, jak prawidłowo obsługiwać zmiany schematu. Aplikacja internetowa wykorzystuje Flyway do aktualizacji schematów, działa jak urok. Ale jaka powinna być zalecana procedura, jeśli jedna z _udostępnionych tabel_ wymaga aktualizacji? Na czyją odpowiedzialność powinna spoczywać aktualizacja? (W tej chwili to aplikacja internetowa wykonuje wszystkie aktualizacje, być może to wystarczy, ale mnie to martwi.) Pomyślałem, że może nawet zmienić architekturę, aby mieć oddzielną aplikację lub usługę, która ma zarówno aplikację internetową, jak i usługę REST jako klienta, ale to tylko utrudniłoby sprawę, a nie usunęłoby problem.


title: Czy deweloperzy kiedykolwiek podpisują umowę przez zaliczkę? Jeśli nie, dlaczego?

text: Opuszczam mojego obecnego pracodawcę za dwa tygodnie, ale mam z nim świetne relacje i jestem trochę emocjonalnie przywiązany do projektu, który rozwijałem przez ostatnie kilka lat. Zapytali mnie, czy byłbym skłonny zawrzeć z nimi umowę na dalsze wspieranie tego projektu. Myślałem o zaproponowaniu miesięcznej opłaty, która zapewniłaby im 5-10 godzin wsparcia, w tym odpowiadanie na e-maile, naprawianie wszelkich błędów oraz drobne ulepszenia stabilności i poprawki funkcji. Nigdy nie widziałem żadnej wzmianki o umowach deweloperów oprogramowania pod ryczałtami; czy to jest zrobione? Jeśli nie, to czy jest coś, co sprawia, że jest to zły pomysł?