title: Czy „responsywne projektowanie stron internetowych” staje się „odznaką do noszenia” dla programistów frontendowych?

text: To może wydawać się dziwne pytanie. Jednak coraz częściej spotykam się z aplikacjami webowymi zbudowanymi na zasadzie „mobile first” / „responsive design”, które są mniej więcej responsywne jak osa w zimie. Mobilność nie jest „trendem”, ale jest tak traktowana. To „modne” i „przyciągające wzrok” dla agencji cyfrowych, aby być „najpierw mobilnym”, ale dla większości oznacza to tylko jedno lub więcej z poniższych: * Zapytania @media * Jquery mobile * Twitter bootstrap Ostatnio widziałem witrynę który był rozliczany jako „najpierw mobilny”, który używał tylko @media do rozróżniania urządzeń. Była to aplikacja .NET webforms, która w dużym stopniu opierała się na stanie widoku, a rozmiar pobierania tylko strony głównej (przed ogłaszaniem zwrotnym) wynosił ponad 1 MB! Czuły? Nie na moim gównianym Samsungu na środku pola. Wiem, że to brzmi jak rant, ale naprawdę chciałbym wiedzieć, jakie są opinie ludzi na temat tego, jak radzić sobie z różnicowaniem urządzeń? Osobiście pokazuję / ukrywam znaczniki (tj. sekcje strony / zawiera) w oparciu o urządzenie, aby zapewnić, że nie tylko układ i funkcjonalność są zoptymalizowane, ale także suma pobierania. Czy jestem dinozaurem?? Czy marnuję swój czas?


title: Czym dokładnie jest indeksator wyszukiwarek. Od czego zacząć budowę?

text: Do jednego z projektów na uniwersytecie otrzymaliśmy zadanie stworzenia niestandardowej, niszowej wyszukiwarki. Moje uczelnie i ja podzieliliśmy się zadaniami, aby łatwiej poradzić sobie z całym projektem. Moja rola polega na stworzeniu indeksatora. Przeczytałem już stronę wikipedii o indeksatorach wyszukiwarek i kilka innych powiązanych artykułów, ale wciąż mam trudności ze zrozumieniem, jak to działa i jak wygląda. Dla mnie jest oczywiste, że nie jest to zwykła tabela z indeksem i kolumną opisową. Więc moje pytanie brzmiałoby, z czego składa się indeksator wyszukiwarek, jak wygląda jego architektura i od czego zacząć go budować?


title: Przedstawiając projekt oprogramowania kierownictwu wyższego szczebla

text: Przedstawiam dziś projekt oprogramowania do akceptacji i przeglądając setki stron dokumentacji projektowej, wyłapując to, co ważne, nie jestem pewien, czy powinienem zacząć od diagramów aktywności, czy przypadków użycia. Myślałem o ułożeniu go w następujący sposób: * Diagramy działań * Diagramy przypadków użycia * Diagramy sekwencji * Modele klas Spędziłem ostatnie 7 miesięcy mojego życia tworząc to i chcę, aby zostało to przedstawione w najbardziej logicznej kolejności i zrobione z.


title: Jakiej techniki modelowania używasz do ciągłego projektowania?

text: Razem z kolegami z drużyny staram się nauczyć XP i stosować jego zasady. Z powodzeniem pracujemy w TDD iz radością refaktoryzujemy nasz kod i projekt. Mamy jednak problemy z ogólnym widokiem projektu. Ostatnio zastanawialiśmy się, jakie byłyby „dobre” praktyki dla efektywnego ciągłego projektowania kodu. Nie szukamy ściśle odpowiedniego modelu, takiego jak karty CRC, diagramy komunikacyjne itp., Zamiast tego szukamy techniki ciągłej współpracy nad widokiem systemu na wysokim poziomie ( _choć nie za wysoko_ ). Postaram się wyjaśnić lepiej: interesuje mnie sposób, w jaki karty CRC są używane do burzy mózgów w modelu i mieszam je z bardzo przybliżonymi diagramami UML (których już używamy). Jednak szukamy kilku zasad decydowania o **kiedy** , **jak** i **ile** modelować podczas naszych iteracji. Czy masz jakieś sugestie w tej sprawie? Na przykład, kiedy Twoi koledzy z zespołu i Ty _wiesz_, że potrzebujesz sesji projektowej i jak działają Twoje spotkania?


title: Czy jako młody programista powinienem się martwić, że będę musiał używać w pracy technologii „niemodnej”?

text: Jestem świeżo upieczonym absolwentem college'u (w maju!). Kiedy byłem jeszcze w szkole, chciałem się upewnić, że mam pracę przed ukończeniem studiów, i bardzo wcześnie (prawdopodobnie za wcześnie) w poszukiwaniu pracy zdecydowałem się na taką w regionie, do którego miałem nadzieję przenieść się po studiach . Jednak od miesięcy zastanawiam się nad tą decyzją z kilku powodów. Jednym z nich jest to, że nie mam wielkich wyzwań w pracy i czuję, że nie poprawiłem się zbytnio w programowaniu odkąd zacząłem tutaj. Zawsze jednak mogę znaleźć czas na pracę nad open source (i pracowałem w przeszłości) poza moją pracą, więc mam miejsce, aby obejść to rozczarowanie. Co ważniejsze, martwi mnie fakt, że moja praca polega w zasadzie na pracy nad starą, skrzypiącą aplikacją internetową w Perlu (przy użyciu Masona i dziwnego wewnętrznego ORM). Czy strzelam sobie w stopę, pracując z technologią, która nie jest już popularna i tak naprawdę nie pomoże mi w znalezieniu pracy w przyszłości? Rzadko widuję prace w Perlu, a kiedy to robię, zwykle robię coś, czym nie jestem zainteresowany (tzw. front-endowe tworzenie stron internetowych). Programowanie systemów, wizualizacja, programowanie sieciowe lub przynajmniej tworzenie stron internetowych zaplecza to tematy, nad którymi naprawdę lubię pracować – nie wydaje mi się, aby moje obecne doświadczenie zawodowe pomagało mi w zdobywaniu stanowisk zajmujących się którąkolwiek z tych rzeczy .


title: Czy JavaFX ma przyszłość?

text: Nie zamierzałem haszować i powtarzać tej samej sprawy, ale po prostu zdecydować, czego się najpierw nauczyć (JavaFX, Flex, HTML5 itp.) Przeciągnąłbym przez rodzaj ankiety, zwłaszcza że ostatnio pojawiły się tutaj podobne pytania co najmniej jeden rok. Czym więc jest perspektywa JavaFX jako technologii RIA na najbliższe kilka lat?


title: Dlaczego Scala nie została zaimplementowana w C lub C++?

text: Czy ktoś wie, dlaczego Scala została zaimplementowana w Javie i .NET zamiast w C lub C++? Większość języków jest zaimplementowana za pomocą Cor C++ [tj. Erlang, Python, PHP, Ruby, Perl]. Jakie są zalety Scali zaimplementowane w Javie i .NET poza udostępnieniem bibliotek Javy i .NET? **UPDATE** Czy Scala nie zyskałaby większych korzyści, gdyby została zaimplementowana w C, ponieważ można ją lepiej dostroić, zamiast polegać na JVM?


title: Nowy C++11 analogiczny do Pythona 2 -> 3?

text: 1. Jestem programistą Python2 i właśnie zamówiłem u Bjarne'a Stroustrupa język programowania C++, 4. edycja, aby nauczyć się C++11. Ale zaraz po tym, jak go zamówiłem, zacząłem się zastanawiać, czy popełniłem błąd. Czy zmiany wprowadzone w C++ w C++11 są analogiczne do tego, jak Python przeszedł z 2 do 3, o ile kod znacząco się psuje i nie jest kompatybilny wstecz? A może nauka C++11 jest bezpieczna? 2. Gdybym zakodował C++11 w XCode, najnowsza wersja jest taka, jaka jest, czy będzie działać na powiedzmy komputerze z systemem Windows? Czy też zależy to bardziej od tego, co skompiluje kod, dość pewny, że XCode używa LLVM.


title: Licencje typu „open source”, które wyraźnie zabraniają zastosowań wojskowych

text: Jestem naukowcem iw swoich badaniach dużo programuję. Jestem wielkim fanem koncepcji open-source - zwłaszcza w badaniach, gdzie przejrzystość i odtwarzalność są już dużą częścią kultury. Chętnie wnoszę jak najwięcej do społeczności, a udostępnianie mojego kodu dla każdego jest częścią tego. Jednak w badaniach zawsze istnieje pewna miara niepewności co do tego, do czego będą używane produkowane przez ciebie produkty. W pełni rozumiem, że nie mam praw autorskich do żadnych wyników ani wniosków - ale mogę chronić sposób, w jaki inni używają mojego kodu, i chciałbym się upewnić, że nie ma (legalnego) sposobu na włączenie oprogramowania, które wyprodukowałem do zastosowań wojskowych. Przeczytałem kilka krótszych z typowych licencji OSS i podsumowania kilku innych, ale wszystkie wydają się skupiać wyłącznie na pytaniach „czy zarabiasz pieniądze na moim kodzie?” i „czy udostępniasz mój kod w swoim programie?” - nic o tym, co program faktycznie robi z kodem. Czy istnieją dobre licencje open-source, które wyraźnie zabraniają wszelkiego rodzaju zastosowań wojskowych? Aktualizacja ###: Po przeczytaniu więcej o tym, jak działa OSS, zdałem sobie sprawę, że licencja spełniająca moje potrzeby z definicji nie będzie typu open source, ponieważ licencje open source nie mogą dyskryminować pól. Dlatego raczej szukam licencji, która jest _jak_ licencja open-source, z wyjątkiem tego, że zabrania użycia militarnego. Chcę, aby ta licencja już istniała, została stworzona lub przynajmniej zrecenzowana przez kogoś, kto faktycznie zna się na licencjonowaniu, ponieważ ja nie. Również w odpowiedzi na kilka uwag, że będzie to trudne do wyegzekwowania: tak, zdaję sobie z tego sprawę. Ale to jest bardziej dla mnie niż dla implikacji prawnych; jeśli używam takiej licencji, a organizacja wojskowa i tak używa mojego kodu, łamią prawo i robią to pomimo moich wyraźnych instrukcji, aby tego nie robić. Tak więc potencjalnie makabryczne rzeczy, które robią z aplikacjami, które zawierają oprogramowanie, które napisałem, nie są już "w mojej świadomości", ponieważ ukradli mi oprogramowanie. (I gdzieś mam naiwną nadzieję, że jeśli będą potrzebować czegoś, co zrobiłem, a moja licencja zabrania im tego legalnie używać, dostaną program kogoś innego, który zrobi to samo i pozwoli im z niego korzystać. Nie chodzi o to, że rządy zawsze tak robią, ale zawsze _powinni_ przestrzegać prawa...) Jest to, że tak powiem, ochrona moralna, a nie coś, co faktycznie spodziewam się poruszyć w sądzie (jeśli mój przeciętny kod jest kiedykolwiek używany przez CIA...)


title: Co oznacza słowo relacyjne w „relacyjnej bazie danych”?

text: Próbowałem szukać, ale nie otrzymałem żadnych przydatnych informacji. Co oznacza tutaj słowo „relacyjne”? Czy stoły są ze sobą powiązane, tak jak rzeczywiste istoty, czy może oznacza to coś innego?


title: Korzystanie z przepływu obiektów i przepływu sterowania w UML

