title: Czy sławny stopień informatyki jest wart swojej ceny?

text: > **Możliwy duplikat:** > Czy muszę studiować na renomowanej uczelni? Obecnie jestem w liceum i próbuję zastanowić się, co chcę robić po ukończeniu szkoły. Wiem, że pójdę na studia i chcę mieć dyplom z informatyki, jednak nie jestem do końca pewien, dokąd chcę się udać (nie rozpocząłem jeszcze procesu aplikacyjnego). Mam już spore doświadczenie w programowaniu (latem byłem zatrudniany do programowania na lokalnym uniwersytecie) i jestem całkiem w stanie nauczyć się większości materiałów, z którymi się zetknąłem w książkach lub dokumentacja internetowa. Interesuje mnie, czy warto zdobywać stopień naukowy na dużej, znanej uczelni informatycznej za 50 000 dolarów rocznie, w przeciwieństwie do uczęszczania do lokalnej szkoły państwowej za jedyne 20 000 dolarów. Tylko dla mojego stopnia licencjata byłoby to o 120 000 $ więcej niż w przypadku szkoły państwowej. Słyszałem też, że to, gdzie zdobędziesz tytuł licencjata, nie ma większego znaczenia, jeśli planujesz uzyskać tytuł magistra. Wiele osób poleca pójście gdzieś, jak szkoła państwowa na licencjat, a następnie spróbuj dostać się do bardziej poważnej szkoły na studia magisterskie. Czy ktoś znalazł w tym jakąś prawdę? Zasadniczo, czy pójście do znanej szkoły informatycznej, aby uzyskać tytuł licencjata, naprawdę jest warte dodatkowego wydatku?


title: Czy muszę iść na renomowany uniwersytet?

text: Jako niedługo kończący szkołę średnią w USA, za kilka miesięcy stanę przed trudną decyzją: do której uczelni powinienem iść? Czy warto jechać do Cornell, Stanford lub Carnegie Mellon (oczywiście zakładając, że się tam dostanę), aby zdobyć dyplom z informatyki, staże i kontakty z profesorami, jednocześnie zaciągając ogromne długi; A może lepiej pójdę do SUNY Binghamton (prawdopodobnie najlepszej szkoły państwowej w Nowym Jorku) i nadal będę zdobywać całkiem przyzwoitą edukację, jednocześnie ratując się od długu wartego ponad sto tysięcy dolarów? Tak, wiem, że takie pytania zadawane były już wcześniej (a mianowicie tutaj i tutaj), ale proszę o wyrozumiałość, ponieważ nie znalazłem odpowiedzi, która pasowałaby do mojej konkretnej sytuacji. Przeczytałem dogłębnie te dwa powiązane pytania, ale nie odpowiedziały one na to, co chcę wiedzieć: 1. Tak, rozumiem, że pójście do znanej uczelni może potencjalnie nawiązać kontakt z kilkoma wspaniałymi profesorami i liderami w dziedzinie, ale średnio, jak to przekłada się finansowo? Chodzi mi o to, czy dobre kontakty opłaci się tak dobrze, że z łatwością pozbędę się ponad stu tysięcy dolarów długu? 2. A jak ma się do tego fakt, że mogę uzyskać tytuł magistra na piątym roku w Carnegie Mellon? Czy wyższy stopień od samego początku pomoże mi w znalezieniu lepiej płatnej pracy tuż po studiach, czy też dodatkowy rok jeszcze bardziej pogrąży mnie w długach? Brak konieczności pójścia na studia podyplomowe w celu uzyskania porównywalnego dyplomu będzie oczywiście wielką ulgą finansową, ale czy zdobycie go tak wcześnie przyniesie większą wartość? 3. A jeśli pojadę do SUNY Binghamton, które jest znacznie mniej znane niż to, o czym myślałem (chociaż jeśli są tam jacyś absolwenci, którzy chcą podzielić się swoim doświadczeniem, bardzo bym to wdzięczny), czy zamknę się drzwi, które potencjalnie zrekompensowałyby mój krótkoterminowy zysk ekonomiczny długoterminowymi korzyściami? Zasadniczo, czy korzyści krótkoterminowe przeważają nad potencjalną stratą długoterminową? Wszystkie odpowiedzi na te pytania wiążą się z moją ostateczną decyzją dotyczącą college'u (ponownie, pozwalając mi na podjęcie decyzji w tych szkołach), więc mam nadzieję, że zwrócenie się do wykwalifikowanych i kompetentnych ludzi z tej dziedziny pomoże mi dokonać właściwego wyboru (jeśli jest taki rzecz). * * * **Ponadto, proszę pamiętać:** Jestem w dość dziwnej sytuacji, w której nie mogę zapłacić za studia bez zaciągnięcia kilku pożyczek, ale otrzymam niewielką lub żadną pomoc finansową (prawdopodobnie federalną lub inną) ). Nie chcę się nad tym rozwodzić (więc bierz to za dobrą monetę), ale głównie z tego powodu zadaję to pytanie. * * * Wielkie dzięki! To wiele dla mnie znaczy. * * * **Edytuj:** Dziękujemy wszystkim za wspaniałe odpowiedzi! Wszystko przemyślane i dobrze napisane i żałuję, że nie mam czasu na napisanie do nich wszystkich komentarzy. Mam nadzieję, że będę mógł to zrobić, kiedy wrócę do domu ze szkoły i będę pracować później dziś wieczorem... * * * **Edytuj 2:** Wow! Nie do wiary, że otrzymałem tak wiele pomocnych odpowiedzi w tak krótkim czasie! Nie miałem czasu, aby odpowiednio usiąść i odpowiedzieć na wiele z nich, ale naprawdę doceniam wysiłek i zrobię to jutro. Wielkie podziękowania dla wszystkich, którzy napisali! * * * **Edytuj 3:** Dla tych, którzy są zainteresowani, wszedłem do CMU, Cornell i Binghamton i zdecydowałem się na Binghamton. CMU i Cornell nie udzieliły mi żadnej pomocy finansowej, podczas gdy Binghamton, będąc szkołą państwową, kosztuje mniej niż 20 000 dolarów rocznie, wliczając zakwaterowanie i wyżywienie. Kiedy dostałem listy o przyjęciu, decyzja była trudna, ale po wizycie w Binghamton i uświadomieniu sobie, jak dobra jest to szkoła (szkoły państwowe są poważnie niedoceniane w Stanach Zjednoczonych; to straszny problem – jak na to, co jest warte, okazuje się że Binghamton było jeszcze bardziej selektywne niż wiele prywatnych szkół, do których aplikowałem, nie żeby to z natury wiele znaczyło, ale po prostu jako miara), nie mogłem przepuścić. Poza tym odwiedziłem go w straszny, deszczowy dzień i wciąż byłem pod wrażeniem, więc wiedziałem, że to ten. ;) Robiąc rzeczywistą analizę finansową, zdałem sobie sprawę, że nigdy nie będę w stanie spłacić 60 000 $ rocznie wymaganych na CMU lub Cornell, tylko dzięki czemu wybór Binghamton będzie jeszcze lepszy. Chociaż to pytanie jest specyficzne dla mojego przypadku, mam nadzieję, że pomoże to komuś innemu na moim stanowisku. * * * **Edytuj 4:** Niedawno dowiedziałem się, że uczniowie na podobnej pozycji natknęli się na to pytanie, dlatego chciałbym przedstawić krótką aktualizację. Jestem niesamowicie szczęśliwy tutaj, w Binghamton, i gdybym musiał przejść przez cały proces studiów, nie wybrałbym żadnej innej szkoły. Myślę, że większość studentów jest szczęśliwa bez względu na to, dokąd się udają, ale dla mnie Binghamton było wspaniałym doświadczeniem. Chcę powiedzieć uczniom, że: wiem, że trudno jest oceniać szkoły bez zwracania uwagi na ich nazwy i reputację — wątpię, by Carnegie Mellon kiedykolwiek została uznana za _złą_ szkołę do studiowania informatyki — ale nie ignoruj szkół tylko dlatego, że nigdy o nich nie słyszałeś! Nie bój się dokonywać **praktycznych** wyborów. Wiem, że Binghamton nie jest uniwersytetem o światowej sławie, ale z tego, co widziałem, nasz program nauczania jest bardziej rygorystyczny i stanowi lepsze podstawy niż wiele najlepszych szkół, o których słyszałem, i jest znacznie tańszy. Dużo koncentrujemy się na zdobywaniu staży studenckich, pracy i możliwości badawczych, a mamy bardzo silne powiązania z firmami takimi jak Microsoft, Bloomberg, IBM, Lockheed Martin i kilkoma innymi. Jesteśmy bardzo _praktyczną_ szkołą — może nie jesteśmy sławni, ale jeśli tu przyjedziesz, dostaniesz doskonały fundament pod swoją karierę i prawie na pewno staż lub pracę. Poza tym jesteśmy na tyle mali, że studenci mogą dobrze poznać swoich profesorów (mam kilku przyjaciół, którzy są po imieniu z ich profesorami), co z pewnością pomaga, jeśli są zainteresowani prowadzeniem badań, których _dużo_ robimy w Binghamton. Nie wiedziałem o tym wszystkim, kiedy wybierałem Binghamton, i jest to jedna z tych rzeczy, których można się dowiedzieć o szkole dopiero, gdy tam pójdziesz — szczegóły takie jak te nie będą podkreślane w broszurach i czasopismach, a dowiesz się o tym poprzez doświadczenie. Chcę więc powiedzieć, że nie wybierajcie szkół wyłącznie na podstawie tego, czy o nich słyszeliście, czy nie, i bierzcie pod uwagę szkoły państwowe. Te lepsze, jak Binghamton, to bardzo dobry wybór. Przyjmij to z przymrużeniem oka: oczywiście, jeśli jesteś zmotywowany, wykwalifikowany i pracowity, i jeśli starasz się odnieść sukces, to dokąd pójdziesz, nie ma większego znaczenia, ponieważ zostaniesz zauważony, gdziekolwiek jesteś . Miałem szczęście z moimi stażami i ofertami pracy, a moje doświadczenia zdecydowanie były przypadkowe, ale jeśli stale doskonalisz swoje umiejętności i starasz się, możesz osiągnąć więcej niż Twoja szkoła kiedykolwiek będzie w stanie. Jeśli jesteś studentem i masz jakieś pytania na ten temat, nie wahaj się napisać do mnie. Chętnie pomogę odpowiedzieć na Twoje pytania: itai@itaiferber.net


title: Zasoby dla nowego programisty z wykształceniem matematycznym

text: Jestem prawie nowy w programowaniu, ale mam dość silne podstawy w matematyce (głównie algebrze i logice – np. algebrze uniwersalnej). Zawsze słyszałem, że istnieje silny związek między matematyką a programowaniem, ale książki o programowaniu, które przeglądałem, nie wydają się tego podkreślać. Dla porównania, zacząłem od Javy, ponieważ to jest to, czego potrzebuję, aby móc korzystać z pracy, w której jestem tego lata. Wyobrażam sobie, że większość autorów tych zasobów zakłada, że jeśli nie masz wykształcenia programistycznego, to nie będziesz mieć wykształcenia matematycznego. Wydaje mi się jednak, że korzystanie z podstaw matematyki, które muszę pomóc w procesie uczenia się, ma sens. Biorąc to wszystko pod uwagę, czy istnieją jakieś zasoby dla nowego programisty (miejmy nadzieję, że jest on związany z Javą), które również odwołują się do wprowadzanych pojęć matematycznych? Może wyjaśnianie rzeczy za pomocą analogii do matematyki? Przepraszamy, jeśli to pytanie nie jest właściwe. Próbowałem już szukać takiego zasobu lub odpowiedzi na to pytanie na tej stronie, ale nie miałem szczęścia.


title: W jaki sposób projektant publicznego API dochodzi do wniosku, co należy zapewnić na przyszłość, a co nie?

text: Często pracując z różnymi słoikami i badając funkcje szczególnie w narożnych przypadkach, często zdaję sobie sprawę i myślę, że jak to jest, że pomyśleli, że może to być przydatny scenariusz gdzieś w przyszłości, że może być używany, a API jest przydatne. Jak więc dochodzą do wniosku, co należy zapewnić, a czego nie? Innym problemem, z którym kiedyś się spotkałem, było to, że potrzebowałem pewnej funkcji i brakowało jej na liście, co uderzyło mnie ogromną wadą korzystania z API. Czy nie powinno być tak, że jeśli brakuje jakiejś funkcji, programista powinien sam ją zaprogramować, a nie cały czas polegać wyłącznie na API?


title: Kodowanie Zen dla Javy?

text: Właśnie widziałem pokaz kodowania zen. Myślę, że to świetna inwestycja w produktywność, jednak moja praca to 99% backendowe przetwarzanie danych przez Javę. Do tej pory znam tylko szablony w Eclipse, takie jak sysout i foreach (następnie wciskam CTRL+SPACJA w MS). Czy jest więcej kodowania Zen dla Javy?


title: Dlaczego tak trudno jest skłonić pracowników do aktualizacji narzędzia do śledzenia problemów?

text: Zawsze walczyłem o to, aby ludzie zaktualizowali swoje problemy, zarówno w mojej firmie, jak iw pracy. Miałem kilka przypadków, kiedy ludzie rzeczywiście robią to z dobroci serca, ale ~70% czasu muszę gonić ludzi. Będąc tym, który generalnie zajmuje się taką lub inną formą zarządzania (jestem przede wszystkim programistą), głównym powodem, dla którego staram się podać, jest to, że nie chcę gonić ludzi i przeszkadzać w pytaniu o postępy, ale nie chcę Myślę, że w końcu ludzie mają coś przeciwko temu, o co się pytają. W rzadkich i ekstremalnych przypadkach kończę aktualizacją ich zgłoszeń (kiedy muszę tworzyć raporty). Czy natknąłeś się na ten problem? Jak zachęciłeś programistów do częstego aktualizowania narzędzia do śledzenia problemów?


Czy praca ze złym kodem może osłabić twoje umiejętności programowania?


title: Jak odejść od zakodowanych na sztywno ścieżek w naszych procesach budowania?

