title: Jakie są zalety „Micro-ORM”?

text: Patrzyłem na tak zwane "Micro ORM", takie jak Dapper i (w mniejszym stopniu, ponieważ opiera się na .NET 4.0) Masywne, ponieważ mogą być łatwiejsze do wdrożenia w pracy niż pełnowymiarowy ORM od naszego obecnego systemu jest wysoce zależny od procedur przechowywanych i wymaga znacznej refaktoryzacji do pracy z ORM, takim jak NHibernate lub EF. Jaka jest korzyść z używania jednego z nich w porównaniu z w pełni funkcjonalnym ORM? Wygląda na to, że jest to tylko cienka warstwa wokół połączenia z bazą danych, która wciąż zmusza do pisania surowego SQL - być może się mylę, ale zawsze mówiono mi, że powodem tworzenia ORM-ów jest to, że nie **musisz** napisz SQL, może być generowany automatycznie; zwłaszcza w przypadku łączenia wielu tabel i mapowania relacji między tabelami, które są trudne do wykonania w czystym SQL, ale trywialne w przypadku ORM. Na przykład, patrząc na przykład Dappera: var connection = new SqlConnection(); // ustaw tutaj... var person = connection.Query<Person>("wybierz * z osób gdzie PersonId = @personId", new { PersonId = 42 }); Jak to się różni od korzystania z ręcznie obsługiwanej warstwy danych ADO.NET, z wyjątkiem tego, że nie trzeba pisać polecenia, ustawiać parametrów i przypuszczam, że mapowanie jednostki z powrotem za pomocą konstruktora. Wygląda na to, że możesz nawet użyć wywołania procedury składowanej jako ciągu SQL. Czy są jakieś inne wymierne korzyści, których mi brakuje w przypadku, gdy użycie Micro ORM ma sens? Tak naprawdę nie widzę, jak oszczędza coś w „starym” sposobie korzystania z ADO.NET, z wyjątkiem może kilku wierszy kodu – nadal musisz napisać, aby dowiedzieć się, jaki kod SQL musisz wykonać (co może stać się nieprzyjemne) i nadal musisz mapować relacje między tabelami (część, w której najbardziej pomagają IMHO ORM).


title: Kalkulator z wartościami 3+

text: Jestem nowy w c++ i robię stary dobry Kalkulator. Przeszedłem od kalkulatora 2-wartościowego do kalkulatora 3-wartościowego i zastanawiałem się. Jak można zrobić 10-cyfrowy kalkulator (używając wyłącznie +,-,*,/), który nie koduje na zawsze.. Mam instrukcja if, która zwraca, co się stanie, jeśli operatorami są + i + lub + i - itd. i jeśli miałbym przejść do wartości 4, napisałbym 64 instrukcje if, a wartość 5 byłaby 256 instrukcjami if. Czy jest sposób, aby to zmienić tak, aby nie wymagało to pisania tylu stwierdzeń if? Oto moje ważne części kodu: Calculator.cpp: #include "stdafx.h" #include <iostream> #include "headers.h" using namespace std; int main() { int nInput1 = GetUserInput(); char chOperation = GetMathematicalOperation(); { if (chOperation == '=') { cout << "Odpowiedź brzmi: " << nInput1 << endl; zwróć 0; } } int nInput2 = GetUserInput(); char chOperation2 = GetMathematicalOperation(); { if (chOperation2 == '=') { int nResult = CalculateResult(nWejście1, chOperation, nWejście2); cout << "Odpowiedź brzmi: " << nResult << endl; zwróć 0; } } int nInput3 = GetUserInput(); int nWynik = ObliczWynik2(nWejście1, chOperacja, nWejście2, chOperacja2, nWejście3); Wynik wydruku(nWynik); } CalculateResult.cpp: #include "stdafx.h" #include <iostream> #include <string> using namespace std; int CalculateResult(int nX, char chOperation, int nY) { if (chOperation == '+') return nX + nY; if (chOperation == '-') return nX - nY; if (chOperation == '*') return nX * nY; if (chOperation == '/') return nX / nY; zwróć 0; } GetMathematicalOperation.cpp: #include "stdafx.h" #include <iostream> #include <string> using namespace std; char GetMathematicalOperation() { cout << "Proszę wprowadzić operator (+,-,*,/ lub =): "; char chOperation; cin >> chOperation; powrót chOperation; } CalculateResult2.cpp: #include "stdafx.h" #include <iostream> #include <string> using namespace std; int ObliczWynik2(int nX, char chOperation, int nY, char chOperation2, int nZ) { if (chOperation == '+' && chOperation2 == '+') return nX + nY + nZ; if (chOperacja == '+' && chOperacja2 == '-') return nX + nY - nZ; if (chOperacja == '+' && chOperacja2 == '*') return nX + nY * nZ; if (chOperacja == '+' && chOperacja2 == '/') return nX + nY / nZ; if (chOperacja == '-' && chOperacja2 == '+') return nX - nY + nZ; if (chOperacja == '-' && chOperacja2 == '-') return nX - nY - nZ; if (chOperacja == '-' && chOperacja2 == '*') return nX - nY * nZ; if (chOperacja == '-' && chOperacja2 == '/') return nX - nY / nZ; if (chOperacja == '*' && chOperacja2 == '+') return nX * nY + nZ; if (chOperacja == '*' && chOperacja2 == '-') return nX * nY - nZ; if (chOperacja == '*' && chOperacja2 == '*') return nX * nY * nZ; if (chOperacja == '*' && chOperacja2 == '/') return nX * nY / nZ; if (chOperacja == '/' && chOperacja2 == '+') return nX / nY + nZ; if (chOperacja == '/' && chOperacja2 == '-') return nX / nY - nZ; if (chOperacja == '/' && chOperacja2 == '*') return nX / nY * nZ; if (chOperacja == '/' && chOperacja2 == '/') return nX / nY / nZ; zwróć 0; }


title: CSS3 będzie standaryzowany przez przeglądarki?

text: Po raz pierwszy używam CSS3, ale używanie określonych stylów z prefiksem dla każdej przeglądarki wygląda dziwnie. Konieczność używania `-moz-`, `-o-`, `-webkit-` i innego prefiksu sprawia, że CSS jest większy i trudniejszy w utrzymaniu. Chcę wiedzieć, czy przeglądarki wdrażają pewną standaryzację, aby uniknąć używania prefiksu dla stylów.


title: Implementacja algorytmu generowania pozycji szachowych

text: Jestem zainteresowany opracowaniem programu, który generuje tabelę końcową gry w szachy. Przejrzałem papiery techniczne wielkich, takich jak Shannon i Ken Thompson. Odkryłem, że do generowania używa się analizy wstecznej. Jak mogę wygenerować wszystkie pozycje w końcowej partii szachów `KBBK`, które są matami w 0?


title: Czy dobrym pomysłem jest kwalifikacja const pól struktury w C?

text: Rozważmy następujący program: #include <stdlib.h> #include <stdio.h> typedef struct S_s { const int _a; } S_t; S_t * create_S(void) { return calloc(sizeof(S_t), 1); } void zniszcz_S(S_t *s) { wolne(s); } const int get_S_a(const S_t *s) { return s->_a; } void set_S_a(S_t *s, const int a) { int *a_p = (int *)&s->_a; *a_p = a; } int main(void) { S_t s1; // s1._a = 5; // Błąd set_S_a(&s1, 5); // OK S_t *s2 = utwórz_S(); // s2->_a = 8; // Błąd set_S_a(s2, 8); // OK printf("s1.a == %d\n", get_S_a(&s1)); printf("s2->a == %d\n", get_S_a(s2)); zniszcz_S(s2); } Nie jestem świadomy niczego szczególnie złego w tego rodzaju projekcie, ale może to mieć wpływ, gdy kompilator mocno optymalizuje kod i brakuje niektórych rozważań. Czy dobrym pomysłem jest użycie `const` w `C` jako mechanizmu kontroli dostępu do zapisu w taki sposób?


title: Przykłady programowania Java vs COBOL

text: Jestem programistą w języku COBOL, desperacko próbującym uczyć się i programować Javę. Chociaż rozumiem zasady i koncepcje OO, gubię się w łączeniu wszystkich elementów. Próbuję znaleźć kilka przykładów, jak będzie wyglądał kod w COBOL vs Java - coś nieco bardziej skomplikowanego niż "hello world" [Minąłem ten początkowy ból głowy! :-)], który zawiera zasady OO - w zasadzie przyzwoity 1000+ liner w COBOL, z kodem Java do pracy. Po przejściu książki po książce, wykonaniu przykładów, a nawet napisaniu małych programów w Javie w pracy, myślę, że praca nad przykładem, który mogę porównać, będzie najlepszym sposobem na przekonwertowanie mojego limitu myślenia i możliwość robienia w Javie tego, co robię może zrobić po 10 latach z COBOL. Czy ktoś może pomóc?


title: Aspekty bezpieczeństwa ASP.NET, które można wskazać klientowi

text: Muszę napisać kilka fragmentów tekstu w ofercie dla klienta o warstwie bezpieczeństwa w rozwiązaniu webowym ASP.NET MVC. Zdaję sobie sprawę z bezpieczeństwa, które towarzyszy MVC 3 i ulepszeń w MVC 4. Ale wszystkie z nich nie są koncepcyjne, z wyjątkiem `AntiForgeryToken` (AntiXSS) i wbudowanej odporności na wstrzykiwanie SQL (z odrobiną kodowania potrzebnego ręcznie ). Jaki byłby główny cel bezpieczeństwa ASP.NET, którym mogę „pochwalić się” w ofercie dla klienta?


title: Konwencja rozgałęziania błędów w Git

text: Przez większość mojego rozwoju korzystałem z udanego przewodnika po modelu rozgałęziania Git. Nadal zastanawiam się, czy sposób, w jaki traktuję zgłoszenia błędów, jest poprawny. Mój obecny przepływ pracy: Gdy zaakceptuję zgłoszenie błędu, zrobię `git checkout -b bug/{ticket_number}`, utworzę pojedyncze zatwierdzenie jako poprawkę, a następnie rozwinę checkout i wykonam `git merge --no-ff`. Chciałbym usłyszeć z doświadczeń innych, czy w tym przypadku nadużywam opcji --no-off. Jeśli tak, czy ktoś mógłby zaproponować lepsze podejście?


title: Planowanie kamieni milowych i czasu

text: Zostałem zatrudniony przez firmę marketingową rok temu początkowo do budowania linków / SEO, ale w rzeczywistości jestem programistą internetowym i podjąłem tę pracę w desperacji, aby ją mieć (wciąż jestem dość młody i właśnie skończyłem drugi rok studiów ). Od trzeciego dnia mój szef zdał sobie sprawę, że w ogóle mnie to nie interesuje, a ponieważ wpadł na pomysł aplikacji internetowej, zaczęliśmy ją planować. Oceniłem, że nie powinno mi to zająć dłużej niż dwa miesiące, ale kiedy to robiłem, szybko zdaliśmy sobie sprawę, że chcemy dodawać coraz więcej rzeczy, aby było jeszcze lepiej. Tak więc sam rozwój trwał około 4 miesięcy, ale potem stał się aplikacją wielkości korporacyjnej i zatrudniliśmy innego programistę do współpracy ze mną. Facet był niesamowity w tym, co robił, ale ponieważ zostałem przydzielony jako programista/kierownik projektu, musiałem ustalać kamienie milowe z terminami i większość z nich przegapiliśmy, ponieważ przez większość czasu było to za dużo pracy, a mój brak Doświadczenie sprawiło, że ustalałem naprawdę optymistyczne terminy. Wciąż dodawaliśmy nowe funkcje i dwukrotnie zmienialiśmy architekturę aplikacji. Mój szef jest świetnym facetem i rozumie, że kiedy dodajemy nowe funkcje, wydłuża to ramy czasowe, w których należy coś zrobić, więc nie był zły na mnie ani na drugiego faceta. Ale czułem się źle (nadal jestem), że jestem do niczego w planowaniu. Zdobyłem mnóstwo doświadczenia od strony programowania, ale wciąż brakuje mi umiejętności zarządzania/planowania, które doprowadzają mnie do szału. Tak więc przez ostatni rok poświęciłem prawdopodobnie około 8 miesięcy pracy nad tą aplikacją (oczywiście moje studia miały na to wpływ) i w tym miesiącu ruszamy jako zamknięta beta. Więc moje pytanie brzmi: jak mogę być lepszy w planowaniu/zarządzaniu projektem, jak oceniasz czasy? Co bierzesz pod uwagę przy wyznaczaniu celów. Znowu pracuję sam, bo ten drugi facet wyprowadził się z miasta. Ale jestem pewien, że będziemy zatrudniać, aby pomóc mi go utrzymać, więc muszę być w tym lepszy. Wszelkie wskazówki, punkty lub cokolwiek na ten temat są mile widziane.


title: Znalezienie najkrótszej ścieżki przez digraf, który odwiedza wszystkie węzły

text: Próbuję znaleźć najkrótszą możliwą ścieżkę **, która odwiedza każdy węzeł ** za pośrednictwem wykresu (węzeł może być odwiedzany więcej niż raz, rozwiązanie może wybrać dowolny węzeł jako węzeł początkowy). Wykres jest skierowany, co oznacza, że możliwość przemieszczenia się od węzła A do węzła B nie oznacza, że można przejechać od węzła B do węzła A. Wszystkie odległości między węzłami są równe. Udało mi się zakodować brutalne wyszukiwanie siłowe, które znalazło ścieżkę tylko 27 węzłów, gdy miałem 27 węzłów, a każdy węzeł miał połączenie z 2 lub 1 innym węzłem. Jednak rzeczywisty problem, który próbuję rozwiązać, składa się z 256 węzłów, przy czym każdy węzeł łączy się z 4 lub 3 innymi węzłami. Algorytm brute force, który rozwiązał wykres 27 węzłów, może wytworzyć rozwiązanie 415 węzłów (nieoptymalne) w ciągu kilku sekund, ale użycie mocy obliczeniowej, którą mam do dyspozycji, zajmuje około 6 godzin, aby dotrzeć do rozwiązania 402 węzłów. Jakie podejście powinienem zastosować, aby znaleźć rozwiązanie, które **mogę mieć pewność**, że jest optymalne? Na przykład użyć algorytmu optymalizującego, aby skrócić nieoptymalne rozwiązanie? Albo w jakiś sposób zastosować brutalne wyszukiwanie siłowe, które odrzuca ścieżki, które nie są optymalne? EDYCJA: (Kopiowanie komentarza do odpowiedzi tutaj, aby lepiej wyjaśnić pytanie) Aby wyjaśnić, nie mówię, że istnieje ścieżka hamiltonowska i muszę ją znaleźć, próbuję znaleźć najkrótszą ścieżkę na grafie 256 węzłów, która odwiedza każdy węzeł CO NAJMNIEJ raz. Z przebiegiem 27 węzłów udało mi się znaleźć ścieżkę Hamiltona, która upewniła mnie, że jest to optymalne rozwiązanie. Chcę znaleźć rozwiązanie dla wykresu 256 węzłów, który jest najkrótszy.