text: Poniżej znajduje się diagram aktywności UML, na którym pokazano dwa sposoby wykonywania działań. ![tutaj podaj opis obrazka](http://i.stack.imgur.com/bhttT.jpg) Ponieważ ustawienie wartości **a** i **b** można wykonać w dowolnej kolejności przed akcją 2 jest wykonywany, więc zastanawiam się, czy oba przedstawione tutaj sposoby są poprawne, czy jest między nimi różnica?


Czy są jakieś języki, które mają zarówno wysoki, jak i niski poziom? Jeśli nie, to czy można go stworzyć? Dlaczego lub dlaczego nie? Teoretycznie bardzo pomocne byłoby posiadanie języka programowania, który ma zarówno powłoki, jak i zwykłe udogodnienia języka programowania, takie jak na przykład Forth, a także posiadanie udogodnień wysokiego poziomu; Forth nie wydaje się (i prawdopodobnie wymagałoby to sporo pracy) jak naturalne dopasowanie do rzeczy wysokiego poziomu. Oczywiście, języki takie jak C czy C++ mogą być stworzone do symulowania cech języków wysokiego poziomu, ale kosztem brzydkiej lub trudnej składni i dodania znacznie większej złożoności, lub kosztem dużo pracy, co byłoby być niepotrzebne, ponieważ często łatwiej byłoby po prostu użyć bardziej standardowego języka programowania wysokiego poziomu. **Wyjaśnienie** : Niski poziom, czyli takie rzeczy jak ręczne zarządzanie pamięcią, ograniczone struktury danych, tylko jedna wartość zwracana i tym podobne. Przykłady: asembler, C, C++ do pewnego stopnia i Forth. Przykładami języków wysokiego poziomu byłyby: Python, Perl, JavaScript, Java i C# w dużym stopniu, Lisp.


title: Jak obliczyć maksymalny obszar, uwzględniając tylko podane liczby całkowite o współrzędnych (x,y)?

text: Wartości funkcji dwóch zmiennych z = f (x, y), gdzie x, y, z przyjmują wartości całkowite, są przechowywane w sql db. Oblicz (wyznacz) największą powierzchnię mieszkania. Przez „płaski obszar” rozumiemy obszar, wokół którego dla każdej pary x i y leżącej wewnątrz obszaru o wartości funkcji jest stała (z = const). Próbowałem już użyć tego algorytmu wypełniania zalewania, ale nie jestem pewien, czy jest to właściwy sposób. np. jeśli mam pary(x,y) w następujący sposób: (0,0),(0,2),(2,0),(2,2) dla których z jest równe 5(z=const) i mam punkt ( 1,1) gdzie z=1 - jak obliczyć "płaską powierzchnię"?


title: Biegły MySQL?

text: Chciałem aplikować na różne stanowiska w zakresie tworzenia stron internetowych i czuję się dobrze z PHP/CSS/HTML, o który proszą, ale co oznacza biegłość w MySQL? Projektowałem własne bazy danych w phpAdminie i używałem ich w stworzonym przeze mnie CMS, czy to oznacza, że jestem biegły w MySQL? Czy wystarczy mieć możliwość tworzenia bazy danych, a następnie aktualizowania/usuwania/wstawiania w niej pól? Czy ta wiedza pozwoliłaby mi umieścić MySQL w moim CV?


title: Jak szybko przeprowadzasz kontrolę jakości i wydajesz oprogramowanie w dużym zespole?

text: Moja praca była kiedyś mniejszym zespołem. Przez jakiś czas mieliśmy mniej niż 13 deweloperów. Obecnie szybko się rozwijamy i mamy ponad 20 lat, a za kilka miesięcy planujemy ukończyć 30 lat. Nasz proces kontroli jakości i wydawania każdej kompilacji już nie działa. Obecnie wszyscy opracowują nowy kod i umieszczają go w środowisku pomostowym. Kilka dni przed naszą cotygodniową premierą zamroziliśmy środowisko testowe i wszystko sprawdziliśmy. W naszym normalnym czasie wydania wszystko było zwykle uważane za dopuszczalne i wypychane na stronę główną. Osiągnęliśmy punkt, w którym nasz kod stał się zbyt duży, więc nie mogliśmy już cotygodniowo regresować całej witryny podczas kontroli jakości. Nie przeszkadzało nam to, po prostu zrobiliśmy listę wszystkiego, co ważne i opisaliśmy tylko to i nowe rzeczy. Teraz dochodzimy do punktu, w którym wszystkie nowe rzeczy każdego tygodnia stają się zbyt duże i zbyt niestabilne. Nasze środowisko inscenizacji jest naprawdę pełne błędów tydzień po tygodniu i zwykle jesteśmy o 1-2 godziny spóźnione od normalnego czasu wydania. Ponieważ zespół będzie się dalej rozrastał, utoniemy w tym samym procesie. Wszystko ponownie oceniamy i osobiście szukam sugestii / historii sukcesu. Wiele firm było tam, gdzie wcześniej i wyszło dalej, musimy zrobić to samo


title: Czy ASP.NET MVC jest całkowicie (i wyłącznie) oparty na konwencjach?

text: **\--TL;DR** * Czy istnieje "Witaj świecie!" Samouczek ASP.NET MVC tam, który nie opiera się na konwencjach i projektach "stockowych"? * Czy można w ogóle skorzystać z technologii bez ponownego użycia domyślnej struktury plików i zacząć od pojedynczego pliku "hello_world.asp" lub czegoś takiego (jak w PHP)? * Czy całkowicie się mylę i powinienem szukać gdzie indziej, może **to**? * Interesuję się frameworkiem MVC, a nie formularzami internetowymi **\--Background** W przeszłości bawiłem się trochę z PHP, dla zabawy, a teraz wracam do tego, ponieważ tworzenie stron internetowych stało się istotne dla mnie po raz kolejny. Nie jestem profesjonalistą, ale staram się zdobyć jak najwięcej wiedzy i kontroli nad technologią, z którą pracuję. Używam Visual Studio 2012 dla C# - mojego wybranego języka "desktop" - a ponieważ otrzymałem Professional Edition od Dreamspark, dostępne są narzędzia do tworzenia sieci Web, w tym ASP.NET MVC 4. Nie będę dotykał formularzy sieci Web, ale MVC Framework zwrócił moją uwagę, ponieważ wzorzec MVC jest czymś, do czego naprawdę mogę się odnieść, ponieważ zapewnia kontrolę, której chcę **ale**... _niezupełnie_. Nauka PHP była łatwa - od samego początku mogłem po prostu utworzyć plik "hello_world.php" i po prostu zrobić coś takiego, aby uzyskać natychmiastowe wyniki: <!-- file: hello_world.php --> <?php> echo "Witaj Świat!"; <?> Ale nie mogłem znaleźć ani jednego samouczka ASP.NET (MVC) (na pewno kupię jedną z nadchodzących książek MVC 4, tylko za miesiąc), który zaczynałby się w ten sposób. Wszyscy zaczynają od przykładowego projektu, budując wiedzę od podstaw i intensywnie używając konwencji. Co jest w porządku, jak sądzę, ale teraz jest to dla mnie najlepszy sposób na nauczenie się różnych rzeczy. Nawet szablon projektu „Pusty” dla nowej aplikacji ASP.NET MVC 4 w VS2012 wcale nie jest pusty: dla Ciebie tworzonych jest kilka plików i folderów — podobnie jak nowy projekt aplikacji klasycznej C#, ale z C# mogę _w rzeczywistości_ zacząć od podstaw, samodzielnie tworząc strukturę projektu. Inaczej jest w przypadku PHP: * Mogę wybierać z mnóstwa różnych frameworków MVC * Mogę po prostu stworzyć własny framework * Mogę po prostu całkowicie pominąć frameworki i wrzucić losowe PHP wraz z moim HTML do jednego pliku i zrobić to praca Rozumiem, że framework musi ustanowić pewne reguły, ale co zrobić, jeśli chcę po prostu utworzyć witrynę jednostronicową z logiką C#? Czy naprawdę muszę tworzyć całe mnóstwo plików i folderów ze względu na konwencję? Proszę też zrozumieć, że nie zaszedłem daleko do żadnego z tych samouczków, głównie z tego powodu, ale jeśli to jedyny sposób, aby to zrobić, skorzystam z jednej z książek, o których wspomniałem wcześniej. To mój pierwszy kontakt z ASP.NET, ale z kilku porównań, które przeczytałem, uważam, że powinienem trzymać się z daleka od formularzy sieci Web. Dziękuję Ci. (Proszę wybaczyć zepsuty angielski - to nie jest mój podstawowy język.)


title: Jak łatwo wydrukować trójkąty liczbowe? Korzystanie z pętli

text: Wiem, jak działają pętle for i czym jest pętla zagnieżdżona, ale jestem bardzo sfrustrowany podczas drukowania tych trójkątów z liczbami lub gwiazdkami w javie. To sprawia, że chcę rzucić naukę programowania :( Proszę, ktoś mi poda prosty sposób na opanowanie pętli. for(int i=1;i<7;i++){ for(int j=1;j<i;j++){ System. out.print(j);} System.out.println();} Chcę dodać lustrzane odbicie tego trójkąta przed sobą.


title: Jaki jest akceptowany styl używania słowa kluczowego `this` w Javie?

text: Pochodzę z języków takich jak Python czy Javascript (i innych mniej zorientowanych obiektowo) i staram się poszerzyć swoją praktyczną wiedzę o Javie, którą znam tylko powierzchownie. Czy uważa się za złą praktykę, aby zawsze dodawać `this` do atrybutów bieżącej instancji? Bardziej naturalne wydaje mi się pisanie... prywatne String foo; public void printFoo() { System.out.println(this.foo); } ... niż ... private String foo; public void printFoo() { System.out.println(foo); } ... ponieważ pomaga mi odróżnić atrybuty instancji od zmiennych lokalnych. Oczywiście w języku takim jak JavaScript bardziej sensowne jest zawsze używanie `this`, ponieważ można mieć więcej zagnieżdżonych funkcji, stąd lokalne zmienne pochodzące z większych zakresów. W Javie, o ile rozumiem, takie zagnieżdżanie nie jest możliwe (poza klasami wewnętrznymi), więc chyba nie jest to duży problem. W każdym razie wolałbym użyć `this`. Czy byłoby to dziwne, a nie idiomatyczne?


title: Problem algorytmiczny - szybkie znalezienie wszystkich #, gdzie wartość %x jest określoną wartością

text: Problem, który próbuję rozwiązać, z góry przepraszam za długość: Biorąc pod uwagę dużą liczbę przechowywanych rekordów, każdy z unikalnym polem (ciągowym) S. Chciałbym móc znaleźć za pomocą zindeksowanego zapytania wszystkie rekordy, w których hash (S) % N == K dla dowolnego N, K (np. mając milion ciągów, znajdź wszystkie ciągi, w których HashCode(s) % 17 = 5. Czy jest jakiś sposób na zapamiętanie tego, abyśmy mogli szybko odpowiedzieć na każde pytanie tej postaci bez robienia % na każdej wartości? Motywacją do tego jest system N rozproszonych węzłów, gdzie każdy rekord musi być przypisany do przynajmniej jednego węzła. Węzły są ponumerowane 0 - (K-1) , a każdy węzeł musi załadować wszystkie rekordy, które pasują do jego numeru: Jeśli mamy 3 węzły * Węzeł 0 ładuje wszystkie rekordy, gdzie Hash % 3 ==0 * Węzeł 1 ładuje wszystkie rekordy, gdzie Hash % 3 ==1 * Węzeł 2 ładuje wszystkie rekordy gdzie Hash % 3 ==2 dodanie czwartego węzła, oczywiście wszystkie przypisania muszą zostać przeliczone - * Węzeł 0 ładuje wszystkie rekordy, gdzie Hash % 4 ==0 * ... * itd. Chciałbym łagodzić te rekordy można znaleźć za pomocą zindeksowanego zapytania bez konieczności indywidualnego obliczania modu. Najlepsze, co do tej pory udało mi się wymyślić: jeśli weźmiemy czynniki pierwsze N (p1 * p2 * ... ) jeśli N % M == I to p % M == I % p dla wszystkich Czynniki pierwsze N, np. 10 węzłów : N % 10 == 6 następnie * N % 2 = 0 == 6 %2 * N % 5 = 1 == 6 %5 więc przechowywanie tablicy „%” z N dla pierwszej „rozsądnej” liczby liczb pierwszych dla mojego zbioru danych powinno być pomocne. Na przykład w powyższym przykładzie przechowujemy hash i liczby pierwsze _HASH__ _PRIMES (tablica %2, %3, %5, %7, ... ])_ 16 [0 1 1 2 ..] więc szukamy N% 10 == 6 jest równoważne szukaniu wszystkich wartości, w których array[1]==1 i array[2] == 1. Jednak to kończy się na pierwszej liczbie pierwszej większej niż najwyższa liczba, którą przechowuję w tabeli czynników. Czy jest lepszy sposób?


title: Czy można dostać pracę w firmie o dużym popycie bez projektów hobbystycznych?

text: Byłem ciekaw, czy zespół rekrutacyjny w firmach o dużym popycie, takich jak Google, bierze pod uwagę brak projektów hobbystycznych przy ocenie kandydatów. Jestem zwykłym programistą 40 godzin tygodniowo, który ma szczęście spędzać godzinę lub dwie w miesiącu poza pracą nad czymkolwiek związanym z programowaniem. Uwielbiam spędzać czas na SO/SE podczas przerw w pracy i odpowiadać na pytania, ale po pracy opuszczam świat programowania i wracam do swojego życia. Rozumiem już, że nie potrzebujesz projektów hobbystycznych, aby być dobrym programistą, ale czy ten brak projektów hobbystycznych wpływa na moje szanse na znalezienie pracy w firmie, która zawsze ma długą listę kandydatów, którzy próbują się dostać?


title: Różnice między debugerami imperatywno-językowymi a funkcjonalno-językowymi

text: Do tej pory zawsze pracowałem z językami imperatywnymi takimi jak Pascal, C, C++, Java w środowisku produkcyjnym, więc mam doświadczenie z debuggerami dla tych języków (Turbo Pascal, Turbo C, GDB/DDD, Visual Studio, Eclipse). Debuger dla języka imperatywnego zwykle pozwala * ustawić punkty przerwania w instrukcjach i wykonać program do momentu napotkania następnego punktu przerwania. * Wykonywanie programu po jednej instrukcji na raz, z możliwością wprowadzenia wywołania funkcji/metody lub przeskoczenia do następnej instrukcji. Gdy wykonywanie programu jest wstrzymane, można sprawdzić bieżący stan programu, tj.: * Sprawdź zawartość stosu, aby zobaczyć bieżące zagnieżdżenie wywołań funkcji. * Sprawdź zmienne lokalne, rzeczywiste parametry funkcji, zmienne globalne i tak dalej. Ponieważ nigdy nie pracowałem z funkcjonalnym językiem programowania w środowisku produkcyjnym, zastanawiałem się, jak będzie wyglądał debugger dla takiego języka. Na przykład: * Jak debugger przechodzi przez program, jeśli nie ma instrukcji, jak w języku imperatywnym? Gdzie ustala się punkty przerwania? * W języku z leniwą oceną, takim jak Haskell, sekwencja wywołań funkcji może być inna niż w języku gorliwym: czy będzie to miało duże znaczenie przy próbie zrozumienia stosu wywołań? * A co ze zmiennymi? Ponieważ nie ma stanu, wyobrażam sobie, że debugger pokaże tylko powiązania zmiennych dla bieżącego zakresu (?), tj. Nie będzie żadnych zmiennych lokalnych ani globalnych zmieniających wartość podczas przechodzenia przez program. Podsumowując, czy istnieją jakieś ogólne, wspólne cechy debuggerów funkcjonalno-językowych, które wyraźnie odróżniają je od debugerów języka imperatywnego?


title: Czy dobry programista nigdy nie korzystał z kontroli wersji?

text: Szukam programisty-eksperta, który pomoże rozwiązać trudną sytuację. Dotychczasowe wywiady były zaskakująco rozczarowujące. Najlepszym kandydatem do tej pory jest bardzo doświadczony programista, który nigdy nie korzystał z oprogramowania do kontroli wersji. Problem sam w sobie może nie być zbyt poważny, ponieważ jest to coś, czego można się nauczyć w krótkim czasie. Ale jest głębszy aspekt, który mnie niepokoi: jak to możliwe, aby aktywnie rozwijać oprogramowanie przez 10-15 lat bez potrzeby kontroli wersji? Czy sam fakt nie szukania rozwiązania problemu śledzenia zmian jest oznaką złego podejścia do programowania?


title: Wiele harmonogramów Quartz dla różnych aplikacji w tym samym schemacie?

text: Obecnie zdefiniowałem określony harmonogram kwarcowy dla wszystkich moich aplikacji w tym samym schemacie z tymi samymi tabelami. Istnieje również specyficzny wyzwalacz dla nich wszystkich. Po uruchomieniu dwóch aplikacji wszystko jest w porządku. Ale kiedy uruchamiam trzecią i czwartą aplikację, otrzymuję to ostrzeżenie, a zadanie kwarcowe nie jest wywoływane dla trzeciej i czwartej aplikacji. Aplikacja A -> Harmonogram A -> Wyzwalacz 1 Aplikacja B -> Harmonogram A -> Wyzwalacz 1 Aplikacja C -> Harmonogram A -> Wyzwalacz 1 Aplikacja D -> Harmonogram A -> Wyzwalacz 1 i Wyzwalacz 2 `2014-02-11 13 :56:13,465 [QuartzScheduler_QuartzJobCluster-1APP381392087198304_ClusterManager] OSTRZEŻENIE jdbcjobstore.JobStoreTX — Ta instancja programu planującego (1APP381392087198304) jest nadal aktywna, ale została odzyskana przez inną instancję w klastrze. Może to spowodować niespójne zachowanie.` Teraz chcę użyć innej instancji programu planującego dla każdej aplikacji z określonym wyzwalaczem w tym samym schemacie. Więc chciałbym wiedzieć, czy użycie ** tego samego schematu i tabel ** dla wszystkich aplikacji jest poprawne, czy też powinienem użyć dla nich innego schematu? Czy ktoś wie, jaka jest najlepsza praktyka w tej sytuacji? Ponadto czwarta aplikacja ma dwa wyzwalacze. Drugi różni się od innych. Aplikacja A -> Harmonogram A -> Wyzwalacz 1 Aplikacja B -> Harmonogram B -> Wyzwalacz 1 Aplikacja C -> Harmonogram C -> Wyzwalacz 1 Aplikacja D -> Harmonogram D -> Wyzwalacz 1 i Wyzwalacz 2


title: Jakie języki programowania są odpowiednie do tworzenia frameworków do kodowania na żywo?

text: Chciałbym zbudować "ramki kodowania na żywo". Powinienem wyjaśnić, co należy rozumieć przez „ramki kodowania na żywo”. Zrobię to, porównując kodowanie na żywo z kodowaniem tradycyjnym. Mówiąc ogólnie, w tradycyjnym programowaniu piszesz kod, czasami go kompilujesz, a następnie uruchamiasz plik wykonywalny lub otwierasz skrypt w jakimś interpreterze. Jeśli chcesz zmodyfikować swoją aplikację, musisz powtórzyć ten proces. Struktura kodowania na żywo umożliwia aktualizację kodu podczas działania aplikacji i ponowne ładowanie na żądanie. Być może to ponowne ładowanie ma miejsce za każdym razem, gdy plik zawierający kod jest zmieniany lub w wyniku innej akcji. Zmiany w kodzie są następnie odzwierciedlane w aplikacji w trakcie jej działania. Nie ma potrzeby zamykania programu, ponownej kompilacji i ponownego uruchamiania. W tym przypadku aplikacja jest aplikacją okienkową, która ma pętlę aktualizacji/rysowania, najprawdopodobniej używa OpenGL do grafiki, biblioteki audio do przetwarzania dźwięku (SuperCollider?) i najlepiej biblioteki sieciowej. Oczywiście preferowałem języki, choć nie jestem pewien, czy którykolwiek z nich byłby odpowiedni dla tego rodzaju architektury. Idealnie użyłbym Pythona, Lua, Ruby lub innego języka wyższego poziomu. Jednak przyjaciel niedawno zasugerował Clojure jako możliwość, więc również to rozważam. **Chciałbym wiedzieć nie tylko, jakie języki byłyby odpowiednie dla tego rodzaju frameworka, ale ogólnie, jakie cechy języka umożliwiłyby stworzenie takiego frameworka.**


title: TDD a produktywność

text: W moim obecnym projekcie (gra, w C++) zdecydowałem, że podczas programowania będę używać Test Driven Development w 100%. Pod względem jakości kodu było to świetne. Mój kod nigdy nie był tak dobrze zaprojektowany i wolny od błędów. Nie boję się, gdy przeglądam kod, który napisałem rok temu na początku projektu, i nabrałem dużo lepszego wyczucia, jak organizować rzeczy, nie tylko po to, aby łatwiej było je testować, ale żeby było prostsze w implementacji i użyciu . Jednak... minął rok odkąd zacząłem projekt. To prawda, że mogę nad tym pracować tylko w wolnym czasie, ale TDD nadal znacznie mnie spowalnia w porównaniu do tego, do czego jestem przyzwyczajony. Przeczytałem, że wolniejsze tempo tworzenia staje się z czasem coraz lepsze i zdecydowanie wymyślam testy o wiele łatwiej niż kiedyś, ale pracuję nad tym już od roku i nadal pracuję w ślimaczym tempie. Za każdym razem, gdy myślę o kolejnym kroku, który wymaga pracy, za każdym razem muszę się zatrzymać i pomyśleć o tym, jak napisałbym do niego test, aby pozwolić mi napisać właściwy kod. Czasami utknę na wiele godzin, wiedząc dokładnie, jaki kod chcę napisać, ale nie wiedząc, jak go rozbić na tyle dobrze, aby w pełni go pokryć testami. Innym razem szybko wymyślę tuzin testów i poświęcę godzinę na pisanie testów, aby pokryć maleńki kawałek prawdziwego kodu, którego napisanie w innym przypadku zajęłoby kilka minut. Lub, po ukończeniu 50. testu, aby objąć konkretną jednostkę w grze i wszystkie aspekty jej tworzenia i użycia, patrzę na moją listę rzeczy do zrobienia i widzę następną jednostkę do zakodowania i wzdrygam się z przerażenia na myśl o pisaniu kolejne 50 podobnych testów, aby go zaimplementować. Doszło do tego, że patrząc na postępy z zeszłego roku rozważam rezygnację z TDD na rzecz „dokończenia tego cholernego projektu”. Jednak rezygnacja z jakości kodu, która była z nim związana, nie jest czymś, czego nie mogę się doczekać. Obawiam się, że jeśli przestanę pisać testy, to wyrwę się z nawyku tworzenia kodu tak modułowego i testowalnego. Czy może robię coś złego, że wciąż jestem w tym tak powolny? Czy istnieją alternatywy, które przyspieszają produktywność bez całkowitej utraty korzyści? BERBEĆ? Mniejsze pokrycie testami? Jak inni ludzie przetrwają TDD bez zabijania całej produktywności i motywacji?


title: Dobre praktyki w testowaniu wersji beta

text: Właśnie wydałem aplikację na iOS do testów beta z TestFlight. Zastanawiam się, jakie są dobre praktyki podczas beta-testów? * Czy powinienem zatrzymać rozwój aplikacji podczas testów beta? * Czy powinienem kontynuować programowanie, ale zrobić migawkowy obraz tego, jak wyglądał kod, gdy został wydany do testów beta? * Problemy, które mogą się pojawić, to to, że jeśli dokonam jakichkolwiek zmian w kodzie, a następnie zostanie wykryty błąd w kodzie, który zmieniłem, nie byłoby to idealne. Zapewne są jeszcze inne sprawy do załatwienia, ale to są te, o których w tej chwili mógłbym pomyśleć. Obecnie jestem jedynym programistą aplikacji.


title: Czy jestem objęty GPL, jeśli chcę utworzyć pracę pochodną z projektu GPLv2 i zmienić nazwę projektu?

text: Ostatnio tworzę widelec z "projektu open source GPLv2" o innej nazwie. Dokonałem poważnych zmian w kodzie źródłowym i nadałem nową nazwę zmodyfikowanemu open source. Zachowałem w nagłówku każdego pliku źródłowego prawa autorskie autora pochodzenia. A potem publikuję moje nowe open source na githubie. czy to zachowanie jest legalne zgodnie z oświadczeniami licencyjnymi GPLv2? czy mam prawo zmienić nazwę zmodyfikowanego open source? Czy mógłbyś podać uzasadnienie licencji wraz z odpowiedzią.


title: CoffeeScript i nazwane funkcje

text: Gdzie indziej: pojawił się spór dotyczący terminologii nazwanej funkcji w CoffeeScript. W szczególności ktoś odwoływał się do czegoś takiego foo = -> console.log("bar") jako nazwanej funkcji. Ale zarzucono, że wszystko w CoffeeScript jest funkcjami anonimowymi i nie ma funkcji nazwanych. To z pewnością prawda, CoffeeScript ma tylko wyrażenia funkcyjne, które można następnie przechowywać w zmiennej. Ale nie sądzę, że oznacza to, że nazywanie tej funkcji nazwaną funkcją jest niewłaściwe. Jak widzę, jest to nazwana funkcja, ponieważ jest to funkcja, której nadano nazwę. To prawda, że nie jest to nazwana funkcja w taki sam sposób, w jaki niektóre inne języki nazywają funkcje, ale myślę, że jest wystarczająco blisko, aby nazywać ją nazwaną funkcją. Twierdzenie, że jest inaczej, wydaje się po prostu czepianiem się. Czy wychodzę na lunch, myśląc, że upieranie się, że to nie jest nazwana funkcja, to tylko szukanie dziury w całym?


title: Uczciwe kombinacje 2

text: Muszę sprawiedliwie przypisać 2 ekspertów z `x` ekspertów (`x` jest raczej małe - mniej niż 50) na każde `n` aplikacji, tak że: * każdy ekspert ma taką samą liczbę aplikacji (+-1); * każda para ekspertów (2-kombinacja `x`) ma taką samą liczbę aplikacji (+-1); Łatwo jest wygenerować wszystkie 2-kombinacje: for (i=0; i<n; i++) { for (j=i+1; j<n; j++) { kombinacja.append(tuple(i,j)); } } Ale żeby rzetelnie przypisać ekspertów muszę przypisać kombinację do aplikacji w prawidłowej kolejności, na przykład: eksperci: 0 1 2 3 4 prawidłowe kombinacje: liczebności 01234 01 11000 23 11110 04 21111 12 22211 34 22222 02 32322 13 33332 14 34333 03 44343 24 44444 Nie jestem w stanie wymyślić dobrego algorytmu do tego (najlepszy, jaki wymyśliłem, jest dość skomplikowany i ma złożoność `O(x4)`). Czy mógłbyś mi pomóc?


title: Sposób przechowywania ostatniej listy odtwarzania użytkownika w bazie danych

text: Za każdym razem, gdy użytkownik usłyszy jedną muzykę w systemie, system zapisuje tę muzykę na ostatniej liście, ale obawiam się, że w przyszłości przekroczymy limit dziesiętny (19,0). Jeśli zrobię Reseed, będę miał problemy z wstawieniem nieprawidłowych duplikatów kluczy pierwotnych, ale jeśli ponownie przydzielę wszystkie identyfikatory, jest to możliwe. Czy jest na to lepszy sposób? Z możliwością wyczyszczenia skoku id (55-60) bez przyszłego bólu głowy z przepełnieniem klucza podstawowego? Uwaga: mogę ograniczyć tę listę do `255(smallint)`, ale chcę uniknąć używania tych samych identyfikatorów.


title: Najlepszy wzorzec projektowy OOP dla sekwencji operacji

text: Pracuję nad aplikacją, której moduł wykonuje kolejno następujące operacje finansowe: Gdy użytkownik prosi o przelanie określonej kwoty na jej konto bankowe: 1. Sprawdź, czy jakaś transakcja może teraz nastąpić? (transakcja może być przeprowadzona tylko w określonym czasie) 2. sprawdzić, czy użytkownik zażądał wypłaty minimalnej kwoty 3. sprawdzić, czy użytkownik posiada konto domyślne. Wyniki wszystkich powyższych czynności powinny zostać zarejestrowane. Jeżeli wszystkie powyższe warunki zostaną spełnione, transakcja jest realizowana. W przyszłości mogą pojawić się dodatkowe kontrole. Który wzorzec projektowy zorientowany obiektowo powinien najlepiej pasować do powyższego przypadku?


title: setSoftInputMode kontra InputMethodManager

text: Widziałem i używałem obu metod ukrywania klawiatury ekranowej podczas kodowania Androida: getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); oraz: InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0); Przeczytałem dokumentację dla obu i nadal nie wiem, w jaki sposób każdy z nich jest inny, taki sam, który jest lepszą metodą lub praktyką w użyciu i który z nich powinien być używany w jakich sytuacjach. Oto fragment dokumentacji `.setSoftInputMode`: > Określ jawny tryb miękkiego wprowadzania, który ma być używany dla okna, zgodnie z > WindowManager.LayoutParams.softInputMode. Dostarczenie czegokolwiek poza > "nieokreślone" tutaj przesłoni tryb wejściowy, który normalnie > pobrałby okno ze swojego motywu. A oto fragment dokumentacji `InputMethodManager`, który wydaje się mówić prawie to samo: > Możesz także kontrolować preferowany stan miękkiego wejścia (otwarty, zamknięty itp.) dla > swojego okna przy użyciu tego samego atrybutu windowSoftInputMode. > > Bardziej szczegółowa kontrola jest dostępna za pośrednictwem interfejsów API, które umożliwiają bezpośrednią > interakcję z MFW i jego edytorem IME — wyświetlanie lub ukrywanie obszaru wprowadzania danych, > pozwalanie użytkownikowi wybrać metodę wprowadzania itp. Jaka jest więc różnica w te dwie opcje ukrywania miękkiej klawiatury Androida i czy jedna ma przewagę nad drugą? Czy jeden jest bardziej wydajny? Jakie są konkretne zastosowania każdego z nich?


