title: Refaktoryzacja rozbudowanej architektury wiadomości

text: Obecnie pracuję z systemem, który działa jak magistrala wiadomości. Do usługi pojawia się komunikat (hostowana usługa systemu Windows WCF). System następnie używa wzorca lokalizatora usług, aby sprawdzić, który dynamicznie ładowany zespół zostanie przypisany do wiadomości. Zestaw zostaje znaleziony, a następnie wykonywana jest metoda obsługująca komunikat. Odpowiedź jest następnie odsyłana do klienta. Problem polega na tym, że baza wiadomości rośnie, podobnie jak powiązane z nimi wtyczki. I jest dużo powielania kodu. Podam kilka przykładów: > 1. GetOrderMessage > 2. GetExpiredOrderMessage > 3. GetOrderMessageByCustomerId > 4. Get_something_related_to_order_Message itp., itd... > Jak widać, komunikaty są bardzo specyficzne. Same wiadomości są prostymi kontraktami danych i nie zawierają żadnej logiki biznesowej. Oprócz tego istnieje wtyczka dla niektórych z tych wiadomości, która obsługuje tylko jedną wiadomość. Dlatego istnieje prawie wtyczka dla każdego typu wiadomości!! Wydaje się, że system obsługuje relację jeden-do-wielu dla wiadomości/wtyczki, ale wygląda na to, że wszystkie implementacje są jeden-do-jednego. Jak mogę je zmienić, aby zmniejszyć powielanie kodu i uczynić system inteligentniejszym? Chciałbym, aby kod był łatwiej przyswajalny dla programistów, ponieważ dużo się duplikuje. (Ze względu na pewne ograniczenia nie mogę używać ORM do dostępu do danych/tworzenia encji) W odpowiedzi na poniższy komentarz Roberta Harveya chciałbym wyjaśnić, co następuje: W 99% przypadków warstwa wtyczek jest po prostu zawijanie połączenia dostępu do danych. Oto jak to może wyglądać. Żądanie GetOrderMessage -> Order Plug-in -> Order Data Access (ADO.NET, ręczna procedura składowana usp_GetOrder) -> wartość zwracana z Order Plug-in -> Odpowiedź GetOrderMessage zwracana do klienta


title: Większość frameworków php ścisłych MVC

text: Próbowałem owinąć głowę wokół wzorca MVC od około 6 miesięcy. Przeczytałem mnóstwo artykułów, pytań i odpowiedzi oraz postów na blogu o wzorcach MVC i HMVC, ale po prostu nie rozumiem tego w 100%. Próbowałem nauczyć się MVC, ćwicząc jeden z powszechnie stosowanych frameworków PHP MVC, CodeIgniter. Za jego pomocą wdrożyłem kilka wewnętrznych stron internetowych dla mojej firmy. I NADAL nie rozumiem tego w 100%. Uważam, że jednym z najlepszych sposobów na nauczenie się czegoś jest przestrzeganie ściśle określonych zasad. **Więc moje pytanie brzmi:** Jaki jest najbardziej rygorystyczny framework PHP pod względem implementacji wzorca MVC? Jeden, który definiuje, w jaki sposób używam modeli, kontrolerów i widoków, aby w pełni uzyskać to, czym jest MVC?


title: Czy mogę ubiegać się o pracę „inżyniera oprogramowania”, nie będąc inżynierem?

text: Pochodzę z kraju, w którym użycie słowa „inżynier” lub „inżynieria” jest ściśle regulowane przez prawo. Oznacza to, że musisz posiadać dyplom inżyniera ORAZ zdać egzamin, aby dołączyć do stowarzyszenia zawodowego inżynierów, aby móc używać tytułu. Jestem trochę zdezorientowany terminem „inżynier oprogramowania” używanym w branży na całym świecie. Przeczytałem stronę wikipedii na temat Inżyniera Oprogramowania i linkowaną sekcję strony dotyczącą użycia terminu, która oferuje dogłębną dyskusję. Jednak moje pytanie jest jakoś bardziej konkretne. Wiedząc, że nie mam dyplomu inżyniera (choć lubię myśleć, że tworzę funkcjonalne, dobrze zaprojektowane oprogramowanie!), kiedy widzę ofertę dla inżyniera oprogramowania z międzynarodowej firmy, czy byłoby właściwe, abym aplikował ? Czy powinienem jakoś podkreślić, że nie mam dyplomu inżyniera?


title: Jak wydajnie obsługiwać dane wejściowe bez frameworka?

text: Pracuję nad bardzo małym projektem, a mój projekt będzie wykorzystywał technologie takie jak JSP, serwlety i POJO. Zastanawiam się nad przepływem pracy, w którym strona JSP otrzyma dane wejściowe, a następnie prześle je do serwletu. Aplet miałby wtedy wiele pomocniczych POJO, które wykonałyby całą prawdziwą pracę. Jedną z rzeczy, które zauważyłem w tym podejściu bardzo wcześnie, jest to, że rozrosło się ono do ogromnej liczby stwierdzeń typu „jeśli to inaczej”. Czy istnieje lepszy sposób na osiągnięcie tego, co próbuję zrobić, bez konieczności uciekania się do struktury?


title: Możliwe rozwiązania udostępniania kopii roboczej projektu między wieloma komputerami?

text: Są więc 3 komputery, których używam do pracy nad tym projektem, mój domowy PC, służbowy PC i roboczy Mac (do budowania na urządzenia). Projekt ma repozytorium SVN, z którego korzysta dwóch innych programistów, więc nie mogę zatwierdzić do niego zepsutego kodu. Prowadzący nie wie, jak używać kontroli wersji, więc pień zawiera zasoby artystyczne i wszystko inne oprócz samego projektu, co sprawia, że rozgałęzianie jest niepraktyczne (a i tak nie chciałbym używać svn do rozgałęziania). Użyłbym GIT, gdybym mógł, ale to nie jest opcja. Moje pytanie brzmi: jak mogę iść do pracy, zaktualizować kopię roboczą, trochę nad nią popracować, wysłać ją na komputer Mac w celu zbudowania, a następnie wrócić do domu i popracować nad nią później - pamiętając, że mogę iść 1- 2 dni bez możliwości zatwierdzenia działającego kodu do repozytorium?


title: Czy mogę powiedzieć, że ASP.NET jest skompilowany?

text: Wiesz, że C# jest językiem skompilowanym. Ale kiedy tworzymy aplikacje webowe używamy ASP.NET + C#, czy w tym przypadku możemy powiedzieć, że ASP.NET jest skompilowany? Jeśli ASP.NET nie jest skompilowany, czy wpływa to na wydajność C#, gdy ASP.NET i C# działają obok siebie w celu tworzenia aplikacji internetowych?


title: Jak stworzyć prostą, ale złożoną warstwę biznesową?

text: Pracuję z dość złożoną aplikacją internetową. Jest podzielony na następujące warstwy: * Prezentacja - HTML * Warstwa usług - API REST i SOAP komunikujące się z warstwą biznesową * Warstwa biznesowa - Zawiera logikę biznesową. * Dostęp do danych — zapewnia dostęp do pamięci (SQL itp.) Warstwy biznesowe zawierają klasy obejmujące określone obszary, takie jak rejestracja klientów, zarządzanie użytkownikami i inne. Problem, który obserwujemy, polega na tym, że warstwa biznesowa zaczyna być nieco nieuporządkowana. Mamy jedną klasę zajmującą się zarządzaniem klientami, ale w miarę jak ten obszar aplikacji staje się coraz bardziej złożony, klasa rośnie i rośnie i staje się bałagan. Na przykład możemy mieć następujące klasy * class CustomerManager * void CreateCustomer(...) * void DeleteCustomer(...) * class UserManager * void CreateUser(..) * void DeleteUser(...) * void ActivateUser( ...) * void InactivateUser(...) * void ResetPassword(...) Tworzenie klienta wiąże się również z tworzeniem użytkowników. Tak więc CustomerManager wywołuje różne metody w klasie UserManager. Wraz z rozwojem aplikacji utworzenie nowego klienta oznacza, że należy wykonać około 10 różnych czynności poza rejestracją klienta w bazie danych, takich jak informowanie sprzedaży, rejestrowanie audytów, konfigurowanie domyślnych kont użytkowników, tworzenie domyślnej konfiguracji dla klienta, powiadamianie użytkownikom końcowym automatycznie generowanych haseł i nie tylko. Tak więc CustomerManager.CreateCustomer rośnie do ~100 linii dość włochatego kodu. Próbuję wymyślić dobry sposób na poradzenie sobie z tym, ale zakładam, że istnieje jakiś wspólny dobry sposób na zrobienie tego, o którym po prostu nie jestem świadomy. Rozważałem stworzenie klas „Task”/„Command” implementujących małe podprocesy, a następnie umożliwienie CustomerCreation.CreateCustomer wykonanie zestawu zadań. Miałbym więcej zajęć, ale każda z nich robiłaby mniej rzeczy. Zastanawiam się również nad wdrożeniem pewnego rodzaju globalnych systemów zdarzeń/wtyczek na poziomie aplikacji, w których CustomerManager.CreateCustomer po prostu tworzy klienta w bazie danych, a następnie publikuje zdarzenie, które jest tworzone przez klienta. Wtyczki/coś może następnie subskrybować te wydarzenia i robić takie rzeczy, jak informowanie o sprzedaży i rejestrowanie faktu. Korzystając z tej metody, nie musiałbym aktualizować CustomerManager.CreateCustomer, gdy chcę zrobić więcej rzeczy, które są dla mnie atrakcyjne. Jakiego oczywistego wzorca projektowego mi brakuje?


title: Jak edytować kod HTML witryny ASP.net?

text: Załóżmy, że jestem front-end developerem (HTML, CSS) A ktoś, kto zbudował swoją stronę w ASP.NET, przyszedł do mnie i poprosił o nowy projekt, a ja nie wiem o ASP.NET. W takim razie, jak mogę zmienić projekt ich strony internetowej bez wpływu na ich kod? Czy muszę nauczyć się trochę języków po stronie serwera, aby móc zmieniać wygląd witryn bez wpływu na oryginalny kod serwera?


title: co będzie wynikiem następującego kodu napisanego w „C”?

text: #include<stdio.h> void main() { char ***p="witaj"; printf("%c",++*p++); } Nie rozumiem koncepcji (*) pośrednich używa tutaj **trzy razy**. Kiedy skompilowałem ten program, wyjściem było „j”. Ale w rzeczywistości słyszę, że p jest wskaźnikiem do wskaźnika do wskaźnika do tablicy znaków. Więc dlaczego otrzymuję dane wyjściowe jako j. Nie rozumiałem, jaka za tym stoi logika. proszę pomóż mi zrozumieć faktyczną logikę, która się za tym kryje. a zamieszanie wzrasta bardziej, gdy używam tylko jednego pośrednika i jestem zgodny z programem . wtedy dane wyjściowe to i.means void main() { char *p="hello"; printf("%c",++*p++); } **to daje wynik jako i.** Jaka jest różnica między tymi dwoma programami?


title: Jaki jest najlepszy sposób przeprowadzenia audytu bezpieczeństwa?

text: Mam system uwierzytelniania (biblioteka ASP.Net), który chcę upewnić się, że jest bezpieczny. Z jakich firm/zasobów mogę się to upewnić? Ponadto, co powinienem zrobić przed wysłaniem go do „złamania”? Trochę więcej informacji: Zasadniczo chcę zarobić trochę pieniędzy sprzedając ten system, ale nie mam dużo do zainwestowania w niego (100-200 USD). Chcę się upewnić, że sprzedam coś bezpiecznego i że kupujący wiedzą, że jest to bezpieczne. Osobiście wielokrotnie przeglądałem kod, próbując znaleźć lukę w zabezpieczeniach i nie mogę jej znaleźć. To oczywiście nie znaczy, że nie ma takiego. W tym miejscu chcę zapłacić komuś, aby przyszedł i spojrzał na mój kod i jak to wszystko działa, i zasadniczo powiedział mi, czy jest bezpieczny, czy nie


title: Jakie ograniczenia nakłada JVM na optymalizację „tail-call”?

text: Clojure nie wykonuje samodzielnie optymalizacji tail call: kiedy masz rekurencyjną funkcję tail i chcesz ją zoptymalizować, musisz użyć specjalnej formy `recur`. Podobnie, jeśli masz dwie wzajemnie rekurencyjne funkcje, możesz je zoptymalizować tylko za pomocą `trampoliny`. Kompilator Scala jest w stanie wykonać TCO dla funkcji rekurencyjnej, ale nie dla dwóch wzajemnie rekurencyjnych funkcji. Ilekroć czytałem o tych ograniczeniach, zawsze przypisywano im pewne ograniczenia nieodłączne od modelu JVM. Nie wiem prawie nic o kompilatorach, ale to mnie trochę dziwi. Pozwolę sobie wziąć przykład z `Programming Scala`. Tutaj funkcja def przybliżona(zgadnij: Double): Double = if (isGoodEnough(zgadnij)) zgadnij inaczej przybliżona(improve(zgadnij)) jest tłumaczona na 0: aload_0 1: astore_3 2: aload_0 3: dload_1 4: invokevirtual #24; //Metoda jest wystarczająca:(D)Z 7: ifeq 10: dload_1 11: dreturn 12: aload_0 13: dload_1 14: invokevirtual #27; //Poprawa metody:(D)D 17: dstore_1 18: goto 2 Tak więc na poziomie kodu bajtowego wystarczy `goto`. W tym przypadku w rzeczywistości ciężką pracę wykonuje kompilator. > Jakie funkcje bazowej maszyny wirtualnej umożliwią kompilatorowi > łatwiejszą obsługę TCO? Na marginesie, nie spodziewałbym się, że rzeczywiste maszyny będą znacznie mądrzejsze niż JVM. Mimo to wiele języków, które kompilują się do kodu natywnego, takich jak Haskell, nie wydaje się mieć problemów z optymalizacją wywołań ogona (no cóż, Haskell może mieć czasami z powodu lenistwa, ale to już inna sprawa).


title: Co programista powinien wiedzieć o IIS i różnych protokołach (tcp, http itp.) podczas tworzenia aplikacji i usług internetowych itp.?

text: Często jednym z największych problemów podczas tworzenia oprogramowania (win i sieci) są niektóre z bardziej (pozornie) abstrakcyjnych obszarów, takich jak tcp/ip, wdrażanie do IIS i różne konfiguracje itp. To pojawia się szczególnie podczas wdrażania aplikacja sieci Web do usług IIS. Co powinienem o tym wiedzieć, aby móc rozwiązywać problemy oraz opracowywać usługi i aplikacje wykorzystujące rzeczywiste zrozumienie tych obszarów? Poza tym, GDZIE mogę się tego nauczyć??