text: Mamy zestaw narzędzi Java, które są budowane i uruchamiane lokalnie. Za każdym razem, gdy jeden z programistów wprowadza zmianę, wszyscy inni (w tym osoby nie będące programistami) muszą dokonać aktualizacji i zbudować narzędzia. Wszyscy używają maszyn z systemem Windows, więc ktokolwiek zaprojektował procesy budowania, zdecydował się umieścić wszystko w folderze o nazwie `C:\build` i zrzucić wszystkie pliki klas do odpowiednich folderów. Na przykład folder może wyglądać mniej więcej tak C:\build\firstTool\ C:\build\secondTool\ C:\build\settings.ini Mamy też ogromny folder biblioteki, do którego trafiają wszystkie słoiki, i jest on umieszczony tutaj C: \lib\ W rezultacie wiele klas po prostu zakłada, że właśnie tam będą przechowywane pliki i wszędzie mają zakodowane ścieżki. Co mogę zrobić, aby posprzątać? Nie chcę, aby użytkownicy musieli budować narzędzia, ani nie chcę, aby musieli aktualizować wszystkie wyewidencjonowane repozytoria po swojej stronie. Osobiście uważam, że deweloperzy powinni być tymi, którzy opiekują się wydaniami.


title: Jak mogę czuć się pewniej, jeśli chodzi o moje umiejętności programistyczne?

text: Programowanie nie jest mi obce. Po raz pierwszy zacząłem robić znaczniki (HTML, teraz proszę się ze mnie nie śmiej), gdy miałem 12 lat, a trochę BASIC, gdy miałem 13 (w tym momencie wiedziałem dużo o schematach blokowych, pseudokodach), ale potem zostałem upomniany Biologia w szkole średniej i dlatego przegapiłem „prawdziwą” wiedzę o programowaniu w językach takich jak C, Java itp. Zająłem się CS dla mojego UG B.E. (podobny do BS, ale o wiele bardziej teoretyczny). Nauczyłem się C&C++ (w mniejszym stopniu) sam (mój prof był totalnym utrapieniem, a klasa była wypełniona koderami (którzy nauczyli się tego już w szkole, a więc nie zwracali uwagi na zajęcia i nie niech słabsi śmiertelnicy, tacy jak ja, zwracają uwagę na klasę)) i mogliby stworzyć niesamowity program dodawania lub mnożenia (te, które teraz nawet przedszkolaki robią z o wiele większą finezją) i słabą znajomość Javy (co ostatnio nawet zardzewiały). Moim głównym problemem jest to, że zawsze czułem się nieadekwatny i uduszony moimi ograniczonymi umiejętnościami programistycznymi i umniejszony przez code-jocków (wierz mi, natknąłem się na tę stronę wieki temu, ale właśnie teraz mogę zdobyć się na odwagę, aby faktycznie opublikować pytanie) i czasami bywały nawet przygnębione wspomnianą niezdolnością. Większość ludzi twierdzi, że programowanie niekoniecznie dotyczy języka, ale stanu umysłu danej osoby i technik, które stosuje do rozwiązywania problemów/problemów. Zgadzam się z takimi odczuciami, ale czy mogę kiedykolwiek osiągnąć taki „stan umysłu”, a jeśli tak, to jak mam podejść do „Programowania/Kodowania” i czy są jakieś ustalone sposoby i kroki, przez które przechodzi się najbardziej, aby osiągnąć „Zen kodowania". Jak to zrobić? Nie zaszkodziłoby też, gdyby jakiś Święty chciał być mentorem tego uciskanego kawałka $#!^. PS Zawsze będę wdzięczny każdej osobie, która uzna mnie za wart swojego czasu, a jako bonus nazwałbym imieniem mój pierwszy kawałek Oprogramowania, który wysyłam. (Jeśli kiedykolwiek uda mi się go wysłać, np.) TL; DR: Nigdy tak naprawdę nie nauczyłem się "programowania/kodowania", nie mogę rozwiązać problemów, nawet jeśli spróbuję. Pomóż mi!


title: Kto powinien definiować, przydzielać, wdrażać i śledzić zadania w Scrumie?

text: Role w scrum to Product Owner, Scrum Master i Scrum Team. Historyjka użytkownika powinna również podzielić się na mniejsze części zwane zadaniami. Wydaje się, że zadanie składa się z czterech faz, a mianowicie definicji, przypisania, realizacji i wykonania. Kto powinien co robić w Scrumie z zadaniami? Czy to scrum master jest odpowiedzialny za aktualizowanie pozostałych godzin zadania, czy jest to odpowiedzialność programisty (zespołu scrumowego)? Czy programiści powinni przypisywać sobie zadania, czy jest to odpowiedzialność scrum mastera w towarzystwie właściciela produktu?


title: Dlaczego potrzebujemy różnych JS dla różnych przeglądarek?

text: Na jakie dokładnie różne rzeczy musimy uważać podczas pisania różnych plików JS, takich jak tablice, zmienne itp. Czy istnieje książka lub strona internetowa wyjaśniająca różnice między różnymi silnikami JS używanymi w przeglądarkach? Pracowałem nad czymś w naszej aplikacji i natknąłem się na problem z JS, szukałem rozwiązania i dowiedziałem się, że możemy potrzebować 2 różnych JS dla różnych przeglądarek, aby uzyskać dokładną funkcjonalność. Dlaczego? Czy przeglądarki używają różnych silników JS, więc rozumieją mój JS na różne sposoby?


title: Duże zespoły z aplikacją warstwową

text: Pracuję w dość dużym zespole (około 15 programistów), który obecnie omawia naszą metodologię pracy. Oprogramowanie, nad którym pracujemy, jest dość bogate w funkcje i szybko się rozwija, więc liczba programistów ostatnio wzrosła i będzie nadal rosła. W tej chwili różni deweloperzy mają różne obszary zainteresowania, w których są dobrzy. Niektóre skupiają się na interfejsie użytkownika, inne na logice biznesowej, a jeszcze inne na zapleczu. Ale programista UI może dodać coś do backendu, jeśli ma na to ochotę. Wraz ze wzrostem liczby programistów nie możemy już pracować w tym samym zespole (trudno jest śledzić to, co robi 20 innych osób). Wiele zespołów pracujących w tej samej bazie kodu może stać się bałaganem, jeśli ludzie zmieniają „kod innych ludzi”. Omawiamy kilka alternatywnych sposobów podziału naszych zadań, a różni ludzie argumentują za różnymi sposobami: * Niektórzy uważają, że obecny sposób robienia rzeczy jest wystarczająco dobry. Jasne, facet, który koncentruje się na interfejsie użytkownika, może wprowadzić zmiany w logice biznesowej zaplecza i potencjalnie zepsuć sprawę. Ale jednocześnie ufamy, że nie zepsuje zbyt wiele. Recenzje zmian mogą wystarczyć, aby zapewnić dobrą jakość. * Niektórzy wolą, aby zespół był przypisany do określonej warstwy. Na przykład, zespół (2-3 programistów) może być przydzielony do pracy tylko przy implementacji logiki biznesowej w backendzie, podczas gdy inny zespół może być przydzielony do pracy nad frontendem, a trzeci może skoncentrować się na rzeczach trwałości. To zachęciłoby ludzi do bycia ekspertami w swojej warstwie. Wadą jest to, że jeśli programista interfejsu użytkownika potrzebuje czegoś w zapleczu, istnieje obciążenie związane z planowaniem, jeśli osoba wykonująca zaplecze jest w innym zespole. * Trzecim sugerowanym sposobem jest posiadanie zespołów, których członkowie znają wszystkie warstwy. Tak więc jeden zespół skupiłby się na określonym typie funkcjonalności, a następnie obejmowałby członków znających interfejs użytkownika, logikę biznesową, backend itp. Dałoby to korzyść, że zespół nie będzie musiał czekać, aż inny zespół zakończy wdrażanie nowej funkcja mająca wpływ na wszystkie warstwy. Wadą, którą ludzie tutaj widzą, jest to, że może to prowadzić do większego podziału uwagi między programistami, co może prowadzić do niższej jakości. Nie jestem pewien, o co tu pytam, ale jeśli ktoś ma doświadczenie lub zna jakieś dobre materiały do czytania na ten temat, byłoby to mile widziane.


title: Jakie dokładnie klasy umieścić na diagramie klas?

text: Jakie klasy muszę umieścić w diagramie klas? Tylko klasy używane w warstwie biznesowej i powiązania między nimi? A może także inne klasy w warstwie dostępu do danych, warstwie usług itp.?


title: Visual Studio DBProjects i problem z uruchomieniem post-build SQL (plik jest za duży)

text: To, co robię, to tworzenie DBProject .. importowanie DB .. następnie tworzenie skryptów w PostBuild, które są skryptami DATA dla każdej tabeli (aby post kompilacja mogła wypełnić tabele po wygenerowaniu schematu .. Wtedy problem jest niektóre z te tabele zawierają 50 000 wierszy, a po wstawieniu 50 000 wierszy w JEDNYM pliku .sql dla post-kompilacji kończy się to niepowodzeniem, ponieważ jest zbyt duży ... więc. 1. Czy jest lepszy sposób na osiągnięcie tego? bazy danych utworzonej jako część DBprojects Build/Publish) 2. Jeśli ten sposób jest prawidłowy… Czy jedyną rzeczą do zrobienia jest utworzenie kolejnego procesu po kompilacji, który ręcznie dzieli jeden duży plik .sql na mniejsze pliki .sql? więc może budować/publikować)


title: FFmpeg: Czy mogę zastąpić libx264 OpenH264, aby przejść na LGPL?

text: Mam trochę przetwarzania wideo do uruchomienia, a FFmpeg zawiera już wiele z tego, czego potrzebuję. Jednak moje filmy są skompresowane przy użyciu kodeka wideo H.264, a libx264 jest częścią FFmpeg na licencji GPL. Z drugiej strony, Constrained Baseline Profile jest wystarczająco ładny dla mojej aplikacji, co oznacza, że mógłbym doskonale korzystać z OpenH264. Czy zatem byłoby możliwe zarówno w teorii, jak i w praktyce dokonanie tej wymiany?


title: Logowanie na każdej stronie wymaga SSL na wszystkich stronach

text: Nasza strona internetowa posiada formularz logowania, który pojawia się w nagłówku na każdej stronie w serwisie. Tego chce mój szef, ale musimy uzyskać zgodność z PCI i mówi, że każdy wrażliwy formularz (login/hasło) wymaga SSL. Czy to oznacza, że cała witryna musi działać pod kontrolą SSL, gdy użytkownik nie jest zalogowany? Kolejne pytanie związane z tym, mamy zewnętrzne oprogramowanie zabezpieczające, które skanuje i testuje naszą witrynę i wysyła wiadomość HTTP do formularza logowania na wszystkich stronach i zgłasza, że jest niezabezpieczona, ponieważ przesyła ją przez HTTP. Zastanawiam się, jak firma, taka jak Godaddy, robi to, ponieważ ma login / hasło na swojej stronie głównej, ale mogę uzyskać do niego dostęp przez HTTP i przesłać moje dane logowania w porządku. Według tej logiki nie są bezpieczne, ponieważ pozwala mi to zrobić dobrze? Czuję, że czegoś mi brakuje, ale nie wiem, czego. -EDYTUJ- Niektóre informacje pochodzące z witryny zabezpieczeń: _**Opis_** Istnieje luka w zabezpieczeniach, która umożliwia atakującemu przechwycenie poufnych informacji (poświadczeń logowania itp.), które są uważane za zabezpieczone protokołem SSL. W szczególności na stronie HTTP (niezaszyfrowanej) znaleziono formularz, który wysyła informacje do strony HTTPS (zaszyfrowanej). Osoba atakująca może wykorzystać zatruwanie pamięci podręcznej (DNS/DHCP/ARP/etc) lub inną lukę (np. XSS), aby spowodować, że strona HTTP wyśle informacje do witryny kontrolowanej przez atakującego zamiast do legalnej witryny HTTPS. Ponadto istnieją zestawy narzędzi do automatyzacji procesu zbierania takich poświadczeń, łączenia się z legalną witryną HTTPS i ustanawiania atakującego jako przezroczystego proxy między ofiarą a legalnym hostem, na którym atakujący widzi wszystkie informacje w postaci zwykłego tekstu (w tym dane logowania itp.). Ofiara<\---------HTTP--------->Atakujący<\---------HTTPS--------->Uzasadniony wynik CVSS witryny 2.1 _**Rozwiązanie_** Nie zezwalaj, aby jakiekolwiek informacje, które chcesz zabezpieczyć SSL pochodziły z niezabezpieczonej strony.


title: Jak przekonać klienta do przejścia na framework *teraz*; także przykłady świetnych aplikacji php na dużą skalę

text: Zaraz zaczynam pracę nad bardzo ambitnym projektem, który moim zdaniem ma duży potencjał, jeśli chodzi o podstawową koncepcję i pomysły wdrożeniowe ( _wdrożenie_ jak _jak te pomysły będą realizowane_ , a nie jak w programowaniu). Stan kodu w tej chwili jest niestety kiepski. To waniliowe php, brak frameworka, brak separacji pomiędzy logiką aplikacji i wizualizacji. Robili to głównie studenci-amatorzy (znam świetnych programistów-amatorów/studentów, nie zrozumcie mnie źle: tak nie było). Klienci są naprawdę wspaniali i wiedzą, że system nie będzie się skalował i wymaga przeprojektowania. Problem polega na tym, że chcieliby jak najszybciej uruchomić wersję beta, a następnie pomyśleć o przebudowie. Ponieważ obecnie dostępne są tylko podstawowe funkcje, zasugerowałem, że byłoby świetnym pomysłem, gdybyśmy (jesteśmy sklepem trzyosobowym, wszyscy bardzo biegli) przenieśli ten kod do jakiegoś frameworka (lubimy CodeIgniter) przed uruchomieniem. Moglibyśmy to zrobić w ciągu <10 dni. Problem polega na tym, że i tak nie uważają, że php będzie prawidłowym długoterminowym rozwiązaniem, więc woleliby po prostu na to pozwolić i naprawić błędy na razie (jest ich całkiem sporo), a następnie bezpośrednio przełączyć się na jakiś oparty na Ruby/Python system. Przeniesienie teraz do CI sprawi, że przyszłe ulepszenia będą niezwykle prostsze, obecny kod będzie bezpieczniejszy, zmiana stylu – wciąż dyskutowana z projektantami – to pestka (przypominamy: w plikach szablonów są obecnie wywołania bazy danych); największą przeszkodą jest brak zaufania do php jako ważnej, skalowalnej technologii. No cóż, potrzebuję kilku przykładów świetnych aplikacji php (oprócz facebooka) i kilku sugestii, jak spróbować przekonać ich do przeniesienia w najbliższym czasie. Ponownie, to wspaniali ludzie – to nie tak, że chcieliby rubinów, ponieważ jest teraz tak gorąco; po prostu nie ufają php, ponieważ my, fajni programiści, lubimy go walić, jak sądzę, ale jestem pewien, że kontynuowanie tego jeszcze przez jeden dzień byłoby błędem. Ponadto mamy pewną wagę w procesie decyzyjnym.