title: Czy byłoby to uważane za jednego najemcę czy z wieloma najemcami?

text: Jako firma dzierżawimy zarządzany serwer od dostawcy. W tym sensie nasz serwer jest serwerem z jednym dzierżawcą. Na tym serwerze mamy wiele baz danych klientów. Każdy klient posiada własną bazę danych. Zostaliśmy zapytani przez klienta, czy jesteśmy pojedynczym najemcą, czy rozwiązaniem dla wielu najemców. Z naszej perspektywy jesteśmy jedynym dzierżawcą serwera. Ale jaka jest prawidłowa odpowiedź dla klienta?


title: Czy można być zwinny bez przypadków użycia i testów?

text: Retoryka uczy nas, że odpowiedź brzmi prawdopodobnie tak. Jednak czuję, że nie będziemy już odnosić się do większości historii sukcesu Agile. Myślę, że moje wyższe kierownictwo przeczytało kolumnę korzyści z procesu Agile, ale zapomniało przeczytać o wymaganiach lub o tym, jak odnoszą sukcesy Agile.


title: Czy istnieje szybszy sposób na wypracowanie tej logiki?

text: Celem tego zadania było znalezienie najmniejszej i największej liczby całkowitej (użytkownik wprowadza 5 wpisów) Jestem początkującym programistą Java bez wcześniejszego doświadczenia. Czy jest łatwiejszy sposób na zrobienie tego bez mnóstwa instrukcji if/else? Wybacz brudny kod. //Scanner Object Scanner input = new Scanner(System.in); int num1, num2, num3, num4, num5; int duży; int mały; System.out.print("Wpisz Num1: "); num1 = input.nextInt(); System.out.print("Wpisz Num2: "); num2 = input.nextInt(); System.out.print("Wpisz Num3: "); num3 = input.nextInt(); System.out.print("Wpisz Num4: "); num4 = input.nextInt(); System.out.print("Wpisz Num5: "); num5 = input.nextInt(); //If/Inne instrukcje (MAŁY) if (num1<num2 && num1<num3 && num1<num4 && num1<num5) { small = num1; } inaczej if (num2<num1 && num2<num3 && num2<num4 && num2<num5) { small = num2; } inaczej if (num3<num1 && num3<num2 && num3<num4 && num3<num5) { small = num3; } inaczej if (num4<num1 && num4<num2 && num4<num3 && num4<num5) { small = num4; } inny { mały = num5; } //Duża jeśli (num1>num2 && num1>num3 && num1>num4 && num1>num5) { large = num1; } inaczej if (num2>num1 && num2>num3 && num2>num4 && num2>num5) { large = num2; } inaczej if (num3>num1 && num3>num2 && num3>num4 && num3>num5) { large = num3; } inaczej if (num4>num1 && num4>num2 && num4>num3 && num4>num5) { large = num4; } inny { duży = num5; } //Wyświetlanie: użyj printf podczas używania ogranicznika formatu (%) System.out.printf("Najmniejsza liczba całkowita: %d\n", small); System.out.printf("Największa liczba całkowita: %d\n", duża); }// koniec głównej }


title: Jak radzić sobie z wyjątkami od reguł biznesowych?

text: Dostałem plik z kilkoma rekordami. Dostałem również reguły biznesowe, które określają sposób przetwarzania tych rekordów i tworzenia pliku wyjściowego. Reguły biznesowe są stosunkowo proste: 1. Jeśli rekord jest typu A, użyj metodologii A. 2. Jeśli rekord jest typu B, użyj metodologii B. Jednak mój klient wysłał mi wiadomość e-mail z problemem: Jest jeden „specjalny” rekord w plik. Jest to rekord typu A, ale musi być przetworzony zgodnie z metodologią B. Jak radzić sobie z tymi wyjątkami od reguł biznesowych? Niektóre opcje, o których myślałem do tej pory: 1. Zakoduj wyjątek na stałe w oprogramowaniu: `if record.id == "jakiś_id" && record.value == 123,45 then method B`. 2. Ręcznie manipuluj plikiem, uruchom program, a następnie ręcznie popraw dane wyjściowe. Mój współpracownik jest zdumiony, że nawet rozważyłbym opcję 1. Jest bałagan, a w przyszłym roku (kiedy będę musiał powtórzyć ten proces) plik może być inny. Okaże się miła, ukryta "gotcha", która może sprawiać problemy długo po tym, jak zapomniałem o wyjątku. Jednak opcja 1 jest łatwiejsza niż opcja 2 i jeśli wyjątek od reguły pozostanie taki sam na przyszły rok, nie będę musiał nawet o tym myśleć. To już zostało załatwione. Poza tym łatwo to zmienić, jeśli będę musiał to zmienić później. Jak radzić sobie z przypadkowymi wyjątkami od reguł biznesowych? EDYCJA: Jest to bardzo ukierunkowane oprogramowanie - napisane specjalnie do wykonywania jednej pracy dla jednego klienta.


title: Usługa MVC4 > Modele kontrolerów

text: Pracuję nad aplikacją MVC4 N-tier i mam szybkie pytanie dotyczące relacji Service to Controller i korzystania z domeny/ViewModel. public ActionResult Details(int id = 0) { TenantDomainModel tenant = _tenantService.GetById(id); TenantViewModel tenantViewModel = Mapper.Map<TenantViewModel>(dzierżawca); return View(tenantViewModel); } Jak widać, moja usługa zwraca DomainModel, którego używa mój kontroler do tworzenia ViewModel przy użyciu Automappera. Czy jest na to lepszy sposób? Idealnie chciałbym, aby w mojej warstwie prezentacji/sieci internetowej nie odwoływał się żaden model domeny, ale nie wiem, jakie są dokładne najlepsze praktyki w tym konkretnym punkcie. Dziękuję


title: Dynamiczny dowód programowania

text: Mam pytanie, powiedzmy, że próbuję zmaksymalizować: S=∑j=1nfj(xj) pod warunkiem ∑j=1nxj≤B, gdzie B∈ℤ+ i fj:ℝ→ℝ. jak zrobiłbym to za pomocą programowania dynamicznego i jakie byłyby stany i formułowanie rekurencyjne. Również jak bym sobie poradziła ze znalezieniem złożoności czasowej tej metody? Każda pomoc byłaby bardzo mile widziana z poważaniem


title: Jak działa VoiceDrop?

text: Jestem zainteresowany zbudowaniem funkcjonalności podobnej do tej dostarczanej przez VoiceDrop (http://www.voicedrop.ws/). Zastanawiam się nad użyciem Twilio, oferuje kilka bardzo potężnych funkcji telefonicznych, ale nie jest od razu oczywiste, w jaki sposób można bezpośrednio wybrać pocztę głosową użytkownika. Czy ktoś ma jakieś pomysły? _edit:_ przepraszam za kiepski tag, chciałem wstawić "voicedrop poczty głosowej twilio"


title: Programowanie ramek cyfrowych

text: Ostatnio zwróciłem uwagę na projekt, ale nie mam pojęcia, od czego zacząć, a nawet czy jest to możliwe. Pomysł polega na zaprogramowaniu zegara wyświetlanego w cyfrowej ramce na zdjęcia. Użytkownik mógłby wtedy umieścić różne zdjęcia odpowiadające różnym czasom, na przykład w długopisie USB, które ładowałyby się, gdy tylko włożysz USB. Sam projekt byłby naprawdę fajnym projektem - gdyby był tylko na komputerze . Nie mam pojęcia, czy to, o czym mówię, jest możliwe na cyfrowej ramce do zdjęć i czy to w jakim języku? Każdy, kto ma jakikolwiek wkład, byłby świetny. Moim obecnym pomysłem jest być może małe urządzenie z tyłu, SSD, które uruchamia program przez ekran, całkowicie przepuszczając standardowe cyfrowe ramki do zdjęć, ale znowu nie wiem, jak zacząć. I tak, próbowałem google (chociaż pomaga wiedzieć, co google).


title: Potrzebujesz pomocy we wskazaniu, aby skoncentrować się na kluczowych elementach fazy przeglądu kodu?

text: Podziel się swoją opinią na temat procesu weryfikacji kodu. Jeśli ktoś podał fragment kodu i poprosił Cię o sprawdzenie tego kodu, na jakich głównych rzeczach skupisz się na tym procesie przeglądu kodu? Na przykład sprawdzę, czy jakikolwiek martwy kod jest dostępny w tym kodzie, poza sprawdzaniem martwego kodu, na jakich kluczowych elementach należy się skoncentrować w procesie przeglądu kodu? **Aktualizacja:** Proszę o udostępnienie dowolnego bezpłatnego e-booka z recenzją kodu, który pomaga mi coraz lepiej rozumieć.


title: Dlaczego Oracle nadal kocha czarny ekran zrzutu wiersza poleceń?

text: Od dawna chciałem o tym wiedzieć. Inni dostawcy udostępniają intuicyjne IDE z jeszcze większą elastycznością dla programistów i administratorów baz danych, podczas gdy do współpracy z Oracle polegamy na Toad i IDE innych firm. Dlaczego trzymają się czarnego ekranu zrzutu wiersza poleceń?


title: Czy codzienne spotkanie Scrum można zastąpić e-mailem statusowym?

text: Jeśli w zwinnym zespole są członkowie, tacy jak programiści, testerzy i testerzy automatyzacji z różnych regionów geograficznych, jak może odbywać się codzienne spotkanie scrumowe? Oczywiście muszą pracować w różnych strefach czasowych. Czy można to z powodzeniem zarządzać? Czy uważasz, że codzienne spotkanie Scrum można zastąpić wysyłaniem wiadomości e-mail ze statusem na koniec dnia, czy odpowiedzią na trzy pytania Scrum w wiadomości e-mail?


title: Definiowanie operacji użytkownika na odpowiedzi aplikacja/kolekcja+json?

text: Jestem całkiem nowy w Collection+JSON. Mam kilka pytań dotyczących Collection+JSON i operacji użytkownika. # Przypadek użycia Posiadanie uprawnień użytkownika w odpowiedzi Collection+JSON byłoby przydatne w informowaniu klienta, jakie operacje można wykonać na konkretnym obiekcie. Na przykład, pozwoliłoby to klientowi wiedzieć, które "przyciski" mają być renderowane w interfejsie użytkownika. ## Pytania 1. Czy uprawnienia użytkownika powinny być dołączone do odpowiedzi Collection+JSON? 2. Czy uprawnienia użytkownika powinny być połączone w osobne wywołanie obiektu użytkownika? 3. Czy wykracza to poza zakres Collection+JSON? ## Myśli Osobiście uważam, że uprawnienia użytkowników powinny być przechowywane w obiekcie użytkownika w celu oddzielenia obowiązków, jednak w takim przypadku każde żądanie powinno być połączone z żądaniem obiektu użytkownika. Nie wydaje się to poprawną metodologią. ## Przykłady W poniższych przykładach „uprawnienia” są reprezentowane przez wartość całkowitą, gdzie 1 reprezentuje odczyt, 2 reprezentuje tworzenie, 3 reprezentuje aktualizację, a 4 reprezentuje usuwanie. Serwer zawsze sprawdza poprawność żądania użytkownika, ale ułatwiłoby to klientowi poznanie, jakie operacje można wykonać na obiekcie. ### 1\. Dołączone w odpowiedzi „Uprawnienia” mogłyby zostać dodane do specyfikacji Collection+JSON, ale byłoby to modyfikacją specyfikacji. { "collection" : { "rel" : {string}, "href" : {string}, ... linki, zapytania, elementy itp... "permissions" : { wartość całkowita } } } ### 2\ . Dołączone do obiektu użytkownika Uprawnienia są przechowywane w obiekcie użytkownika i zmieniają się na podstawie adresu URL, aby zapewnić klientowi informacje o tym, co ten użytkownik może zrobić w tym konkretnym stanie w aplikacji. { "kolekcja" : { pozycje: [{ ... nazwa, nazwa użytkownika, itd... "uprawnienia" : { wartość całkowita } }] } } ### 3\. Poza zakresem Zgodnie ze specyfikacją _draft_: > Typ hipermediów Collection+JSON został zaprojektowany do obsługi pełnego odczytu/zapisu > prostych list. Podejrzewam, że dostarczając odpowiedź Collection+JSON, zakłada się, że wszystkie operacje CRUD są dostępne dla klienta i że serwer udzieli odpowiedniej odpowiedzi po wysłaniu żądania.


title: Najlepszy sposób na zapewnienie niepowtarzalności nazwy pliku za pomocą php

text: Zastanawiałem się, **bez używania jakichkolwiek informacji o użytkowniku** (id, nick, wiek itp.), jaki byłby najlepszy sposób na zapewnienie unikalności nazwy pliku przy użyciu php **w dużej bazie danych o dużym natężeniu ruchu i najprawdopodobniej jednocześnie ** między wieloma użytkownikami? Używam na przykład `$file = time()`, ale chciałbym wiedzieć, czy powinno to wystarczyć, gdy dwóch użytkowników może przejść przez ten kod w tym samym czasie (na dużą dużą skalę, 10000 użytkowników w tym samym czasie i ta sama funkcja uruchomiła 200 w tym samym czasie).


title: Czy relacje zależności powinny być zawsze pokazywane na diagramach klas?

text: Niedawno zacząłem używać wtyczki generatora Object aid UML dla Eclipse i zauważyłem, że domyślnie dodawanie relacji zależności jest wyłączone. To sprawiło, że zacząłem się zastanawiać, czy w większości przypadków nie powinny być pokazywane, czy raczej większość ludzi nie chce ich pokazywać, ponieważ jest to ustawienie domyślne. Jak zdecydować, czy pokazać relacje zależności, czy nie?


title: czy to źle, że mój obiekt nadrzędny przyjmuje założenia dotyczące obiektów podrzędnych?

text: Mam prostą domenę z około 6 obiektami w modelu. W większości mają jasną relację dziecko/rodzic z rodzicem mającym wiele dzieci. Wszystkie będą niezmienne. Jednak w pewnym momencie będę musiał zarówno pobrać zbiór wszystkich obiektów danego typu, jak i być w stanie pobrać konkretny obiekt określonego typu według jego etykiety. Miałem mieć model z kilkoma ogólnymi mapami i klasą abstrakcyjną dla obiektów w modelu. Dodanie do modelu wkleja obiekt na moją mapę i prosi o obiekty nadrzędne i wkleja te na mapę itp. Podobnie usunięcie może usunąć wszystkie klasy, które nazywają się dziećmi. W ten sposób mogę wyszukiwać określone klasy w metodzie ogólnej bez pisania logiki, aby znaleźć każdą klasę. Kiedy pomyślałem o tym, moja następna myśl była raczej taka, że mogę użyć podobnego frameworka do oszczędzania procesora, wyszukując dzieci w ten sam sposób. Jeśli muszę już przechowywać „te obiekty, które twierdziły, że x był rodzicem”, aby usunąć, mogę wtedy powiedzieć „daj mi dzieci X”. Zakłada to jednak, że X wie coś o innych obiektach (które klasy są jego potomkami). Mogę wprowadzić bezpieczeństwo typu głównie poprzez refleksję; ale czy kruche jest, aby jeden obiekt zakładał, że pewna inna klasa będzie uważała go za rodzica i prawdopodobnie znajdzie się w modelu jako takim? Aby wyjaśnić, powiedzmy, że mam klasę węzła i krawędzi. Moja krawędź zgłosiłaby węzeł jako rodzica. Mój węzeł może wtedy powiedzieć „daj mi wszystkie obiekty, które uznawały mnie za rodzica i są krawędziami” i wykonywać na nich logikę; mimo że nigdy nie zrobił nic, aby upewnić się, że istnieją krawędzie używające go jako węzła. Czy to źle? Uwaga, to jest mały system. Wiem, że istnieją świetne wzorce abstrakcji dla dużych systemów, które w większości nie są warte kosztów implementacji lub mniej wyraźnego kodu dla tak prostego systemu.


title: Kiedy używać bibliotek współdzielonych dla frameworka internetowego?

text: **tl;dr:** Odkryłem, że hostuję kilka witryn działających na tej samej platformie internetowej (symfony 1.4). Czy byłoby pomocne, gdybym przeniósł cały kod biblioteki współdzielonej do tego samego katalogu i udostępnił go w różnych witrynach? **więcej** Widzę pewne zalety: * Każda witryna zajmuje mniej miejsca na dysku * Aktualizacje bibliotek (nieprawdopodobny scenariusz) mogą mieć miejsce we wszystkich witrynach Widzę też pewne wady, głównie w zakresie pojedynczego punktu awarii i niemożność posiadania witryn korzystających z różnych wersji frameworka. Moim prawdziwym zmartwieniem jest jednak wydajność. Przypuszczam, że zobaczę wzrost wydajności, ponieważ kod PHP będzie już buforowany dla wszystkich witryn, gdy wywołają one framework. Czy to poprawna hipoteza?


title: Czy istnieją udane przykłady „przesunięć” rozwojowych?

text: Trwają pewne przemyślenia na temat tego, jak uzyskać więcej wyników z obecnych zasobów, które posiadamy. Zakłada się, że dwa zespoły pracujące na różnych zmianach mogą generować więcej wyników. Pierwsza zmiana może pracować od 8:00 do 17:00, a druga drużyna od 16:00 do 1:00. Spotkania dotyczące statusu i wszelka komunikacja, która musi się odbywać między zespołami, pokrywają się godzinami. Oczywiście potrzebujesz dwóch kierowników zespołów, po jednym na każdą zmianę. Jak dotąd korzyści, jakie z tego widzę, to: * Lepsza zdolność reagowania na problemy klientów (strefa czasowa ma mniejszy wpływ na rzeczy) * Wykorzystanie tych samych stacji roboczych, sprzętu i powierzchni biurowej (mniejszy koszt na dewelopera) * Pozwala na „nocne marki” do pracy w nocy, kiedy są bardziej produktywni * Może być w stanie wykonać mniej złożone zadania w mniej dni (nie czasu, dni) * Mniej osób w biurze (otwartym), co oznacza mniej zakłóceń i wyższą produktywność Widzę, że: * Deweloperzy nie mają miejsca ani sprzętu, który mogliby nazwać własnymi (czy tylko mnie to obchodzi?) * Komunikacja między zespołami ucierpi, ponieważ widują się tylko przez godzinę dziennie * Dużo potrzebna będzie większa dokumentacja i pisanie specyfikacji (nie możesz polegać na podejmowanych w locie decyzjach, ponieważ mogą one być niedostępne) * Starsi programiści mają zwykle rodziny i zajęcia nocne i nie chcą być w pracy Jakieś inne myśli? Czy ktoś pracował w takim środowisku? Chętnie poznam Twoje przemyślenia na temat tego modelu rozwoju i Twoją opinię na temat tego, czy był dobry, czy zły.


title: Czy istnieje standardowa nazwa tego podejścia do wyszukiwania?

text: W celu utworzenia zapytania (Lucene) używany jest „niekompletny” obiekt domeny. Wszystkie właściwości z wartością są używane w zapytaniu, reszta jest ignorowana. W przypadku braku lepszej nazwy nazywamy to „wyszukiwaniem przez przykład”, ale podobnie jak w przypadku wielu innych „oryginalnych” podejść, prawdopodobnie istnieje (standardowa/uzgodniona) nazwa dla tego podejścia, ale nie udało mi się jej znaleźć. Dziękuję Ci.


title: Czy pytania dotyczące wzorca Singleton to dobry sposób na ocenę kandydata do pracy?

text: Niedawno przydzielono mi zadanie przeprowadzania rozmów kwalifikacyjnych w mojej firmie. Udzielam wywiadów programistom i inżynierom z co najmniej 5-6 letnim doświadczeniem. Jednym z moich ulubionych pytań jest pytanie, czy użyli jakichś wzorców… a domyślną odpowiedzią zawsze było „Singleton Pattern” Ponieważ jest to najprostszy wzorzec, zawsze proszę ich o napisanie dla niego kodu , i tylko 1-2 na 5 kończy się poprawnie, ale mylę się, gdy zaczynam pytać o bezpieczeństwo wątków, podwójnie sprawdzane problemy z blokowaniem itp. Moje pytania są następujące: 1. Czy z mojej strony uczciwe jest oczekiwanie osoba z 5-6+ letnim doświadczeniem, aby wiedzieć, jak napisać wzór Singleton? 2. Czy to uczciwe z mojej strony, aby oceniać osobę na podstawie jej zdolności do kodowania klasy Singleton? EDYCJA: Niektóre wyjaśnienia. \- Kiedy pytam, czy wiedzą coś o wzorcach projektowych, chciałbym wiedzieć, jakich wzorców GoF używali, dlaczego i w jaki sposób ich używali. A mając 5-6 lat doświadczenia w programowaniu, spodziewałbym się, że ktoś będzie wiedział o wzorcach GoF... prawda? \- Pierwsza odpowiedź, jaką wszyscy odpowiadają, gdy pytam o wzorce, to „Użyłem i napisałem Klasy Singletona”. Singletony są u progu ogłoszenia antywzorca... prosząc ich o napisanie o tym, staram się ocenić 1. Jeśli potrafią kodować, 2. Jeśli potrafią zakodować to, co twierdzą, że potrafią kodować, 3. Powiedz mam problemy z Singletonem... Czy brzmię teraz bardziej rozsądnie? :)