title: jak start-upy na wczesnym etapie zatrudniają programistów ninja?

text: Jestem programistą, który właśnie rozpoczął pracę nad pomysłem na startup. W tej chwili chcę wprowadzić na pokład przynajmniej jednego programistę. Ten programista powinien być ninja - inżynierem 10x. Ponieważ wczesne dni są prawdopodobnie najbardziej ryzykowne dla startupu, chcę się upewnić, że podchodzę do tego problemu najlepiej, jak potrafię. Jak znaleźć tych ludzi? i Jak przekonać ich do wejścia na pokład? Chciałbym usłyszeć od ludzi, którzy założyli własne firmy i co myślą o zatrudnianiu **Aktualizacja** : Chciałbym, aby ninja został współzałożycielem, więc poza byciem ninja (tj. świetnym programistą z informatyką doświadczenie) musi mieć zdrowy apetyt na ryzyko (dla świetnych programistów nie jest to wielka sprawa, ponieważ mogą zostać zatrudnieni w dowolnym momencie na stanowiskach głównego nurtu, jeśli startup nie działa)


title: Jak organizujesz testy użyteczności?

text: * Jaki jest twój proces? * Jak otrzymujesz informację zwrotną? * Jakiego oprogramowania używasz? (jak Morae z TechSmith) * Kto je wykonuje? * Czy zmierzyłeś, jak pozytywnie wpłynęło to na jakość Twojego oprogramowania? Szukam Twojego doświadczenia na ten temat. To jest coś, co chcę poprawić.


title: wyzwalacz sqlite lub zdarzenie aplikacji?

