title: Jak wybrać system rysunkowy, gdy wymagania nie są jeszcze znane?

text: Tworzymy aplikację do przetwarzania i wyświetlania danych 2D. W tej chwili dane są wyświetlane poprzez konwersję każdego punktu na kolor w zależności od intensywności, a więc w kodzie raczej niskiego poziomu. To działa dobrze. Nowością jest wyświetlanie siatki i kilku linii, które można przesuwać myszką na tym obrazie. Jak zwykle, gdy mają być wybierane nowe technologie, zrobiłem małe demo, aby przetestować kilka rzeczy: używając aktualnego wykresu danych, na górze rysowana jest linia, którą można przesuwać w górę/w dół za pomocą myszy, a jednocześnie jest tekst wyświetlający współrzędne kursora. Próbowałem na kilka różnych sposobów: używając Canvas, używając jakiegoś niższego poziomu DrawingContext i używając niskopoziomowego api WriteableBitmapEx. Dla mnie nie było żadnej różnicy w łatwości kodowania ani szybkości wyświetlania. Tak, opcja Canvas miała o kilka linijek mniej kodu niż inne, podczas gdy miałem wrażenie, że opcje niższego poziomu wyświetlały się nieco szybciej. Ale nie ma wielkich różnic, które zmuszałyby mnie do natychmiastowego wybrania jednego. Teraz problem polega na tym, że nie mam pojęcia, jak wybrać najbardziej odpowiedni system do pracy, ale jest to bardzo ważna decyzja, ponieważ część graficzna aplikacji prawdopodobnie będzie się rozwijać. Nie trzeba dodawać, że byłaby to mała katastrofa, gdybyśmy teraz wybrali A, a za rok doszliśmy do wniosku, że B byłoby znacznie lepsze. Normalnie wybrałbym najszybszą lub najwygodniejszą opcję lub spojrzałem na przyszłe wymagania i skorzystałem z systemu, który wydaje się najlepiej pasować, ale w tym przypadku po prostu nie ma wystarczającej różnicy, a przyszłe wymagania nie są dokładnie znane: na razie myślimy wystarczy, że możemy narysować linie, okręgi i trochę tekstu, a szybkość aktualizacji nie jest tak ważna. Jednak aplikacja jest na wczesnym etapie, podobnie jak sprzęt bazowy i ma mniej niż 100 klientów. To jednak może się szybko zmienić. Podobnie jak wymagania. Pytanie jest proste: co robić? Kilka opcji, o których myślałem: * wybierz tę, która najlepiej się "czuje" (WriteableBitmapEx, ale prawdopodobnie tylko dlatego, że mam powinowactwo z rzeczami niskopoziomowymi) * wybierz tę z najmniejszą ilością kodu (Canvas, również wydaje się bardzo łatwe w Poziom interfejsu użytkownika z efektami i zdarzeniami myszy, a co nie) * stwórz bardziej rozbudowane demo, aby różnice stały się bardziej wyraźne, wybierz jedno, ale umieść wszystko za interfejsem, aby implementacja mogła zostać później zamieniona (może być trochę pracy)


title: Jak studiujesz na MCPD?

text: mój pracodawca zachęca nas, a nawet wymaga, abyśmy wzięli MCPD i uzyskali certyfikat. Oferują ebooka online i egzamin próbny ze strony Measureup.com, ale kiedy czytam te zestawy szkoleniowe do samodzielnego tempa, zaczynam się nudzić i robić coś innego. Podoba mi się sposób, w jaki uczy Zeda „nauka pytona w trudny sposób”. Czy jest jakaś podobna książka jak Zeda? Jak uczycie się na MCPD?


title: Przechowywanie informacji z narysowanego wykresu w bazie danych dla aplikacji internetowej

text: Otóż podczas tworzenia aplikacji webowej pozwalającej użytkownikom na rysowanie wykresów (flow charts, diagram ER, UML,....itp) informacje o rysowanych elementach i ich wzajemnych relacjach oraz pozycji na płótnie są wyrażone jako obiekt JSON. : 1- czy wystarczy zapisać taki wykres w bazie danych jako surowy (tekst obiektu json) (w jednym polu tabeli) 2- czy zawsze wymagane jest rozbicie obiektu json na logiczne części i zapisanie ich w dobrze zbudowanej bazie danych Struktura! opcja 1- inna niż ułatwienie życia devilopers wyeliminuje potrzebę odtwarzania obiektu json z małych bitów i fragmentów informacji, gdy użytkownik otworzy graf, który zbudował i zapisał dawno temu opcja 2 będzie miała drobnoziarniste szczegóły w odpowiedniej strukturze ale czy będzie kosztować ciężka obróbka przy otwieraniu zapisanego wykresu z Bazy danych Która droga jest poprawna?


title: Dlaczego ruby i python wydają się mieć większy wkład społeczności niż PHP?

text: W niedawnym poście na blogu autorstwa Roya Osherove'a wskazano, że jego przejście z rozwoju głównie .Net na rozwój ruby dostrzegł ogromną różnicę w zaangażowaniu społeczności i naprawdę się z tego cieszy. Cytat, który rodzi to pytanie, brzmi: > nie ma żadnego nadrzędnego władcy, który dyktuje, z czym będziesz lub nie będziesz pracował. Nie spędzam dużo czasu pracując z php, ale spędzam mniej więcej tyle samo czasu pracując z ruby. Od czasu, kiedy pracuję i komunikuję się z ludźmi, którzy pracują z obydwoma technologiami, wydaje się, że Ruby ma wrażenie, że Roy opisuje znacznie więcej niż PHP. Nie zajmuję się zbytnio Pythonem, ale wszyscy, których znam, mówią, że ma on podobne odczucia społeczności. Wydaje mi się to dziwne, ponieważ każdy programista ruby i python, którego znam, miał tendencję do uczenia się php gdzieś po drodze, ale nie mają podobnych odczuć co do społeczności php. Rozumiem, że istnieją uzasadnione skargi dotyczące wcześniejszych wersji php, ale ludzie nadal byli w stanie używać go do tworzenia bardzo dużych witryn i wiele firm z niego korzysta. Co dzieli te społeczności, że ruby i python wydają się mieć tak inny klimat niż php? (To pytanie może być subiektywne, ale mam nadzieję, że istnieje solidna bezstronna odpowiedź, aby wyjaśnić różnicę)


title: Jaki jest zamiar Google, aby finansować Firefoksa podczas opracowywania Chrome?

text: Rozumiem, że Google sfinansował Mozilla Firefox, chociaż rozwija własną przeglądarkę Chrome. To wygląda na zbędne. Jaka jest motywacja Google do tego? Kolejne potencjalnie powiązane pytanie: Dlaczego Google nie ujednolicił serwisu Google Video z serwisem YouTube, gdy nabył serwis YouTube?


title: Jaki jest tradycyjny sposób zachowania rozszerzalności w takiej aplikacji opartej na bazie danych?

text: Pracuję nad prostą aplikacją do gry w Javie, która pozwala użytkownikowi rejestrować, czy zebrał dany przedmiot i ile zawiera w sobie doświadczenia. Będzie to działać dla wielu typów przedmiotów (broni, zbroi), a każdy z nich będzie miał własną zakładkę z listą wszystkich kwalifikujących się przedmiotów. Wprowadzanie zmian w miarę dodawania nowych typów nie jest aż tak wielkim problemem (jeśli na przykład zostanie dodany slot na ubrania), ale nowe przedmioty są dodawane do gry cały czas w dwutygodniowych patchach i nie jestem pewien, co tradycyjne/ zwyczajowy sposób, aby upewnić się, że aplikacja jest rozszerzalna przez użytkownika bez konieczności bycia. Niezależnie od tego, czy byłoby to dodanie menu konfiguracyjnego, które pozwala użytkownikom dodawać elementy wiadomości (nowe wiersze do lokalnej bazy danych SQLite), czy też plik tekstowy z czymś podobnym, ale jestem pewien, że istnieje dobrze przyjęty sposób na zrobienie tego, że jestem nie zdaje sobie sprawy. Jestem nowy w bazach danych i nie znam rozwiązania, więc jaki jest profesjonalny/przyszłościowy sposób, aby to zrobić?


Czy warto nauczyć się CVS przed nauką SVN? Czy duża część tej wiedzy przenosi się do SVN, czy też są zbyt różne?


title: Próba zrozumienia, czym zajmuje się Travis CI i kiedy należy go używać

text: Jestem bardzo nowy w Git i planuję przyczynić się do jakiegoś projektu open-source na GitHub po wykryciu w nim małego błędu. Po rozwidleniu i naprawieniu błędu wymyśliłem pull request i zauważyłem, że pojawia się następujący komunikat: > Failed — kompilacja Travis CI nie powiodła się Przyglądając się szczegółom, odkryłem, że jest to spowodowane przez „Nie można znaleźć pliku .travis.yml”, co spowodowało doskonały sens, ponieważ nie zalogowałem się do Travis Cl za pomocą i nie dodałem .travis.yml do repozytorium. Po raz pierwszy słyszę o Travis CI. Brzmi to całkiem fajnie, więc aby dowiedzieć się więcej na ten temat, zajrzałem do Wikipedii. > Travis CI to hostowana, rozproszona usługa ciągłej integracji używana do > budowania i testowania projektów hostowanych w serwisie GitHub. Travis CI automatycznie wykrywa > kiedy zatwierdzenie zostało wykonane i przekazane do repozytorium GitHub, które używa > Travis CI, i za każdym razem, gdy to się stanie, spróbuje **skompilować projekt > i uruchomić testy**. Obejmuje to zatwierdzenia wszystkich gałęzi, nie tylko gałęzi > master. Moje obecne rozumienie Travis CI jest takie, że to, co robi, to automatyczne wypychanie projektu po `git commit -am ".."` i nie do końca rozumiem jakąś jego część. 1. Jakie testy będzie uruchamiać poprzez **budowanie projektu i uruchamianie testów**? A jak zamierza „zbudować” projekt? (jak kompilowanie go do binarnego?) 2. Stwierdza, że "To obejmuje zatwierdzenia do wszystkich gałęzi" - ale co, jeśli nie chcę zatwierdzać wszystkich gałęzi? 3. Czy to w porządku, jeśli w ogóle nie używam Travis Cl? W jakich okolicznościach najlepiej z niego korzystać (lub musi być używany)?


title: Konfiguracja analizy statycznej i wygodne skrypty w kontroli źródła

text: 1) Czy konfiguracja narzędzia do analizy statycznej powinna być umieszczona w kontroli źródła? Ta konfiguracja nie jest potrzebna do kompilowania/uruchamiania oprogramowania, a niektórzy programiści mogą mieć inne preferencje (nawet w ramach konwencji kodowania). Z drugiej strony umieszczenie takiej konfiguracji w kontroli źródeł i zadeklarowanie narzędzia do analizy statycznej jako "oficjalnej części projektu" może zachęcić każdego do przetestowania swojego kodu i pomóc w zachowaniu jego spójności. To pytanie dotyczy głównie open source, ponieważ w projektach komercyjnych i tak ustalisz ścisły przepływ pracy. 2) Czy skrypty wygody (generowanie dokumentacji, uruchamianie analiz, uruchamianie testów, wdrażanie, generowanie instalatora) powinny być umieszczone pod kontrolą źródła? Skrypty te muszą być wieloplatformowe i mogą nie działać dobrze na każdym systemie. Ludzie mogą po prostu użyć IDE do wykonania niektórych z tych zadań. Ale wymaganie od każdego pisania własnego schematu wydaje mi się trochę głupie. To pytanie dotyczy głównie języków interpretowanych, ponieważ podczas pracy z językami kompilowanymi jest to zwykle osiągane za pomocą narzędzia do budowania, które nie jest potrzebne do budowania programu w językach dynamicznych.


title: Jak zdefiniować stałe z PECL hidef?

text: Niedawno przekonałem zespół, że możemy uaktualnić php5.4 do 5.5 — ale niestety wydaje mi się, że przeoczyłem, że php-apc nie jest już obsługiwane w php 5.5 — co jest w porządku i elegancko, ale przydałoby się to zamiennik dla apc_define_constants() Tak więc słyszałem o cudach hidef -- ale wydaje mi się, że nigdzie nie mogę znaleźć dla niego żadnej dokumentacji -- zainstalowałem go, po odrobinie kajiggeringu, ale nie jestem jasne, co dalej... Jak mogę rozpakować różne funkcje zawarte w pakiecie pecl hidef? A przynajmniej jak mogę go użyć do zdefiniowania stałych?


title: Uczestnictwo w kursie ASP.NET

text: Wkrótce zamierzam wziąć udział w kursie w ASP.NET. Ale "niestety" kurs jest oparty na ASP.NET 3.5, używając Murach ASP.NET 3.5 jako podręcznika. Jestem trochę zaniepokojony, ponieważ aktualna najnowsza wersja to ASP.NET 4.0. Jest szansa, że w przyszłym semestrze kurs zostanie zaktualizowany do 4.0, czy powinienem to zrobić teraz, czy poczekać do następnego semestru na wersję 4.0? Moim długoterminowym celem jest uzyskanie certyfikatu programisty MCPD WEB. Dziękuję


title: Wysyłanie e-maili bez korzystania z serwera e-mail

text: JavaMail wysyła wiadomości e-mail przy użyciu serwera poczty e-mail, zazwyczaj za pośrednictwem interfejsu SMTP dostawcy poczty e-mail. Czy do wysyłania e-maili konieczne jest korzystanie z serwera poczty e-mail? Mam stronę internetową, która będzie wysyłać e-maile i jeśli to możliwe, chciałbym wysyłać e-maile bezpośrednio z kodu strony internetowej bez korzystania z serwera poczty e-mail. Często zadawane pytania dotyczące JavaMail mówią, że wymagany jest serwer poczty e-mail. Czy istnieje sposób na wysyłanie wiadomości e-mail bez korzystania z serwera poczty e-mail, za pomocą JavaMail lub innego interfejsu API?


title: Nauka o projektowaniu

text: Jak poprawisz swoje umiejętności projektowania aplikacji? Skąd czerpiesz swoje pomysły projektowe? (Pytam o projektowanie kodu - nie o konkretny język i nie o atrakcyjność wizualną). Kiedy zacząłem programować, bardzo pomocne okazały się wzorce projektowe. W dzisiejszych czasach głównie przeglądam projekty open source, aby zobaczyć, co robią inni ludzie, gdy muszę rozwiązać podobne problemy. Co robisz?


title: Wprowadź zmianę, która zostanie zignorowana przez przyszłe scalenia