title: Querystring Advanced Search, w którym znajduje się około 20 pól wyszukiwania

text: Tworzę stronę zaawansowanego wyszukiwania, na której znajduje się około 20 pól wyszukiwania dla użytkownika do filtrowania wyszukiwania. Moje pytanie dotyczy ciągu zapytania. Czy standardową praktyką tworzenia stron internetowych jest, powiedzmy, 20 parametrów w ciągu zapytania? Wyniki wyszukiwania wyświetlają duże tabele danych. Czy istnieje alternatywa, która nadal używa HTTP GET (ciąg zapytania), jeśli nie jest to standardowe? Chciałbym, aby użytkownicy mogli dodawać zakładki do swoich wyszukiwań.


title: Wymaganie wyraźnej obsługi odwołań zerowych

text: Jednym z problemów, jakie mam z odwołaniami zerowymi, jest to, że mogą nie być wyjątkowe. Na mojej obecnej pozycji jest kilka wymagań i masz szczęście, jeśli przestrzegane są konwencje. Oznacza to, że niemożność obsługi żądania jest częstym zjawiskiem, a zgłaszanie wyjątku jest zbyt wolne (pomyśl o milionach żądań). Jestem odpowiedzialny za pisanie interfejsu API do obsługi tych żądań i próbuję zdecydować, jak radzić sobie z awariami. Nasz kod jest napisany w C# i jestem wielkim fanem LINQ. Wiem, że LINQ obsługuje ten problem, udostępniając dwie metody "Function()" i "FunctionOrDefault()". Zwracając wartość domyślną (zazwyczaj null), bardzo ułatwiamy deweloperowi strzelenie sobie w stopę. Z drugiej strony rzucanie wyjątku jest dla nas niedopuszczalne. Istnieje również wzorzec „TryParse”, ale nie nadaje się on dobrze do wyrażeń lambda. Niedawno odkryłem typ Option w F# i jak wymaga on jawnej obsługi zarówno przypadków Some, jak i None, w przeciwnym razie Twój zestaw nie zostanie skompilowany. Wydaje się to o wiele lepszym rozwiązaniem problemu z wartością zerową niż pozostawienie programiście pamiętania o zaimplementowaniu obsługi błędów. Mógłbym zaimplementować typ opcji, który nie skompiluje zarówno **, jak i ** zwróci żądaną wartość, chyba że obsługiwane są zarówno przypadki Some, jak i None. Kontrakt dla mojej implementacji wyglądałby tak: Option<SomeClass> option = new SomeClass { Value = 5 }.ToOption(); // Metoda rozszerzenia int value = option.Some(x => x.Value).None(x => x.Default(25)); // Inne metody pomocnicze dostępne również dla przypadków None. Więc moje pytanie brzmi, czy jeśli mam możliwość wymagania jawnej obsługi odwołań o wartości null, czy są jakieś wady tego podejścia? Czy nie byłoby lepiej trzymać się konwencji, niż próbować rozwiązać ten problem z góry, aby zapobiec przyszłym ukrytym błędom?


title: 5 rzeczy przed rozpoczęciem projektu?

text: Jakie są pierwsze 5 rzeczy, które robisz przed rozpoczęciem nowego projektu? Czy zawsze spędzasz dzień na badaniu nowych frameworków? A może korzystasz z podobnych lub konkurencyjnych produktów?


title: Wskazówki dotyczące konwertowania programu w C do czystego Pythona

text: Chciałbym przekonwertować aplikację C typu open source na czysty Python (nie na Cython, IronPython itp.). Dokumentacja i prezentacje oryginalnego twórcy aplikacji w języku C pozwoliły mi dobrze zrozumieć architekturę aplikacji. Ponieważ chcę, aby pierwsza wersja aplikacji w Pythonie była identyczna z wersją opartą na C, ręczna konwersja wydaje się najlepszą opcją. Byłbym wdzięczny za kilka wskazówek, jak najlepiej podejść do tej konwersji kodu (C na Python), w oparciu o twoje doświadczenie. (Szukam tylko informacji na temat tego, jak inni radzili sobie wcześniej z podobnym zadaniem.) * * * (Python w wersji 2.7; aplikacja C to popularna baza danych SQLite. Nie pozwól, aby to lub C vs python odciągnęło Cię od rzeczywistego Moje C jest zardzewiałe, ale wystarczająco dobre dla tego zadania, a mój Python jest powyżej średniej.) * * * Wyjaśnienia: * Planowałem ręczne przepisanie. Doceń porady dotyczące analizowania plików źródłowych i nagłówkowych C oraz rzeczy, o których należy pamiętać w przypadku Pythona.


title: GPL v 3 i skrypty

text: nie proszę o poradę prawną; tylko przybliżone wskazówki. Mam aplikację hosta w Javie, która używa silnika Rhino JS do wykonywania JavaScript. Ten JavaScript może następnie wywoływać inne biblioteki Javy, z których niektóre mogą być licencjonowane na licencji GPL. Dystrybuuję moją aplikację hostingową, pliki JS jako źródło i niezmodyfikowane biblioteki Java. Udostępniłem cały JavaScript jako open source. Czy muszę również zwolnić źródło moich aplikacji hostingowych Java?


title: Nazwa tego algorytmu (Utwórz obraz binarny)