text: Mam dwie kolejki zdarzeń (kolejki mapowane w tabeli) oparte na dwóch różnych stanach tych samych danych przechowywanych w dwóch różnych tabelach. Zdarzenia są generowane podczas tworzenia/aktualizowania/usuwania w obu tabelach. Ograniczeniem jest to, że obie tabele muszą być zsynchronizowane. Utworzenie/aktualizacja/usunięcie w jednej tabeli musi zostać odzwierciedlone w innej tabeli. Pytanie brzmi, czy powinienem używać wyzwalacza do kolejkowania zdarzeń w tabeli lub aplikacji/obiektu do kolejkowania zdarzeń w tabeli? i dlaczego? Uwaga: 1. Aktualizacja jednego z nich może generować 3 różne typy zdarzeń. Tak więc w warstwie aplikacji wymagana byłaby dodatkowa logika diff, aby wygenerować poprawne zdarzenie. 2. Negatywną rzeczą w wyzwalaczu jest to, że wprowadzi zduplikowane zdarzenia z obu stron. np. jeśli jakieś zdarzenie jest przetwarzane na jednej tabeli, utworzy zdarzenie do przetworzenia na innej tabeli.


title: Czy uważasz, że języki kompilowane natywnie osiągnęły swój EOL?

text: Jeśli przyjrzymy się głównym używanym obecnie językom programowania, można zauważyć, że zdecydowana większość z nich jest w rzeczywistości interpretowana. Patrząc na największy kawałek tortu, mamy Javę i C#, które są gotowymi do zastosowania w przedsiębiorstwach, ciężkimi, poważnymi językami programowania, które są zasadniczo skompilowane do kodu bajtowego tylko po to, aby były interpretowane przez ich odpowiednie maszyny wirtualne (JVM i CLR) . Jeśli spojrzymy na języki skryptowe, mamy Perl, Python, Ruby i Lua, które są interpretowane (albo z kodu, albo z kodu bajtowego - i tak, należy zauważyć, że absolutnie nie są tym samym). Patrząc na języki skompilowane, mamy C, który jest obecnie używany w środowiskach osadzonych i niskopoziomowych, w czasie rzeczywistym, oraz C++, który wciąż żyje i kopie, gdy chcesz zająć się poważnym programowaniem tak blisko sprzętu, jak tylko możesz, ale nadal masz kilka fajnych abstrakcji, które pomogą Ci w codziennych zadaniach. Zasadniczo w oddali nie ma żadnego **prawdziwego** języka skompilowanego, który zdobył drugie miejsce. Czy uważasz, że języki _natywnie_ kompilowane do wykonywalnego kodu binarnego to już przeszłość, przejęta przez języki interpretowane, które są znacznie bardziej przenośne i kompatybilne? Czy C++ oznacza koniec ery? Dlaczego nie widzimy już żadnych nowych języków skompilowanych? * * * **Myślę, że powinienem wyjaśnić:** Nie chcę, aby przerodziło się to w dyskusję „który język jest lepszy”, ponieważ nie o to chodzi. Języki, które podałem jako przykład, są tylko przykładami. Proszę skup się na pytaniu, które postawiłem, a jeśli nie zgadzasz się z moim stwierdzeniem, że języki kompilowane są obecnie rzadsze, to całkowicie w porządku, jestem bardziej niż szczęśliwy, że się mylę.


title: Czy oprogramowanie jest lepiej projektowane i rozwijane przez ludzi, którzy będą z niego korzystać?

text: Widzę wiele aplikacji napisanych przez programistów, którzy oczywiście nie używają programu jak klienci końcowi w środowisku produkcyjnym. Skutkuje to funkcjami, które tak naprawdę nie mają sensu w praktyce, gorszymi sposobami wykonywania rzeczy, niedopracowaną funkcjonalnością, złym przepływem pracy, wieloma narzędziami robiącymi podobne rzeczy itp. Ale z drugiej strony w rzadkich przypadkach widzisz ten sam koniec klienci tworzący podobne aplikacje w celu przezwyciężenia tych niedociągnięć i mogą nie być tak wyrafinowane pod względem kodu, jak te napisane przez programistów, ale działają znacznie lepiej i czują się tak, jakby zostały napisane przez kogoś, kto korzysta z programu profesjonalnie, podobnie jak klienci końcowi . Czy zatem oprogramowanie jest lepiej projektowane i rozwijane przez ludzi, którzy będą go używać, ludzi, którzy mają wewnętrzną wiedzę na temat domeny, w której program będzie służył?


title: Jakie zalety ma TFS nad Tortoise SVN w tym scenariuszu?

text: Nie jest to ani inwokacja Świętej Wojny, ani http://stackoverflow.com/questions/661389/tfs-vs-svn \- To pytanie jest znacznie bardziej szczegółowe i potencjalnie uszczęśliwiłoby zespół programistów: użyłem wcześniejszego wersja TFS od dwóch lat ale nie używałem jej od lat. Jakie ma zalety nad Tortoise SVN? Na przykład, czy scalanie działa niewłaściwie, czy też wiąże się z dużą ilością pracy ręcznej; i czy regał faktycznie działa (nie mogliśmy go uruchomić)? Platforma to Windows (czy TFS działa na czymkolwiek innym), a jej przeznaczeniem jest kontrola wersji za pomocą Visual Studio 2008/2010 z zakresem Continuous Integration na serwerach kompilacji x86 lub 64bit (w zależności od produktu). Zawsze istniałby jeden strumień rozwojowy na produkt. Projekty trwały zwykle krócej niż dwa tygodnie (duże prace byłyby dzielone na dyskretne części tej wielkości). Maksymalna wielkość zespołu do jednoczesnej pracy nad produktem to mniej niż sześciu programistów. Zaewidencjonowanie gałęzi będzie miało miejsce w dowolnym momencie (jedyną zasadą jest, że buduje). Scalanie z powrotem do pnia (głowy) następuje po zakończeniu projektu. Uruchomienie wersji próbnej TFS może być kosztowne dla firmy. Dlatego zadałem pytanie tutaj. Chcę usłyszeć odpowiedzi od tych, którzy już wiedzą (a także od tych, którzy przewidują pułapki). Nie ma sensu wymyślać koła na nowo. Nie ma sensu ponosić niepotrzebnych kosztów badań. Powtórzę: moim głównym zmartwieniem jest połączenie. Wiem, że SVN Tortoise działa (ma kilka dziwactw związanych z plikami ASP.Net .csproj, ale mogę z tym żyć), ale TFS ma mieć wiele funkcji. Chcę jak najlepszą ofertę dla twórców.


title: 0x9e3779b9 złoty numer

text: próbuję zrozumieć stałą 0x9e3779b9, co to za dane? to nie jest binarne, nie dziesiętne, co to jest? jest to stała używana w algorytmie TEA, który mówi, że pochodzi od złotej liczby, ale złota liczba to 1,618?


title: Najlepsze praktyki dotyczące zapisywania danych w różnych bazach danych za pomocą C# ADO.NET

text: Chciałbym wiedzieć, czy macie jakieś najlepsze praktyki dotyczące transakcji pomiędzy różnymi dostawcami baz danych. Na przykład, jeśli masz aplikację C#, która zapisuje dane klientów w dwóch bazach danych (jednej Oracle i drugiej Microsoft), co byś zrobił? Czy użyłbyś OleDbTransaction? Czy to możliwe?


title: Jak dokładnie powstaje drzewo składni abstrakcyjnej?

text: Myślę, że rozumiem cel AST i wcześniej zbudowałem kilka struktur drzewa, ale nigdy AST. Jestem w większości zdezorientowany, ponieważ węzły są tekstem, a nie liczbą, więc nie mogę wymyślić fajnego sposobu na wprowadzenie tokenu / ciągu, gdy analizuję jakiś kod. Na przykład, kiedy spojrzałem na diagramy AST, zmienna i jej wartość były węzłami liści do znaku równości. To ma dla mnie sens, ale jak mam to wprowadzić w życie? Myślę, że mogę to zrobić dla każdego przypadku, więc kiedy natknę się na „=", używam go jako węzła i dodaję wartość przeanalizowaną przed „=" jako liść. To po prostu wydaje się niewłaściwe, ponieważ prawdopodobnie musiałbym tworzyć przypadki dla ton i ton rzeczy, w zależności od składni. A potem natknąłem się na inny problem, jak przechodzi się przez drzewo? Czy schodzę na samą wysokość i cofam się do węzła, kiedy dotrę do dołu, i robię to samo z sąsiadem? Widziałem mnóstwo diagramów na AST, ale nie mogłem znaleźć dość prostego przykładu w kodzie, który prawdopodobnie pomógłby.


title: Jaka jest główna różnica między relacjami HAS_MANY i BELONGS TO w mysql?

text: Po poczynieniu niewielkich postępów w tworzeniu stron internetowych i php stwierdziłem, czy mogę wzmocnić swoją kontrolę nad projektowaniem baz danych, będę w stanie zredukować dużo kodu i czasu w tworzeniu aplikacji. Ale zdarza mi się być głupcem w projektowaniu baz danych, więc czy ktoś może pomóc w rozróżnieniu między ma wiele i należy do relacji. Wydają mi się całkiem takie same


title: Od wielu lat programuję w jednym języku. Czy to samobójstwo kariery?

text: Od wielu lat programuję w tym samym języku programowania zorientowanego obiektowo (w systemie Windows). Problem w tym, że ten konkretny język nie jest zbyt popularny i nie jest jednym z najgorętszych w ogłoszeniach o pracę i tym podobnych. Powinienem być zaniepokojony? Czy pracodawca Java zrozumiałby, że jestem programistą i w ciągu tygodnia lub dwóch mogę nauczyć się dowolnego języka, czy też miałby wrażenie, że skoro nie programowałem zawodowo w jego konkretnym języku, to po prostu nie masz kwalifikacji? PS. Jeśli chodzi o naukę, to bawię się w domu różnymi technologiami. Ale w pracy utknąłem w tym samym języku.


title: Jaki jest termin na naprawdę DUŻE zatwierdzenie kodu źródłowego?

text: Czasami, gdy sprawdzamy historię zmian oprogramowania, możemy zauważyć, że istnieje kilka zatwierdzeń, które są naprawdę DUŻE - mogą zmienić 10 lub 20 plików z setkami zmienionych linii kodu źródłowego (delta). Pamiętam, że jest powszechnie używany termin na określenie takiego DUŻEGO zatwierdzenia, ale nie pamiętam dokładnie, co to za określenie. Czy ktoś może mi pomóc? Jaki jest termin, którego programiści zwykle używają w odniesieniu do tak DUŻYCH i gigantycznych zobowiązań? BTW, czy wprowadzanie wielu zmian razem jest dobrą praktyką? AKTUALIZACJA: dziękuję wam za inspirującą dyskusję! Ale myślę, że "bomba kodowa" to termin, którego szukam.


title: Dlaczego umieszczanie czegoś na stosie nazywa się „push”?

text: Według http://dictionary.reference.com > push > > czasownik (używany z dopełnieniem) > > 1. naciskać na lub przeciw (rzecz) z siłą, aby ją odsunąć. > > 2. poruszyć (coś) w określony sposób przy użyciu siły; pchnięcie; napęd: > _odsunąć coś na bok; pchnąć drzwi otwarte_. > > 3. wywoływać lub osiągać przez odpychanie przeszkód na bok: _przepychać się > przez tłum._ > > 4. powodować rozszerzanie się lub rzutowanie; pchnięcie. > > 5. naciskać lub nakłaniać do jakiejś akcji lub kursu: _Jego matka popchnęła go do > znalezienia pracy._ > > Ten IMO pasuje do kolejek FIFO. Czy jest na to wytłumaczenie?


title: Serwer czatu/gry to najlepszy sposób na wdrożenie, czy WCF jest właściwą drogą?

text: Tworzę grę na wp7 i będzie to gra online rozgrywana pomiędzy maksymalnie 4 graczami. Gra będzie grą turową. Moje pytanie brzmi naprawdę, jaki jest najlepszy sposób na zrobienie tego serwera mądrze? czy WCF jest drogą do zrobienia? Poniżej znajdują się informacje przesyłane do iz serwera od każdego gracza. * Wiadomość na czacie gracza * Wiadomość na czacie od innych graczy. * Punkty graczy z gry. * Zdjęcie wysyłane do każdego gracza na początku gry


title: strony internetowe, które pokazują rzeczywiste scenariusze dla początkujących OOP, aby mogli je wdrożyć

text: Ponieważ programiści uczą się więcej, wdrażając scenariusze ze świata rzeczywistego, a nie zdobywając teoretyczną wiedzę i koncepcje dotyczące programowania, chciałem wiedzieć, czy istnieje jakaś strona internetowa, która opowiada o scenariuszach ze świata rzeczywistego dla osób uczących się OOP, aby mogli ćwiczyć swoje umiejętności projektowania i wdrażać je scenariusze przy użyciu C#? Na przykład co może im pomóc w podejmowaniu decyzji projektowych dotyczących problemu, np. w którym scenariuszu należy użyć klas abstrakcyjnych, interfejsów, nadpisań wirtualnych itp.


title: doskonalenie umiejętności komunikacji w komunikatorach

text: Jestem osobą e-mailową, ale odkryłem, że w mojej nowej pracy współpracownicy bardzo często używają komunikatorów. Muszę przyznać, że w dużej mierze ignorowałem IM/SMS jako sposób komunikacji, myśląc, że jest on przeznaczony tylko dla nastolatków… Styl komunikacji IM różni się od e-maili. Zdania są krótsze i jest mniej czasu na odpowiedź. Kiedy więc rozmawiam z kimś, częściej niż nie, czuję, że opóźniam się z odpowiedzią, a potem po prostu odbieram telefon – a rozmowa zwykle trwa kilka minut… co wyraźnie przekreśla ideę „natychmiastowej” komunikacji. Czy są jakieś zalecenia, których mogę przestrzegać, aby poprawić swoje umiejętności komunikacji za pomocą komunikatorów internetowych?


title: Ile danych powinny przechowywać wyjątki?

text: Prawie wszystkie wyjątki, jakie kiedykolwiek napisałem, były bardzo lekkie, zawierały komunikat typu String i opcjonalnie można je rzucać. W niektórych sytuacjach dodałem wyliczenie specyficzne dla aplikacji lub inne pole. public class MySpecialException() { private MyErrorCode errorCode; public MySpecialException(String message, Throwable Cause, MyErrorCode errorCode) { super(komunikat, przyczyna); this.errorCode = errorCode; } .... } Teraz mam do czynienia z sytuacją, w której muszę umieścić 5 lub 6 pól w wyjątku, ponieważ program obsługi błędów, który je przechwytuje, potrzebuje ich do wygenerowania danych wyjściowych. Czy uważasz to za zły kod? Czy wyjątek może być zbyt duży? public class MySpecialException() { private String name; prywatny wiek; prywatny identyfikator int; prywatna wysokość int; prywatny String kaczka; prywatne Ciąg cokolwiek; .... }


title: Co Ty jako programiści myślisz o rynku aplikacji na komputery PC?

