title: Czy informacja o prawach autorskich biblioteki licencjonowanej przez BSD jest uważana za aprobatę?

text: Kiedy przeglądam licencję BSD na bibliotekę open source, aby używać jej w moim komercyjnym produkcie, znalazłem następujący akapit: > Redystrybucja i użycie w formie źródłowej i binarnej jest dozwolone pod warunkiem, że powyższa informacja o prawach autorskich i ten akapit są powielone we wszystkich > takie formularze oraz że wszelka dokumentacja, materiały reklamowe i inne > materiały związane z taką dystrybucją i użytkowaniem potwierdzają, że oprogramowanie > zostało opracowane przez organizację. Jest jasne, że muszę wspomnieć o informacji o prawach autorskich, ale co do następnego akapitu: > Nazwa organizacji nie może być używana do promowania lub promowania produktów > wywodzących się z tego oprogramowania bez uprzedniej pisemnej zgody. Jeśli po prostu umieszczę informację o prawach autorskich używanej biblioteki, czy jest to uważane za promowanie mojego produktu przez wymienienie informacji o prawach autorskich biblioteki? Czy powinienem poprosić o pisemną zgodę? czy wystarczy tylko dodać informację o prawach autorskich?


title: Czy procesy zaplecza powinny być uwzględnione w przypadkach użycia w dokumencie wymagań?

text: Piszemy dokument wymagań dla naszego klienta i musimy uwzględnić przypadki użycia systemu. Stosujemy się do tego szablonu: Identyfikator Opis Aktorzy Warunek wstępny Kroki podstawowe Alternatywne kroki Wyjątki Walidacje biznesowe/reguły Warunki końcowe W sekcji Kroki podstawowe powinniśmy uwzględnić kroki, które system wykonuje na zapleczu, czy tylko kroki, z którymi użytkownik bezpośrednio wchodzi w interakcję z? Przykład: Podstawowe kroki wyszukiwania 1: Użytkownik przechodzi do strony wyszukiwania Użytkownik wprowadza termin Użytkownik naciska wyszukiwanie System dopasowuje wyszukiwane hasło do wpisów w bazie danych System wyświetla wyniki w porównaniu z podstawowymi etapami wyszukiwania 2: Użytkownik przechodzi do strony wyszukiwania Użytkownik wprowadza termin Użytkownik naciska wyszukiwanie System wyświetla wyniki


title: Programowanie funkcjonalne a OOP

text: Ostatnio dużo słyszałem o używaniu języków funkcjonalnych, takich jak Haskell. Jakie są niektóre z głównych różnic, zalet i wad programowania funkcjonalnego w porównaniu z programowaniem obiektowym?


title: Jak napisać zarządzalny kod za pomocą programowania funkcjonalnego?

text: Właśnie zacząłem od programowania funkcjonalnego (z JavaScript i Node.js) i z wyglądu wygląda na to, że pisany przeze mnie kod stałby się piekielną bazą kodu do zarządzania, w porównaniu do języków programowania, które mają rodzaj paradygmatu zorientowanego obiektowo. Dzięki OOP znam praktyki, które zapewnią, że Twój kod będzie łatwo zarządzany i rozszerzalny. Ale nie jestem pewien podobnej konwencji z programowaniem funkcjonalnym.


title: Kiedy masz obie opcje, kiedy działa, a kiedy OOP?

text: Podobnie jak (podejrzewam) wielu programistów JS, zwykle zaczynam od intuicji, a następnie dochodzę do zdrowych zasad/praktyki z doświadczeniem informującym o badaniach nad kompozycją. Nauka, w której nigdy tak naprawdę nie trenowałam, w której lubię zaglądać w wolnym czasie. Uwaga: otagowałem JS, aby określić, dokąd idę, ale jestem otwarty na odpowiedzi z dowolnego języka, w którym możesz mieć ten sam dylemat. Tak więc, kiedy zacząłem rozumieć bardziej czysto funkcjonalne języki, zacząłem zdawać sobie sprawę, że czasami przez przypadek stosuję to podejście. Zasadniczo będę miał pewne dane, które się nie zmieniają, oraz funkcję lub zestaw funkcji używających tych „stałych” (tak, tak...) w połączeniu ze zmiennymi params, aby przekazać wartość zwracaną, która niekoniecznie będzie inna na wypalaniach metody. Mam tendencję do sięgania po narzędzie, które wydaje mi się, że może uprościć problem lub zmniejszyć pracę, ale czy jest może coś mniej niejednoznacznego, jeśli chodzi o to, co bardziej formalnie uważa się za zalety jednego w porównaniu z drugim, aby wymyślić niektóre heurystyki do rozważenia? Jak dotąd podział jest zwykle bardziej z OOP na wyższych poziomach architektonicznych, z okazjonalnymi funkcjami, które zwykle wchodzą w grę w obrębie obiektów lub między nimi.


title: Czy możliwe są zagnieżdżone zależności biblioteki statycznej?

text: Pracuję w QT. 1. Czy biblioteka statyczna może zależeć od innej biblioteki statycznej? (Biblioteka statyczna powstaje przez dowiązanie innej biblioteki statycznej) lib2? W moim projekcie Qt używam biblioteki statycznej, która zależy od wielu bibliotek. Musiałem dodać wszystkie biblioteki (wraz ze wszystkimi ich nagłówkami w moim projekcie), chociaż potrzebuję tylko jednego lib (i jednego .h tej klasy) w moim kodzie. Proszę wyjaśnić scenariusz.


title: Czy są jakieś korzyści z braku referencyjnych kluczy integralności w bazie danych?

text: Zatem integralność referencyjna jest dobra, ale czy są scenariusze, w których brak ograniczeń jest lepszy? Na przykład, kiedy cała logika relacji jest zachowana w kodzie? lub kiedy aktualizacja bazy danych jest uproszczona? PS: Nie pytam, że dobrze jest nie mieć integralności referencyjnej, tylko jakie scenariusze by to uzasadniały


title: Dlaczego div z możliwością edycji treści nie zachowuje się jak element wejściowy?

text: Motywacją do edytowania zawartości div byłoby umożliwienie użytkownikowi wprowadzania danych w normalnym elemencie div. Dlaczego więc zachowuje się tak inaczej niż element wejściowy? Głównie mam na myśli dodanie `div` lub `br` on line break. Dodatkowo nie ma elementu zastępczego. Więc moje pytanie brzmi: jaki jest sens edytowania treści div? Dlaczego w ogóle miałbym go używać?


title: Całkowicie oddzielona warstwa logiki biznesowej od MVC

text: Obecnie przeprowadzamy refaktoryzację naszych metod kontrolera w aplikacji ASP.NET MVC. Na początku oddzieliliśmy warstwę dostępu do danych (naszym celem było całkowite usunięcie LINQ z kontrolerów). Teraz myślimy o kolejnym kroku - jak stworzyć warstwę logiki biznesowej, aby zmniejszyć liczbę linii i logiki w kontrolerze. Obecnie mamy coś takiego: public ActionResult CustomerProjects(niektóre parametry) { var collectionOfSomeType = this.CustomerRepository.GetSomeData(); var anothercollection = this.ProjectsRepository.GetAnotherData(collectionOfSomeType); var viewModel = CreateSomeViewModel(inna kolekcja); return View("Indeks", viewModel); } Oczywiście to tylko przykład z czterema liniami kodu. Mamy kilka metod, które są większe (ale nadal IMO nie jest takie złe). Wstrzyknęliśmy nasze klasy pomocnicze przez kontener IoC, tam znajduje się bardziej złożona logika. Ale teraz chcielibyśmy usunąć nawet te części. Czy warto poświęcić czas na stworzenie kolejnej warstwy, która byłaby naszą „ostatnią bramą” przed kontrolerami? Ostateczny wynik byłby następujący: public ActionResult CustomerProjects(niektóre parametry) { var viewModel = someSource.PrepareCustomerProjectsViewModel(params); return View("Indeks", viewModel); }      Co myślisz?


title: Jak wymawiasz eval()?

text: Nie jestem native speakerem, więc przepraszam, jeśli uważasz, że pytanie jest głupie, ale jak mam wymówić eval()?


title: Jak wstrzykiwanie zależności zwiększa sprzężenie?

text: Na stronie Wikipedii poświęconej wstrzykiwaniu zależności, sekcja wady mówi nam, że: > Wstrzykiwanie zależności zwiększa sprzężenie, wymagając od użytkownika podsystemu > zaspokojenia potrzeb tego podsystemu. z linkiem do artykułu przeciwko wstrzyknięciu zależności. Wstrzykiwanie zależności sprawia, że klasa używa interfejsu zamiast konkretnej implementacji. To powinno skutkować zmniejszeniem sprzężenia, nie? czego mi brakuje? Jak wstrzykiwanie zależności zwiększa sprzężenie między klasami?


title: Rejestracja praw autorskich w odniesieniu do przyszłych patentów

text: **Krótkie pytanie:** Czy zarejestrowanie pracy zawierającej prawdopodobne pomysły podlegające opatentowaniu w jednej lub kilku usługach rejestracji praw autorskich (takich jak CRS) może być wykorzystane do skutecznego udowodnienia _wcześniejszego stanu techniki_ na wypadek, gdyby ktoś próbował opatentować pomysł? **Szczegóły:** Konkretna praca to oprogramowanie i powiązane rzeczy, które pokazują pewne nowości, być może można je opatentować, może nie w USA. Mieszkam w Europie, a nawet gdybym mieszkał w USA, nie chciałbym się przejmować (i zostawiać mnóstwo kasy w urzędach patentowych) o patenty: chodzi o to, żeby zostać wydany na GPL, kiedy nadejdzie czas. Chcę go chronić w taki sposób, aby pozostał wolny, co, jak sądzę, wiąże się z zabezpieczeniem go przed prawdopodobnymi przedsięwzięciami patentowymi (próba uchwycenia nowości, jakie posiada projekt). Czytając na ten temat widzę, że istnieją usługi rejestracji praw autorskich (takie jak CRS), które za przystępną cenę rzetelnie archiwizują stan dzieła wraz z datą rejestracji. Więc w przypadku, gdy ktoś próbuje „zaatakować” dzieło na licencji GPL w wyżej wymieniony sposób, jak przydatne mogą być te dowody w udowadnianiu _wcześniejszego dzieła_? (Czy mógłbyś pomyśleć o innych skutecznych metodach dla kogoś, kto nie ma wiarygodnych powiązań, aby wydać prawdziwą _publikację drukowaną_ , nie ma dużo funduszy i nie mieszka w USA?) Moim celem jest _wyłącznie ochrona opublikowanych prac na licencji GPL przed prawnym usunięciem_. To znaczy, jak rozumiem, patentowanie może być możliwe, że ktoś opatentuje już istniejącą technologię (w tym przypadku moja opublikowana praca na GPL), a następnie pozywa pierwotnego autora (wynalazcę) o naruszenie patentu. Szukam tylko ochrony przed tego typu nadużyciami, budując wystarczająco solidny dowód _wcześniejszej sztuki_, aby praca mogła pozostać wolna.


title: Jak obsługiwać wiele wywołań API za pomocą javascript/jquery

text: Muszę zbudować usługę, która będzie wywoływać wiele interfejsów API w tym samym czasie, a następnie wyświetli wyniki na stronie (pomyśl na przykład o tym, jak działa porównywarka cen). Pomysł polega na tym, że po zakończeniu każdego wywołania API wyniki są natychmiast wysyłane do przeglądarki, a strona będzie stopniowo powiększać się, aż cały proces zostanie zakończony. Ponieważ te wywołania API mogą potrwać kilka sekund, aby powrócić, chciałbym to zrobić za pomocą javascript/jquery, aby stworzyć lepsze wrażenia użytkownika. Nigdy nie robiłem czegoś takiego przed użyciem javascript/jquery, więc zastanawiałem się, czy istnieją jakieś frameworki/rady, którymi ktokolwiek byłby skłonny się podzielić.


title: Generowanie dokumentacji Lua i Javascript

text: Jestem w początkowej fazie tworzenia mobilnego MMO z moim zespołem. Oprogramowanie serwera zostanie napisane w JavaScript przy użyciu NodeJS, a oprogramowanie klienta w Lua przy użyciu Corony. Potrzebujemy narzędzia do automatycznego generowania dokumentacji zarówno dla kodu po stronie serwera, jak i po stronie klienta. Czy są jakieś narzędzia, które mogą generować dokumentację zarówno dla Lua, jak i JavaScript? I jako bonus: hostujemy nasz projekt na Bitbucket, a Bitbucket Wiki używa języka znaczników Creole. Więc jeśli to możliwe, chcę, aby narzędzie wyeksportowało do Creole. Edycja: znam narzędzia do generowania dokumentacji dla jednego z obu języków. Nie chcę jednak 2 różnych stylów dokumentacji w jednym projekcie. Dlatego jedno narzędzie, które może generować dokumentację dla obu języków, byłoby świetne.


title: Co wybrać serwer oparty na API lub serwer oparty na Socket dla aplikacji opartej na danych

text: Pracuję nad projektem, który posiada aplikację desktopową na MAC/COCOA, natywną aplikację na iPhone oraz natywną aplikację na iPada. Wszystkie aplikacje robią prawie to samo. Aplikacje są aplikacjami opartymi na danych. Każda komunikacja z serwerem odbywa się za pośrednictwem spokojnego API opracowanego w PHP. Kiedy użytkownik się loguje, wiele danych jest pobieranych z serwera. Pozostanie zsynchronizowane z odpytywaniem serwera jest zakończone. Ponieważ jest dużo danych do odpytywania, aplikacja jest wolniejsza i niezawodna. Możliwym rozwiązaniem, które przychodzi mi do głowy, jest użycie serwera opartego na Socket. Moje pytanie brzmi, czy to rozsądnie poprawi wydajność? A jaka technologia (gniazd) sprawdzi się jako rozwiązanie po stronie serwera dla aplikacji opartych na danych? Dużo słyszałem o Node.js. Proszę o sugestie.


title: Wydaje mi się, że brakuje mi kilku ważnych pojęć związanych z PhoneGap