text: Kilka dni temu zobaczyłem na tej stronie poniższy algorytm do konwersji kolorowych obrazów na obrazy binarne i użyłem go w mojej aplikacji (z małymi zmianami). Muszę jednak wiedzieć, jak nazywa się zaimplementowany algorytm i jeśli to możliwe, kilka odwołań na jego temat. Z góry dziękuję! public static boolean[][] createBinaryImage( Bitmapa bm ) { int[] piksele = new int[bm.getWidth()*bm.getHeight()]; bm.getPixels(piksele, 0, bm.getWidth(), 0, 0, bm.getWidth(), bm.getHeight() ); int w = bm.getWidth(); // Oblicz ogólną jasność obrazu long gLightness = 0; int lLekkość; int c; for ( int x = 0; x < bm.getWidth(); x++ ) { for ( int y = 0; y < bm.getHeight(); y++ ) { c = piksele[x+y*w]; lJasność = ((c&0x00FF0000 )>>16) + ((c & 0x0000FF00 )>>8) + (c&0x000000FF); piksele[x+y*w] = lJasność; gJasność += lJasność; } } gLightness /= bm.getWidth() * bm.getHeight(); gJasność = gJasność * 5 / 6; // Wyodrębnij funkcje boolean[][] binaryImage = new boolean[bm.getWidth()][bm.getHeight()]; for ( int x = 0; x < bm.getWidth(); x++ ) for ( int y = 0; y < bm.getHeight(); y++ ) binaryImage[x][y] = piksele[x+y*w] <= gJasność; return binarnyObraz; }


title: Jaki jest najlepszy sposób reprezentowania ilości w magazynie w modelu domeny?

text: Transakcja zawiera co najmniej jeden element zamówienia. Jeden element „LineItem” ma relację z „Item”. Każdy „Pozycja” ma pole liczbowe, które reprezentuje ilość w magazynie. Przy takim podejściu każda kreacja „Transakcji” będzie musiała zmniejszyć ilość w pozycji „Element”. Jeśli użytkownik zaktualizuje „Transakcję”, ilość w „Elementu” będzie musiała zostać dostosowana. Jeśli użytkownik usunie „Transakcję”, ilość w „Elementu” będzie musiała zostać zwiększona. Jaki jest najlepszy sposób na zaimplementowanie tej reguły lub zachowania w warstwie modelu domeny? Operacje `Transakcji` (takie jak tworzenie, aktualizacja lub usuwanie) znajdują się w warstwie dostępu do danych.


title: wzór strategii projektowania ze sprawdzaniem wartości zerowej

text: Kiedy klasa kontekstu może zaakceptować strategię null, czy istnieje inny sposób na zrobienie tego bez sprawdzania, czy jest ona null? Czy jest to uważane za dobre wdrożenie projektowania strategii? class MainApp{ static void Main(){ Context context = new Context(); while(true){ Strategia strategia = createConcreteStrategy(Console.ReadLine()); context.setStrategy(strategia); kontekst.uruchom(); } } static void createConcreteStrategy(string input){ if( input == "strategyA" ){ return new StrategyA(); } if( input == "strategyB" ){ return new StrategyB(); } zwraca null; } } klasa abstrakcyjna Strategia { public abstract void doCos(); } class Kontekst{ Strategia strategia; klasaXx; public Context(){} public void setStrategy(Strategy strategy){ this.strategy = strategia; } public void run(){ if(strategia != null ){ data = strategia.doCoś(); x.setData(dane); } } }


title: Dlaczego poniższe wytyczne dotyczące nazewnictwa różnią się w językach OO i innych niż OO?

text: Pracuję z językiem innym niż OO i staram się konsekwentnie nazywać moje rutyny. Przeszedłem przez następujące wytyczne z Steve McConnell's Code Complete: > _Aby nazwać procedurę, użyj silnego czasownika, po którym następuje dopełnienie_ McConnell podaje następujące dobre i złe przykłady: * good, non-OO --> `PrintDocument(doc)` * dobrze, OO --> `doc.Print()` * źle, OO --> `doc.PrintDocument()` Dla języka OO, `doc.PrintDocument()` nie jest zalecany, ponieważ jest zbędny. Trudno mi owinąć głowę wokół tej wytycznej. Dlaczego `PrintDocument(doc)` jest zalecane, a `doc.PrintDocument()` niezalecane? Jaki byłby problem z prostszą nazwą `Print(doc)` w języku innym niż OO? Czy brakuje mi tutaj czegoś bardzo podstawowego?


title: Jak mogę zautomatyzować proces przeglądu kodu?

text: Mam zespół, który pracuje nad wieloma technologiami. Chcę wiedzieć, jak zautomatyzować proces przeglądu kodu dla .Net, .Net MVC, Python, PHP, Drupal i HTML5/CSS z JavaScript. Czytałem i używałem niektórych narzędzi, takich jak StyleCop/FxCop dla .Net i PHP Code Sniffer oraz polubienia dla PHP i pyLint dla Pythona. Rozumiem, że automatyczne przeglądy kodu nie zastępują w pełni ręcznych przeglądów kodu, ale chcę skonfigurować proces do obsługi ręcznych przeglądów kodu. Jakieś sugestie? Dziękuję


title: Jakie są typowe procesy przeglądu kodu, a co jest uważane za złe?

text: Moja firma niedawno zaczęła przeprowadzać sformalizowane przeglądy kodu. Proces wygląda tak: przesyłasz do github, żądasz pull request, kod jest sprawdzany przez około trzy osoby, a jeśli wszystko się zgadza, twój kod wchodzi. Proces wydaje się sprawiedliwy, jednak trzy osoby, które wykonują przeglądy kodu, nie nie wydaje się być sprawiedliwe. Zauważyłem, że kiedy przesyłam kod do recenzji, otrzymuję od 100 do 200 komentarzy. Największą liczbą było dla mnie 300 komentarzy. Oczywiście można by pomyśleć, że to duże zmiany, ale mogą to być również bardzo małe zmiany z mniej niż 50 linijkami kodu (co obejmuje testy jednostkowe). Wszystkie komentarze są uważane za „obowiązkowe” i bez argumentów. Mając to na uwadze, moim głównym problemem jest to, że wydaje się to nieco przesadne. Rozmawiałem z grupą i powiedzieli mi w zasadzie, że to, że miałem tyle lat rozwoju w php, nie oznacza, że jestem "programistą". Oczywiście wydaje się to bardziej bolesne niż nie. Zauważyłem również, że w grupie nie wydaje się, aby generowali tyle komentarzy i przez większość czasu ignorują lub w inny sposób lekceważą inne komentarze lub sugestie, rzadko akceptując to jako ważny punkt, nawet jeśli coś jest zepsute. Więc moje pytanie brzmi, czy to jest sprawiedliwe? Lub wspólne?


title: *Ukryte funkcje* w Twoim systemie operacyjnym, które zwiększają produktywność?

text: _Jako programiści, ile czasu lub czy spędzasz czasu, ucząc się sztuczek z ukrytymi funkcjami Twojego systemu operacyjnego ?_ * * * * Jak ważne jest to dla produktywności w codziennym programowaniu? zadania. * Co masz na myśli, gdy wymieniasz wiedzę na temat systemu operacyjnego w swoim CV? * Jakie są twoje najbardziej przydatne ukryte -mniej znane funkcje * * * Na przykład: Częsty problem Jak mogę otworzyć okno cmd w określonej lokalizacji i zrób to sam, powiedzmy xp i co zrobić, jeśli coś się zepsuje * * * A może jest to coś, na co zwracasz uwagę, kiedy i kiedy znajdujesz taką potrzebę?


title: Czy można tworzyć aplikacje z interfejsem Kendo, które można przesyłać do iOS App Store?

text: Liczba platform, dla których muszę tworzyć aplikacje, rośnie i sprawia mi dużo stresu, aby uczyć się nowych technologii dla każdej platformy docelowej. Dowiedziałem się, że interfejs użytkownika Telerik Kendo jest bardzo dobry do tworzenia stron internetowych, które wyglądają i działają natywnie na platformach mobilnych (np. iOS i Android). Moje pytanie brzmi, czy można tworzyć aplikacje HTML5, aby wdrażać je w iTunes App Store i Google Play? Zwracam uwagę, że chętnie poznam możliwości tworzenia aplikacji (kompletnych aplikacji w standardowym formacie Apple i Google do dystrybucji na odpowiednich rynkach aplikacji mobilnych), ale nie stron internetowych.


title: Czy początkująca znajomość Javy wystarczy do tworzenia aplikacji na Androida?

text: Właśnie skończyłem książkę "Tech Yourself Java in 24 Hours, 6th Edition" Rozumiem język (przez zrozumienie mam na myśli podstawy i wszystko omówione w książce) i eksperymentuję i buduję małe rzeczy z moją wiedzą . Chcę dowiedzieć się więcej o Androidzie i zastanawiałem się, czy muszę poszerzyć swoją wiedzę w języku Java przed przejściem na Androida, czy mogę po prostu przejść bezpośrednio na Androida?


title: Jakie są największe różnice między F# a Scala?

text: F# i Scala są funkcjonalnymi językami programowania, które nie zmuszają dewelopera do używania tylko niezmiennych typów danych. Obydwa mają wsparcie dla obiektów, mogą korzystać z bibliotek napisanych w innych językach i działać na maszynie wirtualnej. Wydaje się, że oba języki opierają się na ML. Jakie są największe różnice między F# i Scala, mimo że F# jest przeznaczony dla .NET, a Scala dla platformy Java?


title: Jakie umiejętności (technologie) dezaktualizują się wolniej?

text: Powszechnie wiadomo, że skoro branża IT rozwija się bardzo szybko, większość umiejętności dość szybko się dezaktualizuje: jQuery, .NET, Ruby on Rails itp. Cały czas się zmieniają, przez co trudno je śledzić, a przede wszystkim nauczyć się ich. Kiedy nauczyłem się Ruby on Rails 3.2, pojawił się Ruby on Rails 4; to samo dla innych frameworków i bibliotek. Jakie umiejętności (a raczej **technologie** ) dezaktualizują się wolniej, a jednocześnie są całkiem przydatne, jeśli chodzi o znalezienie pracy? Myślę, że są to sieci i algorytmy wiedzy. Co jeszcze?


title: Przeglądanie Prog.SE itp. zamiast zwracania uwagi na mój stopień naukowy

text: Właśnie zdałem sobie sprawę, że spędziłem więcej czasu na przeglądaniu Programmers.SE niż na wykonywaniu ćwiczeń, które powinienem zrobić w tej godzinie na kierunku informatyka - nie są to zajęcia, tylko zaplanowane, wspierane, sesje laboratoryjne - tym razem podstawowe Instrukcje SQL SELECT. Znam już SQL, ale mam problem z pisaniem poprawnych składniowo instrukcji za pierwszym razem. Ćwiczenia mają formę „Napisz zapytanie, aby posortować imiona wszystkich zwierząt domowych urodzonych ponad 10 lat temu według nazwiska właściciela”. Czy to źle, że to robię? Myślę, że jest to bardziej przydatne niż te ćwiczenia, ale nie jestem zbyt pewien.


title: Adresowanie zmiennej w VB

text: Dlaczego Visual Basic.NET nie ma operatora _addressof_, takiego jak C#? W C# można int i = 123; int* adres = &i; Ale VB nie ma odpowiednika. Wydaje się, że powinno to być ważne. **AKTUALIZACJA** Ponieważ jest jakieś zainteresowanie, kopiuję moją odpowiedź do Strilanc poniżej. > Przypadek, na który natknąłem się, nie wymagał w żaden sposób wskaźników, ale > próbowałem rozwiązać problem z testem jednostkowym, który nie powiódł się i wystąpiło pewne > zamieszanie co do tego, czy obiekt używany w jednym punkcie stosu > był ten sam obiekt jako obiekt kilka metod dalej.


title: blokuje dostęp do metod obszaru/kontrolera, ale pozwala odziedziczonemu kontrolerowi na uruchamianie metod, asp .net mvc 5

text: Próbuję dowiedzieć się, jak zablokować dostęp do całego obszaru/kontrolera, wpisując adres URL website.com/area1/basecontroller/method1 (obszar ten zawiera również widoki, które będą wyświetlane), jednocześnie będąc w stanie dziedziczyć wspomniany kontroler i użyj metody z oryginalnego kontrolera, takiej jak website.com/area2/extendedbasecontroller/method1. Nie byłoby metody1 w rozszerzonym kontrolerze bazowym, po prostu wykonałaby metodę1 z kontrolera bazowego. Czy jest to możliwe, czy można to osiągnąć w inny sposób?


title: Czy MapReduce jest czymś więcej niż tylko aplikacją dziel i rządź?

text: Dzielenie problemu na mniejsze, dopóki poszczególne problemy nie zostaną rozwiązane niezależnie, a następnie połączenie ich w celu uzyskania odpowiedzi na pierwotne pytanie jest znane jako technika projektowania algorytmu **dziel i zwyciężaj**. [Patrz: Wprowadzenie do algorytmów CLR] Ostatnio to podejście do rozwiązywania problemów obliczeniowych, zwłaszcza w dziedzinie bardzo dużych zbiorów danych, było określane jako **MapReduce** zamiast dziel i zwyciężaj. Moje pytanie jest następujące: Czy MapReduce jest czymś więcej niż zastrzeżonym frameworkiem, który opiera się na podejściu dziel i rządź, czy też są w nim szczegóły, które czynią go wyjątkowym pod pewnymi względami?


title: Jak wyglądał twój najgorszy dzień tworzenia oprogramowania?

text: Czasami ludzie naprawdę mają zły dzień... Myślę, że interesujące jest dowiedzieć się, dlaczego ten dzień był zły i uczyć się na błędach popełnionych tego dnia. Więc... Jaki był twój najgorszy dzień tworzenia oprogramowania?


title: „Plan testowy Lite” dla projektu internetowego

text: Jak przygotować szybki i łatwy „Plan testowy Lite” dla średniej wielkości projektu internetowego (70 tys. linii, 2 programistów)? Widziałem wiele samouczków/artykułów na temat metod testowania, ale wszystkie wydają się niewygodne. Dla nas celem jest umożliwienie dzielenia i delegowania instrukcji testowania naszym znajomym dla różnych segmentów projektów, przeglądarek itp. Jaki jest szybki i łatwy sposób na pisanie planów testów dla aplikacji internetowych? (20 z zasady 20/80) Dzięki!


title: Organizacja/uwierzytelnianie funkcji?

text: Załóżmy, że mam produkt, który ma różne funkcje lub inny dostęp do funkcji w zależności od rzeczy (np. Użytkownik Premium, Beta, Demo, Zalogowany użytkownik itp.). Jaki jest najlepszy sposób na zorganizowanie systemu w taki sposób, aby nie był zestawem statycznych sprawdzeń (np. zbiorem instrukcji if)? Platforma nie jest ważna, dokładnie proszę o zasady projektowania/projekt ogólny.


title: Dlaczego Python jest napisany w C, a nie w C++?

text: W tutorialu Pythona można przeczytać, że oryginalna implementacja Pythona jest w C; > Z drugiej strony implementacja Pythona napisana w C, (...) jestem bardzo ciekawa dlaczego Python został napisany w C a nie C++? Chciałbym poznać uzasadnienie tej decyzji i szukam odniesień do danych historycznych.


title: Różnica między wysłaniem wiadomości a jej emisją

text: W połowie samouczka RabbitMQ zauważyłem, że samouczek przestaje odnosić się do producentów „wysyłających” wiadomości i zamiast tego zaczyna używać czasownika „emit” — i to również dość konsekwentnie; po drugim samouczku czasownik „wysłać” nie jest już używany do opisu producenta wysyłającego wiadomości. Przykład: Drugi samouczek > Główna idea kolejek roboczych ... hermetyzuj zadanie jako wiadomość i > **wyślij** je do kolejki. Proces roboczy działający w tle .... Czwarty samouczek > Użyjemy tego modelu w naszym systemie rejestrowania. ... Najpierw skupmy się na **emitowaniu** > logów. Jaka jest różnica między wysyłaniem wiadomości a jej emitowaniem?


title: Aplikacja korporacyjna z dużą ilością zapytań SQL

text: **Kontekst:** Pracuję nad dość dużą bazą danych Access (którą odziedziczyłem), która ma oddzielony interfejs i tabele. Aby to zadziałało, mamy wiele zapytań SQL (dziesiątki). Niektórzy wskazują na tę bazę danych, a niektórzy na nasze datamarty. Kod w tej chwili ma około 12k-14k linii, co nie jest zbyt duże jak na standardy tworzenia oprogramowania, ale nie jest tak krótkie, że mogę go po prostu przepisać. Dodatkowo baza ta jest zasilana przez formularz, który jest dystrybuowany do wszystkich naszych klientów wewnętrznych. **Moje pytanie:** Zastanawiam się, jak najlepiej sobie z tym poradzić. Chciałbym wiedzieć, czy istnieje lepszy sposób zarządzania wszystkimi tymi zapytaniami niż posiadanie ich w kodzie w zmiennych ciągu. Jestem pewien, że można używać plików, ale wtedy musimy je dystrybuować, a to nie może się zdarzyć (tj. Nie chcę, aby użytkownicy mieli szeroko otwarte zapytania SQL). Czy istnieje jakiś czysty (pod względem projektowym) sposób zarządzania zapytaniami SQL, który nadal ma przyzwoity poziom bezpieczeństwa (dostęp do tych zapytań)? Żeby było jasne, używamy Access 2007 z VBA.


title: Czy jest jakiś sposób na uzyskanie szybszych recenzji aplikacji?

text: Próbuję zbudować biznes wokół aplikacji na iPhone'a. Aplikacja będzie naszym głównym kanałem sprzedaży, a możliwość dostosowania kanału sprzedaży szybciej niż 9-10 dni opóźnienia spowodowane czasem przeglądu aplikacji ma kluczowe znaczenie. Dlatego zastanawiałem się, czy jest coś, co mogę zrobić, aby poprawić szybkość recenzji. Myślę, że wydawcy Angry Birds z pewnością nie musieliby czekać w kolejce na recenzje na tych samych warunkach, co jakaś niejasna darmowa aplikacja. Więc co mogę zrobić? Kilka rzeczy, które rozważam: * Czy Apple nada priorytet aplikacjom, na których zarabia pieniądze? * Czy mogę w jakiś sposób zapłacić bezpośrednio Apple? Wiem już o możliwości zwrócenia się o przyspieszoną recenzję, ale wygląda na to, że można zostać ukaranym za podanie nietechnicznego powodu.


title: Jak ważne są Spring i Hibernate w tworzeniu oprogramowania?

text: Jestem specjalistą od oprogramowania z około 1,6-letnim doświadczeniem w Javie. Z powodów osobistych musiałem zrezygnować z pracy, a teraz po 5-6 miesiącach mam zamiar ponownie rozpocząć karierę zawodową. Mam zamiar przystąpić do egzaminu SCJP, ale niektórzy z moich seniorów zasugerowali, że powinienem nauczyć się Spring i Hibernate. Jestem zupełnie nowy w Spring i Hibernate, ale do pewnego stopnia jestem dobry w podstawowych koncepcjach Javy, serwletach i JSP. Która opcja pomogłaby mi szybko znaleźć pracę? Czy firmy programistyczne nie używają wyłącznie Javy i JDBC, bez zaawansowanych koncepcji, takich jak EJB, Struts, Spring, Hibernate, serwlety, JSP itp.? Czy wystarczy, aby dana osoba posiadała umiejętności w zakresie samej Java, próbując uzyskać certyfikat SCJP, czy też potrzebujesz zaawansowanych umiejętności Java, aby zapewnić sobie pracę?


title: Jaka presja powinna być poddawana programistom?

text: Zostałem pobłogosławiony wspaniałym miejscem pracy, a moi koledzy naprawdę rozumieją.. Jednak to mój pierwszy programowy koncert i wiem, że niektórzy ludzie nie mają tyle szczęścia, zwłaszcza ci, którzy prowadzą własną firmę! (Widziałem, jak mój szef pracuje w nieludzkich godzinach i robi wszystko, co w jego mocy, aby uszczęśliwić klienta.) Brzydka prawda jest taka, że kiedy zostajesz zakontraktowany przez wielką korporację, tak jak my, szybko się uczysz, że korporacje nie dbać o czysty, czytelny kod, szczęście programisty, najlepsze praktyki lub łatwość konserwacji.. I będą dzwonić w weekendy.. O 3 nad ranem.. przy 1 tygodniu pracy potrzebują na spotkanie o 7 rano! 1. Jakie ciśnienie jest normalne dla programisty? 2. Jak dużą presją powinien być programista?


title: Błędy a nieistniejące funkcje

text: Czy można odnosić się do funkcji, która nie została jeszcze zakodowana jako „błąd”? Na przykład pracuję nad projektem, który obejmuje trzy różne funkcje. Jeśli uruchomię tylko jedną z nich, czy słuszne jest nazywanie pozostałych dwóch błędami? A może błędy dotyczą tylko funkcji, które zostały zakodowane i przetestowane?


title: Decyzja projektowa dotycząca wdrożenia logiki ponownego rozmieszczenia pamięci podręcznej

text: Pracuję nad webapp, który ma istniejące ramy do buforowania wartości z bazy danych. Mam wymaganie, które wymaga wielu wartości z bazy danych, a wartości muszą być przearanżowane/zrestrukturyzowane, aby ułatwić ich obsługę w ramach interfejsu użytkownika. Nie jestem w stanie zdecydować, gdzie umieścić tę logikę „złożonej zmiany układu”. Czy powinienem to zrobić z samych zapytań do bazy danych? lub Czy powinienem utworzyć połączoną pamięć podręczną, tj. odczytywać wartości z innych pamięci podręcznych, zmieniać kolejność danych, a następnie przechowywać wynik w nowej pamięci podręcznej? lub Umieścić logikę rearanżacji w interfejsie użytkownika?


title: Na jaką funkcjonalność pozwala pisanie dynamiczne?

text: Używam Pythona od kilku dni i myślę, że rozumiem różnicę między pisaniem dynamicznym a statycznym. Nie rozumiem, w jakich okolicznościach byłoby to preferowane. Jest elastyczny i czytelny, ale kosztem większej liczby sprawdzeń w czasie wykonywania i dodatkowych wymaganych testów jednostkowych. Oprócz niefunkcjonalnych kryteriów, takich jak elastyczność i czytelność, jakie są powody, aby wybrać dynamiczne pisanie? Co mogę zrobić z dynamicznym pisaniem, co nie jest możliwe w inny sposób? Jaki konkretny przykład kodu, który możesz wymyślić, ilustruje konkretną zaletę dynamicznego typowania?


title: Różnica między protokołem komunikacyjnym AS2 a AS3. Wymagania serwera

text: Badam, co jest potrzebne do EDI, jeśli chodzi o protokoły i konfigurację serwera/aplikacji. To jest branża transportowa i interesuje mnie format X12 dla transakcji takich jak 204, 210, 214. Konkretne pytanie brzmi: Czy OBA partnerzy handlowi muszą uruchamiać serwery? Z AS3 wydaje się, że jest to serwer SFTP i wygląda na to, że jeden partner może go uruchomić, a inny partner może pchać/wyciągać. A co z AS2? Czy może mieć serwer tylko z jednej strony? Czy oboje partnerzy powinni być w stanie naciskać?


title: Dlaczego struktury danych są tak ważne w wywiadach?

text: Jestem nowicjuszem w świecie korporacji, który niedawno ukończył studia komputerowe. Jestem programistą Java/groovy. Szybko się uczę i mogę nauczyć się nowych frameworków, API, a nawet języków programowania w stosunkowo krótkim czasie. Mimo to muszę przyznać, że po ukończeniu college'u nie byłem tak silny w strukturach danych. Podczas staży w kampusie podczas moich studiów zauważyłem, że większość dużych firm technologicznych, takich jak Amazon, Microsoft itp., skupiało się głównie na strukturach danych. Wydaje się, że struktury danych to jedyne, czego oczekują od absolwenta. Dodając do tego, widzę, że istnieje ogólna perspektywa, że dobry programista to koniecznie taki, który ma dobrą wiedzę na temat struktur danych. Szczerze mówiąc, źle się z tym czułem. Piszę dobry kod. Postępuję zgodnie ze standardowymi wzorcami projektowymi kodowania, używam struktur danych, ale na poziomie powierzchownym, jak w interfejsach API eksponowanych w java, takich jak ArrayLists, LinkedLists itp. Ale firmy zwykle skupiały się na skomplikowanych aspektach struktur danych, takich jak manipulacja pamięcią oparta na wskaźnikach i złożoność czasu. Prawdopodobnie ze względu na moje java-ishowe doświadczenie, wtedy rozumiałem wydajność kodu i logikę tylko w kategoriach programowania obiektowego, takiego jak obiekty, instancje itp., ale nigdy nie zagłębiałem się w poziom bitów i bajtów. Nie chciałem, aby ludzie patrzyli na mnie z góry z powodu mojego deficytu wiedzy w strukturach danych. Po co więc cały ten nacisk na Struktury Danych? Czy brak wiedzy na temat struktur danych naprawdę wpływa na karierę programisty? Czy wiedza na ten temat rzeczywiście jest wystarczającą podstawą do odróżnienia dobrego i złego programisty?


title: Czy zrujnuję swoją karierę, jeśli przeniosę się na zupełnie inną trasę?

text: Zajmuję się programowaniem Java przez ostatnie 4 lata, głównie zajmuję się tworzeniem stron internetowych w języku Java i JEE. Spędziłem ostatnie 7 miesięcy inwestując dla zabawy w naukę programowania Objective-C i iOS. Teraz zastanawiam się nad profesjonalną karierą programisty iOS. Moje pytanie brzmi, czy kariera programisty iOS jest uważana za poważną profesję (jak Java czy .NET)? Czy na dłuższą metę zranię swoją karierę, jeśli przejdę na rozwój iOS po czterech latach na popularnej platformie?


title: Czy są jakieś przykłady architektury wujka Boba, która jest wielce fałszywa?

text: Właśnie skończyłem oglądać tę prezentację wujka Boba (jak również jego sekcję „Architektura” w jego filmach „Czysty kod”), ale zastanawiam się: czy istnieją jakieś przykłady aplikacji, które implementują ten Entity-Boundary-Interactor (lub struktura Entity-Boundary-Controller)? W pewnym momencie pobrałem kod źródłowy do FitNesse (projekt testów akceptacyjnych, który często wymienia jako przykład nie tylko wysokiego pokrycia testami, ale dobrej architektury, ponieważ byli w stanie odłożyć decyzję o niekorzystaniu z bazy danych do samego końca), i po szybkim spojrzeniu okazuje się, że nawet ten projekt nie pasuje do tego wzorca. **Czy są jakieś nietrywialne przykłady tej architektury na wolności, czy też nie powinienem zawracać sobie głowy patrzeniem na nią i pisaniem o tym jako „byłoby wspaniale, gdybyś mógł się tam dostać, ale tak naprawdę nikt tego nie robi”?**


title: Wysyłasz pliki (kod) na serwer WWW?

text: Mam bardzo małą i podstawową witrynę internetową na serwerze WWW. Zwykle wprowadzam zmiany na lokalnym hoście, na którym jest wersja rozwojowa, a następnie przesyłam ją na serwer za pomocą FileZilla. To bardzo oczywisty sposób, ale nie najwygodniejszy. Pracowałem z SVN, ale nigdy nie musiałem niczego ustawiać - tylko checkout, commit, update. Czytając kilka samouczków, zastanawiam się, czy jest to łatwiejszy sposób przesyłania plików na serwer? Czy są jakieś łatwiejsze?


title: Czy powinniśmy zmienić nazwy przeciążonych metod?

text: Załóżmy, że interfejs zawiera następujące metody: Car find(long id); Lista<samochód> find(model łańcuchowy); Czy lepiej zmienić ich nazwy w ten sposób? Car findById(długi identyfikator); Lista findByModel(model łańcuchowy); Rzeczywiście, każdy programista, który używa tego API, nie będzie musiał patrzeć na interfejs, aby poznać możliwe argumenty początkowych metod `find()`. Więc moje pytanie jest bardziej ogólne: jaka jest korzyść z używania przeciążonych metod w kodzie, ponieważ zmniejsza to czytelność?


title: Dlaczego statystyki zatwierdzeń deweloperów są szkodliwe?

text: Od dawna wierzyłem (i słyszałem od innych), że śledzenie statystyk zatwierdzeń, takich jak liczba zatwierdzeń każdego dewelopera dziennie, jest szkodliwe dla procesu rozwoju. Powód wydaje się oczywisty - deweloperzy będą dokonywać commitów w mniejszych przyrostach, maksymalizując ich liczbę zatwierdzeń na dzień, ale utrudniając ich dzielenie na pół (być może wszystkie ich pośrednie łaty nie pozostawią dobrze uformowanego repozytorium) i trudniej będzie pracować z historią zatwierdzeń (zmiana nagle pojawi się w wielu zatwierdzeniach, a nie tylko w jednym, cofnięcie łatki jest trudniejsze itp.). Czy są jakieś badania, które pokazują, że statystyki popełniania błędów są szkodliwe? Jakiś elegancki i dobrze uargumentowany artykuł na ten temat? Równie stosowne byłoby wszystko, dlaczego mierzenie niewłaściwej rzeczy prowadzi do optymalizacji niewłaściwej rzeczy, a ten problem jest tylko szczególnym przypadkiem.


title: Gdybyś mógł zadać jedno techniczne pytanie do rozmowy kwalifikacyjnej, co by to było

text: Po pierwsze, są równie ważne pytania dla kandydata, które nie są techniczne (czy dobrze współpracuje z innymi, czy wyobraża sobie lepsze podejście itp.). Ale aby ocenić umiejętności techniczne, jakie byłoby twoje jedno pytanie? Pytam, bo mam. Nie mam pojęcia, dlaczego to pytanie tak dobrze działa. Nie mam nawet dobrej teorii. Wszystko, co mam, to niesamowita korelacja między poprawną odpowiedzią na to pytanie a byciem naprawdę silnym programistą. Pytanie zasugerował mi ktoś, kogo bardzo szanuję. Odpowiedziałem, że wydaje się to zbyt łatwe, ale zaproponował, żebym spróbowała. To mądry i obdarzony wyobraźnią facet, więc zacząłem pytać o to osoby, z którymi przeprowadzam wywiady. W praktycznie każdej firmie, w której pracowałem, rozmowa kwalifikacyjna trwała od 3 do 4 godzin. Pytamy o podstawowe programowanie, prosimy łamigłówki, każemy im przynieść kod, z którego są dumni i poświęcamy 45 minut, aby przeprowadzili nas przez to, co zrobili i dlaczego. W 99% przypadków prawidłowe lub niepoprawne zadanie tego pytania pozwala przewidzieć, czy przejdą 3 – 4 godzinny proces. Pytanie: Dla liczb całkowitych od 0 do 100 (tj. 1, 2, 3, …, 100) – ile ma w sobie cyfry 7? Odpowiedz na najlepsze pytanie na wywiad z programowaniem – kiedykolwiek! (więc sam odpowiadasz, zanim zobaczysz odpowiedź).


title: Używasz aplikacji zasobnika systemowego / obszaru powiadomień w systemie Windows 7?

text: Wiele aplikacji dekstop ma to, na przykład Dropbox (wersja dla systemu Windows). Klikasz prawym przyciskiem myszy ikonę paska zadań Dropbox, aby wyświetlić skróty do funkcji głównej aplikacji. W tej chwili chcę zachować prostotę i po prostu uruchomić exe (?) i wyświetlić niestandardową ikonę w obszarze powiadomień w zasobniku systemowym. Jak to zbudować?


title: Zarządzanie sesją w architekturze zorientowanej na usługi

text: Gdzie należy zarządzać sesją użytkowników w SOA? Czy powinieneś nim zarządzać w Web Service czy w kliencie i dlaczego? Moja aplikacja to SPA (biorąc pod uwagę, że będzie to stos, który będzie używany przez Apache CXF for Web Services AngularJS do wykonywania wywołań REST)


title: Czy istnieje kanoniczne odniesienie do programowania GUI w Javie?

text: Ćwiczę Javę w Netbeans. Czy istnieje odniesienie, które jest de facto standardem opisu najlepszych praktyk, metodologii projektowania i innych przydatnych informacji na temat programowania GUI w Javie? Co z tym odniesieniem czyni go wyjątkowym?


title: Właściwy dobór narzędzi do nowej aplikacji Deep Zoom

text: Chcę stworzyć nową aplikację. Zasadniczo będzie to aplikacja Deep Zoom, na której użytkownicy będą mogli rysować adnotacje (która zapisze w bazie danych, aby inni użytkownicy mogli zobaczyć te adnotacje). Na początku po prostu uruchomi się w przeglądarce. Jednak aplikacja byłaby przydatna, gdyby mogła być używana przez entuzjastów w terenie, więc możliwość uruchamiania na smartfonach lub innych urządzeniach przenośnych byłaby niezwykle korzystna. Sygnał 3G/4G prawdopodobnie praktycznie nie istnieje w tych miejscach, więc możliwość pobrania wszystkich obrazów i informacji dla „obszaru” byłaby dobra. Nie mogę zdecydować, której technologii użyć. Aplikacje Silverlight Deep Zoom wyglądają naprawdę ładnie w przeglądarkach, ale słyszałem, że nie jest to szeroko obsługiwana technologia, z której MS może i tak zrezygnować, a jedynymi smartfonami, które mogłyby obsługiwać Silverlight byłyby telefony z systemem Windows = bardzo mała część rynek smartfonów. Flash prawdopodobnie nigdy nie będzie działał na iPhone'ach/produktach Apple w ogóle. Czy powinienem więc używać HTML5? HTML5 wydaje mi się w tej chwili trochę zagmatwane, czy byłoby w ogóle możliwe stworzenie aplikacji HTML5 Deep Zoom, którą użytkownicy mogliby dodawać adnotacje? Wszelkie przemyślenia i rady byłyby naprawdę przydatne, dzięki za przeczytanie.


title: Absolwent informatyki. Praca magisterska czy etatowa?

text: > **Możliwy duplikat:** > Czy warto być magistrem? Właśnie uzyskałem tytuł licencjata z informatyki i muszę dokonać wyboru. Niezależnie od tego, czy kontynuować pracę na pełen etat, właśnie ją dostałem, czy odłożyłem ją na dalszy plan i skoncentrowałem się na zdobyciu tytułu magistra. Obecnie pracuję jako programista Embedded C w małej firmie. Fajną rzeczą jest to, że ponieważ zespół jest dość mały, moje pomysły inżynieryjne naprawdę odgrywają rolę w produkcie końcowym. Nie wspominając o tym, że zajmuję się bardzo różnymi obszarami programowania wbudowanego: sterownikami urządzeń i rozwojem systemu operacyjnego czasu rzeczywistego. Jestem bardzo entuzjastycznie nastawiony do mojej pracy i tego, co robię. Z drugiej strony, w moim kraju tak naprawdę nie ma tytułu magistra, który koncentruje się na rozwoju wbudowanym, więc moje korzyści z uzyskania tego stopnia będą głównie w dziedzinie ogólnej wiedzy informatycznej. Mając to na uwadze, czy warto poświęcić cały swój wolny czas, który obecnie wykorzystuję na studiowanie różnych obszarów urządzeń wbudowanych i pracuję głównie po to, aby uzyskać stopień naukowy, a nie czystą wiedzę i doświadczenie w dziedzinie, w której chcę pracować?


title: Czy należy oczekiwać, że deweloperzy skompilują wewnętrzną bibliotekę przed właściwym programem?

text: Ostatnio starszy programista, z którym współpracuję, zażądał, aby programiści pobrali najnowszą wersję i skompilowali w ramach swojego projektu główną bibliotekę wewnętrzną. Jest to sprzeczne z kontrargumentem, że zespoły projektowe powinny pracować nad stabilną wersją, którą otrzymują z wewnętrznego repozytorium Maven, do którego deweloper argumentował, że posiadanie kodu źródłowego dostępnego na maszynach deweloperskich oszczędza czas, ponieważ mogą czytaćźródła bibliotek kod, aby określić, czy dostępna jest wymagana funkcja. Czy starszy programista ma słuszne argumenty? Czy też wymaganie od programistów czytania kodu źródłowego bibliotek jest sprzeczne z podstawową filozofią enkapsulacji, a nawet posiadanie biblioteki na pierwszym miejscu?


Jak przydatne są funkcje czasu kompilacji? Osobiście nie pracowałem w żadnym języku, który je obsługuje, ale w niektórych przypadkach wydają się fajne. Dla tych, którzy nie rozumieją tego, co mam na myśli, funkcja kompilacji jest oceniana podczas kompilacji, a nie w czasie wykonywania, więc jeśli masz na przykład w swoim kodzie int i = Pow(4,34); możesz zamiast tego zrobić coś takiego int i = Pow<kompilacja>(4,34); a rzeczywisty kod środowiska uruchomieniowego to int i = 295147905179352825856; Oczywiście istnieją pewne ograniczenia dotyczące tego, jakie funkcje mogą być uruchamiane w czasie kompilacji, muszą one być w zasadzie czyste/statyczne, ale widzę również przypadki, w których można by ich użyć do pobrania danych do czegoś z pliku lub bazy danych (nawet jeśli w w większości przypadków te rzeczy nie powinny być wkompilowane w kod) Jak myślisz, czy taka funkcja jest rzeczywiście użyteczna, czy po prostu „fajna”? :)