text: Chciałem tylko uzyskać uczciwe opinie od deweloperów na temat perspektywy marketplace/sklepu z aplikacjami na PC? Zbudowałbyś do tego aplikacje? Przykładami są silverlightmarket.com, allmyapps.com itp. itd. Pozdrawiam, popiół.


title: Kiedy wynaleziono kontrolę źródła?

text: Jestem świadomy wielu systemów kontroli wersji: CVS, SVN, TFS itp. Szukałem w Google pierwszego "systemu kontroli wersji/kontroli wersji" i widziałem różne sprzeczne odpowiedzi. Kiedy wynaleziono kontrolę źródła? Kto to wymyślił? Jak to się nazywało?


title: Dlaczego EL ma tak słabą widoczność?

text: Korzystanie z EL w JSP jest właściwym sposobem na kodowanie logiki zgodnie z samouczkami i przykładami Sun, które również odradzają korzystanie ze skryptletów Java. Jeszcze wyszukiwanie ofert pracy dla EL | "język wyrażeń" w obszarze zatoki SF na Craigslist daje 0 trafień (w porównaniu do 144 dla jsp, 8 dla jstl i 678 dla javy. to jest wyszukiwanie tekstu reklamy, a nie tytułów), więc nie wydaje się to być umiejętnością interesującą. Również 0 trafień na programistów na ten temat i musiałem stworzyć nowy tag ;-) Co jest dobrego lub złego w EL i dlaczego tak niskie zainteresowanie? Jako technologia Java oczekiwałbyś znacznie więcej.


title: COBOL i komputer mainframe i biznes

text: Poszukałem informacji na stronie internetowej poświęconej poszukiwaniu pracy w Hongkongu. Istnieje wiele stanowisk pod tytułem "Analityk komputerowy". Oto wymagania stanowiska: Ponad 3 letnie doświadczenie w pracy w środowisku IBM Mainframe. Dyplom ukończenia studiów wyższych w zakresie informatyki. Biegły w analizie systemowej, projektowaniu i kodowaniu systemów bankowych. Znajomość aplikacji z zakresu bankowości podstawowej i aplikacji kartowych jest zdecydowanie zaletą. Dźwięk w korzystaniu z IBM CICS/COBOL i VSAM zarówno dla systemów aplikacji online, jak i wsadowych. Dobre umiejętności komunikacyjne z użytkownikami wewnętrznymi. Wiele zawodów jest podobnych: Wymagają od kandydatów następujących cech: * Przedmioty komputerowe, zwłaszcza informatyka * 3 lata powyżej doświadczenia * IBM Mainframe COBOL * Biegłość Następnie pojawia się moje pytanie: 1. To utrudnia nowym programistom wejść do branży. Jak ktoś powinien wejść do branży, czyli przygotować się na tego typu stanowisko? 2. Czy nadal chcą nowych programistów w tej dziedzinie? 3. Jak należy nauczyć się obsługiwać IBM Mainframe (lub jakikolwiek rodzaj Mainframe)? 4. Czy wiedza z zakresu finansów jest wymagana czy kluczowa?


title: Czy powinniśmy zostawić nasze dane kontaktowe w kodzie źródłowym?

text: Zwykle zostawiam swój adres e-mail z uprzejmości na wypadek, gdyby ktoś chciał później zadać mi pytanie. Czy inni ludzie zostawiają więcej czy mniej informacji? Czy ktoś zostawia numer telefonu??


title: Funkcjonalne programowanie reaktywne — czy Fay jest wystarczająco wyrazisty?

text: > Więc robię dość zaangażowanego klienta javascript/html z mnóstwem wywołań ajaxowych > i innych zaangażowań wywołań zwrotnych. Zastanawiam się nad > wykorzystaniem Fay do tego celu. Znam Wiąz. Wypróbowałem i polubiłem FRP > elementy. Teraz chcę wiedzieć, czy podobna struktura jest możliwa w Fay. >> Czy w tym momencie są jakieś konkretne przykłady FRP w Fay? To pytanie zostało przeniesione z SO z powodu niezgodności z zamierzonym formatem. Ponieważ dostał tam kilka głosów, pomyślałem, że mogę go przenieść. Na razie nie będę robił FRP z moim obecnym kodem, ale jestem zainteresowany w przyszłości. Kilka istotnych technologii: * Arrowlets, strzałkowaty FRP w javascript * FlapJax, kolejna alternatywa dla javascriptu * Bacon.js, FRP w javascript Jedno z możliwych rozwiązań, wykorzystujące Bacon. Z demo.


title: Czy możesz twierdzić, że Twój produkt jest odpowiedni do celu, gdy używa oprogramowania OSS, które tego nie gwarantuje?

text: Pracuję nad produktem dla klienta, który musi być aktualny i odpowiedni do celu. Jest zbudowany na stosie LAMP (PHP/Cake), więc dostępne są licencje GPL, MIT, PHP, APACHE: > NA PODSTAWIE „TAK JAK JEST”, BEZ JAKICHKOLWIEK GWARANCJI CZY WARUNKÓW, wyraźnych > lub dorozumianych, w tym, bez ograniczeń, gwarancje lub warunki > TYTUŁ, NIENARUSZALNOŚCI, WARTOŚCI HANDLOWEJ lub ** PRZYDATNOŚCI DO OKREŚLONEGO > CELU**. Ponosisz wyłączną odpowiedzialność za określenie stosowności > używania lub redystrybucji Dzieła i podejmujesz wszelkie ryzyko związane z > korzystaniem z uprawnień wynikających z niniejszej Licencji. Moje uzasadnienie, że mój produkt jest ważny i nadaje się do celów: * Podpisany dokument UAT potwierdza ważność i przydatność do określonego celu. * Stos jest tak szeroko stosowany przez programistów, przemysł i użytkowników końcowych (statystyki netcrafta, gartnera itp.), że istnieje konsensus, że jest odpowiedni do celu. (tj. możemy w pewnym stopniu zignorować deklarację przydatności do celu w zrzeczeniu się gwarancji) Czy jest to ważny punkt? Czy mogę twierdzić, że moje oprogramowanie jest odpowiednie do celu?


title: Dlaczego liczba kierunków CS spada?

text: Chociaż czytałem na różnych stronach internetowych do 2007-2008, że kierunki CS podupadają, nie rozumiem dlaczego - nie wszedłem jeszcze na rynek pracy. Bruce Webster ma doskonały wykres na ten temat: http://brucefwebster.com/2008/03/05/the-decline-in-computer-science-students/ Jakie są czynniki, które prowadzą do tego spadku? Czy nadal brakuje absolwentów? Czy więcej osób po prostu całkowicie pomija wyższe wykształcenie, aby dostać się do branży? Czy główne "Projektowanie oprogramowania" wychodzi teraz? Tak dużo pytań.


title: Czy czysto funkcjonalne rozwiązanie tego problemu może być tak czyste jak imperatyw?

text: Mam takie ćwiczenie w Pythonie: * wielomian jest podany jako krotka takich współczynników, że potęgi są określone przez indeksy, np.: (9,7,5) oznacza 9 + 7*x + 5*x^2 * napisz funkcję, która obliczy jej wartość dla danego x Ponieważ ostatnio zajmuję się programowaniem funkcjonalnym, napisałem def assessment1(poly,x): coeff = 0 power = 1 return zmniejszyć(lambda accu,pair : accu + pair[coeff] * x**pair[power], map(lambda x,y:(x,y), poly, range(len(poly))), 0), które uważam za nieczytelne, więc napisałem def assessment2(poly, x): potęga = 0 wynik = 1 zwróć zredukuj(lambda dok,wsp : (aku[moc]+1, accu[wynik] + coeff * x**aku[moc]), poli, (0,0) )[wynik] co jest co najmniej tak samo nieczytelny, więc napisałem def assessment3(poly, x): return poly[0]+x*evaluate(poly[1:],x) if len(poly)>0 else 0 co może być mniej efektywne ent (edycja: myliłem się!) skoro używa wielu mnożeń zamiast potęgowania, w zasadzie nie obchodzą mnie tu pomiary (edycja: Jak głupi z mojej strony! Pomiar wskazałby na moje nieporozumienie!) i nadal nie jest tak czytelny (prawdopodobnie) jak rozwiązanie iteracyjne: def assessment4(poly, x): wynik = 0 dla i in range(0,len(poly)): wynik += poli [i] * x**i zwróć wynik Czy istnieje rozwiązanie czysto funkcjonalne tak czytelne jak imperatyw i bliskie mu pod względem wydajności? Wprawdzie zmiana reprezentacji pomogłaby, ale to dało ćwiczenie. Może być także Haskellem lub Lispem, nie tylko Pythonem.


title: Przypadek użycia eCommerce: usuwanie produktu

text: Rozpoczynam projektowanie schematu bazy danych dla elementu eCommerce tworzonej przeze mnie usługi internetowej. Chodzi mi o to, jak radzić sobie z przypadkiem użycia sprzedawcy (użytkownika mojej usługi sieciowej) usuwającego produkt. Problem, jaki mam, polega na tym, że ten produkt może znajdować się w koszyku klientów, jako płatne zamówienia, zamówienia oczekujące, dostawy, zamówienia przeszłe itp. Jest to z pewnością problem, z którym spotkał się każdy, kto opracowuje taki system. Zastanawiam się tylko, czy istnieje najlepszy sposób na rozwiązanie tego problemu? Czy można to rozwiązać na poziomie schematu bazy danych? A może po prostu wymaga pewnych kontroli walidacyjnych danych z bazy danych przed zezwoleniem na usunięcie produktu lub zatrzymania błędu, jeśli klient próbuje zapłacić za zamówienie, które miało odniesienie do produktu, ale to odniesienie zostało usunięte (tj. produkt został usunięty).


title: Nazywanie metod, które robią to samo, ale zwracają różne typy

text: Załóżmy, że rozszerzam klasę graficznego wyboru plików (`JFileChooser`). Ta klasa posiada metody, które wyświetlają okno dialogowe wyboru pliku i zwracają sygnaturę stanu w postaci `int`: `APPROVE_OPTION` jeśli użytkownik wybierze plik i kliknie _Open_ / _Save_ , `CANCEL_OPTION` jeśli użytkownik kliknie _Cancel_ , oraz ` ERROR_OPTION` jeśli coś pójdzie nie tak. Te metody nazywają się `showDialog()`. Uważam to za kłopotliwe, więc postanawiam stworzyć inną metodę, która zwraca obiekt `File`: w przypadku `APPROVE_OPTION` zwraca plik wybrany przez użytkownika; w przeciwnym razie zwraca `null`. W tym miejscu natrafiam na problem: czy byłoby w porządku, gdybym zachował nazwę `showDialog()`, mimo że metody o tej nazwie — **i innym typie zwracanym** — już istnieją? Na domiar złego moja metoda przyjmuje dodatkowy parametr: `Plik`, który wskazuje, w którym katalogu powinien się uruchomić selektor plików. Moje pytanie do Ciebie: Czy można wywoływać metodę o tej samej nazwie co metoda nadklasowa, jeśli zwracają one różne typy? A może byłoby to mylące dla użytkowników interfejsu API? (Jeśli tak, jakiej innej nazwy mógłbym użyć?) Alternatywnie, czy powinienem zachować nazwę i zmienić typ zwracany, aby był zgodny z innymi metodami? public int showDialog(rodzic komponentu, string acceptButtonText) // metoda nadklasy public File showDialog(rodzic komponentu, lokalizacja pliku) // moja metoda


title: programowanie generyczne, jak często jest stosowane w przemyśle

text: Obecnie zajmuję się programowaniem w środowisku akademickim, więc mogę używać tego, czego chcę. Korzystam z biblioteki wykresów doładowania do kilku rzeczy i zastanawiam się, czy warto inwestować wysiłek w głębsze zrozumienie GP. Jestem ciekaw - czy programowanie generyczne (GP) jest często używane w przemyśle? Domyślam się, że większość programistów jest znacznie bardziej komfortowa z OOP lub używa języków, które nie podkreślają ani nie wspierają GP, więc poza wywoływaniem struktur/funkcji danych STL w C++ mam wrażenie, że GP nie jest używany zbyt często w praktyce. Ale będąc w tej chwili poza przemysłem, miło byłoby usłyszeć na ten temat od praktyków. (kiedy to piszę, widzę, że programowanie generyczne nie jest nawet prawidłowym tagiem!)


title: najlepsze praktyki testowania aplikacji backbone.js za pomocą jaśminu?

text: Niedawno zacząłem używać jaśminu do testowania jednostkowego javascript. kocham to do tej pory. jednym z projektów, nad którymi pracuję, jest wtyczka do backbone.js. Ponieważ backbone jest frameworkiem w stylu mvc dla javascript, wiele z tego, co robi, to manipulacja widokami - zwykle za pomocą jquery. moja wtyczka nie jest wyjątkiem. Mam kilka rzeczy, które są manipulowane w elementach html, poprzez widoki szkieletowe. w tej chwili robię coś, co może być okropne, aby to było warte z jaśminem. oto przykład tego, jak układam moje testy: description("conventionBindings", function(){ beforeEach(function(){ this.model = new AModel({name: "Some Name"}); this.view = new AView({model: this.model}); this.view.render(); });afterEach(function(){ this.view.close(); });opisuj("...to co robi ... ", function(){ it("... rzeczy .... ", function(){ }); }); }); Ważnymi bitami są tutaj beforeEach i afterEach. Zauważ, że wywołuję metodę renderowania mojego widoku, a następnie metodę zamykania mojego widoku. oto, co robią te metody: AView = Backbone.View.extend({ render: function(){ this.html = $(""); $("body").append(this.html); }, close: function (){ this.html.remove(); } }); specjalnie dodaję tę metodę "zamknięcia" do mojego widoku dla testów, ponieważ jeśli tego nie zrobię, to strona jaśminowa, którą przeglądam po uruchomieniu serwera testowego jaśminu, pokaże dane wejściowe, do których dodałem treść strony. więc... oto moje pytania: czy to jest okropne? czy powinienem testować moje widoki i manipulacje elementami HTML w inny sposób niż dołączanie elementów do treści strony? w tej chwili nie muszę przeprowadzać tych testów na jakimkolwiek serwerze CI, ale jeśli to zrobię, jakie problemy napotkam? jak mogę napisać lepsze testy jaśminowe, aby móc przetestować swoją wtyczkę backbone na serwerze CI, wiedząc, że wtyczka musi manipulować elementami html podczas testu?


title: OpenID i szpiegostwo danych