title: Jak znaleźć fajne firmy?

text: Szukając pracy, nie jestem pewien, jak określić, czy praca w firmie jest fajna, czy nie. Chcę pracować w firmach, które są otwarte, innowacyjne i wnoszą dobry wkład w świat informatyki. Na przykład Dropbox wygląda na bardzo fajną firmę i jej istnienie jest bardzo ważne. Jak rozpoznać to w ogłoszeniach o pracę? EDIT: Powinienem zauważyć, że mieszkam w Australii, więc wiele zabawnych firm, które znam, nie ma tutaj żadnego biura. Znam tylko kilka fajnych firm w Australii – w tym Google w Sydney. Ale nie znam tak wielu.


title: Jak wyświetlić inny wynik w pojedynczym pliku lub dokumencie?

text: Sprawdzam kod mojego partnera. Używam SourceGear DiffMerge jako mojego programu do porównywania w środowisku Windows. Kiedy używam programu diff, wyraźnie widzę zmiany w kodzie itp. Czy można jakoś zapisać wyświetlanie porównania, z całym jego kolorowym renderowaniem i przekreśleniami, aby móc wysyłać komentarze pocztą? Innymi słowy, czy możliwe jest wyeksportowanie wyświetlania porównania do pojedynczego pliku (zawierającego wszystkie istotne dane) w celu wyświetlenia bez faktycznego zapisywania dwóch plików oddzielnie? (Być może HTML nadaje się do tej pracy). Czy możesz polecić program do porównywania, który może wyeksportować porównanie jako pojedynczy plik? Z góry dziękuję!


title: Jak znaleźć klasy, które używają określonych tabel DB?

text: **Problem:** Zostałem poproszony o przygotowanie dokumentu, w którym są wymienione wszystkie nasze tabele DB i mam wymienić wszystkie kontrolery, które używają tych tabel DB do odczytu i kolejną listę kontrolerów, które wykonują operacje zapisu. Np.: +------------------------------------------+---- --------+ | Tabela DB | tbl_Orders | +------------------------------------------+------ ------+ |Kontrolery wykonujące operacje odczytu | ?? | +------------------------------------------+------ ------+ |Kontrolery wykonujące operacje zapisu | ?? | +------------------------------------------+------ ------+ Staramy się napisać dokumentację dla **przeszłości** systemu zbudowanego przy użyciu frameworka Zend. Kod jest porozrzucany wszędzie. W kontrolerach, w modelach, a nawet w widokach jest kod. Aplikacja wykorzystuje PROPEL jako ORM. To, co sprawia, że jest to naprawdę trudne, to fakt, że kontroler może nie wywoływać bezpośrednio tabeli, ale może tworzyć instancję klasy modelu, która wywołuje tę tabelę. Czy istnieje wykształcony sposób na podejście do tego szalonego zadania? Uwaga: Wyszukiwanie nazwy tabeli nie zapewni rozwiązania, ponieważ jeśli model używa tej tabeli, nie wiem, który kontroler używa tego modelu.


title: Co oznacza „Powtarzalny biznes”?

text: Powtarzalny biznes oczywiście dzieje się, ponieważ firma ma świetny produkt lub świetną usługę. Czy w branży oprogramowania firmy czynią bazę kodu na tyle skomplikowaną, że utrzymanie do nich wraca? Słyszałem o przypadkach, w których firmy mówią „tak, ta baza kodu zawiera drobne błędy, wyślijmy je mimo wszystko i pozwól klientom wrócić po kolejną prośbę o zmianę”. Wtedy czasami pobierali za to opłaty od klienta. To pytanie jest specyficzne dla branży usług oprogramowania. Czy takie rzeczy dzieją się w prawdziwym świecie? Staram się zrozumieć proces biznesowy.


title: Rozwidlenie aplikacji z podwójną licencją: Jak licencjonować po mojej stronie?

text: Rozdzieliłem projekt, który był podwójnie licencjonowany na licencji GPL i licencji komercyjnej. Ponieważ mój kod był open source, a GPL jest tym, czym jest, zacząłem od wydania mojej aplikacji na GPL. Ale teraz myślę o podwójnym licencjonowaniu projektu i nie wiem, co zrobić. Ponieważ mam prawa autorskie do większości kodu (większość kodu została przepisana lub nowa), czy mogę po prostu wybrać licencję komercyjną, czy też muszę kupić licencję komercyjną upstream, ponieważ technicznie jestem „pochodną” projekt?


title: Listener, logger, plotter - jaką architekturę wątkową do tego wybrać?

text: Konstruuję program, który robi kilka rzeczy. * **Nasłuchuje** portu. Co sekundę odbierany jest łańcuch * Gdy odbierane są nowe dane, muszą być one **zalogowane**. Nie są dozwolone żadne błędy ani pominięte wpisy * Po otrzymaniu danych **wykres** na ekranie musi zostać zaktualizowany. To kosztowna kalkulacja. Brak niektórych aktualizacji nie jest krytyczny. * Raz w miesiącu wywoływana jest funkcja **archiwizacji**, aby wykonać kopię zapasową logów. Może to zająć nieznaną ilość czasu. Jestem nowy w wątkach i chciałbym poprosić o _poradę dotyczącą infrastruktury wątków_. Z jednej strony wydaje się, że potrzebuję co najmniej 1 dodatkowego wątku oprócz głównego wątku dla odbiornika portu. Z drugiej strony obawiam się, że jeśli spawnuję zbyt wiele wątków: * Mogą wystąpić problemy z synchronizacją * Aplikacja może stać się zasobożerna Oto proponowany kod dla listenera. * Złożoność kodu może wzrosnąć


title: Wykorzystywanie Facebooka do znajdowania znajomych znajomych w sposób podobny do Tripadvisor

text: Zamierzam wdrożyć podobną funkcjonalność, jaką ma strona Tripadvisor, jeśli chodzi o przeglądanie hoteli. Jednak moja witryna sprzedaje drobne przedmioty. Chciałbym, aby zrealizował się następujący scenariusz. Załóżmy, że wszyscy użytkownicy zgodzili się na udostępnienie niejawnej witrynie podstawowych informacji. Użytkownik Jan wyświetla element, a użytkownik Anna przegląda ten element. Mają wspólnego przyjaciela Paula. Ann widzi wtedy „Paul jest przyjacielem tego sprzedającego”, gdy przegląda stronę z przedmiotami. Zakłada to, że John również połączył swoje konto w witrynie z Facebookiem i mamy jego identyfikator FB. Jednym ze sposobów byłoby przechowywanie wszystkich znajomych Johna i aktualizowanie tej listy za każdym razem, gdy odwiedza witrynę. Następnie możesz uruchomić zapytanie w tej tabeli za każdym razem, gdy użytkownik odwiedzi tę stronę z ofertami w celu wyszukania dopasowań. Masz jakieś przemyślenia, jak najlepiej to zrobić?


title: Jak mogę zachować zgodność z licencjami Open Source, a jednocześnie chronić własną pracę + App Store?

text: Niedawno opracowałem aplikację dla organizacji (i nie pobieram opłat). Chcę zachować całkowitą własność kodu źródłowego i korzystałem z różnych projektów Open Source. Chcę/muszę przestrzegać zasad licencji, z których korzystają i nadal utrzymywać projekt w ramach kilku wytycznych: > 1. Jeśli kiedykolwiek przekażę organizacji kod źródłowy, nie może on być > modyfikowany, redystrybuowany lub udostępniany w dowolnej formie bez mojej pisemnej zgody > (która musi być ponownie uzyskana w każdej wersji). > 2. Powinien zawsze przypisywać kredyty deweloperowi. > 3. Zachowuję wszelkie prawa do redystrybucji/ponownego wykorzystania kodu źródłowego, _od początku, > zrobiłem to_ > 4. Musi być zgodny z zasadami App Store (które nie są zbyt otwarte- > źródło przyjazne) > Organizacja zachował prawa autorskie do skompilowanej aplikacji (jeśli to ma znaczenie) Licencje obejmują: > 1. liberalne BSD > 2. Licencja Apache, wersja 2.0 > 3. nieodpłatne > 4. domena publiczna (tak samo jak 3) > 5. Mała ilość grafika z projektu na licencji MIT > Moje pytanie brzmi więc, jak mogę zachować zgodność z tymi licencjami, ale jednocześnie stworzyć licencję dla własnego projektu, która pozwoli mi zachować prawo własności do kodu źródłowego.


title: Statyczne / współdzielone funkcje pomocnicze a metody wbudowane

text: To proste pytanie, ale kwestia projektowania, z którą często spotykam się w mojej codziennej pracy programistycznej. Powiedzmy, że masz klasę, która reprezentuje niektóre rodzaje kolekcji. Public Class ModifiedCustomerOrders Public Property Orders as List(Of ModifiedOrders) End Class W ramach tej klasy wykonujesz wszelkiego rodzaju ważne prace, takie jak łączenie wielu różnych źródeł informacji i ostatecznie budowanie zmodyfikowanych zamówień klientów. Teraz masz różne procesy, które wykorzystują tę klasę, z których każdy wymaga nieco innego wycinka pozycji ModifiedCustomerOrders. Aby to umożliwić, chcesz dodać funkcję filtrowania. Jak sobie z tym radzisz? Czy: 1. Dodałeś wywołania filtrujące do klasy ModifiedCustomerOrders, aby można było powiedzieć: MyOrdersClass.RemoveCanceledOrders() 2. Utworzyłeś klasę „narzędziową” Statyczną / Współdzieloną, która pozwoli Ci wywoływać: OrdersFilters.RemoveCanceledOrders(MyOrders) 3. Utworzysz metoda rozszerzająca do osiągnięcia tego samego wyczynu, co nr 2, ale z mniejszą ilością pisania: MyOrders.RemoveCanceledOrders() 4. Utwórz metodę „Service”, która obsługuje pobieranie zamówień zgodnie z funkcją wywołującą, używając jednego z poprzednich podejść „pod kaptur". OrdersService.GetOrdersForProcessA() 5. Inne? Zwykle wolę podejścia oparte na narzędziach / metodach rozszerzania, ponieważ sprawiają, że testowanie jest nieco prostsze. Chociaż wstrzykuję wszystkie moje dane sourcingowe do ModifiedCustomerOrders, posiadanie ich jako części klasy sprawia, że testowanie jest nieco bardziej skomplikowane. Zazwyczaj wybieram metody rozszerzające, w których wykonuję bezparametrowe przekształcenia/filtry. Ponieważ stają się bardziej złożone, przeniosę je do klasy statycznej. Myśli o tym podejściu? Jak byś do tego podszedł?


title: Czy ma sens używanie domknięć dla nie w pełni funkcjonalnych języków programowania?

text: Może nie rozumiem w pełni domknięć, ale weźmy na przykład C#, dlaczego miałbym używać domknięć, skoro mogę używać klas? Czy czegoś mi brakuje? Zauważ, że już to przeczytałem, ale moje pytanie dotyczy domknięcia: Wprowadzenie konstrukcji programowania funkcjonalnego w niefunkcjonalnych językach programowania


title: Czy wyrażenie lambda jest czymś więcej niż anonimową klasą wewnętrzną z pojedynczą metodą?

text: Pojawił się nowy szum z długo oczekiwanymi wyrażeniami lambda w Javie 8; co 3 dni pojawia się z nimi kolejny artykuł o tym, jacy są fajni. O ile zrozumiałem, wyrażenie lambda to nic innego jak anonimowa klasa wewnętrzna z jedną metodą (przynajmniej na poziomie kodu bajtowego). Poza tym ma jeszcze jedną fajną cechę - wnioskowanie o typach, ale wierzę, że odpowiednik tego można osiągnąć na pewnym poziomie za pomocą generyków (oczywiście nie w tak zgrabny sposób, jak w przypadku wyrażeń lambda). Wiedząc o tym, czy wyrażenia lambda przyniosą coś więcej niż tylko słodzenie składniowe w Javie? Czy mogę tworzyć bardziej zaawansowane i elastyczne klasy lub inne konstrukcje zorientowane obiektowo z wyrażeniami lambda, których nie można zbudować przy użyciu bieżących funkcji języka?


title: Jak pokazać poziomy ról użytkowników w ERD?

text: Czułem, że jest to najlepsze miejsce, aby zadać to pytanie, a nie Stackoverflow, ponieważ nie jest to związane z programowaniem. Ok. Chodzi o to, że muszę narysować ERD systemu zarządzania urlopami. Załóżmy, że są tam trzy poziomy ról użytkownika - Poziom A, B i C. Gdzie A może zarządzać zarówno B, jak i C; B może zarządzać tylko C, a C jest normalnymi użytkownikami. Teraz określiłem encję o nazwie USER w ERD i dlatego muszę utrzymywać tylko jedną tabelę w mojej bazie danych dla wszystkich typów użytkowników i ustawić flagę roli i kod zgodnie z tym . Ale jak dokładnie mam reprezentować te trzy poziomy użytkowników w ERD, ponieważ ERD ma tylko jedną encję dla USER? a rola jest tam tylko atrybutem? Czy muszę stworzyć trzy encje dla trzech typów użytkowników, a więc stworzyć trzy tabele i kontynuować w ten sposób? Ale mogę zarządzać wszystkimi funkcjami za pomocą jednego stołu i jednej flagi. Jestem trochę zdezorientowany. Proszę, prowadź mnie. :)


title: Autoryzacja za pomocą tokena do gry internetowej