title: Jak podejść do naprawy błędu, którego nie da się odtworzyć/losowo występuje?

text: Mamy wielojęzyczną stronę internetową, na której kilka dni temu wykryto błąd. Wyświetlał inne dane językowe w innym języku, a także wybrano mieszankę danych, takich jak język angielski, ale wyświetlał również inne dane językowe na stronie i na odwrót. Robi to rzadko, ale jest obecny na stronie. Przejrzenie kodu również nie pomaga, ponieważ nie zawsze tak się dzieje. Jakieś sugestie dotyczące szybkiego znalezienia problemu? Proszę o strategie tutaj.


title: Jakie są role singletonów, klas abstrakcyjnych i interfejsów?

text: Uczę się OOP w C++ i chociaż znam definicje tych 3 pojęć, tak naprawdę nie wiem, kiedy i jak z niego korzystać. Użyjmy tej klasy na przykład: class Person{ private: string name; wiek; public: Person(string p1, int p2){this->name=p1; this->age=p2;} ~Person(){} void set_name (parametr łańcuchowy){this->name=parametr;} void set_age (parametr int){this->age=parametr;} string get_name (){return this->name;} int get_age (){return this->age;} }; 1.Singleton **JAK** działa ograniczenie klasy do posiadania tylko jednego obiektu? **CZY** możesz zaprojektować klasę, która będzie miała **TYLKO** 2 instancje? A może 3? **KIEDY** używa singletona zalecane/konieczne? Czy to dobra praktyka? 2. Klasa abstrakcyjna O ile wiem, jeśli istnieje tylko jedna czysta funkcja wirtualna, klasa staje się abstrakcyjna. A więc dodanie wirtualnego void print ()=0; zrobiłbym to, prawda? **DLACZEGO** potrzebujesz klasy, której obiekt nie jest wymagany? 3.Interfejs Jeśli interfejs jest klasą abstrakcyjną, w której wszystkie metody są czystymi funkcjami wirtualnymi, to **CZYM** jest główna różnica między nimi? Z góry dziękuję!