text: Ta odpowiedź[link] do innego pytania tutaj mówi o OpenID i szpiegowaniu danych. Cytuję: > [Szpiegostwo danych] Po co pozwalać im zbierać szczegółowe statystyki z wielu > witryn konsumenckich i pomagać im w budowaniu osobistych profili ludzi? Kto wie > co z tym zrobią? Sprzedać go, wykorzystać do dostosowania swoich taktyk marketingowych, > przesłać go do CIA? To było również moje zmartwienie. Jeśli korzystasz z Yahoo, Yahoo ma teraz listę wszystkich witryn, do których wszedłeś (i podpisałeś się swoim OpenID). Zastanawiam się, czy ten problem został dokładniej rozwiązany. Myślę, że jesteśmy tutaj najlepszymi ludźmi do przeprowadzenia tej dyskusji, ponieważ jesteśmy bezstronnymi programistami, którzy nie otrzymują zapłaty od OpenID ani żadnego dostawcy (Yahoo, Google itp.). Co o tym myślisz?


title: Problemy z wycinaniem czasu

text: Próbowałem zobaczyć efekt dzielenia czasu i jak może to pochłaniać znaczną ilość czasu. Właściwie starałem się podzielić pewne zadanie na kilka wątków i zobaczyć efekt. Mam procesor dwurdzeniowy. Tak więc dwa wątki mogą działać równolegle. Próbowałem sprawdzić, czy mam zadanie `w`, które jest wykonywane przez 2 wątki, i czy mam to samo zadanie wykonywane przez wątki `t` z każdym wątkiem wykonującym `w/t` zadania. Jaką rolę odgrywa w tym cięcie czasu. Ponieważ cięcie czasu jest procesem czasochłonnym, spodziewałem się, że gdy wykonuję to samo zadanie przy użyciu procesu dwuwątkowego lub procesu wątkowego `t`, ilość czasu zajęta przez proces wątkowy `t` będzie większa. Jakieś sugestie?


title: Czy kaskada wymaga ukończenia kodu przed rozpoczęciem kontroli jakości?

text: Proces stosowany w danej firmie polega na: > 1. Stworzeniu layoutu według kilku projektów wykonanych w projekcie strony internetowej > narzędziu. (CSS, html) > 2. Wymagania przychodzą z "wymaganiami funkcjonalnymi". Składają się one z > 100 linii kierunków biznesowych. NP. Utwórz tabelę na stronie X. > Kolumna 1 zawiera dane liczbowe. Kolumna1 to kod klienta. Kolumna2 to ciąg >...itd. > > 3. Napisz kod spełniający wszystkie wymagania funkcjonalne. > > 4. Kiedy cały kod zostanie zaewidencjonowany, wyślij go do QA (czyli BA, który napisał wymagania) w celu sprawdzenia, znalezienia błędów i prośby o zmianę. > 5. Odeślij z powrotem do programisty z listą błędów X i prośby o zmianę Y. > 6. Podczas znajdowania błędów lub żądań zmian > 0 przejdź do kroku 4. > Zwinne środowiska programistyczne, w których pracowałem, umożliwiają, jeśli nie żądanie, wczesną kontrolę jakości i wczesną akceptację użytkowników. Tak więc fragmenty programu mogą być dopracowywane i redefiniowane, zanim cała aplikacja będzie gotowa. Nie tylko to, ale proces ten pozostawia niewiele miejsca na błędy lub ludzi zmieniających zdanie. Zamiast tego te „prośby o zmianę” pojawiają się na ostatnim etapie, kiedy wyrządzają największe szkody. A ponieważ koszt naprawy błędu rośnie z czasem, jest to kosztowny sposób pisania kodu. Nie jestem ekspertem od wodospadów. Jak opisano, czy ten wodospad jest w jakiś sposób niewłaściwie obsługiwany? Jak wodospad rozwiązuje moje obawy?


title: Tworzenie nowoczesnych aplikacji internetowych! Czy Flash i Silverlight są nadal aktualne?

text: Tworząc aplikację, bierze się pod uwagę odpowiednią technologię wyboru, aby uzyskać najlepszy długoterminowy wpływ i skalowalność. Jeśli budujesz aplikację do strumieniowego przesyłania multimediów na urządzenia mobilne i komputery stacjonarne, czy nadal należy używać flasha lub silverlight, czy html5 i javascript? Jak wybrać odpowiednią technologię?


title: Czy jest to zły projekt, aby określić domyślne powiązania podczas korzystania z kontenerów Inversion of Control (IOC) i iniekcji zależności (DI)?

text: Używam Ninject, ale to nie jest pytanie specyficzne dla Ninject. Zastanawiam się, czy zaawansowane i elastyczne możliwości kontenera IoC dają mi wystarczająco dużo liny, by powiesić się przy złym projekcie aplikacji. Wcześniej uzyskałem interfejs usługi: interfejs publiczny IBuilderService { IBuilder Create(string kategoria, string clientID); } i opieram się na `ToFactory()` Ninject Factory Extension, aby stworzyć coś, co można nazwać implementacją proxy w czasie wykonywania. Mam powiązania `IBuilder` w następujący sposób: kernel.Bind<IBuilder>().To<NullObjectBuilder>(); // dla kategorii niepowiązanych kernel.Bind<IBuilder>().To<CatOneBuilder>(); kernel.Bind<IBuilder>().To<CatTwoBuilder>(); kernel.Bind<IBuilder>().To<CatThreeBuilder>(); kernel.Bind<IBuilder>().To<CatOneBuilder_ClientA>(); kernel.Bind<IBuilder>().To<CatOneBuilder_DefaultClient>(); // dla klientów niezwiązanych // itd... Eksperymentowałem z niestandardowymi dostawcami instancji i generatorami powiązań z Ninject (zgaduję, że inne kontenery IoC mogą mieć podobne konstrukcje do nadpisywania podstawowego zachowania wiązania), ale mam **dwa odrębne cele scenariusza wiązania** : 1. jeśli **kategoria** wiązania nie może zostać rozwiązana z argumentu `category` `IBuilderService.Create`, należy rozstrzygnąć `NullObjectBuilder` — w tym przypadku jest to wiązanie _default_ . 2. jeśli **clientID** wiązania nie może zostać rozwiązane, wówczas domyślna implementacja klienta, taka jak `CatOneBuilder_DefaultClient` dla `kategorii` `CatOne`, powinna zostać rozwiązana - w tym przypadku jest to wiązanie _default_. Jest to sytuacja, w której **są oczekiwane** zapytania o nieznaną kategorię, więc wstyd jest używać drogiej obsługi wyjątków w przypadku czegoś, o czym wiem, że będzie się bardzo często zdarzać. Chcę, aby istniało zachowanie awaryjne, aby " _obsługiwać nieobsługiwane_" w bardzo prosty sposób - w tym przypadku byłby to `NullObjectBulder` dla nieznanych kategorii i `*_DefaultClient` dla _nieznanych klientów_ _znanych kategorii_ \- dwie różne rezerwy zachowania dla dwóch różnych _typów_ nieznanego zachowania. Mam problem z utrzymaniem tych dwóch zachowań zastępczych zmapowanych do ich odpowiednich scenariuszy, ale mam chwilę, aby pomyśleć o tarciu, które odczuwam podczas opracowywania tego projektu… Czy to wadliwy projekt, aby mieć _domyślne_ powiązania i logikę używaną do określić, kiedy jest potrzebny, zawarty w niestandardowych implementacjach IoC, a nie zgłaszany wyjątek? Czy to niewłaściwe użycie kontenerów IoC?


title: Jak powinienem włączyć poprawkę z powrotem do gałęzi funkcji za pomocą gitflow?

text: Zacząłem używać gitflow w projekcie i mam wyjątkową gałąź funkcji, a także nowo utworzoną poprawkę. Zgodnie z przepływem pracy gitflow, poprawka jest stosowana do gałęzi _master_ i _develop_, ale nic nie mówi się ani nie robi w przypadku istniejących gałęzi funkcji. Niemniej jednak chciałbym wprowadzić zmiany hotfix z powrotem do mojej gałęzi funkcji, która, o ile wiem, pozostawia trzy opcje: 1. Nie wprowadzaj zmian. Jeśli zmiany były potrzebne w gałęzi funkcji, powinna ona być częścią gałęzi funkcji. 2. Scal _develop_ z powrotem do gałęzi funkcji. Wydaje się, że najlepiej jest to zgodne z przepływem pracy gitflow, ale spowodowałoby nieprawidłowe zatwierdzenia. 3. Zmień bazę gałęzi funkcji na _develop_. Zachowałoby to kolejność zatwierdzania, ale zmiana bazy wydaje się być całkowicie nieobecna w ogólnym przepływie pracy gitflow. Jaka jest najlepsza praktyka tutaj?


title: Pojedyncza baza kodu dla klienta i serwera z Node.js

text: Istnieje kilka rzekomych korzyści związanych z Node.js, które zazwyczaj słyszę. Z niektórymi (wieloma?) się zgadzam. Jest jeden, którego kompletnie nie rozumiem, a jest to argument dotyczący jednego języka: „Możesz teraz używać jednego języka zarówno po stronie klienta, jak i po stronie serwera”. Nie ma to dla mnie sensu na wielu poziomach: 1. większość ludzi zna już więcej niż jeden język, a nauka drugiego i tak nie jest aż tak wielka. 2. JavaScript nie jest tak wspaniałym językiem; gdyby ludzie mieli jakiś wybór, prawdopodobnie wybraliby coś innego po stronie klienta, ale są zamknięci. 3. Piękno strony serwera polega na tym, że możesz wybrać DOWOLNY język (więc sensowne jest wybranie najlepszego, najbardziej zdolnego język, przy jak najmniejszym bagażu). Jedyny rozsądny argument, jaki słyszałem, to „jeśli używam kręgosłupa, mogę ponownie użyć moich modeli”. Ponieważ sam nie korzystałem z kręgosłupa, nie jestem pewien, ile to faktycznie wynosi. Czy ktoś może rzucić trochę światła?


title: Czytelność programowania funkcjonalnego

text: Ciekawi mnie to, bo pamiętam, zanim nauczyłem się języków funkcjonalnych, wszystkie uważałem za strasznie, strasznie, strasznie nieczytelne. Teraz, gdy znam Haskella i f#, uważam, że czytanie mniejszej ilości kodu zajmuje trochę więcej czasu, ale ten mały kod robi znacznie więcej niż równoważna ilość w języku imperatywnym, więc wydaje mi się, że jest to zysk netto i nie jestem bardzo praktykowane w funkcjonalnym. Oto moje pytanie, ciągle słyszę od ludzi OOP, że funkcjonalny styl jest strasznie nieczytelny. Ciekawe, czy tak jest i łudzę się, czy gdyby poświęcili czas na naukę języka funkcjonalnego, cały styl nie byłby już bardziej nieczytelny niż OOP? Czy ktoś widział jakieś dowody lub miał jakieś anegdoty, w których widział, jak to idzie w ten czy inny sposób z wystarczającą częstotliwością, aby móc powiedzieć? Jeśli pisanie funkcjonalnie naprawdę jest mniej czytelne, to nie chcę tego dalej używać, ale naprawdę nie wiem, czy tak jest, czy nie..


title: Jak zarządzać biblioteką JavaScript za pomocą TFS?

text: Wiem, że mogę udostępniać pliki między projektami Visual Studio za pomocą połączonych plików i zestawów za pomocą odwołań do projektów. Czy istnieje dobre podejście do JavaScripts? Wolałbym nie używać plików połączonych, ponieważ nie pozwala to projektom na posiadanie własnej wersji skryptu.


title: Jakie to ma znaczenie, czy znak jest 8-bitowy, 16-bitowy czy 32-bitowy?

text: Cóż, czytam Programowanie Windows za pomocą MFC i natknąłem się na znaki kodu Unicode i ASCII. Zrozumiałem sens używania Unicode zamiast ASCII, ale nie rozumiem, jak i dlaczego ważne jest używanie znaków 8bit/16bit/32bit? Co dobrego robi z systemem? W jaki sposób przetwarzanie systemu operacyjnego różni się dla różnych bitów charakteru. Moje pytanie brzmi: co to znaczy dla znaku, gdy jest to znak x-bitowy?


title: Anemiczne modele domen — jakich metod może potrzebować obiekt domeny?

text: To pytanie może wydawać się dziwne, ale czasami się z nim spotykam. Próbowałem zaadoptować DDD, jednak zawsze mam do czynienia z problemem modeli domen anemicznych. Problem polega na tym, że kiedy zaczynam myśleć o tym, jakie powinny być zachowania obiektów domeny, nic nie przychodzi mi do głowy. Zacząłem wtedy szukać w Internecie, co należy umieścić w zachowaniu obiektów domeny i wiele osób twierdzi, że są to reguły i walidacje. Problem polega na tym, że wielokrotnie spotkałem się z sytuacją, w której klient, który chce system, nie chce żadnej walidacji. Kiedyś zapytałem klienta: "jakie są wymagane właściwości tego obiektu?" a on powiedział "nie, nie chcę czegoś takiego, czasami chcę po prostu wystawić jedną nieruchomość, a pozostałe zostawić, bo nie mam czasu". Następnie zapytałem: „a jaki byłby format danych dla tej właściwości?” i powiedział: „Nie chcę niczego sprawdzać, chcę mieć swobodę wstawiania, jak mi się podoba”. Tak więc klient _nie chciał_ w ogóle walidacji, więc nie mogłem go zaimplementować. W takim przypadku nie ma walidacji, nie ma żadnych reguł. Następnie przyjrzałem się kontrolerom (został zbudowany za pomocą MVC), aby sprawdzić, czy istnieje jakakolwiek logika specyficzna dla jednostek domeny, a nie było żadnej. Tylko logika do odczytu i zapisu danych. Czy w takich przypadkach problemem jest posiadanie modeli domen anemicznych? Ponadto pracuję z .NET. W .NET możemy umieścić walidację za pomocą adnotacji danych i możemy napisać gettery, takie jak właściwości. Tak więc metody przeprowadzania walidacji podczas ustawiania danych nie są wymagane, ponieważ adnotacje danych wykonują zadanie, a także metody obliczania danych nie są wymagane, ponieważ właściwości z tylko specjalnym pobieraniem mogą wykonać zadanie. Czym więc w końcu stają się zachowania?


title: Jaka jest różnica między Avalanche a WaterScrumFall?

text: Niedawno dowiedziałem się o nowej metodologii opartej na wodospadzie i scrumie: Water-Scrum-Fall. Niektórzy twierdzą, że jest to nowa „rzeczywistość” i to jest obecnie używane przez pragmatyków scrum... Ale z definicji „Lawiny”: > Model Avalanche jest wzorcem anty-zarządzania projektami w Inżynierii Oprogramowania, jest kombinacją proces sekwencyjny, taki jak model Waterfall > i metodologie tworzenia oprogramowania Agile [...] Co sądzisz o tych dwóch modelach? Czy to nie to samo? * * * Więcej informacji: http://www.infoq.com/news/2011/12/water-scrum-fall-is-the-norm http://www.slideshare.net/harsoft/water-scrumfall-isrealityofagileformost


