title: PHP, Python, C# dla aplikacji webowych i desktopowych

text: Jestem 10-letnim programistą PHP. Niedawno zainteresowałem się C# po tym, jak zobaczyłem, że można budować natywne programy komputerowe Windows, a także budować witryny takie jak Stackoverflow. To jak najlepsze z obu światów. Teraz ostatnio zacząłem używać edytora tekstu, który wielu zna, o nazwie SublimeText, który jest kodowany w C++ i ma wbudowany Python, dzięki czemu użytkownicy mogą tworzyć prawie wszystko w Pythonie i używać go jako wtyczki do tego edytora tekstu. Nigdy czegoś takiego nie widziałem. To sprawiło, że przyjrzałem się Pythonowi, ponieważ zawsze myślałem, że Python jest jak inny język podobny do PHP (język skryptowy głównie dla sieci), ale teraz widzę, że możesz tworzyć programy desktopowe, które działają na dowolnym systemie operacyjnym, tworzyć aplikacje internetowe jak możesz w PHP, więc jest to prawie jak to, co możesz zrobić z C#, ale z dodatkową korzyścią bycia wieloplatformowym Teraz to nie jest debata Jeden język kontra inny język, po prostu próbuję dowiedzieć się więcej o tym, jak te obce języki języki do mnie porównaj: * PHP to skrypty * Python myślę, że to skrypty * C# musi być skompilowany? Python może być używany do budowania wszystkiego, co potrafi C#? Włączając szybkie aplikacje desktopowe, czy aplikację Pythona można skompilować do pliku EXE lub jak to działa, aby używać programu Pythona w systemie Windows? Proszępomóż mi zrozumieć Utknąłemw świecie PHP przez długi czas Nigdy nie odważyłemsięwykroczyć poza JavaScript, PHP webowe rzeczy Również zdaję sobie sprawęże PHP może byćużywane do tworzenia GUI ale z tego co przeczytałem nie są one takie dobrze lub nie jest to dobre dla ich robienia, coś w tym stylu.


title: Hotswap i alternatywy?

text: Od pierwszych dni mojego studenckiego życia używam Javy, a największym problemem, jaki mamy, jest bycie mniej produktywnym niż inne interpretowane języki. Wszyscy ludzie są pewni, że java jest jednym z najlepiej skompilowanych języków. Jednak ani Sun, ani Oracle nie włożyły wystarczającego wysiłku w rozwiązanie tego problemu. Jednym z problemów jest oczywiście przeładowanie klas. Ostatnie próby społeczności rozwiązania tego problemu to projekt DaVinci Hotswap, JRebel, PlayFramework. Jednak w momencie pisania tego tekstu nie byli jeszcze dojrzali (imo) i tubylcy. Niektóre z nich nie są gotowe do pracy w przedsiębiorstwach, niektóre nie są kompatybilne ze wszystkimi IDE, niektóre z nich to niedojrzałe projekty uniwersyteckie. Mapa drogowa, a nawet Java gotowa dla programistów jest gotowa, ale społeczność Java wciąż nie ma rozwiązania na przeładowywanie klas w locie. Czy Oracle tak trudno jest podjąć wysiłek, aby rozwiązać ten problem? Dlaczego przeładowanie klas nie zostało jeszcze zaimplementowane natywnie?


title: Jakie są wymagania prawne dotyczące weryfikacji wieku użytkownika? (Stany Zjednoczone)

text: Pracuję nad stroną internetową, na której oczekujemy, że wielu naszych użytkowników będzie miało mniej niż 18 lat. Nasz prawnik powiedział nam, że każda osoba poniżej 18 roku życia będzie potrzebować zgody rodziców na Warunki korzystania z usługi, ponieważ nie jest w stanie tego zrobić samodzielnie. . Moje pytanie brzmi, jak dokładnie musimy zweryfikować wiek użytkownika? Czy wystarczy po prostu ich zapytać?


title: Jakie są dobre zasoby do przygotowania się do odpowiedzi na pytania do rozmowy kwalifikacyjnej na temat tworzenia stron internetowych?

text: Standardowe książki i strony internetowe z wywiadami z programistami zawierają proste pytania dotyczące algorytmów i kodowania. Ale jak przygotować się na pytania wysokiego poziomu dotyczące tworzenia stron internetowych? Na przykład: „Jak zbudowałbyś witrynę X? Jakich struktur danych byś użył? itd.” Czy istnieje dobra strona lub książka, w której można przeczytać recenzje takich materiałów?


title: nadpisywanie zmiennych w PHP

text: Na przykład mam ten kod: $route = 'produkt/kategoria'; //przeciążenie zmiennej $type = explode('/',$route); $typ = $typ[1]; Moje myślenie za tym jest takie, że właściwie nie potrzebuję unikalnej nazwy zmiennej dla zmiennej rozbitej, więc dlaczego nie nadpisać? Czy to naprawdę zły pomysł? A może jest jakiś bardziej elegancki sposób na napisanie tego?


title: Czy mogę połączyć instalator GPL i płatne razem?

text: Mam klienta marketingu afiliacyjnego, który musi wiedzieć, czy mogę to zaprogramować. Czy mogę wykonać jeden lub oba z poniższych scenariuszy bez naruszania licencji GPL? Scenariusz A: Utwórz instalator oprogramowania dla produktu na licencji GPL, który zawiera informacje o źródle, plikach binarnych i licencji. Instalator ma również pole wyboru do zainstalowania opcjonalnego oprogramowania, które jest płatne. (W tym przypadku oprogramowanie płatne jest darmowym oprogramowaniem kaleki, ale ma dodatkową sprzedaż, aby zapewnić więcej funkcji.) Te dwa produkty nie będą współdzielić bibliotek ani niczego innego. Scenariusz B: taki sam jak A, ale odwrócony. Tak więc instalator instaluje płatne oprogramowanie, ale jest też pole wyboru, aby zainstalować oprogramowanie GPL. I znowu, kiedy instalujesz oprogramowanie GPL, zawiera ono pliki binarne, informacje o źródle i licencji.


title: Czy możesz odwołać się do jednej wartości danych za pomocą nazwy w całym arkuszu stylów?

text: Na przykład zmieniam palety kolorów w witrynie, którą koduję, i chciałbym, abym mógł w jakiś sposób odnieść się do tego koloru zamiast zastępować wartość szesnastkową dla każdego elementu. Wiem, że poniższe nie działa, ale chciałbym coś podobnego. kolor1 = czerwony; kolor2 = niebieski; kolor3 = zielony; h1 { kolor: kolor1; kolor tła: kolor2; } h2 { kolor: kolor2; kolor tła: kolor3; }


title: Dlaczego miałbyś tworzyć skrypt wdrażania w PowerShell, gdy masz TFS?

text: Eksperymentuję z automatycznym wdrażaniem / ciągłą integracją i rozmawiałem z liderem mojego zespołu. Powiedziałem mu, że badam tworzenie skryptów kompilacji/wdrażania w PowerShell, a on powiedział, że automatyczne wdrażanie jest bardzo łatwe do skonfigurowania w TFS za pomocą GUI i powinienem to zbadać. Mam zerowe doświadczenie z TFS, z wyjątkiem zatwierdzania kontroli źródła z VS. W jakich sytuacjach TFS zawiedzie i czy lepiej byłoby, gdyby PowerShell do automatycznego wdrażania? Jakie są inne powody i zalety, aby wybrać PowerShell zamiast TFS? I jeszcze jedno: czy mógłbym uruchomić narzędzie innej firmy, które na przykład minifikuje pliki JS z TFS? Niektóre zalety PowerShell, o których mogłem pomyśleć: * PowerShell oferuje maksymalną elastyczność * Możesz łatwo przełączyć się na inny system kontroli źródła, taki jak Mercurial * Skrypty będą łatwiejsze w utrzymaniu niż to, co generuje TFS * PowerShell jest lekki: możesz uruchomić skrypt na dowolnym komputerze


title: Czy cloud computing to tylko sposób na wypożyczanie zasobów?

text: Firma, w której pracuję, niedawno hostowała usługę internetową w systemie Windows Azure i ogłosiła to. Teraz w magazynach internetowych można znaleźć wiele bezsensownych rzeczy, takich jak „firma X przenosi się do chmury”, „firma X porzuca komputery stacjonarne w chmurze” itp. Wygląda na to, że istnieje wiele materiałów (poczynając od Wikipedii), które są bardzo długie i dużo mówię o "usługach" i "niskiej cenie wejścia" i innych rzeczach, ale przeczytałem to wszystko i nie widzę, jak mogą być pomocne dla laika w narysowaniu granicy między usługą w chmurze a Stack Exchange jest to również usługa, ale jest uruchamiana na serwerach stacjonarnych w kolokacji. Teraz, z mojego doświadczenia z Windows Azure, prawdziwa różnica jest następująca. W chmurze właściciel usługi wynajmuje sprzęt, przepustowość sieci i prawo do używania oprogramowania pośredniego (Windows 2008, który jest używany na przykład w rolach Azure) na żądanie, a także jest pewna pomoc w konserwacji (na przykład w przypadku awarii komputera, na którym działa rola, innego komputera zostanie automatycznie znaleziony, a rola zostanie ponownie wdrożona). Bez chmury właściciel usługi będzie musiał sobie z tym wszystkim poradzić sam. Czy to będzie właściwe rozróżnienie?


title: Jak efektywnie zarządzać stażystą?

text: Niedługo zacznie z nami stażysta na kilka miesięcy przed wyjazdem na studia. Stażysta jest świeżo upieczonym liceum i ma pewne doświadczenie w programowaniu, ale nigdy nie studiował informatyki na poziomie uniwersyteckim ani nie pracował w programowaniu. Ponadto stażysta nigdy nie korzystał z 99 procent technologii w naszym sklepie. Jako lider zespołu/kierownik wiem, że istnieje setka różnych zadań programistycznych, które zespół musi wykonać. Nie chcę przeciążać stażysty, ale nadal chcę, aby stażysta był użyteczny. Od kogoś, kto miał podobne doświadczenie, jak poradziłeś sobie ze stażystą w odniesieniu do: 1. Czy zarządzałeś stażystą w skali mikro, czy byłeś niefrasobliwy? 2. Czy wyjaśniłeś części kodu bazowego, czy pozostawiłeś to stażyście, aby to rozgryzł? 3. Czy dałeś stażyście dostęp do kontroli źródeł, czy ręcznie zatwierdziłeś ich zmiany po ich sprawdzeniu? 4. Czy egzekwowałeś standardy/zasady kodowania? Odpowiedz na pytania i wspomnij, co według Ciebie działało najlepiej w przypadku 1-4. Czy o czymś zapomniałem?


title: Skuteczne kryteria mentoringu

text: Jakie powinny być podstawowe rzeczy, które mentor lub kierownik zespołu lub ktokolwiek (doświadczony) w zespole powinien zrobić, aby przygotować lub mentorować nowo dołączonego programistę? -


title: Programowanie funkcji IDE, aby dodać zapomniane otwarte nawiasy?

text: Bardzo często znajduję się w sytuacjach, w których powinienem był otworzyć nawias, ale zapomniałem i w końcu z furią wciskałem lewą strzałkę, aby dostać się do miejsca, w którym powinienem był umieścić, i robię to samo, aby wrócić do miejsca, w którym byłem - to lub zdejmując jedną rękę z klawiatury, aby zrobić to za pomocą myszy. Tak czy inaczej, to głupi błąd z mojej strony i marne wykorzystanie czasu, aby to naprawić. Na przykład, jeśli wpiszesz coś takiego jak var x = 100 - var1 + var2; Mogę dotrzeć do końca instrukcji i zdać sobie sprawę, że chciałem odjąć sumę zm1 i zm2 od 100 i nie dodawać zm2 do różnicy 100 i zm1. Naprawdę nie mogę oczekiwać, że IDE zapobiegnie moim błędom, ale myślałem, że może istnieć wystarczająco prosta funkcja, która zaoszczędziłaby czas podczas ich tworzenia. W szczególności pewien rodzaj funkcji, która po dodaniu nawiasu zamykającego, gdy nie ma nawiasu otwierającego, zaczyna pojawiać się w nawiasie otwierającym przy różnych instrukcjach i umożliwia użytkownikowi przełączanie się między nimi. Na przykład: Załóżmy, że masz następującą instrukcję: var x = staryY * staryX + nowyY / nowyX - lewy - prawy; Jeśli umieścisz nawias zamykający po `prawo` i naciśniesz skrót, IDE zrobi: `var x = staryY * staryX + nowyY / nowyX - **(** lewo - prawo);` naciśnij w lewo, a następnie: ` var x = staryY * staryX + nowyY / **(** nowyX - lewy - prawy);` ...then: `var x = staryY * staryX + **(** nowyY / nowyX - lewy - prawy);` W każdym razie... Czy ta funkcja istnieje? Jeśli nie, to czy powinien istnieć? Co robią starsi programiści, gdy tak się dzieje?


title: Jak dodać funkcjonalność do obiektu, który już istnieje?

text: Mam interfejs, który ma pewną ilość dobrze zdefiniowanej funkcjonalności. Powiedzmy: interface BakeryInterface { public function createCookies(); funkcja publiczna createIceCream(); } Działa to dobrze w przypadku większości implementacji interfejsu, ale w kilku przypadkach muszę dodać nową funkcjonalność (jak być może wprowadzoną do nowej metody `createBrownies()`). Oczywistym/naiwnym podejściem do tego byłoby rozszerzenie interfejsu: interface BrownieBakeryInterface extends BakeryInterface { public function createBrownies(); } Ale ma dość dużą wadę, ponieważ nie mogę dodać nowej funkcjonalności bez modyfikacji istniejącego API (jak zmiana klasy, aby używać nowego interfejsu). Myślałem o użyciu adaptera, aby dodać funkcjonalność po wystąpieniu: class BrownieAdapter { private brownieBakery; public function build(BakeryInterface Bakery) { this->brownieBakery = piekarnia; } public function createBrownies() { /* ... */ } } Co dałoby mi coś takiego: bakery = new Bakery(); piekarnia = new BrownieBakery(piekarnia); piekarnia->utwórzBrownies(); Wydaje się, że to dobre rozwiązanie problemu, ale zastanawiam się, czy budzę w ten sposób starych bogów. Czy adapter jest do zrobienia? Czy istnieje lepszy wzór do naśladowania? A może powinienem po prostu kąsać kulę i po prostu rozszerzać oryginalny interfejs?