title: Jak w przejrzysty sposób buforować dane na pośrednich etapach przetwarzania?

text: Pracuję z MATLAB nad algorytmem redukcji modelu. Jest to w zasadzie potok przetwarzania danych. ckt = generuj_ckt(ckt_properties); częst = generuj_fpunkty(fconfig); wynik = częst_dom_sim(ckt,częst); red_ckt = run_PRIMA(ckt, red_order); Każda z tych czynności jest potencjalnie czasochłonna, ponieważ dane, z którymi pracuję, są dość duże (macierze 10000 × 10000). Tak więc w poprzedniej implementacji miałem to wszystko jako osobne skrypty, które musiałem wykonać jeden po drugim (ręcznie lub uruchomić skrypt główny). Każdy z nich przechowywał dane w plikach `.mat`. Następny program odczytałby z tego i zapisałby własny wynik w innym katalogu. I tak dalej. To, czego chciałbym użyć, to framework, który może przechowywać zależności między różnymi fragmentami danych, tak że w dowolnym momencie mogę po prostu poprosić go o wygenerowanie danych wyjściowych. Powinien: 1. Sprawdź, czy zmienna jest obecna w obszarze roboczym. 2. Jeśli tak, sprawdź, czy jest zgodny z oczekiwanymi właściwościami (sprawdź z danymi `config`) 3. Jeśli nie, załaduj z pliku (dokładna ścieżka do pliku będzie wstępnie określona). 4. Sprawdź, czy jest zgodny z oczekiwanymi właściwościami. 5. Jeśli nie, oblicz go na podstawie powiązanego z nim polecenia. (wstępnie określone) Chciałbym, aby to było rekurencyjne, aby efektywnie uruchomić ostatni moduł, który automatycznie uruchamia sprawdzanie i faktycznie oblicza tylko te fragmenty danych, które nie są jeszcze dostępne i spójne. Czy możesz podać kilka sugestii, jak to zaprojektować? Jeśli to już jest nazwane (zakładam, że musi) to wskaż mi to.


title: Używanie myszy jako narzędzia wielofunkcyjnego tworzy ciężką logikę warunkową do wykonywania poleceń, jak to zmienić?