title: Potrzebujesz wyjaśnień dotyczących Windows Azure

text: Zasadniczo potrzebuję potwierdzenia i wyjaśnienia dotyczącego Windows Azure w odniesieniu do aplikacji Silverlight korzystającej z RIA Services. W normalnej aplikacji Silverlight, która korzysta z usług RIA, masz 2 projekty: * App * App.Web ... gdzie App to domyślny Silverlight po stronie klienta, a app.web to kod po stronie serwera, do którego trafiają usługi RIA. Jeśli utworzysz aplikację systemu Windows Azure i dodasz rolę usług sieci Web WCF, otrzymasz: * App (projekt Azure) * App.Services (projekt usług WCF) W App.Services dodajesz swoje usługi RIA DomainService(s). Następnie do tego rozwiązania należy dodać kolejny projekt, który byłby Silverlight po stronie klienta, który uzyskuje dostęp do usług RIA w projekcie App.Services. Następnie możesz dodać model jednostki do App.Services lub innego projektu, do którego odwołuje się App.Services (jeśli ten podział jest wymagany do testowania jednostek itp.) i połączyć ten model jednostki z bazą danych SQLServer lub wystąpieniem SQLAzure. Czy to jest poprawne? Jeśli nie, jaki jest ogólny „układ” tworzenia aplikacji z następującymi warstwami: * Interfejs użytkownika (Silverlight 4) * Usługi (usługi RIA) * Jednostka/domena (EF 4) * Dane (SQL Server)


title: Czy znajomość .NET wystarczy tylko do udanej kariery w branży IT?

text: > **Możliwy duplikat:** > Czy lepiej jest specjalizować się w jednej lubianej przeze mnie dziedzinie, czy rozszerzyć zakres > na inne, aby poszerzyć swoje horyzonty? Ostatnio nie wiem skąd wpadła mi w głowę myśl, że „czy znajomość środowiska programistycznego .NET wystarczy do udanej kariery w branży IT”. Czy powinienem też uczyć się więcej języków, czy .NET wystarczy mi na następne 10-15 lat. Przez udaną karierę rozumiem przyzwoite życie i dobre możliwości rozwoju.


title: Czy można być generalistą?

text: > **Możliwy duplikat:** > Czy lepiej jest specjalizować się w jednej lubianej przeze mnie dziedzinie, czy rozszerzyć zakres > na inne, aby poszerzyć swoje horyzonty? Pracuję w firmie zatrudniającej około 50 pracowników (Wielka Brytania), gdzie wszyscy pracownicy techniczni zajmują się po trochu wszystkiego. Odradza się specjalizowanie w czymkolwiek przez bardzo długi okres (6 miesięcy). Na przykład w zeszłym tygodniu zbudowałem nowy serwer WWW Debiana, zrefaktorowałem trochę Perla, usiadłem na rozmowie telefonicznej, zrobiłem kopię zapasową na taśmie, przejrzałem kod, zbudowałem i wdrożyłem RPM, wydałem opinie na temat x, y, z... taki schemat pracy, zdobyłem ogólną wiedzę jak wiele rzeczy działa i dość szczegółową wiedzę. Może programuję przez 5 godzin tygodniowo, mimo że oficjalnie jestem programistą. Czy ktoś jeszcze tak pracuje (czy ta firma jest wyjątkowa)? Czy to problem, aby rozwijać umiejętności w ten sposób? (tj. wiedzieć trochę o wszystkim w określonej domenie, zamiast wiedzieć wszystko o, powiedzmy, jednym języku programowania?) Czy bycie generalistą jest w porządku?


title: Przysłowiowy widelec dla początkujących programistów. (asp.net lub ...)

text: > **Możliwy duplikat:** > Czy lepiej jest specjalizować się w jednej lubianej przeze mnie dziedzinie, czy rozszerzyć zakres > na inne, aby poszerzyć swoje horyzonty? > Czy zróżnicowane umiejętności wspierają czy utrudniają specjalizację? Po południu szukam porady zawodowej, ponieważ droga wydaje się rozdzielać, kręcić i skręcać w wielu różnych kierunkach. Moim pragnieniem jest zostać profesjonalnym inżynierem oprogramowania, skupiającym się (bardziej) na aplikacjach internetowych. Moje doświadczenie w projektowaniu stron internetowych doprowadziło mnie do php, mysql i minimalnego javascriptu (jak wielu ma). Od tego momentu zaczynam się uczyć visual studio, C# MS SQL i wielu narzędzi / języków skryptowych, które moim zdaniem uczyniłyby mnie lepszym programistą i atutem dla zespołu webowego (REGEX, HTML5, MSSQL,). Im więcej zajmę się Visual Studio, składnią ASP.NET aspx ( <% %> ), a teraz czytam nadchodzącą składnię brzytwy. Zaczynam odczuwać to poczucie zakrętu, izolacji od tych, którzy rozwijają się w obszarach, które również mnie interesują. Rozumiem, to po prostu natura życia, kiedy stajesz się wyspecjalizowany w jakiejś dziedzinie wiedzy, musisz się gdzieś skupić, albo będziesz waletem we wszystkich transakcjach. Ale jednocześnie chciałbym "sięgnąć ponad" i móc zagłębić się w Object-C lub Java, dzięki czemu mogę projektować aplikacje internetowe, które są przeznaczone do użytku międzyplatformowego. Nie mam zamiaru marudzić, po prostu chcę, żeby ktoś mi powiedział „będzie dobrze, naciskaj mocno w którykolwiek z tych kierunków, a będziesz w stanie zrobić wszystko, co chcesz”. Gdzie, moje kolejne 4 lata starań, aby stać się atutem w C# i asp.net, nie skażą mnie na życie w służbie pracy związanej z technologią Microsoft. Po mojej wizycie w centrali Google w kwietniu naprawdę mnie to zainspirowało i trochę otworzyło mi oczy. Ale z tego, co słyszę, ich technologiczny nacisk nie wykorzystuje żadnego C# ani .NET do tego celu. Sądzę więc, że pytanie podsumowujące brzmi: czy profesjonalni inżynierowie oprogramowania mają swobodę (i czas na to) do uczenia się, zawodu i stania się atutem innych sektorów technologicznych? Czy ktoś, kto opanował Visual Studio, ma również mistrzostwo w VIM lub EMACS?


title: Czy bycie specjalistą od wszystkiego szkodzi twojej karierze?

text: > **Możliwy duplikat:** > Czy lepiej jest specjalizować się w jednej lubianej przeze mnie dziedzinie, czy rozszerzyć zakres > na inne, aby poszerzyć swoje horyzonty? Patrząc na oferty pracy, zdecydowana większość wymaga bardzo konkretnych kwalifikacji i wymagań oraz dużego doświadczenia w bardzo wąskich dziedzinach. Po tym, jak sam napisałem opis pracy lub dwa, wiem, że „wymagania” są bardziej listą życzeń niż cokolwiek innego, a rzeczywiste obowiązki zawodowe mogą się bardzo różnić. To powiedziawszy, jeśli patrzę na te oferty pracy jako potencjalny kandydat, nie sądzę, żebym został nawet wzięty pod uwagę w przypadku większości z nich – głównie dlatego, że tak naprawdę nie mam specjalizacji ani obszaru, na którym się skoncentrowałem. Mogę zrobić prawie wszystko, co jest marginalnie dobre (programowanie, bazy danych, sieci, cokolwiek chcesz) i mam doświadczenie z szeroką gamą różnych technologii (na różnym poziomie wiedzy), ale nigdy nie miałem pracy, która wymagałaby lub w przeciwnym razie miał potrzebę zagłębienia się w coś, spędzenia nad tym dużej ilości czasu i „opanowania” tego. Czy bycie wszechstronną transakcją naprawdę szkodzi twojej karierze (na dłuższą metę)? Czy to oznacza, że nigdy nie będziesz w stanie awansować ani awansować poza coś takiego, jak wsparcie techniczne poziomu 1/2 lub ogólny lajt IT? W tym samym duchu, czy można zrobić karierę będąc wszechstronnym w technologii, mając szerokie (choć płytkie) doświadczenie, ale bez specjalizacji w konkretnej technologii?


title: Jak nazwać podklasę, która dodaje drobną, szczegółową rzecz?

text: Jaki jest najbardziej zwięzły (lecz opisowy) sposób nazwania podklasy, która dodaje tylko określoną drobną rzecz do rodzica? Często spotykałem się z tym przypadkiem w WPF, gdzie czasami muszę dodać małą funkcjonalność do gotowej kontrolki dla konkretnych przypadków. Przykład: TreeView nie zmienia SelectedItem po kliknięciu prawym przyciskiem myszy, ale muszę to zrobić w mojej aplikacji. Niektóre możliwe nazwy to * `TreeViewThatChangesSelectedItemOnRightClick` (zbyt rozwlekłe i być może trudne do odczytania, ponieważ jest tak wiele słów połączonych razem) * `TreeView_SelectedItemChangesOnRightClick` (nieco bardziej czytelne, ale wciąż zbyt rozwlekłe, a podkreślenie również łamie normalną konwencję nazw klas ) * `TreeViewThatChangesSIOnRC` (nieoczywisty akronim), * `ExtendedTreeView` (bardziej zwięzły, ale nie opisuje, co robi. Poza tym znalazłem już w bibliotece klasę o nazwie this, której nie chcę używać/modyfikować w mojej aplikacji). * `LouisTreeView`, `MyTreeView` itp. (nie opisuje, co robi). Wygląda na to, że nie mogę znaleźć dobrze brzmiącego imienia. Co robisz w takiej sytuacji?


title: Dlaczego „Wybierz * z tabeli” jest uważane za złą praktykę?

text: Wczoraj rozmawiałem z programistą "hobbystycznym" (sam jestem profesjonalnym programistą). Natknęliśmy się na niektóre jego prace i powiedział, że zawsze wysyła zapytania do wszystkich kolumn w swojej bazie danych (nawet na/na serwerze/kodzie produkcyjnym). Próbowałem go przekonać, żeby tego nie robił, ale jeszcze nie odniosłem takiego sukcesu. Moim zdaniem programista powinien pytać tylko o to, co jest faktycznie potrzebne ze względu na „ładność”, wydajność i ruch. Czy mylę się z moim poglądem?


title: Jak ustalasz, które umiejętności są zbywalne?

text: Chociaż to pytanie może dotyczyć innych dziedzin, szczególnie interesuje mnie poszukiwanie pracy jako programista. Mianowicie, gdy szukasz aplikacji na nową pracę, możesz szukać ofert dla programistów C# lub Java; jednak większość stanowisk nie zajmuje się pisaniem tylko w jednym języku, więc jak określić, które umiejętności warto podkreślić w CV lub, co bardziej prawdopodobne, w ukierunkowanym liście motywacyjnym? Podobnie, czy są jakieś umiejętności, o których nie warto wspominać, ponieważ sugeruje się, że większość programistów powinna je znać (np. XML), czy lepiej wymienić wszystko?


title: Wyodrębnianie informacji o profilu kolorów z plików JPEG

text: Próbuję wyszukać informacje o czytaniu informacji o profilu kolorów JPEG i ku mojemu zdziwieniu jest bardzo mało otwartych szczegółowych informacji na ten temat, ale raczej wiele ogólnych wyjaśnień na temat tego, co to jest. **Czy ktoś wie, jak znaleźć i odczytać informacje o profilu kolorów w formacie JPEG?**


title: Czy jakiekolwiek "style" baz danych używają oddzielnych plików dla swoich tabel?

text: Rozmawiałem z kilkoma osobami w pracy, które wierzą, że niektóre wersje bazy danych przechowują swoje dane w oddzielnych tabelach. Oznacza to, że możesz otworzyć folder i zobaczyć jeden plik dla każdej tabeli w bazie danych, a następnie kilka innych plików pomocniczych. Nie mają dużego doświadczenia z bazami danych, ale pracuję z nimi dopiero nieco ponad pół roku, więc nie jestem też kanonicznym źródłem informacji. Zachwalałem zalety SQL Server nad Access (a wcześniej Access nad Excelem. Poczyniono wielkie postępy :) ). Jednak inni ludzie odnosili wrażenie, że jedną z korzyści wynikających z używania SQL Server w porównaniu z programem Access było to, że wszystkie dane nie zostały skonsolidowane w jednym pliku. Jednak SQL Server pakuje wszystko w jeden plik .mdf (plus plik dziennika). Moje pytanie brzmi, czy istnieje RDBMS, który przechowuje dane w wielu dyskretnych plikach zamiast w jednym pliku głównym? A jeśli odpowiedź brzmi tak, dlaczego robi się to w jedną stronę? **edytuj** Dziękuję wszystkim za odpowiedzi. To naprawdę pomogło wyjaśnić całą sytuację.


title: Jakie korzyści daje korzystanie z renderowania stron po stronie serwera?

text: Tworzę aplikację internetową i aktualnie napisałem całą stronę w html/js/css, a na backendzie mam serwlety, które obsługują niektóre usługi RESTFUL. Cała logika prezentacji odbywa się poprzez pobieranie obiektów json i modyfikowanie widoku za pomocą javascript. Aplikacja jest zasadniczo wyszukiwarką, ale będzie miała konta użytkowników o różnych rolach. Badałem niektóre frameworki, takie jak Play i Spring. Jestem całkiem nowy w tworzeniu stron internetowych, więc zastanawiałem się, jakie korzyści przyniesie renderowanie stron po stronie serwera? Czy to: Szybkość? Łatwiejszy rozwój i przepływ pracy? Dostęp do istniejących bibliotek? Więcej? Wszystkie powyższe?


title: W jaki sposób Google indeksuje często aktualizowane strony internetowe?

text: Próbuję zbudować bardzo małą, niszową wyszukiwarkę, używając Nutch do indeksowania określonych witryn. Niektóre z tych witryn są witrynami z wiadomościami/blogami. Jeśli indeksuję, powiedzmy, techcrunch.com i przechowuję i indeksuję ich stronę główną, to w ciągu kilku godzin mój indeks dla tej strony stanie się nieaktualny. Czy duża wyszukiwarka, taka jak Google, ma algorytm do ponownego indeksowania często aktualizowanych stron bardzo często, nawet co godzinę? A może po prostu ocenia często aktualizowane strony bardzo nisko, aby nie zostały zwrócone? Jak mogę sobie z tym poradzić we własnym indeksie?