text: Planuję rozwijać aplikację na wielu platformach i myślę, że PhoneGap może być dla mnie idealny. Czytałem, że jest to jedna baza kodu dla wszystkich platform, ale patrząc na przewodnik PhoneGap, wydaje się, że są oddzielne instrukcje dla każdej platformy. Więc jeśli chcę programować na iOS, Androida, BB i WP7, muszę napisać 4 różne zestawy kodu? Jestem pewien, że brakuje mi tutaj czegoś fundamentalnego. Poza tym, jak ludzie zwykle podchodzą do kompilacji PhoneGap? Oczywiście / prawdopodobnie chcesz, aby gotowa aplikacja wyglądała jak aplikacja natywna - czy częściej niż nie używać jQuery Mobile razem z PhoneGap? Czy istnieje preferowane IDE? Widzę, w przewodniku, dla iOS wydają się sugerować Xcode. Potrafię dobrze używać Xcode, ale wydaje mi się, że jest to trochę przesada dla HTML i CSS. Czy muszę programować w Xcode, a jeśli nie, jak do tego podejść? Użyć innego IDE / edytora tekstu, a następnie skopiować i wkleić do Xcode w celu kompilowania i testowania? Wiem, że to pytanie jest rozwlekłe i fundamentalne, ale uważam, że nie jest to właściwie poruszone w przewodnikach. Dziękuję.


title: Jak zorganizować projekt back-endowej bazy danych i aplikacji front-endowej w repozytorium oprogramowania?

text: Mam aplikację, która ma bazę danych zaplecza (tabele, procedury, biblioteki dll specyficzne dla bazy danych) i front-end (logika aplikacji i interfejs użytkownika), nad którymi pracują oddzielne osoby. Zastanawiałem się, jak najlepiej zorganizować to w moim repozytorium (używam GIT). Widzę następujące opcje: * repozytorium all-in-one * submoduły głównego repozytorium * dwa oddzielne repozytoria * inne? Wszelkie sugestie są mile widziane.


title: Zapobieganie ingerencji robota w śledzenie użytkowników