text: Mam repozytorium git i chciałbym utworzyć gałąź "debugowania". W gałęzi "debug" chciałbym dodać linię: debug = true; Ale chcę się upewnić, że wszelkie połączenia z powrotem do mistrza zignorują tę zmianę. Czy istnieje sposób na skonfigurowanie tego w sposób, który nie wymaga ode mnie ręcznej obsługi wszystkich przyszłych scaleń?


title: Nasz smak Scrum

text: W mojej organizacji prawie nigdy nie kończymy wszystkich historii w Sprincie, a większość historii jest skończona w około 80%. Jednym z powodów jest to, że często testerzy nie mają wystarczająco dużo czasu na przetestowanie wszystkich historii, a programiści nie chcą testować. Innym powodem jest to, że zespoły są zazwyczaj zbyt optymistyczne, więc zobowiązują się do więcej, niż są w stanie ukończyć, i nikogo to tak naprawdę nie obchodzi, więc kontynuują to w każdym sprincie. Zazwyczaj testy, poprawki błędów i ostatnie poprawki pozostają na tablicy zadań po zakończeniu sprintu. Kierownik ds. badań i rozwoju uważa, że nie jest tak źle, aby pozostawić niektóre błędy bez naprawienia lub pominąć niektóre niekrytyczne implementacje, ponieważ wtedy może szybciej przeprowadzić testy użyteczności nowych funkcji. Niemniej jednak myślę, że byłby szczęśliwy, gdyby zespół mógł dokończyć wszystkie testy i poprawki błędów, ale jeśli nie, to też jest w porządku, ponieważ zawsze na końcu są sprinty stabilizacyjne (utwardzające), w których będą drobniejsze rzeczy pod opieką. Chciałbym Cię zapytać, co myślisz o tej metodzie programowania (która nie jest czystym Scrumem, ale jego bardziej elastyczną/słabą wersją). Dziękuję Ci.


title: Szybka analiza kodu

text: Niedawno przeniosłem się do nowej firmy, w której mam za zadanie (częściowo) ocenę istniejącej bazy kodu oraz wymyślanie wzorców i najlepszych praktyk. Nasz zespół programistów składa się z około 20 programistów i mamy prawie tyle samo projektów. Większość kodu jest wykonywana w językach C# i SQL (procedury składowane). Oczywiście rozmawiam z chłopakami piszącymi kod. Muszę jednak przeczytać cały kod, aby mieć właściwe pojęcie o tym, co się dzieje. Biorąc pod uwagę liczbę projektów, jest to niezwykle czasochłonne; zwłaszcza jeśli po prostu próbujesz uzyskać ogólny obraz tego, co się dzieje. W tej chwili używam Enterprise Architect do importowania klas do diagramów klas. To do pewnego stopnia pomaga, ale wydaje mi się, że bardziej przydatne byłoby coś w rodzaju diagramu przepływu. Podejrzewam, że liderzy zespołów często borykają się z tym samym problemem, jeśli chodzi o przeglądy kodu. Jak udaje Ci się przyspieszyć analizę kodu?


title: Weryfikacja HMAC ograniczonych czasowo

text: Eksploruję przy użyciu uwierzytelniania tajnego klucza w stylu HMAC z wygaśnięciem znacznika czasu, ale staram się zrozumieć, w jaki sposób sprawdzasz poprawność części znacznika czasu. Po stronie klienta zrobiłbyś: my_hmac = hmac(my_secret, my_values) Gdzie miałbyś pole `timestamp` w `my_values`. Na serwerze (gdzie znasz również `my_secret`) możesz spróbować odbudować ciąg znaków HMACd z parametrami żądania: my_hmac_to_compare = hmac(my_secret, my_values_from_http_request) Czy jest to po prostu przypadek osadzenia znacznika czasu jako parametru, aby ciąg HMAC, a następnie upewnienie się, że znacznik czasu znajduje się w ciągu N minut od przetworzenia żądania? Mam dziwną wizję, że muszę iterować ponad 5-minutowe znaczniki czasu, przebudowując ciąg HMAC na serwerze, próbując znaleźć igłę w stogu siana, która wygeneruje prawidłowy ciąg HMAC. **Pytanie dodatkowe:** czy istnieje konsensus co do tego, jak początkowo przenieść tajny klucz do klienta z serwera? Oczywiście staje się „brudny” po przejściu przez przewód, ale w aplikacji skierowanej do użytkownika nie można pozwolić, aby ktoś wkleił obszerny tajny klucz, zwłaszcza jeśli jest to klient mobilny.


title: jak stylizować zawartość podczas zapytań o strukturę danych zagnieżdżoną na n-poziomach?

text: To pytanie pojawiło się podczas pisania prostej tekstowej gry przygodowej, w której twoja postać ma ekwipunek, który może zawierać pojemniki, w których znajdują się również rzeczy. Chcę w przejrzysty sposób stylizować wyniki inwentaryzacji, na przykład: Nosisz: torbę zawierającą: pierścionek plecak zawierający: bochenek chleba Obecnie po prostu uwzględniam formatowanie w wyniku zwróconym przez zapytanie, wszystko w jednym ujęciu . Na przykład DoInventoryCommand(): result = QueryInventory(...rekursywnie sprawdza inwentarz dodając wielokrotność zakładek w zależności od poziomu zagnieżdżenia...) print(result) To, czego chciałbym, to czystsze oddzielenie treści od prezentacji, tak aby zapytanie po prostu zwróć strukturę danych, którą można nadać osobnym przepustkom. Ale jak przepustka stylizacyjna powinna obsługiwać n-poziomową głęboką strukturę danych? Na przykład, jak poradzi sobie z tym narzędzie do stylizacji, takie jak CSS? Czy musisz proceduralnie generować CSS, gdy masz już strukturę danych?


title: Generowanie elementów prezentacji za pomocą Javascript vs PHP

text: Jakie są zalety i wady generowania dynamicznych stron za pomocą javascript w porównaniu z robieniem tego w PHP? Jako przykład chcę wyświetlić pewne rekordy z jakiejś bazy danych w tabeli i rozważam następujące podejścia: 1. Użyj JavaScript, aby uzyskać odpowiedź w JSON z jakiejś strony PHP, a następnie dynamicznie zbuduj tabelę w JavaScript. 2. Napisz trochę PHP na stronie, które spowodują zapytanie i iterację przez zbiór wyników, powtarzając znaczniki tabeli. Jakie są plusy i minusy każdego podejścia?


title: Język zapytań do analizy kodu Java

text: Chcę napisać narzędzie do refaktoryzacji dla języka programowania Java. Z tego powodu muszę wykonywać zapytania strukturalne względem abstrakcyjnego drzewa składni. Biorąc pod uwagę to AST, w jaki sposób mogę uzyskać odpowiedzi na następujące stwierdzenia: * Uzyskaj nadklasy obiektu. * Podaj wyrażenie, w którym wywołuję metodę x() na typie XClass * Czy metoda x() jest wywoływana bez argumentów (sprawdź przeciążenie) * Czy metoda x() jest wywoływana w dowolnym miejscu na ścieżce wykonania obiektu typu XClass (np. jest close() wywoływana gdziekolwiek)


title: Jak należy stosować formaty danych HTML w codziennych sytuacjach?

text: Biorąc pod uwagę przesunięcie Google w kierunku większego skupienia się na danych znaczników stron, w jaki sposób formaty danych używane w Schema.org działają razem z formatami w mikroformatach? W jaki sposób te (i inne specyfikacje) uzupełniają się nawzajem i które powinny być preferowane w różnych sytuacjach? **Edytuj:** Na podstawie ustalonych treści na ten temat wydaje się, że opinia wydaje się być podzielona między tych, którzy wierzą, że Schema.org to zagłada, ogień piekielny i siarka, a tych, którzy uważają, że ostatecznie będzie to dobra rzecz, niezależnie od tego, jak zostanie przyjęta. Oba artykuły zgadzają się przynajmniej, że różne formaty mogą szczęśliwie współistnieć, nie powodując niepotrzebnego żalu w wyszukiwarkach. Pozostaje jednak pytanie, w jaki sposób można wykorzystać różne opcje w konkretnych przypadkach.


title: Czy oczekiwane wyniki testów jednostkowych powinny być zakodowane na sztywno?

text: Czy oczekiwane wyniki testu jednostkowego powinny być zakodowane na sztywno, czy mogą być zależne od zainicjowanych zmiennych? Czy wyniki zakodowane na sztywno lub obliczone zwiększają ryzyko wprowadzenia błędów w teście jednostkowym? Czy istnieją inne czynniki, których nie brałem pod uwagę? Na przykład, który z tych dwóch formatów jest bardziej niezawodny? [TestMethod] public void GetPath_Hardcoded() { MyClass target = new MyClass("pola", "później", "określ", "folder"); string expecte = "C:\\Folder wyjściowy\\fields\\the later\\determine\\a folder"; ciąg rzeczywisty = cel.GetPath(); Assert.AreEqual(oczekiwany, rzeczywisty, "GetPath powinien zwrócić pełną ścieżkę katalogu na podstawie jego pól."); } [TestMethod] public void GetPath_Softcoded() { MyClass target = new MyClass("pola", "później", "określ", "folder"); string oczekiwane = "C:\\Output Folder\\" + string.Join("\\", target.Field1, target.Field2, target.Field3, target.Field4); ciąg rzeczywisty = cel.GetPath(); Assert.AreEqual(oczekiwany, rzeczywisty, "GetPath powinien zwrócić pełną ścieżkę katalogu na podstawie jego pól."); } **EDYTUJ 1:** W odpowiedzi na odpowiedź DXM, czy opcja 3 jest preferowanym rozwiązaniem? [TestMethod] public void GetPath_Option3() { string pole1 = "pola"; string field2 = "to później"; string field3 = "określ"; string field4 = "folder"; MyClass target = new MyClass(field1, field2, field3, field4); oczekiwano ciągu = "C:\\Folder wyjściowy\\" + string.Join("\\", pole1, pole2, pole3, pole4); ciąg rzeczywisty = cel.GetPath(); Assert.AreEqual(oczekiwany, rzeczywisty, "GetPath powinien zwrócić pełną ścieżkę katalogu na podstawie jego pól."); }


title: Wyjdź z rozmowy kwalifikacyjnej - co jest, a co nie?

text: Jest wiele pytań dotyczących rekrutacji na rozmowy kwalifikacyjne, ale tego samego nie można powiedzieć o rozmowach kwalifikacyjnych. Ponieważ w niedalekiej przyszłości zamierzam podjąć nowe wyzwanie, przeprowadzę wywiad końcowy. Moje pytanie brzmi - **co powinieneś powiedzieć w wywiadzie końcowym, a czego unikać?** Ze względu na prywatność i ponieważ to pytanie dotyczy nie tylko mnie, nie zamierzam podawać szczegółów. Zacznę - myślę, że można narzekać na: * infrastrukturę (tj. używany sprzęt) * nadgodziny (jeśli są regularne) * nierozsądne terminy Ale nie na: * zarządzanie :) * wynagrodzenie To są po prostu off-the-top- przykłady z mojej głowy. Moim zdaniem nie powinno się palić mostów po odejściu, zwłaszcza jeśli firma, z której odchodzisz, jest naprawdę OK, ale milczenie o istniejących problemach jest sprzeczne z celem informacji zwrotnej - być może niektóre sugestie lub skargi będą przemyślane i ustalone. Mam nadzieję, że to właściwe miejsce, aby o to zapytać :)


title: Reprezentacja UML określonego wzorca fabryki

text: Muszę utworzyć diagram klas UML z następującego przykładowego kodu (Perl). Nie sądzę, aby standardowy wzorzec fabryczny pasował w moim przypadku lub nie rozumiem go poprawnie. Nie mam `AbstractFactory` i `ConcreteFactory`, ale jedną `Factory`. Jak ten przykład wygląda na diagramie klas UML? **Edytuj** : To tylko bardzo płaski i prosty przykład. Prawdziwa aplikacja ma wiele „Typów” z całkowicie różnymi przepływami pracy. Diagram klas ma na celu uzyskanie przeglądu struktury dziur. Nie tak naprawdę dla wewnętrznego przepływu pracy, jak robią to diagramy sekwencji. pakiet Moduł::Fabryka; sub new { bless { type => $_[1] }, $_[0]; } sub create { my( $self, $name ) = @_; my $object = "Module::Types::$self->{type}"->new( $name ); return( $obiekt ); } pakiet Module::Types::Test1; sub nowy { bless { name => $_[1] }, $_[0]; } test podrzędny { my( $self ) = @_; powiedz "Witaj, $self->{name}."; return( $self ); } pakiet Module::Types::Test2; sub nowy { bless { name => $_[1] }, $_[0]; } test podrzędny { my( $self ) = @_; powiedz "Pa, $self->{name}."; return( $self ); } # jeszcze więcej Module::Types::TestN pakiety... pakiet główny; foreach my $type ( qw( Test1 Test2 ) ) { my $factory = Module::Factory->new( $type ); foreach my $name ( qw( World John Peter ) ) { my $object = $factory->create( $name ); $obiekt->test(); } }


title: Zdarzenie AJAX, zapobiega innym akcjom na stronie