text: Ta funkcja jest dostępna w wielu różnych typach programów do edycji, w których kliknięcie myszą może mieć zupełnie inne polecenia do wykonania (przy użyciu wzorca poleceń). Obecnie mam nadrzędną funkcję `determineClickCommand(clickFocus)`. Ciało zasadniczo wyglądało tak: var command = null; var args = null; if (clickFocus == x) { if (x.state == state) { args = // Kod detemine args command = new CommandA(args) } else { command = new CommandB() } } else if (clickFocus == y) { argumenty = blahablah; command = new CommandC(args) } else if (clickFocus == z) { command = new CommandD() } ...etc..etc...etc... command.execute() Co było w porządku podczas prototypowania , ale wolałbym bardziej eleganckie rozwiązanie. Zwłaszcza, że w pewnym momencie będę chciał skorzystać z prawego/środkowego kliknięcia, które może dodać trzecią zagnieżdżoną instrukcję if. Moim pierwszym pomysłem jest utworzenie klasy `AbstractClickScope` z `determineClickCommand()` metoda, która ma być nadpisana w każdej podklasie zakresu konkretnego. Dzieli to problem na klasy, które można łatwiej konserwować, ale rozbudowana logika warunkowa jest dokładnie taka sama. A gdybym miał decydować się na wiele „zakresów”, to za każdym razem nowa klasa byłaby bardzo denerwująca. A może masz jakąś klasę fabryki poleceń w przeciwieństwie do metody? To izoluje tworzenie poleceń do bardzo specyficznej części kodu. Jakieś inne pomysły? Czy znane realizacje? Po prostu rzucam pomysły i szukam więcej informacji, gdy to przemyślę.


title: Czy istnieje sposób śledzenia zależności struktury danych od bazy danych, przez warstwy, aż do strony internetowej?

text: Kiedy projektujemy aplikacje, zazwyczaj otrzymujemy te same wielopoziomowe zestawy struktur danych: 1. Trwała struktura danych opisana za pomocą języka DDL i zaimplementowana jako tabele i kolumny RDBMS. 2. Zbiór obiektów domeny składający się głównie ze struktur danych, zwykle połączonych z logiką na poziomie reguł biznesowych, zaimplementowanych w języku programowania, takim jak Java. 3. Zestaw interfejsów warstwy usług, które bezpośrednio obsługują implementacje przypadków użycia (które wykorzystują struktury danych domeny jako parametry), zaimplementowanych jako EJB lub równoważne w innym języku programowania. 4. Ekrany UI, które pozwalają użytkownikom **C** tworzyć, **R** tworzyć, **U** pdate i (być może) **D** usuwać wszelkiego rodzaju struktury danych i wykresy struktur danych, z licznymi ekranami i wieloma widżetami interfejsu użytkownika, wszystkie ustrukturyzowane w celu obsługi tych samych struktur danych. Ale jeśli chcesz zmienić struktury danych w dowolnej z tych warstw, zawsze wydaje się _niezwykle_ trudne do oszacowania wpływu, jaki zmiana będzie miała na aplikację. UML może pomóc, ale śledzenie diagramu po diagramie nie jest prawdziwym rozwiązaniem tego problemu. Najlepszym, jaki kiedykolwiek widziałem, był samodziałowy arkusz kalkulacyjny do śledzenia danych, który zawierał listę wszystkich struktur danych i przekazywał relacje od poziomu do poziomu. Czy istnieje narzędzie lub akceptowane podejście, które ułatwia identyfikację struktury danych w dowolnej warstwie i łatwe uzyskanie listy wszystkich zależnych: * struktur danych tabeli i kolumn bazy danych * struktur danych obiektu domeny * metod interfejsu warstwy usług i struktur danych parametrów * Struktury danych komponentów ekranu i interfejsu użytkownika


title: Skąd mam wiedzieć, czy mam wystarczające pokrycie testami jednostkowymi, aby usunąć test integracji?

text: Pracuję na starym systemie (mam na myśli, że został napisany bez testów). Próbowaliśmy przetestować część systemu, pisząc testy integracyjne, które testują funkcjonalność z zewnątrz. Daje mi to pewność, że dokonam refaktoryzacji części kodu bez obaw o jego złamanie. Problem polega jednak na tym, że te testy integracyjne wymagają wdrożenia (ponad 2 minuty) i wielu minut do uruchomienia. Ponadto są trudne do utrzymania. Każdy z nich obejmuje tysiące wierszy kodu, a gdy jeden z nich się zepsuje, debugowanie przyczyny może zająć godziny. Piszę wiele testów jednostkowych dla tych zmian funkcjonalnych, które ostatnio wprowadziłem, ale zanim zatwierdzę, zawsze wykonuję nowe wdrożenie i uruchamiam wszystkie testy integracyjne, aby upewnić się, że niczego nie przegapiłem. W tym momencie wiem, że moje testy jednostkowe i niektóre testy integracyjne nakładają się na to, co testują. Skąd mam wiedzieć, czy moje dobre testy jednostkowe w wystarczającym stopniu pokrywają zły test integracyjny, aby można było usunąć ten test integracyjny?


title: Jak przekonać członka zespołu do korzystania z frameworka internetowego?

text: Pytanie jest takie, a szczegóły są następujące: **czy jest coś, co jako programista mogę powiedzieć/przywołać, aby przeciągnąć go na moją stronę?** Chciałbym usłyszeć ważne argumenty dla obu stron w tej sprawie, ale głównie sugestie, jak z nim rozmawiać. * * * Moja sytuacja jest taka: pracuję nad projektem zespołowym na moich studiach, buduję średniej wielkości stronę internetową jako prototyp dla uniwersytetu. Wszyscy są uważani za równych sobie w grupie i nie ma jednego lidera, więc odpowiedzią na ten problem nie może być „pull rank”. Wszyscy są równi, jednak istnieje ogromna luka w wiedzy między członkami. Wspomniany członek zespołu i ja jesteśmy zdolnymi programistami, chociaż nie ma on żadnego doświadczenia w branży. Pozostali trzej członkowie są mniej zdolni, a dwóch całkowicie zrezygnowało z rozwoju. Wszyscy trzej odmówili komentarza na temat sytuacji z powodu braku wiedzy. Jako grupa przychodzimy decydować, jakich technologii użyć przy realizacji strony internetowej; konkretnie, czy używać frameworka PHP (Code Igniter), czy nie. Opowiadam się za, powołując się na: 1. Nie odkrywanie koła na nowo 2. Dobrze napisana i przetestowana baza kodu do pracy od 3. Rozpoczęcie pracy (termin jest bliżej niż byśmy chcieli) 4. Szybkość rozwoju 5. Dźwięk i utrzymanie Wzorce projektowe i dobre praktyki Opowiada się za pracą w sposób, w jaki przywykł do: * Zapisywania dostosowanych, jednorazowych funkcji do pliku „biblioteki”, gdy ich potrzebuje * Funkcje dostępu do danych i renderowania tych danych na stronie , pobieranie/ustawianie do i z sesji oraz pobieranie/publikowanie danych itp. * Posiadanie 1 pliku na stronę (co skutkuje brakiem rozdzielenia obaw między kontrolą, prezentacją i danymi) Jego powody przeciwko używaniu są oparte głównie na tym, że nie jest w stanie zobaczyć chodzi o to, że już potrafi to wszystko robić. Framework tego nie zmienia, tylko utrudnia to, ponieważ musi się nauczyć frameworka; nie chce używać kodu, którego nie napisał osobiście. Powiedział też, że "nie ma znaczenia jakość bazy kodu, ponieważ projekt jest tylko prototypem i nigdy nie będzie utrzymywany". Dla mnie jest to _nie ma wymówki_, aby pisać kod nie do utrzymania. Rozumiem, dlaczego przedstawia te argumenty, ale mam problem z jego „brakem troski o konserwowalność” i „lekceważeniem dobrego projektu”, a nawet rozdzieleniem obaw. Podejrzewam jednak, że nigdy nie studiował wzorców projektowych, więc nie wiem, jak skuteczne byłoby wykazanie, dlaczego jego metoda może okazać się nie do utrzymania. Chcę rozpocząć ten projekt, ale nie chcę tego robić bez względu na wszystko, czego nauczyłem się przez lata. Jak powiedziałem wcześniej, nie ma tu możliwości zdobycia rangi, podobnie jak inni członkowie zespołu nie chcą się wtrącić. Czy powinienem po prostu wycofać się i zrobić wszystko po swojemu? Czy jest zbyt uparty i niedoświadczony, aby wiedzieć lepiej? A może to ja jestem tutaj uparta? TL;DR Niedoświadczony członek zespołu jest uparty, jak mogę go zdobyć?


title: Jakie pytania powinienem zadać podczas ankiety dotyczącej środowiska pracy?

text: Po przeczytaniu Peopleware myślę o wysłaniu ankiety do naszych programistów, aby określić, jak myślą o swoim środowisku biurowym. Jedno oczywiste pytanie brzmi, czy w biurze jest zbyt głośno, czy nie. **Jakie jeszcze pytania powinienem zadać naszym programistom na temat ich środowiska pracy?** Ostateczną ankietę, którą ułożyłem, opublikuję w tym wątku.


title: Czy wysokie ścianki działowe są równie skuteczne jak biura prywatne?

text: Obecnie czytam Peopleware DeMarco i Listera i uderzyły mnie (jak wszyscy) ich komentarze na temat redukcji hałasu poprzez korzystanie z prywatnych biur i wpływu, jaki ma to na produktywność. Prywatne biura prawdopodobnie nie pojawią się w moim miejscu pracy, ale zastanawiam się, czy wysokie ścianki działowe (powiedzmy, 6 stóp) mogą być prawie tak dobre? Wyobrażam sobie, że nie odbijałyby tak bardzo hałasu, ale miałyby jakiś efekt. Jedną wadą jest to, że środkowe kabiny miałyby mniej naturalnego światła. Wydaje mi się to dość dużym minusem. Chciałbym usłyszeć, jakie są ludzkie doświadczenia.


title: Jak przenieść program cli c++ z bibliotekami GNU z Windowsa na Linuksa?

text: Muszę zaimplementować kilka algorytmów partycjonowania grafów do mojej pracy magisterskiej. Mam głównie doświadczenie z Windowsem. Chciałbym wiedzieć, czy trudno jest przenieść program konsoli c++ do Linuksa. Chcę go zaprogramować na Windowsie, ale chcę go również przetestować i skompilować na Linuksie. Będzie to czysta aplikacja CLI, bez użycia Windows API lub czegokolwiek. Potrzebuję tylko kilku zewnętrznych bibliotek. W szczególności zestaw do programowania liniowego GNU i biblioteka naukowa GNU GSL. Dowiedziałem się, że istnieją wersje Windows tych bibliotek, co to dla mnie oznacza?, czy powinienem skompilować na Windows z pakietem wersji Windows i na Linuksie z pakietem linux. Chciałbym, żeby ktoś wniósł do tego trochę jasności, naprawdę nie jestem zbyt doświadczonym programistą, więc każda rada pomoże. Chciałbym również zapytać, czy jest różnica, czy używam Visual Studio do programowania, czy jakiegoś innego IDE w kwestii przenośności. Z góry dziękuję za wszelką pomoc.


title: Załączniki w Ada95

text: Chcę poznać różnice między aneksami normatywnymi i informacyjnymi w Adzie 95. Po prostu jestem w stanie znaleźć listę każdego z nich, ale nie różnic. Jakie są różnice?


title: Czy JMF obsługuje Xuggler?

text: Pracuję nad projektem polegającym na wysyłaniu i odbieraniu multimediów strumieniowych. Zainstalowałem więc JMF, ale widziałem, że JMF ma bibliotekę 32-bitową, ponieważ moja jest 64-bitowa, więc chciałem użyć Xugglera do strumieniowego przesyłania wideo. Czy ktoś może mi wyjaśnić obsługę Java Media FrameWork z Xugglerem?


title: Pytanie dotyczące zasięgu oddziału a decyzja

text: ISTQB nie rozróżnia między nimi (czyta „Zasięg oddziału/decyzji”), ale niektóre źródła podają, że jest inny. Miałbym dwa pytania. Najważniejsza dotyczy różnicy. I drugi – czy cały ten koncept nadaje się do testów jednostkowych? Lub testowanie w białej skrzynce? Podziękowania Z ISTQB: > pokrycie gałęzi jest ściśle związane z pokryciem decyzji i przy 100% pokryciu > dają dokładnie takie same wyniki. Pokrycie decyzji mierzy zasięg > gałęzi warunkowych; Pokrycie gałęzi mierzy zasięg zarówno gałęzi warunkowych, jak i bezwarunkowych. Syllabus wykorzystuje pokrycie decyzji, > ponieważ jest źródłem gałęzi. Niektóre narzędzia do pomiaru pokrycia > mogą mówić o pokryciu gałęzi, podczas gdy w rzeczywistości mają na myśli pokrycie decyzji. (c) > Księga fundacji ISTQB.


Najbardziej niezwykłym aspektem Pythona jest to, że białe znaki są znaczące zamiast ograniczników bloków (nawiasy klamrowe → "{}" w rodzinie języków C), wcięcia są używane do wskazania, gdzie bloki zaczynają się i kończą. jak interpreter Pythona rozpoznaje blok kodu?


title: Formatowanie ciągów z konkatenacją lub podstawieniem

text: To jest pytanie o preferencje. Załóżmy, że język programowania oferuje te dwie opcje tworzenia łańcucha z pewnymi zmiennymi: 1. `"Cześć, nazywam się ". imię ." i jestem ". wiek ." lat."` 2. `StringFormat("Cześć, mam na imię 0 $ i mam $1 lat.", imię, wiek)` Który preferujesz i dlaczego? Zauważyłem, że używam obu bez wyraźnego powodu, aby wybrać jeden z nich. Rozważanie mikrooptymalizacji nie mieści się w zakresie tego pytania. **Lokalizacja** została wymieniona jako powód, dla którego warto wybrać opcję 2 i myślę, że jest to bardzo ważny powód i zasługuje na wzmiankę tutaj. Czy jednak opinie różniłyby się w zależności od estetycznych punktów widzenia?


Jakiego języka powinienem się nauczyć, jeśli chcę programować dla systemu Windows? Nie rzeczy z wiersza poleceń (oczywiście, jak sądzę), ale z Windows Forms i tym podobne? Używałem C wcześniej (podczas pracy z Rockbox), ale to wszystko. Do tej pory używałem Autoit (do prostych, prostych rzeczy), ale szukam czegoś, co ma większą elastyczność i jest popularne w branży oprogramowania komputerowego. Poza tym nie podobało mi się, jak łatwo było złamać programy Autoit. Jestem również web developerem/projektantem, żeby to wyrzucić. Z góry dziękuję!


title: Słabe strony różnych typów baz danych NoSQL

text: Oto moje pytanie: Jakie są słabe punkty różnych typów baz danych NoSQL? W szczególności, jakie są słabe punkty magazynów klucz-wartość, magazynów danych wykresów i magazynów dokumentów? Z łatwością znalazłem mocne strony, ale dokumenty dotyczące słabości wydają się być rzadsze. Edycja: w porównaniu do siebie i do relacyjnych baz danych.


title: Jak wykorzystać doświadczenie w programowaniu na stanowisku niebędącym programistą w moim CV na stanowisko programistyczne?

text: Obecnie pracuję w obsłudze poziomu 2 dla dostawcy usług internetowych, ale nie chcę pozostawać tutaj w nieskończoność. Moją ogólną ambicją jest zostać programistą, bo to jest to, co naprawdę kocham. Problem polega na tym, że doszedłem do tego wniosku później na mojej ścieżce kariery i miałem tylko szansę wrócić do szkoły, aby zdobyć AS z informatyki i nie miałem żadnych stanowisk jako programista. Bycie na studiach przez długi czas sprawia, że bardzo trudno jest przejść na stanowisko niskiego poziomu, ponieważ nie mam BS (i realistycznie w tym momencie to nie nastąpi przez jakiś czas, jeśli w ogóle) i pracodawcy tylko wydają się zainteresowani świeżo upieczonymi absolwentami. Miałem ostatnio okazję pracować na moim obecnym stanowisku nad specjalnymi projektami, które obejmują kodowanie w moich preferowanych językach w celu rozwiązywania różnych problemów. Napisałem teraz różne narzędzia, używając wielu języków, aby rozwiązać te problemy. Teraz niekoniecznie jestem tym, co uważam za kompetentnego w tych językach, ale potrafię je obejść i znam wszystkie podstawy (autoit, vb.net, python, perl, pascal, c#, php, batch, bash). Jestem również bardzo dobry w znajdowaniu sposobu na kodowanie tego, czego potrzebuję, gdy nie wiem z góry, jak to zrobić. Mam kilka próbek kodu dla wszystkich tych języków, których używałem do rozwiązywania problemów w pracy. Jak włączyć to doświadczenie do mojego CV, aby być bardziej opłacalnym kandydatem na stanowisko na poziomie podstawowym?


title: Najlepsze podejście do projektowania aplikacji dla wielu klientów

text: Zastanawiałem się, od czego zacząć, jeśli potrzebujesz zaprojektować projekt z wieloma klientami, w którym wielu klientów może wchodzić w interakcje z serwerem. Konkretnie, jak radzisz sobie z różnymi stanami i obsługą komunikatów, jak zacząć projektować i rozważać wszystkie te przypadki? Na przykład aplikacja wideoczatu internetowego, w której możliwe jest, że zadzwonisz do innego klienta, podczas gdy ten klient już prowadzi rozmowę lub utknął w modalnym oknie dialogowym, tak że nie można uzyskać połączenia.


title: Zasada 5 – używać czy nie?

text: Reguła 3 (reguła 5 w nowym standardzie c++) mówi: > Jeśli musisz samodzielnie zadeklarować destruktor, konstruktor kopiujący lub > operator przypisania kopiowania, prawdopodobnie musisz jawnie zadeklarować > wszystkie trzy z nich. Ale z drugiej strony „Czysty kod” Martina radzi usunąć wszystkie puste konstruktory i destruktory (strona 293, _G12:Clutter_ ) : > Jaki jest pożytek z domyślnego konstruktora bez implementacji? Wszystko, co służy, to zaśmiecanie kodu bezsensownymi artefaktami. Jak więc poradzić sobie z tymi dwiema przeciwstawnymi opiniami? Czy naprawdę należy zaimplementować puste konstruktory/destruktory? * * * Następny przykład pokazuje dokładnie, o co mi chodzi : #include <iostream> #include <pamięć> struct A { A( const int value ) : v( new int( value )) {} ~A(){} A( const A & inne ): v( new int( *inne.v ) ) {} A& operator=( const A & other ) { v.reset( new int( *inne.v ) ); zwróć *to; } std::auto_ptr< int > v; }; int main() { const A a( 55 ); std::cout<< "wartość = " << *a.v << std::endl; b(a); std::cout<< "b wartość = " << *b.v << std::endl; const Ac(11); std::cout<< "c wartość = " << *c.v << std::endl; b = c; std::cout<< "b nowa wartość = " << *b.v << std::endl; } Kompiluje się dobrze przy użyciu g++ 4.6.1 z : g++ -std=c++0x -Wall -Wextra -pedantic example.cpp Destruktor dla `struct A` jest pusty i nie jest potrzebny. Więc czy powinien tam być, czy powinien zostać usunięty?


title: Upewniasz się, że nikt wcześniej nie stworzył aplikacji do czegoś?

text: Mam pomysł na aplikację do gry na smartfona. Chcę się upewnić, że nikt wcześniej nie stworzył takiej aplikacji; jak mogę to sprawdzić? Nie chcę przerabiać czegoś, co już istnieje.


title: Czy async/await sprawia, że proste rzeczy stają się niepotrzebnie skomplikowane?

text: Po miesiącu wystawienia na rozwój Windows App Store zaczynam odczuwać, że model programowania „async” / „await” wyrządza więcej szkody niż pożytku. **To komplikuje proste rzeczy.** Weźmy na przykład tworzenie folderów. W Java lub Desktop .NET mogę po prostu zrobić ## Java public Constructor() { new File("c:\\folder").mkdirs(); System.out.println("Jestem prawie pewien, że c:\\folder jest gotowy"); } ## Desktop .NET Constructor() { System.IO.Directory.CreateDirectory("c:\\folder"); Console.WriteLine("Jestem prawie pewien, że c:\\folder jest już gotowy"); } Ale jeśli chodzi o ## Windows App Store .NET Constructor() { // Cholera! Inna funkcja asynchroniczna? Nie potrzebuję assnc! Windows.Storage.ApplicationData.Current.LocalFolder.CreateFolderAsync("c:\\folder", CreationCollisionOption.OpenIfExists); // Nie jestem pewien, czy c:\\folder jest teraz gotowy! // OK. Wiem, że mogę używać ContinueWith. Nie nie nie. nie chcę. // Dlaczego muszę używać ContinueWith z tak prostą operacją? } Tak więc moje pytanie brzmi, czy znajdujesz nowo wprowadzony model programowania `async` / `await` w Windows App Store, * Popraw swoją produktywność? * Ułatwić życie programistom? **Dla mnie nie!** Być może przegapiłem pewne przydatne techniki. Wiem, mówi Microsoft, pomaga nam pisać responsywny kod interfejsu użytkownika. Ale powiedziałbym: **Nie, dziękuję! Hej, mój kod jest już w kodzie nie-UI!** Większość mojego obecnego kodu operacyjnego jest wystarczająco szybka i nie blokuje UI. Kiedy mój kod operacji nie jest wystarczająco szybki, jestem całkiem wygodny w uruchamianiu tego powolnego kodu operacji w oddzielnym wątku/zadaniu. Zmuszenie mnie do używania `async`/`await`, którego nie potrzebuję, tylko komplikuje mój kod. **Wiadomość do Microsoft** : Czy mogę błagać, oprócz funkcji asynchronicznych, czy możesz podać ten sam zestaw funkcji nieasynchronicznych? Już wyrobiłem sobie nawyk uruchamiania kodu w wątku nie-UI. Obiecuję, że nadal będę działał tak płynnie jak iOS :)


Czy podczas łączenia się z serwerem za pomocą protokołu DRDA jest prawdą, że pierwsze polecenie klient-serwer MUSI być połączone łańcuchem EXCSAT z ACCSEC? Znalazłem 2 różne odpowiedzi, kiedy go wygooglowałem. Jeśli spojrzysz na stronę internetową The Open Group (https://collaboration.opengroup.org/dbiop/), możesz zrozumieć, że odpowiedź brzmi NIE. Jeśli jednak spojrzysz na serwis IBM (http://publib.boulder.ibm.com/infocenter/dzichelp/v2r2/index.jsp?topic=%2Fcom.ibm.ims11.doc.apr%2Fims_ddm_excsat.htm) rozumiem, że odpowiedź brzmi TAK. Więc co to jest?


title: Jeśli masz kilka zespołów SCRUM pracujących nad jednym backlogiem, jak podzielić szacowanie story pointów między te zespoły?

text: Pytam, ponieważ podejście w mojej firmie wygląda następująco: * historie w backlogu nie są szacowane * zespół wybierający historię szacuje ją w story pointach podczas planowania sprintu, część druga


title: Najlepsze praktyki w zakresie sponsorowania korporacyjnego projektów Open Source

text: Przygotowujemy się do OpenSource naszego wielodostępnego CMS ASP.NET MVC. Obecnie używamy BitBucket.org do hostowania naszego repozytorium źródłowego i rozważamy najlepsze podejścia do nazewnictwa repozytorium. Jeśli chodzi o użytkownika / gospodarza repozytorium, debatujemy nad użyciem nazwy naszej firmy, która jest sponsorem projektu, w porównaniu z samą nazwą projektu. Nazwa firmy to JoyaTech Solutions, nazwa projektu to JoyaCMS. Czy ludzie myślą, że posiadanie nazwy firmy jako użytkownika/właściciela projektu typu open source jest wykluczeniem lub czy jest wartość w wyświetlaniu tej relacji?


title: Przechowywanie haseł do użycia w skryptach

text: Jest kilka sytuacji, które wymagają od użytkowników podania hasła podczas automatyzacji procesu rozwoju. Wdrożenie witryny to tylko jedna z typowych sytuacji. Tworzenie plików dmg pod OS X również wymaga hasła. Większość narzędzi wiersza poleceń używanych w skryptach ma możliwość otrzymywania hasła przez standardowe wejście. Podawanie hasła za każdym razem, gdy skrypt jest uruchamiany, w pewnym sensie niweczy cel „automatyki”. Przechowywanie w skrypcie zwykłego tekstu jest sprzeczne z celem „hasła”. Jakie jest najbardziej optymalne podejście do dostarczania haseł do skryptów, które ich wymagają?


title: Jakie narzędzia lub sposób na rozpoczęcie projektu internetowego

text: Jestem studentem kanapkowym w firmie, która ma mały serwis informatyczny, który tworzy aplikację internetową. Do dziś pracują z prostym php, trochę CSS i bez kontroli wersji. Tak więc kod staje się nie do utrzymania. Kierownik projektu chciałby użyć obiektu php, a ja jestem jedynym, który wie o tym. Ale nadal jestem początkującym bez doświadczenia w web dev, a po kilku poszukiwaniach boję się budować sam php MVC. Więc moje pytanie brzmi: czy powinienem przekonać zespół do rozpoczęcia korzystania z frameworka takiego jak symfony (czuję się w porządku, aby go używać) z dużą zmianą, jaką narzuca zespołowi, czy po prostu wprowadzić lepszą strukturę pracy z kontrolą wersji i narzędziami takimi jak ORM ? Dzięki za pomoc EDYTOWANO: z nadzieją, że teraz jest to zrozumiałe


title: Dlaczego w kodzie C/C++ jest tak mało komentarzy?

text: Jestem przede wszystkim web developerem, uczyłem się C/C++ i próbowałem zaangażować się w projekty open source. Coś, co uważam za bardzo niezwykłe, to brak komentarzy w kodzie źródłowym C/C++ (przyglądałem się dużym projektom, takim jak Linux, Varnish i HipHopVM). W tworzeniu stron internetowych jestem przyzwyczajony do oglądania **mnóstwa** komentarzy w kodzie źródłowym i często też komentuję. Zakładam, że jest to kwestia kultury/nastawienia, ponieważ wysłałem trochę kodu C do przeglądu i kilka osób powiedziało, że mam zbyt wiele komentarzy.


title: Kiedy ScrumMaster jest liderem technicznym, to dobra czy zła praktyka?

text: Wiem, że ScrumMaster powinien być liderem, ale dobrą praktyką jest posiadanie lidera technicznego jako ScrumMastera. Na przykład: koordynator.


title: Tłumaczenie jednostek powinno znajdować się w warstwie danych lub warstwie biznesowej

text: Z mojego zrozumienia pomyślałem, że warstwa danych powinna izolować technologię danych od reszty aplikacji, dla mnie obejmuje to również schemat w tym przypadku jednostkę danych. Ostatnio przeglądałem projekt Silk z Patterns & Practices http://silk.codeplex.com/ i zauważyłem, że encje danych są tłumaczone w warstwie biznesowej, a nie w warstwie danych. Myślę, że zaletą jest to, że unika się warstwy danych, aby odwoływać się do zestawu zawierającego model biznesowy. Jednak fakt, że publicznie udostępnia jednostki danych, jest z mojego zrozumienia wadą, ponieważ komponenty zewnętrzne mogą być zależne od schematu danych. Chciałbym zrozumieć, dlaczego tłumaczą encje danych w warstwie biznesowej i jakie są korzyści? Wiem, że używają frameworka code first Entity, więc encje nie mają zależności związanej z technologią danych, jednak nadal jest odpowiedzialny za ustrukturyzowanie modelu danych, a nie modelu biznesowego. Dziękuję


title: Jakie są właściwe warunki testowania biurkowego/użytkownika?

text: Czy istnieje wspólny i akceptowany termin dla testów ręcznych wykonywanych przez programistów lub użytkowników oprogramowania zamiast lub jako uzupełnienie testów automatycznych? Na przykład w następującej progresji: 1. "Desk Test" dla nieautomatycznego testowania, które programista wykonuje podczas pisania kodu. 2. „Test jednostkowy” dla automatycznego testu dla określonej klasy/metody/funkcji. 3. „Test integracji” do automatycznego testu wielu współpracujących ze sobą komponentów. 4. „Test systemu” lub „Test akceptacji” dla testów obejmujących całą aplikację, które mają znaczenie w rozmowie z użytkownikiem końcowym. 5. „Test użytkownika”, gdy przekazujemy go użytkownikowi i prosimy go o znalezienie błędów. Czy są lepsze terminy dla #1 („Test pulpitu”) i #5 („Test użytkownika”)? (I wiem, że TDD powiedziałoby, że napisz #2 przed #1... ale właśnie dlatego chcę znać właściwe słowo dla #1.)


title: Czy uwzględniam klasy osób trzecich w moich diagramach klas UML?

text: Tworzę system składający się z 2 aplikacji na Androida oraz aplikacji webowej Java. Do moich diagramów klas UML nie dołączyłem klas firm trzecich, których używam m.in. interfejsy typu obserwator. Czy powinienem je uwzględnić? Jeśli tak, jak mogę odróżnić moje encje (klasy, interfejsy, wyliczenia itp.) od ich encji? Dziękuję Ci.


title: Czy i czy kompilatory mogą konwertować logikę rekurencyjną na równoważną logikę nierekurencyjną?

text: Uczę się F# i zaczyna wpływać na to, jak myślę podczas programowania C#. W tym celu używam rekurencji, gdy czuję, że wynik poprawia czytelność i nie mogę sobie wyobrazić, że skończy się to przepełnieniem stosu. To prowadzi mnie do pytania, czy kompilatory mogą automatycznie konwertować funkcje rekurencyjne na równoważną formę nierekurencyjną?


title: Która z tych starych krytyki powszechnego seplenienia jest nadal aktualna?

text: W książce A Critique of Common Lisp, napisanej przez Rodneya A. Brooksa i Richarda P. Gabriela ze Stanford w 1984 roku, omówiono niektóre decyzje projektowe przyjęte przez komisję normalizacyjną Common Lisp. Chociaż większość dyskusji pozostaje aktualna, istnieją dwa stwierdzenia, które odnoszą się do technologii dostępnej w tamtym czasie i dziś mogą być fałszywe. Te dwa stwierdzenia to: > Zbyt wiele kosztów językowych zostało odrzuconych z ostrzeżeniem, że „każdy > dobry kompilator” może się nimi zająć. Nikt jeszcze nie napisał — i prawdopodobnie nie wykona bez ogromnego wysiłku — kompilatora, który wykonuje ułamek sztuczek > od niego oczekiwanych. Ponieważ jestem nowicjuszem w Common Lisp, a nawet praktykantem, nie jestem w stanie być bardziej konkretny niż autorzy. Zdają się twierdzić, że duża ogólność i elastyczność zostały wbudowane w kilka aspektów języka, co sprawia, że pisanie dobrego kompilatora jest dość trudne. > W COMMON LISP trochę za dużo kontroli umieszczono na > arytmetyce zmiennoprzecinkowej. I oczywiście, chociaż można osiągnąć prawidłowe zachowanie programu intensywnego > zmiennoprzecinkowego, wydajność może się znacznie różnić. O ile rozumiem, wydaje się, że pisanie wydajnego kodu numerycznego w Common Lisp jest możliwe, ale trudniejsze niż być powinno. To było trzydzieści lat temu. Jak powinienem traktować to stwierdzenie dzisiaj, jeśli jestem gotów pisać programy Common Lisp dla jednej z powszechnych implementacji wolnego oprogramowania (CLISP, SBCL i in.)?


Która książka jest najlepsza do nauki tworzenia aplikacji na Facebooka i interfejsu Facebook Graph API?


title: Kontrole warunkowe z listą

text: Zastanawiałem się, jak robią to komputery. Najbardziej logicznym sposobem, jaki mogę sobie wyobrazić, jest iteracja przez wszystkie elementy listy, aż znajdą taki, który spełnia warunek :) Na przykład, jeśli wywołasz `function_exists()`, PHP powinno przejść przez wszystkie zdefiniowane funkcje, aż spełni taki, który pasuje do nazwy, której szukasz. Czy to prawda, że to jedyny sposób? Jeśli tak, to wygląda na to, że nie jest zbyt wydajny :s


title: Równoległość prologu

text: Czy są jakieś interpretery prologów, które mogą funkcjonalnie rozłożyć twoje "programy" w celu poprawy wydajności? Wiem, że przeprowadzono badania nad interpreterami prologu, które osiągają prędkości zbliżone do C poprzez równoległość (takich, których typowy programista C nie "widzi"). Czy ktoś wie więcej na ten temat?


title: try-catch w javascript... czy to nie jest dobra praktyka?

text: Istnieje przepis dotyczący bloku **try-catch** w **javascript**. Podczas gdy w javie lub jakimkolwiek innym języku obowiązkowe jest posiadanie obsługi błędów, nie widzę nikogo, kto używałby ich w javascript w większym stopniu. Czy to nie jest dobra praktyka, czy po prostu nie potrzebujemy ich w javascript?