text: Jestem głównym programistą gry wieloosobowej w małej firmie typu start-up. Chciałbym tutaj przedstawić moje rozwiązanie do uwierzytelniania opartego na tokenach i poznać Wasze opinie na temat możliwych słabych punktów. Nie jestem ekspertem od bezpieczeństwa, w rzeczywistości daleko mi do tego. Nie spodziewam się, że zrobiłem coś kuloodpornego. Po prostu chcę zminimalizować niektóre oczywiste ryzykowne ścieżki. Gra napisana jest w całości w JavaScript i HTML5 oraz działa na backendzie NodeJS. Konto gry jest uwierzytelniane przez jednego z dostawców (zwykle OAuth2). Jest to prosty krok po kliknięciu przycisku, który zostaje przeniesiony na stronę dostawcy, gdzie użytkownik potwierdza dostęp. Gdy do nas wraca, używam podanego identyfikatora użytkownika i konta wyszukiwania w naszej bazie danych. Tutaj od razu tworzone są nowe konta. Teraz mając szczegóły konta, używam JWT do tworzenia tokenu, który jest zaszyfrowany tajnym kluczem i zawiera wewnętrzny identyfikator konta, a także tożsamość dostarczoną z procesu uwierzytelniania. Ten token jest następnie przesyłany do przeglądarki klienta i przechowywany w localStorage. Większość komunikacji z serwerem gry odbywa się przez WebSocket. XHR jest używany rzadko. Jako wrapper używam biblioteki Socket.IO, ale całkowicie ominąłem tutaj jakikolwiek proces uzgadniania. To, co robię, to pozwolić klientowi połączyć się z serwerem, a następnie oczekuję od niego, że token zostanie wysłany przez WebSocket w krótkim czasie. Jeśli to się nie powiedzie, klient zostanie odłączony. Po otrzymaniu tokena jest to całkiem proste, wystarczy odszyfrować token, odczytać informacje o tożsamości, pobrać konto i porównać identyfikator konta z tym przechowywanym w tokenie. Na razie tyle. Zdaję sobie sprawę z jednego słabego punktu, gdy ktoś może ukraść token i przechować go w LocalStorage. Jednak ponieważ zawartość localStorage nie jest przesyłana przy każdym żądaniu, jak to ma miejsce w przypadku plików cookie, to nieco utrudnia. Komunikacja przez WebSocket jest oczywiście zabezpieczona przez SSL, co stanowi kolejną dużą przeszkodę na drodze. Innym sposobem byłby atak XSS, który umożliwiłby komuś bezpośredni dostęp do localStorage. Chciałbym temu zapobiec za pomocą nagłówka CSP. Planuję też wprowadzić jakiś rodzaj wygaśnięcia tokenów, ale nie jestem jeszcze pewien, jak do tego podejść. Czy masz inne pomysły, co może być w tym przypadku słabym punktem?


title: Czy ktoś wyjaśniłby mi ten algorytm losowego spaceru dla trasowania cebuli?

text: Poniższy algorytm jest napisany w pseudokodzie i dla uproszczenia nie uwzględniono przechowywania aktualnej trasy w strukturze danych. DługośćOdSrc = 0; DługośćOdOdcelu = 0; Całkowita liczba przeskoków = 0; X = SRC; /*Ostatni odwiedzony węzeł z losowego spaceru od SRC;*/ Y = DEST; /*Ostatni węzeł odwiedzony z Losowego spaceru rozpoczynającego się od DEST;*/ /* Losowo wybierz długość trasy */ do { Length = rand( ) % Max; while ( Długość < Min ); while( TotalNumberHops < Length ) { Next = Rzuć monetą, aby wybrać losowy spacer z Src lub z Dest; if( Next == RandWalkFromSrc ) { Z = Losowo wybierz węzeł przylegający do X; TotalNumber Hops = 1 + LengthFromSrc + LengthFromDest + najkrótsza ścieżka od Z do Y; if(CałkowitaLiczbaPrzeskoków > Długość) przerwa; X = Z; /*dołącz węzeł do trasy*/ Zapisz X w strukturze danych trasy LengthFromSrc++; } else { /* Next = RandWalkFromDest */ Z = Losowo wybierz węzeł przylegający do Y; TotalNumber Hops = 1 + LengthFromSrc + LengthFromDest + najkrótsza ścieżka od Z do X; if(CałkowitaLiczbaPrzeskoków > Długość) przerwa; Y = Z; Zapisz Y w strukturze danych trasy LengthFromDest++; } } Uprzejmie proszę o krótką analizę wykresu, ponieważ chciałbym go lepiej zrozumieć. Moim głównym problemem jest zrozumienie pierwszej części od do do while (TotalNumberHopse < Length). Jeśli inna część jest dla mnie jasna :) Z góry bardzo dziękuję za pomoc! PS:http://www.onion-router.net/Archives/Route/ \--> Moje źródło


title: Co oznacza WSKAZÓWKA, gdy jest używana w inżynierii oprogramowania?

text: Widziałem to teraz w wielu miejscach iw wielu kontekstach, na przykład w SQL. Nie potrafię zdefiniować znaczenia „Wskazówki”, która wydaje się mieć zastosowanie jako część większego wzorca/techniki projektowej. Czym dokładnie jest wskazówka, gdy jest używana w inżynierii oprogramowania?


title: Jaka częstotliwość aktualizacji jest akceptowalna dla aplikacji mobilnej?

text: Możliwe jest publikowanie codziennych aktualizacji Twojej aplikacji w Google Android Market, ale zakładam, że użytkownicy nie lubią częstych aktualizacji. Jak określić, kiedy należy publikować aktualizacje? Czy istnieje optymalna przerwa między dostarczaniem nowych funkcji i poprawkami błędów, a nie denerwowaniem mojej bazy użytkowników?


title: Czy ktoś mógłby wyjaśnić wyliczenia HaXe?

text: Mam tło AS3/PHP i podstawowe zrozumienie wyliczeń z C++. Mówiąc krótko: przeczytałem to: > http://haxe.org/ref/enums > > http://haxe.org/doc/cross/more_on_enum I chociaż - dobry Boże! Co to za czary??? Parametry konstruktorów wyliczenia? Parametry typu wyliczenia?? Czy ktoś mógłby wyjaśnić na przykładach roboczych (najlepiej na http://try.haxe.org/) koncepcję wyliczeń w HaXe dla kogoś, kto wywodzi się z języków takich jak PHP i AS3? Co próbowałem? Najpierw napisałem to: enum Color3 { Red; Zielony; Niebieski; Szary( v : Int ); Rgb( r : Int, g : Int, b : Int ); Alfa( a : Int, col : Color3 ); } Następnie to: Color3.Grey(5); I nie wiem, co dalej z tym zrobić i nie wiem, gdzie szukać.


title: Darmowy prywatny hosting git

text: _Oczywiście tak było, musiało być, ale po prostu nie jestem w stanie znaleźć odpowiedzi już na to._ Jakie są dobre / lub przeciętne w tej kwestii/ darmowe prywatne witryny hostingowe git do przechowywania niektórych prywatnych projektowanie? Korzystałbym z Dropbox, ale słyszałem złe rzeczy o tym, jak może zepsuć repozytorium podczas synchronizacji.


title: Czy istnieje negatywny wpływ opensource na środowisko komercyjne?

text: Moja firma ma bardzo szeroką gamę produktów i jest kilka, które nie są dla nas strategiczne, więc chciałem je otworzyć (abyśmy mogli skupić się na tym, co czyni nas wyjątkowymi i otworzyć produkty, które ma każda firma). Nasza branża (fundusz hedgingowy) nie udostępnia oprogramowania typu open source (bylibyśmy pierwszą firmą, która by tego spróbowała), a opinie, które otrzymuję od mojego zespołu zarządzającego, to albo 1) zniszczymy branżę lub 2) wszystkie konkurencyjne firmy komercyjne się zjednoczą przeciwko nam i tak czy inaczej zginiemy. W mojej firmie toczy się teraz wielka bitwa między informatykami, którzy dostrzegli pozytywne efekty dzielenia się, a ludźmi biznesu, którzy myślą, że zrezygnujemy ze wszystkiego (wolą, abyśmy sprzedawali części, które chcemy udostępnić na zasadach open source, ale w ich obronie jest standardem przy wyrzucaniu czegoś). No to o czym myślisz? Czy open sourcing ma zastosowanie ogólnie, czy naprawdę ma zastosowanie tylko do oprogramowania? Czy ogólnie jest to dobre dla ludzi w branży i poza nią? Właściwie bardziej interesują mnie negatywne skutki (choć pozytywne są również mile widziane) **Aktualizacja:** Krótko mówiąc, chociaż kod jest zaangażowany, nie chodzi tu tyle o kod, ile bardziej o ideę otwartego sourcingu. Jesteśmy średniej wielkości funduszem hedgingowym. Mamy kilka unikalnych strategii, ale mamy również standardowe fundusze długie/krótkie, arbitraż, globalne makro itp. Zachowujemy unikalne fundusze, które posiadamy, ale inne rzeczy, które wszyscy mają, rozważamy otwarte zaopatrzenie (włożyliśmy w to lata pracy i miliony dolarów. Nasze fundusze są dość popularne, a nasze wyniki są albo w pierwszym, albo w drugim kwartylu więc podejrzewam, że firmy będą zainteresowane lub myślą o wejściu do branży, ale nie wiem w jakim stopniu). Celem nie jest skłonienie społeczności do pracy dla nas, celem jest umożliwienie każdemu, kto chce przy tym majstrować i tworzyć co tylko zechce (nie będzie to część naszej linii produktów, chociaż mogę nieoficjalnie przydzielić część naszych czas personelu, aby pomóc każdej rozwijającej się społeczności). Chociaż baza kodu jest dość duża, wartością w tym jest wiedza branżowa i podejścia, które nabyliśmy (istnieje wiele książek na temat sztucznej inteligencji i handlu ilościowego, ale często są one opóźnione o lata temu, co naprawdę się dzieje, ponieważ większość firm zabrania swoim pracownikom dyskusji co oni robią). Krótko mówiąc, może to wartość dla ludzi, czy nie, ale podchodzę do open sourcingu jako sposobu na przyniesienie korzyści ogółowi społeczeństwa, podczas gdy pozbywamy się linii produktów. Ale z drugiej strony jest to podstawowy produkt dla wielu innych firm i nie będą one zadowolone (myślę o linux/windows, wikipedia/britannica, google maps/komercyjne firmy mapowe i tak dalej). Nie przeszkadza mi to, że ludzie mnie nie lubią, ale wolałbym, żeby nie było to z powodu niezamierzonych konsekwencji, a to pytanie polega na próbie zrozumienia, jakie ogólnie są te konsekwencje dla branż, w których podstawowe obszary są otwarte. Na przykład, trudno jest ocenić, jaka część rynku systemów operacyjnych wzrosła z powodu Linuksa lub jaka rozwijała się w sposób naturalny i tak dalej. Technologia rozwija się tak szybko i nie mogę zrozumieć, jak open source na nią wpłynął (i czy było to pozytywne, czy nie. Jeden z naszych dużych konkurentów ma bardzo duże granty dla najlepszych uniwersytetów, co oczywiście pomaga szkołom, ograniczyłoby open source potrzeba takich rzeczy?). Rozumiem, że może się to wydawać bardzo specyficzne, ale staram się zrozumieć ogólny wpływ otwartego sourcingu, a oprogramowanie wydawało się dobrym miejscem do nauki.


title: Czy za każdym razem, gdy wprowadzam zmiany w kodzie, wymagana jest nowa kompilacja?

text: Pracuję nad projektem, który ma około stu różnych plików (.cpp i .h), a zbudowanie całego projektu na MSVC 2008 zajmuje około godziny, załóżmy, że teraz dokonam zmiany w jednym pliku, czy trzeba zbudować cały projekt od nowa, od początku, czy jest wyjście ? Wiem, że to bardzo, bardzo noobowe, ale marnuję dużo czasu, stąd się zastanawiałam


title: Młodszy programista poszukujący doradztwa i doświadczenia w zarządzaniu projektami

text: Jestem programistą w firmie w Australii. Czy to normalne, że programista otrzymuje projekt, który musi zostać ukończony w ciągu tygodnia? Na przykład dostałem zadanie stworzenia aplikacji na Facebooka dla jednej z naszych firm, mam 2 lata doświadczenia na uniwersytecie na kierunku Informatyka, a mój szef wie, że nigdy nie tworzyłem aplikacji z wykorzystaniem Facebook Graph API i jego wersja aplikacji IFrame. Chciałby, żebym za tydzień skończył aplikację; jest to interaktywny kalendarz, który wyświetla różne wyglądy oparte luźno na polubieniach użytkowników Facebooka (jeśli nie ma polubień, wyświetlany jest domyślny wygląd) i pobiera kredyty użytkownika, jeśli chcą wziąć udział w konkursie. Dodatkowo jestem jedyną osobą w zespole programistycznym, inne osoby w firmie zajmują się handlem, nieruchomościami itp. W ciągu 2 miesięcy mojej pracy w tej pracy opracowałem aktualizator strony internetowej (aplet java i javascript) , 2 strony internetowe (css, javascript, html) i jestem w połowie aplikacji mobilnej (używając Moync API i C++). Czy pracuję w ramach typowego Agile Software Development, czy tego rodzaju harmonogramy są nierealistyczne dla jednoosobowego zespołu? Czy takie rzeczy są normalne? Nie wierzę, że mogę przedstawić się facebookowi Graph API i opracować aplikację w tydzień, ale wierzę, że uda mi się to zrobić w ciągu 2-3 tygodni. Czy tygodniowy plan zajęć jest czymś, co inni programiści przypisaliby młodszemu stażyście programistycznemu?


title: Jak wyszkolić młodszych programistów w dzisiejszym (skomplikowanym) środowisku internetowym?

text: Obecnie nasza firma tworzy aplikacje składające się w większości z serwerów WWW Ruby on Rails oraz kilku różnych klientów REST, od systemów kioskowych w Javie po urządzenia wbudowane w C/C++ (oprócz interfejsów dla standardowych przeglądarek internetowych). Musimy poszerzyć nasz zespół i nie udało nam się znaleźć dobrych starszych programistów, postanowiliśmy włożyć trochę wysiłku w szkolenie młodszych programistów, którzy będą rozwijać się wraz z firmą. Daliśmy im już kilka książek o Ruby i Rails i poprosiliśmy o zbudowanie kilku zabawkowych programów, ale teraz zdaję sobie sprawę, jak stroma jest krzywa uczenia się obecnego stanu programowania w sieci. Kiedy 15 lat temu zacząłem programować, używałem tylko Delphi i Source Safe i od samego początku byłem w stanie tworzyć użyteczne oprogramowanie. Oba były prostymi narzędziami i łatwo było zagłębić się w wewnętrzne funkcjonowanie środowiska. Powoli zacząłem korzystać z zewnętrznych frameworków, przeszedłem na CVS, SVN i wreszcie Git, nauczyłem się elementów tworzących dzisiejszą sieć, takich jak HTTP, JavaScript, CSS, REST itp. Dziś, nawet po latach doświadczeń, nie wiem tyle o tym, jak Ruby on Rails działa w środku, jak w przeszłości o Delphi, a dla mnie było to ważne, abym mógł połączyć podstawowe bloki edukacyjne z narzędziami, których używałem. Wydaje mi się, że integracja z zespołem i stworzenie czegoś użytecznego zajmie dużo czasu programistom, których zatrudniam, ponieważ jest tak wiele rzeczy do nauczenia się obsługi jednego frameworka (Rails): Ruby, HTML, CSS, JavaScript, REST, przypadki testowe, dostęp do bazy danych (z SQL magicznie wbudowanym w ramach frameworka!), MVC, trzy różne menedżery pakietów (odpowiednie dla Ubuntu, gem i bundler dla Ruby), ssh, git, Apache i Phusion Passenger do wdrażania itp. Czuję się zagubiony, ponieważ po raz pierwszy muszę mieć do czynienia bezpośrednio z młodszymi programistami. Jaki jest najlepszy sposób na przeszkolenie młodszych programistów w dzisiejszych najlepszych praktykach tworzenia stron internetowych, skoro jest tak wiele możliwości wyboru?