title: Czy są jakieś wady tego modelu rozgałęziania Git?

text: Pytam o ten model rozgałęziania git lub workflow. Naprawdę to lubię. Wydaje mi się, że jest to bardzo intuicyjne i produktywne, ale proszę o to, czy są jakieś wady lub negatywy w tym podejściu, które nie są jeszcze dla mnie jasne (pochodzące z innego świata, w którym ClearCase rządził dniem). (Nie musisz odpowiadać na każde pytanie, cokolwiek możesz, jest pomocne) 1. Czy używasz tego lub podobnego przepływu pracy z gałęziami git? 2. Czy uważasz to za produktywne podejście? 3. Czy widzisz jakieś wady tego podejścia? Jakiś potencjalny minus? 4. Jeśli masz lepsze podejście, czy miałbyś coś przeciwko udostępnieniu lub udostępnieniu linku do artykułu lub dyskusji na ten temat?


title: Jak ważna jest wielowątkowość w obecnej branży oprogramowania?

text: Mam blisko 3 lata doświadczenia w pisaniu aplikacji internetowych w Javie z wykorzystaniem frameworków MVC (takich jak rozpórki). Do tej pory nigdy nie pisałem kodu wielowątkowego, chociaż pisałem kod dla największych sieci handlowych. Podczas wywiadów dostaję kilka pytań dotyczących wielowątkowości i zazwyczaj na nie odpowiadam (w większości proste pytania). To sprawiło, że zacząłem się zastanawiać, jak ważna jest wielowątkowość w obecnym scenariuszu branżowym?


title: Czy powinienem reprezentować Bazę Danych w moich przypadkach użycia?

text: Tworzę przypadki użycia dla mojej aplikacji internetowej i zastanawiałem się, czy reprezentacja DB powinna być wymieniona jako aktor. Na przykład użytkownik może sprawdzić swój profil i edytować go (zakładając, że jest zalogowany). Dwa przypadki użycia to: \- Użytkownik może przeglądać swój profil \- Użytkownik może edytować swój profil Czy przypadki użycia to na przykład: Aktor: Użytkownik, DB Przypadek użycia: Wyświetl profil Czy mogę pominąć DB jako aktora ? Niestety nie znalazłem żadnego spójnego sposobu rysowania przypadków użycia.


title: Czy udostępnianie bazy danych w SOA jest złą praktyką?

text: Ostatnio czytałem Wzorce integracji przedsiębiorstw Hohpe i Woolf, niektóre książki Thomasa Erla na temat SOA oraz oglądałem różne filmy i podcasty autorstwa Udi Dahana i in. w systemach CQRS i Event Driven. Systemy w moim miejscu pracy cierpią z powodu wysokiego sprzężenia. Chociaż każdy system teoretycznie ma własną bazę danych, jest między nimi wiele połączeń. W praktyce oznacza to jedną ogromną bazę danych, z której korzystają wszystkie systemy. Na przykład istnieje jedna tabela danych klientów. Wiele z tego, co przeczytałem, wydaje się sugerować denormalizację danych, tak aby każdy system używał tylko swojej bazy danych, a wszelkie aktualizacje jednego systemu są propagowane do wszystkich innych za pomocą wiadomości. Myślałem, że to jeden ze sposobów egzekwowania granic w SOA - każda usługa powinna mieć własną bazę danych, ale potem przeczytałem to: http://stackoverflow.com/questions/4019902/soa-joining-data-across-multiple - usługi i sugeruje, że jest to zła rzecz. Segregacja baz danych wydaje się dobrym sposobem na oddzielenie systemów, ale teraz jestem trochę zdezorientowany. Czy to dobra trasa? Czy kiedykolwiek zaleca się segregowanie bazy danych, powiedzmy, usługi SOA, kontekstu DDD Bounded, aplikacji itp.?


title: Korzystanie z bazy danych dla każdego modułu w systemie

text: Czytałem to pytanie: > Próbowałem ustandaryzować i zmodularyzować niektóre funkcje (Zarządzanie pocztą elektroniczną > Moduł, moduł CMS itp.) poprzez wdrożenie koncepcji architektury 3-warstwowej > gdzie każdy moduł miałby własną, niezależną bazę danych modułów. Tak więc w przyszłości wszystko, co musielibyśmy zrobić, to po prostu zakodować warstwę prezentacji, ponownie użyć warstwy > BLL, warstwy DAL i bazy danych. Moje dalsze pytanie brzmi, czy dobrym pomysłem jest umieszczenie wszystkich tabel bazy danych z każdego modułu w tej samej bazie danych, czy też powinny one być rozdzielone na całkowicie oddzielne bazy danych? Używam PostgreSQL. Moje zmartwienia to: 1. Problemy z uruchomieniem analizy danych, jeśli dane znajdują się w wielu różnych bazach 2. Problemy z określeniem problemów z wydajnością bazy danych, jeśli używamy tej samej bazy danych dla wszystkich modułów 3. Możliwość łączenia tabel między modułami, jeśli mamy jakiś czas w w przyszłości odkryjesz, że nasza modularyzacja jest wadliwa w tworzeniu określonej funkcji


title: Wskazówki dotyczące rekursji Tail Call w Pythonie

text: Ok, Python nie ma optymalizacji ogona. Ale dla tych, którzy myślą lepiej rekurencyjnie niż "pętlowo", jakie są najlepsze praktyki pisania kodu? W wielu przypadkach wystarczy 1000 wywołań stosu, ale jakie są wskazówki dotyczące ukrywania rekurencji z wydajnością w Pythonie?


title: Czy to prawidłowe porównanie szybkości procesora smartfona i procesora komputera stacjonarnego (Android G1 i stary komputer stacjonarny Pentium 4)?

text: Próbuję oszacować różnice w szybkości podczas tworzenia kodu na moim komputerze stacjonarnym, który zostanie przeniesiony na telefony z systemem Android. Nie muszę być dokładny, ale dobre oszacowanie pomoże mi powstrzymać mnie przed tworzeniem kodu, który jest bardzo powolny na telefonie z Androidem. Chcę obsługiwać aż do Androida G1, więc używam go jako mojej „linii bazowej”. Oto jak obecnie wykonuję moje obliczenia przy użyciu Dhrystone MIPS przy użyciu starego Pentium 4 dla porównania, które będzie jednostką testową do szybkich testów prędkości. Zgodnie z tym dokumentem, G1 korzystający z procesora ARM Qualcomm MSM72xx ma około 1 MIPS na Mhz: http://www.techautos.com/2010/03/14/smartphone-processor-guide/ Wyszukiwarka w sieci wyświetliła komentarze użytkowników wskazujące, że Procesor G1 jest dostarczany z prędkością około 350 Mhz, a nie 523 Mhz pokazanym w specyfikacji chipa, więc przypisuję ocenę MIPS wynoszącą 350 MIPS dla G1, słusznie lub niesłusznie. Ta strona Wikipedii pokazuje edycję Pentium 4 Extreme ocenianą na około 9700 MIPS: http://en.wikipedia.org/wiki/Instructions_per_second Dzięki temu Pentium 4 jest około 27 razy szybszy niż G1. Biorąc pod uwagę ten mnożnik, jeśli podczas jednej z czasochłonnych operacji mój kod zajmie 1 sekundę na Pentium 4, oszacowałbym, że zajmie to 27 sekund na G1. Czy moja logika jest prawidłowa? Mam nadzieję, że tak nie jest, ponieważ oznacza to, że będę musiał dokonać naprawdę bolesnych optymalizacji kodu, aby wszystko było znośne na G1. Jeśli moja logika nie jest poprawna i istnieje lepszy algorytm do tego obliczenia, daj mi znać. \-- roschler


title: Jakiej metody szyfrowania powinienem użyć?

text: Szukam informacji na temat szyfrowania. Oto, co próbuję zrobić: * Uzyskać unikalne informacje od naszego klienta (identyfikator lub coś) * Wygenerować i zaszyfrować niektóre dane po naszej stronie (używając identyfikatora klienta) * Wyślij te dane do klienta i zezwól aplikacji na odszyfrowanie (i tylko odszyfrować) te dane przy użyciu identyfikatora wysłanego wcześniej Na jakie metody powinienem zwrócić uwagę? Z poważaniem Wyjaśnienie: * Szyfrujemy niektóre dane za pomocą naszego klucza prywatnego i klucza publicznego naszych klientów * Klient odszyfrowuje te dane za pomocą swojego klucza publicznego * Klient nie może być w stanie zaszyfrować prawidłowych danych za pomocą swojego klucza publicznego


title: Kroki w kierunku ciągłego dostarczania?

text: Załóżmy, że masz tradycyjny proces programistyczny > testowy > produkcyjny, powiedzmy, w miesięcznym cyklu wydawniczym. Jakie kroki należy podjąć i wdrożyć, aby przejść do modelu ciągłego dostarczania z częstymi wydaniami dziennie. Proszę podać jedną sugestię na odpowiedź. Chciałbym skorzystać z głosowania, aby wskazać, które kroki według społeczności są najważniejsze.


title: W którym momencie firma potrzebuje inżyniera systemowego?

text: Moja pierwsza praca jako programista w średniej małej firmie zaczyna się od 8 miesięcy. Cztery zespoły programistyczne mają około 7 programistów każdy, zespół projektowy składa się z mniej więcej tej samej liczby, a zespół administracji / sprzedaży / marketingu / hr to 4 osoby. Zajmujemy się głównie tworzeniem aplikacji internetowych, jednorazowa umowa, do uruchomienia w (zazwyczaj istniejącym) środowisku klienta. Zaczynam konfigurować odpowiednie środowiska programistyczne, zwykle rzeczy, których nigdy wcześniej nie używałem (od C#.NET 1.1 i MS-SQL po regionalnie rozwijany WAS o nazwie JEUS), co zajmuje dużo czasu. Czasami otrzymuję pomoc od innych programistów, ale najczęściej korzystam z samouczków online, aż wydaje się działać, a potem spędzam więcej czasu na naprawie kodu, gdy się zepsuje, ponieważ ustawienia nie są dokładnie takie same, jak w rzeczywistym środowisku. Zaczynam myśleć, że jeden facet, który specjalizuje się w tych rzeczach, znacznie ułatwiłby programistom robienie tego, za co im płacono. Kiedy firma ma sens, aby zatrudnić dedykowanego inżyniera systemowego? A może się mylę i powinienem po prostu to wyssać i nauczyć się tego robić? Zdaję sobie sprawę, że znajomość różnych środowisk poprawiłaby moją zdolność do zatrudnienia...


title: Zbędny kod ok?

text: Używając C#/.Net mam stronę, na której użytkownik może wprowadzić dane i zapisać te dane, klikając przycisk. Aby zapisać dane, użytkownik musi wprowadzić poprawną datę, czyli datę, która ma określony format. Strona zawiera m.in. dwa moduły. ValidateDate-Event jest odpowiedzialny za sprawdzenie formatu pola daty. Sprawdza więc format i wyświetla komunikat, jeśli data nie jest poprawnie sformułowana. Save-Event musi zapisywać wpisy użytkownika. Aby pomyślnie wykonać zadanie, potrzebna jest dobrze sformułowana data. Zaprojektowałem więc moduł do sprawdzania formatu daty. Ma to tę zaletę, że moduł nigdy nie może ulec awarii i nie jest zależny od modułu walidacji. Ale zdałem sobie sprawę, że w rzeczywistości robię to samo dwa razy, w dwóch modułach. Jestem tylko ciekaw, jak sobie z tym radzisz? Jak myślisz, jak najlepiej to zrobić? **1) Odpowiedzialność ValidateDate: Sprawdź format pola daty (, poinformuj użytkownika) Podzadanie: Sprawdź format pola daty 2) Zapisz Odpowiedzialność: Zapisz dane Podzadanie: Sprawdź format pola daty**


title: Jeśli usunę pliki cookie za pomocą JavaScript, czy nadal będzie to zgodne z prawem dotyczącym plików cookie UE ICO?

text: Zaproponowano mi wyzwanie stworzenia widżetu do zastosowania w innych witrynach, który sprawi, że witryna będzie zgodna z prawem dotyczącym plików cookie[1]. Czy mogę to zrobić bez zmiany kodu serwera? To znaczy, jeśli po stronie serwera znajduje się kod, który zapisuje plik cookie partnera w odpowiedzi, a mój widget JavaScript usuwa go po zdarzeniu window.load: czy witryna nadal będzie zgodna z prawem dotyczącym plików cookie? Następnie pojawiają się pliki cookie Google Analytics i przycisków udostępniania. Jak powstrzymać wykonywanie tych skryptów i ramek w JavaScript? [1] Biuro Komisarza ds. Informacji (ICO): Nowe prawo dotyczące plików cookie ICO


title: Czy powinienem podjąć się tego bardzo dużego pomysłu na projekt?

text: W zeszłym miesiącu wpadłem na pomysł bardzo dużego projektu, który mógłbym potraktować jako hobbystyczne oprogramowanie/potencjalny projekt biznesowy - po prostu dlatego, że zobaczyłem jakąś "wizję" świetnego narzędzia, gdyby to było zrobione. Pomysł stojący za projektem jest naprawdę powszechny, a jest jeden bardzo duży konkurent (jak wielkość korporacji z dziesiątkami, jeśli nie setkami programistów pracujących nad produktem, który może zawierać moje „wizjonerskie” cechy w przyszłości) - ich produkt jest co roku dopracowywany w nowej edycji. Kilka dni temu zobaczyłem ich najnowszą edycję, która dosłownie „odcięła mi wiatr”: ich najnowsze wydanie zawierało około 50% funkcji, o których marzyłem. I wdrożyli je w dobry sposób. Ponadto te „funkcje”, które wdrożyli, są częścią ich bardzo dużego produktu, więc czerpią korzyści z integracji tych funkcji w swoim dużym produkcie. Gdybym miał zakodować własny produkt, te „funkcje” byłyby po prostu samodzielnym produktem bez żadnych innych _fajnych i wydajnych narzędzi_. Mam więc następujące wątpliwości: gdybym sam zaczął to kodować, zajęłoby to może kilka lat. Czy naprawdę powinienem wziąć ten pomysł na projekt i zainwestować w niego swój czas, podczas gdy jakaś duża firma może nagle wdrożyć te same funkcje za, powiedzmy, za rok? Czy powinienem naprawdę _zastanowić się_ przed przystąpieniem do zupełnie nowego projektu o moich szansach na sukces, czy po prostu powinienem _nurkować i kamikaze_ na nim? Co myślisz? PS Jeśli możesz, proszę o polecanie mi zasobów informacyjnych na temat uruchamiania projektów i ewentualnego komercjalizacji. Dziękuję Ci bardzo.