title: W zwinnym rozwoju, kto jest właścicielem „funkcji” oprogramowania i jak zarządzać rozwojem?

text: Niektóre zespoły programistyczne w mojej firmie przechodzą na praktyki programistyczne Agile, a praca ich programistów wydaje się zmniejszać, aby omawiać i programować drobiazgi dotyczące trywialnych funkcji oprogramowania z powodu dwutygodniowych cykli iteracji. A także z powodu mentalności „każdy programista może naprawić każdy błąd”. Niedawno dołączyłem do jednego z tych zespołów, przenosząc się z innego zespołu w tej samej firmie... Jestem przekonany, że programiści powinni posiadać swoje funkcje oprogramowania od początku (projekt) do końca (wdrożenie i testy jednostkowe). Agile wydaje się być sprzeczne z tym myśleniem. Czy jest jakaś prawda w moim postrzeganiu, czy po prostu żyję złą implementacją Agile? Podczas naszych dwutygodniowych iteracji ludzie nieco arbitralnie otrzymują nowe małe funkcje i poprawki błędów, w zależności od obciążenia pracą w tym cyklu. Wydaje się, że nikt nie ponosi odpowiedzialności za główne funkcje oprogramowania. Spędzamy głupią ilość czasu na trywialnych rzeczach, takich jak dodawanie _pojedynczego_ przycisku do okna dialogowego w ciągu dwutygodniowej iteracji, wraz z historią, codziennym scrumem, przeglądem kodu itp. A więc w projektach Agile, jak zarządzać większymi funkcjami? Kto ponosi odpowiedzialność: poszczególni programiści czy cały zespół? Jak wydobyć się z drobiazgów i skupić się na celach długoterminowych? Każda informacja zwrotna byłaby cenna.


title: Narzędzie pomagające w estymacji

text: Szukam narzędzia wspierającego mnie w estymacjach. To, co chciałbym zrobić, to sprecyzować zadanie wyższego poziomu i rozbić je na kilka mniejszych zadań. Gdy zadanie jest wystarczająco małe, mogę wyznaczyć czas potrzebny na jego ukończenie. Suma tych kwantyfikatorów powinna pojawić się w zadaniach nadrzędnych. Można do tego użyć programu Project, ale IMHO to jakaś przesada ... Miło byłoby również, gdybyś mógł zrobić to jak mapowanie myśli, aby węzeł nadrzędny zsumował wszystkie swoje oszacowania potomne. Czy jest tam coś takiego?


title: Która licencja Open Source jest odpowiednia dla mojego projektu?

text: Opracowuję pakiet narzędzi programowych, z którymi potrzebuję pomocy, dlatego chcę wydać moje oprogramowanie o otwartym kodzie źródłowym. Ludzie powinni mieć możliwość używania i modyfikowania mojego kodu tak, jak im się podoba, jednocześnie przyczyniając się do mojego projektu. Docelowo narzędzia, które rozwijam, będą wymagały płatnej licencji komercyjnej, ale mogą być bezpłatne dla tych do celów niekomercyjnych. Ten pakiet oprogramowania będzie składał się głównie z wtyczek do witryn internetowych. Inne rozwijane przeze mnie narzędzia open source służą do konsultacji. Co sugerujesz jako licencję?


title: Jak ludzie utrzymują swój zestaw testów?

text: W szczególności ciekawią mnie następujące aspekty: 1. Skąd wiesz, że Twoje przypadki testowe są błędne (lub nieaktualne) i wymagają naprawy (lub odrzucenia)? Mam na myśli, że nawet jeśli przypadek testowy stał się nieważny, nadal może przejść i pozostać cichym, co może pozwolić ci fałszywie uwierzyć, że twoje oprogramowanie działa dobrze. Jak więc zdajesz sobie sprawę z takich problemów swojego zestawu testowego? 2. Skąd wiesz, że Twój zestaw testów nie jest już wystarczający i że należy dodać nowe przypadki testowe? Myślę, że ma to coś wspólnego ze zmianami wymagań, ale czy istnieje jakieś systematyczne podejście do sprawdzania adekwatności zestawu testów?


title: Entity Framework jako system sprawdzania/weryfikacji typów dla kodu bazy danych

text: Kiedy czytam listy pro i con korzystania z Entity Framework (lub naprawdę dowolnego nowoczesnego ORM), dziwi mnie, że nie pojawia się następujący punkt (sam cytuję): > czas, który zasadniczo przeprowadza weryfikację całej Twojej bazy danych > operacje. To jest coś, co nie jest możliwe w ADO.NET (czy to przy użyciu inline SQL, czy procedur składowanych). Dla mnie jest to jedna z największych zalet korzystania z ORM. Problemem, na który regularnie natykam się mając do czynienia z aplikacjami opartymi na ADO.NET, są błędy uruchomieniowe z SQL. Sprawdzanie statyczne całkowicie to eliminuje. Czy ktoś mógłby wyjaśnić, dlaczego nie jest to istotne dla wielu programistów? Wydaje się, że niektórzy nawet nie zgadzają się z powyższym stwierdzeniem. **Przykład niektórych zasobów pro i con:** * Entity Framework VS LINQ to SQL VS ADO.NET z procedurami składowanymi? (stackoverflow) * Pięć powodów używania narzędzia ORM * Dlaczego warto korzystać z Entity Framework? Tak, dlaczego dokładnie?


title: Jaki jest dobry sposób, aby program przetwarzał skrzynkę pocztową e-mail?

text: Miejmy program, który sprawdza skrzynkę pocztową, a następnie „przetwarza” zawarte w niej wiadomości. (W przypadku tego pytania tak naprawdę nie ma znaczenia, co faktycznie robi z wiadomością). Program będzie uruchamiany raz na godzinę iz łatwością poradzi sobie z dużą ilością nowych wiadomości i nie ma kary za dwukrotne przetworzenie wiadomości. Załóżmy, że będzie używał protokołu IMAP i może wykonywać dowolne standardowe funkcje, jakie może wykonywać aplikacja pocztowa. Jaki mechanizm poleciłbyś do przetwarzania wiadomości e-mail? * **Oznacz jako przeczytane** \- program oznacza wiadomość jako przeczytaną po jej przetworzeniu. * **Niezmodyfikowana skrzynka pocztowa** \- program w ogóle nie modyfikuje skrzynki pocztowej. * **Coś jeszcze** \- inna metoda, o której jeszcze nie pomyślałem. Sugestie mile widziane.


title: Czy możemy zapewnić funkcję logowania w wielu językach?

text: Moja nazwa użytkownika to krunal. A jeśli wpiszę swoje imię w dowolnym języku, takim jak gudżarati (કૃણાલ), hindi (कृनल) lub angielski (krunal) w polu tekstowym nazwy użytkownika, powinno mi to pozwolić na zalogowanie się bez konkretnego wyboru języka. Chcę tylko poznać opinie innych osób dotyczące tej funkcjonalności. Czy dobrze jest zapewnić taką funkcjonalność logowania?


title: Testowanie parami, nie można stwierdzić, które kombinacje są wadliwe?

text: Powiedzmy, że mam 4 parametry (A,B,C,D) z 3 możliwymi wartościami, również 81 unikalnych kombinacji. Z m.in. tablica ortogonalna, skończę z 9 przypadkami testowymi, z których każdy łączy 3 pary. Ale to oznacza, że jeśli jeden przypadek testowy zawiedzie, nie wiem, która kombinacja w przypadku testowym jest błędna, prawda? Czy wartości A,B, A,C lub BC. Chciałem się tylko upewnić, że dobrze to zrozumiałem. edycja: poprawione (dzięki GlenH7).


title: Zwrócić czy nie zwrócić temu klientowi?

text: Naprawdę byłbym wdzięczny za twoją radę w sprawie trwającego projektu. Przedstawiłem mojemu klientowi propozycję i próbki projektu, które zatwierdził, a on zapłacił w całości zamiast 50% zaliczki, ponieważ dałem mu hojną zniżkę. Potem powoli dostarczał mi część treści, ale kiedy to zrobiliśmy, spodziewał się, że strona internetowa zostanie natychmiast ukończona, co nie było możliwe. Ponieważ potrzebował go pilnie, uzgodniliśmy, że spróbujemy to zrobić około 10 dni roboczych po dostarczeniu zawartości, ale programista, który mi pomagał, zawiódł mnie. W następnym tygodniu sam ukończyłem stronę i wrzuciłem ją na serwer w piątkowe popołudnie. Następnie dzwoni i pisze do mnie w następną niedzielę, kiedy jestem w kościele, z informacją, że nie jest online (prawdopodobnie wystąpił problem z jego przeglądarką). Następnego ranka otrzymałem od niego e-mail z żądaniem pełnego zwrotu pieniędzy w ciągu dwóch dni, ponieważ nie mógł zobaczyć strony internetowej (mimo że była na żywo, a przetestowałem ją na wielu przeglądarkach, innym komputerze i moim telefonie), a on zadzwonił do mnie krzycząc na mnie, ponieważ nie miał do niego dostępu. W końcu, kiedy udało mu się uzyskać do niego dostęp, był niezadowolony z pewnych szczegółów dotyczących pokazu slajdów, który zacząłem poprawiać i który został zrobiony następnego dnia. Następnie skierował mnie na inną stronę internetową i powiedział, że chce, aby wyglądała podobnie, ale nie identycznie pod względem układu. Chciał też teraz dodać więcej funkcji, których nie było w pierwotnym projekcie. Zatrudniłem projektanta do pracy nad nowym projektem, który wysłałem do niego do przeglądu, który, jeśli zostanie zatwierdzony, zostanie ukończony do 15 października, a on zatwierdził go w zeszły czwartek. Następnie zadzwonił do mnie wczoraj, aby powiedzieć, że chce zmienić projekt - zatwierdził go tylko z niecierpliwości. Chce teraz, aby ta strona była bardziej podobna do innej strony, do której mnie polecił, i chce, żeby to było zrobione przed 15! Następnie mówi mi, że inni ludzie zrobili dla niego strony internetowe w trzy dni – strony, na które skarżył się na brak wymiarów, ponieważ były to tylko motywy premium, podczas gdy my projektowaliśmy i kodowaliśmy od podstaw. Zastanawiam się nad ukończeniem strony internetowej, ale zrefunduję mu pełną (lub przynajmniej zwrotną 50%) mniejszą rejestrację domeny i inne bezzwrotne kwoty, aby uniknąć dalszej eskalacji tej sprawy i kazać mu zadzwonić do mnie w przyszłym tygodniu i powiedzieć, że chce to zmienić ponownie. Poniżej znajdują się obowiązujące warunki określone w umowie: > 1. Całkowita kwota należna za ten projekt to Kwota A. > 2. Klient zapłaci Konsultantowi kaucję w kwocie B (50% całkowitej kwoty > należność za projekt) z góry przed rozpoczęciem jakichkolwiek prac w ramach Projektu. > 3. Saldo jest płatne w ciągu 7 dni roboczych od zakończenia projektu. > 4. Kaucja nie podlega zwrotowi. > 5. Jeśli klient zdecyduje się zamieszkać w innym miejscu, zostanie naliczona opłata za przeniesienie > Kwota C. > 6. Przewidywany czas realizacji projektu to 14 do 30 dni od daty > Klient dostarcza Konsultantowi Brief oraz wszystkie inne wymagane media i dane, pod warunkiem, że Klient dokonał płatności w celu zabezpieczenia projektu. > 7. Konsultant dołoży wszelkich starań, aby dotrzymać uzgodnionych terminów. Klient powinien mieć świadomość, że nieprzedłożenie wymaganych informacji lub materiałów, lub zmiany dokonane w ostatniej chwili i nadmierne zmiany mogą spowodować późniejsze > opóźnienia. Opóźnienia klienta mogą skutkować znacznymi opóźnieniami w dostawie > ukończonej pracy. > 8. Poważne zmiany w danych wejściowych klienta, kierunku lub briefie będą obciążone > normalnymi stawkami. > 9. Wszelkie prace, które Klient zleci Konsultantowi, a które nie są określone > w załączonej Ofercie będą traktowane jako usługa dodatkowa. > 10. Klient zgadza się zapłacić Konsultantowi wszelkie dodatkowe wydatki lub > dodatkowe usługi nie zawarte w załączonej wycenie i propozycji, jeśli > zażąda tego Klient. > 11. Zapis projektu strony internetowej w imieniu Konsultanta oraz link do > strony internetowej Konsultanta zostanie umieszczony w stopce ostatecznej Strony Internetowej. > 12. Każda ze stron może wypowiedzieć niniejszą Umowę w formie pisemnego > 7-dniowego wypowiedzenia drugiej stronie o takim wypowiedzeniu. > 13. W przypadku przełożenia lub zakończenia Pracy na żądanie > Klienta, Konsultant ma prawo do naliczenia proporcjonalnej kwoty > za pracę wykonaną do dnia tego żądania, z zastrzeżeniem wszystkich > praw wynikających z niniejszego Umowa. > 14. Jeżeli należna jest dodatkowa opłata, jest ona płatna w ciągu siedmiu dni > od pisemnego powiadomienia Klienta o przerwaniu pracy. W przypadku > wypowiedzenia, Klient pokryje również wszelkie wydatki poniesione przez Konsultanta > a Konsultant będzie właścicielem wszelkich praw do Dzieła. > Proszę o radę?