text: Zdrapuję tekst z różnych sklepów internetowych (bez obrazów/filmów lub innych danych). Nie jestem ekspertem od śledzenia użytkowników, więc chciałbym wiedzieć, czy istnieje sposób na napisanie mojego robota, aby nie zakłócał śledzenia przez właścicieli sklepów internetowych. Być może już tak jest, ponieważ robot indeksujący nie przechowuje żadnych plików cookie, żąda obrazów ani niczego innego poza faktycznymi stronami, ale chciałbym się upewnić. Co powinienem zrobić, żądając stron, aby upewnić się, że nic nie jest śledzone w Google Analytics? Czy mam wysłać e-maila do właścicieli z informacją o filtrowaniu określonego klienta użytkownika, czy...? Widziałem Jak być dobrym obywatelem podczas przeszukiwania witryn internetowych? gdzie ostatnia odpowiedź stwierdza, że należy dodać „przeszukiwacz” lub „pająk” w kliencie użytkownika. Nie jestem pewien, co z tym zrobić, ponieważ nie mogę znaleźć niczego na poparcie tego. (Przeszukiwacz jest napisany w node.js i używa modułu żądania do pobierania stron internetowych) EDIT: Dla wszystkich zainteresowanych, oto nieskończenie prosty robot, który stworzyłem. Nie jest zgodny z plikiem robots.txt, ponieważ sam określam, jakie linki chcę śledzić (a teraz jestem zbyt leniwy, aby napisać coś, co jest zgodne z plikiem robots.txt): var request = require("request") , cheerio = wymagaj("cheerio") ; exports.crawl = function(options) { var links = [].concat(options.url) // Pobiera tablicę adresów URL lub po prostu ciąg znaków. , trwające Żądania = 0 , indeks = 0 , gotowe = fałsz ; process.nextTick(symbol); function ticker() { if(ongoingRequests < options.maxRequests && index < links.length && !done) { var url = links[index++]; Żądania bieżące++; if(opcje.debug) console.log("Pobieranie " + url); request({ url: url, kodowanie: options.encoding || "utf-8" }, function(err, response) { trwające Żądania--; if(err) { return; } if(!done) { var $ = cheerio .load(response.body) , shouldContinue = options.data($, response, url) ; if(shouldContinue === false) { console.log("Przerwano robota indeksującego."); options.done(); done = true ; } var newLinks = options.extractLinks($).filter(function(url, i) { return links.indexOf(url, i + 1) === -1; }); if(options.debug && newLinks.length ) console.log(newLinks); links = links.concat(newLinks); if((indeks - 1) % 5 === 0) console.log("Aktualny indeks: " + (indeks - 1 ) + ", dotychczas znalezione linki: " + linki.długość); } }); } else if(! Trwające Żądania) { if(!done) { options.done(); gotowe = prawda; }                 zwrócić; } process.nextTick(znacznik); } }; Użyj go w ten sposób: var crawler = require("../crawler"); crawler.crawl({ url: "http://website.com" , debug: true , maxRequests: 5 , data: function($, response, url) { if(url.indexOf("/product/") == = -1) { return; } console.log("wydobądź rzeczy z $ za pomocą selektorów CSS i ładnego interfejsu API podobnego do jQuery"); } , gotowe: function() { console.log("GOTOWE!!"); } , extractLinks: function($) { return $("a").map(function() { return $(this).attr("href"); }).filter(function(url, i, a) { if(!url || url[0] !== "/") { return false; } return i === a.indexOf(url) // Usuń duplikaty && url.indexOf("/cart") === -1 && url.indexOf(.htm") > -1 ; }).map(function(url) { return "http://website.com" + url; }); } });


title: Czy DDD nie jest odpowiednie dla mojej witryny, czy powinienem wprowadzić warstwę zapytań?

text: Odziedziczyłem aplikację internetową ASP.NET, a poprzedni programista użył, jak sądzę, pewnych koncepcji DDD. Jestem nowy w DDD i muszę przyznać, że zmagam się z praktyczną stroną tego, ponieważ wywodzę się z N-Tier Transaction Script. Jednym z problemów witryny jest jej powolność. Nie ma stronicowania w ogromnych siatkach, a warstwa logiki biznesowej pobiera znacznie więcej danych niż jest to potrzebne do 90% operacji, z których 70% to odczyty w celu powiązania danych z siatkami. Ogólny projekt jest taki, że warstwa logiki biznesowej ma klasę Service na zagregowany korzeń, z różnymi metodami typu "GetByX()", "FindBestMatching()" i "Update()". Te klasy Service są punktami, z których drzewa obiektów domeny są tworzone, takie jak „Organizacja” i „Użytkownik”. W moich wygodnych czasach skryptów transakcyjnych moja warstwa usług była podobna: prawdopodobnie byłaby jakaś logika, wywołanie do repozytorium (lub ponieważ EF 6 bezpośrednie użycie EF ponieważ może być wyszywany do testowania), a następnie wywołanie powróci.Zwrócone obiekty będą obiektami typu DTO zawierającymi istotne dane zwrotne, w tym ewentualnie niektóre obiekty encji POCO.Te DTO będą podróżować do klientów za pośrednictwem usług internetowych, będą powiązane z ASP Siatki .NET lub Silverlight... wszystko było dobrze.Moje operacje na mojej warstwie usług mogą być bardzo specyficzne, pozwalając na zapytania takie jak: "GetUsersWithSurnameIncludeChildren(string surname, int skip, int take)" pozwalając na ładne wąskie zapytania DB, które obsługiwane stronicowanie i gorliwe ładowanie powiązanych danych. Był szybki i ładował tylko te dane, które były rzeczywiście potrzebne. Teraz dzięki tej witrynie, którą odziedziczyłem, istnieje rzeczywisty model domeny biznesowej OO. Te klasy to POCO, które nie są generowane z EF, ale EF jest używany jako baza danych jako repozytorium (istnieje wiele mapowań między obiektami domeny a obiektami EF). Przykładowy obiekt domeny znajduje się poniżej (bez żadnej logiki). public class Organizacja { public int OrganisationID { get; ustawić; } ciąg publiczny Nazwa { get; ustawić; } public IList<Organizacja> AssociatedOrganisations { get; ustawić; } public IList<Użytkownik> Personel { get; ustawić; } public IList<Użytkownik> Menedżerowie { get; ustawić; } // Metoda logiki biznesowej zaimplementowana poniżej } Wiele klas jest w istocie kopiami podstawowych obiektów struktury encji, inne zawierają w sobie znaczną ilość logiki. Dzisiejszy sposób działania witryny polega na tym, że za każdym razem, gdy klasa usługi OrganisationService tworzy nowy obiekt domeny organizacji (i może utworzyć kolekcję w jednym działaniu), wypełnia ona również WSZYSTKIE pola i kolekcje w tym obiekcie...i wszystkie pola i kolekcje w tych obiektach! W pamięci tworzone jest ogromne, głębokie drzewo, a do pobrania wszystkich danych potrzebny jest stos sprzężeń i unii (generowanych przez EF). Jest to całkowicie nieodpowiednie w przypadku witryny internetowej, która wyświetla głównie mnóstwo płaskich siatek. Moje pytania to: 1) Czy aplikacja, która w 70% pobiera dane z bazy danych w celu wyświetlenia, aw 30% logika biznesowa, jest rzeczywiście złym kandydatem do DDD? 2) Jeśli DDD jest odpowiednie, w jaki sposób ogólnie projektuje się takie scenariusze? Czy powinienem zaimplementować oddzielną „Usługę zapytań”, która jest przeznaczona tylko do pobierania wielu płaskich danych w celu powiązania ze stronami i siatkami (mogą to być po prostu same EF POCOS) i zarezerwować obiekty domeny tylko dla części aplikacji, w których musi być logika faktycznie być wykonywane? 3) Czy powinienem ładować dane do moich typów referencyjnych i kolekcji obiektów domeny tylko wtedy, gdy faktycznie uzyskuje się do nich dostęp (np. ładowanie z opóźnieniem EF...)? Poprzednie posty, które przeczytałem, sugerowały, że leniwe ładowanie w obiekcie domeny to zapach kodu: DDD Lazy Loading Code Smell Mam zamiar dziś kupić książkę DDD :)


title: Jakiego algorytmu można użyć do przydzielania zadań na podstawie lokalizacji?

text: Jakiego algorytmu można użyć do planowania zadań w oparciu o lokalizację? Na przykład dostępnych jest 100 studentów i 5 wykładowców. Każdy wykładowca musi uzyskać taką samą liczbę studentów korzystając z przydziału lokalizacji, czyli przydział studentów zależy od miejsca najbliższego wykładowcy. System musi automatycznie przypisywać studentów do wykładowcy w zależności od najkrótszej odległości pomiędzy studentem a wykładowcą. Student A Wykładowca A Student B wykładowca B Student c Wykładowca C PRZYKŁAD: Wykładowca A może pozyskać studenta c, ponieważ po porównaniu 3 studentów adresuje się do studenta C, który znajduje się blisko wykładowcy A. Przeprowadziłem badania nad algorytmami, takimi jak kolonia mrówek, kolonia pszczół, lokalizacja przydział, ale czego mogę się z tego nauczyć, to nie spełnia moich wymagań. Więc szukam nowego algorytmu. Jakiego rodzaju algorytmu można użyć do rozwiązania tego problemu?


title: Jaki jest cel „klauzuli braku poparcia” w licencji New BSD?

text: _**Uwaga:** To pytanie nie dotyczy „wstrętnej klauzuli reklamowej BSD”. Licencja New BSD nie zawiera tej klauzuli i jest zgodna z GPL._ Próbuję wybierać między licencją New BSD a licencją MIT dla moich własnych projektów. Są one zasadniczo identyczne, z wyjątkiem tego, że licencja BSD zawiera następującą klauzulę: > * Ani nazwa <organizacji> ani nazwiska jej współpracowników > nie mogą być używane do promowania lub promowania produktów opartych na tym oprogramowaniu > bez uprzedniej pisemnej zgody. > Dlaczego ktoś miałby chcieć skorzystać z tej klauzuli? Co jest złego w zdobyciu rozgłosu, jeśli ktoś tworzy dobrze znane oprogramowanie przy użyciu Twojego kodu? Czy dyktowanie użytkownikom, co mogą, a czego nie mogą robić z Twoim imieniem i nazwiskiem, nie byłoby poza domeną własności intelektualnej?


title: RefactorException: Dobry pomysł czy zły pomysł?

text: Kiedy robię refaktory na dużą skalę, często komentuję zawartość metod i używam NotImplementedExceptions dla rzeczy, które nadal muszę refaktoryzować. Problem polega na tym, że zakłóca to „prawidłowe” NotImplementedExceptions. Zastanawiam się nad wprowadzeniem niestandardowego RefactorException, który dość łatwo odnajduję przez odniesienie, aby zobaczyć, co jeszcze muszę zrobić. Dobry pomysł czy zły pomysł? Jakie są inne typowe sposoby etapowego wykonywania refaktorów na dużą skalę? (oczywiście chodzi o to, że wszystkie te wyjątki są usuwane przed dokonaniem całej refaktoryzacji)


title: Czy jest to prawnie dozwolone w umowie EULA oprogramowania?

text: Wystarczy przeczytać całą umowę EULA z gry („Minecraft”) należącej do („Mojang AB”). I tam było jedno zdanie, które zwróciło moją uwagę: Mamy ostatnie słowo na temat tego, co stanowi narzędzie/mod/wtyczkę, a co nie. Moje pytania to: 1. Czy jest legalnie dozwolone napisanie tego w EULA? 2. Czy to naprawdę utrzyma się w sądzie? **EDYTUJ:** Ponieważ ludzie najwyraźniej chcą więcej szczegółów: początkowo myślałem tylko ogólnie, ale ponieważ potrzeba więcej szczegółów, weźmy Szwecję (Skąd pochodzi mojang) i USA (na wszelki wypadek).


title: Co powinna zwrócić metoda GetSelectedIndex, gdy nie zaznaczono żadnych wierszy?

text: Tworzę składnik tabeli interfejsu użytkownika, który zwraca tablicę wybranych indeksów. Niektóre typowe wartości zwracane to var myRetVal1 = [0];//jedna wybrana wartość var myRetVal2 = [0,1,2,3,8,11];//wiele wybranych wartości, jak widać, zawsze zwracam szyk. Wpadłem na pomysł, aby zwrócić `-1`, gdy nic nie jest zaznaczone, ale potem pomyślałem, że może to być mylące, gdy w każdym innym warunku zwracana jest tablica. Tak więc sprawdzenie pustego zestawu wartości to: //returns -1 var selectedItems = tbl.GetSelectedIndex(); if(selectedItems !== -1){ //mamy dane do przetworzenia } LUB //zwraca [] var selectedItems = tbl.GetSelectedIndex(); if(selectedItems.length > 0){ //mamy dane do przetworzenia } LUB //zwraca null var selectedItems = tbl.GetSelectedIndex(); if(selectedItems){ //mamy dane do przetworzenia } Może robię za dużo z tym, ale czy są standardowe oczekiwania dla tego typu kontroli? Gdy kompiluję inne kontrolki, czy powinny one być zgodne ze standardową pustą wartością zwracaną, czy też powinny zawsze zwracać „pustą” wersję ich oczekiwanego typu zwracanego?


title: Zapytanie dotyczące VBA jako opcji kariery

text: Jestem programistą dot net z ponad 7-letnim doświadczeniem w VB, Vb.net, C# i Asp.net. Czy warto uczyć się VBA/VSTO? Czy dodałoby to wartości mojej karierze? Czy byłyby firmy zatrudniające osobę znającą zarówno VBA, jak i Dot net? Słyszałem, że VBA będzie używany głównie w branży finansowej i nie zapłaci dużo. Czy to prawda?


title: najlepszy sposób na wykonanie cyklu kompilacji i sprawdzania

text: Próbuję nauczyć się lua i eksperymentuję na moim Linuksie. Nie jestem programistą, więc szukam Twojej pomocy, aby dać mi kilka sugestii. To, co chcę osiągnąć, to sprawienie, aby mój cykl kompilacji-przepisania-ponownej kompilacji był tak wydajny, jak to tylko możliwe. Oto co robię. Do programowania używam vima w jednym oknie. Mam otwartą muszlę w innym oknie. Kiedy chcę sprawdzić swoje postępy, zapisuję kod w vimie, przełączam się na moją powłokę, a następnie uruchamiam kod. Jednak wciąż jest to trochę żmudne, była szybsza, bardziej elegancka droga. Jakieś pomysły? Jak radzisz sobie z tym problemem?


title: Jak możemy chronić przestrzeń nazw obiektu w JavaScript?

text: Kontynuując moje poprzednie pytanie: prosty kod JavaScript do zrozumienia podstaw OOP opartych na prototypach Powiedzmy, że uruchamiamy konsolę tych dwóch oddzielnych obiektów (nawet jeśli są one nazywane child i parent, nie ma między nimi dziedziczenia): var parent = { name: " rodzic", print: function(){ console.log("Witaj, "+ta.nazwa); } }; var child = { name: "child", print: function(){ console.log("Cześć, "+ta.nazwa); } }; parent.print() // To wypisze: Hello, parent child.print() // To wypisze: Hi, child temp =parent; rodzic = dziecko; dziecko = temp; parent.print() // To będzie teraz print: Cześć, child child.print() // To będzie teraz print: Hello, parent Teraz załóżmy, że rodzic jest biblioteką, jako aplikacja HTML5 w przeglądarce nie może zaszkodzić ponieważ praktycznie działa w piaskownicy, ale teraz wraz z pojawieniem się ChromeOS, FirefoxOS i innych systemów operacyjnych [Browser] zostaną one również połączone z natywnym API, co byłoby głową poza „piaskownicą”. Teraz, jeśli ktoś zmieni przestrzeń nazw, będzie trudniej recenzentowi kodu (zautomatyzowanemu lub nie) zauważyć nieprawidłowe użycie, jeśli zmieni się przestrzeń nazw. Moje pytanie brzmiałoby: Czy istnieje wiele sposobów, w jakie można zrobić powyższą sytuację i co można zrobić, aby chronić te przestrzenie nazw? (Albo w samym javascript lub przez jakieś statyczne narzędzie do analizy kodu)


title: Kod ogólny czy kod łatwy do zrozumienia?

text: w pracy teraz pokłóciłem się ze współpracownikiem, ponieważ stworzyłem stronę, która jego zdaniem jest **zbyt ogólna**. Strona ma **3 tryby** (prosty, adv i specjalny) - tak musi działać, bo nie wybieramy jak napisana jest specyfikacja. w każdym trybie **strona wygląda inaczej** (zmiany nie są duże - **pokazuje/ukrywa 5 pól tekstowych** w różnych kombinacjach w zależności od trybu). Mój współpracownik uważa, że powinny to być **3 strony**, a kiedy coś zmienisz, powinieneś po prostu **scalić** zmiany w dwóch pozostałych trybach. Pola mają teraz kod taki jak `rendered="#{mode!=2}"` itp. P.S. Teraz różnica wynosi 5 pól, ale **w przyszłości nikt nie wie, ile to zmieni**. **EDYTUJ:** Używamy Seam(JSF/Facelets), oto kod pseudo-facelet (aby był łatwiejszy do zrozumienia). Nie umieściłem tego w panelGroups, aby lepiej przedstawić problem. <h:output rendered="mode=2" value="nazwa:" /> <h:input rendered="mode=2" value="bean.name" /> <h:output rendered="mode=2" value="Nazwisko: " /> <h:input rendered="tryb=2" value="fasola.nazwisko" /> <h:output rendered="tryb!=2" value="Nazwisko: " /> <h :input rendered="mode!=2" value="bean.surname" /> <h:output rendered="mode!=2" value="#{mode==1?'My Name':'Moje imię i nazwisko '}" /> <h:input rendered="mode!=2" value="bean.name" /> **EDIT:** Zduplikowałem wersję, która wyglądałaby tak (pseudokod) <c:if test= mode=1> <ui:include view=modeSimple.xhtml> </c:if> <c:if test=mode=2> <ui:include view=modeAdv.xhtml> </c:if> <c:if test=mode=3> <ui:include view=modeSpec.xhtml> </c:if> modeSimple.xhtml <h:output value="Surename: " /> <h:input value="bean.surname" /> <h:output value="Moje imię" /> <h:input value="bean.name" /> modeAdv.xhtml < h:output value="Nazwa: " /> <h:input value="fasola.nazwa" /> <h:output value="Nazwisko: " /> <h:input value="fasola.nazwisko" /> specyfikacja trybu .xhtml <h:output value="Surename: " /> <h:input value="fasola.surname" /> <h:output value="Imię mojego przyjaciela" /> <h:input value="fasola.name " />


title: Czy moja firma może przekazać prawa własności intelektualnej do aplikacji, której odpisałem godziny innemu startupowi?

text: Jestem stażystą w firmie medycznej (bezpłatnie), nazwijmy ją _Firma A_ i zauważyłem, że używają dużo papierowych formularzy do rzeczy, które można zrobić na komputerze. Pliki Excela dla rzeczy, które nie powinny znajdować się w Excelu. Chciałem więc poprawić swoje programowanie i stwierdziłem, że to najlepsza okazja, aby to zrobić. Opracowałem kilka aplikacji do ich użytku. Wszystkie te aplikacje były poza czasem pracy firmy. Zrobiłem jedną aplikację i uwielbiają, a jeden z dyrektorów ma brata, który ma firmę zajmującą się zdrowiem. Chce, żebym oddał mój kod źródłowy, aby firma jego brata mogła go dalej rozwijać i być może sprzedać (wykluczyłem się z równania). Nie mam zamiaru przekazywać mojego kodu, ponieważ spędzam dużo czasu na zewnątrz, robiąc to, ale nie chcę też palić mostów z nikim w firmie. Nie mogę iść do reżysera i powiedzieć mu „nie sądzę”. Nie przeszkadza mi prezentacja bratu, jak to działa, ale linia rezygnuje z mojego kodu. Jeśli chcą coś takiego zbudować, to mogą iść do przodu, nie mam z tym problemu. Jaki jest właściwy sposób podejścia do tego i czy mają prawo mi to zrobić? Edycja: nie ma umowy, której nigdy niczego nie podpisałem


title: Jak niezależny jest język DOM?

text: Cytując z Wikipedii > Document Object Model (DOM) to wieloplatformowa i niezależna od języka konwencja reprezentacji i interakcji z obiektami w dokumentach HTML, XHTML i XML. i od wc3 > Aby zapewnić precyzyjną, niezależną od języka specyfikację interfejsów DOM >, zdecydowaliśmy się zdefiniować specyfikacje w OMG IDL Teraz programowałem w Javie, C# i PHP i we wszystkich tych językach słowo kluczowe ` interface` jest dostępny, ale jak zaimplementować interfejs niezależny od języka? Jak to możliwe, że można napisać interfejs bez języka programowania? Co więcej, jak możesz wchodzić w interakcję z DOM za pomocą dowolnego języka programowania? Jeśli ktoś wynalazł nowy język programowania, jakie kroki musi wykonać, aby móc wchodzić w interakcje z DOM?


title: Dostępność w chmurze krótkoterminowych „dziewiczych” instancji Windows?

text: Mam sytuację, w której regularnie potrzebujemy świeżo zainstalowanej „dziewiczej” instalacji Windowsa, aby wykonywać różne prace w izolacji, a budowanie od podstaw za każdym razem w instancji vmware staje się nużące. Być może istnieją oferty chmurowe oferujące usługę pozwalającą zażądać jednej lub więcej instancji systemu Windows i po bardzo krótkim czasie były one dostępne do zalogowania się przez Pulpit zdalny? Po użyciu zostały po prostu poddane recyklingowi bez konieczności każdorazowego płacenia za pełną licencję Windows. Czy to istnieje za rozsądną cenę? Jakie są twoje osobiste doświadczenia z tym?


title: Dlaczego powinienem używać programu MSBuild zamiast plików rozwiązania programu Visual Studio?

text: Używamy TeamCity do ciągłej integracji i budujemy nasze wersje za pomocą pliku rozwiązania (.sln). Używałem Makefiles w przeszłości dla różnych systemów, ale nigdy msbuild (który słyszałem, to coś w rodzaju Makefiles + XML mashup). Widziałem wiele postów na temat korzystania z msbuild bezpośrednio zamiast plików rozwiązań, ale nie widzę bardzo jasnej odpowiedzi na temat _dlaczego_ to zrobić. Dlaczego więc mielibyśmy zawracać sobie głowę migracją z plików rozwiązania do „makefile” MSBuild? Mamy kilka wydań, które różnią się #define (kompilacje polecane), ale w większości wszystko działa. Większym problemem jest to, że teraz musielibyśmy utrzymywać _dwa_ systemy podczas dodawania projektów/kodu źródłowego. _**AKTUALIZACJA:_** Czy ludzie mogą rzucić światło na cykl życia i wzajemne oddziaływanie następujących trzech elementów? 1. Plik .sln programu Visual Studio 2. Wiele plików .csproj na poziomie projektu (które rozumiem jako „podrzędne” skrypty msbuild) 3. Niestandardowy skrypt msbuild Czy można bezpiecznie powiedzieć, że .sln i .csproj są używane/utrzymywane jak zwykle z poziomu graficznego interfejsu użytkownika programu Visual Studio IDE, podczas gdy niestandardowy skrypt msbuild jest napisany ręcznie i zwykle wykorzystuje już istniejący indywidualny plik .csproj „tak jak jest”? To jeden ze sposobów, w jaki widzę zmniejszenie nakładania się / duplikatów w konserwacji ... Doceniłbym trochę światła na ten temat z doświadczenia operacyjnego innych osób


title: Dobrym sposobem na naukę języka i pełnego zrozumienia jego funkcji i klas jest wypróbowanie wszystkich metod w API

text: Mam pomysł, że aby nauczyć się języka (np. Java) muszę wypróbować wszystkie metody z API języka; chcę spróbować użyć metod z jego API. czy to dobry pomysł? w Java API jest 10 000 metod. czy to dobry sposób na poznanie wszystkich umiejętności językowych?


title: Podstawowe zastosowanie reguł biznesowych

text: Mam zapytanie, czy następujące wymagania musiałyby zostać zaprojektowane za pomocą reguł biznesowych — dotyczy to aplikacji opartej na JEE, gdzie obecnie jest to zakodowane jako część logiki biznesowej. > System utworzy konto podatkowe dla każdej kombinacji miasta, powiatu i powiatu >, która nakłada podatek tylko na niektóre miasta, powiaty lub powiaty > w zależności od działalności podatnika. > > Gdy użytkownik założy konto, które istnieje we wszystkich pododdziałach (tj. > na poziomie miasta lub powiatu), aplikacja musi użyć jego kodu podatkowego i > automatycznie wypełnić wszystkie lokalizacje bez konieczności wprowadzania danych przez użytkownika > wprowadzić każdą lokalizację. Zakładam, że oznaczałoby to tabelę wyszukiwania danych z tabeli głównej (kont podatkowych) oraz pobieranie i wyświetlanie wszystkich lokalizacji. Czy jest jakiś sposób, w jaki można wykorzystać silnik reguł do zarządzania tymi kombinacjami?


title: Czy mogę używać nazwy mojej firmy zamiast logo i nazwy ofbiz?

text: Przepraszam, to nie są pytania dotyczące programowania. Moja firma chce popracować w ofbiz. Przeczytałem licencję Apache i nie jestem pewien, czy zmiana logo na logo naszej firmy jest legalna. http://www.apache.org/foundation/license-faq.html#WhatDoesItMEAN


title: Jak przechowywać obiekt w taki sposób, aby można go było używać nawet przy drugim uruchomieniu programu?

text: Tworzę program w Javie, w którym tworzę `Dialog box`, `button`, `checkbox` itp. Widgety SWT. Teraz mój problem polega na tym, że jeśli w jednym wykonaniu zostanie wykonany "przycisk" a w drugim "pole wyboru" to obydwa powinny wyświetlić się w jednym polu. Więc muszę przechowywać ten obiekt pudełkowy. Jak mogę to zrobić?


title: Jak utworzyć mutowalne, zróżnicowane jtree z dowolnymi/ogólnymi węzłami kategorii?

text: _Uwaga: nie chcę tutaj pomocy w kodowaniu, nie bez powodu korzystam z `Programmers`. Chcę poprawić moje umiejętności planowania/pisania programów, a nie (tylko) moje rozumienie Java_. Próbuję wymyślić, jak stworzyć drzewo, które ma dowolny system kategorii, w oparciu o umiejętności wymienione w tej grze LARP tutaj. Moja poprzednia próba miała uzasadnienie, czy umiejętność jest również kategorią. Próbowanie kodowania było bałaganem. Rysując drzewo zauważyłem, że tylko moje „liście” to umiejętności, a pozostałe oznaczyłem kategoriami. ### To, o co mi chodzi, to sposób na stworzenie drzewa, które próbuje oddzielić Model i Widok i pozwala na dodanie dowolnego typu węzła podrzędnego (z osobnym sposobem edycji/renderowania) do dowolnego rodzica. ![Drzewo z listą różnych umiejętności z powyższego linku](http://i.stack.imgur.com/vmcFs.png) _N.B Wszystko tutaj jest kupowane jako umiejętność, nawet jeśli wygląda na własność. Użytkownicy końcowi będą postrzegać to jako kupowanie umiejętności (które robią na papierowym bankomacie), więc powinny być prezentowane jako takie, wszystkie na tej samej stronie._ **Objaśnienie drzewa:** Drzewo „rodzi się” z zestawem na stałe zakodowane kategorie najwyższego poziomu ( _Broń, Fizyczne i psychiczne, Medyczne_ i inne itp.). Od tego użytkownik musi mieć możliwość dodania umiejętności. Ostatecznie chcą na przykład dodać _umiejętność_ „Jednoręcznej specjalizacji miecza” (przedmiot **nie**). W tym celu najlepiej jest kliknąć „dodaj” z zaznaczoną opcją „Broń”, a następnie wybrać opcję „Jedną ręką” z węzła kombi, który pojawia się na tym węźle podrzędnym, a następnie ponownie kliknąć dodaj i wprowadzić nazwę w polu tekstowym w _tym_ węźle podrzędnym który się pojawia. Następnie kliknij ponownie dodaj, aby dodać/określić „poziom” lub „poziom” dla tego liścia; najpierw biegłość, potem specjalizacja (na przykład). Oczywiście, jeśli chcesz kupić inną umiejętność, to zupełnie inna droga do liścia. Możesz nie potrzebować pola kombi na tym samym poziomie w dół drzewa, co w przykładzie broni, a także potrzebujesz innej logiki. Właśnie z tym mam problem, nie mówiąc już o programowaniu; jak zrobić zestaw klas i **nie** określać, w jakiej kolejności je łączyć, ale nadal mieć je wszystkie dopasowane. Jaki jest dobry system do opisywania tego rodzaju drzewa w kodzie? Wszystkie inne przykłady JTree, które widziałem, mają jakiś _przewidywalny_ wzorzec, a mój _nie_. Nie chcę kodować tego wszystkiego w „literałach”, z długimi listami tego, co _type_ (pole kombi, pole tekstowe itp.) Węzła potomnego powinno być dozwolone na jakim rodzicu. Czy powinienem używać klas abstrakcyjnych? Interfejsy? Jak mogę sprawić, by tego rodzaju skupisko obiektów było rozszerzalne, gdy dodam inne umiejętności niewymienione powyżej, które zachowują się inaczej? Jeśli _nie_ istnieje dobry system do użycia, czy istnieje dobry proces do wypracowania, jak zrobić tego rodzaju rzeczy? ### Tryby w mojej głowie się obracają: Zawsze muszę: * Sprawdzić rodzica * Zapewnić opcje oparte na rodzicu Zaczynam myśleć z powodu tej wspólności potrzebuję jakiejś abstrakcyjnej/interfejsowej klasy `umiejętności`, która definiuje/określa wspólne metody określania umiejętności i kategorii. Mogę (mam nadzieję) umieścić reguły i opcje w bazie danych i tam czytać. Pytanie brzmi teraz, jak sądzę, między metodą abstrakcyjną lub interfejsową a tym, jak to zaimplementować.


title: Jak sprawdzić, czy 4 punkty tworzą kwadrat?

text: Załóżmy, że mam 4 punkty (są dwuwymiarowe), które różnią się od siebie i chcę wiedzieć, czy tworzą kwadrat. Jak to zrobić? (niech proces będzie tak prosty, jak to możliwe.)


title: Zalety i wady strukturyzacji całego kodu za pomocą klas i kompilacji do klas (takich jak Java)

text: _Edycja: mój język pozwala na wielokrotne dziedziczenie, w przeciwieństwie do Javy._ Zacząłem projektować i rozwijać własny język programowania do celów edukacyjnych, rekreacyjnych i potencjalnie użytecznych. Na początku zdecydowałem się oprzeć go na Javie. Oznaczało to, że cały kod zostanie napisany w formie klas, a kod zostanie skompilowany w klasy, które są ładowane przez maszynę wirtualną. Wykluczyłem jednak takie funkcje, jak interfejsy i klasy abstrakcyjne, ponieważ nie znalazłem dla nich potrzeby. Wydawało się, że narzucają paradygmat i chciałbym, żeby mój język tego nie robił. Chciałem jednak zachować klasy jako jednostkę kompilacji, ponieważ wydawało mi się to wygodne w implementacji, znajome i po prostu podobał mi się ten pomysł. Potem zauważyłem, że w zasadzie pozostał mi system modułów, w którym klasy mogą być używane albo jako "przestrzenie nazw", dostarczające stałych i funkcji za pomocą dyrektywy `static`, albo jako szablony dla obiektów, które muszą być tworzone ("rzeczywiste" cel zajęć w innych językach). Teraz zastanawiam się: **jakie są plusy i minusy posiadania klas jako jednostek kompilacji?** Również wszelkie ogólne komentarze na temat mojego projektu będą mile widziane. Informacyjny post na temat mojego języka można znaleźć tutaj: http://www.yannbane.com/2012/12/kava.html.


title: Czy użycie AJAX znacznie poprawiłoby wydajność serwera?

text: Oczywiście AJAX poprawia interfejs użytkownika, ale czy to również zmniejsza obciążenie serwera? Można by pomyśleć, że tak, ponieważ cała strona nie będzie musiała być wyświetlana za każdym razem, ale może są inne zmienne, których nie rozważam.


title: Czy OOP jest trudne, bo nie jest naturalne?

text: Często można usłyszeć, że OOP w naturalny sposób odpowiada sposobowi myślenia ludzi o świecie. Ale zdecydowanie nie zgodziłbym się z tym stwierdzeniem: my (a przynajmniej ja) konceptualizujemy świat w kategoriach _związków_ między rzeczami, które napotykamy, ale celem OOP jest projektowanie poszczególnych klas i ich hierarchii. Zauważ, że w życiu codziennym relacje i działania istnieją głównie między obiektami, które byłyby instancjami niepowiązanych klas w OOP. Przykładami takich relacji są: „mój ekran jest na stole”; „Ja (człowiek) siedzę na krześle”; „samochód jest na drodze”; „Piszę na klawiaturze”; „ekspres gotuje wodę”, „tekst jest wyświetlany w oknie terminala”. Myślimy w kategoriach dwuwartościowych (czasem trójwartościowych, jak na przykład w „Dałam ci kwiaty”) czasowników, w których czasownik jest działaniem (relacją), które operuje na dwóch obiektach, aby wytworzyć jakiś wynik/działanie. _Skupienie_ jest na działaniu, a dwa (lub trzy) obiekty [gramatyczne] mają jednakowe znaczenie. Porównaj to z OOP, gdzie najpierw musisz znaleźć jeden obiekt (rzeczownik) i powiedzieć mu, aby wykonał jakąś akcję na innym obiekcie. Przesunięto sposób myślenia z czynności/czasowników operujących na rzeczownikach na rzeczowniki operujące na rzeczownikach – to tak, jakby wszystko było mówione biernie lub refleksyjnie, np. „tekst jest pokazywany przez okno terminala”. A może „tekst rysuje się w oknie terminala”. Nie tylko skupiamy się na rzeczownikach, ale jednemu z rzeczowników (nazwijmy go podmiotem gramatycznym) nadano większe „ważność” niż drugiemu (przedmiotowi gramatycznemu). Trzeba więc zdecydować, czy powie terminalWindow.show(someText) czy someText.show(terminalWindow). Ale po co obciążać ludzi tak trywialnymi decyzjami bez żadnych konsekwencji operacyjnych, skoro tak naprawdę chodzi o show(terminalWindow, someText)? [Konsekwencje są _operacyjnie_ nieistotne — w obu przypadkach tekst jest wyświetlany w oknie terminala — ale mogą być bardzo poważne w projektowaniu hierarchii klas, a „zły” wybór może prowadzić do zawiłego i trudnego w utrzymaniu kodu.] Chciałbym w związku z tym argumentuj, że główny sposób wykonywania OOP (oparty na klasach, pojedyncza wysyłka) jest trudny, ponieważ JEST NIENATURALNY i nie odpowiada temu, jak ludzie myślą o świecie. Metody generyczne z CLOS są bliższe mojemu sposobowi myślenia, ale niestety nie jest to podejście rozpowszechnione. Biorąc pod uwagę te problemy, jak/dlaczego to się stało, że obecnie mainstreamowy sposób robienia OOP stał się tak popularny? I co, jeśli w ogóle, można zrobić, aby go zdetronizować?


title: Czy nauka programowania czyni cię lepszym programistą?

text: Uważam się za średniozaawansowanego programistę Pythona i zaoferowano mi możliwość bycia trenerem na zajęciach z programowania dla początkujących w Pythonie. Zastanawiałem się, czy to naprawdę poszerzy mój repertuar programistyczny. Czy ktoś miał oświecające doświadczenie po tym, jak pomyślnie wyszkolił grupę ludzi? Czy to również zależy od tych ludzi - czy są programistami, czy studentami noob? (W moim przypadku są to średniozaawansowani programiści .NET i Java) Czego powinienem od nich oczekiwać? Jedną z moich obaw jest to, że udławiłbym się, gdy jeden z nich zadał splątane pytanie. Czy to normalne?


title: Czy powinienem wcześniej zerwać umowę?

text: Około 7 miesięcy temu przeszedłem z 5-letniej roli permie (jako programista wsparcia w C#) do roli kontraktowej. Zrobiłem to, ponieważ pogrążyłem się w stagnacji w mojej starej roli. Dodatkowe kontraktowanie gotówki też naprawdę pomaga. Niestety lider mojego zespołu nie lubił mnie od pierwszego dnia. Regularnie mówi mi, że wyszedłem z kontraktem zbyt wcześnie i często zauważa, że ludzie w wieku 20 lat nie mają pojęcia, o czym mówią (mam 29 lat). Niedawno otrzymałem zadanie konfigurowania naszych raportów za pośrednictwem naszej wewnętrznej biblioteki raportów. Działa z bazy kryteriów opartej na bazie danych, a kontrolki są ładowane w razie potrzeby. Konfiguracje mogą stać się dość złożone, a kontrolki mają różne poziomy zależności od siebie. Miałem krótki czas na uruchomienie 50 raportów i powiedziano mi, że mam zrobić podstawową konfigurację, po czym zostaną one przekazane zespołowi raportującemu w celu dopracowania, a następnie zespołowi testowemu. Nasz zaktualizowany system został wdrożony 2 tygodnie temu i okazało się, że około 15 raportów ma problemy powodujące zwracanie nieprawidłowych danych. Po przeprowadzeniu dochodzenia odkryłem, że zespół sprawozdawczy nawet na nie nie spojrzał, a zespół testowy nie zadał sobie trudu, aby przetestować raporty. Mimo to lider mojego zespołu powiedział mi, że to w 100% moja wina. W rezultacie nasze biuro pomocy zostało mocno dotknięte. Pracowałem do 2 w nocy, aby rozwiązać problemy o najwyższym priorytecie (w rocznicę mojego ślubu!). Następnego dnia przychodzę do pracy o 7:45, aby kontynuować poprawki. Nie otrzymałem podziękowań, ale mój menedżer wielokrotnie powtarzał, że „spieprzyłem się” i „to wszystko moja wina”. Powiedziałem liderowi zespołu, że część mojego weekendu spędzę pracując nad rozwiązaniem pozostałych problemów. Jego odpowiedź brzmiała: „więc kurwa powinieneś! spieprzyłeś to wszystko!” przed resztą zespołu. Odpowiedziałem „Bez obaw”. i wyszedł. Spędziłem nad tym porządną część mojego weekendu. W ciągu 2 dni roboczych od uzyskania informacji o problemach naprawiliśmy wszystkie problemy o średnim i wysokim priorytecie. Jedyne komentarze, które mój lider zespołu skierował do mnie w ciągu ostatnich 2 tygodni, to powiedzenie mi, w jaki sposób spowodowałem wielki bałagan, i powiedzenie, że to wszystko moja wina. Dostaję to wiele razy dziennie. Jeśli żartuję komuś innemu w zespole, mówi się mi, żebym nie był mądralem… chociaż reszta zespołu żartuje przez cały dzień. Poza tym wszystko, co dostaję, to gniewne spojrzenia za każdym razem, gdy jestem w pobliżu faceta. Nie udzielam żadnej odpowiedzi poza „w porządku” lub milczeniem, kiedy zaczyna sprawiać mi trudności. Dziś dowiedzieliśmy się, że wydanie pilotażowe na kolejny etap zostało przesunięte. Lider mojego zespołu powiedział, że to przeze mnie (ale przełożeni nie powiedzieli nic takiego). Powiedział też, że „nie rozumiem konsekwencji moich działań”. Moje pytanie brzmi, czy powinienem zerwać kontrakt (jestem zakontraktowany do 30 czerwca) i znaleźć inną rolę? Nikt inny z mojego zespołu nie przemówi na moją korzyść, ponieważ oni też są wykonawcami i nie są zainteresowani kołysaniem łodzi. Mógłbym poskarżyć się szefowi liderów mojego zespołu, ale nie widzę, żeby to pomagało, ponieważ nadal będę tkwił w tym samym zespole. Ponieważ jest to moja pierwsza umowa, wyobrażam sobie, że zdobycie kolejnego będzie trudne bez referencji. Nie wiem, czy ten facet próbuje mnie podpalić, żeby sprowokować konfrontację (facet uwielbia konflikty), czy po prostu daje upust swojej złości, czy co. Pogodzenie się z tą winą dzień po dniu naprawdę mnie przygnębia i przygnębia... zwłaszcza, że mam żonę i dziecko do utrzymania).


title: Symulacja dwukrotnego kliknięcia, jak długo mam czekać między kliknięciami?

text: Programowo symuluję podwójne kliknięcie i chcę mieć małą przerwę między dwoma kliknięciami, aby lepiej symulować prawdziwego użytkownika. Wiem, że interwał powinien być krótszy niż „GetDoubleClickTime”, ale nie jestem pewien, jaki byłby dobry czas na wybór. Czy ktoś zna jakiekolwiek dane o tym, jak szybko typowa osoba wykonuje dwukrotne kliknięcie? Myślałem w kierunku `GetDoubleClickTime()/3`, ale oczywiście magiczna liczba wydaje się nieco niepewna.


title: Jak mogę się upewnić, że kod mojego projektu na wieczór jest mój?

text: Jestem fizykiem z dyplomem CS i właśnie rozpocząłem studia doktoranckie w firmie technologicznej (chciałem prowadzić badania stosowane). Zajmuje się symulacjami elementów skończonych na dużą skalę. Po zapoznaniu się z ich obecnym podejściem uważam, że należy zastosować radykalnie inną metodę (używają narzędzia komercyjnego, które jest bardzo ograniczone). Wolałbym oprzeć swoje badania na open source'owym solverze elementów skończonych i napisać program, który z niego korzysta. Chciałabym rozwijać ten pomysł wieczorami, bo to czas, który najbardziej mi odpowiada na programowanie (w dzień wolę czytać i matematykę) i wykorzystać go na późnym etapie doktoratu. Chciałbym mieć możliwość opublikowania mojego programu jako open source na mojej stronie internetowej jako referencji, do przyszłego użytku osobistego, a nawet komercyjnego (np. konsultingowego). Jak mogę się upewnić, że moja firma nie rości sobie prawa własności do kodu? Pomyślałem, że może pomóc system kontroli wersji (sprawdź dopiero wieczorem). To udowadnia, że nie programowałem w normalnych godzinach pracy (udokumentowane gdzie indziej). Ale te dane można łatwo wytworzyć. Jakieś inne pomysły? Chcę podkreślić, że nie jestem zainteresowany sprzedażą oprogramowania, podobnie jak moja firma. * * * Jak dotąd bardzo ciekawe odpowiedzi. To wyraźnie mi pomaga. Kilka uwag: * Nie ogranicza mnie umowa o pracę. Prawo krajowe mówi, że firma jest właścicielem wszystkiego, co produkuję w godzinach pracy i nie zawarto żadnej specjalnej umowy (mój pracodawca nie sprzedaje oprogramowania i może być nieco naiwny z tej strony). Używają głównie oprogramowania, a żaden z moich kolegów nie jest poważnym programistą. * Po drugie, muszę przemyśleć kwestię poruszoną przez @Mark dotyczącą tajemnic handlowych. W tej branży jest to dość poważne. * Po trzecie, bardzo zależy mi na tym, żeby nie zdenerwować mojego przełożonego/szefa. Ale i to jest motywacją do tego pytania, chciałbym zachować _innowacyjną_ część mojej pracy nieco oddzieloną, abym mógł ją ponownie wykorzystać lub przynajmniej zademonstrować jako pracę referencyjną.


title: Czy używałeś Framework/Lib, którego licencja LGPL? jeśli tak, jakie są wrażenia Twoich klientów?

text: Próbuję wystawić swoją pierwszą aplikację na sprzedaż, chciałbym zadać kilka pytań tym, którzy już sprzedali swoje oprogramowanie: * Czy używałeś Framework/Lib, którego licencja LGPL? * jeśli tak, jakie są wrażenia Twoich klientów? na przykład, jeśli Twoi klienci/konkurenci z rynku ujawnią technologię/tajemnice, których użyłeś w swoim rozwiązaniu (ponieważ LGPL wymaga, abyś utworzył Dynamic Link (.DLL) dla swoich bibliotek i wyraźnie mówisz o użyciu Lib/Framework) . Pełna historia: W moim projekcie użyłem frameworka LGPL/komercyjnego (podwójna licencja), drugi był zbyt drogi (około 3000 USD), co skłoniło mnie do korzystania z LGPL, ale nadal się martwiłem. Dlatego proszę o rady, a zwłaszcza motywacje.


title: łatwy sposób na jednoczesne wyszukiwanie github, googlecode, codeplex itp.?

text: Czy istnieje łatwy sposób jednoczesnego przeszukiwania otwartego repozytorium, takiego jak github, googlecode, codeplex itp.? Zastanawiam się, czy google jest w tym dobry.


title: Jak rozwiązać problem z kolejką zdarzeń w emulatorze komputera w Javie?

text: Piszę _niskopoziomowy_ emulator (w Javie) IBM 1620, komputera z późnych lat 50-tych. Przez „niski poziom” rozumiem, że najniższą _obserwowalną_ jednostką pracy jest 20-mikrosekundowy „wyzwalacz” -- instrukcje maszynowe osiągają swoje cele, uruchamiając serię tych wyzwalaczy; i napisałem kod, który emuluje prawie wszystkie z nich. Przez „obserwowalny” rozumiem, że konsola 1620 zawierała klawisz „Single Cycle Execution”, który pozwalał na ręczne przesuwanie jednego wyzwalacza na raz – a większość wewnętrznych stanów procesora (rejestry, komputer, warunki) była wyświetlana na dużej konsoli świateł. Gwarantuję poprawność stanu na poziomie jednego cyklu. Zwykle emulator albo czeka, aż operator naciśnie przycisk START, albo znajduje się w głównej pętli uruchamiania, wykonując wyzwalacz za wyzwalaczem. Musi również być w stanie odpowiadać na zdarzenia zewnętrzne, takie jak rzucony przełącznik lub wspomniany wcześniej klawisz wykonania pojedynczego cyklu, które są przekazywane do wątku procesora z wątku GUI przez kolejkę zdarzeń. Pętla uruchamiania zagląda do tej kolejki przed uruchomieniem następnego wyzwalacza i jak dotąd działa to dobrze. Teraz jednak wdrażam instrukcje I/O czytnika kart i mam problem. Wszystkie wejścia/wyjścia 1620 były synchroniczne (1620 nie miał możliwości przerwań), więc kiedy wykonywał instrukcję ReadCard, dosłownie czekał w połowie wyzwalania, aż czytnik kart dostarczy kartę. Zwykle trwało to jedną dziesiątą sekundy, chyba że operator nie zamontował talii kart! Problemem jest ta ostatnia ewentualność: 1620 musi czekać w połowie wyzwalacza (tj. główna pętla uruchamiania nie działa), pozostając jednocześnie wrażliwym na zdarzenia zewnętrzne (wciśnięte przełączniki, klawisz Reset lub oczywiście karta z czytnik kart). Wydaje mi się, że nie mogę wymyślić czystego, eleganckiego sposobu na zaprojektowanie tego. Odpytywanie i obsługa zdarzeń „nieżądanych” w górnej części pętli działała do tej pory dobrze, ale teraz potrzebuję wywoływalnego mechanizmu, który robi to samo, ale jest w stanie zwrócić kontrolę do swojego wywołującego, gdy wystąpi właściwe zdarzenie. Oto jak to teraz wygląda: stan: MANUAL oznacza niemożność natychmiastowego przetworzenia następnego wyzwalacza AUTO oznacza, że możemy kontynuować przetwarzanie następnego wyzwalacza w nieskończoność { processQueuedEvents() // przetwarzanie zdarzeń nigdy nie blokuje się, jeśli (stan == MANUAL) { waitForEvents () // to blokuje, dopóki kolejka nie będzie pusta } else { // stan == AUTO wyzwalacz = doTrigger(trigger) // uruchom wyzwalacz i pobierz następny } } Wyzwalacz procesora E30 wysyła wiadomość do czytnika kart z żądaniem bufora karty i musi czekać na odebranie zdarzenia zawierającego bufor. W międzyczasie procesor musi normalnie odbierać i przetwarzać zdarzenia. Mogę sobie wyobrazić, że jest to problem z projektowaniem systemu operacyjnego, ale to nie jest moja mocna strona. Czy ktoś może udzielić wskazówek?


title: Testy napędzane a wymagania biznesowe ciągle się zmieniają

text: Jednym z nowych wymagań naszego zespołu programistów, postawionych przez CTO/CIO, jest stać się programowaniem opartym na testach, jednak nie sądzę, aby reszta biznesu mogła pomóc, ponieważ nie mają pojęcia o cyklach rozwoju, a wymagania są zmieniane cały czas w ciągu jednego sprintu. Co mnie denerwuje marnowaniem czasu na pisanie 10 przypadków testowych i jutro stanie się bezużyteczne. Zaproponowaliśmy utworzenie procesów, które pozwolą uniknąć tych zmian wymagań i edukować biznes w zakresie cykli rozwoju. Co się stanie, jeśli biznesowi nie uda się wpaść na pomysł? Co byś zrobił?


title: Naprawianie błędów generowanych przez inny zespół

text: Mam do czynienia z następującą sytuacją: 2 różne zespoły pracują nad tym samym projektem przy użyciu Scrum i co jakiś czas błędy związane z historyjkami użytkownika opracowanymi przez zespół „A” są przypisywane do zespołu „B”. Jesteśmy przyzwyczajeni do naprawiania błędów popełnianych przez inne osoby, gdy należą do tego samego zespołu, ale sprawy stają się nieco bardziej skomplikowane, gdy w grę wchodzą różne zespoły. Niektórzy deweloperzy nie lubią pracować w ten sposób i twierdzą, że błędy muszą zostać naprawione przez tych, którzy je zrobili, a to powoduje pewne konflikty między zespołami. Czytając niektóre z podobnych pytań, znalazłem kilka interesujących (Czy naprawianie błędów zgłoszonych przez innych jest dobrym podejściem? a także Zespoły równoległe i scrum/agile), ale nie dotyczą one tej samej sytuacji, a przynajmniej ja nie. nie widzę ich w ten sposób. Podczas naszych dyskusji otrzymaliśmy 2 możliwe podejścia: pozostawienie sytuacji bez zmian lub ustalenie, że błędy muszą zostać przypisane zespołowi, który opracował funkcję. Macie jakieś sugestie?


title: Dlaczego popularność Objective-C była tak nagła w indeksie TIOBE?

text: Chciałbym zadać pytanie, które jest dość podobne do tego, które zadano tutaj, ale dla Celu-C. Według rankingów TIOBE wzrost popularności Objective-C jest bezprecedensowy. Jest to oczywiście związane z popularnością produktów Apple, ale wydaje mi się, że może to być pochopny wniosek, ponieważ tak naprawdę nie wyjaśnia stagnacji rozwoju Javy (1. Na całym świecie jest o wiele więcej urządzeń z systemem operacyjnym Android, 2. Java jest używana praktycznie na każdej platformie, jaką można sobie wyobrazić) Teraz w ogóle nie programowałem w Objective-C, ale chciałbym zapytać, czy są jakieś unikalne cechy lub zalety samego języka w porównaniu z innymi rozpowszechnionymi językami takich jak C++, Java, C#, Python itp. Jakie inne czynniki przyczyniły się do powstania Objective-C w tak krótkim czasie? > ![http://i.stack.imgur.com/3q0tW.png](http://i.stack.imgur.com/3q0tW.png)


title: Jak programiści na Zachodzie widzą programistów na Wschodzie?

text: Druga połowa tego pytania: Jak programiści na Wschodzie widzą programistów na Zachodzie? * * * Wschodnia część świata (Indie/Chiny/Filipiny) świadczy głównie usługi outsourcingowe do świata zachodniego (USA i Europa). Czy masz doświadczenie w pracy z zespołami offshore? Jeśli tak, to jak było? Czy masz jakieś uogólnione pomysły lub opinie na temat programistów ze Wschodu (np. Czy współpracują, czy dostarczają na czas, czy wykonują dobrą pracę?). Na czym są one oparte?


title: Wskaźnik stanu dzieci w widoku drzewa na najwyższym nierozwiniętym rodzicu

text: Używam widoku drzewa w c# i tworzę niestandardowe ikony dla węzłów. Powiedzmy, że to jest moja hierarchia z węzłem, który spełnia określony warunek: Root1 |_Ax |_Bx1 |_Bx2 |_Cx1 |_Cx2(condition true) |_Bx3 |_Bx4 |_Ay |_By1 |_By2 |_Cy1 kiedy drzewo jest zwinięte Nie wiem, czy jakieś wewnętrzne dziecko spełnia ten konkretny warunek, więc chcę wyświetlić ikonę na najwyższym nierozwiniętym rodzicu. Na przykład powiedzmy, że drzewo jest całkowicie zwinięte Chciałbym to zachować : 1) pierwszy korzeń będzie taki : Root1(!) 2) Rozwijam Root1 i widzę, że jest coś potomnego Ax : Root1 |_Ax( !) |_Ay 3) Rozwijam Ax : Root1 |_Ax |_Bx1 |_Bx2(!) |_Bx3 |_Bx4 |_Ay 4) Ostatnio rozwijam Bx2, aby znaleźć docelowy węzeł Cx2: Root1 |_Ax |_Bx1 |_Bx2 |_Cx1 |_Cx2 (warunek spełniony) |_Bx3 |_Bx4 |_Ay Symbol **(!)** pojawia się tylko na najwyższym nierozwiniętym rodzicu i znika po rozwinięciu węzła, wskazując ścieżkę do zlokalizowania węzła docelowego Cx2. Ale chciałbym mieć jakiś pomysł, jak dodać wskaźnik węzła (!) w wydajny sposób. Muszę to zrobić w 2 krokach \- tworzenie drzewa \- rozwinięty węzeł W pierwszym przypadku, gdy tylko stworzę węzeł Cx2 i zauważę, że spełnia ten konkretny warunek, muszę umieścić wskaźnik na najwyższym nierozwiniętym węźle nadrzędnym. W drugim przypadku muszę dynamicznie zmieniać lokalizację wskaźnika, gdy węzeł jest rozwijany. Jaki jest najskuteczniejszy sposób, aby to zrobić?


title: Jaki byłby wpływ P=NP?

text: Przygotowuję się do testu i nie mogę znaleźć jednoznacznej odpowiedzi na pytanie: Jaki byłby wpływ udowodnienia, że PTIME=NPTIME. Sprawdziłem wikipedię i po prostu wspomniałem, że będzie to miało „głęboki wpływ na matematykę, sztuczną inteligencję, algorytmy…” itp. Czy ktoś może mi udzielić odpowiedzi?


title: Czy uruchamianie innego JavaScript dla IE jest uważane za złą praktykę?

text: Czy uruchamianie innego JavaScript dla IE jest uważane za złą praktykę (i jak złą)? Obecnie piszę trochę JavaScript, a najprostszym sposobem na obejście dziwactw IE wydaje się sprawdzenie wersji przeglądarki i uruchomienie innego kodu var browserName = navigator.appName; if (browserName == "Microsoft Internet Explorer") { //Zrób coś } else { //Zrób inne rzeczy } Jest szybki i działa dobrze, ale prowadzi do duplikacji kodu i wydaje się "hacky".


title: Business Objects - Kontenery czy funkcjonalne?

text: Jest to pytanie, które zadałem jakiś czas temu na SO, ale tutaj może być lepiej omówione... Tam, gdzie pracuję, poruszaliśmy się w tym temacie wiele razy i szukamy sprawdzenia zdrowia psychicznego. Oto pytanie: Czy obiekty biznesowe powinny być kontenerami danych (bardziej podobnymi do DTO), czy też powinny zawierać logikę, która może wykonywać pewne funkcje na tym obiekcie. Przykład — weźmy obiekt klienta, który prawdopodobnie zawiera pewne wspólne właściwości (nazwa, identyfikator itp.), czy ten obiekt klienta powinien zawierać również funkcje (zapisz, oblicz itp.)? Jedna linia rozumowania mówi, że oddziel obiekt od funkcjonalności (jednostka główna odpowiedzialność) i umieść funkcjonalność w warstwie lub obiekcie logiki biznesowej. Inny tok rozumowania mówi: nie, jeśli mam obiekt klienta, chcę po prostu zadzwonić do klienta.Zapisz i skończ z tym. Dlaczego muszę wiedzieć o innej klasie, aby zapisać klienta, jeśli korzystam z obiektu? W naszych ostatnich dwóch projektach oddzielono obiekty od funkcjonalności, ale debata została ponownie podjęta na temat nowego projektu. Co ma więcej sensu i dlaczego?


title: Jak wprowadzić chętnego managera do IT i web developmentu?

text: Po tym, jak doświadczyliśmy wielu problemów z kierownikiem naszego małego projektu (jesteśmy startupem, a on jako jedyny ma odpowiednie wykształcenie; reszta z nas to programiści), w końcu zidentyfikowaliśmy przyczynę naszych kłopotów: jego zrozumienie wewnętrznych prac naszego projektu jest ograniczona, podobnie jak jego zrozumienie normalnego przepływu pracy tworzenia oprogramowania. Wyraził chęć szybkiego uczenia się i wypełnienia tych luk; jednak tak naprawdę nie wiem, jakie książki, artykuły czy blogi mu polecić. Krótko mówiąc, czy możesz polecić dobrą lekturę osobie typu manager, która sama nie będzie programistą, ale musi rozumieć proces tworzenia aplikacji internetowych na tyle dobrze, aby zrozumieć nasze wyjaśnienia, kiedy o nie prosi? PS Nie, kopanie go i znalezienie innego menedżera nie wchodzi w grę w tej chwili.


title: Jak mogę zatrudnić programistę, który doda małą funkcję do projektu OSS?

text: Chciałbym dodać funkcję do Eclipse, jako małą wtyczkę, ale: * Jest trochę niszowa, więc nie jest duży popyt. Więc jeśli opublikuję to jako prośbę o nową funkcję, jest mało prawdopodobne, że będzie to kontynuowane. * Mimo to jestem pewien, że komuś innemu się przyda. * Jestem programistą, ale nie znam Java i uważam, że nie warto poświęcać czasu na naukę Java tylko po to, by to kodować. Jaki byłby dobry sposób na znalezienie programisty, który potrafiłby zakodować taką wtyczkę do środowiska Eclipse i zapłacić mu za wykonanie tej pracy? Mój przykład dotyczy konkretnie Javy i Eclipse, ale jaka może być ogólna odpowiedź na to pytanie?


title: Jak abstrakcyjna powinnaś uzyskać z BDD

text: Pisałem kilka testów w Gherkin (używając Cucumber/Specflow). Zastanawiałem się, jak abstrakcja powinnam uzyskać z moich testów. Aby nie uczynić tego otwartym, które z poniższych stwierdzeń jest lepsze dla BDD: Biorąc pod uwagę, że jestem zalogowany przy użyciu adresu e-mail admin@mycompany.com i hasła 12345 Kiedy coś robię Wtedy dzieje się coś w przeciwieństwie do Given jestem zalogowany jako Administrator Kiedy coś robię Wtedy coś się dzieje Powodem, dla którego jestem zdezorientowany, jest to, że 1 jest bardziej oparte na zachowaniu (wpisywanie e-maila i hasła), a 2 jest łatwiejsze do przetworzenia i napisania testów.


title: Zbliżanie się do wewnętrznych elementów Java/JVM

text: Programuję w Javie od około 8 lat i jako programista znam język dosyć dobrze, ale moim celem jest pogłębienie wiedzy o jej wnętrzu. Brałem udział w kursach licencjackich z projektowania PL, ale były to bardzo szerokie przeglądy akademickie (w Scheme, IIRC). Czy ktoś może zaproponować trasę, aby zacząć zagłębiać się w szczegóły? W szczególności, czy istnieją konkretne tematy (powiedzmy, zbieranie śmieci), które mogą być bardziej przystępne lub być dobrym punktem wyjścia? Czy istnieje przyzwoita książka wysokiego poziomu na temat wewnętrznych elementów JVM i projektowania języka programowania Java? Moim obecnym podejściem będzie rozpoczęcie od specyfikacji JVM i badań w razie potrzeby.


title: Znajdź wszystkie możliwe podtablice tablicy

text: Jestem zagubiony, po prostu nie mogę ogarnąć podejść cofania/rekurencji. Rozumiem, jak działają proste problemy rekurencji, takie jak silnia, mogę je nawet prześledzić ręcznie. Ale jeśli chodzi o problemy z wycofywaniem się, jestem bardzo zagubiony. Wciąż próbuje. minęło 5 godzin. Czytałem różne podejścia na forach i wymianie stosów, ale nic nie kliknęło. Na przykład powiedzmy, że mam tablicę z `[1,2,3,4]`, a moją wartością docelową jest `5`. Próbuję znaleźć wszystkie możliwe kombinacje, które są równe mojej wartości docelowej. Złamałem ten problem dalej, aby jeszcze bardziej ułatwić sobie zrozumienie. Najpierw mogę znaleźć wszystkie możliwe kombinacje tablicy, a następnie przekazać je do innej funkcji, która sprawdza, czy suma tej tablicy jest równa wartości docelowej i dopiero ją wypisuje. Czy ktoś może doradzić, jak do tego podejść? Nie szukam kodu/odpowiedzi. Chcę móc jasno myśleć i wyobrażać sobie to w mojej głowie.


title: Konsolidacja danych hoteli z różnych stron rezerwacyjnych o różnych identyfikatorach lub referencjach

text: W jednym z moich projektów mam dane dla hoteli, a inne strony rezerwacyjne są w stanie zarezerwować ten hotel. Na przykład: Hotel A - Rezerwacja (ID = 4002), Expedia (ID = 123), Priceline (ID = 147) Każdy z trzech systemów rezerwacji używa własnego identyfikatora w odniesieniu do Hotelu A. Musiałbym sprawdzić ręcznie i dokonać właściwe odniesienie do hotelu. Jeśli mam 100 000 hoteli, muszę ręcznie sprawdzić 300 000 (uwzględniając 3 strony rezerwacyjne)? Mogą udostępniać API, wtedy mogę sprawdzić nazwę, adres lub szerokość/długość geograficzną, ale jeśli trochę się różnią, mogę podać błędne odniesienie do niewłaściwego hotelu. Jestem pewien, że są na to lepsze sposoby. Istnieje wiele witryn turystycznych, które sprawdzają ceny hoteli w wielu witrynach rezerwacyjnych, ale jak to zrobić, aby upewnić się, że sprawdzają odpowiedni hotel na tych witrynach rezerwacyjnych? Czy ktoś ma w tym jakieś doświadczenie?


title: Strategia makiety dla Responsive Web Design (z punktu widzenia programisty)

text: Czy tworząc makiety dla projektów _Responsive Web Design_, mam je rozdzielać według **Strony** czy według **Rozmiaru ekranu**? Który byłby bardziej pomocny, gdy zacznę pisać kod źródłowy? Jakie są zalety i wady następujących elementów: * W oparciu o strony: Wszystkie makiety strony głównej na wszystkich różnych rozmiarach ekranu * W oparciu o rozmiar ekranu: Wszystkie strony o szerokości <= 960px Używam Balsamiq Mockups do tworzenia makiet i wolę do przechowywania wszystkich powiązanych makiet w pliku, takim jak `homepage, login` lub `960px, 768px`.


title: Jaka jest różnica między wzorem repozytorium a wzorem elewacji?

text: W moich aplikacjach zawsze używałem wzorca repozytorium. Ale widziałem, że wiele osób używa fasad zamiast repozytorium do konwencji nazewnictwa, ale myślę, że operacja jest taka sama. Dlaczego jest ta różnica? Czy jest między nimi prawdziwa różnica, czy nie?


title: Zrozumienie certyfikatów Microsoft SQL

text: Jestem po królewsku zdezorientowany certyfikatami, które Microsoft ma dla serwera SQL. Z tego, co mogę wywnioskować czytając ich stronę, jak i innych, są różne poziomy testów (jak na uniwersytecie) mają testy serii na poziomie 100, 200, 300... do około 400 dla nowego mistrza poziomu SQL Server . Chciałem znokautować kilku, ponieważ teraz wykonuję codzienną pracę z SQL, doszedłem do wniosku, że mogę ćwiczyć w pracy i uczyć się, gdzie mi się nie udaje. Gdzie zaczynam? Jakie testy i szczegóły testów muszę znać, aby przystąpić do każdego egzaminu i zdać go? w jakiej kolejności mam je przyjąć?


title: Gdzie najlepiej używać Smalltalk-80?

text: Chcę wiedzieć, w jakich aplikacjach/dziedzinie programowania są najbardziej odpowiednie dla Smalltalk. Czy ktoś mógłby mi podać kilka przydatnych linków, które mogłyby odpowiedzieć na moje zapytanie? Dzięki googlowaniu dowiedziałem się, że niektóre firmy używają go do: aplikacji dla logistyki i handlu zagranicznego pulpitu, tworzenia serwerów i skryptów przetwarzania i logistyki danych, skryptów i prezentacji, ale nie mogę znaleźć dokumentów/artykułów badawczych, które mogłyby mi powiedzieć, która domena programistyczna Smalltalk-80 (lub Smalltalk) najlepiej nadaje się. Niektóre z dziedzin programowania to: - Wnioskowanie o sztucznej inteligencji - Aplikacje ogólnego przeznaczenia - Analiza finansowych szeregów czasowych - Przetwarzanie języka naturalnego - Odpytywanie relacyjnych baz danych - Skrypty aplikacji - Internet - Matematyka symboliczna - Matematyka numeryczna - Zastosowania statystyczne - Przetwarzanie tekstu - Algorytmy macierzowe Mam nadzieję możecie mi pomóc. Robię to dla mojego studium przypadku. Z góry dziękuję.


title: Czy istnieje oficjalny format programowania?

text: Osoba może na swój sposób uczynić swój kod czytelnym i schludnym. Czy jednak istnieje standardowy format programowania, z którym są zgodni profesjonalni programiści?


title: Jaka część logiki biznesowej powinna istnieć w warstwie kontrolera?

text: Czasami mamy jakąś logikę biznesową reprezentowaną w kodzie kontrolera naszych aplikacji. Zwykle jest to logika, która odróżnia metody, które należy wywoływać z modelu i/lub jakie argumenty mają je przekazać. Innym przykładem tego jest zestaw funkcji narzędziowych, które istnieją w kontrolerze, które mogą działać w celu formatowania lub oczyszczania danych zwracanych z modelu, zgodnie z zestawem reguł biznesowych. To działa, ale zastanawiam się, czy to flirt z katastrofą. Jeśli istnieje logika biznesowa współdzielona między kontrolerem a modelem, dwie warstwy nie są już rozdzielne, a ktoś dziedziczący kod może być zdezorientowany tą nierówną lokalizacją kodu związanego z logiką biznesową. **Moje pytanie brzmi, ile logiki biznesowej powinno być dozwolone w kontrolerze i w jakich okolicznościach, jeśli w ogóle?**


title: Czym jest dzień oceny i jakiego rodzaju indywidualne i grupowe działania programistyczne są zaangażowane?

text: Jedyne, co wiem: * Dzień oceny to znacznie więcej niż zwykła rozmowa kwalifikacyjna. Właściwie 1 lub więcej wywiadów to tylko część tego. * W grę wchodzą zarówno indywidualne, jak i grupowe działania programistyczne. Jakieś pomysły, jakich działań programistycznych oczekiwać (najlepiej od osób, które brały już udział w dniu oceny)?


title: A co z tymi wszystkimi zasadami kodowania?

text: Zawsze popierałem ideę posiadania zasad kodowania dla programistów w firmie lub konkretnym projekcie. Zwłaszcza jeśli firma jest większa niż 10. Im większa firma, tym większe potrzeby. Wiem, że wiele osób się z tym nie zgodzi, ale widziałem projekty, które ich nie mają, a kod wygląda na totalną katastrofę. Prawdziwym problemem, który z tego wynika, jest to, jak sprawić, by te twarde hasła, które nie lubią używać nawiasów w instrukcjach if lub używać tego samego ciągu połączeń wszędzie w kodzie, lub cokolwiek innego, aby używały reguł kodowania bez sprzeciwiania się im pomysł?


title: Aplikacje Adobe Air w Mac App Store?

text: Zanim skarcisz mnie za to pytanie, mam aplikację Adobe Air, w którą zainwestowano wiele, i jeśli istnieje sposób na wykorzystanie istniejącej bazy kodu w _w jakikolwiek_ sposób, warto to rozważyć. Słyszałem doniesienia o tym, że Adobe tworzy narzędzie, które pozwala na przenoszenie aplikacji Flash lub Air do natywnego kodu Object-C, ale informacje znalezione w google to głównie komentarz do jednorazowej blokady Apple. Moje pytania są następujące: 1. Czy na dowolnym poziomie można użyć istniejącej aplikacji Air do utworzenia aplikacji Mac Store? 2. Jeśli to możliwe, jakich zasobów mogę użyć, aby to osiągnąć?


title: Jak zmotywować współpracowników do pisania testów jednostkowych?

text: Pracujemy nad dużym produktem, który jest w produkcji od około 5 lat. Baza kodu... erm... działa. Niezbyt dobrze, ale działa. Nowe funkcje są wprowadzane do produkcji i testowane przy niewielkiej kontroli jakości. Błędy są naprawiane itp. Ale nikt poza mną nie pisze testów jednostkowych. Nikt nie używa mocy "śledzenia" błędów poprzez pisanie testów jednostkowych, aby upewnić się, że ten specjalny błąd (przypadek testowy) nigdy, przenigdy się nie pojawi. Rozmawiałem z zarządem. Rozmawiałem z programistami. Rozmawiałem ze wszystkimi w całej firmie. Wszyscy mówią: „Tak, musimy napisać więcej testów jednostkowych!” To było około rok temu. Od tego czasu wymusiłem wprowadzenie pre-commit code review (Gerrit) i ciągłej integracji (Jenkins). Odbyłem kilka spotkań na temat testów jednostkowych i pokazałem również korzyści płynące z pisania testów jednostkowych. Ale nikt nie wydaje się być zainteresowany. **P1: Jak zmotywować moich współpracowników do pisania testów jednostkowych?** **P2: Jak utrzymać motywację do przestrzegania moich osobistych standardów jakości kodu?** (Czasami to naprawdę frustrujące!) PS : Niektóre frustrujące fakty (osiągnięte w 1 rok): * Całkowita liczba testów jednostkowych: 1693 * Całkowita liczba "przykładowych testów jednostkowych": około 50 * Wykonane przeze mnie: 1521 **Edytuj:** Czy oczekuję za dużo? To moje pierwsze miejsce pracy i staram się jak najlepiej. **Edytuj 2:** Na podstawie wszystkich odpowiedzi przygotowałem dla siebie małą listę kontrolną. Rozmawiałem prywatnie z dwoma programistami i odbyliśmy dobrą i szczerą rozmowę. Jeden z nich powiedział mi, tak jak powiedział Telastyn, że jest mu naprawdę niekomfortowo z testami jednostkowymi. Powiedział, że chciałby być „bardziej profesjonalny”, ale potrzebuje kopa. Powiedział również, że nasze spotkanie testowe ze wszystkimi programistami (około 9-11) było dobre, ale było zbyt tłoczno. Ech. Trochę krytyków dla mnie, ale nauczę się z tego. (patrz odpowiedzi poniżej dotyczące spotkań tdd kata!) Drugi powiedział, że nie jest zainteresowany pisaniem testów jednostkowych. Uważa, że jego praca wystarcza na jego pensję. Nie chce wkładać więcej wysiłku. Zaniemówiłem. Typowy „robotnik” 9-5. W przyszłym tygodniu mam zamiar porozmawiać z innymi programistami. Dziękuję za świetne odpowiedzi (jak dotąd!) i wsparcie. Bardzo to doceniam! Dużo się nauczyłem, bardzo dziękuję!


title: Sprzeczne wersje jQuery w oddzielnych rozszerzeniach

text: Zbudowałem kilka rozszerzeń przeglądarki, które działają w Gmailu. Ponieważ są to większe rozszerzenia, zawierają jQuery 1.6.x. Używam jQuery jako skryptu treści, co oznacza, że jest on wstrzykiwany do Gmaila, a następnie moje skrypty odwołują się do jQuery, gdy są ładowane później. Odkryłem, że gdy inne rozszerzenia są instalowane obok moich rozszerzeń i zawierają wcześniejsze wersje jQuery, wcześniejsze wersje są ładowane jako pierwsze, a moja wersja 1.6.x jest ignorowana. Funkcjonalność, którą mam, która zależy od 1.6.x, już nie działa, a to jest przełom. Staram się wymyślić na to eleganckie rozwiązanie. Moim pierwszym odruchem jest użycie przestrzeni nazw w mojej wersji jQuery, ale dwukrotne ładowanie jQuery wydaje się niezgrabne. Prawdopodobnie testowanie pod kątem jQuery, a następnie robienie porównania, ale wydaje się to nudne. jakieś pomysły?


title: Zapewnienie udanych połączeń w Subversion

text: Subversion Reeducation właściwie mnie przekonało, ale na razie pozostanę przy svn - opanowanie posługiwania się bardzo popularnym narzędziem nie może być złe. Do tej pory nie używałem branching/merges w kodzie produkcyjnym, teraz postanowiłem spróbować w środowisku małego zespołu. Boję się cierpienia z powodu bólu opisanego w artykule Spolsky'ego. **Czy istnieje „właściwy” sposób pracy z oddziałami w svn?**


title: Dlaczego Perl jest tak intensywnie używany w Bioinformatyce?

text: Co takiego jest w Perlu, że jest tak użyteczny w Bioinformatyce? Dlaczego C++, Matlab czy Python nie są wielkim językiem?


title: Aplikacja monitorująca: po stronie klienta czy po stronie serwera?

text: Mam aplikację sieci web monitorowania, która ma backend .Net i nakładkę Silverlight. Aplikacja przetwarza duże porcje danych, przetwarza je i prezentuje użytkownikowi. Następnie użytkownik może wchodzić w interakcję z danymi, aby zobaczyć różne wykresy dziennika. Może odznaczyć wymiary, pogrupować niektóre wartości, wybrać wskaźniki, takie jak liczba transakcji, kwota transakcji (dolary) itp. Obecnie łączę dane dziennika w 3-minutowe porcje. Następnie wyszukaj go i wyślij do klienta. Przy tej surowej formie danych jej rozmiar jest zoptymalizowany pod kątem sieci. Po stronie klienta mam dużo logiki biznesowej, aby przetwarzać te dane do prezentacji. Również, gdy użytkownik zmienia opcje, po stronie klienta przetwarza dane zgodnie z wyborami użytkownika. Wybraliśmy tę ścieżkę, aby obsługiwać tę aplikację tylko z jednego serwera. Nie musimy skalować się z ilością użytkowników w firmie, bo wszystko dzieje się po stronie klienta. To dobrze, ale poświęcamy wydajność. Jestem naprawdę ciekaw, co się stanie, jeśli zdecyduję się wykonać wszystkie obliczenia dla wyborów użytkownika na surowych danych po stronie serwera. - Czy będzie szybciej? -Czy muszę natychmiast skalować? - Czy pobieranie danych tylko raz na serwer, a następnie buforowanie ich jest czymś w rodzaju redis niż wykonywanie obliczeń zgodnie z żądaniami użytkownika, lepszym rozwiązaniem? -Jeśli podejście po stronie klienta jest dobre, czy muszę przełączyć się na frameworki MVC po stronie klienta JavaScript i JavaScript, takie jak AngularJS? I naprawdę nie wiem w tej chwili, jak napisać całą moją logikę biznesową w JavaScript. **Dodatkowe informacje** Przeciętny komputer stacjonarny ma 2 GB pamięci RAM i dwurdzeniowy procesor, który stanowi podstawę dla duetu. Nasze serwery znajdują się w klastrze VM. Mają skalowalny RAM min 8GB. I 8-rdzeniowy procesor xeon. Może z niego korzystać 100-150 jednoczesnych użytkowników. Każdy użytkownik może wykonywać różne manipulacje na danych. Dlatego wszyscy mają własne dane po stronie klienta. Dziękuję


title: Jak podszedłbyś do opracowania Systemu Rezerwacji Hoteli?

text: Do tej pory miałem doświadczenie w tworzeniu aplikacji desktopowej lub strony internetowej. Ale dzięki temu systemowi rezerwacji hoteli mam do czynienia z problemem, który wymaga obu. Aplikacja musi spełniać następujące wymagania: * Menedżer może dokonywać rezerwacji/kasy przychodzących klientów w systemie kasy recepcyjnej. * Klienci powinni mieć możliwość samodzielnej rezerwacji online. Jak widać, drugie wymaganie wyraźnie oznacza, że wymagana jest aplikacja internetowa, podczas gdy pierwsze można zrealizować poprzez programowanie na komputery stacjonarne. Ten typ wymagania jest dość powszechny. Podobnie jak w przypadku rezerwacji miejsc w kinie, możemy zarezerwować sobie przez internet lub wejść do kasy i kupić bilet. Pytanie brzmi, w jaki sposób te jednoczesne i różne wymagania są spełnione dla jednego projektu. Musi być synchronizacja, w przeciwnym razie klient może zarezerwować sobie już zarezerwowany pokój. Z mojego rozumienia są dwa sposoby na opracowanie tego rozwiązania. 1. Tworzysz aplikację internetową z zapleczem (panel administracyjny) i hostujesz ją na serwerze. Klienci mogą samodzielnie dokonywać rezerwacji na froncie, natomiast kierownik (w recepcji) może korzystać z panelu administratora do realizacji swoich rezerwacji i kas. Ponieważ zarówno fronton, jak i zaplecze korzystają z jednej bazy danych, synchronizacja nie jest wymagana. 2. Stworzyć aplikację desktopową do użytku w Hotelu oraz stronę internetową, na której klienci będą mogli dokonywać rezerwacji online. Obie aplikacje utrzymują jedną bazę danych, dlatego w grę wchodzi synchronizacja. Pewne definitywne opracowanie synchronizacji jest obowiązkowe, w przeciwnym razie system ulegnie awarii. Które z powyższych rozwiązań powinienem wybrać?. To również częsty scenariusz dla banków. Obsługują transakcje zarówno w oddziale lokalnym, jak i przez Internet. Jak oni to osiągają. Podobnie jak wspomniałem powyżej lub coś innego.


title: Czy klient w jakikolwiek sposób skorzysta z DVCS?

text: Niektórzy z nas mogą powiedzieć, że Rozproszony System Kontroli Wersji (np. Mercurial, git) będzie miał pozytywny wpływ na programistów tylko z samego doświadczenia z jego użyciem (w odpowiednich warunkach: wyższa produktywność, wyższa stabilność kodu itp.), ale w jakich sytuacjach klient ( **tj. obserwator wyniku cyklu życia oprogramowania** ) może stwierdzić, że istnieje różnica między używaniem CVCS i DVCS?. Każdy, kto ma empiryczne dowody na to, że klient „odczuwa” różnicę po przyjęciu DVCS, dostaje duże ciastko z podwójną czekoladą z bitą śmietaną i wisienką na wierzchu. Uwaga: „powiedz różnicę” nie oznacza „wiem, że był zaangażowany DVCS”, ani nawet zdalnie „wiedzieć, co to jest DVCS”


title: Czy istnieje specjalna nazwa warunku, który przerwie pętlę, jeśli zwiększy się określoną liczbę razy?

text: Czy istnieje nazwa umieszczania ograniczenia w strukturze pętli, aby zapobiec jej uruchomieniu, jeśli jej podstawowy warunek stanie się nieporęczny. Na przykład for (var i = 0; i < len; i++){ some_function(); } ale jeśli len jest gdzieś ustawione na dziesięć milionów, nie chcę go uruchamiać, więc zrobiłbym coś takiego: for (var i = 0; i < len && i < 50; i++){ some_function(); } Czy istnieje nazwa tego typu warunku zakodowanego na sztywno?


title: Dlaczego rozszerzanie prototypów DOM/wbudowanych obiektów to zły pomysł?

text: Szukam ostatecznej odpowiedzi na pytanie, dlaczego rozszerzanie wbudowanych prototypów jest tak mocno karane w społeczności programistów JS. Od jakiegoś czasu używam frameworka Prototype JS i wydaje mi się, że robienie `[1,2,3].each(doStuff)` wydaje się o wiele bardziej eleganckie niż `$.each([1,2,3], doStuff )”. Wiem, że powoduje to „zanieczyszczenie przestrzeni nazw”, ale wciąż nie rozumiem, dlaczego uważa się to za coś złego. Czy jest też jakaś realna degradacja wydajności związana z rozszerzaniem wbudowanych prototypów? Dziękuję!


title: Jak rozpowszechniać wśród członków zespołu świadomość programowania generycznego?

text: Pozostaję w środowisku, w którym ludzie wierzą: 1. Generyki Java są funkcją używaną wyłącznie do pisania w bibliotekach, a nie do prawdziwego kodowania. 2. C++ to język programowania OO; `szablon` jest opcjonalną i możliwą do uniknięcia funkcją Chociaż ci ludzie w dużym stopniu polegają na bibliotekach napisanych przy użyciu programowania generycznego (np. STL, kontenery Java). Jeśli piszę kod używając `szablonu` lub `generics`, recenzent kodu najprawdopodobniej go odrzuci i skomentuje go w **_"właściwy / zrozumiały / elegancki"_** sposób. Taka mentalność ma zastosowanie od zwykłego programisty do najwyższego menedżera. Nie ma wyjścia, bo w 90% przypadków ci ludzie mają swój lobbing. Jaki jest najlepszy sposób ( _nie podcinanie gardła_ ) ich wyjaśnienia, praktyczne podejście do pisania kodu, który stanowi jednocześnie OO i programowanie generyczne?


title: Skąd wiesz, czy powinieneś używać jednostek samośledzących lub DTO/POCO?

text: Jakie pytania mogę sobie zadać na temat naszego projektu, aby określić, czy powinniśmy używać w naszej aplikacji DTO lub jednostek samośledzących? Oto kilka rzeczy, które warto wziąć pod uwagę: * Mamy standardową aplikację wielowarstwową z klientem WPF/MVVM, serwerem WCF i bazą danych MS SQL. * Użytkownicy mogą definiować własny interfejs, więc dane potrzebne z usługi WCF zmieniają się w zależności od tego, jaki interfejs zdefiniował dla siebie użytkownik * Modele są używane zarówno po stronie klienta, jak i po stronie serwera do walidacji. Nie będziemy wiązać bezpośrednio z DTO lub STE * Niektóre modele zawierają właściwości, które w razie potrzeby są ładowane z opóźnieniem z usługi WCF * Istnieją kontrole uprawnień po stronie serwera, które wpływają na sposób zwracania danych. Na przykład, niektóre dane są częściowo lub całkowicie maskowane w zależności od roli użytkownika * Nasze zasoby są ograniczone (czas, siła robocza itp.) Jak więc określić, co jest dla nas właściwe? Nigdy wcześniej nie używałem EF, więc naprawdę nie wiem, czy STE są dla nas odpowiednie, czy nie. Widziałem ludzi sugerujących rozpoczęcie od STE i wdrażanie DTO tylko wtedy, gdy stanie się to problemem, jednak obecnie mamy DTO na miejscu i próbujemy zdecydować, czy użycie STE ułatwiłoby życie. Jesteśmy na tyle wcześnie w procesie, że zmiana nie byłaby wielkim problemem, ale nie chcę przechodzić na STE tylko po to, aby dowiedzieć się, że to nie działa dla nas.


title: Jak przekonwertować programator kopiuj/wklej/spaghetti, aby zobaczyć światło?

text: To pytanie zostało zainspirowane tym. Chociaż to drugie pytanie zostało uznane za zlokalizowane, uważam, że podstawowy problem jest czymś niezwykle powszechnym w naszej branży. Wiem, że jest kilku programistów, którzy to przeczytają i pomyślą, że to wymyślam, a potem mogą odpowiedzieć, że wszyscy dbają o swoją pracę i chcą się uczyć, ale wystarczy spojrzeć na inne posty Programistów SE (przykład), Wiem, że to nie jest uniwersalna prawda. Załóżmy więc, że masz w zespole kogoś (a może większość), którego standardową procedurą operacyjną jest kopiowanie/wklejanie i kto wierzy, że wszystko można rozwiązać, jeśli tylko dodasz wystarczającą liczbę wywołań funkcji i zmiennych. Ta osoba nigdy nie słyszała o TDD, DRY lub SOLID, a poza 40 godzinami pracy, kiedy jest zajęta pracą, ani razu nie przeczytała ani jednej metodologii/praktyki/książki projektowej. W przeszłości pytałem (i innych) jak uczyć OOD. Ale teraz myślę, że to nie jest właściwe pytanie. Prawdziwe pytanie brzmi: jak podejść do takiej osoby/zespołu i zaciekawić ich, jak lepiej robić rzeczy? Jak inspirujesz ich do nauki? Bez tego wydaje się, że całe nauczanie, spotkania, wykłady, dyskusje są bezużyteczne, jeśli są całkowicie zadowoleni z powrotu do biurka i robienia tego, co zawsze robili. Pracuję z taką grupą ludzi. W rzeczywistości są to dość bystre jednostki, ale nienawidzę, gdy słyszę: „Skończyłem kodować, wystarczy dokonać refaktoryzacji i podzielenia na wiele klas, aby DXM był szczęśliwy”. Nie refaktoryzują w celu uzyskania czystszego, czytelnego i łatwego w utrzymaniu kodu, ale tylko dlatego, że w przeciwnym razie zostaną zbesztani. Wiem, że potrafią się uczyć, tylko wydaje się, że generalnie brakuje motywacji. Kiedy dostarczam pracę, generalnie ma o wiele mniej błędów, a praca, którą posiadałem, nigdy nie stała się potwornością 5000 linii klasy. Inni komentowaliby w stylu: „Twój kod jest znacznie czystszy i czytelny niż nasze rzeczy”, więc widzą różnicę. Ale jednocześnie czuję, że wierzą, że otrzymują wynagrodzenie za 40 godzin bez względu na to, co robią, więc tak naprawdę nie mają nic przeciwko, jeśli spędzą 3 pełne dni w kontroli jakości, szukając błędu, którego nie należy wprowadzać w pierwsze miejsce. Albo, że modyfikacja jednej klasy zajmuje tydzień, ponieważ jest tak wiele zależności, których w końcu dotykają. Jednak „może ta klasa powinna być napisana inaczej” nigdy nie wydaje się pojawiać. Czy w takich sytuacjach można coś zrobić? Czy komuś się udało? A może najlepiej jest odizolować takie nastawienie do niekrytycznych części projektu i zminimalizować szkody? **UWAGA:** Kiedy mówię „brak motywacji”. Nie sądzę, że to brak motywacji do pracy lub dobrej pracy, bo po prostu przestali się opiekować. Większość naszego zespołu jest wręcz przeciwna. Zdecydowanie dbają o produkt. Mamy ludzi, którzy będą pracować w nocy iw weekendy. Część, przez którą staram się przejść, to poprawa nawyków i umiejętności, które właściwie nie musiałyby tak dużo pracować. Myślę, że to „40 godzin” sprawiło, że ten post brzmiał trochę zbyt negatywnie.


title: Scalanie funkcjonalności z dwóch kontrolerów; czy powinienem umieścić wszystkie akcje w jednym kontrolerze?

text: Powiedzmy, że mam 2 kontrolery, `OrderController` i `StatusController`. `OrderController` ma kilka akcji CRUD dla zamówień, a `StatusController` ma kilka akcji związanych ze zmianą statusu zamówień (od utworzonych do wysłanych, anulowanych itp.). `StatusController` ma tak naprawdę tylko jeden widok, w którym można wykonać kilka akcji, ale ze względu na użyteczność zdecydowałem się połączyć funkcjonalność tego jednego widoku z akcją indeksu `OrdersController`. (To jest tylko przykład dostosowany do pytania, więc bądź ze mną cierpliwy, jeśli brzmi to głupio). Tylko kopiując/wklejając kod HTML w widokach stąd do tego miejsca wszystko działa oczywiście, ale... Co mam zrobić z akcjami na `StatusController`? Czy powinienem przenieść je do `OrderController` czy też pozwolić `StatusController` istnieć, nawet jeśli nie ma widoków? Myślę, że może to być lepsze niż posiadanie „OrderController” z 15 akcjami, ale czy jest to pożądane? Czy w takim przypadku istnieje zalecana dobra praktyka/podejście?


title: Planowanie zadań dla rozwoju oprogramowania

text: Zarządzam zespołem 10 programistów i szukam narzędzia do planowania/przypisywania zadań. Wyobrażam sobie dość proste narzędzie internetowe, do którego loguje się każdy programista. Tutaj mogą zobaczyć listę przypisanych im zadań. Dla każdego zadania byłoby jasne, jak długo zostało przydzielone (liczba godzin lub dni) i kiedy powinno zostać zrealizowane. Drążenie w zadaniu ujawniłoby wszelkie powiązane uwagi/specyfikacje, a każde zadanie byłoby powiązane z klientem i projektem. Każdy programista „podpisywał” zadanie po zakończeniu. Istnieje interfejs administracyjny do zarządzania użytkownikami, klientami, projektami i zadaniami. Czy dostępne jest bezpłatne narzędzie, które zapewnia tę podstawową funkcjonalność? Oczywiście moglibyśmy napisać własne w stosunkowo krótkim czasie, ale chciałbym wiedzieć, czy istnieją już jakieś (najlepiej open source) narzędzia, z których ludzie mają doświadczenie.


title: Przepływ pracy w Git dla wielu zespołów

text: Zaczniemy używać Git (jeszcze go nie używam) i chcę zdefiniować przepływ pracy. Mamy 4 zespoły w 4 różnych lokalizacjach na całym świecie, które wspólnie opracowują ten sam produkt. Każdy zespół jest właścicielem części kodu produktu, ale czasami musi również dokonać zmian w kodzie posiadanym przez inne zespoły. Czy istnieje zalecenie dotyczące przepływu pracy Git dla takiego środowiska? Widziałem już ten artykuł, ale podejście tutaj brzmi: „tworzymy dodatkowe gałęzie tak rzadko, jak to możliwe”, a bardziej wierzę w podejście „gałąź dla każdego user story”. Również ten artykuł przedstawia miłe podejście. Miałem na myśli posiadanie gałęzi głównej, gałęzi stałej na każdy zespół, która okresowo łączy się z gałęzią główną, oraz gałęzi na historię użytkownika, która łączy się z gałęziami zespołów. Czy to ma sens, czy nie zadziała?


title: Wydajny + rozszerzalny sposób przechowywania/odwoływania się do znormalizowanego zestawu „przyczyn”?

text: Szukam dobrego sposobu na zdefiniowanie i przechowywanie odwołań do znormalizowanego zestawu "przyczyn". Mam dobrze zdefiniowany zestaw powodów (krótkie, opisowe ciągi), dlaczego pewne obiekty są tworzone i utrwalane, i potrzebuję wydajnego sposobu przechowywania referencji do nich. Potrzebuję również elastyczności, aby w przyszłości dodawać nowe powody. Aha, i muszę to zaimplementować w sposób, który zadowoli zarówno programistów, jak i użytkowników baz danych :) Trochę kontekstu: Pracuję z aplikacją Rails i relacyjną bazą danych. Istnieją „zdarzenia” i „płatności” (a także wiele innych modeli). Tworzona „płatność” powinna zawierać odniesienie do związku przyczynowego. Podobnie, gdy „zdarzenie” jest anulowane, powinno odwoływać się do przyczyny anulowania. W przypadku anulowanego zdarzenia bieżąca implementacja przechowuje indeks przyczyny, pobrany z tablicy możliwych przyczyn zdefiniowanych w modelu `Event`. Niejawnym (i prawdopodobnie nierozsądnym) założeniem jest to, że tablica nie zmieni się w sposób, który złamałby odwołanie. Ponadto w innych modelach występuje pewne nakładanie się z podobnymi „tablicami przyczyn”. Próbując znormalizować sposób, w jaki przechowujemy dane „przyczynowości”, zbudowałem model „Causation” i towarzyszącą mu tabelę. Wpisy w tabeli „przyczyny” tworzą unikalną listę przyczyn, do których można się odwoływać za pomocą id z dowolnego innego modelu. Wadą jest to, że za każdym razem, gdy chcemy zdefiniować nową „przyczynę”, musimy dodać ją do bazy danych, zanim będziemy mogli się do niej odwołać. Jest to trochę kłopotliwe, zwłaszcza przy wdrażaniu w środowiskach testowych, ale może to tylko cena, jaką płaci się za wymuszoną normalizację? Współpracownik zasugerował przeniesienie definicji do samego modelu „Causation”, zamiast przechowywania ich w bazie danych, i zastanawiam się, czy jest to dobry środek między zbyt kruchym/zdezorganizowanym oryginalnym kodem a moim własnym niewygodnym/ograniczającym rozwiązaniem. Może coś takiego: module Causation module Refund UNHAPPY_CUSTOMER = 175 UNUSED_SUPPLIES = 192 end module Fee SHIPPING = 214 EXTRA_FOOD = 294 end MAPPINGS = { Refund::UNHAPPY_CUSTOMER => "Klient był niezadowolony", Refund::UNUSED_SUPPLIES => zwrócono", Opłata::SHIPPING => "Koszt wysyłki", Opłata::EXTRA_FOOD => "Zamówione dodatkowe jedzenie" } end payment.causation_int = Przyczyna::Refund::UNUSED_SUPPLIES payment.save ... Przyczyna::MAPPINGS[płatność .causation_int] => "Zwrócono dodatkowe/niewykorzystane zapasy" Po absurdalnych liczbach widać, że nie wymyśliłem eleganckiego sposobu na zapewnienie wyjątkowości i zapobieganie kolizjom. Zauważysz też, że muszę mieć możliwość grupowania przyczyn w kategorie. Czy podejście oparte na module przestrzeni nazw jest lepszym sposobem na przejście (i czy istnieje sposób na uniknięcie używania „magicznych liczb”, jak powyżej), czy też powinienem pozostać przy implementacji bazy danych? A może jest coś lepszego niż jedno z nich?


title: Knockout niestandardowy moduł obsługi wiązania tekstu

text: Stworzyłem ten niestandardowy program obsługi wiązania: ko.bindingHandlers.line = { update: function (element, valueAccessor, allBindings) { // Najpierw pobierz najnowsze dane, z którymi jesteśmy związani var value = valueAccessor(); // Następnie, niezależnie od tego, czy dostarczona właściwość modelu jest obserwowalna, pobierz jej bieżącą wartość var valueUnwrapped = ko.unwrap(value); // Teraz manipuluj elementem DOM if (valueUnwrapped) { $(element).after('<br />'); // Niewidoczny element } return ko.bindingHandlers.text.update(element, function() { return valueUnwrapped; }) } }; Zastanawiam się nad częścią, w której robię `ko.bindingHandlers.text.update`, czy jest lepszy sposób na rozwiązanie tego? Pytanie brzmi: czy jest to jedyny sposób na zaktualizowanie DOM za pomocą ko.bindingHandler.text.update, czy jest jakiś prostszy sposób na zrobienie tego?


title: Jeśli wszyscy myślą, że PHP jest do bani, dlaczego nikt nie próbuje go naprawić?

text: Jestem junior web developerem na pierwszych etapach kariery zawodowej. Zaczynam od utrzymania projektów napisanych w PHP. Gdziekolwiek spojrzałem, widzę ludzi, którzy mówią, że PHP to zły język i jest zepsuty na wiele sposobów, ale jest teraz tak powszechnie używany i nie możemy po prostu zmusić wszystkich do przejścia na coś innego. Dlaczego więc ludzie nie próbują tego naprawiać? Czy to z powodu PHP? Główny zespół programistów? Ludzie po prostu mieli dość i próbowali użyć czegoś innego? Proszę, nie zrozum mnie źle. Nie staram się być niegrzeczny, chcę tylko znaleźć odpowiedzi. :-)


title: Czy mogę słusznie uznać to za swój własny projekt, jeśli otrzymałem pomoc online?

text: Zasadniczo jestem nowy w programowaniu sieciowym w Pythonie, więc poszedłem na samouczek online, aby się o tym dowiedzieć. Korzystając z tego, czego nauczono w samouczku (tworzenie gniazda, podłączanie do portów itp.), zmodyfikowałem kod tak, aby stworzyć program, w którym dwa komputery mogą wysyłać do siebie wiadomości. Jeśli miałbym ubiegać się o pracę i pokazać to moim ankieterom, czy kod byłby technicznie mój? Można śmiało powiedzieć, że nie zmodyfikowałem kodu aż tak bardzo; Co jednak, gdybym na przykład zmodyfikował go w coś w rodzaju gry w kółko i krzyżyk, w której dwóch użytkowników gra ze sobą na różnych komputerach, czy kod byłby wtedy mój? Po prostu nie chcę wyglądać jak plagiat, dlatego pytam.


title: Czy istnieje jakiś praktyczny algorytm/struktura danych, których nie można wykonać za pomocą nierekurencyjnego rachunku lambda rozszerzonego o foldl?

text: W moich poszukiwaniach praktycznego nieturingowego kompletnego języka programowania zwracałem uwagę na rachunek lambda z niedozwolonym samoaplikacją - czyli zakazem `x x`. Po przejęciu tego języka i rozszerzeniu go o listy oraz operacje `foldl` i `range`, praktycznie każdy algorytm, który do tej pory wypróbowałem, jest możliwy do zaimplementowania. Zaimplementowanie `filtra`, `reverse`u, `head`, `tail`, `map`, `scanl`, `zip` i wielu innych jest trywialne - foldl zastępuje rekurencję. Czy potrafisz myśleć w jakimś praktycznym, ważnym algorytmie, który byłby niewykonalny w tym języku? > To nie przypadek, że wszyscy stosują samoaplikację — zastosowanie wyrażenia do siebie. To dzięki samoaplikacji powtarzalne > obliczenia mogą być symulowane w rachunku lambda. Rzeczywiście, trzeci z poprzednich trzech przykładów jest sławny, ponieważ może kodować rekurencyjne definicje funkcji. Z http://people.cis.ksu.edu/~schmidt/705s13/Lectures/ch6.pdf .