title: Graficzny interfejs gry Monopoly 3D

text: Stworzyłem grę Monopoly z grafiką 2D w Javie na mój końcowy egzamin na studiach. Czuję, że gra nie wygląda zbyt dobrze i chcę dodać grafikę 3D. Mój problem polega na tym, że nigdy nie zajmowałem się programowaniem 3D i nie umiem tworzyć obiektów 3D. Czy ktoś może mi powiedzieć, gdzie mogę tworzyć obiekty 3D i jakiej biblioteki użyć do programowania 3D, która pozwoli mi szybko stworzyć interfejs graficzny 3D? Mam na to tylko dwa tygodnie. Czy można to zrobić?


title: Wielokrotne dziedziczenie lub dekoratory Pythona dla zachowań komponowalnych

text: Niedawno odkryłem (a raczej zdałem sobie sprawę, jak używać) wielokrotnego dziedziczenia Pythona i obawiam się, że teraz używam go w przypadkach, w których nie pasuje. Chcę mieć jakieś źródło danych początkowych (`NewsCacheDB`, `TwitterStream`), które jest przekształcane na różne sposoby (`Vectorize`, `SelectKBest`, `SelectPercentile`). Zauważyłem, że piszę następujący rodzaj kodu ( _Przykład 1_ ) (rzeczywisty kod jest nieco bardziej złożony, ale idea jest taka sama). Chodzi o to, że w przypadku „ExperimentA” i „ExperimentB” mogę dokładnie zdefiniować, czym jest „self.data”, po prostu polegając na dziedziczeniu klas. Czy to naprawdę przydatny sposób na osiągnięcie pożądanego zachowania? Mógłbym również użyć dekoratorów ( _Przykład 2_ ). Używanie dekoratorów byłoby mniej kodu. Które podejście jest lepsze? Nie szukam argumentów typu "lubię pisać dekoratory lepiej", ale raczej argumentów o 1. czytelności 2. konserwacji 3. testowalności 4. pytoniczności (tak, to słowo). * * * ### PRZYKŁAD 1 class NewsCacheDB(object): """Odtwarzaj artykuły z pamięci podręcznej z bazy danych""" def __init__(self): super(NewsArticleCache, self).__init__() @property def data(self ): # konfiguruj dostęp do bazy danych podczas db.isalive(): yield db.next() # tu niewielkie uproszczenie class TwitterCacheDB(object): """Odtwarzaj tweety z pamięci podręcznej z bazy danych""" def __init__(self): super(TwitterCache, self).__init__() @property def data(self): # ustaw dostęp do bazy danych podczas db.isalive(): yield db.next() # tu niewielkie uproszczenie class TwitterStream(object): def __init__( self): super(TwitterStream, self).__init__() @property def data(self): # ustaw dostęp do strumienia na żywo na Twitterze podczas stream.isalive(): yield stream.next() class Vectorize(object): """Zamień surowe dane w wiele wektorów""" def __init__(self): super(Vectorize, self).__init__() @property def data(self): for item in super(Vectorize, self).data: transform = vectorize(item) # niewielkie uproszczenie daje klasę transformowaną SelectKBest(object): """Wybierz K najlepszych cech w oparciu o pewną metrykę""" def __init__(self): super( SelectKBest, self).__init__() @property def data(self): for item in super(SelectKBest, self).data: transformer = select_kbest(item) # niewielkie uproszczenie daje przekształconą klasę SelectPercentile(object): """Wybierz najlepsze cechy percentyla X oparte na pewnym metryce""" def __init__(self): super(SelectPercentile, self).__init__() @property def da ta(self): dla pozycji w super(SelectPercentile, self).data: transformated = select_kbest(item) # tu niewielkie uproszczenie daje przekształconą klasę ExperimentA(SelectKBest, Vectorize, TwitterCacheDB): # dużo kodu kontrolnego trafia tutaj class ExperimentB(SelectKBest , Vectorize, NewsCacheDB): # trafia tu dużo kodu kontrolnego class ExperimentC(SelectPercentile, Vectorize, NewsCacheDB): # trafia tu dużo kodu kontrolnego * * * ### PRZYKŁAD 2 def multiply(fn): def wrap(self): return fn(self) * 2 return opakowane def twitter_cacheDB(fn): def opakowane(self): user, pass = fn(self) # konfiguracja dostępu do bazy danych podczas db.isalive(): yield db.next() # small tutaj uproszczenie return wrapped def twitter_live(fn): def wraped(self): user, pass = fn(self) # konfiguruj dostęp do bazy danych podczas stream.isalive(): yield stream.next() # tu niewielkie uproszczenie return def news_cacheDB(fn): def wraped(self): user, pass = fn(self) # konfiguruj dostęp do danych base while db.isalive(): yield db.next() # tu niewielkie uproszczenie return wrapd def vectorize(fn): def wraped(self): for item in fn(): transformated = do_vectorize(item) # tu niewielkie uproszczenie yield przekształcona wydajność opakowana def select_kbest(fn): def opakowana(self): dla elementu w fn(): przekształcona = do_selection(item) # niewielkie uproszczenie tutaj yield przekształcona klasa opakowana uzysku ExperimentA(): @property @select_kbest @vectorize @twitter_cacheDB def a(self): re włącz 'me','123' # zwróć użytkownika i przejdź do połączenia z klasą bazy danych ExperimentB(): @property @select_kbest @vectorize @news_cacheDB def a(self): zwróć 'me','123' # zwróć użytkownika i przekaż do połącz się z bazą danych


title: Udane przykłady komercyjnych silników rekomendacji

text: Amazon był pionierem we wprowadzaniu silników rekomendacji do głównego nurtu i nadal jest bez wątpienia największą marką w tej dziedzinie. Netflix okazał się nowszym udanym przykładem i mogę pomyśleć o kilku innych z góry. Jakie są inne przykłady firm, które w dużym stopniu polegają na zaawansowanej technologii rekomendacji? Dodatkowe punkty dla firm, które napisały o swoim podejściu, czy to na swoim blogu, białych księgach czy w innych zasobach.


title: Oddzielenie interfejsu użytkownika od obsługi zdarzeń i zapytań do bazy danych

text: Czy dobrą praktyką jest rozdzielanie programów obsługi i zapytań do bazy danych w różnych klasach? Będzie osobna klasa zawierająca wszystkie niezbędne programy obsługi zdarzeń, a także inna klasa dla zapytań do bazy danych?


title: Zestaw narzędzi do aplikacji wieloplatformowych w Pythonie

text: Chciałbym tworzyć wieloplatformowe aplikacje GUI, które działają zarówno na systemach Linux, jak i Windows. Jestem teraz zdezorientowany, którego zestawu narzędzi użyć. Pytałem wielu z nich i każdy mówi o różnych zestawach narzędzi. Czy powinienem używać GTK, wxPythona czy Tkintera?


title: Przełącz / wybierz przypadek itp. w porównaniu do If ... ElseIf ... Else