Jak mówi tytuł, **Jak ważna jest matematyka dyskretna dla informatyka?** Kontekst: Kontynuuję studia magisterskie, koncentrując się na podstawach, takich jak algorytmy, teoria złożoności i obliczalności oraz języki programowania, aby uzyskać dobre podstawy do pracuje w dziedzinie obliczeń równoległych. Trochę więcej tła: Moja uczelnia daje dużą swobodę w wyborze kierunków studiów magisterskich. Oficjalnie nazywa się to „inżynierią oprogramowania”, ale ze względu na szeroki zakres zajęć fakultatywnych możliwy jest inny cel. Co ciekawe, żaden z przedmiotów do wyboru nie jest wykładem z matematyki! Zastanawiam się nad zrobieniem kursu z matematyki dyskretnej, którego ukończenie zajęłoby pół semestru, nawet jeśli nie mogę go wykorzystać do uzyskania stopnia naukowego. Więc z tym pytaniem staram się dowiedzieć, czy wysiłek jest uzasadniony.


title: Czy mogę używać podwójnej licencji w mojej komercyjnej witrynie internetowej?

text: Założyłem aplikację internetową do użytku komercyjnego. Ta aplikacja musiała korzystać z wtyczki (która nie jest pobierana z http://plugins.jquery.com) Pobrałem tę wtyczkę z http://jquery.malsup.com/cycle2 Uprzejmie daj mi znać, czy mogę użyć ta wtyczka w mojej komercyjnej witrynie internetowej. Jeśli to zrobię, czy spowoduje to jakieś konsekwencje w przyszłości? Chociaż widziałem tutaj kilka odpowiedzi, chciałbym nalegać na to, że ma to krytyczne znaczenie. Warunki licencjonowania


title: Nudne, ale ważne nisze, które byłyby kopalnią złota do konsultacji najlepszych praktyk

text: Jestem całkowicie przekonany, że zarabiasz bardzo dobrze jako konsultant, który pomaga klientom w dogłębnym zrozumieniu i praktycznej wiedzy w jednym z następujących tematów * Strefy czasowe, czas letni i dni/sekundy przestępne w przetwarzaniu wszelkiego rodzaju zdarzeń * Kodowanie znaków Oba są małymi niszami, które trudno znaleźć dobrze, jeśli brakuje ci wiedzy i głębokiego doświadczenia, ale pojawia się w wielu projektach. Stąd byliby klienci, którzy chcą uniknąć błędów, a także tacy, którzy namieszali i pilnie potrzebują pomocy. Tematy te są jednak mało seksowne i prawdopodobnie pełne wielu szczegółów, które większość z nich uznałaby za nudne, ale wiem, że istnieją ludzie, którzy lubią rozwiązywać wszelkiego rodzaju trudne problemy. Więc moje pytania brzmią: * Jakie są podobnie nijakie, ale ważne i wysoce specyficzne nisze w rodzaju oprogramowania, które tworzysz? * Czy znasz osoby, które faktycznie prowadzą konsultacje na jeden z tych tematów? Edycja: mówię o poziomie umiejętności, który wykracza poza możliwość samodzielnego zbudowania przyzwoitej implementacji - aby móc szybko dostosować system do najlepszych praktyk po tym, jak inni ludzie naprawdę go zepsuli. To ostatnie nie jest czymś, co można szybko wychwycić. Aha, i przy okazji: nie myślę o przeprowadzce w te rejony i nie zrobiłbym tego za dużo pieniędzy. Właśnie dlatego uważam, że takie nudne rzeczy mogą komuś zarobić na dobre życie.


title: Czy programiści powinni biegle posługiwać się pakietami biurowymi?

text: Jako programista .NET/web developer, moja codzienna praca dotyczy głównie Visual Studio, FireBug, SQL Server,... i jestem w nich całkiem biegły. Problem polega na tym, że moje umiejętności w zakresie Office (w szczególności Microsoft Office i ogólnie oprogramowania biurowego) są złe. Oczywiście _mogę_ ich używać, ale na podstawowym poziomie. Potrafię pisać dokumenty, tworzyć prezentacje, ale mogę po prostu wpisywać/edytować/usuwać w Excelu, ale wszystkie _zaawansowane_ funkcje. Moje pytanie brzmi: czy tolerowanie programisty, takiego jak ja, bycia złym w oprogramowaniu biurowym?


title: Szukasz najszybszego sposobu zbierania danych z formularzy

text: Zajmuję się tworzeniem aplikacji w Flex. Istnieje ponad 20 „stron”, każda z własną formą. Muszę zebrać wszystkie wprowadzone dane i przekazać je do metody API. Zastanawiam się, kiedy powinienem zacząć przekazywać dane i jaki może być najlepszy sposób ich gromadzenia. Myślałem o stworzeniu instancji klasy public class myCollectorClass Metoda API ma 10 parametrów, z których 4 nie są określone przez formularze. Z pozostałych 6 parametrów 5 to proste ciągi z kilkoma opcjami. To nie jest trudna część. Jest to ostatni parametr, z którym najtrudniej jest pracować: public var myDataSet:DataSet[]; //DataSet to typ danych z API Formularze dzielą się na dwie kategorie: Dane geograficzne, które kontrolują obszar geograficzny wartości zwracanych przez API. Oraz Search Data, który kontroluje typ danych zwracanych w ramach parametrów geograficznych. Na przykład, jeśli szukasz firmy informatycznej w USA Kod pocztowy 93003. Jak widać, parametry geograficzne i wyszukiwania są tablicami, a nie prostymi ciągami znaków, a typowa kolekcja będzie zawierać wiele kodów pocztowych, kodów obszaru kodów SCBA itp., a także setki parametrów wyszukiwania. Czy byłoby lepiej, gdybym przekazywał każdą wybraną wartość do tablicy za każdym razem, gdy wprowadzana jest wartość? btnAddParameter.addEventListener(Event.CLICK, dataHandler) Lub przekazać wszystkie wartości na końcu tuż przed złożeniem zamówienia? dla każdego kontenera danych w myClass { var dataObj:Object; dataContainer.value = dataObj; myParamArray.addItem(dataObject) }


title: Jaka jest nazwa tego antywzoru? Pola jako zmienne lokalne

text: W pewnym kodzie, który przeglądam, widzę rzeczy, które są moralnym odpowiednikiem następującego: public class Foo { private Bar bar; public MethodA() { bar = new Bar(); bar.A(); słupek = null; } public MethodB() { bar = new Bar(); kolec(); słupek = null; } } Pole `bar` tutaj jest _logicznie_ zmienną lokalną, ponieważ jego wartość nigdy nie jest zachowywana pomiędzy wywołaniami metod. Jednakże, ponieważ wiele metod w `Foo` wymaga obiektu typu `Bar`, autor oryginalnego kodu właśnie stworzył pole typu `Bar`. 1. To oczywiście źle, prawda? 2. Czy istnieje nazwa tego antywzoru?


title: Znaczenie certyfikatów dla programisty Java bez stopnia BS?

text: Czytałem kilka postów tutaj i innych miejscach o tym, jak wiele osób nie przywiązuje dużej wagi do certyfikatów, ale zaczynam myśleć, że w tym momencie może być konieczne, abym mógł przenieść się do większej firmy itp. Obecnie pracuję jako programista Java w startupie, a wcześniej pracowałem w małej firmie. Teraz, gdy aplikuję do większych firm, pracownicy hr / rekruterzy często pytają o certyfikaty, a niektórzy bezpośrednio sugerowali, że ktoś na moim stanowisku prawdopodobnie powinien dostać kilka (starali się być pomocni), ponieważ nie ukończyłem jeszcze stopień BS (podskakiwałem trochę na studiach i skończyłem, nie kończąc, ale mam wystarczająco dużo jednostek, aby w końcu ukończyć, po prostu nie jest to coś, co mogę zrobić prawie tak łatwo, jak zdobywanie certyfikatów). W każdym razie, po prostu ciekawi mnie, co ludzie myślą o kimś w mojej sytuacji, w której jestem zainteresowany pracą w dużych firmach i nie mam obecnie stopnia licencjata (ale mam już doświadczenie w tej dziedzinie). Wszelkie porady dotyczące tego, które certyfikaty poza SCJP byłyby również mile widziane


title: Jakie są dobre testy refaktoryzacji na małą skalę?

text: Chcę przetestować potencjalnych kandydatów pod kątem ich zdolności do tworzenia zwięzłego kodu wielokrotnego użytku. Czuję, że dobrym testem tej umiejętności byłoby przekazanie im bardzo małej skali aplikacji lub hierarchii klas z problemami od oczywistych do złożonych, i poproszenie ich o ponowne jej przekształcenie (lub przynajmniej ustne wyjaśnienie niektórych rzeczy, które zmieniłbym). Szukałbym takich rzeczy, jak zastosowanie zasad projektowania obiektowego, wykorzystanie wzorców projektowych, ponowne wykorzystanie, pokazanie jasnej intencji itp. Zanim spróbuję zrobić to sam, zastanawiam się, czy ktoś mógłby zasugerować jakieś istniejące programy szablonowe, które ludzie stworzyli w tym samym celu. Nie przejmuję się zbytnio językiem, ale C# lub Java byłyby preferowane ze względu na ich szerokie zastosowanie. Z góry dziękuję!


title: Wydajność oprogramowania współbieżnego na procesorach wielordzeniowych

text: Ostatnio często czytałem, że ponieważ trendem jest budowanie procesorów z wieloma rdzeniami, coraz ważniejsze będzie posiadanie języków programowania obsługujących programowanie współbieżne i równoległe, aby lepiej wykorzystać równoległość oferowaną przez te procesory (patrz np. ten film dla trochę tła.). Pod tym względem pewne paradygmaty lub modele programowania są uważane za dobrze dostosowane do pisania solidnego oprogramowania współbieżnego: * Funkcjonalne języki programowania, np. Haskell, Scala itp. * Model aktora: Erlang, ale dostępny również dla Scala / Java (Akka), C++ (Theron, Casablanca, ...) i innych języków programowania. Moje pytania: * Jaki jest stan wiedzy w zakresie tworzenia aplikacji współbieżnych (np. z wykorzystaniem wielowątkowości) z wykorzystaniem powyższych języków/modeli? Czy ten obszar jest nadal badany, czy też istnieją już ugruntowane praktyki? * Czy programowanie aplikacji o wyższym poziomie współbieżności będzie bardziej skomplikowane, czy jest to tylko kwestia poznania nowych paradygmatów i praktyk? * Jak wydajność oprogramowania o dużej współbieżności wypada w porównaniu z wydajnością bardziej tradycyjnego oprogramowania działającego na procesorach wielordzeniowych? * Na przykład, czy ktoś zaimplementował aplikację desktopową przy użyciu C++/Theron lub Java/Akka? Czy nastąpił wzrost wydajności na procesorze wielordzeniowym z powodu większej równoległości? **EDYTUJ** Zwróć uwagę, że nie proszę o opinie lub debatę, ale o konkretne doświadczenia lub informacje. Na przykład, czy ktoś napisał program Scala lub Haskell, skompilował go za pomocą istniejących, najnowocześniejszych kompilatorów i 1. Uruchom go na procesorze Intel Core i3 i zmierz określoną wydajność (np. 10 sekund na określonych danych wejściowych). 2. Uruchom **ten sam** kod bajtowy lub binarny na procesorze Intel Core i5 i zaobserwowałeś wzrost wydajności (np. 6 sekund czasu działania) ze względu na równoległe obliczanie wyrażeń podrzędnych, co jest możliwe w kodzie funkcjonalnym? **EDYCJA 2** PODSUMOWANIE. Do tej pory tworzenie szybszych procesorów oznaczało zwiększenie szybkości zegara i nie były potrzebne żadne zmiany w paradygmacie programowania. W ciągu ostatnich kilku lat zrobienie szybszego procesora oznaczało dodanie większej liczby rdzeni, ale wymaga to innego pisania oprogramowania. Moje pytanie brzmi, czy twórcy oprogramowania zaczynają przestawiać się na nowe paradygmaty programowania i czy przynosi to oczekiwany wzrost wydajności na procesorach wielordzeniowych.


title: Jaka jest najlepsza platforma testów jednostkowych dla platformy .NET i dlaczego?

text: Wydaje mi się, że każdy używa **NUnit** nawet nie biorąc pod uwagę innych opcji. Myślę, że dzieje się tak dlatego, że: * Wszyscy już to znają, więc nie będą musieli uczyć się nowego API. * Jest już skonfigurowany z serwerem ciągłej integracji do pracy z NUnit. Czy się mylę co do tego? Ostatnio zdecydowałem się na użycie **xUnit** w jednym z moich własnych projektów i bardzo mi się to podoba! Ma to dla mnie o wiele większy sens i koncepcyjnie wydaje się, że jest to zdecydowany krok naprzód od NUnit. Chciałbym usłyszeć opinie na temat tego, który framework jest w rzeczywistości najlepszy - nie biorąc pod uwagę konieczności uczenia się go lub rekonfiguracji testów automatycznych.


title: Oracle ma bardzo pomocny i darmowy kod ... myślę

text: Odkryłem, że część kodu używanego przez Oracle jest bardzo przydatna, więc nie muszę ponownie wymyślać koła. Biorąc pod uwagę, że znajduje się on na początku pliku, gdzie dany kod to: /* * Copyright (c) 1997, 2006, Oracle i/lub jej podmioty stowarzyszone. Wszelkie prawa zastrzeżone. * NIE ZMIENIAJ ANI NIE USUWAJ INFORMACJI O PRAWACH AUTORSKICH LUB TEGO NAGŁÓWKA PLIKU. * * Ten kod jest darmowym oprogramowaniem; możesz go rozpowszechniać i/lub modyfikować * tylko na warunkach Powszechnej Licencji Publicznej GNU w wersji 2, * opublikowanej przez Free Software Foundation. Oracle określa * ten konkretny plik jako podlegający wyjątkowi „Ścieżka klasy”, zgodnie z * dostarczonym przez Oracle w pliku LICENSE dołączonym do tego kodu. * * Ten kod jest rozpowszechniany w nadziei, że będzie przydatny, ale BEZ * ŻADNEJ GWARANCJI; bez dorozumianej gwarancji PRZYDATNOŚCI HANDLOWEJ lub * PRZYDATNOŚCI DO OKREŚLONEGO CELU. Zobacz Powszechną Licencję Publiczną GNU * wersja 2, aby uzyskać więcej informacji (kopia jest zawarta w pliku LICENSE, który * towarzyszył temu kodowi). * * Wraz z tą pracą powinieneś otrzymać kopię GNU General Public License w wersji * 2; jeśli nie, napisz do Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Skontaktuj się z Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * lub odwiedź stronę www.oracle.com, jeśli potrzebujesz dodatkowych informacji lub masz * pytania. */ Jeśli zostawię tekst nienaruszony, wstawiam go do mojego nagłówka C++, wyrocznię dla każdej metody i pakuję źródło do biblioteki statycznej... czy to nadal nie-nie?


title: Jak usprawnić testowanie własnego kodu

text: Dzisiaj sprawdziłem zmianę w jakimś kodzie, który okazał się w ogóle nie działać z powodu czegoś dość głupiego, ale bardzo ważnego. Naprawdę źle się z tym czuję i mam nadzieję, że w końcu się czegoś z tego nauczę. Najgłupsze jest to, że robiłem takie rzeczy już wcześniej i zawsze sobie powtarzam, że następnym razem nie będę taka głupia... Potem to się powtórzy i czuję się z tym jeszcze gorzej. Wiem, że powinieneś trzymać brodę w górze i uczyć się na błędach, ale oto jedna rzecz: staram się poprawić, po prostu nie widzę, jak mogę temu zapobiec. Więc teraz pytam was: czy macie pewne podstawowe zasady podczas testowania kodu?


title: Ocena względnej konserwacji

text: My (właściwie wykonawca) wdrażamy system z półki, aby zastąpić przestarzały system rodzimy dla podstawowej domeny firmy (projektowanie widżetów). Niestety oba systemy będą musiały przez jakiś czas działać równolegle, ponieważ produkt nie jest jeszcze gotowy. Podjęto również decyzję o migracji tylko niektórych widżetów ze starszego systemu, na podstawie daty ostatniej aktywności sprzedażowej. Później pojawiło się nowe wymaganie: niektóre osoby w firmie, w większości poza kontekstem tworzenia widżetów, chcą przeszukiwać _wszystkie_ widżety. Ekran wyników wyszukiwania zawiera 3 elementy danych: identyfikator GUID, identyfikator czytelny dla człowieka, który można przeszukiwać, oraz krótki opis (w przyszłości może być konieczne wyszukiwanie). W szczegółach widżetu będzie wiele ekranów. Ekrany te bardzo dobrze dopasowują się do linii SOA / ograniczonego kontekstu - ekran danych marketingowych, ekran historii sprzedaży itp. UML przed nami! Prawdopodobnie używam tutaj niewłaściwego rodzaju strzał, więc proszę wybacz mi. Obecne rozwiązanie - które nie jest jeszcze w produkcji - wygląda mniej więcej tak: ![Bieżące rozwiązanie](http://yuml.me/9c61dafe) Oba systemy będą odpytywane, a kontroler połączy wyniki. Nowy system ma własny, zastrzeżony język zapytań (trochę złagodziliśmy dzięki dostawcy LINQ). Umieszcza również _dużo_ danych w sieci. 15 wyników wyszukiwania zazwyczaj zawiera około 60 tys. niezrozumiałych plików xml z SOAP. Więc wolałbym uniknąć bezpośredniego odpytywania tego systemu. Te dwa systemy publikują zdarzenia, które pomagają nam zintegrować się z innymi systemami, głównie systemem ERP. Jedno z tych zdarzeń zawiera wszystkie dane potrzebne na ekranie wyszukiwania. Zaproponowałem następującą alternatywę: ![Proponowane rozwiązanie](http://yuml.me/e3678913) Jednak powiedziano mi, że „dodanie kolejnej bazy danych” spowoduje dalsze prace konserwacyjne. Uważam jednak, że to nieprawda, ponieważ musiałem dodać stosunkowo prostą funkcję, która zajęła kilka godzin dłużej niż oczekiwano z powodu tego scalającego kodu. Chcę dowiedzieć się, który system jest łatwiejszy w utrzymaniu na dłuższą metę. Osobiście nie miałem ciężaru utrzymywania dużego systemu. Chcę czegoś więcej niż intuicji. W szczególności chciałbym wiedzieć, czy posiadanie większej liczby wyspecjalizowanych fizycznych baz danych jest mniej lub bardziej łatwe w utrzymaniu niż posiadanie mniej większych fizycznych baz danych.


title: Wzorzec projektowy do modyfikowania stanu i powiadamiania innych modyfikatorów bez pętli

text: Chodzi o to, że mam zestaw właściwości, które reprezentują możliwe opcje w aplikacji. Te opcje można modyfikować na wiele różnych sposobów, na przykład z poziomu interfejsu użytkownika, zdalnie, od strony trzeciej itp. Za każdym razem, gdy jeden z tych modyfikatorów zmienia stan, należy powiadomić pozostałych modyfikatorów. Na przykład: jeśli użytkownik zaznaczy pole wyboru w interfejsie użytkownika, zdalny modyfikator i strona trzecia muszą zostać powiadomieni, aby zaktualizować swój stan wewnętrzny. Nie ma żadnego priorytetu, a zmiany stanu nie mogą zostać odrzucone. Jedynym problemem jest uniemożliwienie osobie trzeciej otrzymania powiadomienia, gdy sama modyfikuje stan. Czy istnieje dobry wzorzec projektowy do rozwiązania tych wymagań?


title: Projektowanie i refaktoryzacja logiki płatności

text: Obecnie pracuję nad aplikacją, która pomaga użytkownikom koordynować kluby obiadowe i całą związaną z nimi księgowość. (Klub obiadowy to miejsce, w którym ludzie w grupie na zmianę gotują dla reszty, a potem płacisz niewielką kwotę za udział. Jest to całkiem normalne w akademikach i na uczelniach, z których pochodzę). Istnieje jednak kilka różnych modeli, z których każdy ma swoją cenę, dlatego aspekt księgowy jest trochę rozłożony. Oboje mamy DinnerClub, ShoppingItem i zamierzamy wprowadzić trzecią płatność, gdy użytkownicy spłacają swoje długi (lub otrzymują zwrot kosztów). Każdy z nich ma atrybut „cena”, a koszt użytkownika (który musi zostać zwrócony) jest obliczany przez sumę tych „cen” minus to, co kupili inni użytkownicy i z których korzystał/uczestniczył. Moje pytanie brzmi: to jeśli ktoś ma jakieś wskazówki, aby to zmienić, zebrać wszystkie te zachowania w jednym miejscu? Na razie myślałem o klasie Transaction, która jest odpowiedzialna za to zachowanie, ale trochę martwi mnie wpływ wydajności na konieczność zapytania o inny rekord polimorficzny za każdym razem, gdy chcę pokazać cenę w klubach obiadowych i przedmiotach zakupowych ( mam standardową stronę indeksu z listą dla obu, więc jest wiele dodatkowych rekordów, które są odpytywane)...


title: Używać lub nie używać commons-io w aplecie Java

text: Buduję aplet Java dla klienta. Tak, omówiliśmy wszystkie opcje i dla wymagań klienta i środowiska jest to właściwy wybór. Jestem wielkim zwolennikiem używania Apache Commons, kiedy tylko jest to możliwe, aby uprościć mój kod i uniknąć wymyślania koła na nowo. Jedna część funkcjonalności, których potrzebuję dla tego apletu, jest zaimplementowana w bibliotece Commons IO, która ma rozmiar 160kb. Lub mógłbym stworzyć niestandardową kompilację Commons IO z wybranymi przeze mnie klasami. Mniej łatwy w utrzymaniu, ale minimalizuje obciążenie apletu. Mogłem też napisać potrzebne funkcje; byłyby znacznie mniejsze niż 160kb. Prawdopodobnie spędziłem więcej czasu zastanawiając się, co należy zrobić, niż pisanie kodu ręcznie. Dodatkową kwestią jest przeprowadzenie przeglądu kodu z klientem i chciałbym wykorzystać każdą okazję, aby nauczyć go najlepszych praktyk, takich jak korzystanie z Apache Commons. Jakieś mocne opinie i uzasadnienia, którą opcję wybrać?


title: C# Minimalna baza danych SQL

text: Pracuję nad małym projektem (nie produkcyjnym), w którym muszę przechowywać wystarczającą ilość danych, aby coś takiego jak CSV było nieefektywne do przetworzenia, a serwer SQL/MySQL byłby zbyt duży. Czy .Net ma jakikolwiek sposób na wydajne przechowywanie kilku wpisów danych z możliwością wykonywania zapytań bez konieczności zarządzania serwerem i łączenia się z nim, zamiast ładowania i przetwarzania pojedynczego pliku.


title: Właśnie wskoczyłem do testowania baz danych w PHPUnit - nie jestem do końca pewien, jaki jest tego cel

text: Czytałem o testowaniu baz danych w PHPUnit. Nie jestem do końca pewien, jaki jest jej cel. Czy powinienem użyć tego do testowania schematu? Np. jeśli mam UNIKALNĄ kolumnę e-mail, upewnij się, że nie zezwalam na zduplikowane adresy e-mail? (Nie powinienem wtedy umieszczać tego w moich testach klasowych?) Czy jest coś jeszcze? Czytałem dokumentację, posty na blogu itp., próbując się o tym przekonać.. też jest 2 w nocy, może też muszę na tym spać :) Byłbym wdzięczny, gdyby ktoś mógł w prosty sposób wyjaśnić, na czym polega ten rodzaj testów do zrobienia.


title: Jak zapisywać terminy w bazie danych?

text: Istnieją 2 podmioty. Jednym z nich jest **admin**. Zadaniem administratora jest zdefiniowanie przedziałów czasowych na spotkania, które przyjmą **kandydaci**. Administrator wybierze domyślny czas spotkań, na przykład od 10 do 14, a następnie od 15 do 17. Teraz zamieszanie, jak zapisać te informacje w bazie danych. 1. W jednym wierszu zawierającym datę i godzinę rozpoczęcia oraz datę i godzinę zakończenia oraz liczbę wnioskodawców dozwolonych w tym przedziale czasowym. 2. Utwórz wiele wierszy z każdą datą i przedziałem czasowym. Na przykład, jeśli są 2 przedziały na 15 dni, a następnie dzień 1 10a - 2p dzień 1 3p - 5p dzień 2 10a - 2p dzień 2 3p - 5p ..... Jaki będzie lepszy sposób zapisywania spotkań? Drugi sposób zapewnia elastyczność edycji spotkań, ale zajmuje wiele wierszy. Pierwszy sposób oszczędza wiersze, ale jest skomplikowany podczas edycji i dodawania lub usuwania specjalnych boksów.


title: Czy odniesienie do błędu/problemu w komunikacie zatwierdzenia jest uważane za dobrą praktykę?

text: Pracuję nad projektem, w którym mamy skonfigurowaną kontrolę źródła do automatycznego pisania notatek w module do śledzenia błędów. Po prostu piszemy identyfikator zgłoszenia błędu w komunikacie o zatwierdzeniu, a komunikat o zatwierdzeniu jest dodawany jako notatka do modułu śledzenia błędów. Widzę tylko kilka wad tej praktyki. Jeśli w przyszłości kod źródłowy zostanie oddzielony od oprogramowania do śledzenia błędów (lub zgłoszone błędy/problemy zostaną w jakiś sposób utracone). Lub gdy ktoś przegląda historię zatwierdzeń, ale nie ma dostępu do naszego narzędzia do śledzenia błędów. Moje pytanie brzmi, czy posiadanie odniesienia do błędu/problemu w komunikacie o zatwierdzeniu jest uważane za dobrą praktykę? Czy są jakieś inne wady?


title: Ile warstw powinny mieć moje modele w aplikacji internetowej opartej na bazie danych?

text: Z mojego doświadczenia wynika, że „Model” w MVC często nie jest tak naprawdę pojedynczą warstwą. Regularnie miałbym modele „backendowe” i modele „frontendowe”, gdzie backendowe miałyby właściwości, które chcę ukryć przed kodem UI, a frontendowe miałyby pochodne lub złożone właściwości, które są bardziej znaczące w kontekście UI . Ostatnio zacząłem wprowadzać trzecią warstwę pomiędzy, kiedy normalizacja bazy danych tworzyła tabele, które tak naprawdę nie pasowały już do koncepcyjnych obiektów domeny. W tych projektach mam klasy modeli, które są równoważne ze strukturą DB, stają się one składnikami obiektów reprezentujących model domeny, a na końcu są filtrowane i poprawiane w celu wyświetlenia informacji użytkownikowi. Czy istnieją wzorce lub wytyczne dotyczące tego, jak, kiedy i dlaczego organizować model danych między warstwami aplikacji?


title: szukasz podręcznika użytkownika, aby napisać problem JIRA

text: Szukam podręcznika użytkownika, jak napisać problem JIRA. Jestem świadomy http://confluence.atlassian.com/display/JIRA/Creating+an+Issue Problem, który mam polega na tym, że ta dokumentacja jest skierowana do osób, które nie mają problemu z tworzeniem problemów i nie wyjaśnia, jak pisać dobre problemy i jak zdecydować np. z którego Priorytetu skorzystać? Szukam czegoś w rodzaju zdroworozsądkowego podejścia, które ogólnie należy do problemu (lub dowolnego rodzaju biletu). Nie potrzebuję „ostatecznego” przewodnika, po prostu coś, co sprawi, że piłka zacznie się toczyć, a istnieją wspólne okoliczności, które dotyczą (głównie) wszystkich środowisk programistycznych „zapewnij kontekst” „zapewnij wszystkie niezbędne informacje / nie odwołuj się do informacji, które mogą nie być dostępny/dostępny później”.


title: Czy właściwe jest odwoływanie się do OSGi jako mechanizmu Dependency Injection?

text: Czytałem artykuły z Wikipedii na temat obu i oba nie są wymieniane razem. Ponadto celem OSGi nie jest wstrzykiwanie zależności. Jednak to, co kontener OSGi, taki jak Felix, pasuje do opisu DI.


title: Czy mogę rozpowszechniać oprogramowanie z następującym powiadomieniem o zezwoleniu?

text: Niedawno napisałem oprogramowanie (bez żadnych innych współpracowników) dla firmy, której jestem współwłaścicielem. Zastanawiałem się, czy mógłbym go rozpowszechniać z następującą informacją o zezwoleniu, która jest zmodyfikowaną wersją licencji MIT. Czy istnieje jakieś oczywiste ryzyko, jeśli rozpowszechniam z tą licencją i czy daje mi to prawo do ponownego wykorzystania kodu w innych projektach? > Niniejszym zezwala się każdej osobie z **NazwaFirmy** (zwanej dalej „Spółką”) na uzyskanie kopii tego oprogramowania i powiązanej dokumentacji > plików, z wyłączeniem bibliotek stron trzecich („Oprogramowanie”), w celu obsługi > Oprogramowanie, z ograniczeniami dotyczącymi używania, kopiowania, modyfikowania i łączenia, > Oprogramowania nie można publikować, rozpowszechniać, udzielać podlicencji i/lub sprzedawać > bez wyraźnej zgody **Nazwa Autora** ("Autor"). Niniejsze zawiadomienie nie dotyczy sekcji Oprogramowania, do których prawa autorskie należą do > osób innych niż Autor. > > Autor pozostaje właścicielem Oprogramowania i może zajmować się nim > bez ograniczeń, w tym bez ograniczeń prawa do używania, kopiowania, > modyfikowania, łączenia, publikowania, rozpowszechniania, udzielania sublicencji i/lub sprzedaży kopii Oprogramowania . > > Powyższa informacja o prawach autorskich i niniejsza informacja o zezwoleniu będą dołączone do > wszystkich kopii lub istotnych części Oprogramowania. > > OPROGRAMOWANIE JEST DOSTARCZANE „TAK JAK JEST”, BEZ JAKICHKOLWIEK GWARANCJI, WYRAŹNYCH LUB > DOROZUMIANYCH, W TYM MIĘDZY INNYMI GWARANCJI WARTOŚCI HANDLOWEJ, > PRZYDATNOŚCI DO OKREŚLONEGO CELU I NIENARUSZANIA PRAW. W ŻADNYM WYPADKU AUTORZY LUB WŁAŚCICIELE PRAW AUTORSKICH NIE PONOSZĄ ODPOWIEDZIALNOŚCI ZA JAKIEKOLWIEK ROSZCZENIA, SZKODY LUB INNĄ ODPOWIEDZIALNOŚĆ, CZY NA TEMAT UMOWY, CZYNNEGO LUB INNEGO, WYNIKAJĄCEJ > Z OPROGRAMOWANIA LUB Z UŻYTKOWANIEM LUB INNEGO TRANSAKCJE > W OPROGRAMOWANIU.


title: Czy istnieje sposób komunikowania lub mierzenia poziomów abstrakcji?

text: Będę pierwszy, który powie, że to pytanie jest trochę... dostępne. Ale oto kilka pytań, które pamiętam: **Czy abstrakcja jest ciągła czy dyskretna?** **Czy istnieje pojedyncza jednostka abstrakcji?** Ale nie jestem pewien, czy na te pytania naprawdę można odpowiedzieć, a nawet naprawdę mają sens. Moja naiwna odpowiedź byłaby czymś w rodzaju 'abitniczo dyskretnego', ale niekoniecznie posiadającego pojedynczą jednostkę miary. Oto, co mam na myśli... Weź czarnego labradora; abstrakcją, którą można zrobić, jest to, że Czarne Laboratorium jest rodzajem zwierzęcia. `[Zwierzę]<--[Czarne laboratorium]` Czarne laboratorium to także rodzaj psa. `[Pies]<--[Czarne laboratorium]` Jednym ze sposobów ustalenia stopnia abstrakcji jest porównanie dwóch abstrakcji. Można powiedzieć, że „[Zwierzę]” jest bardziej abstrakcyjne niż „[Pies]” w odniesieniu do Czarnego Laboratorium. Tak się składa, że `[Zwierzę]` może być również użyty jako abstrakcja `[Pies]` Tak więc możemy otrzymać coś takiego jak `[Zwierzę]<--[Pies]<--[Czarne laboratorium]` W powyższym modelu można by skłonić się do stwierdzenia, że istnieją dwa przeskoki abstrakcji z „[Black Lab]” do „[Animal]”. Ale nie można dokładnie powiedzieć komuś, że potrzebuje jednopoziomowej abstrakcji i rozsądnie oczekiwać, że wymyśli `[Dog]`, biorąc pod uwagę, że nie podano im wyraźnie powyższych opcji. **Jeśli muszę komuś powiedzieć w jednym e-mailu, że potrzebuje klasy abstrakcyjnej, nie wiedząc, czym jest ta klasa abstrakcyjna, czy istnieje sposób na przekazanie stopnia abstrakcji w taki sposób, że _mogą_ skończyć na Psie zamiast na Zwierzęciu?* * Na marginesie, do jakiego obszaru badań może zaliczać się tego typu analiza?


title: Jak powinny zachowywać się klasy opakowujące model obiektów, gdy obiekty bazowe są usuwane?

text: Obecnie buduję bibliotekę modelu obiektów do użytku w projekcie. Owija nasze wewnętrzne koncepcje — Serwery, Foldery, Elementy — w hierarchię obiektów (IFolder, IItem itp.) i mamy kilka implementacji tych abstrakcyjnych obiektów, wykorzystując bazę danych lub serwer Exchange jako zaplecze, dzięki czemu Obiekt `IFolder` w naszym kodzie mapuje (na przykład) fizyczny folder publiczny w Exchange. Teraz zastanawiałem się, jak te obiekty opakowujące/proxy powinny reagować, gdy ich bazowy magazyn zostanie zmodyfikowany. Głównym przypadkiem użycia jest usunięcie folderu za pośrednictwem mojego interfejsu API lub bezpośrednio w warstwie przechowywania. Oczywiście obiekt jest teraz osierocony i nie powinien być używany, ale nadal mogę mieć instancje, w których jest przetrzymywany w systemie. Jak powinien się teraz zachowywać? * Obecnie większość jego właściwości jest buforowana w samym obiekcie, aby uniknąć powtarzających się wywołań warstwy pamięci masowej. Czy te akcesory właściwości powinny pingować obiekt bazowy, aby upewnić się, że nadal działa? * Czy powinienem zajrzeć do mechanizmu odpytywania, aby zaktualizować właściwości, czy nawet sprawdzić, czy moja warstwa fizyczna dostarcza zdarzenia OnChanged? * Jeśli mój obiekt opakowujący stwierdzi, że jego niezależna pamięć została usunięta (np. z powodu dostępu do niebuforowanej właściwości zwrócił błąd), czy powinien teraz oznaczyć się jako usunięty (tak, aby każdy dostęp do właściwości i metod zwracał jakiś rodzaj ObjectDeletedException) czy po prostu czyści wszystkie pamięci podręczne i pozwala na naturalne niepowodzenie przyszłych wywołań. Krótko mówiąc, szukam dobrych wskazówek i najlepszych praktyk dotyczących tworzenia warstwy wrappera modelu obiektowego. Będę przyglądał się innym podobnym implementacjom (Sharepoint Object Model, Managed Exchange Web Services), ale wszelkie solidne wytyczne byłyby mile widziane.


title: Projekt dla wielokrotnego użytku modułu java, który wykorzystuje połączenia DB

text: Mam za zadanie zmienić część proceduralnego kodu Javy w moduł wielokrotnego użytku zorientowany obiektowo. Jest to narzędzie generujące XML, które wykorzystuje prędkość do generowania XML. Istnieją również wzbogacenia reguł biznesowych, które można konfigurować w tabelach bazy danych. Usunąłem już ogromne instrukcje if-else dla reguł i przekształciłem je w obiekty reguł z klasami abstrakcyjnymi i interfejsami, które inne aplikacje mogą rozszerzać i implementować. Mam jednak trudności z przeprojektowaniem całej klasy - XMLGeneratorUtil, która pobiera połączenie JDBC, Logger i Properties w swoim konstruktorze i robi cholernie dużo rzeczy w konstruktorze, takich jak budowanie różnych struktur danych (zawierających dane statyczne) z bazy danych . Teraz wiem, że nie jest dobrze łączyć się z bazą danych z Konstruktora, ale jeśli zmienię na coś takiego jak poniżej: XMlGeneratorUtil xmlUtil = new XMLGeneratorUtil(); xmlUtil.initialize(Conenriches conn, Properties prop , Logger logger) // Wykonaj połączenia DB i wszystkie inicjalizacje tutaj xmlUtil.generateXML(data); // Dane to HashMap zawierający dane biznesowe, które trafiają do XML 1. Jak mogę się upewnić, że użytkownicy mojego wywołania narzędzia inicjują, zanim wywołają generateXML? Czy powinienem utworzyć opakowanie, które wewnętrznie tworzy lekki obiekt, a następnie inicjuje go bez wiedzy użytkownika? 2. Czy dobrze jest, aby moja biblioteka wielokrotnego użytku akceptowała Connection jako parametr? Pomysł polega na tym, że aplikacja wywołująca mojego narzędzia może wybrać zarządzanie własnym połączeniem , więc po prostu przekaże je do mojego API 3. Wbrew SRP (zasada pojedynczej odpowiedzialności) XMLGeneratorUtil manipuluje danymi biznesowymi (które ostatecznie trafiają do danych XML) jak generuje XML. Czy wzbogacanie danych powinno być eksponowane jako inny interfejs API? (A następnie użytkownik wywołuje XMLGeneratorUtil)


title: Optymalizacja zakończyła się rzutowaniem obiektu przy każdym wywołaniu metody

text: Dokonywałem optymalizacji dla następującego fragmentu kodu: public void DrawLine(int x1, int y1, int x2, int y2, int color) { _bitmap.DrawLineBresenham(x1, y1, x2, y2, color); } Po sprofilowaniu około 70% czasu spędzonego na uzyskaniu _kontekstu_ do rysowania i usuwania. Skończyło się na naszkicowaniu następującego przeciążenia: public void DrawLine(int x1, int y1, int x2, int y2, int color, BitmapContext bitmapContext) { _bitmap.DrawLineBresenham(x1, y1, x2, y2, color, bitmapContext); } Dopóki tutaj nie ma żadnych problemów, wszystko, co użytkownik musi zrobić, to przekazać _kontekst_, a wydajność jest naprawdę świetna, ponieważ _kontekst_ jest tworzony/usuwany tylko raz (wcześniej było to tysiąc razy na sekundę). Następnym krokiem było uczynienie go _ogólnym_ w tym sensie, że nie zależy od konkretnego frameworka do renderowania (poza oczywiście .NET). Napisałem więc tę metodę: public void DrawLine(int x1, int y1, int x2, int y2, int color, IDisposable bitmapContext) { _bitmap.DrawLineBresenham(x1, y1, x2, y2, color, (BitmapContext)bitmapContext); } Teraz za każdym razem, gdy rysowana jest linia, rzutowany jest kontekst _generic_, było to dla mnie nieoczekiwane. Czy są jakieś sposoby rozwiązania tego problemu projektowego? Uwaga : * `_bitmap` to WriteableBitmap z WPF * `BitmapContext` pochodzi z biblioteki WriteableBitmapEx * `DrawLineBresenham` to metoda rozszerzająca z WriteableBitmapEx


title: Rozwój Windows Phone 8 na Windows 7 – czy jest lub będzie możliwy?

text: Próbowałem zainstalować Windows Phone 8 SDK na moim komputerze z systemem Windows 7 i uderzył mnie komunikat „obsługiwane tylko w systemie Windows 8”. Właściwie chciałem tworzyć aplikacje Phone 7.5 w Visual Studio 2012, rzecz niemożliwa z SDK 7.1, więc pomyślałem, że 8 SDK zrobi to samo. Jakby nie dość, że 8 SDK był kontrowersyjny w momencie premiery, teraz, gdy jest ogólnie dostępny, wydaje mi się straszną decyzją, aby udostępnić go tylko na Windows 8, ponieważ moim skromnym zdaniem żaden poważny i rozsądny programista nie zrobi tego. zainstaluj Windows 8 kiedykolwiek, a przynajmniej w najbliższej przyszłości, tylko ze względu na interfejs Metro. Czy ktoś zna jakieś obejścia do tworzenia Windows Phone 8 na Windows 7 lub przynajmniej do 7.5, ale przy użyciu Visual Studio 2012?


title: Co powiesz na pracę programistyczną bez kodu do napisania?

text: Jestem ciekaw mojej pracy, gdzie muszę pracować z konfiguracjami serwerów, linux, baz danych, niektórych SQL, ale nie ma linijki kodu dla mojego ulubionego języka programowania: Java. Czy to normalne, że programiści powinni mieć takie role do pracy, aby mogli lepiej zrozumieć? Moje pytanie dotyczy perspektywy kariery. Zostałem zatrudniony do programowania, ale zostałem przeniesiony do innego projektu, w którym w ogóle NIE MA KODU. Brakuje mi kodowania.


title: Jak utworzyć dynamiczny Instalator Windows online z kluczem?

text: Tworzę aplikację, która wymaga aktywacji produktu w oparciu o plik klucza. Jeśli użytkownik kupi aplikację, może być konieczne dołączenie pliku klucza do pliku EXE aplikacji (może być w trybie online) i spakowanie go do instalatora MSI. Użytkownik pobiera aplikację z serwera lub repozytorium. W jaki sposób mogę to zrobić?


title: Szukaj wielu wartości

text: Mam bazę danych zawierającą około 15 tabel.Obecnie pracuję nad stroną generowania raportu, która ma 16 kryteriów.Wartości są rozłożone na wiele tabel.Użytkownik może wybrać dowolną liczbę kryteriów wyszukiwania. Problem polega na tym, że jeśli użytkownik wprowadza 2-3 wartości, lepiej najpierw filtrować według określonej wartości, a następnie zastosować kolejny poziom filtracji na pozostałych wartościach, a ta kolejność filtrowania zawsze zależy od danych wprowadzonych przez użytkownika. Oznacza to, że muszę sprawdzić wszystkie możliwe sposoby permutacji danych wejściowych i podać ścieżkę wykonania dla każdego, co będzie okropne. Czy jest jakiś sposób, w jaki mogę zmniejszyć ścieżki wykonania. Nie jestem w stanie wymyślić wydajnego algorytmu. Załóżmy, że mam 3 parametry: `name`, `skill`, `programExp` Jeśli podano `name`, powinienem najpierw filtrować na podstawie `name`. Jeśli podano `skill`, powinienem filtrować używając `skill`, `programExp` a następnie `name`.


title: NoSQL i BIG DATA

text: Odbywam staż z technologii Big Data, więc jestem nowy w tym obszarze. Moje pytanie dotyczy wykorzystania NoSQL w architekturze Big Data. Czy zawsze musimy używać rozproszonej pamięci masowej (jak HDFS w przypadku Hadoop), a następnie umieszczać na wierzchu bazy danych NoSQL (jak Hbase )? Trudno mi zrozumieć typową architekturę BIG Data specjalnie dla danych nieustrukturyzowanych. Jeśli pomożesz mi lepiej widzieć, będę bardzo wdzięczna.


title: Odwoływanie się do rynków freelancerów jako dowodu doświadczenia dla potencjalnego pełnoetatowego pracodawcy

text: Obecnie jestem programistą freelancerem (JavaScript), a teraz staram się więcej pracować na rynkach freelancerów. Od pewnego czasu chcę przeprowadzić się z Rosji do Kanady i znaleźć tam pracę na pełen etat. A więc: jak mogę przedstawić dowód wiedzy specjalistycznej w tym przypadku? Nie mogę po prostu powiedzieć w swoim CV/CV "Byłem super programistą JavaScript w MacroHard od 2011 do 2017". Czy moje konta (i ocena 4,5/5 gwiazdek) na tych platformach będą odpowiednie i adekwatne do pokazania potencjalnemu nowemu pracodawcy (na przykład adresy URL w CV)? A może powinienem po prostu dodać opis najciekawszych projektów? Znalazłem ten artykuł: http://gettingtozen.com/2010/10/how-to-list-your-freelancing-and-self-employment-experience-on-your-resume/ Autor radzi, aby nie zamieszczać wielu odniesień do projektów freelancerskich, ale jego dziedziną nie jest IT (niezależny trener korporacyjny). Z mojego punktu widzenia nie jest to zbyt odpowiednie dla programisty, ponieważ jako programista możesz wyraźnie wskazać aplikację, z którą pracowałeś. Istnieje również możliwość określenia się jako „indywidualny przedsiębiorca” zamiast „niezależny wykonawca”. Moje doświadczenie w zakresie tradycji zatrudnienia w Ameryce Północnej jest zerowe, więc mam nadzieję uzyskać porady od kolegów i HR.


title: Czy tworzenie wielu metod w Javie może wpłynąć na wydajność?

text: Kolega powiedział mi, że w Javie wydajność może być gorsza, jeśli stworzymy więcej metod, układając wiele metod wywołujących je w JVM, szczególnie w środowisku Java EE. Wydaje się to w pewnym stopniu przekreślać koncepcję programowania obiektowego. Na przykład, gdy piszemy długie metody - co nie jest dobre dla czytelności kodu - możemy osiągnąć większą wydajność dzięki mniejszej liczbie metod w stosie JVM. Czy to słuszne stwierdzenie?


title: Witryna sieci Web ASP.NET MVC i usługa sieci Web WCF — funkcje udostępniania

text: Mam następującą sytuację: muszę stworzyć stronę i serwis webowy, które _`współdzielą część funkcjonalności`_. Dlatego nie chcę pisać kodu dwa razy. Pomyślałem o następującej architekturze: **MyApp.BusinessLogic** \--> tutaj zapisujemy DataModels do bazy danych **MyApp.DataAccess** -> DataModels & Entity & mapping * * * **MyApp.UI. Models** -> ViewModels **MyApp.UI.ServiceLayer** -> Uzyskuje dostęp do logiki biznesowej, tworzy ViewModels UI dla witryny internetowej i przekształca ViewModels z powrotem w DataModels w celu zapisania za pomocą warstwy BusinessLogic **MyApp. WebSite** * * * **MyApp.WS.Models** \- >Modele Ws, będą to obiekty przekazywane między klientem a WS **MyApp.WS.ServiceLayer** -> Dostęp do logiki biznesowej, tworzenie modele WS dla usługi sieciowej i przekształca WS.Models z powrotem w DataModels w celu zapisania za pomocą warstwy BusinessLogic **MyApp.WebService** * * * * Czy architektura jest przesadą? * Jakie problemy napotkam? * Czy będę mieć problemy z kontrolerami w witrynie ASP.NET MVC?


title: Statystyki i szczegóły dotyczące projektów Open Source Swing

text: Szukam informacji odnoszących się do procesu w projektach Swing open-source: * jak opisano zadanie * ilu programistów było zaangażowanych * ile czasu zajęło rozwiązanie * itp. Czy są w tym jakieś kroniki open source (online) kierunek? Zdecydowanie wolę projekty, które zawierają nazwiska autorów. Obejrzałem ten projekt i wydaje się, że jest w porządku, ale nadal nie mogłem znaleźć żadnych informacji dotyczących niektórych bieżących zadań projektu, jego grupy programistów, niektórych kronik (wskazówki, kamienie milowe, informacje zwrotne itp.) Na przykład, jeśli widzę ten element huśtawki, ja' Chciałbym poznać powyższe informacje.


title: string.format ze zmiennymi vs zmienne wbudowane

text: Jakie są plusy/minusy (jeśli występują) korzystania z ciągu wyjściowego; int i = 10; output = string.Format("int to {0}", i); a wyjście łańcuchowe; int i = 10; output = "int to " + i; Zawsze korzystałem z tego ostatniego przykładu, ale wygląda na to, że znaczna większość samouczków online korzysta z przykładu string.format. Nie wydaje mi się, by istniały jakieś realne różnice pod względem wydajności, początkowo myślałem, że koder nie musi ciągle łamać łańcucha, aby wstawić zmienne.


title: Jak mogę udostępnić moje skrypty Pythona mojemu mniej znającemu się na Pythonie partnerowi biznesowemu?

text: Biorę matematykę finansową jako fakultatywną i pracuję z ludźmi z branży finansowej. Właściwie to całkiem zabawne. Kiedy wyciągnąłem Macbooka na jednym z naszych spotkań, miałem czterech użytkowników okien, którzy przez całe życie patrzyli na mnie, jakbym miał trzy głowy. W każdym razie pomagam w projektowaniu i symulacji naszej strategii handlowej i napisałem drobiazg, używając matplotlib do wizualizacji historycznych danych giełdowych. Jednak ci faceci nie wiedzą, jak używać git, instalować Pythona ani radzić sobie z zarządzaniem pakietami związanymi ze ścieżką. Muszę mieć możliwość wysłania im moich skryptów do użycia i muszę to zrobić przy absolutnie minimalnym wysiłku z ich strony. Myślałem coś w stylu py2exe, ale chciałbym usłyszeć kilka rad, zanim przejdę dalej.


title: Czy studiowanie programów innych ludzi pomaga w samorozwoju?

text: _Czy_ powinienem_ _studiować_ duże programy pisane przez inne osoby w naszej firmie? Moja praca może być małym podmodułem na górze tego oprogramowania i może nie być wymagane, aby wiedzieć, co kryje się pod maską, _ale_ **Czy zrozumienie kodu innych ludzi zwiększa moją wiedzę na temat metod programowania lub czegokolwiek innego?**


title: jak połączyć logi pochodzące z wielu maszyn wirtualnych do przetwarzania?

text: Scenariusz: Dwie maszyny wirtualne tworzą dzienniki. Chcę, aby te logi były wysyłane do centralnego serwera w celu przetworzenia (jak tylko zostanie wygenerowana linia tych logów -->streaming ). Warunkiem jest tutaj, aby serwer wiedział, z której maszyny wirtualnej pochodzi wiersz dziennika. Na serwerze powinniśmy zaobserwować plik zawierający coś takiego: akcja 1 zdarzyła się w VM1 akcja 2 zdarzyła się w VM1 akcja 1 zdarzyła się w VM2 akcja 3 zdarzyła się w VM1 akcja 2 zdarzyła się w VM2 Pytanie: Jak można to zaimplementować w wydajnym droga? Jak można przesyłać strumieniowo do centralnego serwera? Mam nadzieję, że pytanie jest jasne..


title: Jaka jest lista, jak dokładnie mówić o problemach w kodzie C++ w ramach specyfikacji?

text: Specyfikacja C++ pozostawia wiele luzu, tak że kiedy piszesz zły kod, autorzy kompilatora nie są odpowiedzialni za zdefiniowanie konkretnego trybu niepowodzenia. Wiemy oczywiście, że jest to zachowanie niezdefiniowane. _(Dla tych, którzy nie są tego świadomi, kiedyś był uroczy wyczyn, aby uruchomić Tetrisa, jeśli użyłeś #pragmy w GCC, co w rzeczywistości jest zachowaniem zdefiniowanym w implementacji, ale wiąże się to z całym hukiem.)_ To sprawiło, że zacząłem się zastanawiać, jaki jest pełny zasięg Lista warunków "błędnych" to: (1) Ten kod nie skompiluje się. (2) Ten kod ma niezdefiniowane zachowanie. (3) Ten kod zgłosi wyjątek. **UWAGA: [JOKE]** (4) Ten kod nie zostanie zakończony. Pracuję nad kompilatorem i prawie skończyłem z częścią, która sprawdza #4 _(rozwiązanie jest zbyt długie, by publikować na tym forum)_. Ale w międzyczasie... **KONIEC UWAGA [/JOKE]** Moje pytanie brzmi: co możesz, a czego nie możesz powiedzieć? Motywacja pochodzi od kogoś, kto deklaruje, że nie możesz użyć wyrażenia _ „ten kod powinien się zawiesić”_. Powiedziałem, że „wypadnie” i „powinien się rozbić” są różne; ale pomijając to, zacząłem się zastanawiać, czy jedyne, co zdefiniowały specyfikacje, to 1, 2, 3.


title: Dlaczego „charset” tak naprawdę oznacza „kodowanie” w powszechnym użyciu?

text: Coś, co od dawna mnie dezorientowało, to fakt, że tak wiele oprogramowania używa terminów „zestaw znaków” i „kodowanie” jako synonimy. Kiedy ludzie odnoszą się do "kodowania" Unicode, zawsze mają na myśli zestaw reguł do reprezentowania znaków Unicode jako sekwencji bajtów - jak ASCII lub UTF-8. Wydaje się to rozsądne i intuicyjne; chodzi o to, że "kodujesz" te znaki jako bajty przy użyciu określonego zestawu reguł. Ponieważ te zestawy reguł czasami zapewniają tylko możliwość "kodowania" pewnego podzbioru wszystkich znaków Unicode, _możesz sobie wyobrazić_, że "zestaw znaków" - skrót od "zestaw znaków" - oznaczałby po prostu zestaw znaków Unicode - bez względu na to, jak te znaki są zakodowane. Kodowanie oznaczałoby zatem zestaw znaków (kodowanie takie jak ASCII, które ma tylko zasady kodowania 128 znaków, byłoby powiązane z zestawem znaków tych 128 znaków), ale zestaw znaków nie musi sugerować kodowania (na przykład UTF-8, UTF -16 i UTF-32 to różne kodowania, ale mogą kodować ten sam zestaw znaków). Jednak – i tu jest sedno mojego pytania – rzeczywiste użycie słowa „zestaw znaków” nie zgadza się z tym, co sugerowałaby konstrukcja tego słowa. To prawie zawsze oznacza „kodowanie”. Na przykład: * Atrybut `charset` w HTML jest używany do określenia kodowania * `Charset` w Javie to kodowania * `charset` i `zestawy znaków` w MySQL są kodowaniami Ile lat jest to ciekawe ( ab)używanie języka i skąd wzięła się ta sprzeczna z intuicją definicja „zestawu znaków”? Czy może pochodzi z czasów, kiedy naprawdę _istniało_ w praktyce mapowanie jeden-do-jednego między używanymi kodowaniami a zestawami znaków, które są obsługiwane? A może istniała jakaś szczególnie wpływowa norma lub specyfikacja, która podyktowała tę definicję tego słowa?


title: Która część Pamięci jest używana przez Garbage Collector?

text: Rozumiem podziały pamięci Heap, takie jak Young, etat i Perm Gen. Ale jestem tylko ciekaw, skąd ta pamięć jest używana do wykonywania samego Garbage Collector? Czy to z którejkolwiek z tych przestrzeni pamięci lub w stosach wątków?


title: Znakowanie marki/ograniczanie oprogramowania według licencji/serii

text: Stworzyłem system POS dla mojego klienta w podejściu MS Access Server-Client. Poprosił mnie, abym oznaczył jego oprogramowanie tak, aby tylko określona „liczba” użytkowników (kasjerów) miała dostęp do systemu POS i musi być zdeterminowany, jaką licencję kupi jego klient. Np.: licencja na 10 użytkowników = 10 kasjerów (niekoniecznie 10 użytkowników, może to być 30 użytkowników, przesunięcie) = oznacza to, że 10 komputerów zostanie zainstalowanych z oprogramowaniem klienckim, które zrobiłem. Jak i gdzie umieścić logikę, która określi, czy jest licencjonowana, czy nie. Co zrobiłem: Stworzyłem generator kluczy seryjnych używając Name. Problem polega na tym, że można go zduplikować, gdy podasz niż kombinacja nazwa + numer seryjny, nadal będzie działać. Liczę liczbę zalogowanych użytkowników jednocześnie. Może to być problematyczne, ponieważ używam MSAccess, a nie MSSQL. Zrezygnowałem z tego pomysłu. Zapytał mnie również, czy mógłbym po prostu wstawić kombinację numeru seryjnego i adresu mac. Mogę to zrobić, ale będzie miał trudności z wdrożeniem go i sprzedażą, jeśli potrzebuje adresu mac każdego komputera, który ma być zainstalowany z moim POS. Jestem zagubiony w tym, co mogę zrobić. Chciałbym poprosić o wskazówki i sugestie. Dziękuję Ci.


title: Radzenie sobie z kodem, który został napisany, ale nie jest jeszcze potrzebny

text: Napisałem klasę, aby coś zrobić, ale potem zdałem sobie sprawę, że nie jest to potrzebne, ponieważ mogłem zoptymalizować istniejący kod, aby uzyskać szybkość wykonania, której potrzebowałem, zamiast integrować nową klasę z istniejącym kodem (co byłoby bardziej skomplikowane ). Jednak nie jestem pewien, czy moje obecne rozwiązanie będzie wystarczająco szybkie, gdy napiszę resztę programu, więc chciałbym gdzieś trzymać nieużywaną klasę. Nie chcę po prostu trzymać go w głównej wersji kodu źródłowego, ponieważ byłoby to po prostu niepotrzebnym bałaganem, ale myślę, że musi być ładniejsze rozwiązanie niż umieszczenie go we własnym pliku z dala od reszty projektu i wracając do tego, jeśli później będę tego potrzebować. Jestem nowy w korzystaniu z kontroli źródła, więc nie jestem pewien, co tam zrobić. Czy mogę utworzyć gałąź boczną z klasą i bez później scalić ją z gałęzią główną?


title: Jaki język jest lepszy dla początkujących: statyczny czy dynamiczny?

text: Po raz kolejny nie jestem pewien, czy to pytanie pasuje do tej strony, ale nie mogę wymyślić miejsca w Internecie, które pasowałoby do niego lepiej. Jak myślisz, co jest lepszym punktem wyjścia dla absolutnego początkującego do programowania: statyczny czy dynamiczny? Z jednej strony dla początkujących łatwiej i „bardziej wybaczające” jest używanie dynamicznego języka. Z drugiej strony uważam, że rozpoczęcie od statycznego języka zapewni początkującemu znacznie lepsze nawyki, zmuszając go do ściślejszego myślenia o typach i tym, który typ idzie gdzie (w przeciwieństwie do podejścia kaczkowego typu „wyślij tutaj coś który ma metodę `do()`"). Moją główną troską jest to, co jest lepsze _jako punkt wyjścia_: tj. jaki język pozwoli początkującemu na nabycie lepszych nawyków na początku i później będzie mógł łatwiej przejść do innych języków.


title: Identyfikator „zakończonego” etapu procesu: 0, 99, coś jeszcze?

text: Powiedzmy, że obsługujesz wieloetapowy proces (jak złożony formularz rejestracyjny, z wieloma krokami, które użytkownik przeszedł w kolejności). Musisz mieć możliwość zapisania aktualnego stanu procesu (np. aby użytkownik mógł później wrócić do tego formularza rejestracyjnego i przejść do kroku, w którym został przerwany). Oczywiście prawdopodobnie będziesz chciał nadać każdemu „krokowi” identyfikator, do którego możesz się odnieść: 1, 2, 3, 4 itd. Twoja logika sprawdzi, czy ten `step_id` (lub jakkolwiek go nazwiesz), aby wyrenderować odpowiedni dane. Pytanie: jak określiłbyś etap po ostatnim kroku, takim jak stan zakończonej rejestracji (powiedzmy, że **musisz** nadać temu ostatniemu „krokowi” własny identyfikator, tak skonstruowana jest Twoja logika). Czy byłoby to „0”, „999”, wartość niecałkowita, coś zupełnie innego?


title: Jak zrobić TDD na urządzeniach wbudowanych?

text: Nie jestem nowy w programowaniu i pracowałem nawet z niektórymi niskopoziomowymi C i ASM na AVR, ale naprawdę nie mogę się zająć projektem osadzonym C na większą skalę. Będąc zdegenerowanym przez filozofię Rubiego TDD/BDD, nie jestem w stanie zrozumieć, jak ludzie piszą i testują taki kod. Nie mówię, że to zły kod, po prostu nie rozumiem, jak to może działać. Chciałem zagłębić się w programowanie niskopoziomowe, ale naprawdę nie mam pojęcia, jak do tego podejść, ponieważ wygląda to na zupełnie inny sposób myślenia, do którego jestem przyzwyczajony. Nie mam problemów ze zrozumieniem arytmetyki wskaźników ani tego, jak działa alokacja pamięci, ale kiedy widzę, jak złożony kod C/C++ wygląda w porównaniu do Rubiego, wydaje mi się to po prostu niemożliwie trudne. Ponieważ już zamówiłem sobie płytkę Arduino, chciałbym bardziej zagłębić się w niski poziom C i naprawdę zrozumieć, jak robić rzeczy poprawnie, ale wygląda na to, że żadna z zasad języków wysokiego poziomu nie ma zastosowania. Czy możliwe jest nawet wykonanie TDD na urządzeniach wbudowanych lub podczas opracowywania sterowników lub rzeczy takich jak niestandardowy bootloader itp.?


title: Czy filtry bloom są rzeczywiście szybsze niż hasze, nawet biorąc pod uwagę pamięć podręczną?

text: Filtry Bloom wyglądają naprawdę świetnie, jeśli weźmie się pod uwagę, że można określić, czy Int jest w zestawie z 99% pewnością w stałym czasie. Ale haszy też mogą, z tą tylko różnicą, że w hashu przez większość czasu uzyskujesz dostęp do pamięci tylko raz. Z filtrami bloom, musisz uzyskać do nich dostęp ~7 razy na żądanie w **całkowicie odległych miejscach** , więc będziesz mieć kilka chybień w pamięci podręcznej na żądanie. Czy czegoś mi brakuje?


title: Porady dotyczące kariery: Czy powinienem ponownie nauczyć się XHTML i CSS w mojej karierze?

text: Obecnie jestem programistą Ruby/Rails. Zanim byłem programistą .NET i zdobyłem MCTS w rozwoju klienta Windows. Ale na razie nie dotykam żadnego HTML ani CSS i nie mam żadnego doświadczenia w tworzeniu layoutu. I nudzi mi się wykonywanie tych zadań, ale na pewno każda aplikacja internetowa musi je mieć. Czy aby być profesjonalistą muszę się ich uczyć od nowa?


title: Pomysły do omówienia podczas „rozmowy o ustalaniu oczekiwań” z moim nowym liderem zespołu programistycznego?

text: Przechodzę do nowej firmy z nowym liderem zespołu. Uważam, że to świetny czas, aby ustalić nasze wzajemne oczekiwania, aby pomóc nam obu rozpocząć rolę na właściwej stopie. Masz pomysły, jakie mam wobec niego postawić? W jakich obszarach powinienem określić jego oczekiwania wobec mnie?


title: Czy programista często nie ma konta administratora?

text: Brak tego oznacza używanie tylko tych narzędzi, z których wszyscy korzystają (które są dostarczane z tym samym obrazem na każdym komputerze). Widzę korzyści z tego płynące - mniej obaw, że czyjaś maszyna może zostać zainfekowana po pobraniu uszkodzonego pliku. Ale czy nie jest to trochę przesada? A jeśli potrzebuję narzędzia, które sprawi, że moja codzienna praca będzie znacznie wydajniejsza, a nie ma alternatywy? Wiem, że to DUŻO zależy od konkretnej firmy i jej polityki, ale pracując do tej pory tylko w dwóch firmach (opieka zdrowotna-bez ograniczeń; finanse-dużo ograniczeń), zastanawiam się, czy jest to powszechne i czy są jakieś inne powodów oprócz bezpieczeństwa.


title: Fikcyjne wartości zmiennoprzecinkowe w celu wymuszenia operacji zmiennoprzecinkowych

text: Powszechnie używa się idiomów takich jak: x/60.0, aby wymusić dzielenie zmiennoprzecinkowe, gdy `x` jest liczbą całkowitą w językach, które nie mają odrębnych operatorów dla dzielenia liczb całkowitych i dziesiętnych. Czy jest to akceptowany idiom, czy lepiej rzutować `x` na typ zmiennoprzecinkowy? Uważam, że jest to zwięzły i jasny idiom – może mniej wyraźnie pokazuje intencję niż jednoznaczna obsada, ale jest bardziej zwięzły i łatwiejszy do odczytania. Myślę, że jest to mniej hackowe niż `x + ""` do konwersji na łańcuch lub `x+0.0` do konwersji na zmiennoprzecinkowe (ponieważ nie ma niepotrzebnego "NOOP"). Myśli? leks


title: Telefon obsługujący dowolny mobilny system operacyjny

text: Co uniemożliwia producentom sprzętu stworzenie urządzenia, które pozwoli użytkownikowi wybrać swój system operacyjny? Telefon podobny do komputera PC lub Mac, na którym można zainstalować system Linux, Windows lub Mac OS. Czy są jakieś przepisy, które temu uniemożliwiają?


title: Potrzebujesz pomocy ze strukturą katalogów w przenoszeniu bazy kodu do SVN

text: Obecnie mamy strukturę katalogów, która wygląda tak Serwer +Aktualizacja Serwer +Główny produkt Wersja 5.5 --+[DLL1] --+[DLL2] ... --+[DLLN-1] --+[Sterowanie] -----+[Nasze niesamowite elementy sterujące] - ----+[Sterowanie firm trzecich 1] -----+[Sterowanie firm trzecich 2] -----+[Sterowanie firm trzecich 3] --+[DLLN] --+[Narzędzia] --- --+[Util 1] -----+[Util 2] ... -----+[Util N-1] -----+[Util N] +Główny produkt Wersja 6.1 +Główny produkt Wersja 6.2 +Fingerprint SDK Oczywiście ukrywam brzydotę tego piękna. Mam instalację VisualSVN, aby zastąpić Visual „nie można nazwać” i dochodzę do punktu, w którym mówi, pień, gałąź i coś innego. i z kilku innych postów tutaj i na SO, niejasno wiem, do czego one służą. Moje pytanie brzmi, co mam zrobić, aby przetłumaczyć moją istniejącą strukturę plików na strukturę kontroli źródła. Porzuciliśmy nadzieję na jakikolwiek sensowny import. Próbowałem już w to wejść, ale czuję, że brakuje mi jakiejś kluczowej koncepcji. Na przykład, czy wszystkie te rzeczy powinny znajdować się w tym samym repozytorium? Jeśli nie znajdują się w tym samym repozytorium, jak mają znaleźć pliki współdzielone między projektami?


title: Czy zdarzyło Ci się kiedyś używać konkretnego narzędzia na rzecz innego tylko dlatego, że wygląda lepiej?

text: Odkryłem, że tak było w przypadku Eclipse. Kiedy po raz pierwszy zacząłem uczyć się Javy, wiele osób kazało mi zacząć od NetBeans, ponieważ jest to łatwiejsze, ma wiele predefiniowanych funkcji i większość konfiguracji jest wykonywana domyślnie. Rzeczywiście wydawało się to łatwym IDE, ale po prostu nienawidziłem sposobu, w jaki to wyglądało. Interfejs użytkownika był dla mnie okropny. Potem pobrałem Eclipse. Byłem pod wrażeniem. Wszystko wyglądało błyszcząco, czcionki wyglądały niesamowicie, a interfejs użytkownika był niesamowity w porównaniu do NetBeans. Więc zostałam z Eclipse. Czy coś takiego kiedykolwiek ci się przydarzyło? Czy interfejs użytkownika powinien mieć takie znaczenie dla programisty, czy to źle? Problem z interfejsem użytkownika rozciąga się na wszystko, nie tylko na IDE (np. nawet na Linuksie muszę dostosować WM tak, jak chcę, zanim zacznę z nim pracować).


title: Ile powinienem się martwić o skrajne przypadki?

text: Jak bardzo należy się martwić „przypadkami krawędziowymi” w aplikacji, zwłaszcza podczas tworzenia interfejsu użytkownika?


title: Począwszy od tworzenia aplikacji na smartfony

text: Mam pracę od klienta, który potrzebuje aplikacji na iPhone'a/iPada. Jestem nowy w rozwoju smartfonów, więc od czego zacząć? Czy masz jakieś fajne, dogłębne samouczki na początek? Biblioteki JS, które muszę zajrzeć? Czy istnieje szablon startowy dla iPhone'a / Androida z korzystnym zestawem startowym lub czymś w tym rodzaju? Ogólnie, czy jest coś, co naprawdę muszę wiedzieć, zanim zacznę? Moje tło kodowania to: * HTML/CSS * jQuery/Javascript (rookie) * C# * AS 3.0


title: Środowisko wewnętrzne a środowisko programistyczne

text: W branży istnieje rozróżnienie między środowiskiem „wewnętrznym”, w którym twórcy oprogramowania piszą kod, który będzie używany przez samą firmę, a odpowiednim środowiskiem „rozwoju oprogramowania”, w którym oprogramowanie jest budowane w celu sprzedaży/dystrybucji Publicznie. Między innymi, jedną oczywistą różnicą między nimi jest to, że firma zorientowana na tworzenie oprogramowania zazwyczaj stosuje się do pewnego rodzaju cyklu życia oprogramowania, takiego jak pisanie specyfikacji, testowanie, budowanie itp., podczas gdy sklep zorientowany na wewnętrzne robić rzeczy w bardziej swobodny sposób, ponieważ sami są użytkownikami końcowymi i zawsze mogą naprawić coś, co nie zostało zrobione dobrze. Jako student (podobnie jak większość innych studentów) spodziewałem się, że skończę pracę w środowisku programistycznym, ale skończyło się na tym, że dostałem swoją pierwszą pozycję w firmie, która działa bardziej wewnętrznie. Czasami zastanawiam się, czy nie tracę pełnego doświadczenia w tworzeniu oprogramowania. Czy istnieje podstawa do tego uczucia? Czy powinienem starać się dołączyć do odpowiedniego środowiska programistycznego?


title: Czy większość firm nie wie, jak pisać oprogramowanie?

text: Jeśli jesteś tu aktywnym czytelnikiem, spróbuj zastanowić się, ile razy słyszałeś (a nawet zgodziłeś się), kiedy ktoś tutaj powiedział komuś innemu, aby zaczął szukać nowej pracy. Osobiście widziałem to znacznie więcej, niż się spodziewałem: prawie zaczyna brzmieć banalnie. Rozumiem, że na pewno jest wiele firm, które źle radzą sobie z tworzeniem oprogramowania lub zarządzaniem projektami programistycznymi, ale wydaje się, że jest coraz gorzej i częściej, może po prostu słyszymy od nich, a nie ze wszystkich miejsc które mają przyzwoitą atmosferę/warunki pracy. Pytam więc: Czy z własnego doświadczenia i od znajomych programistów dostrzegasz, że firmy mają złe środowiska programistyczne, a jeśli tak: * Dlaczego uważasz, że to powszechne? * Jak myślisz, co można zrobić, aby naprawić to jako programista, jako menedżer, jako branża? * Czy uważasz, że się poprawia?


title: Jak mam wprowadzić standard kodowania do mojego zespołu?

text: Najpierw trochę tła: Mój obecny kierownik ds. rozwoju korzysta z kolejnej okazji pod koniec tego tygodnia, pozostawiając nasz zespół z czterema pełnoetatowymi programistami, stażystą w niepełnym wymiarze godzin i projektantem stron internetowych (który jest technicznie częścią marketingu, a nie AppDev). W tej chwili nie promujemy ani nie zatrudniamy nowego menedżera. Poprzedni kierownik nigdy nie poświęciłby czasu na wymyślenie zestawu standardów kodowania, których należałoby przestrzegać (ujmując to z perspektywy: moja pierwsza rocznica w tej pracy jest za dwa tygodnie i rozmawiam z nim o standardach od tego czasu Ja zacząłem). Z tego powodu każdy z nas czterech programistów pisze kod na swój własny sposób: niektórzy z nas przestrzegają konwencji nazewnictwa Microsoft dla .NET, niektórzy używają notacji węgierskiej, niektórzy używają kombinacji (np. mieszając `PascalCase` i `camelCase` dla nazw parametrów) , a po otwarciu pliku kodu jest całkowicie losowy, jaki standard będzie przestrzegany - jedyną spójną rzeczą jest to, że nawiasy klamrowe są w osobnych wierszach. Dwóch z trzech moich współpracowników zwróciło się do mnie o stworzenie standardowego dokumentu dotyczącego kodowania, którego możemy używać i egzekwować w przyszłości (chociaż technicznie nie jestem najstarszym programistą, czwarty programista jest tu od kilku lat, dwóch współpracowników a stażysta prosi mnie o radę/wskazówki, ale nie mamy kierownika zespołu). Miałem zamiar to zrobić od jakiegoś czasu, ale odchodzący menedżer zawsze kładł to na bok; jego odejście daje nam teraz szansę na poświęcenie trochę czasu i poprawne skonfigurowanie rzeczy, aby ułatwić właściwe środowisko oprogramowania, a nie pospieszną mieszankę, którą obecnie mamy. Jak mam to zrobić i wprowadzić ten standard do mojego zespołu bez powodowania tarć? Nie chcę, żeby wyglądało na to, że „przejmuję”, chociaż gdybym zaproponowała stanowisko menedżerskie, zaakceptowałabym to. Jak już powiedziałem, dwóch z trzech innych programistów jest na pokładzie ze mną, tworząc jednego, ale czwarty (prawdziwy „senior” od dłuższego czasu) może to zaakceptować lub nie. Planuję zacząć od konwencji .Net firmy Microsoft (np. nie używać notacji węgierskiej), dodać pewne osobiste preferencje (np. `_camelcase` dla pól) i konkretnie wskazać pewne dziwne praktyki, których tu używamy, jako nieużywanych (np. nazewnictwo zajęcia z podkreśleniem na początku), ale co jeszcze powinienem uwzględnić? Nie chcę zagłębiać się w wytyczne dotyczące architektury, ponieważ to _spowoduje_ tarcia, a mamy bardzo dużą i śmierdzącą istniejącą bazę kodu, która nie będzie się do niej stosować, i nie jesteśmy już blisko wymyślania refaktoryzacji strategia. Podsumowując: Poza podstawowymi konwencjami nazewnictwa, co, jeśli w ogóle, powinienem uwzględnić w dokumencie standardów kodowania (przykłady byłyby świetne - nie udało mi się znaleźć żadnych konkretnych przykładów tego, jak taki dokument powinien wyglądać) i jak powinienem przedstawić go mojemu zespołowi, nie brzmiąc jak nowy dyktator.


title: Ochrona makro w celu-C

text: Zauważyłem, że wiele znanych bibliotek napisanych w Objective-C (np. AFNetworking) używa ochrony makr w swoich plikach nagłówkowych. Zdaję sobie sprawę, że dyrektywa #import, która działa dokładnie tak, jak #include, włącza każdy plik tylko raz, eliminując potrzebę stosowania strażników #include. Z jakiego powodu są nadal używane?


title: Czy urządzenia testowe powinny być dodawane do repozytoriów kodu?

text: Testuję jednostkowo kod, który przetwarza dane z zewnętrznego interfejsu API. Ten zewnętrzny interfejs API obsługuje duży stos danych JSON. Właściwą rzeczą do zrobienia tutaj jest oczywiście użycie urządzeń w testach jednostkowych, tak abym nie wykonywał prawdziwego wywołania API za każdym razem, gdy uruchamiany jest test. Oprawy te mogą być jednak dość duże - nawet wiele tysięcy linii. Nie jestem pewien, czy powinienem je umieścić w git. Wydaje się to złym pomysłem, ponieważ wyglądają jak statyczne pliki. Z drugiej strony pisanie testów jednostkowych naprawdę wymaga określonych osprzętów, więc chcę, aby były one udostępniane każdemu, kto pracuje nad projektem (i udostępniane naszym maszynom budowlanym). Czy duże urządzenia należy umieścić w repozytorium?


title: Jak sprzedać swoje oprogramowanie w Internecie?

text: Chciałbym sprzedawać swoje oprogramowanie w sieci, ale nie jestem pewien, jak przeprowadzić całą konfigurację sprzedawcy. Mam dostęp do Commerce Server 2009 i chcę wyglądać profesjonalnie, więc zwykłe stare konto PayPal jest niedostępne. Co muszę wiedzieć/zrobić, aby sprzedawać kilka rzeczy za pomocą ASP.NET, akceptować karty kredytowe, a czego nie?


title: Jakie cechy mają ze sobą najlepsi testerzy, z którymi pracowałeś?

text: Testerka i blogerka Lanette Creamer opublikowała ostatnio to pytanie na Twitterze: > Jeśli jesteś profesjonalnym programistą, który pracuje z testerami, pomyśl > o najlepszych testerach, jakich znasz. Jakie mają wspólne cechy? Pomyślałem, że to będzie doskonałe pytanie. Moje myśli są następujące: * Chcą usunąć niejednoznaczność z wymagań, nawet jeśli oznacza to zadawanie niewygodnych pytań. * Tworzą nowe funkcje, widząc, jak oprogramowanie „powinno” działać, a nie tylko jak jest udokumentowane. * Okazują uczciwość i prawość oraz zachęcają, ale nie wymagają tego od osób wokół nich. Innymi słowy, modelują zachowanie. Jakie są cechy najlepszych testerów, z którymi pracowałeś?


title: Jaka jest odpowiednik nazwy „procedura” w OOP?

text: Na kilku moich kursach programowania na Uniwersytecie moi nauczyciele zawsze mówili mi, co następuje: > Funkcja i procedura to w zasadzie to samo: jedyną różnicą > jest to, że funkcja zwraca wartość, a procedura nie. Oznacza to, że to: function sum($a, $b) { return $a + $b; } ... jest **funkcją** , a to: function sum($a, $b) { echo $a + $b; } ... to **procedura**. W tym samym toku myślenia zauważyłem, że **metoda** jest odpowiednikiem **funkcji** w świecie OOP. Oznacza to, że to: class Przykład { function sum($a, $b) { return $a + $b; } } To **metoda** — ale jak to nazwać? class Przykład { function sum($a, $b) { echo $a + $b; } } Jaka jest równoważna nazwa lub jak wywołać metodę, która **nic nie zwraca**?


title: Stylizowanie tagu HTML w dokumencie internetowym

text: czy dobrą praktyką kodowania jest dodanie stylu do znacznika `<html>` w dokumencie internetowym? dlaczego nie powinieneś stylizować znacznika `<html>` dokumentu internetowego? Pytam o to z powodu tej odpowiedzi na pytanie StackOverflow. Osobiście uważam, że to nie jest dobra praktyka kodowania. czy istnieje standard WC3, który mówi, że to jest dobre/złe?


title: Czym są „Kamienie milowe rozwoju” w zakresie umiejętności programowania?

text: Studiowałem na kierunku Informatyka przez 6 lat, studia licencjackie i magisterskie. Uczyłem się wszystkich podstaw programowania, takich jak C, Java, VB, C#, Python, itp. W wolnych chwilach będę się uczyć nowych języków programowania i śledzić nowe trendy programowania, takie jak PHP, HTML5, CSS5, LESS , Bootstrap, Symfony2 i GitHub. Tak więc, jeśli ktoś chce, żebym napisał jakieś instrukcje w tych językach, jestem pewien, że dam radę, nie za dobrze, ale daję radę wykonać. Nie mam jednak żadnego ulubionego języka programowania. Ponadto studiowałem również algorytmy, bazy danych itp. Wszystko, co do tej pory napisałem, wydaje się, że wiem dużo w tej dziedzinie. W rzeczywistości czuję się bardzo głupi. Nie mogę odpowiedzieć na 80% pytań na SO. Mimo tych języków studiowałem. Może dlatego, że nigdy wcześniej nie pracowałem. * * * Ponieważ istnieją „Kamienie milowe rozwoju” dla dzieci, które odnoszą się do tego, jak dziecko staje się zdolne do robienia bardziej złożonych rzeczy wraz z wiekiem, chciałbym ocenić to samo, ale pod kątem umiejętności programowania. Jaki zestaw umiejętności funkcjonalnych lub zadań specyficznych dla wieku, które większość programistów może wykonać w określonym przedziale wiekowym? Aby ocenić siebie, chciałbym zapytać was o opinie, że wszystkie umiejętności, o których wspomniałem powyżej, są wystarczające, aby programiści wiedzieli, gdy mają 25 lat? Jakie są Twoje sugestie, aby poprawić umiejętności w tej dziedzinie?


title: Kiedy nie ma TCO, kiedy martwić się o rozwalenie stosu?

text: Za każdym razem, gdy jest dyskusja na temat nowego języka programowania ukierunkowanego na JVM, nieuchronnie pojawiają się ludzie, którzy mówią takie rzeczy, jak: _"JVM nie obsługuje optymalizacji typu tail-call, więc przewiduję wiele eksplodujących stosów"_ Istnieją tysiące odmian na ten temat. Teraz wiem, że niektóre języki, na przykład Clojure, mają specjalną konstrukcję _recur_, której można użyć. Czego nie rozumiem, to: jak poważny jest brak optymalizacji „tail-call”? Kiedy powinienem się tym martwić? Moje główne źródło zamieszania prawdopodobnie wynika z faktu, że Java jest jednym z najbardziej udanych języków wszechczasów, a wiele języków JVM wydaje się radzić sobie całkiem nieźle. Jak to możliwe, jeśli brak całkowitego kosztu posiadania jest naprawdę _jakikolwiek_ problem?


title: Losowe i unikatowe iterowanie w zakresie

text: Załóżmy, że masz zakres wartości (lub cokolwiek innego) i chcesz iterować po tym zakresie i zatrzymać się w jakimś nieokreślonym punkcie. Ponieważ wartość zatrzymania może znajdować się w dowolnym miejscu w zakresie, iteracja sekwencyjna nie jest dobra, ponieważ powoduje częstszy dostęp do wczesnych wartości niż do późniejszych (co jest złe w przypadku elementów, które się zużywają), a także dlatego, że zmniejsza wydajność, ponieważ musi przemierz dodatkowe wartości. Losowe iterowanie jest lepsze, ponieważ (średnio) zwiększy współczynnik trafień, tak że przed znalezieniem właściwej trzeba będzie uzyskać dostęp do mniejszej liczby wartości, a także rozprowadzi dostępy bardziej równomiernie (znowu średnio). Problem polega na tym, że standardowa metoda losowego przeskakiwania spowoduje, że wartości będą dostępne wielokrotnie i nie ma automatycznego sposobu określenia, kiedy każda wartość została sprawdzona, a tym samym cały zakres został wyczerpany. Jednym z uproszczonych i wymyślonych rozwiązań może być sporządzenie listy każdej wartości, wybranie jednej losowo, a następnie jej usunięcie. Za każdym razem, gdy przechodzisz przez pętlę, wybierasz jeden z pozostałych elementów. Niestety działa to tylko w przypadku małych list. Jako (wymuszony) przykład załóżmy, że tworzysz grę, w której program próbuje odgadnąć wybraną liczbę i pokazuje, ile zgadywałeś. Zakres wynosi od 0 do 255 i zamiast pytać _Czy to 0? Czy to 1? Czy to 2?…_ , masz to zgadnij losowo. Możesz stworzyć listę 255 liczb, wybrać losowo i usunąć ją. Ale co by było, gdyby zakres wynosił od 0 do 232? Tak naprawdę nie możesz stworzyć listy przedmiotów o wartości 4 miliardów. Widziałem kilka implementacji RNG, które mają zapewniać jednolitą dystrybucję, ale żadna z nich nie miałaby być unikalna, tj. bez powtarzających się wartości. Czy istnieje więc praktyczny sposób na losowe i unikatowe iterowanie w zakresie?


title: Czy istnieją dobre techniki lub testy dla typów nazewnictwa?

text: Niezręczne, otwarte pytanie, ale jest to problem, na który zawsze wpadam: Oprogramowanie, które jest łatwe w utrzymaniu i pracy, jest dobrze zaprojektowane. Próba stworzenia intuicyjnego projektu oznacza nazywanie komponentów w taki sposób, aby następny programista był w stanie wywnioskować funkcję komponentu. Właśnie dlatego nie nazywamy naszych klas „Typ1”, „Typ2” itp. Kiedy modelujesz koncepcję ze świata rzeczywistego (np. klienta), jest to ogólnie tak proste, jak nazwanie swojego typu po koncepcji ze świata rzeczywistego wzorowane. Ale kiedy budujesz abstrakcyjne rzeczy, które są bardziej zorientowane na system, bardzo łatwo zabraknie nazw, które są zarówno łatwe do odczytania, jak i łatwe do strawienia. Gorzej (dla mnie) jest, gdy próbuję nazwać rodziny typów, z typem bazowym lub interfejsem, który opisuje, co komponenty mają zrobić, ale nie jak działają. To naturalnie prowadzi do tego, że każdy typ pochodny próbuje opisać smak implementacji (np. `IDataConnection` i `SqlConnection` w .NET Framework), ale jak wyrazić coś skomplikowanego, np. „działa przez refleksję i szukanie określonego zestawu atrybuty”? Następnie, gdy w końcu wybierzesz nazwę typu, który Twoim zdaniem opisuje, co próbuje zrobić, kolega pyta „WTF, czy to `DomainSecurityMetadataProvider` faktycznie _robi?_ ”. Czy istnieją jakieś dobre techniki wyboru właściwej nazwy dla komponent, czyli jak zbudować rodzinę komponentów bez pomieszania nazw? Czy są jakieś proste testy, które mogę zastosować do nazwy, aby lepiej ocenić, czy nazwa jest „dobra” i czy powinna być bardziej intuicyjna dla innych?


title: Uogólnij użycie zmiennych w kodzie

text: Chciałbym wiedzieć, czy dobrą praktyką jest uogólnianie zmiennych (użyj jednej zmiennej do przechowywania wszystkich wartości). Rozważ prosty przykład Ciągi querycre,queryins,queryup,querydel; querycre = 'Utwórz tabelę XYZ...'; wykonać zapytaniecre ; queryins = 'Wstaw do XYZ...'; wykonywać zapytania; queryup = 'Aktualizuj zestaw XYZ...'; wykonać zapytanie; querydel = 'Usuń z XYZ...'; wykonać querydel ; Zapytanie o ciągi znaków; query= 'Utwórz tabelę XYZ ... '; wykonać zapytanie ; query= 'Wstaw do XYZ...'; wykonać zapytanie ; query= 'Aktualizuj zestaw XYZ...'; wykonać zapytanie ; query= 'Usuń z XYZ...'; wykonać zapytanie ; W pierwszym przypadku używam 4 ciągów znaków, z których każdy przechowuje dane, aby wykonać czynności wymienione w ich przyrostkach. W drugim przypadku tylko 1 zmienna do przechowywania wszystkich rodzajów danych. Posiadanie różnych zmiennych ułatwia komuś innemu czytanie i lepsze zrozumienie. Jednak posiadanie zbyt wielu z nich utrudnia zarządzanie. Czy zbyt wiele zmiennych wpływa negatywnie na moją wydajność? PS: proszę nie odpowiadać kodem z przykładu, tylko po to, by przekazać to, co naprawdę mam na myśli.


title: Dlaczego TDD nie jest częścią lekcji programowania w szkole?

text: Moja córka i syn uczą się Javy z BlueJ. Naprawdę nie rozumiem, dlaczego pierwszą rzeczą, której się uczą, nie jest pisanie kodu, który wyprowadzi przypadek testowy na zielone światło.


title: Czy ręczne wstrzykiwanie zależności jest lepszą alternatywą dla kompozycji i polimorfizmu?

text: Po pierwsze, jestem programistą na poziomie podstawowym; W rzeczywistości kończę A.S. stopień z ostatecznym projektem zwieńczenia w lecie. W mojej nowej pracy, gdy nie ma dla mnie jakiegoś projektu (czekają, aby obsadzić zespół nowymi pracownikami), dostawałem książki do czytania i uczenia się, gdy czekałem - niektóre podręczniki, inne nie tak bardzo (jak Code Complete). Po przejrzeniu tych książek zwróciłem się do Internetu, aby dowiedzieć się jak najwięcej, i zacząłem uczyć się o SOLID i DI (rozmawialiśmy trochę o zasadzie substytucji Liskova, ale niewiele więcej o pomysłach SOLID). Tak jak się dowiedziałem, usiadłem, aby nauczyć się lepiej i zacząłem pisać kod, aby ręcznie korzystać z DI (nie ma frameworków DI na komputerach deweloperskich). Chodzi o to, że kiedy to robię, zauważam, że wydaje się to znajome... i wygląda na to, że jest to bardzo podobne do pracy, którą wykonałem w przeszłości, używając kompozycji klas abstrakcyjnych przy użyciu polimorfizmu. Czy brakuje mi tutaj większego obrazu? Czy jest coś o DI (przynajmniej ręcznie), co wykracza poza to? Rozumiem, że konfiguracje nie w kodzie niektórych frameworków DI mają duże korzyści, jeśli chodzi o zmianę rzeczy bez konieczności ponownej kompilacji, ale robiąc to ręcznie, nie jestem pewien, czy jest inaczej niż podano powyżej ... Trochę wglądu w to byłoby bardzo pomocne!


title: Czy wzorzec MVC neguje inne wzorce projektowe?

text: Tak więc zwykle podczas pracy z MVC masz kontroler, który kontroluje dane wejściowe, model, który go przetwarza i przygotowuje dla użytkownika oraz widok, który wyświetla „wynik” dla użytkownika. Teraz tworząc ten wzorzec, rozdzielasz kod w odpowiednie miejsce. na przykład kod kontrolera trafia do kontrolera, kod gui przechodzi do widoku i tak dalej. Teraz moje pytanie brzmi, czy spojrzymy na wszystkie wzorce projektowe, na przykład wzorzec obserwatora. Jak zastosować taki wzorzec do struktury kodu, która już implementuje wzorzec MVC? w takim przypadku wiele innych wzorców, takich jak kompozyt, fabryka i wzorzec poleceń? Czy struktura wzorca MVC nie utrudnia implementacji innych wzorców projektowania dobrych praktyk?


title: Jaka jest różnica między kierownikiem programu a kierownikiem projektu?

text: Czy Program Manager to osoba, która zarządza wieloma projektami (w ramach jednego programu), którymi z kolei zarządzają Project Managerowie? Lub czy Program Manager jest osobą zdefiniowaną przez Joela Spolsky'ego tutaj. **UWAGA:** Nie mam na myśli tego.


title: NetBeans IDE i różne alternatywy?

text: Głównie lubię używać NetBeans jako mojego IDE dla Javy, którego bardzo lubię używać. Obecnie dopiero uczę się Javy i powiedziano mi, że będzie to świetny program, którym jest. Chciałbym tylko zapytać doświadczonych facetów, jakiego oprogramowania używasz głównie do Java / Python itp. Jak już powiedziałem, jestem właśnie w trakcie zdobywania dyplomu w SE, więc nigdy nie byłem narażony na biznesowy świat oprogramowania i co jest głównie używany.


title: Diagramy przepływu danych – czy są używane w świecie rzeczywistym?

text: Tak więc w ostatnim semestrze miałem kurs Systemy Informatyczne, na którym mieliśmy stworzyć typową stronę CRUD. Otrzymaliśmy kilka przypadków użycia i od tego czasu stworzyliśmy diagramy przepływu danych, które posłużyły do zaprojektowania naszej bazy danych. Rozglądałem się po sieci, ale mam wrażenie, że ludzie w dzisiejszych czasach rzadko używają DFD - przynajmniej tak się wydaje. Czy to tylko moje wrażenie, czy faktycznie są używane?


title: Jakie były powody, dla których Windows nigdy nie miał przyzwoitej powłoki?

text: Czytałem temat na SO: Dlaczego języki skryptowe (np. ...) nie są odpowiednie jako języki powłoki?. Szczególnie spodobała mi się odpowiedź Jörga W Mittaga, z którego dowiedziałem się ciekawych rzeczy o `Windows PowerShell`. Tak więc po ponad 20 latach Windows w końcu ma dobrze zaprojektowaną powłokę (Windows 1.0 - 1985, stabilna wersja PowerShell - 2009). Z drugiej strony systemy uniksowe mają wiele różnych powłok od 1978 Bourne Shell. Czytałem kilka artykułów o rozmowach kwalifikacyjnych z MS i mam wrażenie, że firma jest bardzo "geekowa". Zastanawiam się, dlaczego nie potrzebowali narzędzi wiersza poleceń w porównaniu do ludzi z Uniksa, którzy całą swoją pracę wykonują za pomocą tych narzędzi.


title: Luka w zabezpieczeniach i nda

text: Chcę zaproponować sytuację i uzyskać wgląd w przemyślenia społeczności. Klient, nazwij go Klient X ma umowę ze sprzedawcą, dostawcą Y na dostarczenie aplikacji i usług. Klient X odkrywa poważną lukę w uwierzytelnianiu w oprogramowaniu Dostawcy Y. Dostawca Y i Klient X prowadzą dyskusję. * Dostawca Y potwierdza/potwierdza usterkę. * Dostawca Y potwierdza, że dołoży starań, aby to naprawić. * Klient X prosi Dostawcę Y o poinformowanie wszystkich klientów, których to dotyczy. Sprzedawca zgadza się. Przewiń do przodu o 2 miesiące, a usterka nie została naprawiona. Poprawki zostały zastosowane w celu złagodzenia, ale usterka nadal istnieje. Jednak żaden klient nie został poinformowany o problemie. W tym momencie klient X kontaktuje się z dostawcą Y, aby określić status i zrozumieć, dlaczego klient nie został poinformowany. Sprzedawca ładnie przypomina klientowi, że jest objęty umową NDA i nadal pracuje nad tym problemem. Kilka pytań/dyskusji z tego. * **Omawiając usterkę oprogramowania ze sprzedawcą, oznacza to, że zgadzasz się na jakikolwiek rodzaj ujawnienia NDA? Dodatkowo, jakie prawa Klient X ma do informowania innych klientów o tej luce, jeśli sprzedawca nie jest skłonny do jej przestrzegania?** * _Ja (operator) mam wrażenie, że w przypadku wystąpienia takiej sytuacji należy powiadomić dostawcę o problem, daj im wystarczająco dużo czasu na odpowiedź, a jeśli nie otrzymasz odpowiedzi, możesz zrobić to, co chcesz z informacjami._ * _Myślę o incydencie w MIT/metrze, w którym skontaktowali się z władzami tranzytowymi, władze tranzytowe nie odpowiedziały w modę na czas, aby uczniowie sami ujawnili informacje publicznie._ * _Kilka rzeczy, o których należy pamiętać: nie jestem klientem w powyższej sytuacji, załóżmy również dla celów podtrzymania dyskusji, że klient X nie ma zamiaru ujawniania informacji , są jedynie zainteresowani i zainteresowani upewnieniem się, że inni klienci są świadomi, dopóki nie zostanie to naprawione, aby nie doświadczyli poważnego naruszenia bezpieczeństwa._ (W razie potrzeby można podać więcej informacji, aby dodać kontekst kwestionować. )


title: Odczytywanie znaku ze strumienia pliku w c++ (AKA: Dlaczego nie ma standardowego odpowiednika starego conio.h w C++)?

text: Nie mam problemu, nad którym pracuję, to raczej kwestia decyzji projektowych. Uważam, że jest tak wiele różnych rzeczy, nad którymi pracuję, w których czytanie `_kbhit()` jest niezwykle przydatne, ale nie mogę znaleźć (czytaj: nie ma) żadnej takiej funkcjonalności w standardzie C++. * Przykład: Niech kamera będzie nieprzerwanie uruchomiona (i aktualizuje okno na ekranie), aż trafisz na znak „ucieczki”. * Przykład: naciśnięcie klawisza F11 w programie Firefox, aby zmaksymalizować okno. * Przykład: Naciśnięcie klawisza W w dowolnej grze FPS, aby przejść do przodu Wszystkie te czytają klawiaturę bez naciskania [enter] pomiędzy każdym odczytem. Jak, u diabła, można to osiągnąć? Pod windows używam `getch()` w ciągłej pętli działającej we własnym wątku. Nie jestem pewien, czy jest to dobry pomysł pod względem wydajności, ale większość oprogramowania, które piszę, które działa w systemie operacyjnym, nie ma dużego znaczenia czasowego (głównie są to interfejsy wiersza poleceń, które współpracują z systemami wbudowanymi, które rozwijam). Powodem, dla którego pytam, jest to, że przyjaciel poprosił mnie o pomoc w napisaniu interfejsu użytkownika dla systemu - a interfejs użytkownika musi działać pod Linuksem. Nie mam pojęcia, od czego zacząć i zamiast go odrzucać, pomyślałem, że zamiast tego zapytam was: jak odczytać uderzenie klawiatury bez wywoływania funkcji conio.h?


title: WCF/SOA — dlaczego powinienem tworzyć obiekty parametrów dla prostych żądań?

text: Nasza firma rozpoczyna dość dużą inicjatywę SOA. Wiele rzeczy robimy dobrze: komunikacja jest dobra; w stosownych przypadkach pieniądze na narzędzia; wprowadziliśmy też dobrą wiedzę fachową, aby pomóc nam w przejściu. Próbujemy opracować standardy, których będziemy mogli przestrzegać jako grupa, a jeden z proponowanych standardów dość mi przeszkadza: ustandaryzowaliśmy wzorzec, w którym każda operacja pobiera obiekt żądania i zwraca obiekt odpowiedzi. Zdaję sobie sprawę, że jest to mniej więcej standardowe podejście dla wielu ludzi, ale pytam _dlaczego mam się tym przejmować?_ (nie jestem tak dobry z otrzymaną mądrością, potrzebuję dlaczego). Większość usług, które będę świadczyć, to proste odzyskiwanie metadanych organizacyjnych. Na przykład znajdź zasady bezpieczeństwa dla konkretnego użytkownika. To wymaga identyfikatora użytkownika i nic więcej. Standard mówi mi, że powinienem umieścić to żądanie w obiekcie, a zwróconą politykę w obiekcie odpowiedzi. Mój niepokój potęguje spojrzenie na WSDL, który jest generowany z naszych kontraktów. Program WCF automatycznie generuje komunikaty żądań i odpowiedzi oraz otacza nawet obiekt żądania/odpowiedzi. W pełni rozumiem, że jeśli składasz złożone żądanie, złożony obiekt wejściowy jest uzasadniony. To właśnie byś zrobił, nawet jeśli usługi nie byłyby zaangażowane. Moje pytanie brzmi: dlaczego powinienem automatycznie pakować żądania i odpowiedzi, gdy: * Sprawia, że proste usługi są mniej wyraziste * I tak zrobiłbyś to dla złożonej usługi * WCF i tak tworzy wiadomość z żądaniem/odpowiedzią Znalazłem następujące argumenty przemawiające za tym podejściem : **Obsługuje wersjonowanie poprzez umożliwienie wsuwania opcjonalnych parametrów do obiektu żądania.** Dawno temu zrobiłem całkiem sporo COM i uważałbym to za prawie antywszorowanie dla wersjonowania. W przypadku niektórych rzeczy przypuszczam, że to pomogłoby, ale spodziewam się, że tam, gdzie to pomoże, i tak masz już obiekt parametru. **Pozwala na wyizolowanie wspólnych danych i zachowań do klasy bazowej** Ten ma dla mnie pewną wagę. **Odciąga ludzi od zachowań w stylu RPC i w kierunku zachowań związanych z przesyłaniem wiadomości** Przeczytałem to na stronie Microsoftu i usłyszałem to od naszego guru, ale nadal nie mam jasnego pojęcia, co one oznaczają i dlaczego jest to cenne . Czy to naturalnie wyglądające interfejsy sprawiają, że ludzie zapominają, że dzwonią do usługi zdalnej? Patrzę na refaktoryzację sygnatur być może 300 metod, więc jest to nietrywialna ilość bólu. Jestem wielkim fanem konsekwencji we wdrożeniach, więc chętnie zmierzę się z bólem, pomoże tylko wiedzieć, że w końcu wszystko się opłaci.


title: Zalecenia dotyczące przejścia od frontonu do programowania

text: Jestem programistą front-end, który chce dodać programowanie do moich umiejętności. Jak ze wszystkimi rzeczami, jestem pewien, że najbardziej pomogą mi praktyka i praktyczne zastosowanie, ale obecnie mam problem z owinięciem głowy wokół przejścia z bardzo liniowego typu programowania (HMTL/CSS) do bardziej „trójwymiarowego lub nieliniowe koncepcje programowania, np. programowanie obiektowe. Po prostu czuję się przytłoczony tym, że jest tyle do poznania! Od czego zacząć, od czego zacząć. Szczególnie interesuje mnie nauka JavaScript, PHP i RoR. Ale wolałbym naprawdę zbliżyć się do PHP, ponieważ lubię majstrować przy WordPressie. Czy ktoś ma jakieś sugestie dotyczące zasobów istotnych dla moich badań lub praktycznych przykładowych projektów, które przyniosłyby mi najbardziej praktyczne doświadczenie? Majsterkowałem od lat, ale niecierpliwie czekam na ten moment, w którym wszystko zacznie się klikać. Dziękuję!


title: Lokalizowanie pozycji odtwarzania ścieżki audio

text: Chcę znaleźć pozycję odtwarzania znanej ścieżki dźwiękowej, słuchając na innym urządzeniu. Idealnie urządzenie odsłuchowe nie potrzebuje pełnej kopii dźwięku, ale jakiś jego skrót, ponieważ docelowy dźwięk może być długi (jest to potrzebne do wyświetlania pozycji podczas oglądania filmu). Zajrzałem trochę do narzędzi do akustycznego odcisku palca - chociaż szukam pozycji, a nie zestawu piosenek i chciałbym, aby rozpoznawanie było aktywne, więc wolałbym nie odpytywać usługi. Moje początkowe myśli to próbkowanie kilku częstotliwości (aby cała ścieżka dźwiękowa nie była wymagana) i użycie Dynamic Time Warping do wyszukania pasującego regionu ścieżki. Nie mam dużego doświadczenia z przetwarzaniem dźwięku, więc zastanawiałem się, czy istnieje bardziej wydajne/solidne podejście do tego.