text: Oto dość przeciętny scenariusz na przykładzie JSF, ale tę samą koncepcję zaobserwowałem w ASP.NET, Apache Wicket i innych frameworkach z możliwościami ajax. <h:inputText id="text1" value="#{myBacker.myBean.myStringVar}" styleClass="goodCSS"> <f:ajax event="change" listener="#{myBacker.text1ChangeEventMethod}" update="someOtherField " /> </h:inputText> <h:selectBooleanCheckbox id="check1" value="#{myBacker.myBean.myBoolVar}" /> Załóżmy, że 'text1ChangeEventListener' jest niezbędny do 'someOtherField' i być może przełącza jego wyłączenie lub zmienia dostępne opcje na podstawie wartości „myStringVar”. Szczegóły nie są ważne, po prostu zaakceptujmy, że z jakiegoś powodu potrzebujemy wywołania ajax, gdy zmieni się wartość 'text1'. Więc Jane User idzie w dół formularza. Dociera do pola „text1” i wpisuje jakąś wartość. Fokus kursora nadal znajduje się w polu tekstowym, gdy przesuwa kursor myszy na pole wyboru 1 i klika. Wydaje jej się, że nic się nie stało. Ponownie klika i tym razem pole wyboru zostaje podświetlone, a w polu pojawia się ikona wskazująca wybór. Jane musi dziś zrobić kilka wpisów w formularzu i widzi, że to się dzieje za każdym razem, co staje się dla niej bardzo frustrujące. Podobnie Jeff Admin również przegląda ten formularz i zaczyna wpisywać „text1”. Następnie uświadamia sobie, że tak naprawdę nie chce wprowadzać tych danych, więc przesuwa mysz na przycisk „Anuluj” w innym miejscu na stronie i klika. Wydaje się, że nic się nie dzieje. Jeff klika ponownie, a po potwierdzeniu, że naprawdę chce anulować, wraca na stronę główną. Jeff drapie się po głowie. Problem polega po prostu na tym, że pierwszą rzeczą, jaką robi system po tym, jak 'text1' traci fokus, jest uruchomienie słuchacza i wykonanie operacji ajax. Może to zająć tylko ułamek sekundy, ale nadal możesz klikać inne przyciski, ile chcesz, ale dopóki ajax się nie skończy, wszystko inne jest ignorowane. Spędziłem poranek szukając i czytając i wygląda na to, że nikt inny nawet tego nie zauważył. Nie mogłem znaleźć ani jednego artykułu, bloga, poprzedniego pytania tutaj lub w SO, ani niczego, co odnosiłoby się do tego oczywistego i rażącego braku ajaxu. Więc po pierwsze, czy naprawdę jestem osamotniony w myśleniu, że to duży problem? Po drugie, czy ktoś ma rozwiązanie?


title: Konfigurowalne tabele w bazie danych sql

text: W mojej bazie danych mam następujące tabele: Config Table: ======================================= Start_Zakres | Koniec zakresu | Config_id 10 | 15 | 1 ====================================== Available_UserIDs =========== ================ ID | Identyfikator użytkownika | Używane_YN | 1 | 10 | t | 1 | 11 | f | 1 | 12 | f | 1 | 13 | f | 1 | 14 | f | 1 | 15 | f | =========================== Użytkownicy ======================== === Identyfikator użytkownika | FNazwa | LNazwa | 10 | Jan | Łania | ========================== Jest to używane w pewnego rodzaju systemie rezerwacji... który pozwala administratorowi określić zakres numerów, które będą przypisane do użytkowników w tabeli konfiguracyjnej. Po zdefiniowaniu zakresu system wypełnia tabelę Available_userIDs wszystkimi liczbami znajdującymi się pomiędzy zakresem i ustawia flagę Used_YN na wartość false Podczas rejestracji użytkownicy pobierają kolejny numer identyfikatora użytkownika, który nie jest używany... i rezerwują to. Następnie system dodaje rekord do tabeli Użytkownicy. Gdy administrator określi zakres, możliwe jest, że może go zmienić. Na przykład, mogą zaczynać się od 10-15 ... a następnie, gdy zakres zostanie wyczerpany, powinni być w stanie określić inny zakres, taki jak 16 - 99. Umieściłem unikatowe ograniczenie w tabeli Available_UserIDs, a także w tabeli Użytkownicy — aby upewnić się, że identyfikatory użytkowników nie mogą być zduplikowane. Moje pytania są następujące: 1. Jaki jest najlepszy sposób, aby uniemożliwić administratorom korzystanie z zakresu, który jest już używany? Myślałem o następujących opcjach: \-- sprawdź tabelę Użytkownicy, aby zobaczyć, czy używany jest zakres początkowy lub końcowy. Jeśli tak, załóż, że wszystkie liczby pomiędzy nimi również są w użyciu i odrzuć zakres. \-- pozwól im określić, co chcą, spróbuj wypełnić tabelę Available_UserIDs. Jeśli istnieją duplikaty, po prostu zignoruj ten konkretny komunikat o błędzie z bazy danych i kontynuuj. 2. Jak znaleźć luki w zakresach liczbowych? Na przykład, jeśli podają 10-15, a następnie 20-25, byłoby miło móc w jakiś sposób zasugerować na mojej stronie internetowej, że 16-19 jest obecnie dostępne. Znalazłem ten artykuł: http://stackoverflow.com/questions/1312101/how-to-find-a-gap-in-running-counter-with-sql Ale wydaje się, że zwraca tylko pierwszy dostępny numer ... więc w moim przykładzie powyżej zwróci tylko liczbę 16. Jestem pewien, że istnieje prostszy sposób na zrobienie rzeczy, których przeoczam!


title: Maszyna wirtualna dla języka programowania wysokiego poziomu a system operacyjny

text: Ostatnio uderzyło mnie, że maszyna wirtualna dla języka programowania wysokiego poziomu jest bardzo podobna do systemu operacyjnego. Zarządza zasobami m.in. stos, sterta itp. podobnie jak system operacyjny zarządza zasobami i jeśli język programowania obsługuje wątki, maszyna wirtualna również dzieli czas i przełącza kontekst, podobnie jak robi to system operacyjny. Jak daleko można posunąć tę analogię? Dlaczego nie mamy implementacji JVM w wersji bare metal? Wygląda na to, że wszystkie elementy są tam, więc jaki dokładnie jest powód, dla którego takie rzeczy nie są bardziej rozpowszechnione?


title: Jak zbudować relacyjną bazę danych na magazynie klucz-wartość, interfejsie SQL a-la Berkeley DB?

text: Sprawdzałem Berkeley DB i byłem pod wrażeniem, że obsługuje interfejs SQL, który jest „prawie identyczny” z SQLite. http://docs.oracle.com/cd/E17076_02/html/bdb-sql/dbsqlbasics.html#identicalusage Jestem bardzo ciekawy, na wysokim poziomie, jak ten rodzaj interfejsu mógł być zaprojektowany. Na przykład: * ponieważ wartości są „przezroczyste”, jak efektywnie wykonywać zapytania i sortować według wartości * w jaki sposób limity i przesunięcia są wykonywane wydajnie na dużych zestawach wyników * jak klucze byłyby zorganizowane i serializowane w celu uzyskania dobrej wydajności dla średniej wielkości liter


title: Implementacja `let` bez użycia makra

text: Uczę się Lisp i właśnie dostałem się do `pozwól`, czego nie do końca rozumiem (wdrożenie). Powszechną definicją jest termin „lambda” jako makro. Jednak nigdzie nie widziałem, że `niech` **musi** być zaimplementowane jako makro lub w kategoriach `lambda`. Czy można zdefiniować „let” bez użycia makra lub „lambda”? Wiem, że można to zaimplementować jako prymityw, ale chcę wiedzieć, czy można to zaimplementować **w Lisp** bez tworzenia makra -- tworząc specjalny formularz lub funkcję.


title: Czy programiści powinni preferować tworzenie szerokich bibliotek czy cienkich bibliotek?

text: W przypadku klas i funkcji jest jasne: każda powinna robić tylko jedną rzecz. Jednak w przypadku bibliotek jest to mniej jasne. Jeśli masz bibliotekę z kolekcjami, może ona mieć wiele kolekcji. Może mieć przydatne funkcje, takie jak sortowanie, które nie są ściśle oparte na kolekcjach, ale użytkownicy by tego oczekiwali. Każdy z tych wyników daje „szerszą” bibliotekę. Z drugiej strony jest biblioteka dla określonego typu kolekcji i/lub z niewielką wbudowaną funkcjonalnością. Jeśli chcesz kolejki, to daje kolejkę. Jeśli chcesz posortować tę listę, biblioteka pozwoli ci to zrobić samodzielnie. Jaka jest tutaj najlepsza praktyka (jeśli w ogóle)? Widzę argumenty dla każdej ze stron.


title: Programowanie oparte na zachowaniu i testowanie jednostkowe w Pythonie

text: Możemy być zainteresowani rozpoczęciem włączania zestawu testów jednostkowych do naszego projektu, który jest zakodowany w Pythonie (i używa Redis, PostgreSQL i niektórych bibliotek innych firm, jeśli to pasuje do rozwiązania). Korzyści, które chcemy osiągnąć, to: 1. Gdy projekt nabierze tempa, chcemy być w stanie szybko i sprawnie określić nowe zachowanie, aby poprawić komunikację i produktywność zespołu. Przeczytaj: **Chcemy BDD, ale już zaczęliśmy kodować bez niego**. 2. Doskonałe wsparcie tekstowe (tj. testy można czytać prawie jak tekst naturalny), aby **łatwiej było pisać i czytać testy**. 3. Zdolność do **automatycznego uruchamiania testów** (przynajmniej, aby móc uwzględnić bieganie w skrypcie Bash lub coś takiego). Używamy systemów Windows i Linux do rozwoju oraz serwerów Linux, więc wsparcie dla systemu Linux jest naszym podstawowym wymaganiem. 4. **Integracja z githubem**. Nie wiem, czy jest to możliwe, ale widziałem na githubie kilka projektów, które mają status „Passing” lub „Failing” i byłoby wspaniale mieć to dla naszego projektu. Jakie są dobre narzędzia/biblioteki, które mogą nam w tym pomóc, a co najważniejsze, jakie są dobre sposoby na włączenie BDD do projektu w Pythonie? Dziękuję Ci bardzo! Wszelkie sugestie są mile widziane.


title: Kombinatoryczna eksplozja interfejsów: Ile to za dużo?

text: Jestem stosunkowo nowicjuszem w OOP i mam trochę problemów z tworzeniem dobrych projektów, jeśli chodzi o interfejsy. Rozważmy klasę A z N metodami publicznymi. Istnieje wiele innych klas, B, C, ..., z których każda oddziałuje z A w inny sposób, to znaczy uzyskuje dostęp do pewnego podzbioru (<= N) metod A. Maksymalny stopień enkapsulacji osiąga się poprzez zaimplementowanie interfejsu A dla każdej innej klasy, tj. `AInterfaceForB`, `AInterfaceForC` itd. Jednakże, jeśli B, C, ... itd. również współdziałają z A i ze sobą, wtedy nastąpi kombinatoryczna eksplozja interfejsów (maksymalnie n(n-1)), a korzyści z enkapsulacji przeważą rozrost kodu. **Jaka jest najlepsza praktyka w tym scenariuszu?** Czy cały pomysł ograniczania dostępu do funkcji publicznych klasy na różne sposoby dla innych klas jest po prostu głupi? Można sobie wyobrazić język, który wprost dopuszcza taki rodzaj enkapsulacji (np. zamiast deklarować funkcję public, można by określić dokładnie, dla jakich klas jest ona widoczna); Ponieważ nie jest to cecha C++, może błędem jest próba zrobienia tego tylnymi drzwiami z interakcjami?


title: Co powinna obejmować walidacja obiektu domeny?