text:
Nie rozumiem, dlaczego „przełącznik” lub jego odpowiednik jest tak popularny w językach. Wydaje mi się, że miało to miejsce w czasach, gdy alternatywą było wiele zagnieżdżonych instrukcji „if” w części „else” innych instrukcji „if”. Skoro mamy „jeżeli”, dlaczego tego potrzebujemy? Jeśli weźmiemy pod uwagę: switch (expr) { case "Pomarańcze": document.write("Pomarańcze kosztują 0,59 USD za funt.
"); przerwanie; case "Jabłka": document.write("Jabłka kosztują 0,32 USD za funt.
"); przerwanie; case "Banany": document.write("Banany kosztują 0,48 dolara za funt.
"); przerwanie; default: document.write("Przepraszamy, nie mamy " + expr + ".
"); } Jest wyraźnie bardziej czytelny niż poniżej? if (expr == "Pomarańcze") { document.write("Pomarańcze kosztują 0,59 USD za funt.
"); } else { if (expr == "Jabłka") { document.write("Jabłka kosztują 0,32 USD za funt.
"); } else { if (expr == "Banany") { document.write("Banany kosztują 0,48 USD za funt.
"); } else { document.write("Przepraszamy, nie mamy " + expr + ".
"); } } } Ale jak to jest bardziej czytelne niż: if (expr == "Pomarańcze") { document.write("Pomarańcze to 0,59 dolara za funt.
"); } else if (expr == "Jabłka") { document.write("Jabłka kosztują 0,32 USD za funt.
"); } else if (expr == "Banany") { document.write("Banany kosztują 0,48 USD za funt.
"); } else { document.write("Przepraszamy, nie mamy " + expr + ".
"); }


title: If-Else V.S. Przełącz koniec przepływu

text: Zastanawiałem się, czy instrukcje if-else są jak instrukcja switch, która **ma** ma instrukcję break. if (wyrażenie_logiczne_1 ) instrukcja_1 else if(wyrażenie_logiczne_2 ) instrukcja_2 else instrukcja_domyślna Jest tym samym co: switch(wyrażenie_kontrolujące ) { case: (wyrażenie_logiczne_1 ) { instrukcja_1 przerwa; } przypadek: ( boolean_expression_2 ) { statement_2 break; } default: { default_statement }


title: Dlaczego instrukcja switch jest lepsza niż seria instrukcji if?

text: > **Possible Duplicate:** > Czy powinienem używać instrukcji switch czy długich, jeśli…innych łańcuchów? Pracuję nad małym programem, który przeprowadzi sortowanie przez wstawianie. Numer zostanie wprowadzony z klawiatury i zapisany w zmiennej, którą nazwałem „num”. Zdecydowałem się użyć instrukcji switch, aby uzyskać wprowadzoną liczbę. switch( e.getKeyCode() ) { case KeyEvent.VK_0: num = 0; przerwanie; przypadek KeyEvent.VK_1: liczba = 1; przerwanie; przypadek KeyEvent.VK_2: liczba = 2; przerwanie; przypadek KeyEvent.VK_3: liczba = 3; przerwanie; przypadek KeyEvent.VK_4: liczba = 4; przerwanie; przypadek KeyEvent.VK_5: liczba = 5; przerwanie; przypadek KeyEvent.VK_6: liczba = 6; przerwanie; przypadek KeyEvent.VK_7: liczba = 7; przerwanie; przypadek KeyEvent.VK_8: liczba = 8; przerwanie; przypadek KeyEvent.VK_9: liczba = 9; przerwanie; } Zdałem sobie sprawę, że innym sposobem działania mogło być użycie zestawu instrukcji if. if( np.getKeyCode() == KeyEvent.VK_0 ) liczba = 0; else if( e.getKeyCode() == KeyEvent.VK_1 ) num = 1; itd. dla każdej liczby aż do 9. Następnie zastanawiałem się, jaka jest zasadnicza różnica między instrukcją switch a serią instrukcji if. Wiem, że oszczędza to miejsce i czas na pisanie, ale to niewiele. Więc moje pytanie brzmi, czy poza spacją, instrukcja switch różni się w jakikolwiek sposób od serii instrukcji if? Czy jest szybszy, mniej podatny na błędy itp.? To pytanie naprawdę nie wpływa tak bardzo na mój kod. Właśnie się zastanawiałem. Również to pytanie dotyczy języka JAVA, a nie żadnego innego języka programowania.


title: Instrukcje if a przypadki zamiany? w grze JavaScript i czy używać funkcji

text: Tworzę grę w JavaScript, w której zaczynasz od danych wejściowych użytkownika, przechowywanych w zmiennej "kontroler". Opcje dla użytkownika obejmują rozpoczęcie gry lub zapoznanie się z grą. Miałem zamiar użyć następującego kodu if(controller === "start"){ // Tutaj znajduje się kod gry } else if(controller === "about"){ // Wszystko o grze } else{ // Mówi użytkownik ponownie, aby wpisać start, aby rozpocząć lub dowiedzieć się o grze }, kiedy zdałem sobie sprawę, że powinienem zamiast tego użyć przypadków przełączników ... Więc moje pytanie brzmi, kiedy używać przypadków przełączników zamiast instrukcji if i których powinienem użyć w ta sprawa. Chciałbym również wiedzieć, czy uważasz, że powinienem przechowywać kod gry w funkcji i wywoływać ją, jeśli kontroler jest równy „start”, czy po prostu umieścić go w instrukcji if/switch, ponieważ jest to bankomat?


title: Czy powinienem używać instrukcji switch czy długich łańcuchów, jeśli...else?

text: Często, gdy słyszę o oświadczeniu switch, odkłada się to jako sposób na zastąpienie długich łańcuchów, jeśli… w przeciwnym razie. Ale wydaje się, że kiedy używam instrukcji switch, piszę więcej kodu, który pisałbym po prostu, gdyby... w przeciwnym razie. Masz również inne problemy, takie jak utrzymywanie wszystkich zmiennych dla wszystkich wywołań w tym samym zakresie. Oto kod reprezentujący przepływ, który normalnie piszę (dzięki diam) String komentarz; // Wygenerowana zniewaga. int który = (int)(Math.random() * 3); // Wynik to 0, 1 lub 2. if (co == 0) { comment = "Wyglądasz o wiele lepiej niż zwykle."; } else if (which == 1) { comment = "Twoja praca spełnia swoje zwykłe standardy."; } else if (which == 2) { comment = "Jesteś całkiem kompetentny jak na tak małe doświadczenie."; } else { comment = "Ups -- coś jest nie tak z tym kodem."; } Następnie chcą, abym zastąpił to następującym: String comment; // Wygenerowana zniewaga. int który = (int)(Math.random() * 3); // Wynik to 0, 1 lub 2. switch (który) { case 0: comment = "Wyglądasz o wiele lepiej niż zwykle."; przerwanie; case 1: komentarz = "Twoja praca spełnia swoje zwykłe standardy."; przerwanie; case 2: komentarz = "Jesteś całkiem kompetentny jak na tak małe doświadczenie."; przerwanie; default: comment = "Ups -- coś jest nie tak z tym kodem."; } Wygląda na to, że jest dużo więcej kodu w dużo bardziej niezręcznej składni. Ale czy naprawdę istnieje korzyść z używania instrukcji switch?


title: Jakie są konsekwencje korzystania z innego identyfikatora aplikacji?

text: Firma, w której pracuję, otrzymała niedawno zlecenie ulepszenia aplikacji, która została wcześniej opracowana przez inną firmę. Używają identyfikatora pakietu, takiego jak com.theircompany.appname, jednak nie mogę zarejestrować tego identyfikatora pakietu w celu wygenerowania identyfikatora aplikacji dla APN. Zastanawiam się, jakie będą konsekwencje, jeśli zmienię identyfikator pakietu na, powiedzmy, com.mojafirma.nazwaaplikacji?


title: Limit czasu odbioru usługi MSMQ nawet z elementami w kolejce

text: Próbowałem opublikować to na głównej stronie StackOverflow, ale brak odpowiedzi w ciągu 5 dni. Mam ciągłe problemy z zaimplementowaniem bardzo prostego rozwiązania MSMQ: 2 komputery (nie serwery) z systemem odpowiednio Win7 i Win8. Każdy monitoruje dane z systemu sprzętowego i okresowo zapisuje dane w lokalnej prywatnej kolejce jako DataSet. Stary kod na trzecim komputerze, na którym działa ten kod, jest w stanie odbierać lub przeglądać wiadomości w porządku. Dim qInfo1 As Object = CreateObject("MSMQ.MSMQQueueInfo") qInfo1.FormatName = "DIRECT=TCP:192.168.1.123\private$\queue_1" Dim q1 As Object = qInfo1.Open(MQ_RECEIVE_ACCESS, MQ_DENY_NONE) Dim = qInfo2 As ("MSMQ.MSMQQueueInfo") qInfo2.FormatName = "DIRECT=TCP:192.168.1.120\private$\queue_2" Dim q2 = qInfo2.Open(MQ_RECEIVE_ACCESS, MQ_DENY_NONE) Dim qMessage1 As Object = CreateObject("QMessQMS") = q1.Peek Dim qMessage2 As Object = CreateObject("MSMQ.MSMQMessage") qMessage2 = q2.Peek Jednak gdy próbuję następującego kodu .Net, to nie działa. Dim q1 As MessageQueue = New MessageQueue("FormatName:DIRECT=TCP:192.168.1.123\private$\queue_1", QueueAccessMode.ReceiveAndAdmin) q1.Formatter = New XmlMessageFormatter(New Type() {GetType(XmlDocument)}) Dim q2 As MessageQueue = New MessageQueue("FormatName:DIRECT=TCP:192.168.1.120\private$\queue_2", QueueAccessMode.ReceiveAndAdmin) q2.Formatter = New XmlMessageFormatter(New Type() {GetType(XmlDocument)}) Dim msg1 As Message = q1 .Peek(New TimeSpan(0, 0, 1)) Dim msg2 As Message = q2.Peek(New TimeSpan(0, 0, 1)) Początkowo otrzymywałem komunikat „Odmowa dostępu do systemu kolejkowania”. Zbadałem możliwe poprawki i zaimplementowałem następujące elementy: * Upewniłem się, że wszystkie komputery są w tej samej domenie. * Wyłączone zapory * Dał pełne uprawnienia anonimowego logowania. * Dozwolone nieuwierzytelnione Rpc na obu komputerach. „Stara” metoda również wymagała niektórych z powyższych zmian. Działa dobrze. Po powyższych zmianach „nowa” metoda .Net nie daje już wiadomości o odmowie dostępu, ale też nie pobiera wiadomości. To zawsze się kończy. Gdy zmieniam parametr timeout, limit czasu trwa dłużej lub krócej, ale zawsze się dzieje, nawet jeśli w kolejce są wiadomości. Podczas tworzenia (wszystko na tym samym komputerze) obie metody działały idealnie. Teraz, gdy przeglądam kolejki zdalne, metoda .Net nie będzie działać. Moje obejście polega na użyciu starszej metody, ale to nie jest tak solidne. Nie ma parametru limitu czasu, więc program odbierający po prostu wisi na podglądzie dokładnie tak, jakby nie było żadnych wiadomości w kolejce. Poczyniłem postępy, ponieważ metoda .Net nie otrzymuje błędów odmowy dostępu, ale nie widzi wiadomości w kolejkach, stąd limity czasu. Jakieś pomysły jak to rozwiązać?


title: Czy możliwe jest osadzenie wielu programów w 1?

text: Aby być bardziej konkretnym, pozwól mi wyjaśnić mój cel końcowy lub więcej tego, co chciałbym kiedyś mieć, a następnie możesz mi powiedzieć, czy jest to w ogóle wykonalne, a jeśli nie jest to prawdopodobnie alternatywna metoda. Naprawdę chciałbym mieć narzędzie takie jak `smush.it` to strona internetowa, którą Yahoo optymalizuje obrazy, jest obecnie jednym z najlepszych na świecie. Strona FAQ mówi, że używają do tego wszystkich tych programów... **ImageMagick:** do identyfikacji typu obrazu i konwertowania plików GIF na pliki PNG. **pngcrush:** usuwa niepotrzebne fragmenty z plików PNG. Eksperymentujemy również z innymi narzędziami do redukcji PNG, takimi jak **pngout, optipng, pngrewrite**. Mamy nadzieję, że te narzędzia zapewnią lepszą optymalizację plików PNG. **jpegtran:** usuwa wszystkie metadane z plików JPEG (obecnie wyłączone) i wypróbuj progresywne pliki JPEG. **gifsicle:** optymalizuje animacje GIF, usuwając powtarzające się piksele w różnych klatkach. Więcej informacji na temat procesu smushingu można znaleźć w sekcji „Optymalizuj obrazy” w sekcji Best Practices for High Performance Web pages. Więc w zasadzie przesyłasz obraz, a on określa jego typ pliku i uruchamia go przez odpowiednie programy lub programy i zwraca zoptymalizowany obraz oraz podaje oryginalny rozmiar i nowy rozmiar obrazu. Jeśli przeszukujesz StackOverflow, zobaczysz, że wiele osób szuka programu typu „wszystko w jednym”, który może to zrobić, głównie z wiersza poleceń do użycia skryptów kompilacji. Teraz jestem ciekaw, czy można stworzyć program, który mógłby być jak 1 pakiet, który zawierałby wszystkie te inne programy, więc w systemie Windows byłby to 1 plik exe, a nawet plik jar prawdopodobnie działałby, jak wiem, Yahoo ma plik jar do kompresji JavaScript, którego może używać mój skrypt kompilacji. Podczas moich poszukiwań znalazłem 1 projekt, który jest podobny, ale nie jestem pewien, czy naprawdę o to mi chodzi, jest to http://trimage.org/ używa OptiPNG, PNGCrush, AdvPNG, JPEGOptim. Mój problem z tym 1 polega przede wszystkim na tym, że nie wypuszczają go na Windows, ale mówią, że może działać na Windowsie, ale głównie widziałem kod źródłowy i to tylko kilka skryptów Pythona, także programy, których używa , wszystkie należy zainstalować osobno. Moim celem jest umieć nie musieć instalować 4-5 oddzielnych programów, ale mieć je jako 1 Proszę powiedz mi, czy to tylko marzenie, czy coś, co jest możliwe, mam tylko doświadczenie w PHP, więc nie mam wiedzy na temat projektu lubię to


title: Czy testy jednostkowe mogą zweryfikować wymagania oprogramowania?

text: Często słyszę, jak testy jednostkowe pomagają programistom budować zaufanie do ich oprogramowania. Ale czy to wystarczy do weryfikacji spełnienia wymagań oprogramowania? Tracę pewność, że oprogramowanie działa tylko dlatego, że testy jednostkowe przechodzą. Wystąpiły pewne awarie we wdrożeniu produkcyjnym z powodu nieprzetestowanej\niezweryfikowanej ścieżki wykonania. Te awarie są czasami dość duże, wpływają na operacje biznesowe i często wymagają natychmiastowej naprawy. Niepowodzenie jest bardzo rzadko związane z nieudanym testem jednostkowym. Mamy duże jednostki testów jednostkowych, które mają rozsądne pokrycie linii, ale prawie wszystkie z nich koncentrują się na poszczególnych klasach, a nie na ich interakcjach. Testowanie ręczne wydaje się nieskuteczne, ponieważ oprogramowanie, nad którym pracujemy, jest zazwyczaj duże, z wieloma ścieżkami wykonywania i wieloma punktami integracji z innym oprogramowaniem. Ręczne testowanie wszystkich funkcji jest bardzo bolesne i nigdy nie usuwa wszystkich błędów. Czy wykonujemy testy jednostkowe źle, gdy wydaje się, że nadal nie udaje nam się poprawnie zweryfikować oprogramowania przed wdrożeniem? A może większość sklepów ma inną warstwę testów automatycznych oprócz testów jednostkowych?


title: Jak nie ustępować, gdy koledzy zaniedbują proces?

text: Problem, z którym się zmagam: 1. Członkowie mojego zespołu rozpoczynają pracę nad projektami bez gotowych dokumentów funkcjonalno-technicznych - nawet jeśli nasz proces firmowy nakazuje, aby były one gotowe przed rozpoczęciem. 2. Członkowie mojego zespołu akceptują tanie, nieustrukturyzowane rozwiązania i wdrażają **naprawdę** złe hacki do oprogramowania bez zastanowienia, gdy kierownictwo projektu zauważy, że mają „ograniczony czas”. 3. Członkowie mojego zespołu rozpoczynają pracę nad projektami, które współpracują z niedokończonym projektem innego zespołu - który jest nieprzetestowany i niedokończony. (powoduje dużo dodatkowej pracy). 4. Ulepszenia i całe fazy oprogramowania nie są odpowiednio zaplanowane i często powodują, że front-end/projekt nie jest skończony, gdy programista back-endowy musi rozpocząć pracę. Te problemy były dyskutowane w nieskończoność wiele razy, odkąd zacząłem tu pracować. Wszyscy się zgodzili, a najważniejsze było to, że **musimy** egzekwować ten proces, co oznacza, że back-end developer nie zacznie, dopóki wszystko nie zostanie załatwione. Te problemy wciąż się zdarzają - i jestem naprawdę zdemotywowany do tego stopnia, że jestem naprawdę zirytowany samą pracą i niektórymi kolegami. Członkowie mojego zespołu często narzekają - ale tylko na siebie. „Idą dalej – bez względu na sytuację”. Wynik? 1. Czuję się niepewny, może to ja? 2. Czy tak właśnie powinno wyglądać? Moje pytanie? „Jak mogę odmówić pracy i ignorowania procesu, jeśli wszyscy inni wydają się bezmyślnie akceptować?”. To nie wygląda na jakiegoś irytującego programistę, który cały czas szuka czegoś do zjedzenia.


title: Alternatywy dla wielokrotnego dziedziczenia dla mojej architektury (NPC w grze strategii czasu rzeczywistego)?

text: Kodowanie nie jest takie trudne _właściwie_. Najtrudniejsze jest napisanie kodu, który ma sens, jest czytelny i zrozumiały. Więc chcę mieć lepszego programistę i stworzyć solidną architekturę. Więc chcę stworzyć architekturę dla NPC w grze wideo. Jest to gra strategiczna czasu rzeczywistego, taka jak Starcraft, Age of Empires, Command & Conquers itp. Więc będę miał różne rodzaje NPC. NPC może mieć od jednej do wielu umiejętności (metod) z tych: `Build()`, `Farm()` i `Attack()`. Przykłady: **Pracownik** może `Budować()` i `Farm()` **Wojownik** może `Atakować()` **Obywatel** może `Budować()`, `Farm()` i `Atakować ()` **Rybak** może `Farm()` i `Attack()` Mam nadzieję, że jak dotąd wszystko jest jasne. Więc teraz mam swoje typy NPC i ich umiejętności. Przejdźmy jednak do aspektu technicznego/programistycznego. **Jaka byłaby dobra architektura programistyczna dla moich różnych rodzajów NPC?** Ok, mógłbym mieć klasę bazową. Właściwie uważam, że jest to dobry sposób na trzymanie się zasady DRY. Więc mogę mieć metody takie jak `WalkTo(x,y)` w mojej klasie bazowej, ponieważ każdy NPC będzie mógł się poruszać. Ale teraz przejdźmy do prawdziwego problemu. **Gdzie mam zaimplementować moje umiejętności?** (pamiętaj: `Buduj()`, `Farm()` i `Attack()`) Ponieważ zdolności będą składać się z tej samej logiki, byłoby denerwujące / złamać zasadę DRY zaimplementuj je dla każdego NPC (Worker, Warrior, ..). Okej, _mógłbym_ zaimplementować zdolności w klasie bazowej. Wymagałoby to pewnego rodzaju logiki, która weryfikuje, czy NPC może użyć zdolności X. `IsBuilder`, `CanBuild`, .. Myślę, że jest jasne, co chcę wyrazić. Ale nie czuję się zbyt dobrze z tym pomysłem. Brzmi to jak nadęta klasa bazowa z _zbyt dużą_ funkcjonalnością. Używam C# jako języka programowania. Więc wielokrotne dziedziczenie nie jest tutaj opinią. Oznacza: Posiadanie dodatkowych klas bazowych, takich jak `Fisherman: Farmer, Attacker`, nie zadziała.


title: Jak mogę uporządkować kod, gdy mam ortogonalne tablice funkcji?

text: Przykład: Masz grę z różnymi szkołami magii (ogień, lód itp.). Każda szkoła posiada zestaw właściwości, które odnoszą się do niezależnych funkcji gry, takich jak: * ciągi znaków, które mają być wyświetlane w GUI (dane ogólne przechowywane w pamięci) * grafika, dźwięki i inne pliki do załadowania w razie potrzeby * różne zachowania (kod), np. każda szkoła magii ma inną interakcję z różnymi typami terenu. Przychodzą mi do głowy dwa projekty do realizacji tego, ale nie podoba mi się żaden z nich. 1. Mógłbym stworzyć abstrakcyjną klasę `MagicSchool`, która zawiera wszystkie właściwości danej szkoły. To sprawia, że klasa `MagicSchool` jest zależna od wielu odrębnych cech gry (GUI, SFX, inne obszary logiki gry itp.), co wydaje się niepotrzebnym mieszaniem obaw (coś z boskiej klasy). 2. Mogę umieścić dane GUI/SFX/etc dla każdej szkoły w systemach GUI/SFX/etc jako tablice. Ale potem kod szkół magii zostaje rozrzucony po całym projekcie (choć w bardzo logicznych miejscach). Tak więc w tym przypadku istnieją dwie osie, wzdłuż których należy ustrukturyzować kod: różne szkoły magii i różne cechy, w których te szkoły się wyróżniają. Pod względem przejrzystości i łatwości konserwacji, które z dwóch powyższych rozwiązań powinienem preferować? A może jest inny sposób, którego jeszcze nie rozważałem?


title: Czy błędy z Fuzzinga należą do moich testów systemowych?

text: Ostatnio w jednym z moich projektów zaimplementowałem testy fuzz. Pojawiło się kilka błędów, generalnie sklasyfikowanych jako (śmiem się powiedzieć, trywialne?) błędy walidacji danych wejściowych, i naprawiłem je. Jak dotąd w żadnym wypadku nie doszło do złamania logiki biznesowej, co, jak sądzę, jest rozsądne. Moje pytanie brzmi następująco: Kiedy otrzymuję prośbę o nową funkcję dla projektu, zwykle piszę automatyczny test, aby opisać pożądane zachowanie (na przykład przy użyciu sałaty). Czy błędy z testów fuzz należą do tych opisów zachowań? Ja sam ustaliłem, że zaletą pisania jawnych przypadków testowych jest **deterministyczna weryfikacja względem regresji**. . Jednocześnie napisałem kilka z nich i porównałem je z innymi testami, które opisują interesujące sekwencje poleceń i wyniki, **testy błędów bezpieczeństwa są nudne, aż do tego stopnia, że powodują hałas dla czytelnika.** kształt testu: Scenariusz: Jakiś palant nie wypełnia pola formularza „adres domowy”. Podano poprawnie wypełniony formularz na mojej stronie i pole "liczba kapeluszy" wypełnione ciągiem "banan" Gdy użytkownik wyśle formularz Aplikacja nie powinna się zawiesić Użytkownik powinien zostać przekierowany z powrotem do formularza A formularz powinien wyświetl błąd [powtórz dla każdego z 10 pól, które mogą mieć niedorzeczne dane wejściowe] Czy powinienem zostawić ten rodzaj sprawdzenia dla fuzzera, który już łapie je przez czarne zaklęcia i losową okazję? A może moje testy regresji powinny odzwierciedlać każdy błąd, jaki kiedykolwiek popełniłem lub pomyślałem o popełnieniu?


title: Do jakich problemów dobrze nadają się adnotacje Java?

text: Od jakiegoś czasu piszę w Javie i C#, ale trudno mi zidentyfikować miejsca, w których użycie niestandardowej adnotacji byłoby korzystne. Widzę, że JUnit używa adnotacji w klasach testowych, aby określić kolejność, w jakiej powinny uruchamiać metody w klasach testowych, co eliminuje potrzebę jakiejś konfiguracji. Jakie są inne przykłady problemów, które adnotacje elegancko rozwiązują?


title: Java bez dziedziczenia implementacji

text: W niedawnym filmie na Javie Joshua Bloch stwierdza, że po 4 minutach i 20 sekundach filmu: > A potem jest dziedziczenie, i to była konieczność marketingowa. Wiesz, > możemy się spierać, czy naprawdę potrzebujesz dziedziczenia implementacji, czy nie. Zastanawiałem się więc: jak wyglądałaby Java bez dziedziczenia implementacji? Na przykład, jak działałyby `equals`, `hashCode` i `toString`? Czy Java potrzebowałaby zamiast tego czegoś takiego jak mixiny?


title: Zalety i wady korzystania z aplikacji XAML/C# lub HTML5/JavaScipt dla aplikacji Metro?

text: Właśnie zastanawiałem się, czy istnieją jakieś główne zalety lub wady korzystania z XAML/C# lub HTML5/JavaScript dla aplikacji Metro.


title: Znaczenie stopnia CS przy ubieganiu się o pracę rozwojową?

text: > **Możliwy duplikat:** > Czy edukacja uniwersytecka naprawdę jest tego warta dla dobrego programisty? Obecnie szukam pracy jako web developer i mam ~3 lata doświadczenia w tej dziedzinie i dość dobrze znam PHP i Ruby on Rails, a HTML/CSS jak własną kieszeń. Jestem również dobrze zorientowany w jQuery. Jestem samoukiem we wszystkich tych dyscyplinach i jestem żarłocznym uczniem. Znalazłem kilka prac, które moim zdaniem mogą być dobre, ale wszystkie wymieniają licencjat z informatyki jako warunek wstępny do aplikowania, czego nie mam. Mam licencjat z języka angielskiego z naciskiem na kreatywne pisanie. Uważam to za atut – nie przeszkodę – ale martwię się, że nie będę nawet brany pod uwagę, ponieważ nie mam BS w CS. Jak ważna jest licencjat z CS przy ubieganiu się o pracę, której nie spełniam? Jak mogę sprzedać się na tych pozycjach, które nie mają BS?


title: Czy wykształcenie wyższe jest tego warte dla dobrego programisty?

text: Zajmuję się projektowaniem i programowaniem od mniej więcej odkąd pamiętam. Jeśli jest problem z programowaniem, mogę go rozwiązać. (Chociaż, co prawda, Stack Overflow pozwolił mi pominąć _rozmyślanie_ i przejść od razu do _działania_ w wielu przypadkach.) Stworzyłem gry, ezoteryczne języki programowania oraz mnóstwo widżetów i gadżetów. Obecnie pracuję nad językiem programowania ogólnego przeznaczenia. Nie ma nic lepszego niż programowanie. Czy edukacja uniwersytecka to naprawdę coś więcej niż tylko formalność?


title: Zdobycie pierwszej pracy bez dyplomu technicznego

text: Jak trudno byłoby komuś, kto ukończył studia społeczne, znaleźć swoją pierwszą pracę jako młodszy programista? To przy założeniu, że mają doświadczenie z projektami open source, mają rozsądną ilość własnych małych projektów napisanych w różnych językach i pasję do tworzenia oprogramowania. Czy stopień, który nie dotyczy informatyki, elektrotechniki, matematyki itp., zaszkodziłby ich szansom? Dziękuję Ci.


title: Czy lepiej mieć plik przechowywany jako zip w usłudze w chmurze?

text: Zajmuję się tworzeniem korporacyjnej aplikacji na iPada, która zawierała dużą ilość różnych danych pakietowych w zakresie grup obrazów. Czy warto przechowywać jako skompresowany format pliku czy zwykły zestaw pojedynczych plików? Nie martwię się o ogromną ilość danych, które znajdują się w chmurze. Obawiam się, że dostawca usług w chmurze pobiera opłaty tylko w zależności od żądania, a nie od ilości przechowywanych danych. Jeśli przechowuję pojedynczy plik w chmurze, powoduje to więcej żądań podczas korzystania z aplikacji. Więc to będzie tyle kosztować. Czy lepiej przechowywać jako skompresowany plik w chmurze?


title: Jakich narzędzi użyć do programowania Embedded Linux C++ z szybkim kompilatorem i prawdopodobnie między platformami

text: Nie jestem zadowolony z naszego środowiska kompilacji dla naszego sprzętu opartego na Linuksie (Ubuntu 10.04). Jest to oprogramowanie wbudowane, które rozwijamy. Chciałbym mieć optymalną mieszankę tych życzeń: * Używaj sprawdzonych narzędzi i bibliotek * Umiejętność programowania zarówno na Linuksie, jak i Windows * Idealnie: używaj tych samych narzędzi na obu platformach * Miej szybkie cykle rozwoju, szczególnie na Windows Pamiętaj, że płacenie za dobre rzeczy jest zdecydowanie opcją. Zauważ również, że C++ i Linux to jedyne dwa trudne wymagania, wszystko inne jest otwarte do dyskusji. Obecnie korzystamy z bibliotek Boost i STL, aby uzyskać jak największą niezależność od platformy. CodeBlocks to nasze wieloplatformowe IDE i używamy łańcucha narzędzi gcc (kompilator, linker, debugger, nie make). Wszystkie są doskonałymi projektami open source, ale mają swoje ograniczenia. Największe problemy z obecnym środowiskiem: 1. W porównaniu z MS Visual C++ czuję, że gcc jest bardzo wolne. Dużo czasu spędza się na kompilacji, a zwłaszcza na linkowaniu. Wstępnie skompilowana obsługa nagłówków gcc nie zapewnia takiego samego przyrostu wydajności, jak w przypadku VC, az boostem naprawdę tego potrzebujesz. Ponadto statyczne połączenie kilku bibliotek boost trwa wiecznie. (Czy użycie dynamicznego linkowania zmieniłoby się znacznie?) 2. CodeBlocks nie obsługuje tego, co w VC są plikami właściwości. Utrudnia to wymuszenie, że opcje kompilacji są takie same dla wszystkich projektów w obszarze roboczym. 3. Związane z szybkością kompilacji: CodeBlocks nie obsługuje "kompilacji tylko tego projektu", tak jak VC. Zmieniając pojedynczy plik źródłowy, CodeBlocks spędza zbyt dużo czasu na sprawdzaniu, czy nie ma potrzeby kompilowania plików, o których wiem, że nie uległy zmianie. Niektóre z moich dotychczasowych przemyśleń: * Największym problemem jest posiadanie szybkiego, niezawodnego kompilatora i linkera na wszystkich platformach, na których tworzymy. Jeśli to zostanie rozwiązane, co z programowaniem na wielu platformach? Czy kompilatory Intel C++ są opcją (tak naprawdę nie potrzebujemy optymalizacji wydajności tych kompilatorów)? Czy powinniśmy rozważyć wykonanie kompilacji krzyżowej? * Czy powinniśmy używać kompilacji opartej na markach? Wydaje się, że jest to rozwiązanie, gdy trudno jest używać tego samego narzędzia IDE/kompilacji w systemie Windows i Linux. Uważam, że jest to trudne, więc to mnie powstrzymuje. * Czy istnieje jeden produkt o równoważnej dojrzałości co Visual Studio (IDE i łańcuch narzędzi) dostępny dla systemów Windows i Linux? A może tylko dla Linuksa? * O ile prostsze byłoby życie, gdybyśmy zdecydowali się rozwijać tylko na Linuksie? Obecnie wszyscy korzystamy z systemu Windows, ponieważ jest on wspierany przez dział IT, nasze oprogramowanie niedeweloperskie to wszystkie okna i mamy ograniczone doświadczenie w zakresie Linuksa w naszej firmie. Twoje myśli proszę.


title: Wysyłanie nazwy użytkownika i hasła w każdym żądaniu z aplikacji na iPhone'a

text: Piszę kombinację aplikacji mobilnej i usługi sieciowej, która wymaga zalogowania się użytkownika. Serwis internetowy będzie korzystał z SSL, więc czy są jakieś powody, aby nie wysyłać nazwy użytkownika i hasła w każdym żądaniu sieciowym? Wiem, że niektóre witryny generują token po zalogowaniu się użytkownika, którego mogą użyć do uwierzytelnienia, ale token wydaje się równoważny parze nazwa użytkownika/hasło - więc nie jestem pewien, czy ma to sens. Czy mam zamiar popełnić duży błąd w kwestii bezpieczeństwa?


title: Wzorzec projektowy dla projektu ASP.NET przy użyciu Entity Framework

text: I 'm tworzenia witryny sieci Web w ASP.NET (Web Forms) na górze silnika z regułami biznesowymi (który zasadniczo znajduje się w oddzielnej bibliotece DLL), połączonej z bazą danych mapowaną za pomocą Entity Framework (w trzecim, oddzielnym projekcie). Najpierw zaprojektowałem silnik, który ma kontekst Entity Framework, a następnie przeszedłem do strony internetowej, która prezentuje różne raporty. Uważam, że popełniłem _straszny błąd projektowy_ polegający na tym, że strona internetowa ma swój własny kontekst (który na początku brzmiał normalnie). Przedstawiam tę makietę silnika i kod strony raportu za: Silnik (w osobnym DLL): public Engine { DatabaseEntities _engineContext; public Engine() { // Ciąg połączenia i procedura zarządzana w warstwie bazy danych _engineContext = DatabaseEntities.Connect(); } public ChangeSomeEntity(SomeEntity someEntity, int newValue) { //Załóżmy, że jest też trochę walidacji, nietrywialne rzeczy SomeEntity.Value = newValue; _engineContext.SaveChanges(); } } I raport: public częściowa klasa MyReport : Page { Engine _engine; DatabaseEntities _webpageContext; publiczny MójRaport() { _silnik = nowy Silnik(); _databaseContext = DatabaseEntities.Connect(); } public void ChangeSomeEntityButton_Clicked(object sender, EventArgs e) { SomeEntity someEntity; //Zły sposób: //Pobierz encję z kontekstu strony internetowej someEntity = _webpageContext.SomeEntities.Single(s => s.Id == SomeEntityId); //Wyślij jednostkę z _webpageContext do silnika _engine.ChangeSomeEntity(someEntity, SomeEntityNewValue); // <- ups, konflikt kontekstu //Właściwy(?) sposób: //Pobierz encję z kontekstu silnika someEntity = _engine.GetSomeEntity(SomeEntityId); //niezdefiniowane powyżej //Wyślij encję z kontekstu silnika do silnika _engine.ChangeSomeEntity(someEntity, SomeEntityNewValue); // <- ups, konflikt kontekstu } } Ponieważ strona internetowa ma swój własny kontekst, nadanie Engineowi encji z innego kontekstu spowoduje błąd. Zdarza mi się _wiem_, że tego nie robię, tylko podaję encje Engine z ich własnego kontekstu. Ale jest to projekt bardzo podatny na błędy. Widzę teraz błąd w moich drogach. Po prostu nie znam właściwej ścieżki. Zastanawiam się nad: * Utworzeniem połączenia w silniku i przekazaniem go do strony internetowej. Zawsze twórz instancję silnika, udostępniaj jego kontekst z poziomu właściwości, udostępniając go. Możliwe problemy: inne konflikty? Wolny? Problemy ze współbieżnością, jeśli chcę rozszerzyć do AJAX? * Tworzenie połączenia ze strony internetowej i przekazywanie go do silnika (uważam, że to wstrzykiwanie zależności?) * Tylko rozmawianie przez ID. Tworzy nadmiarowość, nie zawsze praktyczną, brzmi archaicznie. Ale jednocześnie już odzyskuję rzeczy ze strony jako identyfikatory, które i tak muszę pobrać. Jaki byłby tutaj najlepszy kompromis dla bezpieczeństwa, łatwości użytkowania i zrozumienia, stabilności i szybkości?


title: Kompromis między prostotą a wydajnością

text: CTO zadzwonił, aby poinformować mnie o nowym projekcie iw trakcie powiedział mi, że mój kod jest dziwny. Wyjaśnił, że moi koledzy mają trudności ze zrozumieniem ze względu na zbyt skomplikowane, często nowe koncepcje i stosowane technologie, z którymi nie są zaznajomieni. Poprosił mnie, abym utrzymywał prostą bazę kodu i pomyślał o innych, które odziedziczą moje zmiany. Poświęciłem sporo czasu na opanowanie LINQ i kodowania bezpiecznego dla wątków. Jednak inni wydają się nie przejmować ani nie są pod wrażeniem czegokolwiek innego niż ich wypłata. Czy muszę zachować prostotę (głupie), tylko dlatego, że inni nie są zaznajomieni z najlepszymi praktykami i efektywnym kodowaniem? A może powinienem nadal robić to, co uważam za najlepsze i pisać kod _po mojemu?_


title: Czy muszę wydać kod oprogramowania na licencji MIT z biblioteką GPL?

text: Powiedzmy, że używam Node-Webkit, środowiska uruchomieniowego aplikacji licencjonowanego przez MIT. Teraz powiedzmy, że postanawiam dołączyć bibliotekę JavaScript na licencji GPL: chociaż nie modyfikuję pobranego pliku JS, piszę własny kod, korzystając z funkcji biblioteki. Planuję sprzedać finalny, zaciemniony plik wykonywalny i zastanawiam się: jaka jest ostateczna licencja kompletnego oprogramowania? Czy muszę wydać tylko bibliotekę GPL, czy licencja GPL dotyczy całego kodu, który napisałem? Co dzieje się z licencją Node-Webkit MIT?


title: Wyjątki „Błąd programowania” – Czy moje podejście jest prawidłowe?

text: Obecnie próbuję ulepszyć moje użycie wyjątków i znalazłem ważne rozróżnienie między wyjątkami, które oznaczają błędy programistyczne (np. ktoś przekazał null jako argument lub wywołał metodę na obiekcie po jego usunięciu) a tymi, które oznaczają niepowodzenie w operacja, która nie jest winą wywołującego (np. wyjątek we/wy). Jak te dwa rodzaje wyjątków należy traktować inaczej? Czy uważasz, że wyjątki błędów muszą być wyraźnie udokumentowane, czy wystarczy udokumentować odpowiednie warunki wstępne? I czy możesz pominąć dokumentację warunku wstępnego lub wyjątku błędu, jeśli powinno to być oczywiste (na przykład `ObjectDisposedException` podczas wywoływania metody na usuniętym obiekcie)


title: Czy jest jakiś powód, dla którego powinienem używać nawiasów podczas wywoływania new w PHP?

text: Gdy nie ma argumentów, mamy dwie opcje: $obj = new MojaKlasa; vs. $obj = nowa MojaKlasa(); Zawsze wybieram to pierwsze, tylko dlatego. jakieś pomysły?


title: Czy korzystając z łączenia metod, ponownie użyję obiektu, czy go utworzę?

text: Używając łączenia metod, np.: var car = new Car().OfBrand(Brand.Ford).OfModel(12345).PaintedIn(Color.Silver).Create(); mogą być dwa podejścia: * Ponowne użycie tego samego obiektu, na przykład: public Car PaintedIn(Color color) { this.Color = color; zwróć to; } * Utwórz nowy obiekt typu `Samochód` na każdym kroku, tak jak to: public Car PaintedIn(Color color) { var car = new Car(this); // Klonuj bieżący obiekt. samochód.Kolor = kolor; // Przypisz wartości do klona, a nie oryginalnego obiektu. samochód powrotny; } Czy pierwszy jest _błędny_, czy raczej jest to osobisty wybór dewelopera? * * * Uważam, że pierwsze podejście może szybko spowodować intuicyjny/zwodniczy kod. Przykład: // Utwórz samochód bez koloru ani modelu. var mercedes = new Car().OfBrand(Marka.MercedesBenz).PaintedIn(NeutralColor); // Stwórz kilka samochodów na podstawie neutralnego samochodu. var żółtySamochód = mercedes.PaintedIn(Kolor.Żółty).Utwórz(); var specificModel = mercedes.OfModel(99).Create(); // Czy samochód `specificModel` będzie żółty czy neutralny? Jak można by się domyślić, że // `yellowCar` byłyby w oddzielnej metodzie wywoływanej gdzie indziej w kodzie? jakieś pomysły?


title: Jaki poziom/format dostępu należy przyznać klientowi do systemu śledzenia spraw?

text: Kiedyś myślałem, że dobrym pomysłem byłoby umożliwienie klientowi dostępu do systemu śledzenia problemów, ale teraz zauważyłem, że stwarza to mniej niż idealne sytuacje, takie jak: * Klient ocenia postęp wyłącznie na podstawie liczby zgłoszeń * Programiści odmówiono dodawania problemów, aby uniknąć myślenia klienta, że postęp jest mniejszy * Klient wyznacza osoby po swojej stronie, aby dodawać problemy, które nie zawsze wykonują dobrą robotę (dużo duplikatów, niewystarczające informacje do odtworzenia i inne rzeczy, które odwracają uwagę ludzi od wykonywania swojej prawdziwej pracy) Uważam jednak, że klienci powinni mieć dostęp do pewnych wskaźników lub dowodów na postęp, a także prawo do zgłaszania błędów. Więc jakie byłoby idealne rozwiązanie tej sytuacji?, a zwłaszcza wyjście z lub poprawienie pierwszej opisanej sytuacji?


title: Jakie są dobre interfejsy API zdjęć i grafiki?

text: Wpadliśmy na pomysł uruchomienia usługi e-kartek i zastanawialiśmy się nad możliwością zapełnienia naszej strony za pomocą API zdjęć/grafiki. Z powodów prawnych Flikr prawdopodobnie nie będzie działać, chociaż zacząłem przeszukiwać sieć w poszukiwaniu innych opcji. Zasadniczo potrzebujemy tylko dwóch funkcji 1. użytkownik powinien mieć możliwość przeglądania kolekcji witryny i wybrania obrazu 2. powinniśmy mieć możliwość przywołania i zrenderowania określonego obrazu na naszej stronie. Stamtąd nie powinniśmy mieć problemu ze zbudowaniem naszej aplikacji. Główną przeszkodą jest to, że w tej chwili brakuje nam treści. Nie udało mi się znaleźć zbyt wielu przykładów tego, co zostało zrobione, więc zastanawiałem się, czy ktoś tutaj może znać ludzi, którzy zrobili coś podobnego do tego, co my próbujemy zrobić, lub znać jakieś tropy, które mogą być w stanie pomóż nam. Mile widziane są również sugestie dotyczące innych dostępnych interfejsów API lub forów/społeczności, które mogą wskazać nam właściwy kierunek.


title: Wybór odpowiedniej licencji

text: Mam problem z doborem odpowiedniej licencji do moich prac. Mam kilka wymagań: * Nie copyleft jak GNU (L)GPL i zezwala na redystrybucję na innych licencjach * Pozwala innym osobom na redystrybucję twojej (zmodyfikowanej) pracy, ale uniemożliwia innym zarabianie pieniędzy na mojej pracy (muszą zapytać /kup licencję komercyjną, jeśli chcą) * Zgodny z GNU (L)GPL * Nie odpowiadam za jakiekolwiek szkody spowodowane przez moją pracę Teraz napisałem swoją własną małą licencję opartą na licencjach BSD i CC Attribution- NonCommercial 3.0, ale Nie jestem pewien, czy sprawdzi się w sądzie. Prawa autorskie **< rok>** **< właściciel praw autorskich>**. Wszelkie prawa zastrzeżone. Redystrybucja tej pracy, z modyfikacjami lub bez, jest dozwolona pod warunkiem spełnienia następujących warunków: 1. Wszystkie redystrybucje muszą przypisywać **<właścicielowi praw autorskich>** oryginalnego autora lub licencjodawcę tej pracy (ale nie w żaden sposób, który sugeruje, że popierają Ciebie lub korzystanie z utworu). 2. Wszelkie redystrybucje muszą być dokonywane w celach niekomercyjnych i bezpłatne, chyba że zostanie udzielona wyraźna pisemna zgoda **<właściciela praw autorskich>**. Ta praca jest dostarczana przez **<właściciela praw autorskich>** „tak jak jest”, a wszelkie wyraźne lub dorozumiane gwarancje są wykluczone. **<właściciel praw autorskich>** nie ponosi odpowiedzialności za jakiekolwiek szkody wynikające w jakikolwiek sposób z korzystania z tej pracy. Teraz możesz mi pomóc: * Wskaż mi istniejącą licencję, która spełnia moje wymagania * Potwierdź, że moja licencja nie ma większych wad i najprawdopodobniej zostałaby rozstrzygnięta w sądzie **Edytuj:** Czy możesz zdefiniować „zgodna z GNU (L)GPL”? „zgodny z GNU (L)GPL” oznacza, że cały kod licencjonowany na jej podstawie może być importowany do projektu GNU (L)GPL, ale nie (koniecznie) odwrotnie. Użyłem sformułowania „niekomercyjny”, ale mam na myśli, że prośba o pieniądze za (zmodyfikowaną) redystrybucję, chyba że kupiłeś „komercyjną” licencję. **EDYTUJ** Więc w zasadzie proszę o coś niemożliwego. W kolejności ważne dla mnie: 1. Nie copyleft jak GNU (L)GPL i zezwala na redystrybucję na innych licencjach 2. Kompatybilny z GNU (L)GPL 3. Pozwala innym osobom na redystrybucję twojej (zmodyfikowanej) pracy, ale zapobiega temu inni ludzie swobodnie zarabiają na mojej pracy (muszą poprosić/kupić licencję komercyjną, jeśli chcą) Pierwsze i drugie są doskonale kompatybilne, ale ostatnie nie jest kompatybilne z drugim, a przejście na open source nie jest kompatybilne z pierwszy. RAH! To jest nowa licencja, której będę używać. 10 linii, szybko do punktu i ciasno (z punktu widzenia IANAL). Prawa autorskie **< rok>** **< właściciel praw autorskich>**. Wszelkie prawa zastrzeżone. Ponowna dystrybucja tej pracy, z modyfikacją lub bez, jest dozwolona, jeśli **< właściciel praw autorskich>** jest uznawany za oryginalnego autora lub licencjodawcę tej pracy, ale nie w żaden sposób, który sugeruje, że **< właściciel praw autorskich>** popiera Ty lub Twoje korzystanie z utworu. Ta praca jest dostarczana przez **<właściciela praw autorskich>** „tak jak jest”, a wszelkie wyraźne lub dorozumiane gwarancje są wykluczone. **<właściciel praw autorskich>** nie ponosi odpowiedzialności za jakiekolwiek szkody wynikające w jakikolwiek sposób z korzystania z tej pracy.


title: Jak zorganizować średniej wielkości zespół z bardzo dużą, starszą bazą kodu?

text: Jest tu już kilka pytań na temat Programistów na temat organizowania małych zespołów, ale mamy większy (średni?) zespół, a to trochę inne zwierzę. Moje pytanie brzmi więc: **Jak zorganizować średniej wielkości zespół z bardzo dużą, starszą bazą kodu**? Albo lepiej, oceńmy to trochę jaśniej: Zespół ma: * 20 programistów (dobra mieszanka seniorów i juniorów) * 7 ludzi QA Produkt jest duży (2 miliony linii kodu) z 10-12 głównymi modułami podzielonymi na trzy główne obszary (klient desktopowy, serwer zaplecza, web). Zespół musi wykonać: * wsparcie/utrzymanie istniejącej bazy klientów * Dostosowanie produktu do obsługi nowych i istniejących klientów * Zbudowanie nowych funkcji, aby produkt mógł się rozwijać * Zapewnienie testowania regresji dla wszystkich nowych funkcji, a także rozwijanie regresji dla długu technicznego Konkretne pytania podrzędne: * Co sądzisz na temat „Konkretny zespół wsparcia” czy „Zespoły modułowe naprawiają wszystkie swoje błędy” * Jak zmaksymalizować czas programowania i zminimalizować czas administrowania (przeglądy kodu, inne „rzeczy wiodących programistów” ) * Jak zintegrować/zorganizować osoby zajmujące się kontrolą jakości, aby zapewnić odpowiednie zestawy testów i regresji? * Jakie stanowiska nietechniczne (kierownik ds. kontroli jakości, menedżer ds. deweloperów itp.) mogą być dobre dla maksymalizacji produktywności programistów? Twoje przemyślenia na ten temat są bardzo cenione. EDIT: Powinienem dodać, że nie jestem tutaj nieświadomy, po prostu próbuję stymulować niektóre pomysły. To nie jest łatwy problem, więc jestem otwarty na mądrość waszych wspaniałych ludzi.


title: Jakieś przykłady wykorzystania programu Visio do dokumentowania oprogramowania?

text: Mam Visio 2010 i chcę się nauczyć, jak go używać do dokumentowania oprogramowania. Czy ktoś ma przykłady tego, co Visio robi dobrze? Czy są jakieś rzeczy, które Visio może zrobić, ale są lepsze narzędzia do tej pracy? Jakie są twoje doświadczenia?


title: Identyfikacja użytkowników

text: Posiadamy witrynę, która umożliwia użytkownikom generowanie własnych treści. Jeśli użytkownicy generują nielegalne treści, prześlemy zgłoszenie do władz. W przypadku, gdy musimy zgłosić użytkownika, chcemy uzyskać jak najwięcej informacji o tym użytkowniku. Mając to na uwadze, mam dwa pytania: * Czy śledzenie adresu IP użytkownika wystarczy, aby go zidentyfikować? * I śledzimy adres IP użytkownika w tabeli sesji, która jest okresowo czyszczona. Czy powinniśmy zarchiwizować dane sesji, aby zachować te informacje, czy zamiast tego umieścić pole ip_address w naszych tabelach Post i Komentarze?


title: Co było pierwsze, kompilator czy źródło?

text: Jestem ciekaw narodzin kompilatora. Jak zaczęło się programowanie? Czy ludzie najpierw zbudowali sprzęt, który rozpoznawał określony zestaw poleceń, czy też zdefiniowali język, a następnie zbudowali wokół niego sprzęt? I nawiązując do tematu, jaki był pierwszy język programowania?


title: Kto jest właścicielem kodu, jeśli projekt został anulowany

text: Problem: pracuję na niezależnym rynku i postanowiłem anulować projekt z jednym z moich klientów, ponieważ klient jest niemożliwy do pracy z nieograniczonymi opóźnieniami i wieloma błędami w jego backendzie. Chcę dać mu częściowy zwrot pieniędzy (częściowy, ponieważ pracowałem przez dwa miesiące i mam 3k linii kodu, ale aplikacja nadal nie działa z powodu problemów z jego backendem). Pytanie: kto jest „właścicielem” kodu, który napisałem? Nie uzgodniliśmy tego po rozpoczęciu projektu. Czy mogę mu powiedzieć, żeby nie używał mojego kodu? Rozumiem, że i tak może zignorować mój zakaz, chcę tylko wiedzieć, czy mam formalne „prawo” do powiedzenia tego.