Tworzę aplikację wewnętrzną dla firmy, z którą mam kontrakt. W tej aplikacji chcemy używać biblioteki na licencji GPLv2. Kilka punktów 1. Aplikacja ma być używana w obrębie firmy i nigdy nie może być dostępna do użytku publicznego. Jest przeznaczony wyłącznie do użytku wewnętrznego firmy. 2. **Nigdy nie zostanie sprzedany!!**. Tak więc żadne pieniądze nie zostaną zarobione bezpośrednio na sprzedaży kodu. To nie jest produkt. 3. Istnieją dwie formy wykorzystania aplikacji * Jej natywna forma, czyli konsolowe exe (wykorzystujące bibliotekę GPL); oraz * Użycie za pośrednictwem interfejsu internetowego, który wywołuje plik wykonywalny. 4. Kod źródłowy pozostanie zamkniętym kodem źródłowym (tylko do użytku firmowego) i będzie poprawny. Przeszedłem przez wiele pytań na SO w tej sprawie (jedno zamknięte jako nie na temat i drugie nieoznaczone przez programistów), ale miałem trudności z zrozumienie, czy moja interpretacja licencji jest prawidłowa. Opierając się na moim dotychczasowym zrozumieniu, mogę bez obaw korzystać z tej biblioteki. Nie modyfikuję kodu źródłowego ani nie rozpowszechniam aplikacji ani nie udostępniam jej publicznie. **Aplikacja nie będzie sprzedawana ani rozpowszechniana nikomu spoza firmy** (będzie jednak dostępna w zewnętrznej placówce DR naszej firmy). Bardzo prawdopodobne, że użyję binariów wydanych wersji i nie będę ponownie kompilować ze źródeł. Poniższe pytanie z GNU FAQ wydaje się wspierać moje myśli. **Czy GPL wymaga, aby kod źródłowy zmodyfikowanych wersji był publikowany?** > GPL nie wymaga wydawania zmodyfikowanej wersji ani żadnej jej części. Możesz dokonywać modyfikacji i używać ich prywatnie, > nigdy ich nie publikując. **_Dotyczy to organizacji (w tym firm), > również; organizacja może stworzyć zmodyfikowaną wersję i używać jej wewnętrznie > bez wydawania jej poza organizację._** > > Ale jeśli w jakiś sposób udostępnisz zmodyfikowaną wersję publicznie, GPL > wymaga od Ciebie stworzenia zmodyfikowanego kodu źródłowego dostępne dla > użytkowników programu na licencji GPL. >> W ten sposób GPL daje pozwolenie na wydanie zmodyfikowanego programu na pewne > sposoby, a nie na inne sposoby; ale decyzja, czy ją zwolnić, należy > do Ciebie. Czy w wewnętrznej aplikacji intranetowej firmy można używać dowolnej biblioteki na licencji GPLv2?


title: Jakie są oznaki, że dziesięciodniowa sesja debugowania nie rozwiąże problemu?

text: Dziesięć dni temu naprawiliśmy błąd w dużej aplikacji, a poprawka spowodowała zniknięcie niektórych danych z punktu widzenia użytkownika ( _efekt uboczny_ ). Dane nie są usuwane, ale mają ustawiony stan _ukryty_. Możliwe jest odzyskanie danych, ale sprawa wydaje się być trudna: spędziliśmy już 10 dni, aby zrozumieć i odtworzyć problem (głównie z zapytaniami SQL, ale czasami konieczne jest _aktualizowanie_ bazy danych, aby przetestować logikę aplikacji ). Moje pytania to: * czy 10 dni to normalna ilość czasu na tego rodzaju problemy? * czy powinniśmy zachować i odzyskać dane, czy też zrezygnować z tej pracy (aby osoba kontaktowa powie tym użytkownikom _przepraszam za stratę, ale Twoje dane zniknęły_ lub może w ogóle nic nie powie)? * jakie mogą być oznaki, że **powinniśmy przestać szukać sposobu rozwiązania tego problemu**? Edytuj kontekst: jesteśmy małym zespołem(3), użytkownicy nie są klientami, a utracone dane nie dotyczą pieniędzy, banku ani ważnych danych użytkowników. To pytanie zdezorientowanego programisty o _metodologie rozwoju_ i _problemy biznesowe_ , a nie o to, jak powinniśmy postępować z klientami.


title: Czy praca nad dużym projektem na dłuższą metę jest dobra czy zła?

text: W dużym projekcie możesz używać tylko technologii niezbędnej do tego projektu; mniejsze projekty przychodzą i odchodzą i musisz nauczyć się więcej technologii. Z drugiej strony duże projekty są zazwyczaj złożone, a przez to trudne; jeśli jesteś przyzwyczajony do trudnych projektów, powinieneś radzić sobie dobrze w mniejszych projektach. Więc na dłuższą metę lepiej pracować nad małymi czy nad dużymi projektami?


title: Klient Desktop GUI - Zdalna komunikacja RDBMS

text: Przepraszam, jeśli zadaję banalne pytanie, ale szukałem przez chwilę bez powodzenia. Potrzebuję zaprojektować system i szukam porady na temat technologii, którą należy zastosować. Układ jest bardzo prosty: jest to aplikacja sprzedażowa ze scentralizowaną bazą danych i wieloma klientami. Każdy sprzedawca ma na swoim laptopie zainstalowaną aplikację GUI, która powinna być w stanie połączyć się z bazą danych w celu pobierania i przesyłania danych (tj. rejestrowania nowych zamówień). Moje pytanie brzmi: jak powinna być zaimplementowana komunikacja między klientem a serwerem? Wątpię, czy łączenie się bezpośrednio z RDBMS jest dobrym pomysłem... Czy powinienem korzystać z usług sieciowych? XML-RPC? Jak wdrożyć uwierzytelnianie i zaszyfrować dane? Dzięki za radę!


title: Wytyczne dotyczące certyfikacji

text: Jestem świeżo upieczonym pracownikiem MNC. Chcę tylko przeprowadzić jedną certyfikację .net w .net 3.5 lub .net 4.0, która byłaby dla mnie dobra do rozpoczęcia certyfikacji. Proszę, aby ktoś zasugerował mi kod egzaminacyjny i proszę o podanie dobrych zasobów do przygotowania.


title: Haskell: Najlepsze narzędzia do walidacji tekstu?

text: W Haskell istnieje kilka różnych opcji „parsowania tekstu”. Znam Alex & Happy, Parsec i Attoparsec. Prawdopodobnie kilka innych. Chciałbym stworzyć bibliotekę, w której użytkownik może wprowadzić fragmenty adresu URL (schemat, np. HTTP, nazwa hosta, nazwa użytkownika, port, ścieżka, zapytanie itp.) Chciałbym zweryfikować fragmenty zgodnie z ABNF określonym w RFC 3986. Innymi słowy, chciałbym zebrać zestaw funkcji takich jak: validateScheme :: String -> Bool validateUsername :: String -> Bool validatePassword :: String -> Bool validateAuthority :: String -> Bool validatePath :: String -> Bool validateQuery :: String -> Bool Jakie jest najbardziej odpowiednie narzędzie do napisania tych funkcji? Wyrażenia regularne Alexa są bardzo zwięzłe, ale to tokenizer i nie pozwala wprost na parsowanie przy użyciu określonych reguł, więc nie jest to dokładnie to, czego szukam, ale być może można to łatwo nakłonić do zrobienia tego. Napisałem kod Parsec, który wykonuje niektóre z powyższych, ale wygląda bardzo różnie od oryginalnego ABNF i jest niepotrzebnie długi. Musi więc istnieć łatwiejszy i/lub bardziej odpowiedni sposób. Rekomendacje?


title: Czy istnieje coś takiego jak rola „grupy refaktoryzacji/utrzymania” w firmach programistycznych?

text: Tak więc pracuję w firmie, która zajmuje się tworzeniem oprogramowania wbudowanego, inne grupy koncentrują się na podstawowym rozwoju oprogramowania różnych produktów, a mój dział (który znajduje się w innej lokalizacji geograficznej), który znajduje się w fabryce, musi również zajmować się tworzeniem oprogramowania , ale we wszystkich produktach, dzięki czemu możemy również szybciej naprawić problemy, gdy linie przestaną działać z powodu problemów z oprogramowaniem w produkcie. Innymi słowy, jesteśmy generalistami, podczas gdy inne grupy specjalizują się w każdym produkcie. Chodzi o to, że ciężko jest zaangażować się w rozwój rdzenia, gdy jesteś rozproszony geograficznie (cóż, wiem, że to naprawdę nie jest takie trudne, ale mogą istnieć niezamierzone bariery kulturowe/polityczne, jeśli chodzi o dyscyplinę współpracy zdalnej ). Pomyślałem więc, że skoro obecnie właśnie gasimy pożary i jesteśmy w pewnym stopniu bezczynni/niewykorzystani (nawet jeśli jesteśmy nowym działem, a może to jest powód), pomyślałem, że dobrą rolą dla nas może być wykrywanie obszarów możliwości refaktoryzacji i przeprojektowania kodu oraz wszystkich innych implementacji, które mogą mieć związek z zarządzaniem pielęgnowalnością i modułowością. Inne grupy nie skupiają się na tym, ponieważ nie mają czasu i mają napięte terminy, które pogarszają jakość kodu (wieczna historia projektów oprogramowania) Chodzi o to, że chcę, aby moja grupa/dział została rozpoznana przez kierownictwo i inne grupy pełniące tę rolę oficjalnie, a ja mam problem ze znalezieniem dobrej definicji/tożsamości naszej grupy w tej sprawie. Więc moje pytanie brzmi: czy ta rola jest czymś, co już istnieje?, czy też jestem pierwszą osobą, która coś takiego wymyśliła? **Edytuj** : Mam na myśli grupę prowadzącą inicjatywy refaktoryzacji, a nie wykonującą wszystkie prace refaktoryzacyjne samodzielnie. Podobnie jak społeczność open source do produktu open source, teraz, kiedy o tym myślę.


title: Jak się to nazywa, gdy tworzysz aplikację internetową, w której każdy adres URL ma swój własny plik php?

text: Jak to się nazywa, gdy nie używasz struktury MVC, a każdy adres URL ma swój własny plik skojarzony z nim. Chcę powiedzieć, że to model 0 lub klasa 0, ale nie udało mi się znaleźć niczego przydatnego przez Google. :-)


title: Kto jest odpowiedzialny za naprawę nieudanych przeglądów kodu SQL?

text: Jako DBA większość SQL jest przesyłana do mojego zespołu do sprawdzenia. Nie mamy programisty SQL, więc kod jest często bardzo, bardzo nieefektywny. Nasz obecny proces jest następujący: 1. SQL jest przesyłany do przeglądu tuż przed przejściem do wersji beta 2. Wskazywane są problemy, ale często nie są one rozwiązywane, ponieważ aplikacja została już na ich temat napisana, a jej wdrożenie do wersji beta planowane jest w tym samym tygodniu 3 Jeśli zespół DBA zidentyfikuje problem, odpowiedzią programisty jest „pokaż mi, jak to naprawić, to” Należy zauważyć, że zespół DBA nie ma żadnych wymagań dotyczących żadnego kodu, kontekstu ani pojęcia, jakie tysiące wierszy przechowywanych procedura ma działać. Czy to typowy scenariusz? Kto jest odpowiedzialny za naprawę kodu? Czy Twój administrator baz danych zazwyczaj przepisuje za Ciebie zapisaną procedurę?


title: Czy klasa może znajdować się w innej klasie?