text: Próbuję dowiedzieć się, jak wykonać walidację obiektów domeny, które wymagają zasobów zewnętrznych, takich jak mapery danych/dao Po pierwsze tutaj jest moja klasa kodu User { const INVALID_ID = 1; const INVALID_NAME = 2; const INVALID_EMAIL = 4; int getID(); void setID(Int i); ciąg pobierzNazwę(); void setName(String s); ciąg getEmail(); void setEmail(String s); int getErrorsForInsert(); // zwraca maskę bitową dla stałych INVALID_* int getErrorsForUpdate(); } Moje obawy dotyczą wyjątkowości wiadomości e-mail, sprawdzenie jej wymagałoby warstwy przechowywania. Czytanie kodu innych wydaje się, że dwa rozwiązania są jednakowo akceptowane: oba wykonują unikalną walidację w mapowaniu danych, ale niektórzy ustawiają stan błędu na DO `user.addError(User.INVALID_EMAIL)`, podczas gdy inni wolą zgłaszać zupełnie inny typ wyjątku który obejmuje tylko trwałość, na przykład: UserStorageException { const INVALID_EMAIL = 1; const INVALID_CITY = 2; } Jakie są plusy i minusy tych rozwiązań?


title: Czy można zwrócić kod HTML z interfejsu API JSON?

text: W moim obecnym projekcie jestem odpowiedzialny za wdrożenie usługi, która wiąże się z konsumpcją nowo utworzonych RESTful API, udokumentowanych jako wyłącznie wspierające JSON. Klient konsekwentnie wysyła żądania z akceptowanym nagłówkiem „application/json” i typem treści „application/json”. Jednak niektóre punkty końcowe wysyłają odpowiedź z treścią HTML, nawet treścią HTML. Dla mnie jest to oczywiście złe podejście i nigdy nie może być usprawiedliwione. W całym projekcie ta sama praktyka została zastosowana u dwóch różnych dostawców i dwóch różnych usług. Musiałem uzasadnić, dlaczego usługi musiały zostać zmienione. Sprzedawcy stwierdzili, że klient powinien sobie z tym poradzić i nawet moja wybrana biblioteka REST została zakwestionowana (RestEasy), ponieważ domyślnie nie radzi sobie z tym „po wyjęciu z pudełka”. To był główny punkt frustracji. Nie mogę znaleźć wielu odniesień na poparcie mojego argumentu, zakładam, że dzieje się tak, ponieważ kwestia jest niema, ponieważ jest tak oczywista. Pytanie brzmi, czy czegoś mi brakuje? Jestem w tym pedantyczny? Czy w tym scenariuszu można mieć interfejs API JSON, który nie ma typu zawartości aplikacji/json? Referencje będą mile widziane. Jak rozwiązać tę sytuację z komercyjnego punktu widzenia?


title: Rysowanie największego możliwego okręgu wewnątrz wielokąta - JSXGRAPH

text: Udaje mi się stworzyć okrąg wewnątrz trójkąta za pomocą tego kodu, ale okrąg wewnątrz innych wielokątów nie ma maksymalnego rozmiaru: var p1 = board.create("point", [0.0, 2.0]); var p2 = board.create("punkt", [2.0, 1.0]); //var pol = board.create("wielokąt regularny", [p1, p2, 3]); var pol = board.create("wielokąt regularny", [p1, p2, 4]); //var pol = board.create("wielokąt regularny", [p1, p2, 5]); board.create("incircle", pol.vertices); Jaki jest najłatwiejszy sposób na narysowanie maksymalnego okręgu wewnątrz kwadratu i pięciokąta? Co powiesz na najmniejszy okrąg wokół wielokąta?


title: Czego używasz do zarządzania serwerami SSH w OS X?

text: Pochodząc z systemu Windows, często używałem Putty, ponieważ mógł przechowywać listę hostów, z którymi często się łączę, zapewniał łatwe w użyciu podwójne kliknięcie, a następnie tworzył terminal. Czy istnieje preferowane rozwiązanie dla OSX?


title: Jakie są fałszywe pomysły, które zniechęcają ludzi do korzystania z wątków?

text: Implementacja wątków w programie jest trudna, owszem, ale dlaczego niektórzy ludzie nie zaimplementują ich, nawet jeśli jest to oczywista potrzeba. Przykład: Program musi załadować zestaw danych z bazy danych, wystarczy nawiązać połączenie i pobrać dane z bazy danych w wątku roboczym, a następnie załadować je do GUI, pozostawiając wątek GUI responsywny dla użytkownika . Ale nie, rozmawiałem z ludźmi, którym wydaje się, że nici są złe i złe i tak dalej i należy ich unikać za wszelką cenę. Słyszałem nawet, że jakiś instruktor zajęć odradzał używanie nici i dlatego nie chciał ich ukrywać. CO??? Ponieważ sprzęt przechodzi na wielordzeniowy, myślę, że musimy lepiej rozumieć wątki i nie bać się ich używać. Osobiście uważam to za fascynujący temat. Więc jakie rzeczy, które słyszałeś o wątkach, są fałszywe?


title: Jak ustrukturyzować dokumentację opisującą proces?

text: Piszę dokument opisujący zalecenia dotyczące usprawnienia procesu. Mam kilka najlepszych praktyk, których się do tej pory nauczyłem. Używam tych praktyk przez większość czasu. Przypuszczam jednak, że istnieją inne sposoby podejścia do zadania napisania formalnego dokumentu opisującego proces. Jak więc zazwyczaj układasz swoją dokumentację? Jak już mogliście się dowiedzieć, szczególnie interesuje mnie konstruowanie formalnych dokumentów opisujących procesy, które zazwyczaj są tworzone przez QA, a czasem Project Managerów. Jakie sekcje powinien zawierać? Moje dokumenty zazwyczaj zawierają następujące sekcje: 1. Treść 2. Cel 3. Zakres 4. Terminy i skróty 5. Dane wejściowe 6. Opis procesu 7. Artefakty 8. Wyniki Co jeszcze powinno być? Czy o czymś zapomniałem? Czy istnieją inne podejścia do strukturyzowania dokumentów formalnych? Bardzo cenimy sobie linki do opisów najlepszych praktyk.


title: Przekazanie przedmiotu do metody, która go zmienia, czy jest to powszechny (anty-) wzorzec?

text: Czytam o powszechnych zapachach kodu w książce Martina Fowlera Refactoring. W tym kontekście zastanawiałem się nad wzorcem, który widzę w bazie kodu i czy można go obiektywnie uznać za antywzorzec. Wzorzec to taki, w którym obiekt jest przekazywany jako argument do jednej lub więcej metod, z których wszystkie zmieniają stan obiektu, ale żadna z nich nie zwraca obiektu. Opiera się więc na przejściu przez referencję (w tym przypadku) C#/.NET. var coś = nowa Rzecz(); // ... Foo(coś); int wynik = Bar(coś, 42); Baz(coś); Uważam, że (zwłaszcza gdy metody nie są odpowiednio nazwane) muszę przyjrzeć się takim metodom, aby zrozumieć, czy stan obiektu się zmienił. To sprawia, że zrozumienie kodu jest bardziej złożone, ponieważ muszę śledzić wiele poziomów stosu wywołań. Chciałbym zaproponować ulepszenie takiego kodu, aby zwracał inny (sklonowany) obiekt z nowym stanem lub cokolwiek, co jest potrzebne do zmiany obiektu w miejscu wywołania. var coś1 = nowa Rzecz(); // ... // Zwróćmy nową instancję Thing var coś2 = Foo(coś1); // Użyjmy param, aby 'zwrócić' inne informacje o operacji int wynik; var coś3 = Bar(coś2, wynik wyjściowy); // W razie potrzeby przechwyćmy i dokonajmy jawnych złożonych zmian var changes = Baz(coś3) coś3.Apply(changes); Wydaje mi się, że pierwszy wzorzec jest wybierany przy założeniu *, że jest mniej pracy, lub wymaga mniej linii kodu *, że pozwala nam zarówno zmienić obiekt, **i** zwrócić jakąś inną informację *, że jest jest bardziej wydajny, ponieważ mamy mniej wystąpień „Rzeczy”. Ilustruję alternatywę, ale żeby ją zaproponować, trzeba mieć argumenty przeciwko oryginalnemu rozwiązaniu. Jakie, jeśli w ogóle, argumenty, które można by argumentować, że oryginalne rozwiązanie jest antywzorcem? A co, jeśli w ogóle, jest nie tak z moim alternatywnym rozwiązaniem?


title: Jak nazywa się ten rodzaj refaktoryzacji?

text: Jestem pewien, że istnieje termin na następujący fragment refaktoryzacji, ale nie pamiętam go, a moje Google-fu mnie zawodzi! Refaktor przenosi instrukcje if tam, gdzie będą miały największy wpływ, na przykład zmieniając to $test = someFunctionThatReturnsABool(); for($x = 0; $x < 10000; $x++) { if ($test) { echo $x; } } Do tego $test = someFunctionThatReturnsABool(); if ($test) { for($x = 0; $x < 10000; $x++) { echo $x; } }


title: Co dzieje się inaczej, gdy dodajesz zadanie asynchronicznie w GAE?

text: Dokument Google dotyczący zadań asynchronicznych zakłada znajomość różnicy między zadaniami dodanymi zwykłymi i asynchronicznymi. > `add_async(task, transactional=False, rpc=Brak)` > Asynchronicznie dodaj zadanie lub listę zadań do tej kolejki. W jaki sposób asynchroniczne dodawanie zadań różni się od ich regularnego dodawania. Tj. jaka jest różnica między używaniem `add(task, transactional=False)` a `add_async(task, transactional=False, rpc=None)` Słyszałem, że regularne dodawanie zadań **blokuje** pewne rzeczy. Jakiekolwiek wyjaśnienie tego, co blokuje i jak, oraz w jaki sposób zadania **async** nie blokują, byłyby mile widziane.


title: Jakie algorytmy pasowałyby do podsumowania kolorów obrazu?

text: Chciałbym przeanalizować zestaw setek tysięcy zdjęć produktów (ubrania, sprzęt elektroniczny itp.) i odnaleźć w każdym z nich dominujące kolory. Interesują mnie tylko 3 lub 4 najlepsze kolory. Celem jest osiągnięcie pewnego stopnia pewności, że obraz x jest w większości czerwony lub obraz y jest w większości pomarańczowy i niebieski. Obrazy będą prawdopodobnie kolorowymi jpegami o rozsądnej jakości i wielkości około 100 kb. Chciałbym używać C#, a rozwiązanie powinno działać na serwerze Linux, najlepiej przy użyciu bibliotek open source. Jakie algorytmy lub techniki przetwarzania obrazu mogą mi w tym pomóc?


title: Dlaczego frameworki internetowe nie są proste, eleganckie i zabawne jak języki programowania?

text: Kiedy myślę o prawie każdym języku programowania - takim jak C, C++, PHP, SQL, JavaScript, Python, ActionScript, Haskell, Lua, Lisp, Java itp. - jestem niesamowity, chciałbym stworzyć aplikację komputerową przy użyciu dowolnego tych języków. Ale kiedy myślę o frameworkach webowych (robię głównie PHP) - jak Cake, CI, Symfony, Laravel, Zend, Drupal, Joomla, Wordpress, Rails, Django, etc - jestem jak bóg nie. Dlaczego nie ma frameworków internetowych, które zapewniają mi proste, zabawne i potężne konstrukcje, takie jak język programowania?


title: Zasoby inspiracji do projektowania interfejsu użytkownika na komputery stacjonarne

text: Czy w przypadku aplikacji komputerowych ktoś ma dobrą witrynę internetową prezentującą najlepszy interfejs użytkownika aplikacji komputerowej? Szukam inspiracji do mojej aplikacji. Istnieje wiele stron internetowych dla aplikacji internetowych ... nie mogę znaleźć żadnej dla aplikacji desktopowych.


title: Jakie jest najlepsze podejście do integracji z Facebookiem?

text: Mam nową witrynę/aplikację, która zostanie opublikowana w przyszłym tygodniu (lub gdzieś w pobliżu). Wiem, że na Facebooku będzie stosunkowo mała (15 000?) bardzo oddana grupa ludzi, którzy będą bardzo zainteresowani stroną, więc wiem, że potrzebuję jakiejś integracji z Facebookiem. Nie będę jeszcze logował się na Facebooku ani nie przeciągał/publikował na profilach, ale planuję... Pytanie: * Czy na razie robię tylko „stronę” na Facebooku? Jest to szybsze/łatwiejsze w konfiguracji i wydaje się trochę mniej błędne… a później migracja do aplikacji na Facebooku? lub * Czy mam utworzyć „aplikację na Facebooku” (z kluczem/identyfikatorem/sekretem interfejsu API itp.), nawet jeśli nie robię nic poza przyciskiem „Lubię to”. Oznacza to, że nie mam później żadnej migracji i mogę używać interfejsu API javascript do rejestrowania kliknięć przycisku „Lubię to” w Google Analytics itp. Myśli? Doświadczenie? Czy istnieje proces migracji, aby przenieść starych użytkowników strony do nowej „aplikacji”? Jakie są zalety / wady każdego z nich.


title: Jaka jest kanoniczna odpowiedź na „Nie możesz przesłać łatki do tego projektu open source, ponieważ nie jesteś autorem zmian”?

text: Niektóre projekty zezwalają autorom jedynie na przesyłanie łat, ponieważ chcą zachować „czysty” adres IP. nie tylko osoby, które nie wprowadzają poprawek, nie mogą przesyłać łatek, ale również osoby zgłaszające nie mogą przeglądać Twojego kodu, aby nie zostały skażone własnością intelektualną o nieznanym pochodzeniu. zamiast tego możesz rozpocząć dyskusję na ich listserv lub przesłać zgłoszenie, a wtedy twórcy zdecydują, czy twoja funkcja jest warta.


title: Czy istnieją dobre przypadki użycia zmiennych zmiennych?

text: Dzisiaj natknąłem się na ten mały klejnot PHP zwany zmiennymi zmiennymi. $literał = "Cześć"; $vv = "dosłowny"; echo $$vv; // => drukuje "Hello" Czy faktycznie istnieją jakieś rzeczywiste przypadki użycia tej funkcji języka?


title: Jakie jest najlepsze podejście do tworzenia aplikacji JavaScript dla wielu przeglądarek?

text: Jako jeden z moich letnich projektów chciałbym samodzielnie zbudować program AJAX. Nie za duży. Jestem nowy w całej sprawie, jednak mam ogólną wiedzę z zakresu programowania i dobre zrozumienie przepływu pracy w sieci. Jeśli chodzi o standardy W3C, czy to źle trzymać się ich tak, jakby były _platformą_? Czy dobrym pomysłem jest pisanie kodu z myślą o jednej platformie (np. Firefox 3 + Win7) i włączanie go do różnych przeglądarek _po skończeniu początkowego kodu_? Ogólnie rzecz biorąc, w jakim stopniu kompatybilność przeglądarek stanowi obecnie problem?


title: Metody uczenia się / nauczania programowania

text: Kiedy byłem w szkole, miałem problemy z programowaniem z powodu paragrafu 22 w procesie uczenia się: 1. Nie wiedziałem, jak coś napisać, ponieważ nie wiedziałem, co oznaczają słowa kluczowe i polecenia. Na przykład (jako student myślałem), "co w ogóle robi to `używanie przestrzeni nazw std;`? 2. Nie wiedziałem, co oznaczają słowa kluczowe i polecenia, ponieważ nic nie napisałem. To w zasadzie doprowadziło mnie do spędzenia niezliczonych długich nocy przeklinających kompilator, gdy wprowadzałem drobne poprawki do moich zadań, dopóki nie zostaną skompilowane (i miejmy nadzieję, że wykonają dowolną operację, którą powinni). Staram się, aby to było niekłótliwe, dlatego nie chcę znać „najlepszej” metody, a raczej jakie metody istnieją.


title: Dodanie minimalnego progu nakładania się prostokąta

text: Mam funkcję, która działa idealnie do wykrywania, czy r1 nakłada się na r2: boolean nakładki (prostokąt r1, prostokąt r2) { return r1.x < r2.x + r2.width && r1.x + r1.width > r2. x && r1.y < r2.y + r2.wysokość && r1.y + r1.wysokość > r2.y; } Ale teraz chciałbym dodać minimalny próg, aby zwracał true, jeśli r1 zachodzi na r2 przynajmniej o podaną długość. Oto, co mam do tej pory, ale nie miałem szczęścia: boolean nakładki ( Rectangle r1, Rectangle r2, float threshold ) { return r1.x < r2.x + r2.width && r1.x + r1.width > r2. x + próg && r1.y < r2.y + r2.height && r1.y + r1.height > r2.y + próg; }


title: Gettery i settery w językach funkcjonalnych

text: Jedną z zasad programowania funkcjonalnego jest użycie czystych funkcji. Czysta funkcja to taka, która jest wolna od efektów ubocznych i referencyjna przezroczysta. **Gettery** nie są referencyjnie przezroczyste - jeśli między wywołaniami gettera jest wywoływany setter, wartość zwracana przez getter zmienia się, mimo że jego parametry nie mają (zwykle nie mają parametrów) **Settery** powodują skutki uboczne - Wywołanie metody ustawiającej zazwyczaj manipuluje wartością, która nie jest jego wartością zwracaną (w rzeczywistości, tradycyjnie ustawiający nic nie zwraca) Wiem, że w Scali po prostu akceptujemy fakt, że łączymy dwa paradygmaty (funkcjonalne i zorientowane obiektowo) i używamy getterów/setterów tak, jak byśmy chcieli w języku takim jak Java. W języku takim jak Haskell (którym nie jestem biegły, ale powiedziano mi, że jest bardziej wierny "czystemu" językowi funkcjonalnemu) jestem po prostu ciekawy, jak modelować właściwości na obiektach tak, aby Gettery były referencyjnie przezroczyste, a Settery są wolne od skutków ubocznych? Czy rozwiązaniem byłoby przekazanie kopii obiektu, dla którego wywołano ustawiającego, jako wartość zwracaną przez ustawiającego, a ta kopia zawiera zmianę wartości właściwości?


title: Czy warto uczyć się GWT lub Vaadin?

text: Uważam się za porządnego programistę java/web. W swojej karierze zawsze używałem serwletów i ejb z interfejsem WWW, ostatnio włączając jquery i ajax. Widzę teoretyczną korzyść z używania GWT lub Vaadin: rozumiem, że konwertują kod Java do wymaganego JavaScript/HTML. Deweloper uzyskuje więc korzyści z kompatybilności z różnymi przeglądarkami i sprawdzania błędów w czasie kompilacji (elementów webowego GUI). Moje pytanie jest potrójne: 1. Czy są jakieś inne korzyści, których mi brakuje, a które można by osiągnąć używając Vaadin lub GWT? 2. Właściwie jestem całkiem pewny siebie i produktywny używając HTML i JavaScript - więc czy rzeczywiście zobaczę jakieś korzyści? A może po prostu sprawi, że moja wiedza na temat tych obszarów będzie zbędna (ponieważ są one obsługiwane przez GWT/Vaadin)? 3. Czy w efekcie końcowym będę mógł tworzyć witryny oparte na danych w skali korporacyjnej w rozsądnie krótkim czasie? Jednak już mogę to zrobić i nie zmarnowałem czasu na naukę GWT/Vaadin.


title: Rozwijanie zespołu programistów

text: Mam więc aplikację internetową, którą muszę zbudować. Aplikacja zostanie wykonana w środowisku LAMP. Otrzymuję zasoby, aby sprowadzić 2 innych programistów do pracy w moim zespole. Mam wcześniej doświadczenie w prowadzeniu zespołu i architekturze, więc przejęcie kontroli nie stanowi problemu. Przeszkodą, której doświadczam, jest to, że obecnie mieszkam w kraju rozwijającym się. Mają mnóstwo programów dla inżynierów oprogramowania na uniwersytetach, ale nie ma szkoleń/zajęć na temat naprawdę wszystkiego, co dotyczy LAMP. To wszystko jest w C++/Java. Mam więc zestaw życiorysów, które wybrałem jako doświadczonych programistów, którzy wydają się inteligentni siedząc przede mną. Pochodzą z różnych środowisk, w tym kilku programistów Javy, faceta ze starej szkoły typu C++/MFC, kilku programistów C# i całą grupę młodych programistów spoza szkoły C++/Java. Szczerze mówiąc już opieram się na jednym ze sposobów, który moim zdaniem uformowałby najłatwiejszego do tworzenia stron internetowych, ale ponieważ nie jestem programistą aplikacji (ekspozycja w szkole, ale to było jakiś czas temu), pomyślałem, że mogę go otworzyć i Zapytaj was: Jak myślicie, który z tych zestawów umiejętności doprowadziłby do najłatwiejszego przejścia do tworzenia stron internetowych? Jestem szczególnie ciekaw, aby usłyszeć od każdego, kto przeszedł od strony aplikacji do tworzenia stron internetowych.


title: C# Pojedyncze wystąpienie formularza

text: Mam 3 formularze. Formularz 1 zawiera informacje wstawione do Formularza 2. Po kliknięciu przycisku na Formularzu 2, aby przejść do Formularza 3; na formularzu 3 ściągam dane i umieszczam je na formularzu 2. Problem polega na tym, że nie wiem, jak uzyskać pojedynczą instancję formularza 2, aby móc zachować dane z formularza 1 po pobraniu danych z formularza 3. To jest aplikacja WinForms. Każda pomoc byłaby bardzo mile widziana. Przyjrzałem się, jak to robi Singleton, ale wszystko, co badam, wydaje się zbyt mylące, abym mógł je śledzić. Dziękuję!


title: Uzyskaj 100 najwyższych liczb z nieskończonej listy

text: Jednemu z moich znajomych zadano to pytanie z wywiadu -> „Istnieje stały przepływ liczb pochodzących z jakiejś nieskończonej listy > liczb, z których musisz zachować strukturę danych, aby zwrócić > 100 najwyższych liczb w dowolnym momencie czasu. Załóżmy, że wszystkie liczby > są tylko liczbami całkowitymi”. To proste, musisz zachować posortowaną listę w porządku malejącym i śledzić najniższy numer na tej liście. Jeśli uzyskany nowy numer jest większy niż najniższy numer, musisz usunąć ten najniższy numer i wstawić nowy numer do posortowanej listy zgodnie z wymaganiami. Następnie rozszerzono pytanie - > "Czy możesz upewnić się, że Zamówienie do wstawienia powinno być O(1)? Czy jest > możliwe?" O ile mi wiadomo, nawet jeśli dodasz nowy numer do listy i posortujesz go ponownie za pomocą dowolnego algorytmu sortowania, najlepiej będzie to O(logn) dla szybkiego sortowania (chyba). Więc mój przyjaciel powiedział, że to niemożliwe. Nie był jednak przekonany, poprosił o zachowanie innej struktury danych niż listy. Myślałem o zrównoważonym drzewie binarnym, ale nawet tam nie dostaniesz wstawiania w kolejności 1. Więc to samo pytanie mam teraz. Chciałem wiedzieć, czy istnieje taka struktura danych, która może wykonać wstawianie w kolejności 1 dla powyższego problemu, czy w ogóle nie jest to możliwe.


title: Skąd wiesz, że warto pracować w firmie, czy nie?

text: Odchodzę z obecnej firmy i szukam lepszego miejsca do pracy. Ale tym razem jestem zdezorientowany. Nie chcę znowu wchodzić i wychodzić za sześć miesięcy. Chcę znaleźć firmę, w której będę mógł pracować długoterminowo, a to mnie bardzo niepokoi... Jest problem, w moim mieście jest dużo małych firm (30-50 pracowników), więc znalezienie opinii pracowników na temat Internet jest prawie niemożliwy. Więc muszę to znaleźć sam. Więc chcę zapytać, kiedy idziesz na rozmowę kwalifikacyjną w zupełnie nowej firmie, jak patrzysz na opis stanowiska? spojrzeć na samą firmę? spojrzeć na swoich obecnych pracowników? o co pytasz swojego ankietera? Jak ustalasz, dla której firmy warto pracować, czy nie?


title: Projekt open source, czy powinienem opublikować "... dam ci licencje na ..." czy nie?

text: Właśnie przyjąłem drugiego programistę do projektu open source. Nie powiem co to jest, z oczywistych powodów ( _przeczytaj resztę tego pytania_.) Projekt jest projektem C# / .NET Jakiś czas temu skontaktowałem się z JetBrains, autorami ReSharper, dotCover i TeamCity. Ponieważ jestem liderem projektu open source, otrzymałem licencje „open source” dla ReSharper, dotCover i TeamCity. Ważną częścią jest to, że licencje, które otrzymałem dla projektu, dla tych produktów, są dla **wszystkich** członków mojego projektu, nie tylko dla mnie. Pytanie brzmi: * Kiedy reklama, że projekt wymaga większej liczby osób (tak), czy powinienem wspomnieć o zaangażowanych licencjach? Z jednej strony czuję, że wspomnienie o licencjach może sprawić, że ludzie nie za bardzo zainteresowani projektem będą się o niego ubiegać, ponieważ dostaną te licencje, a tym samym będą ludźmi bardziej zainteresowanymi licencjami niż projektem, czyli „hałasem”. Z drugiej strony, licencje mogą być bonusem,... "wynikiem" ... i tym samym mogą zainteresować więcej osób moim projektem, innymi słowy mogę przyciągnąć ludzi, którzy mogą być bonusem do projektu, który nie byli tego świadomi. Więc... Czy powinienem reklamować licencje, których to dotyczy? Albo nie? * * * **Edytuj** : Ok, jest późno w nocy (w moim małym zakątku świata) i po ponownym przeczytaniu mojego pytania, pozwól mi wyjaśnić, czego naprawdę dotyczy moje pytanie: **Czy ktoś ma jakieś doświadczenie lub wiedza, a za wyjątkiem myśli o tym, jaką różnicę zrobiłoby, gdybym otwarcie napisał, że przystąpienie do mojego projektu dałoby im licencje na produkty X i Y, w przeciwieństwie do nie wspominania o tym, dopóki nie są już członkami ?**


title: Pytanie o college vs. uniwersytet w Kanadzie

text: Więc przeczytałem tutaj post z pytaniem o college kontra uniwersytet i wydawało się, że zgadzam się, że uniwersytet jest tego wart. Moje pytanie brzmi, czy to przez to sprawia, że studia są bezwartościowe? \---szczegóły-- Jestem w takim momencie mojego życia, że chcę zmienić karierę, zawsze pracowałem jako web-dev na boku, a teraz chcę programować jako karierę. Moje dwie opcje to dyplom z programowania komputerowego na Humber, Seneca (lub podobny) lub informatyka na UofT. Mogę dostać się na oba kierunki (ponieważ byłem wcześniej studentem UofT), ale ścieżka uniwersytecka jest znacznie droższa i zajmie 4 lata zamiast 2. Zdaję sobie sprawę, że w idealnym świecie opcja uniwersytecka byłaby lepsza (ogólny konsens w innych wątkach, które czytałem), ale dodatkowe pieniądze i czas byłyby bardzo trudne do pogodzenia, ponieważ w tym czasie będziemy musieli polegać wyłącznie na dochodach mojej żony. Jeśli uniwersytet jest jedyną możliwą opcją, jest szansa, że będę musiał pozbywać się tego marzenia, ponieważ może to być niewykonalne. Skoro nie mam możliwości spędzenia 4 lat na uniwersytecie, czy jest sens zdobywania dyplomu college'u? Dyplom ma trochę konkretnych kursów Java, a nawet Androida, więc mogłem zobaczyć potencjalną ścieżkę kariery, ale poprzednie wątki zniechęciły mnie do tej opcji. Nie chcę spędzić dwóch lat, żeby skończyć z niczym.


title: Ostrzeżenia i błędy kompilatora

text: Pochodzę z tła C# przed moją istniejącą rolą. Zajmuję się tworzeniem aplikacji VB.NET. Kod, który odziedziczyłem, miał opcję ścisłą ustawioną na off i wszystkie inne dyrektywy ustawione na „Brak”. Niedawno włączyłem opcję stricte i poprawiłem wszystkie błędy. Poprawienie wszystkich ostrzeżeń zajmie mi około jednego dnia. Zastanawiam się, czy to dobrze spędzony czas. Aplikacja jest dojrzała i działa bardzo dobrze. Jakie są wskazówki dotyczące ustawiania opcji wyłącznie na ON i poprawiania ostrzeżeń. Zakładam, że nie powinieneś ich ignorować. Jednak dzisiaj przeczytałem w Internecie (chyba było to tutaj), gdzie jeden z pytających powiedział, że nigdy nie zawraca sobie głowy ostrzeżeniami. Z pewnością to jest złe?


title: Zalety i wady korzystania z diagramów klas

text: Wszelkie zalety/wady będą mile widziane!


title: Projekt badawczo-rozwojowy IT i organizacja zespołu

text: Widziałem wiele różnych organizacji projektowych w różnych firmach sektora wyższego, ale nigdy nie czułem, że projekty badawczo-rozwojowe w dziedzinie IT były dobrze zorganizowane. Rozumiem, że projekty badawczo-rozwojowe potrzebują elastyczności i mniej ograniczeń czasowych, aby dać upust innowacjom. Domyślam się, że organizacja projektów B+R musi zostać zrewidowana na pewnym etapie. Jakie masz doświadczenia dotyczące organizacji/metodologii IT R&D - zwłaszcza planowania i zarządzania zasobami? * Czy Ty lub Twój szef planujecie je od początku? * Czy Ty lub Twój szef prosicie o raporty czasowe? * Kiedy Twoim zdaniem nadszedł czas, aby projekt B+R wszedł w „standardowy” etap organizacji projektu? * Pomijając limit czasowy, kiedy uważasz, że nadszedł czas, aby coś zrobić, nawet jeśli cel nie został całkowicie osiągnięty? * Pomijając limit czasowy, kiedy uważasz, że nadszedł czas, aby się poddać, jeśli cel nie zostanie osiągnięty? Oba ostatnie są subiektywne, wiem :/


title: Zrobiło się coś złego, czy powinienem to zatrzymać?

text: Rozdzieliłem repozytorium i rozgałęziłem ten klon, aby zakodować historię, a ponieważ nie zrozumiałem problemu, napisałem kod, który nie rozwiązuje mojego zadania, ale może okazać się przydatny później. Czy powinienem: 1. Usunąć i nie martwić się o to. Następnie zatwierdź bez dodatkowego kodu. 2. Stwórz jeszcze jedną gałąź tylko do tej pracy, zatwierdź ją, ale nie publikuj na niej pull requesta. 3. Po prostu zatwierdź go istniejącym kodem, a później martw się o dodatkowy "puch". Myślałem #2. Jeśli dobrze rozumiem, mogę po prostu zachować dodatkowy kod w gałęzi, której nigdy nie używam na moim klonie, i wykopać go później, jeśli pojawi się coś, co może skorzystać z jego użycia.


title: Jak określić odpowiednią ilość projektu z przodu?

text: Od czasu do czasu programiści są wzywani do pisania dość złożonych fragmentów oprogramowania w napiętych terminach. Często wydaje się, że najszybszą rzeczą do zrobienia jest po prostu rozpoczęcie kodowania i rozwiązywanie pojawiających się problemów. Jednak takie podejście może cię ugryźć – często kosztuje to czas lub pieniądze na dłuższą metę! Jak określić odpowiednią ilość prac projektowych z góry? Jeśli Twoje środowisko pracy aktywnie zniechęca Cię do myślenia o rzeczach z góry, jak sobie z tym radzisz? Jak możemy zarządzać ryzykiem, jeśli wystrzegamy się myślenia z góry (z wyboru lub pod przymusem) i rozpoznajemy problemy w miarę ich pojawiania się? Czy ilość projektu z góry zależy wyłącznie od rozmiaru lub złożoności zadania, czy też opiera się na czymś innym?


title: Jaka jest różnica między przypadkiem użycia, wymaganiami użytkownika i historyjkami użytkownika?

text: Zastanawiam się, na czym polega różnica i na jakim etapie te różne terminy są używane w metodologii Agile/Scrum? `przypadek użycia`, `wymagania użytkownika` i `historie użytkowników` Czy mam rację sądząc, że zaczynają się one na etapie pozyskiwania wymagań jako `przypadki użycia`, a następnie stają się `wymaganiami użytkownika`, które są prawie takie same jak `użytkownik historie” używane w „backlogu produktów”? Próbuję napisać raport uniwersytecki i nie udało mi się znaleźć niczego, co definiuje wszystkie te terminy w tym samym miejscu, co utrudnia zrozumienie różnic. Czy niektóre z tych terminów są w ogóle wymagane w podejściu Agile?


title: Czy każdy test jednostkowy powinien być wykonywany niezależnie od innych testów?

text: Załóżmy, że masz testy dla dwóch metod klasy. Pierwsza metoda zbiera dane z innej warstwy i umieszcza je w jakimś rodzaju pamięci masowej niezależnej od środowiska wykonawczego (takiej jak tabela SQL), więc wszystkie dane obsługiwane przez ten test są na stałe zakodowane w teście. Druga metoda jest odpowiedzialna za pobranie danych z miejsca, w którym pierwsza metoda je pozostawiła i przekształcenie ich w pewien sposób (obliczanie, przenoszenie niektórych części w inne miejsce itp.). Teraz ta druga metoda może mieć zakodowane dane wejściowe, takie jak pierwsza, lub można założyć, że dwa testy zostaną uruchomione sekwencyjnie i może wznowić w miejscu, w którym zakończył się pierwszy test, pobierając dane, które rzeczywiście były przechowywane w pierwszym teście. Gdybyś wybrał drugą opcję, miałbyś naprawdę dobry pomysł, że te dwie metody dobrze ze sobą współgrają, jednak jeśli pierwszy test zakończy się niepowodzeniem, wszystkie testy po nim zakończą się niepowodzeniem, odbierając korzyści płynące z szybszego wyizolowania błędów. Gdybyś wybrał pierwszą opcję, każda metoda byłaby izolowana i testowana niezależnie, ale nigdy tak naprawdę nie wiedziałbyś, że naprawdę mogą ze sobą współpracować. Jaka jest lepsza opcja tutaj? Czy istnieje jakaś alternatywa, jak jeden test dla każdej izolowanej metody z twardym kodowaniem, a następnie większe testy, które zawierają obie metody w jednej?


title: Zminimalizowana wersja biblioteki JavaScript na licencji LGPL używana w witrynie bez informacji o prawach autorskich

text: Na tej stronie hackfind.com autor umieścił skróconą wersję mojej biblioteki bez żadnych informacji o prawach autorskich. Czy to naruszenie LGPL. Pamiętaj, że używanie w witrynie nie jest kopią.


title: Jakiego procesu użyjesz do wyjaśnienia wymagań funkcjonalnych i zebrania wymagań niefunkcjonalnych?

text: Jestem zdezorientowany tym, co różni się między wyjaśnianiem a zbieraniem. Wiem, że za pomocą wywiadu, obserwacji lub kwestionariusza można wywołać żądane wymaganie, ale jak wyjaśnić wymaganie funkcjonalne?


title: Czy powinienem przełączyć się z przestarzałej biblioteki?

text: Na przykład, jakaś biblioteka (w moim przypadku to klejnot rubinowy) stała się przestarzała. A moja aplikacja korzysta z tej biblioteki. Jest ok i nie mam żadnych problemów z tym jak to działa. Kiedy powinienem przełączyć się z przestarzałej biblioteki open-source na coś nowego? Czy w ogóle powinienem?


title: Jaki może być najlepszy sposób na uogólnienie danych z Facebooka i Twittera?

text: Nie jestem pewien, czy jest to najlepsza podstrona, aby zadać to pytanie, ale jestem prawie pewien, że nie pasuje do zwykłej lub facebookowej strony SO ... Poproszono mnie o stworzenie ogólnego interfejsu API do łączenia się z kilkoma Platformy Social Media (obecnie Facebook i Twitter). Zrealizowałem już oba z nich osobno. Oznacza to, że pobieram dane, których potrzebuję, zarówno z Facebooka, jak i Twittera i przechowuję dane we własnej klasie danych. W moim przypadku lista FacebookTimelineItems i TwitterTimelineItems. teraz najtrudniejszą częścią jest wzięcie części, które są używane w obu (nazwa użytkownika, identyfikator, wiadomość itp.) i utworzenie 1 ogólnej klasy, która jest ostatecznie przekazywana do tego, kto/cokolwiek wysłało wywołanie do mojego API. to są dwa zdjęcia klas danych, które mam: http://imageshack.us/photo/my-images/703/facebookdata.png/ http://imageshack.us/photo/my-images/204/twitterdata.png / chyba nie w 100% poprawne, ale daje wyobrażenie jak to wygląda. Teraz mam kilka pomysłów na to, jak podejść i uogólnić te dwie rzeczy, co jest trudniejsze niż myślałem na początku. 1. Utwórz interfejs (TimelineItem) i pozwól innym klasom go rozszerzyć. w ten sposób zawsze będę mieć pewność, że mam klasę zawierającą przynajmniej podstawowe informacje, których potrzebuję. Minusem jest to, że deserializacja JSON wydaje się koszmarem. 2. Użyj dwóch posiadanych przeze mnie dataclass i połącz je później w nową klasę, a następnie przekaż tę klasę z powrotem temu, kto o to poprosił. To prawdopodobnie zadziała, ale wydaje mi się, że nie jest to najlepszy sposób na rozwiązanie tego problemu i jest dość podejrzane, JEŚLI sprawię, że zadziała. Lub w przypadku, gdy pozostałe dwa są prawie niemożliwe. Trzymaj te dwa rozdzielone z przodu i usiądź w kącie płacząc, ponieważ właśnie zorientowałem się, że nie możesz połączyć facebooka i twittera... Uwaga: nie muszę tworzyć przedniej części (widok ), po prostu upewniam się, że Model jest ładnie wypełniony danymi :) Mam nadzieję, że umieściłem to w odpowiedniej sekcji, jeśli nie przepraszam i chciałbym wiedzieć, gdzie mam się udać z moim pytaniem. Z góry dziękuję za wszelkie odpowiedzi/pomysły/opinie na ten temat.


title: Jaki jest najlepszy/najłatwiejszy sposób na zdobycie dyplomu, będąc już doświadczonym programistą?

text: Od pięciu lat jestem aktywnym profesjonalnym programistą (głównie korzystającym z platformy .NET) i nie przesadzając z sobą, powiedziałbym, że jestem bardzo kompetentnym programistą. Jestem na bieżąco z najnowszymi narzędziami, branżą i nowoczesnymi standardami/praktykami. Pracuję dla firmy informatycznej na wysokim poziomie iz resztą radzę sobie całkiem nieźle. Jestem nawet na bieżąco z najnowszymi metodami dynamicznych zespołów i czuję, że mam dobre umiejętności przywódcze/zarządzania/ludzkie. Jednak nigdy nie uzyskałem dyplomu. Nauczyłem się i uczę wszystkiego, co wiem na własną rękę z setek książek i doświadczeń. Przez jakiś czas prowadziłem własną firmę programistyczną, aż około rok temu odniosła duży cios w gospodarce. Zajęło to DUŻO czasu i DUŻO aplikacji, ale w końcu znalazłem pracę, którą mam teraz. Jak idiota rzuciłem studia, aby zrezygnować z płacenia dodatkowego czesnego, założyłem firmę i w miarę upływu życia żałuję, że nie zostałem i dostałem dyplom. Mam kredyty studenckie, które są w spłacie i pracuję nad spłatą tych długów, teraz, gdy znowu zarabiam całkiem sporo pieniędzy. Uderzyłem w zbyt wiele pułapów bez tego stopnia. Po pierwsze, nigdy nie zarobię tyle, co ktoś z takim samym poziomem wiedzy i doświadczenia, ale też z dyplomem. Również wysiłek, jaki trzeba było włożyć w zdobycie pracy w branży bez dyplomu, był wyczerpujący i przygnębiający. Teraz zastanawiam się, jaki jest dla mnie najlepszy sposób na zdobycie dyplomu? 1. Czy istnieją szkoły internetowe, które oferowałyby ten stopień? 2. Czy szkoła internetowa byłaby w ogóle dobrym wyborem? 3. Czy moja wiedza i doświadczenie w branży pomogłyby mi szybciej/taniej ukończyć naukę? 4. Czy ktoś z was znalazł się kiedyś w podobnej sytuacji? Jeśli tak, w jaki sposób pokonałeś wszystkie bariery, które przed tobą postawiłeś? 5. Czy ktokolwiek z was miał kiedykolwiek zaległą pożyczkę studencką i próbował później wrócić do szkoły? Jak sobie z tym poradziłeś i jak to na ciebie wpłynęło?


title: Kapitalizacja stałych hierarchicznych

text: Jeśli stałe mają strukturę hierarchiczną, czy „foldery” również muszą być pisane wielkimi literami? Weźmy na przykład obiekt JavaScript, który musi przechowywać stałe dla odtwarzacza wideo. Czy konwencja polega na kapitalizacji „folderów” wielkimi literami? ODTWARZACZ = { WIDEO: { SZEROKOŚĆ: 640, WYSOKOŚĆ: 480 KODOWANIE: 'h264' }, DŹWIĘK: { SZYBKOŚĆ TRANSMISJI: 128 KODOWANIE: 'mp3' } }; // użycie: alert('Szerokość wideo odtwarzacza to: ' + PLAYER.VIDEO.WIDTH); A może tylko pisać wielkimi literami w węzłach liści? player = { video: { SZEROKOŚĆ: 640, WYSOKOŚĆ: 480, KODOWANIE: 'h264' }, audio: { BITRATE: 128, KODOWANIE: 'mp3' } }; // use: alert('Szerokość wideo odtwarzacza to: ' + player.video.WIDTH);


title: Jaka jest rola programisty w sprawdzaniu błędów w treści tekstowej?

text: Jako programista głównie webowy, wiele moich projektów obejmuje znaczną ilość treści tekstowych. W mojej poprzedniej pracy często pracowałem z kierownikiem projektu znanym z tego, że nie chciał sprawdzać, a nawet używać podstawowego oprogramowania do sprawdzania pisowni. Regularnie poprawiałem treść, którą podawał pod kątem gramatyki, interpunkcji i ortografii, ponieważ czułem, że strona reprezentuje zarówno firmę, jak i mnie, i nie chciałem, aby jego lenistwo przyczyniło się do negatywnego doświadczenia użytkownika. Jednak treść tekstu była ograniczona i składała się prawie wyłącznie z zastrzeżeń prawnych i instrukcji technicznych związanych z produktem. W mojej obecnej pracy kładziemy znacznie większy nacisk na treść tekstową. Mamy jednak również znacznie wyższy standard jakości i korekty. Wszystkie drukowane treści z naszego działu wykorzystują standardy AP Stylebook i uważam, że standard ten powinien zostać rozszerzony również na nasze treści internetowe. Oczekuję, że moje wcześniejsze problemy z niską jakością treści tekstowych i brakiem podstawowej korekty nie powtórzą się tutaj. Jednak przyzwyczaiłem się do korekty każdego fragmentu tekstu, który publikuję. Rozważam przestudiowanie AP Stylebook, aby upewnić się, że wiem, jakie są oczekiwane konwencje. Czy to wykracza poza moją odpowiedzialność jako programisty? Czy powinienem trzymać się tylko najbardziej podstawowych błędów (np. ortografii, interpunkcji itp.), zamiast próbować rozwinąć się do konwencji AP Stylebook? A może powinienem po prostu zostawić wszystkie zadania związane z korektą osobom, które przekazują mi treść do opublikowania?


title: Standardy nazewnictwa środowisk w tworzeniu oprogramowania?

text: Mój projekt boryka się obecnie z problemami z nazewnictwem środowiska. Różni ludzie mają różne założenia co do tego, jakie środowiska należy nazwać lub co oznaczają te nazwy, co powoduje zamieszanie podczas omawiania ich. Zrobiłem trochę badań i nie znalazłem tam żadnych standardów. Terminy to „Local”, „Sand”, „Dev”, „Test”, „User”, „QA”, „Staging” i „Prod” (plus kilka innych, o które pytały różne osoby). szukam tylko opinii, ale jeśli jest taka, którą „każdy” ma, wezmę ją – staram się znaleźć definicje wysunięte przez jakiś autorytet, nawet jeśli jest to nieoficjalne. Oto środowiska, z których obecnie korzystamy: 1. **Środowisko na komputerze programisty** 2. **Środowisko współdzielone, w którym programiści bezpośrednio przesyłają kod do autotestu** 3. **Środowisko współdzielone, w którym standardy i funkcjonalność są testowane przez specjalistów ds. kontroli jakości ** 4. **Środowisko współdzielone, w którym ukończony i sprawdzony przez QA kod jest zatwierdzany przez zgłaszających projekt** 5. **Środowisko odzwierciedlające środowisko końcowe jako ostateczne sprawdzenie i przygotowanie do wdrożenia** 6. **Środowisko końcowe, w którym kod jest w użyciu** Wiem, jak _ja bym_ je nazwać, ale czy jest w tym jakiś standard? Z góry dziękuję.


title: Czy jest to dobre zastosowanie dla ThreadPool.QueueUserWorkItem?

text: Mam aplikację, która między innymi importuje dokumenty, a następnie wysyła e-maile do odpowiednich stron, aby poinformować ich, że dokument został zaimportowany. Okazuje się, że określenie, do kogo wysłać e-mail, a następnie wykonanie e-maila, zajmuje najwięcej czasu. Myślałem o zrobieniu czegoś takiego: var document = ImportDocument(); ThreadPool.QueueUserWorkItem(s => SendEmail(document.Id)); dokument zwrotu; ... podobnie jak DelayedJob w Railsach, jeśli to pomaga. Czy to ma sens w tym kontekście? Co byś zrobił?


title: Czy „wyślij nam stronę z kodem” jest typowym wymogiem rozmowy kwalifikacyjnej?

text: Ostatnio poproszono mnie o pokazanie „strony z kodem” na rozmowę o pracę. Będąc głównie programistą back-endowym, a jest to stanowisko, o które się ubiegałem, najpierw powiedziałem osobie, z którą rozmawiałem, że: PHP jest wykonywane na serwerze i dlatego nie jest widoczne po podaniu „strony”. Jednak zgodnie z ich życzeniem wysłałem linki do stron, nad którymi pracowałem wcześniej. Oczywiście nie widzieli nic poza HTML, CSS, JS... Powiedzieli, że to nie wystarczy, nie widzą PHP. Rozumiejąc, że prawdopodobnie chcieli tylko poznać moje umiejętności i/lub zainteresowania, wysłałem im mój profil Stack Overflow. Wśród wszystkich moich pytań i odpowiedzi, większość z nich z kodem, na pewno jest PHP. Ale wygląda na to, że nie tego chcieli. Cóż, nie mam złożonego kodu, który mógłbym po prostu opublikować, aby ktoś mógł go zobaczyć. I oczywiście nigdy nie zrobiłbym tego dla kodu, który wdrożyłem. Więc moje pytanie brzmi/są: Co oznacza „wyślij nam stronę z kodem”? Co mam wysłać? Czy to typowy wymóg rozmowy kwalifikacyjnej?


title: Po co deklarować String (jako ostateczna), a następnie go używać?

text: W typowej klasie walidatora spring mvc, podczas wstawiania wartości errorCode w obiekcie Errors, jaka jest różnica między używaniem String (`props.somefield.req`), jak na przykład. Errors.rejectValue("elementId", "props.somefield" .wymaganie"); wersety zadeklarowanej statycznej końcowej String ? prywatne statyczne końcowe String SOMFIELD_REQ = "props.somefield.req"; ... error.rejectValue("elementId", SOMFIELD_REQ); Czy w najmniejszym stopniu poprawia wydajność? Przeczytałem kilka pytań dotyczących przepełnienia stosu (ciąg i końcowy, czy ma sens definiowanie końcowego ciągu w Javie?), ale nikt nie odpowiedział na to pytanie dotyczące aktualizacji.


title: Pobieranie i indeksowanie danych

text: Mam około 800 000 wierszy danych przechowywanych w pamięci współdzielonej boost z bazy danych. Dane są w postaci: Id Kolor Długość Rozmiar 1 1 2 4 2 3 4 5 3 2 2 0 4 1 2 4......i tak dalej Kolory mogą mieć wartość od 1-12 długości 1- 4 i rozmiar 1-5. Id,Length,Color,Size są przechowywane w osobnym wektorze o rozmiarze 800 000 w pamięci współdzielonej. Więc jest wektor Id dla Id, wektor Color dla Color i tak dalej. Chcę przefiltrować dane przed wykonaniem obliczeń. Więc chcę dane, dla których kolor to 1, a długość to 2 i rozmiar 4, tj. wiersze 1 i 4 w powyższym przypadku. Czy istnieje skuteczny sposób filtrowania danych bez używania pętli for i przechodzenia przez wszystkie 800 000 obrazów i sprawdzania stanu? W tej chwili używam tylko mysql, aby uzyskać identyfikatory danych, które spełniają warunek. „wybierz identyfikator z tabeli_funkcji, gdzie Kolor=1 i Długość=2 i Rozmiar=4” Ale czy jest szybszy sposób na zrobienie tego? Czy powinienem trzymać się tej metody? Szukam szybszej metody, więc nie jestem pewien, czy pobranie identyfikatorów z bazy danych wydłuży czas wykonania algorytmu. Jakie inne opcje mogę rozważyć w tym przypadku? Czytałem o Hash table, B-Tree, Binary Search i nie wiem, co jest odpowiednie w tym przypadku. Czy kd-tree będzie w tym przypadku pomocne? Ponieważ wiele obrazów może mieć tę samą kombinację koloru, długości i rozmiaru. Nie jestem pewien, czy kd-tree jest dobrym rozwiązaniem. Czytałem o FLANN w opencv używanym dla kd-tree. Czy jest jakiś przykład lub zasoby, które mogą być pomocne w tym przypadku? A może są jakieś wbudowane biblioteki c++?


title: Wyszukiwanie w dużym zbiorze danych

text: Pracuję nad modelem interakcji społecznych u myszy. Mam myszy i pudełka oraz symulację, która wyświetla, która mysz pozostaje w którym pudełku w danym okresie. Problem polega na tym, jak w końcu i dzięki temu uzyskać spotkania dwóch myszy, które znajdowały się w tym samym boksie w zachodzącym na siebie okresie. W tej chwili mam bazę danych MySQL, w której symulacja bezpośrednio wstawia każdy wynik pobytu. A potem inne narzędzie, napisane w Scali, po prostu pobiera wszystkie wyniki pobytów, w częściach po kilkaset, przechodzi przez nie i dla każdego pyta bazę danych, które pobyty się na nią nakładają, i wstawia każdą parę do bazy danych, w ten sposób: ` box`, `id1`, `res_id1`, `id2`, `res_id2`, `from`, `to`, `dt`, `typ` Oznacza to, że myszy id1 i id2 znajdowały się w polu odstęp między „od” i „do” z czasem trwania „dt”, a spotkania były typu „typ”. Mogą istnieć cztery rodzaje spotkań w zależności od tego, kiedy każda mysz znajdowała się w pudełku (np. kiedy jedna wchodziła i wychodziła względem drugiej). „res_id1” i „res_id2” informują, które wyniki pobytu zostały użyte do wygenerowania wyniku spotkania. Oczywiście jest to bardzo nieefektywne. Jaki byłby lepszy sposób na zrobienie tego? Nie jestem ograniczony do używania RDMS, ale pomyślałem, że będzie to najłatwiejsze, ponieważ później czytam i dalej analizuję dane w R. Czy byłoby sensowne wypisanie pobytów w pliku tekstowym, a następnie użycie Hadoop do wygenerowania spotkań? Albo coś innego? Na czas około jednej czwartej jednej próby symulacji wygeneruję około 1,5 miliona wyników pobytu.


title: Jak wytłumaczyć NP-Kompletność/Nierozwiązywalność przełożonemu nietechnicznemu?

text: Naprawiasz problemy. Możesz zrobić _niemożliwe_. Współpracownicy przychodzą do Ciebie z szeroką gamą pytań i problemów, które chcą, abyś rozwiązał; co zwykle można zrobić za pomocą prostego niestandardowego programu lub skryptu. Większość rzeczy jest dość prosta i są zdumieni, jak możesz poświęcić dziesięć minut na napisanie małego skryptu, który zaoszczędzi im setki godzin pracy w danym roku. Ludzie przychodzą do Ciebie z problemem, a po zapoznaniu się z Twoją przeszłą pracą spodziewają się, że w krótkim czasie będziesz w stanie zająć się nawet _niemożliwym_. Ale od czasu do czasu problem, który chcą, abyś rozwiązał, jest jednym z tych, które przyprawiają programistów o ból głowy - są NP-Complete lub w inny sposób nierozwiązywalne obliczeniowo. Może to być zautomatyzowany program do harmonogramowania, sortownik opakowań magazynowych, system, który przewiduje cenę akcji firmy z trzyletnim wyprzedzeniem, co ty. Jeśli powiesz im, że to **niemożliwe**, brzmi to tak, jakbyś po prostu próbował się wyrwać z pracy, albo pomyślą, że **niemożliwe** oznacza _niemożliwe_ (jak w „trochę trudne, ale mógłbym zrobić za kilka godzin"). Podobnie, nie możesz po prostu wskazać im sekcji teorii CS w swojej biblioteczce i powiedzieć, aby ją przeczytali. Jak wytłumaczyć nietechnicznemu współpracownikowi (lub przełożonemu), że jakieś zadanie, które chcą, abyś wykonał, jest dosłownie **niemożliwe**, a nie tylko to samo stare _niemożliwe_, z którym z powodzeniem radzisz sobie każdego dnia? _[Uwaga: Oferowanie kompromisu (tj. oferowanie prawie optymalnego, nie idealnie optymalnego rozwiązania) lub dawanie im tego, czego naprawdę potrzebują, a nie tego, co myślą, że chcą, jest generalnie tym, co w końcu robię; ale moje pytanie dotyczy wyjaśnienia, dlaczego to, o co dokładnie proszą, nie jest wykonalne bez uciekania się do używania wysoce technicznych terminów, machania rękami lub „przegrywania”, które pomagają uzyskać bilet.]_


title: Plusy / Minusy dla pobierających i ustawiających kolekcje

text: Tworzę model, w którym jeden element może zawierać inne elementy. Obecnie piszę interfejs do modelu i nie jestem pewien, która z dwóch opcji jest najlepsza: **Option 1** interface Container { List<Element> getElements(); // zwraca niemodyfikowalną listę. void addElement(Element e); void usuńElement(Element e); } **Opcja 2** interfejs Kontener { List<Element> getElements(); // zwraca niemodyfikowalną listę. void setElements(List<Element> elementy); } Jakie są plusy/minusy każdej opcji? Co więcej, czy w takich przypadkach istnieją „akceptowane” konwencje nazewnictwa, na przykład używanie „dzieci” zamiast „elementów”?


title: Jaki jest dobry przepływ pracy dla programistów dla zespołów? (na podstawie maszyny wirtualnej)

text: Zwykle pracuję sam jako freelancer, a konfiguracja, której używam, jak dotąd działała dla mnie całkiem dobrze. Nie jestem jednak pewien, czy jest to optymalna konfiguracja dla zespołu. Programuję w systemie Windows i konfiguruję maszynę wirtualną z systemem Linux na moim lokalnym komputerze, korzystając z tego samego systemu operacyjnego/stosu, co nasze maszyny produkcyjne (CentOS, Nginx, PHP-FPM). Konfiguruję Sambę i mapuję mój webroot na dysk w systemie Windows. Lokalnie konfiguruję skróty hosta, takie jak `http://someproject.local/`. Aby podzielić się z zespołem, używam mojego adresu IP lub wewnętrznej nazwy DNS, takiej jak `http://brandon/someproject`. Pomyślałem, że możliwą zmianą tego przepływu pracy byłoby przeniesienie maszyn wirtualnych na jeden z naszych wewnętrznych serwerów wirtualizacji. Jeden z administratorów mógłby uruchomić nowy, oparty na obrazie maszyny wirtualnej, dzięki czemu wszyscy deweloperzy używają tej samej konfiguracji. Oznacza to również, że wszystko jest poprawnie zarchiwizowane. Inną, o której czytałem, byłaby maszyna wirtualna z pojedynczym deweloperem, w której każdy deweloper otrzymuje folder pełen projektów, które mapuje na swój dysk lokalny, a każdy inny deweloper może zobaczyć projekt, przechodząc do `http://thedevbox/developer_name/ nazwa_projektu”. Nie podoba mi się jednak to podejście, ponieważ nie byłbym w stanie bawić się stosem serwerów, gdybym też chciał/potrzebował. Jakich konfiguracji używasz w swojej pracy?


title: Które konto programisty iOS powinienem się zarejestrować

text: Obecnie pracuję nad aplikacją dla lokalnego szpitala. Szpital chce przetestować szorstką wersję mojej aplikacji na swoich pracownikach przed przystąpieniem do pełnego rozwoju aplikacji. Obecnie jestem zapisany do programu dla programistów iOS, ale nie wiem, czy mogę użyć tego konta, aby przesłać wstępną wersję roboczą na około 40 różnych urządzeń, obawiam się, że aplikacja może zostać odrzucona. Nie mam doświadczenia z programem dla przedsiębiorstw i nie chcę wydawać dodatkowych 300 USD, chyba że jest to absolutnie konieczne.


title: Zarządzaj ciągami zapytań w metodach JDBC

text: Próbuję dowiedzieć się, jaka jest najlepsza praktyka podczas organizowania ciągów `PreparedStatement` w aplikacji korzystającej z JDBC do łączenia się z bazą danych. Zazwyczaj w ten sposób pobieram dane z bazy danych: PreparedStatement select = null; String prepQuery = "SELECT * FROM user JOIN details ON user.id = details.user_id WHERE details.email = ? AND details.password = ?"; select = con.prepareStatement(prepQuery); select.setString(1, email); select.setString(2, pass); Wynik zestawu wyników = select.executeQuery(); // Obsłuż wynik. Jest to metoda, która pobiera podmiot użytkownika za pomocą adresu e-mail i hasła. W przypadku wszystkich moich metod w ten sposób zapisuję ciągi zapytań. Pierwszą wadą, która przychodzi mi do głowy, jest to, że jest to dość niechlujne i trudne do zarządzania, jeśli zmieniam dostawcę SQL (może gdybym umieścił wszystkie zapytania w pliku Constants, byłoby lepszym rozwiązaniem). Ponadto JPA oferuje narzędzia takie jak `@NamedQuery`, o których mówi się, że poprawiają wydajność aplikacji. Czy istnieje najlepsza praktyka, jeśli chodzi o organizowanie ciągów zapytań w aplikacji przy użyciu JDBC. Dziękuję Ci!


title: Kiedy należy rozważyć naukę frameworka?

text: Niedawno zacząłem uczyć się PHP i podczas czytania wielu różnych artykułów i pytań zamieszczonych na Stack Exchange zauważyłem, że wszyscy zalecają naukę frameworka. Chociaż jestem gotowy do tego zadania i już wybrałem Zend jako framework, w którym zacznę się uczyć, dopiero co drapałem powierzchnię, jeśli chodzi o PHP i z tego, co wiem, należy mieć pewne doświadczenie w języku przed nauką struktura. Chcę nauczyć się języka we właściwy sposób, ponieważ chcę dostać pracę jako programista PHP (znam już HTML, CSS, Javascript). W tej chwili moja wiedza na temat PHP ogranicza się do jego składni, OOP, plików cookie, sesji i walidacji formularzy. Stworzyłem również bloga, który zawiera panel wyszukiwania, system logowania oraz forum. Chcę wiedzieć, ile doświadczenia z rdzeniem PHP powinienem mieć przed rozpoczęciem nauki Zend? Na jakich częściach PHP powinienem skoncentrować swoje wysiłki, aby zostać dobrym programistą? Pamiętam, że kiedy zacząłem uczyć się JavaScript, nie zwracałem wystarczającej uwagi na sam język i przeszedłem bezpośrednio do jQuery, coś, co nie poszło mi zbyt dobrze na dłuższą metę, nie chcę ponownie popełniać tego samego błędu. Znalazłem tutaj podobne pytanie, ale wydaje się, że nie odpowiada ono na moje pytanie.


title: Częściowe złe żądanie REST

text: Wdrażam metodę REST, która pozwala na opublikowanie listy elementów. Jeśli wszystkie dane są poprawne, to oczywiście zwracam 201, a jeśli wszystkie dane są niepoprawne, 400. Jaki byłby właściwy kod odpowiedzi, jeśli niektóre elementy są poprawne, a inne nie?


title: jak wyeksponować określone tabele z wewnętrznej bazy danych w witrynie publicznej

text: W pracy mam wewnętrzną bazę danych. W tej chwili używamy programu Excel do importowania danych, ale jest to bardzo podatne na błędy, więc chciałbym zastąpić to aplikacją opartą na javascript, która udostępnia niektóre dane w tabelach wyszukiwania w menu rozwijanych, aby nasi klienci mogli je wypełnić, na publicznej stronie internetowej. Tak więc moja wewnętrzna baza danych znajduje się na wewnętrznym serwerze, którego nie można oglądać publicznie. Jak mam się zająć tworzeniem aplikacji, która komunikuje się z wewnętrzną bazą danych i udostępnia tylko określone tabele? Czy jakieś oprogramowanie pośredniczące, takie jak Django, które zamiast używać bazy danych SQL używa innego sposobu uzyskiwania wartości wyszukiwania (mam interfejs REST skonfigurowany na głównej bazie danych). (Aby wyjaśnić, szukam technologii po stronie serwera, którą mogę umieścić na serwerze publicznym, który będzie komunikował się z serwerem wewnętrznym).


title: Jakie jest najlepsze podejście do zastępowania pól w bazie danych?

text: Mam bazę danych zawierającą projekty, a każdy projekt zawiera wiele próbek. Chcę, aby wartość progowa na poziomie projektu wyzwalała podświetlanie, gdy pole na próbce przekracza ten próg. Chcę również mieć możliwość obejścia progu na poziomie indywidualnej próbki. Widzę więc dwa sposoby na zaimplementowanie tego: 1. Zachowaj pole progu (tylko) na próbce i wywołaj to, aby zostało wypełnione, gdy projekt zostanie zapisany. 2. mieć zmienne progowe zarówno na poziomie próbki, jak i projektu, i używać zmiennej próbki tylko wtedy, gdy jest to istotne (wydaje się, że w tym modelu występuje pewna nadmiarowość, chociaż dokładniej odzwierciedla sytuację)? Czy są zalety/problemy z którymkolwiek podejściem?


title: Czy groovy nazywa częściową aplikację „currying”?

text: Groovy ma koncepcję, którą nazywa „currying”. Oto przykład z ich wiki: `def divide = { a, b -> a / b }` `def halver = divide.rcurry(2)` `assert halver(8) == 4` Moje rozumienie tego, co się tutaj dzieje jest to, że prawy argument `dzielenia` jest powiązany z wartością 2. Wydaje się to być formą częściowego zastosowania. Termin currying jest zwykle używany do oznaczania przekształcenia funkcji, która przyjmuje serię argumentów w funkcję, która przyjmuje tylko jeden argument i zwraca inną funkcję. Na przykład tutaj jest typ funkcji `curry` w Haskell: `curry :: ((a, b) -> c) -> (a -> (b -> c))` Dla osób, które nie używały Haskell `a`, `b` i `c` to parametry ogólne. `curry` przyjmuje funkcję z dwoma argumentami i zwraca funkcję, która przyjmuje `a` i zwraca funkcję od `b` do `c`. Dodałem dodatkową parę nawiasów do typu, aby było to bardziej jasne. Czy źle zrozumiałem, co się dzieje w tym fajnym przykładzie, czy jest to tylko błędna nazwa częściowej aplikacji? Czy też faktycznie robi jedno i drugie: to znaczy konwertuje `divide` na funkcję curried, a następnie częściowo stosuje `2` do tej nowej funkcji.


title: Czy na naukę nowego języka jest kiedykolwiek za wcześnie?

text: Kontekst osobisty: Uczyłem się C++ formalnie przez ostatnie 6 miesięcy na uniwersytecie. Wcześniej przez rok parałem się JavaScriptem. Teraz rozważam naukę Pythona podczas miesiąca wolnego od szkoły. Czy poprzez rozdzielenie uwagi na wczesnym etapie procesu uczenia się obniżam wydajność uczenia się? Czy powinienem spędzić miesiąc wolny na kontynuacji w C++? A może nigdy nie jest za wcześnie na naukę nowego języka?


title: Czy warto przekonwertować projekt Django na Railsy?

text: Mam projekt, który odłożyłem jakiś czas temu - zasadniczo była to działająca aplikacja internetowa zbudowana w django, ale przestałem nad nią pracować, aby pracować nad czymś innym. Planuję uruchomić go ponownie w wolnym czasie, ale zastanawiam się, czy warto przekonwertować projekt django z około 5kloc na Railsy. Rozważam to, ponieważ powiedziano mi, że innym ludziom będzie łatwiej pracować i łatwiej będzie pracować nad sobą. Nie mam żadnego doświadczenia z Ruby lub Rails: czy warto nauczyć się Ruby, Rails, a następnie przekonwertować mój projekt django na Railsy? Rozumiem, że to trochę ładowane / językowe pytanie, ale byłbym wdzięczny za każdy wkład.


title: Jak nauczyć się programowania od bardzo podstawowego do zaawansowanego?

text: Znam wiele języków programowania, umiejętności i pojęć w bardzo podstawowych, takich jak PHP, Java, technologia obiektowa. Używając PHP, mogę zbudować prostą stronę internetową z CRUD, funkcją logowania. Używając Javy mogę stworzyć prosty swing csv/plain text editor, w którym użytkownik może przełączać się pomiędzy 2 różnymi widokami. Jeśli chodzi o technologię obiektową, jasno rozumiem, czym jest enkapsulacja, dziedziczenie i polimorfizm, chcę wiedzieć więcej o programowaniu. Czasem „google” niektóre z interesujących mnie tematów, im więcej widzę w internecie, tym bardziej czuję się małym ziemniakiem na świecie (w rzeczywistości jestem). Kody/koncepcje są trudne do zrozumienia. Brakuje mi teraz pewności siebie, więc zadaję to pytanie :( Jaki jest najlepszy sposób na naukę programowania do poziomu zaawansowanego? Po prostu kup książkę i przeczytaj ją strona po stronie? Dzięki za wszelką pomoc


title: Poszukiwanie monotonicznie rosnącej (całkowitej) funkcji mieszającej

text: Szukam `HashFunction(X,Y: Integer): Integer`, który jest monotonicznie wzrastający na X, a następnie Y. A więc: HashFunction(x1,y1) > HashFunction(x2,y2) if x1>x2 HashFunction(x ,y1) > HashFunction(x,y2) jeśli y1>y2 Czy takie zwierzę istnieje? Tło: Pytanie to wynika z komentarza Jak utworzyć pojedynczą wartość indeksu liczb całkowitych na podstawie dwóch liczb całkowitych, gdzie pierwsza jest nieograniczona?


title: Po co narzut podczas przydzielania obiektów/tablic w Javie?

text: Ile bajtów zajmuje tablica w Javie? Załóżmy, że jest to maszyna 64-bitowa, a także załóżmy, że w tablicy jest N elementów, więc wszystkie te elementy zajmują 2*N, 4*N lub 8*N bajtów dla różnych typów tablicy. A wykład w Coursera mówi, że zajęłoby to 2*N+24, 4*N+24 lub 8*N+24 bajtów dla tablicy N-elementowej, a 24 bajty nazywa się narzutem, ale nie wyjaśnia, dlaczego narzut jest potrzebne. Również obiekty mają narzut, który wynosi 16 bajtów. Czym dokładnie są te koszty ogólne? Z czego składają się te 24/16 bajtów? Ponadto, czy te koszty ogólne istnieją tylko w Javie? Co powiesz na C, C++ i Pythona?


title: Jak dokonać refaktoryzacji przy zachowaniu dokładności i redundancji?

text: Zanim zadam to pytanie, poprzem je naszym otoczeniem. Mój zespół składa się z 3 programistów pracujących nad wieloma różnymi projektami. Z tego powodu nasze testy ograniczają się głównie do bardzo ogólnych testów czarnoskrzynkowych. Przyjmij również następujące założenia: * Testy jednostkowe zostaną ostatecznie napisane, ale mam **_ścisłe rozkazy, aby najpierw dokonać refaktoryzacji_** * Ignoruj popularne techniki **Test-Driven Development** w takim środowisku, mój czas jest ograniczony. * Rozumiem, że gdyby zostało to zrobione **_poprawnie_** , nasz zespół faktycznie **_oszczędzi_** pieniądze na dłuższą metę, budując testy jednostkowe wcześniej. Mam zamiar zrefaktoryzować dość dużą część kodu, który jest krytyczny. Chociaż wierzę, że mój kod będzie działał poprawnie po zakończeniu i po naszych testach czarnej skrzynki, zdaję sobie sprawę, że pojawią się nowe dane, których nowy kod może nie być w stanie obsłużyć. Chciałem wiedzieć, jak zachować stary kod, który działa w 98% przypadków, abyśmy mogli wywoływać te podprogramy w przypadku, gdy nowy kod nie działa poprawnie. W tej chwili myślę o wydzieleniu starego kodu w osobnym pliku klasy i dodaniu do naszej konfiguracji zmiennej, która poinformuje program, którego kodu użyć. Czy istnieje lepszy sposób na poradzenie sobie z tym? UWAGA: Używamy kontroli wersji i zarchiwizowaliśmy kompilacje, aby klient mógł zawsze powrócić do poprzedniej wersji, ale chciałbym zobaczyć, czy istnieje przyzwoity sposób na zrobienie tego poza przywróceniem. Chcę tego, aby mogli korzystać z innych nowych funkcji dostarczonych w nowej kompilacji. Edycja: Chociaż zgadzam się, że będę musiał w tym celu napisać testy jednostkowe, nie wierzę, że uchwycę wszystko za ich pomocą. Szukam sposobów na łatwe przywrócenie starego, funkcjonalnego kodu, jeśli coś się stanie. Chociaż wiem, że to kiepska praktyka, planuję usunąć ten kod po tym, jak nasz zespół zagwarantuje, że nowy kod będzie działał zgodnie z tymi samymi standardami, co stary.


title: Wiele klas w jednym pliku .cs — dobre czy złe?

text: Czy wskazane jest tworzenie wielu klas w pliku .cs, czy każdy plik .cs powinien mieć osobną klasę? Na przykład: public class Items { public class Animal { } public class Person { } public class Object { } } Unikanie przez minutę faktu, że jest to kiepski przykład dobrej architektury, oznacza posiadanie więcej niż jednej klasy w .cs złożyć zapach kodu?


title: Czym jest dobry „zestaw narzędzi” języków, frameworków i czegokolwiek innego, czego potrzebuję jako programista wejścia?

text: Jestem studentem informatyki, ale chodzę tylko na podstawowe zajęcia z tworzenia stron internetowych. Szukam lektur pozaklasowych, tutoriali i innych sposobów uczenia się, ale nie jestem pewien, od czego powinienem zacząć. Jaki jest dobry zestaw języków programowania (różne paradygmaty?), frameworki, sugerowane projekty , a może nawet jakieś społeczności open-source, na które powinienem zacząć patrzeć i zacząć się uczyć? Może nawet kilka książek lub blogów o procesach rozwojowych w świecie zawodowym. Zamierzam rozpocząć rozwój zawodowy pod koniec studiów. Rozumiem, że praktykowanie będzie najlepszym sposobem na nauczenie się czegokolwiek, ale jeśli nie wiem, co powinienem ćwiczyć, jestem w tym zagubiony. :)


title: Projekt jest już prawie ukończony, co mogę zrobić, aby utrzymać zainteresowanie i nie stracić koncentracji?

text: Tak więc uważam, że każdy projekt, w który się angażuję, początek jest świetny, a ja jestem napalony, zajmijmy się kodowaniem. Następna rzecz, którą wiesz, projekt zbliża się do końca, dopracowujemy, testujemy, poprawiamy, woskujemy samochód, jeśli chcesz, a ja po prostu nie mogę się skupić. Dochodzę do tego punktu i nie mogę przestać myśleć o tym, jak utrzymać i wykonać pracę. Masz uwagi, jak zachować koncentrację, gdy projekt dobiega końca i nie możesz się doczekać kolejnego projektu?


title: Czy #regions to zapach antywzorca lub kodu?

text: W kodzie C# pozwala słowom kluczowym #region/#endregion na zwijanie obszarów kodu w edytorze. Ilekroć to robię, odkrywam, że jest to ukrywanie dużych fragmentów kodu, które prawdopodobnie mogłyby zostać przekształcone w inne klasy lub metody. Na przykład widziałem metody, które zawierają 500 wierszy kodu z 3 lub 4 regionami tylko po to, aby można było nimi zarządzać. Czy rozsądne wykorzystanie regionów jest oznaką kłopotów? Wydaje mi się, że tak jest.


title: Czy przechowujesz eksporty mysql w swoim narzędziu do kontroli wersji w celu przywrócenia w przypadku błędu?

text: Prowadzimy wewnętrzny serwer WWW z własnym oprogramowaniem do obsługi linii produkcyjnej. Gdy mają zostać dodane nowe funkcje produktu, zachodzą jedno lub oba z następujących zdarzeń: 1. W celu ich obsługi mogą być wymagane zmiany w wewnętrznym oprogramowaniu serwera — są to znaczące zmiany w funkcjonalności, ponieważ są one napędzane kodem. 2. zmiany w bazie danych MySQL dla nowych wpisów dla numerów części, są to mniejsze zmiany, konfiguracje, zmiany już istniejących wartości i parametrów – takie zmiany nie wymagają zmian w kodzie. Idealnie chcielibyśmy, aby nasze zmiany znajdowały się tutaj, a nie w punkcie 1. Pozycja 1 jest kontrolowana w wersji w Subversion, więc poprzednie wersje można odwoływać się do wycofania w przypadku problemów wprowadzonych w ostatniej wersji. Ale co ze zmianami w bazie danych MySQL? Mamy procesy jakościowe, które zapewniają, że takie zmiany są bezbłędne, ale zawsze istnieje szansa, że błędy przejdą, np. błąd we wprowadzaniu danych lub błędy w kodzie, który używa MySQL uszkadzający bazę danych itp. Mamy automatyczną kopię zapasową co 6 godzin, ale co jeśli chcemy więcej ręcznie zdefiniowanych punktów kontrolnych pomiędzy tymi interwałami, moglibyśmy użyć tego samego systemu kopii zapasowych, ale zastanawiałem się gdyby ludzie tutaj używali innych metod do przechowywania poprzednich stanów baz danych, np. eksport bazy danych jako zwykły tekstowy zrzut SQL - przynajmniej tą metodą dałoby się zobaczyć różnice np. w Beyond Compare do rozwiązywania problemów. Myśli?


title: W DOM, dlaczego childNodes jest zdefiniowane w interfejsie Node, jeśli tylko niektóre typy węzłów mogą mieć childNodes?

text: Dlaczego w DOM zdefiniowano `childNodes` w interfejsie `Node`, jeśli tylko niektóre typy węzłów, takie jak `Element`, `Document` i `DocumentFragement`, mogą mieć `childNodes`? Czy to uważane za dobry projekt? W jakich przypadkach jest to dopuszczalne? Chodzi mi o to, czy nie jest to tak, jak definiowanie **promienia** na interfejsie Shape, mimo że wiemy, że nie każdy Shape ma promień?