text: Oto fragment z „Języka programowania C++” template<classT> class List { // optimum public: class Link { /* ... */ }; Lista (); // początkowo puste void put(T *); // umieść przed bieżącym elementem T* get(); // pobierz bieżący element / / ... }; Czy możemy stworzyć klasę wewnątrz innej klasy? A co z innymi językami? Dla PHP zobacz to pytanie


title: Losowy dostęp do pakietów danych w skompresowanym pliku

text: W swojej pracy zajmuję się bardzo dużymi plikami, wielkości setek gigabajtów. Charakter danych w tych plikach jest taki, że kompresja znacznie zmniejszyłaby ich rozmiar. Problem polega na tym, że rekordy/pakiety danych w pliku muszą być dostępne indywidualnie. Czy istnieje sposób, aby zastosować do tych rekordów jakieś własne techniki, aby indywidualnie je skompresować, a po skompresowaniu umieścić w strumieniu danych w taki sposób, aby nadal znane były miejsca przesunięcia bajtów każdego skompresowanego pakietu? Czy ten rodzaj fragmentacji danych pakietowych znacząco wpłynie na wydajność cyklu kompresji/dekompresji? Czy algorytmy zip są do tego odpowiednie, czy też istnieją lepsze metody kompresji zaprojektowane specjalnie do tego celu?


title: Połączona składnia instrukcji if/switch z obsługą wyjątków dla języka inspirowanego C#

text: Czasami konieczne jest wypróbowanie/złapanie wyjątków w warunku „if”, ale nie w treści, która następuje. W C# jest to naprawdę dość kłopotliwe, wymagające lokalnych i kodu, który na pierwszy rzut oka nie jest do końca oczywisty, jeśli chodzi o jego działanie. Czasami konieczne jest również napisanie instrukcji "switch", które w przeciwieństwie do "if", mają więcej niż dwa możliwe wyniki, chociaż w C# wymaga to użycia dość niepopularnej składni. Oto pomysł na ich połączenie. ## Łączenie `switch` z `try/catch` Najpierw zmieniamy podstawową składnię `switch`, aby była zbliżona do tego dość popularnego zamiennika, ale bez dodatkowych curlies: switch (condition) case 1 { } case 2 { } default { } Następnie umożliwiamy przechwytywanie wyjątków w warunku. Pod maską wstawia to odpowiedni blok try/catch tylko wtedy, gdy obecny jest co najmniej jeden `catch`: switch (warunek) catch FileNotFoundException e { } // użyj "e" catch ArgumentException { } catch { } case 1 { } case 2 { } default { } Teraz uprościmy łączenie kilku takich instrukcji, podobnych do tworzenia łańcuchów if/else, przesuwając „default” o jeden poziom w górę i zmieniając nazwę na „else”: switch (warunek1) catch FileNotFoundException { } case 1 { } case 2 { } else switch (warunek2) case "abc" { } case "def" { } else { } I tak mamy `switch` połączony z `try/catch`! ## Łączenie z 'if' Zarówno `switch` jak i `if` mają teraz klauzule `else`, więc dlaczego nie pozwolić na ich mieszanie według własnego uznania: if (bool-condition1) { } else if (bool-condition2) { } else switch (string-expr) catch FileNotFoundException { } case "thing" { } else { } (dzięki ach_l!) ## Dalsze ulepszenia Zaproponowano przełączanie na listę lub zakres wartości i można je łatwo włączyć: switch (int -wyrażenie) case 1 { } case 2, 5 { } case 10..50 { } else switch (wyrażenie-łańcuchowe) case "abc" { } case "def" { } else if (warunek-logiczny3) { } else { } W tym przypadku może być naprawdę wygodna możliwość odwołania się do wartości w klauzuli warunku. Można to łatwo włączyć, pozwalając na zadeklarowanie pojedynczej zmiennej w tej klauzuli w taki sam sposób, w jaki umożliwia użycie C#: switch (var z = int-expression) case 2, 5 { return z == 2 ? „dwa” : „pięć”; } case 10..50 { return (z * 10).ToString(); } ## Korzyści Wśród innych korzyści można teraz zwięźle przedstawić typowy scenariusz obsługi błędów, ale nie WTFy: switch (bool-condition) catch FileNotFoundException e { } case true { } case false { } * * * Czy to rozwiązałoby napotkałeś jakiekolwiek trudności z kodowaniem w prawdziwym życiu? Czy są jakieś poprawki, które byś wprowadził do tego?


title: Jaki jest skuteczny proces git do zarządzania naszą centralną biblioteką kodu?

text: Krótki opis: jesteśmy małą agencją internetową (3-6 programistów jednocześnie) tworzącą małe i średnie witryny Symfony 1.4. Używamy git od roku, ale wcześniej korzystaliśmy z Subversion. Przez ostatnie 6 miesięcy poświęciliśmy dużo czasu na rozwój centralnej wtyczki Symfony, która obsługuje nasz niestandardowy CMS. Ta wtyczka zawiera szereg funkcji, pomocników, klas bazowych itp., których używamy do tworzenia niestandardowych funkcji. Ta wtyczka jest przechowywana w git, ale rozgałęzia się szaleńczo, ponieważ wtyczka jest używana w różnych produktach i jest stale wyciągana/wypychana. Repozytorium jest zwykle używane jako podmoduł w dużym projekcie. Problemy, które teraz zaczynamy dostrzegać, to duża liczba konfliktów scalania i niezgodnych wstecz zmian wprowadzonych do repozytorium przez programistów dodających niestandardowe funkcje w kontekście własnego projektu. Przeczytałem doskonały model rozgałęziania git Vincenta Driessena i z powodzeniem używałem go w przeszłości w projektach, ale nie wydaje się, aby pasował do naszej konkretnej sytuacji; mamy wiele projektów jednocześnie korzystających z tej samej wtyczki rdzenia podczas opracowywania dla niej nowych funkcji. Potrzebujemy strategii, która zapewnia: * Metodologia rozwoju głównych funkcji w repozytorium kodu. * Sposób na migrację tych funkcji do innych projektów. * Sposób wersjonowania głównego repozytorium i śledzenia wersji używanej przez każdy główny projekt. * Plan migracji poprawek błędów z powrotem do starszych wersji. * Czystsza historia, w której łatwiej jest zobaczyć, skąd pochodzą zmiany. Wszelkie sugestie lub dyskusje byłyby bardzo mile widziane.


title: Czy istnieje jakiś użytek z menedżerów układu poza Javą?

text: Jestem początkującym programistą i ostatnio pracowałem nad kilkoma prymitywnymi aplikacjami GUI w Javie. Tam spotkałem różnych menedżerów układu. Przeglądałem sieć i mówi, że do zaawansowanego tworzenia GUI są NetBeans i Qt i wiele innych rzeczy. Moje pytanie brzmi: czy naprawdę muszę poznać wszystkie tajniki menedżerów układu i próbować programować bez zaawansowanych silników układu, aby zrozumieć, jak one działają, czy też powinienem zacząć uczyć się NetBeans od razu i pomijać całe ręczne komplikacje układu? Czy jest jakiś użytek z ręcznego układania poza Javą w innych językach? Innymi słowy, czy moja droga będzie mniej wyboista w przyszłości, jeśli nauczę się jej szczegółowo, czy też powinienem zapomnieć o ręcznych układach?


title: Czy powinienem uczynić mój projekt wolnym oprogramowaniem?

text: **Historia** Przez ostatnie kilka miesięcy pracowałem nad całkiem dużym projektem. Jest to oprogramowanie na poziomie korporacyjnym, które zaprojektowałem do użytku w lokalnej siłowni, ale wierzę, że można go używać w innych miejscach, gdzie wymagane są takie rzeczy, jak śledzenie klientów, obecności, zakupów i płatności. **Problem** Niedawno zacząłem zastanawiać się, jak dojrzeć ten projekt od bycia domowym. Nie tylko dlatego, że chcę, aby mój projekt się rozwijał, ale także dlatego, że chciałbym z niego coś zyskać. **Rozwiązania?** I tu zobaczyłem 2 ścieżki: * Licencjonuj oprogramowanie pod jakąś ograniczoną licencją i spróbuj sprzedać oprogramowanie innym firmom. W ten sposób mogę zdobyć trochę pieniędzy na studia (jestem teraz licealistką) * Licencjonuj oprogramowanie na wolnej licencji, opublikuj je na GitHub lub coś takiego i spróbuj zaangażować innych programistów do udziału w projekcie. W ten sposób zdobywam doświadczenie w pracy w zespole i większą szansę na dalszy rozwój projektu. Ten ostatni byłby dobrym + dla mojego CV, gdy będę starał się znaleźć pracę. Jak dotąd oba sposoby wydają mi się całkiem ekscytujące i korzystne. Pierwsza oferuje dobrą karierę w college'u, a druga oferuje dodatkowe doświadczenie i rozwój projektu. **Pytania** Czy ktoś może wskazać jakieś inne +/- z tych 2 opcji? Jaka byłaby lepsza opcja w mojej sytuacji i dlaczego? A może są inne opcje?


title: Porównanie wielu wersji tego samego pliku C

text: Zastanawiałem się tylko, czy ktoś miał jakieś sztuczki lub programy, których używał podczas porównywania dwóch tego samego pliku, ale różnych wersji? Wygląda na to, że w pewnym momencie głupio dokonałem modyfikacji (poszedłem kilka godzin bez uruchamiania żadnych testów) i zatrzymało to cały projekt - bez wyrzucania żadnych błędów, więc wszystko, co zrobiłem, musi być subtelne. Pomyślałem tylko, że musi istnieć program, który może uwydatnić różnice itp. W przeciwnym razie wyszukiwanie krok po kroku może być w porządku!


title: Kiedy używać funkcji, a kiedy metod?

text: Więc wiem, że metody są bardziej OOP niż funkcje. Zastanawiałem się, czy ktoś mógłby mi pokazać przykład funkcji i metody oraz wyjaśnić mi różnice między metodami a funkcjami? Zajmowałem się 3 kwartałami programowania w Javie i nigdy nie wspominałem o funkcjach, chcę poznać różnice, mocne i słabe strony.


title: Odpuszczanie projektu

text: Od prawie 6 lat jestem jedynym deweloperem niszowego produktu dla mojej firmy. Bardzo przywiązałem się do projektu i lubię nad nim pracować. Decyzją zarządu było jednak odebranie projektu z moich rąk i przeniesienie go pod skrzydła innego zespołu. Niestety trudno mi odpuścić projekt. Przykro mi, że opuszcza moje ręce, ponieważ włożyłem w to tyle czasu i praca nad nim sprawiała mi przyjemność, ale pozwala mi też pracować nad nowymi rzeczami. Złapałem się nawet na tym, że jestem trochę wrogo nastawiony do drugiego zespołu, co jest z mojej strony kiepskie. Jak mogę się przekonać, żeby po prostu odpuścić?


title: Czy zbieranie i udostępnianie niektórych rodzajów anonimowych danych dotyczących użytkowania bez zgody jest legalne/etyczne?

text: Rodzaj danych, które mam nadzieję zebrać, jest trochę specyficzny i niestety jestem objęty NDA, a dane są podstawową częścią biznesplanu, więc nie mogę publikować ich online. Wymyśliłem podobny przykład, więc proszę się ze mną obnażyć i nie zwracać uwagi na wady tej hipotetycznej usługi. Załóżmy, że tworzę internetową usługę „wyszukiwarki szkół”, w której użytkownik wpisuje swój adres, a usługa ta wyszukuje i oblicza koszty czesnego we wszystkich szkołach w odległości, powiedzmy, 100 km od tego adresu. Usługa wyświetli listę szkół posortowaną według ceny, a użytkownik na podstawie tych informacji wybierze szkołę, do której zamierza uczęszczać. Określiliby również wszelkie inne czynniki, takie jak estetyka kampusu i reputacja szkoły (takie rzeczy byłyby wybierane z rozwijanego menu lub czegoś podobnego, małego zestawu opcji, które nie pozwalają na identyfikację osoby). Wyszukiwarka szkół pasywnie gromadziłaby te dane (w przeciwieństwie do aktywnego wyszukiwania każdej szkoły na całym świecie i wygrzebywania jej cech z ich publicznej strony internetowej) i wykorzystywała je do zapewniania lepszych wyników wyszukiwania, a także wyświetlania mapy wyśrodkowanej na regionie użytkownika , reprezentujące w jakiś sposób te dane. Wskazuje, na podstawie dotychczasowych zastosowań, najbardziej pożądane szkoły w oparciu o szereg czynników (powiedzmy, najtańsze i najbardziej pożądane byłyby zielone, najbardziej pożądane z innych powodów byłyby żółte, a rzadko wybrane szkoły byłyby czerwone). Większość danych jest gromadzona pasywnie i w inny sposób publicznie dostępna, ale niektóre z nich (powód wyboru szkoły) mają charakter osobisty, a adres domowy użytkownika jest danymi osobowymi. Jedynymi publicznie widocznymi danymi byłaby „ocena” każdej szkoły na podstawie wybranego regionu. Jedyne zapisane dane to ocena i koszt każdej szkoły, a także kod pocztowy (lub miasto, cokolwiek) powiązany z tą oceną. Usługa nie ma kont użytkowników, więc nie jest możliwe proszenie każdego użytkownika o wyrażenie zgody na politykę prywatności dla każdego żądania. Czy zbieranie i udostępnianie tego zestawu informacji bez wyraźnej zgody jest legalne/etyczne?


title: Próbuję dowiedzieć się, jak trudne lub kosztowne byłoby dodanie tej funkcji

text: Próbuję zorientować się, jak trudne/czasochłonne byłoby dodanie następującej funkcji: Mamy bazę danych naszych subskrybentów i chcemy wysyłać aktualizacje do płacących subskrybentów. Haczyk polega na tym, że chcemy, aby te aktualizacje były zależne od daty. Pozwól mi wyjaśnić. Joe zapisał się w czerwcu zeszłego roku. Od czerwca otrzymuje comiesięczne biuletyny. Teraz Fred zapisał się w kwietniu, zrezygnował w maju i wznowił subskrypcję w sierpniu. Chcemy wysłać Joe aktualizację dotyczącą jego czerwcowego biuletynu. Fred nie był już subskrybentem w czerwcu i **nie** chcemy, żeby otrzymał tę samą aktualizację z różnych powodów. Czy jest to funkcja, której wdrożenie oczekiwałbyś, że będzie kosztować 100, 1000, 10 000 dolarów? **Edytuj: Powinienem był być bardziej przejrzysty, szukałem wielkości, a nie dokładnego kosztu. Widać, że o programowaniu wiem bardzo mało, dlatego tu przyjechałem. Gdyby ktoś mnie zapytał, ile kosztowałoby porzucenie studni, mógłbym z łatwością podać mu rząd wielkości. Doceniam wszystkie odpowiedzi; to jest niesamowity zasób.


title: Poszukiwany artykuł na temat technik dostępu do pamięci systemu Linux

text: Na stackoverflow ktoś zamieścił link do artykułu napisanego przez inżyniera jądra Linuksa o tym, jak korzystać z komputerów i pamięci RAM. Zaczął od wyjaśnienia, jak działa pamięć RAM (aż do przerzutników), a następnie omówił problemy z wydajnością związane z operacjami na macierzach (dostęp do kolumn i wierszy), zaproponował rozwiązania, a następnie zajął się niektórymi rzeczami, które mogą zrobić instrukcje MMX. Przepraszam, to trochę niejasne, ale nigdzie go nie mogę znaleźć. Myślę, że facet miał skandynawskie imię, prawdopodobnie Anders


title: Składnia języków znaczników

text: Jeśli komputery są w stanie analizować dane zorganizowane w nawiasy klamrowe, dlaczego używamy składni `<foo></foo>` w niektórych językach? Tylko ze względu na spuściznę itp., czy są za tym inne powody? Myślę, że przemawiam w imieniu wielu osób, jeśli powiem, że wygląda to na po prostu zbędne i jest niewygodne w pracy. Ponadto nie „wymusza” wcięć, jak robią to języki oparte na nawiasach klamrowych. **Aktualizacja** \- Popełniłem błąd, traktując nawiasy klamrowe i pary klucz-wartość (o których do tej pory nie wspomniałem) jako tę samą koncepcję. Biorąc to pod uwagę, chciałbym ponownie zadać moje pytanie: Czy składnia tagów jest naprawdę wygodniejsza niż język podobny do JSON?


title: Serwer SQL: Compact i LocalDB Denali

text: Czy ktoś zna różnice między tymi? 1. http://www.microsoft.com/sqlserver/en/us/editions/express.aspx (Poszukaj CTP3 LocalDB na stronie) 2. http://www.microsoft.com/sqlserver/en/us/ editions/compact.aspx Zastanawiam się, dlaczego Microsoft rozpoczął projekt Denali (obecnie w CTP).


title: Znaczenie wyrażenia: „Nie Visual Basic twojego ojca”

text: Wielokrotnie natknąłem się na powyższą frazę (szczególnie podczas klasycznych dni VB) i zastanawiałem się, co tak naprawdę oznacza i skąd się wzięło. Jakieś pomysły?


title: JIRA: Klasyfikacja problemu, potrzebne wyjaśnienie

text: W JIRA podczas tworzenia nowego wydania pojawia się szereg opcji, z których niektóre wyglądają tak, jakby nie pasowały. Na przykład: „Nowa funkcja”. To powinno być częścią historii, prawda? Jak wybrać, kiedy użyć „Nowej funkcji”, a kiedy „Historii”? „Nowa funkcja” wygląda dla mnie jak typ lub „Historia”. Albo weźmy na przykład „Poprawa”. Możemy rozpocząć cały projekt z jego własnym „Epic” wyłącznie w celu ulepszenia kilku rzeczy. Czy taką pracę należy złożyć pod „Epicką” czy pod czymś innym? Proszę o wyjaśnienie


title: Jak stworzyć architekturę/projekt aplikacji w Agile?

text: Jeśli mam zamiar opracować aplikację Enterprise, ale o ile rozumiem z procesu zwinnego, dzielę funkcje na małe kawałki i rozwijam je iteracyjnie. Kiedyś tworzyłem najpierw bazę danych i rdzeń aplikacji, a następnie rozszerzałem je iteracyjnie. Pytanie brzmi: Czy muszę zachować to, co robiłem wcześniej (najpierw opracować rdzeń), czy muszę rozłożyć rozwój rdzenia na tworzenie historii? Później nie jestem pewien, czy kod będzie wystarczająco elastyczny dla przyszłych rozszerzeń! Dowolny pomysł?


title: Czy scrum master może przydzielać zadania?

text: W naszym projekcie podążamy za scrumem. Widzę, że w większości przypadków scrum master przydziela nam zadania. Jednak czytałem z wielu książek o scrumie, że scrum działa na odwrót (podejście „pociągnij”), a członkowie zespołu wybierają zadania lub funkcje. Czy scrum master przypisujący zadania jest właściwym podejściem, czy jest to sprzeczne ze zwinną ideologią?


title: Jak wyjść z rutyny wsparcia i zacząć spłacać dług techniczny!

text: Mam przyjaciela". Tak dobry początek, wiem, ale szczerze to nie ja! Zasadniczo pracuje nad udanym projektem od około 4 lat, trudność polega na tym, że dług techniczny nadrobił zaległości i stwierdził, że jest prawie niemożliwe, aby przestać wspierać produkt (poprawiając to i tamto) i faktycznie przejść do _prawdziwego_ rozwoju. Poczyniłem różne sugestie, loguję cały czas, twórz zgłoszenia, nie odpowiadam na e-maile itp. Problem z tym polega na tym, że wydaje się, że służy to tylko jako przypomnienie, że nie robi nic „użytecznego”. Dług techniczny w dużej mierze powstał, ponieważ w pierwszej kolejności dużą korzyścią dla produktu było przyjmowanie próśb i telefonów od użytkowników i po prostu szybkie ich wdrażanie. Chciałbym wiedzieć, czy ktoś ma jakieś sugestie, jak wyjść z tej rutyny, której dużą częścią byłaby zmiana percepcji użytkowników, aby nie myśleli, że mogą po prostu dzwonić i oczekiwać czegoś być zrobione wtedy i tam. Bardzo dobrze mówi się, że lepiej planować, chociaż rozumiem, że bardzo trudno jest zaplanować rzeczywisty rozwój, biorąc pod uwagę zapotrzebowanie na wsparcie i względną presję ze strony użytkowników (patrz wyżej).


title: Efektywne programowanie zarządzania/dostępu do warstwy danych

text: **Wersja skrócona** : Co to jest termin/koncepcja opisująca efektywny projekt programowania warstwy danych w celu efektywnego dostępu do danych i jakie są źródła/książki/artykuły/strona internetowa, które omawiają tę koncepcję? **Długa wersja** : Niedawno rozmawiałem ze starszym programistą w mojej małej firmie o tym, w jaki sposób i dlaczego uzyskujemy dostęp do danych w taki sposób, jak my. Powiedział mi, że jest to najważniejszy aspekt programu i wyjaśnił, że jest to największe wąskie gardło w wydajności, jeśli zostanie wykonane nieprawidłowo. Powiedział też, że nigdy nie dowiedział się o tym na kursach, na których uczęszczał, i nigdy nie czytał o tym w żadnej książce, mimo że uważa, że jest to pierwsza rzecz, którą postanawia uczyć innych. Powinienem wyjaśnić, że to mój pierwszy rok w programowaniu pracy, że mam dyplom z elektrotechniki, ale nie z CS, więc nie wiedziałbym, czy jest to objęte w szkole. Ponadto językiem, w którym pracuję, jest Java, ale to pytanie miało na celu pytanie o dostęp dowolnego języka do danych w sensie ogólnym. Więc o czym mówię? Wyjaśnię na przykładzie. Pracujemy z dużą ilością danych, więc warstwa danych jest nieco skomplikowana. Wykorzystuje kombinację wzorca singleton i wzorca projektu fabrycznego, aby uzyskać inny dostęp. Na przykład obiekt, powiedzmy, Klient będzie najczęściej tworzony w następujący sposób: Customer customer = Customer.getDefaultInstance(CustomerAccessType.LIST) LUB Customer customer = Customer.getDefaultInstance(CustomerAccessType.ONE_RECORD) OR Customer customer = Customer.getDefaultInstance(CustomerAccessType. LIST_BY_ACCOUNT) Jak można się domyślić, każdy typ dostępu uzyskuje dostęp do bazy danych w inny sposób. Typ dostępu LIST przez większość czasu ma bardzo mało kolumn, więc mimo że pobiera wiele wierszy danych, w niektórych przypadkach nawet dziesiątki tysięcy rekordów (może nie z klientami, ale może coś w rodzaju zamówień ze strony internetowej, które możesz sobie wyobrazić stają się bardzo duże), może zawierać tylko klucze podstawowe w tabeli i kilka innych bardzo szczegółowych informacji. Ale kiedy edytujesz określone dane, do których masz dostęp, używając typu „ONE_RECORD” i tylko w jednym wierszu, masz wszystkie kolumny tabeli (i najprawdopodobniej łączy się z wieloma innymi tabelami). Jest to bardziej widoczne niż kiedykolwiek, gdy patrzysz na ekran, który wyświetla informacje przed kasjerami, a informacje te nieustannie się zmieniają. Przedstawione informacje mogą pochodzić z tabeli, w której, jak wspomniano wcześniej, pracuje się obecnie nad dziesiątkami tysięcy rekordów. Obiekt typu LIST pobierze tylko klucze podstawowe z tabeli, a następnie uzyska dostęp tylko do rekordów, które wymagają malowania, po jednym wierszu na raz, a informacje zostaną narysowane na ekranie. W związku z tym mam dwa pytania: 1. Jaki jest termin/koncepcja opisująca efektywny projekt programowania warstwy danych dla efektywnego dostępu do danych? Większość dużych programów, które mają do czynienia z dużym dostępem do danych, musi radzić sobie z tymi samymi problemami. Z pewnością inni wymyślili na to określenie? 2. Jakie są dobre zasoby, aby dowiedzieć się więcej o tym, co jeszcze jest na ten temat? Ponownie, z pewnością inni zajęli się tymi samymi problemami/wąskimi gardłami, z którymi mamy do czynienia. Z pewnością inne błyskotliwe umysły poradziły sobie z tym problemem i obszernie o nim pisały, nie? 3. Jakie inne sposoby radzenia sobie z tym problemem pokazały ci być może twoje osobiste doświadczenie, nawet jeśli nigdy nie czytałeś tego nigdzie indziej? Twoja pomoc i wiedza są bardzo cenione, -Asaf


title: Jak zachować zgodność z GPL podczas forkowania na Github?

text: Niedawno rozwidłem projekt na Github i dokonałem w nim kilku modyfikacji, odepchnąłem je z powrotem do rozwidlonego repozytorium i poprosiłem oryginalnego programistę o wycofanie zmian. (Domyślam się, że jest to preferowany sposób wnoszenia wkładu na Github.) Projekt jest na licencji GPLv3. Jestem autorem i właścicielem praw autorskich do zmian, które wprowadziłem do kodu. Mogę również opublikować zmodyfikowany kod (tj. kombinację oryginalnego kodu i moich zmian - co zrobiłem, wpychając zmiany do mojego forka), o ile przestrzegam licencji ustanowionej przez pierwotnego autora. Teraz natrafiłem na następujący wymóg w GPL. > Praca musi być opatrzona wyraźną informacją, że ją zmodyfikowałeś, oraz > z podaniem odpowiedniej daty. Wygląda na to, że potrzeba trochę pracy poza samym kodowaniem, zanim będę mógł legalnie przesłać moje zmiany na Github. Na czym polega ta praca? Jak spełnić powyższe wymaganie? (Czy dodaję dodatkowe informacje o prawach autorskich do zmodyfikowanych plików źródłowych? Czy tworzę plik Contributors i dodaję do niego siebie? A może wystarczy fakt, że zatwierdzenia wskazują na moje prawo własności?) Czy są jakieś dodatkowe pułapki podczas tworzenia projektu chronionego przez GPL?


title: Jak uzyskać identyfikator sprzętowy?

text: Mamy aplikację, której potrzebujemy, aby nasze DANE APLIKACJI nie były używane (lub otwierane) na różnych komputerach z tymi samymi użytkownikami. W tym celu pomyśleliśmy o uzyskaniu identyfikatora GUID dysku twardego jako części prywatnego klucza szyfrowania danych. W tym przypadku dyski raid, wirtualne komputery ulegną awarii i nie będą w stanie otworzyć danych. Potrzebujemy porady, jak uzyskać właściwy identyfikator dla ściśle określonego użytkownika na komputer, ale nie na dysku twardym użytkownika. Uwaga: zarówno Mac, jak i Windows obsługuje edycję: dotyczyło danych aplikacji, ale nie samej aplikacji. Przepraszam za złe pytanie


title: Wybór odpowiedniej technologii dla systemu przesyłania wiadomości

text: Od dwóch lat pracuję nad systemem przesyłania wiadomości, system został napisany przez dawno nieistniejący zespół i obejmuje e-maile i przetwarzanie dokumentów. Podstawowy proces to: 1. Odbierz wiadomość e-mail, przeanalizuj ją, zapisz załączniki w udostępnieniu samby. Powiadom procesor komunikatów. Mamy solidną aplikację Java, która robi to bardzo dobrze. 2. Przetwórz wiadomość, co obejmuje pobranie danych użytkownika z LDAP, wywołanie usług internetowych przetwarzania plików na różnych platformach. System ma rodzaj usługi ponownego dostarczania, która odpytuje bazę danych pod kątem komunikatów o błędach lub przekroczeniu limitu czasu w różnych stanach i wysyła je ponownie. Części przetwarzania plików to usługi sieciowe EJB, które zasadniczo uruchamiają narzędzia wiersza poleceń. Problem tkwi w naszym rozwiązaniu orkiestracyjnym, które jest oparte na OpenESB (już prawie martwe), ma kilka BPEL, które wywołują się nawzajem i wywołują zdalne EJB (EJB3.0 na glassfish v2). Największym problemem jest to, że w BPEL robi się zbyt dużo logiki (powiedzmy, że wszystkie aktualizacje baz danych są robione w BPEL, nie ma warstwy trwałości), wyglądają jak najbardziej przerażające spaghetti, jakie kiedykolwiek widziałem. Nie wspominając już o tym, że NetBeans, którego używamy do ich edycji, działają naprawdę wolno, do tego stopnia, że niektóre pliki można edytować tylko w prostym edytorze tekstu jako XML. Ponadto system ma wiele paskudnych błędów, które wymagałyby poważnej refaktoryzacji i boję się nawet o tym pomyśleć. Te wiadomości są obsługiwane ręcznie przez nasze wsparcie, więc prawie nie ma to wpływu na klienta, ale i tak chciałbym mieć prawdziwy system transakcyjny. Teraz samo pytanie. Chętnie poświęcę dużo wolnego czasu na realizację dwóch celów: zbudowanie zamiennika dla ESB i BPEL, poznanie nowych i najlepiej modnych technologii. Chciałbym zachować kod w EJB przetwarzania plików, ponieważ działają dobrze, chociaż myślę o pozbyciu się SOAP jako ich zdalnego interfejsu. Proszę więc o wgląd w to, która technologia pozwoliłaby mi stworzyć solidne rozwiązanie do przesyłania wiadomości, które: 1. Posiada przyjazną warstwę trwałości, w dbs nie będzie nic skomplikowanego, tylko meta-dane wiadomości . 2. Zadbaj o równoważenie i odpytywanie wywołań usług internetowych przetwarzania plików. 3. Nie wymaga radzenia sobie z tonami XML w różnych miejscach w celu dodania nowej metody interfejsu. 4. Byłby skalowalny - działał na wielu maszynach. 5. Umożliwi monitorowanie w czasie rzeczywistym, takie jak przeglądanie kolejek wiadomości, aktualne obciążenie, statusy itp. 6. Mam nadzieję, że pozwoli mi nauczyć się czegoś nowego, co oznacza, że nie stos J2EE. Zasadniczo jestem otwarty na wszystko oprócz BPEL i OpenESB.


title: Czy mogę stworzyć prostą aplikację fizyki OpenGL ES na iPhone'a z Xcode 3 w C++ bez GUI?

text: Czy mogę stworzyć prostą aplikację fizyki OpenGL ES na iPhone'a z Xcode 3 w C++ bez GUI i Objective-C? Więc nie potrzebuję kakao i nie potrzebuję Objective-C?


title: Jak selektywnie aktualizować właściwości obiektu na serwerze?

text: Mam witrynę `GWT`, która wyświetla klientowi niektóre dane w formie tabelarycznej. Niektóre pola są edytowalne, po dokonaniu jakiejkolwiek zmiany przycisk zapisu staje się aktywny. Istnieje wiele właściwości, które mogły się zmienić, jak mam je zaktualizować na serwerze? Dodatkowo chciałbym udostępnić przycisk Cofnij, aby zmiany zostały cofnięte. To, o czym teraz myślę, to użycie ustawiaczy i sprawdzenie, czy bieżąca wartość jest taka sama jak zmieniona wartość, jeśli nastąpi zmiana, zostanie uruchomione żądanie do procesu w tle. Ale nie jestem pewien, czy to najlepsze podejście i być może rozgrywający z dodatkową logiką nie są najlepszą praktyką. Myślę, że jest to problem, z którym boryka się wiele aplikacji internetowych i być może istnieje wzór, który czyni to wszystko bardziej eleganckim. Byłoby miło, gdyby ktoś mógł wyjaśnić, jak by to rozwiązał.


title: Czy niezmienne obiekty i DDD idą w parze?

text: Rozważ system, który używa DDD (również: każdy system, który używa ORM). Realistycznie rzecz biorąc, każdy system, w prawie każdym przypadku użycia, polega na manipulowaniu tymi obiektami domeny. W przeciwnym razie nie ma rzeczywistego efektu ani celu. Modyfikowanie niezmiennego obiektu spowoduje wygenerowanie nowego rekordu po utrwaleniu obiektu, co powoduje ogromne rozdęcie w źródle danych (chyba że usuniesz poprzednie rekordy po modyfikacjach). Widzę korzyści z używania obiektów niezmiennych, ale w tym sensie, nigdy nie widzę użytecznego przypadku używania obiektów niezmiennych. Czy to źle?


title: Jak włączyć SQlite do aplikacji, w której sterowniki nie są jeszcze zainstalowane w systemie?

text: Jestem aplikacją internetową typu open source do użytku na mojej uczelni. Obecnie profesorowie zazwyczaj mają stronę internetową, ale robią to, że prowadzą wiele zajęć w danym semestrze, nie dbają o marnowanie czasu i tworzenie rozszerzalnej, funkcjonalnej strony internetowej. Celem tego projektu jest stworzenie strony internetowej OSS, którą można umieścić i włączyć po prostu uruchamiając plik init.php. Ciekawi mnie jednak, jak poradzić sobie z przechowywaniem informacji przy takim zadaniu. Pełna baza danych serwera jest nieco poza zakresem, którego szukam, ale coś takiego jak SQlite pasowałoby bardzo dobrze. Problem, z którym się spotykam, polega na tym, że nie wszystkie działy mają zainstalowany SQlite na swoich serwerach, a nakłonienie ich wszystkich do tego nie nastąpi. Czy ktoś może wymyślić sposób na włączenie SQlite do aplikacji, w której sterowniki nie są jeszcze zainstalowane w systemie, lub bardziej powszechną alternatywę, która zapewniłaby podobny poziom mocy/elastyczności?


title: Czy powinienem umieścić typ danych atrybutu klasy w jego nazwie?

text: Większość atrybutów klas mojego systemu to po prostu tekst, ale w tym przypadku bardziej sensowne jest umieszczenie atrybutów tej konkretnej klasy w jednym haszu (z aspektu "utrzymaj ładny kod źródłowy"). Zasadniczo zwracana jest lista atrybutów i zamiast pisać kilka statycznych atrybutów dla każdego z nich, po prostu je przeglądam i zbieram w hash. Czy dobrym pomysłem jest nazwanie tego konkretnego atrybutu `@contents_hash`, a nie `@contents`? Zakładam, że użytkownicy mogą dość szybko zorientować się, że `@contents.split ' '` zwróci `NoMethodError: niezdefiniowaną metodę 'split' dla Hash`, ale na pierwszy rzut oka warto wiedzieć, że to jest haszem? Czy uważasz, że przez to implementacja będzie zbędna mówiąc `@contents_hash.keys`?


title: Prezentacja na git

text: Mam zamiar wygłosić prezentację dla grupy neuronaukowców na temat wykorzystania git do zarządzania plikami matlab/r/xppaut/etc. Niektórzy z tych ludzi mają rozległe doświadczenie w inżynierii oprogramowania, niektórzy nie wiedzą, czym jest CVS. Główne cele wykładu są następujące: * Poinformuj, w jaki sposób git może zwiększyć współpracę i zaoszczędzić czas (5-10 min) * Przedstawić git jako koncepcję w teorii grafów, znany tłumowi temat (5-10 minut) * Przedstaw praktyczne aspekty git: (reszta czasu) * Pobierz i zainstaluj * Skonfiguruj nowy projekt (`add`, `difftool`, `commit`, `checkout` & `branch`, `merge`, remotes (być może), generowanie i zatwierdzanie łatek, `stash`, cofanie do poprzedniej pozycji, ...?) * Jeśli masz czas, pokaż im github, a konkretnie jak używać go do forkowania i przesyłania pull requestów (mam nadzieję, że skonfigurują konta na githubie udostępnianie skryptów w przyszłości) Mam nadzieję, że wszyscy przyniosą swoje laptopy, aby śledzić samouczek. Ta rozmowa ma trwać około godziny, max to około 1,5 godziny. Moje pytanie do was jest dwojakie: 1. Ogólnie, co myślicie o proponowanym zarysie? 2. Czy ktoś zna slajdy, których mogę użyć do tego rodzaju rozmowy? Chcę wymodelować intro na podstawie samouczka mercurial Joela Spolsky'ego, pod względem tonalnym, ale w razie potrzeby mogę pracować z innym materiałem.


title: Jak najlepiej zorganizować wiele projektów WebProject, które wykorzystują podobną logikę biznesową?

text: Mamy następującą konfigurację > **Aktualne rozwiązanie** : > > * Logika biznesowa (biblioteka klas) > > * Warstwa danych (biblioteka klas zawierająca EF, opakowania usług sieci Web itp.) > > * WebProject1 > > ALE teraz chcemy napisać inny projekt sieciowy (Web Project2), który byłby prawie identyczny z WebProject1, z wyjątkiem tego, że zmieniałby właściwości i zmienne wejściowe na funkcje/pustki w klasie Business Logic, aby zapewnić inny zestaw danych dla innego, zupełnie innego użytkownika. (Wymaga przeredagowania). Pomyśl o Facebooku jako WebProject1, a Myspace jako WebProject2. Ta sama koncepcja, prawie ta sama warstwa biznesowa, ale zupełnie inne produkty. > **Przyszłe rozwiązanie** > > * Logika biznesowa (biblioteka klas) > > * Warstwa danych (biblioteka klas zawierająca EF, opakowania usług sieci Web itp.) > > * WebProject1 > > * WebProject2 (podobne do WebProject1, ale inne uwierzytelnianie, > inne UI, różne strony itp. > > * WebProject3 (możliwe) > > Bez całkowitego zniszczenia logiki biznesowej (ponieważ klasa musiałaby teraz zezwalać na 2 ścieżki na zestaw zmiennych wejściowych), jak możemy to ustrukturyzować, aby uniknąć podwojenia kod? **Edycja:** Wyjaśnij logikę biznesową WebProject1 dostarcza dane w oparciu o filtr bazy danych o nazwie „ByCompany” WebProject2 dostarcza dane w oparciu o filtr o nazwie „BySite” Oba projekty będą wykorzystywane przez różnych odbiorców, którzy nie będą wiedzieć, że druga witryna Ewentualna logika przyszłości może zawierać coś takiego: BusinessLogic.EmployeeList workerList = new BusinessLogic.EmployeeList(); pracownikList.LoadBySite("ConstructionSiteC"); pracownikList.LoadByCompany("JohnDoesTractors"); Biblioteki klas Business Logic? Czy powinniśmy dodawać prefiksy do nazw klas, aby określić ich odpowiedni rodzic WebProject? Czy powinniśmy tworzyć klasy bazowe i dziedziczyć, jeśli są konieczne nadpisania? Czy powinniśmy tworzyć bardziej opartą na interfejsie logikę biznesową? Czy powinniśmy mieć tylko dwie oddzielne rozwiązania, które czerpią z tego samego DAL?Projekty prawdopodobnie będą dość duże (ponad 300 klas logiki biznesowej) i my chcesz zminimalizować podwojenie tak bardzo, jak to możliwe. Jaka jest twoja metoda lub sugestia? Dziękuję Ci!


title: jak radzisz sobie z niejasną propozycją oprogramowania?

text: Wszyscy je dostajemy. Co robisz, gdy masz napisać funkcjonalną specyfikację z wełnianej propozycji? Możesz napisać mnóstwo pytań na temat propozycji, ale odpowiedzi nie zawsze nadchodzą. Czasami z powodów politycznych nie można ich utwierdzić. Jak radzisz sobie z niejasną propozycją oprogramowania, gdy doświadczenie i intuicja idą tylko tak daleko?


title: Fonetyczny język programowania?

text: Wielu z nas, programistów i programistów, boryka się z powtarzającymi się urazami, cieśniami nadgarstka itp. Byłem ciekaw, jak wprowadzić sterowanie głosowe do mojego przepływu pracy, aby zaoszczędzić sobie trochę stresu. Doprowadziło mnie to do mojego aktualnego pytania: czy byłoby możliwe lub praktyczne zaimplementowanie języka programowania (lub nadzbioru istniejącego języka), który był przede wszystkim fonetyczny, a zatem dobrze nadawał się do programowania głosowego?


title: stworzyć funkcję prototypu obiektu,

text: Czytam "Javascript : The good Parts", aby ulepszyć moje bazy i wiedzę na temat Javascript. Czytałem rzeczy o `prototypie` i spotkałem się w tej funkcji: var stooge = { ... } if(typeof Object.create !== 'function'){ Object.create = function(o) { var F = function () {}; F.prototyp = o; zwróć nowe F(); }; } var another_stooge = Object.create(stooge); Tak naprawdę nie zrozumiałem sensu i korzyści z tworzenia tej funkcji.


title: Czy modyfikacje projektu open source można uznać za tajemnicę handlową?

text: Podczas pracy dla pracodawcy, jeśli ktoś modyfikuje, przepisuje, wnosi lub zmienia oprogramowanie open source, w jakich przypadkach może to być kiedykolwiek uznane za tajemnicę handlową? Tajemnica handlowa, FWIW, jest definiowana przez wikipedię jako: > Tajemnica handlowa to formuła, praktyka, proces, projekt, instrument, wzorzec > lub kompilacja informacji, które nie są ogólnie znane lub nie są możliwe do ustalenia >, za pomocą których firma może uzyskać przewagę ekonomiczną nad > konkurentami lub klientami. W niektórych jurysdykcjach takie tajemnice są określane > jako „informacje poufne”, ale nie powinny być określane jako > „informacje niejawne”, ze względu na charakter tego słowa w USA.


title: Jakie są kroki, aby nauczyć się tworzenia aplikacji internetowych w oparciu o AJAX?

text: Jestem kompletnym starterem w tworzeniu stron internetowych, ponieważ znam tylko podstawy HTML i CSS, chociaż mam historię tworzenia desktopów. Jaka jest zwykła mapa drogowa rozpoczęcia pracy z aplikacjami internetowymi w oparciu o AJAX? Zdecydowaliśmy się użyć zestawu narzędzi Dojo jako naszej biblioteki javascript. Czy poniższa mapa jest wykonalna? 1-Naucz się podstawowego JavaScriptu (już na nim) 2-Dowiedz się, czym jest DOM 3-Zacznij od dokumentacji i przykładów Dojo 4-Zdobądź AJAX z Dojo Addendum: Moim celem nie jest zostanie profesjonalnym programistą, który tworzy publiczne strony internetowe, ale to nie moja specjalność. Próbuję zbudować interfejs do produktu wbudowanego, który rozwija moja firma. Wybraliśmy dojo głównie dlatego, że zapewnia widżety ułatwiające tworzenie interfejsu. Po prostu próbuję znaleźć najłatwiejszy sposób, aby to zrobić. Otrzymałem kilka satysfakcjonujących odpowiedzi i mam trudności z wybraniem najlepszego.


title: Czy Haskell/Clojure faktycznie nie nadaje się do systemów dynamicznych, takich jak symulacja cząstek?

text: W poprzednich pytaniach powiedziano mi, że funkcjonalne języki programowania nie są odpowiednie dla systemów dynamicznych, takich jak silnik fizyczny, głównie dlatego, że mutowanie obiektów jest kosztowne. Na ile realistyczne jest to stwierdzenie i dlaczego?


title: Dlaczego wyrażenia regularne są tak chorobliwie atrakcyjne?

text: Dowód 1, Dowód 2, myślę, że nie będzie trudno przypomnieć sobie inne przykłady. Rzecz w tym, że jeśli istnieje więcej niż jeden sposób rozwiązania problemu, programista PHP (zwykle przeglądam tag PHP na StackOverflow) poprosi o pomoc w rozwiązaniu problemu z wyrażeniami regularnymi. _Nawet gdy_ będzie to mniej ekonomiczne, _nawet gdy_ podręcznik php sugeruje (link) użycie `str_replace` zamiast jakiejkolwiek funkcji `preg_*` lub `ereg_*`, gdy nie są wymagane żadne wymyślne reguły zastępowania. Czy ktoś ma pojęcie, dlaczego tak się dzieje? Nie zrozum mnie źle, niektórzy z moich najlepszych przyjaciół to wyrażenia regularne i nie pogardzam Perlem. To, czego nie rozumiem, to dlaczego nie szukam alternatyw, nawet jeśli przesada jest oczywista (regex do przełączania ciągów) lub złożoność kodu rośnie wykładniczo (regex do pobierania danych z html _w PHP_ )


title: Własny wzorzec projektowy wyjątku lub delegacji, aby wyjść z programu?

text: Piszę aplikację w języku Java, która korzysta z projektowania wzorców MVC. Mam 4 główne klasy: Main, Controller, Model, View. Main zainicjuj pozostałe trzy i uruchom launchMenu() w nieskończonej pętli, metody zawartej w Controller. To launchMenu z kontrolera uruchamia metodę launchMenu innej klasy: MenuHandler, która konfiguruje akcje (przy użyciu mojego własnego wzorca projektowego polecenia) i przypisuje je do każdej opcji z mojego wyliczenia UserOperationsMenu. Mam kilka wątpliwości co do sposobu obsługi UserOperationsMenu.EXIT. Moje pytanie dotyczy tego, co byłoby lepsze i bardziej logiczne: 1. Używając wyjątku nadrabiam zaległości w ciele pętli Main i wrzucam go do mojej klasy ExitAction przypisanej do UserOperationsMenu.EXIT? 2. Tworzenie obiektu Delegate in Controller, który przekazuję do MenuHandler i ExitAction, abym mógł wydać polecenie z ExitAction, aby wyjść z programu? Myślałem o użyciu zmiennej logicznej w moim while w Main i zwracaniu false, gdy chcę zakończyć program. Ale nie podoba mi się ten pomysł. **UWAGA** : Nie chcę używać bezpośrednio System.exit(0), ponieważ najpierw muszę wykonać kilka zadań poza moim ExitAction.


title: Jak radzisz sobie z „wsparciem” swoich produktów (inhouse)

text: Czy masz jakiś proces aktualizacji? Załóżmy, że jesteś „wewnętrznym” sklepem deweloperskim dla php w Twojej firmie. Tworzysz mnóstwo aplikacji dla innych jednostek. Czy masz coś w stylu „Wsparcie kończy się za 2 lata” ? Co się stanie, jeśli stworzysz aplikację dla php 5.3, a ta aplikacja nie będzie działać z php „6”, lub inny framework, którego używasz, nie będzie już utrzymywany? Chciałbym usłyszeć kilka pomysłów :-)


title: Prezentacja Opensource dla MVC w Java Swing

text: Stworzyłem już małe desktopowe aplikacje CRUD przy użyciu Java/Swing. Z perspektywy czasu nie jestem pewien, czy ogólny projekt tych aplikacji jest dobry. Poczytałem też trochę o MVC i przejrzałem różne tutoriale Swinga. Mój problem polega na tym, że mam bardzo teoretyczną wiedzę na temat MVC, az drugiej strony większość zasobów Swinga nie implementuje wzorca MVC. Teraz chciałbym ubrudzić sobie ręce i zobaczyć, jak MVC jest zaimplementowany w Swingu w rzeczywistej aplikacji. Czy jest jakiś projekt opensource, który mógłbyś polecić? Ciekawe byłoby też mieć więcej niż jeden projekt, zobaczyć różne podejścia. Najlepiej pasowałoby oprogramowanie, które wykorzystuje relacyjną bazę danych w zapleczu, aby zobaczyć ogólny projekt, który mogę porównać z moimi poprzednimi aplikacjami.


title: Jak uratować młody i umierający projekt?

text: Publikuję to anonimowo, ponieważ nie chcę wpaść w potencjalne kłopoty. Mam duży problem. Niedawno dołączyłem do zespołu, który ma mniej niż rok. Jestem tu od miesiąca od rozpoczęcia projektu. Struktura firmy wygląda tak: * Właściciel (nietechniczny) * Kierownik projektu (nietechniczny) * Główny Developer (techniczny, ale zły) Ten projekt to strona internetowa używająca ASP.Net, którą Lead Developer zaprojektował okropną architekturę dla. Musisz mi wierzyć na słowo, ale zasadniczo sposób, w jaki jesteśmy zobowiązani do tworzenia stron internetowych, daje nam ponad 3 minuty ładowania na jednej stronie internetowej przez VPN w trybie debugowania. Nastąpiło spiralę do tego stopnia, że inni współpracownicy zgadzają się, że spędzają więcej czasu na czekaniu na załadowanie stron niż na rzeczywistym rozwoju. Teraz duży problem polega na tym. Project Manager nie zna się na technologii i przyznaje się do tego. Konkretnie stwierdził, że ufa Głównemu Deweloperowi w dokonywaniu właściwych wyborów dotyczących architektury aplikacji. Nikt w zespole nie wie, jaka byłaby opinia Właścicieli, ale każdy boi się robić fale w tej ekonomii (zwłaszcza ja). Co byś zrobił?


title: Dlaczego zajęcia nie powinny być projektowane jako „otwarte”?

text: Czytając różne pytania Stack Overflow i kod innych osób, ogólny konsensus co do tego, jak projektować klasy, jest zamknięty. Oznacza to, że domyślnie w Javie i C# wszystko jest prywatne, pola są ostateczne, niektóre metody są ostateczne, a czasem nawet klasy są ostateczne. Ideą tego jest ukrycie szczegółów implementacji, co jest bardzo dobrym powodem. Jednak przy istnieniu `protected` w większości języków OOP i polimorfizmie, to nie działa. Za każdym razem, gdy chcę dodać lub zmienić funkcjonalność klasy, zwykle przeszkadzają mi prywatne i ostateczne umieszczenie wszędzie. Tutaj liczą się szczegóły implementacji: przejmujesz implementację i rozszerzasz ją, doskonale wiedząc, jakie są tego konsekwencje. Jednak ponieważ nie mogę uzyskać dostępu do prywatnych i końcowych pól i metod, mam trzy możliwości: * Nie rozszerzaj klasy, po prostu obejdź problem prowadzący do bardziej złożonego kodu * Skopiuj i wklej całą klasę, zabijając kod możliwość ponownego wykorzystania * Rozwidl projekt To nie są dobre opcje. Dlaczego słowo `protected` nie jest używane w projektach napisanych w językach, które to obsługują? Dlaczego niektóre projekty wyraźnie zabraniają dziedziczenia po swoich klasach?


title: Podejście do nauki .NET?

text: Po kilku latach pisania starego dobrego, prostego, archaicznego, swojskiego C/C++, w końcu poddam się i nauczę .NET. Szukam najlepszego sposobu, aby szybko stać się kompetentnym .NET. Używam VS2005 C/C++ Express i widzę, że w kreatorze „nowego projektu” jest wybór CLR. _Myślę_, że to musi być droga do świata kodu zarządzanego. Czy to rozsądny wpis do .NET? Czy zamiast tego muszę nauczyć się C# lub jakichś szalonych rzeczy? A może [drżenie] CLR to tylko pierwszy krok do .NET?


title: Zanurz się w dziedzinie bezpieczeństwa informacji?

text: Dla świeżo upieczonego absolwenta ze sporym wykształceniem (głównie webowym) - jaki jest najłatwiejszy sposób na włamanie się do dziedziny bezpieczeństwa? Czy certyfikaty są koniecznością? Czy można znaleźć pracę stażystów zajmujących się takimi rzeczami? Dziękuję


title: Gdzie mogę uzyskać specyfikację architektury rozproszonej relacyjnej bazy danych?

text: Zajmuję się tworzeniem systemu DBMS, który powinien być w stanie połączyć się z IBM DB2 za pośrednictwem protokołu DRDA. Znalazłem podręcznik referencyjny DRDA, który wspomina „DRDA Implementation Programmer's Guide, SC21-9529” jako publikację o DRDA i wydaje się, że ten podręcznik jest dokładnie tym, czego szukałem. Problem w tym, że nie mogę go znaleźć w sieci. Gdzie mogę uzyskać ten dokument lub inny porównywalny dokument wyjaśniający wdrażanie DRDA?


title: Czy książki o programowaniu tematycznie są dobrym pomysłem?

text: Mam znajomego, który zaczyna studia magisterskie z psychologii. Częścią tego, czego się uczy, jest tworzenie aplikacji testowych na potrzeby prób. Po przeczytaniu kupił książkę, która miała być przeznaczona dla psychologów, chociaż okazało się, że nie jest to zbyt dobra książka o programowaniu i opowiedział się za czymś, co uważam za złe praktyki. Poinstruowałem go, aby kupił standardową książkę do nauki vb.net od znanego wydawcy. Więc pytanie, czy istnieje jakiś dobry powód, dla którego standardowe metodologie programowania nie powinny być stosowane w niektórych dyscyplinach.


title: Jak działa programowanie po stronie klienta

text: W ogóle nie pochodzę z web-developmentu, ale chcę zbudować aplikację internetową. Jak dotąd przyjrzałem się wszystkim rzeczom po stronie serwera (na przykład myślę, że moim stosem będzie Linux + node.js + ExpressJS + MongoDB) i wiele się nauczyłem! W tym momencie czuję się komfortowo konfigurując serwer HTTP, routing żądań, używając interakcji RESTfull z bazą danych i obsługując dynamiczny HTML za pomocą silnika szablonów HTML, takiego jak ejs lub Jade. Patrzyłem nawet na Websockets jako sposób na nawiązanie połączenia TCP, aby dodać szybką interakcję z użytkownikiem bez odświeżania strony. Teraz chcę robić ładne rzeczy; dodawaj wykresy, zakładki itp. do moich aplikacji internetowych! Przyjrzałem się rzeczom takim jak Dojo, JQuery, CanvasJS, AngularJS ect i wszystkie wydają się fajne. Problem polega na tym, że teraz, gdy o tym myślę, nie mam pojęcia, jak działa programowanie po stronie klienta. Na przykład w AngularJS mogę znaleźć coś takiego: <head> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script> <script src="components.js"></script> </head> Co to oznacza? Czy mój serwer faktycznie zastępuje plik `"components.js"` właściwym kodem `"componennts.js"` przed przesłaniem odpowiedzi? Co się dzieje ze źródłem `https://ajax...`? Czy przeglądarka (lub serwer?) rzeczywiście musi przejść do tego adresu URL i pobrać kod? Jak powiedziałem, jeśli o mnie chodzi, serwer odpowiada dokumentem HTML złożonym ze znaków ASCII. Co zatem faktycznie działa po stronie klienta i jak otrzymuje ten kod? (tj. na V8 lub cokolwiek).


title: Dlaczego techniczne/programistyczne ekrany telefonów skupiają się na dziedziczeniu?

text: Zauważyłem, że w większości technicznych ekranów telefonów pytania programistyczne skupiają się na dziedziczeniu. Na przykład: * Jeśli klasa ma być dziedziczona, co należy zrobić z destruktorem? (Odpowiedź: spraw, aby była wirtualna) * O co chodzi z dostępem publicznym/prywatnym? * Co jest „chronione”? * Itd. itd. Uderza mnie, że w dzisiejszych czasach jest więcej znaczących pytań do zadawania. I, IMHO, poleganie na dziedziczeniu jako podstawowym rozwiązaniu projektowym problemu poza obiektami jest nieco problematyczne. Czy się mylę? Czy znajomość dziwactw dziedziczenia jest najlepszym sposobem oceny umiejętności technicznych? EDIT Komentatorzy poprosili mnie o bardziej szczegółowe wyjaśnienie, dlaczego uważam, że poleganie na pytaniach opartych na OO jest problematyczne. Zobaczmy... Zasadniczo myślę, że jest wiele fajnych, nie-OO pytań, które możesz zadać. Na przykład: * (C++) Jaka jest różnica między mapą a multimapą? * (C++) Jakie są dwa rodzaje rzeczy, których możesz użyć jako argumentów szablonu? * (C#) Co to jest metoda rozszerzenia? * (Perl) Jakie ograniczenia, jeśli w ogóle, dotyczą liczby argumentów, które funkcja może przyjąć? * (Python) Jakie są różne sposoby używania importu i jakie są konsekwencje tych taktyk? Twierdzę, że powyższe pytania są również całkiem przyzwoitymi pytaniami o odchwaszczanie. Więc moje pytanie na tym forum brzmi: Dlaczego osoby sprawdzające telefon nie zadają pytań takich jak te powyżej?


title: Czy powinienem utworzyć diagram przypadków użycia dla każdego ekranu?

text: Czy w projektach z wieloma przypadkami użycia można tworzyć różne diagramy przypadków użycia, po jednym dla każdego ekranu? Albo nie powinienem kierować się GUI oprogramowania, aby to zrobić, dlaczego? Dla wyjaśnienia, oprogramowanie już istnieje, a ja tylko dokumentuję to do mojego końcowego projektu licencjackiego.


title: Czy konieczne jest dodanie domyślnego przypadku podczas używania skrzynek przełączników?

text: Podczas ostatniego przeglądu kodu zostałem poproszony o umieszczenie przypadków `default` we wszystkich plikach wszędzie tam, gdzie używany jest blok `switch`, nawet jeśli nie ma nic do zrobienia w `default`. Oznacza to, że muszę wstawić domyślną wielkość liter i nic w niej nie pisać. Czy to właściwa rzecz? Jakiemu celowi miałby służyć?


title: Józef ponownie odwiedził - aby uzyskać sekwencję egzekucji

text: Czytałem tę stronę Mathworld na temat problemu Józefa: http://mathworld.wolfram.com/JosephusProblem.html Z tego, co zrozumiałem, po uzyskaniu _miejsca w sekwencji wykonywania_ możemy zastosować _permutację odwrotną_ (co wydaje się proste), aby uzyskać kolejność wykonania. Ale nie mogłem zrozumieć, jak obliczyć _miejsce w sekwencji wykonania_ , biorąc pod uwagę `n, k` tj. dla `n = 4, k = 2`, jak dojść do `{4, 1, 3, 2}` I najbardziej interesuje mnie _wdrożenie_ rozwiązania (zrobiłem zwykłe cykliczne listy itp.), ale jeśli są lepsze sposoby, chcę spróbować/zrozumieć.


title: Czy znaczenie i użycie terminu „ROM” jest różne w różnych urządzeniach?

text: **ROM - Pamięć tylko do odczytu** Czy ten termin oznacza _pamięć, która **powinna być tylko odczytywana**, a nie zapisywana do_ , **czy** _pamięć, która **może być tylko odczytywana_** ? „ROM w komputerach PC i laptopach to zwykle oddzielne układy na płycie głównej, na której jest obecny BIOS (proszę mnie poprawić, jeśli się mylę). Czy można je nadpisać (chyba że możemy)? Jaka jest różnica między pamięcią ROM a „pamięcią wewnętrzną” w telefonie z Androidem?Wydaje się to samo.


title: Zaleta monitorowania zmian plików za pomocą interfejsu API systemu Windows zamiast ręcznego

text: Opracowałem oprogramowanie Windows około rok temu. Częścią tego było monitorowanie kilku plików konfiguracyjnych pod kątem ręcznych zmian wprowadzanych przez użytkownika i ponowne uruchomienie określonej usługi, jeśli którakolwiek z tych zmian. Więc zastosowałem najprostsze podejście. Ładuję je jako ciąg w pamięci i po kilku sekundach odczytuję najnowszy plik i porównuję go z tym w pamięci. Ponieważ pliki są bardzo małe (mniej niż 500 KB), program nie zużywa dużo pamięci. Używam tej aplikacji, ponieważ jest ona opracowana i nie mam z tego powodu żadnych problemów z wydajnością. Ale kilka dni temu zauważyłem, że program ma najwyższą pozycję dla `I/O Read Bytes` w menedżerze zadań. Po kilku godzinach działania komputera, `I/O Read Bytes` przez ten program stają się znacznie wyższe niż pozostałe procesy. Tak więc moje pytanie brzmi, czy powinienem martwić się wysoką wartością `I/O Read Bytes`. Czy ma to jakiś negatywny skutek (może na dysku twardym), którego mi brakuje. Czy implementacja funkcjonalności monitorowania zmian plików za pomocą Windows API ma jakieś zalety, które są warte wysiłku wymaganego do jej wdrożenia?


title: Jak najlepiej wykorzystać irytujący projekt

text: Niedawno przydzielono mi zadanie zarządzania małym projektem. Projekt ma pewne aspekty technologiczne, ale praca polega głównie na wykonywaniu czynności zarządczych: planowanie, upewnianie się, że ludzie robią to, co mają, chodzenie na wiele spotkań itp. Zasadniczo nie jest to tak, jak zrobiłby to przeciętny programista lub nawet lider zespołu lubię spędzać czas. Ponieważ nie zamierzam się z tego wymykać, zacząłem żałować, że nie mogę teleportować się do pewnego momentu po zakończeniu projektu. Po zastanowieniu się nad tym doszedłem do wniosku, że **nienawidzę takiej pracy** i nie mogę sobie pozwolić na pracę nad projektem, który każe mi myśleć w ten sposób. **Muszę jak najlepiej wykorzystać ten projekt.** Więc moim celem jest maksymalne wykorzystanie tego niechcianego projektu. Jak mogę to zrobić? Myślałam o pisaniu codziennie listy „Czego się dzisiaj nauczyłam”, która pomoże mi wyraźnie zobaczyć, że uczę się z tego i nie marnuję swoich umiejętności. Czy masz jakieś zalecenia dotyczące tego, co mogę zrobić?


title: Jak wprowadzić swój zespół w funkcjonalny styl kodowania?

text: Mam sytuację, w której większość osób w mojej grupie wywodzi się ze środowiska programowania obiektowego z niewielkim lub zerowym zrozumieniem programowania funkcjonalnego. Nawet podstawowe rzeczy, takie jak zamknięcia. Jakieś sugestie, co może być dobrym sposobem na wprowadzenie ich w funkcjonalny styl kodowania? Wiele kodów, które wykonujemy, można skrócić, jeśli wykonamy funkcjonalny sposób dla naszych konkretnych przypadków. Wygłosiłem już kilka prezentacji na temat paradygmatów funkcjonalnych i kodowania. Niestety nie używamy odpowiedniego funkcjonalnego języka programowania, takiego jak Haskell (w zasadzie przestarzały kod jest w C, C++, Java), więc musimy zrobić z nimi wszystko.


title: <<access>> i <<use>> w diagramach komponentów UML

text: Jak zdecydować, czy dla strzałek "-->" w diagramach składowych napisanych w UML należy przyjąć notację `<<access>>` czy `<<use>>`?


title: Nowy absolwent z moją pierwszą pracą programistyczną w kolejce: Jakiej rady chciałbyś otrzymać na tym etapie?

text: Jestem nowym absolwentem z moją pierwszą pracą w kolejce (1 solidna oferta, inne miejsce wciąż się do mnie zaleca, więc nie jestem pewien, co jeszcze będę robił). Jakie rady chciałbyś mieć na początku? Jeśli chodzi o zrobienie najlepszego wrażenia? Jeśli chodzi o upewnienie się, że otrzymasz najlepsze recenzje? Jeśli chodzi o przygotowanie się do najlepszego rozwoju kariery?


title: Konstruowanie deterministycznego automatu skończonego dla danego wyrażenia regularnego

text: Mam kilka pytań egzaminacyjnych do mojej klasy kompilatorów i chciałem sprawdzić, czy moje rozwiązania są poprawne. Pierwsze pytanie brzmi: > Rozważ język, w którym liczby zaczynają się od opcjonalnego znaku minus, > po którym następuje jedna lub więcej cyfr dziesiętnych, po których następuje opcjonalny punkt dziesiętny >. Jeśli liczba zawiera kropkę dziesiętną, następuje po niej jedna lub więcej > dalszych cyfr dziesiętnych. Wyraź składnię liczb w tym języku jako > wyrażenie regularne. A dla mojej odpowiedzi: > ("-")? ["0"-"9"]+ ("."["0"-"9"]+)? Drugie pytanie to: > Skonstruuj deterministyczny automat skończony do rozpoznawania liczb > jak opisano w pytaniu 1 A moja odpowiedź brzmi: ![Schemat automatu skończonego](http://i.stack.imgur.com/vfFf8.png ) Gdzie stany 2,4,5 i 6 to zaciski. Czy te rozwiązania są prawidłowe? Nie jestem pewien, jak powinien wyglądać DFA i jakie są różnice w stosunku do NFA. Dziękuję !


Czy IndexedDB może być używany w hybrydowych aplikacjach offline na Androida? Wypróbowałem [przykład przedstawiony w tym poście1, podczas gdy działa on na moim laptopie w Google Chrome, nie działa w WebView w mojej aplikacji na Androida. Część HTML aplikacji ładuje się dobrze w widoku sieciowym, ale część JavaScript zawierająca wszystkie elementy Indexeddb nie jest w ogóle wykonywana. Co jest nie tak?


title: Przechowywanie danych offline za pomocą javascript

text: Moje pytanie dotyczy przechowywania danych w trybie offline i ewentualnie, czy będę musiał sprowadzić zewnętrznego programistę, czy można się tego nauczyć w ciągu kilku tygodni? Witryna, nad którą pracuję, będzie miała interfejs, w którym użytkownicy będą się logować i przechodzić przez serię quizów w formie checkboxów, rozwijanych menu i innych. Każda strona / obszar quizu może mieć łącznie 20-100 pól wyboru w serii 3-5 wierszy ze względu na kompleksowy charakter oczywiście. Mogę to zrobić - wiem, jak zakodować quiz i zwrócić poprawną lub niepoprawną odpowiedź na podstawie każdego pola wyboru i przedstawić skumulowany wynik (tj. masz 57% poprawnych). Problem polega na tym, że chciałbym zapisywać wyniki użytkowników i informować ich o postępach. Kiedy ukończą wszystkie quizy, chciałbym mieć wizualne przedstawienie ich wyników w każdym obszarze. Przechowywanie danych wyjściowych z ich wyników w trybie offline jest miejscem, w którym myślę, że mogę napotkać problem z brakiem doświadczenia w kodowaniu. Chciałbym również mieć pasek boczny z postępem każdej sekcji (10-15) z zielonym paskiem procentowym ukończenia lub % poprawnym, który byłby z tego wyciągnięty. Nigdy nie musiałem kodować czegoś, co przechowuje takie informacje w trybie offline - więc wracając do mojego pytania - czy lepiej byłoby nauczyć się potrzebnego języka, czy też wprowadzić programistę/programistę do obsługi back-endu.


title: Poszukujesz czasu, w którym każdy może wypróbować dowolne pomysły na szybsze działanie oprogramowania?

text: Czasami sztuczki wydajności oprogramowania można znaleźć na podstawie metodologicznych i dokładnych poszukiwań. Czasami próbowanie szalonych pomysłów wymaga rozbieżnego myślenia i odwagi. Czasami pomysł to dopiero początek, za którym trzeba podążać ciężką pracą. Jak zapewnić okres, w którym każdy może wypróbować różne pomysły, aby poprawić wydajność oprogramowania, nad którym pracujemy? Wszyscy w zespole mają co najmniej kilkumiesięczne doświadczenie z oprogramowaniem i są w tym bardzo dobrzy. Czy zgadzasz się, że rozbieżne myślenie pomoże znaleźć sposoby na poprawę wydajności oprogramowania? Czemu? Dlaczego nie? Jakie techniki pozwolą nam szybko wypróbować pomysł na optymalizację? Czy szybka prędkość kodowania jest konieczna, aby uzyskać dobre wyniki po wypróbowaniu? Wreszcie, ile „czasu” należy przeznaczyć, aby zapewnić dobre wyniki bez stwarzania możliwości słabnięcia? Czy konieczne jest eksperymentowanie, aby udowodnić, że istnieje „szybszy sposób na zrobienie czegoś”? (Dodano 2011-06-07) Powiązane: * Jakie są Twoje strategie, aby w sprytny sposób poprawić poziom swojego zespołu? * Kiedy hacki kodu stają się złe? ( **Tylko dla celów nagród** -2011/06/07 wielkość zespołu to 2-4 programistów, bez dedykowanej kontroli jakości. Cały kod, testy jednostkowe i testy wydajności wykonane przez programistów. Ze względu na charakter projektu, wynik profilera przydaje się do pokazywania proporcjonalnego czasu wykonania, nawet jeśli nie ujawnia ani jednego wąskiego gardła.)


title: Format studium wykonalności w SDLC

text: Czy istnieje określony format studium wykonalności w SDLC? Jeśli tak, czy znasz jakieś źródła, w których mogę znaleźć więcej informacji na ten temat? czy możesz mi pokazać chociaż zarys tego, co powinna zawierać?


title: Dlaczego w PHP nie ma możliwości przeciążania właściwości statycznych?

text: ## Intro PHP pozwala na przeciążenie wywołań metod i dostępów do właściwości poprzez deklarację magicznych metod w klasach. Umożliwia to kod taki jak: class Foo { funkcja publiczna __get($nazwa) { return 42; } } $foo = nowy Foo; echo $foo->missingProperty; // wyświetla "42" Oprócz przeciążania właściwości i metod instancji, od PHP 5.3.0 możemy również przeciążać wywołania metod `statycznych` przez nadpisanie magicznej metody `__callStatic`. ## Czegoś brakuje To, czego wyraźnie brakuje w dostępnej funkcjonalności, to możliwość przeciążenia _właściwości statycznych_ , na przykład: echo Foo::$missingProperty; // błąd krytyczny: dostęp do niezadeklarowanej właściwości statycznej To ograniczenie jest jasno udokumentowane: > Przeciążanie właściwości działa tylko w kontekście obiektowym. Te magiczne metody > nie zostaną uruchomione w kontekście statycznym. Dlatego te metody nie powinny być > deklarowane jako `statyczne`. Od PHP 5.3.0 ostrzeżenie jest wyświetlane, jeśli jedna z magicznych > metod przeciążania jest zadeklarowana jako `statyczna`. ## Ale dlaczego? Moje pytania to: 1. Czy jest jakiś techniczny powód, dla którego ta funkcja nie jest obecnie obsługiwana? A może (drżenie) powód polityczny? 2. Czy w przeszłości były jakieś przerwane próby dodania tej funkcjonalności? Co najważniejsze, pytanie **nie** brzmi: „jak mogę mieć dynamiczne właściwości statyczne w PHP w przestrzeni użytkownika?”. To powiedziawszy, jeśli znasz szczególnie uroczą implementację opartą na `__callStatic`, którą chcesz udostępnić, zrób to.


title: Pomocnik/konstruktor zapytań SQL?

text: Mamy interfejs oparty na flexie, który komunikuje się przez JDBC z niektórymi bazami danych. Część GUI ma kilka formularzy, które pozwalają użytkownikom konstruować Zapytania w SQL w celu wycofania rekordów z bazy danych. Otrzymujemy jednak wiele zgłoszeń pomocy technicznej, które odnoszą się do podsłuchiwania nieprawidłowego SQL i ogólnego braku wiedzy na temat SQL, co powoduje, że mają problemy z tworzeniem zapytań. Byłoby bardziej sensowne, gdybyśmy mogli mieć jakiś rodzaj walidacji, taki jak konstruktor zapytań SQL. Obecnie mamy polecenie „Test SQL”, które sprawdza poprawność, jeśli zwraca prawidłowy wynik z bazy danych, ale chciałbym pójść dalej i mieć coś, co pozwoli ci budować zapytania. Czy ktoś widział jakieś dobre przykłady, jak to osiągnąć we front-endzie opartym na Flexie? (lub nawet nieelastyczny, tylko po to, aby dać nam kilka pomysłów na projekt). Daj mi znać, jeśli potrzebujesz więcej szczegółów w komentarzach. \--Edycja-- Tylko dla jakiegoś tła, oto link do tego, jak obecnie wygląda GUI. Jest to podejście oparte na kreatorze formularzy, którego częścią jest wprowadzanie SQL: ![tutaj wprowadź opis obrazu](http://i.stack.imgur.com/ruHTO.jpg) Wolę zobaczyć więcej opcji tworzenia SQL z być może jakimś „kalkulatorem SQL”? Lub otwarty na inne sugestie – to również wiąże się z UX.


title: Jakie znaki specjalne należy zezwolić na numer telefonu?

text: Projektuję więc stronę internetową, która będzie używana dla globalnych użytkowników, w tym użytkowników z Kanady, USA, Indii, Wielkiej Brytanii itp. Muszę zastosować walidacje dla tego pola numeru telefonu, ale nie jestem pewien, jak najlepiej to zrobić . Niektóre z poprawnych formatów, o których mogę pomyśleć, to: 1. 1800123456 (Indie) 2. Użycie „-” w numerach telefonów w USA. Jestem trochę zdezorientowany co do znaków specjalnych, które powinienem wprowadzić użytkownik (np. `- / ()`). Jak inni rozwiązali to w przeszłości?


title: Najlepsze miejsce do nauki Component Object Model

text: Muszę nauczyć się COM dla mojego obecnego projektu. Jestem noobem i nie udało mi się znaleźć dobrych punktów wyjścia do COM. Zaglądałem do MSDN i googlowania... Znalazłem kilka interesujących artykułów na codeproject.com, ale nie jestem zadowolony. Dlaczego używamy COM? Dlaczego istnieje? W jakich miejscach istnieje? ..... i tak dalej.. Czy możesz mi powiedzieć, gdzie mogę znaleźć odpowiedzi na te pytania?


title: Odroczone licencjonowanie Open Source

text: Czy istnieją ustalone modele wypuszczania początkowo zastrzeżonego fragmentu oprogramowania w warunkach FLOSS po określonym czasie lub określonym momencie? Głównym problemem jest to, że wszystkie zaangażowane strony muszą być w stanie ufać, że licencjonowanie Open Source faktycznie odbędzie się w określonym czasie i żadna strona nie może dalej opóźniać ani anulować tego procesu. Oczywiście taki model ma swoje problemy, na przykład problematyczne jest radzenie sobie z wkładami „z zewnątrz”, prawnie i technicznie. Ghostscript jest wybitnym przykładem wykorzystania i porzucenia modelu odroczonego. Jeśli jednak niektóre zaangażowane strony będą nalegać na zachowanie własności oprogramowania, przynajmniej przez określony czas, wówczas jedynymi opcjami są odroczone licencjonowanie Open Source lub w ogóle brak licencji Open Source. Chyba czytałem o usługach, które służą jako zaufane strony, które dbają o Open Sourcing oprogramowania. Nie udało mi się jednak wypatrzyć żadnego z nich.


title: Jakie koncepcje ludzie powinni zrozumieć przed programowaniem „dużych” projektów?

text: Osoba początkująca w programowaniu może być w stanie zrobić dobry mały program. Jednakże, kiedy zaczynasz pracę nad czymkolwiek większym niż mały (pomyśl o pliku źródłowym 1 C lub module Python), istnieją pewne ogólne koncepcje, które stają się znacznie ważniejsze podczas pracy z „dużymi” (pomyśl o wielu modułach Pythona lub plikach C) programach ; jednym przykładem jest modułowość, innym jest wyznaczenie celu. Niektóre z nich mogą być oczywiste dla osób, które chodziły do szkoły, aby uczyć się programowania; jednak ludzie tacy jak ja, którzy nie chodzili na zajęcia z programowania, muszą czasem uczyć się tych rzeczy z doświadczenia, prawdopodobnie tworząc w międzyczasie nieudane projekty. =========================================================== Proszę wyjaśnić, czym jest to pojęcie i dlaczego pojęcie to staje się ważniejsze dla dużych programów niż dla małych programów. Proszę podać tylko 1 koncepcję na odpowiedź.


title: Czy warto zaimplementować usługi OpenID w aplikacjach wewnętrznych i/lub klienckich?

text: Rozmawiałem z moimi uczelniami na temat logowania się przy użyciu konta OpenID, konta Google itp. w CMS naszych klientów i/lub systemach wewnętrznych, których używamy, ponieważ otrzymaliśmy kilka próśb w tej sprawie zarówno od obecnych, jak i nowych klientów . Jakie jest twoje podejście do tego? Czy to zły pomysł? Specjalnie dla naszych klientów, w ich spersonalizowanych systemach zarządzania treścią? Naprawdę myślę, że może to być poważny problem z bezpieczeństwem, ale czy normalne logowanie, dostarczone przez nas, w rzeczywistości byłoby takim samym zagrożeniem dla bezpieczeństwa?